@umituz/react-native-design-system 1.5.24 → 1.5.26

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 (57) hide show
  1. package/dist/AtomicIcon.d.ts +34 -0
  2. package/dist/index.d.ts +60 -0
  3. package/dist/presentation/atoms/AtomicAvatar.d.ts +47 -0
  4. package/dist/presentation/atoms/AtomicAvatarGroup.d.ts +55 -0
  5. package/dist/presentation/atoms/AtomicBadge.d.ts +41 -0
  6. package/dist/presentation/atoms/AtomicButton.d.ts +20 -0
  7. package/dist/presentation/atoms/AtomicCard.d.ts +14 -0
  8. package/dist/presentation/atoms/AtomicChip.d.ts +52 -0
  9. package/dist/presentation/atoms/AtomicDatePicker.d.ts +74 -0
  10. package/dist/presentation/atoms/AtomicDivider.d.ts +44 -0
  11. package/dist/presentation/atoms/AtomicFab.d.ts +36 -0
  12. package/dist/presentation/atoms/AtomicFilter.d.ts +36 -0
  13. package/dist/presentation/atoms/AtomicFormError.d.ts +29 -0
  14. package/dist/presentation/atoms/AtomicIcon.d.ts +34 -0
  15. package/dist/presentation/atoms/AtomicImage.d.ts +39 -0
  16. package/dist/presentation/atoms/AtomicInput.d.ts +70 -0
  17. package/dist/presentation/atoms/AtomicNumberInput.d.ts +68 -0
  18. package/dist/presentation/atoms/AtomicPicker.d.ts +51 -0
  19. package/dist/presentation/atoms/AtomicProgress.d.ts +43 -0
  20. package/dist/presentation/atoms/AtomicSearchBar.d.ts +18 -0
  21. package/dist/presentation/atoms/AtomicSort.d.ts +71 -0
  22. package/dist/presentation/atoms/AtomicSwitch.d.ts +42 -0
  23. package/dist/presentation/atoms/AtomicText.d.ts +33 -0
  24. package/dist/presentation/atoms/AtomicTextArea.d.ts +84 -0
  25. package/dist/presentation/atoms/AtomicTouchable.d.ts +76 -0
  26. package/dist/presentation/atoms/fab/styles/fabStyles.d.ts +22 -0
  27. package/dist/presentation/atoms/fab/types/index.d.ts +70 -0
  28. package/dist/presentation/atoms/filter/styles/filterStyles.d.ts +14 -0
  29. package/dist/presentation/atoms/filter/types/index.d.ts +75 -0
  30. package/dist/presentation/atoms/index.d.ts +272 -0
  31. package/dist/presentation/atoms/picker/styles/pickerStyles.d.ts +84 -0
  32. package/dist/presentation/atoms/picker/types/index.d.ts +37 -0
  33. package/dist/presentation/atoms/touchable/styles/touchableStyles.d.ts +30 -0
  34. package/dist/presentation/atoms/touchable/types/index.d.ts +133 -0
  35. package/dist/presentation/hooks/useResponsive.d.ts +79 -0
  36. package/dist/presentation/molecules/AtomicConfirmationModal.d.ts +72 -0
  37. package/dist/presentation/molecules/EmptyState.d.ts +40 -0
  38. package/dist/presentation/molecules/FormField.d.ts +21 -0
  39. package/dist/presentation/molecules/GridContainer.d.ts +39 -0
  40. package/dist/presentation/molecules/IconContainer.d.ts +28 -0
  41. package/dist/presentation/molecules/ListItem.d.ts +4 -0
  42. package/dist/presentation/molecules/ScreenHeader.d.ts +54 -0
  43. package/dist/presentation/molecules/SearchBar.d.ts +17 -0
  44. package/dist/presentation/molecules/SectionCard.d.ts +24 -0
  45. package/dist/presentation/molecules/SectionContainer.d.ts +32 -0
  46. package/dist/presentation/molecules/SectionHeader.d.ts +36 -0
  47. package/dist/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.d.ts +49 -0
  48. package/dist/presentation/molecules/confirmation-modal/types/index.d.ts +85 -0
  49. package/dist/presentation/molecules/listitem/styles/listItemStyles.d.ts +11 -0
  50. package/dist/presentation/molecules/listitem/types/index.d.ts +16 -0
  51. package/dist/presentation/organisms/AppHeader.d.ts +30 -0
  52. package/dist/presentation/organisms/FormContainer.d.ts +75 -0
  53. package/dist/presentation/organisms/ScreenLayout.d.ts +83 -0
  54. package/dist/presentation/tokens/commonStyles.d.ts +121 -0
  55. package/dist/presentation/utils/platformConstants.d.ts +99 -0
  56. package/dist/presentation/utils/responsive.d.ts +217 -0
  57. package/package.json +4 -3
