@umituz/react-native-design-system 1.0.0

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 (80) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +157 -0
  3. package/package.json +43 -0
  4. package/src/index.ts +345 -0
  5. package/src/presentation/atoms/AtomicAvatar.tsx +157 -0
  6. package/src/presentation/atoms/AtomicAvatarGroup.tsx +169 -0
  7. package/src/presentation/atoms/AtomicBadge.tsx +232 -0
  8. package/src/presentation/atoms/AtomicButton.tsx +124 -0
  9. package/src/presentation/atoms/AtomicCard.tsx +112 -0
  10. package/src/presentation/atoms/AtomicChip.tsx +223 -0
  11. package/src/presentation/atoms/AtomicDatePicker.tsx +347 -0
  12. package/src/presentation/atoms/AtomicDivider.tsx +114 -0
  13. package/src/presentation/atoms/AtomicFab.tsx +104 -0
  14. package/src/presentation/atoms/AtomicFilter.tsx +154 -0
  15. package/src/presentation/atoms/AtomicFormError.tsx +105 -0
  16. package/src/presentation/atoms/AtomicIcon.tsx +29 -0
  17. package/src/presentation/atoms/AtomicImage.tsx +149 -0
  18. package/src/presentation/atoms/AtomicInput.tsx +232 -0
  19. package/src/presentation/atoms/AtomicNumberInput.tsx +182 -0
  20. package/src/presentation/atoms/AtomicPicker.tsx +458 -0
  21. package/src/presentation/atoms/AtomicProgress.tsx +143 -0
  22. package/src/presentation/atoms/AtomicSearchBar.tsx +114 -0
  23. package/src/presentation/atoms/AtomicSkeleton.tsx +146 -0
  24. package/src/presentation/atoms/AtomicSort.tsx +145 -0
  25. package/src/presentation/atoms/AtomicSwitch.tsx +166 -0
  26. package/src/presentation/atoms/AtomicText.tsx +50 -0
  27. package/src/presentation/atoms/AtomicTextArea.tsx +198 -0
  28. package/src/presentation/atoms/AtomicTouchable.tsx +233 -0
  29. package/src/presentation/atoms/fab/styles/fabStyles.ts +69 -0
  30. package/src/presentation/atoms/fab/types/index.ts +88 -0
  31. package/src/presentation/atoms/filter/styles/filterStyles.ts +32 -0
  32. package/src/presentation/atoms/filter/types/index.ts +89 -0
  33. package/src/presentation/atoms/index.ts +378 -0
  34. package/src/presentation/atoms/input/hooks/useInputState.ts +15 -0
  35. package/src/presentation/atoms/input/styles/inputStyles.ts +66 -0
  36. package/src/presentation/atoms/input/types/index.ts +25 -0
  37. package/src/presentation/atoms/picker/styles/pickerStyles.ts +200 -0
  38. package/src/presentation/atoms/picker/types/index.ts +40 -0
  39. package/src/presentation/atoms/touchable/styles/touchableStyles.ts +71 -0
  40. package/src/presentation/atoms/touchable/types/index.ts +162 -0
  41. package/src/presentation/hooks/useAppDesignTokens.ts +78 -0
  42. package/src/presentation/hooks/useResponsive.ts +180 -0
  43. package/src/presentation/loading/index.ts +40 -0
  44. package/src/presentation/loading/presentation/components/LoadingSpinner.tsx +116 -0
  45. package/src/presentation/loading/presentation/components/LoadingState.tsx +200 -0
  46. package/src/presentation/loading/presentation/hooks/useLoading.ts +100 -0
  47. package/src/presentation/molecules/AtomicConfirmationModal.tsx +263 -0
  48. package/src/presentation/molecules/EmptyState.tsx +130 -0
  49. package/src/presentation/molecules/FormField.tsx +128 -0
  50. package/src/presentation/molecules/GridContainer.tsx +124 -0
  51. package/src/presentation/molecules/IconContainer.tsx +94 -0
  52. package/src/presentation/molecules/LanguageSwitcher.tsx +42 -0
  53. package/src/presentation/molecules/ListItem.tsx +36 -0
  54. package/src/presentation/molecules/ScreenHeader.tsx +140 -0
  55. package/src/presentation/molecules/SearchBar.tsx +85 -0
  56. package/src/presentation/molecules/SectionCard.tsx +74 -0
  57. package/src/presentation/molecules/SectionContainer.tsx +106 -0
  58. package/src/presentation/molecules/SectionHeader.tsx +125 -0
  59. package/src/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.ts +133 -0
  60. package/src/presentation/molecules/confirmation-modal/types/index.ts +107 -0
  61. package/src/presentation/molecules/index.ts +42 -0
  62. package/src/presentation/molecules/languageswitcher/config/languageSwitcherConfig.ts +5 -0
  63. package/src/presentation/molecules/languageswitcher/hooks/useLanguageNavigation.ts +15 -0
  64. package/src/presentation/molecules/listitem/styles/listItemStyles.ts +19 -0
  65. package/src/presentation/molecules/listitem/types/index.ts +17 -0
  66. package/src/presentation/organisms/AppHeader.tsx +136 -0
  67. package/src/presentation/organisms/FormContainer.tsx +180 -0
  68. package/src/presentation/organisms/ScreenLayout.tsx +209 -0
  69. package/src/presentation/organisms/index.ts +25 -0
  70. package/src/presentation/tokens/AppDesignTokens.ts +57 -0
  71. package/src/presentation/tokens/commonStyles.ts +253 -0
  72. package/src/presentation/tokens/core/BaseTokens.ts +394 -0
  73. package/src/presentation/tokens/core/ColorPalette.ts +398 -0
  74. package/src/presentation/tokens/core/TokenFactory.ts +120 -0
  75. package/src/presentation/utils/platformConstants.ts +124 -0
  76. package/src/presentation/utils/responsive.ts +516 -0
  77. package/src/presentation/utils/variants/compound.ts +29 -0
  78. package/src/presentation/utils/variants/core.ts +39 -0
  79. package/src/presentation/utils/variants/helpers.ts +13 -0
  80. package/src/presentation/utils/variants.ts +3 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Umit Uz
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,157 @@
1
+ # @umituz/react-native-design-system
2
+
3
+ Universal design system for React Native apps following Domain-Driven Design (DDD) architecture with Material Design 3 components.
4
+
5
+ ## ✨ Features
6
+
7
+ - 🎨 **Material Design 3** - Modern, accessible UI components
8
+ - ⚛️ **Atomic Design** - Organized component hierarchy (Atoms → Molecules → Organisms)
9
+ - 🏗️ **DDD Architecture** - Clean domain-driven structure
10
+ - 🌓 **Theme Support** - Built-in light/dark mode
11
+ - 📱 **Responsive** - Adaptive layouts for phones and tablets
12
+ - ♿ **Accessible** - WCAG AA compliant components
13
+ - 🎭 **Animations** - Smooth React Native Reanimated animations
14
+ - 📦 **Zero Config** - Works out of the box
15
+
16
+ ## 📦 Installation
17
+
18
+ ```bash
19
+ npm install @umituz/react-native-design-system
20
+ ```
21
+
22
+ ### Peer Dependencies
23
+
24
+ ```bash
25
+ npm install react@18.3.1 react-native@0.76.3 react-native-paper@^5.12.5 react-native-reanimated@~3.10.1
26
+ ```
27
+
28
+ ## 🚀 Usage
29
+
30
+ ```typescript
31
+ import {
32
+ AtomicButton,
33
+ AtomicText,
34
+ AtomicInput,
35
+ ScreenLayout,
36
+ useAppDesignTokens,
37
+ } from '@umituz/react-native-design-system';
38
+
39
+ const MyScreen = () => {
40
+ const tokens = useAppDesignTokens();
41
+
42
+ return (
43
+ <ScreenLayout>
44
+ <AtomicText type="headingLarge">Welcome</AtomicText>
45
+ <AtomicInput
46
+ label="Email"
47
+ placeholder="Enter your email"
48
+ />
49
+ <AtomicButton
50
+ variant="primary"
51
+ onPress={() => console.log('Pressed')}
52
+ >
53
+ Submit
54
+ </AtomicButton>
55
+ </ScreenLayout>
56
+ );
57
+ };
58
+ ```
59
+
60
+ ## 🧩 Components
61
+
62
+ ### Atoms (Primitive UI Components)
63
+ - `AtomicButton` - Material Design 3 buttons with variants
64
+ - `AtomicText` - Typography with MD3 type scale
65
+ - `AtomicInput` - Text inputs with validation
66
+ - `AtomicCard` - Container cards
67
+ - `AtomicIcon` - Icon components
68
+ - `AtomicSwitch` - Toggle switches
69
+ - `AtomicBadge` - Status badges
70
+ - `AtomicProgress` - Progress indicators
71
+ - And 15+ more...
72
+
73
+ ### Molecules (Composite Components)
74
+ - `FormField` - Input with label and error
75
+ - `ListItem` - Standard list item
76
+ - `SearchBar` - Search input with icon
77
+ - `EmptyState` - Empty state placeholder
78
+ - `ScreenHeader` - Screen title header
79
+ - And more...
80
+
81
+ ### Organisms (Complex Patterns)
82
+ - `ScreenLayout` - Screen wrapper with safe area
83
+ - `AppHeader` - Application header
84
+ - `FormContainer` - Form layout container
85
+
86
+ ## 🎨 Design Tokens
87
+
88
+ ```typescript
89
+ import { useAppDesignTokens } from '@umituz/react-native-design-system';
90
+
91
+ const tokens = useAppDesignTokens();
92
+
93
+ // Colors
94
+ tokens.colors.primary
95
+ tokens.colors.secondary
96
+ tokens.colors.background
97
+ tokens.colors.textPrimary
98
+
99
+ // Spacing
100
+ tokens.spacing.xs // 4
101
+ tokens.spacing.sm // 8
102
+ tokens.spacing.md // 16
103
+ tokens.spacing.lg // 24
104
+ tokens.spacing.xl // 32
105
+
106
+ // Typography
107
+ tokens.typography.headingLarge
108
+ tokens.typography.bodyMedium
109
+ tokens.typography.caption
110
+ ```
111
+
112
+ ## 📱 Responsive Utilities
113
+
114
+ ```typescript
115
+ import { useResponsive } from '@umituz/react-native-design-system';
116
+
117
+ const responsive = useResponsive();
118
+
119
+ // Device detection
120
+ responsive.isSmallPhone
121
+ responsive.isTablet
122
+ responsive.isLandscape
123
+
124
+ // Responsive values (pre-calculated)
125
+ responsive.logoSize
126
+ responsive.inputHeight
127
+ responsive.horizontalPadding
128
+ ```
129
+
130
+ ## 🌓 Theme Integration
131
+
132
+ This package works seamlessly with `@umituz/react-native-theme`:
133
+
134
+ ```typescript
135
+ import { ThemeProvider } from '@umituz/react-native-theme';
136
+ import { ScreenLayout } from '@umituz/react-native-design-system';
137
+
138
+ const App = () => (
139
+ <ThemeProvider>
140
+ <ScreenLayout>
141
+ {/* Your app */}
142
+ </ScreenLayout>
143
+ </ThemeProvider>
144
+ );
145
+ ```
146
+
147
+ ## 📖 Documentation
148
+
149
+ Full documentation: [Coming Soon]
150
+
151
+ ## 🤝 Contributing
152
+
153
+ Contributions welcome! This is the universal design system used across 100+ React Native apps.
154
+
155
+ ## 📄 License
156
+
157
+ MIT © Umit Uz
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@umituz/react-native-design-system",
3
+ "version": "1.0.0",
4
+ "description": "Universal design system for React Native apps - Domain-Driven Design architecture with Material Design 3 components",
5
+ "main": "src/index.ts",
6
+ "types": "src/index.ts",
7
+ "keywords": [
8
+ "react-native",
9
+ "design-system",
10
+ "material-design-3",
11
+ "ui-components",
12
+ "atomic-design",
13
+ "ddd",
14
+ "domain-driven-design"
15
+ ],
16
+ "author": "Umit Uz",
17
+ "license": "MIT",
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "https://github.com/umituz/react-native-design-system"
21
+ },
22
+ "peerDependencies": {
23
+ "react": "18.3.1",
24
+ "react-native": "0.76.3",
25
+ "react-native-paper": "^5.12.5",
26
+ "react-native-reanimated": "~3.10.1",
27
+ "@react-native-community/datetimepicker": "8.0.1",
28
+ "@expo/vector-icons": "^14.0.0"
29
+ },
30
+ "peerDependenciesMeta": {
31
+ "@react-native-community/datetimepicker": {
32
+ "optional": true
33
+ }
34
+ },
35
+ "publishConfig": {
36
+ "access": "public"
37
+ },
38
+ "files": [
39
+ "src",
40
+ "README.md",
41
+ "LICENSE"
42
+ ]
43
+ }
package/src/index.ts ADDED
@@ -0,0 +1,345 @@
1
+ /**
2
+ * @umituz/react-native-design-system - Public API
3
+ *
4
+ * Universal UI component library for React Native apps
5
+ * Domain-Driven Design (DDD) Architecture
6
+ *
7
+ * This is the SINGLE SOURCE OF TRUTH for all UI components.
8
+ * ALL imports from the design system MUST go through this file.
9
+ *
10
+ * Architecture:
11
+ * - presentation/atoms: Primitive UI components (AtomicButton, AtomicText, etc.)
12
+ * - presentation/molecules: Composite components (SearchBar, ListItem, etc.)
13
+ * - presentation/organisms: Complex patterns (ScreenLayout, AppHeader, FormContainer)
14
+ * - presentation/loading: Loading states (LoadingState, LoadingSpinner)
15
+ * - presentation/tokens: Design tokens (colors, typography, spacing, etc.)
16
+ * - presentation/utils: Utility functions and helpers
17
+ *
18
+ * Usage:
19
+ * import { AtomicButton, AtomicFilter, AtomicTouchable, SearchBar, LoadingState, STATIC_TOKENS } from '@umituz/react-native-design-system';
20
+ */
21
+
22
+ // =============================================================================
23
+ // ATOMS - Primitive UI Components
24
+ // =============================================================================
25
+
26
+ export {
27
+ AtomicButton,
28
+ type AtomicButtonProps,
29
+ type ButtonVariant,
30
+ type ButtonSize,
31
+ } from './presentation/atoms/AtomicButton';
32
+
33
+ export {
34
+ AtomicText,
35
+ type AtomicTextProps,
36
+ } from './presentation/atoms/AtomicText';
37
+
38
+ export {
39
+ AtomicCard,
40
+ type AtomicCardProps,
41
+ type AtomicCardVariant,
42
+ type AtomicCardPadding,
43
+ } from './presentation/atoms/AtomicCard';
44
+
45
+ export {
46
+ AtomicInput,
47
+ type AtomicInputProps,
48
+ type AtomicInputVariant,
49
+ type AtomicInputState,
50
+ type AtomicInputSize,
51
+ } from './presentation/atoms/AtomicInput';
52
+
53
+ export {
54
+ AtomicNumberInput,
55
+ type AtomicNumberInputProps,
56
+ } from './presentation/atoms/AtomicNumberInput';
57
+
58
+ export {
59
+ AtomicSwitch,
60
+ type AtomicSwitchProps,
61
+ } from './presentation/atoms/AtomicSwitch';
62
+
63
+ export {
64
+ AtomicIcon,
65
+ type AtomicIconProps,
66
+ type AtomicIconSize,
67
+ type AtomicIconColor,
68
+ } from './presentation/atoms/AtomicIcon';
69
+
70
+ export {
71
+ AtomicFormError,
72
+ type AtomicFormErrorProps,
73
+ } from './presentation/atoms/AtomicFormError';
74
+
75
+ export {
76
+ AtomicDatePicker,
77
+ type AtomicDatePickerProps,
78
+ } from './presentation/atoms/AtomicDatePicker';
79
+
80
+ export {
81
+ AtomicPicker,
82
+ type AtomicPickerProps,
83
+ type PickerOption,
84
+ type PickerSize,
85
+ } from './presentation/atoms/AtomicPicker';
86
+
87
+ export {
88
+ AtomicTextArea,
89
+ type AtomicTextAreaProps,
90
+ } from './presentation/atoms/AtomicTextArea';
91
+
92
+ export {
93
+ AtomicBadge,
94
+ type AtomicBadgeProps,
95
+ } from './presentation/atoms/AtomicBadge';
96
+
97
+ export {
98
+ AtomicProgress,
99
+ type AtomicProgressProps,
100
+ } from './presentation/atoms/AtomicProgress';
101
+
102
+ export {
103
+ AtomicDivider,
104
+ type AtomicDividerProps,
105
+ } from './presentation/atoms/AtomicDivider';
106
+
107
+ export {
108
+ AtomicFab,
109
+ type AtomicFabProps,
110
+ type FabSize,
111
+ type FabVariant,
112
+ getFabVariants,
113
+ } from './presentation/atoms/AtomicFab';
114
+
115
+ export {
116
+ AtomicFilter,
117
+ type AtomicFilterProps,
118
+ type FilterOption,
119
+ getFilterContainerStyle,
120
+ getClearAllContainerStyle,
121
+ getScrollContentContainerStyle,
122
+ } from './presentation/atoms/AtomicFilter';
123
+
124
+ export {
125
+ AtomicTouchable,
126
+ type AtomicTouchableProps,
127
+ type TouchableFeedback,
128
+ type FeedbackStrength,
129
+ type HitSlop,
130
+ TouchablePresets,
131
+ getOpacityValue,
132
+ normalizeHitSlop,
133
+ } from './presentation/atoms/AtomicTouchable';
134
+
135
+ export {
136
+ AtomicSearchBar,
137
+ type AtomicSearchBarProps,
138
+ } from './presentation/atoms/AtomicSearchBar';
139
+
140
+ export {
141
+ AtomicSort,
142
+ type AtomicSortProps,
143
+ type SortOption,
144
+ type SortDirection,
145
+ } from './presentation/atoms/AtomicSort';
146
+
147
+ // =============================================================================
148
+ // MOLECULES - Composite Components
149
+ // =============================================================================
150
+
151
+ export {
152
+ FormField,
153
+ type FormFieldProps,
154
+ } from './presentation/molecules/FormField';
155
+
156
+ export {
157
+ ListItem,
158
+ type ListItemProps,
159
+ } from './presentation/molecules/ListItem';
160
+
161
+ export {
162
+ SearchBar,
163
+ type SearchBarProps,
164
+ } from './presentation/molecules/SearchBar';
165
+
166
+ export {
167
+ LanguageSwitcher,
168
+ } from './presentation/molecules/LanguageSwitcher';
169
+
170
+ // SettingItem moved to @domains/settings/presentation/components/SettingItem
171
+ // Import directly: import { SettingItem } from '@domains/settings/presentation/components/SettingItem';
172
+
173
+ export {
174
+ SectionCard,
175
+ } from './presentation/molecules/SectionCard';
176
+
177
+ export {
178
+ IconContainer,
179
+ } from './presentation/molecules/IconContainer';
180
+
181
+ export {
182
+ SectionHeader,
183
+ } from './presentation/molecules/SectionHeader';
184
+
185
+ export {
186
+ EmptyState,
187
+ } from './presentation/molecules/EmptyState';
188
+
189
+ export {
190
+ GridContainer,
191
+ } from './presentation/molecules/GridContainer';
192
+
193
+ export {
194
+ SectionContainer,
195
+ } from './presentation/molecules/SectionContainer';
196
+
197
+ export {
198
+ ScreenHeader,
199
+ type ScreenHeaderProps,
200
+ } from './presentation/molecules/ScreenHeader';
201
+
202
+ export {
203
+ AtomicConfirmationModal,
204
+ useConfirmationModal,
205
+ type AtomicConfirmationModalProps,
206
+ type ConfirmationModalVariant,
207
+ } from './presentation/molecules/AtomicConfirmationModal';
208
+
209
+ // =============================================================================
210
+ // ORGANISMS - Complex Patterns
211
+ // =============================================================================
212
+
213
+ export {
214
+ ScreenLayout,
215
+ type ScreenLayoutProps,
216
+ } from './presentation/organisms/ScreenLayout';
217
+
218
+ export {
219
+ AppHeader,
220
+ type AppHeaderProps,
221
+ } from './presentation/organisms/AppHeader';
222
+
223
+ export {
224
+ FormContainer,
225
+ type FormContainerProps,
226
+ } from './presentation/organisms/FormContainer';
227
+
228
+ // Note: FeedbackModal moved to @domains/feedback
229
+ // Import from feedback domain: import { FeedbackModal } from '@domains/feedback';
230
+
231
+ // =============================================================================
232
+ // LOADING - Loading States
233
+ // =============================================================================
234
+
235
+ export {
236
+ LoadingState,
237
+ type LoadingStateProps,
238
+ type LoadingStateSize,
239
+ } from './presentation/loading/presentation/components/LoadingState';
240
+
241
+ export {
242
+ LoadingSpinner,
243
+ type LoadingSpinnerProps,
244
+ type LoadingSpinnerSize,
245
+ type LoadingSpinnerColor,
246
+ } from './presentation/loading/presentation/components/LoadingSpinner';
247
+
248
+ export {
249
+ useLoading,
250
+ type LoadingConfig,
251
+ type UseLoadingReturn,
252
+ } from './presentation/loading/presentation/hooks/useLoading';
253
+
254
+ // =============================================================================
255
+ // TOKENS - Design Tokens (Refactored with ZERO duplication)
256
+ // =============================================================================
257
+
258
+ export {
259
+ // Static tokens (don't change with theme)
260
+ STATIC_TOKENS,
261
+ BASE_TOKENS,
262
+
263
+ // Token factory
264
+ createDesignTokens,
265
+
266
+ // Color utilities
267
+ withAlpha,
268
+ lightColors,
269
+ darkColors,
270
+ getColorPalette,
271
+
272
+ // Individual base tokens
273
+ spacing,
274
+ typography,
275
+ animations,
276
+ borders,
277
+
278
+ // Type exports
279
+ type DesignTokens,
280
+ type ThemeMode,
281
+ type ColorPalette,
282
+ type Spacing,
283
+ type Typography,
284
+ type Animations,
285
+ type Borders,
286
+ type BaseTokens,
287
+ } from './presentation/tokens/AppDesignTokens';
288
+
289
+ // Hook for dynamic theme-aware tokens (exported separately to avoid cycle)
290
+ export { useAppDesignTokens } from './presentation/hooks/useAppDesignTokens';
291
+
292
+ export {
293
+ useCommonStyles,
294
+ } from './presentation/tokens/commonStyles';
295
+
296
+ // =============================================================================
297
+ // UTILITIES - Helper Functions
298
+ // =============================================================================
299
+
300
+ export {
301
+ IOS_HIG,
302
+ ANDROID_MATERIAL,
303
+ PLATFORM_CONSTANTS,
304
+ isValidTouchTarget,
305
+ getMinTouchTarget,
306
+ } from './presentation/utils/platformConstants';
307
+
308
+ // =============================================================================
309
+ // RESPONSIVE UTILITIES - Centralized Responsive Management
310
+ // =============================================================================
311
+
312
+ export {
313
+ useResponsive,
314
+ useResponsiveSizes,
315
+ useDeviceType,
316
+ type UseResponsiveReturn,
317
+ } from './presentation/hooks/useResponsive';
318
+
319
+ export {
320
+ getScreenDimensions,
321
+ isSmallPhone,
322
+ isTablet,
323
+ getResponsiveLogoSize,
324
+ getResponsiveInputHeight,
325
+ getResponsiveHorizontalPadding,
326
+ getResponsiveBottomPosition,
327
+ getResponsiveFABPosition,
328
+ getResponsiveModalMaxHeight,
329
+ getResponsiveMinModalHeight,
330
+ getResponsiveIconContainerSize,
331
+ getResponsiveGridColumns,
332
+ getResponsiveMaxWidth,
333
+ getResponsiveFontSize,
334
+ isLandscape,
335
+ getKeyboardBehavior,
336
+ getDeviceType,
337
+ getMinTouchTargetSize,
338
+ getSpacingMultiplier,
339
+ getOnboardingIconMarginTop,
340
+ getOnboardingIconMarginBottom,
341
+ getOnboardingTitleMarginBottom,
342
+ getOnboardingTextPadding,
343
+ getOnboardingDescriptionMarginTop,
344
+ DeviceType,
345
+ } from './presentation/utils/responsive';