orn-ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (407) hide show
  1. package/README.md +107 -0
  2. package/bin/orn-ui.mjs +228 -0
  3. package/lib/commonjs/atoms/Avatar.js +42 -0
  4. package/lib/commonjs/atoms/Avatar.js.map +1 -0
  5. package/lib/commonjs/atoms/Badge.js +82 -0
  6. package/lib/commonjs/atoms/Badge.js.map +1 -0
  7. package/lib/commonjs/atoms/Button.js +222 -0
  8. package/lib/commonjs/atoms/Button.js.map +1 -0
  9. package/lib/commonjs/atoms/Card.js +33 -0
  10. package/lib/commonjs/atoms/Card.js.map +1 -0
  11. package/lib/commonjs/atoms/Checkbox.js +107 -0
  12. package/lib/commonjs/atoms/Checkbox.js.map +1 -0
  13. package/lib/commonjs/atoms/Divider.js +27 -0
  14. package/lib/commonjs/atoms/Divider.js.map +1 -0
  15. package/lib/commonjs/atoms/EmptyState.js +69 -0
  16. package/lib/commonjs/atoms/EmptyState.js.map +1 -0
  17. package/lib/commonjs/atoms/Fab.js +62 -0
  18. package/lib/commonjs/atoms/Fab.js.map +1 -0
  19. package/lib/commonjs/atoms/IconButton.js +60 -0
  20. package/lib/commonjs/atoms/IconButton.js.map +1 -0
  21. package/lib/commonjs/atoms/Image.js +113 -0
  22. package/lib/commonjs/atoms/Image.js.map +1 -0
  23. package/lib/commonjs/atoms/Input.js +173 -0
  24. package/lib/commonjs/atoms/Input.js.map +1 -0
  25. package/lib/commonjs/atoms/KeyValueRow.js +60 -0
  26. package/lib/commonjs/atoms/KeyValueRow.js.map +1 -0
  27. package/lib/commonjs/atoms/PressableScale.js +60 -0
  28. package/lib/commonjs/atoms/PressableScale.js.map +1 -0
  29. package/lib/commonjs/atoms/Spinner.js +156 -0
  30. package/lib/commonjs/atoms/Spinner.js.map +1 -0
  31. package/lib/commonjs/atoms/Text.js +63 -0
  32. package/lib/commonjs/atoms/Text.js.map +1 -0
  33. package/lib/commonjs/atoms/index.js +135 -0
  34. package/lib/commonjs/atoms/index.js.map +1 -0
  35. package/lib/commonjs/icons/Icon.js +40 -0
  36. package/lib/commonjs/icons/Icon.js.map +1 -0
  37. package/lib/commonjs/icons/defaultIcons.js +386 -0
  38. package/lib/commonjs/icons/defaultIcons.js.map +1 -0
  39. package/lib/commonjs/icons/index.js +20 -0
  40. package/lib/commonjs/icons/index.js.map +1 -0
  41. package/lib/commonjs/icons/types.js +6 -0
  42. package/lib/commonjs/icons/types.js.map +1 -0
  43. package/lib/commonjs/index.js +61 -0
  44. package/lib/commonjs/index.js.map +1 -0
  45. package/lib/commonjs/molecules/AvatarHeader.js +87 -0
  46. package/lib/commonjs/molecules/AvatarHeader.js.map +1 -0
  47. package/lib/commonjs/molecules/FormActions.js +47 -0
  48. package/lib/commonjs/molecules/FormActions.js.map +1 -0
  49. package/lib/commonjs/molecules/InfoRow.js +83 -0
  50. package/lib/commonjs/molecules/InfoRow.js.map +1 -0
  51. package/lib/commonjs/molecules/OptionCard.js +98 -0
  52. package/lib/commonjs/molecules/OptionCard.js.map +1 -0
  53. package/lib/commonjs/molecules/Stepper.js +104 -0
  54. package/lib/commonjs/molecules/Stepper.js.map +1 -0
  55. package/lib/commonjs/molecules/Steps.js +220 -0
  56. package/lib/commonjs/molecules/Steps.js.map +1 -0
  57. package/lib/commonjs/molecules/ThemeToggle.js +91 -0
  58. package/lib/commonjs/molecules/ThemeToggle.js.map +1 -0
  59. package/lib/commonjs/molecules/index.js +55 -0
  60. package/lib/commonjs/molecules/index.js.map +1 -0
  61. package/lib/commonjs/organisms/Alert.js +223 -0
  62. package/lib/commonjs/organisms/Alert.js.map +1 -0
  63. package/lib/commonjs/organisms/AlertProvider.js +109 -0
  64. package/lib/commonjs/organisms/AlertProvider.js.map +1 -0
  65. package/lib/commonjs/organisms/BottomSheet.js +154 -0
  66. package/lib/commonjs/organisms/BottomSheet.js.map +1 -0
  67. package/lib/commonjs/organisms/DateField.js +147 -0
  68. package/lib/commonjs/organisms/DateField.js.map +1 -0
  69. package/lib/commonjs/organisms/DatePicker.js +253 -0
  70. package/lib/commonjs/organisms/DatePicker.js.map +1 -0
  71. package/lib/commonjs/organisms/List.js +143 -0
  72. package/lib/commonjs/organisms/List.js.map +1 -0
  73. package/lib/commonjs/organisms/Modal.js +286 -0
  74. package/lib/commonjs/organisms/Modal.js.map +1 -0
  75. package/lib/commonjs/organisms/Screen.js +75 -0
  76. package/lib/commonjs/organisms/Screen.js.map +1 -0
  77. package/lib/commonjs/organisms/SearchList.js +180 -0
  78. package/lib/commonjs/organisms/SearchList.js.map +1 -0
  79. package/lib/commonjs/organisms/Select.js +178 -0
  80. package/lib/commonjs/organisms/Select.js.map +1 -0
  81. package/lib/commonjs/organisms/Toast.js +157 -0
  82. package/lib/commonjs/organisms/Toast.js.map +1 -0
  83. package/lib/commonjs/organisms/ToastProvider.js +131 -0
  84. package/lib/commonjs/organisms/ToastProvider.js.map +1 -0
  85. package/lib/commonjs/organisms/Wizard.js +116 -0
  86. package/lib/commonjs/organisms/Wizard.js.map +1 -0
  87. package/lib/commonjs/organisms/index.js +127 -0
  88. package/lib/commonjs/organisms/index.js.map +1 -0
  89. package/lib/commonjs/package.json +1 -0
  90. package/lib/commonjs/theme/UIProvider.js +110 -0
  91. package/lib/commonjs/theme/UIProvider.js.map +1 -0
  92. package/lib/commonjs/theme/createStyles.js +42 -0
  93. package/lib/commonjs/theme/createStyles.js.map +1 -0
  94. package/lib/commonjs/theme/createTheme.js +50 -0
  95. package/lib/commonjs/theme/createTheme.js.map +1 -0
  96. package/lib/commonjs/theme/index.js +151 -0
  97. package/lib/commonjs/theme/index.js.map +1 -0
  98. package/lib/commonjs/theme/insets.js +15 -0
  99. package/lib/commonjs/theme/insets.js.map +1 -0
  100. package/lib/commonjs/theme/labels.js +18 -0
  101. package/lib/commonjs/theme/labels.js.map +1 -0
  102. package/lib/commonjs/theme/palettes.js +42 -0
  103. package/lib/commonjs/theme/palettes.js.map +1 -0
  104. package/lib/commonjs/theme/tokens.js +120 -0
  105. package/lib/commonjs/theme/tokens.js.map +1 -0
  106. package/lib/commonjs/theme/types.js +6 -0
  107. package/lib/commonjs/theme/types.js.map +1 -0
  108. package/lib/module/atoms/Avatar.js +37 -0
  109. package/lib/module/atoms/Avatar.js.map +1 -0
  110. package/lib/module/atoms/Badge.js +77 -0
  111. package/lib/module/atoms/Badge.js.map +1 -0
  112. package/lib/module/atoms/Button.js +217 -0
  113. package/lib/module/atoms/Button.js.map +1 -0
  114. package/lib/module/atoms/Card.js +28 -0
  115. package/lib/module/atoms/Card.js.map +1 -0
  116. package/lib/module/atoms/Checkbox.js +102 -0
  117. package/lib/module/atoms/Checkbox.js.map +1 -0
  118. package/lib/module/atoms/Divider.js +22 -0
  119. package/lib/module/atoms/Divider.js.map +1 -0
  120. package/lib/module/atoms/EmptyState.js +64 -0
  121. package/lib/module/atoms/EmptyState.js.map +1 -0
  122. package/lib/module/atoms/Fab.js +57 -0
  123. package/lib/module/atoms/Fab.js.map +1 -0
  124. package/lib/module/atoms/IconButton.js +55 -0
  125. package/lib/module/atoms/IconButton.js.map +1 -0
  126. package/lib/module/atoms/Image.js +108 -0
  127. package/lib/module/atoms/Image.js.map +1 -0
  128. package/lib/module/atoms/Input.js +168 -0
  129. package/lib/module/atoms/Input.js.map +1 -0
  130. package/lib/module/atoms/KeyValueRow.js +55 -0
  131. package/lib/module/atoms/KeyValueRow.js.map +1 -0
  132. package/lib/module/atoms/PressableScale.js +55 -0
  133. package/lib/module/atoms/PressableScale.js.map +1 -0
  134. package/lib/module/atoms/Spinner.js +151 -0
  135. package/lib/module/atoms/Spinner.js.map +1 -0
  136. package/lib/module/atoms/Text.js +58 -0
  137. package/lib/module/atoms/Text.js.map +1 -0
  138. package/lib/module/atoms/index.js +18 -0
  139. package/lib/module/atoms/index.js.map +1 -0
  140. package/lib/module/icons/Icon.js +35 -0
  141. package/lib/module/icons/Icon.js.map +1 -0
  142. package/lib/module/icons/defaultIcons.js +381 -0
  143. package/lib/module/icons/defaultIcons.js.map +1 -0
  144. package/lib/module/icons/index.js +5 -0
  145. package/lib/module/icons/index.js.map +1 -0
  146. package/lib/module/icons/types.js +4 -0
  147. package/lib/module/icons/types.js.map +1 -0
  148. package/lib/module/index.js +8 -0
  149. package/lib/module/index.js.map +1 -0
  150. package/lib/module/molecules/AvatarHeader.js +82 -0
  151. package/lib/module/molecules/AvatarHeader.js.map +1 -0
  152. package/lib/module/molecules/FormActions.js +42 -0
  153. package/lib/module/molecules/FormActions.js.map +1 -0
  154. package/lib/module/molecules/InfoRow.js +78 -0
  155. package/lib/module/molecules/InfoRow.js.map +1 -0
  156. package/lib/module/molecules/OptionCard.js +93 -0
  157. package/lib/module/molecules/OptionCard.js.map +1 -0
  158. package/lib/module/molecules/Stepper.js +99 -0
  159. package/lib/module/molecules/Stepper.js.map +1 -0
  160. package/lib/module/molecules/Steps.js +215 -0
  161. package/lib/module/molecules/Steps.js.map +1 -0
  162. package/lib/module/molecules/ThemeToggle.js +86 -0
  163. package/lib/module/molecules/ThemeToggle.js.map +1 -0
  164. package/lib/module/molecules/index.js +10 -0
  165. package/lib/module/molecules/index.js.map +1 -0
  166. package/lib/module/organisms/Alert.js +218 -0
  167. package/lib/module/organisms/Alert.js.map +1 -0
  168. package/lib/module/organisms/AlertProvider.js +103 -0
  169. package/lib/module/organisms/AlertProvider.js.map +1 -0
  170. package/lib/module/organisms/BottomSheet.js +149 -0
  171. package/lib/module/organisms/BottomSheet.js.map +1 -0
  172. package/lib/module/organisms/DateField.js +142 -0
  173. package/lib/module/organisms/DateField.js.map +1 -0
  174. package/lib/module/organisms/DatePicker.js +247 -0
  175. package/lib/module/organisms/DatePicker.js.map +1 -0
  176. package/lib/module/organisms/List.js +138 -0
  177. package/lib/module/organisms/List.js.map +1 -0
  178. package/lib/module/organisms/Modal.js +281 -0
  179. package/lib/module/organisms/Modal.js.map +1 -0
  180. package/lib/module/organisms/Screen.js +70 -0
  181. package/lib/module/organisms/Screen.js.map +1 -0
  182. package/lib/module/organisms/SearchList.js +175 -0
  183. package/lib/module/organisms/SearchList.js.map +1 -0
  184. package/lib/module/organisms/Select.js +173 -0
  185. package/lib/module/organisms/Select.js.map +1 -0
  186. package/lib/module/organisms/Toast.js +152 -0
  187. package/lib/module/organisms/Toast.js.map +1 -0
  188. package/lib/module/organisms/ToastProvider.js +125 -0
  189. package/lib/module/organisms/ToastProvider.js.map +1 -0
  190. package/lib/module/organisms/Wizard.js +111 -0
  191. package/lib/module/organisms/Wizard.js.map +1 -0
  192. package/lib/module/organisms/index.js +16 -0
  193. package/lib/module/organisms/index.js.map +1 -0
  194. package/lib/module/package.json +1 -0
  195. package/lib/module/theme/UIProvider.js +97 -0
  196. package/lib/module/theme/UIProvider.js.map +1 -0
  197. package/lib/module/theme/createStyles.js +38 -0
  198. package/lib/module/theme/createStyles.js.map +1 -0
  199. package/lib/module/theme/createTheme.js +45 -0
  200. package/lib/module/theme/createTheme.js.map +1 -0
  201. package/lib/module/theme/index.js +10 -0
  202. package/lib/module/theme/index.js.map +1 -0
  203. package/lib/module/theme/insets.js +11 -0
  204. package/lib/module/theme/insets.js.map +1 -0
  205. package/lib/module/theme/labels.js +14 -0
  206. package/lib/module/theme/labels.js.map +1 -0
  207. package/lib/module/theme/palettes.js +38 -0
  208. package/lib/module/theme/palettes.js.map +1 -0
  209. package/lib/module/theme/tokens.js +117 -0
  210. package/lib/module/theme/tokens.js.map +1 -0
  211. package/lib/module/theme/types.js +4 -0
  212. package/lib/module/theme/types.js.map +1 -0
  213. package/lib/typescript/atoms/Avatar.d.ts +15 -0
  214. package/lib/typescript/atoms/Avatar.d.ts.map +1 -0
  215. package/lib/typescript/atoms/Badge.d.ts +19 -0
  216. package/lib/typescript/atoms/Badge.d.ts.map +1 -0
  217. package/lib/typescript/atoms/Button.d.ts +30 -0
  218. package/lib/typescript/atoms/Button.d.ts.map +1 -0
  219. package/lib/typescript/atoms/Card.d.ts +8 -0
  220. package/lib/typescript/atoms/Card.d.ts.map +1 -0
  221. package/lib/typescript/atoms/Checkbox.d.ts +11 -0
  222. package/lib/typescript/atoms/Checkbox.d.ts.map +1 -0
  223. package/lib/typescript/atoms/Divider.d.ts +8 -0
  224. package/lib/typescript/atoms/Divider.d.ts.map +1 -0
  225. package/lib/typescript/atoms/EmptyState.d.ts +12 -0
  226. package/lib/typescript/atoms/EmptyState.d.ts.map +1 -0
  227. package/lib/typescript/atoms/Fab.d.ts +22 -0
  228. package/lib/typescript/atoms/Fab.d.ts.map +1 -0
  229. package/lib/typescript/atoms/IconButton.d.ts +23 -0
  230. package/lib/typescript/atoms/IconButton.d.ts.map +1 -0
  231. package/lib/typescript/atoms/Image.d.ts +45 -0
  232. package/lib/typescript/atoms/Image.d.ts.map +1 -0
  233. package/lib/typescript/atoms/Input.d.ts +24 -0
  234. package/lib/typescript/atoms/Input.d.ts.map +1 -0
  235. package/lib/typescript/atoms/KeyValueRow.d.ts +17 -0
  236. package/lib/typescript/atoms/KeyValueRow.d.ts.map +1 -0
  237. package/lib/typescript/atoms/PressableScale.d.ts +15 -0
  238. package/lib/typescript/atoms/PressableScale.d.ts.map +1 -0
  239. package/lib/typescript/atoms/Spinner.d.ts +20 -0
  240. package/lib/typescript/atoms/Spinner.d.ts.map +1 -0
  241. package/lib/typescript/atoms/Text.d.ts +13 -0
  242. package/lib/typescript/atoms/Text.d.ts.map +1 -0
  243. package/lib/typescript/atoms/index.d.ts +31 -0
  244. package/lib/typescript/atoms/index.d.ts.map +1 -0
  245. package/lib/typescript/icons/Icon.d.ts +18 -0
  246. package/lib/typescript/icons/Icon.d.ts.map +1 -0
  247. package/lib/typescript/icons/defaultIcons.d.ts +5 -0
  248. package/lib/typescript/icons/defaultIcons.d.ts.map +1 -0
  249. package/lib/typescript/icons/index.d.ts +5 -0
  250. package/lib/typescript/icons/index.d.ts.map +1 -0
  251. package/lib/typescript/icons/types.d.ts +10 -0
  252. package/lib/typescript/icons/types.d.ts.map +1 -0
  253. package/lib/typescript/index.d.ts +6 -0
  254. package/lib/typescript/index.d.ts.map +1 -0
  255. package/lib/typescript/molecules/AvatarHeader.d.ts +20 -0
  256. package/lib/typescript/molecules/AvatarHeader.d.ts.map +1 -0
  257. package/lib/typescript/molecules/FormActions.d.ts +21 -0
  258. package/lib/typescript/molecules/FormActions.d.ts.map +1 -0
  259. package/lib/typescript/molecules/InfoRow.d.ts +17 -0
  260. package/lib/typescript/molecules/InfoRow.d.ts.map +1 -0
  261. package/lib/typescript/molecules/OptionCard.d.ts +20 -0
  262. package/lib/typescript/molecules/OptionCard.d.ts.map +1 -0
  263. package/lib/typescript/molecules/Stepper.d.ts +15 -0
  264. package/lib/typescript/molecules/Stepper.d.ts.map +1 -0
  265. package/lib/typescript/molecules/Steps.d.ts +29 -0
  266. package/lib/typescript/molecules/Steps.d.ts.map +1 -0
  267. package/lib/typescript/molecules/ThemeToggle.d.ts +15 -0
  268. package/lib/typescript/molecules/ThemeToggle.d.ts.map +1 -0
  269. package/lib/typescript/molecules/index.d.ts +15 -0
  270. package/lib/typescript/molecules/index.d.ts.map +1 -0
  271. package/lib/typescript/organisms/Alert.d.ts +29 -0
  272. package/lib/typescript/organisms/Alert.d.ts.map +1 -0
  273. package/lib/typescript/organisms/AlertProvider.d.ts +32 -0
  274. package/lib/typescript/organisms/AlertProvider.d.ts.map +1 -0
  275. package/lib/typescript/organisms/BottomSheet.d.ts +15 -0
  276. package/lib/typescript/organisms/BottomSheet.d.ts.map +1 -0
  277. package/lib/typescript/organisms/DateField.d.ts +26 -0
  278. package/lib/typescript/organisms/DateField.d.ts.map +1 -0
  279. package/lib/typescript/organisms/DatePicker.d.ts +49 -0
  280. package/lib/typescript/organisms/DatePicker.d.ts.map +1 -0
  281. package/lib/typescript/organisms/List.d.ts +35 -0
  282. package/lib/typescript/organisms/List.d.ts.map +1 -0
  283. package/lib/typescript/organisms/Modal.d.ts +25 -0
  284. package/lib/typescript/organisms/Modal.d.ts.map +1 -0
  285. package/lib/typescript/organisms/Screen.d.ts +26 -0
  286. package/lib/typescript/organisms/Screen.d.ts.map +1 -0
  287. package/lib/typescript/organisms/SearchList.d.ts +40 -0
  288. package/lib/typescript/organisms/SearchList.d.ts.map +1 -0
  289. package/lib/typescript/organisms/Select.d.ts +25 -0
  290. package/lib/typescript/organisms/Select.d.ts.map +1 -0
  291. package/lib/typescript/organisms/Toast.d.ts +28 -0
  292. package/lib/typescript/organisms/Toast.d.ts.map +1 -0
  293. package/lib/typescript/organisms/ToastProvider.d.ts +36 -0
  294. package/lib/typescript/organisms/ToastProvider.d.ts.map +1 -0
  295. package/lib/typescript/organisms/Wizard.d.ts +40 -0
  296. package/lib/typescript/organisms/Wizard.d.ts.map +1 -0
  297. package/lib/typescript/organisms/index.d.ts +27 -0
  298. package/lib/typescript/organisms/index.d.ts.map +1 -0
  299. package/lib/typescript/theme/UIProvider.d.ts +47 -0
  300. package/lib/typescript/theme/UIProvider.d.ts.map +1 -0
  301. package/lib/typescript/theme/createStyles.d.ts +21 -0
  302. package/lib/typescript/theme/createStyles.d.ts.map +1 -0
  303. package/lib/typescript/theme/createTheme.d.ts +9 -0
  304. package/lib/typescript/theme/createTheme.d.ts.map +1 -0
  305. package/lib/typescript/theme/index.d.ts +14 -0
  306. package/lib/typescript/theme/index.d.ts.map +1 -0
  307. package/lib/typescript/theme/insets.d.ts +9 -0
  308. package/lib/typescript/theme/insets.d.ts.map +1 -0
  309. package/lib/typescript/theme/labels.d.ts +13 -0
  310. package/lib/typescript/theme/labels.d.ts.map +1 -0
  311. package/lib/typescript/theme/palettes.d.ts +24 -0
  312. package/lib/typescript/theme/palettes.d.ts.map +1 -0
  313. package/lib/typescript/theme/tokens.d.ts +41 -0
  314. package/lib/typescript/theme/tokens.d.ts.map +1 -0
  315. package/lib/typescript/theme/types.d.ts +24 -0
  316. package/lib/typescript/theme/types.d.ts.map +1 -0
  317. package/package.json +311 -0
  318. package/registry/alert-provider.json +21 -0
  319. package/registry/alert.json +19 -0
  320. package/registry/avatar-header.json +18 -0
  321. package/registry/avatar.json +18 -0
  322. package/registry/badge.json +18 -0
  323. package/registry/bottom-sheet.json +18 -0
  324. package/registry/button.json +18 -0
  325. package/registry/card.json +18 -0
  326. package/registry/checkbox.json +18 -0
  327. package/registry/core.json +64 -0
  328. package/registry/date-field.json +24 -0
  329. package/registry/date-picker.json +23 -0
  330. package/registry/divider.json +18 -0
  331. package/registry/empty-state.json +18 -0
  332. package/registry/fab.json +19 -0
  333. package/registry/form-actions.json +19 -0
  334. package/registry/icon-button.json +19 -0
  335. package/registry/image.json +20 -0
  336. package/registry/index.json +465 -0
  337. package/registry/info-row.json +19 -0
  338. package/registry/input.json +18 -0
  339. package/registry/key-value-row.json +18 -0
  340. package/registry/list.json +20 -0
  341. package/registry/manifest.json +263 -0
  342. package/registry/modal.json +21 -0
  343. package/registry/option-card.json +18 -0
  344. package/registry/pressable-scale.json +18 -0
  345. package/registry/screen.json +18 -0
  346. package/registry/search-list.json +23 -0
  347. package/registry/select.json +18 -0
  348. package/registry/spinner.json +18 -0
  349. package/registry/stepper.json +18 -0
  350. package/registry/steps.json +18 -0
  351. package/registry/theme-toggle.json +18 -0
  352. package/registry/title.json +21 -0
  353. package/registry/toast-provider.json +20 -0
  354. package/registry/toast.json +18 -0
  355. package/registry/wizard.json +20 -0
  356. package/src/atoms/Avatar.tsx +40 -0
  357. package/src/atoms/Badge.tsx +55 -0
  358. package/src/atoms/Button.tsx +186 -0
  359. package/src/atoms/Card.tsx +27 -0
  360. package/src/atoms/Checkbox.tsx +75 -0
  361. package/src/atoms/Divider.tsx +14 -0
  362. package/src/atoms/EmptyState.tsx +60 -0
  363. package/src/atoms/Fab.tsx +63 -0
  364. package/src/atoms/IconButton.tsx +53 -0
  365. package/src/atoms/Image.tsx +137 -0
  366. package/src/atoms/Input.tsx +166 -0
  367. package/src/atoms/KeyValueRow.tsx +48 -0
  368. package/src/atoms/PressableScale.tsx +52 -0
  369. package/src/atoms/Spinner.tsx +127 -0
  370. package/src/atoms/Text.tsx +58 -0
  371. package/src/atoms/index.ts +30 -0
  372. package/src/icons/Icon.tsx +27 -0
  373. package/src/icons/defaultIcons.tsx +292 -0
  374. package/src/icons/index.ts +4 -0
  375. package/src/icons/types.ts +27 -0
  376. package/src/index.ts +5 -0
  377. package/src/molecules/AvatarHeader.tsx +69 -0
  378. package/src/molecules/FormActions.tsx +52 -0
  379. package/src/molecules/InfoRow.tsx +52 -0
  380. package/src/molecules/OptionCard.tsx +82 -0
  381. package/src/molecules/Stepper.tsx +76 -0
  382. package/src/molecules/Steps.tsx +198 -0
  383. package/src/molecules/ThemeToggle.tsx +67 -0
  384. package/src/molecules/index.ts +14 -0
  385. package/src/organisms/Alert.tsx +162 -0
  386. package/src/organisms/AlertProvider.tsx +125 -0
  387. package/src/organisms/BottomSheet.tsx +95 -0
  388. package/src/organisms/DateField.tsx +134 -0
  389. package/src/organisms/DatePicker.tsx +255 -0
  390. package/src/organisms/List.tsx +154 -0
  391. package/src/organisms/Modal.tsx +251 -0
  392. package/src/organisms/Screen.tsx +84 -0
  393. package/src/organisms/SearchList.tsx +186 -0
  394. package/src/organisms/Select.tsx +156 -0
  395. package/src/organisms/Toast.tsx +135 -0
  396. package/src/organisms/ToastProvider.tsx +166 -0
  397. package/src/organisms/Wizard.tsx +137 -0
  398. package/src/organisms/index.ts +26 -0
  399. package/src/theme/UIProvider.tsx +129 -0
  400. package/src/theme/createStyles.ts +40 -0
  401. package/src/theme/createTheme.ts +49 -0
  402. package/src/theme/index.ts +22 -0
  403. package/src/theme/insets.ts +9 -0
  404. package/src/theme/labels.ts +23 -0
  405. package/src/theme/palettes.ts +53 -0
  406. package/src/theme/tokens.ts +113 -0
  407. package/src/theme/types.ts +27 -0
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+
3
+ import React from 'react';
4
+ import { ActivityIndicator, FlatList, Text, View } from 'react-native';
5
+ import { createStyles } from '../theme/createStyles';
6
+ import { useColors, useLabels } from '../theme/UIProvider';
7
+ import { Input } from '../atoms/Input';
8
+ import { EmptyState } from '../atoms/EmptyState';
9
+ import { Spinner } from '../atoms/Spinner';
10
+ import { IconButton } from '../atoms/IconButton';
11
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
+ const useStyles = createStyles(theme => ({
13
+ container: {
14
+ flex: 1
15
+ },
16
+ searchRow: {
17
+ flexDirection: 'row',
18
+ alignItems: 'center',
19
+ marginBottom: theme.tokens.spacing.lg - 1,
20
+ gap: theme.tokens.spacing.sm + 2
21
+ },
22
+ searchInput: {
23
+ flex: 1,
24
+ marginBottom: 0
25
+ },
26
+ scanButton: {
27
+ backgroundColor: theme.colors.primary,
28
+ width: 50,
29
+ height: 50,
30
+ borderRadius: theme.tokens.radius.lg,
31
+ ...theme.tokens.shadow.sm
32
+ },
33
+ listArea: {
34
+ flex: 1
35
+ },
36
+ listContent: {
37
+ paddingBottom: theme.tokens.spacing.xl
38
+ },
39
+ loadingOverlay: {
40
+ position: 'absolute',
41
+ top: 0,
42
+ left: 0,
43
+ right: 0,
44
+ bottom: 0,
45
+ backgroundColor: theme.colors.surface + 'B3',
46
+ zIndex: 10,
47
+ justifyContent: 'center',
48
+ alignItems: 'center'
49
+ },
50
+ footer: {
51
+ paddingVertical: theme.tokens.spacing.xl,
52
+ alignItems: 'center',
53
+ gap: theme.tokens.spacing.md
54
+ },
55
+ footerText: {
56
+ color: theme.colors.textLight,
57
+ fontSize: theme.tokens.fontSize.md
58
+ }
59
+ }));
60
+
61
+ /**
62
+ * SearchList
63
+ * Buscador + lista + estados de carga/paginación/vacío. El contenido de
64
+ * cada ítem (renderItem) queda a cargo de quien la usa, ya que difiere por
65
+ * completo entre casos de uso.
66
+ */
67
+ export function SearchList({
68
+ header,
69
+ searchValue,
70
+ onSearchChange,
71
+ searchPlaceholder,
72
+ searchIsLoading = false,
73
+ onScanPress,
74
+ scanAccessibilityLabel = 'Scan',
75
+ extraActions,
76
+ data,
77
+ keyExtractor,
78
+ renderItem,
79
+ isLoading = false,
80
+ loadingMode = 'replace',
81
+ loadingText,
82
+ onLoadMore,
83
+ isLoadingMore = false,
84
+ loadingMoreText,
85
+ hasMore = false,
86
+ noMoreText,
87
+ emptyTitle,
88
+ emptyDescription,
89
+ emptyIconName,
90
+ contentContainerStyle,
91
+ ListComponent = FlatList,
92
+ listProps
93
+ }) {
94
+ const colors = useColors();
95
+ const styles = useStyles();
96
+ const labels = useLabels();
97
+ const resolvedSearchPlaceholder = searchPlaceholder ?? labels.search;
98
+ const resolvedLoadingText = loadingText ?? labels.loading;
99
+ const resolvedLoadingMoreText = loadingMoreText ?? labels.loadingMore;
100
+ const renderFooter = () => {
101
+ if (isLoadingMore) {
102
+ return /*#__PURE__*/_jsx(View, {
103
+ style: styles.footer,
104
+ children: /*#__PURE__*/_jsx(Spinner, {
105
+ text: resolvedLoadingMoreText,
106
+ fullscreen: false
107
+ })
108
+ });
109
+ }
110
+ if (noMoreText && !hasMore && data.length > 0) {
111
+ return /*#__PURE__*/_jsx(View, {
112
+ style: styles.footer,
113
+ children: /*#__PURE__*/_jsx(Text, {
114
+ style: styles.footerText,
115
+ children: noMoreText
116
+ })
117
+ });
118
+ }
119
+ return null;
120
+ };
121
+ const showReplaceLoading = isLoading && loadingMode === 'replace' && data.length === 0;
122
+ const showOverlayLoading = isLoading && loadingMode === 'overlay' && data.length === 0;
123
+ const showEmpty = !isLoading && data.length === 0;
124
+ return /*#__PURE__*/_jsxs(View, {
125
+ style: styles.container,
126
+ children: [header, /*#__PURE__*/_jsxs(View, {
127
+ style: styles.searchRow,
128
+ children: [/*#__PURE__*/_jsx(Input, {
129
+ placeholder: resolvedSearchPlaceholder,
130
+ leftIconName: "search",
131
+ value: searchValue,
132
+ onChangeText: onSearchChange,
133
+ rightIconName: searchValue.length > 0 ? 'close' : undefined,
134
+ onRightIconPress: () => onSearchChange(''),
135
+ isLoading: searchIsLoading,
136
+ containerStyle: styles.searchInput
137
+ }), onScanPress && /*#__PURE__*/_jsx(IconButton, {
138
+ iconName: "search",
139
+ onPress: onScanPress,
140
+ color: colors.white,
141
+ style: styles.scanButton,
142
+ accessibilityLabel: scanAccessibilityLabel
143
+ }), extraActions]
144
+ }), /*#__PURE__*/_jsxs(View, {
145
+ style: styles.listArea,
146
+ children: [showOverlayLoading && /*#__PURE__*/_jsxs(View, {
147
+ style: styles.loadingOverlay,
148
+ children: [/*#__PURE__*/_jsx(ActivityIndicator, {
149
+ size: "large",
150
+ color: colors.primary
151
+ }), /*#__PURE__*/_jsx(Text, {
152
+ style: styles.footerText,
153
+ children: resolvedLoadingText
154
+ })]
155
+ }), showReplaceLoading ? /*#__PURE__*/_jsx(Spinner, {
156
+ text: resolvedLoadingText
157
+ }) : showEmpty ? /*#__PURE__*/_jsx(EmptyState, {
158
+ title: emptyTitle,
159
+ description: emptyDescription,
160
+ iconName: emptyIconName
161
+ }) : /*#__PURE__*/_jsx(ListComponent, {
162
+ data: data,
163
+ keyExtractor: keyExtractor,
164
+ keyboardDismissMode: "on-drag",
165
+ contentContainerStyle: contentContainerStyle ?? styles.listContent,
166
+ onEndReached: onLoadMore,
167
+ onEndReachedThreshold: 0.2,
168
+ ListFooterComponent: renderFooter,
169
+ renderItem: renderItem,
170
+ ...listProps
171
+ })]
172
+ })]
173
+ });
174
+ }
175
+ //# sourceMappingURL=SearchList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","ActivityIndicator","FlatList","Text","View","createStyles","useColors","useLabels","Input","EmptyState","Spinner","IconButton","jsx","_jsx","jsxs","_jsxs","useStyles","theme","container","flex","searchRow","flexDirection","alignItems","marginBottom","tokens","spacing","lg","gap","sm","searchInput","scanButton","backgroundColor","colors","primary","width","height","borderRadius","radius","shadow","listArea","listContent","paddingBottom","xl","loadingOverlay","position","top","left","right","bottom","surface","zIndex","justifyContent","footer","paddingVertical","md","footerText","color","textLight","fontSize","SearchList","header","searchValue","onSearchChange","searchPlaceholder","searchIsLoading","onScanPress","scanAccessibilityLabel","extraActions","data","keyExtractor","renderItem","isLoading","loadingMode","loadingText","onLoadMore","isLoadingMore","loadingMoreText","hasMore","noMoreText","emptyTitle","emptyDescription","emptyIconName","contentContainerStyle","ListComponent","listProps","styles","labels","resolvedSearchPlaceholder","search","resolvedLoadingText","loading","resolvedLoadingMoreText","loadingMore","renderFooter","style","children","text","fullscreen","length","showReplaceLoading","showOverlayLoading","showEmpty","placeholder","leftIconName","value","onChangeText","rightIconName","undefined","onRightIconPress","containerStyle","iconName","onPress","white","accessibilityLabel","size","title","description","keyboardDismissMode","onEndReached","onEndReachedThreshold","ListFooterComponent"],"sourceRoot":"../../../src","sources":["organisms/SearchList.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+
3
+ import React, { useState } from 'react';
4
+ import { ActivityIndicator, Pressable, Text, View } from 'react-native';
5
+ import { createStyles } from '../theme/createStyles';
6
+ import { useAllowFontScaling, useColors, useLabels } from '../theme/UIProvider';
7
+ import { Icon } from '../icons/Icon';
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ const useStyles = createStyles(theme => ({
10
+ container: {
11
+ gap: theme.tokens.spacing.sm
12
+ },
13
+ containerOpen: {
14
+ zIndex: 20,
15
+ elevation: 20
16
+ },
17
+ label: {
18
+ fontWeight: theme.tokens.fontWeight.bold,
19
+ fontSize: theme.tokens.fontSize.md,
20
+ color: theme.colors.text
21
+ },
22
+ required: {
23
+ color: theme.colors.error
24
+ },
25
+ field: {
26
+ flexDirection: 'row',
27
+ alignItems: 'center',
28
+ justifyContent: 'space-between',
29
+ borderWidth: 2,
30
+ borderColor: theme.colors.border,
31
+ borderRadius: theme.tokens.radius.lg,
32
+ backgroundColor: theme.colors.inputBackground,
33
+ minHeight: 50,
34
+ paddingHorizontal: theme.tokens.spacing.lg
35
+ },
36
+ fieldText: {
37
+ fontSize: theme.tokens.fontSize.lg,
38
+ color: theme.colors.text
39
+ },
40
+ fieldPlaceholder: {
41
+ color: theme.colors.textLight
42
+ },
43
+ optionsList: {
44
+ position: 'absolute',
45
+ top: '100%',
46
+ left: 0,
47
+ right: 0,
48
+ marginTop: theme.tokens.spacing.sm,
49
+ borderWidth: 2,
50
+ borderColor: theme.colors.border,
51
+ borderRadius: theme.tokens.radius.lg,
52
+ backgroundColor: theme.colors.surface,
53
+ overflow: 'hidden',
54
+ zIndex: 20,
55
+ elevation: 20,
56
+ ...theme.tokens.shadow.md
57
+ },
58
+ optionRow: {
59
+ flexDirection: 'row',
60
+ alignItems: 'center',
61
+ justifyContent: 'space-between',
62
+ paddingHorizontal: theme.tokens.spacing.lg,
63
+ paddingVertical: theme.tokens.spacing.md + 2,
64
+ borderBottomWidth: 1,
65
+ borderBottomColor: theme.colors.border
66
+ },
67
+ optionRowLast: {
68
+ borderBottomWidth: 0
69
+ },
70
+ optionRowSelected: {
71
+ backgroundColor: theme.colors.primary + '15'
72
+ },
73
+ optionText: {
74
+ fontSize: theme.tokens.fontSize.lg - 1,
75
+ color: theme.colors.text
76
+ },
77
+ optionTextSelected: {
78
+ fontWeight: theme.tokens.fontWeight.semibold,
79
+ color: theme.colors.primary
80
+ },
81
+ errorText: {
82
+ fontSize: theme.tokens.fontSize.sm,
83
+ color: theme.colors.error
84
+ }
85
+ }));
86
+
87
+ /**
88
+ * Select
89
+ * Dropdown que expande la lista de opciones flotando sobre el resto del
90
+ * contenido (position: absolute), en vez de empujarlo hacia abajo o abrir
91
+ * un picker nativo del sistema.
92
+ */
93
+ export function Select({
94
+ label,
95
+ required = false,
96
+ options,
97
+ selectedValue,
98
+ onSelect,
99
+ placeholder,
100
+ error,
101
+ isLoading = false,
102
+ containerStyle
103
+ }) {
104
+ const colors = useColors();
105
+ const styles = useStyles();
106
+ const labels = useLabels();
107
+ const allowFontScaling = useAllowFontScaling();
108
+ const [open, setOpen] = useState(false);
109
+ const selectedOption = options.find(o => o.value === selectedValue);
110
+ return /*#__PURE__*/_jsxs(View, {
111
+ style: [styles.container, open && styles.containerOpen, containerStyle],
112
+ children: [label && /*#__PURE__*/_jsxs(Text, {
113
+ allowFontScaling: allowFontScaling,
114
+ style: styles.label,
115
+ children: [label, required && /*#__PURE__*/_jsx(Text, {
116
+ style: styles.required,
117
+ children: " *"
118
+ })]
119
+ }), /*#__PURE__*/_jsxs(Pressable, {
120
+ style: styles.field,
121
+ onPress: () => !isLoading && setOpen(o => !o),
122
+ disabled: isLoading,
123
+ accessibilityRole: "button",
124
+ accessibilityLabel: label ?? placeholder ?? labels.selectPlaceholder,
125
+ accessibilityState: {
126
+ expanded: open,
127
+ disabled: isLoading
128
+ },
129
+ children: [/*#__PURE__*/_jsx(Text, {
130
+ allowFontScaling: allowFontScaling,
131
+ style: [styles.fieldText, !selectedOption && styles.fieldPlaceholder],
132
+ children: selectedOption?.label || placeholder || labels.selectPlaceholder
133
+ }), isLoading ? /*#__PURE__*/_jsx(ActivityIndicator, {
134
+ size: "small",
135
+ color: colors.primary
136
+ }) : /*#__PURE__*/_jsx(Icon, {
137
+ name: open ? 'chevron-up' : 'chevron-down',
138
+ size: 20,
139
+ color: colors.textLight
140
+ })]
141
+ }), open && !isLoading && /*#__PURE__*/_jsx(View, {
142
+ style: styles.optionsList,
143
+ children: options.map((option, index) => {
144
+ const isSelected = option.value === selectedValue;
145
+ return /*#__PURE__*/_jsxs(Pressable, {
146
+ style: [styles.optionRow, index === options.length - 1 && styles.optionRowLast, isSelected && styles.optionRowSelected],
147
+ onPress: () => {
148
+ onSelect(option.value);
149
+ setOpen(false);
150
+ },
151
+ accessibilityRole: "menuitem",
152
+ accessibilityState: {
153
+ selected: isSelected
154
+ },
155
+ children: [/*#__PURE__*/_jsx(Text, {
156
+ allowFontScaling: allowFontScaling,
157
+ style: [styles.optionText, isSelected && styles.optionTextSelected],
158
+ children: option.label
159
+ }), isSelected && /*#__PURE__*/_jsx(Icon, {
160
+ name: "check",
161
+ size: 18,
162
+ color: colors.primary
163
+ })]
164
+ }, String(option.value));
165
+ })
166
+ }), !!error && /*#__PURE__*/_jsx(Text, {
167
+ allowFontScaling: allowFontScaling,
168
+ style: styles.errorText,
169
+ children: error
170
+ })]
171
+ });
172
+ }
173
+ //# sourceMappingURL=Select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useState","ActivityIndicator","Pressable","Text","View","createStyles","useAllowFontScaling","useColors","useLabels","Icon","jsx","_jsx","jsxs","_jsxs","useStyles","theme","container","gap","tokens","spacing","sm","containerOpen","zIndex","elevation","label","fontWeight","bold","fontSize","md","color","colors","text","required","error","field","flexDirection","alignItems","justifyContent","borderWidth","borderColor","border","borderRadius","radius","lg","backgroundColor","inputBackground","minHeight","paddingHorizontal","fieldText","fieldPlaceholder","textLight","optionsList","position","top","left","right","marginTop","surface","overflow","shadow","optionRow","paddingVertical","borderBottomWidth","borderBottomColor","optionRowLast","optionRowSelected","primary","optionText","optionTextSelected","semibold","errorText","Select","options","selectedValue","onSelect","placeholder","isLoading","containerStyle","styles","labels","allowFontScaling","open","setOpen","selectedOption","find","o","value","style","children","onPress","disabled","accessibilityRole","accessibilityLabel","selectPlaceholder","accessibilityState","expanded","size","name","map","option","index","isSelected","length","selected","String"],"sourceRoot":"../../../src","sources":["organisms/Select.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAUC,QAAQ,QAAQ,OAAO;AAC7C,SAASC,iBAAiB,EAAEC,SAAS,EAAEC,IAAI,EAAEC,IAAI,QAAwC,cAAc;AACvG,SAASC,YAAY,QAAQ,uBAAuB;AACpD,SAASC,mBAAmB,EAAEC,SAAS,EAAEC,SAAS,QAAQ,qBAAqB;AAC/E,SAASC,IAAI,QAAQ,eAAe;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAmBrC,MAAMC,SAAS,GAAGT,YAAY,CAAEU,KAAK,KAAM;EACzCC,SAAS,EAAE;IAAEC,GAAG,EAAEF,KAAK,CAACG,MAAM,CAACC,OAAO,CAACC;EAAG,CAAC;EAC3CC,aAAa,EAAE;IAAEC,MAAM,EAAE,EAAE;IAAEC,SAAS,EAAE;EAAG,CAAC;EAC5CC,KAAK,EAAE;IAAEC,UAAU,EAAEV,KAAK,CAACG,MAAM,CAACO,UAAU,CAACC,IAAI;IAAEC,QAAQ,EAAEZ,KAAK,CAACG,MAAM,CAACS,QAAQ,CAACC,EAAE;IAAEC,KAAK,EAAEd,KAAK,CAACe,MAAM,CAACC;EAAK,CAAC;EACjHC,QAAQ,EAAE;IAAEH,KAAK,EAAEd,KAAK,CAACe,MAAM,CAACG;EAAM,CAAC;EACvCC,KAAK,EAAE;IACLC,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,eAAe;IAC/BC,WAAW,EAAE,CAAC;IACdC,WAAW,EAAExB,KAAK,CAACe,MAAM,CAACU,MAAM;IAChCC,YAAY,EAAE1B,KAAK,CAACG,MAAM,CAACwB,MAAM,CAACC,EAAE;IACpCC,eAAe,EAAE7B,KAAK,CAACe,MAAM,CAACe,eAAe;IAC7CC,SAAS,EAAE,EAAE;IACbC,iBAAiB,EAAEhC,KAAK,CAACG,MAAM,CAACC,OAAO,CAACwB;EAC1C,CAAC;EACDK,SAAS,EAAE;IAAErB,QAAQ,EAAEZ,KAAK,CAACG,MAAM,CAACS,QAAQ,CAACgB,EAAE;IAAEd,KAAK,EAAEd,KAAK,CAACe,MAAM,CAACC;EAAK,CAAC;EAC3EkB,gBAAgB,EAAE;IAAEpB,KAAK,EAAEd,KAAK,CAACe,MAAM,CAACoB;EAAU,CAAC;EACnDC,WAAW,EAAE;IACXC,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,MAAM;IACXC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,SAAS,EAAEzC,KAAK,CAACG,MAAM,CAACC,OAAO,CAACC,EAAE;IAClCkB,WAAW,EAAE,CAAC;IACdC,WAAW,EAAExB,KAAK,CAACe,MAAM,CAACU,MAAM;IAChCC,YAAY,EAAE1B,KAAK,CAACG,MAAM,CAACwB,MAAM,CAACC,EAAE;IACpCC,eAAe,EAAE7B,KAAK,CAACe,MAAM,CAAC2B,OAAO;IACrCC,QAAQ,EAAE,QAAQ;IAClBpC,MAAM,EAAE,EAAE;IACVC,SAAS,EAAE,EAAE;IACb,GAAGR,KAAK,CAACG,MAAM,CAACyC,MAAM,CAAC/B;EACzB,CAAC;EACDgC,SAAS,EAAE;IACTzB,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,eAAe;IAC/BU,iBAAiB,EAAEhC,KAAK,CAACG,MAAM,CAACC,OAAO,CAACwB,EAAE;IAC1CkB,eAAe,EAAE9C,KAAK,CAACG,MAAM,CAACC,OAAO,CAACS,EAAE,GAAG,CAAC;IAC5CkC,iBAAiB,EAAE,CAAC;IACpBC,iBAAiB,EAAEhD,KAAK,CAACe,MAAM,CAACU;EAClC,CAAC;EACDwB,aAAa,EAAE;IAAEF,iBAAiB,EAAE;EAAE,CAAC;EACvCG,iBAAiB,EAAE;IAAErB,eAAe,EAAE7B,KAAK,CAACe,MAAM,CAACoC,OAAO,GAAG;EAAK,CAAC;EACnEC,UAAU,EAAE;IAAExC,QAAQ,EAAEZ,KAAK,CAACG,MAAM,CAACS,QAAQ,CAACgB,EAAE,GAAG,CAAC;IAAEd,KAAK,EAAEd,KAAK,CAACe,MAAM,CAACC;EAAK,CAAC;EAChFqC,kBAAkB,EAAE;IAAE3C,UAAU,EAAEV,KAAK,CAACG,MAAM,CAACO,UAAU,CAAC4C,QAAQ;IAAExC,KAAK,EAAEd,KAAK,CAACe,MAAM,CAACoC;EAAQ,CAAC;EACjGI,SAAS,EAAE;IAAE3C,QAAQ,EAAEZ,KAAK,CAACG,MAAM,CAACS,QAAQ,CAACP,EAAE;IAAES,KAAK,EAAEd,KAAK,CAACe,MAAM,CAACG;EAAM;AAC7E,CAAC,CAAC,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASsC,MAAMA,CAA4B;EAChD/C,KAAK;EACLQ,QAAQ,GAAG,KAAK;EAChBwC,OAAO;EACPC,aAAa;EACbC,QAAQ;EACRC,WAAW;EACX1C,KAAK;EACL2C,SAAS,GAAG,KAAK;EACjBC;AACc,CAAC,EAAE;EACjB,MAAM/C,MAAM,GAAGvB,SAAS,CAAC,CAAC;EAC1B,MAAMuE,MAAM,GAAGhE,SAAS,CAAC,CAAC;EAC1B,MAAMiE,MAAM,GAAGvE,SAAS,CAAC,CAAC;EAC1B,MAAMwE,gBAAgB,GAAG1E,mBAAmB,CAAC,CAAC;EAC9C,MAAM,CAAC2E,IAAI,EAAEC,OAAO,CAAC,GAAGlF,QAAQ,CAAC,KAAK,CAAC;EACvC,MAAMmF,cAAc,GAAGX,OAAO,CAACY,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACC,KAAK,KAAKb,aAAa,CAAC;EAErE,oBACE5D,KAAA,CAACT,IAAI;IAACmF,KAAK,EAAE,CAACT,MAAM,CAAC9D,SAAS,EAAEiE,IAAI,IAAIH,MAAM,CAACzD,aAAa,EAAEwD,cAAc,CAAE;IAAAW,QAAA,GAC3EhE,KAAK,iBACJX,KAAA,CAACV,IAAI;MAAC6E,gBAAgB,EAAEA,gBAAiB;MAACO,KAAK,EAAET,MAAM,CAACtD,KAAM;MAAAgE,QAAA,GAC3DhE,KAAK,EACLQ,QAAQ,iBAAIrB,IAAA,CAACR,IAAI;QAACoF,KAAK,EAAET,MAAM,CAAC9C,QAAS;QAAAwD,QAAA,EAAC;MAAE,CAAM,CAAC;IAAA,CAChD,CACP,eAED3E,KAAA,CAACX,SAAS;MACRqF,KAAK,EAAET,MAAM,CAAC5C,KAAM;MACpBuD,OAAO,EAAEA,CAAA,KAAM,CAACb,SAAS,IAAIM,OAAO,CAAEG,CAAC,IAAK,CAACA,CAAC,CAAE;MAChDK,QAAQ,EAAEd,SAAU;MACpBe,iBAAiB,EAAC,QAAQ;MAC1BC,kBAAkB,EAAEpE,KAAK,IAAImD,WAAW,IAAII,MAAM,CAACc,iBAAkB;MACrEC,kBAAkB,EAAE;QAAEC,QAAQ,EAAEd,IAAI;QAAES,QAAQ,EAAEd;MAAU,CAAE;MAAAY,QAAA,gBAE5D7E,IAAA,CAACR,IAAI;QAAC6E,gBAAgB,EAAEA,gBAAiB;QAACO,KAAK,EAAE,CAACT,MAAM,CAAC9B,SAAS,EAAE,CAACmC,cAAc,IAAIL,MAAM,CAAC7B,gBAAgB,CAAE;QAAAuC,QAAA,EAC7GL,cAAc,EAAE3D,KAAK,IAAImD,WAAW,IAAII,MAAM,CAACc;MAAiB,CAC7D,CAAC,EACNjB,SAAS,gBACRjE,IAAA,CAACV,iBAAiB;QAAC+F,IAAI,EAAC,OAAO;QAACnE,KAAK,EAAEC,MAAM,CAACoC;MAAQ,CAAE,CAAC,gBAEzDvD,IAAA,CAACF,IAAI;QAACwF,IAAI,EAAEhB,IAAI,GAAG,YAAY,GAAG,cAAe;QAACe,IAAI,EAAE,EAAG;QAACnE,KAAK,EAAEC,MAAM,CAACoB;MAAU,CAAE,CACvF;IAAA,CACQ,CAAC,EAEX+B,IAAI,IAAI,CAACL,SAAS,iBACjBjE,IAAA,CAACP,IAAI;MAACmF,KAAK,EAAET,MAAM,CAAC3B,WAAY;MAAAqC,QAAA,EAC7BhB,OAAO,CAAC0B,GAAG,CAAC,CAACC,MAAM,EAAEC,KAAK,KAAK;QAC9B,MAAMC,UAAU,GAAGF,MAAM,CAACb,KAAK,KAAKb,aAAa;QACjD,oBACE5D,KAAA,CAACX,SAAS;UAERqF,KAAK,EAAE,CAACT,MAAM,CAAClB,SAAS,EAAEwC,KAAK,KAAK5B,OAAO,CAAC8B,MAAM,GAAG,CAAC,IAAIxB,MAAM,CAACd,aAAa,EAAEqC,UAAU,IAAIvB,MAAM,CAACb,iBAAiB,CAAE;UACxHwB,OAAO,EAAEA,CAAA,KAAM;YACbf,QAAQ,CAACyB,MAAM,CAACb,KAAK,CAAC;YACtBJ,OAAO,CAAC,KAAK,CAAC;UAChB,CAAE;UACFS,iBAAiB,EAAC,UAAU;UAC5BG,kBAAkB,EAAE;YAAES,QAAQ,EAAEF;UAAW,CAAE;UAAAb,QAAA,gBAE7C7E,IAAA,CAACR,IAAI;YAAC6E,gBAAgB,EAAEA,gBAAiB;YAACO,KAAK,EAAE,CAACT,MAAM,CAACX,UAAU,EAAEkC,UAAU,IAAIvB,MAAM,CAACV,kBAAkB,CAAE;YAAAoB,QAAA,EAC3GW,MAAM,CAAC3E;UAAK,CACT,CAAC,EACN6E,UAAU,iBAAI1F,IAAA,CAACF,IAAI;YAACwF,IAAI,EAAC,OAAO;YAACD,IAAI,EAAE,EAAG;YAACnE,KAAK,EAAEC,MAAM,CAACoC;UAAQ,CAAE,CAAC;QAAA,GAZhEsC,MAAM,CAACL,MAAM,CAACb,KAAK,CAaf,CAAC;MAEhB,CAAC;IAAC,CACE,CACP,EAEA,CAAC,CAACrD,KAAK,iBACNtB,IAAA,CAACR,IAAI;MAAC6E,gBAAgB,EAAEA,gBAAiB;MAACO,KAAK,EAAET,MAAM,CAACR,SAAU;MAAAkB,QAAA,EAC/DvD;IAAK,CACF,CACP;EAAA,CACG,CAAC;AAEX","ignoreList":[]}
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+
3
+ import React, { memo, useEffect, useRef } from 'react';
4
+ import { Animated, Pressable, Text, View } from 'react-native';
5
+ import { createStyles } from '../theme/createStyles';
6
+ import { useAllowFontScaling, useColors } from '../theme/UIProvider';
7
+ import { Icon } from '../icons/Icon';
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ const ICON_BY_VARIANT = {
10
+ success: 'check',
11
+ error: 'alert',
12
+ warning: 'warning',
13
+ info: 'info'
14
+ };
15
+ const useStyles = createStyles(theme => ({
16
+ container: {
17
+ flexDirection: 'row',
18
+ alignItems: 'center',
19
+ gap: theme.tokens.spacing.md,
20
+ backgroundColor: theme.colors.surface,
21
+ borderRadius: theme.tokens.radius.lg,
22
+ borderWidth: 1,
23
+ borderColor: theme.colors.border,
24
+ paddingVertical: theme.tokens.spacing.md,
25
+ paddingHorizontal: theme.tokens.spacing.lg,
26
+ ...theme.tokens.shadow.lg
27
+ },
28
+ accent: {
29
+ position: 'absolute',
30
+ left: 0,
31
+ top: 0,
32
+ bottom: 0,
33
+ width: 4,
34
+ borderTopLeftRadius: theme.tokens.radius.lg,
35
+ borderBottomLeftRadius: theme.tokens.radius.lg
36
+ },
37
+ text: {
38
+ flex: 1,
39
+ gap: 2
40
+ },
41
+ title: {
42
+ fontSize: theme.tokens.fontSize.md,
43
+ fontWeight: theme.tokens.fontWeight.semibold,
44
+ color: theme.colors.text
45
+ },
46
+ message: {
47
+ fontSize: theme.tokens.fontSize.sm,
48
+ color: theme.colors.textLight,
49
+ lineHeight: theme.tokens.lineHeight.sm
50
+ }
51
+ }));
52
+
53
+ /**
54
+ * Toast
55
+ * Notificación efímera. Normalmente no se usa directo: `ToastProvider` +
56
+ * `useToast()` la montan y la descartan por vos. Se expone igual por si
57
+ * querés colocarla vos mismo dentro de una pantalla concreta.
58
+ */
59
+ export const Toast = /*#__PURE__*/memo(({
60
+ title,
61
+ message,
62
+ variant = 'info',
63
+ onPress,
64
+ onDismiss,
65
+ hideCloseButton,
66
+ style,
67
+ testID
68
+ }) => {
69
+ const colors = useColors();
70
+ const styles = useStyles();
71
+ const allowFontScaling = useAllowFontScaling();
72
+ const accentColor = {
73
+ success: colors.success,
74
+ error: colors.error,
75
+ warning: colors.warning,
76
+ info: colors.secondary
77
+ };
78
+ const body = /*#__PURE__*/_jsxs(View, {
79
+ style: [styles.container, style],
80
+ testID: testID,
81
+ accessibilityRole: "alert",
82
+ children: [/*#__PURE__*/_jsx(View, {
83
+ style: [styles.accent, {
84
+ backgroundColor: accentColor[variant]
85
+ }]
86
+ }), /*#__PURE__*/_jsx(Icon, {
87
+ name: ICON_BY_VARIANT[variant],
88
+ size: 22,
89
+ color: accentColor[variant]
90
+ }), /*#__PURE__*/_jsxs(View, {
91
+ style: styles.text,
92
+ children: [/*#__PURE__*/_jsx(Text, {
93
+ allowFontScaling: allowFontScaling,
94
+ style: styles.title,
95
+ children: title
96
+ }), !!message && /*#__PURE__*/_jsx(Text, {
97
+ allowFontScaling: allowFontScaling,
98
+ style: styles.message,
99
+ children: message
100
+ })]
101
+ }), !hideCloseButton && !!onDismiss && /*#__PURE__*/_jsx(Pressable, {
102
+ onPress: onDismiss,
103
+ accessibilityRole: "button",
104
+ accessibilityLabel: "Dismiss",
105
+ hitSlop: 8,
106
+ children: /*#__PURE__*/_jsx(Icon, {
107
+ name: "close",
108
+ size: 18,
109
+ color: colors.textLight
110
+ })
111
+ })]
112
+ });
113
+ if (!onPress) return body;
114
+ return /*#__PURE__*/_jsx(Pressable, {
115
+ onPress: onPress,
116
+ accessibilityRole: "button",
117
+ accessibilityLabel: title,
118
+ children: body
119
+ });
120
+ });
121
+ Toast.displayName = 'Toast';
122
+
123
+ /** Envuelve un Toast con su animación de entrada/salida. Uso interno del provider. */
124
+ export const AnimatedToast = /*#__PURE__*/memo(({
125
+ children,
126
+ onHeight
127
+ }) => {
128
+ const progress = useRef(new Animated.Value(0)).current;
129
+ useEffect(() => {
130
+ Animated.spring(progress, {
131
+ toValue: 1,
132
+ useNativeDriver: true,
133
+ speed: 14,
134
+ bounciness: 4
135
+ }).start();
136
+ }, [progress]);
137
+ return /*#__PURE__*/_jsx(Animated.View, {
138
+ onLayout: e => onHeight?.(e.nativeEvent.layout.height),
139
+ style: {
140
+ opacity: progress,
141
+ transform: [{
142
+ translateY: progress.interpolate({
143
+ inputRange: [0, 1],
144
+ outputRange: [-16, 0]
145
+ })
146
+ }]
147
+ },
148
+ children: children
149
+ });
150
+ });
151
+ AnimatedToast.displayName = 'AnimatedToast';
152
+ //# sourceMappingURL=Toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","memo","useEffect","useRef","Animated","Pressable","Text","View","createStyles","useAllowFontScaling","useColors","Icon","jsx","_jsx","jsxs","_jsxs","ICON_BY_VARIANT","success","error","warning","info","useStyles","theme","container","flexDirection","alignItems","gap","tokens","spacing","md","backgroundColor","colors","surface","borderRadius","radius","lg","borderWidth","borderColor","border","paddingVertical","paddingHorizontal","shadow","accent","position","left","top","bottom","width","borderTopLeftRadius","borderBottomLeftRadius","text","flex","title","fontSize","fontWeight","semibold","color","message","sm","textLight","lineHeight","Toast","variant","onPress","onDismiss","hideCloseButton","style","testID","styles","allowFontScaling","accentColor","secondary","body","accessibilityRole","children","name","size","accessibilityLabel","hitSlop","displayName","AnimatedToast","onHeight","progress","Value","current","spring","toValue","useNativeDriver","speed","bounciness","start","onLayout","e","nativeEvent","layout","height","opacity","transform","translateY","interpolate","inputRange","outputRange"],"sourceRoot":"../../../src","sources":["organisms/Toast.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+
3
+ import React, { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
4
+ import { View } from 'react-native';
5
+ import { AnimatedToast, Toast } from './Toast';
6
+ import { useInsets } from '../theme/UIProvider';
7
+ import { createStyles } from '../theme/createStyles';
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ const ToastContext = /*#__PURE__*/createContext(undefined);
10
+ const useStyles = createStyles(theme => ({
11
+ host: {
12
+ position: 'absolute',
13
+ left: 0,
14
+ right: 0,
15
+ paddingHorizontal: theme.tokens.spacing.lg,
16
+ gap: theme.tokens.spacing.sm
17
+ }
18
+ }));
19
+ /**
20
+ * ToastProvider
21
+ * Monta la capa de toasts sobre el resto de la app. Colocar una vez cerca de
22
+ * la raíz, dentro de UIProvider. Los timers de auto-dismiss se limpian al
23
+ * desmontar y al cerrar cada toast, así que no quedan callbacks colgados.
24
+ */
25
+ export function ToastProvider({
26
+ children,
27
+ position = 'top',
28
+ maxVisible = 3,
29
+ defaultDuration = 4000
30
+ }) {
31
+ const [toasts, setToasts] = useState([]);
32
+ const timers = useRef(new Map());
33
+ const counter = useRef(0);
34
+ const insets = useInsets();
35
+ const styles = useStyles();
36
+ const clearTimer = useCallback(id => {
37
+ const t = timers.current.get(id);
38
+ if (t) {
39
+ clearTimeout(t);
40
+ timers.current.delete(id);
41
+ }
42
+ }, []);
43
+ const hide = useCallback(id => {
44
+ clearTimer(id);
45
+ setToasts(prev => prev.filter(t => t.id !== id));
46
+ }, [clearTimer]);
47
+ const hideAll = useCallback(() => {
48
+ timers.current.forEach(t => clearTimeout(t));
49
+ timers.current.clear();
50
+ setToasts([]);
51
+ }, []);
52
+ const show = useCallback(options => {
53
+ counter.current += 1;
54
+ const id = `toast-${counter.current}`;
55
+ const duration = options.duration ?? defaultDuration;
56
+ setToasts(prev => {
57
+ const next = [...prev, {
58
+ ...options,
59
+ id
60
+ }];
61
+ // Se descartan los más viejos, no los recién llegados: un toast nuevo
62
+ // siempre se ve.
63
+ const overflow = next.length - maxVisible;
64
+ if (overflow > 0) {
65
+ next.slice(0, overflow).forEach(t => clearTimer(t.id));
66
+ return next.slice(overflow);
67
+ }
68
+ return next;
69
+ });
70
+ if (duration > 0) {
71
+ timers.current.set(id, setTimeout(() => hide(id), duration));
72
+ }
73
+ return id;
74
+ }, [defaultDuration, maxVisible, hide, clearTimer]);
75
+
76
+ // Al desmontar el provider no debe quedar ningún setTimeout apuntando a un
77
+ // setState de un árbol ya desmontado.
78
+ useEffect(() => {
79
+ const pending = timers.current;
80
+ return () => {
81
+ pending.forEach(t => clearTimeout(t));
82
+ pending.clear();
83
+ };
84
+ }, []);
85
+ const value = useMemo(() => ({
86
+ show,
87
+ hide,
88
+ hideAll
89
+ }), [show, hide, hideAll]);
90
+ const hostPosition = position === 'top' ? {
91
+ top: insets.top + 8
92
+ } : {
93
+ bottom: insets.bottom + 8,
94
+ flexDirection: 'column-reverse'
95
+ };
96
+ return /*#__PURE__*/_jsxs(ToastContext.Provider, {
97
+ value: value,
98
+ children: [children, toasts.length > 0 && /*#__PURE__*/_jsx(View, {
99
+ style: [styles.host, hostPosition],
100
+ pointerEvents: "box-none",
101
+ testID: "toast-host",
102
+ children: toasts.map(t => /*#__PURE__*/_jsx(AnimatedToast, {
103
+ children: /*#__PURE__*/_jsx(Toast, {
104
+ title: t.title,
105
+ message: t.message,
106
+ variant: t.variant,
107
+ hideCloseButton: t.hideCloseButton,
108
+ onDismiss: () => hide(t.id),
109
+ onPress: t.onPress ? () => {
110
+ t.onPress?.();
111
+ hide(t.id);
112
+ } : undefined
113
+ })
114
+ }, t.id))
115
+ })]
116
+ });
117
+ }
118
+ export function useToast() {
119
+ const ctx = useContext(ToastContext);
120
+ if (!ctx) {
121
+ throw new Error('orn-ui: useToast must be used within a <ToastProvider>.');
122
+ }
123
+ return ctx;
124
+ }
125
+ //# sourceMappingURL=ToastProvider.js.map