summaryrefslogtreecommitdiffhomepage
path: root/packages/ui/src/theme/index.ts
blob: 8f3da4ca1306450b73c8096b8796a552d032be1d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/**
 * Desktop Theme System
 *
 * Provides JSON-based theming for the desktop app. Unlike TUI themes,
 * desktop themes use more design tokens and generate full color scales
 * from seed colors.
 *
 * Usage:
 * ```ts
 * import { applyTheme } from "@opencode/ui/theme"
 * import myTheme from "./themes/my-theme.json"
 *
 * applyTheme(myTheme)
 * ```
 */

// Types
export type {
  DesktopTheme,
  ThemeSeedColors,
  ThemeVariant,
  HexColor,
  OklchColor,
  ResolvedTheme,
  ColorValue,
  CssVarRef,
} from "./types"

// Color utilities
export {
  hexToRgb,
  rgbToHex,
  hexToOklch,
  oklchToHex,
  rgbToOklch,
  oklchToRgb,
  generateScale,
  generateNeutralScale,
  generateAlphaScale,
  mixColors,
  lighten,
  darken,
  withAlpha,
} from "./color"

// Theme resolution
export { resolveThemeVariant, resolveTheme, themeToCss } from "./resolve"

// Theme loader
export { applyTheme, loadThemeFromUrl, getActiveTheme, removeTheme, setColorScheme } from "./loader"

// Theme context (SolidJS)
export { ThemeProvider, useTheme, type ColorScheme } from "./context"

// Preload script utilities
export { generatePreloadScript, generatePreloadScriptFormatted, STORAGE_KEYS, getThemeCacheKey } from "./preload"

// Default themes
export {
  DEFAULT_THEMES,
  oc1Theme,
  tokyonightTheme,
  draculaTheme,
  monokaiTheme,
  solarizedTheme,
  nordTheme,
  catppuccinTheme,
  ayuTheme,
  oneDarkProTheme,
  shadesOfPurpleTheme,
} from "./default-themes"