@kilivi/payloadcms-theme-management 0.2.2 β†’ 0.2.3

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 (42) hide show
  1. package/README.md +26 -4
  2. package/dist/extended-presets.d.ts +16 -1
  3. package/dist/extended-presets.d.ts.map +1 -1
  4. package/dist/extended-presets.js +8 -1
  5. package/dist/extended-presets.js.map +1 -1
  6. package/dist/fields/ThemeColorPickerField.css +350 -65
  7. package/dist/fields/ThemeColorPickerField.d.ts.map +1 -1
  8. package/dist/fields/ThemeColorPickerField.js +131 -13
  9. package/dist/fields/ThemeColorPickerField.js.map +1 -1
  10. package/dist/fields/ThemeLivePreview.css +190 -0
  11. package/dist/fields/ThemeLivePreview.d.ts +4 -0
  12. package/dist/fields/ThemeLivePreview.d.ts.map +1 -0
  13. package/dist/fields/ThemeLivePreview.js +198 -0
  14. package/dist/fields/ThemeLivePreview.js.map +1 -0
  15. package/dist/fields/extendedThemeFields.d.ts +121 -9
  16. package/dist/fields/extendedThemeFields.d.ts.map +1 -1
  17. package/dist/fields/extendedThemeFields.js +298 -103
  18. package/dist/fields/extendedThemeFields.js.map +1 -1
  19. package/dist/fields/themeConfigurationField.d.ts.map +1 -1
  20. package/dist/fields/themeConfigurationField.js +8 -6
  21. package/dist/fields/themeConfigurationField.js.map +1 -1
  22. package/dist/index.d.ts +2 -1
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +24 -2
  25. package/dist/index.js.map +1 -1
  26. package/dist/tweakcn-presets.d.ts +10 -0
  27. package/dist/tweakcn-presets.d.ts.map +1 -0
  28. package/dist/tweakcn-presets.js +714 -0
  29. package/dist/tweakcn-presets.js.map +1 -0
  30. package/dist/tweakcn-special-themes.d.ts +8 -0
  31. package/dist/tweakcn-special-themes.d.ts.map +1 -0
  32. package/dist/tweakcn-special-themes.js +614 -0
  33. package/dist/tweakcn-special-themes.js.map +1 -0
  34. package/dist/views/ThemePreviewView.d.ts +8 -0
  35. package/dist/views/ThemePreviewView.d.ts.map +1 -0
  36. package/dist/views/ThemePreviewView.js +44 -0
  37. package/dist/views/ThemePreviewView.js.map +1 -0
  38. package/dist/views/ThemePreviewViewClient.d.ts +7 -0
  39. package/dist/views/ThemePreviewViewClient.d.ts.map +1 -0
  40. package/dist/views/ThemePreviewViewClient.js +12 -0
  41. package/dist/views/ThemePreviewViewClient.js.map +1 -0
  42. package/package.json +6 -1
package/README.md CHANGED
@@ -2,10 +2,13 @@
2
2
 
3
3
  A comprehensive theme management plugin for Payload CMS v3 that provides powerful theming capabilities with SSR support, preventing FOUC (Flash of Unstyled Content).
4
4
 
5
- ## πŸŽ‰ Version 0.2.0 - New Features!
5
+ ## πŸŽ‰ Version 0.2.1 - New Features!
6
6
 
7
- - **βœ… Tabs Structure** - Plugin now creates a "NastavenΓ­ vzhledu" (Appearance Settings) tab
8
- - **βœ… Extended Theme Support** - OKLCH color format with 19+ semantic tokens
7
+ - **βœ… Live Theme Preview** - Real-time theme preview in admin panel at `/admin/theme-preview`
8
+ - **βœ… Professional Color Picker** - Enhanced color picker with react-colorful library
9
+ - **βœ… Streamlined Tokens** - Optimized to 24 essential color tokens
10
+ - **βœ… Tabs Structure** - Plugin creates a "NastavenΓ­ vzhledu" (Appearance Settings) tab
11
+ - **βœ… Extended Theme Support** - OKLCH color format with semantic tokens
9
12
  - **βœ… shadcn/ui Compatible** - Works with https://ui.shadcn.com/themes
10
13
  - **βœ… TweakCN Compatible** - Works with https://tweakcn.com/editor/theme
11
14
  - **βœ… Chart Colors** - 5 customizable colors for data visualization
@@ -13,8 +16,9 @@ A comprehensive theme management plugin for Payload CMS v3 that provides powerfu
13
16
  ## Features
14
17
 
15
18
  - 🎨 **Multiple Theme Presets** - Cool, Brutal, Neon, Solar, and more
19
+ - πŸ–ΌοΈ **Live Theme Preview** - Real-time preview in admin panel (no configuration needed!)
16
20
  - 🎨 **Extended Themes** - OKLCH-based themes with full shadcn/ui token support
17
- - 🎨 **Custom Color Palette** - Full HSL color customization (19+ semantic tokens)
21
+ - 🎨 **Custom Color Palette** - Full HSL color customization (24 semantic tokens)
18
22
  - πŸ”€ **Typography Control** - Google Fonts integration for headings, body, and code
19
23
  - πŸ“ **Border Radius Presets** - Sharp, Rounded, or Pill styles
20
24
  - πŸŒ“ **Dark Mode Support** - Built-in light/dark/system mode toggle
@@ -148,6 +152,24 @@ Or with Tailwind CSS:
148
152
  - **Dealership** - Automotive-inspired
149
153
  - **Real Estate** - Professional property theme (+ Gold, Neutral variants)
150
154
 
155
+ ## Live Theme Preview
156
+
157
+ The plugin automatically adds a **Live Preview** page to your admin panel at `/admin/theme-preview`.
158
+
159
+ ### Features:
160
+ - βœ… **Zero Configuration** - Works automatically when plugin is installed
161
+ - βœ… **Real-time Updates** - See changes instantly as you edit theme settings
162
+ - βœ… **Light/Dark Toggle** - Preview both modes side-by-side
163
+ - βœ… **Component Showcase** - View cards, buttons, inputs, badges, and more
164
+ - βœ… **Professional UI** - Clean, modern preview interface
165
+
166
+ ### How to Access:
167
+ 1. Install the plugin (see Quick Start above)
168
+ 2. Navigate to `/admin/theme-preview` in your Payload admin panel
169
+ 3. Open theme settings in another tab and see changes update live!
170
+
171
+ The preview automatically watches your `themeConfiguration` field and displays real-time updates without any additional setup.
172
+
151
173
  ## API Reference
152
174
 
153
175
  ### Main Entry Point
