orn-ui 0.2.10 → 0.3.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 (552) hide show
  1. package/AGENTS.md +66 -51
  2. package/README.md +3 -7
  3. package/lib/commonjs/atoms/Avatar.js +77 -5
  4. package/lib/commonjs/atoms/Avatar.js.map +1 -1
  5. package/lib/commonjs/atoms/Badge.js +17 -8
  6. package/lib/commonjs/atoms/Badge.js.map +1 -1
  7. package/lib/commonjs/atoms/Button.js +108 -39
  8. package/lib/commonjs/atoms/Button.js.map +1 -1
  9. package/lib/commonjs/atoms/Card.js +24 -2
  10. package/lib/commonjs/atoms/Card.js.map +1 -1
  11. package/lib/commonjs/atoms/Checkbox.js +41 -10
  12. package/lib/commonjs/atoms/Checkbox.js.map +1 -1
  13. package/lib/commonjs/atoms/Divider.js +30 -5
  14. package/lib/commonjs/atoms/Divider.js.map +1 -1
  15. package/lib/commonjs/atoms/EmptyState.js +58 -20
  16. package/lib/commonjs/atoms/EmptyState.js.map +1 -1
  17. package/lib/commonjs/atoms/Fab.js +32 -12
  18. package/lib/commonjs/atoms/Fab.js.map +1 -1
  19. package/lib/commonjs/atoms/Gradient.js +102 -36
  20. package/lib/commonjs/atoms/Gradient.js.map +1 -1
  21. package/lib/commonjs/atoms/IconButton.js +25 -4
  22. package/lib/commonjs/atoms/IconButton.js.map +1 -1
  23. package/lib/commonjs/atoms/Image.js +61 -25
  24. package/lib/commonjs/atoms/Image.js.map +1 -1
  25. package/lib/commonjs/atoms/Input.js +105 -17
  26. package/lib/commonjs/atoms/Input.js.map +1 -1
  27. package/lib/commonjs/atoms/KeyValueRow.js +37 -9
  28. package/lib/commonjs/atoms/KeyValueRow.js.map +1 -1
  29. package/lib/commonjs/atoms/PressableScale.js +25 -5
  30. package/lib/commonjs/atoms/PressableScale.js.map +1 -1
  31. package/lib/commonjs/atoms/ShinyText.js +29 -29
  32. package/lib/commonjs/atoms/Skeleton.js +28 -13
  33. package/lib/commonjs/atoms/Skeleton.js.map +1 -1
  34. package/lib/commonjs/atoms/Spinner.js +81 -22
  35. package/lib/commonjs/atoms/Spinner.js.map +1 -1
  36. package/lib/commonjs/atoms/Text.js +56 -5
  37. package/lib/commonjs/atoms/Text.js.map +1 -1
  38. package/lib/commonjs/atoms/Transition.js +46 -43
  39. package/lib/commonjs/atoms/Transition.js.map +1 -1
  40. package/lib/commonjs/atoms/index.js +6 -0
  41. package/lib/commonjs/atoms/index.js.map +1 -1
  42. package/lib/commonjs/atoms/inputValidation.js +56 -0
  43. package/lib/commonjs/atoms/inputValidation.js.map +1 -0
  44. package/lib/commonjs/icons/Icon.js +4 -4
  45. package/lib/commonjs/icons/defaultIcons.js +576 -24
  46. package/lib/commonjs/icons/defaultIcons.js.map +1 -1
  47. package/lib/commonjs/icons/index.js +6 -0
  48. package/lib/commonjs/icons/index.js.map +1 -1
  49. package/lib/commonjs/molecules/AvatarHeader.js +47 -14
  50. package/lib/commonjs/molecules/AvatarHeader.js.map +1 -1
  51. package/lib/commonjs/molecules/FormActions.js +25 -9
  52. package/lib/commonjs/molecules/FormActions.js.map +1 -1
  53. package/lib/commonjs/molecules/InfoRow.js +30 -14
  54. package/lib/commonjs/molecules/InfoRow.js.map +1 -1
  55. package/lib/commonjs/molecules/OptionCard.js +37 -22
  56. package/lib/commonjs/molecules/OptionCard.js.map +1 -1
  57. package/lib/commonjs/molecules/SegmentedControl.js +103 -14
  58. package/lib/commonjs/molecules/SegmentedControl.js.map +1 -1
  59. package/lib/commonjs/molecules/Stepper.js +61 -16
  60. package/lib/commonjs/molecules/Stepper.js.map +1 -1
  61. package/lib/commonjs/molecules/Steps.js +105 -41
  62. package/lib/commonjs/molecules/Steps.js.map +1 -1
  63. package/lib/commonjs/molecules/SymmetricGrid.js +26 -18
  64. package/lib/commonjs/molecules/SymmetricGrid.js.map +1 -1
  65. package/lib/commonjs/organisms/Alert.js +49 -35
  66. package/lib/commonjs/organisms/Alert.js.map +1 -1
  67. package/lib/commonjs/organisms/AlertProvider.js +10 -10
  68. package/lib/commonjs/organisms/BottomSheet.js +137 -85
  69. package/lib/commonjs/organisms/BottomSheet.js.map +1 -1
  70. package/lib/commonjs/organisms/Chart.js +174 -154
  71. package/lib/commonjs/organisms/Chart.js.map +1 -1
  72. package/lib/commonjs/organisms/DateField.js +36 -20
  73. package/lib/commonjs/organisms/DateField.js.map +1 -1
  74. package/lib/commonjs/organisms/DatePicker.js +56 -33
  75. package/lib/commonjs/organisms/DatePicker.js.map +1 -1
  76. package/lib/commonjs/organisms/List.js +62 -34
  77. package/lib/commonjs/organisms/List.js.map +1 -1
  78. package/lib/commonjs/organisms/Modal.js +120 -82
  79. package/lib/commonjs/organisms/Modal.js.map +1 -1
  80. package/lib/commonjs/organisms/NavigationBar.js +63 -24
  81. package/lib/commonjs/organisms/NavigationBar.js.map +1 -1
  82. package/lib/commonjs/organisms/OptionWheel.js +64 -64
  83. package/lib/commonjs/organisms/OptionWheel.js.map +1 -1
  84. package/lib/commonjs/organisms/ReorderableList.js +48 -27
  85. package/lib/commonjs/organisms/ReorderableList.js.map +1 -1
  86. package/lib/commonjs/organisms/Screen.js +68 -35
  87. package/lib/commonjs/organisms/Screen.js.map +1 -1
  88. package/lib/commonjs/organisms/SearchList.js +56 -26
  89. package/lib/commonjs/organisms/SearchList.js.map +1 -1
  90. package/lib/commonjs/organisms/Select.js +45 -24
  91. package/lib/commonjs/organisms/Select.js.map +1 -1
  92. package/lib/commonjs/organisms/Slides.js +36 -23
  93. package/lib/commonjs/organisms/Slides.js.map +1 -1
  94. package/lib/commonjs/organisms/ThemeToggle.js +10 -9
  95. package/lib/commonjs/organisms/ThemeToggle.js.map +1 -1
  96. package/lib/commonjs/organisms/Timeline.js +73 -56
  97. package/lib/commonjs/organisms/Timeline.js.map +1 -1
  98. package/lib/commonjs/organisms/Toast.js +46 -15
  99. package/lib/commonjs/organisms/Toast.js.map +1 -1
  100. package/lib/commonjs/organisms/ToastProvider.js +14 -10
  101. package/lib/commonjs/organisms/ToastProvider.js.map +1 -1
  102. package/lib/commonjs/organisms/Wizard.js +40 -15
  103. package/lib/commonjs/organisms/Wizard.js.map +1 -1
  104. package/lib/commonjs/organisms/chart/frame.js +25 -25
  105. package/lib/commonjs/organisms/chart/frame.js.map +1 -1
  106. package/lib/commonjs/organisms/chart/marks.js +42 -42
  107. package/lib/commonjs/organisms/chart/math.js +84 -85
  108. package/lib/commonjs/organisms/chart/math.js.map +1 -1
  109. package/lib/commonjs/organisms/chart/palette.js +28 -28
  110. package/lib/commonjs/organisms/imperativeBridge.js +5 -5
  111. package/lib/commonjs/organisms/imperativeBridge.js.map +1 -1
  112. package/lib/commonjs/organisms/useSlides.js +53 -21
  113. package/lib/commonjs/organisms/useSlides.js.map +1 -1
  114. package/lib/commonjs/safe-area/SafeAreaUIProvider.js +9 -66
  115. package/lib/commonjs/safe-area/SafeAreaUIProvider.js.map +1 -1
  116. package/lib/commonjs/safe-area/index.js.map +1 -1
  117. package/lib/commonjs/theme/KeyboardAvoidance.js +206 -0
  118. package/lib/commonjs/theme/KeyboardAvoidance.js.map +1 -0
  119. package/lib/commonjs/theme/NativeOverlay.js +263 -0
  120. package/lib/commonjs/theme/NativeOverlay.js.map +1 -0
  121. package/lib/commonjs/theme/UIProvider.js +86 -33
  122. package/lib/commonjs/theme/UIProvider.js.map +1 -1
  123. package/lib/commonjs/theme/colors.js +17 -17
  124. package/lib/commonjs/theme/colors.js.map +1 -1
  125. package/lib/commonjs/theme/createStyles.js +19 -16
  126. package/lib/commonjs/theme/createStyles.js.map +1 -1
  127. package/lib/commonjs/theme/createTheme.js +6 -6
  128. package/lib/commonjs/theme/index.js +6 -0
  129. package/lib/commonjs/theme/index.js.map +1 -1
  130. package/lib/commonjs/theme/insets.js +1 -1
  131. package/lib/commonjs/theme/labels.js +29 -1
  132. package/lib/commonjs/theme/labels.js.map +1 -1
  133. package/lib/commonjs/theme/palettes.js +25 -23
  134. package/lib/commonjs/theme/palettes.js.map +1 -1
  135. package/lib/commonjs/theme/tokens.js +28 -14
  136. package/lib/commonjs/theme/tokens.js.map +1 -1
  137. package/lib/commonjs/theme/useKeyboardField.js +36 -0
  138. package/lib/commonjs/theme/useKeyboardField.js.map +1 -0
  139. package/lib/commonjs/theme/useReduceMotion.js +31 -0
  140. package/lib/commonjs/theme/useReduceMotion.js.map +1 -0
  141. package/lib/module/atoms/Avatar.js +79 -8
  142. package/lib/module/atoms/Avatar.js.map +1 -1
  143. package/lib/module/atoms/Badge.js +17 -8
  144. package/lib/module/atoms/Badge.js.map +1 -1
  145. package/lib/module/atoms/Button.js +110 -41
  146. package/lib/module/atoms/Button.js.map +1 -1
  147. package/lib/module/atoms/Card.js +24 -2
  148. package/lib/module/atoms/Card.js.map +1 -1
  149. package/lib/module/atoms/Checkbox.js +42 -11
  150. package/lib/module/atoms/Checkbox.js.map +1 -1
  151. package/lib/module/atoms/Divider.js +31 -6
  152. package/lib/module/atoms/Divider.js.map +1 -1
  153. package/lib/module/atoms/EmptyState.js +58 -20
  154. package/lib/module/atoms/EmptyState.js.map +1 -1
  155. package/lib/module/atoms/Fab.js +33 -13
  156. package/lib/module/atoms/Fab.js.map +1 -1
  157. package/lib/module/atoms/Gradient.js +103 -37
  158. package/lib/module/atoms/Gradient.js.map +1 -1
  159. package/lib/module/atoms/IconButton.js +25 -4
  160. package/lib/module/atoms/IconButton.js.map +1 -1
  161. package/lib/module/atoms/Image.js +61 -25
  162. package/lib/module/atoms/Image.js.map +1 -1
  163. package/lib/module/atoms/Input.js +108 -20
  164. package/lib/module/atoms/Input.js.map +1 -1
  165. package/lib/module/atoms/KeyValueRow.js +37 -9
  166. package/lib/module/atoms/KeyValueRow.js.map +1 -1
  167. package/lib/module/atoms/PressableScale.js +25 -5
  168. package/lib/module/atoms/PressableScale.js.map +1 -1
  169. package/lib/module/atoms/ShinyText.js +29 -29
  170. package/lib/module/atoms/Skeleton.js +30 -13
  171. package/lib/module/atoms/Skeleton.js.map +1 -1
  172. package/lib/module/atoms/Spinner.js +82 -23
  173. package/lib/module/atoms/Spinner.js.map +1 -1
  174. package/lib/module/atoms/Text.js +56 -5
  175. package/lib/module/atoms/Text.js.map +1 -1
  176. package/lib/module/atoms/Transition.js +41 -42
  177. package/lib/module/atoms/Transition.js.map +1 -1
  178. package/lib/module/atoms/index.js +1 -1
  179. package/lib/module/atoms/index.js.map +1 -1
  180. package/lib/module/atoms/inputValidation.js +52 -0
  181. package/lib/module/atoms/inputValidation.js.map +1 -0
  182. package/lib/module/icons/Icon.js +4 -4
  183. package/lib/module/icons/defaultIcons.js +574 -24
  184. package/lib/module/icons/defaultIcons.js.map +1 -1
  185. package/lib/module/icons/index.js +1 -1
  186. package/lib/module/icons/index.js.map +1 -1
  187. package/lib/module/molecules/AvatarHeader.js +47 -14
  188. package/lib/module/molecules/AvatarHeader.js.map +1 -1
  189. package/lib/module/molecules/FormActions.js +25 -9
  190. package/lib/module/molecules/FormActions.js.map +1 -1
  191. package/lib/module/molecules/InfoRow.js +30 -14
  192. package/lib/module/molecules/InfoRow.js.map +1 -1
  193. package/lib/module/molecules/OptionCard.js +37 -22
  194. package/lib/module/molecules/OptionCard.js.map +1 -1
  195. package/lib/module/molecules/SegmentedControl.js +107 -18
  196. package/lib/module/molecules/SegmentedControl.js.map +1 -1
  197. package/lib/module/molecules/Stepper.js +63 -18
  198. package/lib/module/molecules/Stepper.js.map +1 -1
  199. package/lib/module/molecules/Steps.js +107 -43
  200. package/lib/module/molecules/Steps.js.map +1 -1
  201. package/lib/module/molecules/SymmetricGrid.js +26 -18
  202. package/lib/module/molecules/SymmetricGrid.js.map +1 -1
  203. package/lib/module/organisms/Alert.js +51 -37
  204. package/lib/module/organisms/Alert.js.map +1 -1
  205. package/lib/module/organisms/AlertProvider.js +10 -10
  206. package/lib/module/organisms/BottomSheet.js +142 -88
  207. package/lib/module/organisms/BottomSheet.js.map +1 -1
  208. package/lib/module/organisms/Chart.js +176 -156
  209. package/lib/module/organisms/Chart.js.map +1 -1
  210. package/lib/module/organisms/DateField.js +36 -20
  211. package/lib/module/organisms/DateField.js.map +1 -1
  212. package/lib/module/organisms/DatePicker.js +56 -33
  213. package/lib/module/organisms/DatePicker.js.map +1 -1
  214. package/lib/module/organisms/List.js +62 -34
  215. package/lib/module/organisms/List.js.map +1 -1
  216. package/lib/module/organisms/Modal.js +122 -84
  217. package/lib/module/organisms/Modal.js.map +1 -1
  218. package/lib/module/organisms/NavigationBar.js +64 -25
  219. package/lib/module/organisms/NavigationBar.js.map +1 -1
  220. package/lib/module/organisms/OptionWheel.js +64 -64
  221. package/lib/module/organisms/OptionWheel.js.map +1 -1
  222. package/lib/module/organisms/ReorderableList.js +48 -27
  223. package/lib/module/organisms/ReorderableList.js.map +1 -1
  224. package/lib/module/organisms/Screen.js +70 -37
  225. package/lib/module/organisms/Screen.js.map +1 -1
  226. package/lib/module/organisms/SearchList.js +56 -26
  227. package/lib/module/organisms/SearchList.js.map +1 -1
  228. package/lib/module/organisms/Select.js +46 -25
  229. package/lib/module/organisms/Select.js.map +1 -1
  230. package/lib/module/organisms/Slides.js +37 -24
  231. package/lib/module/organisms/Slides.js.map +1 -1
  232. package/lib/module/organisms/ThemeToggle.js +11 -10
  233. package/lib/module/organisms/ThemeToggle.js.map +1 -1
  234. package/lib/module/organisms/Timeline.js +73 -56
  235. package/lib/module/organisms/Timeline.js.map +1 -1
  236. package/lib/module/organisms/Toast.js +47 -16
  237. package/lib/module/organisms/Toast.js.map +1 -1
  238. package/lib/module/organisms/ToastProvider.js +15 -11
  239. package/lib/module/organisms/ToastProvider.js.map +1 -1
  240. package/lib/module/organisms/Wizard.js +41 -16
  241. package/lib/module/organisms/Wizard.js.map +1 -1
  242. package/lib/module/organisms/chart/frame.js +25 -25
  243. package/lib/module/organisms/chart/frame.js.map +1 -1
  244. package/lib/module/organisms/chart/marks.js +42 -42
  245. package/lib/module/organisms/chart/math.js +84 -85
  246. package/lib/module/organisms/chart/math.js.map +1 -1
  247. package/lib/module/organisms/chart/palette.js +28 -28
  248. package/lib/module/organisms/imperativeBridge.js +5 -5
  249. package/lib/module/organisms/imperativeBridge.js.map +1 -1
  250. package/lib/module/organisms/useSlides.js +53 -21
  251. package/lib/module/organisms/useSlides.js.map +1 -1
  252. package/lib/module/safe-area/SafeAreaUIProvider.js +10 -65
  253. package/lib/module/safe-area/SafeAreaUIProvider.js.map +1 -1
  254. package/lib/module/safe-area/index.js +1 -0
  255. package/lib/module/safe-area/index.js.map +1 -1
  256. package/lib/module/theme/KeyboardAvoidance.js +198 -0
  257. package/lib/module/theme/KeyboardAvoidance.js.map +1 -0
  258. package/lib/module/theme/NativeOverlay.js +257 -0
  259. package/lib/module/theme/NativeOverlay.js.map +1 -0
  260. package/lib/module/theme/UIProvider.js +88 -35
  261. package/lib/module/theme/UIProvider.js.map +1 -1
  262. package/lib/module/theme/colors.js +17 -17
  263. package/lib/module/theme/colors.js.map +1 -1
  264. package/lib/module/theme/createStyles.js +20 -16
  265. package/lib/module/theme/createStyles.js.map +1 -1
  266. package/lib/module/theme/createTheme.js +6 -6
  267. package/lib/module/theme/index.js +1 -1
  268. package/lib/module/theme/index.js.map +1 -1
  269. package/lib/module/theme/insets.js +1 -1
  270. package/lib/module/theme/labels.js +29 -1
  271. package/lib/module/theme/labels.js.map +1 -1
  272. package/lib/module/theme/palettes.js +25 -23
  273. package/lib/module/theme/palettes.js.map +1 -1
  274. package/lib/module/theme/tokens.js +27 -13
  275. package/lib/module/theme/tokens.js.map +1 -1
  276. package/lib/module/theme/useKeyboardField.js +33 -0
  277. package/lib/module/theme/useKeyboardField.js.map +1 -0
  278. package/lib/module/theme/useReduceMotion.js +28 -0
  279. package/lib/module/theme/useReduceMotion.js.map +1 -0
  280. package/lib/typescript/atoms/Avatar.d.ts +35 -5
  281. package/lib/typescript/atoms/Avatar.d.ts.map +1 -1
  282. package/lib/typescript/atoms/Badge.d.ts +14 -3
  283. package/lib/typescript/atoms/Badge.d.ts.map +1 -1
  284. package/lib/typescript/atoms/Button.d.ts +34 -3
  285. package/lib/typescript/atoms/Button.d.ts.map +1 -1
  286. package/lib/typescript/atoms/Card.d.ts +13 -2
  287. package/lib/typescript/atoms/Card.d.ts.map +1 -1
  288. package/lib/typescript/atoms/Checkbox.d.ts +26 -1
  289. package/lib/typescript/atoms/Checkbox.d.ts.map +1 -1
  290. package/lib/typescript/atoms/Divider.d.ts +18 -1
  291. package/lib/typescript/atoms/Divider.d.ts.map +1 -1
  292. package/lib/typescript/atoms/EmptyState.d.ts +30 -3
  293. package/lib/typescript/atoms/EmptyState.d.ts.map +1 -1
  294. package/lib/typescript/atoms/Fab.d.ts +24 -4
  295. package/lib/typescript/atoms/Fab.d.ts.map +1 -1
  296. package/lib/typescript/atoms/Gradient.d.ts +21 -15
  297. package/lib/typescript/atoms/Gradient.d.ts.map +1 -1
  298. package/lib/typescript/atoms/IconButton.d.ts +18 -4
  299. package/lib/typescript/atoms/IconButton.d.ts.map +1 -1
  300. package/lib/typescript/atoms/Image.d.ts +39 -17
  301. package/lib/typescript/atoms/Image.d.ts.map +1 -1
  302. package/lib/typescript/atoms/Input.d.ts +57 -7
  303. package/lib/typescript/atoms/Input.d.ts.map +1 -1
  304. package/lib/typescript/atoms/KeyValueRow.d.ts +16 -4
  305. package/lib/typescript/atoms/KeyValueRow.d.ts.map +1 -1
  306. package/lib/typescript/atoms/PressableScale.d.ts +12 -5
  307. package/lib/typescript/atoms/PressableScale.d.ts.map +1 -1
  308. package/lib/typescript/atoms/ShinyText.d.ts +17 -17
  309. package/lib/typescript/atoms/ShinyText.d.ts.map +1 -1
  310. package/lib/typescript/atoms/Skeleton.d.ts +12 -7
  311. package/lib/typescript/atoms/Skeleton.d.ts.map +1 -1
  312. package/lib/typescript/atoms/Spinner.d.ts +29 -1
  313. package/lib/typescript/atoms/Spinner.d.ts.map +1 -1
  314. package/lib/typescript/atoms/Text.d.ts +46 -0
  315. package/lib/typescript/atoms/Text.d.ts.map +1 -1
  316. package/lib/typescript/atoms/Transition.d.ts +19 -15
  317. package/lib/typescript/atoms/Transition.d.ts.map +1 -1
  318. package/lib/typescript/atoms/index.d.ts +3 -3
  319. package/lib/typescript/atoms/index.d.ts.map +1 -1
  320. package/lib/typescript/atoms/inputValidation.d.ts +29 -0
  321. package/lib/typescript/atoms/inputValidation.d.ts.map +1 -0
  322. package/lib/typescript/icons/Icon.d.ts +4 -4
  323. package/lib/typescript/icons/defaultIcons.d.ts +19 -2
  324. package/lib/typescript/icons/defaultIcons.d.ts.map +1 -1
  325. package/lib/typescript/icons/index.d.ts +2 -2
  326. package/lib/typescript/icons/index.d.ts.map +1 -1
  327. package/lib/typescript/icons/types.d.ts +13 -3
  328. package/lib/typescript/icons/types.d.ts.map +1 -1
  329. package/lib/typescript/molecules/AvatarHeader.d.ts +23 -4
  330. package/lib/typescript/molecules/AvatarHeader.d.ts.map +1 -1
  331. package/lib/typescript/molecules/FormActions.d.ts +21 -4
  332. package/lib/typescript/molecules/FormActions.d.ts.map +1 -1
  333. package/lib/typescript/molecules/InfoRow.d.ts +17 -3
  334. package/lib/typescript/molecules/InfoRow.d.ts.map +1 -1
  335. package/lib/typescript/molecules/OptionCard.d.ts +20 -5
  336. package/lib/typescript/molecules/OptionCard.d.ts.map +1 -1
  337. package/lib/typescript/molecules/SegmentedControl.d.ts +18 -2
  338. package/lib/typescript/molecules/SegmentedControl.d.ts.map +1 -1
  339. package/lib/typescript/molecules/Stepper.d.ts +23 -7
  340. package/lib/typescript/molecules/Stepper.d.ts.map +1 -1
  341. package/lib/typescript/molecules/Steps.d.ts +18 -4
  342. package/lib/typescript/molecules/Steps.d.ts.map +1 -1
  343. package/lib/typescript/molecules/SymmetricGrid.d.ts +15 -5
  344. package/lib/typescript/molecules/SymmetricGrid.d.ts.map +1 -1
  345. package/lib/typescript/organisms/Alert.d.ts +28 -2
  346. package/lib/typescript/organisms/Alert.d.ts.map +1 -1
  347. package/lib/typescript/organisms/AlertProvider.d.ts +10 -10
  348. package/lib/typescript/organisms/AlertProvider.d.ts.map +1 -1
  349. package/lib/typescript/organisms/BottomSheet.d.ts +20 -5
  350. package/lib/typescript/organisms/BottomSheet.d.ts.map +1 -1
  351. package/lib/typescript/organisms/Chart.d.ts +86 -75
  352. package/lib/typescript/organisms/Chart.d.ts.map +1 -1
  353. package/lib/typescript/organisms/DateField.d.ts +17 -3
  354. package/lib/typescript/organisms/DateField.d.ts.map +1 -1
  355. package/lib/typescript/organisms/DatePicker.d.ts +7 -11
  356. package/lib/typescript/organisms/DatePicker.d.ts.map +1 -1
  357. package/lib/typescript/organisms/List.d.ts +30 -3
  358. package/lib/typescript/organisms/List.d.ts.map +1 -1
  359. package/lib/typescript/organisms/Modal.d.ts +30 -3
  360. package/lib/typescript/organisms/Modal.d.ts.map +1 -1
  361. package/lib/typescript/organisms/NavigationBar.d.ts +26 -7
  362. package/lib/typescript/organisms/NavigationBar.d.ts.map +1 -1
  363. package/lib/typescript/organisms/OptionWheel.d.ts +20 -16
  364. package/lib/typescript/organisms/OptionWheel.d.ts.map +1 -1
  365. package/lib/typescript/organisms/ReorderableList.d.ts +20 -11
  366. package/lib/typescript/organisms/ReorderableList.d.ts.map +1 -1
  367. package/lib/typescript/organisms/Screen.d.ts +27 -8
  368. package/lib/typescript/organisms/Screen.d.ts.map +1 -1
  369. package/lib/typescript/organisms/SearchList.d.ts +46 -3
  370. package/lib/typescript/organisms/SearchList.d.ts.map +1 -1
  371. package/lib/typescript/organisms/Select.d.ts +26 -6
  372. package/lib/typescript/organisms/Select.d.ts.map +1 -1
  373. package/lib/typescript/organisms/Slides.d.ts +44 -26
  374. package/lib/typescript/organisms/Slides.d.ts.map +1 -1
  375. package/lib/typescript/organisms/ThemeToggle.d.ts +6 -2
  376. package/lib/typescript/organisms/ThemeToggle.d.ts.map +1 -1
  377. package/lib/typescript/organisms/Timeline.d.ts +26 -9
  378. package/lib/typescript/organisms/Timeline.d.ts.map +1 -1
  379. package/lib/typescript/organisms/Toast.d.ts +19 -4
  380. package/lib/typescript/organisms/Toast.d.ts.map +1 -1
  381. package/lib/typescript/organisms/ToastProvider.d.ts +8 -8
  382. package/lib/typescript/organisms/ToastProvider.d.ts.map +1 -1
  383. package/lib/typescript/organisms/Wizard.d.ts +24 -6
  384. package/lib/typescript/organisms/Wizard.d.ts.map +1 -1
  385. package/lib/typescript/organisms/chart/frame.d.ts +21 -21
  386. package/lib/typescript/organisms/chart/frame.d.ts.map +1 -1
  387. package/lib/typescript/organisms/chart/marks.d.ts +28 -28
  388. package/lib/typescript/organisms/chart/marks.d.ts.map +1 -1
  389. package/lib/typescript/organisms/chart/math.d.ts +69 -70
  390. package/lib/typescript/organisms/chart/math.d.ts.map +1 -1
  391. package/lib/typescript/organisms/chart/palette.d.ts +2 -2
  392. package/lib/typescript/organisms/chart/palette.d.ts.map +1 -1
  393. package/lib/typescript/organisms/imperativeBridge.d.ts +4 -4
  394. package/lib/typescript/organisms/useSlides.d.ts +8 -16
  395. package/lib/typescript/organisms/useSlides.d.ts.map +1 -1
  396. package/lib/typescript/safe-area/SafeAreaUIProvider.d.ts +9 -7
  397. package/lib/typescript/safe-area/SafeAreaUIProvider.d.ts.map +1 -1
  398. package/lib/typescript/safe-area/index.d.ts.map +1 -1
  399. package/lib/typescript/theme/KeyboardAvoidance.d.ts +62 -0
  400. package/lib/typescript/theme/KeyboardAvoidance.d.ts.map +1 -0
  401. package/lib/typescript/theme/NativeOverlay.d.ts +43 -0
  402. package/lib/typescript/theme/NativeOverlay.d.ts.map +1 -0
  403. package/lib/typescript/theme/UIProvider.d.ts +38 -20
  404. package/lib/typescript/theme/UIProvider.d.ts.map +1 -1
  405. package/lib/typescript/theme/colors.d.ts +13 -13
  406. package/lib/typescript/theme/colors.d.ts.map +1 -1
  407. package/lib/typescript/theme/createStyles.d.ts +20 -14
  408. package/lib/typescript/theme/createStyles.d.ts.map +1 -1
  409. package/lib/typescript/theme/createTheme.d.ts +5 -5
  410. package/lib/typescript/theme/index.d.ts +1 -1
  411. package/lib/typescript/theme/index.d.ts.map +1 -1
  412. package/lib/typescript/theme/insets.d.ts +1 -1
  413. package/lib/typescript/theme/insets.d.ts.map +1 -1
  414. package/lib/typescript/theme/labels.d.ts +57 -2
  415. package/lib/typescript/theme/labels.d.ts.map +1 -1
  416. package/lib/typescript/theme/palettes.d.ts +25 -19
  417. package/lib/typescript/theme/palettes.d.ts.map +1 -1
  418. package/lib/typescript/theme/tokens.d.ts +15 -8
  419. package/lib/typescript/theme/tokens.d.ts.map +1 -1
  420. package/lib/typescript/theme/types.d.ts +7 -7
  421. package/lib/typescript/theme/types.d.ts.map +1 -1
  422. package/lib/typescript/theme/useKeyboardField.d.ts +17 -0
  423. package/lib/typescript/theme/useKeyboardField.d.ts.map +1 -0
  424. package/lib/typescript/theme/useReduceMotion.d.ts +7 -0
  425. package/lib/typescript/theme/useReduceMotion.d.ts.map +1 -0
  426. package/llms.txt +4 -4
  427. package/package.json +15 -14
  428. package/registry/alert-provider.json +4 -3
  429. package/registry/alert.json +3 -2
  430. package/registry/avatar-header.json +1 -1
  431. package/registry/avatar.json +3 -2
  432. package/registry/badge.json +1 -1
  433. package/registry/bottom-sheet.json +1 -1
  434. package/registry/button.json +3 -2
  435. package/registry/card.json +1 -1
  436. package/registry/chart.json +5 -5
  437. package/registry/checkbox.json +3 -2
  438. package/registry/core.json +31 -15
  439. package/registry/date-field.json +1 -1
  440. package/registry/date-picker.json +3 -2
  441. package/registry/divider.json +1 -1
  442. package/registry/empty-state.json +4 -2
  443. package/registry/fab.json +3 -2
  444. package/registry/form-actions.json +3 -2
  445. package/registry/gradient.json +1 -1
  446. package/registry/icon-button.json +3 -2
  447. package/registry/image.json +1 -1
  448. package/registry/index.json +79 -61
  449. package/registry/info-row.json +1 -1
  450. package/registry/input.json +5 -1
  451. package/registry/key-value-row.json +1 -1
  452. package/registry/list.json +3 -1
  453. package/registry/manifest.json +3 -1
  454. package/registry/modal.json +1 -1
  455. package/registry/navigation-bar.json +1 -1
  456. package/registry/option-card.json +3 -2
  457. package/registry/option-wheel.json +1 -1
  458. package/registry/pressable-scale.json +3 -2
  459. package/registry/reorderable-list.json +1 -1
  460. package/registry/screen.json +1 -1
  461. package/registry/search-list.json +7 -1
  462. package/registry/segmented-control.json +1 -1
  463. package/registry/select.json +1 -1
  464. package/registry/shiny-text.json +1 -1
  465. package/registry/skeleton.json +3 -2
  466. package/registry/slides.json +2 -2
  467. package/registry/spinner.json +1 -1
  468. package/registry/stepper.json +1 -1
  469. package/registry/steps.json +1 -1
  470. package/registry/symmetric-grid.json +1 -1
  471. package/registry/theme-toggle.json +1 -1
  472. package/registry/timeline.json +1 -1
  473. package/registry/title.json +1 -1
  474. package/registry/toast-provider.json +2 -2
  475. package/registry/toast.json +1 -1
  476. package/registry/transition.json +1 -1
  477. package/registry/wizard.json +1 -1
  478. package/src/atoms/Avatar.tsx +117 -26
  479. package/src/atoms/Badge.tsx +20 -9
  480. package/src/atoms/Button.tsx +102 -30
  481. package/src/atoms/Card.tsx +23 -3
  482. package/src/atoms/Checkbox.tsx +49 -12
  483. package/src/atoms/Divider.tsx +34 -4
  484. package/src/atoms/EmptyState.tsx +63 -16
  485. package/src/atoms/Fab.tsx +56 -9
  486. package/src/atoms/Gradient.tsx +92 -41
  487. package/src/atoms/IconButton.tsx +27 -4
  488. package/src/atoms/Image.tsx +74 -28
  489. package/src/atoms/Input.tsx +129 -19
  490. package/src/atoms/KeyValueRow.tsx +72 -28
  491. package/src/atoms/PressableScale.tsx +31 -7
  492. package/src/atoms/ShinyText.tsx +31 -31
  493. package/src/atoms/Skeleton.tsx +37 -17
  494. package/src/atoms/Spinner.tsx +87 -24
  495. package/src/atoms/Text.tsx +66 -6
  496. package/src/atoms/Transition.tsx +40 -44
  497. package/src/atoms/index.ts +3 -3
  498. package/src/atoms/inputValidation.ts +59 -0
  499. package/src/icons/Icon.tsx +4 -4
  500. package/src/icons/defaultIcons.tsx +445 -22
  501. package/src/icons/index.ts +2 -2
  502. package/src/icons/types.ts +26 -4
  503. package/src/molecules/AvatarHeader.tsx +88 -34
  504. package/src/molecules/FormActions.tsx +36 -6
  505. package/src/molecules/InfoRow.tsx +39 -12
  506. package/src/molecules/OptionCard.tsx +55 -20
  507. package/src/molecules/SegmentedControl.tsx +135 -15
  508. package/src/molecules/Stepper.tsx +73 -19
  509. package/src/molecules/Steps.tsx +121 -39
  510. package/src/molecules/SymmetricGrid.tsx +28 -12
  511. package/src/organisms/Alert.tsx +97 -26
  512. package/src/organisms/AlertProvider.tsx +13 -13
  513. package/src/organisms/BottomSheet.tsx +115 -43
  514. package/src/organisms/Chart.tsx +193 -164
  515. package/src/organisms/DateField.tsx +40 -15
  516. package/src/organisms/DatePicker.tsx +53 -32
  517. package/src/organisms/List.tsx +64 -15
  518. package/src/organisms/Modal.tsx +122 -63
  519. package/src/organisms/NavigationBar.tsx +73 -23
  520. package/src/organisms/OptionWheel.tsx +70 -66
  521. package/src/organisms/ReorderableList.tsx +49 -27
  522. package/src/organisms/Screen.tsx +79 -42
  523. package/src/organisms/SearchList.tsx +84 -20
  524. package/src/organisms/Select.tsx +63 -29
  525. package/src/organisms/Slides.tsx +63 -44
  526. package/src/organisms/ThemeToggle.tsx +15 -6
  527. package/src/organisms/Timeline.tsx +79 -62
  528. package/src/organisms/Toast.tsx +50 -15
  529. package/src/organisms/ToastProvider.tsx +17 -13
  530. package/src/organisms/Wizard.tsx +58 -21
  531. package/src/organisms/chart/frame.tsx +35 -35
  532. package/src/organisms/chart/marks.tsx +53 -53
  533. package/src/organisms/chart/math.ts +93 -94
  534. package/src/organisms/chart/palette.ts +28 -28
  535. package/src/organisms/imperativeBridge.ts +5 -5
  536. package/src/organisms/useSlides.ts +66 -31
  537. package/src/safe-area/SafeAreaUIProvider.tsx +9 -70
  538. package/src/safe-area/index.ts +1 -0
  539. package/src/theme/KeyboardAvoidance.tsx +216 -0
  540. package/src/theme/NativeOverlay.tsx +269 -0
  541. package/src/theme/UIProvider.tsx +109 -46
  542. package/src/theme/colors.ts +21 -21
  543. package/src/theme/createStyles.ts +23 -19
  544. package/src/theme/createTheme.ts +6 -6
  545. package/src/theme/index.ts +1 -1
  546. package/src/theme/insets.ts +1 -1
  547. package/src/theme/labels.ts +85 -2
  548. package/src/theme/palettes.ts +33 -25
  549. package/src/theme/tokens.ts +27 -13
  550. package/src/theme/types.ts +7 -7
  551. package/src/theme/useKeyboardField.ts +33 -0
  552. package/src/theme/useReduceMotion.ts +27 -0
