@umituz/react-native-design-system 1.5.8 → 1.5.10

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 (258) hide show
  1. package/package.json +3 -8
  2. package/src/index.ts +1 -0
  3. package/lib/index.d.ts +0 -61
  4. package/lib/index.d.ts.map +0 -1
  5. package/lib/index.js +0 -101
  6. package/lib/index.js.map +0 -1
  7. package/lib/presentation/atoms/AtomicAvatar.d.ts +0 -48
  8. package/lib/presentation/atoms/AtomicAvatar.d.ts.map +0 -1
  9. package/lib/presentation/atoms/AtomicAvatar.js +0 -85
  10. package/lib/presentation/atoms/AtomicAvatar.js.map +0 -1
  11. package/lib/presentation/atoms/AtomicAvatarGroup.d.ts +0 -56
  12. package/lib/presentation/atoms/AtomicAvatarGroup.d.ts.map +0 -1
  13. package/lib/presentation/atoms/AtomicAvatarGroup.js +0 -83
  14. package/lib/presentation/atoms/AtomicAvatarGroup.js.map +0 -1
  15. package/lib/presentation/atoms/AtomicBadge.d.ts +0 -42
  16. package/lib/presentation/atoms/AtomicBadge.d.ts.map +0 -1
  17. package/lib/presentation/atoms/AtomicBadge.js +0 -168
  18. package/lib/presentation/atoms/AtomicBadge.js.map +0 -1
  19. package/lib/presentation/atoms/AtomicButton.d.ts +0 -21
  20. package/lib/presentation/atoms/AtomicButton.d.ts.map +0 -1
  21. package/lib/presentation/atoms/AtomicButton.js +0 -172
  22. package/lib/presentation/atoms/AtomicButton.js.map +0 -1
  23. package/lib/presentation/atoms/AtomicCard.d.ts +0 -15
  24. package/lib/presentation/atoms/AtomicCard.d.ts.map +0 -1
  25. package/lib/presentation/atoms/AtomicCard.js +0 -70
  26. package/lib/presentation/atoms/AtomicCard.js.map +0 -1
  27. package/lib/presentation/atoms/AtomicChip.d.ts +0 -53
  28. package/lib/presentation/atoms/AtomicChip.d.ts.map +0 -1
  29. package/lib/presentation/atoms/AtomicChip.js +0 -131
  30. package/lib/presentation/atoms/AtomicChip.js.map +0 -1
  31. package/lib/presentation/atoms/AtomicDatePicker.d.ts +0 -75
  32. package/lib/presentation/atoms/AtomicDatePicker.d.ts.map +0 -1
  33. package/lib/presentation/atoms/AtomicDatePicker.js +0 -246
  34. package/lib/presentation/atoms/AtomicDatePicker.js.map +0 -1
  35. package/lib/presentation/atoms/AtomicDivider.d.ts +0 -45
  36. package/lib/presentation/atoms/AtomicDivider.d.ts.map +0 -1
  37. package/lib/presentation/atoms/AtomicDivider.js +0 -58
  38. package/lib/presentation/atoms/AtomicDivider.js.map +0 -1
  39. package/lib/presentation/atoms/AtomicFab.d.ts +0 -37
  40. package/lib/presentation/atoms/AtomicFab.d.ts.map +0 -1
  41. package/lib/presentation/atoms/AtomicFab.js +0 -68
  42. package/lib/presentation/atoms/AtomicFab.js.map +0 -1
  43. package/lib/presentation/atoms/AtomicFilter.d.ts +0 -37
  44. package/lib/presentation/atoms/AtomicFilter.d.ts.map +0 -1
  45. package/lib/presentation/atoms/AtomicFilter.js +0 -104
  46. package/lib/presentation/atoms/AtomicFilter.js.map +0 -1
  47. package/lib/presentation/atoms/AtomicFormError.d.ts +0 -30
  48. package/lib/presentation/atoms/AtomicFormError.d.ts.map +0 -1
  49. package/lib/presentation/atoms/AtomicFormError.js +0 -64
  50. package/lib/presentation/atoms/AtomicFormError.js.map +0 -1
  51. package/lib/presentation/atoms/AtomicIcon.d.ts +0 -35
  52. package/lib/presentation/atoms/AtomicIcon.d.ts.map +0 -1
  53. package/lib/presentation/atoms/AtomicIcon.js +0 -30
  54. package/lib/presentation/atoms/AtomicIcon.js.map +0 -1
  55. package/lib/presentation/atoms/AtomicImage.d.ts +0 -40
  56. package/lib/presentation/atoms/AtomicImage.d.ts.map +0 -1
  57. package/lib/presentation/atoms/AtomicImage.js +0 -92
  58. package/lib/presentation/atoms/AtomicImage.js.map +0 -1
  59. package/lib/presentation/atoms/AtomicInput.d.ts +0 -71
  60. package/lib/presentation/atoms/AtomicInput.d.ts.map +0 -1
  61. package/lib/presentation/atoms/AtomicInput.js +0 -196
  62. package/lib/presentation/atoms/AtomicInput.js.map +0 -1
  63. package/lib/presentation/atoms/AtomicNumberInput.d.ts +0 -69
  64. package/lib/presentation/atoms/AtomicNumberInput.d.ts.map +0 -1
  65. package/lib/presentation/atoms/AtomicNumberInput.js +0 -125
  66. package/lib/presentation/atoms/AtomicNumberInput.js.map +0 -1
  67. package/lib/presentation/atoms/AtomicPicker.d.ts +0 -52
  68. package/lib/presentation/atoms/AtomicPicker.d.ts.map +0 -1
  69. package/lib/presentation/atoms/AtomicPicker.js +0 -299
  70. package/lib/presentation/atoms/AtomicPicker.js.map +0 -1
  71. package/lib/presentation/atoms/AtomicProgress.d.ts +0 -44
  72. package/lib/presentation/atoms/AtomicProgress.d.ts.map +0 -1
  73. package/lib/presentation/atoms/AtomicProgress.js +0 -80
  74. package/lib/presentation/atoms/AtomicProgress.js.map +0 -1
  75. package/lib/presentation/atoms/AtomicSearchBar.d.ts +0 -19
  76. package/lib/presentation/atoms/AtomicSearchBar.d.ts.map +0 -1
  77. package/lib/presentation/atoms/AtomicSearchBar.js +0 -46
  78. package/lib/presentation/atoms/AtomicSearchBar.js.map +0 -1
  79. package/lib/presentation/atoms/AtomicSort.d.ts +0 -72
  80. package/lib/presentation/atoms/AtomicSort.d.ts.map +0 -1
  81. package/lib/presentation/atoms/AtomicSort.js +0 -77
  82. package/lib/presentation/atoms/AtomicSort.js.map +0 -1
  83. package/lib/presentation/atoms/AtomicSwitch.d.ts +0 -43
  84. package/lib/presentation/atoms/AtomicSwitch.d.ts.map +0 -1
  85. package/lib/presentation/atoms/AtomicSwitch.js +0 -104
  86. package/lib/presentation/atoms/AtomicSwitch.js.map +0 -1
  87. package/lib/presentation/atoms/AtomicText.d.ts +0 -34
  88. package/lib/presentation/atoms/AtomicText.d.ts.map +0 -1
  89. package/lib/presentation/atoms/AtomicText.js +0 -59
  90. package/lib/presentation/atoms/AtomicText.js.map +0 -1
  91. package/lib/presentation/atoms/AtomicTextArea.d.ts +0 -85
  92. package/lib/presentation/atoms/AtomicTextArea.d.ts.map +0 -1
  93. package/lib/presentation/atoms/AtomicTextArea.js +0 -196
  94. package/lib/presentation/atoms/AtomicTextArea.js.map +0 -1
  95. package/lib/presentation/atoms/AtomicTouchable.d.ts +0 -77
  96. package/lib/presentation/atoms/AtomicTouchable.d.ts.map +0 -1
  97. package/lib/presentation/atoms/AtomicTouchable.js +0 -138
  98. package/lib/presentation/atoms/AtomicTouchable.js.map +0 -1
  99. package/lib/presentation/atoms/fab/styles/fabStyles.d.ts +0 -23
  100. package/lib/presentation/atoms/fab/styles/fabStyles.d.ts.map +0 -1
  101. package/lib/presentation/atoms/fab/styles/fabStyles.js +0 -63
  102. package/lib/presentation/atoms/fab/styles/fabStyles.js.map +0 -1
  103. package/lib/presentation/atoms/fab/types/index.d.ts +0 -71
  104. package/lib/presentation/atoms/fab/types/index.d.ts.map +0 -1
  105. package/lib/presentation/atoms/fab/types/index.js +0 -2
  106. package/lib/presentation/atoms/fab/types/index.js.map +0 -1
  107. package/lib/presentation/atoms/filter/styles/filterStyles.d.ts +0 -15
  108. package/lib/presentation/atoms/filter/styles/filterStyles.d.ts.map +0 -1
  109. package/lib/presentation/atoms/filter/styles/filterStyles.js +0 -29
  110. package/lib/presentation/atoms/filter/styles/filterStyles.js.map +0 -1
  111. package/lib/presentation/atoms/filter/types/index.d.ts +0 -76
  112. package/lib/presentation/atoms/filter/types/index.d.ts.map +0 -1
  113. package/lib/presentation/atoms/filter/types/index.js +0 -2
  114. package/lib/presentation/atoms/filter/types/index.js.map +0 -1
  115. package/lib/presentation/atoms/index.d.ts +0 -273
  116. package/lib/presentation/atoms/index.d.ts.map +0 -1
  117. package/lib/presentation/atoms/index.js +0 -146
  118. package/lib/presentation/atoms/index.js.map +0 -1
  119. package/lib/presentation/atoms/input/hooks/useInputState.d.ts +0 -7
  120. package/lib/presentation/atoms/input/hooks/useInputState.d.ts.map +0 -1
  121. package/lib/presentation/atoms/input/hooks/useInputState.js +0 -13
  122. package/lib/presentation/atoms/input/hooks/useInputState.js.map +0 -1
  123. package/lib/presentation/atoms/input/styles/inputStyles.d.ts +0 -13
  124. package/lib/presentation/atoms/input/styles/inputStyles.d.ts.map +0 -1
  125. package/lib/presentation/atoms/input/styles/inputStyles.js +0 -59
  126. package/lib/presentation/atoms/input/styles/inputStyles.js.map +0 -1
  127. package/lib/presentation/atoms/input/types/index.d.ts +0 -24
  128. package/lib/presentation/atoms/input/types/index.d.ts.map +0 -1
  129. package/lib/presentation/atoms/input/types/index.js +0 -2
  130. package/lib/presentation/atoms/input/types/index.js.map +0 -1
  131. package/lib/presentation/atoms/picker/styles/pickerStyles.d.ts +0 -85
  132. package/lib/presentation/atoms/picker/styles/pickerStyles.d.ts.map +0 -1
  133. package/lib/presentation/atoms/picker/styles/pickerStyles.js +0 -177
  134. package/lib/presentation/atoms/picker/styles/pickerStyles.js.map +0 -1
  135. package/lib/presentation/atoms/picker/types/index.d.ts +0 -38
  136. package/lib/presentation/atoms/picker/types/index.d.ts.map +0 -1
  137. package/lib/presentation/atoms/picker/types/index.js +0 -2
  138. package/lib/presentation/atoms/picker/types/index.js.map +0 -1
  139. package/lib/presentation/atoms/touchable/styles/touchableStyles.d.ts +0 -31
  140. package/lib/presentation/atoms/touchable/styles/touchableStyles.d.ts.map +0 -1
  141. package/lib/presentation/atoms/touchable/styles/touchableStyles.js +0 -54
  142. package/lib/presentation/atoms/touchable/styles/touchableStyles.js.map +0 -1
  143. package/lib/presentation/atoms/touchable/types/index.d.ts +0 -134
  144. package/lib/presentation/atoms/touchable/types/index.d.ts.map +0 -1
  145. package/lib/presentation/atoms/touchable/types/index.js +0 -2
  146. package/lib/presentation/atoms/touchable/types/index.js.map +0 -1
  147. package/lib/presentation/hooks/useResponsive.d.ts +0 -80
  148. package/lib/presentation/hooks/useResponsive.d.ts.map +0 -1
  149. package/lib/presentation/hooks/useResponsive.js +0 -82
  150. package/lib/presentation/hooks/useResponsive.js.map +0 -1
  151. package/lib/presentation/molecules/AtomicConfirmationModal.d.ts +0 -73
  152. package/lib/presentation/molecules/AtomicConfirmationModal.d.ts.map +0 -1
  153. package/lib/presentation/molecules/AtomicConfirmationModal.js +0 -154
  154. package/lib/presentation/molecules/AtomicConfirmationModal.js.map +0 -1
  155. package/lib/presentation/molecules/EmptyState.d.ts +0 -41
  156. package/lib/presentation/molecules/EmptyState.d.ts.map +0 -1
  157. package/lib/presentation/molecules/EmptyState.js +0 -68
  158. package/lib/presentation/molecules/EmptyState.js.map +0 -1
  159. package/lib/presentation/molecules/FormField.d.ts +0 -22
  160. package/lib/presentation/molecules/FormField.d.ts.map +0 -1
  161. package/lib/presentation/molecules/FormField.js +0 -76
  162. package/lib/presentation/molecules/FormField.js.map +0 -1
  163. package/lib/presentation/molecules/GridContainer.d.ts +0 -40
  164. package/lib/presentation/molecules/GridContainer.d.ts.map +0 -1
  165. package/lib/presentation/molecules/GridContainer.js +0 -77
  166. package/lib/presentation/molecules/GridContainer.js.map +0 -1
  167. package/lib/presentation/molecules/IconContainer.d.ts +0 -29
  168. package/lib/presentation/molecules/IconContainer.d.ts.map +0 -1
  169. package/lib/presentation/molecules/IconContainer.js +0 -60
  170. package/lib/presentation/molecules/IconContainer.js.map +0 -1
  171. package/lib/presentation/molecules/ListItem.d.ts +0 -5
  172. package/lib/presentation/molecules/ListItem.d.ts.map +0 -1
  173. package/lib/presentation/molecules/ListItem.js +0 -24
  174. package/lib/presentation/molecules/ListItem.js.map +0 -1
  175. package/lib/presentation/molecules/ScreenHeader.d.ts +0 -55
  176. package/lib/presentation/molecules/ScreenHeader.d.ts.map +0 -1
  177. package/lib/presentation/molecules/ScreenHeader.js +0 -94
  178. package/lib/presentation/molecules/ScreenHeader.js.map +0 -1
  179. package/lib/presentation/molecules/SearchBar.d.ts +0 -18
  180. package/lib/presentation/molecules/SearchBar.d.ts.map +0 -1
  181. package/lib/presentation/molecules/SearchBar.js +0 -47
  182. package/lib/presentation/molecules/SearchBar.js.map +0 -1
  183. package/lib/presentation/molecules/SectionCard.d.ts +0 -25
  184. package/lib/presentation/molecules/SectionCard.d.ts.map +0 -1
  185. package/lib/presentation/molecules/SectionCard.js +0 -47
  186. package/lib/presentation/molecules/SectionCard.js.map +0 -1
  187. package/lib/presentation/molecules/SectionContainer.d.ts +0 -33
  188. package/lib/presentation/molecules/SectionContainer.d.ts.map +0 -1
  189. package/lib/presentation/molecules/SectionContainer.js +0 -64
  190. package/lib/presentation/molecules/SectionContainer.js.map +0 -1
  191. package/lib/presentation/molecules/SectionHeader.d.ts +0 -37
  192. package/lib/presentation/molecules/SectionHeader.d.ts.map +0 -1
  193. package/lib/presentation/molecules/SectionHeader.js +0 -73
  194. package/lib/presentation/molecules/SectionHeader.js.map +0 -1
  195. package/lib/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.d.ts +0 -50
  196. package/lib/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.d.ts.map +0 -1
  197. package/lib/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.js +0 -115
  198. package/lib/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.js.map +0 -1
  199. package/lib/presentation/molecules/confirmation-modal/types/index.d.ts +0 -86
  200. package/lib/presentation/molecules/confirmation-modal/types/index.d.ts.map +0 -1
  201. package/lib/presentation/molecules/confirmation-modal/types/index.js +0 -7
  202. package/lib/presentation/molecules/confirmation-modal/types/index.js.map +0 -1
  203. package/lib/presentation/molecules/index.d.ts +0 -27
  204. package/lib/presentation/molecules/index.d.ts.map +0 -1
  205. package/lib/presentation/molecules/index.js +0 -17
  206. package/lib/presentation/molecules/index.js.map +0 -1
  207. package/lib/presentation/molecules/listitem/styles/listItemStyles.d.ts +0 -12
  208. package/lib/presentation/molecules/listitem/styles/listItemStyles.d.ts.map +0 -1
  209. package/lib/presentation/molecules/listitem/styles/listItemStyles.js +0 -15
  210. package/lib/presentation/molecules/listitem/styles/listItemStyles.js.map +0 -1
  211. package/lib/presentation/molecules/listitem/types/index.d.ts +0 -17
  212. package/lib/presentation/molecules/listitem/types/index.d.ts.map +0 -1
  213. package/lib/presentation/molecules/listitem/types/index.js +0 -2
  214. package/lib/presentation/molecules/listitem/types/index.js.map +0 -1
  215. package/lib/presentation/organisms/AppHeader.d.ts +0 -31
  216. package/lib/presentation/organisms/AppHeader.d.ts.map +0 -1
  217. package/lib/presentation/organisms/AppHeader.js +0 -78
  218. package/lib/presentation/organisms/AppHeader.js.map +0 -1
  219. package/lib/presentation/organisms/FormContainer.d.ts +0 -76
  220. package/lib/presentation/organisms/FormContainer.d.ts.map +0 -1
  221. package/lib/presentation/organisms/FormContainer.js +0 -127
  222. package/lib/presentation/organisms/FormContainer.js.map +0 -1
  223. package/lib/presentation/organisms/ScreenLayout.d.ts +0 -84
  224. package/lib/presentation/organisms/ScreenLayout.d.ts.map +0 -1
  225. package/lib/presentation/organisms/ScreenLayout.js +0 -69
  226. package/lib/presentation/organisms/ScreenLayout.js.map +0 -1
  227. package/lib/presentation/organisms/index.d.ts +0 -16
  228. package/lib/presentation/organisms/index.d.ts.map +0 -1
  229. package/lib/presentation/organisms/index.js +0 -14
  230. package/lib/presentation/organisms/index.js.map +0 -1
  231. package/lib/presentation/tokens/commonStyles.d.ts +0 -122
  232. package/lib/presentation/tokens/commonStyles.d.ts.map +0 -1
  233. package/lib/presentation/tokens/commonStyles.js +0 -220
  234. package/lib/presentation/tokens/commonStyles.js.map +0 -1
  235. package/lib/presentation/utils/platformConstants.d.ts +0 -100
  236. package/lib/presentation/utils/platformConstants.d.ts.map +0 -1
  237. package/lib/presentation/utils/platformConstants.js +0 -114
  238. package/lib/presentation/utils/platformConstants.js.map +0 -1
  239. package/lib/presentation/utils/responsive.d.ts +0 -218
  240. package/lib/presentation/utils/responsive.d.ts.map +0 -1
  241. package/lib/presentation/utils/responsive.js +0 -452
  242. package/lib/presentation/utils/responsive.js.map +0 -1
  243. package/lib/presentation/utils/variants/compound.d.ts +0 -10
  244. package/lib/presentation/utils/variants/compound.d.ts.map +0 -1
  245. package/lib/presentation/utils/variants/compound.js +0 -16
  246. package/lib/presentation/utils/variants/compound.js.map +0 -1
  247. package/lib/presentation/utils/variants/core.d.ts +0 -15
  248. package/lib/presentation/utils/variants/core.d.ts.map +0 -1
  249. package/lib/presentation/utils/variants/core.js +0 -23
  250. package/lib/presentation/utils/variants/core.js.map +0 -1
  251. package/lib/presentation/utils/variants/helpers.d.ts +0 -5
  252. package/lib/presentation/utils/variants/helpers.d.ts.map +0 -1
  253. package/lib/presentation/utils/variants/helpers.js +0 -10
  254. package/lib/presentation/utils/variants/helpers.js.map +0 -1
  255. package/lib/presentation/utils/variants.d.ts +0 -4
  256. package/lib/presentation/utils/variants.d.ts.map +0 -1
  257. package/lib/presentation/utils/variants.js +0 -4
  258. package/lib/presentation/utils/variants.js.map +0 -1
