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
@@ -1 +1 @@
1
- {"version":3,"names":["React","memo","useRef","Animated","Pressable","jsx","_jsx","AnimatedPressable","createAnimatedComponent","PressableScale","scaleTo","style","children","onPressIn","onPressOut","disabled","props","scale","Value","current","animateTo","value","spring","toValue","useNativeDriver","speed","bounciness","start","handlePressIn","e","handlePressOut","transform","displayName"],"sourceRoot":"../../../src","sources":["atoms/PressableScale.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,MAAM,QAAQ,OAAO;AAC3C,SACEC,QAAQ,EACRC,SAAS,QAKJ,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAStB,MAAMC,iBAAiB,GAAGJ,QAAQ,CAACK,uBAAuB,CAACJ,SAAS,CAAC;;AAErE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMK,cAAc,gBAAGR,IAAI,CAChC,CAAC;EAAES,OAAO,GAAG,IAAI;EAAEC,KAAK;EAAEC,QAAQ;EAAEC,SAAS;EAAEC,UAAU;EAAEC,QAAQ;EAAE,GAAGC;AAA2B,CAAC,KAAK;EACvG,MAAMC,KAAK,GAAGf,MAAM,CAAC,IAAIC,QAAQ,CAACe,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO;EAEnD,MAAMC,SAAS,GAAIC,KAAa,IAAK;IACnClB,QAAQ,CAACmB,MAAM,CAACL,KAAK,EAAE;MACrBM,OAAO,EAAEF,KAAK;MACdG,eAAe,EAAE,IAAI;MACrBC,KAAK,EAAE,EAAE;MACTC,UAAU,EAAE;IACd,CAAC,CAAC,CAACC,KAAK,CAAC,CAAC;EACZ,CAAC;EAED,MAAMC,aAAa,GAAIC,CAAwB,IAAK;IAClD,IAAI,CAACd,QAAQ,EAAEK,SAAS,CAACV,OAAO,CAAC;IACjCG,SAAS,GAAGgB,CAAC,CAAC;EAChB,CAAC;EAED,MAAMC,cAAc,GAAID,CAAwB,IAAK;IACnD,IAAI,CAACd,QAAQ,EAAEK,SAAS,CAAC,CAAC,CAAC;IAC3BN,UAAU,GAAGe,CAAC,CAAC;EACjB,CAAC;EAED,oBACEvB,IAAA,CAACC,iBAAiB;IAAA,GACZS,KAAK;IACTD,QAAQ,EAAEA,QAAS;IACnBF,SAAS,EAAEe,aAAc;IACzBd,UAAU,EAAEgB,cAAe;IAC3BnB,KAAK,EAAE,CAACA,KAAK,EAAE;MAAEoB,SAAS,EAAE,CAAC;QAAEd;MAAM,CAAC;IAAE,CAAC,CAAE;IAAAL,QAAA,EAE1CA;EAAQ,CACQ,CAAC;AAExB,CACF,CAAC;AACDH,cAAc,CAACuB,WAAW,GAAG,gBAAgB","ignoreList":[]}
1
+ {"version":3,"names":["React","memo","useRef","Animated","Pressable","useReduceMotion","jsx","_jsx","PRESS_SPRING","speed","bounciness","AnimatedPressable","createAnimatedComponent","PressableScale","scaleTo","style","children","onPressIn","onPressOut","disabled","accessibilityRole","accessibilityState","props","scale","Value","current","reduceMotion","animateTo","value","spring","toValue","useNativeDriver","start","handlePressIn","e","handlePressOut","transform","displayName"],"sourceRoot":"../../../src","sources":["atoms/PressableScale.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,MAAM,QAAQ,OAAO;AAC3C,SACEC,QAAQ,EACRC,SAAS,QAKJ,cAAc;AACrB,SAASC,eAAe,QAAQ,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAU/C;AACA,MAAMC,YAAY,GAAG;EAAEC,KAAK,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAU;AAE1D,MAAMC,iBAAiB,GAAGR,QAAQ,CAACS,uBAAuB,CAACR,SAAS,CAAC;;AAErE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMS,cAAc,gBAAGZ,IAAI,CAChC,CAAC;EACCa,OAAO,GAAG,IAAI;EACdC,KAAK;EACLC,QAAQ;EACRC,SAAS;EACTC,UAAU;EACVC,QAAQ;EACRC,iBAAiB,GAAG,QAAQ;EAC5BC,kBAAkB;EAClB,GAAGC;AACgB,CAAC,KAAK;EACzB,MAAMC,KAAK,GAAGrB,MAAM,CAAC,IAAIC,QAAQ,CAACqB,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO;EACnD,MAAMC,YAAY,GAAGrB,eAAe,CAAC,CAAC;EAEtC,MAAMsB,SAAS,GAAIC,KAAa,IAAK;IACnC,IAAIF,YAAY,EAAE;IAClBvB,QAAQ,CAAC0B,MAAM,CAACN,KAAK,EAAE;MACrBO,OAAO,EAAEF,KAAK;MACdG,eAAe,EAAE,IAAI;MACrB,GAAGvB;IACL,CAAC,CAAC,CAACwB,KAAK,CAAC,CAAC;EACZ,CAAC;EAED,MAAMC,aAAa,GAAIC,CAAwB,IAAK;IAClD,IAAI,CAACf,QAAQ,EAAEQ,SAAS,CAACb,OAAO,CAAC;IACjCG,SAAS,GAAGiB,CAAC,CAAC;EAChB,CAAC;EAED,MAAMC,cAAc,GAAID,CAAwB,IAAK;IACnD,IAAI,CAACf,QAAQ,EAAEQ,SAAS,CAAC,CAAC,CAAC;IAC3BT,UAAU,GAAGgB,CAAC,CAAC;EACjB,CAAC;EAED,oBACE3B,IAAA,CAACI,iBAAiB;IAAA,GACZW,KAAK;IACTF,iBAAiB,EAAEA,iBAAkB;IACrCC,kBAAkB,EAAE;MAAE,GAAGA,kBAAkB;MAAEF,QAAQ,EAAE,CAAC,CAACA;IAAS,CAAE;IACpEA,QAAQ,EAAEA,QAAS;IACnBF,SAAS,EAAEgB,aAAc;IACzBf,UAAU,EAAEiB,cAAe;IAC3BpB,KAAK,EAAE,CAACA,KAAK,EAAE;MAAEqB,SAAS,EAAE,CAAC;QAAEb;MAAM,CAAC;IAAE,CAAC,CAAE;IAAAP,QAAA,EAE1CA;EAAQ,CACQ,CAAC;AAExB,CACF,CAAC;AACDH,cAAc,CAACwB,WAAW,GAAG,gBAAgB","ignoreList":[]}
@@ -20,15 +20,15 @@ const useStyles = createStyles(theme => ({
20
20
  flexDirection: 'row',
21
21
  flexWrap: 'wrap'
22
22
  },
23
- // Sólo top/left: un absoluteFill estiraría la letra al ancho del grupo y la
24
- // volvería a alinear. Anclada a la esquina cae exactamente sobre la de abajo.
23
+ // Only top/left: an absoluteFill would stretch the letter to the group's width
24
+ // and realign it. Anchored to the corner it lands exactly on the one below.
25
25
  overlay: {
26
26
  position: 'absolute',
27
27
  top: 0,
28
28
  left: 0
29
29
  },
30
- // Una palabra y los espacios que la siguen: el salto de línea ocurre entre
31
- // grupos, nunca entre las letras de una palabra.
30
+ // A word and the spaces that follow it: line breaks happen between
31
+ // groups, never between the letters of a word.
32
32
  group: {
33
33
  flexDirection: 'row'
34
34
  }
@@ -39,7 +39,7 @@ const ALIGN = {
39
39
  right: 'flex-end'
40
40
  };
41
41
 
42
- /** Una palabra con los espacios que la siguen, y el índice de su primera letra. */
42
+ /** A word with the spaces that follow it, and the index of its first letter. */
43
43
 
44
44
  function toGroups(text) {
45
45
  const chars = Array.from(text);
@@ -50,8 +50,8 @@ function toGroups(text) {
50
50
  if (current.length === 0) start = index;
51
51
  current.push(char);
52
52
  const next = chars[index + 1];
53
- // Cierra el grupo cuando termina la racha de espacios que sigue a la
54
- // palabra: así el espacio viaja con ella y no abre línea por sí solo.
53
+ // Closes the group when the run of spaces following the word ends:
54
+ // that way the space travels with it and never starts a line on its own.
55
55
  const isSpace = /\s/.test(char);
56
56
  if (isSpace && next !== undefined && !/\s/.test(next)) {
57
57
  groups.push({
@@ -70,23 +70,23 @@ function toGroups(text) {
70
70
 
71
71
  /**
72
72
  * ShinyText
73
- * Una banda de luz recorre el texto de izquierda a derecha. Sin
74
- * `background-clip: text` ni máscaras —que React Native no tiene en el rango
75
- * soportado— el brillo se compone letra por letra: cada una lleva su color de
76
- * reposo y encima, superpuesta, la misma letra en el color del brillo con la
77
- * opacidad animada. La banda es una ventana de interpolación que se desplaza:
78
- * lo que cambia por frame es sólo `opacity`, o sea que la animación entera
79
- * corre en el hilo nativo y JS no participa de ningún frame.
73
+ * A band of light sweeps across the text from left to right. Without
74
+ * `background-clip: text` or masks —which React Native lacks in the supported
75
+ * range— the shine is composed letter by letter: each one carries its resting
76
+ * color and, overlaid on top, the same letter in the shine color with animated
77
+ * opacity. The band is a moving interpolation window: the only thing that
78
+ * changes per frame is `opacity`, which means the whole animation runs on the
79
+ * native thread and JS takes part in no frame.
80
80
  *
81
- * Gestalt, destino común: las letras se encienden en secuencia y con el mismo
82
- * ritmo, así que se leen como una sola cosa que se mueve —una palabra
83
- * iluminándose— y no como N letras parpadeando por su cuenta. Por eso el ancho
84
- * de banda es relativo al texto y no una cantidad fija de píxeles: un título
85
- * largo y uno corto tardan lo mismo y se perciben igual.
81
+ * Gestalt, common fate: the letters light up in sequence and at the same
82
+ * rhythm, so they read as one moving thing —a word lighting up— and not as N
83
+ * letters blinking on their own. That is why the band width is relative to
84
+ * the text and not a fixed number of pixels: a long title and a short one take
85
+ * the same time and are perceived the same.
86
86
  *
87
- * Con "reducir movimiento" activo, o con `animated={false}`, el texto se
88
- * renderiza plano en `shineColor` —legible, un solo nodo y seleccionable—
89
- * porque el efecto es decorativo y nada de lo que comunica está en el brillo.
87
+ * With "reduce motion" on, or with `animated={false}`, the text renders flat
88
+ * in `shineColor` —legible, a single node and selectable— because the effect
89
+ * is decorative and nothing it communicates lives in the shine.
90
90
  */
91
91
  export const ShinyText = /*#__PURE__*/memo(({
92
92
  text,
@@ -106,9 +106,9 @@ export const ShinyText = /*#__PURE__*/memo(({
106
106
  const reduceMotion = useReduceMotion();
107
107
  const progress = useRef(new Animated.Value(0)).current;
108
108
  const base = color ?? theme.colors.textLight;
109
- // El acento, no `text`: contra `textLight` la diferencia es sólo de
110
- // luminancia y el barrido casi no se ve. El brillo cambia tono además de
111
- // claridad, que es lo que hace legible el movimiento.
109
+ // The accent, not `text`: against `textLight` the difference is only in
110
+ // luminance and the sweep is barely visible. The shine changes hue as well
111
+ // as lightness, which is what makes the motion readable.
112
112
  const shine = shineColor ?? theme.colors.primary;
113
113
  const running = animated && !reduceMotion && text.length > 0;
114
114
  useEffect(() => {
@@ -135,9 +135,9 @@ export const ShinyText = /*#__PURE__*/memo(({
135
135
  });
136
136
  }
137
137
  const total = Array.from(text).length;
138
- // La banda entra por la izquierda y sale por la derecha, así que el
139
- // recorrido normalizado mide 1 + 2·spread. `half` es media banda en esa
140
- // escala: el tramo de progreso que una letra tarda en encenderse.
138
+ // The band enters on the left and exits on the right, so the normalized
139
+ // path measures 1 + 2·spread. `half` is half a band on that scale: the
140
+ // stretch of progress a letter takes to light up.
141
141
  const half = spread / (1 + 2 * spread);
142
142
  return /*#__PURE__*/_jsx(View, {
143
143
  testID: testID,
@@ -152,7 +152,7 @@ export const ShinyText = /*#__PURE__*/memo(({
152
152
  children: group.chars.map((char, offset) => {
153
153
  const index = group.start + offset;
154
154
  const position = total === 1 ? 0.5 : index / (total - 1);
155
- // Progreso en el que el centro de la banda cae sobre esta letra.
155
+ // Progress at which the center of the band falls on this letter.
156
156
  const peak = (position + spread) / (1 + 2 * spread);
157
157
  const charStyle = [styles.text, style];
158
158
  return /*#__PURE__*/_jsxs(View, {
@@ -4,21 +4,33 @@ import React, { memo, useEffect, useRef } from 'react';
4
4
  import { Animated, Easing, View } from 'react-native';
5
5
  import { createStyles } from '../theme/createStyles';
6
6
  import { useTheme } from '../theme/UIProvider';
7
+ import { useReduceMotion } from './Transition';
8
+
9
+ /** Half a pulse cycle (opaque → faint). A loading loop, not a transition: it doesn't come from `duration`. */
7
10
  import { jsx as _jsx } from "react/jsx-runtime";
11
+ const PULSE_HALF_MS = 700;
8
12
  const useStyles = createStyles(theme => ({
9
13
  block: {
10
14
  backgroundColor: theme.colors.skeleton
11
15
  },
12
- lines: {
13
- gap: theme.tokens.spacing.sm
16
+ // Each line takes exactly `lineHeight.md` (Body's): a `fontSize.md` bar
17
+ // plus half the leading above and below. That way the fake paragraph
18
+ // measures the same as the real one and nothing jumps when the content arrives.
19
+ textLine: {
20
+ marginVertical: (theme.tokens.lineHeight.md - theme.tokens.fontSize.md) / 2
14
21
  }
15
22
  }));
16
23
 
17
24
  /**
18
25
  * Skeleton
19
- * Placeholder que late mientras llega el contenido real. Reserva el espacio
20
- * exacto de lo que reemplaza, así la pantalla no salta cuando aparecen los
21
- * datos — que es justamente lo que un Spinner centrado no puede hacer.
26
+ * Placeholder that pulses while the real content arrives. It reserves the
27
+ * exact space of what it replaces, so the screen doesn't jump when the data
28
+ * shows up — which is precisely what a centered Spinner can't do.
29
+ *
30
+ * Gestalt, similarity: the silhouette repeats the shape and size of the
31
+ * content (a circle for avatars, Body-height lines for text), so the eye
32
+ * already groups the screen before the data arrives. Respects Reduce Motion:
33
+ * no pulse, a static block.
22
34
  */
23
35
  export const Skeleton = /*#__PURE__*/memo(({
24
36
  width = '100%',
@@ -33,32 +45,37 @@ export const Skeleton = /*#__PURE__*/memo(({
33
45
  }) => {
34
46
  const theme = useTheme();
35
47
  const styles = useStyles();
48
+ const reduceMotion = useReduceMotion();
49
+ const pulsing = animated && !reduceMotion;
36
50
  const pulse = useRef(new Animated.Value(0)).current;
37
51
  useEffect(() => {
38
- if (!animated) return;
52
+ if (!pulsing) return;
39
53
  const loop = Animated.loop(Animated.sequence([Animated.timing(pulse, {
40
54
  toValue: 1,
41
- duration: 700,
55
+ duration: PULSE_HALF_MS,
42
56
  useNativeDriver: true,
43
57
  easing: Easing.inOut(Easing.quad)
44
58
  }), Animated.timing(pulse, {
45
59
  toValue: 0,
46
- duration: 700,
60
+ duration: PULSE_HALF_MS,
47
61
  useNativeDriver: true,
48
62
  easing: Easing.inOut(Easing.quad)
49
63
  })]));
50
64
  loop.start();
51
- return () => loop.stop();
52
- }, [animated, pulse]);
65
+ return () => {
66
+ loop.stop();
67
+ pulse.setValue(0);
68
+ };
69
+ }, [pulsing, pulse]);
53
70
  const isCircle = variant === 'circle';
54
71
  const isText = variant === 'text';
55
- const opacity = animated ? pulse.interpolate({
72
+ const opacity = pulsing ? pulse.interpolate({
56
73
  inputRange: [0, 1],
57
74
  outputRange: [1, 0.4]
58
75
  }) : 1;
59
76
  const resolvedHeight = isCircle ? width : isText ? theme.tokens.fontSize.md : height;
60
77
  const resolvedRadius = radius ?? (isCircle ? theme.tokens.radius.full : isText ? theme.tokens.radius.xs : theme.tokens.radius.sm);
61
- const barStyle = barWidth => [styles.block, {
78
+ const barStyle = barWidth => [styles.block, isText && styles.textLine, {
62
79
  width: barWidth,
63
80
  height: resolvedHeight,
64
81
  borderRadius: resolvedRadius,
@@ -70,7 +87,7 @@ export const Skeleton = /*#__PURE__*/memo(({
70
87
  };
71
88
  if (isText && lines > 1) {
72
89
  return /*#__PURE__*/_jsx(View, {
73
- style: [styles.lines, style],
90
+ style: style,
74
91
  testID: testID,
75
92
  ...a11y,
76
93
  children: Array.from({
@@ -1 +1 @@
1
- {"version":3,"names":["React","memo","useEffect","useRef","Animated","Easing","View","createStyles","useTheme","jsx","_jsx","useStyles","theme","block","backgroundColor","colors","skeleton","lines","gap","tokens","spacing","sm","Skeleton","width","height","variant","radius","lastLineWidth","animated","style","testID","styles","pulse","Value","current","loop","sequence","timing","toValue","duration","useNativeDriver","easing","inOut","quad","start","stop","isCircle","isText","opacity","interpolate","inputRange","outputRange","resolvedHeight","fontSize","md","resolvedRadius","full","xs","barStyle","barWidth","borderRadius","a11y","accessibilityElementsHidden","importantForAccessibility","children","Array","from","length","_","i","displayName"],"sourceRoot":"../../../src","sources":["atoms/Skeleton.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","memo","useEffect","useRef","Animated","Easing","View","createStyles","useTheme","useReduceMotion","jsx","_jsx","PULSE_HALF_MS","useStyles","theme","block","backgroundColor","colors","skeleton","textLine","marginVertical","tokens","lineHeight","md","fontSize","Skeleton","width","height","variant","radius","lines","lastLineWidth","animated","style","testID","styles","reduceMotion","pulsing","pulse","Value","current","loop","sequence","timing","toValue","duration","useNativeDriver","easing","inOut","quad","start","stop","setValue","isCircle","isText","opacity","interpolate","inputRange","outputRange","resolvedHeight","resolvedRadius","full","xs","sm","barStyle","barWidth","borderRadius","a11y","accessibilityElementsHidden","importantForAccessibility","children","Array","from","length","_","i","displayName"],"sourceRoot":"../../../src","sources":["atoms/Skeleton.tsx"],"mappings":"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","ignoreList":[]}
@@ -3,8 +3,13 @@
3
3
  import React, { memo, useEffect, useRef } from 'react';
4
4
  import { ActivityIndicator, Animated, Easing, Text, View } from 'react-native';
5
5
  import { createStyles } from '../theme/createStyles';
6
- import { useAllowFontScaling, useColors } from '../theme/UIProvider';
6
+ import { useAllowFontScaling, useColors, useLabels } from '../theme/UIProvider';
7
7
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
+ // Rhythm of the looping indicators. They are not UI transitions (those use
9
+ // theme.tokens.duration): they are the pulse of a continuous animation.
10
+ const DOT_PULSE_MS = 320;
11
+ const DOT_STAGGER_MS = 140;
12
+ const RING_TURN_MS = 900;
8
13
  const useStyles = createStyles(theme => ({
9
14
  container: {
10
15
  justifyContent: 'center',
@@ -16,33 +21,36 @@ const useStyles = createStyles(theme => ({
16
21
  color: theme.colors.textLight,
17
22
  fontSize: theme.tokens.fontSize.md
18
23
  },
24
+ logo: {
25
+ marginBottom: theme.tokens.spacing.xl
26
+ },
19
27
  dots: {
20
28
  flexDirection: 'row',
21
29
  gap: theme.tokens.spacing.sm
22
30
  }
23
31
  }));
24
32
 
25
- /** Tres puntos que laten en secuencia. Animated + useNativeDriver: corre en el hilo nativo. */
33
+ /** Three dots that pulse in sequence. Animated + useNativeDriver: runs on the native thread. */
26
34
  const DotsIndicator = /*#__PURE__*/memo(({
27
35
  color,
28
36
  dotSize
29
37
  }) => {
30
38
  const dots = [useRef(new Animated.Value(0)).current, useRef(new Animated.Value(0)).current, useRef(new Animated.Value(0)).current];
31
39
  useEffect(() => {
32
- const animations = dots.map((dot, i) => Animated.loop(Animated.sequence([Animated.delay(i * 140), Animated.timing(dot, {
40
+ const animations = dots.map((dot, i) => Animated.loop(Animated.sequence([Animated.delay(i * DOT_STAGGER_MS), Animated.timing(dot, {
33
41
  toValue: 1,
34
- duration: 320,
42
+ duration: DOT_PULSE_MS,
35
43
  useNativeDriver: true,
36
44
  easing: Easing.out(Easing.quad)
37
45
  }), Animated.timing(dot, {
38
46
  toValue: 0,
39
- duration: 320,
47
+ duration: DOT_PULSE_MS,
40
48
  useNativeDriver: true,
41
49
  easing: Easing.in(Easing.quad)
42
- }), Animated.delay((2 - i) * 140)])));
50
+ }), Animated.delay((2 - i) * DOT_STAGGER_MS)])));
43
51
  animations.forEach(a => a.start());
44
- // Sin stop() los loops siguen corriendo tras desmontar y mantienen vivo
45
- // el árbol de Animated.
52
+ // Without stop() the loops keep running after unmount and keep the
53
+ // Animated tree alive.
46
54
  return () => animations.forEach(a => a.stop());
47
55
  }, []);
48
56
  return /*#__PURE__*/_jsx(View, {
@@ -72,7 +80,12 @@ const DotsIndicator = /*#__PURE__*/memo(({
72
80
  });
73
81
  DotsIndicator.displayName = 'DotsIndicator';
74
82
 
75
- /** Anillo que gira: un borde con un solo lado coloreado. */
83
+ /**
84
+ * Spinning ring: a faint fixed track and, on top, an arc (a single side of
85
+ * the border) that spins. The track uses `opacity` instead of appending alpha
86
+ * to the color (`color + '33'`), which only worked with 6-digit hex and broke
87
+ * with `rgb()` or color names.
88
+ */
76
89
  const RingIndicator = /*#__PURE__*/memo(({
77
90
  color,
78
91
  diameter
@@ -81,31 +94,64 @@ const RingIndicator = /*#__PURE__*/memo(({
81
94
  useEffect(() => {
82
95
  const animation = Animated.loop(Animated.timing(spin, {
83
96
  toValue: 1,
84
- duration: 900,
97
+ duration: RING_TURN_MS,
85
98
  useNativeDriver: true,
86
99
  easing: Easing.linear
87
100
  }));
88
101
  animation.start();
89
102
  return () => animation.stop();
90
103
  }, []);
91
- return /*#__PURE__*/_jsx(Animated.View, {
104
+ const ring = {
105
+ width: diameter,
106
+ height: diameter,
107
+ borderRadius: diameter / 2,
108
+ borderWidth: Math.max(2, diameter / 10)
109
+ };
110
+ return /*#__PURE__*/_jsxs(View, {
92
111
  style: {
93
112
  width: diameter,
94
- height: diameter,
95
- borderRadius: diameter / 2,
96
- borderWidth: Math.max(2, diameter / 10),
97
- borderColor: color + '33',
98
- borderTopColor: color,
99
- transform: [{
100
- rotate: spin.interpolate({
101
- inputRange: [0, 1],
102
- outputRange: ['0deg', '360deg']
103
- })
113
+ height: diameter
114
+ },
115
+ children: [/*#__PURE__*/_jsx(View, {
116
+ style: [ring, {
117
+ position: 'absolute',
118
+ borderColor: color,
119
+ opacity: 0.2
104
120
  }]
105
- }
121
+ }), /*#__PURE__*/_jsx(Animated.View, {
122
+ style: [ring, {
123
+ borderColor: 'transparent',
124
+ borderTopColor: color,
125
+ transform: [{
126
+ rotate: spin.interpolate({
127
+ inputRange: [0, 1],
128
+ outputRange: ['0deg', '360deg']
129
+ })
130
+ }]
131
+ }]
132
+ })]
106
133
  });
107
134
  });
108
135
  RingIndicator.displayName = 'RingIndicator';
136
+
137
+ /**
138
+ * Spinner
139
+ * Indeterminate loading indicator, with optional text below.
140
+ *
141
+ * Gestalt:
142
+ * - Common fate: the three `dots` pulse in sequence, at the same rhythm, and
143
+ * read as a single indicator moving forward.
144
+ * - Proximity: the text sits `spacing.md` from the indicator, so it reads as
145
+ * its explanation and not as loose text on the screen. The `logo` sits
146
+ * further away (`spacing.xl`): it is the screen's brand, not part of the indicator.
147
+ * - Focal point: with `logo`, the logo is the first thing seen and the
148
+ * indicator stays as a secondary signal that the app is loading.
149
+ *
150
+ * Accessibility: it is announced as a busy `progressbar`, with `text` (or
151
+ * `labels.loading`) as its name. The animation doesn't stop with Reduce
152
+ * Motion: it is the signal that something is happening, like the system's
153
+ * ActivityIndicator.
154
+ */
109
155
  export const Spinner = /*#__PURE__*/memo(({
110
156
  size = 'large',
111
157
  color,
@@ -113,9 +159,12 @@ export const Spinner = /*#__PURE__*/memo(({
113
159
  fullscreen = true,
114
160
  variant = 'native',
115
161
  indicator,
162
+ logo,
163
+ accessibilityLabel,
116
164
  testID
117
165
  }) => {
118
166
  const colors = useColors();
167
+ const labels = useLabels();
119
168
  const styles = useStyles();
120
169
  const allowFontScaling = useAllowFontScaling();
121
170
  const resolvedColor = color || colors.primary;
@@ -140,7 +189,17 @@ export const Spinner = /*#__PURE__*/memo(({
140
189
  flex: 1
141
190
  }],
142
191
  testID: testID,
143
- children: [renderIndicator(), text && /*#__PURE__*/_jsx(Text, {
192
+ accessible: true,
193
+ accessibilityRole: "progressbar",
194
+ accessibilityLabel: accessibilityLabel ?? (text || labels.loading),
195
+ accessibilityState: {
196
+ busy: true
197
+ },
198
+ accessibilityLiveRegion: "polite",
199
+ children: [logo != null && /*#__PURE__*/_jsx(View, {
200
+ style: styles.logo,
201
+ children: logo
202
+ }), renderIndicator(), !!text && /*#__PURE__*/_jsx(Text, {
144
203
  allowFontScaling: allowFontScaling,
145
204
  style: styles.text,
146
205
  children: text
@@ -1 +1 @@
1
- {"version":3,"names":["React","memo","useEffect","useRef","ActivityIndicator","Animated","Easing","Text","View","createStyles","useAllowFontScaling","useColors","jsx","_jsx","jsxs","_jsxs","useStyles","theme","container","justifyContent","alignItems","padding","tokens","spacing","xl","text","marginTop","md","color","colors","textLight","fontSize","dots","flexDirection","gap","sm","DotsIndicator","dotSize","Value","current","animations","map","dot","i","loop","sequence","delay","timing","toValue","duration","useNativeDriver","easing","out","quad","in","forEach","a","start","stop","style","children","width","height","borderRadius","backgroundColor","opacity","interpolate","inputRange","outputRange","transform","scale","displayName","RingIndicator","diameter","spin","animation","linear","borderWidth","Math","max","borderColor","borderTopColor","rotate","Spinner","size","fullscreen","variant","indicator","testID","styles","allowFontScaling","resolvedColor","primary","renderIndicator","flex"],"sourceRoot":"../../../src","sources":["atoms/Spinner.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","memo","useEffect","useRef","ActivityIndicator","Animated","Easing","Text","View","createStyles","useAllowFontScaling","useColors","useLabels","jsx","_jsx","jsxs","_jsxs","DOT_PULSE_MS","DOT_STAGGER_MS","RING_TURN_MS","useStyles","theme","container","justifyContent","alignItems","padding","tokens","spacing","xl","text","marginTop","md","color","colors","textLight","fontSize","logo","marginBottom","dots","flexDirection","gap","sm","DotsIndicator","dotSize","Value","current","animations","map","dot","i","loop","sequence","delay","timing","toValue","duration","useNativeDriver","easing","out","quad","in","forEach","a","start","stop","style","children","width","height","borderRadius","backgroundColor","opacity","interpolate","inputRange","outputRange","transform","scale","displayName","RingIndicator","diameter","spin","animation","linear","ring","borderWidth","Math","max","position","borderColor","borderTopColor","rotate","Spinner","size","fullscreen","variant","indicator","accessibilityLabel","testID","labels","styles","allowFontScaling","resolvedColor","primary","renderIndicator","flex","accessible","accessibilityRole","loading","accessibilityState","busy","accessibilityLiveRegion"],"sourceRoot":"../../../src","sources":["atoms/Spinner.tsx"],"mappings":"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","ignoreList":[]}
@@ -8,13 +8,15 @@ import { jsx as _jsx } from "react/jsx-runtime";
8
8
  const useStyles = createStyles(theme => ({
9
9
  title: {
10
10
  fontSize: theme.tokens.fontSize.xxl,
11
+ lineHeight: theme.tokens.lineHeight.xl,
11
12
  fontWeight: theme.tokens.fontWeight.bold,
12
- letterSpacing: -0.5,
13
+ letterSpacing: theme.tokens.letterSpacing.tight,
13
14
  color: theme.colors.text
14
15
  },
15
16
  subtitle: {
16
17
  fontSize: theme.tokens.fontSize.lg,
17
- fontWeight: theme.tokens.fontWeight.medium,
18
+ lineHeight: theme.tokens.lineHeight.lg,
19
+ fontWeight: theme.tokens.fontWeight.semibold,
18
20
  color: theme.colors.text
19
21
  },
20
22
  body: {
@@ -24,10 +26,11 @@ const useStyles = createStyles(theme => ({
24
26
  },
25
27
  caption: {
26
28
  fontSize: theme.tokens.fontSize.sm,
29
+ lineHeight: theme.tokens.lineHeight.sm,
27
30
  color: theme.colors.textLight
28
31
  }
29
32
  }));
30
- function makeVariant(variant, defaultColor) {
33
+ function makeVariant(variant, defaultColor, defaultRole) {
31
34
  const Component = /*#__PURE__*/memo(({
32
35
  children,
33
36
  style,
@@ -40,6 +43,7 @@ function makeVariant(variant, defaultColor) {
40
43
  const allowFontScaling = useAllowFontScaling();
41
44
  return /*#__PURE__*/_jsx(RNText, {
42
45
  allowFontScaling: allowFontScaling,
46
+ accessibilityRole: defaultRole,
43
47
  style: [styles[variant], {
44
48
  color: color || colors[defaultColor],
45
49
  textAlign: align
@@ -48,11 +52,58 @@ function makeVariant(variant, defaultColor) {
48
52
  children: children
49
53
  });
50
54
  });
51
- Component.displayName = variant;
55
+ Component.displayName = String(variant);
52
56
  return Component;
53
57
  }
54
- export const Title = makeVariant('title', 'text');
58
+
59
+ /**
60
+ * Screen or section title: the highest step of the typographic hierarchy.
61
+ *
62
+ * Gestalt, focal point (Von Restorff): it is the only text in its block with
63
+ * size `xxl` and weight `bold`, so it breaks the series of Body/Caption and is
64
+ * the first thing read. That is why there should be only one per block: two
65
+ * Titles together cancel each other out. The `tight` tracking offsets the room
66
+ * the large size opens between letters so the word reads as a single shape
67
+ * (Prägnanz), and `lineHeight.xl` keeps the block compact when the title wraps.
68
+ *
69
+ * Accessibility: it is announced with `accessibilityRole="header"`, so
70
+ * VoiceOver/TalkBack can jump from title to title. It can be overridden by
71
+ * passing a different `accessibilityRole`.
72
+ */
73
+ export const Title = makeVariant('title', 'text', 'header');
74
+ /**
75
+ * Second step of the hierarchy: heads a group within the screen or
76
+ * accompanies a Title with a short piece of data.
77
+ *
78
+ * Gestalt, similarity: it shares its color with Body but steps up size (`lg`)
79
+ * and weight (`semibold`), so it is perceived as part of the same family and,
80
+ * at the same time, as the label of the block that follows. Proximity: it
81
+ * should sit closer to the content it heads than to the previous block. It is
82
+ * not an accessibility heading: if it marks a navigable section, use Title (or
83
+ * pass `accessibilityRole="header"`).
84
+ * `lineHeight.lg` (1.5×) keeps the text legible when it spans several lines.
85
+ */
55
86
  export const Subtitle = makeVariant('subtitle', 'text');
87
+ /**
88
+ * Running text: the default style for paragraphs, descriptions and values.
89
+ *
90
+ * Gestalt, similarity: all reading content shares size (`md`), regular weight
91
+ * and the `text` color, so it is perceived as a single level and the steps
92
+ * above (Title, Subtitle) and below (Caption) stand out by contrast.
93
+ * `lineHeight.md` (≈1.43×) gives the room between lines to read long
94
+ * paragraphs. If `color` is passed, the color/background pair must meet WCAG
95
+ * AA (4.5:1); the theme colors already guarantee it.
96
+ */
56
97
  export const Body = makeVariant('body', 'text');
98
+ /**
99
+ * Secondary text: hints, metadata, dates, help below a field.
100
+ *
101
+ * Gestalt, figure and ground: size `sm` and color `textLight` bring it one
102
+ * step below Body, so it reads as context and doesn't compete with the
103
+ * content. Proximity: it sits right next to the element it explains.
104
+ * `textLight` meets WCAG AA over `surface` and `background` in light and dark
105
+ * (palettes tests); don't lighten it further. `lineHeight.sm` (≈1.33×) keeps
106
+ * the lines together when the hint spans several.
107
+ */
57
108
  export const Caption = makeVariant('caption', 'textLight');
58
109
  //# sourceMappingURL=Text.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","memo","Text","RNText","createStyles","useAllowFontScaling","useColors","jsx","_jsx","useStyles","theme","title","fontSize","tokens","xxl","fontWeight","bold","letterSpacing","color","colors","text","subtitle","lg","medium","body","md","lineHeight","caption","sm","textLight","makeVariant","variant","defaultColor","Component","children","style","align","props","styles","allowFontScaling","textAlign","displayName","Title","Subtitle","Body","Caption"],"sourceRoot":"../../../src","sources":["atoms/Text.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,IAAI,QAAQ,OAAO;AACnC,SAASC,IAAI,IAAIC,MAAM,QAAwD,cAAc;AAC7F,SAASC,YAAY,QAAQ,uBAAuB;AACpD,SAASC,mBAAmB,EAAEC,SAAS,QAAQ,qBAAqB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AASrE,MAAMC,SAAS,GAAGL,YAAY,CAAEM,KAAK,KAAM;EACzCC,KAAK,EAAE;IACLC,QAAQ,EAAEF,KAAK,CAACG,MAAM,CAACD,QAAQ,CAACE,GAAG;IACnCC,UAAU,EAAEL,KAAK,CAACG,MAAM,CAACE,UAAU,CAACC,IAAI;IACxCC,aAAa,EAAE,CAAC,GAAG;IACnBC,KAAK,EAAER,KAAK,CAACS,MAAM,CAACC;EACtB,CAAC;EACDC,QAAQ,EAAE;IACRT,QAAQ,EAAEF,KAAK,CAACG,MAAM,CAACD,QAAQ,CAACU,EAAE;IAClCP,UAAU,EAAEL,KAAK,CAACG,MAAM,CAACE,UAAU,CAACQ,MAAM;IAC1CL,KAAK,EAAER,KAAK,CAACS,MAAM,CAACC;EACtB,CAAC;EACDI,IAAI,EAAE;IACJZ,QAAQ,EAAEF,KAAK,CAACG,MAAM,CAACD,QAAQ,CAACa,EAAE;IAClCC,UAAU,EAAEhB,KAAK,CAACG,MAAM,CAACa,UAAU,CAACD,EAAE;IACtCP,KAAK,EAAER,KAAK,CAACS,MAAM,CAACC;EACtB,CAAC;EACDO,OAAO,EAAE;IACPf,QAAQ,EAAEF,KAAK,CAACG,MAAM,CAACD,QAAQ,CAACgB,EAAE;IAClCV,KAAK,EAAER,KAAK,CAACS,MAAM,CAACU;EACtB;AACF,CAAC,CAAC,CAAC;AAEH,SAASC,WAAWA,CAACC,OAA2C,EAAEC,YAAkC,EAAE;EACpG,MAAMC,SAAS,gBAAGhC,IAAI,CAAC,CAAC;IAAEiC,QAAQ;IAAEC,KAAK;IAAEjB,KAAK;IAAEkB,KAAK,GAAG,MAAM;IAAE,GAAGC;EAAuB,CAAC,KAAK;IAChG,MAAMC,MAAM,GAAG7B,SAAS,CAAC,CAAC;IAC1B,MAAMU,MAAM,GAAGb,SAAS,CAAC,CAAC;IAC1B,MAAMiC,gBAAgB,GAAGlC,mBAAmB,CAAC,CAAC;IAC9C,oBACEG,IAAA,CAACL,MAAM;MACLoC,gBAAgB,EAAEA,gBAAiB;MACnCJ,KAAK,EAAE,CAACG,MAAM,CAACP,OAAO,CAAC,EAAE;QAAEb,KAAK,EAAEA,KAAK,IAAIC,MAAM,CAACa,YAAY,CAAC;QAAEQ,SAAS,EAAEJ;MAAM,CAAC,EAAED,KAAK,CAAE;MAAA,GACxFE,KAAK;MAAAH,QAAA,EAERA;IAAQ,CACH,CAAC;EAEb,CAAC,CAAC;EACFD,SAAS,CAACQ,WAAW,GAAGV,OAAO;EAC/B,OAAOE,SAAS;AAClB;AAEA,OAAO,MAAMS,KAAK,GAAGZ,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC;AACjD,OAAO,MAAMa,QAAQ,GAAGb,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC;AACvD,OAAO,MAAMc,IAAI,GAAGd,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;AAC/C,OAAO,MAAMe,OAAO,GAAGf,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","memo","Text","RNText","createStyles","useAllowFontScaling","useColors","jsx","_jsx","useStyles","theme","title","fontSize","tokens","xxl","lineHeight","xl","fontWeight","bold","letterSpacing","tight","color","colors","text","subtitle","lg","semibold","body","md","caption","sm","textLight","makeVariant","variant","defaultColor","defaultRole","Component","children","style","align","props","styles","allowFontScaling","accessibilityRole","textAlign","displayName","String","Title","Subtitle","Body","Caption"],"sourceRoot":"../../../src","sources":["atoms/Text.tsx"],"mappings":"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","ignoreList":[]}