@opencosmos/ui 1.3.1

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 (260) hide show
  1. package/.claude/CLAUDE.md +239 -0
  2. package/README.md +161 -0
  3. package/dist/cli.mjs +151 -0
  4. package/dist/dates.d.mts +20 -0
  5. package/dist/dates.d.ts +20 -0
  6. package/dist/dates.js +240 -0
  7. package/dist/dates.js.map +1 -0
  8. package/dist/dates.mjs +203 -0
  9. package/dist/dates.mjs.map +1 -0
  10. package/dist/dnd.d.mts +126 -0
  11. package/dist/dnd.d.ts +126 -0
  12. package/dist/dnd.js +274 -0
  13. package/dist/dnd.js.map +1 -0
  14. package/dist/dnd.mjs +250 -0
  15. package/dist/dnd.mjs.map +1 -0
  16. package/dist/fontThemes-Dh8mtXES.d.mts +868 -0
  17. package/dist/fontThemes-Dh8mtXES.d.ts +868 -0
  18. package/dist/forms.d.mts +38 -0
  19. package/dist/forms.d.ts +38 -0
  20. package/dist/forms.js +198 -0
  21. package/dist/forms.js.map +1 -0
  22. package/dist/forms.mjs +159 -0
  23. package/dist/forms.mjs.map +1 -0
  24. package/dist/hooks-1b8WaQf1.d.mts +225 -0
  25. package/dist/hooks-CKW8vE9H.d.ts +225 -0
  26. package/dist/hooks.d.mts +3 -0
  27. package/dist/hooks.d.ts +3 -0
  28. package/dist/hooks.js +971 -0
  29. package/dist/hooks.js.map +1 -0
  30. package/dist/hooks.mjs +943 -0
  31. package/dist/hooks.mjs.map +1 -0
  32. package/dist/index-DscTIrZ2.d.mts +29 -0
  33. package/dist/index-DscTIrZ2.d.ts +29 -0
  34. package/dist/index.d.mts +3382 -0
  35. package/dist/index.d.ts +3382 -0
  36. package/dist/index.js +15146 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/index.mjs +14802 -0
  39. package/dist/index.mjs.map +1 -0
  40. package/dist/providers-CXPDMsl7.d.mts +30 -0
  41. package/dist/providers-Dn_Msjvz.d.ts +30 -0
  42. package/dist/providers.d.mts +3 -0
  43. package/dist/providers.d.ts +3 -0
  44. package/dist/providers.js +1885 -0
  45. package/dist/providers.js.map +1 -0
  46. package/dist/providers.mjs +1859 -0
  47. package/dist/providers.mjs.map +1 -0
  48. package/dist/tables.d.mts +10 -0
  49. package/dist/tables.d.ts +10 -0
  50. package/dist/tables.js +248 -0
  51. package/dist/tables.js.map +1 -0
  52. package/dist/tables.mjs +218 -0
  53. package/dist/tables.mjs.map +1 -0
  54. package/dist/tokens.d.mts +1065 -0
  55. package/dist/tokens.d.ts +1065 -0
  56. package/dist/tokens.js +2637 -0
  57. package/dist/tokens.js.map +1 -0
  58. package/dist/tokens.mjs +2555 -0
  59. package/dist/tokens.mjs.map +1 -0
  60. package/dist/utils-CIIM7dAC.d.ts +986 -0
  61. package/dist/utils-Cs04sxth.d.mts +986 -0
  62. package/dist/utils.d.mts +4 -0
  63. package/dist/utils.d.ts +4 -0
  64. package/dist/utils.js +874 -0
  65. package/dist/utils.js.map +1 -0
  66. package/dist/utils.mjs +806 -0
  67. package/dist/utils.mjs.map +1 -0
  68. package/dist/validation-Bj1ye-v_.d.mts +114 -0
  69. package/dist/validation-Bj1ye-v_.d.ts +114 -0
  70. package/dist/webgl.d.mts +104 -0
  71. package/dist/webgl.d.ts +104 -0
  72. package/dist/webgl.js +226 -0
  73. package/dist/webgl.js.map +1 -0
  74. package/dist/webgl.mjs +195 -0
  75. package/dist/webgl.mjs.map +1 -0
  76. package/package.json +267 -0
  77. package/src/cli.ts +206 -0
  78. package/src/component-registry.ts +183 -0
  79. package/src/components/actions/Button.test.tsx +61 -0
  80. package/src/components/actions/Button.tsx +70 -0
  81. package/src/components/actions/Link.tsx +78 -0
  82. package/src/components/actions/Magnetic.tsx +68 -0
  83. package/src/components/actions/Toggle.test.tsx +40 -0
  84. package/src/components/actions/Toggle.tsx +47 -0
  85. package/src/components/actions/ToggleGroup.tsx +70 -0
  86. package/src/components/actions/index.ts +5 -0
  87. package/src/components/backgrounds/FaultyTerminal.tsx +426 -0
  88. package/src/components/backgrounds/OrbBackground.tsx +424 -0
  89. package/src/components/backgrounds/WarpBackground.tsx +358 -0
  90. package/src/components/backgrounds/index.ts +3 -0
  91. package/src/components/blocks/Hero.tsx +142 -0
  92. package/src/components/blocks/social/OpenGraphCard.tsx +243 -0
  93. package/src/components/cursor/SplashCursor.tsx +1315 -0
  94. package/src/components/cursor/TargetCursor.tsx +187 -0
  95. package/src/components/cursor/index.ts +2 -0
  96. package/src/components/data-display/AspectImage.tsx +73 -0
  97. package/src/components/data-display/Avatar.test.tsx +35 -0
  98. package/src/components/data-display/Avatar.tsx +55 -0
  99. package/src/components/data-display/Badge.test.tsx +43 -0
  100. package/src/components/data-display/Badge.tsx +84 -0
  101. package/src/components/data-display/Brand.tsx +123 -0
  102. package/src/components/data-display/Calendar.tsx +70 -0
  103. package/src/components/data-display/Card.test.tsx +92 -0
  104. package/src/components/data-display/Card.tsx +115 -0
  105. package/src/components/data-display/Code.tsx +210 -0
  106. package/src/components/data-display/CollapsibleCodeBlock.tsx +238 -0
  107. package/src/components/data-display/DataTable.tsx +119 -0
  108. package/src/components/data-display/DescriptionList.tsx +41 -0
  109. package/src/components/data-display/GitHubIcon.tsx +44 -0
  110. package/src/components/data-display/Heading.test.tsx +36 -0
  111. package/src/components/data-display/Heading.tsx +83 -0
  112. package/src/components/data-display/StatCard.tsx +195 -0
  113. package/src/components/data-display/Table.tsx +133 -0
  114. package/src/components/data-display/Text.test.tsx +48 -0
  115. package/src/components/data-display/Text.tsx +144 -0
  116. package/src/components/data-display/Timeline.tsx +194 -0
  117. package/src/components/data-display/TreeView.tsx +226 -0
  118. package/src/components/data-display/Typewriter.tsx +119 -0
  119. package/src/components/data-display/VariableWeightText.tsx +130 -0
  120. package/src/components/data-display/index.ts +19 -0
  121. package/src/components/feedback/Alert.test.tsx +44 -0
  122. package/src/components/feedback/Alert.tsx +65 -0
  123. package/src/components/feedback/EmptyState.tsx +113 -0
  124. package/src/components/feedback/Progress.test.tsx +60 -0
  125. package/src/components/feedback/Progress.tsx +30 -0
  126. package/src/components/feedback/ProgressBar.tsx +158 -0
  127. package/src/components/feedback/Skeleton.test.tsx +39 -0
  128. package/src/components/feedback/Skeleton.tsx +45 -0
  129. package/src/components/feedback/Sonner.tsx +28 -0
  130. package/src/components/feedback/Spinner.test.tsx +33 -0
  131. package/src/components/feedback/Spinner.tsx +99 -0
  132. package/src/components/feedback/Stepper.tsx +307 -0
  133. package/src/components/feedback/Toast/Toast.tsx +243 -0
  134. package/src/components/feedback/Toast/index.ts +2 -0
  135. package/src/components/feedback/index.ts +9 -0
  136. package/src/components/forms/Checkbox.test.tsx +40 -0
  137. package/src/components/forms/Checkbox.tsx +31 -0
  138. package/src/components/forms/ColorPicker.tsx +118 -0
  139. package/src/components/forms/Combobox.tsx +96 -0
  140. package/src/components/forms/DragDrop.tsx +440 -0
  141. package/src/components/forms/FileUpload.tsx +252 -0
  142. package/src/components/forms/FilterButton.tsx +65 -0
  143. package/src/components/forms/Form.tsx +197 -0
  144. package/src/components/forms/Input.test.tsx +46 -0
  145. package/src/components/forms/Input.tsx +43 -0
  146. package/src/components/forms/InputOTP.tsx +81 -0
  147. package/src/components/forms/Label.test.tsx +20 -0
  148. package/src/components/forms/Label.tsx +25 -0
  149. package/src/components/forms/RadioGroup.tsx +51 -0
  150. package/src/components/forms/SearchBar.tsx +215 -0
  151. package/src/components/forms/Select.test.tsx +118 -0
  152. package/src/components/forms/Select.tsx +274 -0
  153. package/src/components/forms/Slider.tsx +29 -0
  154. package/src/components/forms/Switch.test.tsx +76 -0
  155. package/src/components/forms/Switch.tsx +30 -0
  156. package/src/components/forms/TextField.tsx +152 -0
  157. package/src/components/forms/Textarea.test.tsx +41 -0
  158. package/src/components/forms/Textarea.tsx +29 -0
  159. package/src/components/forms/ThemeSwitcher.tsx +290 -0
  160. package/src/components/forms/ThemeToggle.tsx +151 -0
  161. package/src/components/forms/index.ts +19 -0
  162. package/src/components/layout/Accordion.test.tsx +66 -0
  163. package/src/components/layout/Accordion.tsx +64 -0
  164. package/src/components/layout/AspectRatio.tsx +7 -0
  165. package/src/components/layout/Carousel.tsx +277 -0
  166. package/src/components/layout/Collapsible.test.tsx +40 -0
  167. package/src/components/layout/Collapsible.tsx +31 -0
  168. package/src/components/layout/Container.test.tsx +45 -0
  169. package/src/components/layout/Container.tsx +99 -0
  170. package/src/components/layout/CustomizerPanel.tsx +400 -0
  171. package/src/components/layout/DatePicker.tsx +57 -0
  172. package/src/components/layout/Footer/Footer.tsx +175 -0
  173. package/src/components/layout/Footer/index.ts +2 -0
  174. package/src/components/layout/GlassSurface.tsx +82 -0
  175. package/src/components/layout/Grid.test.tsx +31 -0
  176. package/src/components/layout/Grid.tsx +130 -0
  177. package/src/components/layout/Header/Header.tsx +450 -0
  178. package/src/components/layout/Header/index.ts +2 -0
  179. package/src/components/layout/PageLayout.tsx +180 -0
  180. package/src/components/layout/PageTemplate.tsx +158 -0
  181. package/src/components/layout/Resizable.tsx +48 -0
  182. package/src/components/layout/ScrollArea.tsx +53 -0
  183. package/src/components/layout/Separator.test.tsx +28 -0
  184. package/src/components/layout/Separator.tsx +29 -0
  185. package/src/components/layout/Sidebar.tsx +171 -0
  186. package/src/components/layout/Stack.test.tsx +41 -0
  187. package/src/components/layout/Stack.tsx +89 -0
  188. package/src/components/layout/glass-surface.css +60 -0
  189. package/src/components/layout/index.ts +18 -0
  190. package/src/components/motion/AnimatedBeam.tsx +159 -0
  191. package/src/components/navigation/Breadcrumb.test.tsx +57 -0
  192. package/src/components/navigation/Breadcrumb.tsx +119 -0
  193. package/src/components/navigation/Breadcrumbs.tsx +221 -0
  194. package/src/components/navigation/Command.tsx +159 -0
  195. package/src/components/navigation/Menubar.tsx +115 -0
  196. package/src/components/navigation/NavLink.tsx +55 -0
  197. package/src/components/navigation/NavigationMenu.tsx +125 -0
  198. package/src/components/navigation/Pagination.tsx +121 -0
  199. package/src/components/navigation/SecondaryNav.tsx +100 -0
  200. package/src/components/navigation/Tabs.test.tsx +47 -0
  201. package/src/components/navigation/Tabs.tsx +60 -0
  202. package/src/components/navigation/TertiaryNav.tsx +90 -0
  203. package/src/components/navigation/index.ts +10 -0
  204. package/src/components/overlays/AlertDialog.test.tsx +69 -0
  205. package/src/components/overlays/AlertDialog.tsx +166 -0
  206. package/src/components/overlays/ContextMenu.tsx +243 -0
  207. package/src/components/overlays/Dialog.test.tsx +79 -0
  208. package/src/components/overlays/Dialog.tsx +158 -0
  209. package/src/components/overlays/Drawer.tsx +128 -0
  210. package/src/components/overlays/Dropdown.tsx +253 -0
  211. package/src/components/overlays/DropdownMenu.tsx +242 -0
  212. package/src/components/overlays/HoverCard.tsx +32 -0
  213. package/src/components/overlays/Modal.tsx +250 -0
  214. package/src/components/overlays/NotificationCenter.tsx +364 -0
  215. package/src/components/overlays/Popover.test.tsx +40 -0
  216. package/src/components/overlays/Popover.tsx +46 -0
  217. package/src/components/overlays/Sheet.tsx +163 -0
  218. package/src/components/overlays/Tooltip.test.tsx +33 -0
  219. package/src/components/overlays/Tooltip.tsx +32 -0
  220. package/src/components/overlays/index.ts +12 -0
  221. package/src/dates.ts +2 -0
  222. package/src/dnd.ts +1 -0
  223. package/src/forms.ts +1 -0
  224. package/src/globals.css +187 -0
  225. package/src/hooks/index.ts +6 -0
  226. package/src/hooks/useForm.ts +247 -0
  227. package/src/hooks/useMotionPreference.test.ts +102 -0
  228. package/src/hooks/useMotionPreference.ts +78 -0
  229. package/src/hooks/useTheme.ts +58 -0
  230. package/src/hooks.ts +9 -0
  231. package/src/index.ts +168 -0
  232. package/src/lib/animations.ts +356 -0
  233. package/src/lib/breadcrumbs.ts +94 -0
  234. package/src/lib/colors.ts +493 -0
  235. package/src/lib/store/customizer.ts +482 -0
  236. package/src/lib/store/index.ts +3 -0
  237. package/src/lib/store/theme.ts +55 -0
  238. package/src/lib/syntax-parser/index.ts +50 -0
  239. package/src/lib/syntax-parser/patterns.ts +64 -0
  240. package/src/lib/syntax-parser/tokenizer.ts +117 -0
  241. package/src/lib/syntax-parser/types.ts +27 -0
  242. package/src/lib/utils.ts +6 -0
  243. package/src/lib/validation.ts +204 -0
  244. package/src/lib/webgl/Color.ts +11 -0
  245. package/src/lib/webgl/Mesh.ts +41 -0
  246. package/src/lib/webgl/Program.ts +118 -0
  247. package/src/lib/webgl/Renderer.ts +51 -0
  248. package/src/lib/webgl/Triangle.ts +27 -0
  249. package/src/lib/webgl/Vec3.ts +18 -0
  250. package/src/lib/webgl/index.ts +13 -0
  251. package/src/nativewind-env.d.ts +1 -0
  252. package/src/providers/ThemeProvider.tsx +461 -0
  253. package/src/providers/index.ts +1 -0
  254. package/src/providers.ts +7 -0
  255. package/src/tables.ts +1 -0
  256. package/src/test/setup.ts +39 -0
  257. package/src/theme.css +158 -0
  258. package/src/tokens.ts +7 -0
  259. package/src/utils.ts +12 -0
  260. package/src/webgl.ts +1 -0
