@umituz/react-native-design-system 1.5.23 → 1.5.25

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 (56) hide show
  1. package/dist/index.d.ts +60 -0
  2. package/dist/presentation/atoms/AtomicAvatar.d.ts +47 -0
  3. package/dist/presentation/atoms/AtomicAvatarGroup.d.ts +55 -0
  4. package/dist/presentation/atoms/AtomicBadge.d.ts +41 -0
  5. package/dist/presentation/atoms/AtomicButton.d.ts +20 -0
  6. package/dist/presentation/atoms/AtomicCard.d.ts +14 -0
  7. package/dist/presentation/atoms/AtomicChip.d.ts +52 -0
  8. package/dist/presentation/atoms/AtomicDatePicker.d.ts +74 -0
  9. package/dist/presentation/atoms/AtomicDivider.d.ts +44 -0
  10. package/dist/presentation/atoms/AtomicFab.d.ts +36 -0
  11. package/dist/presentation/atoms/AtomicFilter.d.ts +36 -0
  12. package/dist/presentation/atoms/AtomicFormError.d.ts +29 -0
  13. package/dist/presentation/atoms/AtomicIcon.d.ts +34 -0
  14. package/dist/presentation/atoms/AtomicImage.d.ts +39 -0
  15. package/dist/presentation/atoms/AtomicInput.d.ts +70 -0
  16. package/dist/presentation/atoms/AtomicNumberInput.d.ts +68 -0
  17. package/dist/presentation/atoms/AtomicPicker.d.ts +51 -0
  18. package/dist/presentation/atoms/AtomicProgress.d.ts +43 -0
  19. package/dist/presentation/atoms/AtomicSearchBar.d.ts +18 -0
  20. package/dist/presentation/atoms/AtomicSort.d.ts +71 -0
  21. package/dist/presentation/atoms/AtomicSwitch.d.ts +42 -0
  22. package/dist/presentation/atoms/AtomicText.d.ts +33 -0
  23. package/dist/presentation/atoms/AtomicTextArea.d.ts +84 -0
  24. package/dist/presentation/atoms/AtomicTouchable.d.ts +76 -0
  25. package/dist/presentation/atoms/fab/styles/fabStyles.d.ts +22 -0
  26. package/dist/presentation/atoms/fab/types/index.d.ts +70 -0
  27. package/dist/presentation/atoms/filter/styles/filterStyles.d.ts +14 -0
  28. package/dist/presentation/atoms/filter/types/index.d.ts +75 -0
  29. package/dist/presentation/atoms/index.d.ts +272 -0
  30. package/dist/presentation/atoms/picker/styles/pickerStyles.d.ts +84 -0
  31. package/dist/presentation/atoms/picker/types/index.d.ts +37 -0
  32. package/dist/presentation/atoms/touchable/styles/touchableStyles.d.ts +30 -0
  33. package/dist/presentation/atoms/touchable/types/index.d.ts +133 -0
  34. package/dist/presentation/hooks/useResponsive.d.ts +79 -0
  35. package/dist/presentation/molecules/AtomicConfirmationModal.d.ts +72 -0
  36. package/dist/presentation/molecules/EmptyState.d.ts +40 -0
  37. package/dist/presentation/molecules/FormField.d.ts +21 -0
  38. package/dist/presentation/molecules/GridContainer.d.ts +39 -0
  39. package/dist/presentation/molecules/IconContainer.d.ts +28 -0
  40. package/dist/presentation/molecules/ListItem.d.ts +4 -0
  41. package/dist/presentation/molecules/ScreenHeader.d.ts +54 -0
  42. package/dist/presentation/molecules/SearchBar.d.ts +17 -0
  43. package/dist/presentation/molecules/SectionCard.d.ts +24 -0
  44. package/dist/presentation/molecules/SectionContainer.d.ts +32 -0
  45. package/dist/presentation/molecules/SectionHeader.d.ts +36 -0
  46. package/dist/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.d.ts +49 -0
  47. package/dist/presentation/molecules/confirmation-modal/types/index.d.ts +85 -0
  48. package/dist/presentation/molecules/listitem/styles/listItemStyles.d.ts +11 -0
  49. package/dist/presentation/molecules/listitem/types/index.d.ts +16 -0
  50. package/dist/presentation/organisms/AppHeader.d.ts +30 -0
  51. package/dist/presentation/organisms/FormContainer.d.ts +75 -0
  52. package/dist/presentation/organisms/ScreenLayout.d.ts +83 -0
  53. package/dist/presentation/tokens/commonStyles.d.ts +121 -0
  54. package/dist/presentation/utils/platformConstants.d.ts +99 -0
  55. package/dist/presentation/utils/responsive.d.ts +217 -0
  56. package/package.json +5 -4
