@umituz/react-native-design-system 1.5.27 → 1.5.29
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/package.json +1 -1
- package/src/presentation/atoms/AtomicButton.tsx +1 -1
- package/src/presentation/atoms/AtomicInput.tsx +3 -5
- package/dist/AtomicIcon.d.ts +0 -34
- package/dist/index.d.ts +0 -60
- package/dist/presentation/atoms/AtomicAvatar.d.ts +0 -47
- package/dist/presentation/atoms/AtomicAvatarGroup.d.ts +0 -55
- package/dist/presentation/atoms/AtomicBadge.d.ts +0 -41
- package/dist/presentation/atoms/AtomicButton.d.ts +0 -20
- package/dist/presentation/atoms/AtomicCard.d.ts +0 -14
- package/dist/presentation/atoms/AtomicChip.d.ts +0 -52
- package/dist/presentation/atoms/AtomicDatePicker.d.ts +0 -74
- package/dist/presentation/atoms/AtomicDivider.d.ts +0 -44
- package/dist/presentation/atoms/AtomicFab.d.ts +0 -36
- package/dist/presentation/atoms/AtomicFilter.d.ts +0 -36
- package/dist/presentation/atoms/AtomicFormError.d.ts +0 -29
- package/dist/presentation/atoms/AtomicIcon.d.ts +0 -34
- package/dist/presentation/atoms/AtomicImage.d.ts +0 -39
- package/dist/presentation/atoms/AtomicInput.d.ts +0 -70
- package/dist/presentation/atoms/AtomicNumberInput.d.ts +0 -68
- package/dist/presentation/atoms/AtomicPicker.d.ts +0 -51
- package/dist/presentation/atoms/AtomicProgress.d.ts +0 -43
- package/dist/presentation/atoms/AtomicSearchBar.d.ts +0 -18
- package/dist/presentation/atoms/AtomicSort.d.ts +0 -71
- package/dist/presentation/atoms/AtomicSwitch.d.ts +0 -42
- package/dist/presentation/atoms/AtomicText.d.ts +0 -33
- package/dist/presentation/atoms/AtomicTextArea.d.ts +0 -84
- package/dist/presentation/atoms/AtomicTouchable.d.ts +0 -76
- package/dist/presentation/atoms/fab/styles/fabStyles.d.ts +0 -22
- package/dist/presentation/atoms/fab/types/index.d.ts +0 -70
- package/dist/presentation/atoms/filter/styles/filterStyles.d.ts +0 -14
- package/dist/presentation/atoms/filter/types/index.d.ts +0 -75
- package/dist/presentation/atoms/index.d.ts +0 -272
- package/dist/presentation/atoms/picker/styles/pickerStyles.d.ts +0 -84
- package/dist/presentation/atoms/picker/types/index.d.ts +0 -37
- package/dist/presentation/atoms/touchable/styles/touchableStyles.d.ts +0 -30
- package/dist/presentation/atoms/touchable/types/index.d.ts +0 -133
- package/dist/presentation/hooks/useResponsive.d.ts +0 -79
- package/dist/presentation/molecules/AtomicConfirmationModal.d.ts +0 -72
- package/dist/presentation/molecules/EmptyState.d.ts +0 -40
- package/dist/presentation/molecules/FormField.d.ts +0 -21
- package/dist/presentation/molecules/GridContainer.d.ts +0 -39
- package/dist/presentation/molecules/IconContainer.d.ts +0 -28
- package/dist/presentation/molecules/ListItem.d.ts +0 -4
- package/dist/presentation/molecules/ScreenHeader.d.ts +0 -54
- package/dist/presentation/molecules/SearchBar.d.ts +0 -17
- package/dist/presentation/molecules/SectionCard.d.ts +0 -24
- package/dist/presentation/molecules/SectionContainer.d.ts +0 -32
- package/dist/presentation/molecules/SectionHeader.d.ts +0 -36
- package/dist/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.d.ts +0 -49
- package/dist/presentation/molecules/confirmation-modal/types/index.d.ts +0 -85
- package/dist/presentation/molecules/listitem/styles/listItemStyles.d.ts +0 -11
- package/dist/presentation/molecules/listitem/types/index.d.ts +0 -16
- package/dist/presentation/organisms/AppHeader.d.ts +0 -30
- package/dist/presentation/organisms/FormContainer.d.ts +0 -75
- package/dist/presentation/organisms/ScreenLayout.d.ts +0 -83
- package/dist/presentation/tokens/commonStyles.d.ts +0 -121
- package/dist/presentation/utils/platformConstants.d.ts +0 -99
- package/dist/presentation/utils/responsive.d.ts +0 -217
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AtomicImage - Universal Image Component
|
|
3
|
-
*
|
|
4
|
-
* Provides consistent image handling across the app with theme integration
|
|
5
|
-
* Theme: {{THEME_NAME}} ({{CATEGORY}} category)
|
|
6
|
-
*
|
|
7
|
-
* Atomic Design Level: ATOM
|
|
8
|
-
* Purpose: Basic image display with consistent styling
|
|
9
|
-
*
|
|
10
|
-
* Usage:
|
|
11
|
-
* - Profile pictures
|
|
12
|
-
* - Product images
|
|
13
|
-
* - Icons and illustrations
|
|
14
|
-
* - Background images
|
|
15
|
-
*/
|
|
16
|
-
import React from 'react';
|
|
17
|
-
import { ImageProps, ViewStyle } from 'react-native';
|
|
18
|
-
export interface AtomicImageProps extends Omit<ImageProps, 'style'> {
|
|
19
|
-
/** Image source */
|
|
20
|
-
source: ImageProps['source'];
|
|
21
|
-
/** Size variant */
|
|
22
|
-
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
|
|
23
|
-
/** Shape variant */
|
|
24
|
-
shape?: 'square' | 'circle' | 'rounded';
|
|
25
|
-
/** Border radius override */
|
|
26
|
-
borderRadius?: number;
|
|
27
|
-
/** Container style override */
|
|
28
|
-
style?: ViewStyle | ViewStyle[];
|
|
29
|
-
/** Image style override */
|
|
30
|
-
imageStyle?: ImageProps['style'];
|
|
31
|
-
/** Background color */
|
|
32
|
-
backgroundColor?: string;
|
|
33
|
-
/** Border color */
|
|
34
|
-
borderColor?: string;
|
|
35
|
-
/** Border width */
|
|
36
|
-
borderWidth?: number;
|
|
37
|
-
}
|
|
38
|
-
export declare const AtomicImage: React.FC<AtomicImageProps>;
|
|
39
|
-
export default AtomicImage;
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { StyleProp, ViewStyle, TextStyle } from 'react-native';
|
|
3
|
-
import type { AtomicIconName } from './AtomicIcon';
|
|
4
|
-
export type AtomicInputVariant = 'outlined' | 'filled' | 'flat';
|
|
5
|
-
export type AtomicInputState = 'default' | 'error' | 'success' | 'disabled';
|
|
6
|
-
export type AtomicInputSize = 'sm' | 'md' | 'lg';
|
|
7
|
-
export interface AtomicInputProps {
|
|
8
|
-
/** Input label */
|
|
9
|
-
label?: string;
|
|
10
|
-
/** Current input value */
|
|
11
|
-
value?: string;
|
|
12
|
-
/** Value change callback */
|
|
13
|
-
onChangeText?: (text: string) => void;
|
|
14
|
-
/** Input variant (outlined, filled, flat) */
|
|
15
|
-
variant?: AtomicInputVariant;
|
|
16
|
-
/** Input state (default, error, success, disabled) */
|
|
17
|
-
state?: AtomicInputState;
|
|
18
|
-
/** Input size (sm, md, lg) */
|
|
19
|
-
size?: AtomicInputSize;
|
|
20
|
-
/** Placeholder text */
|
|
21
|
-
placeholder?: string;
|
|
22
|
-
/** Helper text below input */
|
|
23
|
-
helperText?: string;
|
|
24
|
-
/** Leading icon (Lucide icon name) */
|
|
25
|
-
leadingIcon?: AtomicIconName;
|
|
26
|
-
/** Trailing icon (Lucide icon name) */
|
|
27
|
-
trailingIcon?: AtomicIconName;
|
|
28
|
-
/** Callback when trailing icon is pressed */
|
|
29
|
-
onTrailingIconPress?: () => void;
|
|
30
|
-
/** Show password toggle for secure inputs */
|
|
31
|
-
showPasswordToggle?: boolean;
|
|
32
|
-
/** Secure text entry (password field) */
|
|
33
|
-
secureTextEntry?: boolean;
|
|
34
|
-
/** Maximum character length */
|
|
35
|
-
maxLength?: number;
|
|
36
|
-
/** Show character counter */
|
|
37
|
-
showCharacterCount?: boolean;
|
|
38
|
-
/** Keyboard type */
|
|
39
|
-
keyboardType?: 'default' | 'email-address' | 'numeric' | 'phone-pad' | 'url' | 'number-pad' | 'decimal-pad';
|
|
40
|
-
/** Auto-capitalize */
|
|
41
|
-
autoCapitalize?: 'none' | 'sentences' | 'words' | 'characters';
|
|
42
|
-
/** Auto-correct */
|
|
43
|
-
autoCorrect?: boolean;
|
|
44
|
-
/** Disabled state */
|
|
45
|
-
disabled?: boolean;
|
|
46
|
-
/** Container style */
|
|
47
|
-
style?: StyleProp<ViewStyle>;
|
|
48
|
-
/** Input text style */
|
|
49
|
-
inputStyle?: StyleProp<TextStyle>;
|
|
50
|
-
/** Test ID for E2E testing */
|
|
51
|
-
testID?: string;
|
|
52
|
-
/** Blur callback */
|
|
53
|
-
onBlur?: () => void;
|
|
54
|
-
/** Focus callback */
|
|
55
|
-
onFocus?: () => void;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* AtomicInput - Pure React Native Text Input
|
|
59
|
-
*
|
|
60
|
-
* Features:
|
|
61
|
-
* - Pure React Native implementation (no Paper dependency)
|
|
62
|
-
* - Lucide icons for password toggle and custom icons
|
|
63
|
-
* - Outlined/filled/flat variants
|
|
64
|
-
* - Error, success, disabled states
|
|
65
|
-
* - Character counter
|
|
66
|
-
* - Responsive sizing
|
|
67
|
-
* - Full accessibility support
|
|
68
|
-
*/
|
|
69
|
-
export declare const AtomicInput: React.FC<AtomicInputProps>;
|
|
70
|
-
export type { AtomicInputProps as InputProps };
|
|
@@ -1,68 +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>;
|
|
@@ -1,51 +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>;
|
|
@@ -1,43 +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;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import type { StyleProp, ViewStyle, TextStyle } from 'react-native';
|
|
3
|
-
export interface AtomicSearchBarProps {
|
|
4
|
-
value: string;
|
|
5
|
-
onChangeText: (text: string) => void;
|
|
6
|
-
placeholder?: string;
|
|
7
|
-
autoFocus?: boolean;
|
|
8
|
-
editable?: boolean;
|
|
9
|
-
onClear?: () => void;
|
|
10
|
-
onFocus?: () => void;
|
|
11
|
-
onBlur?: () => void;
|
|
12
|
-
onSubmitEditing?: () => void;
|
|
13
|
-
style?: StyleProp<ViewStyle>;
|
|
14
|
-
inputStyle?: StyleProp<TextStyle>;
|
|
15
|
-
accessibilityLabel?: string;
|
|
16
|
-
accessibilityHint?: string;
|
|
17
|
-
}
|
|
18
|
-
export declare const AtomicSearchBar: React.FC<AtomicSearchBarProps>;
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import type { StyleProp, ViewStyle } from 'react-native';
|
|
3
|
-
/**
|
|
4
|
-
* Sort option interface
|
|
5
|
-
*/
|
|
6
|
-
export interface SortOption {
|
|
7
|
-
id: string;
|
|
8
|
-
label: string;
|
|
9
|
-
icon?: string;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Sort direction type
|
|
13
|
-
*/
|
|
14
|
-
export type SortDirection = 'asc' | 'desc';
|
|
15
|
-
/**
|
|
16
|
-
* AtomicSort component props
|
|
17
|
-
*/
|
|
18
|
-
export interface AtomicSortProps {
|
|
19
|
-
options: SortOption[];
|
|
20
|
-
selectedId: string | null;
|
|
21
|
-
sortDirection: SortDirection;
|
|
22
|
-
onSortChange: (optionId: string, direction: SortDirection) => void;
|
|
23
|
-
showDirectionToggle?: boolean;
|
|
24
|
-
variant?: 'outlined' | 'filled' | 'soft';
|
|
25
|
-
color?: 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info';
|
|
26
|
-
size?: 'sm' | 'md' | 'lg';
|
|
27
|
-
style?: StyleProp<ViewStyle>;
|
|
28
|
-
testID?: string;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* AtomicSort - Horizontal Sort Chip Component
|
|
32
|
-
*
|
|
33
|
-
* A Material Design 3 compliant sort component using chip selection.
|
|
34
|
-
* Supports single selection with ascending/descending direction toggle.
|
|
35
|
-
*
|
|
36
|
-
* @example
|
|
37
|
-
* ```tsx
|
|
38
|
-
* const [sortBy, setSortBy] = useState<string | null>('name');
|
|
39
|
-
* const [sortDir, setSortDir] = useState<SortDirection>('asc');
|
|
40
|
-
*
|
|
41
|
-
* <AtomicSort
|
|
42
|
-
* options={[
|
|
43
|
-
* { id: 'name', label: 'Name', icon: 'sort-alpha' },
|
|
44
|
-
* { id: 'date', label: 'Date', icon: 'schedule' },
|
|
45
|
-
* { id: 'priority', label: 'Priority', icon: 'flag' },
|
|
46
|
-
* ]}
|
|
47
|
-
* selectedId={sortBy}
|
|
48
|
-
* sortDirection={sortDir}
|
|
49
|
-
* onSortChange={(id, dir) => {
|
|
50
|
-
* setSortBy(id);
|
|
51
|
-
* setSortDir(dir);
|
|
52
|
-
* }}
|
|
53
|
-
* showDirectionToggle={true}
|
|
54
|
-
* />
|
|
55
|
-
* ```
|
|
56
|
-
*
|
|
57
|
-
* Features:
|
|
58
|
-
* - Horizontal scrollable sort chips
|
|
59
|
-
* - Single selection (one active sort at a time)
|
|
60
|
-
* - Direction toggle (click active chip to switch asc/desc)
|
|
61
|
-
* - Visual arrow indicators (↑ asc, ↓ desc)
|
|
62
|
-
* - Theme-aware colors from design tokens
|
|
63
|
-
* - Icon support per sort option
|
|
64
|
-
* - Fully controlled component
|
|
65
|
-
*
|
|
66
|
-
* Behavior:
|
|
67
|
-
* - Click inactive chip → Selects it with ascending direction
|
|
68
|
-
* - Click active chip → Toggles direction (asc ↔ desc)
|
|
69
|
-
* - Visual feedback via filled variant for active sort
|
|
70
|
-
*/
|
|
71
|
-
export declare const AtomicSort: React.FC<AtomicSortProps>;
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AtomicSwitch - Universal Switch Component
|
|
3
|
-
*
|
|
4
|
-
* Provides consistent switch/toggle functionality with theme integration
|
|
5
|
-
* Theme: {{THEME_NAME}} ({{CATEGORY}} category)
|
|
6
|
-
*
|
|
7
|
-
* Atomic Design Level: ATOM
|
|
8
|
-
* Purpose: Basic switch/toggle input
|
|
9
|
-
*
|
|
10
|
-
* Usage:
|
|
11
|
-
* - Settings toggles
|
|
12
|
-
* - Feature enable/disable
|
|
13
|
-
* - Boolean preferences
|
|
14
|
-
* - Form inputs
|
|
15
|
-
*/
|
|
16
|
-
import React from 'react';
|
|
17
|
-
import { SwitchProps, ViewStyle } from 'react-native';
|
|
18
|
-
export interface AtomicSwitchProps extends Omit<SwitchProps, 'style'> {
|
|
19
|
-
/** Switch value */
|
|
20
|
-
value: boolean;
|
|
21
|
-
/** Value change handler */
|
|
22
|
-
onValueChange: (value: boolean) => void;
|
|
23
|
-
/** Size variant */
|
|
24
|
-
size?: 'sm' | 'md' | 'lg';
|
|
25
|
-
/** Color variant */
|
|
26
|
-
variant?: 'primary' | 'secondary' | 'success' | 'warning' | 'error';
|
|
27
|
-
/** Disabled state */
|
|
28
|
-
disabled?: boolean;
|
|
29
|
-
/** Container style override */
|
|
30
|
-
style?: ViewStyle;
|
|
31
|
-
/** Track color override */
|
|
32
|
-
trackColor?: {
|
|
33
|
-
false: string;
|
|
34
|
-
true: string;
|
|
35
|
-
};
|
|
36
|
-
/** Thumb color override */
|
|
37
|
-
thumbColor?: string;
|
|
38
|
-
/** iOS specific props */
|
|
39
|
-
ios_backgroundColor?: string;
|
|
40
|
-
}
|
|
41
|
-
export declare const AtomicSwitch: React.FC<AtomicSwitchProps>;
|
|
42
|
-
export default AtomicSwitch;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { StyleProp, TextStyle } from 'react-native';
|
|
3
|
-
export type TextStyleVariant = 'displayLarge' | 'displayMedium' | 'displaySmall' | 'headlineLarge' | 'headlineMedium' | 'headlineSmall' | 'titleLarge' | 'titleMedium' | 'titleSmall' | 'bodyLarge' | 'bodyMedium' | 'bodySmall' | 'labelLarge' | 'labelMedium' | 'labelSmall';
|
|
4
|
-
/**
|
|
5
|
-
* Material Design 3 Text Color Variants
|
|
6
|
-
*
|
|
7
|
-
* TEXT COLORS (for text on surfaces):
|
|
8
|
-
* - textPrimary, textSecondary, textTertiary: General text colors
|
|
9
|
-
* - onSurface, onBackground: Text on surface/background
|
|
10
|
-
*
|
|
11
|
-
* ON COLORS (for text on colored backgrounds):
|
|
12
|
-
* - onPrimary, onSecondary: Text on primary/secondary colored backgrounds
|
|
13
|
-
* - onSuccess, onError, onWarning, onInfo: Text on semantic colored backgrounds
|
|
14
|
-
*
|
|
15
|
-
* SEMANTIC COLORS (can be used as text colors):
|
|
16
|
-
* - success, error, warning, info: Semantic colors (can be text or background)
|
|
17
|
-
*
|
|
18
|
-
* NOTE: 'primary' and 'secondary' are BACKGROUND colors, not text colors.
|
|
19
|
-
* Use 'onPrimary'/'onSecondary' for text on colored backgrounds, or
|
|
20
|
-
* 'textPrimary'/'textSecondary' for general text.
|
|
21
|
-
*/
|
|
22
|
-
export type ColorVariant = 'textPrimary' | 'textSecondary' | 'textTertiary' | 'textDisabled' | 'textInverse' | 'onSurface' | 'onBackground' | 'onPrimary' | 'onSecondary' | 'onSuccess' | 'onError' | 'onWarning' | 'onInfo' | 'success' | 'error' | 'warning' | 'info' | 'primary' | 'secondary' | 'tertiary' | 'disabled' | 'inverse' | 'surfaceVariant';
|
|
23
|
-
export interface AtomicTextProps {
|
|
24
|
-
children: React.ReactNode;
|
|
25
|
-
type?: TextStyleVariant;
|
|
26
|
-
color?: ColorVariant | string;
|
|
27
|
-
numberOfLines?: number;
|
|
28
|
-
ellipsizeMode?: 'head' | 'middle' | 'tail' | 'clip';
|
|
29
|
-
textAlign?: 'auto' | 'left' | 'right' | 'center' | 'justify';
|
|
30
|
-
style?: StyleProp<TextStyle>;
|
|
31
|
-
testID?: string;
|
|
32
|
-
}
|
|
33
|
-
export declare const AtomicText: React.FC<AtomicTextProps>;
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* AtomicTextArea Component
|
|
3
|
-
*
|
|
4
|
-
* A multiline text input component with pure React Native implementation
|
|
5
|
-
* for longer text entry with consistent styling.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Pure React Native TextInput with multiline
|
|
9
|
-
* - Outlined/filled/flat variants
|
|
10
|
-
* - Error, success, disabled states
|
|
11
|
-
* - Character counter with max length
|
|
12
|
-
* - Helper text for guidance or errors
|
|
13
|
-
* - Configurable rows for height
|
|
14
|
-
* - Theme-aware styling
|
|
15
|
-
* - Full accessibility support
|
|
16
|
-
*
|
|
17
|
-
* Usage:
|
|
18
|
-
* ```tsx
|
|
19
|
-
* const [description, setDescription] = useState('');
|
|
20
|
-
*
|
|
21
|
-
* <AtomicTextArea
|
|
22
|
-
* value={description}
|
|
23
|
-
* onChangeText={setDescription}
|
|
24
|
-
* label="Description"
|
|
25
|
-
* placeholder="Enter description..."
|
|
26
|
-
* maxLength={500}
|
|
27
|
-
* showCharacterCount
|
|
28
|
-
* rows={6}
|
|
29
|
-
* helperText="Provide a detailed description"
|
|
30
|
-
* />
|
|
31
|
-
* ```
|
|
32
|
-
*/
|
|
33
|
-
import React from 'react';
|
|
34
|
-
import { StyleProp, ViewStyle, TextStyle } from 'react-native';
|
|
35
|
-
export type AtomicTextAreaVariant = 'outlined' | 'filled' | 'flat';
|
|
36
|
-
export type AtomicTextAreaState = 'default' | 'error' | 'success' | 'disabled';
|
|
37
|
-
export type AtomicTextAreaSize = 'sm' | 'md' | 'lg';
|
|
38
|
-
export interface AtomicTextAreaProps {
|
|
39
|
-
/** Textarea label */
|
|
40
|
-
label?: string;
|
|
41
|
-
/** Current textarea value */
|
|
42
|
-
value?: string;
|
|
43
|
-
/** Value change callback */
|
|
44
|
-
onChangeText?: (text: string) => void;
|
|
45
|
-
/** Textarea variant (outlined, filled, flat) */
|
|
46
|
-
variant?: AtomicTextAreaVariant;
|
|
47
|
-
/** Textarea state (default, error, success, disabled) */
|
|
48
|
-
state?: AtomicTextAreaState;
|
|
49
|
-
/** Textarea size (sm, md, lg) */
|
|
50
|
-
size?: AtomicTextAreaSize;
|
|
51
|
-
/** Placeholder text */
|
|
52
|
-
placeholder?: string;
|
|
53
|
-
/** Helper text below textarea */
|
|
54
|
-
helperText?: string;
|
|
55
|
-
/** Maximum character length */
|
|
56
|
-
maxLength?: number;
|
|
57
|
-
/** Show character counter */
|
|
58
|
-
showCharacterCount?: boolean;
|
|
59
|
-
/** Number of visible text rows */
|
|
60
|
-
rows?: number;
|
|
61
|
-
/** Minimum height in pixels */
|
|
62
|
-
minHeight?: number;
|
|
63
|
-
/** Auto-capitalize */
|
|
64
|
-
autoCapitalize?: 'none' | 'sentences' | 'words' | 'characters';
|
|
65
|
-
/** Auto-correct */
|
|
66
|
-
autoCorrect?: boolean;
|
|
67
|
-
/** Disabled state */
|
|
68
|
-
disabled?: boolean;
|
|
69
|
-
/** Container style */
|
|
70
|
-
style?: StyleProp<ViewStyle>;
|
|
71
|
-
/** Input text style */
|
|
72
|
-
inputStyle?: StyleProp<TextStyle>;
|
|
73
|
-
/** Test ID for E2E testing */
|
|
74
|
-
testID?: string;
|
|
75
|
-
/** Blur callback */
|
|
76
|
-
onBlur?: () => void;
|
|
77
|
-
/** Focus callback */
|
|
78
|
-
onFocus?: () => void;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* AtomicTextArea - Pure React Native Multiline Text Input
|
|
82
|
-
*/
|
|
83
|
-
export declare const AtomicTextArea: React.FC<AtomicTextAreaProps>;
|
|
84
|
-
export type { AtomicTextAreaProps as TextAreaProps };
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { AtomicTouchableProps, TouchableFeedback, FeedbackStrength } from './touchable/types';
|
|
3
|
-
export type { AtomicTouchableProps, TouchableFeedback, FeedbackStrength, HitSlop, } from './touchable/types';
|
|
4
|
-
export { getOpacityValue, getTouchableContainerStyle, getDisabledStyle, normalizeHitSlop, } from './touchable/styles/touchableStyles';
|
|
5
|
-
/**
|
|
6
|
-
* AtomicTouchable - Unified Touchable Component
|
|
7
|
-
*
|
|
8
|
-
* A modern, accessible touchable wrapper using React Native's Pressable API.
|
|
9
|
-
* Provides consistent behavior across iOS, Android, and Web.
|
|
10
|
-
*
|
|
11
|
-
* Features:
|
|
12
|
-
* - Multiple feedback variants (opacity, highlight, ripple, none)
|
|
13
|
-
* - Configurable feedback strength (subtle, normal, strong)
|
|
14
|
-
* - Disabled state with visual feedback
|
|
15
|
-
* - Hit slop customization for small touch targets
|
|
16
|
-
* - Minimum 48x48 touch target (iOS HIG compliance)
|
|
17
|
-
* - Full accessibility support
|
|
18
|
-
* - Theme-aware ripple colors
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* ```tsx
|
|
22
|
-
* // Basic usage with opacity feedback
|
|
23
|
-
* <AtomicTouchable onPress={handlePress}>
|
|
24
|
-
* <AtomicText>Press Me</AtomicText>
|
|
25
|
-
* </AtomicTouchable>
|
|
26
|
-
*
|
|
27
|
-
* // With custom hit slop (extends touch area)
|
|
28
|
-
* <AtomicTouchable
|
|
29
|
-
* onPress={handlePress}
|
|
30
|
-
* hitSlop={8}
|
|
31
|
-
* feedback="ripple"
|
|
32
|
-
* >
|
|
33
|
-
* <AtomicIcon name="X" size="sm" />
|
|
34
|
-
* </AtomicTouchable>
|
|
35
|
-
* ```
|
|
36
|
-
*/
|
|
37
|
-
export declare const AtomicTouchable: React.FC<AtomicTouchableProps>;
|
|
38
|
-
/**
|
|
39
|
-
* Preset touchable configurations for common use cases
|
|
40
|
-
*/
|
|
41
|
-
export declare const TouchablePresets: {
|
|
42
|
-
/**
|
|
43
|
-
* iOS-style opacity feedback (default)
|
|
44
|
-
*/
|
|
45
|
-
ios: {
|
|
46
|
-
feedback: TouchableFeedback;
|
|
47
|
-
strength: FeedbackStrength;
|
|
48
|
-
};
|
|
49
|
-
/**
|
|
50
|
-
* Android-style ripple feedback
|
|
51
|
-
*/
|
|
52
|
-
android: {
|
|
53
|
-
feedback: TouchableFeedback;
|
|
54
|
-
strength: FeedbackStrength;
|
|
55
|
-
};
|
|
56
|
-
/**
|
|
57
|
-
* Subtle feedback for secondary actions
|
|
58
|
-
*/
|
|
59
|
-
subtle: {
|
|
60
|
-
feedback: TouchableFeedback;
|
|
61
|
-
strength: FeedbackStrength;
|
|
62
|
-
};
|
|
63
|
-
/**
|
|
64
|
-
* Strong feedback for primary actions
|
|
65
|
-
*/
|
|
66
|
-
strong: {
|
|
67
|
-
feedback: TouchableFeedback;
|
|
68
|
-
strength: FeedbackStrength;
|
|
69
|
-
};
|
|
70
|
-
/**
|
|
71
|
-
* No visual feedback (use sparingly)
|
|
72
|
-
*/
|
|
73
|
-
none: {
|
|
74
|
-
feedback: TouchableFeedback;
|
|
75
|
-
};
|
|
76
|
-
};
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { ViewStyle } from 'react-native';
|
|
2
|
-
import { FabVariant, FabSize, FabVariantConfig, FabSizeConfig } from '../types';
|
|
3
|
-
import type { DesignTokens } from '@umituz/react-native-theme';
|
|
4
|
-
/**
|
|
5
|
-
* Material Design 3 FAB size configurations
|
|
6
|
-
*/
|
|
7
|
-
export declare const FAB_SIZES: Record<FabSize, FabSizeConfig>;
|
|
8
|
-
/**
|
|
9
|
-
* Get FAB variant styles based on design tokens
|
|
10
|
-
* Note: Icon colors are handled via customColor in AtomicIcon
|
|
11
|
-
*/
|
|
12
|
-
export declare const getFabVariants: (tokens: DesignTokens) => Record<FabVariant, FabVariantConfig>;
|
|
13
|
-
/**
|
|
14
|
-
* Get icon size based on FAB size
|
|
15
|
-
* Returns AtomicIconSize type ('sm', 'md', 'lg')
|
|
16
|
-
*/
|
|
17
|
-
export declare const getFabIconSize: (size: FabSize) => "sm" | "md" | "lg";
|
|
18
|
-
/**
|
|
19
|
-
* Get FAB border for depth (shadows removed per CLAUDE.md)
|
|
20
|
-
* Subtle border provides visual elevation without shadow issues
|
|
21
|
-
*/
|
|
22
|
-
export declare const getFabBorder: (tokens: DesignTokens) => ViewStyle;
|