@almadar/ui 5.123.0 → 5.124.0

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 (57) hide show
  1. package/dist/{TraitProvider-YkK6tXDw.d.cts → TraitProvider-Ch79cUcb.d.cts} +6 -1
  2. package/dist/{TraitProvider-YkK6tXDw.d.ts → TraitProvider-Ch79cUcb.d.ts} +6 -1
  3. package/dist/{UserContext-bziZwgFL.d.cts → UserContext-BKckAUv7.d.cts} +5 -5
  4. package/dist/{UserContext-bziZwgFL.d.ts → UserContext-BKckAUv7.d.ts} +5 -5
  5. package/dist/avl/index.cjs +265 -227
  6. package/dist/avl/index.js +267 -229
  7. package/dist/components/index.cjs +208 -200
  8. package/dist/components/index.d.cts +4 -3
  9. package/dist/components/index.d.ts +4 -3
  10. package/dist/components/index.js +208 -200
  11. package/dist/context/index.cjs +25 -66
  12. package/dist/context/index.d.cts +1 -1
  13. package/dist/context/index.d.ts +1 -1
  14. package/dist/context/index.js +25 -66
  15. package/dist/providers/index.cjs +286 -219
  16. package/dist/providers/index.d.cts +4 -4
  17. package/dist/providers/index.d.ts +4 -4
  18. package/dist/providers/index.js +286 -219
  19. package/dist/runtime/index.cjs +258 -220
  20. package/dist/runtime/index.d.cts +4 -2
  21. package/dist/runtime/index.d.ts +4 -2
  22. package/dist/runtime/index.js +260 -222
  23. package/package.json +8 -7
  24. package/themes/_contract.md +2 -0
  25. package/themes/almadar-website.css +3 -3
  26. package/themes/almadar.css +4 -4
  27. package/themes/bloomberg-dense.css +2 -2
  28. package/themes/clay.css +417 -0
  29. package/themes/corporate.css +411 -0
  30. package/themes/game-adventure.css +3 -3
  31. package/themes/game-rpg.css +2 -2
  32. package/themes/game-sci-fi.css +1 -1
  33. package/themes/game-ui-pack.css +2 -2
  34. package/themes/gazette.css +2 -2
  35. package/themes/glass.css +428 -0
  36. package/themes/index.css +9 -13
  37. package/themes/kiosk.css +5 -5
  38. package/themes/linear-clean.css +1 -1
  39. package/themes/minimalist.css +2 -2
  40. package/themes/neon.css +3 -3
  41. package/themes/notion-editorial.css +1 -1
  42. package/themes/prism.css +3 -3
  43. package/themes/retro.css +410 -0
  44. package/themes/terminal.css +1 -1
  45. package/themes/trait-wars.css +8 -8
  46. package/themes/wireframe.css +2 -2
  47. package/themes/arctic.css +0 -235
  48. package/themes/copper.css +0 -235
  49. package/themes/ember.css +0 -238
  50. package/themes/forest.css +0 -238
  51. package/themes/lavender.css +0 -233
  52. package/themes/midnight.css +0 -234
  53. package/themes/ocean.css +0 -238
  54. package/themes/rose.css +0 -233
  55. package/themes/sand.css +0 -234
  56. package/themes/slate.css +0 -233
  57. package/themes/sunset.css +0 -238