@@ -3,11 +3,23 @@
3
3
  import React, { memo, useCallback, useEffect, useState } from 'react';
4
4
  import { Image as RNImage, Platform, StyleSheet, View } from 'react-native';
5
5
  import { createStyles } from '../theme/createStyles';
6
+ import { useColors, useTheme } from '../theme/UIProvider';
7
+ import { Icon } from '../icons/Icon';
6
8
  import { Spinner } from './Spinner';
9
+
10
+ /**
11
+ * The event RN's Image passes to `onError`. Taken from its own prop type:
12
+ * react-native 0.88 (Expo SDK 58) renamed the exported name
13
+ * (`ImageErrorEventData` -> `ImageErrorEvent`).
14
+ */
7
15
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
16
  const useStyles = createStyles(theme => ({
9
17
  container: {
10
- overflow: 'hidden',
18
+ overflow: 'hidden'
19
+ },
20
+ // Only while loading or on failure: once the image has loaded, a PNG with
21
+ // transparency (a logo) let this gray show through.
22
+ placeholder: {
11
23
  backgroundColor: theme.colors.skeleton
12
24
  },
13
25
  overlay: {
@@ -16,7 +28,9 @@ const useStyles = createStyles(theme => ({
16
28
  },
17
29
  fallback: {
18
30
  flex: 1,
19
- backgroundColor: theme.colors.skeleton
31
+ backgroundColor: theme.colors.skeleton,
32
+ alignItems: 'center',
33
+ justifyContent: 'center'
20
34
  }
21
35
  }));
22
36
  function sourceUri(source) {
@@ -25,14 +39,22 @@ function sourceUri(source) {
25
39
 
26
40
  /**
27
41
  * Image
28
- * Wrapper cero-dependencias sobre <Image> de RN: agrega estado de carga y
29
- * error (con los mismos placeholders que el resto de la librería), y expone
30
- * `priority="high"` para adelantar la descarga vía Image.prefetch(). El
31
- * cache real (disco/memoria) lo maneja el motor de imágenes nativo de RN —
32
- * esto no lo reimplementa, solo no lo deja apagado por accidente: en iOS
33
- * fuerza `cache="force-cache"` (usa el disco aunque el header HTTP no lo
34
- * pida); en Android el cache de disco de la imagen nativa ya está siempre
35
- * activo, no hay knob equivalente que tocar.
42
+ * Zero-dependency wrapper over RN's <Image>: adds loading and error state
43
+ * (with the same placeholders as the rest of the library), and exposes
44
+ * `priority="high"` to start the download early via Image.prefetch(). The
45
+ * actual cache (disk/memory) is handled by RN's native image engine — this
46
+ * doesn't reimplement it, it just keeps it from being accidentally turned off:
47
+ * on iOS it forces `cache="force-cache"` (uses the disk even when the HTTP
48
+ * header doesn't ask for it); on Android the native image's disk cache is
49
+ * always on, there is no equivalent knob to touch.
50
+ *
51
+ * Gestalt, closure: the container takes its final size from the first frame
52
+ * (`skeleton` background), so the layout doesn't jump when the image arrives
53
+ * and the eye completes the shape it will fill. If loading fails, the same
54
+ * slot shows a warning icon: the state is visible, not a silent gray.
55
+ *
56
+ * Success is detected with `onLoad`, not `onLoadEnd`: RN also calls
57
+ * `onLoadEnd` on failure, and using it for "loaded" overwrote the error.
36
58
  */
37
59
  export const Image = /*#__PURE__*/memo(({
38
60
  source,
@@ -46,14 +68,17 @@ export const Image = /*#__PURE__*/memo(({
46
68
  style,
47
69
  onLoadEnd,
48
70
  onError,
49
- testID
71
+ testID,
72
+ accessibilityLabel
50
73
  }) => {
51
74
  const styles = useStyles();
75
+ const colors = useColors();
76
+ const theme = useTheme();
52
77
  const [status, setStatus] = useState('loading');
53
78
  const uri = sourceUri(source);
54
79
  useEffect(() => {
55
- // Resetea el estado si cambia la imagen (misma instancia de Image,
56
- // source distinto: p.ej. avatar de un usuario a otro en la misma fila).
80
+ // Resets the state if the image changes (same Image instance, different
81
+ // source: e.g. one user's avatar to another's in the same row).
57
82
  setStatus('loading');
58
83
  }, [uri ?? source]);
59
84
  useEffect(() => {
@@ -65,26 +90,29 @@ export const Image = /*#__PURE__*/memo(({
65
90
  setStatus('error');
66
91
  onError?.(e);
67
92
  }, [onError]);
68
- const handleLoadEnd = useCallback(() => {
93
+ const handleLoad = useCallback(() => {
69
94
  setStatus('loaded');
70
- onLoadEnd?.();
71
- }, [onLoadEnd]);
95
+ }, []);
72
96
  return /*#__PURE__*/_jsxs(View, {
73
- style: [styles.container, {
97
+ style: [styles.container, status !== 'loaded' && styles.placeholder, {
74
98
  width,
75
99
  height,
76
100
  borderRadius: radius
77
101
  }, style],
78
102
  testID: testID,
103
+ accessible: !!accessibilityLabel,
104
+ accessibilityRole: accessibilityLabel ? 'image' : undefined,
105
+ accessibilityLabel: accessibilityLabel,
79
106
  children: [status !== 'error' && /*#__PURE__*/_jsx(RNImage, {
80
107
  source: source,
81
108
  resizeMode: resizeMode,
82
109
  style: StyleSheet.absoluteFill,
83
- fadeDuration: Platform.OS === 'android' ? 150 : undefined,
110
+ fadeDuration: Platform.OS === 'android' ? theme.tokens.duration.fast : undefined,
84
111
  ...(Platform.OS === 'ios' ? {
85
112
  cache: 'force-cache'
86
113
  } : null),
87
- onLoadEnd: handleLoadEnd,
114
+ onLoad: handleLoad,
115
+ onLoadEnd: onLoadEnd,
88
116
  onError: handleError
89
117
  }), status === 'loading' && loading !== false && /*#__PURE__*/_jsx(View, {
90
118
  style: [StyleSheet.absoluteFill, styles.overlay],
@@ -92,17 +120,25 @@ export const Image = /*#__PURE__*/memo(({
92
120
  size: "small",
93
121
  fullscreen: false
94
122
  }) : loading
95
- }), status === 'error' && (fallback ?? /*#__PURE__*/_jsx(View, {
96
- style: styles.fallback
97
- }))]
123
+ }), status === 'error' &&
124
+ /*#__PURE__*/
125
+ // Custom fallback or the default: always centered in the slot.
126
+ _jsx(View, {
127
+ style: styles.fallback,
128
+ children: fallback ?? /*#__PURE__*/_jsx(Icon, {
129
+ name: "warning",
130
+ size: Math.max(16, Math.min(32, Math.round(Math.min(width ?? 64, height ?? 64) * 0.3))),
131
+ color: colors.textLight
132
+ })
133
+ })]
98
134
  });
99
135
  });
100
136
  Image.displayName = 'Image';
101
137
 
102
138
  /**
103
- * Precarga una URL antes de montar el componente (p.ej. al recibir la
104
- * respuesta de un listado, antes de navegar al detalle). Re-exporta
105
- * Image.prefetch de RN — no hay nada zero-dep que agregarle encima.
139
+ * Preloads a URL before mounting the component (e.g. on receiving a list
140
+ * response, before navigating to the detail). Re-exports RN's
141
+ * Image.prefetch — there is nothing zero-dep to add on top.
106
142
  */
107
143
  export const prefetchImage = RNImage.prefetch;
108
144
  //# sourceMappingURL=Image.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","memo","useCallback","useEffect","useState","Image","RNImage","Platform","StyleSheet","View","createStyles","Spinner","jsx","_jsx","jsxs","_jsxs","useStyles","theme","container","overflow","backgroundColor","colors","skeleton","overlay","alignItems","justifyContent","fallback","flex","sourceUri","source","uri","undefined","width","height","resizeMode","radius","loading","priority","style","onLoadEnd","onError","testID","styles","status","setStatus","prefetch","catch","handleError","e","handleLoadEnd","borderRadius","children","absoluteFill","fadeDuration","OS","cache","size","fullscreen","displayName","prefetchImage"],"sourceRoot":"../../../src","sources":["atoms/Image.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","memo","useCallback","useEffect","useState","Image","RNImage","Platform","StyleSheet","View","createStyles","useColors","useTheme","Icon","Spinner","jsx","_jsx","jsxs","_jsxs","useStyles","theme","container","overflow","placeholder","backgroundColor","colors","skeleton","overlay","alignItems","justifyContent","fallback","flex","sourceUri","source","uri","undefined","width","height","resizeMode","radius","loading","priority","style","onLoadEnd","onError","testID","accessibilityLabel","styles","status","setStatus","prefetch","catch","handleError","e","handleLoad","borderRadius","accessible","accessibilityRole","children","absoluteFill","fadeDuration","OS","tokens","duration","fast","cache","onLoad","size","fullscreen","name","Math","max","min","round","color","textLight","displayName","prefetchImage"],"sourceRoot":"../../../src","sources":["atoms/Image.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,10 +1,14 @@
1
1
  "use strict";
2
2
 
3
- import React, { memo, useRef, useState } from 'react';
4
- import { ActivityIndicator, Animated, Text, TextInput, TouchableOpacity, View } from 'react-native';
3
+ import React, { forwardRef, memo, useEffect, useImperativeHandle, useRef, useState } from 'react';
4
+ import { AccessibilityInfo, ActivityIndicator, Animated, Text, TextInput, TouchableOpacity, View } from 'react-native';
5
5
  import { createStyles } from '../theme/createStyles';
6
- import { useAllowFontScaling, useColors } from '../theme/UIProvider';
6
+ import { useAllowFontScaling, useColors, useLabels, useTheme } from '../theme/UIProvider';
7
7
  import { Icon } from '../icons/Icon';
8
+ import { useKeyboardField } from '../theme/useKeyboardField';
9
+ import { validateInputValue } from './inputValidation';
10
+
11
+ /** The TextInput instance, plus `validate()` to check the field on demand (e.g. on submit). */
8
12
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
13
  const useStyles = createStyles(theme => ({
10
14
  container: {
@@ -39,9 +43,15 @@ const useStyles = createStyles(theme => ({
39
43
  marginLeft: theme.tokens.spacing.lg,
40
44
  marginRight: -theme.tokens.spacing.xs
41
45
  },
46
+ // 20 icon + md padding (12) per side = 44pt touch area (Fitts).
42
47
  rightIcon: {
43
- padding: theme.tokens.spacing.sm + 2,
44
- marginRight: theme.tokens.spacing.xs
48
+ padding: theme.tokens.spacing.md,
49
+ marginRight: theme.tokens.spacing.xxs
50
+ },
51
+ // Read-only: no fill, so it doesn't look like a field you can tap
52
+ // (affordance), but the text keeps its contrast to stay readable.
53
+ readOnly: {
54
+ backgroundColor: 'transparent'
45
55
  },
46
56
  errorText: {
47
57
  marginTop: theme.tokens.spacing.xs,
@@ -52,18 +62,46 @@ const useStyles = createStyles(theme => ({
52
62
 
53
63
  /**
54
64
  * Input
55
- * El borde anima color entre border/primary/error con Animated (no
56
- * useNativeDriver: los navegadores de color en RN sin Fabric solo son
57
- * confiables en el hilo de JS; el costo es despreciable, se anima un borde).
65
+ * The border animates its color between border/primary/error with Animated
66
+ * (no useNativeDriver: color drivers in RN without Fabric are only reliable
67
+ * on the JS thread; the cost is negligible, it animates one border).
68
+ *
69
+ * Gestalt:
70
+ * - Proximity: label (`spacing.sm` above) and error (`spacing.xs` below) sit
71
+ * right next to the field and the next field is `spacing.lg` away: each
72
+ * label and its error read with their field, not with the neighbor.
73
+ * - Common region: left icon, text and right action share the same border
74
+ * and background, so they read as a single control.
75
+ * - Focal point: the border turns `primary` on focus and `error` on error;
76
+ * the error is also written out (not just color).
77
+ *
78
+ * Accessibility: the accessible name includes "required" when applicable, the
79
+ * error is announced as a hint, and the eye and right-action buttons have a
80
+ * 44pt touch area and texts from `labels` (translatable).
81
+ *
82
+ * Keyboard: on focus it registers with the root UIProvider's host, which
83
+ * lifts the app just enough for the whole field (label, field and error) to
84
+ * sit above the keyboard — without depending on Screen or a ScrollView. What
85
+ * you type is always visible.
86
+ *
87
+ * Validation: `required` and `rules` run when leaving the field (`validateOn`),
88
+ * the error appears in writing, is announced to the screen reader and, once
89
+ * visible, is revalidated on every change so it disappears as soon as it is
90
+ * fixed. An `error` passed by hand overrides the internal validation.
58
91
  */
59
- export const Input = /*#__PURE__*/memo(({
92
+ export const Input = /*#__PURE__*/memo(/*#__PURE__*/forwardRef(({
60
93
  label,
61
94
  required = false,
62
- error,
95
+ error: errorProp,
96
+ rules,
97
+ validateOn = 'blur',
98
+ onValidate,
99
+ onChangeText,
63
100
  containerStyle,
64
101
  leftIconName,
65
102
  rightIconName,
66
103
  onRightIconPress,
104
+ rightIconAccessibilityLabel,
67
105
  isPassword = false,
68
106
  isLoading = false,
69
107
  style,
@@ -71,39 +109,82 @@ export const Input = /*#__PURE__*/memo(({
71
109
  onBlur,
72
110
  testID,
73
111
  ...props
74
- }) => {
112
+ }, ref) => {
75
113
  const colors = useColors();
76
114
  const styles = useStyles();
77
115
  const allowFontScaling = useAllowFontScaling();
116
+ const labels = useLabels();
117
+ const theme = useTheme();
118
+ const readOnly = props.editable === false;
78
119
  const [isFocused, setIsFocused] = useState(false);
79
120
  const [showPassword, setShowPassword] = useState(false);
80
121
  const focusProgress = useRef(new Animated.Value(0)).current;
122
+ const inputRef = useRef(null);
123
+ const containerRef = useRef(null);
124
+ const [internalError, setInternalError] = useState(undefined);
125
+ // Last known value: the controlled one (`value`) or what was typed (uncontrolled).
126
+ const valueRef = useRef(props.value ?? props.defaultValue ?? '');
127
+ if (props.value !== undefined) valueRef.current = props.value;
128
+ const error = errorProp ?? internalError;
129
+ const runValidation = () => {
130
+ const next = validateInputValue(valueRef.current, {
131
+ required,
132
+ rules
133
+ }, labels);
134
+ setInternalError(next);
135
+ onValidate?.(next);
136
+ return next;
137
+ };
138
+ useImperativeHandle(ref, () => Object.assign(inputRef.current, {
139
+ validate: runValidation
140
+ }));
141
+
142
+ // The new error is announced right away, not only as a hint when returning to the field.
143
+ useEffect(() => {
144
+ if (internalError && errorProp === undefined) AccessibilityInfo.announceForAccessibility(internalError);
145
+ }, [internalError, errorProp]);
146
+ const keyboard = useKeyboardField(containerRef);
147
+
148
+ // If the error appears or changes while the field is focused, the block grows:
149
+ // a readjustment is requested so the error line isn't covered either.
150
+ useEffect(() => {
151
+ if (isFocused) keyboard.focus();
152
+ }, [error, isFocused, keyboard]);
81
153
  const handleFocus = e => {
82
154
  setIsFocused(true);
155
+ keyboard.focus();
83
156
  Animated.timing(focusProgress, {
84
157
  toValue: 1,
85
- duration: 200,
158
+ duration: theme.tokens.duration.base,
86
159
  useNativeDriver: false
87
160
  }).start();
88
161
  onFocus?.(e);
89
162
  };
90
163
  const handleBlur = e => {
91
164
  setIsFocused(false);
165
+ keyboard.blur();
166
+ if (validateOn === 'blur') runValidation();
92
167
  Animated.timing(focusProgress, {
93
168
  toValue: 0,
94
- duration: 200,
169
+ duration: theme.tokens.duration.base,
95
170
  useNativeDriver: false
96
171
  }).start();
97
172
  onBlur?.(e);
98
173
  };
174
+ const handleChangeText = text => {
175
+ valueRef.current = text;
176
+ onChangeText?.(text);
177
+ if (validateOn === 'change' || internalError) runValidation();
178
+ };
99
179
  const borderColor = error ? colors.error : focusProgress.interpolate({
100
180
  outputRange: [colors.border, colors.primary],
101
181
  inputRange: [0, 1]
102
182
  });
103
183
  return /*#__PURE__*/_jsxs(View, {
184
+ ref: containerRef,
104
185
  style: [styles.container, containerStyle],
105
186
  testID: testID,
106
- children: [label && /*#__PURE__*/_jsxs(Text, {
187
+ children: [!!label && /*#__PURE__*/_jsxs(Text, {
107
188
  allowFontScaling: allowFontScaling,
108
189
  style: styles.label,
109
190
  children: [label, required && /*#__PURE__*/_jsx(Text, {
@@ -111,7 +192,7 @@ export const Input = /*#__PURE__*/memo(({
111
192
  children: " *"
112
193
  })]
113
194
  }), /*#__PURE__*/_jsxs(Animated.View, {
114
- style: [styles.inputWrapper, {
195
+ style: [styles.inputWrapper, readOnly && styles.readOnly, {
115
196
  borderColor
116
197
  }],
117
198
  children: [leftIconName && /*#__PURE__*/_jsx(Icon, {
@@ -120,6 +201,7 @@ export const Input = /*#__PURE__*/memo(({
120
201
  color: colors.textLight,
121
202
  style: styles.leftIcon
122
203
  }), /*#__PURE__*/_jsx(TextInput, {
204
+ ref: inputRef,
123
205
  style: [styles.input, style],
124
206
  placeholderTextColor: colors.textLight,
125
207
  onFocus: handleFocus,
@@ -127,8 +209,14 @@ export const Input = /*#__PURE__*/memo(({
127
209
  secureTextEntry: isPassword && !showPassword,
128
210
  allowFontScaling: allowFontScaling,
129
211
  textAlignVertical: "center",
130
- accessibilityLabel: label ?? props.placeholder,
131
- ...props
212
+ accessibilityLabel: label || props.placeholder ? `${label ?? props.placeholder}${required ? `, ${labels.required}` : ''}` : undefined,
213
+ accessibilityHint: error || undefined,
214
+ accessibilityState: {
215
+ disabled: readOnly,
216
+ busy: isLoading
217
+ },
218
+ ...props,
219
+ onChangeText: handleChangeText
132
220
  }), isLoading ? /*#__PURE__*/_jsx(View, {
133
221
  style: styles.rightIcon,
134
222
  children: /*#__PURE__*/_jsx(ActivityIndicator, {
@@ -139,7 +227,7 @@ export const Input = /*#__PURE__*/memo(({
139
227
  onPress: () => setShowPassword(v => !v),
140
228
  style: styles.rightIcon,
141
229
  accessibilityRole: "button",
142
- accessibilityLabel: showPassword ? 'Hide password' : 'Show password',
230
+ accessibilityLabel: showPassword ? labels.hidePassword : labels.showPassword,
143
231
  children: /*#__PURE__*/_jsx(Icon, {
144
232
  name: showPassword ? 'eye-off' : 'eye',
145
233
  size: 20,
@@ -150,7 +238,7 @@ export const Input = /*#__PURE__*/memo(({
150
238
  style: styles.rightIcon,
151
239
  disabled: !onRightIconPress,
152
240
  accessibilityRole: "button",
153
- accessibilityLabel: "Clear",
241
+ accessibilityLabel: rightIconAccessibilityLabel ?? labels.clear,
154
242
  children: /*#__PURE__*/_jsx(Icon, {
155
243
  name: rightIconName,
156
244
  size: 20,
@@ -163,6 +251,6 @@ export const Input = /*#__PURE__*/memo(({
163
251
  children: error
164
252
  })]
165
253
  });
166
- });
254
+ }));
167
255
  Input.displayName = 'Input';
168
256
  //# sourceMappingURL=Input.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","memo","useRef","useState","ActivityIndicator","Animated","Text","TextInput","TouchableOpacity","View","createStyles","useAllowFontScaling","useColors","Icon","jsx","_jsx","jsxs","_jsxs","useStyles","theme","container","marginBottom","tokens","spacing","lg","width","label","sm","fontSize","md","fontWeight","medium","color","colors","text","required","errorText","inputWrapper","flexDirection","alignItems","backgroundColor","inputBackground","borderRadius","radius","borderWidth","minHeight","input","flex","paddingVertical","paddingHorizontal","leftIcon","marginLeft","marginRight","xs","rightIcon","padding","marginTop","Input","error","containerStyle","leftIconName","rightIconName","onRightIconPress","isPassword","isLoading","style","onFocus","onBlur","testID","props","styles","allowFontScaling","isFocused","setIsFocused","showPassword","setShowPassword","focusProgress","Value","current","handleFocus","e","timing","toValue","duration","useNativeDriver","start","handleBlur","borderColor","interpolate","outputRange","border","primary","inputRange","children","name","size","textLight","placeholderTextColor","secureTextEntry","textAlignVertical","accessibilityLabel","placeholder","onPress","v","accessibilityRole","disabled","displayName"],"sourceRoot":"../../../src","sources":["atoms/Input.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","forwardRef","memo","useEffect","useImperativeHandle","useRef","useState","AccessibilityInfo","ActivityIndicator","Animated","Text","TextInput","TouchableOpacity","View","createStyles","useAllowFontScaling","useColors","useLabels","useTheme","Icon","useKeyboardField","validateInputValue","jsx","_jsx","jsxs","_jsxs","useStyles","theme","container","marginBottom","tokens","spacing","lg","width","label","sm","fontSize","md","fontWeight","medium","color","colors","text","required","errorText","inputWrapper","flexDirection","alignItems","backgroundColor","inputBackground","borderRadius","radius","borderWidth","minHeight","input","flex","paddingVertical","paddingHorizontal","leftIcon","marginLeft","marginRight","xs","rightIcon","padding","xxs","readOnly","marginTop","Input","error","errorProp","rules","validateOn","onValidate","onChangeText","containerStyle","leftIconName","rightIconName","onRightIconPress","rightIconAccessibilityLabel","isPassword","isLoading","style","onFocus","onBlur","testID","props","ref","styles","allowFontScaling","labels","editable","isFocused","setIsFocused","showPassword","setShowPassword","focusProgress","Value","current","inputRef","containerRef","internalError","setInternalError","undefined","valueRef","value","defaultValue","runValidation","next","Object","assign","validate","announceForAccessibility","keyboard","focus","handleFocus","e","timing","toValue","duration","base","useNativeDriver","start","handleBlur","blur","handleChangeText","borderColor","interpolate","outputRange","border","primary","inputRange","children","name","size","textLight","placeholderTextColor","secureTextEntry","textAlignVertical","accessibilityLabel","placeholder","accessibilityHint","accessibilityState","disabled","busy","onPress","v","accessibilityRole","hidePassword","clear","displayName"],"sourceRoot":"../../../src","sources":["atoms/Input.tsx"],"mappings":"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","ignoreList":[]}
@@ -9,42 +9,70 @@ const useStyles = createStyles(theme => ({
9
9
  row: {
10
10
  flexDirection: 'row',
11
11
  justifyContent: 'space-between',
12
- alignItems: 'center'
12
+ alignItems: 'center',
13
+ gap: theme.tokens.spacing.md
13
14
  },
15
+ // Two texts: aligned on the first line, so a value that wraps onto
16
+ // several lines still reads next to its label.
17
+ rowText: {
18
+ alignItems: 'baseline'
19
+ },
20
+ // The label keeps its natural width up to half the row; the value
21
+ // shrinks and wraps instead of pushing the row off the screen.
14
22
  label: {
23
+ flexShrink: 0,
24
+ maxWidth: '50%',
15
25
  fontSize: theme.tokens.fontSize.sm,
26
+ lineHeight: theme.tokens.lineHeight.sm,
16
27
  fontWeight: theme.tokens.fontWeight.semibold,
17
28
  color: theme.colors.textLight
18
29
  },
19
30
  value: {
31
+ flexShrink: 1,
20
32
  fontSize: theme.tokens.fontSize.sm,
33
+ lineHeight: theme.tokens.lineHeight.sm,
21
34
  textAlign: 'right',
22
- color: theme.colors.text
35
+ color: theme.colors.text,
36
+ // Fixed-width digits: in a column of amounts the figures line up
37
+ // across rows.
38
+ fontVariant: ['tabular-nums']
23
39
  }
24
40
  }));
41
+ const isPrimitive = node => typeof node === 'string' || typeof node === 'number';
25
42
 
26
43
  /**
27
44
  * KeyValueRow
28
- * Fila label (izquierda) / value (derecha). Si label/value son string o
29
- * number, se renderizan con el estilo default; si ya vienen envueltos en un
30
- * componente de texto propio, se respetan tal cual.
45
+ * Label (left) / value (right) row. If label/value are a string or number,
46
+ * they render with the default style; if they already come wrapped in a
47
+ * custom component, they are kept as is.
48
+ *
49
+ * Gestalt, alignment and similarity: labels share color and weight and values
50
+ * align to the right edge with tabular digits, so a stack of rows reads as
51
+ * two columns — what on the left, how much on the right.
52
+ * With a text label and value, the row is a single accessibility node
53
+ * ("Subtotal, $300.00"); if either is a custom node (a Badge, a button) it
54
+ * isn't merged, so as not to hide what that node announces or lets you tap.
31
55
  */
32
56
  export const KeyValueRow = /*#__PURE__*/memo(({
33
57
  label,
34
58
  value,
35
59
  style,
36
60
  labelStyle,
37
- valueStyle
61
+ valueStyle,
62
+ testID
38
63
  }) => {
39
64
  const styles = useStyles();
40
65
  const allowFontScaling = useAllowFontScaling();
66
+ const merge = isPrimitive(label) && isPrimitive(value);
41
67
  return /*#__PURE__*/_jsxs(View, {
42
- style: [styles.row, style],
43
- children: [typeof label === 'string' || typeof label === 'number' ? /*#__PURE__*/_jsx(Text, {
68
+ style: [styles.row, merge && styles.rowText, style],
69
+ accessible: merge || undefined,
70
+ testID: testID,
71
+ children: [isPrimitive(label) ? /*#__PURE__*/_jsx(Text, {
44
72
  allowFontScaling: allowFontScaling,
45
73
  style: [styles.label, labelStyle],
46
74
  children: label
47
- }) : label, typeof value === 'string' || typeof value === 'number' ? /*#__PURE__*/_jsx(Text, {
75
+ }) : label, isPrimitive(value) ? /*#__PURE__*/_jsx(Text, {
48
76
  allowFontScaling: allowFontScaling,
49
77
  style: [styles.value, valueStyle],
50
78
  children: value
@@ -1 +1 @@
1
- {"version":3,"names":["React","memo","Text","View","createStyles","useAllowFontScaling","jsx","_jsx","jsxs","_jsxs","useStyles","theme","row","flexDirection","justifyContent","alignItems","label","fontSize","tokens","sm","fontWeight","semibold","color","colors","textLight","value","textAlign","text","KeyValueRow","style","labelStyle","valueStyle","styles","allowFontScaling","children","displayName"],"sourceRoot":"../../../src","sources":["atoms/KeyValueRow.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,IAAI,QAAQ,OAAO;AACnC,SAASC,IAAI,EAAEC,IAAI,QAAwD,cAAc;AACzF,SAASC,YAAY,QAAQ,uBAAuB;AACpD,SAASC,mBAAmB,QAAQ,qBAAqB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAU1D,MAAMC,SAAS,GAAGN,YAAY,CAAEO,KAAK,KAAM;EACzCC,GAAG,EAAE;IAAEC,aAAa,EAAE,KAAK;IAAEC,cAAc,EAAE,eAAe;IAAEC,UAAU,EAAE;EAAS,CAAC;EACpFC,KAAK,EAAE;IAAEC,QAAQ,EAAEN,KAAK,CAACO,MAAM,CAACD,QAAQ,CAACE,EAAE;IAAEC,UAAU,EAAET,KAAK,CAACO,MAAM,CAACE,UAAU,CAACC,QAAQ;IAAEC,KAAK,EAAEX,KAAK,CAACY,MAAM,CAACC;EAAU,CAAC;EAC1HC,KAAK,EAAE;IAAER,QAAQ,EAAEN,KAAK,CAACO,MAAM,CAACD,QAAQ,CAACE,EAAE;IAAEO,SAAS,EAAE,OAAO;IAAEJ,KAAK,EAAEX,KAAK,CAACY,MAAM,CAACI;EAAK;AAC5F,CAAC,CAAC,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,WAAW,gBAAG3B,IAAI,CAAC,CAAC;EAAEe,KAAK;EAAES,KAAK;EAAEI,KAAK;EAAEC,UAAU;EAAEC;AAA6B,CAAC,KAAK;EACrG,MAAMC,MAAM,GAAGtB,SAAS,CAAC,CAAC;EAC1B,MAAMuB,gBAAgB,GAAG5B,mBAAmB,CAAC,CAAC;EAC9C,oBACEI,KAAA,CAACN,IAAI;IAAC0B,KAAK,EAAE,CAACG,MAAM,CAACpB,GAAG,EAAEiB,KAAK,CAAE;IAAAK,QAAA,GAC9B,OAAOlB,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,QAAQ,gBACrDT,IAAA,CAACL,IAAI;MAAC+B,gBAAgB,EAAEA,gBAAiB;MAACJ,KAAK,EAAE,CAACG,MAAM,CAAChB,KAAK,EAAEc,UAAU,CAAE;MAAAI,QAAA,EACzElB;IAAK,CACF,CAAC,GAEPA,KACD,EACA,OAAOS,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,QAAQ,gBACrDlB,IAAA,CAACL,IAAI;MAAC+B,gBAAgB,EAAEA,gBAAiB;MAACJ,KAAK,EAAE,CAACG,MAAM,CAACP,KAAK,EAAEM,UAAU,CAAE;MAAAG,QAAA,EACzET;IAAK,CACF,CAAC,GAEPA,KACD;EAAA,CACG,CAAC;AAEX,CAAC,CAAC;AACFG,WAAW,CAACO,WAAW,GAAG,aAAa","ignoreList":[]}
1
+ {"version":3,"names":["React","memo","Text","View","createStyles","useAllowFontScaling","jsx","_jsx","jsxs","_jsxs","useStyles","theme","row","flexDirection","justifyContent","alignItems","gap","tokens","spacing","md","rowText","label","flexShrink","maxWidth","fontSize","sm","lineHeight","fontWeight","semibold","color","colors","textLight","value","textAlign","text","fontVariant","isPrimitive","node","KeyValueRow","style","labelStyle","valueStyle","testID","styles","allowFontScaling","merge","accessible","undefined","children","displayName"],"sourceRoot":"../../../src","sources":["atoms/KeyValueRow.tsx"],"mappings":"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","ignoreList":[]}
@@ -2,14 +2,26 @@
2
2
 
3
3
  import React, { memo, useRef } from 'react';
4
4
  import { Animated, Pressable } from 'react-native';
5
+ import { useReduceMotion } from './Transition';
5
6
  import { jsx as _jsx } from "react/jsx-runtime";
7
+ /** Short spring with almost no bounce: feedback arrives in ~100 ms (Doherty). */
8
+ const PRESS_SPRING = {
9
+ speed: 50,
10
+ bounciness: 6
11
+ };
6
12
  const AnimatedPressable = Animated.createAnimatedComponent(Pressable);
7
13
 
8
14
  /**
9
15
  * PressableScale
10
- * Feedback táctil de "achicarse" al presionar, con Animated.spring de RN
11
- * (useNativeDriver: true — corre en el hilo nativo, sin coste de JS por frame).
12
- * No depende de reanimated: la librería entera es cero-dependencias.
16
+ * Tactile "shrink" feedback on press, with RN's Animated.spring
17
+ * (useNativeDriver: true — runs on the native thread, no JS cost per frame).
18
+ * Doesn't depend on reanimated: the whole library is zero-dependency.
19
+ *
20
+ * Gestalt, figure/ground: as it sinks, the pressed element separates for an
21
+ * instant from the rest and confirms what was touched (Doherty: immediate
22
+ * response). Announces itself as a button by default (`accessibilityRole` can
23
+ * be changed) and, when disabled, exposes `disabled` to the screen reader.
24
+ * With Reduce Motion it doesn't scale.
13
25
  */
14
26
  export const PressableScale = /*#__PURE__*/memo(({
15
27
  scaleTo = 0.96,
@@ -18,15 +30,18 @@ export const PressableScale = /*#__PURE__*/memo(({
18
30
  onPressIn,
19
31
  onPressOut,
20
32
  disabled,
33
+ accessibilityRole = 'button',
34
+ accessibilityState,
21
35
  ...props
22
36
  }) => {
23
37
  const scale = useRef(new Animated.Value(1)).current;
38
+ const reduceMotion = useReduceMotion();
24
39
  const animateTo = value => {
40
+ if (reduceMotion) return;
25
41
  Animated.spring(scale, {
26
42
  toValue: value,
27
43
  useNativeDriver: true,
28
- speed: 50,
29
- bounciness: 6
44
+ ...PRESS_SPRING
30
45
  }).start();
31
46
  };
32
47
  const handlePressIn = e => {
@@ -39,6 +54,11 @@ export const PressableScale = /*#__PURE__*/memo(({
39
54
  };
40
55
  return /*#__PURE__*/_jsx(AnimatedPressable, {
41
56
  ...props,
57
+ accessibilityRole: accessibilityRole,
58
+ accessibilityState: {
59
+ ...accessibilityState,
60
+ disabled: !!disabled
61
+ },
42
62
  disabled: disabled,
43
63
  onPressIn: handlePressIn,
44
64
  onPressOut: handlePressOut,