@@ -1,196 +0,0 @@
1
- import React, { useState } from 'react';
2
- import { View, TextInput, Pressable, StyleSheet } from 'react-native';
3
- import { useAppDesignTokens } from '@umituz/react-native-theme';
4
- import { AtomicIcon } from './AtomicIcon';
5
- import { AtomicText } from './AtomicText';
6
- /**
7
- * AtomicInput - Pure React Native Text Input
8
- *
9
- * Features:
10
- * - Pure React Native implementation (no Paper dependency)
11
- * - Lucide icons for password toggle and custom icons
12
- * - Outlined/filled/flat variants
13
- * - Error, success, disabled states
14
- * - Character counter
15
- * - Responsive sizing
16
- * - Full accessibility support
17
- */
18
- export const AtomicInput = ({ variant = 'outlined', state = 'default', size = 'md', label, value = '', onChangeText, placeholder, helperText, leadingIcon, trailingIcon, onTrailingIconPress, showPasswordToggle = false, secureTextEntry = false, maxLength, showCharacterCount = false, keyboardType = 'default', autoCapitalize = 'sentences', autoCorrect = true, disabled = false, style, inputStyle, testID, onBlur, onFocus, }) => {
19
- const tokens = useAppDesignTokens();
20
- const [isPasswordVisible, setIsPasswordVisible] = useState(false);
21
- const [isFocused, setIsFocused] = useState(false);
22
- const isDisabled = state === 'disabled' || disabled;
23
- const characterCount = value?.toString().length || 0;
24
- const hasError = state === 'error';
25
- const hasSuccess = state === 'success';
26
- // Size configuration
27
- const sizeConfig = {
28
- sm: {
29
- paddingVertical: tokens.spacing.xs,
30
- paddingHorizontal: tokens.spacing.sm,
31
- fontSize: tokens.typography.bodySmall.fontSize,
32
- iconSize: 16,
33
- minHeight: 40,
34
- },
35
- md: {
36
- paddingVertical: tokens.spacing.sm,
37
- paddingHorizontal: tokens.spacing.md,
38
- fontSize: tokens.typography.bodyMedium.fontSize,
39
- iconSize: 20,
40
- minHeight: 48,
41
- },
42
- lg: {
43
- paddingVertical: tokens.spacing.md,
44
- paddingHorizontal: tokens.spacing.lg,
45
- fontSize: tokens.typography.bodyLarge.fontSize,
46
- iconSize: 24,
47
- minHeight: 56,
48
- },
49
- };
50
- const config = sizeConfig[size];
51
- // Get variant styles
52
- const getVariantStyle = () => {
53
- const baseStyle = {
54
- backgroundColor: tokens.colors.surface,
55
- borderRadius: tokens.borders.radius.md,
56
- };
57
- let borderColor = tokens.colors.border;
58
- if (isFocused)
59
- borderColor = tokens.colors.primary;
60
- if (hasError)
61
- borderColor = tokens.colors.error;
62
- if (hasSuccess)
63
- borderColor = tokens.colors.success;
64
- if (isDisabled)
65
- borderColor = tokens.colors.borderDisabled;
66
- switch (variant) {
67
- case 'outlined':
68
- return {
69
- ...baseStyle,
70
- borderWidth: isFocused ? 2 : 1,
71
- borderColor,
72
- };
73
- case 'filled':
74
- return {
75
- ...baseStyle,
76
- backgroundColor: tokens.colors.surfaceSecondary,
77
- borderWidth: 0,
78
- borderBottomWidth: isFocused ? 2 : 1,
79
- borderBottomColor: borderColor,
80
- };
81
- case 'flat':
82
- return {
83
- ...baseStyle,
84
- backgroundColor: 'transparent',
85
- borderWidth: 0,
86
- borderBottomWidth: 1,
87
- borderBottomColor: borderColor,
88
- borderRadius: 0,
89
- };
90
- default:
91
- return baseStyle;
92
- }
93
- };
94
- // Get text color based on state
95
- const getTextColor = () => {
96
- if (isDisabled)
97
- return tokens.colors.textDisabled;
98
- if (hasError)
99
- return tokens.colors.error;
100
- if (hasSuccess)
101
- return tokens.colors.success;
102
- return tokens.colors.textPrimary;
103
- };
104
- const iconColor = isDisabled ? tokens.colors.textDisabled : tokens.colors.textSecondary;
105
- const containerStyle = [
106
- styles.container,
107
- getVariantStyle(),
108
- {
109
- paddingVertical: config.paddingVertical,
110
- paddingHorizontal: config.paddingHorizontal,
111
- minHeight: config.minHeight,
112
- opacity: isDisabled ? 0.5 : 1,
113
- },
114
- style,
115
- ];
116
- const textInputStyle = [
117
- styles.input,
118
- {
119
- fontSize: config.fontSize,
120
- color: getTextColor(),
121
- },
122
- leadingIcon ? { paddingLeft: config.iconSize + 8 } : undefined,
123
- (trailingIcon || showPasswordToggle) ? { paddingRight: config.iconSize + 8 } : undefined,
124
- inputStyle,
125
- ];
126
- return (<View testID={testID}>
127
- {label && (<AtomicText type="labelMedium" color={hasError ? 'error' : hasSuccess ? 'success' : 'secondary'} style={styles.label}>
128
- {label}
129
- </AtomicText>)}
130
-
131
- <View style={containerStyle}>
132
- {leadingIcon && (<View style={styles.leadingIcon}>
133
- <AtomicIcon name={leadingIcon} customSize={config.iconSize} customColor={iconColor}/>
134
- </View>)}
135
-
136
- <TextInput value={value} onChangeText={onChangeText} placeholder={placeholder} placeholderTextColor={tokens.colors.textSecondary} secureTextEntry={secureTextEntry && !isPasswordVisible} maxLength={maxLength} keyboardType={keyboardType} autoCapitalize={autoCapitalize} autoCorrect={autoCorrect} editable={!isDisabled} style={textInputStyle} onBlur={() => {
137
- setIsFocused(false);
138
- onBlur?.();
139
- }} onFocus={() => {
140
- setIsFocused(true);
141
- onFocus?.();
142
- }} testID={testID ? `${testID}-input` : undefined}/>
143
-
144
- {(showPasswordToggle && secureTextEntry) && (<Pressable onPress={() => setIsPasswordVisible(!isPasswordVisible)} style={styles.trailingIcon}>
145
- <AtomicIcon name={isPasswordVisible ? "EyeOff" : "Eye"} customSize={config.iconSize} customColor={iconColor}/>
146
- </Pressable>)}
147
-
148
- {trailingIcon && !showPasswordToggle && (<Pressable onPress={onTrailingIconPress} style={styles.trailingIcon} disabled={!onTrailingIconPress}>
149
- <AtomicIcon name={trailingIcon} customSize={config.iconSize} customColor={iconColor}/>
150
- </Pressable>)}
151
- </View>
152
-
153
- {(helperText || showCharacterCount) && (<View style={styles.helperRow}>
154
- {helperText && (<AtomicText type="bodySmall" color={hasError ? 'error' : 'secondary'} style={styles.helperText} testID={testID ? `${testID}-helper` : undefined}>
155
- {helperText}
156
- </AtomicText>)}
157
- {showCharacterCount && maxLength && (<AtomicText type="bodySmall" color="secondary" style={styles.characterCount} testID={testID ? `${testID}-count` : undefined}>
158
- {characterCount}/{maxLength}
159
- </AtomicText>)}
160
- </View>)}
161
- </View>);
162
- };
163
- const styles = StyleSheet.create({
164
- container: {
165
- flexDirection: 'row',
166
- alignItems: 'center',
167
- },
168
- input: {
169
- flex: 1,
170
- },
171
- label: {
172
- marginBottom: 4,
173
- },
174
- leadingIcon: {
175
- position: 'absolute',
176
- left: 12,
177
- zIndex: 1,
178
- },
179
- trailingIcon: {
180
- position: 'absolute',
181
- right: 12,
182
- zIndex: 1,
183
- },
184
- helperRow: {
185
- flexDirection: 'row',
186
- justifyContent: 'space-between',
187
- marginTop: 4,
188
- },
189
- helperText: {
190
- flex: 1,
191
- },
192
- characterCount: {
193
- marginLeft: 8,
194
- },
195
- });
196
- //# sourceMappingURL=AtomicInput.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AtomicInput.js","sourceRoot":"","sources":["../../../src/presentation/atoms/AtomicInput.tsx"],"names":[],"mappings":"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"}
@@ -1,69 +0,0 @@
1
- /**
2
- * AtomicNumberInput Component
3
- *
4
- * A specialized number input component that wraps AtomicInput with
5
- * number-specific validation and keyboard handling.
6
- *
7
- * Features:
8
- * - Numeric keyboard (integer or decimal)
9
- * - Min/max validation
10
- * - Step increment support
11
- * - Automatic error states for invalid numbers
12
- * - Parsed number callback (onValueChange)
13
- * - Consistent styling with AtomicInput
14
- * - All AtomicInput features (variants, states, sizes)
15
- *
16
- * Usage:
17
- * ```tsx
18
- * const [age, setAge] = useState<number | null>(null);
19
- *
20
- * <AtomicNumberInput
21
- * value={age?.toString() || ''}
22
- * onValueChange={setAge}
23
- * label="Age"
24
- * min={0}
25
- * max={150}
26
- * helperText="Enter your age"
27
- * />
28
- * ```
29
- *
30
- * Why This Component:
31
- * - Separation of concerns (text vs number input)
32
- * - Built-in number validation
33
- * - Type-safe number callbacks
34
- * - Prevents non-numeric input via keyboard
35
- * - Consistent with AtomicInput styling
36
- *
37
- * @module AtomicNumberInput
38
- */
39
- import React from 'react';
40
- import { AtomicInputProps } from './AtomicInput';
41
- /**
42
- * Props for AtomicNumberInput component
43
- * Extends AtomicInput but removes text-specific props
44
- */
45
- export interface AtomicNumberInputProps extends Omit<AtomicInputProps, 'keyboardType' | 'secureTextEntry' | 'showPasswordToggle' | 'onChangeText'> {
46
- /** Minimum allowed value */
47
- min?: number;
48
- /** Maximum allowed value */
49
- max?: number;
50
- /** Step increment (for spinners, future feature) */
51
- step?: number;
52
- /** Allow decimal numbers (default: false for integers only) */
53
- allowDecimal?: boolean;
54
- /** Callback when valid number is entered (null if invalid/empty) */
55
- onValueChange?: (value: number | null) => void;
56
- /** Callback when raw text changes (optional) */
57
- onTextChange?: (text: string) => void;
58
- }
59
- /**
60
- * AtomicNumberInput - Specialized numeric input component
61
- *
62
- * Wraps AtomicInput with:
63
- * - Numeric keyboard
64
- * - Number validation (min, max, format)
65
- * - Parsed number callbacks
66
- * - Automatic error states
67
- */
68
- export declare const AtomicNumberInput: React.FC<AtomicNumberInputProps>;
69
- //# sourceMappingURL=AtomicNumberInput.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AtomicNumberInput.d.ts","sourceRoot":"","sources":["../../../src/presentation/atoms/AtomicNumberInput.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,EAAe,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAE9D;;;GAGG;AACH,MAAM,WAAW,sBACf,SAAQ,IAAI,CACV,gBAAgB,EAChB,cAAc,GAAG,iBAAiB,GAAG,oBAAoB,GAAG,cAAc,CAC3E;IACD,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oEAAoE;IACpE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/C,gDAAgD;IAChD,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CA2G9D,CAAC"}
@@ -1,125 +0,0 @@
1
- /**
2
- * AtomicNumberInput Component
3
- *
4
- * A specialized number input component that wraps AtomicInput with
5
- * number-specific validation and keyboard handling.
6
- *
7
- * Features:
8
- * - Numeric keyboard (integer or decimal)
9
- * - Min/max validation
10
- * - Step increment support
11
- * - Automatic error states for invalid numbers
12
- * - Parsed number callback (onValueChange)
13
- * - Consistent styling with AtomicInput
14
- * - All AtomicInput features (variants, states, sizes)
15
- *
16
- * Usage:
17
- * ```tsx
18
- * const [age, setAge] = useState<number | null>(null);
19
- *
20
- * <AtomicNumberInput
21
- * value={age?.toString() || ''}
22
- * onValueChange={setAge}
23
- * label="Age"
24
- * min={0}
25
- * max={150}
26
- * helperText="Enter your age"
27
- * />
28
- * ```
29
- *
30
- * Why This Component:
31
- * - Separation of concerns (text vs number input)
32
- * - Built-in number validation
33
- * - Type-safe number callbacks
34
- * - Prevents non-numeric input via keyboard
35
- * - Consistent with AtomicInput styling
36
- *
37
- * @module AtomicNumberInput
38
- */
39
- import React, { useState, useEffect } from 'react';
40
- import { AtomicInput } from './AtomicInput';
41
- /**
42
- * AtomicNumberInput - Specialized numeric input component
43
- *
44
- * Wraps AtomicInput with:
45
- * - Numeric keyboard
46
- * - Number validation (min, max, format)
47
- * - Parsed number callbacks
48
- * - Automatic error states
49
- */
50
- export const AtomicNumberInput = ({ min, max, step = 1, allowDecimal = false, onValueChange, onTextChange, value = '', state: externalState, helperText: externalHelperText, ...props }) => {
51
- const [internalError, setInternalError] = useState(undefined);
52
- /**
53
- * Validate number and return error message if invalid
54
- */
55
- const validateNumber = (text) => {
56
- // Empty is valid (null value)
57
- if (!text || text === '' || text === '-' || text === '.') {
58
- return undefined;
59
- }
60
- // Parse number
61
- const num = parseFloat(text);
62
- // Check if valid number
63
- if (isNaN(num)) {
64
- return 'Invalid number';
65
- }
66
- // Check min constraint
67
- if (min !== undefined && num < min) {
68
- return `Minimum value is ${min}`;
69
- }
70
- // Check max constraint
71
- if (max !== undefined && num > max) {
72
- return `Maximum value is ${max}`;
73
- }
74
- return undefined;
75
- };
76
- /**
77
- * Handle text change with validation
78
- */
79
- const handleChangeText = (text) => {
80
- // Allow empty, minus sign, and decimal point during typing
81
- if (text === '' || text === '-' || (allowDecimal && text === '.')) {
82
- setInternalError(undefined);
83
- onTextChange?.(text);
84
- onValueChange?.(null);
85
- return;
86
- }
87
- // Validate format
88
- const decimalRegex = allowDecimal ? /^-?\d*\.?\d*$/ : /^-?\d*$/;
89
- if (!decimalRegex.test(text)) {
90
- // Invalid format, don't update
91
- return;
92
- }
93
- // Validate number
94
- const error = validateNumber(text);
95
- setInternalError(error);
96
- // Call text callback
97
- onTextChange?.(text);
98
- // Call value callback with parsed number
99
- if (!error && text !== '' && text !== '-' && text !== '.') {
100
- const num = parseFloat(text);
101
- onValueChange?.(isNaN(num) ? null : num);
102
- }
103
- else {
104
- onValueChange?.(null);
105
- }
106
- };
107
- /**
108
- * Validate on mount and when value/constraints change
109
- */
110
- useEffect(() => {
111
- if (value) {
112
- const error = validateNumber(value.toString());
113
- setInternalError(error);
114
- }
115
- else {
116
- setInternalError(undefined);
117
- }
118
- }, [value, min, max]);
119
- // Determine final state (external state overrides internal error)
120
- const finalState = externalState || (internalError ? 'error' : 'default');
121
- // Determine final helper text (internal error overrides external helper)
122
- const finalHelperText = internalError || externalHelperText;
123
- return (<AtomicInput {...props} value={value} onChangeText={handleChangeText} keyboardType={allowDecimal ? 'decimal-pad' : 'numeric'} state={finalState} helperText={finalHelperText}/>);
124
- };
125
- //# sourceMappingURL=AtomicNumberInput.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AtomicNumberInput.js","sourceRoot":"","sources":["../../../src/presentation/atoms/AtomicNumberInput.tsx"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- /**
2
- * AtomicPicker Component
3
- *
4
- * A reusable option picker/dropdown component for selecting from a list of options.
5
- *
6
- * Features:
7
- * - Single and multi-select support
8
- * - Modal display mode (full-screen on mobile)
9
- * - Optional search/filter capability
10
- * - Error and disabled states
11
- * - Theme-aware styling
12
- * - Icons for options
13
- * - Clearable selection
14
- * - react-hook-form integration ready
15
- *
16
- * Architecture:
17
- * - Follows AtomicButton pattern with separated types and styles
18
- * - Uses helper functions from picker/styles/pickerStyles.ts
19
- * - Types defined in picker/types/index.ts
20
- * - Zero inline StyleSheet.create()
21
- *
22
- * Usage:
23
- * ```tsx
24
- * const [partyType, setPartyType] = useState('birthday');
25
- *
26
- * <AtomicPicker
27
- * value={partyType}
28
- * onChange={setPartyType}
29
- * options={[
30
- * { label: 'Birthday Party', value: 'birthday', icon: 'cake' },
31
- * { label: 'Wedding', value: 'wedding', icon: 'heart' },
32
- * { label: 'Corporate Event', value: 'corporate', icon: 'briefcase' },
33
- * ]}
34
- * label="Party Type"
35
- * placeholder="Select party type"
36
- * searchable
37
- * />
38
- * ```
39
- *
40
- * @module AtomicPicker
41
- */
42
- import React from 'react';
43
- import { AtomicPickerProps } from './picker/types';
44
- export type { AtomicPickerProps, PickerOption, PickerSize } from './picker/types';
45
- /**
46
- * AtomicPicker - Universal option picker component
47
- *
48
- * Displays a button that opens a modal for selection.
49
- * Supports single/multi-select, search, and custom rendering.
50
- */
51
- export declare const AtomicPicker: React.FC<AtomicPickerProps>;
52
- //# sourceMappingURL=AtomicPicker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AtomicPicker.d.ts","sourceRoot":"","sources":["../../../src/presentation/atoms/AtomicPicker.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,KAA4B,MAAM,OAAO,CAAC;AAYjD,OAAO,EAAE,iBAAiB,EAAgB,MAAM,gBAAgB,CAAC;AAyBjE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAElF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAkXpD,CAAC"}