@djangocfg/ui-core 2.1.394 → 2.1.397

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/README.md +14 -0
  2. package/package.json +4 -4
  3. package/src/components/effects/GlowBackground.tsx +1 -1
  4. package/src/components/navigation/sidebar/sidebar.tsx +4 -4
  5. package/src/hooks/index.ts +1 -0
  6. package/src/hooks/tabs/activeTabStore.ts +167 -0
  7. package/src/hooks/tabs/index.ts +17 -0
  8. package/src/hooks/tabs/tabId.ts +44 -0
  9. package/src/hooks/tabs/useActiveTab.ts +64 -0
  10. package/src/styles/README.md +149 -123
  11. package/src/styles/base.css +3 -3
  12. package/src/styles/presets/presets.ts +0 -9
  13. package/src/styles/presets/themes/dense.ts +10 -10
  14. package/src/styles/presets/themes/django-cfg.ts +13 -13
  15. package/src/styles/presets/themes/high-contrast.ts +11 -11
  16. package/src/styles/presets/themes/index.ts +0 -18
  17. package/src/styles/presets/themes/ios.ts +64 -64
  18. package/src/styles/presets/themes/macos.ts +64 -64
  19. package/src/styles/presets/themes/soft.ts +25 -25
  20. package/src/styles/presets/themes/windows.ts +64 -64
  21. package/src/styles/presets/types.ts +26 -12
  22. package/src/styles/theme/dark.css +47 -53
  23. package/src/styles/theme/light.css +47 -53
  24. package/src/styles/theme/tokens.css +128 -113
  25. package/src/styles/utilities.css +44 -6
  26. package/src/styles/presets/themes/catppuccin.ts +0 -38
  27. package/src/styles/presets/themes/dracula.ts +0 -38
  28. package/src/styles/presets/themes/github.ts +0 -38
  29. package/src/styles/presets/themes/gruvbox.ts +0 -38
  30. package/src/styles/presets/themes/material.ts +0 -38
  31. package/src/styles/presets/themes/nord.ts +0 -38
  32. package/src/styles/presets/themes/one-dark.ts +0 -38
  33. package/src/styles/presets/themes/solarized.ts +0 -38
  34. package/src/styles/presets/themes/tokyo-night.ts +0 -38
@@ -1,55 +1,68 @@
1
1
  # Tailwind CSS v4 Styles Guide
2
2
 
3
- This directory contains the CSS architecture for `@djangocfg/ui-core` using **Tailwind CSS v4**.
3
+ CSS architecture for `@djangocfg/ui-core` **Tailwind v4** with semantic tokens, presets, and macOS-style glass utilities.
4
4
 
5
- ## Directory Structure
5
+ ## Directory layout
6
6
 
7
7
  ```
8
8
  styles/
9
- ├── index.css # Main entry point (import order is critical!)
10
- ├── theme.css # Theme imports
11
- ├── base.css # Base element styles
12
- ├── utilities.css # Custom utility classes
13
- ├── sources.css # Source detection for Tailwind v4 monorepo
14
- ├── palette/ # Theme palette hooks & utilities
15
- │ ├── index.ts # Exports
16
- │ ├── types.ts # ThemePalette, StylePresets, BoxColors interfaces
17
- │ ├── useThemePalette.ts # useThemePalette, useStylePresets, useBoxColors, alpha
18
- │ └── utils.ts # hslToHex, hslToRgbString, hslToRgba
9
+ ├── index.css # Main entry imports the chain below
10
+ ├── theme.css # Imports tokens.css → animations → light → dark
11
+ ├── base.css # Resets + `*` border-color + body bg/color
12
+ ├── utilities.css # Custom utilities (.glass-*, .step, animations)
13
+ ├── sources.css # @source directives for monorepo class detection
14
+ ├── palette/ # JS-readable color access (Canvas/SVG/Mermaid)
19
15
  └── theme/
20
- ├── tokens.css # @theme block registers all CSS custom properties as Tailwind utilities
21
- ├── light.css # :root — light theme HSL values
22
- ├── dark.css # .dark — dark theme HSL values
23
- ├── animations.css # Animation keyframes
24
- └── theme-tokens.story.tsx # Playground story — visual reference for all tokens
16
+ ├── tokens.css # @theme inline { --color-X: var(--X) } + @theme { spacing/blur/z }
17
+ ├── light.css # :root — full hsl(...) values
18
+ ├── dark.css # .dark — full hsl(...) values
19
+ └── animations.css # @keyframes (float, blob, morph, …)
20
+
21
+ presets/
22
+ ├── build.ts # buildThemeStyleSheet({preset}) → CSS string
23
+ ├── types.ts # ThemeStylePresetId, ThemeCssVarMap
24
+ ├── presets.ts # THEME_STYLE_PRESETS, THEME_STYLE_PRESET_ORDER
25
+ └── themes/ # 8 preset definitions (see Presets section)
25
26
  ```