@@ -0,0 +1,1065 @@
1
+ export { a as COLOR_MODES, C as ColorMode, P as PUBLIC_THEME_NAMES, b as PublicThemeName, c as THEME_NAMES, d as ThemeConfig, T as ThemeName } from './index-DscTIrZ2.mjs';
2
+ export { F as FontSize, a as FontTheme, b as FontThemeCategory, c as FontWeight, L as LetterSpacing, d as LineHeight, T as TypeLevel, e as TypePreset, f as TypographyScale, g as TypographyTheme, h as fontFamilies, i as fontLoadingConfig, j as fontSizes, k as fontThemes, l as fontWeights, m as generateScale, n as getAccessibleFontThemes, o as getFontThemeById, p as getFontThemesByCategory, q as getFontThemesByMood, r as getFontThemesForUseCase, s as getFontVariable, t as getResponsiveFontSize, u as getThemeFontVariables, v as letterSpacing, w as lineHeights, x as semanticLetterSpacing, y as semanticLineHeights, z as semanticSizes, A as semanticWeights, B as typePresets, C as typographySystem } from './fontThemes-Dh8mtXES.mjs';
3
+
4
+ /**
5
+ * Base Design Tokens
6
+ * Shared across all themes (spacing, typography scales, motion)
7
+ */
8
+ declare const baseTokens: {
9
+ /**
10
+ * Spacing scale (based on 4px grid)
11
+ */
12
+ readonly spacing: {
13
+ readonly '0': "0";
14
+ readonly '0.5': "0.125rem";
15
+ readonly '1': "0.25rem";
16
+ readonly '2': "0.5rem";
17
+ readonly '3': "0.75rem";
18
+ readonly '4': "1rem";
19
+ readonly '5': "1.25rem";
20
+ readonly '6': "1.5rem";
21
+ readonly '8': "2rem";
22
+ readonly '10': "2.5rem";
23
+ readonly '12': "3rem";
24
+ readonly '16': "4rem";
25
+ readonly '20': "5rem";
26
+ readonly '24': "6rem";
27
+ readonly '32': "8rem";
28
+ };
29
+ /**
30
+ * Typography scales
31
+ */
32
+ readonly fontSize: {
33
+ readonly xs: "0.75rem";
34
+ readonly sm: "0.875rem";
35
+ readonly base: "1rem";
36
+ readonly lg: "1.125rem";
37
+ readonly xl: "1.25rem";
38
+ readonly '2xl': "1.5rem";
39
+ readonly '3xl': "1.875rem";
40
+ readonly '4xl': "2.25rem";
41
+ readonly '5xl': "3rem";
42
+ readonly '6xl': "3.75rem";
43
+ readonly '7xl': "4.5rem";
44
+ readonly '8xl': "6rem";
45
+ };
46
+ readonly fontWeight: {
47
+ readonly light: "300";
48
+ readonly normal: "400";
49
+ readonly medium: "500";
50
+ readonly semibold: "600";
51
+ readonly bold: "700";
52
+ readonly extrabold: "800";
53
+ readonly black: "900";
54
+ };
55
+ readonly lineHeight: {
56
+ readonly none: "1";
57
+ readonly tight: "1.25";
58
+ readonly snug: "1.375";
59
+ readonly normal: "1.5";
60
+ readonly relaxed: "1.625";
61
+ readonly loose: "2";
62
+ };
63
+ /**
64
+ * Border radius
65
+ */
66
+ readonly borderRadius: {
67
+ readonly none: "0";
68
+ readonly sm: "0.125rem";
69
+ readonly DEFAULT: "0.25rem";
70
+ readonly md: "0.375rem";
71
+ readonly lg: "0.5rem";
72
+ readonly xl: "0.75rem";
73
+ readonly '2xl': "1rem";
74
+ readonly '3xl': "1.5rem";
75
+ readonly full: "9999px";
76
+ };
77
+ /**
78
+ * Motion durations (base values - themes can override)
79
+ */
80
+ readonly duration: {
81
+ readonly instant: "0ms";
82
+ readonly fast: "150ms";
83
+ readonly normal: "300ms";
84
+ readonly slow: "500ms";
85
+ readonly slower: "800ms";
86
+ };
87
+ /**
88
+ * Easing curves (base values - themes can override)
89
+ */
90
+ readonly ease: {
91
+ readonly linear: "linear";
92
+ readonly in: "cubic-bezier(0.4, 0, 1, 1)";
93
+ readonly out: "cubic-bezier(0, 0, 0.2, 1)";
94
+ readonly inOut: "cubic-bezier(0.4, 0, 0.2, 1)";
95
+ };
96
+ /**
97
+ * Z-index scale
98
+ */
99
+ readonly zIndex: {
100
+ readonly auto: "auto";
101
+ readonly '0': "0";
102
+ readonly '10': "10";
103
+ readonly '20': "20";
104
+ readonly '30': "30";
105
+ readonly '40': "40";
106
+ readonly '50': "50";
107
+ readonly dropdown: "1000";
108
+ readonly sticky: "1020";
109
+ readonly fixed: "1030";
110
+ readonly modalBackdrop: "1040";
111
+ readonly modal: "1050";
112
+ readonly popover: "1060";
113
+ readonly tooltip: "1070";
114
+ };
115
+ /**
116
+ * Focus ring configuration
117
+ */
118
+ readonly focus: {
119
+ readonly width: "2px";
120
+ readonly offset: "2px";
121
+ readonly style: "solid";
122
+ };
123
+ };
124
+ type BaseTokens = typeof baseTokens;
125
+ /**
126
+ * Semantic spacing aliases
127
+ * Provides human-readable names matching the README documentation
128
+ */
129
+ declare const spacing: {
130
+ readonly xs: "0.25rem";
131
+ readonly sm: "0.5rem";
132
+ readonly md: "1rem";
133
+ readonly lg: "1.5rem";
134
+ readonly xl: "2rem";
135
+ readonly '2xl': "3rem";
136
+ readonly '3xl': "4rem";
137
+ };
138
+ /**
139
+ * Semantic typography aliases
140
+ */
141
+ declare const typography: {
142
+ readonly fonts: {
143
+ readonly sans: "var(--font-body)";
144
+ readonly serif: "var(--font-heading)";
145
+ readonly mono: "var(--font-mono)";
146
+ };
147
+ readonly sizes: {
148
+ readonly xs: "0.75rem";
149
+ readonly sm: "0.875rem";
150
+ readonly base: "1rem";
151
+ readonly lg: "1.125rem";
152
+ readonly xl: "1.25rem";
153
+ readonly '2xl': "1.5rem";
154
+ readonly '3xl': "1.875rem";
155
+ };
156
+ readonly weights: {
157
+ readonly normal: "400";
158
+ readonly medium: "500";
159
+ readonly semibold: "600";
160
+ readonly bold: "700";
161
+ };
162
+ readonly leading: {
163
+ readonly tight: "1.25";
164
+ readonly normal: "1.5";
165
+ readonly relaxed: "1.625";
166
+ };
167
+ };
168
+ /**
169
+ * Motion configuration
170
+ */
171
+ declare const motion: {
172
+ readonly duration: {
173
+ readonly instant: "0ms";
174
+ readonly fast: "150ms";
175
+ readonly normal: "300ms";
176
+ readonly slow: "500ms";
177
+ readonly slower: "800ms";
178
+ };
179
+ readonly easing: {
180
+ readonly default: "cubic-bezier(0, 0, 0.2, 1)";
181
+ readonly spring: "cubic-bezier(0.16, 1, 0.3, 1)";
182
+ readonly linear: "linear";
183
+ };
184
+ };
185
+
186
+ /**
187
+ * Studio Theme Tokens
188
+ * Professional, polished, balanced design
189
+ * Inspiration: Framer, Vercel, Linear
190
+ */
191
+ declare const studioTokens: {
192
+ readonly light: {
193
+ readonly colors: {
194
+ readonly background: "#ffffff";
195
+ readonly backgroundSecondary: "#fafafa";
196
+ readonly backgroundTertiary: "#f5f5f5";
197
+ readonly foreground: "#0a0a0a";
198
+ readonly foregroundSecondary: "#525252";
199
+ readonly foregroundTertiary: "#a3a3a3";
200
+ readonly primary: "#0a0a0a";
201
+ readonly primaryForeground: "#ffffff";
202
+ readonly secondary: "#f5f5f5";
203
+ readonly secondaryForeground: "#0a0a0a";
204
+ readonly accent: "#0070f3";
205
+ readonly accentForeground: "#ffffff";
206
+ readonly border: "#d4d4d4";
207
+ readonly borderSubtle: "#f5f5f5";
208
+ readonly hover: "#fafafa";
209
+ readonly active: "#f0f0f0";
210
+ readonly linkHover: "#0a0a0a";
211
+ readonly linkHoverForeground: "#ffffff";
212
+ readonly success: "#00a86b";
213
+ readonly successForeground: "#ffffff";
214
+ readonly warning: "#f59e0b";
215
+ readonly warningForeground: "#ffffff";
216
+ readonly error: "#ef4444";
217
+ readonly errorForeground: "#ffffff";
218
+ readonly info: "#0070f3";
219
+ readonly infoForeground: "#ffffff";
220
+ readonly card: "#ffffff";
221
+ readonly cardForeground: "#0a0a0a";
222
+ readonly popover: "#ffffff";
223
+ readonly popoverForeground: "#0a0a0a";
224
+ readonly muted: "#f5f5f5";
225
+ readonly mutedForeground: "#737373";
226
+ readonly destructive: "#ef4444";
227
+ readonly destructiveForeground: "#ffffff";
228
+ readonly input: "#d4d4d4";
229
+ readonly ring: "#0a0a0a";
230
+ readonly surface: "#fafafa";
231
+ readonly glass: "rgba(255, 255, 255, 0.7)";
232
+ readonly glassBorder: "rgba(0, 0, 0, 0.1)";
233
+ };
234
+ readonly effects: {
235
+ readonly blur: {
236
+ readonly sm: "blur(4px)";
237
+ readonly md: "blur(8px)";
238
+ readonly lg: "blur(16px)";
239
+ readonly xl: "blur(24px)";
240
+ };
241
+ readonly shadow: {
242
+ readonly sm: "0 1px 2px 0 rgba(0, 0, 0, 0.05)";
243
+ readonly md: "0 4px 6px -1px rgba(0, 0, 0, 0.1)";
244
+ readonly lg: "0 10px 15px -3px rgba(0, 0, 0, 0.1)";
245
+ readonly xl: "0 20px 25px -5px rgba(0, 0, 0, 0.1)";
246
+ readonly '2xl': "0 25px 50px -12px rgba(0, 0, 0, 0.25)";
247
+ };
248
+ };
249
+ };
250
+ readonly dark: {
251
+ readonly colors: {
252
+ readonly background: "#000000";
253
+ readonly backgroundSecondary: "#171717";
254
+ readonly backgroundTertiary: "#262626";
255
+ readonly foreground: "#fafafa";
256
+ readonly foregroundSecondary: "#a3a3a3";
257
+ readonly foregroundTertiary: "#858585";
258
+ readonly primary: "#ffffff";
259
+ readonly primaryForeground: "#0a0a0a";
260
+ readonly secondary: "#262626";
261
+ readonly secondaryForeground: "#fafafa";
262
+ readonly accent: "#0090ff";
263
+ readonly accentForeground: "#ffffff";
264
+ readonly border: "#404040";
265
+ readonly borderSubtle: "#1a1a1a";
266
+ readonly hover: "#1a1a1a";
267
+ readonly active: "#262626";
268
+ readonly linkHover: "#ffffff";
269
+ readonly linkHoverForeground: "#0a0a0a";
270
+ readonly success: "#10b981";
271
+ readonly successForeground: "#ffffff";
272
+ readonly warning: "#f59e0b";
273
+ readonly warningForeground: "#ffffff";
274
+ readonly error: "#ef4444";
275
+ readonly errorForeground: "#ffffff";
276
+ readonly info: "#0090ff";
277
+ readonly infoForeground: "#ffffff";
278
+ readonly card: "#0a0a0a";
279
+ readonly cardForeground: "#fafafa";
280
+ readonly popover: "#0a0a0a";
281
+ readonly popoverForeground: "#fafafa";
282
+ readonly muted: "#262626";
283
+ readonly mutedForeground: "#a3a3a3";
284
+ readonly destructive: "#ef4444";
285
+ readonly destructiveForeground: "#ffffff";
286
+ readonly input: "#404040";
287
+ readonly ring: "#d4d4d4";
288
+ readonly surface: "#171717";
289
+ readonly glass: "rgba(0, 0, 0, 0.7)";
290
+ readonly glassBorder: "rgba(255, 255, 255, 0.1)";
291
+ };
292
+ readonly effects: {
293
+ readonly blur: {
294
+ readonly sm: "blur(4px)";
295
+ readonly md: "blur(8px)";
296
+ readonly lg: "blur(16px)";
297
+ readonly xl: "blur(24px)";
298
+ };
299
+ readonly shadow: {
300
+ readonly sm: "0 1px 2px 0 rgba(0, 0, 0, 0.3)";
301
+ readonly md: "0 4px 6px -1px rgba(0, 0, 0, 0.5)";
302
+ readonly lg: "0 10px 15px -3px rgba(0, 0, 0, 0.6)";
303
+ readonly xl: "0 20px 25px -5px rgba(0, 0, 0, 0.7)";
304
+ readonly '2xl': "0 25px 50px -12px rgba(0, 0, 0, 0.8)";
305
+ };
306
+ };
307
+ };
308
+ /**
309
+ * Motion personality for Studio theme
310
+ */
311
+ readonly motion: {
312
+ readonly getDuration: (intensity: number) => string;
313
+ readonly ease: {
314
+ readonly default: "cubic-bezier(0.4, 0, 0.2, 1)";
315
+ readonly in: "cubic-bezier(0.4, 0, 1, 1)";
316
+ readonly out: "cubic-bezier(0, 0, 0.2, 1)";
317
+ readonly spring: "cubic-bezier(0.16, 1, 0.3, 1)";
318
+ };
319
+ };
320
+ /**
321
+ * Interaction tokens for Studio theme
322
+ * Subtle, professional — minimal overlay, gentle scale
323
+ */
324
+ readonly interactions: {
325
+ readonly hover: {
326
+ readonly overlayColor: {
327
+ readonly light: "#000000";
328
+ readonly dark: "#ffffff";
329
+ };
330
+ readonly opacity: 0.06;
331
+ };
332
+ readonly active: {
333
+ readonly scale: 0.98;
334
+ };
335
+ readonly focus: {
336
+ readonly ringWidth: "2px";
337
+ readonly ringOffset: "2px";
338
+ };
339
+ readonly disabled: {
340
+ readonly opacity: 0.5;
341
+ };
342
+ };
343
+ readonly typography: {
344
+ readonly heading: {
345
+ readonly fontFamily: "var(--font-geist-sans)";
346
+ readonly fontWeight: "600";
347
+ readonly letterSpacing: "-0.02em";
348
+ };
349
+ readonly body: {
350
+ readonly fontFamily: "var(--font-geist-sans)";
351
+ readonly fontWeight: "400";
352
+ readonly letterSpacing: "0";
353
+ };
354
+ readonly mono: {
355
+ readonly fontFamily: "var(--font-geist-mono)";
356
+ readonly fontWeight: "400";
357
+ readonly letterSpacing: "0";
358
+ };
359
+ };
360
+ };
361
+ type StudioTheme = typeof studioTokens;
362
+
363
+ /**
364
+ * Terra Theme Tokens
365
+ * Calm, organic, feminine/yin design
366
+ * Muted earth tones, flowing animations
367
+ */
368
+ declare const terraTokens: {
369
+ readonly light: {
370
+ readonly colors: {
371
+ readonly background: "#faf8f5";
372
+ readonly backgroundSecondary: "#f5f1eb";
373
+ readonly backgroundTertiary: "#ede8e0";
374
+ readonly foreground: "#2d2823";
375
+ readonly foregroundSecondary: "#5a524a";
376
+ readonly foregroundTertiary: "#8a7f72";
377
+ readonly primary: "#7a9b7f";
378
+ readonly primaryForeground: "#faf8f5";
379
+ readonly primaryHover: "#6a8b6f";
380
+ readonly secondary: "#ede8e0";
381
+ readonly secondaryForeground: "#2d2823";
382
+ readonly accent: "#c17a5f";
383
+ readonly accentForeground: "#faf8f5";
384
+ readonly accentHover: "#b16a4f";
385
+ readonly success: "#6b8e6f";
386
+ readonly successForeground: "#faf8f5";
387
+ readonly warning: "#d4a574";
388
+ readonly warningForeground: "#2d2823";
389
+ readonly error: "#c17a5f";
390
+ readonly errorForeground: "#faf8f5";
391
+ readonly info: "#8b9dc3";
392
+ readonly infoForeground: "#faf8f5";
393
+ readonly border: "#e0d8cf";
394
+ readonly borderSubtle: "#ede8e0";
395
+ readonly hover: "#f5f1eb";
396
+ readonly active: "#ede8e0";
397
+ readonly linkHover: "#7a9b7f";
398
+ readonly linkHoverForeground: "#faf8f5";
399
+ readonly glass: "rgba(250, 248, 245, 0.85)";
400
+ readonly glassBorder: "rgba(122, 155, 127, 0.15)";
401
+ };
402
+ readonly effects: {
403
+ readonly blur: {
404
+ readonly sm: "blur(6px)";
405
+ readonly md: "blur(12px)";
406
+ readonly lg: "blur(20px)";
407
+ readonly xl: "blur(32px)";
408
+ };
409
+ readonly shadow: {
410
+ readonly sm: "0 2px 4px 0 rgba(45, 40, 35, 0.06)";
411
+ readonly md: "0 4px 8px -2px rgba(45, 40, 35, 0.08)";
412
+ readonly lg: "0 8px 16px -4px rgba(45, 40, 35, 0.12)";
413
+ readonly xl: "0 16px 32px -8px rgba(45, 40, 35, 0.16)";
414
+ readonly '2xl': "0 24px 48px -12px rgba(45, 40, 35, 0.20)";
415
+ };
416
+ };
417
+ };
418
+ readonly dark: {
419
+ readonly colors: {
420
+ readonly background: "#1a1614";
421
+ readonly backgroundSecondary: "#252220";
422
+ readonly backgroundTertiary: "#2f2b28";
423
+ readonly foreground: "#f5f1eb";
424
+ readonly foregroundSecondary: "#c7bfb5";
425
+ readonly foregroundTertiary: "#8a7f72";
426
+ readonly primary: "#a8c5ad";
427
+ readonly primaryForeground: "#1a1614";
428
+ readonly primaryHover: "#b8d5bd";
429
+ readonly secondary: "#2f2b28";
430
+ readonly secondaryForeground: "#f5f1eb";
431
+ readonly accent: "#e5a78a";
432
+ readonly accentForeground: "#1a1614";
433
+ readonly accentHover: "#f5b79a";
434
+ readonly success: "#95b89a";
435
+ readonly successForeground: "#1a1614";
436
+ readonly warning: "#e5c59a";
437
+ readonly warningForeground: "#1a1614";
438
+ readonly error: "#e5a78a";
439
+ readonly errorForeground: "#1a1614";
440
+ readonly info: "#a8b5d5";
441
+ readonly infoForeground: "#1a1614";
442
+ readonly border: "#3a3530";
443
+ readonly borderSubtle: "#2f2b28";
444
+ readonly hover: "#252220";
445
+ readonly active: "#2f2b28";
446
+ readonly linkHover: "#a8c5ad";
447
+ readonly linkHoverForeground: "#1a1614";
448
+ readonly glass: "rgba(26, 22, 20, 0.85)";
449
+ readonly glassBorder: "rgba(168, 197, 173, 0.2)";
450
+ };
451
+ readonly effects: {
452
+ readonly blur: {
453
+ readonly sm: "blur(6px)";
454
+ readonly md: "blur(12px)";
455
+ readonly lg: "blur(20px)";
456
+ readonly xl: "blur(32px)";
457
+ };
458
+ readonly shadow: {
459
+ readonly sm: "0 2px 4px 0 rgba(0, 0, 0, 0.3)";
460
+ readonly md: "0 4px 8px -2px rgba(0, 0, 0, 0.4)";
461
+ readonly lg: "0 8px 16px -4px rgba(0, 0, 0, 0.5)";
462
+ readonly xl: "0 16px 32px -8px rgba(0, 0, 0, 0.6)";
463
+ readonly '2xl': "0 24px 48px -12px rgba(0, 0, 0, 0.7)";
464
+ };
465
+ };
466
+ };
467
+ readonly motion: {
468
+ readonly getDuration: (intensity: number) => string;
469
+ readonly ease: {
470
+ readonly default: "cubic-bezier(0.33, 1, 0.68, 1)";
471
+ readonly in: "cubic-bezier(0.4, 0, 1, 1)";
472
+ readonly out: "cubic-bezier(0, 0, 0.2, 1)";
473
+ readonly spring: "cubic-bezier(0.16, 1, 0.3, 1)";
474
+ };
475
+ };
476
+ /**
477
+ * Interaction tokens for Terra theme
478
+ * Warm, organic — earthy overlay tones, softer scale
479
+ */
480
+ readonly interactions: {
481
+ readonly hover: {
482
+ readonly overlayColor: {
483
+ readonly light: "#2d2823";
484
+ readonly dark: "#f5f1eb";
485
+ };
486
+ readonly opacity: 0.07;
487
+ };
488
+ readonly active: {
489
+ readonly scale: 0.97;
490
+ };
491
+ readonly focus: {
492
+ readonly ringWidth: "2px";
493
+ readonly ringOffset: "2px";
494
+ };
495
+ readonly disabled: {
496
+ readonly opacity: 0.5;
497
+ };
498
+ };
499
+ readonly typography: {
500
+ readonly heading: {
501
+ readonly fontFamily: "var(--font-terra-serif)";
502
+ readonly fontWeight: "600";
503
+ readonly letterSpacing: "-0.01em";
504
+ };
505
+ readonly body: {
506
+ readonly fontFamily: "var(--font-terra-sans)";
507
+ readonly fontWeight: "400";
508
+ readonly letterSpacing: "0";
509
+ };
510
+ readonly mono: {
511
+ readonly fontFamily: "var(--font-terra-mono)";
512
+ readonly fontWeight: "400";
513
+ readonly letterSpacing: "0";
514
+ };
515
+ };
516
+ };
517
+ type TerraTheme = typeof terraTokens;
518
+
519
+ /**
520
+ * Volt Theme Tokens
521
+ * Bold, electric, masculine/yang design
522
+ * High-chroma colors, dynamic animations, cyberpunk aesthetic
523
+ */
524
+ declare const voltTokens: {
525
+ readonly light: {
526
+ readonly colors: {
527
+ readonly background: "#ffffff";
528
+ readonly backgroundSecondary: "#f8f9fb";
529
+ readonly backgroundTertiary: "#f0f2f5";
530
+ readonly foreground: "#0a0a0a";
531
+ readonly foregroundSecondary: "#4a4a4a";
532
+ readonly foregroundTertiary: "#8a8a8a";
533
+ readonly primary: "#0066ff";
534
+ readonly primaryForeground: "#ffffff";
535
+ readonly primaryHover: "#0052cc";
536
+ readonly secondary: "#f0f2f5";
537
+ readonly secondaryForeground: "#0a0a0a";
538
+ readonly accent: "#00d9ff";
539
+ readonly accentForeground: "#0a0a0a";
540
+ readonly accentHover: "#00c3e6";
541
+ readonly success: "#00cc66";
542
+ readonly successForeground: "#ffffff";
543
+ readonly warning: "#ffaa00";
544
+ readonly warningForeground: "#0a0a0a";
545
+ readonly error: "#ff3366";
546
+ readonly errorForeground: "#ffffff";
547
+ readonly info: "#3399ff";
548
+ readonly infoForeground: "#ffffff";
549
+ readonly border: "#e0e4ea";
550
+ readonly borderSubtle: "#f0f2f5";
551
+ readonly hover: "#f8f9fb";
552
+ readonly active: "#f0f2f5";
553
+ readonly linkHover: "#0066ff";
554
+ readonly linkHoverForeground: "#ffffff";
555
+ readonly glass: "rgba(255, 255, 255, 0.8)";
556
+ readonly glassBorder: "rgba(0, 102, 255, 0.2)";
557
+ };
558
+ readonly effects: {
559
+ readonly blur: {
560
+ readonly sm: "blur(8px)";
561
+ readonly md: "blur(16px)";
562
+ readonly lg: "blur(32px)";
563
+ readonly xl: "blur(48px)";
564
+ };
565
+ readonly shadow: {
566
+ readonly sm: "0 0 8px rgba(0, 102, 255, 0.15)";
567
+ readonly md: "0 0 16px rgba(0, 102, 255, 0.2)";
568
+ readonly lg: "0 0 24px rgba(0, 102, 255, 0.25)";
569
+ readonly xl: "0 0 32px rgba(0, 102, 255, 0.3)";
570
+ readonly '2xl': "0 0 48px rgba(0, 102, 255, 0.4)";
571
+ };
572
+ };
573
+ };
574
+ readonly dark: {
575
+ readonly colors: {
576
+ readonly background: "#000000";
577
+ readonly backgroundSecondary: "#0a0a0a";
578
+ readonly backgroundTertiary: "#141414";
579
+ readonly foreground: "#ffffff";
580
+ readonly foregroundSecondary: "#b3b3b3";
581
+ readonly foregroundTertiary: "#666666";
582
+ readonly primary: "#0099ff";
583
+ readonly primaryForeground: "#000000";
584
+ readonly primaryHover: "#00aaff";
585
+ readonly secondary: "#141414";
586
+ readonly secondaryForeground: "#ffffff";
587
+ readonly accent: "#00ffff";
588
+ readonly accentForeground: "#000000";
589
+ readonly accentHover: "#33ffff";
590
+ readonly success: "#00ff99";
591
+ readonly successForeground: "#000000";
592
+ readonly warning: "#ffcc00";
593
+ readonly warningForeground: "#000000";
594
+ readonly error: "#ff0066";
595
+ readonly errorForeground: "#ffffff";
596
+ readonly info: "#66ccff";
597
+ readonly infoForeground: "#000000";
598
+ readonly border: "#1a1a1a";
599
+ readonly borderSubtle: "#141414";
600
+ readonly hover: "#0a0a0a";
601
+ readonly active: "#141414";
602
+ readonly linkHover: "#00ffff";
603
+ readonly linkHoverForeground: "#000000";
604
+ readonly glass: "rgba(0, 0, 0, 0.8)";
605
+ readonly glassBorder: "rgba(0, 153, 255, 0.3)";
606
+ };
607
+ readonly effects: {
608
+ readonly blur: {
609
+ readonly sm: "blur(8px)";
610
+ readonly md: "blur(16px)";
611
+ readonly lg: "blur(32px)";
612
+ readonly xl: "blur(48px)";
613
+ };
614
+ readonly shadow: {
615
+ readonly sm: "0 0 12px rgba(0, 153, 255, 0.4)";
616
+ readonly md: "0 0 20px rgba(0, 153, 255, 0.5)";
617
+ readonly lg: "0 0 32px rgba(0, 153, 255, 0.6)";
618
+ readonly xl: "0 0 48px rgba(0, 153, 255, 0.7)";
619
+ readonly '2xl': "0 0 64px rgba(0, 153, 255, 0.8)";
620
+ };
621
+ };
622
+ };
623
+ readonly motion: {
624
+ readonly getDuration: (intensity: number) => string;
625
+ readonly ease: {
626
+ readonly default: "cubic-bezier(0.16, 1, 0.3, 1)";
627
+ readonly in: "cubic-bezier(0.4, 0, 1, 1)";
628
+ readonly out: "cubic-bezier(0, 0, 0.2, 1)";
629
+ readonly spring: "cubic-bezier(0.68, -0.55, 0.27, 1.55)";
630
+ };
631
+ };
632
+ /**
633
+ * Interaction tokens for Volt theme
634
+ * Electric, brand-tinted — blue overlay, punchy scale
635
+ */
636
+ readonly interactions: {
637
+ readonly hover: {
638
+ readonly overlayColor: {
639
+ readonly light: "#0066ff";
640
+ readonly dark: "#0099ff";
641
+ };
642
+ readonly opacity: 0.1;
643
+ };
644
+ readonly active: {
645
+ readonly scale: 0.96;
646
+ };
647
+ readonly focus: {
648
+ readonly ringWidth: "2px";
649
+ readonly ringOffset: "2px";
650
+ };
651
+ readonly disabled: {
652
+ readonly opacity: 0.5;
653
+ };
654
+ };
655
+ readonly typography: {
656
+ readonly heading: {
657
+ readonly fontFamily: "var(--font-volt-sans)";
658
+ readonly fontWeight: "700";
659
+ readonly letterSpacing: "-0.03em";
660
+ };
661
+ readonly body: {
662
+ readonly fontFamily: "var(--font-volt-sans)";
663
+ readonly fontWeight: "400";
664
+ readonly letterSpacing: "0";
665
+ };
666
+ readonly mono: {
667
+ readonly fontFamily: "var(--font-volt-mono)";
668
+ readonly fontWeight: "400";
669
+ readonly letterSpacing: "0";
670
+ };
671
+ };
672
+ };
673
+ type VoltTheme = typeof voltTokens;
674
+
675
+ /**
676
+ * Speedboat Theme Tokens
677
+ * Moloco Speedboat V2 design language
678
+ * Extracted from Figma (Speedboat V2) via design-code-play/frontend/src/theme.ts
679
+ *
680
+ * Colors: Blue-accented professional palette with Roboto + Montserrat typography
681
+ * Accent: #346BEA (Core/Blue500-Accent)
682
+ */
683
+ declare const speedboatTokens: {
684
+ readonly light: {
685
+ readonly colors: {
686
+ readonly background: "#FFFFFF";
687
+ readonly backgroundSecondary: "#F8F8F8";
688
+ readonly backgroundTertiary: "#ECECEC";
689
+ readonly foreground: "#212121";
690
+ readonly foregroundSecondary: "#5D5D5D";
691
+ readonly foregroundTertiary: "#8891A7";
692
+ readonly primary: "#346BEA";
693
+ readonly primaryForeground: "#FFFFFF";
694
+ readonly secondary: "#EBF0FD";
695
+ readonly secondaryForeground: "#1E49AA";
696
+ readonly accent: "#346BEA";
697
+ readonly accentForeground: "#FFFFFF";
698
+ readonly border: "#ECECEC";
699
+ readonly borderSubtle: "#F8F8F8";
700
+ readonly hover: "#F8F8F8";
701
+ readonly active: "#ECECEC";
702
+ readonly linkHover: "#1E49AA";
703
+ readonly linkHoverForeground: "#FFFFFF";
704
+ readonly success: "#2E7D32";
705
+ readonly successForeground: "#FFFFFF";
706
+ readonly warning: "#E65100";
707
+ readonly warningForeground: "#FFFFFF";
708
+ readonly error: "#C62828";
709
+ readonly errorForeground: "#FFFFFF";
710
+ readonly info: "#346BEA";
711
+ readonly infoForeground: "#FFFFFF";
712
+ readonly card: "#FFFFFF";
713
+ readonly cardForeground: "#212121";
714
+ readonly popover: "#FFFFFF";
715
+ readonly popoverForeground: "#212121";
716
+ readonly muted: "#F8F8F8";
717
+ readonly mutedForeground: "#8891A7";
718
+ readonly destructive: "#C62828";
719
+ readonly destructiveForeground: "#FFFFFF";
720
+ readonly input: "#DFDFDF";
721
+ readonly ring: "#346BEA";
722
+ readonly surface: "#F8F8F8";
723
+ readonly glass: "rgba(255, 255, 255, 0.85)";
724
+ readonly glassBorder: "rgba(0, 0, 0, 0.08)";
725
+ };
726
+ readonly effects: {
727
+ readonly blur: {
728
+ readonly sm: "blur(4px)";
729
+ readonly md: "blur(8px)";
730
+ readonly lg: "blur(16px)";
731
+ readonly xl: "blur(24px)";
732
+ };
733
+ readonly shadow: {
734
+ readonly sm: "0 1px 2px rgba(0, 0, 0, 0.05)";
735
+ readonly md: "0 2px 8px rgba(0, 0, 0, 0.08)";
736
+ readonly lg: "0 4px 16px rgba(0, 0, 0, 0.10)";
737
+ readonly xl: "0 8px 24px rgba(0, 0, 0, 0.12)";
738
+ readonly '2xl': "0 16px 48px rgba(0, 0, 0, 0.16)";
739
+ };
740
+ };
741
+ };
742
+ readonly dark: {
743
+ readonly colors: {
744
+ readonly background: "#0F1117";
745
+ readonly backgroundSecondary: "#1A1C25";
746
+ readonly backgroundTertiary: "#252833";
747
+ readonly foreground: "#F0F0F2";
748
+ readonly foregroundSecondary: "#A0A3B1";
749
+ readonly foregroundTertiary: "#6B6F80";
750
+ readonly primary: "#4A7FF7";
751
+ readonly primaryForeground: "#FFFFFF";
752
+ readonly secondary: "#1E2540";
753
+ readonly secondaryForeground: "#A6C1FF";
754
+ readonly accent: "#4A7FF7";
755
+ readonly accentForeground: "#FFFFFF";
756
+ readonly border: "#2E3140";
757
+ readonly borderSubtle: "#1A1C25";
758
+ readonly hover: "#1A1C25";
759
+ readonly active: "#252833";
760
+ readonly linkHover: "#A6C1FF";
761
+ readonly linkHoverForeground: "#0F1117";
762
+ readonly success: "#4CAF50";
763
+ readonly successForeground: "#FFFFFF";
764
+ readonly warning: "#FF8A50";
765
+ readonly warningForeground: "#FFFFFF";
766
+ readonly error: "#EF5350";
767
+ readonly errorForeground: "#FFFFFF";
768
+ readonly info: "#4A7FF7";
769
+ readonly infoForeground: "#FFFFFF";
770
+ readonly card: "#1A1C25";
771
+ readonly cardForeground: "#F0F0F2";
772
+ readonly popover: "#1A1C25";
773
+ readonly popoverForeground: "#F0F0F2";
774
+ readonly muted: "#252833";
775
+ readonly mutedForeground: "#6B6F80";
776
+ readonly destructive: "#EF5350";
777
+ readonly destructiveForeground: "#FFFFFF";
778
+ readonly input: "#2E3140";
779
+ readonly ring: "#4A7FF7";
780
+ readonly surface: "#1A1C25";
781
+ readonly glass: "rgba(15, 17, 23, 0.85)";
782
+ readonly glassBorder: "rgba(255, 255, 255, 0.08)";
783
+ };
784
+ readonly effects: {
785
+ readonly blur: {
786
+ readonly sm: "blur(4px)";
787
+ readonly md: "blur(8px)";
788
+ readonly lg: "blur(16px)";
789
+ readonly xl: "blur(24px)";
790
+ };
791
+ readonly shadow: {
792
+ readonly sm: "0 1px 2px rgba(0, 0, 0, 0.20)";
793
+ readonly md: "0 2px 8px rgba(0, 0, 0, 0.30)";
794
+ readonly lg: "0 4px 16px rgba(0, 0, 0, 0.35)";
795
+ readonly xl: "0 8px 24px rgba(0, 0, 0, 0.40)";
796
+ readonly '2xl': "0 16px 48px rgba(0, 0, 0, 0.50)";
797
+ };
798
+ };
799
+ };
800
+ /**
801
+ * Motion personality for Speedboat theme
802
+ * Professional and snappy — slightly faster than Studio
803
+ */
804
+ readonly motion: {
805
+ readonly getDuration: (intensity: number) => string;
806
+ readonly ease: {
807
+ readonly default: "cubic-bezier(0.4, 0, 0.2, 1)";
808
+ readonly in: "cubic-bezier(0.4, 0, 1, 1)";
809
+ readonly out: "cubic-bezier(0, 0, 0.2, 1)";
810
+ readonly spring: "cubic-bezier(0.16, 1, 0.3, 1)";
811
+ };
812
+ };
813
+ /**
814
+ * Interaction tokens for Speedboat theme
815
+ * Professional, clean — matches Studio's subtle feel
816
+ */
817
+ readonly interactions: {
818
+ readonly hover: {
819
+ readonly overlayColor: {
820
+ readonly light: "#000000";
821
+ readonly dark: "#ffffff";
822
+ };
823
+ readonly opacity: 0.06;
824
+ };
825
+ readonly active: {
826
+ readonly scale: 0.98;
827
+ };
828
+ readonly focus: {
829
+ readonly ringWidth: "2px";
830
+ readonly ringOffset: "2px";
831
+ };
832
+ readonly disabled: {
833
+ readonly opacity: 0.5;
834
+ };
835
+ };
836
+ /**
837
+ * Typography for Speedboat theme
838
+ * Montserrat headings + Roboto body — Moloco brand fonts
839
+ */
840
+ readonly typography: {
841
+ readonly heading: {
842
+ readonly fontFamily: "var(--font-montserrat)";
843
+ readonly fontWeight: "700";
844
+ readonly letterSpacing: "-0.01em";
845
+ };
846
+ readonly body: {
847
+ readonly fontFamily: "var(--font-roboto)";
848
+ readonly fontWeight: "400";
849
+ readonly letterSpacing: "0";
850
+ };
851
+ readonly mono: {
852
+ readonly fontFamily: "var(--font-geist-mono)";
853
+ readonly fontWeight: "400";
854
+ readonly letterSpacing: "0";
855
+ };
856
+ };
857
+ };
858
+ type SpeedboatTheme = typeof speedboatTokens;
859
+
860
+ /**
861
+ * Syntax Highlighting Tokens
862
+ * Based on VS Code Dark+ theme with light mode variants
863
+ * Includes accessible background and border colors for code blocks
864
+ */
865
+ declare const syntaxColors: {
866
+ readonly light: {
867
+ readonly comment: "#22863a";
868
+ readonly keyword: "#8250df";
869
+ readonly function: "#6639ba";
870
+ readonly string: "#c1592a";
871
+ readonly number: "#0a3069";
872
+ readonly boolean: "#0550ae";
873
+ readonly operator: "#1a1a1a";
874
+ readonly property: "#0550ae";
875
+ readonly className: "#005cc5";
876
+ readonly tag: "#005cc5";
877
+ readonly attribute: "#0550ae";
878
+ readonly variable: "#0550ae";
879
+ readonly punctuation: "#57606a";
880
+ readonly plain: "#1a1a1a";
881
+ };
882
+ readonly dark: {
883
+ readonly comment: "#6A9955";
884
+ readonly keyword: "#C586C0";
885
+ readonly function: "#DCDCAA";
886
+ readonly string: "#CE9178";
887
+ readonly number: "#B5CEA8";
888
+ readonly boolean: "#569CD6";
889
+ readonly operator: "#D4D4D4";
890
+ readonly property: "#9CDCFE";
891
+ readonly className: "#4EC9B0";
892
+ readonly tag: "#4EC9B0";
893
+ readonly attribute: "#9CDCFE";
894
+ readonly variable: "#9CDCFE";
895
+ readonly punctuation: "#808080";
896
+ readonly plain: "#D4D4D4";
897
+ };
898
+ };
899
+ /**
900
+ * Code Block Background and Border Colors
901
+ * Designed for optimal contrast and accessibility (WCAG AA 4.5:1)
902
+ */
903
+ declare const codeColors: {
904
+ readonly light: {
905
+ readonly blockBackground: "#F8F9FA";
906
+ readonly inlineBackground: "#FEF3E7";
907
+ readonly border: "#E1E4E8";
908
+ };
909
+ readonly dark: {
910
+ readonly blockBackground: "#1E1E1E";
911
+ readonly inlineBackground: "#252525";
912
+ readonly border: "#3D3D3D";
913
+ };
914
+ };
915
+ type SyntaxColorScheme = 'light' | 'dark';
916
+ type SyntaxTokenType = keyof typeof syntaxColors.light;
917
+
918
+ /**
919
+ * Curated Color Palette Library
920
+ * Pre-designed, accessible color schemes for quick customization
921
+ */
922
+ interface ColorPalette {
923
+ id: string;
924
+ name: string;
925
+ description: string;
926
+ category: PaletteCategory;
927
+ primary: string;
928
+ secondary: string;
929
+ accent: string;
930
+ harmony?: string;
931
+ rationale?: string;
932
+ bestFor?: string[];
933
+ mood?: string[];
934
+ wcagAA?: boolean;
935
+ wcagAAA?: boolean;
936
+ }
937
+ type PaletteCategory = 'professional' | 'creative' | 'nature' | 'vibrant' | 'minimal' | 'luxury' | 'playful' | 'accessible' | 'custom';
938
+ /**
939
+ * Curated Palette Collection
940
+ */
941
+ declare const colorPalettes: ColorPalette[];
942
+ /**
943
+ * Get palettes by category
944
+ */
945
+ declare function getPalettesByCategory(category: PaletteCategory): ColorPalette[];
946
+ /**
947
+ * Get palettes by mood/tag
948
+ */
949
+ declare function getPalettesByMood(mood: string): ColorPalette[];
950
+ /**
951
+ * Search palettes by use case
952
+ */
953
+ declare function getPalettesForUseCase(useCase: string): ColorPalette[];
954
+ /**
955
+ * Get accessible palettes only
956
+ */
957
+ declare function getAccessiblePalettes(level?: 'AA' | 'AAA'): ColorPalette[];
958
+
959
+ /**
960
+ * Color Transformation Utilities
961
+ * Standalone utilities for the token system (no external dependencies)
962
+ */
963
+ /**
964
+ * Convert hex to RGB
965
+ */
966
+ declare function hexToRgb(hex: string): {
967
+ r: number;
968
+ g: number;
969
+ b: number;
970
+ } | null;
971
+ /**
972
+ * Convert hex to HSL
973
+ */
974
+ declare function hexToHSL(hex: string): {
975
+ h: number;
976
+ s: number;
977
+ l: number;
978
+ };
979
+ /**
980
+ * Convert HSL to hex
981
+ */
982
+ declare function hslToHex(h: number, s: number, l: number): string;
983
+ /**
984
+ * Adjust lightness of a hex color
985
+ */
986
+ declare function adjustLightness(hex: string, percent: number): string;
987
+ /**
988
+ * Adjust saturation of a hex color
989
+ */
990
+ declare function adjustSaturation(hex: string, percent: number): string;
991
+ /**
992
+ * Rotate hue of a hex color
993
+ */
994
+ declare function rotateHue(hex: string, degrees: number): string;
995
+ /**
996
+ * Add opacity to a hex color (returns rgba CSS value)
997
+ */
998
+ declare function adjustOpacity(hex: string, opacity: number): string;
999
+ /**
1000
+ * Calculate relative luminance (WCAG formula)
1001
+ */
1002
+ declare function getLuminance(r: number, g: number, b: number): number;
1003
+ /**
1004
+ * Calculate contrast ratio between two colors (WCAG formula)
1005
+ */
1006
+ declare function getContrastRatio(hex1: string, hex2: string): number;
1007
+ /**
1008
+ * Get optimal foreground color (white or black) for a background
1009
+ */
1010
+ declare function getOptimalForeground(bgHex: string, whiteHex?: string, blackHex?: string): string;
1011
+
1012
+ /**
1013
+ * Token Dependency Graph
1014
+ * Defines which tokens are computed from other tokens for "change once, ripple everywhere"
1015
+ */
1016
+ type TokenDerivation = {
1017
+ source: string;
1018
+ transform: (sourceValue: string) => string;
1019
+ description: string;
1020
+ };
1021
+ /**
1022
+ * Primary Color Derivations
1023
+ * These tokens automatically update when primary color changes
1024
+ */
1025
+ declare const primaryColorDerivations: Record<string, TokenDerivation>;
1026
+ /**
1027
+ * Secondary Color Derivations
1028
+ * These derive from secondary color
1029
+ */
1030
+ declare const secondaryColorDerivations: Record<string, TokenDerivation>;
1031
+ /**
1032
+ * Accent Color Derivations
1033
+ * These derive from accent (used for highlights and CTAs)
1034
+ */
1035
+ declare const accentColorDerivations: Record<string, TokenDerivation>;
1036
+ /**
1037
+ * Mode-Specific Derivations
1038
+ * These need different transforms for light vs dark mode
1039
+ */
1040
+ declare const modeSpecificDerivations: Record<string, {
1041
+ light: TokenDerivation;
1042
+ dark: TokenDerivation;
1043
+ }>;
1044
+ /**
1045
+ * Complete dependency graph
1046
+ */
1047
+ declare const tokenDependencyGraph: {
1048
+ primary: Record<string, TokenDerivation>;
1049
+ secondary: Record<string, TokenDerivation>;
1050
+ accent: Record<string, TokenDerivation>;
1051
+ modeSpecific: Record<string, {
1052
+ light: TokenDerivation;
1053
+ dark: TokenDerivation;
1054
+ }>;
1055
+ };
1056
+ /**
1057
+ * Get all tokens that depend on a source token
1058
+ */
1059
+ declare function getDependentTokens(sourceToken: string): string[];
1060
+ /**
1061
+ * Compute all derived tokens from a source
1062
+ */
1063
+ declare function computeDerivedTokens(sourceToken: string, sourceValue: string, mode: 'light' | 'dark'): Record<string, string>;
1064
+
1065
+ export { type BaseTokens, type ColorPalette, type PaletteCategory, type SpeedboatTheme, type StudioTheme, type SyntaxColorScheme, type SyntaxTokenType, type TerraTheme, type TokenDerivation, type VoltTheme, accentColorDerivations, adjustLightness, adjustOpacity, adjustSaturation, baseTokens, codeColors, colorPalettes, computeDerivedTokens, getAccessiblePalettes, getContrastRatio, getDependentTokens, getLuminance, getOptimalForeground, getPalettesByCategory, getPalettesByMood, getPalettesForUseCase, hexToHSL, hexToRgb, hslToHex, modeSpecificDerivations, motion, primaryColorDerivations, rotateHue, secondaryColorDerivations, spacing, speedboatTokens, studioTokens, syntaxColors, terraTokens, tokenDependencyGraph, typography, voltTokens };