@umituz/react-native-design-system 1.4.3 → 1.7.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 (139) hide show
  1. package/README.md +0 -1
  2. package/lib/index.d.ts +2 -5
  3. package/lib/index.d.ts.map +1 -1
  4. package/lib/index.js +17 -22
  5. package/lib/index.js.map +1 -1
  6. package/lib/presentation/atoms/AtomicButton.d.ts +1 -1
  7. package/lib/presentation/atoms/AtomicButton.d.ts.map +1 -1
  8. package/lib/presentation/atoms/AtomicButton.js +1 -1
  9. package/lib/presentation/atoms/AtomicButton.js.map +1 -1
  10. package/lib/presentation/atoms/AtomicFormError.js +1 -1
  11. package/lib/presentation/atoms/AtomicFormError.js.map +1 -1
  12. package/lib/presentation/atoms/AtomicIcon.d.ts +2 -3
  13. package/lib/presentation/atoms/AtomicIcon.d.ts.map +1 -1
  14. package/lib/presentation/atoms/AtomicIcon.js +1 -1
  15. package/lib/presentation/atoms/AtomicIcon.js.map +1 -1
  16. package/lib/presentation/atoms/AtomicTouchable.js.map +1 -1
  17. package/lib/presentation/atoms/fab/styles/fabStyles.d.ts +1 -1
  18. package/lib/presentation/atoms/fab/styles/fabStyles.d.ts.map +1 -1
  19. package/lib/presentation/atoms/index.d.ts +1 -1
  20. package/lib/presentation/atoms/picker/styles/pickerStyles.d.ts +4 -15
  21. package/lib/presentation/atoms/picker/styles/pickerStyles.d.ts.map +1 -1
  22. package/lib/presentation/atoms/picker/styles/pickerStyles.js.map +1 -1
  23. package/lib/presentation/hooks/useAppDesignTokens.d.ts +6 -27
  24. package/lib/presentation/hooks/useAppDesignTokens.d.ts.map +1 -1
  25. package/lib/presentation/hooks/useAppDesignTokens.js +6 -32
  26. package/lib/presentation/hooks/useAppDesignTokens.js.map +1 -1
  27. package/lib/presentation/molecules/AtomicConfirmationModal.d.ts +2 -2
  28. package/lib/presentation/molecules/AtomicConfirmationModal.d.ts.map +1 -1
  29. package/lib/presentation/molecules/AtomicConfirmationModal.js +2 -21
  30. package/lib/presentation/molecules/AtomicConfirmationModal.js.map +1 -1
  31. package/lib/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.d.ts +1 -1
  32. package/lib/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.d.ts.map +1 -1
  33. package/lib/presentation/molecules/confirmation-modal/types/index.d.ts +4 -6
  34. package/lib/presentation/molecules/confirmation-modal/types/index.d.ts.map +1 -1
  35. package/lib/presentation/molecules/index.d.ts +0 -1
  36. package/lib/presentation/molecules/index.d.ts.map +1 -1
  37. package/lib/presentation/molecules/index.js +0 -1
  38. package/lib/presentation/molecules/index.js.map +1 -1
  39. package/lib/presentation/organisms/AppHeader.d.ts +3 -2
  40. package/lib/presentation/organisms/AppHeader.d.ts.map +1 -1
  41. package/lib/presentation/organisms/AppHeader.js.map +1 -1
  42. package/lib/presentation/tokens/commonStyles.d.ts +1 -1
  43. package/lib/presentation/tokens/commonStyles.js +1 -1
  44. package/package.json +11 -5
  45. package/src/index.ts +35 -39
  46. package/src/presentation/atoms/AtomicBadge.tsx +1 -1
  47. package/src/presentation/atoms/AtomicButton.tsx +2 -2
  48. package/src/presentation/atoms/AtomicFormError.tsx +1 -1
  49. package/src/presentation/atoms/AtomicIcon.tsx +3 -4
  50. package/src/presentation/atoms/AtomicTouchable.tsx +1 -1
  51. package/src/presentation/atoms/fab/styles/fabStyles.ts +1 -1
  52. package/src/presentation/atoms/picker/styles/pickerStyles.ts +25 -5
  53. package/src/presentation/hooks/useAppDesignTokens.ts +6 -33
  54. package/src/presentation/molecules/AtomicConfirmationModal.tsx +4 -25
  55. package/src/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.ts +1 -1
  56. package/src/presentation/molecules/confirmation-modal/types/index.ts +4 -6
  57. package/src/presentation/molecules/index.ts +0 -1
  58. package/src/presentation/organisms/AppHeader.tsx +3 -2
  59. package/src/presentation/tokens/commonStyles.ts +1 -1
  60. package/lib/domains/icons/domain/config/IconLibraryConfig.d.ts +0 -91
  61. package/lib/domains/icons/domain/config/IconLibraryConfig.d.ts.map +0 -1
  62. package/lib/domains/icons/domain/config/IconLibraryConfig.js +0 -85
  63. package/lib/domains/icons/domain/config/IconLibraryConfig.js.map +0 -1
  64. package/lib/domains/icons/domain/entities/Icon.d.ts +0 -111
  65. package/lib/domains/icons/domain/entities/Icon.d.ts.map +0 -1
  66. package/lib/domains/icons/domain/entities/Icon.js +0 -87
  67. package/lib/domains/icons/domain/entities/Icon.js.map +0 -1
  68. package/lib/domains/icons/domain/interfaces/IIconAdapter.d.ts +0 -114
  69. package/lib/domains/icons/domain/interfaces/IIconAdapter.d.ts.map +0 -1
  70. package/lib/domains/icons/domain/interfaces/IIconAdapter.js +0 -17
  71. package/lib/domains/icons/domain/interfaces/IIconAdapter.js.map +0 -1
  72. package/lib/domains/icons/index.d.ts +0 -84
  73. package/lib/domains/icons/index.d.ts.map +0 -1
  74. package/lib/domains/icons/index.js +0 -89
  75. package/lib/domains/icons/index.js.map +0 -1
  76. package/lib/domains/icons/infrastructure/adapters/LucideAdapter.d.ts +0 -24
  77. package/lib/domains/icons/infrastructure/adapters/LucideAdapter.d.ts.map +0 -1
  78. package/lib/domains/icons/infrastructure/adapters/LucideAdapter.js +0 -85
  79. package/lib/domains/icons/infrastructure/adapters/LucideAdapter.js.map +0 -1
  80. package/lib/domains/icons/infrastructure/registries/ExpoIconRegistry.d.ts +0 -23
  81. package/lib/domains/icons/infrastructure/registries/ExpoIconRegistry.d.ts.map +0 -1
  82. package/lib/domains/icons/infrastructure/registries/ExpoIconRegistry.js +0 -178
  83. package/lib/domains/icons/infrastructure/registries/ExpoIconRegistry.js.map +0 -1
  84. package/lib/domains/icons/presentation/components/Icon.d.ts +0 -42
  85. package/lib/domains/icons/presentation/components/Icon.d.ts.map +0 -1
  86. package/lib/domains/icons/presentation/components/Icon.js +0 -86
  87. package/lib/domains/icons/presentation/components/Icon.js.map +0 -1
  88. package/lib/domains/icons/presentation/hooks/useIconLibrary.d.ts +0 -38
  89. package/lib/domains/icons/presentation/hooks/useIconLibrary.d.ts.map +0 -1
  90. package/lib/domains/icons/presentation/hooks/useIconLibrary.js +0 -114
  91. package/lib/domains/icons/presentation/hooks/useIconLibrary.js.map +0 -1
  92. package/lib/infrastructure/theme/globalThemeStore.d.ts +0 -42
  93. package/lib/infrastructure/theme/globalThemeStore.d.ts.map +0 -1
  94. package/lib/infrastructure/theme/globalThemeStore.js +0 -38
  95. package/lib/infrastructure/theme/globalThemeStore.js.map +0 -1
  96. package/lib/presentation/molecules/LanguageSwitcher.d.ts +0 -10
  97. package/lib/presentation/molecules/LanguageSwitcher.d.ts.map +0 -1
  98. package/lib/presentation/molecules/LanguageSwitcher.js +0 -24
  99. package/lib/presentation/molecules/LanguageSwitcher.js.map +0 -1
  100. package/lib/presentation/molecules/languageswitcher/config/languageSwitcherConfig.d.ts +0 -11
  101. package/lib/presentation/molecules/languageswitcher/config/languageSwitcherConfig.d.ts.map +0 -1
  102. package/lib/presentation/molecules/languageswitcher/config/languageSwitcherConfig.js +0 -6
  103. package/lib/presentation/molecules/languageswitcher/config/languageSwitcherConfig.js.map +0 -1
  104. package/lib/presentation/molecules/languageswitcher/hooks/useLanguageNavigation.d.ts +0 -5
  105. package/lib/presentation/molecules/languageswitcher/hooks/useLanguageNavigation.d.ts.map +0 -1
  106. package/lib/presentation/molecules/languageswitcher/hooks/useLanguageNavigation.js +0 -14
  107. package/lib/presentation/molecules/languageswitcher/hooks/useLanguageNavigation.js.map +0 -1
  108. package/lib/presentation/tokens/AppDesignTokens.d.ts +0 -14
  109. package/lib/presentation/tokens/AppDesignTokens.d.ts.map +0 -1
  110. package/lib/presentation/tokens/AppDesignTokens.js +0 -23
  111. package/lib/presentation/tokens/AppDesignTokens.js.map +0 -1
  112. package/lib/presentation/tokens/core/BaseTokens.d.ts +0 -312
  113. package/lib/presentation/tokens/core/BaseTokens.d.ts.map +0 -1
  114. package/lib/presentation/tokens/core/BaseTokens.js +0 -307
  115. package/lib/presentation/tokens/core/BaseTokens.js.map +0 -1
  116. package/lib/presentation/tokens/core/ColorPalette.d.ts +0 -216
  117. package/lib/presentation/tokens/core/ColorPalette.d.ts.map +0 -1
  118. package/lib/presentation/tokens/core/ColorPalette.js +0 -330
  119. package/lib/presentation/tokens/core/ColorPalette.js.map +0 -1
  120. package/lib/presentation/tokens/core/TokenFactory.d.ts +0 -216
  121. package/lib/presentation/tokens/core/TokenFactory.d.ts.map +0 -1
  122. package/lib/presentation/tokens/core/TokenFactory.js +0 -86
  123. package/lib/presentation/tokens/core/TokenFactory.js.map +0 -1
  124. package/src/domains/icons/domain/config/IconLibraryConfig.ts +0 -93
  125. package/src/domains/icons/domain/entities/Icon.ts +0 -143
  126. package/src/domains/icons/domain/interfaces/IIconAdapter.ts +0 -147
  127. package/src/domains/icons/index.ts +0 -109
  128. package/src/domains/icons/infrastructure/adapters/LucideAdapter.ts +0 -100
  129. package/src/domains/icons/infrastructure/registries/ExpoIconRegistry.ts +0 -191
  130. package/src/domains/icons/presentation/components/Icon.tsx +0 -132
  131. package/src/domains/icons/presentation/hooks/useIconLibrary.ts +0 -141
  132. package/src/infrastructure/theme/globalThemeStore.ts +0 -51
  133. package/src/presentation/molecules/LanguageSwitcher.tsx +0 -42
  134. package/src/presentation/molecules/languageswitcher/config/languageSwitcherConfig.ts +0 -5
  135. package/src/presentation/molecules/languageswitcher/hooks/useLanguageNavigation.ts +0 -16
  136. package/src/presentation/tokens/AppDesignTokens.ts +0 -55
  137. package/src/presentation/tokens/core/BaseTokens.ts +0 -376
  138. package/src/presentation/tokens/core/ColorPalette.ts +0 -400
  139. package/src/presentation/tokens/core/TokenFactory.ts +0 -118
