@metacells/mcellui-core 0.1.2 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/index-DtYPPizh.d.ts +682 -0
  2. package/dist/index.d.ts +3851 -0
  3. package/dist/index.js +7191 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/shadows-CwlbfJco.d.ts +194 -0
  6. package/dist/tokens/index.d.ts +17 -0
  7. package/dist/tokens/index.js +176 -0
  8. package/dist/tokens/index.js.map +1 -0
  9. package/dist/utils/index.d.ts +2 -0
  10. package/dist/utils/index.js +4150 -0
  11. package/dist/utils/index.js.map +1 -0
  12. package/package.json +18 -11
  13. package/src/components/ErrorBoundary.tsx +0 -188
  14. package/src/components/index.ts +0 -6
  15. package/src/config/ConfigProvider.tsx +0 -145
  16. package/src/config/defineConfig.ts +0 -75
  17. package/src/config/index.ts +0 -42
  18. package/src/config/types.ts +0 -185
  19. package/src/constants.ts +0 -203
  20. package/src/index.ts +0 -144
  21. package/src/primitives/Portal.tsx +0 -185
  22. package/src/primitives/Pressable.tsx +0 -114
  23. package/src/primitives/Slot.tsx +0 -177
  24. package/src/primitives/index.ts +0 -19
  25. package/src/theme/ThemeProvider.tsx +0 -506
  26. package/src/theme/animations.ts +0 -381
  27. package/src/theme/colors.ts +0 -266
  28. package/src/theme/components.ts +0 -267
  29. package/src/theme/index.ts +0 -130
  30. package/src/theme/presets.ts +0 -341
  31. package/src/theme/radius.ts +0 -175
  32. package/src/theme/shadows.ts +0 -166
  33. package/src/theme/spacing.ts +0 -41
  34. package/src/theme/typography.ts +0 -389
  35. package/src/tokens/colors.ts +0 -67
  36. package/src/tokens/index.ts +0 -29
  37. package/src/tokens/radius.ts +0 -18
  38. package/src/tokens/shadows.ts +0 -38
  39. package/src/tokens/spacing.ts +0 -45
  40. package/src/tokens/typography.ts +0 -70
  41. package/src/utils/accessibility.ts +0 -112
  42. package/src/utils/cn.ts +0 -58
  43. package/src/utils/expoGo.ts +0 -72
  44. package/src/utils/haptics.ts +0 -125
  45. package/src/utils/index.ts +0 -33
  46. package/src/utils/platform.ts +0 -66
