@umituz/react-native-design-system 1.0.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 (80) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +157 -0
  3. package/package.json +43 -0
  4. package/src/index.ts +345 -0
  5. package/src/presentation/atoms/AtomicAvatar.tsx +157 -0
  6. package/src/presentation/atoms/AtomicAvatarGroup.tsx +169 -0
  7. package/src/presentation/atoms/AtomicBadge.tsx +232 -0
  8. package/src/presentation/atoms/AtomicButton.tsx +124 -0
  9. package/src/presentation/atoms/AtomicCard.tsx +112 -0
  10. package/src/presentation/atoms/AtomicChip.tsx +223 -0
  11. package/src/presentation/atoms/AtomicDatePicker.tsx +347 -0
  12. package/src/presentation/atoms/AtomicDivider.tsx +114 -0
  13. package/src/presentation/atoms/AtomicFab.tsx +104 -0
  14. package/src/presentation/atoms/AtomicFilter.tsx +154 -0
  15. package/src/presentation/atoms/AtomicFormError.tsx +105 -0
  16. package/src/presentation/atoms/AtomicIcon.tsx +29 -0
  17. package/src/presentation/atoms/AtomicImage.tsx +149 -0
  18. package/src/presentation/atoms/AtomicInput.tsx +232 -0
  19. package/src/presentation/atoms/AtomicNumberInput.tsx +182 -0
  20. package/src/presentation/atoms/AtomicPicker.tsx +458 -0
  21. package/src/presentation/atoms/AtomicProgress.tsx +143 -0
  22. package/src/presentation/atoms/AtomicSearchBar.tsx +114 -0
  23. package/src/presentation/atoms/AtomicSkeleton.tsx +146 -0
  24. package/src/presentation/atoms/AtomicSort.tsx +145 -0
  25. package/src/presentation/atoms/AtomicSwitch.tsx +166 -0
  26. package/src/presentation/atoms/AtomicText.tsx +50 -0
  27. package/src/presentation/atoms/AtomicTextArea.tsx +198 -0
  28. package/src/presentation/atoms/AtomicTouchable.tsx +233 -0
  29. package/src/presentation/atoms/fab/styles/fabStyles.ts +69 -0
  30. package/src/presentation/atoms/fab/types/index.ts +88 -0
  31. package/src/presentation/atoms/filter/styles/filterStyles.ts +32 -0
  32. package/src/presentation/atoms/filter/types/index.ts +89 -0
  33. package/src/presentation/atoms/index.ts +378 -0
  34. package/src/presentation/atoms/input/hooks/useInputState.ts +15 -0
  35. package/src/presentation/atoms/input/styles/inputStyles.ts +66 -0
  36. package/src/presentation/atoms/input/types/index.ts +25 -0
  37. package/src/presentation/atoms/picker/styles/pickerStyles.ts +200 -0
  38. package/src/presentation/atoms/picker/types/index.ts +40 -0
  39. package/src/presentation/atoms/touchable/styles/touchableStyles.ts +71 -0
  40. package/src/presentation/atoms/touchable/types/index.ts +162 -0
  41. package/src/presentation/hooks/useAppDesignTokens.ts +78 -0
  42. package/src/presentation/hooks/useResponsive.ts +180 -0
  43. package/src/presentation/loading/index.ts +40 -0
  44. package/src/presentation/loading/presentation/components/LoadingSpinner.tsx +116 -0
  45. package/src/presentation/loading/presentation/components/LoadingState.tsx +200 -0
  46. package/src/presentation/loading/presentation/hooks/useLoading.ts +100 -0
  47. package/src/presentation/molecules/AtomicConfirmationModal.tsx +263 -0
  48. package/src/presentation/molecules/EmptyState.tsx +130 -0
  49. package/src/presentation/molecules/FormField.tsx +128 -0
  50. package/src/presentation/molecules/GridContainer.tsx +124 -0
  51. package/src/presentation/molecules/IconContainer.tsx +94 -0
  52. package/src/presentation/molecules/LanguageSwitcher.tsx +42 -0
  53. package/src/presentation/molecules/ListItem.tsx +36 -0
  54. package/src/presentation/molecules/ScreenHeader.tsx +140 -0
  55. package/src/presentation/molecules/SearchBar.tsx +85 -0
  56. package/src/presentation/molecules/SectionCard.tsx +74 -0
  57. package/src/presentation/molecules/SectionContainer.tsx +106 -0
  58. package/src/presentation/molecules/SectionHeader.tsx +125 -0
  59. package/src/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.ts +133 -0
  60. package/src/presentation/molecules/confirmation-modal/types/index.ts +107 -0
  61. package/src/presentation/molecules/index.ts +42 -0
  62. package/src/presentation/molecules/languageswitcher/config/languageSwitcherConfig.ts +5 -0
  63. package/src/presentation/molecules/languageswitcher/hooks/useLanguageNavigation.ts +15 -0
  64. package/src/presentation/molecules/listitem/styles/listItemStyles.ts +19 -0
  65. package/src/presentation/molecules/listitem/types/index.ts +17 -0
  66. package/src/presentation/organisms/AppHeader.tsx +136 -0
  67. package/src/presentation/organisms/FormContainer.tsx +180 -0
  68. package/src/presentation/organisms/ScreenLayout.tsx +209 -0
  69. package/src/presentation/organisms/index.ts +25 -0
  70. package/src/presentation/tokens/AppDesignTokens.ts +57 -0
  71. package/src/presentation/tokens/commonStyles.ts +253 -0
  72. package/src/presentation/tokens/core/BaseTokens.ts +394 -0
  73. package/src/presentation/tokens/core/ColorPalette.ts +398 -0
  74. package/src/presentation/tokens/core/TokenFactory.ts +120 -0
  75. package/src/presentation/utils/platformConstants.ts +124 -0
  76. package/src/presentation/utils/responsive.ts +516 -0
  77. package/src/presentation/utils/variants/compound.ts +29 -0
  78. package/src/presentation/utils/variants/core.ts +39 -0
  79. package/src/presentation/utils/variants/helpers.ts +13 -0
  80. package/src/presentation/utils/variants.ts +3 -0