26
27
 
27
- ## Semantic Color Token System
28
+ ## Token format (Tailwind v4 `@theme inline` pattern)
28
29
 
29
- All colors are defined as HSL CSS custom properties in `light.css` / `dark.css` and
30
- registered in `tokens.css` so Tailwind generates utility classes.
30
+ Tokens live in `:root` / `.dark` as **fully-wrapped CSS colors**, and `@theme inline` maps them by reference:
31
31
 
32
- **Rule: never use raw Tailwind color-scale classes** (`amber-500`, `green-100`, etc.) in
33
- components. Always use the semantic token classes — they adapt to both themes automatically.
32
+ ```css
33
+ :root { --background: hsl(0 0% 94%); }
34
+ .dark { --background: hsl(0 0% 4%); }
34
35
 
35
- ### Base tokens
36
+ @theme inline { --color-background: var(--background); }
37
+ ```
36
38
 
37
- | Tailwind class | Token | Description |
38
- |---|---|---|
39
- | `bg-background` | `--background` | Page background |
40
- | `bg-foreground` | `--foreground` | Inverted fill (e.g. avatar bg) |
41
- | `text-foreground` | `--foreground` | Primary body text |
42
- | `text-muted-foreground` | `--muted-foreground` | Secondary / hint text |
43
- | `bg-muted` | `--muted` | Subtle surface (inputs, chips) |
44
- | `bg-card` | `--card` | Card surface |
45
- | `bg-accent` | `--accent` | Hover surface |
46
- | `bg-border` / `border-border` | `--border` | Dividers & rings |
47
- | `bg-primary` / `text-primary` | `--primary` | Brand CTA color |
48
- | `bg-destructive` / `text-destructive` | `--destructive` | Error / delete |
39
+ This makes opacity modifiers (`bg-card/40`, `border-foreground/20`) resolve through `color-mix(in oklab, …)` — they work for every semantic token, no helpers needed.
40
+
41
+ > **Do NOT wrap tokens in `hsl(var(--X))`.** Tokens are already full colors, so `hsl(hsl(...))` is invalid and falls back to the default. Use `var(--X)` or `color-mix(in oklab, var(--X) N%, transparent)` for manual opacity.
42
+
43
+ ## Semantic tokens never use raw color scales
49
44
 
50
- ### Status surface tokens
45
+ **Rule:** never write `bg-amber-500`, `text-green-700`, `border-gray-200`. Use semantic tokens — they adapt to both themes and to whatever preset is active.
51
46
 
52
- Each status has **4 tokens** for building banners and alerts:
47
+ ### Base tokens
48
+
49
+ | Class | Token | Purpose |
50
+ |---|---|---|
51
+ | `bg-background` / `text-foreground` | `--background` / `--foreground` | Page surface + body text |
52
+ | `bg-card` / `text-card-foreground` | `--card` | Card surface (elevated over background) |
53
+ | `bg-popover` / `text-popover-foreground` | `--popover` | Floating menus, tooltips, dropdowns |
54
+ | `bg-muted` / `text-muted-foreground` | `--muted` | Subtle surface (input rest, chips, secondary text) |
55
+ | `bg-accent` / `text-accent-foreground` | `--accent` | Hover surface |
56
+ | `bg-primary` / `text-primary-foreground` | `--primary` | Brand CTA (filled buttons, links) |
57
+ | `bg-secondary` / `text-secondary-foreground` | `--secondary` | Neutral filled controls |
58
+ | `bg-destructive` / `text-destructive-foreground` | `--destructive` | Error / delete filled controls |
59
+ | `border-border` | `--border` | Dividers, card outlines, separators |
60
+ | `bg-input` | `--input` | Input field border / fill (theme dependent) |
61
+ | `ring-ring` | `--ring` | Focus rings, selected outlines |
62
+
63
+ ### Status surface tokens (default + dark themes only)
64
+
65
+ Each status has 4 tokens for banners and alerts:
53
66
 