@@ -0,0 +1,3851 @@
1
+ import { F as Fonts, f as fontSize, a as fontWeight, l as lineHeight, b as letterSpacing, c as fontFamily, g as geistFontFamily, T as Typography } from './index-DtYPPizh.js';
2
+ export { H as A11yProps, V as ComputedLineHeightKey, k as FontFamilyKey, h as FontSizeKey, i as FontWeightKey, G as GeistFontFamilyKey, O as HapticStyle, j as LetterSpacingKey, L as LineHeightKey, m as TypographyKey, v as androidApiLevel, R as areAnimationsDisabled, A as buttonA11y, n as cn, U as computedLineHeight, e as createTypography, d as defaultFonts, z as getFontScale, S as getLineHeight, I as haptic, N as hapticPresets, J as hapticsAvailable, E as headingA11y, D as imageA11y, u as iosVersion, q as isAndroid, P as isExpoGo, M as isHapticsEnabled, p as isIOS, w as isTablet, r as isWeb, C as linkA11y, o as mergeStyles, x as pixelRatio, y as roundToNearestPixel, Q as setAnimationsDisabled, K as setHapticsEnabled, s as systemFonts, B as toggleA11y, t as typography } from './index-DtYPPizh.js';
3
+ import * as react_native from 'react-native';
4
+ import { ViewStyle, PressableProps as PressableProps$1 } from 'react-native';
5
+ import * as react_jsx_runtime from 'react/jsx-runtime';
6
+ import React, { ReactNode, Component, ErrorInfo } from 'react';
7
+ export { F as FontFamily, i as FontSize, j as FontWeight, C as LegacyColors, n as LegacyShadows, k as LetterSpacing, L as LineHeight, R as Radius, m as RadiusKey, o as ShadowKey, S as Spacing, h as SpacingKey, a as fontSize, b as fontWeight, c as legacyColors, f as legacyFontFamily, e as legacyShadows, d as letterSpacing, l as lineHeight, r as radius, s as spacing } from './shadows-CwlbfJco.js';
8
+
9
+ /**
10
+ * Theme Colors
11
+ *
12
+ * Semantic color tokens that adapt to light/dark mode.
13
+ * Inspired by iOS 17+ Dynamic Colors, Arc Browser, and Linear App.
14
+ */
15
+ /**
16
+ * Base color palette (raw values).
17
+ *
18
+ * Raw color values for all theme presets. Use semantic colors from `lightColors` or
19
+ * `darkColors` in components rather than palette directly.
20
+ *
21
+ * @example
22
+ * ```tsx
23
+ * const { colors } = useTheme();
24
+ * // Use semantic colors (auto-adapts to light/dark)
25
+ * <View style={{ backgroundColor: colors.primary }} />
26
+ *
27
+ * // Not recommended: using palette directly (no dark mode support)
28
+ * <View style={{ backgroundColor: palette.primary[500] }} />
29
+ * ```
30
+ */
31
+ declare const palette: {
32
+ readonly neutral: {
33
+ readonly 0: "#ffffff";
34
+ readonly 50: "#fafafa";
35
+ readonly 100: "#f5f5f5";
36
+ readonly 200: "#e5e5e5";
37
+ readonly 300: "#d4d4d4";
38
+ readonly 400: "#a3a3a3";
39
+ readonly 500: "#737373";
40
+ readonly 600: "#525252";
41
+ readonly 700: "#404040";
42
+ readonly 800: "#262626";
43
+ readonly 900: "#171717";
44
+ readonly 950: "#0a0a0a";
45
+ };
46
+ readonly primary: {
47
+ readonly 50: "#eff6ff";
48
+ readonly 100: "#dbeafe";
49
+ readonly 200: "#bfdbfe";
50
+ readonly 300: "#93c5fd";
51
+ readonly 400: "#60a5fa";
52
+ readonly 500: "#3b82f6";
53
+ readonly 600: "#2563eb";
54
+ readonly 700: "#1d4ed8";
55
+ readonly 800: "#1e40af";
56
+ readonly 900: "#1e3a8a";
57
+ };
58
+ readonly success: {
59
+ readonly 50: "#f0fdf4";
60
+ readonly 100: "#dcfce7";
61
+ readonly 200: "#bbf7d0";
62
+ readonly 300: "#86efac";
63
+ readonly 400: "#4ade80";
64
+ readonly 500: "#22c55e";
65
+ readonly 600: "#16a34a";
66
+ readonly 700: "#15803d";
67
+ readonly 800: "#166534";
68
+ readonly 900: "#14532d";
69
+ };
70
+ readonly warning: {
71
+ readonly 50: "#fffbeb";
72
+ readonly 100: "#fef3c7";
73
+ readonly 200: "#fde68a";
74
+ readonly 300: "#fcd34d";
75
+ readonly 400: "#fbbf24";
76
+ readonly 500: "#f59e0b";
77
+ readonly 600: "#d97706";
78
+ readonly 700: "#b45309";
79
+ readonly 800: "#92400e";
80
+ readonly 900: "#78350f";
81
+ };
82
+ readonly error: {
83
+ readonly 50: "#fef2f2";
84
+ readonly 100: "#fee2e2";
85
+ readonly 200: "#fecaca";
86
+ readonly 300: "#fca5a5";
87
+ readonly 400: "#f87171";
88
+ readonly 500: "#ef4444";
89
+ readonly 600: "#dc2626";
90
+ readonly 700: "#b91c1c";
91
+ readonly 800: "#991b1b";
92
+ readonly 900: "#7f1d1d";
93
+ };
94
+ };
95
+ /**
96
+ * Semantic colors for light mode.
97
+ *
98
+ * Complete semantic color palette for light color scheme. Access via `useTheme().colors`
99
+ * for automatic light/dark mode adaptation.
100
+ *
101
+ * @example
102
+ * ```tsx
103
+ * const { colors, isDark } = useTheme();
104
+ * // colors automatically matches light or dark mode
105
+ * <View style={{ backgroundColor: colors.background, color: colors.foreground }} />
106
+ * ```
107
+ */
108
+ declare const lightColors: {
109
+ readonly background: "#ffffff";
110
+ readonly backgroundSubtle: "#fafafa";
111
+ readonly backgroundMuted: "#f5f5f5";
112
+ readonly backgroundElevated: "#ffffff";
113
+ readonly foreground: "#171717";
114
+ readonly foregroundMuted: "#737373";
115
+ readonly foregroundSubtle: "#a3a3a3";
116
+ readonly border: "#e5e5e5";
117
+ readonly borderMuted: "#f5f5f5";
118
+ readonly borderFocused: "#3b82f6";
119
+ readonly primary: "#3b82f6";
120
+ readonly primaryForeground: "#ffffff";
121
+ readonly primaryMuted: "#dbeafe";
122
+ readonly secondary: "#f5f5f5";
123
+ readonly secondaryForeground: "#171717";
124
+ readonly destructive: "#ef4444";
125
+ readonly destructiveForeground: "#ffffff";
126
+ readonly success: "#22c55e";
127
+ readonly successForeground: "#ffffff";
128
+ readonly successMuted: "#dcfce7";
129
+ readonly warning: "#f59e0b";
130
+ readonly warningForeground: "#171717";
131
+ readonly warningMuted: "#fef3c7";
132
+ readonly error: "#ef4444";
133
+ readonly errorForeground: "#ffffff";
134
+ readonly errorMuted: "#fee2e2";
135
+ readonly card: "#ffffff";
136
+ readonly cardForeground: "#171717";
137
+ readonly input: "#ffffff";
138
+ readonly inputBorder: "#e5e5e5";
139
+ readonly inputPlaceholder: "#a3a3a3";
140
+ readonly overlay: "rgba(0, 0, 0, 0.5)";
141
+ readonly scrim: "rgba(0, 0, 0, 0.3)";
142
+ };
143
+ /**
144
+ * Semantic colors for dark mode.
145
+ *
146
+ * Complete semantic color palette for dark color scheme. Access via `useTheme().colors`
147
+ * for automatic light/dark mode adaptation.
148
+ *
149
+ * @example
150
+ * ```tsx
151
+ * const { colors } = useTheme();
152
+ * // colors automatically matches light or dark mode
153
+ * <Text style={{ color: colors.foreground }}>Content</Text>
154
+ * ```
155
+ */
156
+ declare const darkColors: {
157
+ readonly background: "#0a0a0a";
158
+ readonly backgroundSubtle: "#171717";
159
+ readonly backgroundMuted: "#262626";
160
+ readonly backgroundElevated: "#171717";
161
+ readonly foreground: "#fafafa";
162
+ readonly foregroundMuted: "#a3a3a3";
163
+ readonly foregroundSubtle: "#737373";
164
+ readonly border: "#262626";
165
+ readonly borderMuted: "#171717";
166
+ readonly borderFocused: "#60a5fa";
167
+ readonly primary: "#60a5fa";
168
+ readonly primaryForeground: "#171717";
169
+ readonly primaryMuted: "#1e3a8a";
170
+ readonly secondary: "#262626";
171
+ readonly secondaryForeground: "#fafafa";
172
+ readonly destructive: "#ef4444";
173
+ readonly destructiveForeground: "#ffffff";
174
+ readonly success: "#4ade80";
175
+ readonly successForeground: "#171717";
176
+ readonly successMuted: "#14532d";
177
+ readonly warning: "#fbbf24";
178
+ readonly warningForeground: "#171717";
179
+ readonly warningMuted: "#78350f";
180
+ readonly error: "#f87171";
181
+ readonly errorForeground: "#ffffff";
182
+ readonly errorMuted: "#7f1d1d";
183
+ readonly card: "#171717";
184
+ readonly cardForeground: "#fafafa";
185
+ readonly input: "#262626";
186
+ readonly inputBorder: "#404040";
187
+ readonly inputPlaceholder: "#737373";
188
+ readonly overlay: "rgba(0, 0, 0, 0.7)";
189
+ readonly scrim: "rgba(0, 0, 0, 0.5)";
190
+ };
191
+ /**
192
+ * Theme colors interface.
193
+ * Uses string type to allow color customization and presets.
194
+ */
195
+ interface ThemeColors {
196
+ background: string;
197
+ backgroundSubtle: string;
198
+ backgroundMuted: string;
199
+ backgroundElevated: string;
200
+ foreground: string;
201
+ foregroundMuted: string;
202
+ foregroundSubtle: string;
203
+ border: string;
204
+ borderMuted: string;
205
+ borderFocused: string;
206
+ primary: string;
207
+ primaryForeground: string;
208
+ primaryMuted: string;
209
+ secondary: string;
210
+ secondaryForeground: string;
211
+ destructive: string;
212
+ destructiveForeground: string;
213
+ success: string;
214
+ successForeground: string;
215
+ successMuted: string;
216
+ warning: string;
217
+ warningForeground: string;
218
+ warningMuted: string;
219
+ error: string;
220
+ errorForeground: string;
221
+ errorMuted: string;
222
+ card: string;
223
+ cardForeground: string;
224
+ input: string;
225
+ inputBorder: string;
226
+ inputPlaceholder: string;
227
+ overlay: string;
228
+ scrim: string;
229
+ }
230
+ /** Available semantic color keys */
231
+ type ColorKey = keyof ThemeColors;
232
+
233
+ /**
234
+ * Spacing Tokens
235
+ *
236
+ * Consistent spacing scale inspired by Tailwind CSS.
237
+ * All values in logical pixels.
238
+ *
239
+ * Usage:
240
+ * ```tsx
241
+ * const { spacing } = useTheme();
242
+ * <View style={{ padding: spacing[4], gap: spacing[2] }} />
243
+ * ```
244
+ */
245
+ declare const spacing: {
246
+ readonly 0: 0;
247
+ readonly 0.5: 2;
248
+ readonly 1: 4;
249
+ readonly 1.5: 6;
250
+ readonly 2: 8;
251
+ readonly 2.5: 10;
252
+ readonly 3: 12;
253
+ readonly 3.5: 14;
254
+ readonly 4: 16;
255
+ readonly 5: 20;
256
+ readonly 6: 24;
257
+ readonly 7: 28;
258
+ readonly 8: 32;
259
+ readonly 9: 36;
260
+ readonly 10: 40;
261
+ readonly 11: 44;
262
+ readonly 12: 48;
263
+ readonly 14: 56;
264
+ readonly 16: 64;
265
+ readonly 20: 80;
266
+ readonly 24: 96;
267
+ readonly 28: 112;
268
+ readonly 32: 128;
269
+ };
270
+ /** Available spacing scale keys (0, 0.5, 1, 1.5, 2, ..., 32) */
271
+ type SpacingKey = keyof typeof spacing;
272
+ /** Spacing value in logical pixels */
273
+ type SpacingValue = (typeof spacing)[SpacingKey];
274
+
275
+ /**
276
+ * Border Radius Tokens
277
+ *
278
+ * Consistent border radius scale for all components.
279
+ * Use the `radius` prop on ThemeProvider to change the base radius
280
+ * and transform your entire app from sharp to rounded.
281
+ *
282
+ * Usage:
283
+ * ```tsx
284
+ * // Sharp, brutalist design
285
+ * <ThemeProvider radius="none">
286
+ *
287
+ * // Soft, friendly design
288
+ * <ThemeProvider radius="lg">
289
+ *
290
+ * // In components
291
+ * const { radius } = useTheme();
292
+ * <View style={{ borderRadius: radius.md }} />
293
+ * ```
294
+ */
295
+ /**
296
+ * Available radius presets.
297
+ * Each preset defines a base value that scales all radii.
298
+ */
299
+ type RadiusPreset = 'none' | 'sm' | 'md' | 'lg' | 'full';
300
+ /**
301
+ * Base values for each radius preset.
302
+ */
303
+ declare const radiusPresetBase: Record<RadiusPreset, number>;
304
+ /**
305
+ * Radius token structure.
306
+ */
307
+ interface RadiusTokens {
308
+ none: number;
309
+ xs: number;
310
+ sm: number;
311
+ md: number;
312
+ lg: number;
313
+ xl: number;
314
+ '2xl': number;
315
+ full: number;
316
+ }
317
+ type RadiusKey = keyof RadiusTokens;
318
+ type RadiusValue = number;
319
+ /**
320
+ * Creates radius tokens from a preset or base value.
321
+ *
322
+ * @param preset - Radius preset name or custom base value
323
+ * @returns Scaled radius tokens
324
+ */
325
+ declare function createRadius(preset?: RadiusPreset | number): RadiusTokens;
326
+ /**
327
+ * Default radius tokens (md preset).
328
+ */
329
+ declare const radius: RadiusTokens;
330
+ /**
331
+ * Default radius preset.
332
+ */
333
+ declare const defaultRadiusPreset: RadiusPreset;
334
+ /**
335
+ * Component-specific radius tokens structure.
336
+ */
337
+ interface ComponentRadiusTokens {
338
+ button: number;
339
+ buttonSm: number;
340
+ buttonLg: number;
341
+ iconButton: number;
342
+ iconButtonRounded: number;
343
+ fab: number;
344
+ segmentedControl: number;
345
+ segmentedControlIndicator: number;
346
+ actionSheet: number;
347
+ actionSheetItem: number;
348
+ input: number;
349
+ textarea: number;
350
+ select: number;
351
+ slider: number;
352
+ stepper: number;
353
+ radio: number;
354
+ tagInput: number;
355
+ card: number;
356
+ badge: number;
357
+ avatar: number;
358
+ checkbox: number;
359
+ switch: number;
360
+ modal: number;
361
+ tooltip: number;
362
+ chip: number;
363
+ image: number;
364
+ tabs: number;
365
+ tabsIndicator: number;
366
+ accordion: number;
367
+ carousel: number;
368
+ }
369
+ type ComponentRadiusKey = keyof ComponentRadiusTokens;
370
+ /**
371
+ * Creates component-specific radius values from radius tokens.
372
+ *
373
+ * @param radiusTokens - Base radius tokens
374
+ * @returns Component-specific radius values
375
+ */
376
+ declare function createComponentRadius(radiusTokens: RadiusTokens): ComponentRadiusTokens;
377
+ /**
378
+ * Default component radius values.
379
+ */
380
+ declare const componentRadius: ComponentRadiusTokens;
381
+
382
+ /**
383
+ * Shadow Presets
384
+ *
385
+ * Consistent shadow tokens for depth and elevation.
386
+ * Platform-aware: iOS uses shadow properties, Android uses elevation.
387
+ *
388
+ * Inspired by iOS 17+ depth language and Linear App shadows.
389
+ */
390
+
391
+ interface ShadowStyle {
392
+ shadowColor: string;
393
+ shadowOffset: {
394
+ width: number;
395
+ height: number;
396
+ };
397
+ shadowOpacity: number;
398
+ shadowRadius: number;
399
+ elevation: number;
400
+ }
401
+ declare const lightShadows: {
402
+ /** Subtle shadow for cards and surfaces */
403
+ readonly sm: {
404
+ readonly shadowColor: "#000000";
405
+ readonly shadowOffset: {
406
+ readonly width: 0;
407
+ readonly height: 1;
408
+ };
409
+ readonly shadowOpacity: 0.05;
410
+ readonly shadowRadius: 2;
411
+ readonly elevation: 1;
412
+ };
413
+ /** Default shadow for buttons and interactive elements */
414
+ readonly md: {
415
+ readonly shadowColor: "#000000";
416
+ readonly shadowOffset: {
417
+ readonly width: 0;
418
+ readonly height: 2;
419
+ };
420
+ readonly shadowOpacity: 0.08;
421
+ readonly shadowRadius: 4;
422
+ readonly elevation: 3;
423
+ };
424
+ /** Elevated shadow for modals and popovers */
425
+ readonly lg: {
426
+ readonly shadowColor: "#000000";
427
+ readonly shadowOffset: {
428
+ readonly width: 0;
429
+ readonly height: 4;
430
+ };
431
+ readonly shadowOpacity: 0.12;
432
+ readonly shadowRadius: 8;
433
+ readonly elevation: 6;
434
+ };
435
+ /** Prominent shadow for floating elements */
436
+ readonly xl: {
437
+ readonly shadowColor: "#000000";
438
+ readonly shadowOffset: {
439
+ readonly width: 0;
440
+ readonly height: 8;
441
+ };
442
+ readonly shadowOpacity: 0.15;
443
+ readonly shadowRadius: 16;
444
+ readonly elevation: 12;
445
+ };
446
+ /** Maximum shadow for overlays */
447
+ readonly '2xl': {
448
+ readonly shadowColor: "#000000";
449
+ readonly shadowOffset: {
450
+ readonly width: 0;
451
+ readonly height: 12;
452
+ };
453
+ readonly shadowOpacity: 0.2;
454
+ readonly shadowRadius: 24;
455
+ readonly elevation: 16;
456
+ };
457
+ /** No shadow */
458
+ readonly none: {
459
+ readonly shadowColor: "transparent";
460
+ readonly shadowOffset: {
461
+ readonly width: 0;
462
+ readonly height: 0;
463
+ };
464
+ readonly shadowOpacity: 0;
465
+ readonly shadowRadius: 0;
466
+ readonly elevation: 0;
467
+ };
468
+ };
469
+ /** Available shadow size presets */
470
+ type ShadowSize = keyof typeof lightShadows;
471
+ /**
472
+ * Get shadow styles for a given size and color scheme.
473
+ *
474
+ * Returns platform-specific shadow properties (iOS: shadow*, Android: elevation).
475
+ * Prefer `platformShadow()` or `theme.platformShadow()` for cleaner API.
476
+ *
477
+ * @param size - Shadow size preset ('sm' | 'md' | 'lg' | 'xl' | '2xl' | 'none')
478
+ * @param isDark - Whether dark mode is active (defaults to false)
479
+ * @returns Complete shadow style object with all platform properties
480
+ *
481
+ * @example
482
+ * ```tsx
483
+ * const shadow = getShadow('md', isDark);
484
+ * <View style={shadow} />
485
+ * ```
486
+ */
487
+ declare function getShadow(size: ShadowSize, isDark?: boolean): ShadowStyle;
488
+ /**
489
+ * Get platform-optimized shadow style.
490
+ *
491
+ * Returns only the relevant properties for the current platform:
492
+ * - iOS: shadowColor, shadowOffset, shadowOpacity, shadowRadius
493
+ * - Android: elevation
494
+ * - Web: complete shadow object
495
+ *
496
+ * @param size - Shadow size preset ('sm' | 'md' | 'lg' | 'xl' | '2xl' | 'none')
497
+ * @param isDark - Whether dark mode is active (defaults to false)
498
+ * @returns Platform-specific shadow style object
499
+ *
500
+ * @example
501
+ * ```tsx
502
+ * const { platformShadow } = useTheme();
503
+ * <View style={platformShadow('md')} />
504
+ * ```
505
+ */
506
+ declare function getPlatformShadow(size: ShadowSize, isDark?: boolean): ViewStyle;
507
+ /**
508
+ * Complete shadow preset collections for light and dark modes.
509
+ *
510
+ * Prefer using `getShadow()` or `platformShadow()` instead of accessing directly.
511
+ */
512
+ declare const shadows: {
513
+ light: {
514
+ /** Subtle shadow for cards and surfaces */
515
+ readonly sm: {
516
+ readonly shadowColor: "#000000";
517
+ readonly shadowOffset: {
518
+ readonly width: 0;
519
+ readonly height: 1;
520
+ };
521
+ readonly shadowOpacity: 0.05;
522
+ readonly shadowRadius: 2;
523
+ readonly elevation: 1;
524
+ };
525
+ /** Default shadow for buttons and interactive elements */
526
+ readonly md: {
527
+ readonly shadowColor: "#000000";
528
+ readonly shadowOffset: {
529
+ readonly width: 0;
530
+ readonly height: 2;
531
+ };
532
+ readonly shadowOpacity: 0.08;
533
+ readonly shadowRadius: 4;
534
+ readonly elevation: 3;
535
+ };
536
+ /** Elevated shadow for modals and popovers */
537
+ readonly lg: {
538
+ readonly shadowColor: "#000000";
539
+ readonly shadowOffset: {
540
+ readonly width: 0;
541
+ readonly height: 4;
542
+ };
543
+ readonly shadowOpacity: 0.12;
544
+ readonly shadowRadius: 8;
545
+ readonly elevation: 6;
546
+ };
547
+ /** Prominent shadow for floating elements */
548
+ readonly xl: {
549
+ readonly shadowColor: "#000000";
550
+ readonly shadowOffset: {
551
+ readonly width: 0;
552
+ readonly height: 8;
553
+ };
554
+ readonly shadowOpacity: 0.15;
555
+ readonly shadowRadius: 16;
556
+ readonly elevation: 12;
557
+ };
558
+ /** Maximum shadow for overlays */
559
+ readonly '2xl': {
560
+ readonly shadowColor: "#000000";
561
+ readonly shadowOffset: {
562
+ readonly width: 0;
563
+ readonly height: 12;
564
+ };
565
+ readonly shadowOpacity: 0.2;
566
+ readonly shadowRadius: 24;
567
+ readonly elevation: 16;
568
+ };
569
+ /** No shadow */
570
+ readonly none: {
571
+ readonly shadowColor: "transparent";
572
+ readonly shadowOffset: {
573
+ readonly width: 0;
574
+ readonly height: 0;
575
+ };
576
+ readonly shadowOpacity: 0;
577
+ readonly shadowRadius: 0;
578
+ readonly elevation: 0;
579
+ };
580
+ };
581
+ dark: {
582
+ readonly sm: {
583
+ readonly shadowColor: "#000000";
584
+ readonly shadowOffset: {
585
+ readonly width: 0;
586
+ readonly height: 1;
587
+ };
588
+ readonly shadowOpacity: 0.2;
589
+ readonly shadowRadius: 2;
590
+ readonly elevation: 1;
591
+ };
592
+ readonly md: {
593
+ readonly shadowColor: "#000000";
594
+ readonly shadowOffset: {
595
+ readonly width: 0;
596
+ readonly height: 2;
597
+ };
598
+ readonly shadowOpacity: 0.3;
599
+ readonly shadowRadius: 4;
600
+ readonly elevation: 3;
601
+ };
602
+ readonly lg: {
603
+ readonly shadowColor: "#000000";
604
+ readonly shadowOffset: {
605
+ readonly width: 0;
606
+ readonly height: 4;
607
+ };
608
+ readonly shadowOpacity: 0.4;
609
+ readonly shadowRadius: 8;
610
+ readonly elevation: 6;
611
+ };
612
+ readonly xl: {
613
+ readonly shadowColor: "#000000";
614
+ readonly shadowOffset: {
615
+ readonly width: 0;
616
+ readonly height: 8;
617
+ };
618
+ readonly shadowOpacity: 0.5;
619
+ readonly shadowRadius: 16;
620
+ readonly elevation: 12;
621
+ };
622
+ readonly '2xl': {
623
+ readonly shadowColor: "#000000";
624
+ readonly shadowOffset: {
625
+ readonly width: 0;
626
+ readonly height: 12;
627
+ };
628
+ readonly shadowOpacity: 0.6;
629
+ readonly shadowRadius: 24;
630
+ readonly elevation: 16;
631
+ };
632
+ readonly none: {
633
+ readonly shadowColor: "transparent";
634
+ readonly shadowOffset: {
635
+ readonly width: 0;
636
+ readonly height: 0;
637
+ };
638
+ readonly shadowOpacity: 0;
639
+ readonly shadowRadius: 0;
640
+ readonly elevation: 0;
641
+ };
642
+ };
643
+ };
644
+
645
+ /**
646
+ * Animation Presets
647
+ *
648
+ * Consistent animation configurations for micro-interactions.
649
+ * Uses Reanimated's spring physics for natural motion.
650
+ *
651
+ * Inspired by iOS 17+ animations and Linear App micro-interactions.
652
+ */
653
+ interface SpringConfig {
654
+ damping?: number;
655
+ mass?: number;
656
+ stiffness?: number;
657
+ overshootClamping?: boolean;
658
+ restDisplacementThreshold?: number;
659
+ restSpeedThreshold?: number;
660
+ velocity?: number;
661
+ }
662
+ /**
663
+ * Timing config for animations.
664
+ *
665
+ * Note: We intentionally omit `easing` from these configs because custom easing
666
+ * functions must be Reanimated worklets to work with withTiming(). Instead,
667
+ * consumers should use Reanimated's Easing module directly:
668
+ *
669
+ * @example
670
+ * ```tsx
671
+ * import { Easing } from 'react-native-reanimated';
672
+ *
673
+ * withTiming(value, {
674
+ * duration: timing.default.duration,
675
+ * easing: Easing.out(Easing.quad),
676
+ * });
677
+ * ```
678
+ */
679
+ interface TimingConfig {
680
+ duration: number;
681
+ }
682
+ /**
683
+ * Spring configurations for different animation contexts.
684
+ *
685
+ * Reanimated-compatible spring physics presets for natural motion.
686
+ * Use with `withSpring()` from react-native-reanimated.
687
+ *
688
+ * @example
689
+ * ```tsx
690
+ * import { withSpring } from 'react-native-reanimated';
691
+ * const { springs } = useTheme();
692
+ *
693
+ * // Animate with spring physics
694
+ * animatedValue.value = withSpring(targetValue, springs.snappy);
695
+ * ```
696
+ */
697
+ declare const springs: SpringTokens;
698
+ /**
699
+ * Timing configurations for animations.
700
+ *
701
+ * Duration-only configs - use Reanimated's Easing module for custom easing.
702
+ *
703
+ * @example
704
+ * ```tsx
705
+ * import { withTiming, Easing } from 'react-native-reanimated';
706
+ * const { timing } = useTheme();
707
+ *
708
+ * animatedValue.value = withTiming(targetValue, {
709
+ * duration: timing.default.duration,
710
+ * easing: Easing.out(Easing.quad),
711
+ * });
712
+ * ```
713
+ */
714
+ declare const timing: TimingTokens;
715
+ /**
716
+ * Scale values for press animations.
717
+ *
718
+ * Use with animated press gestures to provide tactile feedback.
719
+ *
720
+ * @example
721
+ * ```tsx
722
+ * const { pressScale } = useTheme();
723
+ * const scale = useSharedValue(1);
724
+ *
725
+ * const gesture = Gesture.Tap()
726
+ * .onBegin(() => { scale.value = withSpring(pressScale.default); })
727
+ * .onFinalize(() => { scale.value = withSpring(1); });
728
+ * ```
729
+ */
730
+ declare const pressScale: PressScaleTokens;
731
+ /**
732
+ * Press scale token structure (flexible for presets)
733
+ */
734
+ interface PressScaleTokens {
735
+ subtle: number;
736
+ default: number;
737
+ prominent: number;
738
+ }
739
+ /**
740
+ * Common animation durations in milliseconds.
741
+ *
742
+ * Standard duration values for consistent animation timing across the app.
743
+ *
744
+ * @example
745
+ * ```tsx
746
+ * const { durations } = useTheme();
747
+ * setTimeout(() => { ... }, durations.fast);
748
+ * ```
749
+ */
750
+ declare const durations: DurationTokens;
751
+ /**
752
+ * Duration token structure (flexible for presets)
753
+ */
754
+ interface DurationTokens {
755
+ instant: number;
756
+ fast: number;
757
+ default: number;
758
+ slow: number;
759
+ slower: number;
760
+ }
761
+ /**
762
+ * Spring tokens structure (flexible for presets)
763
+ */
764
+ interface SpringTokens {
765
+ snappy: SpringConfig;
766
+ default: SpringConfig;
767
+ bouncy: SpringConfig;
768
+ gentle: SpringConfig;
769
+ stiff: SpringConfig;
770
+ soft: SpringConfig;
771
+ }
772
+ /**
773
+ * Timing tokens structure (flexible for presets)
774
+ */
775
+ interface TimingTokens {
776
+ fast: TimingConfig;
777
+ default: TimingConfig;
778
+ slow: TimingConfig;
779
+ enter: TimingConfig;
780
+ exit: TimingConfig;
781
+ }
782
+ /** Available spring animation presets */
783
+ type SpringPreset = keyof SpringTokens;
784
+ /** Available timing animation presets */
785
+ type TimingPreset = keyof TimingTokens;
786
+ /** Available press scale presets */
787
+ type PressScalePreset = keyof PressScaleTokens;
788
+ /**
789
+ * Animation preset type.
790
+ * Controls the overall feel of animations throughout the app.
791
+ *
792
+ * - `subtle`: Professional, smooth animations with minimal overshoot
793
+ * - `playful`: Bouncy, energetic animations with more personality
794
+ */
795
+ type AnimationPreset = 'subtle' | 'playful';
796
+ /**
797
+ * Animation tokens structure for presets
798
+ */
799
+ interface AnimationTokens {
800
+ springs: SpringTokens;
801
+ timing: TimingTokens;
802
+ pressScale: PressScaleTokens;
803
+ durations: DurationTokens;
804
+ }
805
+ /**
806
+ * Subtle animation preset.
807
+ *
808
+ * Professional, smooth animations suited for business/productivity apps.
809
+ * Higher damping = less bounce, faster settling.
810
+ *
811
+ * @example
812
+ * ```tsx
813
+ * <ThemeProvider animationPreset="subtle">
814
+ * <App />
815
+ * </ThemeProvider>
816
+ * ```
817
+ */
818
+ declare const subtleAnimations: AnimationTokens;
819
+ /**
820
+ * Playful animation preset.
821
+ *
822
+ * Bouncy, energetic animations suited for consumer/social apps.
823
+ * Lower damping = more bounce, more overshoot.
824
+ *
825
+ * @example
826
+ * ```tsx
827
+ * <ThemeProvider animationPreset="playful">
828
+ * <App />
829
+ * </ThemeProvider>
830
+ * ```
831
+ */
832
+ declare const playfulAnimations: AnimationTokens;
833
+ /**
834
+ * Get animation tokens for a specific preset.
835
+ *
836
+ * @param preset - Animation preset ('subtle' | 'playful')
837
+ * @returns Complete animation token set for the preset
838
+ *
839
+ * @example
840
+ * ```tsx
841
+ * const tokens = getAnimationPreset('playful');
842
+ * // tokens contains springs, timing, pressScale, durations
843
+ * ```
844
+ */
845
+ declare function getAnimationPreset(preset: AnimationPreset): AnimationTokens;
846
+ /**
847
+ * Default animation preset.
848
+ *
849
+ * Used when no `animationPreset` is specified on ThemeProvider.
850
+ */
851
+ declare const defaultAnimationPreset: AnimationPreset;
852
+
853
+ /**
854
+ * Component Tokens
855
+ *
856
+ * Size and proportion tokens for all components.
857
+ * Change these to globally adjust component dimensions.
858
+ *
859
+ * Each component has sm/md/lg size variants with consistent
860
+ * heights, padding, and typography.
861
+ *
862
+ * @example
863
+ * ```tsx
864
+ * const { components } = useTheme();
865
+ *
866
+ * // Use component tokens for consistent sizing
867
+ * <View style={{
868
+ * height: components.button.md.height,
869
+ * paddingHorizontal: components.button.md.paddingHorizontal,
870
+ * }} />
871
+ * ```
872
+ */
873
+ /**
874
+ * Standard heights for interactive components.
875
+ *
876
+ * Based on touch target guidelines (minimum 44px).
877
+ */
878
+ declare const componentHeight: {
879
+ /** Small: 32px */
880
+ readonly sm: 32;
881
+ /** Medium: 44px (iOS recommended minimum) */
882
+ readonly md: 44;
883
+ /** Large: 52px */
884
+ readonly lg: 52;
885
+ };
886
+ /**
887
+ * Standard icon sizes for components.
888
+ */
889
+ declare const iconSize: {
890
+ /** Extra small: 12px */
891
+ readonly xs: 12;
892
+ /** Small: 16px */
893
+ readonly sm: 16;
894
+ /** Medium: 20px */
895
+ readonly md: 20;
896
+ /** Large: 24px */
897
+ readonly lg: 24;
898
+ /** Extra large: 32px */
899
+ readonly xl: 32;
900
+ };
901
+ /**
902
+ * Button component size tokens.
903
+ *
904
+ * Defines heights, padding, font sizes, and icon sizes for all button variants.
905
+ */
906
+ declare const buttonTokens: {
907
+ readonly sm: {
908
+ readonly height: 32;
909
+ readonly paddingHorizontal: 12;
910
+ readonly paddingVertical: 6;
911
+ readonly fontSize: 14;
912
+ readonly fontWeight: "600";
913
+ readonly iconSize: 16;
914
+ readonly gap: 6;
915
+ };
916
+ readonly md: {
917
+ readonly height: 44;
918
+ readonly paddingHorizontal: 16;
919
+ readonly paddingVertical: 10;
920
+ readonly fontSize: 16;
921
+ readonly fontWeight: "600";
922
+ readonly iconSize: 20;
923
+ readonly gap: 8;
924
+ };
925
+ readonly lg: {
926
+ readonly height: 52;
927
+ readonly paddingHorizontal: 24;
928
+ readonly paddingVertical: 14;
929
+ readonly fontSize: 18;
930
+ readonly fontWeight: "600";
931
+ readonly iconSize: 24;
932
+ readonly gap: 10;
933
+ };
934
+ };
935
+ /** Input component size tokens */
936
+ declare const inputTokens: {
937
+ readonly sm: {
938
+ readonly height: 32;
939
+ readonly paddingHorizontal: 12;
940
+ readonly paddingVertical: 6;
941
+ readonly borderWidth: 1;
942
+ readonly fontSize: 14;
943
+ readonly labelFontSize: 12;
944
+ readonly helperFontSize: 11;
945
+ readonly iconSize: 16;
946
+ };
947
+ readonly md: {
948
+ readonly height: 44;
949
+ readonly paddingHorizontal: 12;
950
+ readonly paddingVertical: 10;
951
+ readonly borderWidth: 1;
952
+ readonly fontSize: 16;
953
+ readonly labelFontSize: 14;
954
+ readonly helperFontSize: 12;
955
+ readonly iconSize: 20;
956
+ };
957
+ readonly lg: {
958
+ readonly height: 52;
959
+ readonly paddingHorizontal: 16;
960
+ readonly paddingVertical: 12;
961
+ readonly borderWidth: 1;
962
+ readonly fontSize: 18;
963
+ readonly labelFontSize: 16;
964
+ readonly helperFontSize: 14;
965
+ readonly iconSize: 24;
966
+ };
967
+ };
968
+ /** Checkbox component size tokens */
969
+ declare const checkboxTokens: {
970
+ readonly sm: {
971
+ readonly size: 18;
972
+ readonly borderWidth: 2;
973
+ readonly iconSize: 12;
974
+ readonly labelFontSize: 14;
975
+ readonly gap: 8;
976
+ };
977
+ readonly md: {
978
+ readonly size: 22;
979
+ readonly borderWidth: 2;
980
+ readonly iconSize: 14;
981
+ readonly labelFontSize: 16;
982
+ readonly gap: 10;
983
+ };
984
+ readonly lg: {
985
+ readonly size: 26;
986
+ readonly borderWidth: 2;
987
+ readonly iconSize: 18;
988
+ readonly labelFontSize: 18;
989
+ readonly gap: 12;
990
+ };
991
+ };
992
+ /** Switch component size tokens */
993
+ declare const switchTokens: {
994
+ readonly sm: {
995
+ readonly trackWidth: 40;
996
+ readonly trackHeight: 24;
997
+ readonly thumbSize: 20;
998
+ readonly thumbOffset: 2;
999
+ readonly labelFontSize: 14;
1000
+ readonly gap: 12;
1001
+ };
1002
+ readonly md: {
1003
+ readonly trackWidth: 50;
1004
+ readonly trackHeight: 30;
1005
+ readonly thumbSize: 26;
1006
+ readonly thumbOffset: 2;
1007
+ readonly labelFontSize: 16;
1008
+ readonly gap: 12;
1009
+ };
1010
+ readonly lg: {
1011
+ readonly trackWidth: 60;
1012
+ readonly trackHeight: 36;
1013
+ readonly thumbSize: 32;
1014
+ readonly thumbOffset: 2;
1015
+ readonly labelFontSize: 18;
1016
+ readonly gap: 16;
1017
+ };
1018
+ };
1019
+ /** Badge component size tokens */
1020
+ declare const badgeTokens: {
1021
+ readonly sm: {
1022
+ readonly paddingHorizontal: 6;
1023
+ readonly paddingVertical: 2;
1024
+ readonly fontSize: 11;
1025
+ readonly fontWeight: "500";
1026
+ };
1027
+ readonly md: {
1028
+ readonly paddingHorizontal: 10;
1029
+ readonly paddingVertical: 2;
1030
+ readonly fontSize: 12;
1031
+ readonly fontWeight: "500";
1032
+ };
1033
+ readonly lg: {
1034
+ readonly paddingHorizontal: 12;
1035
+ readonly paddingVertical: 4;
1036
+ readonly fontSize: 14;
1037
+ readonly fontWeight: "500";
1038
+ };
1039
+ };
1040
+ /** Avatar component size tokens */
1041
+ declare const avatarTokens: {
1042
+ readonly sm: {
1043
+ readonly size: 32;
1044
+ readonly fontSize: 11;
1045
+ readonly fontWeight: "600";
1046
+ };
1047
+ readonly md: {
1048
+ readonly size: 40;
1049
+ readonly fontSize: 14;
1050
+ readonly fontWeight: "600";
1051
+ };
1052
+ readonly lg: {
1053
+ readonly size: 56;
1054
+ readonly fontSize: 20;
1055
+ readonly fontWeight: "600";
1056
+ };
1057
+ };
1058
+ /** Card component tokens */
1059
+ declare const cardTokens: {
1060
+ readonly borderWidth: 1;
1061
+ readonly padding: 16;
1062
+ readonly headerPadding: 16;
1063
+ readonly contentPadding: 16;
1064
+ readonly footerPadding: 16;
1065
+ readonly gap: 8;
1066
+ readonly titleFontSize: 18;
1067
+ readonly titleFontWeight: "600";
1068
+ readonly descriptionFontSize: 14;
1069
+ };
1070
+ /** Overlay typography tokens (Dialog, AlertDialog, Sheet) */
1071
+ declare const overlayTypography: {
1072
+ readonly title: {
1073
+ readonly fontSize: 18;
1074
+ readonly fontWeight: "600";
1075
+ readonly lineHeight: 24;
1076
+ };
1077
+ readonly description: {
1078
+ readonly fontSize: 14;
1079
+ readonly fontWeight: "400";
1080
+ readonly lineHeight: 20;
1081
+ };
1082
+ };
1083
+ /** Spinner component size tokens */
1084
+ declare const spinnerTokens: {
1085
+ readonly sm: {
1086
+ readonly containerSize: 16;
1087
+ readonly indicatorSize: "small";
1088
+ };
1089
+ readonly md: {
1090
+ readonly containerSize: 24;
1091
+ readonly indicatorSize: "small";
1092
+ };
1093
+ readonly lg: {
1094
+ readonly containerSize: 36;
1095
+ readonly indicatorSize: "large";
1096
+ };
1097
+ };
1098
+ /** Skeleton component tokens */
1099
+ declare const skeletonTokens: {
1100
+ readonly radius: {
1101
+ readonly none: 0;
1102
+ readonly sm: 4;
1103
+ readonly md: 8;
1104
+ readonly lg: 12;
1105
+ readonly full: 9999;
1106
+ };
1107
+ readonly animation: {
1108
+ readonly duration: 1500;
1109
+ readonly minOpacity: 0.3;
1110
+ readonly maxOpacity: 0.6;
1111
+ };
1112
+ readonly text: {
1113
+ readonly defaultLines: 3;
1114
+ readonly defaultGap: 8;
1115
+ readonly defaultLineHeight: 16;
1116
+ readonly lastLineWidth: "60%";
1117
+ };
1118
+ };
1119
+ /** Progress component size tokens */
1120
+ declare const progressTokens: {
1121
+ readonly sm: {
1122
+ readonly height: 4;
1123
+ };
1124
+ readonly md: {
1125
+ readonly height: 8;
1126
+ };
1127
+ readonly lg: {
1128
+ readonly height: 12;
1129
+ };
1130
+ readonly animation: {
1131
+ readonly determinateDuration: 300;
1132
+ readonly indeterminateDuration: 1000;
1133
+ };
1134
+ };
1135
+ /** CircularProgress component size tokens */
1136
+ declare const circularProgressTokens: {
1137
+ readonly sm: {
1138
+ readonly size: 40;
1139
+ readonly strokeWidth: 4;
1140
+ readonly labelSize: 10;
1141
+ };
1142
+ readonly md: {
1143
+ readonly size: 64;
1144
+ readonly strokeWidth: 6;
1145
+ readonly labelSize: 14;
1146
+ };
1147
+ readonly lg: {
1148
+ readonly size: 96;
1149
+ readonly strokeWidth: 8;
1150
+ readonly labelSize: 20;
1151
+ };
1152
+ readonly animation: {
1153
+ readonly rotationDuration: 1200;
1154
+ readonly springDamping: 20;
1155
+ readonly springStiffness: 100;
1156
+ };
1157
+ };
1158
+ /**
1159
+ * List component constants for consistent dimensions.
1160
+ * dividerInset = iconSize (24) + leftSlot marginRight (spacing[3] = 12) + container paddingHorizontal (spacing[4] = 16) = 52
1161
+ * Using spacing[14] (56) for standard iOS list inset pattern.
1162
+ */
1163
+ declare const LIST_CONSTANTS: {
1164
+ /** Standard divider inset (aligns with icon + text layout) */
1165
+ readonly dividerInset: 56;
1166
+ /** Default list item min height */
1167
+ readonly itemMinHeight: 52;
1168
+ /** Legacy minHeight for backwards compatibility (thumbnail variant fallback) */
1169
+ readonly legacyMinHeight: 56;
1170
+ };
1171
+ /** List component tokens */
1172
+ declare const listTokens: {
1173
+ readonly divider: {
1174
+ readonly inset: 56;
1175
+ };
1176
+ readonly item: {
1177
+ readonly minHeight: 52;
1178
+ readonly paddingHorizontal: 16;
1179
+ readonly paddingVertical: 12;
1180
+ readonly iconSize: 24;
1181
+ readonly iconMargin: 12;
1182
+ };
1183
+ };
1184
+ declare const TABS_CONSTANTS: {
1185
+ /** Indicator animation spring config */
1186
+ readonly spring: {
1187
+ readonly damping: 20;
1188
+ readonly stiffness: 200;
1189
+ };
1190
+ /** Indicator height for underline variant */
1191
+ readonly indicatorHeight: 2;
1192
+ /** Container padding for pill variant */
1193
+ readonly pillPadding: 4;
1194
+ };
1195
+ /** Tabs component tokens */
1196
+ declare const tabsTokens: {
1197
+ readonly trigger: {
1198
+ readonly fontSize: 14;
1199
+ readonly fontWeight: "500";
1200
+ readonly activeFontWeight: "600";
1201
+ readonly paddingVertical: 8;
1202
+ readonly paddingHorizontal: 12;
1203
+ };
1204
+ readonly triggerUnderline: {
1205
+ readonly paddingVertical: 12;
1206
+ readonly paddingHorizontal: 16;
1207
+ };
1208
+ readonly content: {
1209
+ readonly marginTop: 16;
1210
+ };
1211
+ readonly indicator: {
1212
+ readonly pillTop: 4;
1213
+ readonly pillBottom: 4;
1214
+ readonly underlineHeight: 2;
1215
+ };
1216
+ };
1217
+ declare const ACCORDION_CONSTANTS: {
1218
+ /** Spring animation config for smooth expand/collapse */
1219
+ readonly spring: {
1220
+ readonly damping: 20;
1221
+ readonly stiffness: 200;
1222
+ readonly mass: 0.5;
1223
+ };
1224
+ /** Chevron icon size */
1225
+ readonly chevronSize: 16;
1226
+ };
1227
+ /** Accordion component tokens */
1228
+ declare const accordionTokens: {
1229
+ readonly trigger: {
1230
+ readonly fontSize: 16;
1231
+ readonly fontWeight: "500";
1232
+ readonly paddingVertical: 16;
1233
+ readonly paddingHorizontal: 16;
1234
+ readonly iconMargin: 8;
1235
+ };
1236
+ readonly content: {
1237
+ readonly paddingHorizontal: 16;
1238
+ readonly paddingBottom: 16;
1239
+ };
1240
+ readonly item: {
1241
+ readonly borderWidth: 1;
1242
+ };
1243
+ };
1244
+ declare const COLLAPSIBLE_CONSTANTS: {
1245
+ /** Spring animation config (same as accordion for consistency) */
1246
+ readonly spring: {
1247
+ readonly damping: 20;
1248
+ readonly stiffness: 200;
1249
+ readonly mass: 0.5;
1250
+ };
1251
+ /** Chevron icon size */
1252
+ readonly chevronSize: 16;
1253
+ };
1254
+ /** Collapsible component tokens */
1255
+ declare const collapsibleTokens: {
1256
+ readonly trigger: {
1257
+ readonly paddingVertical: 12;
1258
+ readonly paddingHorizontal: 16;
1259
+ readonly iconMargin: 8;
1260
+ };
1261
+ };
1262
+ declare const CAROUSEL_CONSTANTS: {
1263
+ /** Default autoplay interval in ms */
1264
+ readonly autoplayInterval: 4000;
1265
+ /** Scroll event throttle (16ms = 60fps) */
1266
+ readonly scrollEventThrottle: 16;
1267
+ };
1268
+ /** Carousel component tokens */
1269
+ declare const carouselTokens: {
1270
+ readonly indicator: {
1271
+ readonly dotSize: 8;
1272
+ readonly dotActiveWidth: 24;
1273
+ readonly dotActiveScale: 1;
1274
+ readonly dotInactiveScale: 0.8;
1275
+ readonly dotInactiveOpacity: 0.4;
1276
+ readonly gap: 6;
1277
+ readonly paddingVertical: 8;
1278
+ };
1279
+ readonly lineIndicator: {
1280
+ readonly activeWidth: 24;
1281
+ readonly inactiveWidth: 8;
1282
+ };
1283
+ };
1284
+ declare const SWIPEABLE_ROW_CONSTANTS: {
1285
+ /** Default action button width */
1286
+ readonly actionWidth: 80;
1287
+ /** Spring animation config */
1288
+ readonly spring: {
1289
+ readonly damping: 20;
1290
+ readonly stiffness: 200;
1291
+ };
1292
+ /** Velocity threshold for snap decision (px/s) */
1293
+ readonly velocityThreshold: 500;
1294
+ /** Full swipe trigger ratio (0.5 = 50% of screen width) */
1295
+ readonly fullSwipeRatio: 0.5;
1296
+ /** Resistance factor when overswiping */
1297
+ readonly resistanceFactor: 0.3;
1298
+ };
1299
+ /** SwipeableRow component tokens */
1300
+ declare const swipeableRowTokens: {
1301
+ readonly action: {
1302
+ readonly width: 80;
1303
+ readonly paddingHorizontal: 8;
1304
+ readonly iconMargin: 4;
1305
+ readonly labelFontSize: 11;
1306
+ readonly labelFontWeight: "600";
1307
+ };
1308
+ };
1309
+ /** Auth block tokens (Login, Signup) */
1310
+ declare const authBlockTokens: {
1311
+ readonly header: {
1312
+ readonly titleFontSize: 24;
1313
+ readonly titleFontWeight: "700";
1314
+ readonly subtitleFontSize: 16;
1315
+ };
1316
+ readonly form: {
1317
+ readonly forgotLinkFontSize: 14;
1318
+ readonly forgotLinkFontWeight: "500";
1319
+ readonly passwordHintFontSize: 11;
1320
+ };
1321
+ readonly divider: {
1322
+ readonly fontSize: 14;
1323
+ };
1324
+ readonly footer: {
1325
+ readonly textFontSize: 14;
1326
+ readonly linkFontSize: 14;
1327
+ readonly linkFontWeight: "600";
1328
+ };
1329
+ readonly social: {
1330
+ readonly gap: 12;
1331
+ };
1332
+ };
1333
+ /** State block tokens (Empty State, Error State) */
1334
+ declare const stateBlockTokens: {
1335
+ readonly default: {
1336
+ readonly titleFontSize: 20;
1337
+ readonly descriptionFontSize: 16;
1338
+ readonly iconContainerSize: 80;
1339
+ readonly iconContainerRadius: 40;
1340
+ };
1341
+ readonly compact: {
1342
+ readonly titleFontSize: 18;
1343
+ readonly descriptionFontSize: 14;
1344
+ readonly iconContainerSize: 64;
1345
+ readonly iconContainerRadius: 32;
1346
+ };
1347
+ readonly error: {
1348
+ readonly iconContainerSize: 88;
1349
+ readonly iconContainerRadius: 44;
1350
+ readonly iconContainerSizeCompact: 72;
1351
+ readonly iconContainerRadiusCompact: 36;
1352
+ readonly codeFontSize: 11;
1353
+ };
1354
+ readonly typography: {
1355
+ readonly titleFontWeight: "600";
1356
+ };
1357
+ };
1358
+ /** Profile block tokens */
1359
+ declare const profileBlockTokens: {
1360
+ readonly name: {
1361
+ readonly fontSize: number;
1362
+ readonly fontWeight: "700";
1363
+ };
1364
+ readonly subtitle: {
1365
+ readonly fontSize: 16;
1366
+ };
1367
+ readonly bio: {
1368
+ readonly fontSize: 16;
1369
+ readonly lineHeight: 22;
1370
+ };
1371
+ readonly stat: {
1372
+ readonly valueFontSize: 20;
1373
+ readonly valueFontWeight: "700";
1374
+ readonly labelFontSize: 12;
1375
+ };
1376
+ };
1377
+ /** Settings block tokens */
1378
+ declare const settingsBlockTokens: {
1379
+ readonly group: {
1380
+ readonly titleFontSize: 11;
1381
+ readonly titleFontWeight: "600";
1382
+ readonly titleLetterSpacing: 0.5;
1383
+ readonly descriptionFontSize: 12;
1384
+ };
1385
+ readonly item: {
1386
+ readonly labelFontSize: 16;
1387
+ readonly descriptionFontSize: 12;
1388
+ readonly displayValueFontSize: 16;
1389
+ readonly chevronFontSize: 16;
1390
+ readonly chevronFontWeight: "600";
1391
+ readonly paddingVertical: 14;
1392
+ readonly paddingHorizontal: 16;
1393
+ };
1394
+ };
1395
+ /** E-commerce block tokens (Banner, Hero, Pricing, Stats) */
1396
+ declare const ecommerceBlockTokens: {
1397
+ readonly banner: {
1398
+ readonly sm: {
1399
+ readonly padding: 12;
1400
+ readonly titleFontSize: 14;
1401
+ readonly subtitleFontSize: 11;
1402
+ readonly iconSize: 20;
1403
+ readonly minHeight: 56;
1404
+ };
1405
+ readonly md: {
1406
+ readonly padding: 16;
1407
+ readonly titleFontSize: 16;
1408
+ readonly subtitleFontSize: 14;
1409
+ readonly iconSize: 24;
1410
+ readonly minHeight: 72;
1411
+ };
1412
+ readonly lg: {
1413
+ readonly padding: 20;
1414
+ readonly titleFontSize: 20;
1415
+ readonly subtitleFontSize: 16;
1416
+ readonly iconSize: 32;
1417
+ readonly minHeight: 100;
1418
+ };
1419
+ readonly titleFontWeight: "700";
1420
+ readonly subtitleLineHeight: 20;
1421
+ };
1422
+ readonly hero: {
1423
+ readonly titleFontSize: 30;
1424
+ readonly titleFontWeight: 800;
1425
+ readonly titleLineHeight: 38;
1426
+ readonly subtitleFontSize: 16;
1427
+ readonly subtitleLineHeight: 24;
1428
+ readonly defaultHeight: 400;
1429
+ };
1430
+ readonly pricing: {
1431
+ readonly planNameFontSize: 20;
1432
+ readonly planNameFontWeight: "700";
1433
+ readonly descriptionFontSize: 14;
1434
+ readonly priceFontSize: 40;
1435
+ readonly priceFontWeight: 800;
1436
+ readonly priceLineHeight: 48;
1437
+ readonly intervalFontSize: 16;
1438
+ readonly intervalFontWeight: "500";
1439
+ readonly originalPriceFontSize: 16;
1440
+ readonly savingsFontSize: 12;
1441
+ readonly savingsFontWeight: "600";
1442
+ readonly featureTextFontSize: 14;
1443
+ readonly featureIconSize: 20;
1444
+ readonly featureIconInnerSize: 12;
1445
+ readonly badgeTopOffset: -12;
1446
+ };
1447
+ readonly stats: {
1448
+ readonly labelFontSize: 14;
1449
+ readonly labelFontWeight: "500";
1450
+ readonly valueFontSize: 30;
1451
+ readonly valueFontWeight: "700";
1452
+ readonly trendFontSize: 14;
1453
+ readonly trendFontWeight: "600";
1454
+ readonly trendLabelFontSize: 12;
1455
+ };
1456
+ };
1457
+ /** Info block tokens (Feature, Content, Onboarding, Media, Notification) */
1458
+ declare const infoBlockTokens: {
1459
+ readonly feature: {
1460
+ readonly titleFontSize: 16;
1461
+ readonly titleFontWeight: "600";
1462
+ readonly descriptionFontSize: 14;
1463
+ readonly descriptionLineHeight: 20;
1464
+ readonly iconContainerSize: 56;
1465
+ readonly iconContainerSizeHorizontal: 48;
1466
+ };
1467
+ readonly content: {
1468
+ readonly titleFontSize: 18;
1469
+ readonly titleFontWeight: "700";
1470
+ readonly titleLineHeight: 24;
1471
+ readonly subtitleFontSize: 14;
1472
+ readonly subtitleLineHeight: 20;
1473
+ readonly defaultAspectRatio: number;
1474
+ };
1475
+ readonly onboarding: {
1476
+ readonly titleFontSize: 24;
1477
+ readonly titleFontWeight: "700";
1478
+ readonly titleLineHeight: 34;
1479
+ readonly descriptionFontSize: 16;
1480
+ readonly descriptionLineHeight: 24;
1481
+ readonly dotSize: 8;
1482
+ readonly dotActiveWidth: 24;
1483
+ readonly paginationMarginTop: 32;
1484
+ readonly illustrationPaddingHorizontal: 40;
1485
+ };
1486
+ readonly socialProof: {
1487
+ readonly textFontSize: 14;
1488
+ readonly textLineHeight: 18;
1489
+ readonly avatarOverlapRatio: 0.3;
1490
+ };
1491
+ readonly notification: {
1492
+ readonly textFontSize: 15;
1493
+ readonly textLineHeight: 20;
1494
+ readonly titleFontWeight: "600";
1495
+ readonly timeFontSize: 12;
1496
+ readonly unreadDotSize: 8;
1497
+ readonly avatarSize: 44;
1498
+ };
1499
+ readonly media: {
1500
+ readonly defaultSize: 100;
1501
+ readonly playButtonSize: 44;
1502
+ readonly playIconSize: 24;
1503
+ readonly checkboxSize: 24;
1504
+ readonly checkIconSize: 14;
1505
+ readonly durationBadgeMargin: 4;
1506
+ readonly checkboxOffset: 8;
1507
+ };
1508
+ readonly order: {
1509
+ readonly orderIdFontSize: 15;
1510
+ readonly orderIdFontWeight: "600";
1511
+ readonly dateFontSize: 12;
1512
+ readonly itemCountFontSize: 14;
1513
+ readonly totalFontSize: 16;
1514
+ readonly totalFontWeight: "700";
1515
+ readonly productImageSize: 48;
1516
+ readonly moreTextFontSize: 14;
1517
+ readonly moreTextFontWeight: "600";
1518
+ };
1519
+ readonly task: {
1520
+ readonly titleFontSize: 15;
1521
+ readonly titleFontWeight: "500";
1522
+ readonly titleLineHeight: 20;
1523
+ readonly descriptionFontSize: 12;
1524
+ readonly dueDateFontSize: 11;
1525
+ readonly moreTagsFontSize: 11;
1526
+ readonly flagIconSize: 12;
1527
+ readonly calendarIconSize: 12;
1528
+ };
1529
+ readonly searchHeader: {
1530
+ readonly filterBadgeOffset: -4;
1531
+ };
1532
+ };
1533
+ /**
1534
+ * Shared card block visual tokens
1535
+ * Used by: ProductCard, ArticleCard, EventCard, ReviewCard
1536
+ */
1537
+ /** Card block tokens (Product, Article, Event, Review cards) */
1538
+ declare const cardBlockTokens: {
1539
+ readonly shadow: "sm";
1540
+ readonly borderWidth: 1;
1541
+ readonly image: {
1542
+ readonly productAspectRatio: 1;
1543
+ readonly articleAspectRatio: 1.78;
1544
+ readonly eventAspectRatio: 2.4;
1545
+ readonly reviewAspectRatio: 1;
1546
+ };
1547
+ readonly header: {
1548
+ readonly paddingVertical: 12;
1549
+ readonly paddingHorizontal: 16;
1550
+ readonly gap: 8;
1551
+ };
1552
+ readonly content: {
1553
+ readonly paddingVertical: 12;
1554
+ readonly paddingHorizontal: 16;
1555
+ readonly gap: 6;
1556
+ };
1557
+ readonly footer: {
1558
+ readonly paddingVertical: 12;
1559
+ readonly paddingHorizontal: 16;
1560
+ readonly gap: 8;
1561
+ };
1562
+ readonly typography: {
1563
+ readonly titleFontSize: 16;
1564
+ readonly titleFontWeight: "600";
1565
+ readonly subtitleFontSize: 14;
1566
+ readonly priceFontSize: 18;
1567
+ readonly priceFontWeight: "700";
1568
+ readonly metaFontSize: 12;
1569
+ };
1570
+ };
1571
+ /**
1572
+ * Social interaction block tokens
1573
+ * Used by: FeedPostCard, ChatBubble, CommentItem, UserListItem
1574
+ */
1575
+ /** Social block tokens (Feed, Chat, Comments, User lists) */
1576
+ declare const socialBlockTokens: {
1577
+ readonly action: {
1578
+ readonly iconSize: 20;
1579
+ readonly gap: 4;
1580
+ readonly touchTarget: 44;
1581
+ };
1582
+ readonly avatar: {
1583
+ readonly postSize: "md";
1584
+ readonly commentSize: "sm";
1585
+ readonly chatSize: "sm";
1586
+ readonly listSize: "md";
1587
+ };
1588
+ readonly bubble: {
1589
+ readonly maxWidth: "75%";
1590
+ readonly paddingVertical: 8;
1591
+ readonly paddingHorizontal: 12;
1592
+ readonly ownBackground: "primary";
1593
+ readonly otherBackground: "secondary";
1594
+ };
1595
+ readonly comment: {
1596
+ readonly indentPerLevel: 24;
1597
+ readonly maxNestingLevels: 3;
1598
+ };
1599
+ readonly typography: {
1600
+ readonly authorFontSize: 14;
1601
+ readonly authorFontWeight: "600";
1602
+ readonly contentFontSize: 16;
1603
+ readonly contentLineHeight: 22;
1604
+ readonly timeFontSize: 12;
1605
+ readonly actionFontSize: 12;
1606
+ };
1607
+ };
1608
+ /**
1609
+ * Product block tokens (Phase 10 - Product cards and cart items)
1610
+ * Used by: ProductCard, CartItem
1611
+ */
1612
+ /** Product block tokens (Product cards, Cart items) */
1613
+ declare const productBlockTokens: {
1614
+ readonly product: {
1615
+ readonly badgePosition: {
1616
+ readonly top: 8;
1617
+ readonly left: 8;
1618
+ };
1619
+ readonly wishlistPosition: {
1620
+ readonly top: 8;
1621
+ readonly right: 8;
1622
+ };
1623
+ readonly ratingSize: "sm";
1624
+ };
1625
+ readonly cart: {
1626
+ readonly imageSize: 80;
1627
+ readonly stepperSize: "sm";
1628
+ readonly swipeActionWidth: 80;
1629
+ };
1630
+ readonly pricing: {
1631
+ readonly originalPriceOpacity: 0.6;
1632
+ readonly originalPriceDecoration: "line-through";
1633
+ readonly discountColor: "destructive";
1634
+ };
1635
+ };
1636
+ /** Calendar component size tokens */
1637
+ declare const calendarTokens: {
1638
+ readonly sm: {
1639
+ readonly daySize: 32;
1640
+ readonly fontSize: 12;
1641
+ readonly headerFontSize: 14;
1642
+ readonly gap: 2;
1643
+ readonly containerPadding: 8;
1644
+ readonly weekNumberWidth: 24;
1645
+ readonly navButtonPadding: 8;
1646
+ };
1647
+ readonly md: {
1648
+ readonly daySize: 40;
1649
+ readonly fontSize: 14;
1650
+ readonly headerFontSize: 16;
1651
+ readonly gap: 4;
1652
+ readonly containerPadding: 8;
1653
+ readonly weekNumberWidth: 24;
1654
+ readonly navButtonPadding: 8;
1655
+ };
1656
+ };
1657
+ /** DateTimePicker component tokens */
1658
+ declare const dateTimePickerTokens: {
1659
+ readonly input: {
1660
+ readonly height: 44;
1661
+ readonly paddingHorizontal: 16;
1662
+ readonly paddingVertical: 12;
1663
+ readonly iconMarginLeft: 8;
1664
+ };
1665
+ readonly sheet: {
1666
+ readonly borderRadius: 20;
1667
+ readonly handlePaddingVertical: 12;
1668
+ readonly handleWidth: 36;
1669
+ readonly handleHeight: 4;
1670
+ readonly headerPaddingHorizontal: 16;
1671
+ readonly headerPaddingBottom: 12;
1672
+ readonly pickerPaddingVertical: 16;
1673
+ readonly pickerHeight: 200;
1674
+ };
1675
+ readonly fallback: {
1676
+ readonly padding: 24;
1677
+ readonly gap: 12;
1678
+ };
1679
+ readonly icon: {
1680
+ readonly width: 20;
1681
+ readonly height: 20;
1682
+ readonly topWidth: 14;
1683
+ readonly topHeight: 3;
1684
+ readonly bodyWidth: 16;
1685
+ readonly bodyHeight: 14;
1686
+ readonly dotSize: 3;
1687
+ readonly dotGap: 3;
1688
+ };
1689
+ };
1690
+ /** Form component tokens */
1691
+ declare const formTokens: {
1692
+ readonly item: {
1693
+ readonly marginBottom: 16;
1694
+ };
1695
+ readonly label: {
1696
+ readonly fontSize: 14;
1697
+ readonly fontWeight: "500";
1698
+ readonly marginBottom: 6;
1699
+ };
1700
+ readonly description: {
1701
+ readonly fontSize: 12;
1702
+ readonly marginTop: 4;
1703
+ };
1704
+ readonly message: {
1705
+ readonly fontSize: 12;
1706
+ readonly fontWeight: "500";
1707
+ readonly marginTop: 4;
1708
+ };
1709
+ };
1710
+ /** ImageGallery component tokens */
1711
+ declare const imageGalleryTokens: {
1712
+ readonly grid: {
1713
+ readonly defaultColumns: 3;
1714
+ readonly defaultSpacing: 2;
1715
+ readonly defaultAspectRatio: 1;
1716
+ };
1717
+ readonly fullscreen: {
1718
+ readonly backdropOpacity: 0.95;
1719
+ readonly closeButtonTop: 50;
1720
+ readonly closeButtonTopAndroid: 20;
1721
+ readonly closeButtonSize: 36;
1722
+ readonly closeLineWidth: 18;
1723
+ readonly closeLineHeight: 2;
1724
+ readonly pageIndicatorBottom: 50;
1725
+ readonly dotSize: 6;
1726
+ readonly dotGap: 6;
1727
+ };
1728
+ };
1729
+ /** Pagination component size tokens */
1730
+ declare const paginationTokens: {
1731
+ readonly sm: {
1732
+ readonly dotSize: 6;
1733
+ readonly dotGap: 6;
1734
+ readonly buttonSize: 28;
1735
+ readonly fontSize: 12;
1736
+ readonly numberSize: 28;
1737
+ };
1738
+ readonly md: {
1739
+ readonly dotSize: 8;
1740
+ readonly dotGap: 8;
1741
+ readonly buttonSize: 36;
1742
+ readonly fontSize: 14;
1743
+ readonly numberSize: 36;
1744
+ };
1745
+ readonly lg: {
1746
+ readonly dotSize: 10;
1747
+ readonly dotGap: 10;
1748
+ readonly buttonSize: 44;
1749
+ readonly fontSize: 16;
1750
+ readonly numberSize: 44;
1751
+ };
1752
+ readonly simple: {
1753
+ readonly gap: 4;
1754
+ };
1755
+ };
1756
+ /** Stories component size tokens */
1757
+ declare const storiesTokens: {
1758
+ readonly sm: {
1759
+ readonly outer: 56;
1760
+ readonly inner: 50;
1761
+ readonly avatar: 46;
1762
+ readonly borderWidth: 3;
1763
+ readonly fontSize: 11;
1764
+ readonly plusSize: 14;
1765
+ readonly nameMarginTop: 4;
1766
+ };
1767
+ readonly md: {
1768
+ readonly outer: 72;
1769
+ readonly inner: 64;
1770
+ readonly avatar: 60;
1771
+ readonly borderWidth: 3;
1772
+ readonly fontSize: 11;
1773
+ readonly plusSize: 18;
1774
+ readonly nameMarginTop: 4;
1775
+ };
1776
+ readonly lg: {
1777
+ readonly outer: 88;
1778
+ readonly inner: 80;
1779
+ readonly avatar: 74;
1780
+ readonly borderWidth: 4;
1781
+ readonly fontSize: 12;
1782
+ readonly plusSize: 22;
1783
+ readonly nameMarginTop: 4;
1784
+ };
1785
+ readonly row: {
1786
+ readonly paddingHorizontal: 16;
1787
+ readonly gap: 12;
1788
+ };
1789
+ };
1790
+ /** SearchInput component tokens */
1791
+ declare const searchInputTokens: {
1792
+ readonly height: 44;
1793
+ readonly paddingHorizontal: 12;
1794
+ readonly iconSize: 20;
1795
+ readonly iconMarginRight: 8;
1796
+ readonly clearSize: 18;
1797
+ readonly rightContainerWidth: 24;
1798
+ readonly rightContainerMarginLeft: 8;
1799
+ readonly fontSize: 16;
1800
+ };
1801
+ /**
1802
+ * Complete component token collection.
1803
+ *
1804
+ * Access all component size and style tokens via `useTheme().components`.
1805
+ */
1806
+ declare const components: {
1807
+ readonly button: {
1808
+ readonly sm: {
1809
+ readonly height: 32;
1810
+ readonly paddingHorizontal: 12;
1811
+ readonly paddingVertical: 6;
1812
+ readonly fontSize: 14;
1813
+ readonly fontWeight: "600";
1814
+ readonly iconSize: 16;
1815
+ readonly gap: 6;
1816
+ };
1817
+ readonly md: {
1818
+ readonly height: 44;
1819
+ readonly paddingHorizontal: 16;
1820
+ readonly paddingVertical: 10;
1821
+ readonly fontSize: 16;
1822
+ readonly fontWeight: "600";
1823
+ readonly iconSize: 20;
1824
+ readonly gap: 8;
1825
+ };
1826
+ readonly lg: {
1827
+ readonly height: 52;
1828
+ readonly paddingHorizontal: 24;
1829
+ readonly paddingVertical: 14;
1830
+ readonly fontSize: 18;
1831
+ readonly fontWeight: "600";
1832
+ readonly iconSize: 24;
1833
+ readonly gap: 10;
1834
+ };
1835
+ };
1836
+ readonly iconButton: {
1837
+ readonly sm: {
1838
+ readonly size: 32;
1839
+ readonly iconSize: 16;
1840
+ };
1841
+ readonly md: {
1842
+ readonly size: 40;
1843
+ readonly iconSize: 20;
1844
+ };
1845
+ readonly lg: {
1846
+ readonly size: 48;
1847
+ readonly iconSize: 24;
1848
+ };
1849
+ readonly xl: {
1850
+ readonly size: 56;
1851
+ readonly iconSize: 28;
1852
+ };
1853
+ };
1854
+ readonly fab: {
1855
+ readonly sm: {
1856
+ readonly size: 40;
1857
+ readonly iconSize: 18;
1858
+ readonly fontSize: 12;
1859
+ readonly paddingHorizontal: 12;
1860
+ readonly fontWeight: "600";
1861
+ };
1862
+ readonly md: {
1863
+ readonly size: 56;
1864
+ readonly iconSize: 24;
1865
+ readonly fontSize: 14;
1866
+ readonly paddingHorizontal: 16;
1867
+ readonly fontWeight: "600";
1868
+ };
1869
+ readonly lg: {
1870
+ readonly size: 72;
1871
+ readonly iconSize: 32;
1872
+ readonly fontSize: 16;
1873
+ readonly paddingHorizontal: 20;
1874
+ readonly fontWeight: "600";
1875
+ };
1876
+ };
1877
+ readonly segmentedControl: {
1878
+ readonly sm: {
1879
+ readonly height: 32;
1880
+ readonly fontSize: 12;
1881
+ readonly padding: 4;
1882
+ readonly fontWeight: "500";
1883
+ readonly activeFontWeight: "600";
1884
+ };
1885
+ readonly md: {
1886
+ readonly height: 40;
1887
+ readonly fontSize: 14;
1888
+ readonly padding: 4;
1889
+ readonly fontWeight: "500";
1890
+ readonly activeFontWeight: "600";
1891
+ };
1892
+ readonly lg: {
1893
+ readonly height: 48;
1894
+ readonly fontSize: 16;
1895
+ readonly padding: 4;
1896
+ readonly fontWeight: "500";
1897
+ readonly activeFontWeight: "600";
1898
+ };
1899
+ };
1900
+ readonly actionSheet: {
1901
+ readonly item: {
1902
+ readonly height: 52;
1903
+ readonly fontSize: 16;
1904
+ readonly fontWeight: "500";
1905
+ readonly iconSize: 20;
1906
+ readonly paddingHorizontal: 16;
1907
+ readonly gap: 12;
1908
+ };
1909
+ readonly header: {
1910
+ readonly fontSize: 12;
1911
+ readonly fontWeight: "600";
1912
+ readonly paddingVertical: 12;
1913
+ readonly paddingHorizontal: 16;
1914
+ };
1915
+ readonly cancel: {
1916
+ readonly height: 52;
1917
+ readonly fontSize: 16;
1918
+ readonly fontWeight: "600";
1919
+ };
1920
+ };
1921
+ readonly input: {
1922
+ readonly sm: {
1923
+ readonly height: 32;
1924
+ readonly paddingHorizontal: 12;
1925
+ readonly paddingVertical: 6;
1926
+ readonly borderWidth: 1;
1927
+ readonly fontSize: 14;
1928
+ readonly labelFontSize: 12;
1929
+ readonly helperFontSize: 11;
1930
+ readonly iconSize: 16;
1931
+ };
1932
+ readonly md: {
1933
+ readonly height: 44;
1934
+ readonly paddingHorizontal: 12;
1935
+ readonly paddingVertical: 10;
1936
+ readonly borderWidth: 1;
1937
+ readonly fontSize: 16;
1938
+ readonly labelFontSize: 14;
1939
+ readonly helperFontSize: 12;
1940
+ readonly iconSize: 20;
1941
+ };
1942
+ readonly lg: {
1943
+ readonly height: 52;
1944
+ readonly paddingHorizontal: 16;
1945
+ readonly paddingVertical: 12;
1946
+ readonly borderWidth: 1;
1947
+ readonly fontSize: 18;
1948
+ readonly labelFontSize: 16;
1949
+ readonly helperFontSize: 14;
1950
+ readonly iconSize: 24;
1951
+ };
1952
+ };
1953
+ readonly textarea: {
1954
+ readonly sm: {
1955
+ readonly minHeight: number;
1956
+ readonly paddingHorizontal: 12;
1957
+ readonly paddingVertical: 8;
1958
+ readonly borderWidth: 1;
1959
+ readonly fontSize: 14;
1960
+ readonly lineHeight: 20;
1961
+ readonly labelFontSize: 12;
1962
+ readonly helperFontSize: 11;
1963
+ };
1964
+ readonly md: {
1965
+ readonly minHeight: number;
1966
+ readonly paddingHorizontal: 12;
1967
+ readonly paddingVertical: 10;
1968
+ readonly borderWidth: 1;
1969
+ readonly fontSize: 16;
1970
+ readonly lineHeight: 22;
1971
+ readonly labelFontSize: 14;
1972
+ readonly helperFontSize: 12;
1973
+ };
1974
+ readonly lg: {
1975
+ readonly minHeight: number;
1976
+ readonly paddingHorizontal: 16;
1977
+ readonly paddingVertical: 12;
1978
+ readonly borderWidth: 1;
1979
+ readonly fontSize: 18;
1980
+ readonly lineHeight: 24;
1981
+ readonly labelFontSize: 16;
1982
+ readonly helperFontSize: 14;
1983
+ };
1984
+ };
1985
+ readonly select: {
1986
+ readonly sm: {
1987
+ readonly height: 32;
1988
+ readonly paddingHorizontal: 12;
1989
+ readonly borderWidth: 1;
1990
+ readonly fontSize: 14;
1991
+ readonly labelFontSize: 12;
1992
+ readonly helperFontSize: 11;
1993
+ readonly iconSize: 16;
1994
+ };
1995
+ readonly md: {
1996
+ readonly height: 44;
1997
+ readonly paddingHorizontal: 12;
1998
+ readonly borderWidth: 1;
1999
+ readonly fontSize: 16;
2000
+ readonly labelFontSize: 14;
2001
+ readonly helperFontSize: 12;
2002
+ readonly iconSize: 20;
2003
+ };
2004
+ readonly lg: {
2005
+ readonly height: 52;
2006
+ readonly paddingHorizontal: 16;
2007
+ readonly borderWidth: 1;
2008
+ readonly fontSize: 18;
2009
+ readonly labelFontSize: 16;
2010
+ readonly helperFontSize: 14;
2011
+ readonly iconSize: 24;
2012
+ };
2013
+ };
2014
+ readonly slider: {
2015
+ readonly sm: {
2016
+ readonly trackHeight: 4;
2017
+ readonly thumbSize: 16;
2018
+ readonly labelFontSize: 14;
2019
+ readonly valueFontSize: 14;
2020
+ };
2021
+ readonly md: {
2022
+ readonly trackHeight: 6;
2023
+ readonly thumbSize: 20;
2024
+ readonly labelFontSize: 16;
2025
+ readonly valueFontSize: 16;
2026
+ };
2027
+ readonly lg: {
2028
+ readonly trackHeight: 8;
2029
+ readonly thumbSize: 24;
2030
+ readonly labelFontSize: 18;
2031
+ readonly valueFontSize: 18;
2032
+ };
2033
+ };
2034
+ readonly stepper: {
2035
+ readonly sm: {
2036
+ readonly height: 32;
2037
+ readonly buttonWidth: 32;
2038
+ readonly valueWidth: 40;
2039
+ readonly fontSize: 14;
2040
+ readonly iconSize: 16;
2041
+ readonly labelFontSize: 14;
2042
+ };
2043
+ readonly md: {
2044
+ readonly height: 44;
2045
+ readonly buttonWidth: 40;
2046
+ readonly valueWidth: 48;
2047
+ readonly fontSize: 16;
2048
+ readonly iconSize: 20;
2049
+ readonly labelFontSize: 16;
2050
+ };
2051
+ readonly lg: {
2052
+ readonly height: 52;
2053
+ readonly buttonWidth: 48;
2054
+ readonly valueWidth: 56;
2055
+ readonly fontSize: 18;
2056
+ readonly iconSize: 24;
2057
+ readonly labelFontSize: 18;
2058
+ };
2059
+ };
2060
+ readonly checkbox: {
2061
+ readonly sm: {
2062
+ readonly size: 18;
2063
+ readonly borderWidth: 2;
2064
+ readonly iconSize: 12;
2065
+ readonly labelFontSize: 14;
2066
+ readonly gap: 8;
2067
+ };
2068
+ readonly md: {
2069
+ readonly size: 22;
2070
+ readonly borderWidth: 2;
2071
+ readonly iconSize: 14;
2072
+ readonly labelFontSize: 16;
2073
+ readonly gap: 10;
2074
+ };
2075
+ readonly lg: {
2076
+ readonly size: 26;
2077
+ readonly borderWidth: 2;
2078
+ readonly iconSize: 18;
2079
+ readonly labelFontSize: 18;
2080
+ readonly gap: 12;
2081
+ };
2082
+ };
2083
+ readonly switch: {
2084
+ readonly sm: {
2085
+ readonly trackWidth: 40;
2086
+ readonly trackHeight: 24;
2087
+ readonly thumbSize: 20;
2088
+ readonly thumbOffset: 2;
2089
+ readonly labelFontSize: 14;
2090
+ readonly gap: 12;
2091
+ };
2092
+ readonly md: {
2093
+ readonly trackWidth: 50;
2094
+ readonly trackHeight: 30;
2095
+ readonly thumbSize: 26;
2096
+ readonly thumbOffset: 2;
2097
+ readonly labelFontSize: 16;
2098
+ readonly gap: 12;
2099
+ };
2100
+ readonly lg: {
2101
+ readonly trackWidth: 60;
2102
+ readonly trackHeight: 36;
2103
+ readonly thumbSize: 32;
2104
+ readonly thumbOffset: 2;
2105
+ readonly labelFontSize: 18;
2106
+ readonly gap: 16;
2107
+ };
2108
+ };
2109
+ readonly radio: {
2110
+ readonly sm: {
2111
+ readonly outerSize: 16;
2112
+ readonly innerSize: 8;
2113
+ readonly borderWidth: 2;
2114
+ readonly labelFontSize: 14;
2115
+ readonly descriptionFontSize: 12;
2116
+ readonly gap: 8;
2117
+ };
2118
+ readonly md: {
2119
+ readonly outerSize: 20;
2120
+ readonly innerSize: 10;
2121
+ readonly borderWidth: 2;
2122
+ readonly labelFontSize: 16;
2123
+ readonly descriptionFontSize: 14;
2124
+ readonly gap: 10;
2125
+ };
2126
+ readonly lg: {
2127
+ readonly outerSize: 24;
2128
+ readonly innerSize: 12;
2129
+ readonly borderWidth: 2;
2130
+ readonly labelFontSize: 18;
2131
+ readonly descriptionFontSize: 16;
2132
+ readonly gap: 12;
2133
+ };
2134
+ };
2135
+ readonly tagInput: {
2136
+ readonly sm: {
2137
+ readonly minHeight: 32;
2138
+ readonly padding: 8;
2139
+ readonly tagHeight: 24;
2140
+ readonly tagFontSize: 11;
2141
+ readonly inputFontSize: 14;
2142
+ readonly labelFontSize: 12;
2143
+ readonly helperFontSize: 11;
2144
+ readonly gap: 4;
2145
+ };
2146
+ readonly md: {
2147
+ readonly minHeight: 44;
2148
+ readonly padding: 12;
2149
+ readonly tagHeight: 28;
2150
+ readonly tagFontSize: 12;
2151
+ readonly inputFontSize: 16;
2152
+ readonly labelFontSize: 14;
2153
+ readonly helperFontSize: 12;
2154
+ readonly gap: 6;
2155
+ };
2156
+ readonly lg: {
2157
+ readonly minHeight: 52;
2158
+ readonly padding: 16;
2159
+ readonly tagHeight: 32;
2160
+ readonly tagFontSize: 14;
2161
+ readonly inputFontSize: 18;
2162
+ readonly labelFontSize: 16;
2163
+ readonly helperFontSize: 14;
2164
+ readonly gap: 8;
2165
+ };
2166
+ };
2167
+ readonly badge: {
2168
+ readonly sm: {
2169
+ readonly paddingHorizontal: 6;
2170
+ readonly paddingVertical: 2;
2171
+ readonly fontSize: 11;
2172
+ readonly fontWeight: "500";
2173
+ };
2174
+ readonly md: {
2175
+ readonly paddingHorizontal: 10;
2176
+ readonly paddingVertical: 2;
2177
+ readonly fontSize: 12;
2178
+ readonly fontWeight: "500";
2179
+ };
2180
+ readonly lg: {
2181
+ readonly paddingHorizontal: 12;
2182
+ readonly paddingVertical: 4;
2183
+ readonly fontSize: 14;
2184
+ readonly fontWeight: "500";
2185
+ };
2186
+ };
2187
+ readonly avatar: {
2188
+ readonly sm: {
2189
+ readonly size: 32;
2190
+ readonly fontSize: 11;
2191
+ readonly fontWeight: "600";
2192
+ };
2193
+ readonly md: {
2194
+ readonly size: 40;
2195
+ readonly fontSize: 14;
2196
+ readonly fontWeight: "600";
2197
+ };
2198
+ readonly lg: {
2199
+ readonly size: 56;
2200
+ readonly fontSize: 20;
2201
+ readonly fontWeight: "600";
2202
+ };
2203
+ };
2204
+ readonly chip: {
2205
+ readonly sm: {
2206
+ readonly paddingHorizontal: 10;
2207
+ readonly paddingVertical: 4;
2208
+ readonly fontSize: 12;
2209
+ readonly iconSize: 16;
2210
+ };
2211
+ readonly md: {
2212
+ readonly paddingHorizontal: 14;
2213
+ readonly paddingVertical: 6;
2214
+ readonly fontSize: 14;
2215
+ readonly iconSize: 16;
2216
+ };
2217
+ readonly lg: {
2218
+ readonly paddingHorizontal: 20;
2219
+ readonly paddingVertical: 8;
2220
+ readonly fontSize: 16;
2221
+ readonly iconSize: 20;
2222
+ };
2223
+ };
2224
+ readonly label: {
2225
+ readonly sm: {
2226
+ readonly fontSize: 12;
2227
+ readonly lineHeight: 16;
2228
+ readonly fontWeight: "500";
2229
+ };
2230
+ readonly md: {
2231
+ readonly fontSize: 14;
2232
+ readonly lineHeight: 20;
2233
+ readonly fontWeight: "500";
2234
+ };
2235
+ readonly lg: {
2236
+ readonly fontSize: 16;
2237
+ readonly lineHeight: 24;
2238
+ readonly fontWeight: "500";
2239
+ };
2240
+ };
2241
+ readonly rating: {
2242
+ readonly sm: {
2243
+ readonly starSize: 18;
2244
+ readonly gap: 2;
2245
+ };
2246
+ readonly md: {
2247
+ readonly starSize: 26;
2248
+ readonly gap: 4;
2249
+ };
2250
+ readonly lg: {
2251
+ readonly starSize: 34;
2252
+ readonly gap: 6;
2253
+ };
2254
+ };
2255
+ readonly avatarStack: {
2256
+ readonly sm: {
2257
+ readonly size: 28;
2258
+ readonly fontSize: 10;
2259
+ readonly borderWidth: 2;
2260
+ };
2261
+ readonly md: {
2262
+ readonly size: 36;
2263
+ readonly fontSize: 12;
2264
+ readonly borderWidth: 2;
2265
+ };
2266
+ readonly lg: {
2267
+ readonly size: 44;
2268
+ readonly fontSize: 14;
2269
+ readonly borderWidth: 3;
2270
+ };
2271
+ readonly xl: {
2272
+ readonly size: 56;
2273
+ readonly fontSize: 18;
2274
+ readonly borderWidth: 3;
2275
+ };
2276
+ };
2277
+ readonly card: {
2278
+ readonly borderWidth: 1;
2279
+ readonly padding: 16;
2280
+ readonly headerPadding: 16;
2281
+ readonly contentPadding: 16;
2282
+ readonly footerPadding: 16;
2283
+ readonly gap: 8;
2284
+ readonly titleFontSize: 18;
2285
+ readonly titleFontWeight: "600";
2286
+ readonly descriptionFontSize: 14;
2287
+ };
2288
+ readonly overlayTypography: {
2289
+ readonly title: {
2290
+ readonly fontSize: 18;
2291
+ readonly fontWeight: "600";
2292
+ readonly lineHeight: 24;
2293
+ };
2294
+ readonly description: {
2295
+ readonly fontSize: 14;
2296
+ readonly fontWeight: "400";
2297
+ readonly lineHeight: 20;
2298
+ };
2299
+ };
2300
+ readonly spinner: {
2301
+ readonly sm: {
2302
+ readonly containerSize: 16;
2303
+ readonly indicatorSize: "small";
2304
+ };
2305
+ readonly md: {
2306
+ readonly containerSize: 24;
2307
+ readonly indicatorSize: "small";
2308
+ };
2309
+ readonly lg: {
2310
+ readonly containerSize: 36;
2311
+ readonly indicatorSize: "large";
2312
+ };
2313
+ };
2314
+ readonly skeleton: {
2315
+ readonly radius: {
2316
+ readonly none: 0;
2317
+ readonly sm: 4;
2318
+ readonly md: 8;
2319
+ readonly lg: 12;
2320
+ readonly full: 9999;
2321
+ };
2322
+ readonly animation: {
2323
+ readonly duration: 1500;
2324
+ readonly minOpacity: 0.3;
2325
+ readonly maxOpacity: 0.6;
2326
+ };
2327
+ readonly text: {
2328
+ readonly defaultLines: 3;
2329
+ readonly defaultGap: 8;
2330
+ readonly defaultLineHeight: 16;
2331
+ readonly lastLineWidth: "60%";
2332
+ };
2333
+ };
2334
+ readonly progress: {
2335
+ readonly sm: {
2336
+ readonly height: 4;
2337
+ };
2338
+ readonly md: {
2339
+ readonly height: 8;
2340
+ };
2341
+ readonly lg: {
2342
+ readonly height: 12;
2343
+ };
2344
+ readonly animation: {
2345
+ readonly determinateDuration: 300;
2346
+ readonly indeterminateDuration: 1000;
2347
+ };
2348
+ };
2349
+ readonly circularProgress: {
2350
+ readonly sm: {
2351
+ readonly size: 40;
2352
+ readonly strokeWidth: 4;
2353
+ readonly labelSize: 10;
2354
+ };
2355
+ readonly md: {
2356
+ readonly size: 64;
2357
+ readonly strokeWidth: 6;
2358
+ readonly labelSize: 14;
2359
+ };
2360
+ readonly lg: {
2361
+ readonly size: 96;
2362
+ readonly strokeWidth: 8;
2363
+ readonly labelSize: 20;
2364
+ };
2365
+ readonly animation: {
2366
+ readonly rotationDuration: 1200;
2367
+ readonly springDamping: 20;
2368
+ readonly springStiffness: 100;
2369
+ };
2370
+ };
2371
+ readonly list: {
2372
+ readonly divider: {
2373
+ readonly inset: 56;
2374
+ };
2375
+ readonly item: {
2376
+ readonly minHeight: 52;
2377
+ readonly paddingHorizontal: 16;
2378
+ readonly paddingVertical: 12;
2379
+ readonly iconSize: 24;
2380
+ readonly iconMargin: 12;
2381
+ };
2382
+ };
2383
+ readonly tabs: {
2384
+ readonly trigger: {
2385
+ readonly fontSize: 14;
2386
+ readonly fontWeight: "500";
2387
+ readonly activeFontWeight: "600";
2388
+ readonly paddingVertical: 8;
2389
+ readonly paddingHorizontal: 12;
2390
+ };
2391
+ readonly triggerUnderline: {
2392
+ readonly paddingVertical: 12;
2393
+ readonly paddingHorizontal: 16;
2394
+ };
2395
+ readonly content: {
2396
+ readonly marginTop: 16;
2397
+ };
2398
+ readonly indicator: {
2399
+ readonly pillTop: 4;
2400
+ readonly pillBottom: 4;
2401
+ readonly underlineHeight: 2;
2402
+ };
2403
+ };
2404
+ readonly accordion: {
2405
+ readonly trigger: {
2406
+ readonly fontSize: 16;
2407
+ readonly fontWeight: "500";
2408
+ readonly paddingVertical: 16;
2409
+ readonly paddingHorizontal: 16;
2410
+ readonly iconMargin: 8;
2411
+ };
2412
+ readonly content: {
2413
+ readonly paddingHorizontal: 16;
2414
+ readonly paddingBottom: 16;
2415
+ };
2416
+ readonly item: {
2417
+ readonly borderWidth: 1;
2418
+ };
2419
+ };
2420
+ readonly collapsible: {
2421
+ readonly trigger: {
2422
+ readonly paddingVertical: 12;
2423
+ readonly paddingHorizontal: 16;
2424
+ readonly iconMargin: 8;
2425
+ };
2426
+ };
2427
+ readonly carousel: {
2428
+ readonly indicator: {
2429
+ readonly dotSize: 8;
2430
+ readonly dotActiveWidth: 24;
2431
+ readonly dotActiveScale: 1;
2432
+ readonly dotInactiveScale: 0.8;
2433
+ readonly dotInactiveOpacity: 0.4;
2434
+ readonly gap: 6;
2435
+ readonly paddingVertical: 8;
2436
+ };
2437
+ readonly lineIndicator: {
2438
+ readonly activeWidth: 24;
2439
+ readonly inactiveWidth: 8;
2440
+ };
2441
+ };
2442
+ readonly swipeableRow: {
2443
+ readonly action: {
2444
+ readonly width: 80;
2445
+ readonly paddingHorizontal: 8;
2446
+ readonly iconMargin: 4;
2447
+ readonly labelFontSize: 11;
2448
+ readonly labelFontWeight: "600";
2449
+ };
2450
+ };
2451
+ readonly authBlock: {
2452
+ readonly header: {
2453
+ readonly titleFontSize: 24;
2454
+ readonly titleFontWeight: "700";
2455
+ readonly subtitleFontSize: 16;
2456
+ };
2457
+ readonly form: {
2458
+ readonly forgotLinkFontSize: 14;
2459
+ readonly forgotLinkFontWeight: "500";
2460
+ readonly passwordHintFontSize: 11;
2461
+ };
2462
+ readonly divider: {
2463
+ readonly fontSize: 14;
2464
+ };
2465
+ readonly footer: {
2466
+ readonly textFontSize: 14;
2467
+ readonly linkFontSize: 14;
2468
+ readonly linkFontWeight: "600";
2469
+ };
2470
+ readonly social: {
2471
+ readonly gap: 12;
2472
+ };
2473
+ };
2474
+ readonly stateBlock: {
2475
+ readonly default: {
2476
+ readonly titleFontSize: 20;
2477
+ readonly descriptionFontSize: 16;
2478
+ readonly iconContainerSize: 80;
2479
+ readonly iconContainerRadius: 40;
2480
+ };
2481
+ readonly compact: {
2482
+ readonly titleFontSize: 18;
2483
+ readonly descriptionFontSize: 14;
2484
+ readonly iconContainerSize: 64;
2485
+ readonly iconContainerRadius: 32;
2486
+ };
2487
+ readonly error: {
2488
+ readonly iconContainerSize: 88;
2489
+ readonly iconContainerRadius: 44;
2490
+ readonly iconContainerSizeCompact: 72;
2491
+ readonly iconContainerRadiusCompact: 36;
2492
+ readonly codeFontSize: 11;
2493
+ };
2494
+ readonly typography: {
2495
+ readonly titleFontWeight: "600";
2496
+ };
2497
+ };
2498
+ readonly profileBlock: {
2499
+ readonly name: {
2500
+ readonly fontSize: number;
2501
+ readonly fontWeight: "700";
2502
+ };
2503
+ readonly subtitle: {
2504
+ readonly fontSize: 16;
2505
+ };
2506
+ readonly bio: {
2507
+ readonly fontSize: 16;
2508
+ readonly lineHeight: 22;
2509
+ };
2510
+ readonly stat: {
2511
+ readonly valueFontSize: 20;
2512
+ readonly valueFontWeight: "700";
2513
+ readonly labelFontSize: 12;
2514
+ };
2515
+ };
2516
+ readonly settingsBlock: {
2517
+ readonly group: {
2518
+ readonly titleFontSize: 11;
2519
+ readonly titleFontWeight: "600";
2520
+ readonly titleLetterSpacing: 0.5;
2521
+ readonly descriptionFontSize: 12;
2522
+ };
2523
+ readonly item: {
2524
+ readonly labelFontSize: 16;
2525
+ readonly descriptionFontSize: 12;
2526
+ readonly displayValueFontSize: 16;
2527
+ readonly chevronFontSize: 16;
2528
+ readonly chevronFontWeight: "600";
2529
+ readonly paddingVertical: 14;
2530
+ readonly paddingHorizontal: 16;
2531
+ };
2532
+ };
2533
+ readonly cardBlock: {
2534
+ readonly shadow: "sm";
2535
+ readonly borderWidth: 1;
2536
+ readonly image: {
2537
+ readonly productAspectRatio: 1;
2538
+ readonly articleAspectRatio: 1.78;
2539
+ readonly eventAspectRatio: 2.4;
2540
+ readonly reviewAspectRatio: 1;
2541
+ };
2542
+ readonly header: {
2543
+ readonly paddingVertical: 12;
2544
+ readonly paddingHorizontal: 16;
2545
+ readonly gap: 8;
2546
+ };
2547
+ readonly content: {
2548
+ readonly paddingVertical: 12;
2549
+ readonly paddingHorizontal: 16;
2550
+ readonly gap: 6;
2551
+ };
2552
+ readonly footer: {
2553
+ readonly paddingVertical: 12;
2554
+ readonly paddingHorizontal: 16;
2555
+ readonly gap: 8;
2556
+ };
2557
+ readonly typography: {
2558
+ readonly titleFontSize: 16;
2559
+ readonly titleFontWeight: "600";
2560
+ readonly subtitleFontSize: 14;
2561
+ readonly priceFontSize: 18;
2562
+ readonly priceFontWeight: "700";
2563
+ readonly metaFontSize: 12;
2564
+ };
2565
+ };
2566
+ readonly socialBlock: {
2567
+ readonly action: {
2568
+ readonly iconSize: 20;
2569
+ readonly gap: 4;
2570
+ readonly touchTarget: 44;
2571
+ };
2572
+ readonly avatar: {
2573
+ readonly postSize: "md";
2574
+ readonly commentSize: "sm";
2575
+ readonly chatSize: "sm";
2576
+ readonly listSize: "md";
2577
+ };
2578
+ readonly bubble: {
2579
+ readonly maxWidth: "75%";
2580
+ readonly paddingVertical: 8;
2581
+ readonly paddingHorizontal: 12;
2582
+ readonly ownBackground: "primary";
2583
+ readonly otherBackground: "secondary";
2584
+ };
2585
+ readonly comment: {
2586
+ readonly indentPerLevel: 24;
2587
+ readonly maxNestingLevels: 3;
2588
+ };
2589
+ readonly typography: {
2590
+ readonly authorFontSize: 14;
2591
+ readonly authorFontWeight: "600";
2592
+ readonly contentFontSize: 16;
2593
+ readonly contentLineHeight: 22;
2594
+ readonly timeFontSize: 12;
2595
+ readonly actionFontSize: 12;
2596
+ };
2597
+ };
2598
+ readonly productBlock: {
2599
+ readonly product: {
2600
+ readonly badgePosition: {
2601
+ readonly top: 8;
2602
+ readonly left: 8;
2603
+ };
2604
+ readonly wishlistPosition: {
2605
+ readonly top: 8;
2606
+ readonly right: 8;
2607
+ };
2608
+ readonly ratingSize: "sm";
2609
+ };
2610
+ readonly cart: {
2611
+ readonly imageSize: 80;
2612
+ readonly stepperSize: "sm";
2613
+ readonly swipeActionWidth: 80;
2614
+ };
2615
+ readonly pricing: {
2616
+ readonly originalPriceOpacity: 0.6;
2617
+ readonly originalPriceDecoration: "line-through";
2618
+ readonly discountColor: "destructive";
2619
+ };
2620
+ };
2621
+ readonly ecommerceBlock: {
2622
+ readonly banner: {
2623
+ readonly sm: {
2624
+ readonly padding: 12;
2625
+ readonly titleFontSize: 14;
2626
+ readonly subtitleFontSize: 11;
2627
+ readonly iconSize: 20;
2628
+ readonly minHeight: 56;
2629
+ };
2630
+ readonly md: {
2631
+ readonly padding: 16;
2632
+ readonly titleFontSize: 16;
2633
+ readonly subtitleFontSize: 14;
2634
+ readonly iconSize: 24;
2635
+ readonly minHeight: 72;
2636
+ };
2637
+ readonly lg: {
2638
+ readonly padding: 20;
2639
+ readonly titleFontSize: 20;
2640
+ readonly subtitleFontSize: 16;
2641
+ readonly iconSize: 32;
2642
+ readonly minHeight: 100;
2643
+ };
2644
+ readonly titleFontWeight: "700";
2645
+ readonly subtitleLineHeight: 20;
2646
+ };
2647
+ readonly hero: {
2648
+ readonly titleFontSize: 30;
2649
+ readonly titleFontWeight: 800;
2650
+ readonly titleLineHeight: 38;
2651
+ readonly subtitleFontSize: 16;
2652
+ readonly subtitleLineHeight: 24;
2653
+ readonly defaultHeight: 400;
2654
+ };
2655
+ readonly pricing: {
2656
+ readonly planNameFontSize: 20;
2657
+ readonly planNameFontWeight: "700";
2658
+ readonly descriptionFontSize: 14;
2659
+ readonly priceFontSize: 40;
2660
+ readonly priceFontWeight: 800;
2661
+ readonly priceLineHeight: 48;
2662
+ readonly intervalFontSize: 16;
2663
+ readonly intervalFontWeight: "500";
2664
+ readonly originalPriceFontSize: 16;
2665
+ readonly savingsFontSize: 12;
2666
+ readonly savingsFontWeight: "600";
2667
+ readonly featureTextFontSize: 14;
2668
+ readonly featureIconSize: 20;
2669
+ readonly featureIconInnerSize: 12;
2670
+ readonly badgeTopOffset: -12;
2671
+ };
2672
+ readonly stats: {
2673
+ readonly labelFontSize: 14;
2674
+ readonly labelFontWeight: "500";
2675
+ readonly valueFontSize: 30;
2676
+ readonly valueFontWeight: "700";
2677
+ readonly trendFontSize: 14;
2678
+ readonly trendFontWeight: "600";
2679
+ readonly trendLabelFontSize: 12;
2680
+ };
2681
+ };
2682
+ readonly infoBlock: {
2683
+ readonly feature: {
2684
+ readonly titleFontSize: 16;
2685
+ readonly titleFontWeight: "600";
2686
+ readonly descriptionFontSize: 14;
2687
+ readonly descriptionLineHeight: 20;
2688
+ readonly iconContainerSize: 56;
2689
+ readonly iconContainerSizeHorizontal: 48;
2690
+ };
2691
+ readonly content: {
2692
+ readonly titleFontSize: 18;
2693
+ readonly titleFontWeight: "700";
2694
+ readonly titleLineHeight: 24;
2695
+ readonly subtitleFontSize: 14;
2696
+ readonly subtitleLineHeight: 20;
2697
+ readonly defaultAspectRatio: number;
2698
+ };
2699
+ readonly onboarding: {
2700
+ readonly titleFontSize: 24;
2701
+ readonly titleFontWeight: "700";
2702
+ readonly titleLineHeight: 34;
2703
+ readonly descriptionFontSize: 16;
2704
+ readonly descriptionLineHeight: 24;
2705
+ readonly dotSize: 8;
2706
+ readonly dotActiveWidth: 24;
2707
+ readonly paginationMarginTop: 32;
2708
+ readonly illustrationPaddingHorizontal: 40;
2709
+ };
2710
+ readonly socialProof: {
2711
+ readonly textFontSize: 14;
2712
+ readonly textLineHeight: 18;
2713
+ readonly avatarOverlapRatio: 0.3;
2714
+ };
2715
+ readonly notification: {
2716
+ readonly textFontSize: 15;
2717
+ readonly textLineHeight: 20;
2718
+ readonly titleFontWeight: "600";
2719
+ readonly timeFontSize: 12;
2720
+ readonly unreadDotSize: 8;
2721
+ readonly avatarSize: 44;
2722
+ };
2723
+ readonly media: {
2724
+ readonly defaultSize: 100;
2725
+ readonly playButtonSize: 44;
2726
+ readonly playIconSize: 24;
2727
+ readonly checkboxSize: 24;
2728
+ readonly checkIconSize: 14;
2729
+ readonly durationBadgeMargin: 4;
2730
+ readonly checkboxOffset: 8;
2731
+ };
2732
+ readonly order: {
2733
+ readonly orderIdFontSize: 15;
2734
+ readonly orderIdFontWeight: "600";
2735
+ readonly dateFontSize: 12;
2736
+ readonly itemCountFontSize: 14;
2737
+ readonly totalFontSize: 16;
2738
+ readonly totalFontWeight: "700";
2739
+ readonly productImageSize: 48;
2740
+ readonly moreTextFontSize: 14;
2741
+ readonly moreTextFontWeight: "600";
2742
+ };
2743
+ readonly task: {
2744
+ readonly titleFontSize: 15;
2745
+ readonly titleFontWeight: "500";
2746
+ readonly titleLineHeight: 20;
2747
+ readonly descriptionFontSize: 12;
2748
+ readonly dueDateFontSize: 11;
2749
+ readonly moreTagsFontSize: 11;
2750
+ readonly flagIconSize: 12;
2751
+ readonly calendarIconSize: 12;
2752
+ };
2753
+ readonly searchHeader: {
2754
+ readonly filterBadgeOffset: -4;
2755
+ };
2756
+ };
2757
+ readonly calendar: {
2758
+ readonly sm: {
2759
+ readonly daySize: 32;
2760
+ readonly fontSize: 12;
2761
+ readonly headerFontSize: 14;
2762
+ readonly gap: 2;
2763
+ readonly containerPadding: 8;
2764
+ readonly weekNumberWidth: 24;
2765
+ readonly navButtonPadding: 8;
2766
+ };
2767
+ readonly md: {
2768
+ readonly daySize: 40;
2769
+ readonly fontSize: 14;
2770
+ readonly headerFontSize: 16;
2771
+ readonly gap: 4;
2772
+ readonly containerPadding: 8;
2773
+ readonly weekNumberWidth: 24;
2774
+ readonly navButtonPadding: 8;
2775
+ };
2776
+ };
2777
+ readonly dateTimePicker: {
2778
+ readonly input: {
2779
+ readonly height: 44;
2780
+ readonly paddingHorizontal: 16;
2781
+ readonly paddingVertical: 12;
2782
+ readonly iconMarginLeft: 8;
2783
+ };
2784
+ readonly sheet: {
2785
+ readonly borderRadius: 20;
2786
+ readonly handlePaddingVertical: 12;
2787
+ readonly handleWidth: 36;
2788
+ readonly handleHeight: 4;
2789
+ readonly headerPaddingHorizontal: 16;
2790
+ readonly headerPaddingBottom: 12;
2791
+ readonly pickerPaddingVertical: 16;
2792
+ readonly pickerHeight: 200;
2793
+ };
2794
+ readonly fallback: {
2795
+ readonly padding: 24;
2796
+ readonly gap: 12;
2797
+ };
2798
+ readonly icon: {
2799
+ readonly width: 20;
2800
+ readonly height: 20;
2801
+ readonly topWidth: 14;
2802
+ readonly topHeight: 3;
2803
+ readonly bodyWidth: 16;
2804
+ readonly bodyHeight: 14;
2805
+ readonly dotSize: 3;
2806
+ readonly dotGap: 3;
2807
+ };
2808
+ };
2809
+ readonly form: {
2810
+ readonly item: {
2811
+ readonly marginBottom: 16;
2812
+ };
2813
+ readonly label: {
2814
+ readonly fontSize: 14;
2815
+ readonly fontWeight: "500";
2816
+ readonly marginBottom: 6;
2817
+ };
2818
+ readonly description: {
2819
+ readonly fontSize: 12;
2820
+ readonly marginTop: 4;
2821
+ };
2822
+ readonly message: {
2823
+ readonly fontSize: 12;
2824
+ readonly fontWeight: "500";
2825
+ readonly marginTop: 4;
2826
+ };
2827
+ };
2828
+ readonly imageGallery: {
2829
+ readonly grid: {
2830
+ readonly defaultColumns: 3;
2831
+ readonly defaultSpacing: 2;
2832
+ readonly defaultAspectRatio: 1;
2833
+ };
2834
+ readonly fullscreen: {
2835
+ readonly backdropOpacity: 0.95;
2836
+ readonly closeButtonTop: 50;
2837
+ readonly closeButtonTopAndroid: 20;
2838
+ readonly closeButtonSize: 36;
2839
+ readonly closeLineWidth: 18;
2840
+ readonly closeLineHeight: 2;
2841
+ readonly pageIndicatorBottom: 50;
2842
+ readonly dotSize: 6;
2843
+ readonly dotGap: 6;
2844
+ };
2845
+ };
2846
+ readonly pagination: {
2847
+ readonly sm: {
2848
+ readonly dotSize: 6;
2849
+ readonly dotGap: 6;
2850
+ readonly buttonSize: 28;
2851
+ readonly fontSize: 12;
2852
+ readonly numberSize: 28;
2853
+ };
2854
+ readonly md: {
2855
+ readonly dotSize: 8;
2856
+ readonly dotGap: 8;
2857
+ readonly buttonSize: 36;
2858
+ readonly fontSize: 14;
2859
+ readonly numberSize: 36;
2860
+ };
2861
+ readonly lg: {
2862
+ readonly dotSize: 10;
2863
+ readonly dotGap: 10;
2864
+ readonly buttonSize: 44;
2865
+ readonly fontSize: 16;
2866
+ readonly numberSize: 44;
2867
+ };
2868
+ readonly simple: {
2869
+ readonly gap: 4;
2870
+ };
2871
+ };
2872
+ readonly stories: {
2873
+ readonly sm: {
2874
+ readonly outer: 56;
2875
+ readonly inner: 50;
2876
+ readonly avatar: 46;
2877
+ readonly borderWidth: 3;
2878
+ readonly fontSize: 11;
2879
+ readonly plusSize: 14;
2880
+ readonly nameMarginTop: 4;
2881
+ };
2882
+ readonly md: {
2883
+ readonly outer: 72;
2884
+ readonly inner: 64;
2885
+ readonly avatar: 60;
2886
+ readonly borderWidth: 3;
2887
+ readonly fontSize: 11;
2888
+ readonly plusSize: 18;
2889
+ readonly nameMarginTop: 4;
2890
+ };
2891
+ readonly lg: {
2892
+ readonly outer: 88;
2893
+ readonly inner: 80;
2894
+ readonly avatar: 74;
2895
+ readonly borderWidth: 4;
2896
+ readonly fontSize: 12;
2897
+ readonly plusSize: 22;
2898
+ readonly nameMarginTop: 4;
2899
+ };
2900
+ readonly row: {
2901
+ readonly paddingHorizontal: 16;
2902
+ readonly gap: 12;
2903
+ };
2904
+ };
2905
+ readonly searchInput: {
2906
+ readonly height: 44;
2907
+ readonly paddingHorizontal: 12;
2908
+ readonly iconSize: 20;
2909
+ readonly iconMarginRight: 8;
2910
+ readonly clearSize: 18;
2911
+ readonly rightContainerWidth: 24;
2912
+ readonly rightContainerMarginLeft: 8;
2913
+ readonly fontSize: 16;
2914
+ };
2915
+ readonly height: {
2916
+ /** Small: 32px */
2917
+ readonly sm: 32;
2918
+ /** Medium: 44px (iOS recommended minimum) */
2919
+ readonly md: 44;
2920
+ /** Large: 52px */
2921
+ readonly lg: 52;
2922
+ };
2923
+ readonly icon: {
2924
+ /** Extra small: 12px */
2925
+ readonly xs: 12;
2926
+ /** Small: 16px */
2927
+ readonly sm: 16;
2928
+ /** Medium: 20px */
2929
+ readonly md: 20;
2930
+ /** Large: 24px */
2931
+ readonly lg: 24;
2932
+ /** Extra large: 32px */
2933
+ readonly xl: 32;
2934
+ };
2935
+ };
2936
+ /** Standard component size variants */
2937
+ type ComponentSize = 'sm' | 'md' | 'lg';
2938
+
2939
+ /**
2940
+ * Theme Presets
2941
+ *
2942
+ * Pre-designed color schemes for instant brand alignment.
2943
+ * Each preset defines primary colors and derives a full semantic palette.
2944
+ *
2945
+ * Usage:
2946
+ * ```tsx
2947
+ * <ThemeProvider theme="rose">
2948
+ * <ThemeProvider theme="violet">
2949
+ * ```
2950
+ */
2951
+
2952
+ /**
2953
+ * Available theme color presets.
2954
+ *
2955
+ * Each preset defines a complete color scheme for light and dark modes.
2956
+ */
2957
+ type ThemePreset = 'zinc' | 'slate' | 'stone' | 'blue' | 'green' | 'rose' | 'orange' | 'violet';
2958
+ /**
2959
+ * Theme preset color structure.
2960
+ *
2961
+ * Contains complete color schemes for both light and dark modes.
2962
+ */
2963
+ interface PresetColors {
2964
+ light: ThemeColors;
2965
+ dark: ThemeColors;
2966
+ }
2967
+ /**
2968
+ * All available theme presets.
2969
+ *
2970
+ * Pre-designed color schemes for instant brand alignment.
2971
+ *
2972
+ * @example
2973
+ * ```tsx
2974
+ * <ThemeProvider theme="violet">
2975
+ * <App />
2976
+ * </ThemeProvider>
2977
+ * ```
2978
+ */
2979
+ declare const themePresets: Record<ThemePreset, PresetColors>;
2980
+ /**
2981
+ * Default theme preset.
2982
+ *
2983
+ * Used when no `theme` is specified on ThemeProvider.
2984
+ */
2985
+ declare const defaultThemePreset: ThemePreset;
2986
+ /**
2987
+ * Gets colors for a theme preset.
2988
+ *
2989
+ * @param preset - Theme preset name
2990
+ * @returns Complete color scheme (light and dark)
2991
+ */
2992
+ declare function getPresetColors(preset: ThemePreset): PresetColors;
2993
+ /**
2994
+ * Gets light or dark colors for a theme preset.
2995
+ *
2996
+ * @param preset - Theme preset name
2997
+ * @param isDark - Whether dark mode is active
2998
+ * @returns Semantic color palette for the specified mode
2999
+ */
3000
+ declare function getPresetColorsForMode(preset: ThemePreset, isDark: boolean): ThemeColors;
3001
+
3002
+ /** Resolved color scheme (either 'light' or 'dark') */
3003
+ type ColorScheme = 'light' | 'dark';
3004
+ /** User's color scheme preference (can be 'system' for auto-detection) */
3005
+ type ColorSchemePreference = 'light' | 'dark' | 'system';
3006
+ interface Theme {
3007
+ /** Current color scheme */
3008
+ colorScheme: ColorScheme;
3009
+ /** User's preference: 'light', 'dark', or 'system' */
3010
+ colorSchemePreference: ColorSchemePreference;
3011
+ /** Whether dark mode is active */
3012
+ isDark: boolean;
3013
+ /** Set color scheme preference */
3014
+ setColorScheme: (preference: ColorSchemePreference) => void;
3015
+ /** Current theme preset (if using a preset) */
3016
+ themePreset?: ThemePreset;
3017
+ /** Current radius preset */
3018
+ radiusPreset: RadiusPreset;
3019
+ /** Current animation preset */
3020
+ animationPreset: AnimationPreset;
3021
+ /** Semantic color tokens */
3022
+ colors: ThemeColors;
3023
+ /** Spacing scale (0-32) */
3024
+ spacing: typeof spacing;
3025
+ /** Border radius tokens */
3026
+ radius: RadiusTokens;
3027
+ /** Component-specific radius presets */
3028
+ componentRadius: ComponentRadiusTokens;
3029
+ /** Semantic font tokens (sans, heading, mono) */
3030
+ fonts: Fonts;
3031
+ /** Font size scale */
3032
+ fontSize: typeof fontSize;
3033
+ /** Font weight scale */
3034
+ fontWeight: typeof fontWeight;
3035
+ /** Line height scale */
3036
+ lineHeight: typeof lineHeight;
3037
+ /** Letter spacing scale */
3038
+ letterSpacing: typeof letterSpacing;
3039
+ /** Font family tokens (sans, mono, system) @deprecated use fonts instead */
3040
+ fontFamily: typeof fontFamily;
3041
+ /** Geist font family with weight variants */
3042
+ geistFontFamily: typeof geistFontFamily;
3043
+ /** Pre-composed typography styles (uses fonts tokens) */
3044
+ typography: Typography;
3045
+ /** Get shadow style for a size */
3046
+ shadow: (size: ShadowSize) => ShadowStyle;
3047
+ /** Get platform-optimized shadow style (iOS: shadow*, Android: elevation) */
3048
+ platformShadow: (size: ShadowSize) => ViewStyle;
3049
+ /** Spring animation presets */
3050
+ springs: SpringTokens;
3051
+ /** Timing animation presets */
3052
+ timing: TimingTokens;
3053
+ /** Press scale presets */
3054
+ pressScale: PressScaleTokens;
3055
+ /** Duration presets */
3056
+ durations: DurationTokens;
3057
+ /** Component-specific size/style tokens */
3058
+ components: typeof components;
3059
+ }
3060
+ interface ThemeProviderProps {
3061
+ /** Initial color scheme preference */
3062
+ defaultColorScheme?: ColorSchemePreference;
3063
+ /**
3064
+ * Theme preset for colors.
3065
+ * Pre-designed color schemes: 'zinc', 'slate', 'stone', 'blue', 'green', 'rose', 'orange', 'violet'
3066
+ *
3067
+ * @example
3068
+ * ```tsx
3069
+ * <ThemeProvider theme="rose">
3070
+ * ```
3071
+ */
3072
+ theme?: ThemePreset;
3073
+ /**
3074
+ * Base radius preset.
3075
+ * Controls roundness of all components: 'none', 'sm', 'md', 'lg', 'full'
3076
+ *
3077
+ * @example
3078
+ * ```tsx
3079
+ * <ThemeProvider radius="lg"> // Soft, rounded UI
3080
+ * <ThemeProvider radius="none"> // Sharp, brutalist UI
3081
+ * ```
3082
+ */
3083
+ radius?: RadiusPreset;
3084
+ /**
3085
+ * Custom font configuration.
3086
+ * Partial overrides are merged with defaults.
3087
+ *
3088
+ * @example
3089
+ * ```tsx
3090
+ * <ThemeProvider fonts={{
3091
+ * sans: 'Inter_400Regular',
3092
+ * heading: 'PlayfairDisplay_700Bold',
3093
+ * }}>
3094
+ * ```
3095
+ */
3096
+ fonts?: Partial<Fonts>;
3097
+ /**
3098
+ * Color overrides (applied to both light and dark modes).
3099
+ * Merged on top of theme preset colors.
3100
+ *
3101
+ * @example
3102
+ * ```tsx
3103
+ * <ThemeProvider
3104
+ * theme="blue"
3105
+ * colors={{ primary: '#6366F1' }} // Override blue's primary with indigo
3106
+ * >
3107
+ * ```
3108
+ */
3109
+ colors?: Partial<ThemeColors>;
3110
+ /**
3111
+ * Light mode specific color overrides.
3112
+ * Applied only in light mode, after theme and colors.
3113
+ */
3114
+ lightColors?: Partial<ThemeColors>;
3115
+ /**
3116
+ * Dark mode specific color overrides.
3117
+ * Applied only in dark mode, after theme and colors.
3118
+ */
3119
+ darkColors?: Partial<ThemeColors>;
3120
+ /**
3121
+ * Enable or disable haptic feedback globally.
3122
+ * When false, all `haptic()` calls become no-ops.
3123
+ * @default true
3124
+ *
3125
+ * @example
3126
+ * ```tsx
3127
+ * // Disable haptics for accessibility or user preference
3128
+ * <ThemeProvider haptics={false}>
3129
+ * ```
3130
+ */
3131
+ haptics?: boolean;
3132
+ /**
3133
+ * Animation preset.
3134
+ * Controls the overall feel of animations throughout the app.
3135
+ * - `subtle`: Professional, smooth animations with minimal overshoot
3136
+ * - `playful`: Bouncy, energetic animations with more personality
3137
+ * @default 'subtle'
3138
+ *
3139
+ * @example
3140
+ * ```tsx
3141
+ * // Professional, smooth animations
3142
+ * <ThemeProvider animationPreset="subtle">
3143
+ *
3144
+ * // Bouncy, fun animations
3145
+ * <ThemeProvider animationPreset="playful">
3146
+ * ```
3147
+ */
3148
+ animationPreset?: AnimationPreset;
3149
+ /**
3150
+ * Enable or disable animations globally.
3151
+ * - `true`: Force enable animations
3152
+ * - `false`: Force disable animations (components will use static styles)
3153
+ * - `'auto'`: Automatically detect - disable in Expo Go, enable in dev/prod builds
3154
+ * @default 'auto'
3155
+ *
3156
+ * @example
3157
+ * ```tsx
3158
+ * // Auto-detect (disabled in Expo Go)
3159
+ * <ThemeProvider animations="auto">
3160
+ *
3161
+ * // Force disable for testing or accessibility
3162
+ * <ThemeProvider animations={false}>
3163
+ * ```
3164
+ */
3165
+ animations?: boolean | 'auto';
3166
+ /** Children components */
3167
+ children: ReactNode;
3168
+ }
3169
+ declare function ThemeProvider({ defaultColorScheme, theme: themePreset, radius: radiusPreset, fonts: fontOverrides, colors: colorOverrides, lightColors: lightColorOverrides, darkColors: darkColorOverrides, haptics, animationPreset, animations, children, }: ThemeProviderProps): react_jsx_runtime.JSX.Element;
3170
+ /**
3171
+ * Hook to access theme values
3172
+ *
3173
+ * @example
3174
+ * ```tsx
3175
+ * const { colors, spacing, radius, components } = useTheme();
3176
+ *
3177
+ * // Use design tokens
3178
+ * <View style={{
3179
+ * backgroundColor: colors.card,
3180
+ * padding: spacing[4],
3181
+ * borderRadius: radius.lg,
3182
+ * ...platformShadow('md')
3183
+ * }}>
3184
+ * <Text style={typography.body}>Hello</Text>
3185
+ * </View>
3186
+ *
3187
+ * // Use component tokens
3188
+ * const buttonSize = components.button.md;
3189
+ * <View style={{
3190
+ * height: buttonSize.height,
3191
+ * paddingHorizontal: buttonSize.paddingHorizontal,
3192
+ * borderRadius: buttonSize.borderRadius,
3193
+ * }} />
3194
+ * ```
3195
+ */
3196
+ declare function useTheme(): Theme;
3197
+ /**
3198
+ * Hook to get current color scheme.
3199
+ *
3200
+ * Returns the resolved color scheme ('light' or 'dark'), even when preference is 'system'.
3201
+ *
3202
+ * @returns Current color scheme
3203
+ *
3204
+ * @example
3205
+ * ```tsx
3206
+ * const colorScheme = useColorSchemeValue();
3207
+ * // colorScheme is 'light' or 'dark' (never 'system')
3208
+ * ```
3209
+ */
3210
+ declare function useColorSchemeValue(): ColorScheme;
3211
+ /**
3212
+ * Hook to check if dark mode is active.
3213
+ *
3214
+ * Convenience hook equivalent to `useTheme().isDark`.
3215
+ *
3216
+ * @returns True if dark mode is active, false otherwise
3217
+ *
3218
+ * @example
3219
+ * ```tsx
3220
+ * const isDark = useIsDark();
3221
+ * <View style={{ backgroundColor: isDark ? '#000' : '#fff' }} />
3222
+ * ```
3223
+ */
3224
+ declare function useIsDark(): boolean;
3225
+
3226
+ /**
3227
+ * NativeUI Configuration Types
3228
+ *
3229
+ * Define your app's design system in a single config file.
3230
+ * Similar to tailwind.config.js but for React Native.
3231
+ *
3232
+ * @example
3233
+ * ```ts
3234
+ * // mcellui.config.ts
3235
+ * import { defineConfig } from '@metacells/mcellui-core';
3236
+ *
3237
+ * export default defineConfig({
3238
+ * theme: 'blue',
3239
+ * radius: 'lg',
3240
+ * colors: {
3241
+ * primary: '#6366F1',
3242
+ * },
3243
+ * });
3244
+ * ```
3245
+ */
3246
+
3247
+ /**
3248
+ * NativeUI configuration object.
3249
+ * Place in `mcellui.config.ts` at your project root.
3250
+ */
3251
+ interface NativeUIConfig {
3252
+ /**
3253
+ * Color theme preset.
3254
+ * @default 'zinc'
3255
+ */
3256
+ theme?: ThemePreset;
3257
+ /**
3258
+ * Border radius preset.
3259
+ * Controls roundness of all components.
3260
+ * @default 'md'
3261
+ */
3262
+ radius?: RadiusPreset;
3263
+ /**
3264
+ * Default color scheme preference.
3265
+ * @default 'system'
3266
+ */
3267
+ colorScheme?: 'light' | 'dark' | 'system';
3268
+ /**
3269
+ * Color overrides (applied to both light and dark modes).
3270
+ */
3271
+ colors?: Partial<ThemeColors>;
3272
+ /**
3273
+ * Light mode specific color overrides.
3274
+ */
3275
+ lightColors?: Partial<ThemeColors>;
3276
+ /**
3277
+ * Dark mode specific color overrides.
3278
+ */
3279
+ darkColors?: Partial<ThemeColors>;
3280
+ /**
3281
+ * Font configuration.
3282
+ */
3283
+ fonts?: Partial<Fonts>;
3284
+ /**
3285
+ * Enable or disable haptic feedback globally.
3286
+ * @default true
3287
+ */
3288
+ haptics?: boolean;
3289
+ /**
3290
+ * Animation preset.
3291
+ * Controls the overall feel of animations throughout the app.
3292
+ * - `subtle`: Professional, smooth animations with minimal overshoot
3293
+ * - `playful`: Bouncy, energetic animations with more personality
3294
+ * @default 'subtle'
3295
+ */
3296
+ animationPreset?: AnimationPreset;
3297
+ /**
3298
+ * Component-specific overrides.
3299
+ * Override default sizes, padding, etc.
3300
+ */
3301
+ components?: {
3302
+ button?: {
3303
+ defaultVariant?: 'default' | 'secondary' | 'outline' | 'ghost' | 'destructive';
3304
+ defaultSize?: 'sm' | 'md' | 'lg';
3305
+ };
3306
+ input?: {
3307
+ defaultSize?: 'sm' | 'md' | 'lg';
3308
+ };
3309
+ card?: {
3310
+ defaultVariant?: 'default' | 'elevated' | 'outlined';
3311
+ };
3312
+ badge?: {
3313
+ defaultVariant?: 'default' | 'secondary' | 'destructive' | 'outline';
3314
+ defaultSize?: 'sm' | 'md' | 'lg';
3315
+ };
3316
+ avatar?: {
3317
+ defaultSize?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
3318
+ };
3319
+ };
3320
+ /**
3321
+ * Path where components will be installed.
3322
+ * @default './components/ui'
3323
+ */
3324
+ componentsPath?: string;
3325
+ /**
3326
+ * Path where utilities (cn, etc.) will be installed.
3327
+ * @default './lib/utils'
3328
+ */
3329
+ utilsPath?: string;
3330
+ /**
3331
+ * Style preset for components.
3332
+ * @default 'default'
3333
+ */
3334
+ style?: 'default' | 'ios' | 'material';
3335
+ /**
3336
+ * Path aliases for imports.
3337
+ */
3338
+ aliases?: {
3339
+ /** Alias for components directory */
3340
+ components?: string;
3341
+ /** Alias for utils directory */
3342
+ utils?: string;
3343
+ };
3344
+ }
3345
+ /**
3346
+ * Resolved configuration with all defaults applied.
3347
+ */
3348
+ interface ResolvedNativeUIConfig extends Required<Omit<NativeUIConfig, 'colors' | 'lightColors' | 'darkColors' | 'fonts' | 'components' | 'aliases' | 'haptics' | 'animationPreset'>> {
3349
+ colors: Partial<ThemeColors>;
3350
+ lightColors: Partial<ThemeColors>;
3351
+ darkColors: Partial<ThemeColors>;
3352
+ fonts: Partial<Fonts>;
3353
+ haptics: boolean;
3354
+ animationPreset: AnimationPreset;
3355
+ components: NonNullable<NativeUIConfig['components']>;
3356
+ aliases: NonNullable<NativeUIConfig['aliases']>;
3357
+ }
3358
+ /**
3359
+ * Default configuration values.
3360
+ */
3361
+ declare const defaultConfig: ResolvedNativeUIConfig;
3362
+
3363
+ /**
3364
+ * defineConfig
3365
+ *
3366
+ * Helper function to define NativeUI configuration with type safety.
3367
+ * Use this in your `mcellui.config.ts` file.
3368
+ *
3369
+ * @example
3370
+ * ```ts
3371
+ * // mcellui.config.ts
3372
+ * import { defineConfig } from '@metacells/mcellui-core';
3373
+ *
3374
+ * export default defineConfig({
3375
+ * theme: 'blue',
3376
+ * radius: 'lg',
3377
+ * colors: {
3378
+ * primary: '#6366F1',
3379
+ * secondary: '#F3F4F6',
3380
+ * },
3381
+ * fonts: {
3382
+ * heading: 'PlayfairDisplay_700Bold',
3383
+ * },
3384
+ * components: {
3385
+ * button: {
3386
+ * defaultVariant: 'default',
3387
+ * defaultSize: 'md',
3388
+ * },
3389
+ * },
3390
+ * });
3391
+ * ```
3392
+ */
3393
+
3394
+ /**
3395
+ * Define your NativeUI configuration with full type safety and autocomplete.
3396
+ *
3397
+ * @param config - Your configuration options
3398
+ * @returns The same config object (for type inference)
3399
+ */
3400
+ declare function defineConfig(config: NativeUIConfig): NativeUIConfig;
3401
+ /**
3402
+ * Resolve a partial config into a full config with defaults.
3403
+ *
3404
+ * @param config - Partial configuration
3405
+ * @returns Fully resolved configuration with defaults applied
3406
+ */
3407
+ declare function resolveConfig(config?: NativeUIConfig): ResolvedNativeUIConfig;
3408
+
3409
+ interface ConfigProviderProps {
3410
+ /**
3411
+ * NativeUI configuration object.
3412
+ * Import from your mcellui.config.ts file.
3413
+ */
3414
+ config?: NativeUIConfig;
3415
+ /**
3416
+ * Override the color scheme preference.
3417
+ * Takes precedence over config.colorScheme.
3418
+ */
3419
+ colorScheme?: 'light' | 'dark' | 'system';
3420
+ /**
3421
+ * Override the theme preset.
3422
+ * Takes precedence over config.theme.
3423
+ */
3424
+ theme?: ThemeProviderProps['theme'];
3425
+ /**
3426
+ * Override the radius preset.
3427
+ * Takes precedence over config.radius.
3428
+ */
3429
+ radius?: ThemeProviderProps['radius'];
3430
+ /**
3431
+ * Children components.
3432
+ */
3433
+ children: ReactNode;
3434
+ }
3435
+ /**
3436
+ * ConfigProvider combines your mcellui.config.ts with ThemeProvider.
3437
+ * Use this as the root of your app for the easiest setup.
3438
+ *
3439
+ * If no config is provided and @metacells/mcellui-metro-plugin is set up,
3440
+ * it will automatically load your mcellui.config.ts file.
3441
+ */
3442
+ declare function ConfigProvider({ config, colorScheme, theme, radius, children, }: ConfigProviderProps): react_jsx_runtime.JSX.Element;
3443
+ /**
3444
+ * Hook to access the raw NativeUI configuration.
3445
+ * Useful for accessing component defaults and other config values.
3446
+ *
3447
+ * @example
3448
+ * ```tsx
3449
+ * const config = useConfig();
3450
+ * const defaultButtonSize = config.components.button?.defaultSize ?? 'md';
3451
+ * ```
3452
+ */
3453
+ declare function useConfig(): ResolvedNativeUIConfig;
3454
+
3455
+ interface PressableProps extends Omit<PressableProps$1, 'style'> {
3456
+ /**
3457
+ * Style or style function receiving pressed state
3458
+ */
3459
+ style?: ViewStyle | ((state: {
3460
+ pressed: boolean;
3461
+ }) => ViewStyle);
3462
+ /**
3463
+ * Haptic feedback style on press
3464
+ * @default 'light'
3465
+ */
3466
+ hapticStyle?: 'none' | 'light' | 'medium' | 'heavy' | 'selection';
3467
+ /**
3468
+ * Opacity when pressed
3469
+ * @default 0.7
3470
+ */
3471
+ pressedOpacity?: number;
3472
+ /**
3473
+ * Scale when pressed (respects reduce motion)
3474
+ * @default 1
3475
+ */
3476
+ pressedScale?: number;
3477
+ }
3478
+ declare const Pressable: React.ForwardRefExoticComponent<PressableProps & React.RefAttributes<react_native.View>>;
3479
+
3480
+ interface PortalProviderProps {
3481
+ children: React.ReactNode;
3482
+ }
3483
+ interface PortalHostProps {
3484
+ /**
3485
+ * Name of the host (for multiple hosts)
3486
+ * @default 'root'
3487
+ */
3488
+ name?: string;
3489
+ }
3490
+ interface PortalProps {
3491
+ children: React.ReactNode;
3492
+ /**
3493
+ * Name of the host to render into
3494
+ * @default 'root'
3495
+ */
3496
+ hostName?: string;
3497
+ }
3498
+ /**
3499
+ * Provides the portal context to the app.
3500
+ * Wrap your root component with this provider.
3501
+ */
3502
+ declare function PortalProvider({ children }: PortalProviderProps): react_jsx_runtime.JSX.Element;
3503
+ declare namespace PortalProvider {
3504
+ var displayName: string;
3505
+ }
3506
+ /**
3507
+ * The target where portals render their content.
3508
+ * Automatically included in PortalProvider, but can be placed manually
3509
+ * for custom layouts.
3510
+ */
3511
+ declare function PortalHost({ name }: PortalHostProps): react_jsx_runtime.JSX.Element;
3512
+ declare namespace PortalHost {
3513
+ var displayName: string;
3514
+ }
3515
+ /**
3516
+ * Renders children into the nearest PortalHost.
3517
+ */
3518
+ declare function Portal({ children, hostName }: PortalProps): null;
3519
+ declare namespace Portal {
3520
+ var displayName: string;
3521
+ }
3522
+
3523
+ interface SlotProps {
3524
+ children: React.ReactNode;
3525
+ /**
3526
+ * Additional props to merge with the child
3527
+ */
3528
+ [key: string]: unknown;
3529
+ }
3530
+ interface SlottableProps {
3531
+ /**
3532
+ * When true, renders as Slot (forwarding props to child)
3533
+ * When false/undefined, renders as the component's default element
3534
+ */
3535
+ asChild?: boolean;
3536
+ children?: React.ReactNode;
3537
+ }
3538
+ /**
3539
+ * Slot component that forwards props to its single child.
3540
+ * The child receives merged props (styles combined, handlers chained).
3541
+ */
3542
+ declare const Slot: React.ForwardRefExoticComponent<Omit<SlotProps, "ref"> & React.RefAttributes<unknown>>;
3543
+ /**
3544
+ * Helper component for conditional slot rendering.
3545
+ * Use with asChild prop pattern.
3546
+ */
3547
+ declare function Slottable({ children }: {
3548
+ children: React.ReactNode;
3549
+ }): react_jsx_runtime.JSX.Element;
3550
+ declare namespace Slottable {
3551
+ var displayName: string;
3552
+ }
3553
+ type PossibleRef<T> = React.Ref<T> | undefined;
3554
+ /**
3555
+ * Hook to compose refs
3556
+ */
3557
+ declare function useComposedRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T>;
3558
+
3559
+ /**
3560
+ * ErrorBoundary
3561
+ *
3562
+ * A React error boundary component for catching and handling
3563
+ * runtime errors in mcellui components.
3564
+ *
3565
+ * @example
3566
+ * ```tsx
3567
+ * // Wrap individual components
3568
+ * <ErrorBoundary fallback={<Text>Something went wrong</Text>}>
3569
+ * <MyComponent />
3570
+ * </ErrorBoundary>
3571
+ *
3572
+ * // With custom error handler
3573
+ * <ErrorBoundary
3574
+ * onError={(error, errorInfo) => {
3575
+ * logErrorToService(error, errorInfo);
3576
+ * }}
3577
+ * fallback={({ error, reset }) => (
3578
+ * <View>
3579
+ * <Text>Error: {error.message}</Text>
3580
+ * <Button onPress={reset}>Try Again</Button>
3581
+ * </View>
3582
+ * )}
3583
+ * >
3584
+ * <MyComponent />
3585
+ * </ErrorBoundary>
3586
+ * ```
3587
+ */
3588
+
3589
+ interface ErrorBoundaryFallbackProps {
3590
+ /** The error that was caught */
3591
+ error: Error;
3592
+ /** Function to reset the error boundary and retry */
3593
+ reset: () => void;
3594
+ }
3595
+ interface ErrorBoundaryProps {
3596
+ /** Children to render when no error */
3597
+ children: ReactNode;
3598
+ /**
3599
+ * Fallback UI to show when an error occurs.
3600
+ * Can be a ReactNode or a render function receiving error details.
3601
+ */
3602
+ fallback?: ReactNode | ((props: ErrorBoundaryFallbackProps) => ReactNode);
3603
+ /**
3604
+ * Callback when an error is caught.
3605
+ * Use for logging errors to external services.
3606
+ */
3607
+ onError?: (error: Error, errorInfo: ErrorInfo) => void;
3608
+ /**
3609
+ * Callback when the error boundary resets.
3610
+ */
3611
+ onReset?: () => void;
3612
+ }
3613
+ interface ErrorBoundaryState {
3614
+ hasError: boolean;
3615
+ error: Error | null;
3616
+ }
3617
+ declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {
3618
+ constructor(props: ErrorBoundaryProps);
3619
+ static getDerivedStateFromError(error: Error): ErrorBoundaryState;
3620
+ componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
3621
+ reset: () => void;
3622
+ render(): ReactNode;
3623
+ }
3624
+ /**
3625
+ * Higher-order component to wrap a component with an error boundary
3626
+ *
3627
+ * @example
3628
+ * ```tsx
3629
+ * const SafeMyComponent = withErrorBoundary(MyComponent, {
3630
+ * fallback: <Text>Error loading component</Text>,
3631
+ * });
3632
+ * ```
3633
+ */
3634
+ declare function withErrorBoundary<P extends object>(WrappedComponent: React.ComponentType<P>, errorBoundaryProps?: Omit<ErrorBoundaryProps, 'children'>): React.FC<P>;
3635
+
3636
+ /**
3637
+ * NativeUI Constants
3638
+ *
3639
+ * Zentralisierte Magic Numbers und Konfigurationswerte.
3640
+ * Diese Werte werden von Components verwendet und können
3641
+ * über Props überschrieben werden.
3642
+ *
3643
+ * @example
3644
+ * ```tsx
3645
+ * import { SHEET_CONSTANTS } from '@metacells/mcellui-core';
3646
+ *
3647
+ * // In SheetContent:
3648
+ * if (translationY > height * SHEET_CONSTANTS.closeThreshold) {
3649
+ * close();
3650
+ * }
3651
+ * ```
3652
+ */
3653
+ declare const SHEET_CONSTANTS: {
3654
+ /** Threshold (0-1) für automatisches Schließen beim Ziehen */
3655
+ readonly closeThreshold: 0.3;
3656
+ /** Geschwindigkeit (px/s) für Swipe-to-Close */
3657
+ readonly velocityThreshold: 500;
3658
+ /** Backdrop Fade-In Dauer (ms) */
3659
+ readonly backdropFadeInDuration: 200;
3660
+ /** Backdrop Fade-Out Dauer (ms) */
3661
+ readonly backdropFadeOutDuration: 150;
3662
+ /** Maximale Backdrop Opacity */
3663
+ readonly backdropMaxOpacity: 0.5;
3664
+ /** Handle Breite (px) */
3665
+ readonly handleWidth: 36;
3666
+ /** Handle Höhe (px) */
3667
+ readonly handleHeight: 4;
3668
+ /** Handle Container Padding Top (px) */
3669
+ readonly handlePaddingTop: 12;
3670
+ /** Handle Container Padding Bottom (px) */
3671
+ readonly handlePaddingBottom: 8;
3672
+ /** Content Horizontal Padding (px) */
3673
+ readonly contentPaddingHorizontal: 16;
3674
+ };
3675
+ declare const DIALOG_CONSTANTS: {
3676
+ /** Screen Margin für Dialog Breite (px) */
3677
+ readonly screenMargin: 48;
3678
+ /** Close Animation Dauer (ms) */
3679
+ readonly closeAnimationDuration: 150;
3680
+ /** Start Scale für Enter Animation */
3681
+ readonly enterStartScale: 0.95;
3682
+ /** Dialog Content Padding (px) */
3683
+ readonly contentPadding: 24;
3684
+ /** Backdrop Max Opacity */
3685
+ readonly backdropMaxOpacity: 0.5;
3686
+ };
3687
+ declare const TOAST_CONSTANTS: {
3688
+ /** Standard Anzeigedauer (ms) */
3689
+ readonly defaultDuration: 4000;
3690
+ /** Maximale gleichzeitig sichtbare Toasts */
3691
+ readonly maxToasts: 3;
3692
+ /** Fade-Out Dauer (ms) */
3693
+ readonly fadeOutDuration: 150;
3694
+ /** Container Top Offset vom SafeArea (px) */
3695
+ readonly containerTopOffset: 8;
3696
+ /** Toast Width Margin (px) - wird von Screen Width abgezogen */
3697
+ readonly widthMargin: 32;
3698
+ /** Fallback Farben wenn Theme sie nicht hat */
3699
+ readonly fallbackColors: {
3700
+ readonly success: "#22c55e";
3701
+ readonly successForeground: "#ffffff";
3702
+ readonly warning: "#f59e0b";
3703
+ readonly warningForeground: "#000000";
3704
+ };
3705
+ };
3706
+ declare const BUTTON_CONSTANTS: {
3707
+ /** Scale beim Drücken (0-1) */
3708
+ readonly pressScale: 0.97;
3709
+ /** Opacity bei disabled */
3710
+ readonly disabledOpacity: 0.5;
3711
+ };
3712
+ declare const SWIPEABLE_CONSTANTS: {
3713
+ /** Standard Action Button Breite (px) */
3714
+ readonly actionWidth: 80;
3715
+ /** Geschwindigkeit für Snap (px/s) */
3716
+ readonly velocityThreshold: 500;
3717
+ /** Full Swipe Threshold (0-1 von Screen Width) */
3718
+ readonly fullSwipeThreshold: 0.5;
3719
+ /** Full Swipe Animation Dauer (ms) */
3720
+ readonly fullSwipeAnimationDuration: 200;
3721
+ /** Resistance Factor am Edge (0-1) */
3722
+ readonly resistanceFactor: 0.2;
3723
+ /** Active Offset für Gesture Start (px) */
3724
+ readonly activeOffset: 10;
3725
+ /** Action Icon Margin Bottom (px) */
3726
+ readonly actionIconMarginBottom: 4;
3727
+ /** Action Button Horizontal Padding (px) */
3728
+ readonly actionButtonPaddingHorizontal: 8;
3729
+ /** Action Label Font Size */
3730
+ readonly actionLabelFontSize: 12;
3731
+ };
3732
+ declare const ANIMATION_CONSTANTS: {
3733
+ /** Standard Spring Damping */
3734
+ readonly springDamping: 20;
3735
+ /** Standard Spring Stiffness */
3736
+ readonly springStiffness: 200;
3737
+ };
3738
+ declare const SLIDER_CONSTANTS: {
3739
+ /** Track Höhe (px) */
3740
+ readonly trackHeight: 6;
3741
+ /** Thumb Größe (px) */
3742
+ readonly thumbSize: 24;
3743
+ /** Hit Slop für Touch (px) */
3744
+ readonly hitSlop: 10;
3745
+ };
3746
+ declare const STEPPER_CONSTANTS: {
3747
+ /** Button Größe (px) */
3748
+ readonly buttonSize: 36;
3749
+ /** Long Press Delay (ms) */
3750
+ readonly longPressDelay: 500;
3751
+ /** Repeat Interval (ms) */
3752
+ readonly repeatInterval: 100;
3753
+ /** Min Input Width (px) */
3754
+ readonly minInputWidth: 48;
3755
+ };
3756
+ declare const TYPOGRAPHY_CONSTANTS: {
3757
+ /** Title Font Size für Overlays (Sheet, Dialog) */
3758
+ readonly overlayTitleSize: 18;
3759
+ /** Description Font Size für Overlays */
3760
+ readonly overlayDescriptionSize: 14;
3761
+ /** Description Line Height für Dialogs */
3762
+ readonly overlayDescriptionLineHeight: 20;
3763
+ };
3764
+ declare const ALERT_CONSTANTS: {
3765
+ /** Padding für Small Variant (px) */
3766
+ readonly paddingSm: 12;
3767
+ /** Padding für Medium Variant (px) */
3768
+ readonly paddingMd: 16;
3769
+ /** Padding für Large Variant (px) */
3770
+ readonly paddingLg: 20;
3771
+ /** Icon Size für Small Variant (px) */
3772
+ readonly iconSizeSm: 16;
3773
+ /** Icon Size für Medium Variant (px) */
3774
+ readonly iconSizeMd: 20;
3775
+ /** Icon Size für Large Variant (px) */
3776
+ readonly iconSizeLg: 24;
3777
+ /** Gap zwischen Icon und Text für Small (px) */
3778
+ readonly gapSm: 8;
3779
+ /** Gap zwischen Icon und Text für Medium (px) */
3780
+ readonly gapMd: 12;
3781
+ /** Gap zwischen Icon und Text für Large (px) */
3782
+ readonly gapLg: 16;
3783
+ /** Title Font Size für Small (px) */
3784
+ readonly titleFontSizeSm: 13;
3785
+ /** Title Font Size für Medium (px) */
3786
+ readonly titleFontSizeMd: 15;
3787
+ /** Title Font Size für Large (px) */
3788
+ readonly titleFontSizeLg: 17;
3789
+ /** Text Font Size für Small (px) */
3790
+ readonly textFontSizeSm: 12;
3791
+ /** Text Font Size für Medium (px) */
3792
+ readonly textFontSizeMd: 14;
3793
+ /** Text Font Size für Large (px) */
3794
+ readonly textFontSizeLg: 16;
3795
+ };
3796
+ declare const POPOVER_CONSTANTS: {
3797
+ /** Default Offset vom Trigger (px) */
3798
+ readonly defaultOffset: 8;
3799
+ /** Default Max Width (px) */
3800
+ readonly defaultMaxWidth: 280;
3801
+ /** Minimum Width (px) */
3802
+ readonly minWidth: 120;
3803
+ /** Animation Fade-In Dauer (ms) */
3804
+ readonly animationInDuration: 150;
3805
+ /** Animation Fade-Out Dauer (ms) */
3806
+ readonly animationOutDuration: 100;
3807
+ /** Spring Damping */
3808
+ readonly springDamping: 20;
3809
+ /** Spring Stiffness */
3810
+ readonly springStiffness: 400;
3811
+ };
3812
+ declare const TOOLTIP_CONSTANTS: {
3813
+ /** Content Padding (px) */
3814
+ readonly padding: 12;
3815
+ /** Margin vom Trigger (px) */
3816
+ readonly margin: 8;
3817
+ /** Arrow Size (px) */
3818
+ readonly arrowSize: 8;
3819
+ /** Default Max Width (px) */
3820
+ readonly defaultMaxWidth: 250;
3821
+ /** Default Delay before showing (ms) */
3822
+ readonly defaultDelay: 500;
3823
+ /** Animation Fade-In Dauer (ms) */
3824
+ readonly animationInDuration: 150;
3825
+ /** Animation Fade-Out Dauer (ms) */
3826
+ readonly animationOutDuration: 100;
3827
+ };
3828
+ declare const PROGRESS_CONSTANTS: {
3829
+ /** Indeterminate bar width as percentage */
3830
+ readonly indeterminateWidth: 30;
3831
+ /** Fallback colors for success/warning variants */
3832
+ readonly fallbackColors: {
3833
+ readonly success: "#22c55e";
3834
+ readonly warning: "#f59e0b";
3835
+ };
3836
+ };
3837
+ type SheetConstants = typeof SHEET_CONSTANTS;
3838
+ type DialogConstants = typeof DIALOG_CONSTANTS;
3839
+ type ToastConstants = typeof TOAST_CONSTANTS;
3840
+ type ButtonConstants = typeof BUTTON_CONSTANTS;
3841
+ type SwipeableConstants = typeof SWIPEABLE_CONSTANTS;
3842
+ type AnimationConstants = typeof ANIMATION_CONSTANTS;
3843
+ type SliderConstants = typeof SLIDER_CONSTANTS;
3844
+ type StepperConstants = typeof STEPPER_CONSTANTS;
3845
+ type TypographyConstants = typeof TYPOGRAPHY_CONSTANTS;
3846
+ type AlertConstants = typeof ALERT_CONSTANTS;
3847
+ type PopoverConstants = typeof POPOVER_CONSTANTS;
3848
+ type TooltipConstants = typeof TOOLTIP_CONSTANTS;
3849
+ type ProgressConstants = typeof PROGRESS_CONSTANTS;
3850
+
3851
+ export { ACCORDION_CONSTANTS, ALERT_CONSTANTS, ANIMATION_CONSTANTS, type AlertConstants, type AnimationConstants, type AnimationPreset, type AnimationTokens, BUTTON_CONSTANTS, type ButtonConstants, CAROUSEL_CONSTANTS, COLLAPSIBLE_CONSTANTS, type ColorKey, type ColorScheme, type ColorSchemePreference, type ComponentRadiusKey, type ComponentRadiusTokens, type ComponentSize, ConfigProvider, DIALOG_CONSTANTS, type DialogConstants, type DurationTokens, ErrorBoundary, type ErrorBoundaryFallbackProps, type ErrorBoundaryProps, Fonts, LIST_CONSTANTS, type NativeUIConfig, POPOVER_CONSTANTS, PROGRESS_CONSTANTS, type PopoverConstants, Portal, PortalHost, type PortalHostProps, type PortalProps, PortalProvider, type PortalProviderProps, type PresetColors, type PressScalePreset, type PressScaleTokens, Pressable, type PressableProps, type ProgressConstants, type RadiusPreset, type RadiusTokens, type RadiusValue, type ResolvedNativeUIConfig, SHEET_CONSTANTS, SLIDER_CONSTANTS, STEPPER_CONSTANTS, SWIPEABLE_CONSTANTS, SWIPEABLE_ROW_CONSTANTS, type ShadowSize, type ShadowStyle, type SheetConstants, type SliderConstants, Slot, type SlotProps, Slottable, type SlottableProps, type SpacingValue, type SpringConfig, type SpringPreset, type SpringTokens, type StepperConstants, type SwipeableConstants, TABS_CONSTANTS, TOAST_CONSTANTS, TOOLTIP_CONSTANTS, TYPOGRAPHY_CONSTANTS, type Theme, type ThemeColors, type ThemePreset, ThemeProvider, type ThemeProviderProps, type RadiusKey as ThemeRadiusKey, type SpacingKey as ThemeSpacingKey, type TimingConfig, type TimingPreset, type TimingTokens, type ToastConstants, type TooltipConstants, Typography, type TypographyConstants, accordionTokens, authBlockTokens, avatarTokens, badgeTokens, buttonTokens, calendarTokens, cardBlockTokens, cardTokens, carouselTokens, checkboxTokens, circularProgressTokens, collapsibleTokens, componentHeight, componentRadius, components, createComponentRadius, createRadius, darkColors, dateTimePickerTokens, defaultAnimationPreset, defaultConfig, defaultRadiusPreset, defaultThemePreset, defineConfig, durations, ecommerceBlockTokens, fontFamily, formTokens, geistFontFamily, getAnimationPreset, getPlatformShadow, getPresetColors, getPresetColorsForMode, getShadow, iconSize, imageGalleryTokens, infoBlockTokens, inputTokens, lightColors, listTokens, overlayTypography, paginationTokens, palette, playfulAnimations, pressScale, productBlockTokens, profileBlockTokens, progressTokens, radiusPresetBase, resolveConfig, searchInputTokens, settingsBlockTokens, shadows, skeletonTokens, socialBlockTokens, spinnerTokens, springs, stateBlockTokens, storiesTokens, subtleAnimations, swipeableRowTokens, switchTokens, tabsTokens, fontSize as themeFontSize, fontWeight as themeFontWeight, letterSpacing as themeLetterSpacing, lineHeight as themeLineHeight, themePresets, radius as themeRadius, spacing as themeSpacing, timing, useColorSchemeValue, useComposedRefs, useConfig, useIsDark, useTheme, withErrorBoundary };