diff options
| author | Adam <[email protected]> | 2025-12-28 05:12:32 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2025-12-28 05:12:36 -0600 |
| commit | 4a9ff9412e8daedc36319bd2ee8ca62d5aa52be7 (patch) | |
| tree | ad035366cdebc87d4eea75475201af3d11bd64ed /packages/ui/src/theme/index.ts | |
| parent | d6db6ff198c4513ca5511ae49b03d4277bc21718 (diff) | |
| download | opencode-4a9ff9412e8daedc36319bd2ee8ca62d5aa52be7.tar.gz opencode-4a9ff9412e8daedc36319bd2ee8ca62d5aa52be7.zip | |
feat(desktop): themes
Diffstat (limited to 'packages/ui/src/theme/index.ts')
| -rw-r--r-- | packages/ui/src/theme/index.ts | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/packages/ui/src/theme/index.ts b/packages/ui/src/theme/index.ts new file mode 100644 index 000000000..8f3da4ca1 --- /dev/null +++ b/packages/ui/src/theme/index.ts @@ -0,0 +1,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" |
