@umituz/react-native-design-system 1.5.36 → 1.5.38

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 (62) hide show
  1. package/README.md +2 -2
  2. package/package.json +7 -5
  3. package/src/index.ts +29 -221
  4. package/src/presentation/organisms/AppHeader.tsx +3 -5
  5. package/src/presentation/tokens/commonStyles.ts +1 -1
  6. package/src/presentation/atoms/AtomicAvatar.tsx +0 -157
  7. package/src/presentation/atoms/AtomicAvatarGroup.tsx +0 -169
  8. package/src/presentation/atoms/AtomicBadge.tsx +0 -232
  9. package/src/presentation/atoms/AtomicButton.tsx +0 -236
  10. package/src/presentation/atoms/AtomicCard.tsx +0 -107
  11. package/src/presentation/atoms/AtomicChip.tsx +0 -223
  12. package/src/presentation/atoms/AtomicDatePicker.tsx +0 -347
  13. package/src/presentation/atoms/AtomicDivider.tsx +0 -114
  14. package/src/presentation/atoms/AtomicFab.tsx +0 -98
  15. package/src/presentation/atoms/AtomicFilter.tsx +0 -154
  16. package/src/presentation/atoms/AtomicFormError.tsx +0 -105
  17. package/src/presentation/atoms/AtomicIcon.tsx +0 -40
  18. package/src/presentation/atoms/AtomicImage.tsx +0 -149
  19. package/src/presentation/atoms/AtomicInput.tsx +0 -363
  20. package/src/presentation/atoms/AtomicNumberInput.tsx +0 -182
  21. package/src/presentation/atoms/AtomicPicker.tsx +0 -458
  22. package/src/presentation/atoms/AtomicProgress.tsx +0 -139
  23. package/src/presentation/atoms/AtomicSearchBar.tsx +0 -114
  24. package/src/presentation/atoms/AtomicSort.tsx +0 -145
  25. package/src/presentation/atoms/AtomicSwitch.tsx +0 -166
  26. package/src/presentation/atoms/AtomicText.tsx +0 -55
  27. package/src/presentation/atoms/AtomicTextArea.tsx +0 -313
  28. package/src/presentation/atoms/AtomicTouchable.tsx +0 -209
  29. package/src/presentation/atoms/fab/styles/fabStyles.ts +0 -69
  30. package/src/presentation/atoms/fab/types/index.ts +0 -82
  31. package/src/presentation/atoms/filter/styles/filterStyles.ts +0 -32
  32. package/src/presentation/atoms/filter/types/index.ts +0 -89
  33. package/src/presentation/atoms/index.ts +0 -366
  34. package/src/presentation/atoms/input/hooks/useInputState.ts +0 -15
  35. package/src/presentation/atoms/input/styles/inputStyles.ts +0 -66
  36. package/src/presentation/atoms/input/types/index.ts +0 -25
  37. package/src/presentation/atoms/picker/styles/pickerStyles.ts +0 -207
  38. package/src/presentation/atoms/picker/types/index.ts +0 -40
  39. package/src/presentation/atoms/touchable/styles/touchableStyles.ts +0 -62
  40. package/src/presentation/atoms/touchable/types/index.ts +0 -155
  41. package/src/presentation/hooks/useResponsive.ts +0 -180
  42. package/src/presentation/molecules/AtomicConfirmationModal.tsx +0 -243
  43. package/src/presentation/molecules/EmptyState.tsx +0 -130
  44. package/src/presentation/molecules/FormField.tsx +0 -128
  45. package/src/presentation/molecules/GridContainer.tsx +0 -124
  46. package/src/presentation/molecules/IconContainer.tsx +0 -94
  47. package/src/presentation/molecules/ListItem.tsx +0 -36
  48. package/src/presentation/molecules/ScreenHeader.tsx +0 -140
  49. package/src/presentation/molecules/SearchBar.tsx +0 -85
  50. package/src/presentation/molecules/SectionCard.tsx +0 -74
  51. package/src/presentation/molecules/SectionContainer.tsx +0 -106
  52. package/src/presentation/molecules/SectionHeader.tsx +0 -125
  53. package/src/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.ts +0 -133
  54. package/src/presentation/molecules/confirmation-modal/types/index.ts +0 -105
  55. package/src/presentation/molecules/index.ts +0 -41
  56. package/src/presentation/molecules/listitem/styles/listItemStyles.ts +0 -19
  57. package/src/presentation/molecules/listitem/types/index.ts +0 -17
  58. package/src/presentation/organisms/FormContainer.tsx +0 -180
  59. package/src/presentation/organisms/ScreenLayout.tsx +0 -171
  60. package/src/presentation/organisms/index.ts +0 -25
  61. package/src/presentation/utils/platformConstants.ts +0 -124
  62. package/src/presentation/utils/responsive.ts +0 -516