54
67
  | Role | Class | Token |
55
68
  |---|---|---|
@@ -58,9 +71,7 @@ Each status has **4 tokens** for building banners and alerts:
58
71
  | Readable text | `text-warning-foreground` | `--warning-foreground` |
59
72
  | Border ring | `border-warning-border` | `--warning-border` |
60
73
 
61
- Available statuses: **`warning`** · **`success`** · **`destructive`** · **`info`**
62
-
63
- #### Banner pattern
74
+ Available statuses: **`warning`** · **`success`** · **`destructive`** · **`info`**.
64
75
 
65
76
  ```tsx
66
77
  <div className="flex items-center gap-3 rounded-md border border-warning-border/40
@@ -70,126 +81,142 @@ Available statuses: **`warning`** · **`success`** · **`destructive`** · **`in
70
81
  </div>
71
82
  ```
72
83
 
73
- Change `warning` `success` / `destructive` / `info` for other states. No raw color classes needed.
84
+ Most presets don't override `*-background` / `*-border` / `*-foreground`. For preset-agnostic banners, use opacity-derived surfaces:
74
85
 
75
- ### Code surface tokens
86
+ ```tsx
87
+ <div className="rounded-md border border-warning/30 bg-warning/10 text-warning">…</div>
88
+ ```
76
89
 
77
- | Class | Description |
90
+ ### Code & sidebar tokens
91
+
92
+ | Class | Purpose |
78
93
  |---|---|
79
- | `bg-code` / `text-code-foreground` | Code block panel |
80
- | `border-code-border` | Code block border |
94
+ | `bg-code` / `text-code-foreground` / `border-code-border` | Code block panels (markdown fences, terminal blocks) |
81
95
  | `bg-code-inline` / `text-code-inline-foreground` | Inline `<code>` chips |
96
+ | `bg-sidebar` / `text-sidebar-foreground` / `border-sidebar-border` | App sidebar chrome |
97
+ | `bg-sidebar-accent` / `text-sidebar-accent-foreground` | Sidebar hover state |
82
98
 
83
- ### Sidebar tokens
99
+ ## Theme presets — 8 production-ready
84
100
 
85
- `bg-sidebar`, `text-sidebar-foreground`, `bg-sidebar-accent`, `text-sidebar-accent-foreground`,
86
- `border-sidebar-border` — used by the app sidebar chrome, defined per-theme.
101
+ | ID | Use case |
102
+ |---|---|
103
+ | `default` | Default ui-core theme — cyan brand |
104
+ | `django-cfg` | Brand override (deeper cyan-blue primary) |
105
+ | `macos` | Pixel-accurate Apple HIG (Sequoia / Tahoe 26) — Wails/Electron desktop |
106
+ | `ios` | iOS app feel — 0.75rem radius, systemBlue |
107
+ | `windows` | Microsoft Fluent 2 — Segoe UI Variable, 0.375rem radius |
108
+ | `soft` | Larger radius (1rem) — friendly marketing surfaces |
109
+ | `dense` | Smaller radius (0.25rem) — data-heavy admin UIs |
110
+ | `high-contrast` | A11y boost — stronger borders, harder text |
87
111
 
88
- ## Playground Story
112
+ ### Apply a preset
89
113
 
90
- Run `pnpm playground` in the `ui-core` package to open the component explorer.
91
- The **Theme / Tokens** story (`theme-tokens.story.tsx`) shows a live visual reference of every
92
- semantic token — base colors, status surfaces, code surface, sidebar tokens, and typography —
93
- in both light and dark mode. Use it to validate token changes before syncing to consumers.
114
+ ```tsx
115
+ import { buildThemeStyleSheet } from '@djangocfg/ui-core/styles/presets';
116
+
117
+ // Static: bake into your app's CSS at build time
118
+ const css = buildThemeStyleSheet({ preset: 'macos' });
119
+ // then write `css` to a file and `@import` it after ui-core/styles
120
+
121
+ // Runtime: inject into <head> (use case: settings picker)
122
+ useEffect(() => {
123
+ const el = document.createElement('style');
124
+ el.textContent = buildThemeStyleSheet({ preset });
125
+ document.head.appendChild(el);
126
+ return () => el.remove();
127
+ }, [preset]);
128
+ ```
94
129
 
95
- ## App Setup (globals.css) — CRITICAL!
130
+ ### Override individual tokens
96
131
 
97
- When creating a new app that uses UI packages, your `globals.css` MUST follow this pattern:
132
+ To re-tint only a couple of variables without copying a whole preset:
98
133
 
99
134
  ```css
