@kilivi/payloadcms-theme-management 0.2.1 β 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.
- package/README.md +26 -4
- package/dist/extended-presets.d.ts +16 -1
- package/dist/extended-presets.d.ts.map +1 -1
- package/dist/extended-presets.js +8 -1
- package/dist/extended-presets.js.map +1 -1
- package/dist/fields/ThemeColorPickerField.css +350 -65
- package/dist/fields/ThemeColorPickerField.d.ts.map +1 -1
- package/dist/fields/ThemeColorPickerField.js +131 -13
- package/dist/fields/ThemeColorPickerField.js.map +1 -1
- package/dist/fields/ThemeLivePreview.css +190 -0
- package/dist/fields/ThemeLivePreview.d.ts +4 -0
- package/dist/fields/ThemeLivePreview.d.ts.map +1 -0
- package/dist/fields/ThemeLivePreview.js +198 -0
- package/dist/fields/ThemeLivePreview.js.map +1 -0
- package/dist/fields/extendedThemeFields.d.ts +121 -9
- package/dist/fields/extendedThemeFields.d.ts.map +1 -1
- package/dist/fields/extendedThemeFields.js +298 -103
- package/dist/fields/extendedThemeFields.js.map +1 -1
- package/dist/fields/themeConfigurationField.d.ts +14 -3
- package/dist/fields/themeConfigurationField.d.ts.map +1 -1
- package/dist/fields/themeConfigurationField.js +22 -23
- package/dist/fields/themeConfigurationField.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +77 -15
- package/dist/index.js.map +1 -1
- package/dist/tweakcn-presets.d.ts +10 -0
- package/dist/tweakcn-presets.d.ts.map +1 -0
- package/dist/tweakcn-presets.js +714 -0
- package/dist/tweakcn-presets.js.map +1 -0
- package/dist/tweakcn-special-themes.d.ts +8 -0
- package/dist/tweakcn-special-themes.d.ts.map +1 -0
- package/dist/tweakcn-special-themes.js +614 -0
- package/dist/tweakcn-special-themes.js.map +1 -0
- package/dist/views/ThemePreviewView.d.ts +8 -0
- package/dist/views/ThemePreviewView.d.ts.map +1 -0
- package/dist/views/ThemePreviewView.js +44 -0
- package/dist/views/ThemePreviewView.js.map +1 -0
- package/dist/views/ThemePreviewViewClient.d.ts +7 -0
- package/dist/views/ThemePreviewViewClient.d.ts.map +1 -0
- package/dist/views/ThemePreviewViewClient.js +12 -0
- package/dist/views/ThemePreviewViewClient.js.map +1 -0
- 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.
|
|
5
|
+
## π Version 0.2.1 - New Features!
|
|
6
6
|
|
|
7
|
-
- **β
|
|
8
|
-
- **β
|
|
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 (
|
|
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
|
-
|
|
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;
|
|
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"}
|
package/dist/extended-presets.js
CHANGED
|
@@ -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
|
-
|
|
2
|
-
|
|
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
|
-
|
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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 .
|
|
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
|
-
|
|
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
|
-
|
|
30
|
-
|
|
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
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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
|
-
|
|
41
|
-
|
|
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-
|
|
45
|
-
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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:
|
|
56
|
-
padding: 0
|
|
57
|
-
border:
|
|
58
|
-
border-radius:
|
|
59
|
-
font-family: monospace;
|
|
60
|
-
font-size: 0.
|
|
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:
|
|
71
|
-
|
|
72
|
-
|
|
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
|
-
|
|
80
|
-
border-color: #ef4444;
|
|
81
|
-
}
|
|
82
|
-
|
|
327
|
+
/* Color Preview */
|
|
83
328
|
.theme-color-picker-field .color-preview {
|
|
84
|
-
width:
|
|
85
|
-
height:
|
|
86
|
-
border-radius:
|
|
87
|
-
border:
|
|
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
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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 .
|
|
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.
|
|
119
|
-
|
|
385
|
+
gap: 0.75rem;
|
|
386
|
+
align-items: center;
|
|
120
387
|
}
|
|
121
388
|
|
|
122
|
-
.theme-color-picker-field .
|
|
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:
|
|
396
|
+
transition: all 0.2s;
|
|
130
397
|
}
|
|
131
398
|
|
|
132
|
-
.theme-color-picker-field .
|
|
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 .
|
|
137
|
-
|
|
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
|
}
|