@@ -34,9 +34,18 @@ export interface ShadcnColorTokens {
34
34
  'chart-3': string;
35
35
  'chart-4': string;
36
36
  'chart-5': string;
37
- radius?: string;
37
+ 'shadow-color'?: string;
38
+ 'shadow-opacity'?: string;
39
+ 'shadow-blur'?: string;
40
+ 'shadow-spread'?: string;
41
+ 'shadow-offset-x'?: string;
42
+ 'shadow-offset-y'?: string;
38
43
  'font-sans'?: string;
44
+ 'font-serif'?: string;
39
45
  'font-mono'?: string;
46
+ 'letter-spacing'?: string;
47
+ spacing?: string;
48
+ radius?: string;
40
49
  }
41
50
  export interface ExtendedThemePreset {
42
51
  label: string;
@@ -51,6 +60,12 @@ export interface ExtendedThemePreset {
51
60
  * These work alongside the existing default presets
52
61
  */
53
62
  export declare const extendedThemePresets: Record<string, ExtendedThemePreset>;
63
+ /**
64
+ * All available extended theme presets (original + TweakCN)
65
+ */
66
+ export declare const allExtendedThemePresets: {
67
+ [x: string]: ExtendedThemePreset;
68
+ };
54
69
  /**
55
70
  * Convert extended theme to CSS variables
56
71
  */
@@ -1 +1 @@
1
- {"version":3,"file":"extended-presets.d.ts","sourceRoot":"","sources":["../src/extended-presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,iBAAiB;IAEhC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAGlB,IAAI,EAAE,MAAM,CAAA;IACZ,iBAAiB,EAAE,MAAM,CAAA;IAGzB,OAAO,EAAE,MAAM,CAAA;IACf,oBAAoB,EAAE,MAAM,CAAA;IAG5B,OAAO,EAAE,MAAM,CAAA;IACf,oBAAoB,EAAE,MAAM,CAAA;IAG5B,SAAS,EAAE,MAAM,CAAA;IACjB,sBAAsB,EAAE,MAAM,CAAA;IAG9B,KAAK,EAAE,MAAM,CAAA;IACb,kBAAkB,EAAE,MAAM,CAAA;IAG1B,MAAM,EAAE,MAAM,CAAA;IACd,mBAAmB,EAAE,MAAM,CAAA;IAG3B,WAAW,EAAE,MAAM,CAAA;IACnB,wBAAwB,EAAE,MAAM,CAAA;IAGhC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IAGZ,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IAGjB,MAAM,CAAC,EAAE,MAAM,CAAA;IAGf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE;QACN,KAAK,EAAE,iBAAiB,CAAA;QACxB,IAAI,EAAE,iBAAiB,CAAA;KACxB,CAAA;CACF;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAuLpE,CAAA;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,mBAAmB,EAC1B,IAAI,GAAE,OAAO,GAAG,MAAgB,GAC/B,MAAM,CASR;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAe3E"}
1
+ {"version":3,"file":"extended-presets.d.ts","sourceRoot":"","sources":["../src/extended-presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,MAAM,WAAW,iBAAiB;IAEhC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAGlB,IAAI,EAAE,MAAM,CAAA;IACZ,iBAAiB,EAAE,MAAM,CAAA;IAGzB,OAAO,EAAE,MAAM,CAAA;IACf,oBAAoB,EAAE,MAAM,CAAA;IAG5B,OAAO,EAAE,MAAM,CAAA;IACf,oBAAoB,EAAE,MAAM,CAAA;IAG5B,SAAS,EAAE,MAAM,CAAA;IACjB,sBAAsB,EAAE,MAAM,CAAA;IAG9B,KAAK,EAAE,MAAM,CAAA;IACb,kBAAkB,EAAE,MAAM,CAAA;IAG1B,MAAM,EAAE,MAAM,CAAA;IACd,mBAAmB,EAAE,MAAM,CAAA;IAG3B,WAAW,EAAE,MAAM,CAAA;IACnB,wBAAwB,EAAE,MAAM,CAAA;IAGhC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IAGZ,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IAGjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAG1B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IAGpB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;IAGhB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE;QACN,KAAK,EAAE,iBAAiB,CAAA;QACxB,IAAI,EAAE,iBAAiB,CAAA;KACxB,CAAA;CACF;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAuLpE,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB;;CAGnC,CAAA;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,mBAAmB,EAC1B,IAAI,GAAE,OAAO,GAAG,MAAgB,GAC/B,MAAM,CASR;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAe3E"}
@@ -8,7 +8,8 @@
8
8
  * - Chart colors (chart-1 through chart-5)
9
9
  * - Semantic color tokens (destructive, muted, accent, etc.)
10
10
  * - CSS variable generation for Tailwind integration
11
- */ /**
11
+ */ import { tweakcnThemePresets } from './tweakcn-presets.js';
12
+ /**
12
13
  * Extended theme presets with full shadcn/ui token support
13
14
  * These work alongside the existing default presets
14
15
  */ export const extendedThemePresets = {
@@ -193,6 +194,12 @@
193
194
  }
194
195
  }
195
196
  };
197
+ /**
198
+ * All available extended theme presets (original + TweakCN)
199
+ */ export const allExtendedThemePresets = {
200
+ ...extendedThemePresets,
201
+ ...tweakcnThemePresets
202
+ };
196
203
  /**
197
204
  * Convert extended theme to CSS variables
198
205
  */ export function extendedThemeToCSSVariables(theme, mode = 'light') {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/extended-presets.ts"],"sourcesContent":["/**\n * Extended Shadcn-style theme presets with full color token support\n * Inspired by https://ui.shadcn.com/themes and https://tweakcn.com/editor/theme\n * \n * This extends the existing theme system with:\n * - Full shadcn/ui color tokens\n * - OKLCH color format support\n * - Chart colors (chart-1 through chart-5)\n * - Semantic color tokens (destructive, muted, accent, etc.)\n * - CSS variable generation for Tailwind integration\n */\n\nexport interface ShadcnColorTokens {\n // Base colors\n background: string\n foreground: string\n \n // Card colors\n card: string\n 'card-foreground': string\n \n // Popover colors\n popover: string\n 'popover-foreground': string\n \n // Primary colors\n primary: string\n 'primary-foreground': string\n \n // Secondary colors\n secondary: string\n 'secondary-foreground': string\n \n // Muted colors\n muted: string\n 'muted-foreground': string\n \n // Accent colors\n accent: string\n 'accent-foreground': string\n \n // Destructive colors\n destructive: string\n 'destructive-foreground': string\n \n // Border & Input\n border: string\n input: string\n ring: string\n \n // Chart colors (for data visualization)\n 'chart-1': string\n 'chart-2': string\n 'chart-3': string\n 'chart-4': string\n 'chart-5': string\n \n // Border radius (optional)\n radius?: string\n \n // Font families (optional)\n 'font-sans'?: string\n 'font-mono'?: string\n}\n\nexport interface ExtendedThemePreset {\n label: string\n value: string\n styles: {\n light: ShadcnColorTokens\n dark: ShadcnColorTokens\n }\n}\n\n/**\n * Extended theme presets with full shadcn/ui token support\n * These work alongside the existing default presets\n */\nexport const extendedThemePresets: Record<string, ExtendedThemePreset> = {\n 'cool-extended': {\n label: 'Cool & Professional (Extended)',\n value: 'cool-extended',\n styles: {\n light: {\n background: 'oklch(1 0 0)',\n foreground: 'oklch(0.145 0 0)',\n card: 'oklch(1 0 0)',\n 'card-foreground': 'oklch(0.145 0 0)',\n popover: 'oklch(1 0 0)',\n 'popover-foreground': 'oklch(0.145 0 0)',\n primary: 'oklch(0.549 0.184 250.847)',\n 'primary-foreground': 'oklch(0.985 0.005 250.847)',\n secondary: 'oklch(0.97 0 0)',\n 'secondary-foreground': 'oklch(0.205 0 0)',\n muted: 'oklch(0.97 0 0)',\n 'muted-foreground': 'oklch(0.556 0 0)',\n accent: 'oklch(0.97 0 0)',\n 'accent-foreground': 'oklch(0.205 0 0)',\n destructive: 'oklch(0.577 0.245 27.325)',\n 'destructive-foreground': 'oklch(0.98 0 0)',\n border: 'oklch(0.922 0 0)',\n input: 'oklch(0.922 0 0)',\n ring: 'oklch(0.549 0.184 250.847)',\n 'chart-1': 'oklch(0.549 0.184 250.847)',\n 'chart-2': 'oklch(0.645 0.168 250.847)',\n 'chart-3': 'oklch(0.445 0.204 250.847)',\n 'chart-4': 'oklch(0.349 0.184 250.847)',\n 'chart-5': 'oklch(0.749 0.124 250.847)',\n radius: '0.5rem',\n },\n dark: {\n background: 'oklch(0.145 0 0)',\n foreground: 'oklch(0.985 0 0)',\n card: 'oklch(0.205 0 0)',\n 'card-foreground': 'oklch(0.985 0 0)',\n popover: 'oklch(0.269 0 0)',\n 'popover-foreground': 'oklch(0.985 0 0)',\n primary: 'oklch(0.645 0.168 250.847)',\n 'primary-foreground': 'oklch(0.145 0.005 250.847)',\n secondary: 'oklch(0.269 0 0)',\n 'secondary-foreground': 'oklch(0.985 0 0)',\n muted: 'oklch(0.269 0 0)',\n 'muted-foreground': 'oklch(0.708 0 0)',\n accent: 'oklch(0.371 0 0)',\n 'accent-foreground': 'oklch(0.985 0 0)',\n destructive: 'oklch(0.704 0.191 22.216)',\n 'destructive-foreground': 'oklch(0.98 0 0)',\n border: 'oklch(1 0 0 / 10%)',\n input: 'oklch(1 0 0 / 15%)',\n ring: 'oklch(0.645 0.168 250.847)',\n 'chart-1': 'oklch(0.645 0.168 250.847)',\n 'chart-2': 'oklch(0.549 0.184 250.847)',\n 'chart-3': 'oklch(0.445 0.204 250.847)',\n 'chart-4': 'oklch(0.749 0.124 250.847)',\n 'chart-5': 'oklch(0.849 0.084 250.847)',\n radius: '0.5rem',\n },\n },\n },\n \n 'neon-extended': {\n label: 'Neon Cyberpunk (Extended)',\n value: 'neon-extended',\n styles: {\n light: {\n background: 'oklch(1 0 0)',\n foreground: 'oklch(0.145 0 0)',\n card: 'oklch(1 0 0)',\n 'card-foreground': 'oklch(0.145 0 0)',\n popover: 'oklch(1 0 0)',\n 'popover-foreground': 'oklch(0.145 0 0)',\n primary: 'oklch(0.628 0.258 328.363)',\n 'primary-foreground': 'oklch(0.985 0.015 328.363)',\n secondary: 'oklch(0.97 0 0)',\n 'secondary-foreground': 'oklch(0.205 0 0)',\n muted: 'oklch(0.97 0 0)',\n 'muted-foreground': 'oklch(0.556 0 0)',\n accent: 'oklch(0.749 0.168 305.365)',\n 'accent-foreground': 'oklch(0.985 0.015 305.365)',\n destructive: 'oklch(0.577 0.245 27.325)',\n 'destructive-foreground': 'oklch(0.98 0 0)',\n border: 'oklch(0.922 0 0)',\n input: 'oklch(0.922 0 0)',\n ring: 'oklch(0.628 0.258 328.363)',\n 'chart-1': 'oklch(0.628 0.258 328.363)',\n 'chart-2': 'oklch(0.749 0.168 305.365)',\n 'chart-3': 'oklch(0.645 0.234 286.897)',\n 'chart-4': 'oklch(0.545 0.298 328.363)',\n 'chart-5': 'oklch(0.845 0.118 305.365)',\n radius: '0.75rem',\n },\n dark: {\n background: 'oklch(0.125 0.028 305.365)',\n foreground: 'oklch(0.985 0.015 305.365)',\n card: 'oklch(0.185 0.028 305.365)',\n 'card-foreground': 'oklch(0.985 0.015 305.365)',\n popover: 'oklch(0.245 0.028 305.365)',\n 'popover-foreground': 'oklch(0.985 0.015 305.365)',\n primary: 'oklch(0.749 0.168 305.365)',\n 'primary-foreground': 'oklch(0.125 0.028 305.365)',\n secondary: 'oklch(0.245 0.028 305.365)',\n 'secondary-foreground': 'oklch(0.985 0.015 305.365)',\n muted: 'oklch(0.245 0.028 305.365)',\n 'muted-foreground': 'oklch(0.708 0.015 305.365)',\n accent: 'oklch(0.628 0.258 328.363)',\n 'accent-foreground': 'oklch(0.125 0.028 328.363)',\n destructive: 'oklch(0.704 0.191 22.216)',\n 'destructive-foreground': 'oklch(0.98 0 0)',\n border: 'oklch(1 0 0 / 15%)',\n input: 'oklch(1 0 0 / 20%)',\n ring: 'oklch(0.749 0.168 305.365)',\n 'chart-1': 'oklch(0.749 0.168 305.365)',\n 'chart-2': 'oklch(0.628 0.258 328.363)',\n 'chart-3': 'oklch(0.645 0.234 286.897)',\n 'chart-4': 'oklch(0.845 0.118 305.365)',\n 'chart-5': 'oklch(0.945 0.068 305.365)',\n radius: '0.75rem',\n },\n },\n },\n \n 'solar-extended': {\n label: 'Solar Warmth (Extended)',\n value: 'solar-extended',\n styles: {\n light: {\n background: 'oklch(0.985 0.01 83.124)',\n foreground: 'oklch(0.145 0 0)',\n card: 'oklch(1 0 0)',\n 'card-foreground': 'oklch(0.145 0 0)',\n popover: 'oklch(1 0 0)',\n 'popover-foreground': 'oklch(0.145 0 0)',\n primary: 'oklch(0.656 0.214 53.877)',\n 'primary-foreground': 'oklch(0.985 0.015 53.877)',\n secondary: 'oklch(0.97 0 0)',\n 'secondary-foreground': 'oklch(0.205 0 0)',\n muted: 'oklch(0.97 0 0)',\n 'muted-foreground': 'oklch(0.556 0 0)',\n accent: 'oklch(0.745 0.188 83.124)',\n 'accent-foreground': 'oklch(0.145 0 0)',\n destructive: 'oklch(0.577 0.245 27.325)',\n 'destructive-foreground': 'oklch(0.98 0 0)',\n border: 'oklch(0.922 0 0)',\n input: 'oklch(0.922 0 0)',\n ring: 'oklch(0.656 0.214 53.877)',\n 'chart-1': 'oklch(0.656 0.214 53.877)',\n 'chart-2': 'oklch(0.745 0.188 83.124)',\n 'chart-3': 'oklch(0.556 0.234 53.877)',\n 'chart-4': 'oklch(0.845 0.148 83.124)',\n 'chart-5': 'oklch(0.456 0.254 53.877)',\n radius: '0.625rem',\n },\n dark: {\n background: 'oklch(0.125 0.015 53.877)',\n foreground: 'oklch(0.985 0.015 83.124)',\n card: 'oklch(0.185 0.015 53.877)',\n 'card-foreground': 'oklch(0.985 0.015 83.124)',\n popover: 'oklch(0.245 0.015 53.877)',\n 'popover-foreground': 'oklch(0.985 0.015 83.124)',\n primary: 'oklch(0.745 0.188 83.124)',\n 'primary-foreground': 'oklch(0.125 0.015 83.124)',\n secondary: 'oklch(0.245 0.015 53.877)',\n 'secondary-foreground': 'oklch(0.985 0.015 83.124)',\n muted: 'oklch(0.245 0.015 53.877)',\n 'muted-foreground': 'oklch(0.708 0.015 83.124)',\n accent: 'oklch(0.656 0.214 53.877)',\n 'accent-foreground': 'oklch(0.985 0.015 53.877)',\n destructive: 'oklch(0.704 0.191 22.216)',\n 'destructive-foreground': 'oklch(0.98 0 0)',\n border: 'oklch(1 0 0 / 12%)',\n input: 'oklch(1 0 0 / 18%)',\n ring: 'oklch(0.745 0.188 83.124)',\n 'chart-1': 'oklch(0.745 0.188 83.124)',\n 'chart-2': 'oklch(0.656 0.214 53.877)',\n 'chart-3': 'oklch(0.845 0.148 83.124)',\n 'chart-4': 'oklch(0.556 0.234 53.877)',\n 'chart-5': 'oklch(0.945 0.088 83.124)',\n radius: '0.625rem',\n },\n },\n },\n}\n\n/**\n * Convert extended theme to CSS variables\n */\nexport function extendedThemeToCSSVariables(\n theme: ExtendedThemePreset,\n mode: 'light' | 'dark' = 'light'\n): string {\n const tokens = theme.styles[mode]\n const cssVars: string[] = []\n \n Object.entries(tokens).forEach(([key, value]) => {\n cssVars.push(` --${key}: ${value};`)\n })\n \n return cssVars.join('\\n')\n}\n\n/**\n * Generate complete CSS for an extended theme\n */\nexport function generateExtendedThemeCSS(theme: ExtendedThemePreset): string {\n const lightCSS = extendedThemeToCSSVariables(theme, 'light')\n const darkCSS = extendedThemeToCSSVariables(theme, 'dark')\n \n return `:root {\n${lightCSS}\n}\n\n.dark {\n${darkCSS}\n}\n\n[data-theme-mode=\"dark\"] {\n${darkCSS}\n}`\n}\n"],"names":["extendedThemePresets","label","value","styles","light","background","foreground","card","popover","primary","secondary","muted","accent","destructive","border","input","ring","radius","dark","extendedThemeToCSSVariables","theme","mode","tokens","cssVars","Object","entries","forEach","key","push","join","generateExtendedThemeCSS","lightCSS","darkCSS"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/extended-presets.ts"],"sourcesContent":["/**\n * Extended Shadcn-style theme presets with full color token support\n * Inspired by https://ui.shadcn.com/themes and https://tweakcn.com/editor/theme\n * \n * This extends the existing theme system with:\n * - Full shadcn/ui color tokens\n * - OKLCH color format support\n * - Chart colors (chart-1 through chart-5)\n * - Semantic color tokens (destructive, muted, accent, etc.)\n * - CSS variable generation for Tailwind integration\n */\n\nimport { tweakcnThemePresets } from './tweakcn-presets.js'\n\nexport interface ShadcnColorTokens {\n // Base colors\n background: string\n foreground: string\n \n // Card colors\n card: string\n 'card-foreground': string\n \n // Popover colors\n popover: string\n 'popover-foreground': string\n \n // Primary colors\n primary: string\n 'primary-foreground': string\n \n // Secondary colors\n secondary: string\n 'secondary-foreground': string\n \n // Muted colors\n muted: string\n 'muted-foreground': string\n \n // Accent colors\n accent: string\n 'accent-foreground': string\n \n // Destructive colors\n destructive: string\n 'destructive-foreground': string\n \n // Border & Input\n border: string\n input: string\n ring: string\n \n // Chart colors (for data visualization)\n 'chart-1': string\n 'chart-2': string\n 'chart-3': string\n 'chart-4': string\n 'chart-5': string\n \n // Shadow controls (TweakCN)\n 'shadow-color'?: string\n 'shadow-opacity'?: string\n 'shadow-blur'?: string\n 'shadow-spread'?: string\n 'shadow-offset-x'?: string\n 'shadow-offset-y'?: string\n \n // Font families (TweakCN)\n 'font-sans'?: string\n 'font-serif'?: string\n 'font-mono'?: string\n \n // Advanced typography (TweakCN)\n 'letter-spacing'?: string\n spacing?: string\n \n // Border radius\n radius?: string\n}\n\nexport interface ExtendedThemePreset {\n label: string\n value: string\n styles: {\n light: ShadcnColorTokens\n dark: ShadcnColorTokens\n }\n}\n\n/**\n * Extended theme presets with full shadcn/ui token support\n * These work alongside the existing default presets\n */\nexport const extendedThemePresets: Record<string, ExtendedThemePreset> = {\n 'cool-extended': {\n label: 'Cool & Professional (Extended)',\n value: 'cool-extended',\n styles: {\n light: {\n background: 'oklch(1 0 0)',\n foreground: 'oklch(0.145 0 0)',\n card: 'oklch(1 0 0)',\n 'card-foreground': 'oklch(0.145 0 0)',\n popover: 'oklch(1 0 0)',\n 'popover-foreground': 'oklch(0.145 0 0)',\n primary: 'oklch(0.549 0.184 250.847)',\n 'primary-foreground': 'oklch(0.985 0.005 250.847)',\n secondary: 'oklch(0.97 0 0)',\n 'secondary-foreground': 'oklch(0.205 0 0)',\n muted: 'oklch(0.97 0 0)',\n 'muted-foreground': 'oklch(0.556 0 0)',\n accent: 'oklch(0.97 0 0)',\n 'accent-foreground': 'oklch(0.205 0 0)',\n destructive: 'oklch(0.577 0.245 27.325)',\n 'destructive-foreground': 'oklch(0.98 0 0)',\n border: 'oklch(0.922 0 0)',\n input: 'oklch(0.922 0 0)',\n ring: 'oklch(0.549 0.184 250.847)',\n 'chart-1': 'oklch(0.549 0.184 250.847)',\n 'chart-2': 'oklch(0.645 0.168 250.847)',\n 'chart-3': 'oklch(0.445 0.204 250.847)',\n 'chart-4': 'oklch(0.349 0.184 250.847)',\n 'chart-5': 'oklch(0.749 0.124 250.847)',\n radius: '0.5rem',\n },\n dark: {\n background: 'oklch(0.145 0 0)',\n foreground: 'oklch(0.985 0 0)',\n card: 'oklch(0.205 0 0)',\n 'card-foreground': 'oklch(0.985 0 0)',\n popover: 'oklch(0.269 0 0)',\n 'popover-foreground': 'oklch(0.985 0 0)',\n primary: 'oklch(0.645 0.168 250.847)',\n 'primary-foreground': 'oklch(0.145 0.005 250.847)',\n secondary: 'oklch(0.269 0 0)',\n 'secondary-foreground': 'oklch(0.985 0 0)',\n muted: 'oklch(0.269 0 0)',\n 'muted-foreground': 'oklch(0.708 0 0)',\n accent: 'oklch(0.371 0 0)',\n 'accent-foreground': 'oklch(0.985 0 0)',\n destructive: 'oklch(0.704 0.191 22.216)',\n 'destructive-foreground': 'oklch(0.98 0 0)',\n border: 'oklch(1 0 0 / 10%)',\n input: 'oklch(1 0 0 / 15%)',\n ring: 'oklch(0.645 0.168 250.847)',\n 'chart-1': 'oklch(0.645 0.168 250.847)',\n 'chart-2': 'oklch(0.549 0.184 250.847)',\n 'chart-3': 'oklch(0.445 0.204 250.847)',\n 'chart-4': 'oklch(0.749 0.124 250.847)',\n 'chart-5': 'oklch(0.849 0.084 250.847)',\n radius: '0.5rem',\n },\n },\n },\n \n 'neon-extended': {\n label: 'Neon Cyberpunk (Extended)',\n value: 'neon-extended',\n styles: {\n light: {\n background: 'oklch(1 0 0)',\n foreground: 'oklch(0.145 0 0)',\n card: 'oklch(1 0 0)',\n 'card-foreground': 'oklch(0.145 0 0)',\n popover: 'oklch(1 0 0)',\n 'popover-foreground': 'oklch(0.145 0 0)',\n primary: 'oklch(0.628 0.258 328.363)',\n 'primary-foreground': 'oklch(0.985 0.015 328.363)',\n secondary: 'oklch(0.97 0 0)',\n 'secondary-foreground': 'oklch(0.205 0 0)',\n muted: 'oklch(0.97 0 0)',\n 'muted-foreground': 'oklch(0.556 0 0)',\n accent: 'oklch(0.749 0.168 305.365)',\n 'accent-foreground': 'oklch(0.985 0.015 305.365)',\n destructive: 'oklch(0.577 0.245 27.325)',\n 'destructive-foreground': 'oklch(0.98 0 0)',\n border: 'oklch(0.922 0 0)',\n input: 'oklch(0.922 0 0)',\n ring: 'oklch(0.628 0.258 328.363)',\n 'chart-1': 'oklch(0.628 0.258 328.363)',\n 'chart-2': 'oklch(0.749 0.168 305.365)',\n 'chart-3': 'oklch(0.645 0.234 286.897)',\n 'chart-4': 'oklch(0.545 0.298 328.363)',\n 'chart-5': 'oklch(0.845 0.118 305.365)',\n radius: '0.75rem',\n },\n dark: {\n background: 'oklch(0.125 0.028 305.365)',\n foreground: 'oklch(0.985 0.015 305.365)',\n card: 'oklch(0.185 0.028 305.365)',\n 'card-foreground': 'oklch(0.985 0.015 305.365)',\n popover: 'oklch(0.245 0.028 305.365)',\n 'popover-foreground': 'oklch(0.985 0.015 305.365)',\n primary: 'oklch(0.749 0.168 305.365)',\n 'primary-foreground': 'oklch(0.125 0.028 305.365)',\n secondary: 'oklch(0.245 0.028 305.365)',\n 'secondary-foreground': 'oklch(0.985 0.015 305.365)',\n muted: 'oklch(0.245 0.028 305.365)',\n 'muted-foreground': 'oklch(0.708 0.015 305.365)',\n accent: 'oklch(0.628 0.258 328.363)',\n 'accent-foreground': 'oklch(0.125 0.028 328.363)',\n destructive: 'oklch(0.704 0.191 22.216)',\n 'destructive-foreground': 'oklch(0.98 0 0)',\n border: 'oklch(1 0 0 / 15%)',\n input: 'oklch(1 0 0 / 20%)',\n ring: 'oklch(0.749 0.168 305.365)',\n 'chart-1': 'oklch(0.749 0.168 305.365)',\n 'chart-2': 'oklch(0.628 0.258 328.363)',\n 'chart-3': 'oklch(0.645 0.234 286.897)',\n 'chart-4': 'oklch(0.845 0.118 305.365)',\n 'chart-5': 'oklch(0.945 0.068 305.365)',\n radius: '0.75rem',\n },\n },\n },\n \n 'solar-extended': {\n label: 'Solar Warmth (Extended)',\n value: 'solar-extended',\n styles: {\n light: {\n background: 'oklch(0.985 0.01 83.124)',\n foreground: 'oklch(0.145 0 0)',\n card: 'oklch(1 0 0)',\n 'card-foreground': 'oklch(0.145 0 0)',\n popover: 'oklch(1 0 0)',\n 'popover-foreground': 'oklch(0.145 0 0)',\n primary: 'oklch(0.656 0.214 53.877)',\n 'primary-foreground': 'oklch(0.985 0.015 53.877)',\n secondary: 'oklch(0.97 0 0)',\n 'secondary-foreground': 'oklch(0.205 0 0)',\n muted: 'oklch(0.97 0 0)',\n 'muted-foreground': 'oklch(0.556 0 0)',\n accent: 'oklch(0.745 0.188 83.124)',\n 'accent-foreground': 'oklch(0.145 0 0)',\n destructive: 'oklch(0.577 0.245 27.325)',\n 'destructive-foreground': 'oklch(0.98 0 0)',\n border: 'oklch(0.922 0 0)',\n input: 'oklch(0.922 0 0)',\n ring: 'oklch(0.656 0.214 53.877)',\n 'chart-1': 'oklch(0.656 0.214 53.877)',\n 'chart-2': 'oklch(0.745 0.188 83.124)',\n 'chart-3': 'oklch(0.556 0.234 53.877)',\n 'chart-4': 'oklch(0.845 0.148 83.124)',\n 'chart-5': 'oklch(0.456 0.254 53.877)',\n radius: '0.625rem',\n },\n dark: {\n background: 'oklch(0.125 0.015 53.877)',\n foreground: 'oklch(0.985 0.015 83.124)',\n card: 'oklch(0.185 0.015 53.877)',\n 'card-foreground': 'oklch(0.985 0.015 83.124)',\n popover: 'oklch(0.245 0.015 53.877)',\n 'popover-foreground': 'oklch(0.985 0.015 83.124)',\n primary: 'oklch(0.745 0.188 83.124)',\n 'primary-foreground': 'oklch(0.125 0.015 83.124)',\n secondary: 'oklch(0.245 0.015 53.877)',\n 'secondary-foreground': 'oklch(0.985 0.015 83.124)',\n muted: 'oklch(0.245 0.015 53.877)',\n 'muted-foreground': 'oklch(0.708 0.015 83.124)',\n accent: 'oklch(0.656 0.214 53.877)',\n 'accent-foreground': 'oklch(0.985 0.015 53.877)',\n destructive: 'oklch(0.704 0.191 22.216)',\n 'destructive-foreground': 'oklch(0.98 0 0)',\n border: 'oklch(1 0 0 / 12%)',\n input: 'oklch(1 0 0 / 18%)',\n ring: 'oklch(0.745 0.188 83.124)',\n 'chart-1': 'oklch(0.745 0.188 83.124)',\n 'chart-2': 'oklch(0.656 0.214 53.877)',\n 'chart-3': 'oklch(0.845 0.148 83.124)',\n 'chart-4': 'oklch(0.556 0.234 53.877)',\n 'chart-5': 'oklch(0.945 0.088 83.124)',\n radius: '0.625rem',\n },\n },\n },\n}\n\n/**\n * All available extended theme presets (original + TweakCN)\n */\nexport const allExtendedThemePresets = {\n ...extendedThemePresets,\n ...tweakcnThemePresets,\n}\n\n/**\n * Convert extended theme to CSS variables\n */\nexport function extendedThemeToCSSVariables(\n theme: ExtendedThemePreset,\n mode: 'light' | 'dark' = 'light'\n): string {\n const tokens = theme.styles[mode]\n const cssVars: string[] = []\n \n Object.entries(tokens).forEach(([key, value]) => {\n cssVars.push(` --${key}: ${value};`)\n })\n \n return cssVars.join('\\n')\n}\n\n/**\n * Generate complete CSS for an extended theme\n */\nexport function generateExtendedThemeCSS(theme: ExtendedThemePreset): string {\n const lightCSS = extendedThemeToCSSVariables(theme, 'light')\n const darkCSS = extendedThemeToCSSVariables(theme, 'dark')\n \n return `:root {\n${lightCSS}\n}\n\n.dark {\n${darkCSS}\n}\n\n[data-theme-mode=\"dark\"] {\n${darkCSS}\n}`\n}\n"],"names":["tweakcnThemePresets","extendedThemePresets","label","value","styles","light","background","foreground","card","popover","primary","secondary","muted","accent","destructive","border","input","ring","radius","dark","allExtendedThemePresets","extendedThemeToCSSVariables","theme","mode","tokens","cssVars","Object","entries","forEach","key","push","join","generateExtendedThemeCSS","lightCSS","darkCSS"],"mappings":"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"}
@@ -1,65 +1,313 @@
1
- .theme-color-picker-field {
2
- margin-bottom: 1rem;
1
+ /* Professional Color Picker Field Styles */.theme-color-picker-field {
2
+
3
+ .theme-color-picker-field { margin-bottom: 1rem;
4
+
5
+ margin-bottom: 1.5rem;}
6
+
3
7
  }
4
8
 
5
9
  .theme-color-picker-field .field-header {
6
- margin-bottom: 0.5rem;
10
+
11
+ .theme-color-picker-field .field-header { margin-bottom: 0.5rem;
12
+
13
+ margin-bottom: 0.5rem;}
14
+
7
15
  }
8
16
 
9
17
  .theme-color-picker-field .field-label {
10
- display: block;
11
- font-weight: 500;
12
- font-size: 0.875rem;
13
- color: var(--theme-text);
14
- margin-bottom: 0.25rem;
18
+
19
+ .theme-color-picker-field .field-label { display: block;
20
+
21
+ display: block; font-weight: 500;
22
+
23
+ font-weight: 600; font-size: 0.875rem;
24
+
25
+ font-size: 0.875rem; color: var(--theme-text);
26
+
27
+ color: var(--theme-text); margin-bottom: 0.25rem;
28
+
29
+ margin-bottom: 0.25rem;}
30
+
15
31
  }
16
32
 
17
33
  .theme-color-picker-field .field-description {
18
- font-size: 0.75rem;
19
- color: var(--theme-elevation-400);
20
- margin-top: 0.25rem;
21
- }
22
34
 
23
- .theme-color-picker-field .color-picker-container {
35
+ .theme-color-picker-field .field-description { font-size: 0.75rem;
36
+
37
+ font-size: 0.75rem; color: var(--theme-elevation-400);
38
+
39
+ color: var(--theme-elevation-400); margin-top: 0.25rem;
40
+
41
+ margin-top: 0.25rem;}
42
+
43
+ line-height: 1.4;
44
+
45
+ }.theme-color-picker-field .color-picker-container {
46
+
24
47
  display: flex;
25
- gap: 0.75rem;
48
+
49
+ .theme-color-picker-field .color-picker-container { gap: 0.75rem;
50
+
51
+ display: flex; align-items: center;
52
+
53
+ gap: 0.75rem;}
54
+
26
55
  align-items: center;
27
- }
28
56
 
29
- .theme-color-picker-field .color-input-wrapper {
30
- display: flex;
57
+ position: relative;.theme-color-picker-field .color-input-wrapper {
58
+
59
+ } display: flex;
60
+
31
61
  gap: 0.5rem;
32
- flex: 1;
33
- }
34
62
 
35
- .theme-color-picker-field .color-input {
36
- width: 60px;
37
- height: 38px;
38
- border: 1px solid var(--theme-elevation-200);
63
+ .theme-color-picker-field .color-input-wrapper { flex: 1;
64
+
65
+ display: flex;}
66
+
67
+ gap: 0.5rem;
68
+
69
+ flex: 1;.theme-color-picker-field .color-input {
70
+
71
+ align-items: center; width: 60px;
72
+
73
+ position: relative; height: 38px;
74
+
75
+ } border: 1px solid var(--theme-elevation-200);
76
+
39
77
  border-radius: 4px;
40
- cursor: pointer;
41
- padding: 2px;
78
+
79
+ /* Color Swatch Button */ cursor: pointer;
80
+
81
+ .theme-color-picker-field .color-swatch { padding: 2px;
82
+
83
+ width: 48px;}
84
+
85
+ height: 48px;
86
+
87
+ border: 2px solid var(--theme-elevation-200);.theme-color-picker-field .color-input:hover {
88
+
89
+ border-radius: 8px; border-color: var(--theme-elevation-400);
90
+
91
+ cursor: pointer;}
92
+
93
+ padding: 0;
94
+
95
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);.theme-color-picker-field .color-input:focus {
96
+
97
+ transition: all 0.2s; outline: 2px solid var(--theme-elevation-500);
98
+
99
+ position: relative; outline-offset: 1px;
100
+
101
+ }}
102
+
103
+
104
+
105
+ .theme-color-picker-field .color-swatch::before {.theme-color-picker-field .text-input {
106
+
107
+ content: ''; flex: 1;
108
+
109
+ position: absolute; height: 38px;
110
+
111
+ inset: 0; padding: 0 0.75rem;
112
+
113
+ background: border: 1px solid var(--theme-elevation-200);
114
+
115
+ linear-gradient(45deg, #ccc 25%, transparent 25%), border-radius: 4px;
116
+
117
+ linear-gradient(-45deg, #ccc 25%, transparent 25%), font-family: monospace;
118
+
119
+ linear-gradient(45deg, transparent 75%, #ccc 75%), font-size: 0.875rem;
120
+
121
+ linear-gradient(-45deg, transparent 75%, #ccc 75%); background: var(--theme-elevation-0);
122
+
123
+ background-size: 8px 8px; color: var(--theme-text);
124
+
125
+ background-position: 0 0, 0 4px, 4px -4px, -4px 0px;}
126
+
127
+ border-radius: 6px;
128
+
129
+ z-index: -1;.theme-color-picker-field .text-input:hover {
130
+
131
+ } border-color: var(--theme-elevation-400);
132
+
42
133
  }
43
134
 
44
- .theme-color-picker-field .color-input:hover {
45
- border-color: var(--theme-elevation-400);
135
+ .theme-color-picker-field .color-swatch:hover {
136
+
137
+ border-color: var(--theme-elevation-500);.theme-color-picker-field .text-input:focus {
138
+
139
+ transform: scale(1.05); outline: 2px solid var(--theme-elevation-500);
140
+
141
+ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); outline-offset: 1px;
142
+
143
+ } border-color: var(--theme-elevation-500);
144
+
145
+ }
146
+
147
+ .theme-color-picker-field .color-swatch:focus {
148
+
149
+ outline: 2px solid var(--theme-elevation-700);.theme-color-picker-field .text-input::placeholder {
150
+
151
+ outline-offset: 2px; color: var(--theme-elevation-400);
152
+
153
+ }}
154
+
155
+
156
+
157
+ /* Professional Color Picker Popover */.theme-color-picker-field .text-input:invalid {
158
+
159
+ .theme-color-picker-field .color-picker-popover { border-color: #ef4444;
160
+
161
+ position: absolute;}
162
+
163
+ top: 100%;
164
+
165
+ left: 0;.theme-color-picker-field .color-preview {
166
+
167
+ margin-top: 8px; width: 120px;
168
+
169
+ z-index: 1000; height: 38px;
170
+
171
+ background: var(--theme-elevation-0); border-radius: 4px;
172
+
173
+ border: 1px solid var(--theme-elevation-200); border: 1px solid var(--theme-elevation-200);
174
+
175
+ border-radius: 12px; display: flex;
176
+
177
+ box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15); align-items: center;
178
+
179
+ padding: 16px; justify-content: center;
180
+
181
+ min-width: 280px; position: relative;
182
+
183
+ } overflow: hidden;
184
+
46
185
  }
47
186
 
48
- .theme-color-picker-field .color-input:focus {
49
- outline: 2px solid var(--theme-elevation-500);
50
- outline-offset: 1px;
187
+ /* react-colorful styles override */
188
+
189
+ .theme-color-picker-field .react-colorful {.theme-color-picker-field .color-preview .preview-label {
190
+
191
+ width: 100%; font-size: 0.75rem;
192
+
193
+ height: 200px; font-family: monospace;
194
+
195
+ border-radius: 8px; padding: 0.25rem 0.5rem;
196
+
197
+ } background: rgba(255, 255, 255, 0.9);
198
+
199
+ border-radius: 2px;
200
+
201
+ .theme-color-picker-field .react-colorful__saturation { backdrop-filter: blur(4px);
202
+
203
+ border-radius: 8px 8px 0 0; color: #000;
204
+
205
+ } font-weight: 500;
206
+
51
207
  }
52
208
 
209
+ .theme-color-picker-field .react-colorful__hue {
210
+
211
+ height: 16px;.theme-color-picker-field .mini-preview {
212
+
213
+ border-radius: 0 0 8px 8px; margin-top: 1rem;
214
+
215
+ } padding: 1rem;
216
+
217
+ border-radius: 6px;
218
+
219
+ .theme-color-picker-field .react-colorful__pointer { border: 1px solid;
220
+
221
+ width: 20px;}
222
+
223
+ height: 20px;
224
+
225
+ border: 3px solid #fff;.theme-color-picker-field .mini-preview .preview-card {
226
+
227
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); padding: 1rem;
228
+
229
+ } border-radius: 4px;
230
+
231
+ border: 1px solid;
232
+
233
+ .theme-color-picker-field .picker-footer { display: flex;
234
+
235
+ display: flex; gap: 0.5rem;
236
+
237
+ gap: 8px; flex-wrap: wrap;
238
+
239
+ margin-top: 12px;}
240
+
241
+ align-items: center;
242
+
243
+ }.theme-color-picker-field .mini-preview .preview-button {
244
+
245
+ padding: 0.5rem 1rem;
246
+
247
+ .theme-color-picker-field .hex-input { border-radius: 4px;
248
+
249
+ flex: 1; border: none;
250
+
251
+ height: 36px; font-size: 0.875rem;
252
+
253
+ padding: 0 12px; font-weight: 500;
254
+
255
+ border: 1px solid var(--theme-elevation-200); cursor: pointer;
256
+
257
+ border-radius: 6px; transition: opacity 0.2s;
258
+
259
+ font-family: monospace;}
260
+
261
+ font-size: 0.875rem;
262
+
263
+ background: var(--theme-elevation-50);.theme-color-picker-field .mini-preview .preview-button:hover {
264
+
265
+ color: var(--theme-text); opacity: 0.9;
266
+
267
+ transition: all 0.2s;}
268
+
269
+ }
270
+
271
+ .theme-color-picker-field .mini-preview .preview-button.secondary {
272
+
273
+ .theme-color-picker-field .hex-input:focus { border: 1px solid currentColor;
274
+
275
+ outline: none;}
276
+
277
+ border-color: var(--theme-elevation-600);
278
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
279
+ }
280
+
281
+ .theme-color-picker-field .close-button {
282
+ height: 36px;
283
+ padding: 0 16px;
284
+ background: var(--theme-elevation-700);
285
+ color: white;
286
+ border: none;
287
+ border-radius: 6px;
288
+ font-weight: 600;
289
+ font-size: 0.875rem;
290
+ cursor: pointer;
291
+ transition: all 0.2s;
292
+ }
293
+
294
+ .theme-color-picker-field .close-button:hover {
295
+ background: var(--theme-elevation-800);
296
+ transform: translateY(-1px);
297
+ }
298
+
299
+ /* Text Input */
53
300
  .theme-color-picker-field .text-input {
54
301
  flex: 1;
55
- height: 38px;
56
- padding: 0 0.75rem;
57
- border: 1px solid var(--theme-elevation-200);
58
- border-radius: 4px;
59
- font-family: monospace;
60
- font-size: 0.875rem;
302
+ height: 48px;
303
+ padding: 0 1rem;
304
+ border: 2px solid var(--theme-elevation-200);
305
+ border-radius: 8px;
306
+ font-family: 'SF Mono', 'Monaco', 'Inconsolata', monospace;
307
+ font-size: 0.9rem;
61
308
  background: var(--theme-elevation-0);
62
309
  color: var(--theme-text);
310
+ transition: all 0.2s;
63
311
  }
64
312
 
65
313
  .theme-color-picker-field .text-input:hover {
@@ -67,72 +315,109 @@
67
315
  }
68
316
 
69
317
  .theme-color-picker-field .text-input:focus {
70
- outline: 2px solid var(--theme-elevation-500);
71
- outline-offset: 1px;
72
- border-color: var(--theme-elevation-500);
318
+ outline: none;
319
+ border-color: var(--theme-elevation-600);
320
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
73
321
  }
74
322
 
75
323
  .theme-color-picker-field .text-input::placeholder {
76
324
  color: var(--theme-elevation-400);
77
325
  }
78
326
 
79
- .theme-color-picker-field .text-input:invalid {
80
- border-color: #ef4444;
81
- }
82
-
327
+ /* Color Preview */
83
328
  .theme-color-picker-field .color-preview {
84
- width: 120px;
85
- height: 38px;
86
- border-radius: 4px;
87
- border: 1px solid var(--theme-elevation-200);
329
+ width: 140px;
330
+ height: 48px;
331
+ border-radius: 8px;
332
+ border: 2px solid var(--theme-elevation-200);
88
333
  display: flex;
89
334
  align-items: center;
90
335
  justify-content: center;
91
336
  position: relative;
92
337
  overflow: hidden;
338
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
339
+ }
340
+
341
+ .theme-color-picker-field .color-preview::before {
342
+ content: '';
343
+ position: absolute;
344
+ inset: 0;
345
+ background:
346
+ linear-gradient(45deg, #eee 25%, transparent 25%),
347
+ linear-gradient(-45deg, #eee 25%, transparent 25%),
348
+ linear-gradient(45deg, transparent 75%, #eee 75%),
349
+ linear-gradient(-45deg, transparent 75%, #eee 75%);
350
+ background-size: 10px 10px;
351
+ background-position: 0 0, 0 5px, 5px -5px, -5px 0px;
352
+ z-index: 0;
93
353
  }
94
354
 
95
355
  .theme-color-picker-field .color-preview .preview-label {
96
356
  font-size: 0.75rem;
97
357
  font-family: monospace;
98
- padding: 0.25rem 0.5rem;
99
- background: rgba(255, 255, 255, 0.9);
100
- border-radius: 2px;
101
- backdrop-filter: blur(4px);
102
- color: #000;
103
- font-weight: 500;
358
+ font-weight: 600;
359
+ padding: 0.375rem 0.75rem;
360
+ background: rgba(255, 255, 255, 0.95);
361
+ border-radius: 4px;
362
+ z-index: 1;
363
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
364
+ max-width: 120px;
365
+ overflow: hidden;
366
+ text-overflow: ellipsis;
367
+ white-space: nowrap;
104
368
  }
105
369
 
370
+ /* Mini Preview */
106
371
  .theme-color-picker-field .mini-preview {
372
+ width: 100%;
107
373
  margin-top: 1rem;
108
374
  padding: 1rem;
109
- border-radius: 6px;
110
375
  border: 1px solid;
376
+ border-radius: 8px;
377
+ background-clip: padding-box;
111
378
  }
112
379
 
113
- .theme-color-picker-field .mini-preview .preview-card {
380
+ .theme-color-picker-field .preview-card {
114
381
  padding: 1rem;
115
- border-radius: 4px;
116
382
  border: 1px solid;
383
+ border-radius: 6px;
117
384
  display: flex;
118
- gap: 0.5rem;
119
- flex-wrap: wrap;
385
+ gap: 0.75rem;
386
+ align-items: center;
120
387
  }
121
388
 
122
- .theme-color-picker-field .mini-preview .preview-button {
389
+ .theme-color-picker-field .preview-button {
123
390
  padding: 0.5rem 1rem;
124
- border-radius: 4px;
125
391
  border: none;
392
+ border-radius: 6px;
393
+ font-weight: 600;
126
394
  font-size: 0.875rem;
127
- font-weight: 500;
128
395
  cursor: pointer;
129
- transition: opacity 0.2s;
396
+ transition: all 0.2s;
130
397
  }
131
398
 
132
- .theme-color-picker-field .mini-preview .preview-button:hover {
399
+ .theme-color-picker-field .preview-button:hover {
133
400
  opacity: 0.9;
401
+ transform: translateY(-1px);
134
402
  }
135
403
 
136
- .theme-color-picker-field .mini-preview .preview-button.secondary {
137
- border: 1px solid currentColor;
404
+ .theme-color-picker-field .preview-button.secondary {
405
+ opacity: 0.95;
406
+ }
407
+
408
+ /* Dark mode adjustments */
409
+ @media (prefers-color-scheme: dark) {
410
+ .theme-color-picker-field .color-preview::before,
411
+ .theme-color-picker-field .color-swatch::before {
412
+ background:
413
+ linear-gradient(45deg, #333 25%, transparent 25%),
414
+ linear-gradient(-45deg, #333 25%, transparent 25%),
415
+ linear-gradient(45deg, transparent 75%, #333 75%),
416
+ linear-gradient(-45deg, transparent 75%, #333 75%);
417
+ }
418
+
419
+ .theme-color-picker-field .color-preview .preview-label {
420
+ background: rgba(0, 0, 0, 0.8);
421
+ color: white;
422
+ }
138
423
  }