@@ -0,0 +1,70 @@
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 };
@@ -0,0 +1,68 @@
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>;
@@ -0,0 +1,51 @@
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>;
@@ -0,0 +1,43 @@
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;
@@ -0,0 +1,18 @@
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>;
@@ -0,0 +1,71 @@
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>;
@@ -0,0 +1,42 @@
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;
@@ -0,0 +1,33 @@
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>;
@@ -0,0 +1,84 @@
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 };
@@ -0,0 +1,76 @@
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
+ };
@@ -0,0 +1,22 @@
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;
@@ -0,0 +1,70 @@
1
+ import { StyleProp, ViewStyle } from 'react-native';
2
+ /**
3
+ * FAB (Floating Action Button) size variants
4
+ * Based on Material Design 3 standards
5
+ */
6
+ export type FabSize = 'sm' | 'md' | 'lg';
7
+ /**
8
+ * FAB variant types
9
+ * - primary: Main action (uses primary color)
10
+ * - secondary: Secondary action (uses secondary color)
11
+ * - surface: Neutral action (uses surface color with border)
12
+ */
13
+ export type FabVariant = 'primary' | 'secondary' | 'surface';
14
+ /**
15
+ * FAB configuration for variant styling
16
+ */
17
+ export interface FabVariantConfig {
18
+ backgroundColor: string;
19
+ iconColor: string;
20
+ }
21
+ /**
22
+ * FAB configuration for size styling
23
+ */
24
+ export interface FabSizeConfig {
25
+ width: number;
26
+ height: number;
27
+ borderRadius: number;
28
+ }
29
+ /**
30
+ * AtomicFab component props
31
+ */
32
+ export interface AtomicFabProps {
33
+ /**
34
+ * Icon name to display (required)
35
+ * Any MaterialIcons name (see https://fonts.google.com/icons)
36
+ * Examples: 'add', 'edit', 'camera', etc.
37
+ */
38
+ icon: string;
39
+ /**
40
+ * Callback when FAB is pressed
41
+ */
42
+ onPress: () => void;
43
+ /**
44
+ * Visual variant of the FAB
45
+ * @default 'primary'
46
+ */
47
+ variant?: FabVariant;
48
+ /**
49
+ * Size of the FAB
50
+ * @default 'md'
51
+ */
52
+ size?: FabSize;
53
+ /**
54
+ * Whether the FAB is disabled
55
+ * @default false
56
+ */
57
+ disabled?: boolean;
58
+ /**
59
+ * Custom style for the FAB container
60
+ */
61
+ style?: StyleProp<ViewStyle>;
62
+ /**
63
+ * Test ID for testing
64
+ */
65
+ testID?: string;
66
+ /**
67
+ * Accessibility label
68
+ */
69
+ accessibilityLabel?: string;
70
+ }
@@ -0,0 +1,14 @@
1
+ import { ViewStyle } from 'react-native';
2
+ /**
3
+ * Filter container styles
4
+ * Horizontal scrollable filter chip list
5
+ */
6
+ export declare const getFilterContainerStyle: () => ViewStyle;
7
+ /**
8
+ * Clear all button container styles
9
+ */
10
+ export declare const getClearAllContainerStyle: () => ViewStyle;
11
+ /**
12
+ * ScrollView content container style
13
+ */
14
+ export declare const getScrollContentContainerStyle: () => ViewStyle;