100
- /* 1. Import UI package styles FIRST (contains @theme variables) */
101
- @import "@djangocfg/ui-nextjs/styles";
135
+ :root.my-brand {
136
+ --primary: hsl(280 80% 55%);
137
+ --ring: hsl(280 80% 55%);
138
+ }
139
+ ```
102
140
 
103
- /* 2. Import other package styles (layouts, tools, etc.) */
104
- @import "@djangocfg/layouts/styles";
105
- @import "@djangocfg/ui-tools/styles";
141
+ Toggle `<html class="my-brand">` and the override applies on top of whichever preset is active.
106
142
 
107
- /* 3. Import Tailwind CSS v4 (AFTER theme variables!) */
108
- @import "tailwindcss";
143
+ ## Glass utilities macOS / Windows / Liquid
109
144
 
110
- /* 4. Load plugins */
111
- @plugin "tailwindcss-animate";
112
- ```
145
+ `utilities.css` ships four backdrop-blur classes. Each is built with `color-mix` over a token, so they work in any preset / theme.
113
146
 
114
- ### Why @source is Required
147
+ | Class | Recipe | When |
148
+ |---|---|---|
149
+ | `.glass-macos` | `blur(20px) saturate(180%)` · 72% `--background` | Sidebar, popovers, sheet headers |
150
+ | `.glass-liquid` | `blur(12px) saturate(180%)` · 60% `--card` + inner highlight + border | Floating chrome (macOS 26 Dock, FAB) |
151
+ | `.glass-header` | `blur(8px) saturate(160%)` · 80% `--background` | Nav bars, status strips |
152
+ | `.glass-win11` | `blur(60px) saturate(125%)` · 85% `--background` | Windows Mica / Acrylic |
115
153
 
116
- In a Tailwind v4 monorepo, automatic class detection doesn't work across packages.
117
- Each package with Tailwind classes needs either:
154
+ Each requires a **non-transparent parent** (something for the blur to chew on). Avoid stacking — blur compounds.
118
155
 
119
- 1. A `@source` directive in the consuming app's `globals.css`
120
- 2. Or a `sources.css` file in the package imported via the styles entry point
156
+ ## App setup
121
157
 
122
- ## Syncing Local Packages to Consumer
158
+ In your consuming app's `globals.css`:
123
159
 
124
- These packages are consumed via pinned npm versions — edits to `src/` don't automatically
125
- reach the consumer. After changing theme files, copy them manually:
160
+ ```css
161
+ /* 1. ui-core theme tokens FIRST (they define every --color-*) */
162
+ @import "@djangocfg/ui-core/styles";
126
163
 
127
- ```bash
128
- CONSUMER=/path/to/carapis/solution/projects/frontend
129
- SRC=./src/styles/theme
164
+ /* 2. Other package styles after */
165
+ @import "@djangocfg/layouts/styles";
166
+ @import "@djangocfg/ui-tools/styles";
130
167
 
131
- cp "$SRC/light.css" "$CONSUMER/node_modules/@djangocfg/ui-core/src/styles/theme/light.css"
132
- cp "$SRC/dark.css" "$CONSUMER/node_modules/@djangocfg/ui-core/src/styles/theme/dark.css"
133
- cp "$SRC/tokens.css" "$CONSUMER/node_modules/@djangocfg/ui-core/src/styles/theme/tokens.css"
168
+ /* 3. Tailwind v4 core LAST so it sees the @theme tokens */
169
+ @import "tailwindcss";
134
170
  ```
135
171
 
136
- Then restart the consumer's dev server (Next.js caches module resolution).
172
+ > **No `@plugin "tailwindcss-animate"` needed** in v4 — the keyframes ship via `theme/animations.css`. Use `tw-animate-css` instead if you need extra utilities.
137
173
 
138
- ## Import Order (Critical!)
174
+ ### Why `@source` is required
139
175
 
140
- ```css
141
- /* 1. Theme variables MUST come first */
142
- @import "./theme.css";
143
-
144
- /* 2. Source detection for Tailwind v4 monorepo */
145
- @import "./sources.css";
176
+ Tailwind v4 doesn't scan across npm packages automatically. Each consumer needs either a `@source` directive or to import a `sources.css` from the package — `@djangocfg/ui-core/styles` already chains its own `sources.css`, so importing `…/styles` is enough.
146
177
 