@@ -0,0 +1,253 @@
1
+ /**
2
+ * Common Styles - Reusable Style Patterns
3
+ *
4
+ * Centralized style utilities to reduce duplication across screens.
5
+ * These styles are composable and follow DRY principles.
6
+ *
7
+ * Usage:
8
+ * ```typescript
9
+ * import { useCommonStyles } from '@domains/design-system/commonStyles';
10
+ *
11
+ * const MyComponent = () => {
12
+ * const commonStyles = useCommonStyles();
13
+ * return <View style={commonStyles.screenContainer}>...</View>;
14
+ * };
15
+ * ```
16
+ */
17
+
18
+ import { ViewStyle, TextStyle } from 'react-native';
19
+ import { useAppDesignTokens } from '../hooks/useAppDesignTokens';
20
+
21
+ /**
22
+ * Hook to get common styles with dynamic theme support
23
+ */
24
+ export const useCommonStyles = () => {
25
+ const tokens = useAppDesignTokens();
26
+
27
+ return {
28
+ // ========================================================================
29
+ // SCREEN CONTAINERS
30
+ // ========================================================================
31
+
32
+ /**
33
+ * Standard full-screen container
34
+ * Most common pattern: flex: 1 with background color
35
+ */
36
+ screenContainer: {
37
+ flex: 1,
38
+ backgroundColor: tokens.colors.backgroundPrimary,
39
+ } as ViewStyle,
40
+
41
+ /**
42
+ * Basic flex container without background
43
+ * Use when background is set elsewhere or not needed
44
+ */
45
+ flexContainer: {
46
+ flex: 1,
47
+ } as ViewStyle,
48
+
49
+ /**
50
+ * Screen container with secondary background
51
+ */
52
+ screenContainerSecondary: {
53
+ flex: 1,
54
+ backgroundColor: tokens.colors.backgroundSecondary,
55
+ } as ViewStyle,
56
+
57
+ // ========================================================================
58
+ // SCROLL CONTAINERS
59
+ // ========================================================================
60
+
61
+ /**
62
+ * Standard ScrollView wrapper
63
+ */
64
+ scrollView: {
65
+ flex: 1,
66
+ } as ViewStyle,
67
+
68
+ /**
69
+ * ScrollView content container with standard padding
70
+ */
71
+ scrollContent: {
72
+ paddingHorizontal: tokens.spacing.lg,
73
+ paddingBottom: tokens.spacing.xl,
74
+ } as ViewStyle,
75
+
76
+ /**
77
+ * ScrollView content that grows to fill available space
78
+ */
79
+ scrollContentGrow: {
80
+ flexGrow: 1,
81
+ padding: tokens.spacing.lg,
82
+ } as ViewStyle,
83
+
84
+ /**
85
+ * Centered scroll content (for forms, onboarding screens)
86
+ */
87
+ scrollContentCentered: {
88
+ flexGrow: 1,
89
+ padding: tokens.spacing.lg,
90
+ justifyContent: 'center' as const,
91
+ } as ViewStyle,
92
+
93
+ // ========================================================================
94
+ // LAYOUT UTILITIES
95
+ // ========================================================================
96
+
97
+ /**
98
+ * Centered container - both horizontal and vertical
99
+ * Perfect for empty states, loading screens, splash screens
100
+ */
101
+ centerContainer: {
102
+ flex: 1,
103
+ justifyContent: 'center' as const,
104
+ alignItems: 'center' as const,
105
+ } as ViewStyle,
106
+
107
+ /**
108
+ * Centered container with padding
109
+ */
110
+ centerContainerPadded: {
111
+ flex: 1,
112
+ justifyContent: 'center' as const,
113
+ alignItems: 'center' as const,
114
+ paddingHorizontal: tokens.spacing.xl,
115
+ } as ViewStyle,
116
+
117
+ /**
118
+ * Horizontal row layout
119
+ */
120
+ row: {
121
+ flexDirection: 'row' as const,
122
+ alignItems: 'center' as const,
123
+ } as ViewStyle,
124
+
125
+ /**
126
+ * Horizontal row with space between
127
+ */
128
+ rowBetween: {
129
+ flexDirection: 'row' as const,
130
+ alignItems: 'center' as const,
131
+ justifyContent: 'space-between' as const,
132
+ } as ViewStyle,
133
+
134
+ /**
135
+ * Horizontal row centered
136
+ */
137
+ rowCenter: {
138
+ flexDirection: 'row' as const,
139
+ alignItems: 'center' as const,
140
+ justifyContent: 'center' as const,
141
+ } as ViewStyle,
142
+
143
+ // ========================================================================
144
+ // PADDING UTILITIES
145
+ // ========================================================================
146
+
147
+ /**
148
+ * Standard horizontal padding
149
+ */
150
+ paddedHorizontal: {
151
+ paddingHorizontal: tokens.spacing.lg,
152
+ } as ViewStyle,
153
+
154
+ /**
155
+ * Standard vertical padding
156
+ */
157
+ paddedVertical: {
158
+ paddingVertical: tokens.spacing.lg,
159
+ } as ViewStyle,
160
+
161
+ /**
162
+ * Standard padding all sides
163
+ */
164
+ padded: {
165
+ padding: tokens.spacing.lg,
166
+ } as ViewStyle,
167
+
168
+ // ========================================================================
169
+ // SECTION STYLES
170
+ // ========================================================================
171
+
172
+ /**
173
+ * Standard section container
174
+ */
175
+ section: {
176
+ marginBottom: tokens.spacing.xl,
177
+ } as ViewStyle,
178
+
179
+ /**
180
+ * Section with padding
181
+ */
182
+ sectionPadded: {
183
+ marginBottom: tokens.spacing.xl,
184
+ paddingHorizontal: tokens.spacing.lg,
185
+ } as ViewStyle,
186
+
187
+ // ========================================================================
188
+ // TEXT STYLES
189
+ // ========================================================================
190
+
191
+ /**
192
+ * Screen title - primary heading
193
+ */
194
+ screenTitle: {
195
+ ...tokens.typography.headingLarge,
196
+ color: tokens.colors.textPrimary,
197
+ marginBottom: tokens.spacing.sm,
198
+ } as TextStyle,
199
+
200
+ /**
201
+ * Section title
202
+ */
203
+ sectionTitle: {
204
+ ...tokens.typography.headingMedium,
205
+ color: tokens.colors.textPrimary,
206
+ marginBottom: tokens.spacing.md,
207
+ } as TextStyle,
208
+
209
+ /**
210
+ * Subtitle/description text
211
+ */
212
+ subtitle: {
213
+ ...tokens.typography.bodyMedium,
214
+ color: tokens.colors.textSecondary,
215
+ textAlign: 'center' as const,
216
+ } as TextStyle,
217
+
218
+ /**
219
+ * Body text
220
+ */
221
+ bodyText: {
222
+ ...tokens.typography.bodyMedium,
223
+ color: tokens.colors.textPrimary,
224
+ } as TextStyle,
225
+
226
+ /**
227
+ * Secondary text (muted)
228
+ */
229
+ secondaryText: {
230
+ ...tokens.typography.bodySmall,
231
+ color: tokens.colors.textSecondary,
232
+ } as TextStyle,
233
+
234
+ // ========================================================================
235
+ // FORM STYLES
236
+ // ========================================================================
237
+
238
+ /**
239
+ * Form container
240
+ */
241
+ form: {
242
+ width: '100%',
243
+ } as ViewStyle,
244
+
245
+ /**
246
+ * Form header section
247
+ */
248
+ formHeader: {
249
+ alignItems: 'center' as const,
250
+ marginBottom: tokens.spacing.xl,
251
+ } as ViewStyle,
252
+ };
253
+ };
@@ -0,0 +1,394 @@
1
+ /**
2
+ * BASE DESIGN TOKENS - SINGLE SOURCE OF TRUTH
3
+ *
4
+ * ✅ STATIC tokens that don't change with theme
5
+ * ✅ DRY Principle - Each value defined ONCE
6
+ * ✅ Type-safe with full TypeScript support
7
+ * ✅ Factory-first design for 100+ generated apps
8
+ *
9
+ * @module BaseTokens
10
+ */
11
+
12
+ import { TextStyle } from 'react-native';
13
+
14
+ // =============================================================================
15
+ // SPACING TOKENS
16
+ // =============================================================================
17
+
18
+ export const spacing = {
19
+ // Base spacing scale
20
+ xs: 4,
21
+ sm: 8,
22
+ md: 16,
23
+ lg: 24,
24
+ xl: 32,
25
+ xxl: 48,
26
+ xxxl: 64,
27
+
28
+ // Component-specific spacing
29
+ screenPadding: 20,
30
+ cardPadding: 16,
31
+ buttonPadding: 16,
32
+ inputPadding: 8,
33
+ sectionSpacing: 24,
34
+
35
+ // Icon sizes
36
+ iconSizeSmall: 16,
37
+ iconSizeMedium: 20,
38
+ iconSizeLarge: 24,
39
+ iconSizeXLarge: 32,
40
+ iconSizeHero: 64,
41
+
42
+ // Component heights
43
+ buttonHeight: 48,
44
+ inputHeight: 48,
45
+ appBarHeight: 56,
46
+ tabBarHeight: 60,
47
+ } as const;
48
+
49
+ // =============================================================================
50
+ // TYPOGRAPHY TOKENS
51
+ // =============================================================================
52
+
53
+ export const typography = {
54
+ // Font families
55
+ fontPrimary: 'System',
56
+ fontSecondary: 'System',
57
+ fontMono: 'Courier New',
58
+
59
+ // Font sizes
60
+ xs: 12,
61
+ sm: 14,
62
+ md: 16,
63
+ lg: 18,
64
+ xl: 20,
65
+ xxl: 24,
66
+ xxxl: 32,
67
+
68
+ // Font weights
69
+ light: '300' as const,
70
+ regular: '400' as const,
71
+ medium: '500' as const,
72
+ semibold: '600' as const,
73
+ bold: '700' as const,
74
+
75
+ // Line heights
76
+ lineHeightTight: 1.2,
77
+ lineHeightNormal: 1.5,
78
+ lineHeightRelaxed: 1.7,
79
+
80
+ // =============================================================================
81
+ // MATERIAL DESIGN 3 TYPE SCALE
82
+ // =============================================================================
83
+
84
+ // Display styles (largest)
85
+ displayLarge: {
86
+ fontSize: 57,
87
+ fontWeight: '400' as const,
88
+ lineHeight: 64,
89
+ } as TextStyle,
90
+
91
+ displayMedium: {
92
+ fontSize: 45,
93
+ fontWeight: '400' as const,
94
+ lineHeight: 52,
95
+ } as TextStyle,
96
+
97
+ displaySmall: {
98
+ fontSize: 36,
99
+ fontWeight: '400' as const,
100
+ lineHeight: 44,
101
+ } as TextStyle,
102
+
103
+ // Headline styles
104
+ headlineLarge: {
105
+ fontSize: 32,
106
+ fontWeight: '400' as const,
107
+ lineHeight: 40,
108
+ } as TextStyle,
109
+
110
+ headlineMedium: {
111
+ fontSize: 28,
112
+ fontWeight: '400' as const,
113
+ lineHeight: 36,
114
+ } as TextStyle,
115
+
116
+ headlineSmall: {
117
+ fontSize: 24,
118
+ fontWeight: '400' as const,
119
+ lineHeight: 32,
120
+ } as TextStyle,
121
+
122
+ // Title styles
123
+ titleLarge: {
124
+ fontSize: 22,
125
+ fontWeight: '400' as const,
126
+ lineHeight: 28,
127
+ } as TextStyle,
128
+
129
+ titleMedium: {
130
+ fontSize: 16,
131
+ fontWeight: '500' as const,
132
+ lineHeight: 24,
133
+ } as TextStyle,
134
+
135
+ titleSmall: {
136
+ fontSize: 14,
137
+ fontWeight: '500' as const,
138
+ lineHeight: 20,
139
+ } as TextStyle,
140
+
141
+ // Body styles
142
+ bodyLarge: {
143
+ fontSize: 18,
144
+ fontWeight: '400' as const,
145
+ lineHeight: 27,
146
+ } as TextStyle,
147
+
148
+ bodyMedium: {
149
+ fontSize: 16,
150
+ fontWeight: '400' as const,
151
+ lineHeight: 24,
152
+ } as TextStyle,
153
+
154
+ bodySmall: {
155
+ fontSize: 14,
156
+ fontWeight: '400' as const,
157
+ lineHeight: 21,
158
+ } as TextStyle,
159
+
160
+ // Label styles
161
+ labelLarge: {
162
+ fontSize: 16,
163
+ fontWeight: '500' as const,
164
+ lineHeight: 19.2,
165
+ } as TextStyle,
166
+
167
+ labelMedium: {
168
+ fontSize: 14,
169
+ fontWeight: '500' as const,
170
+ lineHeight: 16.8,
171
+ } as TextStyle,
172
+
173
+ labelSmall: {
174
+ fontSize: 12,
175
+ fontWeight: '500' as const,
176
+ lineHeight: 14.4,
177
+ } as TextStyle,
178
+
179
+ // =============================================================================
180
+ // LEGACY SUPPORT (backwards compatibility)
181
+ // =============================================================================
182
+
183
+ headingLarge: {
184
+ fontSize: 32,
185
+ fontWeight: '700' as const,
186
+ lineHeight: 38.4,
187
+ } as TextStyle,
188
+
189
+ headingMedium: {
190
+ fontSize: 24,
191
+ fontWeight: '600' as const,
192
+ lineHeight: 28.8,
193
+ } as TextStyle,
194
+
195
+ headingSmall: {
196
+ fontSize: 20,
197
+ fontWeight: '600' as const,
198
+ lineHeight: 24,
199
+ } as TextStyle,
200
+
201
+ button: {
202
+ fontSize: 16,
203
+ fontWeight: '600' as const,
204
+ lineHeight: 19.2,
205
+ } as TextStyle,
206
+
207
+ caption: {
208
+ fontSize: 12,
209
+ fontWeight: '400' as const,
210
+ lineHeight: 18,
211
+ } as TextStyle,
212
+
213
+ overline: {
214
+ fontSize: 12,
215
+ fontWeight: '500' as const,
216
+ lineHeight: 18,
217
+ textTransform: 'uppercase' as const,
218
+ letterSpacing: 1,
219
+ } as TextStyle,
220
+ } as const;
221
+
222
+ // =============================================================================
223
+ // ANIMATION TOKENS
224
+ // =============================================================================
225
+
226
+ export const animations = {
227
+ // Duration scale (milliseconds)
228
+ fastest: 150,
229
+ fast: 150,
230
+ normal: 300,
231
+ slow: 500,
232
+ slower: 750,
233
+ slowest: 1000,
234
+
235
+ // Easing functions
236
+ easeInOut: 'ease-in-out' as const,
237
+ easeIn: 'ease-in' as const,
238
+ easeOut: 'ease-out' as const,
239
+ linear: 'linear' as const,
240
+ } as const;
241
+
242
+ // =============================================================================
243
+ // OPACITY TOKENS
244
+ // =============================================================================
245
+
246
+ export const opacity = {
247
+ disabled: 0.6,
248
+ subtle: 0.8,
249
+ medium: 0.5,
250
+ light: 0.3,
251
+ veryLight: 0.1,
252
+ } as const;
253
+
254
+ // =============================================================================
255
+ // BORDER TOKENS
256
+ // =============================================================================
257
+
258
+ export const borders = {
259
+ // Radius scale
260
+ radius: {
261
+ none: 0,
262
+ xs: 2,
263
+ sm: 4,
264
+ md: 8,
265
+ lg: 12,
266
+ xl: 16,
267
+ xxl: 24,
268
+ full: 9999,
269
+ },
270
+
271
+ // Width scale
272
+ width: {
273
+ none: 0,
274
+ thin: 1,
275
+ medium: 2,
276
+ thick: 4,
277
+ },
278
+
279
+ // Component-specific borders (without colors - colors injected by TokenFactory)
280
+ button: {
281
+ borderRadius: 8,
282
+ borderWidth: 0,
283
+ },
284
+
285
+ card: {
286
+ borderRadius: 12,
287
+ borderWidth: 1,
288
+ },
289
+
290
+ input: {
291
+ borderRadius: 8,
292
+ borderWidth: 1,
293
+ },
294
+
295
+ pill: {
296
+ borderRadius: 9999,
297
+ borderWidth: 0,
298
+ },
299
+ } as const;
300
+
301
+ // =============================================================================
302
+ // COMPONENT SIZES (Touch Targets, Buttons, UI Elements)
303
+ // =============================================================================
304
+
305
+ export const sizes = {
306
+ // Touch targets (Apple HIG minimum: 44x44)
307
+ touchTarget: 44,
308
+ touchTargetSmall: 36,
309
+ touchTargetLarge: 56,
310
+
311
+ // Button heights
312
+ buttonHeight: {
313
+ sm: 40,
314
+ md: 48,
315
+ lg: 56,
316
+ xl: 64,
317
+ },
318
+
319
+ // Pagination dots (onboarding, carousels)
320
+ dot: {
321
+ inactive: 8,
322
+ active: 24,
323
+ },
324
+
325
+ // Progress bars
326
+ progressBar: {
327
+ thin: 2,
328
+ normal: 4,
329
+ thick: 6,
330
+ },
331
+
332
+ // Common UI element sizes
333
+ divider: 1,
334
+ separator: 2,
335
+ } as const;
336
+
337
+ // =============================================================================
338
+ // ICON SIZES
339
+ // =============================================================================
340
+
341
+ export const iconSizes = {
342
+ xs: 12,
343
+ sm: 16,
344
+ md: 20,
345
+ lg: 24,
346
+ xl: 32,
347
+ xxl: 40,
348
+ } as const;
349
+
350
+ // =============================================================================
351
+ // AVATAR SIZES
352
+ // =============================================================================
353
+
354
+ export const avatarSizes = {
355
+ xs: 24,
356
+ sm: 32,
357
+ md: 40,
358
+ lg: 48,
359
+ xl: 64,
360
+ xxl: 80,
361
+ } as const;
362
+
363
+ // =============================================================================
364
+ // CONSOLIDATED STATIC TOKENS
365
+ // =============================================================================
366
+
367
+ /**
368
+ * All static design tokens in one place
369
+ * These values DON'T change with theme (light/dark)
370
+ */
371
+ export const BASE_TOKENS = {
372
+ spacing,
373
+ typography,
374
+ animations,
375
+ opacity,
376
+ borders,
377
+ sizes,
378
+ iconSizes,
379
+ avatarSizes,
380
+ } as const;
381
+
382
+ // =============================================================================
383
+ // TYPE EXPORTS
384
+ // =============================================================================
385
+
386
+ export type Spacing = typeof spacing;
387
+ export type Typography = typeof typography;
388
+ export type Animations = typeof animations;
389
+ export type Opacity = typeof opacity;
390
+ export type Borders = typeof borders;
391
+ export type Sizes = typeof sizes;
392
+ export type IconSizes = typeof iconSizes;
393
+ export type AvatarSizes = typeof avatarSizes;
394
+ export type BaseTokens = typeof BASE_TOKENS;