@umituz/react-native-design-system 1.5.0 → 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 (105) hide show
  1. package/lib/index.d.ts +2 -4
  2. package/lib/index.d.ts.map +1 -1
  3. package/lib/index.js +17 -17
  4. package/lib/index.js.map +1 -1
  5. package/lib/presentation/atoms/AtomicButton.d.ts +1 -1
  6. package/lib/presentation/atoms/AtomicButton.d.ts.map +1 -1
  7. package/lib/presentation/atoms/AtomicButton.js +1 -1
  8. package/lib/presentation/atoms/AtomicButton.js.map +1 -1
  9. package/lib/presentation/atoms/AtomicFormError.js +1 -1
  10. package/lib/presentation/atoms/AtomicFormError.js.map +1 -1
  11. package/lib/presentation/atoms/AtomicIcon.d.ts +2 -3
  12. package/lib/presentation/atoms/AtomicIcon.d.ts.map +1 -1
  13. package/lib/presentation/atoms/AtomicIcon.js +1 -1
  14. package/lib/presentation/atoms/AtomicIcon.js.map +1 -1
  15. package/lib/presentation/atoms/fab/styles/fabStyles.d.ts +1 -1
  16. package/lib/presentation/atoms/fab/styles/fabStyles.d.ts.map +1 -1
  17. package/lib/presentation/atoms/index.d.ts +1 -1
  18. package/lib/presentation/atoms/picker/styles/pickerStyles.d.ts +4 -15
  19. package/lib/presentation/atoms/picker/styles/pickerStyles.d.ts.map +1 -1
  20. package/lib/presentation/atoms/picker/styles/pickerStyles.js.map +1 -1
  21. package/lib/presentation/hooks/useAppDesignTokens.d.ts +6 -27
  22. package/lib/presentation/hooks/useAppDesignTokens.d.ts.map +1 -1
  23. package/lib/presentation/hooks/useAppDesignTokens.js +6 -32
  24. package/lib/presentation/hooks/useAppDesignTokens.js.map +1 -1
  25. package/lib/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.d.ts +1 -1
  26. package/lib/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.d.ts.map +1 -1
  27. package/lib/presentation/organisms/AppHeader.d.ts +3 -2
  28. package/lib/presentation/organisms/AppHeader.d.ts.map +1 -1
  29. package/lib/presentation/organisms/AppHeader.js.map +1 -1
  30. package/package.json +13 -3
  31. package/src/index.ts +34 -29
  32. package/src/presentation/atoms/AtomicBadge.tsx +1 -1
  33. package/src/presentation/atoms/AtomicButton.tsx +2 -2
  34. package/src/presentation/atoms/AtomicFormError.tsx +1 -1
  35. package/src/presentation/atoms/AtomicIcon.tsx +3 -4
  36. package/src/presentation/atoms/fab/styles/fabStyles.ts +1 -1
  37. package/src/presentation/atoms/picker/styles/pickerStyles.ts +25 -5
  38. package/src/presentation/hooks/useAppDesignTokens.ts +6 -33
  39. package/src/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.ts +1 -1
  40. package/src/presentation/organisms/AppHeader.tsx +3 -2
  41. package/lib/domains/icons/domain/config/IconLibraryConfig.d.ts +0 -91
  42. package/lib/domains/icons/domain/config/IconLibraryConfig.d.ts.map +0 -1
  43. package/lib/domains/icons/domain/config/IconLibraryConfig.js +0 -85
  44. package/lib/domains/icons/domain/config/IconLibraryConfig.js.map +0 -1
  45. package/lib/domains/icons/domain/entities/Icon.d.ts +0 -111
  46. package/lib/domains/icons/domain/entities/Icon.d.ts.map +0 -1
  47. package/lib/domains/icons/domain/entities/Icon.js +0 -87
  48. package/lib/domains/icons/domain/entities/Icon.js.map +0 -1
  49. package/lib/domains/icons/domain/interfaces/IIconAdapter.d.ts +0 -114
  50. package/lib/domains/icons/domain/interfaces/IIconAdapter.d.ts.map +0 -1
  51. package/lib/domains/icons/domain/interfaces/IIconAdapter.js +0 -17
  52. package/lib/domains/icons/domain/interfaces/IIconAdapter.js.map +0 -1
  53. package/lib/domains/icons/index.d.ts +0 -84
  54. package/lib/domains/icons/index.d.ts.map +0 -1
  55. package/lib/domains/icons/index.js +0 -89
  56. package/lib/domains/icons/index.js.map +0 -1
  57. package/lib/domains/icons/infrastructure/adapters/LucideAdapter.d.ts +0 -24
  58. package/lib/domains/icons/infrastructure/adapters/LucideAdapter.d.ts.map +0 -1
  59. package/lib/domains/icons/infrastructure/adapters/LucideAdapter.js +0 -85
  60. package/lib/domains/icons/infrastructure/adapters/LucideAdapter.js.map +0 -1
  61. package/lib/domains/icons/infrastructure/registries/ExpoIconRegistry.d.ts +0 -23
  62. package/lib/domains/icons/infrastructure/registries/ExpoIconRegistry.d.ts.map +0 -1
  63. package/lib/domains/icons/infrastructure/registries/ExpoIconRegistry.js +0 -178
  64. package/lib/domains/icons/infrastructure/registries/ExpoIconRegistry.js.map +0 -1
  65. package/lib/domains/icons/presentation/components/Icon.d.ts +0 -42
  66. package/lib/domains/icons/presentation/components/Icon.d.ts.map +0 -1
  67. package/lib/domains/icons/presentation/components/Icon.js +0 -86
  68. package/lib/domains/icons/presentation/components/Icon.js.map +0 -1
  69. package/lib/domains/icons/presentation/hooks/useIconLibrary.d.ts +0 -38
  70. package/lib/domains/icons/presentation/hooks/useIconLibrary.d.ts.map +0 -1
  71. package/lib/domains/icons/presentation/hooks/useIconLibrary.js +0 -114
  72. package/lib/domains/icons/presentation/hooks/useIconLibrary.js.map +0 -1
  73. package/lib/infrastructure/theme/globalThemeStore.d.ts +0 -42
  74. package/lib/infrastructure/theme/globalThemeStore.d.ts.map +0 -1
  75. package/lib/infrastructure/theme/globalThemeStore.js +0 -38
  76. package/lib/infrastructure/theme/globalThemeStore.js.map +0 -1
  77. package/lib/presentation/tokens/AppDesignTokens.d.ts +0 -14
  78. package/lib/presentation/tokens/AppDesignTokens.d.ts.map +0 -1
  79. package/lib/presentation/tokens/AppDesignTokens.js +0 -23
  80. package/lib/presentation/tokens/AppDesignTokens.js.map +0 -1
  81. package/lib/presentation/tokens/core/BaseTokens.d.ts +0 -312
  82. package/lib/presentation/tokens/core/BaseTokens.d.ts.map +0 -1
  83. package/lib/presentation/tokens/core/BaseTokens.js +0 -304
  84. package/lib/presentation/tokens/core/BaseTokens.js.map +0 -1
  85. package/lib/presentation/tokens/core/ColorPalette.d.ts +0 -216
  86. package/lib/presentation/tokens/core/ColorPalette.d.ts.map +0 -1
  87. package/lib/presentation/tokens/core/ColorPalette.js +0 -330
  88. package/lib/presentation/tokens/core/ColorPalette.js.map +0 -1
  89. package/lib/presentation/tokens/core/TokenFactory.d.ts +0 -216
  90. package/lib/presentation/tokens/core/TokenFactory.d.ts.map +0 -1
  91. package/lib/presentation/tokens/core/TokenFactory.js +0 -86
  92. package/lib/presentation/tokens/core/TokenFactory.js.map +0 -1
  93. package/src/domains/icons/domain/config/IconLibraryConfig.ts +0 -93
  94. package/src/domains/icons/domain/entities/Icon.ts +0 -143
  95. package/src/domains/icons/domain/interfaces/IIconAdapter.ts +0 -147
  96. package/src/domains/icons/index.ts +0 -109
  97. package/src/domains/icons/infrastructure/adapters/LucideAdapter.ts +0 -100
  98. package/src/domains/icons/infrastructure/registries/ExpoIconRegistry.ts +0 -191
  99. package/src/domains/icons/presentation/components/Icon.tsx +0 -132
  100. package/src/domains/icons/presentation/hooks/useIconLibrary.ts +0 -141
  101. package/src/infrastructure/theme/globalThemeStore.ts +0 -51
  102. package/src/presentation/tokens/AppDesignTokens.ts +0 -55
  103. package/src/presentation/tokens/core/BaseTokens.ts +0 -372
  104. package/src/presentation/tokens/core/ColorPalette.ts +0 -400
  105. package/src/presentation/tokens/core/TokenFactory.ts +0 -118