147
- /* 3. Base styles */
148
- @import "./base.css";
178
+ ## Theme Showcase story
149
179
 
150
- /* 4. Custom utilities */
151
- @import "./utilities.css";
152
- ```
180
+ The `UI Core/Theme Showcase` story in djangocfg storybook renders every base token, status surface, button variant, card, form control, glass utility, and opacity sanity-check on one page. Switch the `preset` control to flip across all 8 themes; flip light/dark from the toolbar.
153
181
 
154
- ## Gotchas
182
+ Use it to validate any token change before publishing — every regression shows up on one screen.
155
183
 
156
- ### Opacity with HSL colors
184
+ ## Local edits consumer sync (debugging only)
157
185
 
158
- `bg-background/80` does **not** work with HSL tokens in Tailwind v4. Use inline styles:
186
+ These packages are usually consumed via pinned npm versions. To hot-test a change without publishing:
159
187
 
160
- ```tsx
161
- // ❌ Broken
162
- <nav className="bg-background/80">
188
+ ```bash
189
+ CONSUMER=/path/to/consumer/frontend/node_modules/.pnpm/@djangocfg+ui-core@…/node_modules/@djangocfg/ui-core/src/styles/theme
190
+ SRC=./src/styles/theme
163
191
 
164
- // ✅ Works
165
- <nav style={{ backgroundColor: 'hsl(var(--background) / 0.8)' }}>
192
+ cp "$SRC/light.css" "$CONSUMER/light.css"
193
+ cp "$SRC/dark.css" "$CONSUMER/dark.css"
194
+ cp "$SRC/tokens.css" "$CONSUMER/tokens.css"
166
195
  ```
167
196
 
168
- **Exception**: `border-warning-border/40` works because `--color-warning-border` is resolved
169
- to a full `hsl()` value, making the `/` opacity modifier valid.
197
+ Restart the consumer's dev server (Next.js / Vite cache module resolution). Revert before committing — `file:` paths in `package.json` cause `@types/react` dedup failures.
170
198
 
171
- ### Arbitrary values
199
+ ## Gotchas
172
200
 
173
- Arbitrary values like `h-[80px]`, `z-[100]` may not work in v4. Prefer tokens:
201
+ ### Arbitrary Tailwind values
174
202
 
175
- ```css
176
- @theme {
177
- --spacing-80: 20rem;
178
- --z-index-100: 100;
179
- }
180
- ```
203
+ `h-[80px]`, `z-[100]` etc. may not work in v4. Prefer scaled tokens (`h-20`, `z-100`) — they're already registered in `tokens.css` under `--spacing-*` / `--z-index-*`.
181
204
 
182
- Or use inline styles for one-off fixed sizes.
205
+ ### Opacity in arbitrary classes
183
206
 
184
- ### Spacing & z-index
207
+ `shadow-[0_0_0_1px_var(--ring)]` works (underscores get parsed as spaces). For nested `color-mix`, use underscores everywhere:
185
208
 
186
- Spacing utilities (`h-20`, `p-4`) require `--spacing-*` in `@theme`.
187
- Z-index utilities (`z-50`, `z-100`) require `--z-index-*` in `@theme`.
188
- Both are already defined in `tokens.css`.
209
+ ```tsx
210
+ className="bg-[color-mix(in_oklab,var(--primary)_30%,transparent)]"
211
+ ```
212
+
213
+ ### Glass over transparent background
214
+
215
+ `.glass-*` needs an opaque parent to blur. On a fully transparent canvas (e.g. Wails translucent window) put a base layer first or the blur is invisible.
189
216
 