package/themes/arctic.css DELETED
@@ -1,235 +0,0 @@
1
- /**
2
- * Arctic Theme — "Ice Crystal"
3
- *
4
- * Cool ice blue with a clean, precise, crisp aesthetic inspired by frozen
5
- * landscapes and crystalline formations. Sky blues and cyans evoke glacial
6
- * clarity, with sharp clean shadows and precise border radii. Tighter
7
- * letter-spacing and snappy transitions reinforce the theme's precision
8
- * and clarity.
9
- */
10
-
11
- /* ==========================================================================
12
- * LIGHT MODE
13
- * ========================================================================== */
14
- [data-theme="arctic-light"] {
15
- /* Shadows - Cool blue-tinted, crisp and clean */
16
- --shadow-main: 0 1px 2px rgba(2, 132, 199, 0.08), 0 1px 1px rgba(2, 132, 199, 0.05);
17
- --shadow-sm: 0 1px 1px rgba(2, 132, 199, 0.05);
18
- --shadow-lg:
19
- 0 8px 20px -4px rgba(2, 132, 199, 0.1), 0 4px 8px -4px rgba(2, 132, 199, 0.06);
20
- --shadow-inner: inset 0 1px 2px rgba(2, 132, 199, 0.05);
21
- --shadow-none: none;
22
- --shadow-hover: 0 8px 30px -8px rgba(2, 132, 199, 0.16);
23
- --shadow-active: 0 1px 1px rgba(2, 132, 199, 0.05);
24
-
25
- /* Border radius - Precise, clean */
26
- --radius-none: 0px;
27
- --radius-sm: 4px;
28
- --radius-md: 8px;
29
- --radius-lg: 12px;
30
- --radius-xl: 14px;
31
- --radius-full: 9999px;
32
-
33
- /* Border width */
34
- --border-width: 1px;
35
- --border-width-thin: 1px;
36
- --border-width-thick: 2px;
37
-
38
- /* Colors - Ice blue, cool and clean */
39
- --color-primary: #0369a1;
40
- --color-primary-hover: #075985;
41
- --color-primary-foreground: #ffffff;
42
-
43
- --color-secondary: #e0f2fe;
44
- --color-secondary-hover: #bae6fd;
45
- --color-secondary-foreground: #0c4a6e;
46
-
47
- --color-accent: #67e8f9;
48
- --color-accent-foreground: #164e63;
49
-
50
- --color-muted: #e0f2fe;
51
- --color-muted-foreground: #64748b;
52
-
53
- --color-background: #f0f9ff;
54
- --color-foreground: #0c4a6e;
55
- --color-card: #ffffff;
56
- --color-card-foreground: #0c4a6e;
57
- --color-surface: #e0f2fe;
58
- --color-border: rgba(2, 132, 199, 0.2);
59
- --color-input: rgba(2, 132, 199, 0.22);
60
- --color-ring: #0284c7;
61
-
62
- /* Semantic colors */
63
- --color-error: #dc2626;
64
- --color-error-foreground: #ffffff;
65
- --color-success: #16a34a;
66
- --color-success-foreground: #ffffff;
67
- --color-warning: #ca8a04;
68
- --color-warning-foreground: #000000;
69
- --color-info: #2563eb;
70
- --color-info-foreground: #ffffff;
71
-
72
- /* Icon styling */
73
- --icon-stroke-width: 1.75;
74
- --icon-color: #0284c7;
75
-
76
- /* Transitions - Crisp, snappy */
77
- --transition-fast: 120ms;
78
- --transition-normal: 220ms;
79
- --transition-slow: 350ms;
80
- --transition-timing: cubic-bezier(0.4, 0, 0.2, 1);
81
-
82
- /* Hover/Active transforms */
83
- --hover-scale: 1.01;
84
- --hover-translate-y: -1px;
85
- --hover-translate-x: 0;
86
- --active-scale: 0.99;
87
- --active-translate-y: 0;
88
-
89
- /* Focus ring */
90
- --focus-ring-width: 2px;
91
- --focus-ring-offset: 2px;
92
- --focus-ring-color: #0284c7;
93
-
94
- /* Layer 1 — backfill (preserves current visual output, see themes/_contract.md) */
95
- /* Motion axis — duration palette (aliases existing --transition-* for backward compat) */
96
- --duration-instant: 0ms;
97
- --duration-fast: var(--transition-fast);
98
- --duration-normal: var(--transition-normal);
99
- --duration-slow: var(--transition-slow);
100
- --duration-dramatic: 600ms;
101
- /* Motion axis — easing palette (aliases existing --transition-timing for backward compat) */
102
- --easing-linear: linear;
103
- --easing-standard: var(--transition-timing);
104
- --easing-emphasized: cubic-bezier(0.2, 0, 0, 1);
105
- --easing-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
106
- /* Iconography axis */
107
- --icon-family: lucide;
108
- --icon-default-size: 16px;
109
- /* Elevation axis — per-layer mapping */
110
- --elevation-card: var(--shadow-sm);
111
- --elevation-popover: var(--shadow-main);
112
- --elevation-dialog: var(--shadow-lg);
113
- --elevation-toast: var(--shadow-main);
114
- /* Geometry axis — radius rhythm with intent */
115
- --radius-container: var(--radius-md);
116
- --radius-interactive: var(--radius-md);
117
- --radius-pill: var(--radius-full);
118
- /* Geometry axis — border-width rhythm */
119
- --border-hairline: 1px;
120
- --border-standard: var(--border-width);
121
- --border-heavy: var(--border-width-thick);
122
- }
123
-
124
- /* ==========================================================================
125
- * DARK MODE
126
- * ========================================================================== */
127
- [data-theme="arctic-dark"] {
128
- /* Shadows - Cool ice-blue glow on deep dark */
129
- --shadow-main: 0 1px 2px rgba(103, 232, 249, 0.08), 0 1px 1px rgba(0, 0, 0, 0.2);
130
- --shadow-sm: 0 1px 1px rgba(0, 0, 0, 0.2);
131
- --shadow-lg:
132
- 0 8px 20px -4px rgba(0, 0, 0, 0.35), 0 4px 8px -4px rgba(103, 232, 249, 0.06);
133
- --shadow-inner: inset 0 1px 2px rgba(0, 0, 0, 0.25);
134
- --shadow-none: none;
135
- --shadow-hover: 0 8px 30px -8px rgba(103, 232, 249, 0.14);
136
- --shadow-active: 0 1px 1px rgba(0, 0, 0, 0.2);
137
-
138
- /* Border radius - Precise, clean */
139
- --radius-none: 0px;
140
- --radius-sm: 4px;
141
- --radius-md: 8px;
142
- --radius-lg: 12px;
143
- --radius-xl: 14px;
144
- --radius-full: 9999px;
145
-
146
- /* Border width */
147
- --border-width: 1px;
148
- --border-width-thin: 1px;
149
- --border-width-thick: 2px;
150
-
151
- /* Colors - Bright cyan on deep ice blue */
152
- --color-primary: #7dd3fc;
153
- --color-primary-hover: #bae6fd;
154
- --color-primary-foreground: #081520;
155
-
156
- --color-secondary: #0c2236;
157
- --color-secondary-hover: #10304d;
158
- --color-secondary-foreground: #e0f2fe;
159
-
160
- --color-accent: #67e8f9;
161
- --color-accent-foreground: #164e63;
162
-
163
- --color-muted: #0c2236;
164
- --color-muted-foreground: #7dd3fc;
165
-
166
- --color-background: #081520;
167
- --color-foreground: #e0f2fe;
168
- --color-card: #0c2236;
169
- --color-card-foreground: #e0f2fe;
170
- --color-surface: #10304d;
171
- --color-border: rgba(103, 232, 249, 0.2);
172
- --color-input: rgba(103, 232, 249, 0.25);
173
- --color-ring: #7dd3fc;
174
-
175
- /* Semantic colors - Brighter for dark mode */
176
- --color-error: #f87171;
177
- --color-error-foreground: #000000;
178
- --color-success: #4ade80;
179
- --color-success-foreground: #000000;
180
- --color-warning: #fbbf24;
181
- --color-warning-foreground: #000000;
182
- --color-info: #60a5fa;
183
- --color-info-foreground: #000000;
184
-
185
- /* Icon styling */
186
- --icon-stroke-width: 1.75;
187
- --icon-color: #67e8f9;
188
-
189
- /* Transitions - Crisp, snappy */
190
- --transition-fast: 120ms;
191
- --transition-normal: 220ms;
192
- --transition-slow: 350ms;
193
- --transition-timing: cubic-bezier(0.4, 0, 0.2, 1);
194
-
195
- /* Hover/Active transforms */
196
- --hover-scale: 1.01;
197
- --hover-translate-y: -1px;
198
- --hover-translate-x: 0;
199
- --active-scale: 0.99;
200
- --active-translate-y: 0;
201
-
202
- /* Focus ring */
203
- --focus-ring-width: 2px;
204
- --focus-ring-offset: 2px;
205
- --focus-ring-color: #67e8f9;
206
-
207
- /* Layer 1 — backfill (preserves current visual output, see themes/_contract.md) */
208
- /* Motion axis — duration palette (aliases existing --transition-* for backward compat) */
209
- --duration-instant: 0ms;
210
- --duration-fast: var(--transition-fast);
211
- --duration-normal: var(--transition-normal);
212
- --duration-slow: var(--transition-slow);
213
- --duration-dramatic: 600ms;
214
- /* Motion axis — easing palette (aliases existing --transition-timing for backward compat) */
215
- --easing-linear: linear;
216
- --easing-standard: var(--transition-timing);
217
- --easing-emphasized: cubic-bezier(0.2, 0, 0, 1);
218
- --easing-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
219
- /* Iconography axis */
220
- --icon-family: lucide;
221
- --icon-default-size: 16px;
222
- /* Elevation axis — per-layer mapping */
223
- --elevation-card: var(--shadow-sm);
224
- --elevation-popover: var(--shadow-main);
225
- --elevation-dialog: var(--shadow-lg);
226
- --elevation-toast: var(--shadow-main);
227
- /* Geometry axis — radius rhythm with intent */
228
- --radius-container: var(--radius-md);
229
- --radius-interactive: var(--radius-md);
230
- --radius-pill: var(--radius-full);
231
- /* Geometry axis — border-width rhythm */
232
- --border-hairline: 1px;
233
- --border-standard: var(--border-width);
234
- --border-heavy: var(--border-width-thick);
235
- }
package/themes/copper.css DELETED
@@ -1,235 +0,0 @@
1
- /**
2
- * Copper Theme — "Warm Industrial"
3
- *
4
- * Metallic copper and bronze tones with a functional, solid personality.
5
- * Inspired by industrial metalwork, riveted surfaces, and forged components.
6
- * Thicker borders, heavier font weights, and fast mechanical transitions
7
- * create a utilitarian aesthetic that prioritizes clarity and durability
8
- * over decoration.
9
- */
10
-
11
- /* ==========================================================================
12
- * LIGHT MODE
13
- * ========================================================================== */
14
- [data-theme="copper-light"] {
15
- /* Shadows - Warm metallic, bronze-tinted */
16
- --shadow-main: 0 1px 3px rgba(180, 83, 9, 0.1), 0 1px 2px rgba(180, 83, 9, 0.06);
17
- --shadow-sm: 0 1px 2px rgba(180, 83, 9, 0.06);
18
- --shadow-lg:
19
- 0 10px 25px -5px rgba(180, 83, 9, 0.12), 0 8px 10px -6px rgba(180, 83, 9, 0.08);
20
- --shadow-inner: inset 0 1px 2px rgba(180, 83, 9, 0.06);
21
- --shadow-none: none;
22
- --shadow-hover: 0 10px 40px -10px rgba(180, 83, 9, 0.18);
23
- --shadow-active: 0 1px 2px rgba(180, 83, 9, 0.06);
24
-
25
- /* Border radius - Functional, not too rounded */
26
- --radius-none: 0px;
27
- --radius-sm: 4px;
28
- --radius-md: 6px;
29
- --radius-lg: 8px;
30
- --radius-xl: 10px;
31
- --radius-full: 9999px;
32
-
33
- /* Border width - Thick, industrial */
34
- --border-width: 2px;
35
- --border-width-thin: 1px;
36
- --border-width-thick: 3px;
37
-
38
- /* Colors - Metallic copper and warm neutrals */
39
- --color-primary: #b45309;
40
- --color-primary-hover: #92400e;
41
- --color-primary-foreground: #ffffff;
42
-
43
- --color-secondary: #f5f0ea;
44
- --color-secondary-hover: #ebe4da;
45
- --color-secondary-foreground: #292524;
46
-
47
- --color-accent: #78350f;
48
- --color-accent-foreground: #fef3c7;
49
-
50
- --color-muted: #f5f0ea;
51
- --color-muted-foreground: #78716c;
52
-
53
- --color-background: #faf8f5;
54
- --color-foreground: #292524;
55
- --color-card: #ffffff;
56
- --color-card-foreground: #292524;
57
- --color-surface: #f5f0ea;
58
- --color-border: rgba(180, 83, 9, 0.25);
59
- --color-input: rgba(180, 83, 9, 0.25);
60
- --color-ring: #b45309;
61
-
62
- /* Semantic colors */
63
- --color-error: #dc2626;
64
- --color-error-foreground: #ffffff;
65
- --color-success: #16a34a;
66
- --color-success-foreground: #ffffff;
67
- --color-warning: #ca8a04;
68
- --color-warning-foreground: #000000;
69
- --color-info: #2563eb;
70
- --color-info-foreground: #ffffff;
71
-
72
- /* Icon styling */
73
- --icon-stroke-width: 2;
74
- --icon-color: #b45309;
75
-
76
- /* Transitions - Mechanical, fast */
77
- --transition-fast: 100ms;
78
- --transition-normal: 200ms;
79
- --transition-slow: 300ms;
80
- --transition-timing: cubic-bezier(0.4, 0, 0.2, 1);
81
-
82
- /* Hover/Active transforms - Subtle, functional */
83
- --hover-scale: 1.0;
84
- --hover-translate-y: -1px;
85
- --hover-translate-x: 0;
86
- --active-scale: 0.98;
87
- --active-translate-y: 1px;
88
-
89
- /* Focus ring */
90
- --focus-ring-width: 2px;
91
- --focus-ring-offset: 2px;
92
- --focus-ring-color: #b45309;
93
-
94
- /* Layer 1 — backfill (preserves current visual output, see themes/_contract.md) */
95
- /* Motion axis — duration palette (aliases existing --transition-* for backward compat) */
96
- --duration-instant: 0ms;
97
- --duration-fast: var(--transition-fast);
98
- --duration-normal: var(--transition-normal);
99
- --duration-slow: var(--transition-slow);
100
- --duration-dramatic: 600ms;
101
- /* Motion axis — easing palette (aliases existing --transition-timing for backward compat) */
102
- --easing-linear: linear;
103
- --easing-standard: var(--transition-timing);
104
- --easing-emphasized: cubic-bezier(0.2, 0, 0, 1);
105
- --easing-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
106
- /* Iconography axis */
107
- --icon-family: lucide;
108
- --icon-default-size: 16px;
109
- /* Elevation axis — per-layer mapping */
110
- --elevation-card: var(--shadow-sm);
111
- --elevation-popover: var(--shadow-main);
112
- --elevation-dialog: var(--shadow-lg);
113
- --elevation-toast: var(--shadow-main);
114
- /* Geometry axis — radius rhythm with intent */
115
- --radius-container: var(--radius-md);
116
- --radius-interactive: var(--radius-md);
117
- --radius-pill: var(--radius-full);
118
- /* Geometry axis — border-width rhythm */
119
- --border-hairline: 1px;
120
- --border-standard: var(--border-width);
121
- --border-heavy: var(--border-width-thick);
122
- }
123
-
124
- /* ==========================================================================
125
- * DARK MODE
126
- * ========================================================================== */
127
- [data-theme="copper-dark"] {
128
- /* Shadows - Deep bronze glow on dark */
129
- --shadow-main: 0 1px 3px rgba(217, 119, 6, 0.1), 0 1px 2px rgba(0, 0, 0, 0.22);
130
- --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.22);
131
- --shadow-lg:
132
- 0 10px 25px -5px rgba(0, 0, 0, 0.38), 0 8px 10px -6px rgba(217, 119, 6, 0.1);
133
- --shadow-inner: inset 0 1px 2px rgba(0, 0, 0, 0.28);
134
- --shadow-none: none;
135
- --shadow-hover: 0 10px 40px -10px rgba(217, 119, 6, 0.16);
136
- --shadow-active: 0 1px 2px rgba(0, 0, 0, 0.22);
137
-
138
- /* Border radius - Functional, not too rounded */
139
- --radius-none: 0px;
140
- --radius-sm: 4px;
141
- --radius-md: 6px;
142
- --radius-lg: 8px;
143
- --radius-xl: 10px;
144
- --radius-full: 9999px;
145
-
146
- /* Border width - Thick, industrial */
147
- --border-width: 2px;
148
- --border-width-thin: 1px;
149
- --border-width-thick: 3px;
150
-
151
- /* Colors - Bright copper on dark bronze */
152
- --color-primary: #d97706;
153
- --color-primary-hover: #f59e0b;
154
- --color-primary-foreground: #1a1410;
155
-
156
- --color-secondary: #262018;
157
- --color-secondary-hover: #302820;
158
- --color-secondary-foreground: #e7e0d6;
159
-
160
- --color-accent: #78350f;
161
- --color-accent-foreground: #fef3c7;
162
-
163
- --color-muted: #262018;
164
- --color-muted-foreground: #d6d3d1;
165
-
166
- --color-background: #1a1410;
167
- --color-foreground: #e7e0d6;
168
- --color-card: #262018;
169
- --color-card-foreground: #e7e0d6;
170
- --color-surface: #302820;
171
- --color-border: rgba(180, 83, 9, 0.3);
172
- --color-input: rgba(180, 83, 9, 0.3);
173
- --color-ring: #d97706;
174
-
175
- /* Semantic colors - Brighter for dark mode */
176
- --color-error: #f87171;
177
- --color-error-foreground: #000000;
178
- --color-success: #4ade80;
179
- --color-success-foreground: #000000;
180
- --color-warning: #fbbf24;
181
- --color-warning-foreground: #000000;
182
- --color-info: #60a5fa;
183
- --color-info-foreground: #000000;
184
-
185
- /* Icon styling */
186
- --icon-stroke-width: 2;
187
- --icon-color: #d97706;
188
-
189
- /* Transitions - Mechanical, fast */
190
- --transition-fast: 100ms;
191
- --transition-normal: 200ms;
192
- --transition-slow: 300ms;
193
- --transition-timing: cubic-bezier(0.4, 0, 0.2, 1);
194
-
195
- /* Hover/Active transforms - Subtle, functional */
196
- --hover-scale: 1.0;
197
- --hover-translate-y: -1px;
198
- --hover-translate-x: 0;
199
- --active-scale: 0.98;
200
- --active-translate-y: 1px;
201
-
202
- /* Focus ring */
203
- --focus-ring-width: 2px;
204
- --focus-ring-offset: 2px;
205
- --focus-ring-color: #d97706;
206
-
207
- /* Layer 1 — backfill (preserves current visual output, see themes/_contract.md) */
208
- /* Motion axis — duration palette (aliases existing --transition-* for backward compat) */
209
- --duration-instant: 0ms;
210
- --duration-fast: var(--transition-fast);
211
- --duration-normal: var(--transition-normal);
212
- --duration-slow: var(--transition-slow);
213
- --duration-dramatic: 600ms;
214
- /* Motion axis — easing palette (aliases existing --transition-timing for backward compat) */
215
- --easing-linear: linear;
216
- --easing-standard: var(--transition-timing);
217
- --easing-emphasized: cubic-bezier(0.2, 0, 0, 1);
218
- --easing-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
219
- /* Iconography axis */
220
- --icon-family: lucide;
221
- --icon-default-size: 16px;
222
- /* Elevation axis — per-layer mapping */
223
- --elevation-card: var(--shadow-sm);
224
- --elevation-popover: var(--shadow-main);
225
- --elevation-dialog: var(--shadow-lg);
226
- --elevation-toast: var(--shadow-main);
227
- /* Geometry axis — radius rhythm with intent */
228
- --radius-container: var(--radius-md);
229
- --radius-interactive: var(--radius-md);
230
- --radius-pill: var(--radius-full);
231
- /* Geometry axis — border-width rhythm */
232
- --border-hairline: 1px;
233
- --border-standard: var(--border-width);
234
- --border-heavy: var(--border-width-thick);
235
- }
package/themes/ember.css DELETED
@@ -1,238 +0,0 @@
1
- /**
2
- * Ember Theme — "Fire & Energy"
3
- *
4
- * A bold, energetic palette driven by deep reds and warm ambers.
5
- * Designed for applications that need to convey power, urgency, and
6
- * intensity. Features dramatic shadows with red glow in dark mode,
7
- * heavier font weights for impactful typography, and punchy fast
8
- * transitions that make every interaction feel decisive and forceful.
9
- */
10
-
11
- /* ==========================================================================
12
- * LIGHT MODE
13
- * ========================================================================== */
14
- [data-theme="ember-light"] {
15
- /* Shadows - Warm, dramatic */
16
- --shadow-main: 0 2px 6px rgba(220, 38, 38, 0.08), 0 1px 2px rgba(0, 0, 0, 0.05);
17
- --shadow-sm: 0 1px 3px rgba(220, 38, 38, 0.06);
18
- --shadow-lg:
19
- 0 8px 24px -4px rgba(220, 38, 38, 0.12), 0 4px 8px -2px rgba(0, 0, 0, 0.06);
20
- --shadow-inner: inset 0 1px 3px rgba(220, 38, 38, 0.06);
21
- --shadow-none: none;
22
- --shadow-hover:
23
- 0 8px 28px -4px rgba(220, 38, 38, 0.16), 0 4px 12px rgba(245, 158, 11, 0.08);
24
- --shadow-active: 0 1px 3px rgba(220, 38, 38, 0.08);
25
-
26
- /* Border radius - Controlled, not too rounded */
27
- --radius-none: 0px;
28
- --radius-sm: 4px;
29
- --radius-md: 8px;
30
- --radius-lg: 12px;
31
- --radius-xl: 12px;
32
- --radius-full: 9999px;
33
-
34
- /* Border width */
35
- --border-width: 1px;
36
- --border-width-thin: 1px;
37
- --border-width-thick: 2px;
38
-
39
- /* Colors - Warm reds and ambers */
40
- --color-primary: #dc2626;
41
- --color-primary-hover: #b91c1c;
42
- --color-primary-foreground: #ffffff;
43
-
44
- --color-secondary: #fef2f2;
45
- --color-secondary-hover: #fee2e2;
46
- --color-secondary-foreground: #7f1d1d;
47
-
48
- --color-accent: #f59e0b;
49
- --color-accent-foreground: #451a03;
50
-
51
- --color-muted: #fef2f2;
52
- --color-muted-foreground: #78716c;
53
-
54
- --color-background: #fef2f2;
55
- --color-foreground: #450a0a;
56
- --color-card: #ffffff;
57
- --color-card-foreground: #450a0a;
58
- --color-surface: #fee2e2;
59
- --color-border: rgba(220, 38, 38, 0.2);
60
- --color-input: rgba(220, 38, 38, 0.25);
61
- --color-ring: #dc2626;
62
-
63
- /* Semantic colors */
64
- --color-error: #be123c;
65
- --color-error-foreground: #ffffff;
66
- --color-success: #16a34a;
67
- --color-success-foreground: #ffffff;
68
- --color-warning: #d97706;
69
- --color-warning-foreground: #000000;
70
- --color-info: #2563eb;
71
- --color-info-foreground: #ffffff;
72
-
73
- /* Icon styling */
74
- --icon-stroke-width: 2.25;
75
- --icon-color: #dc2626;
76
-
77
- /* Transitions - Fast, punchy */
78
- --transition-fast: 80ms;
79
- --transition-normal: 150ms;
80
- --transition-slow: 250ms;
81
- --transition-timing: cubic-bezier(0.4, 0, 0.2, 1);
82
-
83
- /* Hover/Active transforms - Energetic */
84
- --hover-scale: 1.02;
85
- --hover-translate-y: -2px;
86
- --hover-translate-x: 0;
87
- --active-scale: 0.96;
88
- --active-translate-y: 1px;
89
-
90
- /* Focus ring */
91
- --focus-ring-width: 2px;
92
- --focus-ring-offset: 2px;
93
- --focus-ring-color: #dc2626;
94
-
95
- /* Layer 1 — backfill (preserves current visual output, see themes/_contract.md) */
96
- /* Motion axis — duration palette (aliases existing --transition-* for backward compat) */
97
- --duration-instant: 0ms;
98
- --duration-fast: var(--transition-fast);
99
- --duration-normal: var(--transition-normal);
100
- --duration-slow: var(--transition-slow);
101
- --duration-dramatic: 600ms;
102
- /* Motion axis — easing palette (aliases existing --transition-timing for backward compat) */
103
- --easing-linear: linear;
104
- --easing-standard: var(--transition-timing);
105
- --easing-emphasized: cubic-bezier(0.2, 0, 0, 1);
106
- --easing-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
107
- /* Iconography axis */
108
- --icon-family: lucide;
109
- --icon-default-size: 16px;
110
- /* Elevation axis — per-layer mapping */
111
- --elevation-card: var(--shadow-sm);
112
- --elevation-popover: var(--shadow-main);
113
- --elevation-dialog: var(--shadow-lg);
114
- --elevation-toast: var(--shadow-main);
115
- /* Geometry axis — radius rhythm with intent */
116
- --radius-container: var(--radius-md);
117
- --radius-interactive: var(--radius-md);
118
- --radius-pill: var(--radius-full);
119
- /* Geometry axis — border-width rhythm */
120
- --border-hairline: 1px;
121
- --border-standard: var(--border-width);
122
- --border-heavy: var(--border-width-thick);
123
- }
124
-
125
- /* ==========================================================================
126
- * DARK MODE
127
- * ========================================================================== */
128
- [data-theme="ember-dark"] {
129
- /* Shadows - Dramatic red glow */
130
- --shadow-main:
131
- 0 2px 8px rgba(220, 38, 38, 0.15), 0 1px 3px rgba(0, 0, 0, 0.3);
132
- --shadow-sm: 0 1px 4px rgba(220, 38, 38, 0.1), 0 1px 2px rgba(0, 0, 0, 0.2);
133
- --shadow-lg:
134
- 0 8px 28px rgba(220, 38, 38, 0.2), 0 4px 12px rgba(0, 0, 0, 0.4);
135
- --shadow-inner: inset 0 1px 3px rgba(0, 0, 0, 0.3);
136
- --shadow-none: none;
137
- --shadow-hover:
138
- 0 8px 32px rgba(220, 38, 38, 0.25), 0 4px 16px rgba(245, 158, 11, 0.1);
139
- --shadow-active: 0 2px 6px rgba(220, 38, 38, 0.15), 0 1px 2px rgba(0, 0, 0, 0.3);
140
-
141
- /* Border radius - Controlled, not too rounded */
142
- --radius-none: 0px;
143
- --radius-sm: 4px;
144
- --radius-md: 8px;
145
- --radius-lg: 12px;
146
- --radius-xl: 12px;
147
- --radius-full: 9999px;
148
-
149
- /* Border width */
150
- --border-width: 1px;
151
- --border-width-thin: 1px;
152
- --border-width-thick: 2px;
153
-
154
- /* Colors - Deep red-black */
155
- --color-primary: #f87171;
156
- --color-primary-hover: #fca5a5;
157
- --color-primary-foreground: #1a0505;
158
-
159
- --color-secondary: #2a0a0a;
160
- --color-secondary-hover: #3d1111;
161
- --color-secondary-foreground: #fee2e2;
162
-
163
- --color-accent: #f59e0b;
164
- --color-accent-foreground: #451a03;
165
-
166
- --color-muted: #2a0a0a;
167
- --color-muted-foreground: #fca5a5;
168
-
169
- --color-background: #1a0505;
170
- --color-foreground: #fee2e2;
171
- --color-card: #2a0a0a;
172
- --color-card-foreground: #fee2e2;
173
- --color-surface: #3d1111;
174
- --color-border: rgba(245, 158, 11, 0.2);
175
- --color-input: rgba(245, 158, 11, 0.25);
176
- --color-ring: #f87171;
177
-
178
- /* Semantic colors - Brighter for dark mode */
179
- --color-error: #fb7185;
180
- --color-error-foreground: #000000;
181
- --color-success: #4ade80;
182
- --color-success-foreground: #000000;
183
- --color-warning: #fbbf24;
184
- --color-warning-foreground: #000000;
185
- --color-info: #60a5fa;
186
- --color-info-foreground: #000000;
187
-
188
- /* Icon styling */
189
- --icon-stroke-width: 2.25;
190
- --icon-color: #f87171;
191
-
192
- /* Transitions - Fast, punchy */
193
- --transition-fast: 80ms;
194
- --transition-normal: 150ms;
195
- --transition-slow: 250ms;
196
- --transition-timing: cubic-bezier(0.4, 0, 0.2, 1);
197
-
198
- /* Hover/Active transforms - Energetic */
199
- --hover-scale: 1.02;
200
- --hover-translate-y: -2px;
201
- --hover-translate-x: 0;
202
- --active-scale: 0.96;
203
- --active-translate-y: 1px;
204
-
205
- /* Focus ring */
206
- --focus-ring-width: 2px;
207
- --focus-ring-offset: 2px;
208
- --focus-ring-color: #f87171;
209
-
210
- /* Layer 1 — backfill (preserves current visual output, see themes/_contract.md) */
211
- /* Motion axis — duration palette (aliases existing --transition-* for backward compat) */
212
- --duration-instant: 0ms;
213
- --duration-fast: var(--transition-fast);
214
- --duration-normal: var(--transition-normal);
215
- --duration-slow: var(--transition-slow);
216
- --duration-dramatic: 600ms;
217
- /* Motion axis — easing palette (aliases existing --transition-timing for backward compat) */
218
- --easing-linear: linear;
219
- --easing-standard: var(--transition-timing);
220
- --easing-emphasized: cubic-bezier(0.2, 0, 0, 1);
221
- --easing-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
222
- /* Iconography axis */
223
- --icon-family: lucide;
224
- --icon-default-size: 16px;
225
- /* Elevation axis — per-layer mapping */
226
- --elevation-card: var(--shadow-sm);
227
- --elevation-popover: var(--shadow-main);
228
- --elevation-dialog: var(--shadow-lg);
229
- --elevation-toast: var(--shadow-main);
230
- /* Geometry axis — radius rhythm with intent */
231
- --radius-container: var(--radius-md);
232
- --radius-interactive: var(--radius-md);
233
- --radius-pill: var(--radius-full);
234
- /* Geometry axis — border-width rhythm */
235
- --border-hairline: 1px;
236
- --border-standard: var(--border-width);
237
- --border-heavy: var(--border-width-thick);
238
- }