@@ -1,85 +0,0 @@
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
-
11
- import React from 'react';
12
- import { View, TouchableOpacity, ViewStyle } from 'react-native';
13
- import { useAppDesignTokens } from '@umituz/react-native-theme';
14
- import { AtomicInput, AtomicInputProps } from '../atoms/AtomicInput';
15
- import { AtomicIcon } from '../atoms/AtomicIcon';
16
-
17
- // =============================================================================
18
- // TYPE DEFINITIONS
19
- // =============================================================================
20
-
21
- export interface SearchBarProps extends Omit<AtomicInputProps, 'leftIcon' | 'rightIcon'> {
22
- onClear?: () => void;
23
- containerStyle?: ViewStyle;
24
- }
25
-
26
- // =============================================================================
27
- // COMPONENT IMPLEMENTATION
28
- // =============================================================================
29
-
30
- export const SearchBar: React.FC<SearchBarProps> = ({
31
- value,
32
- onChangeText,
33
- onClear,
34
- placeholder = 'Search...',
35
- containerStyle,
36
- ...inputProps
37
- }) => {
38
- const tokens = useAppDesignTokens();
39
-
40
- const handleClear = () => {
41
- if (onChangeText) {
42
- onChangeText('');
43
- }
44
- if (onClear) {
45
- onClear();
46
- }
47
- };
48
-
49
- const styles = getStyles(tokens);
50
-
51
- return (
52
- <View style={[styles.container, containerStyle]}>
53
- <AtomicInput
54
- {...inputProps}
55
- value={value}
56
- onChangeText={onChangeText}
57
- placeholder={placeholder}
58
- variant="filled"
59
- style={styles.input}
60
- leadingIcon="Search"
61
- trailingIcon={value && value.length > 0 ? "X" : undefined}
62
- onTrailingIconPress={value && value.length > 0 ? handleClear : undefined}
63
- />
64
- </View>
65
- );
66
- };
67
-
68
- // =============================================================================
69
- // STYLES
70
- // =============================================================================
71
-
72
- const getStyles = (tokens: ReturnType<typeof useAppDesignTokens>) => ({
73
- container: {
74
- width: '100%',
75
- marginVertical: tokens.spacing.sm,
76
- } as ViewStyle,
77
- input: {
78
- backgroundColor: tokens.colors.surfaceVariant,
79
- } as ViewStyle,
80
- });
81
-
82
- // =============================================================================
83
- // EXPORTS
84
- // =============================================================================
85
-
@@ -1,74 +0,0 @@
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
-
16
- import React from 'react';
17
- import { View, StyleSheet } from 'react-native';
18
- import { useAppDesignTokens } from '@umituz/react-native-theme';
19
- import { AtomicCard } from '../atoms/AtomicCard';
20
- import { AtomicText } from '../atoms/AtomicText';
21
-
22
- interface SectionCardProps {
23
- title: string;
24
- children: React.ReactNode;
25
- style?: object;
26
- contentStyle?: object;
27
- testID?: string;
28
- }
29
-
30
- export const SectionCard: React.FC<SectionCardProps> = ({
31
- title,
32
- children,
33
- style,
34
- contentStyle,
35
- testID,
36
- }) => {
37
- const tokens = useAppDesignTokens();
38
- const styles = getStyles(tokens);
39
-
40
- return (
41
- <AtomicCard
42
- variant="outlined"
43
- style={StyleSheet.flatten([styles.card, style])}
44
- testID={testID}
45
- >
46
- <AtomicText
47
- type="labelLarge"
48
- color={tokens.colors.textSecondary}
49
- style={styles.title}
50
- >
51
- {title.toUpperCase()}
52
- </AtomicText>
53
- <View style={contentStyle}>
54
- {children}
55
- </View>
56
- </AtomicCard>
57
- );
58
- };
59
-
60
- const getStyles = (tokens: ReturnType<typeof useAppDesignTokens>) => StyleSheet.create({
61
- card: {
62
- paddingVertical: tokens.spacing.md,
63
- paddingHorizontal: 0,
64
- marginHorizontal: tokens.spacing.md,
65
- marginBottom: tokens.spacing.lg,
66
- },
67
- title: {
68
- fontSize: tokens.typography.labelLarge.fontSize,
69
- fontWeight: tokens.typography.labelLarge.fontWeight,
70
- letterSpacing: 0.5,
71
- paddingHorizontal: tokens.spacing.md,
72
- marginBottom: tokens.spacing.sm,
73
- },
74
- });
@@ -1,106 +0,0 @@
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
-
17
- import React from 'react';
18
- import { View, StyleSheet, ViewStyle, TextStyle } from 'react-native';
19
- import { AtomicText } from '../atoms/AtomicText';
20
- import { useAppDesignTokens } from '@umituz/react-native-theme';
21
-
22
- // =============================================================================
23
- // TYPE DEFINITIONS
24
- // =============================================================================
25
-
26
- export interface SectionContainerProps {
27
- /** Section title (optional) */
28
- title?: string;
29
- /** Section title color (default: textPrimary) */
30
- titleColor?: string;
31
- /** Section title style override */
32
- titleStyle?: TextStyle;
33
- /** Container style override */
34
- style?: ViewStyle;
35
- /** Content to render inside section */
36
- children: React.ReactNode;
37
- /** Right action element (e.g., "See All" link) */
38
- rightAction?: React.ReactNode;
39
- }
40
-
41
- // =============================================================================
42
- // COMPONENT IMPLEMENTATION
43
- // =============================================================================
44
-
45
- export const SectionContainer: React.FC<SectionContainerProps> = ({
46
- title,
47
- titleColor,
48
- titleStyle,
49
- style,
50
- children,
51
- rightAction,
52
- }) => {
53
- const tokens = useAppDesignTokens();
54
- const styles = getStyles(tokens);
55
-
56
- return (
57
- <View style={[styles.section, style]}>
58
- {title && (
59
- <View style={styles.header}>
60
- <AtomicText
61
- type="titleLarge"
62
- color={titleColor || "primary"}
63
- style={StyleSheet.flatten([
64
- styles.sectionTitle,
65
- titleStyle,
66
- ])}
67
- >
68
- {title}
69
- </AtomicText>
70
- {rightAction && <View style={styles.rightAction}>{rightAction}</View>}
71
- </View>
72
- )}
73
- {children}
74
- </View>
75
- );
76
- };
77
-
78
- // =============================================================================
79
- // STYLES
80
- // =============================================================================
81
-
82
- const getStyles = (tokens: ReturnType<typeof useAppDesignTokens>) =>
83
- StyleSheet.create({
84
- section: {
85
- marginBottom: tokens.spacing.lg,
86
- paddingHorizontal: tokens.spacing.md,
87
- },
88
- header: {
89
- flexDirection: 'row',
90
- justifyContent: 'space-between',
91
- alignItems: 'center',
92
- marginBottom: tokens.spacing.md,
93
- },
94
- sectionTitle: {
95
- fontSize: tokens.typography.titleLarge.fontSize,
96
- fontWeight: tokens.typography.titleLarge.fontWeight,
97
- },
98
- rightAction: {
99
- marginLeft: tokens.spacing.sm,
100
- },
101
- });
102
-
103
- // =============================================================================
104
- // EXPORTS
105
- // =============================================================================
106
-
@@ -1,125 +0,0 @@
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
-
17
- import React from 'react';
18
- import { View, StyleSheet, ViewStyle, TextStyle } from 'react-native';
19
- import { AtomicText } from '../atoms/AtomicText';
20
- import { useAppDesignTokens } from '@umituz/react-native-theme';
21
-
22
- // =============================================================================
23
- // TYPE DEFINITIONS
24
- // =============================================================================
25
-
26
- export interface SectionHeaderProps {
27
- /** Main heading text */
28
- title: string;
29
- /** Optional subtitle text */
30
- subtitle?: string;
31
- /** Custom title color (default: textPrimary) */
32
- titleColor?: string;
33
- /** Custom subtitle color (default: textSecondary) */
34
- subtitleColor?: string;
35
- /** Container style override */
36
- style?: ViewStyle;
37
- /** Title style override */
38
- titleStyle?: TextStyle;
39
- /** Subtitle style override */
40
- subtitleStyle?: TextStyle;
41
- /** Right action element (e.g., button, icon) */
42
- rightAction?: React.ReactNode;
43
- }
44
-
45
- // =============================================================================
46
- // COMPONENT IMPLEMENTATION
47
- // =============================================================================
48
-
49
- export const SectionHeader: React.FC<SectionHeaderProps> = ({
50
- title,
51
- subtitle,
52
- titleColor,
53
- subtitleColor,
54
- style,
55
- titleStyle,
56
- subtitleStyle,
57
- rightAction,
58
- }) => {
59
- const tokens = useAppDesignTokens();
60
- const styles = getStyles(tokens);
61
-
62
- return (
63
- <View style={[styles.container, style]}>
64
- <View style={styles.textContainer}>
65
- <AtomicText
66
- type="headlineLarge"
67
- color={titleColor || "primary"}
68
- style={StyleSheet.flatten([
69
- styles.title,
70
- titleStyle,
71
- ])}
72
- >
73
- {title}
74
- </AtomicText>
75
- {subtitle && (
76
- <AtomicText
77
- type="bodyMedium"
78
- color={subtitleColor || "secondary"}
79
- style={StyleSheet.flatten([
80
- styles.subtitle,
81
- subtitleStyle,
82
- ])}
83
- >
84
- {subtitle}
85
- </AtomicText>
86
- )}
87
- </View>
88
- {rightAction && <View style={styles.rightAction}>{rightAction}</View>}
89
- </View>
90
- );
91
- };
92
-
93
- // =============================================================================
94
- // STYLES
95
- // =============================================================================
96
-
97
- const getStyles = (tokens: ReturnType<typeof useAppDesignTokens>) =>
98
- StyleSheet.create({
99
- container: {
100
- flexDirection: 'row',
101
- justifyContent: 'space-between',
102
- alignItems: 'center',
103
- paddingHorizontal: tokens.spacing.md,
104
- paddingVertical: tokens.spacing.sm,
105
- },
106
- textContainer: {
107
- flex: 1,
108
- },
109
- title: {
110
- fontSize: tokens.typography.headlineLarge.fontSize,
111
- fontWeight: tokens.typography.headlineLarge.fontWeight,
112
- marginBottom: tokens.spacing.xs,
113
- },
114
- subtitle: {
115
- fontSize: tokens.typography.bodyMedium.fontSize,
116
- },
117
- rightAction: {
118
- marginLeft: tokens.spacing.sm,
119
- },
120
- });
121
-
122
- // =============================================================================
123
- // EXPORTS
124
- // =============================================================================
125
-
@@ -1,133 +0,0 @@
1
- /**
2
- * AtomicConfirmationModal Style Utilities
3
- *
4
- * Styling functions for confirmation modal component
5
- */
6
-
7
- import { ViewStyle } from 'react-native';
8
- import { ConfirmationModalVariant, ConfirmationModalVariantConfig } from '../types';
9
- import type { DesignTokens } from '@umituz/react-native-theme';
10
-
11
- /**
12
- * Get variant configuration (icon and color only)
13
- * Note: Confirm text is handled in component with translations
14
- */
15
- export const getVariantConfig = (
16
- variant: ConfirmationModalVariant,
17
- tokens: DesignTokens
18
- ): Omit<ConfirmationModalVariantConfig, 'confirmText'> => {
19
- switch (variant) {
20
- case 'destructive':
21
- return {
22
- icon: 'warning',
23
- iconColor: 'error',
24
- };
25
- case 'warning':
26
- return {
27
- icon: 'warning',
28
- iconColor: 'warning',
29
- };
30
- case 'success':
31
- return {
32
- icon: 'check-circle',
33
- iconColor: 'success',
34
- };
35
- case 'default':
36
- default:
37
- return {
38
- icon: 'help-circle',
39
- iconColor: 'primary',
40
- };
41
- }
42
- };
43
-
44
- /**
45
- * Get modal overlay style
46
- */
47
- export const getModalOverlayStyle = (tokens: DesignTokens): ViewStyle => ({
48
- flex: 1,
49
- justifyContent: 'center',
50
- alignItems: 'center',
51
- backgroundColor: 'rgba(0, 0, 0, 0.5)',
52
- });
53
-
54
- /**
55
- * Get backdrop style (invisible layer for dismissing)
56
- */
57
- export const getBackdropStyle = (): ViewStyle => ({
58
- position: 'absolute',
59
- top: 0,
60
- left: 0,
61
- right: 0,
62
- bottom: 0,
63
- });
64
-
65
- /**
66
- * Get modal container style
67
- */
68
- export const getModalContainerStyle = (tokens: DesignTokens): ViewStyle => ({
69
- width: '85%',
70
- maxWidth: 400,
71
- backgroundColor: tokens.colors.surface,
72
- borderRadius: 16,
73
- padding: 24,
74
- alignItems: 'center',
75
- borderWidth: 1,
76
- borderColor: tokens.colors.outline,
77
- });
78
-
79
- /**
80
- * Get icon container style
81
- */
82
- export const getIconContainerStyle = (tokens: DesignTokens): ViewStyle => ({
83
- marginBottom: 16,
84
- });
85
-
86
- /**
87
- * Get title container style
88
- */
89
- export const getTitleContainerStyle = (tokens: DesignTokens): ViewStyle => ({
90
- marginBottom: 8,
91
- });
92
-
93
- /**
94
- * Get message container style
95
- */
96
- export const getMessageContainerStyle = (tokens: DesignTokens): ViewStyle => ({
97
- marginBottom: 24,
98
- });
99
-
100
- /**
101
- * Get button container style
102
- */
103
- export const getButtonContainerStyle = (tokens: DesignTokens): ViewStyle => ({
104
- flexDirection: 'row',
105
- gap: 12,
106
- width: '100%',
107
- });
108
-
109
- /**
110
- * Get button style
111
- */
112
- export const getButtonStyle = (): ViewStyle => ({
113
- flex: 1,
114
- });
115
-
116
- /**
117
- * Get confirm button variant based on modal variant
118
- */
119
- export const getConfirmButtonVariant = (
120
- variant: ConfirmationModalVariant
121
- ): 'primary' | 'secondary' | 'tertiary' | 'outline' | 'ghost' => {
122
- switch (variant) {
123
- case 'destructive':
124
- return 'primary'; // Will use error color
125
- case 'warning':
126
- return 'primary'; // Will use warning color
127
- case 'success':
128
- return 'primary'; // Will use success color
129
- case 'default':
130
- default:
131
- return 'primary';
132
- }
133
- };
@@ -1,105 +0,0 @@
1
- /**
2
- * AtomicConfirmationModal Type Definitions
3
- *
4
- * Type-safe interfaces for confirmation modal component
5
- */
6
-
7
- import { StyleProp, ViewStyle } from 'react-native';
8
- import type { AtomicIconColor } from '../../../atoms/AtomicIcon';
9
-
10
- /**
11
- * Confirmation modal variant
12
- * Determines the visual style and default behavior
13
- */
14
- export type ConfirmationModalVariant =
15
- | 'default' // Generic confirmation (blue/primary)
16
- | 'destructive' // Delete/remove actions (red/error)
17
- | 'warning' // Warning/caution (orange/warning)
18
- | 'success'; // Success confirmation (green/success)
19
-
20
- /**
21
- * Props for AtomicConfirmationModal component
22
- */
23
- export interface AtomicConfirmationModalProps {
24
- /**
25
- * Whether the modal is visible
26
- */
27
- visible: boolean;
28
-
29
- /**
30
- * Modal title (required)
31
- * e.g., "Delete Item?", "Confirm Action", "Are you sure?"
32
- */
33
- title: string;
34
-
35
- /**
36
- * Modal message/description (required)
37
- * e.g., "This action cannot be undone."
38
- */
39
- message: string;
40
-
41
- /**
42
- * Variant determines visual style
43
- * @default 'default'
44
- */
45
- variant?: ConfirmationModalVariant;
46
-
47
- /**
48
- * Confirm button text (required)
49
- */
50
- confirmText: string;
51
-
52
- /**
53
- * Cancel button text (required)
54
- */
55
- cancelText: string;
56
-
57
- /**
58
- * Icon name to display at top (MaterialIcons name)
59
- * If not provided, uses variant-specific default icon
60
- * @see https://fonts.google.com/icons
61
- */
62
- icon?: string;
63
-
64
- /**
65
- * Callback when user confirms
66
- */
67
- onConfirm: () => void;
68
-
69
- /**
70
- * Callback when user cancels or dismisses
71
- */
72
- onCancel: () => void;
73
-
74
- /**
75
- * Whether to show backdrop (tap outside to close)
76
- * @default true
77
- */
78
- showBackdrop?: boolean;
79
-
80
- /**
81
- * Whether backdrop is dismissible
82
- * @default true
83
- */
84
- backdropDismissible?: boolean;
85
-
86
- /**
87
- * Custom style for modal container
88
- */
89
- style?: StyleProp<ViewStyle>;
90
-
91
- /**
92
- * Test ID for testing
93
- */
94
- testID?: string;
95
- }
96
-
97
- /**
98
- * Variant configuration
99
- * Maps variant to icon, colors, and default text
100
- */
101
- export interface ConfirmationModalVariantConfig {
102
- icon: string; // MaterialIcons name
103
- confirmText: string;
104
- iconColor: AtomicIconColor;
105
- }
@@ -1,41 +0,0 @@
1
- /**
2
- * Molecule Components Export Index
3
- *
4
- * Molecules are combinations of atoms that form more complex UI components
5
- * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
6
- *
7
- * Atomic Design Level: MOLECULES
8
- */
9
-
10
- // Component exports
11
- export { FormField } from './FormField';
12
- export { ListItem } from './ListItem';
13
- export { SearchBar } from './SearchBar';
14
- export { SectionCard } from './SectionCard';
15
- export { IconContainer } from './IconContainer';
16
- export { ScreenHeader } from './ScreenHeader';
17
- export { AtomicConfirmationModal, useConfirmationModal } from './AtomicConfirmationModal';
18
-
19
- // SettingItem moved to @domains/settings/presentation/components/SettingItem
20
- // Import directly: import { SettingItem } from '@domains/settings/presentation/components/SettingItem';
21
-
22
- // Type exports
23
- export type { FormFieldProps } from './FormField';
24
- export type { ListItemProps } from './ListItem';
25
- export type { SearchBarProps } from './SearchBar';
26
- export type { ScreenHeaderProps } from './ScreenHeader';
27
- export type { AtomicConfirmationModalProps, ConfirmationModalVariant } from './AtomicConfirmationModal';
28
-
29
- // Union type for all molecule props (used for type narrowing)
30
- import type { FormFieldProps } from './FormField';
31
- import type { ListItemProps } from './ListItem';
32
- import type { SearchBarProps } from './SearchBar';
33
- import type { ScreenHeaderProps } from './ScreenHeader';
34
- import type { AtomicConfirmationModalProps } from './AtomicConfirmationModal';
35
-
36
- export type MoleculeComponentProps =
37
- | FormFieldProps
38
- | ListItemProps
39
- | SearchBarProps
40
- | ScreenHeaderProps
41
- | AtomicConfirmationModalProps;
@@ -1,19 +0,0 @@
1
- import { ViewStyle } from 'react-native';
2
- import { useAppDesignTokens } from '@umituz/react-native-theme';
3
-
4
- type DesignTokens = ReturnType<typeof useAppDesignTokens>;
5
-
6
- export const getListItemStyles = (tokens: DesignTokens) => ({
7
- container: {
8
- flexDirection: 'row' as const,
9
- alignItems: 'center' as const,
10
- padding: tokens.spacing.md,
11
- backgroundColor: tokens.colors.surface,
12
- borderRadius: tokens.borders.radius.lg,
13
- marginBottom: tokens.spacing.sm,
14
- } as ViewStyle,
15
- disabled: { opacity: 0.6 } as ViewStyle,
16
- iconContainer: { marginHorizontal: tokens.spacing.sm } as ViewStyle,
17
- content: { flex: 1 } as ViewStyle,
18
- subtitle: { marginTop: tokens.spacing.xs } as ViewStyle,
19
- });