@idealyst/components 1.0.83 → 1.0.84
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/CLAUDE.md +199 -232
- package/README.md +5 -5
- package/package.json +20 -2
- package/plugin/README.md +272 -0
- package/plugin/test-cases.jsx +112 -0
- package/plugin/web-legacy.js +320 -0
- package/plugin/web.js +422 -124
- package/src/Accordion/Accordion.native.tsx +182 -0
- package/src/Accordion/Accordion.styles.tsx +260 -0
- package/src/Accordion/Accordion.web.tsx +147 -0
- package/src/Accordion/index.native.tsx +3 -0
- package/src/Accordion/index.ts +3 -0
- package/src/Accordion/index.web.tsx +3 -0
- package/src/Accordion/types.ts +23 -0
- package/src/ActivityIndicator/ActivityIndicator.native.tsx +17 -12
- package/src/ActivityIndicator/ActivityIndicator.styles.tsx +83 -109
- package/src/ActivityIndicator/ActivityIndicator.web.tsx +23 -17
- package/src/ActivityIndicator/index.ts +5 -2
- package/src/ActivityIndicator/index.web.ts +5 -2
- package/src/ActivityIndicator/types.ts +15 -10
- package/src/Alert/Alert.native.tsx +113 -0
- package/src/Alert/Alert.styles.tsx +304 -0
- package/src/Alert/Alert.web.tsx +123 -0
- package/src/Alert/index.native.ts +5 -0
- package/src/Alert/index.ts +5 -0
- package/src/Alert/index.web.ts +5 -0
- package/src/Alert/types.ts +21 -0
- package/src/Avatar/Avatar.native.tsx +8 -6
- package/src/Avatar/Avatar.styles.tsx +64 -58
- package/src/Avatar/Avatar.web.tsx +13 -8
- package/src/Avatar/index.ts +5 -2
- package/src/Avatar/index.web.ts +5 -2
- package/src/Avatar/types.ts +19 -13
- package/src/Badge/Badge.native.tsx +59 -14
- package/src/Badge/Badge.styles.tsx +125 -139
- package/src/Badge/Badge.web.tsx +72 -16
- package/src/Badge/index.ts +5 -2
- package/src/Badge/index.web.ts +5 -2
- package/src/Badge/types.ts +23 -11
- package/src/Breadcrumb/Breadcrumb.native.tsx +225 -0
- package/src/Breadcrumb/Breadcrumb.styles.tsx +234 -0
- package/src/Breadcrumb/Breadcrumb.web.tsx +268 -0
- package/src/Breadcrumb/index.native.ts +5 -0
- package/src/Breadcrumb/index.ts +5 -0
- package/src/Breadcrumb/index.web.ts +5 -0
- package/src/Breadcrumb/types.ts +56 -0
- package/src/Button/Button.native.tsx +75 -24
- package/src/Button/Button.styles.tsx +248 -205
- package/src/Button/Button.web.tsx +82 -25
- package/src/Button/index.ts +5 -5
- package/src/Button/index.web.ts +5 -3
- package/src/Button/types.ts +32 -15
- package/src/Card/Card.native.tsx +14 -11
- package/src/Card/Card.styles.tsx +146 -220
- package/src/Card/Card.web.tsx +20 -21
- package/src/Card/index.ts +5 -5
- package/src/Card/index.web.ts +5 -3
- package/src/Card/types.ts +24 -17
- package/src/Checkbox/Checkbox.native.tsx +24 -34
- package/src/Checkbox/Checkbox.styles.tsx +223 -275
- package/src/Checkbox/Checkbox.web.tsx +30 -37
- package/src/Checkbox/index.ts +5 -5
- package/src/Checkbox/index.web.ts +5 -3
- package/src/Checkbox/types.ts +26 -20
- package/src/Chip/Chip.native.tsx +126 -0
- package/src/Chip/Chip.styles.tsx +138 -0
- package/src/Chip/Chip.web.tsx +154 -0
- package/src/Chip/index.native.ts +5 -0
- package/src/Chip/index.ts +5 -0
- package/src/Chip/index.web.ts +5 -0
- package/src/Chip/types.ts +51 -0
- package/src/Dialog/Dialog.native.tsx +65 -12
- package/src/Dialog/Dialog.styles.tsx +154 -136
- package/src/Dialog/Dialog.web.tsx +16 -11
- package/src/Dialog/index.ts +5 -2
- package/src/Dialog/index.web.ts +5 -2
- package/src/Dialog/types.ts +22 -16
- package/src/Divider/Divider.native.tsx +19 -14
- package/src/Divider/Divider.styles.tsx +273 -595
- package/src/Divider/Divider.web.tsx +19 -12
- package/src/Divider/index.ts +5 -5
- package/src/Divider/index.web.ts +5 -3
- package/src/Divider/types.ts +28 -19
- package/src/Icon/Icon.native.tsx +17 -24
- package/src/Icon/Icon.styles.tsx +64 -48
- package/src/Icon/Icon.web.tsx +14 -11
- package/src/Icon/IconSvg/IconSvg.native.tsx +42 -0
- package/src/Icon/IconSvg/IconSvg.web.tsx +40 -0
- package/src/Icon/IconSvg/index.native.ts +1 -0
- package/src/Icon/IconSvg/index.ts +1 -0
- package/src/Icon/icon-resolver.native.ts +27 -0
- package/src/Icon/icon-resolver.ts +70 -0
- package/src/Icon/index.ts +5 -5
- package/src/Icon/index.web.ts +5 -3
- package/src/Icon/types.ts +17 -11
- package/src/Image/Image.native.tsx +86 -0
- package/src/Image/Image.styles.tsx +57 -0
- package/src/Image/Image.web.tsx +92 -0
- package/src/Image/index.native.ts +5 -0
- package/src/Image/index.ts +5 -0
- package/src/Image/types.ts +21 -0
- package/src/Input/Input.native.tsx +103 -26
- package/src/Input/Input.styles.tsx +240 -177
- package/src/Input/Input.web.tsx +141 -38
- package/src/Input/index.ts +5 -5
- package/src/Input/index.web.ts +5 -3
- package/src/Input/types.ts +43 -20
- package/src/List/List.native.tsx +56 -0
- package/src/List/List.styles.tsx +257 -0
- package/src/List/List.web.tsx +43 -0
- package/src/List/ListContext.tsx +16 -0
- package/src/List/ListItem.native.tsx +111 -0
- package/src/List/ListItem.web.tsx +110 -0
- package/src/List/ListSection.native.tsx +31 -0
- package/src/List/ListSection.web.tsx +33 -0
- package/src/List/index.native.tsx +5 -0
- package/src/List/index.ts +5 -0
- package/src/List/index.web.tsx +5 -0
- package/src/List/types.ts +42 -0
- package/src/Menu/Menu.native.tsx +150 -0
- package/src/Menu/Menu.styles.tsx +185 -0
- package/src/Menu/Menu.web.tsx +99 -0
- package/src/Menu/MenuItem.native.tsx +66 -0
- package/src/Menu/MenuItem.styles.tsx +119 -0
- package/src/Menu/MenuItem.web.tsx +67 -0
- package/src/Menu/index.native.ts +3 -0
- package/src/Menu/index.ts +3 -0
- package/src/Menu/index.web.ts +3 -0
- package/src/Menu/types.ts +30 -0
- package/src/Popover/Popover.native.tsx +102 -32
- package/src/Popover/Popover.styles.tsx +100 -67
- package/src/Popover/Popover.web.tsx +36 -260
- package/src/Popover/index.ts +5 -2
- package/src/Popover/index.web.ts +5 -2
- package/src/Popover/types.ts +14 -13
- package/src/Pressable/Pressable.native.tsx +7 -6
- package/src/Pressable/Pressable.web.tsx +8 -6
- package/src/Pressable/index.ts +5 -2
- package/src/Pressable/index.web.ts +5 -2
- package/src/Pressable/types.ts +11 -10
- package/src/Progress/Progress.native.tsx +179 -0
- package/src/Progress/Progress.styles.tsx +164 -0
- package/src/Progress/Progress.web.tsx +144 -0
- package/src/Progress/index.native.ts +1 -0
- package/src/Progress/index.ts +5 -0
- package/src/Progress/index.web.ts +5 -0
- package/src/Progress/types.ts +21 -0
- package/src/RadioButton/RadioButton.native.tsx +88 -0
- package/src/RadioButton/RadioButton.styles.tsx +163 -0
- package/src/RadioButton/RadioButton.web.tsx +85 -0
- package/src/RadioButton/RadioGroup.native.tsx +43 -0
- package/src/RadioButton/RadioGroup.web.tsx +49 -0
- package/src/RadioButton/index.native.ts +2 -0
- package/src/RadioButton/index.ts +2 -0
- package/src/RadioButton/index.web.ts +2 -0
- package/src/RadioButton/types.ts +29 -0
- package/src/SVGImage/SVGImage.native.tsx +9 -7
- package/src/SVGImage/SVGImage.styles.tsx +63 -55
- package/src/SVGImage/SVGImage.web.tsx +16 -13
- package/src/SVGImage/index.ts +5 -5
- package/src/SVGImage/index.web.ts +5 -2
- package/src/SVGImage/types.ts +7 -3
- package/src/Screen/Screen.native.tsx +43 -17
- package/src/Screen/Screen.styles.tsx +58 -54
- package/src/Screen/Screen.web.tsx +11 -5
- package/src/Screen/index.ts +5 -2
- package/src/Screen/index.web.ts +5 -2
- package/src/Screen/types.ts +23 -9
- package/src/Select/Select.native.tsx +140 -63
- package/src/Select/Select.styles.tsx +312 -302
- package/src/Select/Select.web.tsx +156 -316
- package/src/Select/index.ts +5 -2
- package/src/Select/index.web.ts +5 -2
- package/src/Select/types.ts +13 -7
- package/src/Skeleton/Skeleton.native.tsx +139 -0
- package/src/Skeleton/Skeleton.styles.tsx +59 -0
- package/src/Skeleton/Skeleton.web.tsx +112 -0
- package/src/Skeleton/index.native.ts +4 -0
- package/src/Skeleton/index.ts +5 -0
- package/src/Skeleton/index.web.ts +5 -0
- package/src/Skeleton/types.ts +75 -0
- package/src/Slider/Slider.native.tsx +248 -0
- package/src/Slider/Slider.styles.tsx +241 -0
- package/src/Slider/Slider.web.tsx +226 -0
- package/src/Slider/index.native.ts +3 -0
- package/src/Slider/index.ts +5 -0
- package/src/Slider/index.web.ts +5 -0
- package/src/Slider/types.ts +31 -0
- package/src/Switch/Switch.native.tsx +131 -0
- package/src/Switch/Switch.styles.tsx +169 -0
- package/src/Switch/Switch.web.tsx +121 -0
- package/src/Switch/index.native.ts +3 -0
- package/src/Switch/index.ts +5 -0
- package/src/Switch/index.web.ts +5 -0
- package/src/Switch/types.ts +21 -0
- package/src/TabBar/TabBar.native.tsx +142 -0
- package/src/TabBar/TabBar.styles.tsx +399 -0
- package/src/TabBar/TabBar.web.tsx +205 -0
- package/src/TabBar/index.native.tsx +3 -0
- package/src/TabBar/index.ts +3 -0
- package/src/TabBar/index.web.tsx +3 -0
- package/src/TabBar/types.ts +26 -0
- package/src/Table/Table.native.tsx +122 -0
- package/src/Table/Table.styles.tsx +283 -0
- package/src/Table/Table.web.tsx +112 -0
- package/src/Table/index.native.tsx +3 -0
- package/src/Table/index.ts +3 -0
- package/src/Table/index.web.tsx +3 -0
- package/src/Table/types.ts +28 -0
- package/src/Text/Text.native.tsx +12 -11
- package/src/Text/Text.styles.tsx +76 -64
- package/src/Text/Text.web.tsx +14 -9
- package/src/Text/index.ts +5 -5
- package/src/Text/index.web.ts +5 -3
- package/src/Text/types.ts +20 -13
- package/src/TextArea/TextArea.native.tsx +134 -0
- package/src/TextArea/TextArea.styles.tsx +175 -0
- package/src/TextArea/TextArea.web.tsx +156 -0
- package/src/TextArea/index.native.ts +3 -0
- package/src/TextArea/index.ts +3 -0
- package/src/TextArea/index.web.ts +3 -0
- package/src/TextArea/types.ts +30 -0
- package/src/Tooltip/Tooltip.native.tsx +165 -0
- package/src/Tooltip/Tooltip.styles.tsx +73 -0
- package/src/Tooltip/Tooltip.web.tsx +87 -0
- package/src/Tooltip/index.native.ts +3 -0
- package/src/Tooltip/index.ts +3 -0
- package/src/Tooltip/types.ts +18 -0
- package/src/Video/Video.native.tsx +105 -0
- package/src/Video/Video.styles.tsx +39 -0
- package/src/Video/Video.web.tsx +115 -0
- package/src/Video/index.native.ts +5 -0
- package/src/Video/index.ts +5 -0
- package/src/Video/types.ts +29 -0
- package/src/View/View.native.tsx +9 -14
- package/src/View/View.styles.tsx +101 -93
- package/src/View/View.web.tsx +16 -17
- package/src/View/index.ts +5 -5
- package/src/View/index.web.ts +5 -3
- package/src/View/types.ts +29 -21
- package/src/examples/AccordionExamples.tsx +126 -0
- package/src/examples/AlertExamples.tsx +280 -0
- package/src/examples/AvatarExamples.tsx +23 -23
- package/src/examples/BadgeExamples.tsx +109 -41
- package/src/examples/BreadcrumbExamples.tsx +312 -0
- package/src/examples/ButtonExamples.tsx +160 -33
- package/src/examples/CardExamples.tsx +40 -40
- package/src/examples/CheckboxExamples.tsx +12 -12
- package/src/examples/ChipExamples.tsx +197 -0
- package/src/examples/DialogExamples.tsx +22 -22
- package/src/examples/DividerExamples.tsx +49 -49
- package/src/examples/IconExamples.tsx +270 -54
- package/src/examples/ImageExamples.tsx +174 -0
- package/src/examples/InputExamples.tsx +75 -17
- package/src/examples/ListExamples.tsx +288 -0
- package/src/examples/MenuExamples.tsx +144 -0
- package/src/examples/PopoverExamples.tsx +69 -73
- package/src/examples/ProgressExamples.tsx +137 -0
- package/src/examples/RadioButtonExamples.tsx +161 -0
- package/src/examples/SVGImageExamples.tsx +19 -17
- package/src/examples/ScreenExamples.tsx +31 -31
- package/src/examples/SelectExamples.tsx +67 -67
- package/src/examples/SkeletonExamples.tsx +206 -0
- package/src/examples/SliderExamples.tsx +200 -0
- package/src/examples/SwitchExamples.tsx +182 -0
- package/src/examples/TabBarExamples.tsx +143 -0
- package/src/examples/TableExamples.tsx +280 -0
- package/src/examples/TextAreaExamples.tsx +173 -0
- package/src/examples/TextExamples.tsx +28 -32
- package/src/examples/ThemeExtensionExamples.tsx +10 -10
- package/src/examples/TooltipExamples.tsx +126 -0
- package/src/examples/VideoExamples.tsx +144 -0
- package/src/examples/ViewExamples.tsx +64 -56
- package/src/examples/index.ts +17 -3
- package/src/hooks/useMergeRefs.ts +16 -0
- package/src/hooks/useSmartPosition.native.ts +169 -0
- package/src/index.native.ts +80 -9
- package/src/index.ts +71 -1
- package/src/internal/BoundedModalContent.native.tsx +58 -0
- package/src/internal/PositionedPortal.tsx +254 -0
- package/src/internal/SafeAreaDebugOverlay.native.tsx +173 -0
- package/src/unistyles.d.ts +6 -0
- package/src/utils/buildSizeVariants.ts +16 -0
- package/src/utils/deepMerge.ts +43 -0
- package/src/utils/positionUtils.native.ts +280 -0
- package/src/utils/styleHelpers.ts +48 -0
- package/LLM-ACCESS-GUIDE.md +0 -143
- package/src/ActivityIndicator/README.md +0 -132
- package/src/Avatar/README.md +0 -139
- package/src/Badge/README.md +0 -170
- package/src/Button/Button.types.ts +0 -12
- package/src/Button/README.md +0 -262
- package/src/Card/README.md +0 -258
- package/src/Checkbox/README.md +0 -102
- package/src/Dialog/README.md +0 -210
- package/src/Divider/README.md +0 -108
- package/src/Icon/README.md +0 -81
- package/src/Input/README.md +0 -100
- package/src/SVGImage/README.md +0 -209
- package/src/Screen/README.md +0 -86
- package/src/Select/README.md +0 -166
- package/src/Text/README.md +0 -94
- package/src/View/README.md +0 -107
- package/src/examples/AllExamples.tsx +0 -88
- package/src/examples/README.md +0 -136
- package/src/examples/ValidationExamples.tsx +0 -95
- package/src/examples/extendedTheme.ts +0 -329
- package/src/theme/breakpoints.ts +0 -8
- package/src/theme/colorResolver.ts +0 -218
- package/src/theme/colors.ts +0 -315
- package/src/theme/defaultThemes.ts +0 -326
- package/src/theme/index.ts +0 -188
- package/src/theme/themeBuilder.ts +0 -602
- package/src/theme/unistyles.d.ts +0 -6
- package/src/theme/variantHelpers.ts +0 -584
- package/src/theme/variants.ts +0 -56
|
@@ -1,329 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
createTheme,
|
|
3
|
-
type ThemeConfig,
|
|
4
|
-
createStandardPalettes,
|
|
5
|
-
createDarkPalettes,
|
|
6
|
-
createLightIntentMappings,
|
|
7
|
-
createDarkIntentMappings,
|
|
8
|
-
createLightColorMappings,
|
|
9
|
-
createDarkColorMappings
|
|
10
|
-
} from '@idealyst/theme';
|
|
11
|
-
|
|
12
|
-
// Extended color palettes - includes all base colors plus additional ones
|
|
13
|
-
export const extendedColorPalettes = {
|
|
14
|
-
// Include all base colors
|
|
15
|
-
...createStandardPalettes(),
|
|
16
|
-
|
|
17
|
-
// Add extended colors
|
|
18
|
-
orange: {
|
|
19
|
-
50: '#fff7ed',
|
|
20
|
-
100: '#ffedd5',
|
|
21
|
-
200: '#fed7aa',
|
|
22
|
-
300: '#fdba74',
|
|
23
|
-
400: '#fb923c',
|
|
24
|
-
500: '#f97316',
|
|
25
|
-
600: '#ea580c',
|
|
26
|
-
700: '#c2410c',
|
|
27
|
-
800: '#9a3412',
|
|
28
|
-
900: '#7c2d12',
|
|
29
|
-
},
|
|
30
|
-
|
|
31
|
-
teal: {
|
|
32
|
-
50: '#f0fdfa',
|
|
33
|
-
100: '#ccfbf1',
|
|
34
|
-
200: '#99f6e4',
|
|
35
|
-
300: '#5eead4',
|
|
36
|
-
400: '#2dd4bf',
|
|
37
|
-
500: '#14b8a6',
|
|
38
|
-
600: '#0d9488',
|
|
39
|
-
700: '#0f766e',
|
|
40
|
-
800: '#115e59',
|
|
41
|
-
900: '#134e4a',
|
|
42
|
-
},
|
|
43
|
-
|
|
44
|
-
indigo: {
|
|
45
|
-
50: '#eef2ff',
|
|
46
|
-
100: '#e0e7ff',
|
|
47
|
-
200: '#c7d2fe',
|
|
48
|
-
300: '#a5b4fc',
|
|
49
|
-
400: '#818cf8',
|
|
50
|
-
500: '#6366f1',
|
|
51
|
-
600: '#4f46e5',
|
|
52
|
-
700: '#4338ca',
|
|
53
|
-
800: '#3730a3',
|
|
54
|
-
900: '#312e81',
|
|
55
|
-
},
|
|
56
|
-
|
|
57
|
-
violet: {
|
|
58
|
-
50: '#faf5ff',
|
|
59
|
-
100: '#f3e8ff',
|
|
60
|
-
200: '#e9d5ff',
|
|
61
|
-
300: '#d8b4fe',
|
|
62
|
-
400: '#c084fc',
|
|
63
|
-
500: '#a855f7',
|
|
64
|
-
600: '#9333ea',
|
|
65
|
-
700: '#7c3aed',
|
|
66
|
-
800: '#6b21a8',
|
|
67
|
-
900: '#581c87',
|
|
68
|
-
},
|
|
69
|
-
|
|
70
|
-
emerald: {
|
|
71
|
-
50: '#ecfdf5',
|
|
72
|
-
100: '#d1fae5',
|
|
73
|
-
200: '#a7f3d0',
|
|
74
|
-
300: '#6ee7b7',
|
|
75
|
-
400: '#34d399',
|
|
76
|
-
500: '#10b981',
|
|
77
|
-
600: '#059669',
|
|
78
|
-
700: '#047857',
|
|
79
|
-
800: '#065f46',
|
|
80
|
-
900: '#064e3b',
|
|
81
|
-
},
|
|
82
|
-
} as const;
|
|
83
|
-
|
|
84
|
-
// Extended color palettes for dark mode
|
|
85
|
-
export const extendedDarkColorPalettes = {
|
|
86
|
-
// Include all base dark colors
|
|
87
|
-
...createDarkPalettes(),
|
|
88
|
-
|
|
89
|
-
// Add the same extended colors (they work well in both light and dark)
|
|
90
|
-
orange: extendedColorPalettes.orange,
|
|
91
|
-
teal: extendedColorPalettes.teal,
|
|
92
|
-
indigo: extendedColorPalettes.indigo,
|
|
93
|
-
violet: extendedColorPalettes.violet,
|
|
94
|
-
emerald: extendedColorPalettes.emerald,
|
|
95
|
-
} as const;
|
|
96
|
-
|
|
97
|
-
// Helper function to create extended light intents
|
|
98
|
-
function createExtendedLightIntents(palettes: typeof extendedColorPalettes) {
|
|
99
|
-
return {
|
|
100
|
-
// Include all base intents
|
|
101
|
-
...createLightIntentMappings(),
|
|
102
|
-
|
|
103
|
-
// Add extended intents with resolved colors
|
|
104
|
-
accent: {
|
|
105
|
-
main: palettes.orange[500],
|
|
106
|
-
on: '#ffffff',
|
|
107
|
-
container: palettes.orange[100],
|
|
108
|
-
onContainer: palettes.orange[800],
|
|
109
|
-
light: palettes.orange[200],
|
|
110
|
-
dark: palettes.orange[700],
|
|
111
|
-
border: palettes.orange[300],
|
|
112
|
-
},
|
|
113
|
-
|
|
114
|
-
feature: {
|
|
115
|
-
main: palettes.teal[500],
|
|
116
|
-
on: '#ffffff',
|
|
117
|
-
container: palettes.teal[100],
|
|
118
|
-
onContainer: palettes.teal[800],
|
|
119
|
-
light: palettes.teal[200],
|
|
120
|
-
dark: palettes.teal[700],
|
|
121
|
-
border: palettes.teal[300],
|
|
122
|
-
},
|
|
123
|
-
|
|
124
|
-
highlight: {
|
|
125
|
-
main: palettes.violet[500],
|
|
126
|
-
on: '#ffffff',
|
|
127
|
-
container: palettes.violet[100],
|
|
128
|
-
onContainer: palettes.violet[800],
|
|
129
|
-
light: palettes.violet[200],
|
|
130
|
-
dark: palettes.violet[700],
|
|
131
|
-
border: palettes.violet[300],
|
|
132
|
-
},
|
|
133
|
-
} as any; // Type assertion for extended intents
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
// Helper function to create extended dark intents
|
|
137
|
-
function createExtendedDarkIntents(palettes: typeof extendedDarkColorPalettes) {
|
|
138
|
-
return {
|
|
139
|
-
// Include all base intents
|
|
140
|
-
...createDarkIntentMappings(),
|
|
141
|
-
|
|
142
|
-
// Add extended intents with resolved colors
|
|
143
|
-
accent: {
|
|
144
|
-
main: palettes.orange[400],
|
|
145
|
-
on: palettes.gray[50],
|
|
146
|
-
container: palettes.orange[200],
|
|
147
|
-
onContainer: palettes.orange[800],
|
|
148
|
-
light: palettes.orange[300],
|
|
149
|
-
dark: palettes.orange[600],
|
|
150
|
-
border: palettes.orange[400],
|
|
151
|
-
},
|
|
152
|
-
|
|
153
|
-
feature: {
|
|
154
|
-
main: palettes.teal[400],
|
|
155
|
-
on: palettes.gray[50],
|
|
156
|
-
container: palettes.teal[200],
|
|
157
|
-
onContainer: palettes.teal[800],
|
|
158
|
-
light: palettes.teal[300],
|
|
159
|
-
dark: palettes.teal[600],
|
|
160
|
-
border: palettes.teal[400],
|
|
161
|
-
},
|
|
162
|
-
|
|
163
|
-
highlight: {
|
|
164
|
-
main: palettes.violet[400],
|
|
165
|
-
on: palettes.gray[50],
|
|
166
|
-
container: palettes.violet[200],
|
|
167
|
-
onContainer: palettes.violet[800],
|
|
168
|
-
light: palettes.violet[300],
|
|
169
|
-
dark: palettes.violet[600],
|
|
170
|
-
border: palettes.violet[400],
|
|
171
|
-
},
|
|
172
|
-
} as any; // Type assertion for extended intents
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
// Create extended themes using the new theme builder
|
|
176
|
-
export const extendedThemes = {
|
|
177
|
-
light: createTheme({
|
|
178
|
-
name: 'ExtendedLight',
|
|
179
|
-
mode: 'light',
|
|
180
|
-
palettes: extendedColorPalettes,
|
|
181
|
-
intents: createExtendedLightIntents(extendedColorPalettes),
|
|
182
|
-
colors: createLightColorMappings(),
|
|
183
|
-
|
|
184
|
-
typography: {
|
|
185
|
-
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
|
|
186
|
-
},
|
|
187
|
-
|
|
188
|
-
borderRadius: {
|
|
189
|
-
sm: 4,
|
|
190
|
-
md: 8,
|
|
191
|
-
lg: 12,
|
|
192
|
-
xl: 16,
|
|
193
|
-
xxl: 20,
|
|
194
|
-
},
|
|
195
|
-
|
|
196
|
-
spacing: {
|
|
197
|
-
xs: 4,
|
|
198
|
-
sm: 8,
|
|
199
|
-
md: 16,
|
|
200
|
-
lg: 24,
|
|
201
|
-
xl: 32,
|
|
202
|
-
xxl: 40,
|
|
203
|
-
xxxl: 48,
|
|
204
|
-
},
|
|
205
|
-
|
|
206
|
-
shadows: {
|
|
207
|
-
sm: {
|
|
208
|
-
shadowColor: '#000',
|
|
209
|
-
shadowOffset: { width: 0, height: 1 },
|
|
210
|
-
shadowOpacity: 0.05,
|
|
211
|
-
shadowRadius: 2,
|
|
212
|
-
elevation: 1,
|
|
213
|
-
},
|
|
214
|
-
md: {
|
|
215
|
-
shadowColor: '#000',
|
|
216
|
-
shadowOffset: { width: 0, height: 4 },
|
|
217
|
-
shadowOpacity: 0.1,
|
|
218
|
-
shadowRadius: 8,
|
|
219
|
-
elevation: 4,
|
|
220
|
-
},
|
|
221
|
-
lg: {
|
|
222
|
-
shadowColor: '#000',
|
|
223
|
-
shadowOffset: { width: 0, height: 8 },
|
|
224
|
-
shadowOpacity: 0.15,
|
|
225
|
-
shadowRadius: 16,
|
|
226
|
-
elevation: 8,
|
|
227
|
-
},
|
|
228
|
-
},
|
|
229
|
-
|
|
230
|
-
transitions: {
|
|
231
|
-
fast: '0.15s ease',
|
|
232
|
-
base: '0.2s ease',
|
|
233
|
-
slow: '0.3s ease',
|
|
234
|
-
button: 'all 0.2s ease',
|
|
235
|
-
fade: 'opacity 0.2s ease',
|
|
236
|
-
slide: 'transform 0.3s ease',
|
|
237
|
-
},
|
|
238
|
-
}),
|
|
239
|
-
|
|
240
|
-
dark: createTheme({
|
|
241
|
-
name: 'ExtendedDark',
|
|
242
|
-
mode: 'dark',
|
|
243
|
-
palettes: extendedDarkColorPalettes,
|
|
244
|
-
intents: createExtendedDarkIntents(extendedDarkColorPalettes),
|
|
245
|
-
colors: createDarkColorMappings(),
|
|
246
|
-
|
|
247
|
-
typography: {
|
|
248
|
-
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
|
|
249
|
-
},
|
|
250
|
-
|
|
251
|
-
borderRadius: {
|
|
252
|
-
sm: 4,
|
|
253
|
-
md: 8,
|
|
254
|
-
lg: 12,
|
|
255
|
-
xl: 16,
|
|
256
|
-
xxl: 20,
|
|
257
|
-
},
|
|
258
|
-
|
|
259
|
-
spacing: {
|
|
260
|
-
xs: 4,
|
|
261
|
-
sm: 8,
|
|
262
|
-
md: 16,
|
|
263
|
-
lg: 24,
|
|
264
|
-
xl: 32,
|
|
265
|
-
xxl: 40,
|
|
266
|
-
xxxl: 48,
|
|
267
|
-
},
|
|
268
|
-
|
|
269
|
-
shadows: {
|
|
270
|
-
sm: {
|
|
271
|
-
shadowColor: '#000',
|
|
272
|
-
shadowOffset: { width: 0, height: 1 },
|
|
273
|
-
shadowOpacity: 0.2,
|
|
274
|
-
shadowRadius: 2,
|
|
275
|
-
elevation: 1,
|
|
276
|
-
},
|
|
277
|
-
md: {
|
|
278
|
-
shadowColor: '#000',
|
|
279
|
-
shadowOffset: { width: 0, height: 4 },
|
|
280
|
-
shadowOpacity: 0.3,
|
|
281
|
-
shadowRadius: 8,
|
|
282
|
-
elevation: 4,
|
|
283
|
-
},
|
|
284
|
-
lg: {
|
|
285
|
-
shadowColor: '#000',
|
|
286
|
-
shadowOffset: { width: 0, height: 8 },
|
|
287
|
-
shadowOpacity: 0.4,
|
|
288
|
-
shadowRadius: 16,
|
|
289
|
-
elevation: 8,
|
|
290
|
-
},
|
|
291
|
-
},
|
|
292
|
-
|
|
293
|
-
transitions: {
|
|
294
|
-
fast: '0.15s ease',
|
|
295
|
-
base: '0.2s ease',
|
|
296
|
-
slow: '0.3s ease',
|
|
297
|
-
button: 'all 0.2s ease',
|
|
298
|
-
fade: 'opacity 0.2s ease',
|
|
299
|
-
slide: 'transform 0.3s ease',
|
|
300
|
-
},
|
|
301
|
-
}),
|
|
302
|
-
} as const;
|
|
303
|
-
|
|
304
|
-
// Extended type definitions for TypeScript
|
|
305
|
-
export type ExtendedColorVariant =
|
|
306
|
-
| 'blue'
|
|
307
|
-
| 'green'
|
|
308
|
-
| 'red'
|
|
309
|
-
| 'amber'
|
|
310
|
-
| 'gray'
|
|
311
|
-
| 'purple'
|
|
312
|
-
| 'pink'
|
|
313
|
-
| 'cyan'
|
|
314
|
-
| 'orange'
|
|
315
|
-
| 'teal'
|
|
316
|
-
| 'indigo'
|
|
317
|
-
| 'violet'
|
|
318
|
-
| 'emerald';
|
|
319
|
-
|
|
320
|
-
export type ExtendedIntentVariant =
|
|
321
|
-
| 'primary'
|
|
322
|
-
| 'success'
|
|
323
|
-
| 'error'
|
|
324
|
-
| 'warning'
|
|
325
|
-
| 'neutral'
|
|
326
|
-
| 'info'
|
|
327
|
-
| 'accent'
|
|
328
|
-
| 'feature'
|
|
329
|
-
| 'highlight';
|
package/src/theme/breakpoints.ts
DELETED
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
colorPalettes,
|
|
3
|
-
intentMappings,
|
|
4
|
-
colorMappings,
|
|
5
|
-
darkThemeOverrides,
|
|
6
|
-
type ColorPalette,
|
|
7
|
-
type ColorShade,
|
|
8
|
-
type IntentName,
|
|
9
|
-
type ColorName
|
|
10
|
-
} from './colors';
|
|
11
|
-
|
|
12
|
-
// Type for color references
|
|
13
|
-
export type ColorReference =
|
|
14
|
-
| string // Direct hex color like '#ffffff'
|
|
15
|
-
| `${ColorPalette}.${ColorShade}` // Palette reference like 'blue.500'
|
|
16
|
-
| IntentName // Intent reference like 'primary'
|
|
17
|
-
| `intent.${IntentName}.${keyof typeof intentMappings.primary}` // Intent property like 'intent.primary.main'
|
|
18
|
-
| `color.${ColorName}` // Color mapping like 'color.text.primary'
|
|
19
|
-
| keyof typeof colorMappings; // Direct color mapping like 'primary'
|
|
20
|
-
|
|
21
|
-
// Theme context for color resolution
|
|
22
|
-
export interface ThemeContext {
|
|
23
|
-
isDark: boolean;
|
|
24
|
-
colorPalettes: typeof colorPalettes;
|
|
25
|
-
intentMappings: any; // Use any to allow theme overrides
|
|
26
|
-
colorMappings: any; // Use any to allow theme overrides
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
// Create theme context
|
|
30
|
-
export function createThemeContext(isDark: boolean = false): ThemeContext {
|
|
31
|
-
const baseIntentMappings = isDark
|
|
32
|
-
? { ...intentMappings, ...darkThemeOverrides.intentMappings }
|
|
33
|
-
: intentMappings;
|
|
34
|
-
|
|
35
|
-
const baseColorMappings = isDark
|
|
36
|
-
? { ...colorMappings, ...darkThemeOverrides.colorMappings }
|
|
37
|
-
: colorMappings;
|
|
38
|
-
|
|
39
|
-
return {
|
|
40
|
-
isDark,
|
|
41
|
-
colorPalettes,
|
|
42
|
-
intentMappings: baseIntentMappings,
|
|
43
|
-
colorMappings: baseColorMappings,
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// Resolve a color reference to a hex color
|
|
48
|
-
export function resolveColor(
|
|
49
|
-
colorRef: ColorReference,
|
|
50
|
-
context: ThemeContext
|
|
51
|
-
): string {
|
|
52
|
-
// If it's already a hex color, return as is
|
|
53
|
-
if (typeof colorRef === 'string' && colorRef.startsWith('#')) {
|
|
54
|
-
return colorRef;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// Handle palette references like 'blue.500'
|
|
58
|
-
if (typeof colorRef === 'string' && colorRef.includes('.')) {
|
|
59
|
-
const [paletteOrCategory, property] = colorRef.split('.');
|
|
60
|
-
|
|
61
|
-
// Handle palette references
|
|
62
|
-
if (paletteOrCategory in context.colorPalettes) {
|
|
63
|
-
const palette = context.colorPalettes[paletteOrCategory as ColorPalette];
|
|
64
|
-
if (property in palette) {
|
|
65
|
-
return palette[property as unknown as ColorShade];
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
// Handle color mappings like 'text.primary'
|
|
70
|
-
if (paletteOrCategory in context.colorMappings) {
|
|
71
|
-
const colorCategory = context.colorMappings[paletteOrCategory as keyof typeof context.colorMappings];
|
|
72
|
-
if (typeof colorCategory === 'object' && property in colorCategory) {
|
|
73
|
-
const nestedRef = colorCategory[property as keyof typeof colorCategory];
|
|
74
|
-
return resolveColor(nestedRef as ColorReference, context);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
// Handle intent references like 'intent.primary.main'
|
|
80
|
-
if (typeof colorRef === 'string' && colorRef.startsWith('intent.')) {
|
|
81
|
-
const parts = colorRef.split('.');
|
|
82
|
-
if (parts.length === 3) {
|
|
83
|
-
const [, intentName, property] = parts;
|
|
84
|
-
return resolveIntentColor(
|
|
85
|
-
intentName as IntentName,
|
|
86
|
-
property as keyof typeof intentMappings.primary,
|
|
87
|
-
context
|
|
88
|
-
);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
// Handle color mappings like 'color.text.primary'
|
|
93
|
-
if (typeof colorRef === 'string' && colorRef.startsWith('color.')) {
|
|
94
|
-
const path = colorRef.substring(6); // Remove 'color.' prefix
|
|
95
|
-
const [category, property] = path.split('.');
|
|
96
|
-
|
|
97
|
-
if (category in context.colorMappings) {
|
|
98
|
-
const colorCategory = context.colorMappings[category as keyof typeof context.colorMappings];
|
|
99
|
-
if (typeof colorCategory === 'object' && property in colorCategory) {
|
|
100
|
-
const nestedRef = colorCategory[property as keyof typeof colorCategory];
|
|
101
|
-
return resolveColor(nestedRef as ColorReference, context);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
// Handle direct intent references like 'primary'
|
|
107
|
-
if (typeof colorRef === 'string' && colorRef in context.intentMappings) {
|
|
108
|
-
return resolveIntentColor(colorRef as IntentName, 'main', context);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
// Handle direct color mappings like 'primary' (when it's in colorMappings)
|
|
112
|
-
if (typeof colorRef === 'string' && colorRef in context.colorMappings) {
|
|
113
|
-
const mapping = context.colorMappings[colorRef as keyof typeof context.colorMappings];
|
|
114
|
-
return resolveColor(mapping as ColorReference, context);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// If we can't resolve it, return it as is (might be a CSS variable or other valid color)
|
|
118
|
-
console.warn(`Could not resolve color reference: ${colorRef}`);
|
|
119
|
-
return colorRef as string;
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
// Resolve a specific intent color property
|
|
123
|
-
export function resolveIntentColor(
|
|
124
|
-
intentName: IntentName,
|
|
125
|
-
property: keyof typeof intentMappings.primary,
|
|
126
|
-
context: ThemeContext
|
|
127
|
-
): string {
|
|
128
|
-
const intent = context.intentMappings[intentName];
|
|
129
|
-
if (!intent) {
|
|
130
|
-
console.warn(`Intent ${intentName} not found`);
|
|
131
|
-
return '#000000'; // Fallback color
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
const value = intent[property];
|
|
135
|
-
|
|
136
|
-
// Handle palette references
|
|
137
|
-
if (typeof value === 'number') {
|
|
138
|
-
const palette = context.colorPalettes[intent.palette];
|
|
139
|
-
const shade = value as ColorShade;
|
|
140
|
-
if (shade in palette) {
|
|
141
|
-
return palette[shade];
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
// Handle string references (like 'gray.900')
|
|
146
|
-
if (typeof value === 'string') {
|
|
147
|
-
return resolveColor(value, context);
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
// If we can't resolve it, return it as is
|
|
151
|
-
return value as string;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
// Helper function to get all colors for an intent
|
|
155
|
-
export function getIntentColors(intentName: IntentName, context: ThemeContext) {
|
|
156
|
-
const intent = context.intentMappings[intentName];
|
|
157
|
-
if (!intent) {
|
|
158
|
-
return {};
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
const colors: Record<string, string> = {};
|
|
162
|
-
|
|
163
|
-
// Resolve all properties of the intent
|
|
164
|
-
for (const [key, value] of Object.entries(intent)) {
|
|
165
|
-
if (key === 'palette') continue; // Skip the palette reference
|
|
166
|
-
|
|
167
|
-
colors[key] = resolveIntentColor(
|
|
168
|
-
intentName,
|
|
169
|
-
key as keyof typeof intentMappings.primary,
|
|
170
|
-
context
|
|
171
|
-
);
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
return colors;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
// Helper function to get all colors for a palette
|
|
178
|
-
export function getPaletteColors(paletteName: ColorPalette, context: ThemeContext) {
|
|
179
|
-
const palette = context.colorPalettes[paletteName];
|
|
180
|
-
if (!palette) {
|
|
181
|
-
return {};
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
return { ...palette };
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
// Helper function to validate color references
|
|
188
|
-
export function isValidColorReference(colorRef: string, context: ThemeContext): boolean {
|
|
189
|
-
try {
|
|
190
|
-
const resolved = resolveColor(colorRef as ColorReference, context);
|
|
191
|
-
return resolved !== colorRef || colorRef.startsWith('#');
|
|
192
|
-
} catch {
|
|
193
|
-
return false;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
// Helper function to get color with opacity
|
|
198
|
-
export function getColorWithOpacity(colorRef: ColorReference, opacity: number, context: ThemeContext): string {
|
|
199
|
-
const resolvedColor = resolveColor(colorRef, context);
|
|
200
|
-
|
|
201
|
-
// Convert hex to rgba
|
|
202
|
-
if (resolvedColor.startsWith('#')) {
|
|
203
|
-
const hex = resolvedColor.slice(1);
|
|
204
|
-
const r = parseInt(hex.slice(0, 2), 16);
|
|
205
|
-
const g = parseInt(hex.slice(2, 4), 16);
|
|
206
|
-
const b = parseInt(hex.slice(4, 6), 16);
|
|
207
|
-
|
|
208
|
-
return `rgba(${r}, ${g}, ${b}, ${opacity})`;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
// For non-hex colors, return as is with opacity warning
|
|
212
|
-
console.warn(`Cannot add opacity to non-hex color: ${resolvedColor}`);
|
|
213
|
-
return resolvedColor;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
// Export commonly used theme contexts
|
|
217
|
-
export const lightThemeContext = createThemeContext(false);
|
|
218
|
-
export const darkThemeContext = createThemeContext(true);
|