@umituz/react-native-design-system 1.8.0 → 1.8.1
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.
- package/README.md +2 -2
- package/package.json +56 -30
- package/src/index.ts +67 -265
- package/lib/index.d.ts +0 -61
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js +0 -101
- package/lib/index.js.map +0 -1
- package/lib/presentation/atoms/AtomicAvatar.d.ts +0 -48
- package/lib/presentation/atoms/AtomicAvatar.d.ts.map +0 -1
- package/lib/presentation/atoms/AtomicAvatar.js +0 -85
- package/lib/presentation/atoms/AtomicAvatar.js.map +0 -1
- package/lib/presentation/atoms/AtomicAvatarGroup.d.ts +0 -56
- package/lib/presentation/atoms/AtomicAvatarGroup.d.ts.map +0 -1
- package/lib/presentation/atoms/AtomicAvatarGroup.js +0 -83
- package/lib/presentation/atoms/AtomicAvatarGroup.js.map +0 -1
- package/lib/presentation/atoms/AtomicBadge.d.ts +0 -42
- package/lib/presentation/atoms/AtomicBadge.d.ts.map +0 -1
- package/lib/presentation/atoms/AtomicBadge.js +0 -168
- package/lib/presentation/atoms/AtomicBadge.js.map +0 -1
- package/lib/presentation/atoms/AtomicButton.d.ts +0 -21
- package/lib/presentation/atoms/AtomicButton.d.ts.map +0 -1
- package/lib/presentation/atoms/AtomicButton.js +0 -172
- package/lib/presentation/atoms/AtomicButton.js.map +0 -1
- package/lib/presentation/atoms/AtomicCard.d.ts +0 -15
- package/lib/presentation/atoms/AtomicCard.d.ts.map +0 -1
- package/lib/presentation/atoms/AtomicCard.js +0 -70
- package/lib/presentation/atoms/AtomicCard.js.map +0 -1
- package/lib/presentation/atoms/AtomicChip.d.ts +0 -53
- package/lib/presentation/atoms/AtomicChip.d.ts.map +0 -1
- package/lib/presentation/atoms/AtomicChip.js +0 -131
- package/lib/presentation/atoms/AtomicChip.js.map +0 -1
- package/lib/presentation/atoms/AtomicDatePicker.d.ts +0 -75
- package/lib/presentation/atoms/AtomicDatePicker.d.ts.map +0 -1
- package/lib/presentation/atoms/AtomicDatePicker.js +0 -246
- package/lib/presentation/atoms/AtomicDatePicker.js.map +0 -1
- package/lib/presentation/atoms/AtomicDivider.d.ts +0 -45
- package/lib/presentation/atoms/AtomicDivider.d.ts.map +0 -1
- package/lib/presentation/atoms/AtomicDivider.js +0 -58
- package/lib/presentation/atoms/AtomicDivider.js.map +0 -1
- package/lib/presentation/atoms/AtomicFab.d.ts +0 -37
- package/lib/presentation/atoms/AtomicFab.d.ts.map +0 -1
- package/lib/presentation/atoms/AtomicFab.js +0 -68
- package/lib/presentation/atoms/AtomicFab.js.map +0 -1
- package/lib/presentation/atoms/AtomicFilter.d.ts +0 -37
- package/lib/presentation/atoms/AtomicFilter.d.ts.map +0 -1
- package/lib/presentation/atoms/AtomicFilter.js +0 -104
- package/lib/presentation/atoms/AtomicFilter.js.map +0 -1
- package/lib/presentation/atoms/AtomicFormError.d.ts +0 -30
- package/lib/presentation/atoms/AtomicFormError.d.ts.map +0 -1
- package/lib/presentation/atoms/AtomicFormError.js +0 -64
- package/lib/presentation/atoms/AtomicFormError.js.map +0 -1
- package/lib/presentation/atoms/AtomicIcon.d.ts +0 -35
- package/lib/presentation/atoms/AtomicIcon.d.ts.map +0 -1
- package/lib/presentation/atoms/AtomicIcon.js +0 -30
- package/lib/presentation/atoms/AtomicIcon.js.map +0 -1
- package/lib/presentation/atoms/AtomicImage.d.ts +0 -40
- package/lib/presentation/atoms/AtomicImage.d.ts.map +0 -1
- package/lib/presentation/atoms/AtomicImage.js +0 -92
- package/lib/presentation/atoms/AtomicImage.js.map +0 -1
- package/lib/presentation/atoms/AtomicInput.d.ts +0 -71
- package/lib/presentation/atoms/AtomicInput.d.ts.map +0 -1
- package/lib/presentation/atoms/AtomicInput.js +0 -196
- package/lib/presentation/atoms/AtomicInput.js.map +0 -1
- package/lib/presentation/atoms/AtomicNumberInput.d.ts +0 -69
- package/lib/presentation/atoms/AtomicNumberInput.d.ts.map +0 -1
- package/lib/presentation/atoms/AtomicNumberInput.js +0 -125
- package/lib/presentation/atoms/AtomicNumberInput.js.map +0 -1
- package/lib/presentation/atoms/AtomicPicker.d.ts +0 -52
- package/lib/presentation/atoms/AtomicPicker.d.ts.map +0 -1
- package/lib/presentation/atoms/AtomicPicker.js +0 -299
- package/lib/presentation/atoms/AtomicPicker.js.map +0 -1
- package/lib/presentation/atoms/AtomicProgress.d.ts +0 -44
- package/lib/presentation/atoms/AtomicProgress.d.ts.map +0 -1
- package/lib/presentation/atoms/AtomicProgress.js +0 -80
- package/lib/presentation/atoms/AtomicProgress.js.map +0 -1
- package/lib/presentation/atoms/AtomicSearchBar.d.ts +0 -19
- package/lib/presentation/atoms/AtomicSearchBar.d.ts.map +0 -1
- package/lib/presentation/atoms/AtomicSearchBar.js +0 -46
- package/lib/presentation/atoms/AtomicSearchBar.js.map +0 -1
- package/lib/presentation/atoms/AtomicSort.d.ts +0 -72
- package/lib/presentation/atoms/AtomicSort.d.ts.map +0 -1
- package/lib/presentation/atoms/AtomicSort.js +0 -77
- package/lib/presentation/atoms/AtomicSort.js.map +0 -1
- package/lib/presentation/atoms/AtomicSwitch.d.ts +0 -43
- package/lib/presentation/atoms/AtomicSwitch.d.ts.map +0 -1
- package/lib/presentation/atoms/AtomicSwitch.js +0 -104
- package/lib/presentation/atoms/AtomicSwitch.js.map +0 -1
- package/lib/presentation/atoms/AtomicText.d.ts +0 -14
- package/lib/presentation/atoms/AtomicText.d.ts.map +0 -1
- package/lib/presentation/atoms/AtomicText.js +0 -36
- package/lib/presentation/atoms/AtomicText.js.map +0 -1
- package/lib/presentation/atoms/AtomicTextArea.d.ts +0 -85
- package/lib/presentation/atoms/AtomicTextArea.d.ts.map +0 -1
- package/lib/presentation/atoms/AtomicTextArea.js +0 -196
- package/lib/presentation/atoms/AtomicTextArea.js.map +0 -1
- package/lib/presentation/atoms/AtomicTouchable.d.ts +0 -77
- package/lib/presentation/atoms/AtomicTouchable.d.ts.map +0 -1
- package/lib/presentation/atoms/AtomicTouchable.js +0 -138
- package/lib/presentation/atoms/AtomicTouchable.js.map +0 -1
- package/lib/presentation/atoms/fab/styles/fabStyles.d.ts +0 -23
- package/lib/presentation/atoms/fab/styles/fabStyles.d.ts.map +0 -1
- package/lib/presentation/atoms/fab/styles/fabStyles.js +0 -63
- package/lib/presentation/atoms/fab/styles/fabStyles.js.map +0 -1
- package/lib/presentation/atoms/fab/types/index.d.ts +0 -71
- package/lib/presentation/atoms/fab/types/index.d.ts.map +0 -1
- package/lib/presentation/atoms/fab/types/index.js +0 -2
- package/lib/presentation/atoms/fab/types/index.js.map +0 -1
- package/lib/presentation/atoms/filter/styles/filterStyles.d.ts +0 -15
- package/lib/presentation/atoms/filter/styles/filterStyles.d.ts.map +0 -1
- package/lib/presentation/atoms/filter/styles/filterStyles.js +0 -29
- package/lib/presentation/atoms/filter/styles/filterStyles.js.map +0 -1
- package/lib/presentation/atoms/filter/types/index.d.ts +0 -76
- package/lib/presentation/atoms/filter/types/index.d.ts.map +0 -1
- package/lib/presentation/atoms/filter/types/index.js +0 -2
- package/lib/presentation/atoms/filter/types/index.js.map +0 -1
- package/lib/presentation/atoms/index.d.ts +0 -273
- package/lib/presentation/atoms/index.d.ts.map +0 -1
- package/lib/presentation/atoms/index.js +0 -146
- package/lib/presentation/atoms/index.js.map +0 -1
- package/lib/presentation/atoms/input/hooks/useInputState.d.ts +0 -7
- package/lib/presentation/atoms/input/hooks/useInputState.d.ts.map +0 -1
- package/lib/presentation/atoms/input/hooks/useInputState.js +0 -13
- package/lib/presentation/atoms/input/hooks/useInputState.js.map +0 -1
- package/lib/presentation/atoms/input/styles/inputStyles.d.ts +0 -13
- package/lib/presentation/atoms/input/styles/inputStyles.d.ts.map +0 -1
- package/lib/presentation/atoms/input/styles/inputStyles.js +0 -59
- package/lib/presentation/atoms/input/styles/inputStyles.js.map +0 -1
- package/lib/presentation/atoms/input/types/index.d.ts +0 -24
- package/lib/presentation/atoms/input/types/index.d.ts.map +0 -1
- package/lib/presentation/atoms/input/types/index.js +0 -2
- package/lib/presentation/atoms/input/types/index.js.map +0 -1
- package/lib/presentation/atoms/picker/styles/pickerStyles.d.ts +0 -85
- package/lib/presentation/atoms/picker/styles/pickerStyles.d.ts.map +0 -1
- package/lib/presentation/atoms/picker/styles/pickerStyles.js +0 -177
- package/lib/presentation/atoms/picker/styles/pickerStyles.js.map +0 -1
- package/lib/presentation/atoms/picker/types/index.d.ts +0 -38
- package/lib/presentation/atoms/picker/types/index.d.ts.map +0 -1
- package/lib/presentation/atoms/picker/types/index.js +0 -2
- package/lib/presentation/atoms/picker/types/index.js.map +0 -1
- package/lib/presentation/atoms/touchable/styles/touchableStyles.d.ts +0 -31
- package/lib/presentation/atoms/touchable/styles/touchableStyles.d.ts.map +0 -1
- package/lib/presentation/atoms/touchable/styles/touchableStyles.js +0 -54
- package/lib/presentation/atoms/touchable/styles/touchableStyles.js.map +0 -1
- package/lib/presentation/atoms/touchable/types/index.d.ts +0 -134
- package/lib/presentation/atoms/touchable/types/index.d.ts.map +0 -1
- package/lib/presentation/atoms/touchable/types/index.js +0 -2
- package/lib/presentation/atoms/touchable/types/index.js.map +0 -1
- package/lib/presentation/hooks/useResponsive.d.ts +0 -80
- package/lib/presentation/hooks/useResponsive.d.ts.map +0 -1
- package/lib/presentation/hooks/useResponsive.js +0 -82
- package/lib/presentation/hooks/useResponsive.js.map +0 -1
- package/lib/presentation/molecules/AtomicConfirmationModal.d.ts +0 -73
- package/lib/presentation/molecules/AtomicConfirmationModal.d.ts.map +0 -1
- package/lib/presentation/molecules/AtomicConfirmationModal.js +0 -154
- package/lib/presentation/molecules/AtomicConfirmationModal.js.map +0 -1
- package/lib/presentation/molecules/EmptyState.d.ts +0 -41
- package/lib/presentation/molecules/EmptyState.d.ts.map +0 -1
- package/lib/presentation/molecules/EmptyState.js +0 -68
- package/lib/presentation/molecules/EmptyState.js.map +0 -1
- package/lib/presentation/molecules/FormField.d.ts +0 -22
- package/lib/presentation/molecules/FormField.d.ts.map +0 -1
- package/lib/presentation/molecules/FormField.js +0 -76
- package/lib/presentation/molecules/FormField.js.map +0 -1
- package/lib/presentation/molecules/GridContainer.d.ts +0 -40
- package/lib/presentation/molecules/GridContainer.d.ts.map +0 -1
- package/lib/presentation/molecules/GridContainer.js +0 -77
- package/lib/presentation/molecules/GridContainer.js.map +0 -1
- package/lib/presentation/molecules/IconContainer.d.ts +0 -29
- package/lib/presentation/molecules/IconContainer.d.ts.map +0 -1
- package/lib/presentation/molecules/IconContainer.js +0 -60
- package/lib/presentation/molecules/IconContainer.js.map +0 -1
- package/lib/presentation/molecules/ListItem.d.ts +0 -5
- package/lib/presentation/molecules/ListItem.d.ts.map +0 -1
- package/lib/presentation/molecules/ListItem.js +0 -24
- package/lib/presentation/molecules/ListItem.js.map +0 -1
- package/lib/presentation/molecules/ScreenHeader.d.ts +0 -55
- package/lib/presentation/molecules/ScreenHeader.d.ts.map +0 -1
- package/lib/presentation/molecules/ScreenHeader.js +0 -94
- package/lib/presentation/molecules/ScreenHeader.js.map +0 -1
- package/lib/presentation/molecules/SearchBar.d.ts +0 -18
- package/lib/presentation/molecules/SearchBar.d.ts.map +0 -1
- package/lib/presentation/molecules/SearchBar.js +0 -47
- package/lib/presentation/molecules/SearchBar.js.map +0 -1
- package/lib/presentation/molecules/SectionCard.d.ts +0 -25
- package/lib/presentation/molecules/SectionCard.d.ts.map +0 -1
- package/lib/presentation/molecules/SectionCard.js +0 -47
- package/lib/presentation/molecules/SectionCard.js.map +0 -1
- package/lib/presentation/molecules/SectionContainer.d.ts +0 -33
- package/lib/presentation/molecules/SectionContainer.d.ts.map +0 -1
- package/lib/presentation/molecules/SectionContainer.js +0 -64
- package/lib/presentation/molecules/SectionContainer.js.map +0 -1
- package/lib/presentation/molecules/SectionHeader.d.ts +0 -37
- package/lib/presentation/molecules/SectionHeader.d.ts.map +0 -1
- package/lib/presentation/molecules/SectionHeader.js +0 -73
- package/lib/presentation/molecules/SectionHeader.js.map +0 -1
- package/lib/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.d.ts +0 -50
- package/lib/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.d.ts.map +0 -1
- package/lib/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.js +0 -115
- package/lib/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.js.map +0 -1
- package/lib/presentation/molecules/confirmation-modal/types/index.d.ts +0 -86
- package/lib/presentation/molecules/confirmation-modal/types/index.d.ts.map +0 -1
- package/lib/presentation/molecules/confirmation-modal/types/index.js +0 -7
- package/lib/presentation/molecules/confirmation-modal/types/index.js.map +0 -1
- package/lib/presentation/molecules/index.d.ts +0 -27
- package/lib/presentation/molecules/index.d.ts.map +0 -1
- package/lib/presentation/molecules/index.js +0 -17
- package/lib/presentation/molecules/index.js.map +0 -1
- package/lib/presentation/molecules/listitem/styles/listItemStyles.d.ts +0 -12
- package/lib/presentation/molecules/listitem/styles/listItemStyles.d.ts.map +0 -1
- package/lib/presentation/molecules/listitem/styles/listItemStyles.js +0 -15
- package/lib/presentation/molecules/listitem/styles/listItemStyles.js.map +0 -1
- package/lib/presentation/molecules/listitem/types/index.d.ts +0 -17
- package/lib/presentation/molecules/listitem/types/index.d.ts.map +0 -1
- package/lib/presentation/molecules/listitem/types/index.js +0 -2
- package/lib/presentation/molecules/listitem/types/index.js.map +0 -1
- package/lib/presentation/organisms/AppHeader.d.ts +0 -31
- package/lib/presentation/organisms/AppHeader.d.ts.map +0 -1
- package/lib/presentation/organisms/AppHeader.js +0 -78
- package/lib/presentation/organisms/AppHeader.js.map +0 -1
- package/lib/presentation/organisms/FormContainer.d.ts +0 -76
- package/lib/presentation/organisms/FormContainer.d.ts.map +0 -1
- package/lib/presentation/organisms/FormContainer.js +0 -127
- package/lib/presentation/organisms/FormContainer.js.map +0 -1
- package/lib/presentation/organisms/ScreenLayout.d.ts +0 -84
- package/lib/presentation/organisms/ScreenLayout.d.ts.map +0 -1
- package/lib/presentation/organisms/ScreenLayout.js +0 -69
- package/lib/presentation/organisms/ScreenLayout.js.map +0 -1
- package/lib/presentation/organisms/index.d.ts +0 -16
- package/lib/presentation/organisms/index.d.ts.map +0 -1
- package/lib/presentation/organisms/index.js +0 -14
- package/lib/presentation/organisms/index.js.map +0 -1
- package/lib/presentation/tokens/commonStyles.d.ts +0 -122
- package/lib/presentation/tokens/commonStyles.d.ts.map +0 -1
- package/lib/presentation/tokens/commonStyles.js +0 -220
- package/lib/presentation/tokens/commonStyles.js.map +0 -1
- package/lib/presentation/utils/platformConstants.d.ts +0 -100
- package/lib/presentation/utils/platformConstants.d.ts.map +0 -1
- package/lib/presentation/utils/platformConstants.js +0 -114
- package/lib/presentation/utils/platformConstants.js.map +0 -1
- package/lib/presentation/utils/responsive.d.ts +0 -218
- package/lib/presentation/utils/responsive.d.ts.map +0 -1
- package/lib/presentation/utils/responsive.js +0 -452
- package/lib/presentation/utils/responsive.js.map +0 -1
- package/lib/presentation/utils/variants/compound.d.ts +0 -10
- package/lib/presentation/utils/variants/compound.d.ts.map +0 -1
- package/lib/presentation/utils/variants/compound.js +0 -16
- package/lib/presentation/utils/variants/compound.js.map +0 -1
- package/lib/presentation/utils/variants/core.d.ts +0 -15
- package/lib/presentation/utils/variants/core.d.ts.map +0 -1
- package/lib/presentation/utils/variants/core.js +0 -23
- package/lib/presentation/utils/variants/core.js.map +0 -1
- package/lib/presentation/utils/variants/helpers.d.ts +0 -5
- package/lib/presentation/utils/variants/helpers.d.ts.map +0 -1
- package/lib/presentation/utils/variants/helpers.js +0 -10
- package/lib/presentation/utils/variants/helpers.js.map +0 -1
- package/lib/presentation/utils/variants.d.ts +0 -4
- package/lib/presentation/utils/variants.d.ts.map +0 -1
- package/lib/presentation/utils/variants.js +0 -4
- package/lib/presentation/utils/variants.js.map +0 -1
- package/src/presentation/atoms/AtomicAvatar.tsx +0 -157
- package/src/presentation/atoms/AtomicAvatarGroup.tsx +0 -169
- package/src/presentation/atoms/AtomicBadge.tsx +0 -232
- package/src/presentation/atoms/AtomicButton.tsx +0 -236
- package/src/presentation/atoms/AtomicCard.tsx +0 -107
- package/src/presentation/atoms/AtomicChip.tsx +0 -223
- package/src/presentation/atoms/AtomicDatePicker.tsx +0 -354
- package/src/presentation/atoms/AtomicDivider.tsx +0 -114
- package/src/presentation/atoms/AtomicFab.tsx +0 -98
- package/src/presentation/atoms/AtomicFilter.tsx +0 -154
- package/src/presentation/atoms/AtomicFormError.tsx +0 -105
- package/src/presentation/atoms/AtomicIcon.tsx +0 -40
- package/src/presentation/atoms/AtomicImage.tsx +0 -149
- package/src/presentation/atoms/AtomicInput.tsx +0 -350
- package/src/presentation/atoms/AtomicNumberInput.tsx +0 -182
- package/src/presentation/atoms/AtomicPicker.tsx +0 -458
- package/src/presentation/atoms/AtomicProgress.tsx +0 -139
- package/src/presentation/atoms/AtomicSearchBar.tsx +0 -114
- package/src/presentation/atoms/AtomicSort.tsx +0 -145
- package/src/presentation/atoms/AtomicSwitch.tsx +0 -166
- package/src/presentation/atoms/AtomicText.tsx +0 -82
- package/src/presentation/atoms/AtomicTextArea.tsx +0 -313
- package/src/presentation/atoms/AtomicTouchable.tsx +0 -209
- package/src/presentation/atoms/fab/styles/fabStyles.ts +0 -69
- package/src/presentation/atoms/fab/types/index.ts +0 -82
- package/src/presentation/atoms/filter/styles/filterStyles.ts +0 -32
- package/src/presentation/atoms/filter/types/index.ts +0 -89
- package/src/presentation/atoms/index.ts +0 -366
- package/src/presentation/atoms/input/hooks/useInputState.ts +0 -15
- package/src/presentation/atoms/input/styles/inputStyles.ts +0 -66
- package/src/presentation/atoms/input/types/index.ts +0 -25
- package/src/presentation/atoms/picker/styles/pickerStyles.ts +0 -207
- package/src/presentation/atoms/picker/types/index.ts +0 -40
- package/src/presentation/atoms/touchable/styles/touchableStyles.ts +0 -62
- package/src/presentation/atoms/touchable/types/index.ts +0 -155
- package/src/presentation/hooks/useResponsive.ts +0 -180
- package/src/presentation/molecules/AtomicConfirmationModal.tsx +0 -243
- package/src/presentation/molecules/EmptyState.tsx +0 -130
- package/src/presentation/molecules/FormField.tsx +0 -128
- package/src/presentation/molecules/GridContainer.tsx +0 -124
- package/src/presentation/molecules/IconContainer.tsx +0 -94
- package/src/presentation/molecules/ListItem.tsx +0 -36
- package/src/presentation/molecules/ScreenHeader.tsx +0 -140
- package/src/presentation/molecules/SearchBar.tsx +0 -85
- package/src/presentation/molecules/SectionCard.tsx +0 -74
- package/src/presentation/molecules/SectionContainer.tsx +0 -106
- package/src/presentation/molecules/SectionHeader.tsx +0 -125
- package/src/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.ts +0 -133
- package/src/presentation/molecules/confirmation-modal/types/index.ts +0 -105
- package/src/presentation/molecules/index.ts +0 -41
- package/src/presentation/molecules/listitem/styles/listItemStyles.ts +0 -19
- package/src/presentation/molecules/listitem/types/index.ts +0 -17
- package/src/presentation/organisms/AppHeader.tsx +0 -137
- package/src/presentation/organisms/FormContainer.tsx +0 -180
- package/src/presentation/organisms/ScreenLayout.tsx +0 -171
- package/src/presentation/organisms/index.ts +0 -25
- package/src/presentation/tokens/commonStyles.ts +0 -253
- package/src/presentation/utils/platformConstants.ts +0 -124
- package/src/presentation/utils/responsive.ts +0 -516
|
@@ -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"}
|
|
@@ -1,299 +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, { useState, useMemo } from 'react';
|
|
43
|
-
import { View, TouchableOpacity, Modal, FlatList, TextInput, useWindowDimensions, StyleSheet, } from 'react-native';
|
|
44
|
-
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
45
|
-
import { useAppDesignTokens } from '@umituz/react-native-theme';
|
|
46
|
-
import { AtomicIcon } from './AtomicIcon';
|
|
47
|
-
import { AtomicText } from './AtomicText';
|
|
48
|
-
import { getPickerContainerStyles, getPickerLabelStyles, getPickerPlaceholderStyles, getPickerValueStyles, getPickerErrorStyles, getModalOverlayStyles, getModalContainerStyles, getModalHeaderStyles, getModalTitleStyles, getSearchContainerStyles, getSearchInputStyles, getOptionContainerStyles, getOptionTextStyles, getOptionDescriptionStyles, getEmptyStateStyles, getEmptyStateTextStyles, getChipContainerStyles, getChipStyles, getChipTextStyles, } from './picker/styles/pickerStyles';
|
|
49
|
-
/**
|
|
50
|
-
* AtomicPicker - Universal option picker component
|
|
51
|
-
*
|
|
52
|
-
* Displays a button that opens a modal for selection.
|
|
53
|
-
* Supports single/multi-select, search, and custom rendering.
|
|
54
|
-
*/
|
|
55
|
-
export const AtomicPicker = ({ value, onChange, options, label, placeholder = 'Select...', error, disabled = false, multiple = false, searchable = false, clearable = false, autoClose = true, color = 'primary', size = 'md', modalTitle, emptyMessage = 'No options available', style, labelStyle, testID, }) => {
|
|
56
|
-
const tokens = useAppDesignTokens();
|
|
57
|
-
const { height } = useWindowDimensions();
|
|
58
|
-
const insets = useSafeAreaInsets();
|
|
59
|
-
const [modalVisible, setModalVisible] = useState(false);
|
|
60
|
-
const [searchQuery, setSearchQuery] = useState('');
|
|
61
|
-
// Get style helpers with design tokens
|
|
62
|
-
const containerStyles = getPickerContainerStyles(tokens);
|
|
63
|
-
const labelStyles = getPickerLabelStyles(tokens);
|
|
64
|
-
const placeholderStyles = getPickerPlaceholderStyles(tokens);
|
|
65
|
-
const valueStyles = getPickerValueStyles(tokens);
|
|
66
|
-
const errorStyles = getPickerErrorStyles(tokens);
|
|
67
|
-
const modalOverlayStyles = getModalOverlayStyles(tokens);
|
|
68
|
-
const modalContainerStyles = getModalContainerStyles(tokens, height * 0.85);
|
|
69
|
-
const modalHeaderStyles = getModalHeaderStyles(tokens);
|
|
70
|
-
const modalTitleStyles = getModalTitleStyles(tokens);
|
|
71
|
-
const searchContainerStyles = getSearchContainerStyles(tokens);
|
|
72
|
-
const searchInputStyles = getSearchInputStyles(tokens);
|
|
73
|
-
const emptyStateStyles = getEmptyStateStyles(tokens);
|
|
74
|
-
const emptyStateTextStyles = getEmptyStateTextStyles(tokens);
|
|
75
|
-
const chipContainerStyles = getChipContainerStyles(tokens);
|
|
76
|
-
const chipStyles = getChipStyles(tokens);
|
|
77
|
-
const chipTextStyles = getChipTextStyles(tokens);
|
|
78
|
-
/**
|
|
79
|
-
* Normalize value to array for consistent handling
|
|
80
|
-
*/
|
|
81
|
-
const selectedValues = useMemo(() => {
|
|
82
|
-
if (multiple) {
|
|
83
|
-
return Array.isArray(value) ? value : [];
|
|
84
|
-
}
|
|
85
|
-
return value ? [value] : [];
|
|
86
|
-
}, [value, multiple]);
|
|
87
|
-
/**
|
|
88
|
-
* Get selected option objects
|
|
89
|
-
*/
|
|
90
|
-
const selectedOptions = useMemo(() => {
|
|
91
|
-
return options.filter((opt) => selectedValues.includes(opt.value));
|
|
92
|
-
}, [options, selectedValues]);
|
|
93
|
-
/**
|
|
94
|
-
* Filter options based on search query
|
|
95
|
-
*/
|
|
96
|
-
const filteredOptions = useMemo(() => {
|
|
97
|
-
if (!searchQuery.trim())
|
|
98
|
-
return options;
|
|
99
|
-
const query = searchQuery.toLowerCase();
|
|
100
|
-
return options.filter((opt) => opt.label.toLowerCase().includes(query) ||
|
|
101
|
-
opt.description?.toLowerCase().includes(query));
|
|
102
|
-
}, [options, searchQuery]);
|
|
103
|
-
/**
|
|
104
|
-
* Format display text for selected value(s)
|
|
105
|
-
*/
|
|
106
|
-
const displayText = useMemo(() => {
|
|
107
|
-
if (selectedOptions.length === 0) {
|
|
108
|
-
return placeholder;
|
|
109
|
-
}
|
|
110
|
-
if (multiple) {
|
|
111
|
-
return selectedOptions.length === 1
|
|
112
|
-
? selectedOptions[0].label
|
|
113
|
-
: `${selectedOptions.length} selected`;
|
|
114
|
-
}
|
|
115
|
-
return selectedOptions[0]?.label || placeholder;
|
|
116
|
-
}, [selectedOptions, placeholder, multiple]);
|
|
117
|
-
/**
|
|
118
|
-
* Handle modal open
|
|
119
|
-
*/
|
|
120
|
-
const openModal = () => {
|
|
121
|
-
if (disabled)
|
|
122
|
-
return;
|
|
123
|
-
setModalVisible(true);
|
|
124
|
-
setSearchQuery('');
|
|
125
|
-
};
|
|
126
|
-
/**
|
|
127
|
-
* Handle modal close
|
|
128
|
-
*/
|
|
129
|
-
const closeModal = () => {
|
|
130
|
-
setModalVisible(false);
|
|
131
|
-
setSearchQuery('');
|
|
132
|
-
};
|
|
133
|
-
/**
|
|
134
|
-
* Handle option selection
|
|
135
|
-
*/
|
|
136
|
-
const handleSelect = (optionValue) => {
|
|
137
|
-
if (multiple) {
|
|
138
|
-
const newValues = selectedValues.includes(optionValue)
|
|
139
|
-
? selectedValues.filter((v) => v !== optionValue)
|
|
140
|
-
: [...selectedValues, optionValue];
|
|
141
|
-
onChange(newValues);
|
|
142
|
-
}
|
|
143
|
-
else {
|
|
144
|
-
onChange(optionValue);
|
|
145
|
-
if (autoClose) {
|
|
146
|
-
closeModal();
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
};
|
|
150
|
-
/**
|
|
151
|
-
* Handle clear selection
|
|
152
|
-
*/
|
|
153
|
-
const handleClear = () => {
|
|
154
|
-
onChange(multiple ? [] : '');
|
|
155
|
-
};
|
|
156
|
-
/**
|
|
157
|
-
* Handle search query change
|
|
158
|
-
*/
|
|
159
|
-
const handleSearch = (query) => {
|
|
160
|
-
setSearchQuery(query);
|
|
161
|
-
};
|
|
162
|
-
/**
|
|
163
|
-
* Check if option is selected
|
|
164
|
-
*/
|
|
165
|
-
const isSelected = (optionValue) => {
|
|
166
|
-
return selectedValues.includes(optionValue);
|
|
167
|
-
};
|
|
168
|
-
/**
|
|
169
|
-
* Render single option
|
|
170
|
-
*/
|
|
171
|
-
const renderOption = ({ item }) => {
|
|
172
|
-
const selected = isSelected(item.value);
|
|
173
|
-
const itemDisabled = item.disabled || false;
|
|
174
|
-
const optionContainerStyle = getOptionContainerStyles(tokens, selected, itemDisabled);
|
|
175
|
-
const optionTextStyle = getOptionTextStyles(tokens, selected);
|
|
176
|
-
const optionDescriptionStyle = getOptionDescriptionStyles(tokens);
|
|
177
|
-
return (<TouchableOpacity onPress={() => !itemDisabled && handleSelect(item.value)} disabled={itemDisabled} testID={item.testID || `${testID}-option-${item.value}`} style={optionContainerStyle}>
|
|
178
|
-
{/* Option Icon */}
|
|
179
|
-
{item.icon && (<AtomicIcon name={item.icon} size="md" color={selected ? 'primary' : 'secondary'}/>)}
|
|
180
|
-
|
|
181
|
-
{/* Option Content */}
|
|
182
|
-
<View style={{ flex: 1 }}>
|
|
183
|
-
<AtomicText style={optionTextStyle}>{item.label}</AtomicText>
|
|
184
|
-
{item.description && (<AtomicText style={optionDescriptionStyle}>
|
|
185
|
-
{item.description}
|
|
186
|
-
</AtomicText>)}
|
|
187
|
-
</View>
|
|
188
|
-
|
|
189
|
-
{/* Selected Indicator */}
|
|
190
|
-
{selected && (<AtomicIcon name="CheckCircle" size="md" color="primary"/>)}
|
|
191
|
-
</TouchableOpacity>);
|
|
192
|
-
};
|
|
193
|
-
/**
|
|
194
|
-
* Render selected chips for multi-select
|
|
195
|
-
*/
|
|
196
|
-
const renderSelectedChips = () => {
|
|
197
|
-
if (!multiple || selectedOptions.length === 0)
|
|
198
|
-
return null;
|
|
199
|
-
return (<View style={chipContainerStyles}>
|
|
200
|
-
{selectedOptions.map((opt) => (<View key={opt.value} style={chipStyles}>
|
|
201
|
-
<AtomicText style={chipTextStyles}>{opt.label}</AtomicText>
|
|
202
|
-
<TouchableOpacity onPress={(e) => {
|
|
203
|
-
e.stopPropagation();
|
|
204
|
-
handleSelect(opt.value);
|
|
205
|
-
}} hitSlop={{ top: 4, bottom: 4, left: 4, right: 4 }}>
|
|
206
|
-
<AtomicIcon name="X" size="sm" color="primary"/>
|
|
207
|
-
</TouchableOpacity>
|
|
208
|
-
</View>))}
|
|
209
|
-
</View>);
|
|
210
|
-
};
|
|
211
|
-
const pickerContainerStyle = StyleSheet.flatten([
|
|
212
|
-
containerStyles.base,
|
|
213
|
-
containerStyles.size[size],
|
|
214
|
-
error ? containerStyles.state.error : undefined,
|
|
215
|
-
disabled ? containerStyles.state.disabled : undefined,
|
|
216
|
-
style,
|
|
217
|
-
]);
|
|
218
|
-
const pickerLabelStyle = StyleSheet.flatten([
|
|
219
|
-
labelStyles.base,
|
|
220
|
-
labelStyles.size[size],
|
|
221
|
-
labelStyle,
|
|
222
|
-
]);
|
|
223
|
-
const pickerValueStyle = StyleSheet.flatten([
|
|
224
|
-
selectedOptions.length > 0 ? valueStyles.base : placeholderStyles.base,
|
|
225
|
-
selectedOptions.length > 0
|
|
226
|
-
? valueStyles.size[size]
|
|
227
|
-
: placeholderStyles.size[size],
|
|
228
|
-
]);
|
|
229
|
-
return (<View>
|
|
230
|
-
{/* Label */}
|
|
231
|
-
{label && <AtomicText style={pickerLabelStyle}>{label}</AtomicText>}
|
|
232
|
-
|
|
233
|
-
{/* Picker Button */}
|
|
234
|
-
<TouchableOpacity onPress={openModal} disabled={disabled} accessibilityRole="button" accessibilityLabel={label || placeholder} accessibilityState={{ disabled }} testID={testID} style={pickerContainerStyle}>
|
|
235
|
-
{/* Display Text */}
|
|
236
|
-
<AtomicText style={pickerValueStyle} numberOfLines={1}>
|
|
237
|
-
{displayText}
|
|
238
|
-
</AtomicText>
|
|
239
|
-
|
|
240
|
-
{/* Icons */}
|
|
241
|
-
<View style={{ flexDirection: 'row', alignItems: 'center', gap: tokens.spacing.xs }}>
|
|
242
|
-
{/* Clear Button */}
|
|
243
|
-
{clearable && selectedOptions.length > 0 && !disabled && (<TouchableOpacity onPress={handleClear} hitSlop={{ top: 8, bottom: 8, left: 8, right: 8 }} accessibilityRole="button" accessibilityLabel="Clear selection" testID={`${testID}-clear`}>
|
|
244
|
-
<AtomicIcon name="cancel" size="sm" color="secondary"/>
|
|
245
|
-
</TouchableOpacity>)}
|
|
246
|
-
|
|
247
|
-
{/* Dropdown Icon */}
|
|
248
|
-
<AtomicIcon name={modalVisible ? 'expand-less' : 'expand-more'} size="sm" color={disabled ? 'surfaceVariant' : 'secondary'}/>
|
|
249
|
-
</View>
|
|
250
|
-
</TouchableOpacity>
|
|
251
|
-
|
|
252
|
-
{/* Selected Chips (Multi-select) */}
|
|
253
|
-
{renderSelectedChips()}
|
|
254
|
-
|
|
255
|
-
{/* Error Message */}
|
|
256
|
-
{error && <AtomicText style={errorStyles}>{error}</AtomicText>}
|
|
257
|
-
|
|
258
|
-
{/* Selection Modal */}
|
|
259
|
-
<Modal visible={modalVisible} animationType="slide" transparent onRequestClose={closeModal} testID={`${testID}-modal`}>
|
|
260
|
-
<View style={modalOverlayStyles}>
|
|
261
|
-
<View style={[
|
|
262
|
-
modalContainerStyles,
|
|
263
|
-
{ paddingBottom: insets.bottom + tokens.spacing.md },
|
|
264
|
-
]}>
|
|
265
|
-
{/* Modal Header */}
|
|
266
|
-
<View style={modalHeaderStyles}>
|
|
267
|
-
{/* Title */}
|
|
268
|
-
<AtomicText style={modalTitleStyles}>
|
|
269
|
-
{modalTitle || label || 'Select'}
|
|
270
|
-
</AtomicText>
|
|
271
|
-
|
|
272
|
-
{/* Close Button */}
|
|
273
|
-
<TouchableOpacity onPress={closeModal} hitSlop={{ top: 8, bottom: 8, left: 8, right: 8 }} accessibilityRole="button" accessibilityLabel="Close picker" testID={`${testID}-close`}>
|
|
274
|
-
<AtomicIcon name="X" size="md" color="primary"/>
|
|
275
|
-
</TouchableOpacity>
|
|
276
|
-
</View>
|
|
277
|
-
|
|
278
|
-
{/* Search Bar */}
|
|
279
|
-
{searchable && (<View style={searchContainerStyles}>
|
|
280
|
-
<AtomicIcon name="Search" size="sm" color="secondary"/>
|
|
281
|
-
<TextInput value={searchQuery} onChangeText={handleSearch} placeholder="Search..." placeholderTextColor={tokens.colors.textSecondary} style={searchInputStyles} testID={`${testID}-search`}/>
|
|
282
|
-
{searchQuery.length > 0 && (<TouchableOpacity onPress={() => handleSearch('')}>
|
|
283
|
-
<AtomicIcon name="cancel" size="sm" color="secondary"/>
|
|
284
|
-
</TouchableOpacity>)}
|
|
285
|
-
</View>)}
|
|
286
|
-
|
|
287
|
-
{/* Options List */}
|
|
288
|
-
{filteredOptions.length > 0 ? (<FlatList data={filteredOptions} keyExtractor={(item) => item.value} renderItem={renderOption} showsVerticalScrollIndicator testID={`${testID}-list`}/>) : (<View style={emptyStateStyles}>
|
|
289
|
-
<AtomicIcon name="error-outline" size="xl" color="secondary"/>
|
|
290
|
-
<AtomicText style={emptyStateTextStyles}>
|
|
291
|
-
{emptyMessage}
|
|
292
|
-
</AtomicText>
|
|
293
|
-
</View>)}
|
|
294
|
-
</View>
|
|
295
|
-
</View>
|
|
296
|
-
</Modal>
|
|
297
|
-
</View>);
|
|
298
|
-
};
|
|
299
|
-
//# sourceMappingURL=AtomicPicker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AtomicPicker.js","sourceRoot":"","sources":["../../../src/presentation/atoms/AtomicPicker.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AtomicProgress - Universal Progress Bar Component
|
|
3
|
-
*
|
|
4
|
-
* Displays progress bars for completion tracking
|
|
5
|
-
* Theme: {{THEME_NAME}} ({{CATEGORY}} category)
|
|
6
|
-
*
|
|
7
|
-
* Atomic Design Level: ATOM
|
|
8
|
-
* Purpose: Progress indication and completion tracking
|
|
9
|
-
*
|
|
10
|
-
* Usage:
|
|
11
|
-
* - File upload progress
|
|
12
|
-
* - Task completion progress
|
|
13
|
-
* - Achievement progress
|
|
14
|
-
* - Form completion
|
|
15
|
-
*/
|
|
16
|
-
import React from 'react';
|
|
17
|
-
import { ViewStyle } from 'react-native';
|
|
18
|
-
export interface AtomicProgressProps {
|
|
19
|
-
/** Progress value (0-100) */
|
|
20
|
-
value: number;
|
|
21
|
-
/** Progress bar height */
|
|
22
|
-
height?: number;
|
|
23
|
-
/** Progress bar width */
|
|
24
|
-
width?: number | string;
|
|
25
|
-
/** Progress bar color */
|
|
26
|
-
color?: string;
|
|
27
|
-
/** Background color */
|
|
28
|
-
backgroundColor?: string;
|
|
29
|
-
/** Progress bar shape */
|
|
30
|
-
shape?: 'rounded' | 'square';
|
|
31
|
-
/** Whether to show percentage text */
|
|
32
|
-
showPercentage?: boolean;
|
|
33
|
-
/** Whether to show value text */
|
|
34
|
-
showValue?: boolean;
|
|
35
|
-
/** Custom text color */
|
|
36
|
-
textColor?: string;
|
|
37
|
-
/** Style overrides */
|
|
38
|
-
style?: ViewStyle | ViewStyle[];
|
|
39
|
-
/** Test ID for testing */
|
|
40
|
-
testID?: string;
|
|
41
|
-
}
|
|
42
|
-
export declare const AtomicProgress: React.FC<AtomicProgressProps>;
|
|
43
|
-
export default AtomicProgress;
|
|
44
|
-
//# sourceMappingURL=AtomicProgress.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AtomicProgress.d.ts","sourceRoot":"","sources":["../../../src/presentation/atoms/AtomicProgress.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAoB,SAAS,EAAwB,MAAM,cAAc,CAAC;AAOjF,MAAM,WAAW,mBAAmB;IAClC,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,yBAAyB;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yBAAyB;IACzB,KAAK,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,sCAAsC;IACtC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iCAAiC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;IAChC,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA+DxD,CAAC;AAsBF,eAAe,cAAc,CAAC"}
|