@@ -0,0 +1,72 @@
1
+ /**
2
+ * AtomicConfirmationModal - Universal Confirmation Dialog
3
+ *
4
+ * A reusable confirmation modal for destructive and important actions.
5
+ * Follows Material Design 3 dialog patterns and accessibility guidelines.
6
+ *
7
+ * Features:
8
+ * - Multiple variants (default, destructive, warning, success)
9
+ * - Configurable text and icons
10
+ * - Backdrop dismissal
11
+ * - Full keyboard and screen reader support
12
+ * - Theme-aware styling
13
+ *
14
+ * @example
15
+ * ```tsx
16
+ * // Destructive confirmation (delete)
17
+ * <AtomicConfirmationModal
18
+ * visible={showDeleteModal}
19
+ * variant="destructive"
20
+ * title="Delete Item?"
21
+ * message="This action cannot be undone. All data will be permanently deleted."
22
+ * confirmText="Delete"
23
+ * cancelText="Cancel"
24
+ * onConfirm={handleDelete}
25
+ * onCancel={() => setShowDeleteModal(false)}
26
+ * />
27
+ *
28
+ * // Generic confirmation
29
+ * <AtomicConfirmationModal
30
+ * visible={showConfirmModal}
31
+ * variant="default"
32
+ * title="Confirm Action"
33
+ * message="Are you sure you want to proceed?"
34
+ * onConfirm={handleConfirm}
35
+ * onCancel={() => setShowConfirmModal(false)}
36
+ * />
37
+ * ```
38
+ */
39
+ import React from 'react';
40
+ import { AtomicConfirmationModalProps, ConfirmationModalVariant } from './confirmation-modal/types';
41
+ export type { AtomicConfirmationModalProps };
42
+ export type { ConfirmationModalVariant };
43
+ export declare const AtomicConfirmationModal: React.FC<AtomicConfirmationModalProps>;
44
+ /**
45
+ * Hook for managing confirmation modal state
46
+ *
47
+ * @example
48
+ * ```tsx
49
+ * const { showConfirmation, confirmationProps } = useConfirmationModal({
50
+ * title: 'Delete Item?',
51
+ * message: 'This cannot be undone',
52
+ * variant: 'destructive',
53
+ * onConfirm: handleDelete,
54
+ * });
55
+ *
56
+ * // In JSX
57
+ * <AtomicConfirmationModal {...confirmationProps} />
58
+ * <Button onPress={showConfirmation}>Delete</Button>
59
+ * ```
60
+ */
61
+ export declare const useConfirmationModal: (config: {
62
+ title: string;
63
+ message: string;
64
+ variant?: ConfirmationModalVariant;
65
+ confirmText: string;
66
+ cancelText: string;
67
+ onConfirm: () => void;
68
+ }) => {
69
+ showConfirmation: () => any;
70
+ hideConfirmation: () => any;
71
+ confirmationProps: AtomicConfirmationModalProps;
72
+ };
@@ -0,0 +1,40 @@
1
+ /**
2
+ * EmptyState Molecule - Universal Empty State Display
3
+ *
4
+ * Displays icon, title, and subtitle for empty data scenarios
5
+ * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
6
+ *
7
+ * Atomic Design Level: MOLECULE
8
+ * Composition: Icon + AtomicText + Layout
9
+ *
10
+ * Usage:
11
+ * - Empty lists
12
+ * - Empty grids
13
+ * - No search results
14
+ * - No data states
15
+ */
16
+ import React from 'react';
17
+ import { ViewStyle, TextStyle } from 'react-native';
18
+ export interface EmptyStateProps {
19
+ /** Material icon name */
20
+ icon: string;
21
+ /** Icon size (default: xl) */
22
+ iconSize?: 'sm' | 'md' | 'lg' | 'xl' | 'xxl';
23
+ /** Main heading text */
24
+ title: string;
25
+ /** Descriptive subtitle text */
26
+ subtitle?: string;
27
+ /** Custom icon color (default: textTertiary) */
28
+ iconColor?: string;
29
+ /** Custom title color (default: textPrimary) */
30
+ titleColor?: string;
31
+ /** Custom subtitle color (default: textSecondary) */
32
+ subtitleColor?: string;
33
+ /** Container style override */
34
+ style?: ViewStyle;
35
+ /** Title style override */
36
+ titleStyle?: TextStyle;
37
+ /** Subtitle style override */
38
+ subtitleStyle?: TextStyle;
39
+ }
40
+ export declare const EmptyState: React.FC<EmptyStateProps>;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * FormField Molecule - Complete Form Input with Label and Error
3
+ *
4
+ * Combines AtomicText (label/error) + AtomicInput (field)
5
+ * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
6
+ *
7
+ * Atomic Design Level: MOLECULE
8
+ * Composition: AtomicText + AtomicInput
9
+ */
10
+ import React from 'react';
11
+ import { ViewStyle } from 'react-native';
12
+ import { AtomicInputProps } from '../atoms/AtomicInput';
13
+ export interface FormFieldProps extends Omit<AtomicInputProps, 'state' | 'label'> {
14
+ label?: string;
15
+ error?: string;
16
+ helperText?: string;
17
+ required?: boolean;
18
+ containerStyle?: ViewStyle;
19
+ style?: ViewStyle;
20
+ }
21
+ export declare const FormField: React.FC<FormFieldProps>;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * GridContainer Molecule - Responsive Grid Layout
3
+ *
4
+ * Provides flexible grid layout with configurable columns and gap
5
+ * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
6
+ *
7
+ * Atomic Design Level: MOLECULE
8
+ * Composition: View + Responsive Layout
9
+ *
10
+ * Usage:
11
+ * - Stats grids (2 columns)
12
+ * - Action grids (2 columns)
13
+ * - Product grids (2-3 columns)
14
+ * - Gallery grids (3-4 columns)
15
+ */
16
+ import React from 'react';
17
+ import { ViewStyle } from 'react-native';
18
+ export interface GridContainerProps {
19
+ /** Number of columns (default: 2) */
20
+ columns?: 2 | 3 | 4;
21
+ /** Gap between items in pixels (default: 8) */
22
+ gap?: number;
23
+ /** Container style override */
24
+ style?: ViewStyle;
25
+ /** Grid items to render */
26
+ children: React.ReactNode;
27
+ }
28
+ export interface GridItemProps {
29
+ /** Item content */
30
+ children: React.ReactNode;
31
+ /** Item style override */
32
+ style?: ViewStyle;
33
+ }
34
+ declare const GridContainerComponent: React.FC<GridContainerProps>;
35
+ export declare const GridItem: React.FC<GridItemProps>;
36
+ export declare const GridContainer: typeof GridContainerComponent & {
37
+ Item: typeof GridItem;
38
+ };
39
+ export {};
@@ -0,0 +1,28 @@
1
+ /**
2
+ * IconContainer Molecule Component
3
+ *
4
+ * Standardized icon container with consistent sizing and styling.
5
+ * Used throughout app for icon displays in lists, cards, and settings.
6
+ *
7
+ * Features:
8
+ * - Consistent sizing system
9
+ * - Optional background circle
10
+ * - Optional gradient background
11
+ * - Theme-aware colors
12
+ * - Accessibility support
13
+ *
14
+ * Atomic Design: Molecule (View + Icon)
15
+ */
16
+ import React from 'react';
17
+ interface IconContainerProps {
18
+ icon: React.ReactNode;
19
+ size?: 'sm' | 'md' | 'lg' | 'xl';
20
+ backgroundColor?: string;
21
+ gradient?: string[];
22
+ withBorder?: boolean;
23
+ borderColor?: string;
24
+ style?: object;
25
+ testID?: string;
26
+ }
27
+ export declare const IconContainer: React.FC<IconContainerProps>;
28
+ export {};
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { ListItemProps } from './listitem/types';
3
+ export type { ListItemProps };
4
+ export declare const ListItem: React.FC<ListItemProps>;
@@ -0,0 +1,54 @@
1
+ /**
2
+ * ScreenHeader Component - {{APP_NAME}}
3
+ *
4
+ * Reusable screen header with consistent back button placement
5
+ * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
6
+ *
7
+ * Features:
8
+ * - Top-left back button (arrow-back icon)
9
+ * - Centered title text
10
+ * - Optional right action button
11
+ * - Consistent spacing and layout
12
+ * - Works with all 100+ generated apps
13
+ *
14
+ * CRITICAL: Back button MUST ALWAYS be top-left (never bottom, never center)
15
+ */
16
+ import React from 'react';
17
+ import { ViewStyle } from 'react-native';
18
+ export interface ScreenHeaderProps {
19
+ /** Screen title (centered) */
20
+ title: string;
21
+ /** Optional right action button */
22
+ rightAction?: React.ReactNode;
23
+ /** Custom back button action (default: navigation.goBack()) */
24
+ onBackPress?: () => void;
25
+ /** Hide back button (rare cases only) */
26
+ hideBackButton?: boolean;
27
+ /** Additional header style */
28
+ style?: ViewStyle;
29
+ /** Test ID for E2E testing */
30
+ testID?: string;
31
+ }
32
+ /**
33
+ * ScreenHeader Component
34
+ *
35
+ * @example
36
+ * // Basic usage (most common)
37
+ * <ScreenHeader title="Settings" />
38
+ *
39
+ * @example
40
+ * // With right action
41
+ * <ScreenHeader
42
+ * title="Edit Profile"
43
+ * rightAction={<TouchableOpacity onPress={handleSave}><Text>Save</Text></TouchableOpacity>}
44
+ * />
45
+ *
46
+ * @example
47
+ * // Custom back action
48
+ * <ScreenHeader
49
+ * title="Unsaved Changes"
50
+ * onBackPress={handleUnsavedChanges}
51
+ * />
52
+ */
53
+ export declare const ScreenHeader: React.FC<ScreenHeaderProps>;
54
+ export default ScreenHeader;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * SearchBar Molecule - Search Input with Icon and Clear Button
3
+ *
4
+ * Combines AtomicInput + AtomicIcon + AtomicButton
5
+ * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
6
+ *
7
+ * Atomic Design Level: MOLECULE
8
+ * Composition: AtomicInput + AtomicIcon + TouchableOpacity
9
+ */
10
+ import React from 'react';
11
+ import { ViewStyle } from 'react-native';
12
+ import { AtomicInputProps } from '../atoms/AtomicInput';
13
+ export interface SearchBarProps extends Omit<AtomicInputProps, 'leftIcon' | 'rightIcon'> {
14
+ onClear?: () => void;
15
+ containerStyle?: ViewStyle;
16
+ }
17
+ export declare const SearchBar: React.FC<SearchBarProps>;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * SectionCard Molecule Component
3
+ *
4
+ * Reusable section card with title and content area.
5
+ * Used throughout settings screens for consistent grouping.
6
+ *
7
+ * Features:
8
+ * - Automatic theme-aware styling
9
+ * - Uppercase section titles with proper spacing
10
+ * - Built on AtomicCard for consistency
11
+ * - Flexible content area
12
+ *
13
+ * Atomic Design: Molecule (Card + Text)
14
+ */
15
+ import React from 'react';
16
+ interface SectionCardProps {
17
+ title: string;
18
+ children: React.ReactNode;
19
+ style?: object;
20
+ contentStyle?: object;
21
+ testID?: string;
22
+ }
23
+ export declare const SectionCard: React.FC<SectionCardProps>;
24
+ export {};
@@ -0,0 +1,32 @@
1
+ /**
2
+ * SectionContainer Molecule - Universal Section Wrapper
3
+ *
4
+ * Provides consistent section layout with optional title
5
+ * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
6
+ *
7
+ * Atomic Design Level: MOLECULE
8
+ * Composition: View + AtomicText + Layout
9
+ *
10
+ * Usage:
11
+ * - Home screen sections
12
+ * - Dashboard sections
13
+ * - Settings groups
14
+ * - Content sections
15
+ */
16
+ import React from 'react';
17
+ import { ViewStyle, TextStyle } from 'react-native';
18
+ export interface SectionContainerProps {
19
+ /** Section title (optional) */
20
+ title?: string;
21
+ /** Section title color (default: textPrimary) */
22
+ titleColor?: string;
23
+ /** Section title style override */
24
+ titleStyle?: TextStyle;
25
+ /** Container style override */
26
+ style?: ViewStyle;
27
+ /** Content to render inside section */
28
+ children: React.ReactNode;
29
+ /** Right action element (e.g., "See All" link) */
30
+ rightAction?: React.ReactNode;
31
+ }
32
+ export declare const SectionContainer: React.FC<SectionContainerProps>;
@@ -0,0 +1,36 @@
1
+ /**
2
+ * SectionHeader Molecule - Universal Section Header
3
+ *
4
+ * Displays section title with optional subtitle
5
+ * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
6
+ *
7
+ * Atomic Design Level: MOLECULE
8
+ * Composition: AtomicText + Layout
9
+ *
10
+ * Usage:
11
+ * - List headers
12
+ * - Grid headers
13
+ * - Section dividers
14
+ * - Screen headers
15
+ */
16
+ import React from 'react';
17
+ import { ViewStyle, TextStyle } from 'react-native';
18
+ export interface SectionHeaderProps {
19
+ /** Main heading text */
20
+ title: string;
21
+ /** Optional subtitle text */
22
+ subtitle?: string;
23
+ /** Custom title color (default: textPrimary) */
24
+ titleColor?: string;
25
+ /** Custom subtitle color (default: textSecondary) */
26
+ subtitleColor?: string;
27
+ /** Container style override */
28
+ style?: ViewStyle;
29
+ /** Title style override */
30
+ titleStyle?: TextStyle;
31
+ /** Subtitle style override */
32
+ subtitleStyle?: TextStyle;
33
+ /** Right action element (e.g., button, icon) */
34
+ rightAction?: React.ReactNode;
35
+ }
36
+ export declare const SectionHeader: React.FC<SectionHeaderProps>;
@@ -0,0 +1,49 @@
1
+ /**
2
+ * AtomicConfirmationModal Style Utilities
3
+ *
4
+ * Styling functions for confirmation modal component
5
+ */
6
+ import { ViewStyle } from 'react-native';
7
+ import { ConfirmationModalVariant, ConfirmationModalVariantConfig } from '../types';
8
+ import type { DesignTokens } from '@umituz/react-native-theme';
9
+ /**
10
+ * Get variant configuration (icon and color only)
11
+ * Note: Confirm text is handled in component with translations
12
+ */
13
+ export declare const getVariantConfig: (variant: ConfirmationModalVariant, tokens: DesignTokens) => Omit<ConfirmationModalVariantConfig, "confirmText">;
14
+ /**
15
+ * Get modal overlay style
16
+ */
17
+ export declare const getModalOverlayStyle: (tokens: DesignTokens) => ViewStyle;
18
+ /**
19
+ * Get backdrop style (invisible layer for dismissing)
20
+ */
21
+ export declare const getBackdropStyle: () => ViewStyle;
22
+ /**
23
+ * Get modal container style
24
+ */
25
+ export declare const getModalContainerStyle: (tokens: DesignTokens) => ViewStyle;
26
+ /**
27
+ * Get icon container style
28
+ */
29
+ export declare const getIconContainerStyle: (tokens: DesignTokens) => ViewStyle;
30
+ /**
31
+ * Get title container style
32
+ */
33
+ export declare const getTitleContainerStyle: (tokens: DesignTokens) => ViewStyle;
34
+ /**
35
+ * Get message container style
36
+ */
37
+ export declare const getMessageContainerStyle: (tokens: DesignTokens) => ViewStyle;
38
+ /**
39
+ * Get button container style
40
+ */
41
+ export declare const getButtonContainerStyle: (tokens: DesignTokens) => ViewStyle;
42
+ /**
43
+ * Get button style
44
+ */
45
+ export declare const getButtonStyle: () => ViewStyle;
46
+ /**
47
+ * Get confirm button variant based on modal variant
48
+ */
49
+ export declare const getConfirmButtonVariant: (variant: ConfirmationModalVariant) => "primary" | "secondary" | "tertiary" | "outline" | "ghost";
@@ -0,0 +1,85 @@
1
+ /**
2
+ * AtomicConfirmationModal Type Definitions
3
+ *
4
+ * Type-safe interfaces for confirmation modal component
5
+ */
6
+ import { StyleProp, ViewStyle } from 'react-native';
7
+ import type { AtomicIconColor } from '../../../atoms/AtomicIcon';
8
+ /**
9
+ * Confirmation modal variant
10
+ * Determines the visual style and default behavior
11
+ */
12
+ export type ConfirmationModalVariant = 'default' | 'destructive' | 'warning' | 'success';
13
+ /**
14
+ * Props for AtomicConfirmationModal component
15
+ */
16
+ export interface AtomicConfirmationModalProps {
17
+ /**
18
+ * Whether the modal is visible
19
+ */
20
+ visible: boolean;
21
+ /**
22
+ * Modal title (required)
23
+ * e.g., "Delete Item?", "Confirm Action", "Are you sure?"
24
+ */
25
+ title: string;
26
+ /**
27
+ * Modal message/description (required)
28
+ * e.g., "This action cannot be undone."
29
+ */
30
+ message: string;
31
+ /**
32
+ * Variant determines visual style
33
+ * @default 'default'
34
+ */
35
+ variant?: ConfirmationModalVariant;
36
+ /**
37
+ * Confirm button text (required)
38
+ */
39
+ confirmText: string;
40
+ /**
41
+ * Cancel button text (required)
42
+ */
43
+ cancelText: string;
44
+ /**
45
+ * Icon name to display at top (MaterialIcons name)
46
+ * If not provided, uses variant-specific default icon
47
+ * @see https://fonts.google.com/icons
48
+ */
49
+ icon?: string;
50
+ /**
51
+ * Callback when user confirms
52
+ */
53
+ onConfirm: () => void;
54
+ /**
55
+ * Callback when user cancels or dismisses
56
+ */
57
+ onCancel: () => void;
58
+ /**
59
+ * Whether to show backdrop (tap outside to close)
60
+ * @default true
61
+ */
62
+ showBackdrop?: boolean;
63
+ /**
64
+ * Whether backdrop is dismissible
65
+ * @default true
66
+ */
67
+ backdropDismissible?: boolean;
68
+ /**
69
+ * Custom style for modal container
70
+ */
71
+ style?: StyleProp<ViewStyle>;
72
+ /**
73
+ * Test ID for testing
74
+ */
75
+ testID?: string;
76
+ }
77
+ /**
78
+ * Variant configuration
79
+ * Maps variant to icon, colors, and default text
80
+ */
81
+ export interface ConfirmationModalVariantConfig {
82
+ icon: string;
83
+ confirmText: string;
84
+ iconColor: AtomicIconColor;
85
+ }
@@ -0,0 +1,11 @@
1
+ import { ViewStyle } from 'react-native';
2
+ import { useAppDesignTokens } from '@umituz/react-native-theme';
3
+ type DesignTokens = ReturnType<typeof useAppDesignTokens>;
4
+ export declare const getListItemStyles: (tokens: DesignTokens) => {
5
+ container: ViewStyle;
6
+ disabled: ViewStyle;
7
+ iconContainer: ViewStyle;
8
+ content: ViewStyle;
9
+ subtitle: ViewStyle;
10
+ };
11
+ export {};
@@ -0,0 +1,16 @@
1
+ import { ViewStyle } from 'react-native';
2
+ /**
3
+ * ListItem component props
4
+ *
5
+ * leftIcon/rightIcon: Any MaterialIcons name
6
+ * @see https://fonts.google.com/icons
7
+ */
8
+ export interface ListItemProps {
9
+ title: string;
10
+ subtitle?: string;
11
+ leftIcon?: string;
12
+ rightIcon?: string;
13
+ onPress?: () => void;
14
+ disabled?: boolean;
15
+ style?: ViewStyle;
16
+ }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * AppHeader Organism - Application Header Component
3
+ *
4
+ * Complex header combining atoms and molecules
5
+ * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
6
+ *
7
+ * Atomic Design Level: ORGANISM
8
+ * Composition: AtomicIcon + AtomicText + AtomicButton + SearchBar
9
+ */
10
+ import React from 'react';
11
+ import { ViewStyle } from 'react-native';
12
+ import type { IconName } from '@umituz/react-native-icon';
13
+ /**
14
+ * AppHeader component props
15
+ *
16
+ * leftIcon/rightIcon: Any MaterialIcons name
17
+ * @see https://fonts.google.com/icons
18
+ */
19
+ export interface AppHeaderProps {
20
+ title: string;
21
+ subtitle?: string;
22
+ leftIcon?: IconName;
23
+ onLeftPress?: () => void;
24
+ rightIcon?: IconName;
25
+ onRightPress?: () => void;
26
+ showShadow?: boolean;
27
+ backgroundColor?: string;
28
+ style?: ViewStyle;
29
+ }
30
+ export declare const AppHeader: React.FC<AppHeaderProps>;
@@ -0,0 +1,75 @@
1
+ /**
2
+ * FormContainer Component
3
+ *
4
+ * A reusable container for forms with proper keyboard handling and responsive layout.
5
+ *
6
+ * Features:
7
+ * - Pure React Native implementation (no Paper dependency)
8
+ * - Universal keyboard handling (no platform-specific code)
9
+ * - ScrollView with automatic content padding
10
+ * - Safe area insets for bottom tab navigation overlap
11
+ * - Responsive max width for large screens (tablets)
12
+ * - Consistent vertical spacing between form elements
13
+ * - Theme-aware surface colors
14
+ * - Optimized performance with memoized styles
15
+ *
16
+ * Usage:
17
+ * ```tsx
18
+ * <FormContainer>
19
+ * <AtomicInput label="Name" value={name} onChangeText={setName} />
20
+ * <AtomicTextArea label="Description" value={desc} onChangeText={setDesc} />
21
+ * <AtomicButton variant="primary" onPress={handleSubmit}>
22
+ * Submit
23
+ * </AtomicButton>
24
+ * </FormContainer>
25
+ * ```
26
+ *
27
+ * Why This Component:
28
+ * - Prevents keyboard from covering input fields (universal solution)
29
+ * - Handles safe area (notch, bottom tabs) automatically
30
+ * - Consistent form layout across all 100+ generated apps
31
+ * - Responsive design for tablets (max 700px) and phones (full width)
32
+ * - Automatic vertical spacing between form elements (no manual marginBottom)
33
+ * - Reduces boilerplate in form screens
34
+ * - Universal code - no platform checks, works on iOS, Android, Web
35
+ *
36
+ * Technical Details:
37
+ * - Uses ScrollView with contentContainerStyle for keyboard handling
38
+ * - Pure React Native View for surface (lightweight)
39
+ * - Vertical spacing via Children.map() wrapping (universal compatibility)
40
+ * - Safe area insets from react-native-safe-area-context
41
+ * - Responsive values from useResponsive hook
42
+ *
43
+ * @module FormContainer
44
+ */
45
+ import React from 'react';
46
+ import { StyleProp, ViewStyle } from 'react-native';
47
+ /**
48
+ * Props for FormContainer component
49
+ */
50
+ export interface FormContainerProps {
51
+ /** Form content (inputs, buttons, etc.) */
52
+ children: React.ReactNode;
53
+ /** Container style override (for outer View) */
54
+ containerStyle?: StyleProp<ViewStyle>;
55
+ /** Content container style override (for ScrollView content) */
56
+ contentContainerStyle?: StyleProp<ViewStyle>;
57
+ /** Show vertical scroll indicator */
58
+ showsVerticalScrollIndicator?: boolean;
59
+ /** Optional test ID for E2E testing */
60
+ testID?: string;
61
+ /** Show surface border (default: true) */
62
+ showBorder?: boolean;
63
+ }
64
+ /**
65
+ * FormContainer - Universal form wrapper component
66
+ *
67
+ * Wraps forms with:
68
+ * - Pure React Native surface
69
+ * - Universal keyboard handling (no platform checks)
70
+ * - ScrollView for content overflow
71
+ * - Safe area insets (bottom tabs, notch)
72
+ * - Responsive max width (tablets)
73
+ * - Theme integration
74
+ */
75
+ export declare const FormContainer: React.FC<FormContainerProps>;