@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,11 @@
1
+ export declare const languageSwitcherConfig: {
2
+ defaultIconSize: number;
3
+ defaultNavigationScreen: string;
4
+ hitSlop: {
5
+ top: number;
6
+ bottom: number;
7
+ left: number;
8
+ right: number;
9
+ };
10
+ };
11
+ //# sourceMappingURL=languageSwitcherConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languageSwitcherConfig.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/molecules/languageswitcher/config/languageSwitcherConfig.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB;;;;;;;;;CAIlC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export const languageSwitcherConfig = {
2
+ defaultIconSize: 20,
3
+ defaultNavigationScreen: 'LanguageSelection',
4
+ hitSlop: { top: 10, bottom: 10, left: 10, right: 10 },
5
+ };
6
+ //# sourceMappingURL=languageSwitcherConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languageSwitcherConfig.js","sourceRoot":"","sources":["../../../../../src/presentation/molecules/languageswitcher/config/languageSwitcherConfig.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,eAAe,EAAE,EAAE;IACnB,uBAAuB,EAAE,mBAAmB;IAC5C,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;CACtD,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const useLanguageNavigation: (navigationScreen: string) => {
2
+ currentLang: import("@umituz/react-native-localization").Language;
3
+ navigateToLanguageSelection: () => void;
4
+ };
5
+ //# sourceMappingURL=useLanguageNavigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLanguageNavigation.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/molecules/languageswitcher/hooks/useLanguageNavigation.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,qBAAqB,GAAI,kBAAkB,MAAM;;;CAU7D,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { useNavigation } from '@react-navigation/native';
2
+ import { useLocalization, getLanguageByCode, getDefaultLanguage } from '@umituz/react-native-localization';
3
+ export const useLanguageNavigation = (navigationScreen) => {
4
+ const navigation = useNavigation();
5
+ const { currentLanguage } = useLocalization();
6
+ const currentLang = getLanguageByCode(currentLanguage) || getDefaultLanguage();
7
+ const navigateToLanguageSelection = () => {
8
+ navigation.navigate(navigationScreen);
9
+ };
10
+ return { currentLang, navigateToLanguageSelection };
11
+ };
12
+ //# sourceMappingURL=useLanguageNavigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLanguageNavigation.js","sourceRoot":"","sources":["../../../../../src/presentation/molecules/languageswitcher/hooks/useLanguageNavigation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAE3G,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,gBAAwB,EAAE,EAAE;IAChE,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE,CAAC;IAC9C,MAAM,WAAW,GAAG,iBAAiB,CAAC,eAAe,CAAC,IAAI,kBAAkB,EAAE,CAAC;IAE/E,MAAM,2BAA2B,GAAG,GAAG,EAAE;QACvC,UAAU,CAAC,QAAQ,CAAC,gBAAyB,CAAC,CAAC;IACjD,CAAC,CAAC;IAEF,OAAO,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC;AACtD,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { ViewStyle } from 'react-native';
2
+ import { useAppDesignTokens } from '../../../hooks/useAppDesignTokens';
3
+ type DesignTokens = ReturnType<typeof useAppDesignTokens>;
4
+ export declare const getListItemStyles: (tokens: DesignTokens) => {
5
+ container: ViewStyle;
6
+ disabled: ViewStyle;
7
+ iconContainer: ViewStyle;
8
+ content: ViewStyle;
9
+ subtitle: ViewStyle;
10
+ };
11
+ export {};
12
+ //# sourceMappingURL=listItemStyles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listItemStyles.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/molecules/listitem/styles/listItemStyles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAEvE,KAAK,YAAY,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE1D,eAAO,MAAM,iBAAiB,GAAI,QAAQ,YAAY;eAQ/C,SAAS;cACgB,SAAS;mBACmB,SAAS;aAC3C,SAAS;cACa,SAAS;CACvD,CAAC"}
@@ -0,0 +1,15 @@
1
+ export const getListItemStyles = (tokens) => ({
2
+ container: {
3
+ flexDirection: 'row',
4
+ alignItems: 'center',
5
+ padding: tokens.spacing.md,
6
+ backgroundColor: tokens.colors.surface,
7
+ borderRadius: tokens.borders.radius.lg,
8
+ marginBottom: tokens.spacing.sm,
9
+ },
10
+ disabled: { opacity: 0.6 },
11
+ iconContainer: { marginHorizontal: tokens.spacing.sm },
12
+ content: { flex: 1 },
13
+ subtitle: { marginTop: tokens.spacing.xs },
14
+ });
15
+ //# sourceMappingURL=listItemStyles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listItemStyles.js","sourceRoot":"","sources":["../../../../../src/presentation/molecules/listitem/styles/listItemStyles.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAoB,EAAE,EAAE,CAAC,CAAC;IAC1D,SAAS,EAAE;QACT,aAAa,EAAE,KAAc;QAC7B,UAAU,EAAE,QAAiB;QAC7B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;QAC1B,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO;QACtC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACtC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;KACnB;IACd,QAAQ,EAAE,EAAE,OAAO,EAAE,GAAG,EAAe;IACvC,aAAa,EAAE,EAAE,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,EAAe;IACnE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAe;IACjC,QAAQ,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,EAAe;CACxD,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { ViewStyle } from 'react-native';
2
+ /**
3
+ * ListItem component props
4
+ *
5
+ * leftIcon/rightIcon: Any MaterialIcons name
6
+ * @see https://fonts.google.com/icons
7
+ */
8
+ export interface ListItemProps {
9
+ title: string;
10
+ subtitle?: string;
11
+ leftIcon?: string;
12
+ rightIcon?: string;
13
+ onPress?: () => void;
14
+ disabled?: boolean;
15
+ style?: ViewStyle;
16
+ }
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/molecules/listitem/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/presentation/molecules/listitem/types/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * AppHeader Organism - Application Header Component
3
+ *
4
+ * Complex header combining atoms and molecules
5
+ * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
6
+ *
7
+ * Atomic Design Level: ORGANISM
8
+ * Composition: AtomicIcon + AtomicText + AtomicButton + SearchBar
9
+ */
10
+ import React from 'react';
11
+ import { ViewStyle } from 'react-native';
12
+ /**
13
+ * AppHeader component props
14
+ *
15
+ * leftIcon/rightIcon: Any MaterialIcons name
16
+ * @see https://fonts.google.com/icons
17
+ */
18
+ export interface AppHeaderProps {
19
+ title: string;
20
+ subtitle?: string;
21
+ leftIcon?: string;
22
+ onLeftPress?: () => void;
23
+ rightIcon?: string;
24
+ onRightPress?: () => void;
25
+ showShadow?: boolean;
26
+ backgroundColor?: string;
27
+ style?: ViewStyle;
28
+ }
29
+ export declare const AppHeader: React.FC<AppHeaderProps>;
30
+ //# sourceMappingURL=AppHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppHeader.d.ts","sourceRoot":"","sources":["../../../src/presentation/organisms/AppHeader.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAQ,SAAS,EAAgB,MAAM,cAAc,CAAC;AAU7D;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAMD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAwD9C,CAAC"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * AppHeader Organism - Application Header Component
3
+ *
4
+ * Complex header combining atoms and molecules
5
+ * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
6
+ *
7
+ * Atomic Design Level: ORGANISM
8
+ * Composition: AtomicIcon + AtomicText + AtomicButton + SearchBar
9
+ */
10
+ import React from 'react';
11
+ import { View, SafeAreaView } from 'react-native';
12
+ import { useAppDesignTokens } from '../hooks/useAppDesignTokens';
13
+ import { AtomicText } from '../atoms/AtomicText';
14
+ import { AtomicButton } from '../atoms/AtomicButton';
15
+ // =============================================================================
16
+ // COMPONENT IMPLEMENTATION
17
+ // =============================================================================
18
+ export const AppHeader = ({ title, subtitle, leftIcon, onLeftPress, rightIcon, onRightPress, showShadow = true, backgroundColor, style, }) => {
19
+ const tokens = useAppDesignTokens();
20
+ const bgColor = backgroundColor || tokens.colors.surface;
21
+ const styles = getStyles(tokens);
22
+ return (<SafeAreaView style={[styles.safeArea, { backgroundColor: bgColor }]}>
23
+ <View style={[styles.container, { backgroundColor: bgColor }, style]}>
24
+ {/* Left Action */}
25
+ <View style={styles.leftContainer}>
26
+ {leftIcon && onLeftPress && (<AtomicButton variant="text" size="sm" onPress={onLeftPress} icon={leftIcon}/>)}
27
+ </View>
28
+
29
+ {/* Title Section */}
30
+ <View style={styles.titleContainer}>
31
+ <AtomicText type="titleLarge" color="primary" numberOfLines={1}>
32
+ {title}
33
+ </AtomicText>
34
+ {subtitle && (<AtomicText type="bodySmall" color="secondary" numberOfLines={1}>
35
+ {subtitle}
36
+ </AtomicText>)}
37
+ </View>
38
+
39
+ {/* Right Action */}
40
+ <View style={styles.rightContainer}>
41
+ {rightIcon && onRightPress && (<AtomicButton variant="text" size="sm" onPress={onRightPress} icon={rightIcon}/>)}
42
+ </View>
43
+ </View>
44
+ </SafeAreaView>);
45
+ };
46
+ // =============================================================================
47
+ // STYLES
48
+ // =============================================================================
49
+ const getStyles = (tokens) => ({
50
+ safeArea: {
51
+ backgroundColor: tokens.colors.surface,
52
+ },
53
+ container: {
54
+ flexDirection: 'row',
55
+ alignItems: 'center',
56
+ justifyContent: 'space-between',
57
+ paddingHorizontal: tokens.spacing.md,
58
+ paddingVertical: tokens.spacing.sm,
59
+ minHeight: tokens.iconSizes.xl + tokens.spacing.md,
60
+ },
61
+ leftContainer: {
62
+ width: tokens.iconSizes.xl + tokens.spacing.sm,
63
+ alignItems: 'flex-start',
64
+ },
65
+ titleContainer: {
66
+ flex: 1,
67
+ alignItems: 'center',
68
+ paddingHorizontal: tokens.spacing.sm,
69
+ },
70
+ rightContainer: {
71
+ width: tokens.iconSizes.xl + tokens.spacing.sm,
72
+ alignItems: 'flex-start',
73
+ },
74
+ });
75
+ // =============================================================================
76
+ // EXPORTS
77
+ // =============================================================================
78
+ //# sourceMappingURL=AppHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppHeader.js","sourceRoot":"","sources":["../../../src/presentation/organisms/AppHeader.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * FormContainer Component
3
+ *
4
+ * A reusable container for forms with proper keyboard handling and responsive layout.
5
+ *
6
+ * Features:
7
+ * - Pure React Native implementation (no Paper dependency)
8
+ * - Universal keyboard handling (no platform-specific code)
9
+ * - ScrollView with automatic content padding
10
+ * - Safe area insets for bottom tab navigation overlap
11
+ * - Responsive max width for large screens (tablets)
12
+ * - Consistent vertical spacing between form elements
13
+ * - Theme-aware surface colors
14
+ * - Optimized performance with memoized styles
15
+ *
16
+ * Usage:
17
+ * ```tsx
18
+ * <FormContainer>
19
+ * <AtomicInput label="Name" value={name} onChangeText={setName} />
20
+ * <AtomicTextArea label="Description" value={desc} onChangeText={setDesc} />
21
+ * <AtomicButton variant="primary" onPress={handleSubmit}>
22
+ * Submit
23
+ * </AtomicButton>
24
+ * </FormContainer>
25
+ * ```
26
+ *
27
+ * Why This Component:
28
+ * - Prevents keyboard from covering input fields (universal solution)
29
+ * - Handles safe area (notch, bottom tabs) automatically
30
+ * - Consistent form layout across all 100+ generated apps
31
+ * - Responsive design for tablets (max 700px) and phones (full width)
32
+ * - Automatic vertical spacing between form elements (no manual marginBottom)
33
+ * - Reduces boilerplate in form screens
34
+ * - Universal code - no platform checks, works on iOS, Android, Web
35
+ *
36
+ * Technical Details:
37
+ * - Uses ScrollView with contentContainerStyle for keyboard handling
38
+ * - Pure React Native View for surface (lightweight)
39
+ * - Vertical spacing via Children.map() wrapping (universal compatibility)
40
+ * - Safe area insets from react-native-safe-area-context
41
+ * - Responsive values from useResponsive hook
42
+ *
43
+ * @module FormContainer
44
+ */
45
+ import React from 'react';
46
+ import { StyleProp, ViewStyle } from 'react-native';
47
+ /**
48
+ * Props for FormContainer component
49
+ */
50
+ export interface FormContainerProps {
51
+ /** Form content (inputs, buttons, etc.) */
52
+ children: React.ReactNode;
53
+ /** Container style override (for outer View) */
54
+ containerStyle?: StyleProp<ViewStyle>;
55
+ /** Content container style override (for ScrollView content) */
56
+ contentContainerStyle?: StyleProp<ViewStyle>;
57
+ /** Show vertical scroll indicator */
58
+ showsVerticalScrollIndicator?: boolean;
59
+ /** Optional test ID for E2E testing */
60
+ testID?: string;
61
+ /** Show surface border (default: true) */
62
+ showBorder?: boolean;
63
+ }
64
+ /**
65
+ * FormContainer - Universal form wrapper component
66
+ *
67
+ * Wraps forms with:
68
+ * - Pure React Native surface
69
+ * - Universal keyboard handling (no platform checks)
70
+ * - ScrollView for content overflow
71
+ * - Safe area insets (bottom tabs, notch)
72
+ * - Responsive max width (tablets)
73
+ * - Theme integration
74
+ */
75
+ export declare const FormContainer: React.FC<FormContainerProps>;
76
+ //# sourceMappingURL=FormContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormContainer.d.ts","sourceRoot":"","sources":["../../../src/presentation/organisms/FormContainer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH,OAAO,KAA4B,MAAM,OAAO,CAAC;AACjD,OAAO,EAIL,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAC;AAKtB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,2CAA2C;IAC3C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,gDAAgD;IAChD,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACtC,gEAAgE;IAChE,qBAAqB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7C,qCAAqC;IACrC,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA6FtD,CAAC"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * FormContainer Component
3
+ *
4
+ * A reusable container for forms with proper keyboard handling and responsive layout.
5
+ *
6
+ * Features:
7
+ * - Pure React Native implementation (no Paper dependency)
8
+ * - Universal keyboard handling (no platform-specific code)
9
+ * - ScrollView with automatic content padding
10
+ * - Safe area insets for bottom tab navigation overlap
11
+ * - Responsive max width for large screens (tablets)
12
+ * - Consistent vertical spacing between form elements
13
+ * - Theme-aware surface colors
14
+ * - Optimized performance with memoized styles
15
+ *
16
+ * Usage:
17
+ * ```tsx
18
+ * <FormContainer>
19
+ * <AtomicInput label="Name" value={name} onChangeText={setName} />
20
+ * <AtomicTextArea label="Description" value={desc} onChangeText={setDesc} />
21
+ * <AtomicButton variant="primary" onPress={handleSubmit}>
22
+ * Submit
23
+ * </AtomicButton>
24
+ * </FormContainer>
25
+ * ```
26
+ *
27
+ * Why This Component:
28
+ * - Prevents keyboard from covering input fields (universal solution)
29
+ * - Handles safe area (notch, bottom tabs) automatically
30
+ * - Consistent form layout across all 100+ generated apps
31
+ * - Responsive design for tablets (max 700px) and phones (full width)
32
+ * - Automatic vertical spacing between form elements (no manual marginBottom)
33
+ * - Reduces boilerplate in form screens
34
+ * - Universal code - no platform checks, works on iOS, Android, Web
35
+ *
36
+ * Technical Details:
37
+ * - Uses ScrollView with contentContainerStyle for keyboard handling
38
+ * - Pure React Native View for surface (lightweight)
39
+ * - Vertical spacing via Children.map() wrapping (universal compatibility)
40
+ * - Safe area insets from react-native-safe-area-context
41
+ * - Responsive values from useResponsive hook
42
+ *
43
+ * @module FormContainer
44
+ */
45
+ import React, { useMemo, Children } from 'react';
46
+ import { ScrollView, StyleSheet, View, } from 'react-native';
47
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
48
+ import { useAppDesignTokens } from '../hooks/useAppDesignTokens';
49
+ import { useResponsive } from '../hooks/useResponsive';
50
+ /**
51
+ * FormContainer - Universal form wrapper component
52
+ *
53
+ * Wraps forms with:
54
+ * - Pure React Native surface
55
+ * - Universal keyboard handling (no platform checks)
56
+ * - ScrollView for content overflow
57
+ * - Safe area insets (bottom tabs, notch)
58
+ * - Responsive max width (tablets)
59
+ * - Theme integration
60
+ */
61
+ export const FormContainer = ({ children, containerStyle, contentContainerStyle, showsVerticalScrollIndicator = false, testID, showBorder = true, }) => {
62
+ const tokens = useAppDesignTokens();
63
+ const insets = useSafeAreaInsets();
64
+ const { formContentWidth, formBottomPadding, formElementSpacing } = useResponsive();
65
+ // Memoize styles to prevent recreation on every render
66
+ // Only recreate when theme colors or responsive values change
67
+ const styles = useMemo(() => StyleSheet.create({
68
+ container: {
69
+ flex: 1,
70
+ backgroundColor: tokens.colors.backgroundPrimary,
71
+ },
72
+ surface: {
73
+ flex: 1,
74
+ backgroundColor: tokens.colors.surface,
75
+ borderWidth: showBorder ? 1 : 0,
76
+ borderColor: tokens.colors.border,
77
+ borderRadius: tokens.borders.radius.md,
78
+ },
79
+ scrollView: {
80
+ flex: 1,
81
+ },
82
+ contentContainer: {
83
+ flexGrow: 1,
84
+ padding: tokens.spacing.lg,
85
+ paddingTop: tokens.spacing.xl,
86
+ // Bottom padding: base + safe area insets for tab bar
87
+ paddingBottom: formBottomPadding + insets.bottom,
88
+ // Responsive max width (undefined for phones, 700px for tablets)
89
+ maxWidth: formContentWidth,
90
+ alignSelf: 'center',
91
+ width: '100%',
92
+ },
93
+ // Wrapper for each form element to add vertical spacing
94
+ // This is the universal replacement for CSS gap property
95
+ formElementWrapper: {
96
+ marginBottom: formElementSpacing,
97
+ },
98
+ }), [
99
+ tokens.colors.backgroundPrimary,
100
+ tokens.colors.surface,
101
+ tokens.colors.border,
102
+ tokens.borders.radius.md,
103
+ tokens.spacing.lg,
104
+ tokens.spacing.xl,
105
+ formBottomPadding,
106
+ formContentWidth,
107
+ formElementSpacing,
108
+ insets.bottom,
109
+ showBorder,
110
+ ]);
111
+ // Wrap each child with spacing View (universal gap replacement)
112
+ // Children.map() handles arrays, fragments, single elements correctly
113
+ const childrenWithSpacing = useMemo(() => {
114
+ const childArray = Children.toArray(children);
115
+ return childArray.map((child, index) => (<View key={index} style={index < childArray.length - 1 ? styles.formElementWrapper : undefined}>
116
+ {child}
117
+ </View>));
118
+ }, [children, styles.formElementWrapper]);
119
+ return (<View style={[styles.container, containerStyle]} testID={testID}>
120
+ <View style={styles.surface}>
121
+ <ScrollView style={styles.scrollView} contentContainerStyle={[styles.contentContainer, contentContainerStyle]} keyboardShouldPersistTaps="handled" keyboardDismissMode="on-drag" showsVerticalScrollIndicator={showsVerticalScrollIndicator} testID={testID ? `${testID}-scroll` : undefined}>
122
+ {childrenWithSpacing}
123
+ </ScrollView>
124
+ </View>
125
+ </View>);
126
+ };
127
+ //# sourceMappingURL=FormContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormContainer.js","sourceRoot":"","sources":["../../../src/presentation/organisms/FormContainer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * ScreenLayout - Universal Screen Container Component
3
+ *
4
+ * Provides consistent layout structure for all screens:
5
+ * - SafeAreaView with configurable edges
6
+ * - Optional ScrollView for content
7
+ * - Loading state support
8
+ * - Theme-aware background colors
9
+ * - Optional header/footer slots
10
+ * - Consistent spacing and padding
11
+ *
12
+ * Usage:
13
+ * <ScreenLayout>
14
+ * <View>Your content here</View>
15
+ * </ScreenLayout>
16
+ *
17
+ * Advanced:
18
+ * <ScreenLayout
19
+ * scrollable={false}
20
+ * loading={isLoading}
21
+ * edges={['top', 'bottom']}
22
+ * header={<CustomHeader />}
23
+ * >
24
+ * <View>Content</View>
25
+ * </ScreenLayout>
26
+ */
27
+ import React from 'react';
28
+ import { ViewStyle } from 'react-native';
29
+ import { Edge } from 'react-native-safe-area-context';
30
+ export interface ScreenLayoutProps {
31
+ /**
32
+ * Content to render inside the layout
33
+ */
34
+ children: React.ReactNode;
35
+ /**
36
+ * Enable scrolling (default: true)
37
+ * Set to false for screens with custom scroll logic
38
+ */
39
+ scrollable?: boolean;
40
+ /**
41
+ * Safe area edges to apply (default: ['top'])
42
+ * Common values:
43
+ * - ['top'] - For screens with bottom tabs
44
+ * - ['top', 'bottom'] - For modal screens
45
+ * - [] - No safe area (use cautiously)
46
+ */
47
+ edges?: Edge[];
48
+ /**
49
+ * Show loading state
50
+ * When true, displays LoadingState component
51
+ */
52
+ loading?: boolean;
53
+ /**
54
+ * Loading icon name (default: 'settings')
55
+ */
56
+ loadingIcon?: string;
57
+ /**
58
+ * Loading message (default: 'Loading...')
59
+ */
60
+ loadingMessage?: string;
61
+ /**
62
+ * Optional header component
63
+ * Rendered above scrollable content
64
+ */
65
+ header?: React.ReactNode;
66
+ /**
67
+ * Optional footer component
68
+ * Rendered below scrollable content
69
+ */
70
+ footer?: React.ReactNode;
71
+ /**
72
+ * Override background color
73
+ * If not provided, uses theme's backgroundPrimary
74
+ */
75
+ backgroundColor?: string;
76
+ /**
77
+ * Custom container style
78
+ */
79
+ containerStyle?: ViewStyle;
80
+ /**
81
+ * Custom content container style (for ScrollView)
82
+ */
83
+ contentContainerStyle?: ViewStyle;
84
+ /**
85
+ * Test ID for automation
86
+ */
87
+ testID?: string;
88
+ /**
89
+ * Hide vertical scroll indicator (default: false)
90
+ */
91
+ hideScrollIndicator?: boolean;
92
+ /**
93
+ * Enable keyboard avoiding behavior (default: false)
94
+ * Useful for screens with inputs
95
+ */
96
+ keyboardAvoiding?: boolean;
97
+ }
98
+ export declare const ScreenLayout: React.FC<ScreenLayoutProps>;
99
+ //# sourceMappingURL=ScreenLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScreenLayout.d.ts","sourceRoot":"","sources":["../../../src/presentation/organisms/ScreenLayout.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAgC,SAAS,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAgB,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAIpE,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAE1B;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IAEf;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEzB;;;OAGG;IACH,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEzB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,cAAc,CAAC,EAAE,SAAS,CAAC;IAE3B;;OAEG;IACH,qBAAqB,CAAC,EAAE,SAAS,CAAC;IAElC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAE5B;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA4EpD,CAAC"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * ScreenLayout - Universal Screen Container Component
3
+ *
4
+ * Provides consistent layout structure for all screens:
5
+ * - SafeAreaView with configurable edges
6
+ * - Optional ScrollView for content
7
+ * - Loading state support
8
+ * - Theme-aware background colors
9
+ * - Optional header/footer slots
10
+ * - Consistent spacing and padding
11
+ *
12
+ * Usage:
13
+ * <ScreenLayout>
14
+ * <View>Your content here</View>
15
+ * </ScreenLayout>
16
+ *
17
+ * Advanced:
18
+ * <ScreenLayout
19
+ * scrollable={false}
20
+ * loading={isLoading}
21
+ * edges={['top', 'bottom']}
22
+ * header={<CustomHeader />}
23
+ * >
24
+ * <View>Content</View>
25
+ * </ScreenLayout>
26
+ */
27
+ import React, { useMemo } from 'react';
28
+ import { View, ScrollView, StyleSheet } from 'react-native';
29
+ import { SafeAreaView } from 'react-native-safe-area-context';
30
+ import { useAppDesignTokens } from '../hooks/useAppDesignTokens';
31
+ import { LoadingState } from '../loading/presentation/components/LoadingState';
32
+ export const ScreenLayout = ({ children, scrollable = true, edges = ['top'], loading = false, loadingIcon = 'settings', loadingMessage = 'Loading...', header, footer, backgroundColor, containerStyle, contentContainerStyle, testID, hideScrollIndicator = false, keyboardAvoiding = false, }) => {
33
+ // Automatically uses current theme from global store
34
+ const tokens = useAppDesignTokens();
35
+ const styles = useMemo(() => getStyles(tokens), [tokens]);
36
+ const bgColor = backgroundColor || tokens.colors.backgroundPrimary;
37
+ // Show loading state
38
+ if (loading) {
39
+ return (<SafeAreaView style={[styles.container, { backgroundColor: bgColor }, containerStyle]} edges={edges} testID={testID}>
40
+ <LoadingState icon={loadingIcon} message={loadingMessage} size="large" fullScreen/>
41
+ </SafeAreaView>);
42
+ }
43
+ // Non-scrollable layout
44
+ if (!scrollable) {
45
+ return (<SafeAreaView style={[styles.container, { backgroundColor: bgColor }, containerStyle]} edges={edges} testID={testID}>
46
+ {header}
47
+ <View style={[styles.content, contentContainerStyle]}>
48
+ {children}
49
+ </View>
50
+ {footer}
51
+ </SafeAreaView>);
52
+ }
53
+ // Scrollable layout (default)
54
+ return (<SafeAreaView style={[styles.container, { backgroundColor: bgColor }, containerStyle]} edges={edges} testID={testID}>
55
+ {header}
56
+ <ScrollView style={styles.scrollView} contentContainerStyle={[styles.scrollContent, contentContainerStyle]} showsVerticalScrollIndicator={!hideScrollIndicator} keyboardShouldPersistTaps={keyboardAvoiding ? 'handled' : 'never'}>
57
+ {children}
58
+ </ScrollView>
59
+ {footer}
60
+ </SafeAreaView>);
61
+ };
62
+ const getStyles = (tokens) => StyleSheet.create({
63
+ container: {
64
+ flex: 1,
65
+ },
66
+ content: {
67
+ flex: 1,
68
+ },
69
+ scrollView: {
70
+ flex: 1,
71
+ },
72
+ scrollContent: {
73
+ flexGrow: 1,
74
+ paddingHorizontal: tokens.spacing.md,
75
+ paddingBottom: tokens.spacing.lg,
76
+ },
77
+ });
78
+ //# sourceMappingURL=ScreenLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScreenLayout.js","sourceRoot":"","sources":["../../../src/presentation/organisms/ScreenLayout.tsx"],"names":[],"mappings":"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"}