@@ -1,51 +0,0 @@
1
- /**
2
- * Global Theme Store for Design System
3
- *
4
- * Minimal Zustand store for theme state management.
5
- * Apps can sync their theme state with this global store.
6
- *
7
- * WHY THIS EXISTS:
8
- * - ScreenLayout needs to know current theme mode
9
- * - Without prop drilling or Context API
10
- * - Single source of truth for design system components
11
- * - Apps control theme, design system reacts
12
- *
13
- * USAGE IN APP:
14
- * ```typescript
15
- * import { useDesignSystemTheme } from '@umituz/react-native-design-system';
16
- * import { useTheme } from '@domains/theme';
17
- *
18
- * // Sync app theme with design system
19
- * const { themeMode } = useTheme();
20
- * const { setThemeMode } = useDesignSystemTheme();
21
- *
22
- * useEffect(() => {
23
- * setThemeMode(themeMode);
24
- * }, [themeMode]);
25
- * ```
26
- */
27
-
28
- import { create } from 'zustand';
29
- import type { ThemeMode } from '../../presentation/tokens/core/ColorPalette';
30
-
31
- interface GlobalThemeStore {
32
- /** Current theme mode */
33
- themeMode: ThemeMode;
34
-
35
- /** Update theme mode (called by app when theme changes) */
36
- setThemeMode: (mode: ThemeMode) => void;
37
- }
38
-
39
- /**
40
- * Global theme store for design system components
41
- *
42
- * This is a MINIMAL store - app has the real theme logic.
43
- * Design system just mirrors the current theme for its components.
44
- */
45
- export const useDesignSystemTheme = create<GlobalThemeStore>((set) => ({
46
- themeMode: 'light',
47
- setThemeMode: (mode: ThemeMode) => set({ themeMode: mode }),
48
- }));
49
-
50
- // Re-export ThemeMode for backward compatibility
51
- export type { ThemeMode };
@@ -1,42 +0,0 @@
1
- import React from 'react';
2
- import { TouchableOpacity, StyleSheet } from 'react-native';
3
- import { AtomicText, AtomicIcon } from '../atoms';
4
- import { useAppDesignTokens } from '../hooks/useAppDesignTokens';
5
- import { useLanguageNavigation } from './languageswitcher/hooks/useLanguageNavigation';
6
- import { languageSwitcherConfig } from './languageswitcher/config/languageSwitcherConfig';
7
-
8
- interface LanguageSwitcherProps {
9
- showName?: boolean;
10
- showFlag?: boolean;
11
- color?: string;
12
- navigationScreen?: string;
13
- }
14
-
15
- export const LanguageSwitcher: React.FC<LanguageSwitcherProps> = ({
16
- showName = false,
17
- showFlag = true,
18
- color,
19
- navigationScreen = languageSwitcherConfig.defaultNavigationScreen,
20
- }) => {
21
- const tokens = useAppDesignTokens();
22
- const { currentLang, navigateToLanguageSelection } = useLanguageNavigation(navigationScreen);
23
- const iconColor = color || tokens.colors.textPrimary;
24
-
25
- const styles = getStyles(tokens);
26
-
27
- return (
28
- <TouchableOpacity style={styles.container} onPress={navigateToLanguageSelection} activeOpacity={0.7} hitSlop={languageSwitcherConfig.hitSlop}>
29
- {showFlag && <AtomicText type="headlineSmall" style={styles.flag}>{currentLang.flag}</AtomicText>}
30
- {showName && <AtomicText type="bodySmall" color={iconColor} style={styles.languageName}>{currentLang.nativeName}</AtomicText>}
31
- {!showName && !showFlag && <AtomicIcon name="Languages" color="primary" />}
32
- </TouchableOpacity>
33
- );
34
- };
35
-
36
- const getStyles = (tokens: ReturnType<typeof useAppDesignTokens>) => ({
37
- container: { flexDirection: 'row' as const, alignItems: 'center' as const, gap: tokens.spacing.sm, paddingHorizontal: tokens.spacing.xs },
38
- flag: { fontSize: tokens.typography.headingSmall.fontSize },
39
- languageName: { fontSize: tokens.typography.bodySmall.fontSize, fontWeight: tokens.typography.semibold },
40
- });
41
-
42
- export default LanguageSwitcher;
@@ -1,5 +0,0 @@
1
- export const languageSwitcherConfig = {
2
- defaultIconSize: 20,
3
- defaultNavigationScreen: 'LanguageSelection',
4
- hitSlop: { top: 10, bottom: 10, left: 10, right: 10 },
5
- };
@@ -1,16 +0,0 @@
1
- // @ts-ignore - Optional peer dependency
2
- import { useNavigation } from '@react-navigation/native';
3
- // @ts-ignore - Optional peer dependency
4
- import { useLocalization, getLanguageByCode, getDefaultLanguage } from '@umituz/react-native-localization';
5
-
6
- export const useLanguageNavigation = (navigationScreen: string) => {
7
- const navigation = useNavigation();
8
- const { currentLanguage } = useLocalization();
9
- const currentLang = getLanguageByCode(currentLanguage) || getDefaultLanguage();
10
-
11
- const navigateToLanguageSelection = () => {
12
- navigation.navigate(navigationScreen as never);
13
- };
14
-
15
- return { currentLang, navigateToLanguageSelection };
16
- };
@@ -1,55 +0,0 @@
1
- /**
2
- * DESIGN TOKENS - PUBLIC API
3
- *
4
- * ✅ CLEAN BARREL EXPORT - Single source of truth
5
- * ✅ ZERO DUPLICATION - All tokens from TokenFactory
6
- * ✅ TYPE-SAFE - Full TypeScript support
7
- * ✅ FACTORY-FIRST - Benefits all 100+ generated apps
8
- *
9
- * @module AppDesignTokens
10
- */
11
-
12
- // =============================================================================
13
- // CORE EXPORTS (from TokenFactory)
14
- // =============================================================================
15
-
16
- export {
17
- createDesignTokens,
18
- STATIC_DESIGN_TOKENS,
19
- STATIC_TOKENS,
20
- withAlpha,
21
- type DesignTokens,
22
- type ThemeMode,
23
- type ColorPalette,
24
- } from './core/TokenFactory';
25
-
26
- // =============================================================================
27
- // BASE TOKEN EXPORTS
28
- // =============================================================================
29
-
30
- export {
31
- BASE_TOKENS,
32
- spacing,
33
- typography,
34
- borders,
35
- iconSizes,
36
- opacity,
37
- avatarSizes,
38
- type Spacing,
39
- type Typography,
40
- type Borders,
41
- type IconSizes,
42
- type Opacity,
43
- type AvatarSizes,
44
- type BaseTokens,
45
- } from './core/BaseTokens';
46
-
47
- // =============================================================================
48
- // COLOR PALETTE EXPORTS
49
- // =============================================================================
50
-
51
- export {
52
- lightColors,
53
- darkColors,
54
- getColorPalette,
55
- } from './core/ColorPalette';
@@ -1,376 +0,0 @@
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 - REMOVED (moved to separate package)
224
- // =============================================================================
225
-
226
- // =============================================================================
227
- // OPACITY TOKENS
228
- // =============================================================================
229
-
230
- export const opacity = {
231
- disabled: 0.6,
232
- subtle: 0.8,
233
- medium: 0.5,
234
- light: 0.3,
235
- veryLight: 0.1,
236
- } as const;
237
-
238
- // =============================================================================
239
- // BORDER TOKENS
240
- // =============================================================================
241
-
242
- export const borders = {
243
- // Radius scale
244
- radius: {
245
- none: 0,
246
- xs: 2,
247
- sm: 4,
248
- md: 8,
249
- lg: 12,
250
- xl: 16,
251
- xxl: 24,
252
- full: 9999,
253
- },
254
-
255
- // Width scale
256
- width: {
257
- none: 0,
258
- thin: 1,
259
- medium: 2,
260
- thick: 4,
261
- },
262
-
263
- // Component-specific borders (without colors - colors injected by TokenFactory)
264
- button: {
265
- borderRadius: 8,
266
- borderWidth: 0,
267
- },
268
-
269
- card: {
270
- borderRadius: 12,
271
- borderWidth: 1,
272
- },
273
-
274
- input: {
275
- borderRadius: 8,
276
- borderWidth: 1,
277
- },
278
-
279
- pill: {
280
- borderRadius: 9999,
281
- borderWidth: 0,
282
- },
283
- } as const;
284
-
285
- // =============================================================================
286
- // COMPONENT SIZES (Touch Targets, Buttons, UI Elements)
287
- // =============================================================================
288
-
289
- export const sizes = {
290
- // Touch targets (Apple HIG minimum: 44x44)
291
- touchTarget: 44,
292
- touchTargetSmall: 36,
293
- touchTargetLarge: 56,
294
-
295
- // Button heights
296
- buttonHeight: {
297
- sm: 40,
298
- md: 48,
299
- lg: 56,
300
- xl: 64,
301
- },
302
-
303
- // Pagination dots (onboarding, carousels)
304
- dot: {
305
- inactive: 8,
306
- active: 24,
307
- },
308
-
309
- // Progress bars
310
- progressBar: {
311
- thin: 2,
312
- normal: 4,
313
- thick: 6,
314
- },
315
-
316
- // Common UI element sizes
317
- divider: 1,
318
- separator: 2,
319
- } as const;
320
-
321
- // =============================================================================
322
- // ICON SIZES
323
- // =============================================================================
324
-
325
- export const iconSizes = {
326
- xs: 12,
327
- sm: 16,
328
- md: 20,
329
- lg: 24,
330
- xl: 32,
331
- xxl: 40,
332
- } as const;
333
-
334
- // =============================================================================
335
- // AVATAR SIZES
336
- // =============================================================================
337
-
338
- export const avatarSizes = {
339
- xs: 24,
340
- sm: 32,
341
- md: 40,
342
- lg: 48,
343
- xl: 64,
344
- xxl: 80,
345
- } as const;
346
-
347
- // =============================================================================
348
- // CONSOLIDATED STATIC TOKENS
349
- // =============================================================================
350
-
351
- /**
352
- * All static design tokens in one place
353
- * These values DON'T change with theme (light/dark)
354
- */
355
- export const BASE_TOKENS = {
356
- spacing,
357
- typography,
358
- opacity,
359
- borders,
360
- sizes,
361
- iconSizes,
362
- avatarSizes,
363
- } as const;
364
-
365
- // =============================================================================
366
- // TYPE EXPORTS
367
- // =============================================================================
368
-
369
- export type Spacing = typeof spacing;
370
- export type Typography = typeof typography;
371
- export type Opacity = typeof opacity;
372
- export type Borders = typeof borders;
373
- export type Sizes = typeof sizes;
374
- export type IconSizes = typeof iconSizes;
375
- export type AvatarSizes = typeof avatarSizes;
376
- export type BaseTokens = typeof BASE_TOKENS;