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

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 (349) hide show
  1. package/lib/domains/icons/domain/config/IconLibraryConfig.d.ts +91 -0
  2. package/lib/domains/icons/domain/config/IconLibraryConfig.d.ts.map +1 -0
  3. package/lib/domains/icons/domain/config/IconLibraryConfig.js +85 -0
  4. package/lib/domains/icons/domain/config/IconLibraryConfig.js.map +1 -0
  5. package/lib/domains/icons/domain/entities/Icon.d.ts +111 -0
  6. package/lib/domains/icons/domain/entities/Icon.d.ts.map +1 -0
  7. package/lib/domains/icons/domain/entities/Icon.js +87 -0
  8. package/lib/domains/icons/domain/entities/Icon.js.map +1 -0
  9. package/lib/domains/icons/domain/interfaces/IIconAdapter.d.ts +114 -0
  10. package/lib/domains/icons/domain/interfaces/IIconAdapter.d.ts.map +1 -0
  11. package/lib/domains/icons/domain/interfaces/IIconAdapter.js +17 -0
  12. package/lib/domains/icons/domain/interfaces/IIconAdapter.js.map +1 -0
  13. package/lib/domains/icons/index.d.ts +84 -0
  14. package/lib/domains/icons/index.d.ts.map +1 -0
  15. package/lib/domains/icons/index.js +89 -0
  16. package/lib/domains/icons/index.js.map +1 -0
  17. package/lib/domains/icons/infrastructure/adapters/LucideAdapter.d.ts +24 -0
  18. package/lib/domains/icons/infrastructure/adapters/LucideAdapter.d.ts.map +1 -0
  19. package/lib/domains/icons/infrastructure/adapters/LucideAdapter.js +85 -0
  20. package/lib/domains/icons/infrastructure/adapters/LucideAdapter.js.map +1 -0
  21. package/lib/domains/icons/infrastructure/registries/ExpoIconRegistry.d.ts +23 -0
  22. package/lib/domains/icons/infrastructure/registries/ExpoIconRegistry.d.ts.map +1 -0
  23. package/lib/domains/icons/infrastructure/registries/ExpoIconRegistry.js +178 -0
  24. package/lib/domains/icons/infrastructure/registries/ExpoIconRegistry.js.map +1 -0
  25. package/lib/domains/icons/presentation/components/Icon.d.ts +42 -0
  26. package/lib/domains/icons/presentation/components/Icon.d.ts.map +1 -0
  27. package/lib/domains/icons/presentation/components/Icon.js +86 -0
  28. package/lib/domains/icons/presentation/components/Icon.js.map +1 -0
  29. package/lib/domains/icons/presentation/hooks/useIconLibrary.d.ts +38 -0
  30. package/lib/domains/icons/presentation/hooks/useIconLibrary.d.ts.map +1 -0
  31. package/lib/domains/icons/presentation/hooks/useIconLibrary.js +114 -0
  32. package/lib/domains/icons/presentation/hooks/useIconLibrary.js.map +1 -0
  33. package/lib/index.d.ts +66 -0
  34. package/lib/index.d.ts.map +1 -0
  35. package/lib/index.js +106 -0
  36. package/lib/index.js.map +1 -0
  37. package/lib/infrastructure/theme/globalThemeStore.d.ts +42 -0
  38. package/lib/infrastructure/theme/globalThemeStore.d.ts.map +1 -0
  39. package/lib/infrastructure/theme/globalThemeStore.js +38 -0
  40. package/lib/infrastructure/theme/globalThemeStore.js.map +1 -0
  41. package/lib/presentation/atoms/AtomicAvatar.d.ts +48 -0
  42. package/lib/presentation/atoms/AtomicAvatar.d.ts.map +1 -0
  43. package/lib/presentation/atoms/AtomicAvatar.js +85 -0
  44. package/lib/presentation/atoms/AtomicAvatar.js.map +1 -0
  45. package/lib/presentation/atoms/AtomicAvatarGroup.d.ts +56 -0
  46. package/lib/presentation/atoms/AtomicAvatarGroup.d.ts.map +1 -0
  47. package/lib/presentation/atoms/AtomicAvatarGroup.js +83 -0
  48. package/lib/presentation/atoms/AtomicAvatarGroup.js.map +1 -0
  49. package/lib/presentation/atoms/AtomicBadge.d.ts +42 -0
  50. package/lib/presentation/atoms/AtomicBadge.d.ts.map +1 -0
  51. package/lib/presentation/atoms/AtomicBadge.js +168 -0
  52. package/lib/presentation/atoms/AtomicBadge.js.map +1 -0
  53. package/lib/presentation/atoms/AtomicButton.d.ts +22 -0
  54. package/lib/presentation/atoms/AtomicButton.d.ts.map +1 -0
  55. package/lib/presentation/atoms/AtomicButton.js +193 -0
  56. package/lib/presentation/atoms/AtomicButton.js.map +1 -0
  57. package/lib/presentation/atoms/AtomicCard.d.ts +15 -0
  58. package/lib/presentation/atoms/AtomicCard.d.ts.map +1 -0
  59. package/lib/presentation/atoms/AtomicCard.js +89 -0
  60. package/lib/presentation/atoms/AtomicCard.js.map +1 -0
  61. package/lib/presentation/atoms/AtomicChip.d.ts +53 -0
  62. package/lib/presentation/atoms/AtomicChip.d.ts.map +1 -0
  63. package/lib/presentation/atoms/AtomicChip.js +131 -0
  64. package/lib/presentation/atoms/AtomicChip.js.map +1 -0
  65. package/lib/presentation/atoms/AtomicDatePicker.d.ts +75 -0
  66. package/lib/presentation/atoms/AtomicDatePicker.d.ts.map +1 -0
  67. package/lib/presentation/atoms/AtomicDatePicker.js +246 -0
  68. package/lib/presentation/atoms/AtomicDatePicker.js.map +1 -0
  69. package/lib/presentation/atoms/AtomicDivider.d.ts +45 -0
  70. package/lib/presentation/atoms/AtomicDivider.d.ts.map +1 -0
  71. package/lib/presentation/atoms/AtomicDivider.js +58 -0
  72. package/lib/presentation/atoms/AtomicDivider.js.map +1 -0
  73. package/lib/presentation/atoms/AtomicFab.d.ts +38 -0
  74. package/lib/presentation/atoms/AtomicFab.d.ts.map +1 -0
  75. package/lib/presentation/atoms/AtomicFab.js +69 -0
  76. package/lib/presentation/atoms/AtomicFab.js.map +1 -0
  77. package/lib/presentation/atoms/AtomicFilter.d.ts +37 -0
  78. package/lib/presentation/atoms/AtomicFilter.d.ts.map +1 -0
  79. package/lib/presentation/atoms/AtomicFilter.js +104 -0
  80. package/lib/presentation/atoms/AtomicFilter.js.map +1 -0
  81. package/lib/presentation/atoms/AtomicFormError.d.ts +30 -0
  82. package/lib/presentation/atoms/AtomicFormError.d.ts.map +1 -0
  83. package/lib/presentation/atoms/AtomicFormError.js +64 -0
  84. package/lib/presentation/atoms/AtomicFormError.js.map +1 -0
  85. package/lib/presentation/atoms/AtomicIcon.d.ts +36 -0
  86. package/lib/presentation/atoms/AtomicIcon.d.ts.map +1 -0
  87. package/lib/presentation/atoms/AtomicIcon.js +30 -0
  88. package/lib/presentation/atoms/AtomicIcon.js.map +1 -0
  89. package/lib/presentation/atoms/AtomicImage.d.ts +40 -0
  90. package/lib/presentation/atoms/AtomicImage.d.ts.map +1 -0
  91. package/lib/presentation/atoms/AtomicImage.js +92 -0
  92. package/lib/presentation/atoms/AtomicImage.js.map +1 -0
  93. package/lib/presentation/atoms/AtomicInput.d.ts +71 -0
  94. package/lib/presentation/atoms/AtomicInput.d.ts.map +1 -0
  95. package/lib/presentation/atoms/AtomicInput.js +196 -0
  96. package/lib/presentation/atoms/AtomicInput.js.map +1 -0
  97. package/lib/presentation/atoms/AtomicNumberInput.d.ts +69 -0
  98. package/lib/presentation/atoms/AtomicNumberInput.d.ts.map +1 -0
  99. package/lib/presentation/atoms/AtomicNumberInput.js +125 -0
  100. package/lib/presentation/atoms/AtomicNumberInput.js.map +1 -0
  101. package/lib/presentation/atoms/AtomicPicker.d.ts +52 -0
  102. package/lib/presentation/atoms/AtomicPicker.d.ts.map +1 -0
  103. package/lib/presentation/atoms/AtomicPicker.js +299 -0
  104. package/lib/presentation/atoms/AtomicPicker.js.map +1 -0
  105. package/lib/presentation/atoms/AtomicProgress.d.ts +47 -0
  106. package/lib/presentation/atoms/AtomicProgress.d.ts.map +1 -0
  107. package/lib/presentation/atoms/AtomicProgress.js +81 -0
  108. package/lib/presentation/atoms/AtomicProgress.js.map +1 -0
  109. package/lib/presentation/atoms/AtomicSearchBar.d.ts +19 -0
  110. package/lib/presentation/atoms/AtomicSearchBar.d.ts.map +1 -0
  111. package/lib/presentation/atoms/AtomicSearchBar.js +46 -0
  112. package/lib/presentation/atoms/AtomicSearchBar.js.map +1 -0
  113. package/lib/presentation/atoms/AtomicSkeleton.d.ts +43 -0
  114. package/lib/presentation/atoms/AtomicSkeleton.d.ts.map +1 -0
  115. package/lib/presentation/atoms/AtomicSkeleton.js +84 -0
  116. package/lib/presentation/atoms/AtomicSkeleton.js.map +1 -0
  117. package/lib/presentation/atoms/AtomicSort.d.ts +72 -0
  118. package/lib/presentation/atoms/AtomicSort.d.ts.map +1 -0
  119. package/lib/presentation/atoms/AtomicSort.js +77 -0
  120. package/lib/presentation/atoms/AtomicSort.js.map +1 -0
  121. package/lib/presentation/atoms/AtomicSwitch.d.ts +43 -0
  122. package/lib/presentation/atoms/AtomicSwitch.d.ts.map +1 -0
  123. package/lib/presentation/atoms/AtomicSwitch.js +104 -0
  124. package/lib/presentation/atoms/AtomicSwitch.js.map +1 -0
  125. package/lib/presentation/atoms/AtomicText.d.ts +14 -0
  126. package/lib/presentation/atoms/AtomicText.d.ts.map +1 -0
  127. package/lib/presentation/atoms/AtomicText.js +36 -0
  128. package/lib/presentation/atoms/AtomicText.js.map +1 -0
  129. package/lib/presentation/atoms/AtomicTextArea.d.ts +85 -0
  130. package/lib/presentation/atoms/AtomicTextArea.d.ts.map +1 -0
  131. package/lib/presentation/atoms/AtomicTextArea.js +196 -0
  132. package/lib/presentation/atoms/AtomicTextArea.js.map +1 -0
  133. package/lib/presentation/atoms/AtomicTouchable.d.ts +87 -0
  134. package/lib/presentation/atoms/AtomicTouchable.d.ts.map +1 -0
  135. package/lib/presentation/atoms/AtomicTouchable.js +151 -0
  136. package/lib/presentation/atoms/AtomicTouchable.js.map +1 -0
  137. package/lib/presentation/atoms/fab/styles/fabStyles.d.ts +23 -0
  138. package/lib/presentation/atoms/fab/styles/fabStyles.d.ts.map +1 -0
  139. package/lib/presentation/atoms/fab/styles/fabStyles.js +63 -0
  140. package/lib/presentation/atoms/fab/styles/fabStyles.js.map +1 -0
  141. package/lib/presentation/atoms/fab/types/index.d.ts +76 -0
  142. package/lib/presentation/atoms/fab/types/index.d.ts.map +1 -0
  143. package/lib/presentation/atoms/fab/types/index.js +2 -0
  144. package/lib/presentation/atoms/fab/types/index.js.map +1 -0
  145. package/lib/presentation/atoms/filter/styles/filterStyles.d.ts +15 -0
  146. package/lib/presentation/atoms/filter/styles/filterStyles.d.ts.map +1 -0
  147. package/lib/presentation/atoms/filter/styles/filterStyles.js +29 -0
  148. package/lib/presentation/atoms/filter/styles/filterStyles.js.map +1 -0
  149. package/lib/presentation/atoms/filter/types/index.d.ts +76 -0
  150. package/lib/presentation/atoms/filter/types/index.d.ts.map +1 -0
  151. package/lib/presentation/atoms/filter/types/index.js +2 -0
  152. package/lib/presentation/atoms/filter/types/index.js.map +1 -0
  153. package/lib/presentation/atoms/index.d.ts +276 -0
  154. package/lib/presentation/atoms/index.d.ts.map +1 -0
  155. package/lib/presentation/atoms/index.js +149 -0
  156. package/lib/presentation/atoms/index.js.map +1 -0
  157. package/lib/presentation/atoms/input/hooks/useInputState.d.ts +7 -0
  158. package/lib/presentation/atoms/input/hooks/useInputState.d.ts.map +1 -0
  159. package/lib/presentation/atoms/input/hooks/useInputState.js +13 -0
  160. package/lib/presentation/atoms/input/hooks/useInputState.js.map +1 -0
  161. package/lib/presentation/atoms/input/styles/inputStyles.d.ts +13 -0
  162. package/lib/presentation/atoms/input/styles/inputStyles.d.ts.map +1 -0
  163. package/lib/presentation/atoms/input/styles/inputStyles.js +59 -0
  164. package/lib/presentation/atoms/input/styles/inputStyles.js.map +1 -0
  165. package/lib/presentation/atoms/input/types/index.d.ts +24 -0
  166. package/lib/presentation/atoms/input/types/index.d.ts.map +1 -0
  167. package/lib/presentation/atoms/input/types/index.js +2 -0
  168. package/lib/presentation/atoms/input/types/index.js.map +1 -0
  169. package/lib/presentation/atoms/picker/styles/pickerStyles.d.ts +96 -0
  170. package/lib/presentation/atoms/picker/styles/pickerStyles.d.ts.map +1 -0
  171. package/lib/presentation/atoms/picker/styles/pickerStyles.js +177 -0
  172. package/lib/presentation/atoms/picker/styles/pickerStyles.js.map +1 -0
  173. package/lib/presentation/atoms/picker/types/index.d.ts +38 -0
  174. package/lib/presentation/atoms/picker/types/index.d.ts.map +1 -0
  175. package/lib/presentation/atoms/picker/types/index.js +2 -0
  176. package/lib/presentation/atoms/picker/types/index.js.map +1 -0
  177. package/lib/presentation/atoms/touchable/styles/touchableStyles.d.ts +36 -0
  178. package/lib/presentation/atoms/touchable/styles/touchableStyles.d.ts.map +1 -0
  179. package/lib/presentation/atoms/touchable/styles/touchableStyles.js +62 -0
  180. package/lib/presentation/atoms/touchable/styles/touchableStyles.js.map +1 -0
  181. package/lib/presentation/atoms/touchable/types/index.d.ts +140 -0
  182. package/lib/presentation/atoms/touchable/types/index.d.ts.map +1 -0
  183. package/lib/presentation/atoms/touchable/types/index.js +2 -0
  184. package/lib/presentation/atoms/touchable/types/index.js.map +1 -0
  185. package/lib/presentation/hooks/useAppDesignTokens.d.ts +34 -0
  186. package/lib/presentation/hooks/useAppDesignTokens.d.ts.map +1 -0
  187. package/lib/presentation/hooks/useAppDesignTokens.js +39 -0
  188. package/lib/presentation/hooks/useAppDesignTokens.js.map +1 -0
  189. package/lib/presentation/hooks/useResponsive.d.ts +80 -0
  190. package/lib/presentation/hooks/useResponsive.d.ts.map +1 -0
  191. package/lib/presentation/hooks/useResponsive.js +82 -0
  192. package/lib/presentation/hooks/useResponsive.js.map +1 -0
  193. package/lib/presentation/loading/index.d.ts +23 -0
  194. package/lib/presentation/loading/index.d.ts.map +1 -0
  195. package/lib/presentation/loading/index.js +26 -0
  196. package/lib/presentation/loading/index.js.map +1 -0
  197. package/lib/presentation/loading/presentation/components/LoadingSpinner.d.ts +28 -0
  198. package/lib/presentation/loading/presentation/components/LoadingSpinner.d.ts.map +1 -0
  199. package/lib/presentation/loading/presentation/components/LoadingSpinner.js +77 -0
  200. package/lib/presentation/loading/presentation/components/LoadingSpinner.js.map +1 -0
  201. package/lib/presentation/loading/presentation/components/LoadingState.d.ts +39 -0
  202. package/lib/presentation/loading/presentation/components/LoadingState.d.ts.map +1 -0
  203. package/lib/presentation/loading/presentation/components/LoadingState.js +123 -0
  204. package/lib/presentation/loading/presentation/components/LoadingState.js.map +1 -0
  205. package/lib/presentation/loading/presentation/hooks/useLoading.d.ts +50 -0
  206. package/lib/presentation/loading/presentation/hooks/useLoading.d.ts.map +1 -0
  207. package/lib/presentation/loading/presentation/hooks/useLoading.js +49 -0
  208. package/lib/presentation/loading/presentation/hooks/useLoading.js.map +1 -0
  209. package/lib/presentation/molecules/AtomicConfirmationModal.d.ts +73 -0
  210. package/lib/presentation/molecules/AtomicConfirmationModal.d.ts.map +1 -0
  211. package/lib/presentation/molecules/AtomicConfirmationModal.js +172 -0
  212. package/lib/presentation/molecules/AtomicConfirmationModal.js.map +1 -0
  213. package/lib/presentation/molecules/EmptyState.d.ts +41 -0
  214. package/lib/presentation/molecules/EmptyState.d.ts.map +1 -0
  215. package/lib/presentation/molecules/EmptyState.js +68 -0
  216. package/lib/presentation/molecules/EmptyState.js.map +1 -0
  217. package/lib/presentation/molecules/FormField.d.ts +22 -0
  218. package/lib/presentation/molecules/FormField.d.ts.map +1 -0
  219. package/lib/presentation/molecules/FormField.js +76 -0
  220. package/lib/presentation/molecules/FormField.js.map +1 -0
  221. package/lib/presentation/molecules/GridContainer.d.ts +40 -0
  222. package/lib/presentation/molecules/GridContainer.d.ts.map +1 -0
  223. package/lib/presentation/molecules/GridContainer.js +77 -0
  224. package/lib/presentation/molecules/GridContainer.js.map +1 -0
  225. package/lib/presentation/molecules/IconContainer.d.ts +29 -0
  226. package/lib/presentation/molecules/IconContainer.d.ts.map +1 -0
  227. package/lib/presentation/molecules/IconContainer.js +60 -0
  228. package/lib/presentation/molecules/IconContainer.js.map +1 -0
  229. package/lib/presentation/molecules/LanguageSwitcher.d.ts +10 -0
  230. package/lib/presentation/molecules/LanguageSwitcher.d.ts.map +1 -0
  231. package/lib/presentation/molecules/LanguageSwitcher.js +24 -0
  232. package/lib/presentation/molecules/LanguageSwitcher.js.map +1 -0
  233. package/lib/presentation/molecules/ListItem.d.ts +5 -0
  234. package/lib/presentation/molecules/ListItem.d.ts.map +1 -0
  235. package/lib/presentation/molecules/ListItem.js +24 -0
  236. package/lib/presentation/molecules/ListItem.js.map +1 -0
  237. package/lib/presentation/molecules/ScreenHeader.d.ts +55 -0
  238. package/lib/presentation/molecules/ScreenHeader.d.ts.map +1 -0
  239. package/lib/presentation/molecules/ScreenHeader.js +94 -0
  240. package/lib/presentation/molecules/ScreenHeader.js.map +1 -0
  241. package/lib/presentation/molecules/SearchBar.d.ts +18 -0
  242. package/lib/presentation/molecules/SearchBar.d.ts.map +1 -0
  243. package/lib/presentation/molecules/SearchBar.js +47 -0
  244. package/lib/presentation/molecules/SearchBar.js.map +1 -0
  245. package/lib/presentation/molecules/SectionCard.d.ts +25 -0
  246. package/lib/presentation/molecules/SectionCard.d.ts.map +1 -0
  247. package/lib/presentation/molecules/SectionCard.js +47 -0
  248. package/lib/presentation/molecules/SectionCard.js.map +1 -0
  249. package/lib/presentation/molecules/SectionContainer.d.ts +33 -0
  250. package/lib/presentation/molecules/SectionContainer.d.ts.map +1 -0
  251. package/lib/presentation/molecules/SectionContainer.js +64 -0
  252. package/lib/presentation/molecules/SectionContainer.js.map +1 -0
  253. package/lib/presentation/molecules/SectionHeader.d.ts +37 -0
  254. package/lib/presentation/molecules/SectionHeader.d.ts.map +1 -0
  255. package/lib/presentation/molecules/SectionHeader.js +73 -0
  256. package/lib/presentation/molecules/SectionHeader.js.map +1 -0
  257. package/lib/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.d.ts +50 -0
  258. package/lib/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.d.ts.map +1 -0
  259. package/lib/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.js +115 -0
  260. package/lib/presentation/molecules/confirmation-modal/styles/confirmationModalStyles.js.map +1 -0
  261. package/lib/presentation/molecules/confirmation-modal/types/index.d.ts +88 -0
  262. package/lib/presentation/molecules/confirmation-modal/types/index.d.ts.map +1 -0
  263. package/lib/presentation/molecules/confirmation-modal/types/index.js +7 -0
  264. package/lib/presentation/molecules/confirmation-modal/types/index.js.map +1 -0
  265. package/lib/presentation/molecules/index.d.ts +28 -0
  266. package/lib/presentation/molecules/index.d.ts.map +1 -0
  267. package/lib/presentation/molecules/index.js +18 -0
  268. package/lib/presentation/molecules/index.js.map +1 -0
  269. package/lib/presentation/molecules/languageswitcher/config/languageSwitcherConfig.d.ts +11 -0
  270. package/lib/presentation/molecules/languageswitcher/config/languageSwitcherConfig.d.ts.map +1 -0
  271. package/lib/presentation/molecules/languageswitcher/config/languageSwitcherConfig.js +6 -0
  272. package/lib/presentation/molecules/languageswitcher/config/languageSwitcherConfig.js.map +1 -0
  273. package/lib/presentation/molecules/languageswitcher/hooks/useLanguageNavigation.d.ts +5 -0
  274. package/lib/presentation/molecules/languageswitcher/hooks/useLanguageNavigation.d.ts.map +1 -0
  275. package/lib/presentation/molecules/languageswitcher/hooks/useLanguageNavigation.js +12 -0
  276. package/lib/presentation/molecules/languageswitcher/hooks/useLanguageNavigation.js.map +1 -0
  277. package/lib/presentation/molecules/listitem/styles/listItemStyles.d.ts +12 -0
  278. package/lib/presentation/molecules/listitem/styles/listItemStyles.d.ts.map +1 -0
  279. package/lib/presentation/molecules/listitem/styles/listItemStyles.js +15 -0
  280. package/lib/presentation/molecules/listitem/styles/listItemStyles.js.map +1 -0
  281. package/lib/presentation/molecules/listitem/types/index.d.ts +17 -0
  282. package/lib/presentation/molecules/listitem/types/index.d.ts.map +1 -0
  283. package/lib/presentation/molecules/listitem/types/index.js +2 -0
  284. package/lib/presentation/molecules/listitem/types/index.js.map +1 -0
  285. package/lib/presentation/organisms/AppHeader.d.ts +30 -0
  286. package/lib/presentation/organisms/AppHeader.d.ts.map +1 -0
  287. package/lib/presentation/organisms/AppHeader.js +78 -0
  288. package/lib/presentation/organisms/AppHeader.js.map +1 -0
  289. package/lib/presentation/organisms/FormContainer.d.ts +76 -0
  290. package/lib/presentation/organisms/FormContainer.d.ts.map +1 -0
  291. package/lib/presentation/organisms/FormContainer.js +127 -0
  292. package/lib/presentation/organisms/FormContainer.js.map +1 -0
  293. package/lib/presentation/organisms/ScreenLayout.d.ts +99 -0
  294. package/lib/presentation/organisms/ScreenLayout.d.ts.map +1 -0
  295. package/lib/presentation/organisms/ScreenLayout.js +78 -0
  296. package/lib/presentation/organisms/ScreenLayout.js.map +1 -0
  297. package/lib/presentation/organisms/index.d.ts +16 -0
  298. package/lib/presentation/organisms/index.d.ts.map +1 -0
  299. package/lib/presentation/organisms/index.js +14 -0
  300. package/lib/presentation/organisms/index.js.map +1 -0
  301. package/lib/presentation/tokens/AppDesignTokens.d.ts +14 -0
  302. package/lib/presentation/tokens/AppDesignTokens.d.ts.map +1 -0
  303. package/lib/presentation/tokens/AppDesignTokens.js +23 -0
  304. package/lib/presentation/tokens/AppDesignTokens.js.map +1 -0
  305. package/lib/presentation/tokens/commonStyles.d.ts +122 -0
  306. package/lib/presentation/tokens/commonStyles.d.ts.map +1 -0
  307. package/lib/presentation/tokens/commonStyles.js +220 -0
  308. package/lib/presentation/tokens/commonStyles.js.map +1 -0
  309. package/lib/presentation/tokens/core/BaseTokens.d.ts +337 -0
  310. package/lib/presentation/tokens/core/BaseTokens.d.ts.map +1 -0
  311. package/lib/presentation/tokens/core/BaseTokens.js +322 -0
  312. package/lib/presentation/tokens/core/BaseTokens.js.map +1 -0
  313. package/lib/presentation/tokens/core/ColorPalette.d.ts +216 -0
  314. package/lib/presentation/tokens/core/ColorPalette.d.ts.map +1 -0
  315. package/lib/presentation/tokens/core/ColorPalette.js +330 -0
  316. package/lib/presentation/tokens/core/ColorPalette.js.map +1 -0
  317. package/lib/presentation/tokens/core/TokenFactory.d.ts +229 -0
  318. package/lib/presentation/tokens/core/TokenFactory.d.ts.map +1 -0
  319. package/lib/presentation/tokens/core/TokenFactory.js +87 -0
  320. package/lib/presentation/tokens/core/TokenFactory.js.map +1 -0
  321. package/lib/presentation/utils/platformConstants.d.ts +100 -0
  322. package/lib/presentation/utils/platformConstants.d.ts.map +1 -0
  323. package/lib/presentation/utils/platformConstants.js +114 -0
  324. package/lib/presentation/utils/platformConstants.js.map +1 -0
  325. package/lib/presentation/utils/responsive.d.ts +218 -0
  326. package/lib/presentation/utils/responsive.d.ts.map +1 -0
  327. package/lib/presentation/utils/responsive.js +452 -0
  328. package/lib/presentation/utils/responsive.js.map +1 -0
  329. package/lib/presentation/utils/variants/compound.d.ts +10 -0
  330. package/lib/presentation/utils/variants/compound.d.ts.map +1 -0
  331. package/lib/presentation/utils/variants/compound.js +16 -0
  332. package/lib/presentation/utils/variants/compound.js.map +1 -0
  333. package/lib/presentation/utils/variants/core.d.ts +15 -0
  334. package/lib/presentation/utils/variants/core.d.ts.map +1 -0
  335. package/lib/presentation/utils/variants/core.js +23 -0
  336. package/lib/presentation/utils/variants/core.js.map +1 -0
  337. package/lib/presentation/utils/variants/helpers.d.ts +5 -0
  338. package/lib/presentation/utils/variants/helpers.d.ts.map +1 -0
  339. package/lib/presentation/utils/variants/helpers.js +10 -0
  340. package/lib/presentation/utils/variants/helpers.js.map +1 -0
  341. package/lib/presentation/utils/variants.d.ts +4 -0
  342. package/lib/presentation/utils/variants.d.ts.map +1 -0
  343. package/lib/presentation/utils/variants.js +4 -0
  344. package/lib/presentation/utils/variants.js.map +1 -0
  345. package/package.json +38 -4
  346. package/src/domains/icons/domain/interfaces/IIconAdapter.ts +5 -3
  347. package/src/domains/icons/infrastructure/adapters/LucideAdapter.ts +1 -1
  348. package/src/presentation/molecules/AtomicConfirmationModal.tsx +1 -1
  349. package/src/presentation/molecules/languageswitcher/hooks/useLanguageNavigation.ts +1 -2
