@idealyst/theme 1.0.83 → 1.0.85
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/package.json +2 -1
- package/src/components/CLAUDE.md +468 -0
- package/src/components/accordion.ts +34 -0
- package/src/components/activity-indicator.ts +28 -0
- package/src/components/alert.ts +32 -0
- package/src/components/avatar.ts +27 -0
- package/src/components/badge.ts +28 -0
- package/src/components/breadcrumb.ts +36 -0
- package/src/components/button.ts +32 -0
- package/src/components/card.ts +31 -0
- package/src/components/checkbox.ts +37 -0
- package/src/components/chip.ts +34 -0
- package/src/components/dialog.ts +31 -0
- package/src/components/divider.ts +36 -0
- package/src/components/icon.ts +26 -0
- package/src/components/image.ts +22 -0
- package/src/components/index.ts +37 -0
- package/src/components/input.ts +35 -0
- package/src/components/list.ts +40 -0
- package/src/components/menu-item.ts +29 -0
- package/src/components/menu.ts +32 -0
- package/src/components/popover.ts +25 -0
- package/src/components/pressable.ts +20 -0
- package/src/components/progress.ts +35 -0
- package/src/components/radio-button.ts +38 -0
- package/src/components/screen.ts +25 -0
- package/src/components/select.ts +62 -0
- package/src/components/skeleton.ts +26 -0
- package/src/components/slider.ts +62 -0
- package/src/components/svg-image.ts +24 -0
- package/src/components/switch.ts +54 -0
- package/src/components/tab-bar.ts +54 -0
- package/src/components/table.ts +57 -0
- package/src/components/text.ts +29 -0
- package/src/components/textarea.ts +53 -0
- package/src/components/tooltip.ts +29 -0
- package/src/components/video.ts +18 -0
- package/src/components/view.ts +31 -0
- package/src/darkTheme.ts +890 -0
- package/src/index.ts +7 -166
- package/src/lightTheme.ts +873 -0
- package/src/styles.ts +14 -0
- package/src/theme/color.ts +15 -0
- package/src/theme/index.ts +16 -0
- package/src/theme/intent.ts +8 -0
- package/src/theme/shadow.ts +18 -0
- package/src/theme/size.ts +182 -0
- package/src/theme/surface.ts +3 -0
- package/src/unistyles.ts +6 -14
- package/src/variants/color.ts +9 -0
- package/src/variants/index.ts +2 -0
- package/src/variants/intent.ts +16 -0
- package/src/variants/size.ts +0 -0
- package/CLAUDE.md +0 -447
- package/LLM-ACCESS-GUIDE.md +0 -208
- package/README.md +0 -633
- package/src/README.md +0 -138
- package/src/breakpoints.ts +0 -8
- package/src/colorResolver.ts +0 -218
- package/src/colors.md +0 -353
- package/src/colors.ts +0 -315
- package/src/common.ts +0 -92
- package/src/defaultThemes.md +0 -407
- package/src/defaultThemes.ts +0 -238
- package/src/themeBuilder.md +0 -400
- package/src/themeBuilder.ts +0 -602
- package/src/variantHelpers.ts +0 -584
- package/src/variants.ts +0 -56
package/src/colors.md
DELETED
|
@@ -1,353 +0,0 @@
|
|
|
1
|
-
# Color Palettes
|
|
2
|
-
|
|
3
|
-
Base color palette definitions that serve as the foundation for the entire theme system.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
The colors module defines 8 comprehensive color palettes, each with 10 carefully crafted shades (50-900). These palettes provide the raw material for creating consistent, accessible, and visually appealing themes.
|
|
8
|
-
|
|
9
|
-
## Color Palette Structure
|
|
10
|
-
|
|
11
|
-
Each palette follows a consistent structure with 10 shades:
|
|
12
|
-
|
|
13
|
-
- **50-200**: Very light shades (backgrounds, subtle accents)
|
|
14
|
-
- **300-400**: Light shades (secondary elements, hover states)
|
|
15
|
-
- **500**: Base color (primary brand color, main actions)
|
|
16
|
-
- **600-700**: Medium shades (interactive states, emphasis)
|
|
17
|
-
- **800-900**: Dark shades (text, high contrast elements)
|
|
18
|
-
|
|
19
|
-
## Available Palettes
|
|
20
|
-
|
|
21
|
-
### Blue Palette (Primary Brand)
|
|
22
|
-
Perfect for primary actions, links, and brand elements.
|
|
23
|
-
|
|
24
|
-
```tsx
|
|
25
|
-
blue: {
|
|
26
|
-
50: '#eff6ff', // Very light blue background
|
|
27
|
-
100: '#dbeafe', // Light blue background
|
|
28
|
-
200: '#bfdbfe', // Subtle blue
|
|
29
|
-
300: '#93c5fd', // Light interactive blue
|
|
30
|
-
400: '#60a5fa', // Medium blue
|
|
31
|
-
500: '#3b82f6', // Base blue (primary brand)
|
|
32
|
-
600: '#2563eb', // Focused blue
|
|
33
|
-
700: '#1d4ed8', // Pressed blue
|
|
34
|
-
800: '#1e40af', // Dark blue
|
|
35
|
-
900: '#1e3a8a', // Very dark blue (text)
|
|
36
|
-
}
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
**Use Cases:**
|
|
40
|
-
- Primary buttons and CTAs
|
|
41
|
-
- Links and navigation
|
|
42
|
-
- Brand elements
|
|
43
|
-
- Focus indicators
|
|
44
|
-
|
|
45
|
-
### Green Palette (Success)
|
|
46
|
-
Ideal for success states, confirmations, and positive actions.
|
|
47
|
-
|
|
48
|
-
```tsx
|
|
49
|
-
green: {
|
|
50
|
-
50: '#f0fdf4', // Success background
|
|
51
|
-
100: '#dcfce7', // Light success
|
|
52
|
-
200: '#bbf7d0', // Subtle success
|
|
53
|
-
300: '#86efac', // Light success interactive
|
|
54
|
-
400: '#4ade80', // Medium success
|
|
55
|
-
500: '#22c55e', // Base success
|
|
56
|
-
600: '#16a34a', // Focused success
|
|
57
|
-
700: '#15803d', // Pressed success
|
|
58
|
-
800: '#166534', // Dark success
|
|
59
|
-
900: '#14532d', // Very dark success
|
|
60
|
-
}
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
**Use Cases:**
|
|
64
|
-
- Success messages and notifications
|
|
65
|
-
- Confirmation buttons
|
|
66
|
-
- Valid form states
|
|
67
|
-
- Positive status indicators
|
|
68
|
-
|
|
69
|
-
### Red Palette (Error)
|
|
70
|
-
Essential for error states, warnings, and destructive actions.
|
|
71
|
-
|
|
72
|
-
```tsx
|
|
73
|
-
red: {
|
|
74
|
-
50: '#fef2f2', // Error background
|
|
75
|
-
100: '#fee2e2', // Light error
|
|
76
|
-
200: '#fecaca', // Subtle error
|
|
77
|
-
300: '#fca5a5', // Light error interactive
|
|
78
|
-
400: '#f87171', // Medium error
|
|
79
|
-
500: '#ef4444', // Base error
|
|
80
|
-
600: '#dc2626', // Focused error
|
|
81
|
-
700: '#b91c1c', // Pressed error
|
|
82
|
-
800: '#991b1b', // Dark error
|
|
83
|
-
900: '#7f1d1d', // Very dark error
|
|
84
|
-
}
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
**Use Cases:**
|
|
88
|
-
- Error messages and alerts
|
|
89
|
-
- Delete and destructive actions
|
|
90
|
-
- Invalid form states
|
|
91
|
-
- Critical notifications
|
|
92
|
-
|
|
93
|
-
### Amber Palette (Warning)
|
|
94
|
-
Perfect for warning states and caution indicators.
|
|
95
|
-
|
|
96
|
-
```tsx
|
|
97
|
-
amber: {
|
|
98
|
-
50: '#fffbeb', // Warning background
|
|
99
|
-
100: '#fef3c7', // Light warning
|
|
100
|
-
200: '#fde68a', // Subtle warning
|
|
101
|
-
300: '#fcd34d', // Light warning interactive
|
|
102
|
-
400: '#fbbf24', // Medium warning
|
|
103
|
-
500: '#f59e0b', // Base warning
|
|
104
|
-
600: '#d97706', // Focused warning
|
|
105
|
-
700: '#b45309', // Pressed warning
|
|
106
|
-
800: '#92400e', // Dark warning
|
|
107
|
-
900: '#78350f', // Very dark warning
|
|
108
|
-
}
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
**Use Cases:**
|
|
112
|
-
- Warning messages
|
|
113
|
-
- Caution alerts
|
|
114
|
-
- Pending states
|
|
115
|
-
- Important notices
|
|
116
|
-
|
|
117
|
-
### Gray Palette (Neutral)
|
|
118
|
-
Fundamental for text, borders, and neutral interface elements.
|
|
119
|
-
|
|
120
|
-
```tsx
|
|
121
|
-
gray: {
|
|
122
|
-
50: '#f9fafb', // Very light background
|
|
123
|
-
100: '#f3f4f6', // Light background
|
|
124
|
-
200: '#e5e7eb', // Subtle borders
|
|
125
|
-
300: '#d1d5db', // Light borders
|
|
126
|
-
400: '#9ca3af', // Placeholder text
|
|
127
|
-
500: '#6b7280', // Secondary text
|
|
128
|
-
600: '#4b5563', // Primary text (light theme)
|
|
129
|
-
700: '#374151', // Dark text
|
|
130
|
-
800: '#1f2937', // Very dark text
|
|
131
|
-
900: '#111827', // Darkest text
|
|
132
|
-
}
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
**Use Cases:**
|
|
136
|
-
- Text colors (all hierarchies)
|
|
137
|
-
- Borders and dividers
|
|
138
|
-
- Neutral backgrounds
|
|
139
|
-
- Disabled states
|
|
140
|
-
|
|
141
|
-
### Cyan Palette (Info)
|
|
142
|
-
Great for informational states and secondary accents.
|
|
143
|
-
|
|
144
|
-
```tsx
|
|
145
|
-
cyan: {
|
|
146
|
-
50: '#ecfeff', // Info background
|
|
147
|
-
100: '#cffafe', // Light info
|
|
148
|
-
200: '#a5f3fc', // Subtle info
|
|
149
|
-
300: '#67e8f9', // Light info interactive
|
|
150
|
-
400: '#22d3ee', // Medium info
|
|
151
|
-
500: '#06b6d4', // Base info
|
|
152
|
-
600: '#0891b2', // Focused info
|
|
153
|
-
700: '#0e7490', // Pressed info
|
|
154
|
-
800: '#155e75', // Dark info
|
|
155
|
-
900: '#164e63', // Very dark info
|
|
156
|
-
}
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
**Use Cases:**
|
|
160
|
-
- Info messages and tooltips
|
|
161
|
-
- Secondary brand colors
|
|
162
|
-
- Highlight elements
|
|
163
|
-
- Interactive accents
|
|
164
|
-
|
|
165
|
-
### Purple Palette (Accent)
|
|
166
|
-
Excellent for premium features and creative accents.
|
|
167
|
-
|
|
168
|
-
```tsx
|
|
169
|
-
purple: {
|
|
170
|
-
50: '#faf5ff', // Purple background
|
|
171
|
-
100: '#f3e8ff', // Light purple
|
|
172
|
-
200: '#e9d5ff', // Subtle purple
|
|
173
|
-
300: '#d8b4fe', // Light purple interactive
|
|
174
|
-
400: '#c084fc', // Medium purple
|
|
175
|
-
500: '#a855f7', // Base purple
|
|
176
|
-
600: '#9333ea', // Focused purple
|
|
177
|
-
700: '#7c3aed', // Pressed purple
|
|
178
|
-
800: '#6b21b6', // Dark purple
|
|
179
|
-
900: '#581c87', // Very dark purple
|
|
180
|
-
}
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
**Use Cases:**
|
|
184
|
-
- Premium feature indicators
|
|
185
|
-
- Creative/artistic elements
|
|
186
|
-
- Secondary accent colors
|
|
187
|
-
- Special promotions
|
|
188
|
-
|
|
189
|
-
### Pink Palette (Accent)
|
|
190
|
-
Perfect for creative applications and warm accents.
|
|
191
|
-
|
|
192
|
-
```tsx
|
|
193
|
-
pink: {
|
|
194
|
-
50: '#fdf2f8', // Pink background
|
|
195
|
-
100: '#fce7f3', // Light pink
|
|
196
|
-
200: '#fbcfe8', // Subtle pink
|
|
197
|
-
300: '#f9a8d4', // Light pink interactive
|
|
198
|
-
400: '#f472b6', // Medium pink
|
|
199
|
-
500: '#ec4899', // Base pink
|
|
200
|
-
600: '#db2777', // Focused pink
|
|
201
|
-
700: '#be185d', // Pressed pink
|
|
202
|
-
800: '#9d174d', // Dark pink
|
|
203
|
-
900: '#831843', // Very dark pink
|
|
204
|
-
}
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
**Use Cases:**
|
|
208
|
-
- Creative and playful elements
|
|
209
|
-
- Warm accent colors
|
|
210
|
-
- Fashion/lifestyle applications
|
|
211
|
-
- Special occasions
|
|
212
|
-
|
|
213
|
-
## Color Usage Guidelines
|
|
214
|
-
|
|
215
|
-
### Shade Selection
|
|
216
|
-
|
|
217
|
-
**Light Themes:**
|
|
218
|
-
- **Backgrounds**: Use shades 50-100
|
|
219
|
-
- **Subtle elements**: Use shades 100-200
|
|
220
|
-
- **Interactive elements**: Use shades 400-600
|
|
221
|
-
- **Text on light**: Use shades 600-900
|
|
222
|
-
|
|
223
|
-
**Dark Themes:**
|
|
224
|
-
- **Backgrounds**: Use shades 800-900
|
|
225
|
-
- **Subtle elements**: Use shades 700-800
|
|
226
|
-
- **Interactive elements**: Use shades 300-500
|
|
227
|
-
- **Text on dark**: Use shades 50-300
|
|
228
|
-
|
|
229
|
-
### Accessibility Considerations
|
|
230
|
-
|
|
231
|
-
**Contrast Ratios:**
|
|
232
|
-
- **Normal text**: Minimum 4.5:1 contrast ratio
|
|
233
|
-
- **Large text**: Minimum 3:1 contrast ratio
|
|
234
|
-
- **UI elements**: Minimum 3:1 contrast ratio
|
|
235
|
-
|
|
236
|
-
**Recommended Combinations:**
|
|
237
|
-
```tsx
|
|
238
|
-
// Light theme text on backgrounds
|
|
239
|
-
textOnLight: {
|
|
240
|
-
primary: gray[800], // 4.5:1+ contrast
|
|
241
|
-
secondary: gray[600], // 4.5:1+ contrast
|
|
242
|
-
disabled: gray[400], // 3:1+ contrast
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
// Dark theme text on backgrounds
|
|
246
|
-
textOnDark: {
|
|
247
|
-
primary: gray[100], // 4.5:1+ contrast
|
|
248
|
-
secondary: gray[300], // 4.5:1+ contrast
|
|
249
|
-
disabled: gray[500], // 3:1+ contrast
|
|
250
|
-
}
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
## Color Psychology
|
|
254
|
-
|
|
255
|
-
### Blue
|
|
256
|
-
- **Emotion**: Trust, reliability, professionalism
|
|
257
|
-
- **Use Cases**: Corporate brands, finance, healthcare
|
|
258
|
-
- **Avoid**: Food brands (suppresses appetite)
|
|
259
|
-
|
|
260
|
-
### Green
|
|
261
|
-
- **Emotion**: Growth, success, nature, harmony
|
|
262
|
-
- **Use Cases**: Environmental, finance, success states
|
|
263
|
-
- **Avoid**: Error states (conflicts with red)
|
|
264
|
-
|
|
265
|
-
### Red
|
|
266
|
-
- **Emotion**: Urgency, passion, danger, power
|
|
267
|
-
- **Use Cases**: Alerts, errors, sales, urgency
|
|
268
|
-
- **Avoid**: Overuse (can create anxiety)
|
|
269
|
-
|
|
270
|
-
### Amber/Yellow
|
|
271
|
-
- **Emotion**: Optimism, caution, energy
|
|
272
|
-
- **Use Cases**: Warnings, highlights, energy brands
|
|
273
|
-
- **Avoid**: Large areas (can strain eyes)
|
|
274
|
-
|
|
275
|
-
### Purple
|
|
276
|
-
- **Emotion**: Luxury, creativity, mystery
|
|
277
|
-
- **Use Cases**: Premium brands, creative tools
|
|
278
|
-
- **Cultural Note**: Royal associations in Western cultures
|
|
279
|
-
|
|
280
|
-
### Pink
|
|
281
|
-
- **Emotion**: Playfulness, romance, creativity
|
|
282
|
-
- **Use Cases**: Fashion, lifestyle, creative apps
|
|
283
|
-
- **Considerations**: Gender associations vary by culture
|
|
284
|
-
|
|
285
|
-
## Implementation Examples
|
|
286
|
-
|
|
287
|
-
### Using Palettes in Themes
|
|
288
|
-
|
|
289
|
-
```tsx
|
|
290
|
-
import { colorPalettes } from './colors';
|
|
291
|
-
|
|
292
|
-
// Direct palette access
|
|
293
|
-
const brandColor = colorPalettes.blue[500];
|
|
294
|
-
const lightBackground = colorPalettes.gray[50];
|
|
295
|
-
const errorText = colorPalettes.red[700];
|
|
296
|
-
|
|
297
|
-
// Intent mapping
|
|
298
|
-
const lightThemeIntents = {
|
|
299
|
-
primary: {
|
|
300
|
-
main: colorPalettes.blue[500],
|
|
301
|
-
light: colorPalettes.blue[400],
|
|
302
|
-
dark: colorPalettes.blue[600],
|
|
303
|
-
container: colorPalettes.blue[100],
|
|
304
|
-
},
|
|
305
|
-
error: {
|
|
306
|
-
main: colorPalettes.red[500],
|
|
307
|
-
light: colorPalettes.red[400],
|
|
308
|
-
dark: colorPalettes.red[600],
|
|
309
|
-
container: colorPalettes.red[100],
|
|
310
|
-
},
|
|
311
|
-
};
|
|
312
|
-
```
|
|
313
|
-
|
|
314
|
-
### Generating Custom Palettes
|
|
315
|
-
|
|
316
|
-
```tsx
|
|
317
|
-
import { generateColorPalette } from '../themeBuilder';
|
|
318
|
-
|
|
319
|
-
// Generate palette from brand color
|
|
320
|
-
const brandPalette = generateColorPalette('#ff6b6b');
|
|
321
|
-
|
|
322
|
-
// Combine with existing palettes
|
|
323
|
-
const customPalettes = {
|
|
324
|
-
...colorPalettes,
|
|
325
|
-
brand: brandPalette,
|
|
326
|
-
};
|
|
327
|
-
```
|
|
328
|
-
|
|
329
|
-
## Best Practices
|
|
330
|
-
|
|
331
|
-
1. **Consistency**: Use the same palette family for related elements
|
|
332
|
-
2. **Contrast**: Always check contrast ratios for accessibility
|
|
333
|
-
3. **Context**: Consider the emotional and cultural context of colors
|
|
334
|
-
4. **Hierarchy**: Use color intensity to indicate importance
|
|
335
|
-
5. **Testing**: Validate colors across different devices and conditions
|
|
336
|
-
6. **Brand Alignment**: Ensure palette choices align with brand identity
|
|
337
|
-
|
|
338
|
-
## Color Tools and Resources
|
|
339
|
-
|
|
340
|
-
**Contrast Checkers:**
|
|
341
|
-
- WebAIM Contrast Checker
|
|
342
|
-
- Colour Contrast Analyser
|
|
343
|
-
- Stark (Figma/Sketch plugin)
|
|
344
|
-
|
|
345
|
-
**Palette Generators:**
|
|
346
|
-
- Coolors.co
|
|
347
|
-
- Adobe Color
|
|
348
|
-
- Material Design Color Tool
|
|
349
|
-
|
|
350
|
-
**Accessibility Tools:**
|
|
351
|
-
- WAVE Web Accessibility Evaluator
|
|
352
|
-
- axe DevTools
|
|
353
|
-
- Color Oracle (colorblind simulator)
|
package/src/colors.ts
DELETED
|
@@ -1,315 +0,0 @@
|
|
|
1
|
-
// Base color palettes - these are the source of truth for all colors
|
|
2
|
-
export const colorPalettes = {
|
|
3
|
-
blue: {
|
|
4
|
-
50: '#eff6ff',
|
|
5
|
-
100: '#dbeafe',
|
|
6
|
-
200: '#bfdbfe',
|
|
7
|
-
300: '#93c5fd',
|
|
8
|
-
400: '#60a5fa',
|
|
9
|
-
500: '#3b82f6',
|
|
10
|
-
600: '#2563eb',
|
|
11
|
-
700: '#1d4ed8',
|
|
12
|
-
800: '#1e40af',
|
|
13
|
-
900: '#1e3a8a',
|
|
14
|
-
},
|
|
15
|
-
|
|
16
|
-
green: {
|
|
17
|
-
50: '#f0fdf4',
|
|
18
|
-
100: '#dcfce7',
|
|
19
|
-
200: '#bbf7d0',
|
|
20
|
-
300: '#86efac',
|
|
21
|
-
400: '#4ade80',
|
|
22
|
-
500: '#22c55e',
|
|
23
|
-
600: '#16a34a',
|
|
24
|
-
700: '#15803d',
|
|
25
|
-
800: '#166534',
|
|
26
|
-
900: '#14532d',
|
|
27
|
-
},
|
|
28
|
-
|
|
29
|
-
red: {
|
|
30
|
-
50: '#fef2f2',
|
|
31
|
-
100: '#fee2e2',
|
|
32
|
-
200: '#fecaca',
|
|
33
|
-
300: '#fca5a5',
|
|
34
|
-
400: '#f87171',
|
|
35
|
-
500: '#ef4444',
|
|
36
|
-
600: '#dc2626',
|
|
37
|
-
700: '#b91c1c',
|
|
38
|
-
800: '#991b1b',
|
|
39
|
-
900: '#7f1d1d',
|
|
40
|
-
},
|
|
41
|
-
|
|
42
|
-
amber: {
|
|
43
|
-
50: '#fffbeb',
|
|
44
|
-
100: '#fef3c7',
|
|
45
|
-
200: '#fde68a',
|
|
46
|
-
300: '#fcd34d',
|
|
47
|
-
400: '#fbbf24',
|
|
48
|
-
500: '#f59e0b',
|
|
49
|
-
600: '#d97706',
|
|
50
|
-
700: '#b45309',
|
|
51
|
-
800: '#92400e',
|
|
52
|
-
900: '#78350f',
|
|
53
|
-
},
|
|
54
|
-
|
|
55
|
-
gray: {
|
|
56
|
-
50: '#f9fafb',
|
|
57
|
-
100: '#f3f4f6',
|
|
58
|
-
200: '#e5e7eb',
|
|
59
|
-
300: '#d1d5db',
|
|
60
|
-
400: '#9ca3af',
|
|
61
|
-
500: '#6b7280',
|
|
62
|
-
600: '#4b5563',
|
|
63
|
-
700: '#374151',
|
|
64
|
-
800: '#1f2937',
|
|
65
|
-
900: '#111827',
|
|
66
|
-
},
|
|
67
|
-
|
|
68
|
-
purple: {
|
|
69
|
-
50: '#f8fafc',
|
|
70
|
-
100: '#f1f5f9',
|
|
71
|
-
200: '#e2e8f0',
|
|
72
|
-
300: '#cbd5e1',
|
|
73
|
-
400: '#94a3b8',
|
|
74
|
-
500: '#64748b',
|
|
75
|
-
600: '#475569',
|
|
76
|
-
700: '#334155',
|
|
77
|
-
800: '#1e293b',
|
|
78
|
-
900: '#0f172a',
|
|
79
|
-
},
|
|
80
|
-
|
|
81
|
-
pink: {
|
|
82
|
-
50: '#fdf2f8',
|
|
83
|
-
100: '#fce7f3',
|
|
84
|
-
200: '#fbcfe8',
|
|
85
|
-
300: '#f9a8d4',
|
|
86
|
-
400: '#f472b6',
|
|
87
|
-
500: '#ec4899',
|
|
88
|
-
600: '#db2777',
|
|
89
|
-
700: '#be185d',
|
|
90
|
-
800: '#9d174d',
|
|
91
|
-
900: '#831843',
|
|
92
|
-
},
|
|
93
|
-
|
|
94
|
-
cyan: {
|
|
95
|
-
50: '#ecfeff',
|
|
96
|
-
100: '#cffafe',
|
|
97
|
-
200: '#a5f3fc',
|
|
98
|
-
300: '#67e8f9',
|
|
99
|
-
400: '#22d3ee',
|
|
100
|
-
500: '#06b6d4',
|
|
101
|
-
600: '#0891b2',
|
|
102
|
-
700: '#0e7490',
|
|
103
|
-
800: '#155e75',
|
|
104
|
-
900: '#164e63',
|
|
105
|
-
},
|
|
106
|
-
} as const;
|
|
107
|
-
|
|
108
|
-
// Intent system - maps semantic meanings to color palettes
|
|
109
|
-
export const intentMappings = {
|
|
110
|
-
primary: {
|
|
111
|
-
palette: 'blue' as const,
|
|
112
|
-
main: 500 as const,
|
|
113
|
-
on: '#ffffff',
|
|
114
|
-
container: 100 as const,
|
|
115
|
-
onContainer: 800 as const,
|
|
116
|
-
light: 200 as const,
|
|
117
|
-
dark: 700 as const,
|
|
118
|
-
border: 300 as const,
|
|
119
|
-
},
|
|
120
|
-
|
|
121
|
-
success: {
|
|
122
|
-
palette: 'green' as const,
|
|
123
|
-
main: 500 as const,
|
|
124
|
-
on: '#ffffff',
|
|
125
|
-
container: 100 as const,
|
|
126
|
-
onContainer: 800 as const,
|
|
127
|
-
light: 200 as const,
|
|
128
|
-
dark: 700 as const,
|
|
129
|
-
border: 300 as const,
|
|
130
|
-
},
|
|
131
|
-
|
|
132
|
-
error: {
|
|
133
|
-
palette: 'red' as const,
|
|
134
|
-
main: 500 as const,
|
|
135
|
-
on: '#ffffff',
|
|
136
|
-
container: 100 as const,
|
|
137
|
-
onContainer: 800 as const,
|
|
138
|
-
light: 200 as const,
|
|
139
|
-
dark: 700 as const,
|
|
140
|
-
border: 300 as const,
|
|
141
|
-
},
|
|
142
|
-
|
|
143
|
-
warning: {
|
|
144
|
-
palette: 'amber' as const,
|
|
145
|
-
main: 500 as const,
|
|
146
|
-
on: '#ffffff',
|
|
147
|
-
container: 100 as const,
|
|
148
|
-
onContainer: 800 as const,
|
|
149
|
-
light: 200 as const,
|
|
150
|
-
dark: 700 as const,
|
|
151
|
-
border: 300 as const,
|
|
152
|
-
},
|
|
153
|
-
|
|
154
|
-
neutral: {
|
|
155
|
-
palette: 'gray' as const,
|
|
156
|
-
main: 500 as const,
|
|
157
|
-
on: '#ffffff',
|
|
158
|
-
container: 100 as const,
|
|
159
|
-
onContainer: 800 as const,
|
|
160
|
-
light: 200 as const,
|
|
161
|
-
dark: 700 as const,
|
|
162
|
-
border: 300 as const,
|
|
163
|
-
},
|
|
164
|
-
|
|
165
|
-
info: {
|
|
166
|
-
palette: 'cyan' as const,
|
|
167
|
-
main: 500 as const,
|
|
168
|
-
on: '#ffffff',
|
|
169
|
-
container: 100 as const,
|
|
170
|
-
onContainer: 800 as const,
|
|
171
|
-
light: 200 as const,
|
|
172
|
-
dark: 700 as const,
|
|
173
|
-
border: 300 as const,
|
|
174
|
-
},
|
|
175
|
-
} as const;
|
|
176
|
-
|
|
177
|
-
// Color system for display components (non-actionable)
|
|
178
|
-
export const colorMappings = {
|
|
179
|
-
// Text colors
|
|
180
|
-
text: {
|
|
181
|
-
primary: 'gray.900' as const,
|
|
182
|
-
secondary: 'gray.600' as const,
|
|
183
|
-
disabled: 'gray.400' as const,
|
|
184
|
-
inverse: '#ffffff',
|
|
185
|
-
},
|
|
186
|
-
|
|
187
|
-
// Surface colors
|
|
188
|
-
surface: {
|
|
189
|
-
primary: '#ffffff',
|
|
190
|
-
secondary: 'gray.50' as const,
|
|
191
|
-
tertiary: 'gray.100' as const,
|
|
192
|
-
inverse: 'gray.900' as const,
|
|
193
|
-
},
|
|
194
|
-
|
|
195
|
-
// Border colors
|
|
196
|
-
border: {
|
|
197
|
-
primary: 'gray.200' as const,
|
|
198
|
-
secondary: 'gray.300' as const,
|
|
199
|
-
focus: 'primary' as const, // References intent.primary.main
|
|
200
|
-
},
|
|
201
|
-
|
|
202
|
-
// Direct color references (for backward compatibility and special cases)
|
|
203
|
-
primary: 'primary' as const, // References intent.primary.main
|
|
204
|
-
success: 'success' as const, // References intent.success.main
|
|
205
|
-
error: 'error' as const, // References intent.error.main
|
|
206
|
-
warning: 'warning' as const, // References intent.warning.main
|
|
207
|
-
neutral: 'neutral' as const, // References intent.neutral.main
|
|
208
|
-
info: 'info' as const, // References intent.info.main
|
|
209
|
-
} as const;
|
|
210
|
-
|
|
211
|
-
// Dark theme overrides
|
|
212
|
-
export const darkThemeOverrides = {
|
|
213
|
-
colorMappings: {
|
|
214
|
-
text: {
|
|
215
|
-
primary: 'gray.50' as const,
|
|
216
|
-
secondary: 'gray.300' as const,
|
|
217
|
-
disabled: 'gray.500' as const,
|
|
218
|
-
inverse: 'gray.900' as const,
|
|
219
|
-
},
|
|
220
|
-
|
|
221
|
-
surface: {
|
|
222
|
-
primary: 'gray.900' as const,
|
|
223
|
-
secondary: 'gray.800' as const,
|
|
224
|
-
tertiary: 'gray.700' as const,
|
|
225
|
-
inverse: '#ffffff',
|
|
226
|
-
},
|
|
227
|
-
|
|
228
|
-
border: {
|
|
229
|
-
primary: 'gray.700' as const,
|
|
230
|
-
secondary: 'gray.600' as const,
|
|
231
|
-
focus: 'primary' as const,
|
|
232
|
-
},
|
|
233
|
-
},
|
|
234
|
-
|
|
235
|
-
// Dark theme intent adjustments
|
|
236
|
-
intentMappings: {
|
|
237
|
-
primary: {
|
|
238
|
-
palette: 'blue' as const,
|
|
239
|
-
main: 400 as const, // Lighter blue for dark theme
|
|
240
|
-
on: 'gray.900' as const, // Dark text on light blue
|
|
241
|
-
container: 900 as const, // Very dark blue container
|
|
242
|
-
onContainer: 100 as const, // Light text on dark container
|
|
243
|
-
light: 800 as const,
|
|
244
|
-
dark: 300 as const,
|
|
245
|
-
border: 400 as const,
|
|
246
|
-
},
|
|
247
|
-
|
|
248
|
-
success: {
|
|
249
|
-
palette: 'green' as const,
|
|
250
|
-
main: 400 as const,
|
|
251
|
-
on: 'gray.900' as const,
|
|
252
|
-
container: 900 as const,
|
|
253
|
-
onContainer: 100 as const,
|
|
254
|
-
light: 800 as const,
|
|
255
|
-
dark: 300 as const,
|
|
256
|
-
border: 400 as const,
|
|
257
|
-
},
|
|
258
|
-
|
|
259
|
-
error: {
|
|
260
|
-
palette: 'red' as const,
|
|
261
|
-
main: 400 as const,
|
|
262
|
-
on: 'gray.900' as const,
|
|
263
|
-
container: 900 as const,
|
|
264
|
-
onContainer: 100 as const,
|
|
265
|
-
light: 800 as const,
|
|
266
|
-
dark: 300 as const,
|
|
267
|
-
border: 400 as const,
|
|
268
|
-
},
|
|
269
|
-
|
|
270
|
-
warning: {
|
|
271
|
-
palette: 'amber' as const,
|
|
272
|
-
main: 400 as const,
|
|
273
|
-
on: 'gray.900' as const,
|
|
274
|
-
container: 900 as const,
|
|
275
|
-
onContainer: 100 as const,
|
|
276
|
-
light: 800 as const,
|
|
277
|
-
dark: 300 as const,
|
|
278
|
-
border: 400 as const,
|
|
279
|
-
},
|
|
280
|
-
|
|
281
|
-
neutral: {
|
|
282
|
-
palette: 'gray' as const,
|
|
283
|
-
main: 400 as const,
|
|
284
|
-
on: 'gray.900' as const,
|
|
285
|
-
container: 800 as const,
|
|
286
|
-
onContainer: 100 as const,
|
|
287
|
-
light: 700 as const,
|
|
288
|
-
dark: 300 as const,
|
|
289
|
-
border: 400 as const,
|
|
290
|
-
},
|
|
291
|
-
|
|
292
|
-
info: {
|
|
293
|
-
palette: 'cyan' as const,
|
|
294
|
-
main: 400 as const,
|
|
295
|
-
on: 'gray.900' as const,
|
|
296
|
-
container: 900 as const,
|
|
297
|
-
onContainer: 100 as const,
|
|
298
|
-
light: 800 as const,
|
|
299
|
-
dark: 300 as const,
|
|
300
|
-
border: 400 as const,
|
|
301
|
-
},
|
|
302
|
-
},
|
|
303
|
-
} as const;
|
|
304
|
-
|
|
305
|
-
// Import variant types
|
|
306
|
-
import type { IntentVariant, ColorVariant, ColorPaletteShade } from './variants';
|
|
307
|
-
|
|
308
|
-
// Export types for TypeScript
|
|
309
|
-
export type ColorPalette = keyof typeof colorPalettes;
|
|
310
|
-
export type ColorShade = keyof typeof colorPalettes.blue;
|
|
311
|
-
export type IntentName = keyof typeof intentMappings;
|
|
312
|
-
export type ColorName = keyof typeof colorMappings;
|
|
313
|
-
|
|
314
|
-
// Ensure our variant types match the actual data structures
|
|
315
|
-
export type { IntentVariant, ColorVariant, ColorPaletteShade };
|