@@ -1,216 +0,0 @@
1
- /**
2
- * TOKEN FACTORY - THEME INJECTION LOGIC
3
- *
4
- * ✅ Factory Pattern for creating complete design tokens
5
- * ✅ Combines static tokens (BaseTokens) + dynamic colors (ColorPalette)
6
- * ✅ Type-safe token generation
7
- * ✅ Zero duplication - SINGLE SOURCE OF TRUTH
8
- *
9
- * @module TokenFactory
10
- */
11
- import { BASE_TOKENS } from './BaseTokens';
12
- import { withAlpha, type ThemeMode, type ColorPalette } from './ColorPalette';
13
- /**
14
- * Complete design tokens shape
15
- * Combines static tokens (spacing, typography, borders) + dynamic colors
16
- */
17
- export type DesignTokens = {
18
- colors: ColorPalette;
19
- spacing: typeof BASE_TOKENS.spacing;
20
- typography: typeof BASE_TOKENS.typography;
21
- iconSizes: typeof BASE_TOKENS.iconSizes;
22
- opacity: typeof BASE_TOKENS.opacity;
23
- avatarSizes: typeof BASE_TOKENS.avatarSizes;
24
- borders: typeof BASE_TOKENS.borders & {
25
- card: typeof BASE_TOKENS.borders.card & {
26
- borderColor: string;
27
- };
28
- input: typeof BASE_TOKENS.borders.input & {
29
- borderColor: string;
30
- };
31
- };
32
- };
33
- /**
34
- * Create complete design tokens for a specific theme mode
35
- *
36
- * @param mode - Theme mode ('light' or 'dark')
37
- * @returns Complete design tokens object
38
- *
39
- * @example
40
- * ```typescript
41
- * const lightTokens = createDesignTokens('light');
42
- * const darkTokens = createDesignTokens('dark');
43
- *
44
- * // Use in components
45
- * <View style={{ backgroundColor: lightTokens.colors.primary }}>
46
- * <Text style={lightTokens.typography.bodyLarge}>Hello!</Text>
47
- * </View>
48
- * ```
49
- */
50
- export declare const createDesignTokens: (mode: ThemeMode) => DesignTokens;
51
- /**
52
- * STATIC DESIGN TOKENS - LIGHT THEME ONLY
53
- *
54
- * ⚠️ WARNING: These are STATIC and use light theme colors only!
55
- * ⚠️ DO NOT USE in React components - use useAppDesignTokens() hook instead
56
- *
57
- * Only use these in:
58
- * - Utility functions
59
- * - Constants files
60
- * - Non-React JavaScript code
61
- *
62
- * @deprecated Use useAppDesignTokens() hook in React components
63
- */
64
- export declare const STATIC_DESIGN_TOKENS: DesignTokens;
65
- /**
66
- * STATIC TOKENS (spacing, typography, borders)
67
- * These DON'T change with theme - safe to use anywhere
68
- */
69
- export declare const STATIC_TOKENS: {
70
- readonly spacing: {
71
- readonly xs: 4;
72
- readonly sm: 8;
73
- readonly md: 16;
74
- readonly lg: 24;
75
- readonly xl: 32;
76
- readonly xxl: 48;
77
- readonly xxxl: 64;
78
- readonly screenPadding: 20;
79
- readonly cardPadding: 16;
80
- readonly buttonPadding: 16;
81
- readonly inputPadding: 8;
82
- readonly sectionSpacing: 24;
83
- readonly iconSizeSmall: 16;
84
- readonly iconSizeMedium: 20;
85
- readonly iconSizeLarge: 24;
86
- readonly iconSizeXLarge: 32;
87
- readonly iconSizeHero: 64;
88
- readonly buttonHeight: 48;
89
- readonly inputHeight: 48;
90
- readonly appBarHeight: 56;
91
- readonly tabBarHeight: 60;
92
- };
93
- readonly typography: {
94
- readonly fontPrimary: "System";
95
- readonly fontSecondary: "System";
96
- readonly fontMono: "Courier New";
97
- readonly xs: 12;
98
- readonly sm: 14;
99
- readonly md: 16;
100
- readonly lg: 18;
101
- readonly xl: 20;
102
- readonly xxl: 24;
103
- readonly xxxl: 32;
104
- readonly light: "300";
105
- readonly regular: "400";
106
- readonly medium: "500";
107
- readonly semibold: "600";
108
- readonly bold: "700";
109
- readonly lineHeightTight: 1.2;
110
- readonly lineHeightNormal: 1.5;
111
- readonly lineHeightRelaxed: 1.7;
112
- readonly displayLarge: import("react-native").TextStyle;
113
- readonly displayMedium: import("react-native").TextStyle;
114
- readonly displaySmall: import("react-native").TextStyle;
115
- readonly headlineLarge: import("react-native").TextStyle;
116
- readonly headlineMedium: import("react-native").TextStyle;
117
- readonly headlineSmall: import("react-native").TextStyle;
118
- readonly titleLarge: import("react-native").TextStyle;
119
- readonly titleMedium: import("react-native").TextStyle;
120
- readonly titleSmall: import("react-native").TextStyle;
121
- readonly bodyLarge: import("react-native").TextStyle;
122
- readonly bodyMedium: import("react-native").TextStyle;
123
- readonly bodySmall: import("react-native").TextStyle;
124
- readonly labelLarge: import("react-native").TextStyle;
125
- readonly labelMedium: import("react-native").TextStyle;
126
- readonly labelSmall: import("react-native").TextStyle;
127
- readonly headingLarge: import("react-native").TextStyle;
128
- readonly headingMedium: import("react-native").TextStyle;
129
- readonly headingSmall: import("react-native").TextStyle;
130
- readonly button: import("react-native").TextStyle;
131
- readonly caption: import("react-native").TextStyle;
132
- readonly overline: import("react-native").TextStyle;
133
- };
134
- readonly opacity: {
135
- readonly disabled: 0.6;
136
- readonly subtle: 0.8;
137
- readonly medium: 0.5;
138
- readonly light: 0.3;
139
- readonly veryLight: 0.1;
140
- };
141
- readonly borders: {
142
- readonly radius: {
143
- readonly none: 0;
144
- readonly xs: 2;
145
- readonly sm: 4;
146
- readonly md: 8;
147
- readonly lg: 12;
148
- readonly xl: 16;
149
- readonly xxl: 24;
150
- readonly full: 9999;
151
- };
152
- readonly width: {
153
- readonly none: 0;
154
- readonly thin: 1;
155
- readonly medium: 2;
156
- readonly thick: 4;
157
- };
158
- readonly button: {
159
- readonly borderRadius: 8;
160
- readonly borderWidth: 0;
161
- };
162
- readonly card: {
163
- readonly borderRadius: 12;
164
- readonly borderWidth: 1;
165
- };
166
- readonly input: {
167
- readonly borderRadius: 8;
168
- readonly borderWidth: 1;
169
- };
170
- readonly pill: {
171
- readonly borderRadius: 9999;
172
- readonly borderWidth: 0;
173
- };
174
- };
175
- readonly sizes: {
176
- readonly touchTarget: 44;
177
- readonly touchTargetSmall: 36;
178
- readonly touchTargetLarge: 56;
179
- readonly buttonHeight: {
180
- readonly sm: 40;
181
- readonly md: 48;
182
- readonly lg: 56;
183
- readonly xl: 64;
184
- };
185
- readonly dot: {
186
- readonly inactive: 8;
187
- readonly active: 24;
188
- };
189
- readonly progressBar: {
190
- readonly thin: 2;
191
- readonly normal: 4;
192
- readonly thick: 6;
193
- };
194
- readonly divider: 1;
195
- readonly separator: 2;
196
- };
197
- readonly iconSizes: {
198
- readonly xs: 12;
199
- readonly sm: 16;
200
- readonly md: 20;
201
- readonly lg: 24;
202
- readonly xl: 32;
203
- readonly xxl: 40;
204
- };
205
- readonly avatarSizes: {
206
- readonly xs: 24;
207
- readonly sm: 32;
208
- readonly md: 40;
209
- readonly lg: 48;
210
- readonly xl: 64;
211
- readonly xxl: 80;
212
- };
213
- };
214
- export { withAlpha };
215
- export type { ThemeMode, ColorPalette };
216
- //# sourceMappingURL=TokenFactory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TokenFactory.d.ts","sourceRoot":"","sources":["../../../../src/presentation/tokens/core/TokenFactory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAmB,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAM/F;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,OAAO,WAAW,CAAC,OAAO,CAAC;IACpC,UAAU,EAAE,OAAO,WAAW,CAAC,UAAU,CAAC;IAC1C,SAAS,EAAE,OAAO,WAAW,CAAC,SAAS,CAAC;IACxC,OAAO,EAAE,OAAO,WAAW,CAAC,OAAO,CAAC;IACpC,WAAW,EAAE,OAAO,WAAW,CAAC,WAAW,CAAC;IAC5C,OAAO,EAAE,OAAO,WAAW,CAAC,OAAO,GAAG;QACpC,IAAI,EAAE,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,GAAG;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC;QAChE,KAAK,EAAE,OAAO,WAAW,CAAC,OAAO,CAAC,KAAK,GAAG;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC;KACnE,CAAC;CACH,CAAC;AAMF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,SAAS,KAAG,YA6BpD,CAAC;AAMF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,oBAAoB,cAA8B,CAAC;AAEhE;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAc,CAAC;AAMzC,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC"}
@@ -1,86 +0,0 @@
1
- /**
2
- * TOKEN FACTORY - THEME INJECTION LOGIC
3
- *
4
- * ✅ Factory Pattern for creating complete design tokens
5
- * ✅ Combines static tokens (BaseTokens) + dynamic colors (ColorPalette)
6
- * ✅ Type-safe token generation
7
- * ✅ Zero duplication - SINGLE SOURCE OF TRUTH
8
- *
9
- * @module TokenFactory
10
- */
11
- import { BASE_TOKENS } from './BaseTokens';
12
- import { getColorPalette, withAlpha } from './ColorPalette';
13
- // =============================================================================
14
- // TOKEN FACTORY FUNCTION
15
- // =============================================================================
16
- /**
17
- * Create complete design tokens for a specific theme mode
18
- *
19
- * @param mode - Theme mode ('light' or 'dark')
20
- * @returns Complete design tokens object
21
- *
22
- * @example
23
- * ```typescript
24
- * const lightTokens = createDesignTokens('light');
25
- * const darkTokens = createDesignTokens('dark');
26
- *
27
- * // Use in components
28
- * <View style={{ backgroundColor: lightTokens.colors.primary }}>
29
- * <Text style={lightTokens.typography.bodyLarge}>Hello!</Text>
30
- * </View>
31
- * ```
32
- */
33
- export const createDesignTokens = (mode) => {
34
- // Get color palette for theme mode
35
- const colors = getColorPalette(mode);
36
- // Combine static tokens + dynamic colors
37
- return {
38
- // ✅ DYNAMIC: Colors from theme mode
39
- colors,
40
- // ✅ STATIC: These don't change with theme
41
- spacing: BASE_TOKENS.spacing,
42
- typography: BASE_TOKENS.typography,
43
- iconSizes: BASE_TOKENS.iconSizes,
44
- opacity: BASE_TOKENS.opacity,
45
- avatarSizes: BASE_TOKENS.avatarSizes,
46
- // ✅ BORDERS: Static + injected border colors from theme
47
- borders: {
48
- ...BASE_TOKENS.borders,
49
- card: {
50
- ...BASE_TOKENS.borders.card,
51
- borderColor: colors.border,
52
- },
53
- input: {
54
- ...BASE_TOKENS.borders.input,
55
- borderColor: colors.border,
56
- },
57
- },
58
- };
59
- };
60
- // =============================================================================
61
- // STATIC TOKEN INSTANCES (for non-React contexts)
62
- // =============================================================================
63
- /**
64
- * STATIC DESIGN TOKENS - LIGHT THEME ONLY
65
- *
66
- * ⚠️ WARNING: These are STATIC and use light theme colors only!
67
- * ⚠️ DO NOT USE in React components - use useAppDesignTokens() hook instead
68
- *
69
- * Only use these in:
70
- * - Utility functions
71
- * - Constants files
72
- * - Non-React JavaScript code
73
- *
74
- * @deprecated Use useAppDesignTokens() hook in React components
75
- */
76
- export const STATIC_DESIGN_TOKENS = createDesignTokens('light');
77
- /**
78
- * STATIC TOKENS (spacing, typography, borders)
79
- * These DON'T change with theme - safe to use anywhere
80
- */
81
- export const STATIC_TOKENS = BASE_TOKENS;
82
- // =============================================================================
83
- // UTILITY EXPORTS
84
- // =============================================================================
85
- export { withAlpha };
86
- //# sourceMappingURL=TokenFactory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TokenFactory.js","sourceRoot":"","sources":["../../../../src/presentation/tokens/core/TokenFactory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,SAAS,EAAqC,MAAM,gBAAgB,CAAC;AAuB/F,gFAAgF;AAChF,yBAAyB;AACzB,gFAAgF;AAEhF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAe,EAAgB,EAAE;IAClE,mCAAmC;IACnC,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAErC,yCAAyC;IACzC,OAAO;QACL,oCAAoC;QACpC,MAAM;QAEN,0CAA0C;QAC1C,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,UAAU,EAAE,WAAW,CAAC,UAAU;QAClC,SAAS,EAAE,WAAW,CAAC,SAAS;QAChC,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,WAAW,EAAE,WAAW,CAAC,WAAW;QAEpC,wDAAwD;QACxD,OAAO,EAAE;YACP,GAAG,WAAW,CAAC,OAAO;YACtB,IAAI,EAAE;gBACJ,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI;gBAC3B,WAAW,EAAE,MAAM,CAAC,MAAM;aAC3B;YACD,KAAK,EAAE;gBACL,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK;gBAC5B,WAAW,EAAE,MAAM,CAAC,MAAM;aAC3B;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,gFAAgF;AAChF,kDAAkD;AAClD,gFAAgF;AAEhF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAEhE;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,WAAW,CAAC;AAEzC,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -1,93 +0,0 @@
1
- /**
2
- * Icon Library Configuration
3
- *
4
- * 🔧 SINGLE SOURCE OF TRUTH FOR ICON LIBRARY SELECTION
5
- *
6
- * To change icon library:
7
- * 1. Update package.json with new library
8
- * 2. Change CURRENT_LIBRARY below
9
- * 3. Create adapter if needed (infrastructure/adapters/)
10
- * 4. Done! All apps automatically use new library
11
- *
12
- * @example
13
- * // Switch to Material Icons:
14
- * export const CURRENT_LIBRARY: IconLibraryType = 'material';
15
- */
16
-
17
- export type IconLibraryType = 'lucide' | 'material' | 'fontawesome' | 'ionicons';
18
-
19
- /**
20
- * 🔧 CHANGE THIS TO SWITCH ICON LIBRARY
21
- */
22
- export const CURRENT_LIBRARY: IconLibraryType = 'lucide';
23
-
24
- /**
25
- * Icon Library Configuration
26
- */
27
- export const ICON_LIBRARY_CONFIG = {
28
- /**
29
- * Current icon library in use
30
- */
31
- library: CURRENT_LIBRARY,
32
-
33
- /**
34
- * Default icon size (in pixels)
35
- */
36
- defaultSize: 24,
37
-
38
- /**
39
- * Default stroke width for outline icons
40
- */
41
- defaultStrokeWidth: 2,
42
-
43
- /**
44
- * Library metadata
45
- */
46
- libraries: {
47
- lucide: {
48
- name: 'Lucide',
49
- package: 'lucide-react-native',
50
- version: '^0.468.0',
51
- iconCount: 1639,
52
- type: 'outline',
53
- adapter: 'LucideAdapter',
54
- },
55
- material: {
56
- name: 'Material Icons',
57
- package: '@expo/vector-icons',
58
- version: '^14.0.0',
59
- iconCount: 2000,
60
- type: 'filled',
61
- adapter: 'MaterialAdapter',
62
- },
63
- fontawesome: {
64
- name: 'Font Awesome',
65
- package: '@expo/vector-icons',
66
- version: '^14.0.0',
67
- iconCount: 1500,
68
- type: 'solid',
69
- adapter: 'FontAwesomeAdapter',
70
- },
71
- ionicons: {
72
- name: 'Ionicons',
73
- package: '@expo/vector-icons',
74
- version: '^14.0.0',
75
- iconCount: 1300,
76
- type: 'outline',
77
- adapter: 'IoniconsAdapter',
78
- },
79
- },
80
- } as const;
81
-
82
- /**
83
- * Get current library metadata
84
- */
85
- export const getCurrentLibrary = () => {
86
- return ICON_LIBRARY_CONFIG.libraries[CURRENT_LIBRARY];
87
- };
88
-
89
- /**
90
- * Type-safe library check
91
- * Factory uses Lucide icons only
92
- */
93
- export const isLucideLibrary = () => true;
@@ -1,143 +0,0 @@
1
- /**
2
- * Icons Domain - Entities
3
- *
4
- * Core icon types and interfaces for the App Factory.
5
- * Provides unified access to Lucide icons (design-system) + Expo vector icons.
6
- *
7
- * @domain icons
8
- * @layer domain
9
- */
10
-
11
- /**
12
- * Icon library types
13
- * - lucide: Lucide React Native icons (already in design-system/AtomicIcon)
14
- * - material: Material Design icons (@expo/vector-icons)
15
- * - fontawesome: FontAwesome icons (@expo/vector-icons)
16
- * - ionicons: Ionicons (@expo/vector-icons)
17
- */
18
- export enum IconLibrary {
19
- LUCIDE = 'lucide',
20
- MATERIAL = 'material',
21
- FONTAWESOME = 'fontawesome',
22
- IONICONS = 'ionicons',
23
- }
24
-
25
- /**
26
- * Icon category for organization
27
- */
28
- export enum IconCategory {
29
- ALL = 'all',
30
- NAVIGATION = 'navigation',
31
- ACTION = 'action',
32
- SOCIAL = 'social',
33
- COMMUNICATION = 'communication',
34
- MEDIA = 'media',
35
- BUSINESS = 'business',
36
- WEATHER = 'weather',
37
- SYMBOLS = 'symbols',
38
- EMOJI = 'emoji',
39
- }
40
-
41
- /**
42
- * Icon metadata for registry
43
- */
44
- export interface IconMetadata {
45
- name: string;
46
- library: IconLibrary;
47
- category: IconCategory;
48
- tags: string[];
49
- searchTerms: string[];
50
- }
51
-
52
- /**
53
- * Icon registry interface
54
- */
55
- export interface IIconRegistry {
56
- /**
57
- * Get all icons in the library
58
- */
59
- getAllIcons(): IconMetadata[];
60
-
61
- /**
62
- * Get icons by category
63
- */
64
- getIconsByCategory(category: IconCategory): IconMetadata[];
65
-
66
- /**
67
- * Search icons by query
68
- */
69
- searchIcons(query: string): IconMetadata[];
70
-
71
- /**
72
- * Get icon metadata by name
73
- */
74
- getIconMetadata(name: string): IconMetadata | null;
75
- }
76
-
77
- /**
78
- * Icon picker configuration
79
- */
80
- export interface IconPickerConfig {
81
- libraries: IconLibrary[];
82
- categories: IconCategory[];
83
- showSearch: boolean;
84
- multiSelect: boolean;
85
- maxSelections?: number;
86
- onSelect: (icons: IconMetadata[]) => void;
87
- onCancel?: () => void;
88
- }
89
-
90
- /**
91
- * Icon constants
92
- */
93
- export const ICON_CONSTANTS = {
94
- DEFAULT_SIZE: 24,
95
- DEFAULT_COLOR: 'onSurface',
96
- DEFAULT_LIBRARY: IconLibrary.LUCIDE,
97
- MAX_SEARCH_RESULTS: 50,
98
- } as const;
99
-
100
- /**
101
- * Icon utility functions
102
- */
103
- export const IconUtils = {
104
- /**
105
- * Normalize icon name for search
106
- */
107
- normalizeIconName: (name: string): string => {
108
- return name.toLowerCase().replace(/[^a-z0-9]/g, '');
109
- },
110
-
111
- /**
112
- * Match search query against icon metadata
113
- */
114
- matchesSearch: (icon: IconMetadata, query: string): boolean => {
115
- const normalizedQuery = IconUtils.normalizeIconName(query);
116
- const normalizedName = IconUtils.normalizeIconName(icon.name);
117
- const normalizedTags = icon.tags.map(tag => IconUtils.normalizeIconName(tag));
118
- const normalizedTerms = icon.searchTerms.map(term => IconUtils.normalizeIconName(term));
119
-
120
- return (
121
- normalizedName.includes(normalizedQuery) ||
122
- normalizedTags.some(tag => tag.includes(normalizedQuery)) ||
123
- normalizedTerms.some(term => term.includes(normalizedQuery))
124
- );
125
- },
126
-
127
- /**
128
- * Filter icons by category
129
- */
130
- filterByCategory: (icons: IconMetadata[], category: IconCategory): IconMetadata[] => {
131
- if (category === IconCategory.ALL) {
132
- return icons;
133
- }
134
- return icons.filter(icon => icon.category === category);
135
- },
136
-
137
- /**
138
- * Sort icons alphabetically
139
- */
140
- sortByName: (icons: IconMetadata[]): IconMetadata[] => {
141
- return [...icons].sort((a, b) => a.name.localeCompare(b.name));
142
- },
143
- };
@@ -1,147 +0,0 @@
1
- /**
2
- * Icon Adapter Interface
3
- *
4
- * Universal interface that all icon library adapters must implement.
5
- * This allows seamless switching between icon libraries.
6
- *
7
- * @example
8
- * // Implementing for a new library:
9
- * export const MyLibraryAdapter: IIconAdapter = {
10
- * getIconComponent: (name) => MyIcons[name],
11
- * getIconSize: (size) => sizeMap[size],
12
- * getIconColor: (color, tokens) => colorMap[color],
13
- * getAllIcons: () => Object.keys(MyIcons),
14
- * };
15
- */
16
-
17
- import type { ComponentType } from 'react';
18
- import type { ViewStyle } from 'react-native';
19
- import type { DesignTokens } from '../../../../presentation/tokens/core/TokenFactory';
20
-
21
- export type IconName = string;
22
- export type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
23
- export type IconColor =
24
- | 'primary'
25
- | 'secondary'
26
- | 'success'
27
- | 'warning'
28
- | 'error'
29
- | 'info'
30
- | 'onSurface'
31
- | 'surfaceVariant'
32
- | 'onPrimary'
33
- | 'onSecondary'
34
- | 'textInverse';
35
-
36
- /**
37
- * Icon Adapter Interface
38
- * All icon library adapters must implement this interface
39
- */
40
- export interface IIconAdapter {
41
- /**
42
- * Get the icon component for a given icon name
43
- * @param name - Icon name (library-specific)
44
- * @returns Icon component or null if not found
45
- */
46
- getIconComponent: (name: string) => ComponentType<any> | null;
47
-
48
- /**
49
- * Convert semantic size to pixel size
50
- * @param size - Semantic size (xs, sm, md, lg, xl, xxl)
51
- * @param customSize - Optional custom pixel size
52
- * @returns Pixel size
53
- */
54
- getIconSize: (size: IconSize, customSize?: number) => number;
55
-
56
- /**
57
- * Convert semantic color to hex color
58
- * @param color - Semantic color name
59
- * @param tokens - Design tokens for theme colors
60
- * @param customColor - Optional custom hex color
61
- * @returns Hex color string
62
- */
63
- getIconColor: (
64
- color: IconColor,
65
- tokens: DesignTokens,
66
- customColor?: string
67
- ) => string;
68
-
69
- /**
70
- * Get all available icon names for this library
71
- * @returns Array of icon names
72
- */
73
- getAllIcons: () => string[];
74
-
75
- /**
76
- * Check if an icon exists in the library
77
- * @param name - Icon name to check
78
- * @returns True if icon exists
79
- */
80
- hasIcon: (name: string) => boolean;
81
-
82
- /**
83
- * Get default stroke width for outline icons
84
- * @returns Stroke width number
85
- */
86
- getStrokeWidth?: () => number;
87
- }
88
-
89
- /**
90
- * Icon Props - Universal props for Icon component
91
- */
92
- export interface IconProps {
93
- /**
94
- * Icon name (library-specific)
95
- */
96
- name: string;
97
-
98
- /**
99
- * Icon size preset
100
- */
101
- size?: IconSize;
102
-
103
- /**
104
- * Custom pixel size (overrides size preset)
105
- */
106
- customSize?: number;
107
-
108
- /**
109
- * Semantic color
110
- */
111
- color?: IconColor;
112
-
113
- /**
114
- * Custom hex color (overrides semantic color)
115
- */
116
- customColor?: string;
117
-
118
- /**
119
- * Stroke width for outline icons
120
- */
121
- strokeWidth?: number;
122
-
123
- /**
124
- * Background circle for icon
125
- */
126
- withBackground?: boolean;
127
-
128
- /**
129
- * Background color
130
- */
131
- backgroundColor?: string;
132
-
133
- /**
134
- * Accessibility label
135
- */
136
- accessibilityLabel?: string;
137
-
138
- /**
139
- * Test ID
140
- */
141
- testID?: string;
142
-
143
- /**
144
- * Custom styles
145
- */
146
- style?: ViewStyle;
147
- }