summaryrefslogtreecommitdiffhomepage
path: root/packages/ui/src/theme/index.ts
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-28 05:12:32 -0600
committerAdam <[email protected]>2025-12-28 05:12:36 -0600
commit4a9ff9412e8daedc36319bd2ee8ca62d5aa52be7 (patch)
treead035366cdebc87d4eea75475201af3d11bd64ed /packages/ui/src/theme/index.ts
parentd6db6ff198c4513ca5511ae49b03d4277bc21718 (diff)
downloadopencode-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.ts71
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"