@umituz/react-native-design-system 1.3.1 → 1.3.3

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 (350) hide show
  1. package/README.md +1 -1
  2. package/lib/domains/icons/domain/config/IconLibraryConfig.d.ts +91 -0
  3. package/lib/domains/icons/domain/config/IconLibraryConfig.d.ts.map +1 -0
  4. package/lib/domains/icons/domain/config/IconLibraryConfig.js +85 -0
  5. package/lib/domains/icons/domain/config/IconLibraryConfig.js.map +1 -0
  6. package/lib/domains/icons/domain/entities/Icon.d.ts +111 -0
  7. package/lib/domains/icons/domain/entities/Icon.d.ts.map +1 -0
  8. package/lib/domains/icons/domain/entities/Icon.js +87 -0
  9. package/lib/domains/icons/domain/entities/Icon.js.map +1 -0
  10. package/lib/domains/icons/domain/interfaces/IIconAdapter.d.ts +114 -0
  11. package/lib/domains/icons/domain/interfaces/IIconAdapter.d.ts.map +1 -0
  12. package/lib/domains/icons/domain/interfaces/IIconAdapter.js +17 -0
  13. package/lib/domains/icons/domain/interfaces/IIconAdapter.js.map +1 -0
  14. package/lib/domains/icons/index.d.ts +84 -0
  15. package/lib/domains/icons/index.d.ts.map +1 -0
  16. package/lib/domains/icons/index.js +89 -0
  17. package/lib/domains/icons/index.js.map +1 -0
  18. package/lib/domains/icons/infrastructure/adapters/LucideAdapter.d.ts +24 -0
  19. package/lib/domains/icons/infrastructure/adapters/LucideAdapter.d.ts.map +1 -0
  20. package/lib/domains/icons/infrastructure/adapters/LucideAdapter.js +85 -0
  21. package/lib/domains/icons/infrastructure/adapters/LucideAdapter.js.map +1 -0
  22. package/lib/domains/icons/infrastructure/registries/ExpoIconRegistry.d.ts +23 -0
  23. package/lib/domains/icons/infrastructure/registries/ExpoIconRegistry.d.ts.map +1 -0
  24. package/lib/domains/icons/infrastructure/registries/ExpoIconRegistry.js +178 -0
  25. package/lib/domains/icons/infrastructure/registries/ExpoIconRegistry.js.map +1 -0
  26. package/lib/domains/icons/presentation/components/Icon.d.ts +42 -0
  27. package/lib/domains/icons/presentation/components/Icon.d.ts.map +1 -0
  28. package/lib/domains/icons/presentation/components/Icon.js +86 -0
  29. package/lib/domains/icons/presentation/components/Icon.js.map +1 -0
  30. package/lib/domains/icons/presentation/hooks/useIconLibrary.d.ts +38 -0
  31. package/lib/domains/icons/presentation/hooks/useIconLibrary.d.ts.map +1 -0
  32. package/lib/domains/icons/presentation/hooks/useIconLibrary.js +114 -0
  33. package/lib/domains/icons/presentation/hooks/useIconLibrary.js.map +1 -0
  34. package/lib/index.d.ts +66 -0
  35. package/lib/index.d.ts.map +1 -0
  36. package/lib/index.js +106 -0
  37. package/lib/index.js.map +1 -0
  38. package/lib/infrastructure/theme/globalThemeStore.d.ts +42 -0
  39. package/lib/infrastructure/theme/globalThemeStore.d.ts.map +1 -0
  40. package/lib/infrastructure/theme/globalThemeStore.js +38 -0
  41. package/lib/infrastructure/theme/globalThemeStore.js.map +1 -0
  42. package/lib/presentation/atoms/AtomicAvatar.d.ts +48 -0
  43. package/lib/presentation/atoms/AtomicAvatar.d.ts.map +1 -0
  44. package/lib/presentation/atoms/AtomicAvatar.js +85 -0
  45. package/lib/presentation/atoms/AtomicAvatar.js.map +1 -0
  46. package/lib/presentation/atoms/AtomicAvatarGroup.d.ts +56 -0
  47. package/lib/presentation/atoms/AtomicAvatarGroup.d.ts.map +1 -0
  48. package/lib/presentation/atoms/AtomicAvatarGroup.js +83 -0
  49. package/lib/presentation/atoms/AtomicAvatarGroup.js.map +1 -0
  50. package/lib/presentation/atoms/AtomicBadge.d.ts +42 -0
  51. package/lib/presentation/atoms/AtomicBadge.d.ts.map +1 -0
  52. package/lib/presentation/atoms/AtomicBadge.js +168 -0
  53. package/lib/presentation/atoms/AtomicBadge.js.map +1 -0
  54. package/lib/presentation/atoms/AtomicButton.d.ts +22 -0
  55. package/lib/presentation/atoms/AtomicButton.d.ts.map +1 -0
  56. package/lib/presentation/atoms/AtomicButton.js +193 -0
  57. package/lib/presentation/atoms/AtomicButton.js.map +1 -0
  58. package/lib/presentation/atoms/AtomicCard.d.ts +15 -0
  59. package/lib/presentation/atoms/AtomicCard.d.ts.map +1 -0
  60. package/lib/presentation/atoms/AtomicCard.js +89 -0
  61. package/lib/presentation/atoms/AtomicCard.js.map +1 -0
  62. package/lib/presentation/atoms/AtomicChip.d.ts +53 -0
  63. package/lib/presentation/atoms/AtomicChip.d.ts.map +1 -0
  64. package/lib/presentation/atoms/AtomicChip.js +131 -0
  65. package/lib/presentation/atoms/AtomicChip.js.map +1 -0
  66. package/lib/presentation/atoms/AtomicDatePicker.d.ts +75 -0
  67. package/lib/presentation/atoms/AtomicDatePicker.d.ts.map +1 -0
  68. package/lib/presentation/atoms/AtomicDatePicker.js +246 -0
  69. package/lib/presentation/atoms/AtomicDatePicker.js.map +1 -0
  70. package/lib/presentation/atoms/AtomicDivider.d.ts +45 -0
  71. package/lib/presentation/atoms/AtomicDivider.d.ts.map +1 -0
  72. package/lib/presentation/atoms/AtomicDivider.js +58 -0
  73. package/lib/presentation/atoms/AtomicDivider.js.map +1 -0
  74. package/lib/presentation/atoms/AtomicFab.d.ts +38 -0
  75. package/lib/presentation/atoms/AtomicFab.d.ts.map +1 -0
  76. package/lib/presentation/atoms/AtomicFab.js +69 -0
  77. package/lib/presentation/atoms/AtomicFab.js.map +1 -0
  78. package/lib/presentation/atoms/AtomicFilter.d.ts +37 -0
  79. package/lib/presentation/atoms/AtomicFilter.d.ts.map +1 -0
  80. package/lib/presentation/atoms/AtomicFilter.js +104 -0
  81. package/lib/presentation/atoms/AtomicFilter.js.map +1 -0
  82. package/lib/presentation/atoms/AtomicFormError.d.ts +30 -0
  83. package/lib/presentation/atoms/AtomicFormError.d.ts.map +1 -0
  84. package/lib/presentation/atoms/AtomicFormError.js +64 -0
  85. package/lib/presentation/atoms/AtomicFormError.js.map +1 -0
  86. package/lib/presentation/atoms/AtomicIcon.d.ts +36 -0
  87. package/lib/presentation/atoms/AtomicIcon.d.ts.map +1 -0
  88. package/lib/presentation/atoms/AtomicIcon.js +30 -0
  89. package/lib/presentation/atoms/AtomicIcon.js.map +1 -0
  90. package/lib/presentation/atoms/AtomicImage.d.ts +40 -0
  91. package/lib/presentation/atoms/AtomicImage.d.ts.map +1 -0
  92. package/lib/presentation/atoms/AtomicImage.js +92 -0
  93. package/lib/presentation/atoms/AtomicImage.js.map +1 -0
  94. package/lib/presentation/atoms/AtomicInput.d.ts +71 -0
  95. package/lib/presentation/atoms/AtomicInput.d.ts.map +1 -0
  96. package/lib/presentation/atoms/AtomicInput.js +196 -0
  97. package/lib/presentation/atoms/AtomicInput.js.map +1 -0
  98. package/lib/presentation/atoms/AtomicNumberInput.d.ts +69 -0
  99. package/lib/presentation/atoms/AtomicNumberInput.d.ts.map +1 -0
  100. package/lib/presentation/atoms/AtomicNumberInput.js +125 -0
  101. package/lib/presentation/atoms/AtomicNumberInput.js.map +1 -0
  102. package/lib/presentation/atoms/AtomicPicker.d.ts +52 -0
  103. package/lib/presentation/atoms/AtomicPicker.d.ts.map +1 -0
  104. package/lib/presentation/atoms/AtomicPicker.js +299 -0
  105. package/lib/presentation/atoms/AtomicPicker.js.map +1 -0
  106. package/lib/presentation/atoms/AtomicProgress.d.ts +47 -0
  107. package/lib/presentation/atoms/AtomicProgress.d.ts.map +1 -0
  108. package/lib/presentation/atoms/AtomicProgress.js +81 -0
  109. package/lib/presentation/atoms/AtomicProgress.js.map +1 -0
  110. package/lib/presentation/atoms/AtomicSearchBar.d.ts +19 -0
  111. package/lib/presentation/atoms/AtomicSearchBar.d.ts.map +1 -0
  112. package/lib/presentation/atoms/AtomicSearchBar.js +46 -0
  113. package/lib/presentation/atoms/AtomicSearchBar.js.map +1 -0
  114. package/lib/presentation/atoms/AtomicSkeleton.d.ts +43 -0
  115. package/lib/presentation/atoms/AtomicSkeleton.d.ts.map +1 -0
  116. package/lib/presentation/atoms/AtomicSkeleton.js +84 -0
  117. package/lib/presentation/atoms/AtomicSkeleton.js.map +1 -0
  118. package/lib/presentation/atoms/AtomicSort.d.ts +72 -0
  119. package/lib/presentation/atoms/AtomicSort.d.ts.map +1 -0
  120. package/lib/presentation/atoms/AtomicSort.js +77 -0
  121. package/lib/presentation/atoms/AtomicSort.js.map +1 -0
  122. package/lib/presentation/atoms/AtomicSwitch.d.ts +43 -0
  123. package/lib/presentation/atoms/AtomicSwitch.d.ts.map +1 -0
  124. package/lib/presentation/atoms/AtomicSwitch.js +104 -0
  125. package/lib/presentation/atoms/AtomicSwitch.js.map +1 -0
  126. package/lib/presentation/atoms/AtomicText.d.ts +14 -0
  127. package/lib/presentation/atoms/AtomicText.d.ts.map +1 -0
  128. package/lib/presentation/atoms/AtomicText.js +36 -0
  129. package/lib/presentation/atoms/AtomicText.js.map +1 -0
  130. package/lib/presentation/atoms/AtomicTextArea.d.ts +85 -0
  131. package/lib/presentation/atoms/AtomicTextArea.d.ts.map +1 -0
  132. package/lib/presentation/atoms/AtomicTextArea.js +196 -0
  133. package/lib/presentation/atoms/AtomicTextArea.js.map +1 -0
  134. package/lib/presentation/atoms/AtomicTouchable.d.ts +87 -0
  135. package/lib/presentation/atoms/AtomicTouchable.d.ts.map +1 -0
  136. package/lib/presentation/atoms/AtomicTouchable.js +151 -0
  137. package/lib/presentation/atoms/AtomicTouchable.js.map +1 -0
  138. package/lib/presentation/atoms/fab/styles/fabStyles.d.ts +23 -0
  139. package/lib/presentation/atoms/fab/styles/fabStyles.d.ts.map +1 -0
  140. package/lib/presentation/atoms/fab/styles/fabStyles.js +63 -0
  141. package/lib/presentation/atoms/fab/styles/fabStyles.js.map +1 -0
  142. package/lib/presentation/atoms/fab/types/index.d.ts +76 -0
  143. package/lib/presentation/atoms/fab/types/index.d.ts.map +1 -0
  144. package/lib/presentation/atoms/fab/types/index.js +2 -0
  145. package/lib/presentation/atoms/fab/types/index.js.map +1 -0
  146. package/lib/presentation/atoms/filter/styles/filterStyles.d.ts +15 -0
  147. package/lib/presentation/atoms/filter/styles/filterStyles.d.ts.map +1 -0
  148. package/lib/presentation/atoms/filter/styles/filterStyles.js +29 -0
  149. package/lib/presentation/atoms/filter/styles/filterStyles.js.map +1 -0
  150. package/lib/presentation/atoms/filter/types/index.d.ts +76 -0
  151. package/lib/presentation/atoms/filter/types/index.d.ts.map +1 -0
  152. package/lib/presentation/atoms/filter/types/index.js +2 -0
  153. package/lib/presentation/atoms/filter/types/index.js.map +1 -0
  154. package/lib/presentation/atoms/index.d.ts +276 -0
  155. package/lib/presentation/atoms/index.d.ts.map +1 -0
  156. package/lib/presentation/atoms/index.js +149 -0
  157. package/lib/presentation/atoms/index.js.map +1 -0
  158. package/lib/presentation/atoms/input/hooks/useInputState.d.ts +7 -0
  159. package/lib/presentation/atoms/input/hooks/useInputState.d.ts.map +1 -0
  160. package/lib/presentation/atoms/input/hooks/useInputState.js +13 -0
  161. package/lib/presentation/atoms/input/hooks/useInputState.js.map +1 -0
  162. package/lib/presentation/atoms/input/styles/inputStyles.d.ts +13 -0
  163. package/lib/presentation/atoms/input/styles/inputStyles.d.ts.map +1 -0
  164. package/lib/presentation/atoms/input/styles/inputStyles.js +59 -0
  165. package/lib/presentation/atoms/input/styles/inputStyles.js.map +1 -0
  166. package/lib/presentation/atoms/input/types/index.d.ts +24 -0
  167. package/lib/presentation/atoms/input/types/index.d.ts.map +1 -0
  168. package/lib/presentation/atoms/input/types/index.js +2 -0
  169. package/lib/presentation/atoms/input/types/index.js.map +1 -0
  170. package/lib/presentation/atoms/picker/styles/pickerStyles.d.ts +96 -0
  171. package/lib/presentation/atoms/picker/styles/pickerStyles.d.ts.map +1 -0
  172. package/lib/presentation/atoms/picker/styles/pickerStyles.js +177 -0
  173. package/lib/presentation/atoms/picker/styles/pickerStyles.js.map +1 -0
  174. package/lib/presentation/atoms/picker/types/index.d.ts +38 -0
  175. package/lib/presentation/atoms/picker/types/index.d.ts.map +1 -0
  176. package/lib/presentation/atoms/picker/types/index.js +2 -0
  177. package/lib/presentation/atoms/picker/types/index.js.map +1 -0
  178. package/lib/presentation/atoms/touchable/styles/touchableStyles.d.ts +36 -0
  179. package/lib/presentation/atoms/touchable/styles/touchableStyles.d.ts.map +1 -0
  180. package/lib/presentation/atoms/touchable/styles/touchableStyles.js +62 -0
  181. package/lib/presentation/atoms/touchable/styles/touchableStyles.js.map +1 -0
  182. package/lib/presentation/atoms/touchable/types/index.d.ts +140 -0
  183. package/lib/presentation/atoms/touchable/types/index.d.ts.map +1 -0
  184. package/lib/presentation/atoms/touchable/types/index.js +2 -0
  185. package/lib/presentation/atoms/touchable/types/index.js.map +1 -0
  186. package/lib/presentation/hooks/useAppDesignTokens.d.ts +34 -0
  187. package/lib/presentation/hooks/useAppDesignTokens.d.ts.map +1 -0
  188. package/lib/presentation/hooks/useAppDesignTokens.js +39 -0
  189. package/lib/presentation/hooks/useAppDesignTokens.js.map +1 -0
  190. package/lib/presentation/hooks/useResponsive.d.ts +80 -0
  191. package/lib/presentation/hooks/useResponsive.d.ts.map +1 -0
  192. package/lib/presentation/hooks/useResponsive.js +82 -0
  193. package/lib/presentation/hooks/useResponsive.js.map +1 -0
  194. package/lib/presentation/loading/index.d.ts +23 -0
  195. package/lib/presentation/loading/index.d.ts.map +1 -0
  196. package/lib/presentation/loading/index.js +26 -0
  197. package/lib/presentation/loading/index.js.map +1 -0
  198. package/lib/presentation/loading/presentation/components/LoadingSpinner.d.ts +28 -0
  199. package/lib/presentation/loading/presentation/components/LoadingSpinner.d.ts.map +1 -0
  200. package/lib/presentation/loading/presentation/components/LoadingSpinner.js +77 -0
  201. package/lib/presentation/loading/presentation/components/LoadingSpinner.js.map +1 -0
  202. package/lib/presentation/loading/presentation/components/LoadingState.d.ts +39 -0
  203. package/lib/presentation/loading/presentation/components/LoadingState.d.ts.map +1 -0
  204. package/lib/presentation/loading/presentation/components/LoadingState.js +123 -0
  205. package/lib/presentation/loading/presentation/components/LoadingState.js.map +1 -0
  206. package/lib/presentation/loading/presentation/hooks/useLoading.d.ts +50 -0
  207. package/lib/presentation/loading/presentation/hooks/useLoading.d.ts.map +1 -0
  208. package/lib/presentation/loading/presentation/hooks/useLoading.js +49 -0
  209. package/lib/presentation/loading/presentation/hooks/useLoading.js.map +1 -0
  210. package/lib/presentation/molecules/AtomicConfirmationModal.d.ts +73 -0
  211. package/lib/presentation/molecules/AtomicConfirmationModal.d.ts.map +1 -0
  212. package/lib/presentation/molecules/AtomicConfirmationModal.js +172 -0
  213. package/lib/presentation/molecules/AtomicConfirmationModal.js.map +1 -0
  214. package/lib/presentation/molecules/EmptyState.d.ts +41 -0
  215. package/lib/presentation/molecules/EmptyState.d.ts.map +1 -0
  216. package/lib/presentation/molecules/EmptyState.js +68 -0
  217. package/lib/presentation/molecules/EmptyState.js.map +1 -0
  218. package/lib/presentation/molecules/FormField.d.ts +22 -0
  219. package/lib/presentation/molecules/FormField.d.ts.map +1 -0
  220. package/lib/presentation/molecules/FormField.js +76 -0
  221. package/lib/presentation/molecules/FormField.js.map +1 -0
  222. package/lib/presentation/molecules/GridContainer.d.ts +40 -0
  223. package/lib/presentation/molecules/GridContainer.d.ts.map +1 -0
  224. package/lib/presentation/molecules/GridContainer.js +77 -0
  225. package/lib/presentation/molecules/GridContainer.js.map +1 -0
  226. package/lib/presentation/molecules/IconContainer.d.ts +29 -0
  227. package/lib/presentation/molecules/IconContainer.d.ts.map +1 -0
  228. package/lib/presentation/molecules/IconContainer.js +60 -0
  229. package/lib/presentation/molecules/IconContainer.js.map +1 -0
  230. package/lib/presentation/molecules/LanguageSwitcher.d.ts +10 -0
  231. package/lib/presentation/molecules/LanguageSwitcher.d.ts.map +1 -0
  232. package/lib/presentation/molecules/LanguageSwitcher.js +24 -0
  233. package/lib/presentation/molecules/LanguageSwitcher.js.map +1 -0
  234. package/lib/presentation/molecules/ListItem.d.ts +5 -0
  235. package/lib/presentation/molecules/ListItem.d.ts.map +1 -0
  236. package/lib/presentation/molecules/ListItem.js +24 -0
  237. package/lib/presentation/molecules/ListItem.js.map +1 -0
  238. package/lib/presentation/molecules/ScreenHeader.d.ts +55 -0
  239. package/lib/presentation/molecules/ScreenHeader.d.ts.map +1 -0
  240. package/lib/presentation/molecules/ScreenHeader.js +94 -0
  241. package/lib/presentation/molecules/ScreenHeader.js.map +1 -0
  242. package/lib/presentation/molecules/SearchBar.d.ts +18 -0
  243. package/lib/presentation/molecules/SearchBar.d.ts.map +1 -0
  244. package/lib/presentation/molecules/SearchBar.js +47 -0
  245. package/lib/presentation/molecules/SearchBar.js.map +1 -0
  246. package/lib/presentation/molecules/SectionCard.d.ts +25 -0
  247. package/lib/presentation/molecules/SectionCard.d.ts.map +1 -0
  248. package/lib/presentation/molecules/SectionCard.js +47 -0
  249. package/lib/presentation/molecules/SectionCard.js.map +1 -0
  250. package/lib/presentation/molecules/SectionContainer.d.ts +33 -0
  251. package/lib/presentation/molecules/SectionContainer.d.ts.map +1 -0
  252. package/lib/presentation/molecules/SectionContainer.js +64 -0
  253. package/lib/presentation/molecules/SectionContainer.js.map +1 -0
  254. package/lib/presentation/molecules/SectionHeader.d.ts +37 -0
  255. package/lib/presentation/molecules/SectionHeader.d.ts.map +1 -0
  256. package/lib/presentation/molecules/SectionHeader.js +73 -0
  257. package/lib/presentation/molecules/SectionHeader.js.map +1 -0
  258. package/lib/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.d.ts +50 -0
  259. package/lib/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.d.ts.map +1 -0
  260. package/lib/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.js +115 -0
  261. package/lib/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.js.map +1 -0
  262. package/lib/presentation/molecules/confirmation-modal/types/index.d.ts +88 -0
  263. package/lib/presentation/molecules/confirmation-modal/types/index.d.ts.map +1 -0
  264. package/lib/presentation/molecules/confirmation-modal/types/index.js +7 -0
  265. package/lib/presentation/molecules/confirmation-modal/types/index.js.map +1 -0
  266. package/lib/presentation/molecules/index.d.ts +28 -0
  267. package/lib/presentation/molecules/index.d.ts.map +1 -0
  268. package/lib/presentation/molecules/index.js +18 -0
  269. package/lib/presentation/molecules/index.js.map +1 -0
  270. package/lib/presentation/molecules/languageswitcher/config/languageSwitcherConfig.d.ts +11 -0
  271. package/lib/presentation/molecules/languageswitcher/config/languageSwitcherConfig.d.ts.map +1 -0
  272. package/lib/presentation/molecules/languageswitcher/config/languageSwitcherConfig.js +6 -0
  273. package/lib/presentation/molecules/languageswitcher/config/languageSwitcherConfig.js.map +1 -0
  274. package/lib/presentation/molecules/languageswitcher/hooks/useLanguageNavigation.d.ts +5 -0
  275. package/lib/presentation/molecules/languageswitcher/hooks/useLanguageNavigation.d.ts.map +1 -0
  276. package/lib/presentation/molecules/languageswitcher/hooks/useLanguageNavigation.js +12 -0
  277. package/lib/presentation/molecules/languageswitcher/hooks/useLanguageNavigation.js.map +1 -0
  278. package/lib/presentation/molecules/listitem/styles/listItemStyles.d.ts +12 -0
  279. package/lib/presentation/molecules/listitem/styles/listItemStyles.d.ts.map +1 -0
  280. package/lib/presentation/molecules/listitem/styles/listItemStyles.js +15 -0
  281. package/lib/presentation/molecules/listitem/styles/listItemStyles.js.map +1 -0
  282. package/lib/presentation/molecules/listitem/types/index.d.ts +17 -0
  283. package/lib/presentation/molecules/listitem/types/index.d.ts.map +1 -0
  284. package/lib/presentation/molecules/listitem/types/index.js +2 -0
  285. package/lib/presentation/molecules/listitem/types/index.js.map +1 -0
  286. package/lib/presentation/organisms/AppHeader.d.ts +30 -0
  287. package/lib/presentation/organisms/AppHeader.d.ts.map +1 -0
  288. package/lib/presentation/organisms/AppHeader.js +78 -0
  289. package/lib/presentation/organisms/AppHeader.js.map +1 -0
  290. package/lib/presentation/organisms/FormContainer.d.ts +76 -0
  291. package/lib/presentation/organisms/FormContainer.d.ts.map +1 -0
  292. package/lib/presentation/organisms/FormContainer.js +127 -0
  293. package/lib/presentation/organisms/FormContainer.js.map +1 -0
  294. package/lib/presentation/organisms/ScreenLayout.d.ts +99 -0
  295. package/lib/presentation/organisms/ScreenLayout.d.ts.map +1 -0
  296. package/lib/presentation/organisms/ScreenLayout.js +78 -0
  297. package/lib/presentation/organisms/ScreenLayout.js.map +1 -0
  298. package/lib/presentation/organisms/index.d.ts +16 -0
  299. package/lib/presentation/organisms/index.d.ts.map +1 -0
  300. package/lib/presentation/organisms/index.js +14 -0
  301. package/lib/presentation/organisms/index.js.map +1 -0
  302. package/lib/presentation/tokens/AppDesignTokens.d.ts +14 -0
  303. package/lib/presentation/tokens/AppDesignTokens.d.ts.map +1 -0
  304. package/lib/presentation/tokens/AppDesignTokens.js +23 -0
  305. package/lib/presentation/tokens/AppDesignTokens.js.map +1 -0
  306. package/lib/presentation/tokens/commonStyles.d.ts +122 -0
  307. package/lib/presentation/tokens/commonStyles.d.ts.map +1 -0
  308. package/lib/presentation/tokens/commonStyles.js +220 -0
  309. package/lib/presentation/tokens/commonStyles.js.map +1 -0
  310. package/lib/presentation/tokens/core/BaseTokens.d.ts +337 -0
  311. package/lib/presentation/tokens/core/BaseTokens.d.ts.map +1 -0
  312. package/lib/presentation/tokens/core/BaseTokens.js +322 -0
  313. package/lib/presentation/tokens/core/BaseTokens.js.map +1 -0
  314. package/lib/presentation/tokens/core/ColorPalette.d.ts +216 -0
  315. package/lib/presentation/tokens/core/ColorPalette.d.ts.map +1 -0
  316. package/lib/presentation/tokens/core/ColorPalette.js +330 -0
  317. package/lib/presentation/tokens/core/ColorPalette.js.map +1 -0
  318. package/lib/presentation/tokens/core/TokenFactory.d.ts +229 -0
  319. package/lib/presentation/tokens/core/TokenFactory.d.ts.map +1 -0
  320. package/lib/presentation/tokens/core/TokenFactory.js +87 -0
  321. package/lib/presentation/tokens/core/TokenFactory.js.map +1 -0
  322. package/lib/presentation/utils/platformConstants.d.ts +100 -0
  323. package/lib/presentation/utils/platformConstants.d.ts.map +1 -0
  324. package/lib/presentation/utils/platformConstants.js +114 -0
  325. package/lib/presentation/utils/platformConstants.js.map +1 -0
  326. package/lib/presentation/utils/responsive.d.ts +218 -0
  327. package/lib/presentation/utils/responsive.d.ts.map +1 -0
  328. package/lib/presentation/utils/responsive.js +452 -0
  329. package/lib/presentation/utils/responsive.js.map +1 -0
  330. package/lib/presentation/utils/variants/compound.d.ts +10 -0
  331. package/lib/presentation/utils/variants/compound.d.ts.map +1 -0
  332. package/lib/presentation/utils/variants/compound.js +16 -0
  333. package/lib/presentation/utils/variants/compound.js.map +1 -0
  334. package/lib/presentation/utils/variants/core.d.ts +15 -0
  335. package/lib/presentation/utils/variants/core.d.ts.map +1 -0
  336. package/lib/presentation/utils/variants/core.js +23 -0
  337. package/lib/presentation/utils/variants/core.js.map +1 -0
  338. package/lib/presentation/utils/variants/helpers.d.ts +5 -0
  339. package/lib/presentation/utils/variants/helpers.d.ts.map +1 -0
  340. package/lib/presentation/utils/variants/helpers.js +10 -0
  341. package/lib/presentation/utils/variants/helpers.js.map +1 -0
  342. package/lib/presentation/utils/variants.d.ts +4 -0
  343. package/lib/presentation/utils/variants.d.ts.map +1 -0
  344. package/lib/presentation/utils/variants.js +4 -0
  345. package/lib/presentation/utils/variants.js.map +1 -0
  346. package/package.json +40 -4
  347. package/src/domains/icons/domain/interfaces/IIconAdapter.ts +5 -3
  348. package/src/domains/icons/infrastructure/adapters/LucideAdapter.ts +1 -1
  349. package/src/presentation/molecules/AtomicConfirmationModal.tsx +1 -1
  350. package/src/presentation/molecules/languageswitcher/hooks/useLanguageNavigation.ts +1 -2