190
- ## Theme Palette (Programmatic Color Access)
217
+ ## Programmatic palette access (JS / Canvas / SVG)
191
218
 
192
- For Canvas, SVG, Mermaid, and other contexts that don't support CSS variables:
219
+ For contexts that can't read CSS vars (Canvas 2D, Mermaid, react-pdf, SVG fill attrs):
193
220
 
194
221
  ```tsx
195
222
  import {
@@ -200,12 +227,11 @@ import {
200
227
  } from '@djangocfg/ui-core/styles/palette';
201
228
 
202
229
  const palette = useThemePalette();
203
- ctx.fillStyle = palette.primary; // '#0989aa'
204
- ctx.fillStyle = alpha(palette.warning, 0.15); // 'rgba(..., 0.15)'
230
+ ctx.fillStyle = palette.primary; // '#0989aa'
231
+ ctx.fillStyle = alpha(palette.warning, 0.15); // 'rgba(…, 0.15)'
205
232
 
206
233
  const presets = useStylePresets();
207
- presets.success // { fill: '#...', stroke: '#...', color: '#fff' }
208
-
209
- const boxes = useBoxColors();
210
- boxes.primary // semi-transparent brand, adapts to light/dark
234
+ presets.success // { fill: '#…', stroke: '#…', color: '#fff' }
211
235
  ```
236
+
237
+ These hooks resolve the live CSS values via `getComputedStyle` and re-run on theme changes.
@@ -26,7 +26,7 @@
26
26
 
27
27
  /* Base element styles */
28
28
  * {
29
- border-color: hsl(var(--border));
29
+ border-color: var(--border);
30
30
  }
31
31
 