@@ -0,0 +1,76 @@
1
+ /**
2
+ * FormField Molecule - Complete Form Input with Label and Error
3
+ *
4
+ * Combines AtomicText (label/error) + AtomicInput (field)
5
+ * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
6
+ *
7
+ * Atomic Design Level: MOLECULE
8
+ * Composition: AtomicText + AtomicInput
9
+ */
10
+ import React from 'react';
11
+ import { View } from 'react-native';
12
+ import { useAppDesignTokens } from '../hooks/useAppDesignTokens';
13
+ import { AtomicText } from '../atoms/AtomicText';
14
+ import { AtomicInput } from '../atoms/AtomicInput';
15
+ // =============================================================================
16
+ // COMPONENT IMPLEMENTATION
17
+ // =============================================================================
18
+ export const FormField = ({ label, error, helperText, required = false, containerStyle, style, // Accept both style and containerStyle
19
+ ...inputProps }) => {
20
+ const tokens = useAppDesignTokens();
21
+ const inputState = error ? 'error' : 'default';
22
+ const styles = getStyles(tokens);
23
+ return (<View style={[styles.container, containerStyle || style]}>
24
+ {/* Label */}
25
+ {label && (<View style={styles.labelContainer}>
26
+ <AtomicText type="labelMedium" color="primary" style={styles.label}>
27
+ {label}
28
+ </AtomicText>
29
+ {required && (<AtomicText type="labelMedium" color="error">
30
+ {' *'}
31
+ </AtomicText>)}
32
+ </View>)}
33
+
34
+ {/* Input Field */}
35
+ <AtomicInput {...inputProps} label={label || ''} state={inputState}/>
36
+
37
+ {/* Error Message */}
38
+ {error && (<AtomicText type="bodySmall" color="error" style={styles.errorText}>
39
+ {error}
40
+ </AtomicText>)}
41
+
42
+ {/* Helper Text */}
43
+ {!error && helperText && (<AtomicText type="bodySmall" color="secondary" style={styles.helperText}>
44
+ {helperText}
45
+ </AtomicText>)}
46
+ </View>);
47
+ };
48
+ // =============================================================================
49
+ // STYLES
50
+ // =============================================================================
51
+ const getStyles = (tokens) => ({
52
+ container: {
53
+ marginBottom: tokens.spacing.md,
54
+ },
55
+ labelContainer: {
56
+ flexDirection: 'row',
57
+ marginBottom: tokens.spacing.sm,
58
+ },
59
+ label: {
60
+ fontWeight: tokens.typography.labelMedium.fontWeight,
61
+ color: tokens.colors.textPrimary,
62
+ },
63
+ inputError: {
64
+ borderColor: tokens.colors.error,
65
+ },
66
+ errorText: {
67
+ marginTop: tokens.spacing.xs,
68
+ },
69
+ helperText: {
70
+ marginTop: tokens.spacing.xs,
71
+ },
72
+ });
73
+ // =============================================================================
74
+ // EXPORTS
75
+ // =============================================================================
76
+ //# sourceMappingURL=FormField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormField.js","sourceRoot":"","sources":["../../../src/presentation/molecules/FormField.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * GridContainer Molecule - Responsive Grid Layout
3
+ *
4
+ * Provides flexible grid layout with configurable columns and gap
5
+ * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
6
+ *
7
+ * Atomic Design Level: MOLECULE
8
+ * Composition: View + Responsive Layout
9
+ *
10
+ * Usage:
11
+ * - Stats grids (2 columns)
12
+ * - Action grids (2 columns)
13
+ * - Product grids (2-3 columns)
14
+ * - Gallery grids (3-4 columns)
15
+ */
16
+ import React from 'react';
17
+ import { ViewStyle } from 'react-native';
18
+ export interface GridContainerProps {
19
+ /** Number of columns (default: 2) */
20
+ columns?: 2 | 3 | 4;
21
+ /** Gap between items in pixels (default: 8) */
22
+ gap?: number;
23
+ /** Container style override */
24
+ style?: ViewStyle;
25
+ /** Grid items to render */
26
+ children: React.ReactNode;
27
+ }
28
+ export interface GridItemProps {
29
+ /** Item content */
30
+ children: React.ReactNode;
31
+ /** Item style override */
32
+ style?: ViewStyle;
33
+ }
34
+ declare const GridContainerComponent: React.FC<GridContainerProps>;
35
+ export declare const GridItem: React.FC<GridItemProps>;
36
+ export declare const GridContainer: typeof GridContainerComponent & {
37
+ Item: typeof GridItem;
38
+ };
39
+ export {};
40
+ //# sourceMappingURL=GridContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridContainer.d.ts","sourceRoot":"","sources":["../../../src/presentation/molecules/GridContainer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAoB,SAAS,EAAkB,MAAM,cAAc,CAAC;AAM3E,MAAM,WAAW,kBAAkB;IACjC,qCAAqC;IACrC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACpB,+CAA+C;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,2BAA2B;IAC3B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,mBAAmB;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,0BAA0B;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAMD,QAAA,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAsBxD,CAAC;AAMF,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAE5C,CAAC;AAGF,eAAO,MAAM,aAAa,EAA6B,OAAO,sBAAsB,GAAG;IACrF,IAAI,EAAE,OAAO,QAAQ,CAAC;CACvB,CAAC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * GridContainer Molecule - Responsive Grid Layout
3
+ *
4
+ * Provides flexible grid layout with configurable columns and gap
5
+ * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
6
+ *
7
+ * Atomic Design Level: MOLECULE
8
+ * Composition: View + Responsive Layout
9
+ *
10
+ * Usage:
11
+ * - Stats grids (2 columns)
12
+ * - Action grids (2 columns)
13
+ * - Product grids (2-3 columns)
14
+ * - Gallery grids (3-4 columns)
15
+ */
16
+ import React from 'react';
17
+ import { View, StyleSheet } from 'react-native';
18
+ // =============================================================================
19
+ // COMPONENT IMPLEMENTATION
20
+ // =============================================================================
21
+ const GridContainerComponent = ({ columns = 2, gap = 8, style, children, }) => {
22
+ const styles = getStyles(gap);
23
+ return (<View style={[styles.container, style]}>
24
+ {React.Children.map(children, (child) => {
25
+ if (React.isValidElement(child)) {
26
+ const childStyle = child.props.style;
27
+ const itemStyle = getItemStyle(columns, gap);
28
+ return React.cloneElement(child, {
29
+ style: StyleSheet.flatten([itemStyle, childStyle]),
30
+ });
31
+ }
32
+ return child;
33
+ })}
34
+ </View>);
35
+ };
36
+ // =============================================================================
37
+ // GRID ITEM COMPONENT
38
+ // =============================================================================
39
+ export const GridItem = ({ children, style }) => {
40
+ return <View style={style}>{children}</View>;
41
+ };
42
+ // Export GridContainer with Item property
43
+ export const GridContainer = GridContainerComponent;
44
+ // Attach GridItem to GridContainer for convenient usage
45
+ GridContainer.Item = GridItem;
46
+ // =============================================================================
47
+ // HELPERS
48
+ // =============================================================================
49
+ const getItemStyle = (columns, gap) => {
50
+ // Calculate width: (100% - total gap space) / columns
51
+ // For 2 columns with 8px gap: (100% - 8px) / 2 = ~48%
52
+ // For 3 columns with 8px gap: (100% - 16px) / 3 = ~31.33%
53
+ const widthMap = {
54
+ 2: '48%',
55
+ 3: '31.33%',
56
+ 4: '23%',
57
+ };
58
+ return {
59
+ width: widthMap[columns] || '48%',
60
+ marginHorizontal: gap / 2,
61
+ marginBottom: gap * 1.5,
62
+ };
63
+ };
64
+ // =============================================================================
65
+ // STYLES
66
+ // =============================================================================
67
+ const getStyles = (gap) => StyleSheet.create({
68
+ container: {
69
+ flexDirection: 'row',
70
+ flexWrap: 'wrap',
71
+ marginHorizontal: -(gap / 2),
72
+ },
73
+ });
74
+ // =============================================================================
75
+ // EXPORTS
76
+ // =============================================================================
77
+ //# sourceMappingURL=GridContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridContainer.js","sourceRoot":"","sources":["../../../src/presentation/molecules/GridContainer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,UAAU,EAA6B,MAAM,cAAc,CAAC;AAwB3E,gFAAgF;AAChF,2BAA2B;AAC3B,gFAAgF;AAEhF,MAAM,sBAAsB,GAAiC,CAAC,EAC5D,OAAO,GAAG,CAAC,EACX,GAAG,GAAG,CAAC,EACP,KAAK,EACL,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAE9B,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CACrC;MAAA,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;YACtC,IAAI,KAAK,CAAC,cAAc,CAAgB,KAAK,CAAC,EAAE,CAAC;gBAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;gBACrC,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBAC7C,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE;oBAC/B,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;iBACnD,CAAC,CAAC;YACL,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CACJ;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,QAAQ,GAA4B,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;IACvE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,0CAA0C;AAC1C,MAAM,CAAC,MAAM,aAAa,GAAG,sBAE5B,CAAC;AAEF,wDAAwD;AACxD,aAAa,CAAC,IAAI,GAAG,QAAQ,CAAC;AAE9B,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,GAAW,EAAa,EAAE;IAC/D,sDAAsD;IACtD,sDAAsD;IACtD,0DAA0D;IAE1D,MAAM,QAAQ,GAAmC;QAC/C,CAAC,EAAE,KAAuB;QAC1B,CAAC,EAAE,QAA0B;QAC7B,CAAC,EAAE,KAAuB;KAC3B,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAK,KAAwB;QACrD,gBAAgB,EAAE,GAAG,GAAG,CAAC;QACzB,YAAY,EAAE,GAAG,GAAG,GAAG;KACxB,CAAC;AACJ,CAAC,CAAC;AAEF,gFAAgF;AAChF,SAAS;AACT,gFAAgF;AAEhF,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE,CAChC,UAAU,CAAC,MAAM,CAAC;IAChB,SAAS,EAAE;QACT,aAAa,EAAE,KAAc;QAC7B,QAAQ,EAAE,MAAe;QACzB,gBAAgB,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;KAC7B;CACF,CAAC,CAAC;AAEL,gFAAgF;AAChF,UAAU;AACV,gFAAgF"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * IconContainer Molecule Component
3
+ *
4
+ * Standardized icon container with consistent sizing and styling.
5
+ * Used throughout app for icon displays in lists, cards, and settings.
6
+ *
7
+ * Features:
8
+ * - Consistent sizing system
9
+ * - Optional background circle
10
+ * - Optional gradient background
11
+ * - Theme-aware colors
12
+ * - Accessibility support
13
+ *
14
+ * Atomic Design: Molecule (View + Icon)
15
+ */
16
+ import React from 'react';
17
+ interface IconContainerProps {
18
+ icon: React.ReactNode;
19
+ size?: 'sm' | 'md' | 'lg' | 'xl';
20
+ backgroundColor?: string;
21
+ gradient?: string[];
22
+ withBorder?: boolean;
23
+ borderColor?: string;
24
+ style?: object;
25
+ testID?: string;
26
+ }
27
+ export declare const IconContainer: React.FC<IconContainerProps>;
28
+ export {};
29
+ //# sourceMappingURL=IconContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconContainer.d.ts","sourceRoot":"","sources":["../../../src/presentation/molecules/IconContainer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,UAAU,kBAAkB;IAC1B,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AASD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA+CtD,CAAC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * IconContainer Molecule Component
3
+ *
4
+ * Standardized icon container with consistent sizing and styling.
5
+ * Used throughout app for icon displays in lists, cards, and settings.
6
+ *
7
+ * Features:
8
+ * - Consistent sizing system
9
+ * - Optional background circle
10
+ * - Optional gradient background
11
+ * - Theme-aware colors
12
+ * - Accessibility support
13
+ *
14
+ * Atomic Design: Molecule (View + Icon)
15
+ */
16
+ import React from 'react';
17
+ import { View, StyleSheet } from 'react-native';
18
+ import { useAppDesignTokens } from '../hooks/useAppDesignTokens';
19
+ import { LinearGradient } from 'expo-linear-gradient';
20
+ const getSizeMap = (tokens) => ({
21
+ sm: tokens.iconSizes.sm,
22
+ md: tokens.iconSizes.md,
23
+ lg: tokens.iconSizes.lg,
24
+ xl: tokens.iconSizes.xl,
25
+ });
26
+ export const IconContainer = ({ icon, size = 'md', backgroundColor, gradient, withBorder = false, borderColor, style, testID, }) => {
27
+ const tokens = useAppDesignTokens();
28
+ const sizeMap = getSizeMap(tokens);
29
+ const containerSize = sizeMap[size];
30
+ const borderRadius = containerSize / 2;
31
+ const containerStyle = [
32
+ styles.container,
33
+ {
34
+ width: containerSize,
35
+ height: containerSize,
36
+ borderRadius,
37
+ backgroundColor: backgroundColor || (gradient ? undefined : tokens.colors.surfaceVariant),
38
+ },
39
+ withBorder && {
40
+ borderWidth: 1,
41
+ borderColor: borderColor || tokens.colors.border,
42
+ },
43
+ style,
44
+ ];
45
+ if (gradient) {
46
+ return (<LinearGradient colors={gradient} style={containerStyle} testID={testID}>
47
+ {icon}
48
+ </LinearGradient>);
49
+ }
50
+ return (<View style={containerStyle} testID={testID}>
51
+ {icon}
52
+ </View>);
53
+ };
54
+ const styles = StyleSheet.create({
55
+ container: {
56
+ alignItems: 'center',
57
+ justifyContent: 'center',
58
+ },
59
+ });
60
+ //# sourceMappingURL=IconContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IconContainer.js","sourceRoot":"","sources":["../../../src/presentation/molecules/IconContainer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAatD,MAAM,UAAU,GAAG,CAAC,MAA6C,EAAE,EAAE,CAAC,CAAC;IACrE,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE;IACvB,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE;IACvB,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE;IACvB,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE;CACxB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAiC,CAAC,EAC1D,IAAI,EACJ,IAAI,GAAG,IAAI,EACX,eAAe,EACf,QAAQ,EACR,UAAU,GAAG,KAAK,EAClB,WAAW,EACX,KAAK,EACL,MAAM,GACP,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,YAAY,GAAG,aAAa,GAAG,CAAC,CAAC;IAEvC,MAAM,cAAc,GAAG;QACrB,MAAM,CAAC,SAAS;QAChB;YACE,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,aAAa;YACrB,YAAY;YACZ,eAAe,EAAE,eAAe,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC;SAC1F;QACD,UAAU,IAAI;YACZ,WAAW,EAAE,CAAC;YACd,WAAW,EAAE,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM;SACjD;QACD,KAAK;KACN,CAAC;IAEF,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CACL,CAAC,cAAc,CACb,MAAM,CAAC,CAAC,QAAQ,CAAC,CACjB,KAAK,CAAC,CAAC,cAAc,CAAC,CACtB,MAAM,CAAC,CAAC,MAAM,CAAC,CAEf;QAAA,CAAC,IAAI,CACP;MAAA,EAAE,cAAc,CAAC,CAClB,CAAC;IACJ,CAAC;IAED,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAC1C;MAAA,CAAC,IAAI,CACP;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE;QACT,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;KACzB;CACF,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface LanguageSwitcherProps {
3
+ showName?: boolean;
4
+ showFlag?: boolean;
5
+ color?: string;
6
+ navigationScreen?: string;
7
+ }
8
+ export declare const LanguageSwitcher: React.FC<LanguageSwitcherProps>;
9
+ export default LanguageSwitcher;
10
+ //# sourceMappingURL=LanguageSwitcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LanguageSwitcher.d.ts","sourceRoot":"","sources":["../../../src/presentation/molecules/LanguageSwitcher.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAmB5D,CAAC;AAQF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ import { TouchableOpacity } from 'react-native';
3
+ import { AtomicText, AtomicIcon } from '../atoms';
4
+ import { useAppDesignTokens } from '../hooks/useAppDesignTokens';
5
+ import { useLanguageNavigation } from './languageswitcher/hooks/useLanguageNavigation';
6
+ import { languageSwitcherConfig } from './languageswitcher/config/languageSwitcherConfig';
7
+ export const LanguageSwitcher = ({ showName = false, showFlag = true, color, navigationScreen = languageSwitcherConfig.defaultNavigationScreen, }) => {
8
+ const tokens = useAppDesignTokens();
9
+ const { currentLang, navigateToLanguageSelection } = useLanguageNavigation(navigationScreen);
10
+ const iconColor = color || tokens.colors.textPrimary;
11
+ const styles = getStyles(tokens);
12
+ return (<TouchableOpacity style={styles.container} onPress={navigateToLanguageSelection} activeOpacity={0.7} hitSlop={languageSwitcherConfig.hitSlop}>
13
+ {showFlag && <AtomicText type="headlineSmall" style={styles.flag}>{currentLang.flag}</AtomicText>}
14
+ {showName && <AtomicText type="bodySmall" color={iconColor} style={styles.languageName}>{currentLang.nativeName}</AtomicText>}
15
+ {!showName && !showFlag && <AtomicIcon name="Languages" color="primary"/>}
16
+ </TouchableOpacity>);
17
+ };
18
+ const getStyles = (tokens) => ({
19
+ container: { flexDirection: 'row', alignItems: 'center', gap: tokens.spacing.sm, paddingHorizontal: tokens.spacing.xs },
20
+ flag: { fontSize: tokens.typography.headingSmall.fontSize },
21
+ languageName: { fontSize: tokens.typography.bodySmall.fontSize, fontWeight: tokens.typography.semibold },
22
+ });
23
+ export default LanguageSwitcher;
24
+ //# sourceMappingURL=LanguageSwitcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LanguageSwitcher.js","sourceRoot":"","sources":["../../../src/presentation/molecules/LanguageSwitcher.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAc,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAC;AAS1F,MAAM,CAAC,MAAM,gBAAgB,GAAoC,CAAC,EAChE,QAAQ,GAAG,KAAK,EAChB,QAAQ,GAAG,IAAI,EACf,KAAK,EACL,gBAAgB,GAAG,sBAAsB,CAAC,uBAAuB,GAClE,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACpC,MAAM,EAAE,WAAW,EAAE,2BAA2B,EAAE,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IAC7F,MAAM,SAAS,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;IAErD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAEjC,OAAO,CACL,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,2BAA2B,CAAC,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAC3I;MAAA,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CACjG;MAAA,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAC7H;MAAA,CAAC,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,EAAG,CAC5E;IAAA,EAAE,gBAAgB,CAAC,CACpB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,MAA6C,EAAE,EAAE,CAAC,CAAC;IACpE,SAAS,EAAE,EAAE,aAAa,EAAE,KAAc,EAAE,UAAU,EAAE,QAAiB,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,iBAAiB,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE;IACzI,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE;IAC3D,YAAY,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE;CACzG,CAAC,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { ListItemProps } from './listitem/types';
3
+ export type { ListItemProps };
4
+ export declare const ListItem: React.FC<ListItemProps>;
5
+ //# sourceMappingURL=ListItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListItem.d.ts","sourceRoot":"","sources":["../../../src/presentation/molecules/ListItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAyB5C,CAAC"}
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ import { TouchableOpacity, View } from 'react-native';
3
+ import { useAppDesignTokens } from '../hooks/useAppDesignTokens';
4
+ import { AtomicText } from '../atoms/AtomicText';
5
+ import { AtomicIcon } from '../atoms/AtomicIcon';
6
+ import { getListItemStyles } from './listitem/styles/listItemStyles';
7
+ export const ListItem = ({ title, subtitle, leftIcon, rightIcon = 'forward', onPress, disabled = false, style, }) => {
8
+ const tokens = useAppDesignTokens();
9
+ const listItemStyles = getListItemStyles(tokens);
10
+ const Component = onPress ? TouchableOpacity : View;
11
+ return (<Component style={[listItemStyles.container, disabled ? listItemStyles.disabled : undefined, style]} onPress={onPress} disabled={disabled} activeOpacity={0.7}>
12
+ {leftIcon && (<View style={listItemStyles.iconContainer}>
13
+ <AtomicIcon name={leftIcon} color={disabled ? 'surfaceVariant' : 'primary'}/>
14
+ </View>)}
15
+ <View style={listItemStyles.content}>
16
+ <AtomicText type="bodyLarge" color={disabled ? 'surfaceVariant' : 'onSurface'} numberOfLines={1}>{title}</AtomicText>
17
+ {subtitle && <AtomicText type="bodySmall" color="surfaceVariant" numberOfLines={2} style={listItemStyles.subtitle}>{subtitle}</AtomicText>}
18
+ </View>
19
+ {rightIcon && onPress && (<View style={listItemStyles.iconContainer}>
20
+ <AtomicIcon name={rightIcon} color="surfaceVariant"/>
21
+ </View>)}
22
+ </Component>);
23
+ };
24
+ //# sourceMappingURL=ListItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListItem.js","sourceRoot":"","sources":["../../../src/presentation/molecules/ListItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAIrE,MAAM,CAAC,MAAM,QAAQ,GAA4B,CAAC,EAChD,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,GAAG,SAAS,EAAE,OAAO,EAAE,QAAQ,GAAG,KAAK,EAAE,KAAK,GACnF,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACpC,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,SAAS,GAA6B,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC;IAE9E,OAAO,CACL,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAC5J;MAAA,CAAC,QAAQ,IAAI,CACX,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CACxC;UAAA,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,EAC7E;QAAA,EAAE,IAAI,CAAC,CACR,CACD;MAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAClC;QAAA,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,UAAU,CACpH;QAAA,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,CAC5I;MAAA,EAAE,IAAI,CACN;MAAA,CAAC,SAAS,IAAI,OAAO,IAAI,CACvB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CACxC;UAAA,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,gBAAgB,EACrD;QAAA,EAAE,IAAI,CAAC,CACR,CACH;IAAA,EAAE,SAAS,CAAC,CACb,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * ScreenHeader Component - {{APP_NAME}}
3
+ *
4
+ * Reusable screen header with consistent back button placement
5
+ * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
6
+ *
7
+ * Features:
8
+ * - Top-left back button (arrow-back icon)
9
+ * - Centered title text
10
+ * - Optional right action button
11
+ * - Consistent spacing and layout
12
+ * - Works with all 100+ generated apps
13
+ *
14
+ * CRITICAL: Back button MUST ALWAYS be top-left (never bottom, never center)
15
+ */
16
+ import React from 'react';
17
+ import { ViewStyle } from 'react-native';
18
+ export interface ScreenHeaderProps {
19
+ /** Screen title (centered) */
20
+ title: string;
21
+ /** Optional right action button */
22
+ rightAction?: React.ReactNode;
23
+ /** Custom back button action (default: navigation.goBack()) */
24
+ onBackPress?: () => void;
25
+ /** Hide back button (rare cases only) */
26
+ hideBackButton?: boolean;
27
+ /** Additional header style */
28
+ style?: ViewStyle;
29
+ /** Test ID for E2E testing */
30
+ testID?: string;
31
+ }
32
+ /**
33
+ * ScreenHeader Component
34
+ *
35
+ * @example
36
+ * // Basic usage (most common)
37
+ * <ScreenHeader title="Settings" />
38
+ *
39
+ * @example
40
+ * // With right action
41
+ * <ScreenHeader
42
+ * title="Edit Profile"
43
+ * rightAction={<TouchableOpacity onPress={handleSave}><Text>Save</Text></TouchableOpacity>}
44
+ * />
45
+ *
46
+ * @example
47
+ * // Custom back action
48
+ * <ScreenHeader
49
+ * title="Unsaved Changes"
50
+ * onBackPress={handleUnsavedChanges}
51
+ * />
52
+ */
53
+ export declare const ScreenHeader: React.FC<ScreenHeaderProps>;
54
+ export default ScreenHeader;
55
+ //# sourceMappingURL=ScreenHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScreenHeader.d.ts","sourceRoot":"","sources":["../../../src/presentation/molecules/ScreenHeader.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAsC,SAAS,EAAE,MAAM,cAAc,CAAC;AAM7E,MAAM,WAAW,iBAAiB;IAChC,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IAEd,mCAAmC;IACnC,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAE9B,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAEzB,yCAAyC;IACzC,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAyEpD,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * ScreenHeader Component - {{APP_NAME}}
3
+ *
4
+ * Reusable screen header with consistent back button placement
5
+ * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
6
+ *
7
+ * Features:
8
+ * - Top-left back button (arrow-back icon)
9
+ * - Centered title text
10
+ * - Optional right action button
11
+ * - Consistent spacing and layout
12
+ * - Works with all 100+ generated apps
13
+ *
14
+ * CRITICAL: Back button MUST ALWAYS be top-left (never bottom, never center)
15
+ */
16
+ import React from 'react';
17
+ import { View, TouchableOpacity } from 'react-native';
18
+ import { useNavigation } from '@react-navigation/native';
19
+ import { AtomicIcon } from '../atoms/AtomicIcon';
20
+ import { AtomicText } from '../atoms/AtomicText';
21
+ import { useAppDesignTokens } from '../hooks/useAppDesignTokens';
22
+ /**
23
+ * ScreenHeader Component
24
+ *
25
+ * @example
26
+ * // Basic usage (most common)
27
+ * <ScreenHeader title="Settings" />
28
+ *
29
+ * @example
30
+ * // With right action
31
+ * <ScreenHeader
32
+ * title="Edit Profile"
33
+ * rightAction={<TouchableOpacity onPress={handleSave}><Text>Save</Text></TouchableOpacity>}
34
+ * />
35
+ *
36
+ * @example
37
+ * // Custom back action
38
+ * <ScreenHeader
39
+ * title="Unsaved Changes"
40
+ * onBackPress={handleUnsavedChanges}
41
+ * />
42
+ */
43
+ export const ScreenHeader = ({ title, rightAction, onBackPress, hideBackButton = false, style, testID = 'screen-header', }) => {
44
+ const navigation = useNavigation();
45
+ const tokens = useAppDesignTokens();
46
+ const handleBackPress = () => {
47
+ if (onBackPress) {
48
+ onBackPress();
49
+ }
50
+ else {
51
+ navigation.goBack();
52
+ }
53
+ };
54
+ return (<View style={[
55
+ {
56
+ flexDirection: 'row',
57
+ alignItems: 'center',
58
+ justifyContent: 'space-between',
59
+ paddingHorizontal: tokens.spacing.screenPadding,
60
+ paddingVertical: tokens.spacing.md,
61
+ borderBottomWidth: 0.5,
62
+ backgroundColor: tokens.colors.backgroundPrimary,
63
+ borderBottomColor: tokens.colors.border,
64
+ },
65
+ style
66
+ ]} testID={testID}>
67
+ {/* Left: Back Button (ALWAYS top-left when visible) */}
68
+ <View style={{ width: 40, alignItems: 'flex-start' }}>
69
+ {!hideBackButton && (<TouchableOpacity onPress={handleBackPress} hitSlop={{ top: 10, bottom: 10, left: 10, right: 10 }} testID={`${testID}-back-button`}>
70
+ <AtomicIcon name="arrow-back" color="primary"/>
71
+ </TouchableOpacity>)}
72
+ </View>
73
+
74
+ {/* Center: Title */}
75
+ <View style={{ flex: 1, alignItems: 'center', paddingHorizontal: tokens.spacing.sm }}>
76
+ <AtomicText type="headlineMedium" style={[
77
+ {
78
+ fontWeight: tokens.typography.bold,
79
+ textAlign: 'center',
80
+ color: tokens.colors.textPrimary,
81
+ }
82
+ ]} numberOfLines={1} testID={`${testID}-title`}>
83
+ {title}
84
+ </AtomicText>
85
+ </View>
86
+
87
+ {/* Right: Optional Action or Placeholder */}
88
+ <View style={{ width: 40, alignItems: 'flex-start' }}>
89
+ {rightAction || <View style={{ width: 40 }}/>}
90
+ </View>
91
+ </View>);
92
+ };
93
+ export default ScreenHeader;
94
+ //# sourceMappingURL=ScreenHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScreenHeader.js","sourceRoot":"","sources":["../../../src/presentation/molecules/ScreenHeader.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * SearchBar Molecule - Search Input with Icon and Clear Button
3
+ *
4
+ * Combines AtomicInput + AtomicIcon + AtomicButton
5
+ * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
6
+ *
7
+ * Atomic Design Level: MOLECULE
8
+ * Composition: AtomicInput + AtomicIcon + TouchableOpacity
9
+ */
10
+ import React from 'react';
11
+ import { ViewStyle } from 'react-native';
12
+ import { AtomicInputProps } from '../atoms/AtomicInput';
13
+ export interface SearchBarProps extends Omit<AtomicInputProps, 'leftIcon' | 'rightIcon'> {
14
+ onClear?: () => void;
15
+ containerStyle?: ViewStyle;
16
+ }
17
+ export declare const SearchBar: React.FC<SearchBarProps>;
18
+ //# sourceMappingURL=SearchBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchBar.d.ts","sourceRoot":"","sources":["../../../src/presentation/molecules/SearchBar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAA0B,SAAS,EAAE,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAe,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAOrE,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,gBAAgB,EAAE,UAAU,GAAG,WAAW,CAAC;IACtF,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,cAAc,CAAC,EAAE,SAAS,CAAC;CAC5B;AAMD,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAoC9C,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * SearchBar Molecule - Search Input with Icon and Clear Button
3
+ *
4
+ * Combines AtomicInput + AtomicIcon + AtomicButton
5
+ * Theme: {{THEME_NAME}} ({{CATEGORY}} category)
6
+ *
7
+ * Atomic Design Level: MOLECULE
8
+ * Composition: AtomicInput + AtomicIcon + TouchableOpacity
9
+ */
10
+ import React from 'react';
11
+ import { View } from 'react-native';
12
+ import { useAppDesignTokens } from '../hooks/useAppDesignTokens';
13
+ import { AtomicInput } from '../atoms/AtomicInput';
14
+ // =============================================================================
15
+ // COMPONENT IMPLEMENTATION
16
+ // =============================================================================
17
+ export const SearchBar = ({ value, onChangeText, onClear, placeholder = 'Search...', containerStyle, ...inputProps }) => {
18
+ const tokens = useAppDesignTokens();
19
+ const handleClear = () => {
20
+ if (onChangeText) {
21
+ onChangeText('');
22
+ }
23
+ if (onClear) {
24
+ onClear();
25
+ }
26
+ };
27
+ const styles = getStyles(tokens);
28
+ return (<View style={[styles.container, containerStyle]}>
29
+ <AtomicInput {...inputProps} value={value} onChangeText={onChangeText} placeholder={placeholder} variant="filled" style={styles.input} leadingIcon="Search" trailingIcon={value && value.length > 0 ? "X" : undefined} onTrailingIconPress={value && value.length > 0 ? handleClear : undefined}/>
30
+ </View>);
31
+ };
32
+ // =============================================================================
33
+ // STYLES
34
+ // =============================================================================
35
+ const getStyles = (tokens) => ({
36
+ container: {
37
+ width: '100%',
38
+ marginVertical: tokens.spacing.sm,
39
+ },
40
+ input: {
41
+ backgroundColor: tokens.colors.surfaceVariant,
42
+ },
43
+ });
44
+ // =============================================================================
45
+ // EXPORTS
46
+ // =============================================================================
47
+ //# sourceMappingURL=SearchBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchBar.js","sourceRoot":"","sources":["../../../src/presentation/molecules/SearchBar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAA+B,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAoB,MAAM,sBAAsB,CAAC;AAYrE,gFAAgF;AAChF,2BAA2B;AAC3B,gFAAgF;AAEhF,MAAM,CAAC,MAAM,SAAS,GAA6B,CAAC,EAClD,KAAK,EACL,YAAY,EACZ,OAAO,EACP,WAAW,GAAG,WAAW,EACzB,cAAc,EACd,GAAG,UAAU,EACd,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IAEpC,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;QACD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAEjC,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAC9C;MAAA,CAAC,WAAW,CACV,IAAI,UAAU,CAAC,CACf,KAAK,CAAC,CAAC,KAAK,CAAC,CACb,YAAY,CAAC,CAAC,YAAY,CAAC,CAC3B,WAAW,CAAC,CAAC,WAAW,CAAC,CACzB,OAAO,CAAC,QAAQ,CAChB,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACpB,WAAW,CAAC,QAAQ,CACpB,YAAY,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAC1D,mBAAmB,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,EAE7E;IAAA,EAAE,IAAI,CAAC,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,gFAAgF;AAChF,SAAS;AACT,gFAAgF;AAEhF,MAAM,SAAS,GAAG,CAAC,MAA6C,EAAE,EAAE,CAAC,CAAC;IACpE,SAAS,EAAE;QACT,KAAK,EAAE,MAAM;QACb,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;KACrB;IACd,KAAK,EAAE;QACL,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc;KACjC;CACf,CAAC,CAAC;AAEH,gFAAgF;AAChF,UAAU;AACV,gFAAgF"}