@@ -0,0 +1,218 @@
1
+ /**
2
+ * Responsive Design Utilities
3
+ *
4
+ * Centralized responsive sizing and spacing utilities to prevent
5
+ * Apple App Store rejection due to layout issues on different devices.
6
+ *
7
+ * Supports:
8
+ * - iPhone 13 mini (5.4" - smallest)
9
+ * - iPhone 13/14/15 (6.1" - standard)
10
+ * - iPhone 14 Pro Max (6.7" - largest phone)
11
+ * - iPad Air (10.9" - tablet)
12
+ */
13
+ /**
14
+ * Get current screen dimensions
15
+ */
16
+ export declare const getScreenDimensions: () => {
17
+ width: number;
18
+ height: number;
19
+ };
20
+ /**
21
+ * Check if current device is a small phone (iPhone 13 mini, SE)
22
+ */
23
+ export declare const isSmallPhone: () => boolean;
24
+ /**
25
+ * Check if current device is a tablet (iPad)
26
+ */
27
+ export declare const isTablet: () => boolean;
28
+ /**
29
+ * Responsive logo/icon size
30
+ * Small devices: 100-120px
31
+ * Medium devices: 120-160px
32
+ * Tablets: 160-200px
33
+ */
34
+ export declare const getResponsiveLogoSize: (baseSize?: number) => number;
35
+ /**
36
+ * Responsive multiline input height
37
+ * Prevents keyboard overlap on small devices
38
+ *
39
+ * Small devices: 100-120px
40
+ * Medium devices: 120-150px
41
+ * Tablets: 150-200px
42
+ */
43
+ export declare const getResponsiveInputHeight: (baseHeight?: number) => number;
44
+ /**
45
+ * Responsive horizontal padding
46
+ * Accounts for safe area on notched devices and iPad
47
+ */
48
+ export declare const getResponsiveHorizontalPadding: (basePadding?: number, insets?: {
49
+ left: number;
50
+ right: number;
51
+ }) => number;
52
+ /**
53
+ * Responsive bottom positioning
54
+ * Accounts for home indicator and safe area
55
+ */
56
+ export declare const getResponsiveBottomPosition: (basePosition?: number, insets?: {
57
+ bottom: number;
58
+ }) => number;
59
+ /**
60
+ * Responsive FAB (Floating Action Button) position
61
+ * CRITICAL: Ensures FAB appears above tab bar (70-90px tall) and safe areas
62
+ *
63
+ * Tab bar heights:
64
+ * - iOS: ~80-90px (including safe area)
65
+ * - Android: ~70px
66
+ *
67
+ * FAB positioning:
68
+ * - Tablets: 100px from bottom (generous spacing)
69
+ * - Phones: 90px from bottom (above tab bar)
70
+ * - Safe area aware (home indicator clearance)
71
+ */
72
+ export declare const getResponsiveFABPosition: (insets?: {
73
+ bottom: number;
74
+ right: number;
75
+ }) => {
76
+ bottom: number;
77
+ right: number;
78
+ };
79
+ /**
80
+ * Responsive modal max height
81
+ * Prevents modals from taking too much space on tablets
82
+ * or too little on small devices
83
+ */
84
+ export declare const getResponsiveModalMaxHeight: () => string;
85
+ /**
86
+ * Responsive modal min height
87
+ * Ensures modals are always usable and not too small
88
+ * Complements getResponsiveModalMaxHeight for complete modal sizing
89
+ */
90
+ export declare const getResponsiveMinModalHeight: () => number;
91
+ /**
92
+ * Responsive icon container size
93
+ * Used in onboarding, cards, etc.
94
+ */
95
+ export declare const getResponsiveIconContainerSize: (baseSize?: number) => number;
96
+ /**
97
+ * Responsive grid columns
98
+ * Returns number of columns for grid layouts
99
+ */
100
+ export declare const getResponsiveGridColumns: (mobileColumns?: number, tabletColumns?: number) => number;
101
+ /**
102
+ * Responsive max width for content
103
+ * Prevents text from stretching too wide on tablets
104
+ */
105
+ export declare const getResponsiveMaxWidth: (baseWidth?: number) => number;
106
+ /**
107
+ * Responsive font size
108
+ * Scales text for different devices while respecting minimum sizes
109
+ */
110
+ export declare const getResponsiveFontSize: (baseFontSize: number) => number;
111
+ /**
112
+ * Check if device is in landscape mode
113
+ */
114
+ export declare const isLandscape: () => boolean;
115
+ /**
116
+ * Get universal keyboard behavior
117
+ * Returns 'padding' which works across all platforms (iOS, Android, Web)
118
+ */
119
+ export declare const getKeyboardBehavior: () => "padding" | "height" | "position" | undefined;
120
+ /**
121
+ * Device type enum for conditional rendering
122
+ */
123
+ export declare enum DeviceType {
124
+ SMALL_PHONE = "SMALL_PHONE",
125
+ MEDIUM_PHONE = "MEDIUM_PHONE",
126
+ LARGE_PHONE = "LARGE_PHONE",
127
+ TABLET = "TABLET"
128
+ }
129
+ /**
130
+ * Get current device type
131
+ */
132
+ export declare const getDeviceType: () => DeviceType;
133
+ /**
134
+ * Apple HIG compliant touch target size
135
+ */
136
+ export declare const getMinTouchTargetSize: () => number;
137
+ /**
138
+ * Responsive spacing multiplier
139
+ * Returns a multiplier for spacing based on device size
140
+ */
141
+ export declare const getSpacingMultiplier: () => number;
142
+ /**
143
+ * Onboarding icon container top margin
144
+ * Small phones: 24px (lg), Others: 40px (xxl)
145
+ */
146
+ export declare const getOnboardingIconMarginTop: () => number;
147
+ /**
148
+ * Onboarding icon container bottom margin
149
+ * Tablets: 60px (xxl * 1.5 for extra breathing room), Others: 40px (xxl)
150
+ */
151
+ export declare const getOnboardingIconMarginBottom: () => number;
152
+ /**
153
+ * Onboarding title bottom margin
154
+ * Tablets: 24px (lg), Others: 16px (md)
155
+ */
156
+ export declare const getOnboardingTitleMarginBottom: () => number;
157
+ /**
158
+ * Onboarding text horizontal padding (title and description)
159
+ * Small phones: 8px (sm for tighter fit), Others: 16px (md)
160
+ */
161
+ export declare const getOnboardingTextPadding: () => number;
162
+ /**
163
+ * Onboarding description top margin
164
+ * Small phones: 4px (xs), Others: 8px (sm)
165
+ */
166
+ export declare const getOnboardingDescriptionMarginTop: () => number;
167
+ /**
168
+ * Onboarding icon size (for icon inside container)
169
+ * Calculated as ~55% of icon container size for proper visual balance
170
+ * Small phones: ~66px (55% of 120px), Standard: ~77px (55% of 140px), Tablets: ~99px (55% of 180px)
171
+ */
172
+ export declare const getOnboardingIconSize: () => number;
173
+ /**
174
+ * Keyboard vertical offset for KeyboardAvoidingView
175
+ * Accounts for header/navigation bar height
176
+ * Universal value that works across all platforms
177
+ */
178
+ export declare const getKeyboardVerticalOffset: () => number;
179
+ /**
180
+ * Form container bottom padding
181
+ * Prevents overlap with bottom tab navigation and ensures submit buttons are accessible
182
+ *
183
+ * Formula: safeAreaBottom + tabBarHeight + extraSpace
184
+ * - Tab bar height: ~56px (iOS/Android standard)
185
+ * - Extra space: ~24px (breathing room for submit button)
186
+ * - Safe area: Variable (home indicator on iPhone)
187
+ * - Minimum: 100px (ensures buttons always accessible)
188
+ */
189
+ export declare const getFormBottomPadding: (safeAreaBottom: number) => number;
190
+ /**
191
+ * Input field icon size
192
+ * Used for leading/trailing icons and password toggle
193
+ * Apple HIG: Minimum 22px for touch targets
194
+ */
195
+ export declare const getInputIconSize: () => number;
196
+ /**
197
+ * Form content container width
198
+ * Forms need more generous width than regular content to prevent cramped layouts
199
+ *
200
+ * Strategy:
201
+ * - Phones: undefined (no max width restriction, fills available space)
202
+ * - Tablets: Max 700px (readable but not restrictive)
203
+ *
204
+ * Different from getResponsiveMaxWidth which is for text content (max 400px)
205
+ *
206
+ * @returns number for tablets (700px max), undefined for phones (no restriction)
207
+ */
208
+ export declare const getFormContentWidth: () => number | undefined;
209
+ /**
210
+ * Form element spacing (vertical)
211
+ * Vertical spacing between form elements (inputs, buttons, etc.)
212
+ * Used with Children.map() wrapper pattern for universal compatibility
213
+ * Replaces CSS gap property (old RN version compatibility)
214
+ *
215
+ * Universal pattern - works on iOS, Android, Web
216
+ */
217
+ export declare const getFormElementSpacing: () => number;
218
+ //# sourceMappingURL=responsive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responsive.d.ts","sourceRoot":"","sources":["../../../src/presentation/utils/responsive.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,452 @@
1
+ /**
2
+ * Responsive Design Utilities
3
+ *
4
+ * Centralized responsive sizing and spacing utilities to prevent
5
+ * Apple App Store rejection due to layout issues on different devices.
6
+ *
7
+ * Supports:
8
+ * - iPhone 13 mini (5.4" - smallest)
9
+ * - iPhone 13/14/15 (6.1" - standard)
10
+ * - iPhone 14 Pro Max (6.7" - largest phone)
11
+ * - iPad Air (10.9" - tablet)
12
+ */
13
+ import { Dimensions } from 'react-native';
14
+ // Device breakpoints
15
+ const BREAKPOINTS = {
16
+ SMALL_PHONE: 375, // iPhone 13 mini and smaller
17
+ MEDIUM_PHONE: 414, // iPhone 13/14/15
18
+ LARGE_PHONE: 428, // iPhone 14 Pro Max
19
+ SMALL_TABLET: 768, // iPad mini
20
+ TABLET: 1024, // iPad Air
21
+ };
22
+ // Safe minimum sizes (Apple HIG recommendations)
23
+ const MIN_TOUCH_TARGET = 44;
24
+ const MIN_TEXT_SIZE = 11;
25
+ const MIN_ICON_SIZE = 22;
26
+ // Spacing scale (matches design token scales)
27
+ // Used for centralized responsive calculations - components should NEVER calculate spacing
28
+ const SPACING_SCALE = {
29
+ xs: 4,
30
+ sm: 8,
31
+ md: 16,
32
+ lg: 24,
33
+ xl: 32,
34
+ xxl: 40,
35
+ };
36
+ /**
37
+ * Get current screen dimensions
38
+ */
39
+ export const getScreenDimensions = () => {
40
+ const { width, height } = Dimensions.get('window');
41
+ return { width, height };
42
+ };
43
+ /**
44
+ * Check if current device is a small phone (iPhone 13 mini, SE)
45
+ */
46
+ export const isSmallPhone = () => {
47
+ const { width } = getScreenDimensions();
48
+ return width <= BREAKPOINTS.SMALL_PHONE;
49
+ };
50
+ /**
51
+ * Check if current device is a tablet (iPad)
52
+ */
53
+ export const isTablet = () => {
54
+ const { width } = getScreenDimensions();
55
+ return width >= BREAKPOINTS.SMALL_TABLET;
56
+ };
57
+ /**
58
+ * Responsive logo/icon size
59
+ * Small devices: 100-120px
60
+ * Medium devices: 120-160px
61
+ * Tablets: 160-200px
62
+ */
63
+ export const getResponsiveLogoSize = (baseSize = 140) => {
64
+ const { width } = getScreenDimensions();
65
+ if (width <= BREAKPOINTS.SMALL_PHONE) {
66
+ // iPhone 13 mini: 28% of width, max 120px
67
+ return Math.min(Math.max(width * 0.28, 100), 120);
68
+ }
69
+ else if (width >= BREAKPOINTS.TABLET) {
70
+ // iPad: 15% of width, max 200px
71
+ return Math.min(Math.max(width * 0.15, 140), 200);
72
+ }
73
+ // Standard phones: use base size
74
+ return baseSize;
75
+ };
76
+ /**
77
+ * Responsive multiline input height
78
+ * Prevents keyboard overlap on small devices
79
+ *
80
+ * Small devices: 100-120px
81
+ * Medium devices: 120-150px
82
+ * Tablets: 150-200px
83
+ */
84
+ export const getResponsiveInputHeight = (baseHeight = 200) => {
85
+ const { height } = getScreenDimensions();
86
+ if (height <= 667) {
87
+ // iPhone SE, iPhone 8: 15% of height, max 120px
88
+ return Math.min(height * 0.15, 120);
89
+ }
90
+ else if (height <= 844) {
91
+ // iPhone 13 mini, iPhone 13: 18% of height, max 150px
92
+ return Math.min(height * 0.18, 150);
93
+ }
94
+ // Larger devices: use base height capped at 200px
95
+ return Math.min(baseHeight, 200);
96
+ };
97
+ /**
98
+ * Responsive horizontal padding
99
+ * Accounts for safe area on notched devices and iPad
100
+ */
101
+ export const getResponsiveHorizontalPadding = (basePadding = 16, insets = { left: 0, right: 0 }) => {
102
+ const { width } = getScreenDimensions();
103
+ // iPad: larger padding
104
+ if (width >= BREAKPOINTS.TABLET) {
105
+ return Math.max(basePadding * 1.5, insets.left + 16, insets.right + 16);
106
+ }
107
+ // Phones: account for safe area
108
+ return Math.max(basePadding, insets.left + 8, insets.right + 8);
109
+ };
110
+ /**
111
+ * Responsive bottom positioning
112
+ * Accounts for home indicator and safe area
113
+ */
114
+ export const getResponsiveBottomPosition = (basePosition = 32, insets = { bottom: 0 }) => {
115
+ return Math.max(basePosition, insets.bottom + 16);
116
+ };
117
+ /**
118
+ * Responsive FAB (Floating Action Button) position
119
+ * CRITICAL: Ensures FAB appears above tab bar (70-90px tall) and safe areas
120
+ *
121
+ * Tab bar heights:
122
+ * - iOS: ~80-90px (including safe area)
123
+ * - Android: ~70px
124
+ *
125
+ * FAB positioning:
126
+ * - Tablets: 100px from bottom (generous spacing)
127
+ * - Phones: 90px from bottom (above tab bar)
128
+ * - Safe area aware (home indicator clearance)
129
+ */
130
+ export const getResponsiveFABPosition = (insets = { bottom: 0, right: 0 }) => {
131
+ const { width } = getScreenDimensions();
132
+ // Tab bar offset: FAB must be above tab bar
133
+ const TAB_BAR_OFFSET = 90; // Tab bar height + spacing
134
+ // iPad: larger margins, higher position
135
+ if (width >= BREAKPOINTS.TABLET) {
136
+ return {
137
+ bottom: Math.max(100, insets.bottom + TAB_BAR_OFFSET),
138
+ right: Math.max(24, insets.right + 16),
139
+ };
140
+ }
141
+ // Phones: standard position above tab bar, respect safe area
142
+ return {
143
+ bottom: Math.max(TAB_BAR_OFFSET, insets.bottom + TAB_BAR_OFFSET),
144
+ right: Math.max(20, insets.right + 8),
145
+ };
146
+ };
147
+ /**
148
+ * Responsive modal max height
149
+ * Prevents modals from taking too much space on tablets
150
+ * or too little on small devices
151
+ */
152
+ export const getResponsiveModalMaxHeight = () => {
153
+ const { height } = getScreenDimensions();
154
+ if (height <= 667) {
155
+ // Small devices: 75% of height
156
+ return '75%';
157
+ }
158
+ else if (height >= 1024) {
159
+ // Tablets: 60% of height
160
+ return '60%';
161
+ }
162
+ // Standard: 70%
163
+ return '70%';
164
+ };
165
+ /**
166
+ * Responsive modal min height
167
+ * Ensures modals are always usable and not too small
168
+ * Complements getResponsiveModalMaxHeight for complete modal sizing
169
+ */
170
+ export const getResponsiveMinModalHeight = () => {
171
+ const { height } = getScreenDimensions();
172
+ if (height <= 667) {
173
+ // iPhone SE, 8: 40% of height, min 250px
174
+ return Math.max(height * 0.4, 250);
175
+ }
176
+ else if (height >= 1024) {
177
+ // iPad: 35% of height, min 350px, max 500px (capped for usability)
178
+ return Math.min(Math.max(height * 0.35, 350), 500);
179
+ }
180
+ // Standard: 45% of height, min 300px
181
+ return Math.max(height * 0.45, 300);
182
+ };
183
+ /**
184
+ * Responsive icon container size
185
+ * Used in onboarding, cards, etc.
186
+ */
187
+ export const getResponsiveIconContainerSize = (baseSize = 140) => {
188
+ const { width } = getScreenDimensions();
189
+ if (width <= BREAKPOINTS.SMALL_PHONE) {
190
+ // Small phones: 30% of width, capped at 120px
191
+ return Math.min(width * 0.30, 120);
192
+ }
193
+ else if (width >= BREAKPOINTS.TABLET) {
194
+ // Tablets: 20% of width, capped at 180px
195
+ return Math.min(width * 0.20, 180);
196
+ }
197
+ return baseSize;
198
+ };
199
+ /**
200
+ * Responsive grid columns
201
+ * Returns number of columns for grid layouts
202
+ */
203
+ export const getResponsiveGridColumns = (mobileColumns = 2, tabletColumns = 4) => {
204
+ const { width } = getScreenDimensions();
205
+ return width >= BREAKPOINTS.TABLET ? tabletColumns : mobileColumns;
206
+ };
207
+ /**
208
+ * Responsive max width for content
209
+ * Prevents text from stretching too wide on tablets
210
+ */
211
+ export const getResponsiveMaxWidth = (baseWidth = 400) => {
212
+ const { width } = getScreenDimensions();
213
+ if (width <= BREAKPOINTS.SMALL_PHONE) {
214
+ // Small phones: 90% of width
215
+ return width * 0.9;
216
+ }
217
+ else if (width >= BREAKPOINTS.TABLET) {
218
+ // Tablets: 60% of width, max 600px
219
+ return Math.min(width * 0.6, 600);
220
+ }
221
+ // Standard phones: use base width
222
+ return Math.min(width * 0.85, baseWidth);
223
+ };
224
+ /**
225
+ * Responsive font size
226
+ * Scales text for different devices while respecting minimum sizes
227
+ */
228
+ export const getResponsiveFontSize = (baseFontSize) => {
229
+ const { width } = getScreenDimensions();
230
+ if (width <= BREAKPOINTS.SMALL_PHONE) {
231
+ // Small phones: slightly smaller text
232
+ return Math.max(baseFontSize * 0.9, MIN_TEXT_SIZE);
233
+ }
234
+ else if (width >= BREAKPOINTS.TABLET) {
235
+ // Tablets: slightly larger text
236
+ return baseFontSize * 1.1;
237
+ }
238
+ return baseFontSize;
239
+ };
240
+ /**
241
+ * Check if device is in landscape mode
242
+ */
243
+ export const isLandscape = () => {
244
+ const { width, height } = getScreenDimensions();
245
+ return width > height;
246
+ };
247
+ /**
248
+ * Get universal keyboard behavior
249
+ * Returns 'padding' which works across all platforms (iOS, Android, Web)
250
+ */
251
+ export const getKeyboardBehavior = () => {
252
+ return 'padding';
253
+ };
254
+ /**
255
+ * Device type enum for conditional rendering
256
+ */
257
+ export var DeviceType;
258
+ (function (DeviceType) {
259
+ DeviceType["SMALL_PHONE"] = "SMALL_PHONE";
260
+ DeviceType["MEDIUM_PHONE"] = "MEDIUM_PHONE";
261
+ DeviceType["LARGE_PHONE"] = "LARGE_PHONE";
262
+ DeviceType["TABLET"] = "TABLET";
263
+ })(DeviceType || (DeviceType = {}));
264
+ /**
265
+ * Get current device type
266
+ */
267
+ export const getDeviceType = () => {
268
+ const { width } = getScreenDimensions();
269
+ if (width <= BREAKPOINTS.SMALL_PHONE) {
270
+ return DeviceType.SMALL_PHONE;
271
+ }
272
+ else if (width <= BREAKPOINTS.MEDIUM_PHONE) {
273
+ return DeviceType.MEDIUM_PHONE;
274
+ }
275
+ else if (width <= BREAKPOINTS.LARGE_PHONE) {
276
+ return DeviceType.LARGE_PHONE;
277
+ }
278
+ return DeviceType.TABLET;
279
+ };
280
+ /**
281
+ * Apple HIG compliant touch target size
282
+ */
283
+ export const getMinTouchTargetSize = () => MIN_TOUCH_TARGET;
284
+ /**
285
+ * Responsive spacing multiplier
286
+ * Returns a multiplier for spacing based on device size
287
+ */
288
+ export const getSpacingMultiplier = () => {
289
+ const { width } = getScreenDimensions();
290
+ if (width <= BREAKPOINTS.SMALL_PHONE) {
291
+ return 0.9; // Slightly tighter spacing on small devices
292
+ }
293
+ else if (width >= BREAKPOINTS.TABLET) {
294
+ return 1.2; // More generous spacing on tablets
295
+ }
296
+ return 1.0; // Standard spacing
297
+ };
298
+ // =============================================================================
299
+ // ONBOARDING SPACING - CENTRALIZED CALCULATIONS
300
+ // =============================================================================
301
+ // ⚠️ CRITICAL: ALL onboarding spacing calculations MUST be here.
302
+ // Components should NEVER calculate spacing - they consume pre-calculated values
303
+ // from useResponsive() hook.
304
+ //
305
+ // This prevents Apple rejection due to layout issues on different devices.
306
+ // Pattern: Small phones get tighter spacing, tablets get generous spacing.
307
+ // =============================================================================
308
+ /**
309
+ * Onboarding icon container top margin
310
+ * Small phones: 24px (lg), Others: 40px (xxl)
311
+ */
312
+ export const getOnboardingIconMarginTop = () => {
313
+ return isSmallPhone() ? SPACING_SCALE.lg : SPACING_SCALE.xxl;
314
+ };
315
+ /**
316
+ * Onboarding icon container bottom margin
317
+ * Tablets: 60px (xxl * 1.5 for extra breathing room), Others: 40px (xxl)
318
+ */
319
+ export const getOnboardingIconMarginBottom = () => {
320
+ return isTablet() ? SPACING_SCALE.xxl * 1.5 : SPACING_SCALE.xxl;
321
+ };
322
+ /**
323
+ * Onboarding title bottom margin
324
+ * Tablets: 24px (lg), Others: 16px (md)
325
+ */
326
+ export const getOnboardingTitleMarginBottom = () => {
327
+ return isTablet() ? SPACING_SCALE.lg : SPACING_SCALE.md;
328
+ };
329
+ /**
330
+ * Onboarding text horizontal padding (title and description)
331
+ * Small phones: 8px (sm for tighter fit), Others: 16px (md)
332
+ */
333
+ export const getOnboardingTextPadding = () => {
334
+ return isSmallPhone() ? SPACING_SCALE.sm : SPACING_SCALE.md;
335
+ };
336
+ /**
337
+ * Onboarding description top margin
338
+ * Small phones: 4px (xs), Others: 8px (sm)
339
+ */
340
+ export const getOnboardingDescriptionMarginTop = () => {
341
+ return isSmallPhone() ? SPACING_SCALE.xs : SPACING_SCALE.sm;
342
+ };
343
+ /**
344
+ * Onboarding icon size (for icon inside container)
345
+ * Calculated as ~55% of icon container size for proper visual balance
346
+ * Small phones: ~66px (55% of 120px), Standard: ~77px (55% of 140px), Tablets: ~99px (55% of 180px)
347
+ */
348
+ export const getOnboardingIconSize = () => {
349
+ const containerSize = getResponsiveIconContainerSize();
350
+ // Icon should be 55% of container for optimal visual balance
351
+ return Math.round(containerSize * 0.55);
352
+ };
353
+ // =============================================================================
354
+ // FORM COMPONENT SPACING - CENTRALIZED CALCULATIONS
355
+ // =============================================================================
356
+ // ⚠️ CRITICAL: ALL form-related spacing/sizing calculations MUST be here.
357
+ // Components (FormContainer, AtomicInput, AtomicTextArea) should NEVER
358
+ // calculate dimensions - they consume pre-calculated values from useResponsive().
359
+ //
360
+ // Pattern: Universal values that work across iOS, Android, Web.
361
+ // No platform-specific code - write universal patterns only.
362
+ // =============================================================================
363
+ /**
364
+ * Keyboard vertical offset for KeyboardAvoidingView
365
+ * Accounts for header/navigation bar height
366
+ * Universal value that works across all platforms
367
+ */
368
+ export const getKeyboardVerticalOffset = () => {
369
+ // 90px accounts for:
370
+ // - Navigation header: ~56-60px (standard across platforms)
371
+ // - Safe area top: ~30-44px (notch on iPhone)
372
+ // Total: ~90px ensures keyboard doesn't cover inputs
373
+ return 90;
374
+ };
375
+ /**
376
+ * Form container bottom padding
377
+ * Prevents overlap with bottom tab navigation and ensures submit buttons are accessible
378
+ *
379
+ * Formula: safeAreaBottom + tabBarHeight + extraSpace
380
+ * - Tab bar height: ~56px (iOS/Android standard)
381
+ * - Extra space: ~24px (breathing room for submit button)
382
+ * - Safe area: Variable (home indicator on iPhone)
383
+ * - Minimum: 100px (ensures buttons always accessible)
384
+ */
385
+ export const getFormBottomPadding = (safeAreaBottom) => {
386
+ const TAB_BAR_HEIGHT = 56;
387
+ const EXTRA_SPACE = 24;
388
+ const calculatedPadding = safeAreaBottom + TAB_BAR_HEIGHT + EXTRA_SPACE;
389
+ // Ensure minimum 100px for accessibility
390
+ return Math.max(calculatedPadding, 100);
391
+ };
392
+ /**
393
+ * Input field icon size
394
+ * Used for leading/trailing icons and password toggle
395
+ * Apple HIG: Minimum 22px for touch targets
396
+ */
397
+ export const getInputIconSize = () => {
398
+ const { width } = getScreenDimensions();
399
+ if (width <= BREAKPOINTS.SMALL_PHONE) {
400
+ // Small phones: 18px (slightly smaller for space)
401
+ return 18;
402
+ }
403
+ else if (width >= BREAKPOINTS.TABLET) {
404
+ // Tablets: 24px (larger for readability)
405
+ return 24;
406
+ }
407
+ // Standard: 20px (matches Material Design)
408
+ return 20;
409
+ };
410
+ /**
411
+ * Form content container width
412
+ * Forms need more generous width than regular content to prevent cramped layouts
413
+ *
414
+ * Strategy:
415
+ * - Phones: undefined (no max width restriction, fills available space)
416
+ * - Tablets: Max 700px (readable but not restrictive)
417
+ *
418
+ * Different from getResponsiveMaxWidth which is for text content (max 400px)
419
+ *
420
+ * @returns number for tablets (700px max), undefined for phones (no restriction)
421
+ */
422
+ export const getFormContentWidth = () => {
423
+ const { width } = getScreenDimensions();
424
+ if (width >= BREAKPOINTS.TABLET) {
425
+ // Tablets: 70% of width, max 700px (generous for forms)
426
+ return Math.min(width * 0.7, 700);
427
+ }
428
+ // Phones: No max width restriction (undefined allows full width)
429
+ return undefined;
430
+ };
431
+ /**
432
+ * Form element spacing (vertical)
433
+ * Vertical spacing between form elements (inputs, buttons, etc.)
434
+ * Used with Children.map() wrapper pattern for universal compatibility
435
+ * Replaces CSS gap property (old RN version compatibility)
436
+ *
437
+ * Universal pattern - works on iOS, Android, Web
438
+ */
439
+ export const getFormElementSpacing = () => {
440
+ const { width } = getScreenDimensions();
441
+ if (width <= BREAKPOINTS.SMALL_PHONE) {
442
+ // Small phones: 16px (adequate for space efficiency)
443
+ return 16;
444
+ }
445
+ else if (width >= BREAKPOINTS.TABLET) {
446
+ // Tablets: 24px (generous spacing for larger screens)
447
+ return 24;
448
+ }
449
+ // Standard: 20px (comfortable vertical rhythm)
450
+ return 20;
451
+ };
452
+ //# sourceMappingURL=responsive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responsive.js","sourceRoot":"","sources":["../../../src/presentation/utils/responsive.ts"],"names":[],"mappings":"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"}