32
32
  html {
@@ -34,8 +34,8 @@ html {
34
34
  }
35
35
 
36
36
  body {
37
- background-color: hsl(var(--background));
38
- color: hsl(var(--foreground));
37
+ background-color: var(--background);
38
+ color: var(--foreground);
39
39
  font-family: var(--font-sans);
40
40
  font-size: var(--font-size-base);
41
41
  line-height: var(--line-height-base);
@@ -10,15 +10,6 @@ export const THEME_STYLE_PRESET_ORDER = [
10
10
  'soft',
11
11
  'dense',
12
12
  'high-contrast',
13
- 'catppuccin',
14
- 'dracula',
15
- 'github',
16
- 'gruvbox',
17
- 'material',
18
- 'nord',
19
- 'one-dark',
20
- 'solarized',
21
- 'tokyo-night',
22
13
  ] as const satisfies readonly ThemeStylePresetId[];
23
14
 
24
15
  export const THEME_STYLE_PRESETS = THEME_PRESETS;
@@ -3,18 +3,18 @@ import type { ThemePreset } from './types';
3
3
  export const densePreset: ThemePreset = {
4
4
  light: {
5
5
  radius: '0.25rem',
6
- border: '0 0% 82%',
7
- input: '0 0% 82%',
8
- muted: '0 0% 94%',
9
- card: '0 0% 100%',
10
- accent: '0 0% 93%',
6
+ border: 'hsl(0 0% 82%)',
7
+ input: 'hsl(0 0% 82%)',
8
+ muted: 'hsl(0 0% 94%)',
9
+ card: 'hsl(0 0% 100%)',
10
+ accent: 'hsl(0 0% 93%)',
11
11
  },
12
12
  dark: {
13
13
  radius: '0.25rem',
14
- border: '0 0% 24%',
15
- input: '0 0% 24%',
16
- muted: '0 0% 12%',
17
- card: '0 0% 10%',
18
- accent: '0 0% 14%',
14
+ border: 'hsl(0 0% 24%)',
15
+ input: 'hsl(0 0% 24%)',
16
+ muted: 'hsl(0 0% 12%)',
17
+ card: 'hsl(0 0% 10%)',
18
+ accent: 'hsl(0 0% 14%)',
19
19
  },
20
20
  };
@@ -2,20 +2,20 @@ import type { ThemePreset } from './types';
2
2
 
3
3
  export const djangoCfgPreset: ThemePreset = {
4
4
  light: {
5
- primary: '192 90% 35%',
6
- 'primary-foreground': '0 0% 100%',
7
- ring: '192 90% 35%',
8
- 'sidebar-primary': '192 90% 35%',
9
- 'sidebar-ring': '192 90% 35%',
10
- 'chart-1': '192 90% 35%',
5
+ primary: 'hsl(192 90% 35%)',
6
+ 'primary-foreground': 'hsl(0 0% 100%)',
7
+ ring: 'hsl(192 90% 35%)',
8
+ 'sidebar-primary': 'hsl(192 90% 35%)',
9
+ 'sidebar-ring': 'hsl(192 90% 35%)',
10
+ 'chart-1': 'hsl(192 90% 35%)',
11
11
  },
12
12
  dark: {
13
- primary: '189 100% 50%',
14
- 'primary-foreground': '0 0% 9%',
15
- ring: '189 100% 50%',
16
- 'sidebar-primary': '189 100% 50%',
17
- 'sidebar-primary-foreground': '0 0% 9%',
18
- 'sidebar-ring': '189 100% 50%',
19
- 'chart-1': '189 100% 50%',
13
+ primary: 'hsl(189 100% 50%)',
14
+ 'primary-foreground': 'hsl(0 0% 9%)',
15
+ ring: 'hsl(189 100% 50%)',
16
+ 'sidebar-primary': 'hsl(189 100% 50%)',
17
+ 'sidebar-primary-foreground': 'hsl(0 0% 9%)',
18
+ 'sidebar-ring': 'hsl(189 100% 50%)',
19
+ 'chart-1': 'hsl(189 100% 50%)',
20
20
  },
21
21
  };
@@ -2,18 +2,18 @@ import type { ThemePreset } from './types';
2
2
 
3
3
  export const highContrastPreset: ThemePreset = {
4
4
  light: {
5
- border: '0 0% 72%',
6
- input: '0 0% 72%',
7
- 'muted-foreground': '0 0% 32%',
8
- foreground: '0 0% 6%',
9
- ring: '0 0% 20%',
5
+ border: 'hsl(0 0% 72%)',
6
+ input: 'hsl(0 0% 72%)',
7
+ 'muted-foreground': 'hsl(0 0% 32%)',
8
+ foreground: 'hsl(0 0% 6%)',
9
+ ring: 'hsl(0 0% 20%)',
10
10
  },
11
11
  dark: {
12
- border: '0 0% 38%',
13
- input: '0 0% 38%',
14
- 'muted-foreground': '0 0% 78%',
15
- foreground: '0 0% 100%',
16
- background: '0 0% 6%',
17
- ring: '0 0% 85%',
12
+ border: 'hsl(0 0% 38%)',
13
+ input: 'hsl(0 0% 38%)',
14
+ 'muted-foreground': 'hsl(0 0% 78%)',
15
+ foreground: 'hsl(0 0% 100%)',
16
+ background: 'hsl(0 0% 6%)',
17
+ ring: 'hsl(0 0% 85%)',
18
18
  },
19
19
  };
@@ -9,15 +9,6 @@ import { windowsPreset } from './windows';
9
9
  import { softPreset } from './soft';
10
10
  import { densePreset } from './dense';
11
11
  import { highContrastPreset } from './high-contrast';
12
- import { catppuccinPreset } from './catppuccin';
13
- import { draculaPreset } from './dracula';
14
- import { githubPreset } from './github';
15
- import { gruvboxPreset } from './gruvbox';
16
- import { materialPreset } from './material';
17
- import { nordPreset } from './nord';
18
- import { oneDarkPreset } from './one-dark';
19
- import { solarizedPreset } from './solarized';
20
- import { tokyoNightPreset } from './tokyo-night';
21
12
 
22
13
  export type { ThemePreset };
23
14
 
@@ -30,13 +21,4 @@ export const THEME_PRESETS: Record<ThemeStylePresetId, ThemePreset> = {
30
21
  'soft': softPreset,
31
22
  'dense': densePreset,
32
23
  'high-contrast': highContrastPreset,
33
- 'catppuccin': catppuccinPreset,
34
- 'dracula': draculaPreset,
35
- 'github': githubPreset,
36
- 'gruvbox': gruvboxPreset,
37
- 'material': materialPreset,
38
- 'nord': nordPreset,
39
- 'one-dark': oneDarkPreset,
40
- 'solarized': solarizedPreset,
41
- 'tokyo-night': tokyoNightPreset,
42
24
  };