@webority/mobile-ui 0.1.0 → 0.2.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 (405) hide show
  1. package/lib/commonjs/components/BottomSheet/BottomSheet.js +1 -1
  2. package/lib/commonjs/components/Button/Button.js +1 -1
  3. package/lib/commonjs/components/Confetti/Confetti.js +1 -1
  4. package/lib/commonjs/components/Drawer/Drawer.js +1 -1
  5. package/lib/commonjs/components/ImageGallery/ImageGallery.js +1 -1
  6. package/lib/commonjs/components/SlideToConfirm/SlideToConfirm.js +1 -1
  7. package/lib/commonjs/components/Slider/Slider.js +1 -1
  8. package/lib/commonjs/components/Swipeable/Swipeable.js +1 -1
  9. package/lib/commonjs/components/ZoomableImage/ZoomableImage.js +1 -1
  10. package/lib/module/components/Accordion/Accordion.js +1 -1
  11. package/lib/module/components/Accordion/index.js +1 -1
  12. package/lib/module/components/AmountSlider/AmountSlider.js +1 -1
  13. package/lib/module/components/AmountSlider/index.js +1 -1
  14. package/lib/module/components/AnimatePresence/AnimatePresence.js +1 -1
  15. package/lib/module/components/AnimatePresence/index.js +1 -1
  16. package/lib/module/components/AppBar/AppBar.js +1 -1
  17. package/lib/module/components/AppBar/index.js +1 -1
  18. package/lib/module/components/AppIcon/AppIcon.js +1 -1
  19. package/lib/module/components/AppIcon/catalog/bold/a.g.js +1 -1
  20. package/lib/module/components/AppIcon/catalog/bold/b.g.js +1 -1
  21. package/lib/module/components/AppIcon/catalog/bold/c.g.js +1 -1
  22. package/lib/module/components/AppIcon/catalog/bold/d.g.js +1 -1
  23. package/lib/module/components/AppIcon/catalog/bold/e.g.js +1 -1
  24. package/lib/module/components/AppIcon/catalog/bold/f.g.js +1 -1
  25. package/lib/module/components/AppIcon/catalog/bold/g.g.js +1 -1
  26. package/lib/module/components/AppIcon/catalog/bold/h.g.js +1 -1
  27. package/lib/module/components/AppIcon/catalog/bold/i.g.js +1 -1
  28. package/lib/module/components/AppIcon/catalog/bold/j.g.js +1 -1
  29. package/lib/module/components/AppIcon/catalog/bold/k.g.js +1 -1
  30. package/lib/module/components/AppIcon/catalog/bold/l.g.js +1 -1
  31. package/lib/module/components/AppIcon/catalog/bold/m.g.js +1 -1
  32. package/lib/module/components/AppIcon/catalog/bold/n.g.js +1 -1
  33. package/lib/module/components/AppIcon/catalog/bold/o.g.js +1 -1
  34. package/lib/module/components/AppIcon/catalog/bold/p.g.js +1 -1
  35. package/lib/module/components/AppIcon/catalog/bold/q.g.js +1 -1
  36. package/lib/module/components/AppIcon/catalog/bold/r.g.js +1 -1
  37. package/lib/module/components/AppIcon/catalog/bold/s.g.js +1 -1
  38. package/lib/module/components/AppIcon/catalog/bold/t.g.js +1 -1
  39. package/lib/module/components/AppIcon/catalog/bold/u.g.js +1 -1
  40. package/lib/module/components/AppIcon/catalog/bold/v.g.js +1 -1
  41. package/lib/module/components/AppIcon/catalog/bold/w.g.js +1 -1
  42. package/lib/module/components/AppIcon/catalog/bold/x.g.js +1 -1
  43. package/lib/module/components/AppIcon/catalog/bold/y.g.js +1 -1
  44. package/lib/module/components/AppIcon/catalog/bold/z.g.js +1 -1
  45. package/lib/module/components/AppIcon/catalog/broken/a.g.js +1 -1
  46. package/lib/module/components/AppIcon/catalog/broken/b.g.js +1 -1
  47. package/lib/module/components/AppIcon/catalog/broken/c.g.js +1 -1
  48. package/lib/module/components/AppIcon/catalog/broken/d.g.js +1 -1
  49. package/lib/module/components/AppIcon/catalog/broken/e.g.js +1 -1
  50. package/lib/module/components/AppIcon/catalog/broken/f.g.js +1 -1
  51. package/lib/module/components/AppIcon/catalog/broken/g.g.js +1 -1
  52. package/lib/module/components/AppIcon/catalog/broken/h.g.js +1 -1
  53. package/lib/module/components/AppIcon/catalog/broken/i.g.js +1 -1
  54. package/lib/module/components/AppIcon/catalog/broken/j.g.js +1 -1
  55. package/lib/module/components/AppIcon/catalog/broken/k.g.js +1 -1
  56. package/lib/module/components/AppIcon/catalog/broken/l.g.js +1 -1
  57. package/lib/module/components/AppIcon/catalog/broken/m.g.js +1 -1
  58. package/lib/module/components/AppIcon/catalog/broken/n.g.js +1 -1
  59. package/lib/module/components/AppIcon/catalog/broken/o.g.js +1 -1
  60. package/lib/module/components/AppIcon/catalog/broken/p.g.js +1 -1
  61. package/lib/module/components/AppIcon/catalog/broken/q.g.js +1 -1
  62. package/lib/module/components/AppIcon/catalog/broken/r.g.js +1 -1
  63. package/lib/module/components/AppIcon/catalog/broken/s.g.js +1 -1
  64. package/lib/module/components/AppIcon/catalog/broken/t.g.js +1 -1
  65. package/lib/module/components/AppIcon/catalog/broken/u.g.js +1 -1
  66. package/lib/module/components/AppIcon/catalog/broken/v.g.js +1 -1
  67. package/lib/module/components/AppIcon/catalog/broken/w.g.js +1 -1
  68. package/lib/module/components/AppIcon/catalog/broken/x.g.js +1 -1
  69. package/lib/module/components/AppIcon/catalog/broken/y.g.js +1 -1
  70. package/lib/module/components/AppIcon/catalog/broken/z.g.js +1 -1
  71. package/lib/module/components/AppIcon/catalog/bulk/a.g.js +1 -1
  72. package/lib/module/components/AppIcon/catalog/bulk/b.g.js +1 -1
  73. package/lib/module/components/AppIcon/catalog/bulk/c.g.js +1 -1
  74. package/lib/module/components/AppIcon/catalog/bulk/d.g.js +1 -1
  75. package/lib/module/components/AppIcon/catalog/bulk/e.g.js +1 -1
  76. package/lib/module/components/AppIcon/catalog/bulk/f.g.js +1 -1
  77. package/lib/module/components/AppIcon/catalog/bulk/g.g.js +1 -1
  78. package/lib/module/components/AppIcon/catalog/bulk/h.g.js +1 -1
  79. package/lib/module/components/AppIcon/catalog/bulk/i.g.js +1 -1
  80. package/lib/module/components/AppIcon/catalog/bulk/j.g.js +1 -1
  81. package/lib/module/components/AppIcon/catalog/bulk/k.g.js +1 -1
  82. package/lib/module/components/AppIcon/catalog/bulk/l.g.js +1 -1
  83. package/lib/module/components/AppIcon/catalog/bulk/m.g.js +1 -1
  84. package/lib/module/components/AppIcon/catalog/bulk/n.g.js +1 -1
  85. package/lib/module/components/AppIcon/catalog/bulk/o.g.js +1 -1
  86. package/lib/module/components/AppIcon/catalog/bulk/p.g.js +1 -1
  87. package/lib/module/components/AppIcon/catalog/bulk/q.g.js +1 -1
  88. package/lib/module/components/AppIcon/catalog/bulk/r.g.js +1 -1
  89. package/lib/module/components/AppIcon/catalog/bulk/s.g.js +1 -1
  90. package/lib/module/components/AppIcon/catalog/bulk/t.g.js +1 -1
  91. package/lib/module/components/AppIcon/catalog/bulk/u.g.js +1 -1
  92. package/lib/module/components/AppIcon/catalog/bulk/v.g.js +1 -1
  93. package/lib/module/components/AppIcon/catalog/bulk/w.g.js +1 -1
  94. package/lib/module/components/AppIcon/catalog/bulk/x.g.js +1 -1
  95. package/lib/module/components/AppIcon/catalog/bulk/y.g.js +1 -1
  96. package/lib/module/components/AppIcon/catalog/bulk/z.g.js +1 -1
  97. package/lib/module/components/AppIcon/catalog/linear/a.g.js +1 -1
  98. package/lib/module/components/AppIcon/catalog/linear/b.g.js +1 -1
  99. package/lib/module/components/AppIcon/catalog/linear/c.g.js +1 -1
  100. package/lib/module/components/AppIcon/catalog/linear/d.g.js +1 -1
  101. package/lib/module/components/AppIcon/catalog/linear/e.g.js +1 -1
  102. package/lib/module/components/AppIcon/catalog/linear/f.g.js +1 -1
  103. package/lib/module/components/AppIcon/catalog/linear/g.g.js +1 -1
  104. package/lib/module/components/AppIcon/catalog/linear/h.g.js +1 -1
  105. package/lib/module/components/AppIcon/catalog/linear/i.g.js +1 -1
  106. package/lib/module/components/AppIcon/catalog/linear/j.g.js +1 -1
  107. package/lib/module/components/AppIcon/catalog/linear/k.g.js +1 -1
  108. package/lib/module/components/AppIcon/catalog/linear/l.g.js +1 -1
  109. package/lib/module/components/AppIcon/catalog/linear/m.g.js +1 -1
  110. package/lib/module/components/AppIcon/catalog/linear/n.g.js +1 -1
  111. package/lib/module/components/AppIcon/catalog/linear/o.g.js +1 -1
  112. package/lib/module/components/AppIcon/catalog/linear/p.g.js +1 -1
  113. package/lib/module/components/AppIcon/catalog/linear/q.g.js +1 -1
  114. package/lib/module/components/AppIcon/catalog/linear/r.g.js +1 -1
  115. package/lib/module/components/AppIcon/catalog/linear/s.g.js +1 -1
  116. package/lib/module/components/AppIcon/catalog/linear/t.g.js +1 -1
  117. package/lib/module/components/AppIcon/catalog/linear/u.g.js +1 -1
  118. package/lib/module/components/AppIcon/catalog/linear/v.g.js +1 -1
  119. package/lib/module/components/AppIcon/catalog/linear/w.g.js +1 -1
  120. package/lib/module/components/AppIcon/catalog/linear/x.g.js +1 -1
  121. package/lib/module/components/AppIcon/catalog/linear/y.g.js +1 -1
  122. package/lib/module/components/AppIcon/catalog/linear/z.g.js +1 -1
  123. package/lib/module/components/AppIcon/catalog/outline/a.g.js +1 -1
  124. package/lib/module/components/AppIcon/catalog/outline/b.g.js +1 -1
  125. package/lib/module/components/AppIcon/catalog/outline/c.g.js +1 -1
  126. package/lib/module/components/AppIcon/catalog/outline/d.g.js +1 -1
  127. package/lib/module/components/AppIcon/catalog/outline/e.g.js +1 -1
  128. package/lib/module/components/AppIcon/catalog/outline/f.g.js +1 -1
  129. package/lib/module/components/AppIcon/catalog/outline/g.g.js +1 -1
  130. package/lib/module/components/AppIcon/catalog/outline/h.g.js +1 -1
  131. package/lib/module/components/AppIcon/catalog/outline/i.g.js +1 -1
  132. package/lib/module/components/AppIcon/catalog/outline/j.g.js +1 -1
  133. package/lib/module/components/AppIcon/catalog/outline/k.g.js +1 -1
  134. package/lib/module/components/AppIcon/catalog/outline/l.g.js +1 -1
  135. package/lib/module/components/AppIcon/catalog/outline/m.g.js +1 -1
  136. package/lib/module/components/AppIcon/catalog/outline/n.g.js +1 -1
  137. package/lib/module/components/AppIcon/catalog/outline/o.g.js +1 -1
  138. package/lib/module/components/AppIcon/catalog/outline/p.g.js +1 -1
  139. package/lib/module/components/AppIcon/catalog/outline/q.g.js +1 -1
  140. package/lib/module/components/AppIcon/catalog/outline/r.g.js +1 -1
  141. package/lib/module/components/AppIcon/catalog/outline/s.g.js +1 -1
  142. package/lib/module/components/AppIcon/catalog/outline/t.g.js +1 -1
  143. package/lib/module/components/AppIcon/catalog/outline/u.g.js +1 -1
  144. package/lib/module/components/AppIcon/catalog/outline/v.g.js +1 -1
  145. package/lib/module/components/AppIcon/catalog/outline/w.g.js +1 -1
  146. package/lib/module/components/AppIcon/catalog/outline/x.g.js +1 -1
  147. package/lib/module/components/AppIcon/catalog/outline/y.g.js +1 -1
  148. package/lib/module/components/AppIcon/catalog/outline/z.g.js +1 -1
  149. package/lib/module/components/AppIcon/catalog/twotone/a.g.js +1 -1
  150. package/lib/module/components/AppIcon/catalog/twotone/b.g.js +1 -1
  151. package/lib/module/components/AppIcon/catalog/twotone/c.g.js +1 -1
  152. package/lib/module/components/AppIcon/catalog/twotone/d.g.js +1 -1
  153. package/lib/module/components/AppIcon/catalog/twotone/e.g.js +1 -1
  154. package/lib/module/components/AppIcon/catalog/twotone/f.g.js +1 -1
  155. package/lib/module/components/AppIcon/catalog/twotone/g.g.js +1 -1
  156. package/lib/module/components/AppIcon/catalog/twotone/h.g.js +1 -1
  157. package/lib/module/components/AppIcon/catalog/twotone/i.g.js +1 -1
  158. package/lib/module/components/AppIcon/catalog/twotone/j.g.js +1 -1
  159. package/lib/module/components/AppIcon/catalog/twotone/k.g.js +1 -1
  160. package/lib/module/components/AppIcon/catalog/twotone/l.g.js +1 -1
  161. package/lib/module/components/AppIcon/catalog/twotone/m.g.js +1 -1
  162. package/lib/module/components/AppIcon/catalog/twotone/n.g.js +1 -1
  163. package/lib/module/components/AppIcon/catalog/twotone/o.g.js +1 -1
  164. package/lib/module/components/AppIcon/catalog/twotone/p.g.js +1 -1
  165. package/lib/module/components/AppIcon/catalog/twotone/q.g.js +1 -1
  166. package/lib/module/components/AppIcon/catalog/twotone/r.g.js +1 -1
  167. package/lib/module/components/AppIcon/catalog/twotone/s.g.js +1 -1
  168. package/lib/module/components/AppIcon/catalog/twotone/t.g.js +1 -1
  169. package/lib/module/components/AppIcon/catalog/twotone/u.g.js +1 -1
  170. package/lib/module/components/AppIcon/catalog/twotone/v.g.js +1 -1
  171. package/lib/module/components/AppIcon/catalog/twotone/w.g.js +1 -1
  172. package/lib/module/components/AppIcon/catalog/twotone/x.g.js +1 -1
  173. package/lib/module/components/AppIcon/catalog/twotone/y.g.js +1 -1
  174. package/lib/module/components/AppIcon/catalog/twotone/z.g.js +1 -1
  175. package/lib/module/components/AppIcon/catalog.g.js +1 -1
  176. package/lib/module/components/AppIcon/defaultIcons.js +1 -1
  177. package/lib/module/components/AppIcon/glyphs.g.js +1 -1
  178. package/lib/module/components/AppIcon/index.js +1 -1
  179. package/lib/module/components/AppIcon/slotIcon.js +1 -1
  180. package/lib/module/components/AppIcon/variants.g.js +1 -1
  181. package/lib/module/components/AsyncBlock/AsyncBlock.js +1 -1
  182. package/lib/module/components/AsyncBlock/index.js +1 -1
  183. package/lib/module/components/AuthedImage/AuthedImage.js +1 -1
  184. package/lib/module/components/AuthedImage/authedImageCache.js +1 -1
  185. package/lib/module/components/AuthedImage/index.js +1 -1
  186. package/lib/module/components/Autocomplete/Autocomplete.js +1 -1
  187. package/lib/module/components/Autocomplete/index.js +1 -1
  188. package/lib/module/components/Avatar/Avatar.js +1 -1
  189. package/lib/module/components/Avatar/index.js +1 -1
  190. package/lib/module/components/Badge/Badge.js +1 -1
  191. package/lib/module/components/Badge/index.js +1 -1
  192. package/lib/module/components/Banner/Banner.js +1 -1
  193. package/lib/module/components/Banner/index.js +1 -1
  194. package/lib/module/components/BottomNavigation/BottomNavigation.js +1 -1
  195. package/lib/module/components/BottomNavigation/index.js +1 -1
  196. package/lib/module/components/BottomSheet/BottomSheet.js +1 -1
  197. package/lib/module/components/BottomSheet/index.js +1 -1
  198. package/lib/module/components/Box/Box.js +1 -1
  199. package/lib/module/components/Box/index.js +1 -1
  200. package/lib/module/components/Button/Button.js +1 -1
  201. package/lib/module/components/Button/index.js +1 -1
  202. package/lib/module/components/Card/Card.js +1 -1
  203. package/lib/module/components/Card/index.js +1 -1
  204. package/lib/module/components/Carousel/Carousel.js +1 -1
  205. package/lib/module/components/Carousel/index.js +1 -1
  206. package/lib/module/components/Checkbox/Checkbox.js +1 -1
  207. package/lib/module/components/Checkbox/index.js +1 -1
  208. package/lib/module/components/Chip/Chip.js +1 -1
  209. package/lib/module/components/Chip/index.js +1 -1
  210. package/lib/module/components/ChoiceGroup/ChoiceGroup.js +1 -1
  211. package/lib/module/components/ChoiceGroup/index.js +1 -1
  212. package/lib/module/components/Confetti/Confetti.js +1 -1
  213. package/lib/module/components/Confetti/index.js +1 -1
  214. package/lib/module/components/DatePicker/DatePicker.js +1 -1
  215. package/lib/module/components/DatePicker/index.js +1 -1
  216. package/lib/module/components/DateRangePicker/DateRangePicker.js +1 -1
  217. package/lib/module/components/DateRangePicker/index.js +1 -1
  218. package/lib/module/components/DecimalInput/DecimalInput.js +1 -1
  219. package/lib/module/components/DecimalInput/index.js +1 -1
  220. package/lib/module/components/Descriptions/Descriptions.js +1 -1
  221. package/lib/module/components/Descriptions/index.js +1 -1
  222. package/lib/module/components/Dialog/Dialog.js +1 -1
  223. package/lib/module/components/Dialog/index.js +1 -1
  224. package/lib/module/components/Divider/Divider.js +1 -1
  225. package/lib/module/components/Divider/index.js +1 -1
  226. package/lib/module/components/Drawer/Drawer.js +1 -1
  227. package/lib/module/components/Drawer/index.js +1 -1
  228. package/lib/module/components/EmptyState/EmptyState.js +1 -1
  229. package/lib/module/components/EmptyState/index.js +1 -1
  230. package/lib/module/components/ErrorBoundary/ErrorBoundary.js +1 -1
  231. package/lib/module/components/ErrorBoundary/index.js +1 -1
  232. package/lib/module/components/ErrorBoundary/useErrorHandler.js +1 -1
  233. package/lib/module/components/ErrorBoundary/withErrorBoundary.js +1 -1
  234. package/lib/module/components/FieldBase/Chevron.js +1 -1
  235. package/lib/module/components/FieldBase/ChoiceText.js +1 -1
  236. package/lib/module/components/FieldBase/FieldBase.js +1 -1
  237. package/lib/module/components/FieldBase/index.js +1 -1
  238. package/lib/module/components/FieldBase/useFloatingLabel.js +1 -1
  239. package/lib/module/components/FilePicker/FilePicker.js +1 -1
  240. package/lib/module/components/FilePicker/index.js +1 -1
  241. package/lib/module/components/FileViewer/FileViewer.js +1 -1
  242. package/lib/module/components/FileViewer/index.js +1 -1
  243. package/lib/module/components/FloatingActionButton/FloatingActionButton.js +1 -1
  244. package/lib/module/components/FloatingActionButton/index.js +1 -1
  245. package/lib/module/components/ForceUpdateDialog/ForceUpdateDialog.js +1 -1
  246. package/lib/module/components/ForceUpdateDialog/index.js +1 -1
  247. package/lib/module/components/FormField/FormField.js +1 -1
  248. package/lib/module/components/FormField/index.js +1 -1
  249. package/lib/module/components/IconBadge/IconBadge.js +1 -1
  250. package/lib/module/components/IconBadge/index.js +1 -1
  251. package/lib/module/components/IconButton/IconButton.js +1 -1
  252. package/lib/module/components/IconButton/index.js +1 -1
  253. package/lib/module/components/ImageGallery/ImageGallery.js +1 -1
  254. package/lib/module/components/ImageGallery/index.js +1 -1
  255. package/lib/module/components/InlineSelect/InlineSelect.js +1 -1
  256. package/lib/module/components/InlineSelect/index.js +1 -1
  257. package/lib/module/components/Input/Input.js +1 -1
  258. package/lib/module/components/Input/index.js +1 -1
  259. package/lib/module/components/KeyboardAwareScrollView/KeyboardAwareScrollView.js +1 -1
  260. package/lib/module/components/KeyboardAwareScrollView/index.js +1 -1
  261. package/lib/module/components/KeyboardToolbar/KeyboardToolbar.js +1 -1
  262. package/lib/module/components/KeyboardToolbar/index.js +1 -1
  263. package/lib/module/components/ListItem/ListItem.js +1 -1
  264. package/lib/module/components/ListItem/index.js +1 -1
  265. package/lib/module/components/LoaderOverlay/LoaderOverlay.js +1 -1
  266. package/lib/module/components/LoaderOverlay/index.js +1 -1
  267. package/lib/module/components/Markdown/Markdown.js +1 -1
  268. package/lib/module/components/Markdown/index.js +1 -1
  269. package/lib/module/components/Markdown/parse.js +1 -1
  270. package/lib/module/components/Modal/Modal.js +1 -1
  271. package/lib/module/components/Modal/index.js +1 -1
  272. package/lib/module/components/Notation/Notation.js +1 -1
  273. package/lib/module/components/Notation/index.js +1 -1
  274. package/lib/module/components/NumberInput/NumberInput.js +1 -1
  275. package/lib/module/components/NumberInput/index.js +1 -1
  276. package/lib/module/components/OTPInput/OTPInput.js +1 -1
  277. package/lib/module/components/OTPInput/index.js +1 -1
  278. package/lib/module/components/OptionSheet/OptionSheet.js +1 -1
  279. package/lib/module/components/OptionSheet/index.js +1 -1
  280. package/lib/module/components/PhoneNumberInput/PhoneNumberInput.js +1 -1
  281. package/lib/module/components/PhoneNumberInput/index.js +1 -1
  282. package/lib/module/components/PickerTrigger/PickerTrigger.js +1 -1
  283. package/lib/module/components/PickerTrigger/index.js +1 -1
  284. package/lib/module/components/ProfileCompletion/ProfileCompletion.js +1 -1
  285. package/lib/module/components/ProfileCompletion/index.js +1 -1
  286. package/lib/module/components/ProfilePicker/ProfilePicker.js +1 -1
  287. package/lib/module/components/ProfilePicker/index.js +1 -1
  288. package/lib/module/components/ProgressBar/ProgressBar.js +1 -1
  289. package/lib/module/components/ProgressBar/index.js +1 -1
  290. package/lib/module/components/ProgressRing/ProgressRing.js +1 -1
  291. package/lib/module/components/ProgressRing/index.js +1 -1
  292. package/lib/module/components/Radio/Radio.js +1 -1
  293. package/lib/module/components/Radio/RadioDot.js +1 -1
  294. package/lib/module/components/Radio/RadioGroup.js +1 -1
  295. package/lib/module/components/Radio/index.js +1 -1
  296. package/lib/module/components/Rating/Rating.js +1 -1
  297. package/lib/module/components/Rating/index.js +1 -1
  298. package/lib/module/components/Repeater/Repeater.js +1 -1
  299. package/lib/module/components/Repeater/index.js +1 -1
  300. package/lib/module/components/RichTextEditor/RichTextEditor.js +1 -1
  301. package/lib/module/components/RichTextEditor/index.js +1 -1
  302. package/lib/module/components/RichTextEditor/markdownActions.js +1 -1
  303. package/lib/module/components/SearchBar/SearchBar.js +1 -1
  304. package/lib/module/components/SearchBar/index.js +1 -1
  305. package/lib/module/components/SectionHeader/SectionHeader.js +1 -1
  306. package/lib/module/components/SectionHeader/index.js +1 -1
  307. package/lib/module/components/SegmentedControl/SegmentedControl.js +1 -1
  308. package/lib/module/components/SegmentedControl/index.js +1 -1
  309. package/lib/module/components/Select/Select.js +1 -1
  310. package/lib/module/components/Select/index.js +1 -1
  311. package/lib/module/components/Skeleton/Skeleton.js +1 -1
  312. package/lib/module/components/Skeleton/SkeletonClock.js +1 -1
  313. package/lib/module/components/Skeleton/SkeletonContent.js +1 -1
  314. package/lib/module/components/Skeleton/SkeletonList.js +1 -1
  315. package/lib/module/components/Skeleton/SkeletonProvider.js +1 -1
  316. package/lib/module/components/Skeleton/SkeletonSkip.js +1 -1
  317. package/lib/module/components/Skeleton/index.js +1 -1
  318. package/lib/module/components/SlideToConfirm/SlideToConfirm.js +1 -1
  319. package/lib/module/components/SlideToConfirm/index.js +1 -1
  320. package/lib/module/components/Slider/Slider.js +1 -1
  321. package/lib/module/components/Slider/index.js +1 -1
  322. package/lib/module/components/Slider/valueText.js +1 -1
  323. package/lib/module/components/SliderField/SliderField.js +1 -1
  324. package/lib/module/components/SliderField/index.js +1 -1
  325. package/lib/module/components/Spinner/Spinner.js +1 -1
  326. package/lib/module/components/Spinner/index.js +1 -1
  327. package/lib/module/components/SquircleFill/SquircleFill.js +1 -1
  328. package/lib/module/components/StatTile/StatTile.js +1 -1
  329. package/lib/module/components/StatTile/index.js +1 -1
  330. package/lib/module/components/StatusBadge/StatusBadge.js +1 -1
  331. package/lib/module/components/StatusBadge/index.js +1 -1
  332. package/lib/module/components/Stepper/Stepper.js +1 -1
  333. package/lib/module/components/Stepper/index.js +1 -1
  334. package/lib/module/components/Swipeable/Swipeable.js +1 -1
  335. package/lib/module/components/Swipeable/index.js +1 -1
  336. package/lib/module/components/Switch/Switch.js +1 -1
  337. package/lib/module/components/Switch/index.js +1 -1
  338. package/lib/module/components/Tabs/Tabs.js +1 -1
  339. package/lib/module/components/Tabs/index.js +1 -1
  340. package/lib/module/components/TagInput/TagInput.js +1 -1
  341. package/lib/module/components/TagInput/index.js +1 -1
  342. package/lib/module/components/Text/Text.js +1 -1
  343. package/lib/module/components/Text/index.js +1 -1
  344. package/lib/module/components/TimePicker/TimePicker.js +1 -1
  345. package/lib/module/components/TimePicker/index.js +1 -1
  346. package/lib/module/components/Timeline/Timeline.js +1 -1
  347. package/lib/module/components/Timeline/index.js +1 -1
  348. package/lib/module/components/Toast/Toast.js +1 -1
  349. package/lib/module/components/Toast/ToastProvider.js +1 -1
  350. package/lib/module/components/Toast/index.js +1 -1
  351. package/lib/module/components/Tooltip/Tooltip.js +1 -1
  352. package/lib/module/components/Tooltip/index.js +1 -1
  353. package/lib/module/components/Tour/Tour.js +1 -1
  354. package/lib/module/components/Tour/index.js +1 -1
  355. package/lib/module/components/ZoomableImage/ZoomableImage.js +1 -1
  356. package/lib/module/components/ZoomableImage/index.js +1 -1
  357. package/lib/module/components/index.js +1 -1
  358. package/lib/module/form/FormContext.js +1 -1
  359. package/lib/module/form/HookFormField.js +1 -1
  360. package/lib/module/form/equal.js +1 -1
  361. package/lib/module/form/index.js +1 -1
  362. package/lib/module/form/path.js +1 -1
  363. package/lib/module/form/rules.js +1 -1
  364. package/lib/module/form/types.js +1 -0
  365. package/lib/module/form/useField.js +1 -1
  366. package/lib/module/form/useForm.js +1 -1
  367. package/lib/module/form/useFormCompletion.js +1 -1
  368. package/lib/module/form/useHookFormField.js +1 -1
  369. package/lib/module/hooks/index.js +1 -1
  370. package/lib/module/hooks/useControllableState.js +1 -1
  371. package/lib/module/hooks/useDebounce.js +1 -1
  372. package/lib/module/hooks/useDragToDismiss.js +1 -1
  373. package/lib/module/hooks/useFlickGuard.js +1 -1
  374. package/lib/module/hooks/usePressAnimation.js +1 -1
  375. package/lib/module/hooks/useReducedMotion.js +1 -1
  376. package/lib/module/hooks/useToggle.js +1 -1
  377. package/lib/module/index.js +1 -1
  378. package/lib/module/initUI.js +1 -1
  379. package/lib/module/network/NetworkStatusBanner.js +1 -1
  380. package/lib/module/network/index.js +1 -1
  381. package/lib/module/specs/NativePdfRasterizer.js +1 -1
  382. package/lib/module/theme/Gradient.js +1 -1
  383. package/lib/module/theme/ThemeContext.js +1 -1
  384. package/lib/module/theme/animatedValue.js +1 -1
  385. package/lib/module/theme/index.js +1 -1
  386. package/lib/module/theme/merge.js +1 -1
  387. package/lib/module/theme/textStyle.js +1 -1
  388. package/lib/module/theme/tokens.js +1 -1
  389. package/lib/module/theme/types.js +1 -1
  390. package/lib/module/utils/color.js +1 -1
  391. package/lib/module/utils/corners.js +1 -1
  392. package/lib/module/utils/dimensions.js +1 -1
  393. package/lib/module/utils/feedback.js +1 -1
  394. package/lib/module/utils/hapticUtils.js +1 -1
  395. package/lib/module/utils/hashString.js +1 -1
  396. package/lib/module/utils/index.js +1 -1
  397. package/lib/module/utils/mergeRefs.js +1 -1
  398. package/lib/module/utils/responsive.js +1 -1
  399. package/lib/module/utils/shadows.js +1 -1
  400. package/lib/module/utils/spacing.js +1 -1
  401. package/lib/module/utils/squircle.js +1 -1
  402. package/lib/module/utils/warnUnknownProps.js +1 -1
  403. package/lib/typescript/commonjs/components/Button/Button.d.ts +5 -0
  404. package/lib/typescript/module/components/Button/Button.d.ts +5 -0
  405. package/package.json +2 -2
@@ -1 +1 @@
1
- import{forwardRef as e,useMemo as t}from"react";import{StyleSheet as r,Text as i,View as o}from"react-native";import{useTheme as n}from"../../theme/index.js";import{jsx as l,jsxs as a}from"react/jsx-runtime";const s=e((e,r)=>{const{orientation:s="horizontal",thickness:c=1,color:m,spacing:g="none",inset:h=0,label:f,labelPosition:d="center",style:p,testID:u}=e,y=n(),b=m??y.colors.border.primary,z=((e,t)=>{switch(t){case"sm":return e.spacing.sm;case"md":return e.spacing.md;case"lg":return e.spacing.lg;default:return 0}})(y,g),x=t(()=>buildStyles(y),[y]);if("vertical"===s)return l(o,{ref:r,accessibilityRole:"none",testID:u,style:[x.vertical,{width:c,backgroundColor:b,marginHorizontal:z,marginTop:h},p]});if(f){const e="start"===d?0:1,t="end"===d?0:1;return a(o,{ref:r,accessibilityRole:"none",testID:u,style:[x.horizontalRow,{marginVertical:z,marginLeft:h},p],children:[e>0?l(o,{style:[x.horizontalLine,{height:c,backgroundColor:b,flex:e}]}):null,l(i,{style:x.label,numberOfLines:1,children:f}),t>0?l(o,{style:[x.horizontalLine,{height:c,backgroundColor:b,flex:t}]}):null]})}return l(o,{ref:r,accessibilityRole:"none",testID:u,style:[x.horizontalLine,{height:c,backgroundColor:b,marginVertical:z,marginLeft:h},p]})});s.displayName="Divider";const buildStyles=e=>r.create({horizontalRow:{flexDirection:"row",alignItems:"center",width:"100%"},horizontalLine:{width:"100%",alignSelf:"stretch"},vertical:{alignSelf:"stretch"},label:{marginHorizontal:e.spacing.sm,color:e.colors.text.tertiary,fontSize:e.typography.fontSize.sm,fontWeight:e.typography.fontWeight.medium}});export{s as Divider};export default s;
1
+ "use strict";import{forwardRef,useMemo}from"react";import{StyleSheet,Text,View}from"react-native";import{useTheme}from"../../theme/index.js";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";const spacingFor=(e,t)=>{switch(t){case"sm":return e.spacing.sm;case"md":return e.spacing.md;case"lg":return e.spacing.lg;default:return 0}},Divider=forwardRef((e,t)=>{const{orientation:i="horizontal",thickness:r=1,color:o,spacing:n="none",inset:s=0,label:l,labelPosition:a="center",style:c,testID:m}=e,h=useTheme(),g=o??h.colors.border.primary,d=spacingFor(h,n),f=useMemo(()=>buildStyles(h),[h]);if("vertical"===i)return _jsx(View,{ref:t,accessibilityRole:"none",testID:m,style:[f.vertical,{width:r,backgroundColor:g,marginHorizontal:d,marginTop:s},c]});if(l){const e="start"===a?0:1,i="end"===a?0:1;return _jsxs(View,{ref:t,accessibilityRole:"none",testID:m,style:[f.horizontalRow,{marginVertical:d,marginLeft:s},c],children:[e>0?_jsx(View,{style:[f.horizontalLine,{height:r,backgroundColor:g,flex:e}]}):null,_jsx(Text,{style:f.label,numberOfLines:1,children:l}),i>0?_jsx(View,{style:[f.horizontalLine,{height:r,backgroundColor:g,flex:i}]}):null]})}return _jsx(View,{ref:t,accessibilityRole:"none",testID:m,style:[f.horizontalLine,{height:r,backgroundColor:g,marginVertical:d,marginLeft:s},c]})});Divider.displayName="Divider";const buildStyles=e=>StyleSheet.create({horizontalRow:{flexDirection:"row",alignItems:"center",width:"100%"},horizontalLine:{width:"100%",alignSelf:"stretch"},vertical:{alignSelf:"stretch"},label:{marginHorizontal:e.spacing.sm,color:e.colors.text.tertiary,fontSize:e.typography.fontSize.sm,fontWeight:e.typography.fontWeight.medium}});export{Divider};export default Divider;
@@ -1 +1 @@
1
- export{Divider,default}from"./Divider.js";
1
+ "use strict";export{Divider,default}from"./Divider.js";
@@ -1 +1 @@
1
- import t,{forwardRef as e,useCallback as o,useEffect as a,useImperativeHandle as i,useMemo as r,useRef as n,useState as s}from"react";import{Dimensions as l,Pressable as c,StyleSheet as d,View as p}from"react-native";import{Gesture as u,GestureDetector as f}from"react-native-gesture-handler";import h,{Extrapolation as b,interpolate as g,runOnJS as m,useAnimatedStyle as v,useSharedValue as y,withSpring as w}from"react-native-reanimated";import{useSafeAreaInsets as x}from"react-native-safe-area-context";import{useTheme as M}from"../../theme/index.js";import{resolveHaptic as k,triggerHaptic as L}from"../../utils/index.js";import{jsx as O,jsxs as j}from"react/jsx-runtime";const C=e((t,e)=>{const{visible:C,defaultVisible:R=!1,onChange:V,side:X="left",width:Y,enableSwipe:B=!0,enableBackdropPress:D=!0,backdropOpacity:E=.5,haptic:F,containerStyle:N,children:P,accessibilityLabel:T,testID:I}=t,S=M(),A=x(),U="boolean"==typeof C,q=S.components.drawer,z=q?.closeVelocityThreshold??1e3,G=q?.dragActivationOffset??10,[H,J]=s(()=>l.get("window"));a(()=>{const t=l.addEventListener("change",({window:t})=>J(t));return()=>t.remove()},[]);const K="left"===X||"right"===X,Q=r(()=>resolveSize(Y,K,H),[Y,K,H]),W=r(()=>{switch(X){case"left":case"top":return-Q;case"right":case"bottom":return Q}},[X,Q]),Z=y(R?0:W),$=y(R?0:W),[_,tt]=s(R),et=y(R);a(()=>{_||(Z.value=W,$.value=W)},[W,_,Z,$]);const ot=S.motion.spring.snappy,at=o(()=>{Z.value=w(0,ot)},[Z,ot]),it=o(()=>{Z.value=w(W,ot)},[Z,W,ot]),rt=o(t=>{tt(e=>e===t?e:(V?.(t),t)),et.value=t},[V,et]),nt=o(()=>{rt(!0),at()},[rt,at]),st=o(()=>{rt(!1),it()},[rt,it]),lt=o(()=>{_?st():nt()},[_,nt,st]);i(e,()=>({open:nt,close:st,toggle:lt}),[nt,st,lt]),a(()=>{U&&C!==_&&(C?nt():st())},[C]);const ct=r(()=>{const t=W,e=X,o=B;let a=u.Pan();return a=K?a.activeOffsetX([-G,G]).failOffsetY([-15,15]):a.activeOffsetY([-G,G]).failOffsetX([-15,15]),a.onStart(()=>{o&&($.value=Z.value)}).onUpdate(e=>{if(!o)return;const a=K?e.translationX:e.translationY,i=$.value+a,r=Math.min(0,t),n=Math.max(0,t);Z.value=i<r?r+.25*(i-r):i>n?n+.25*(i-n):i}).onEnd(a=>{if(!o)return;const i=K?a.velocityX:a.velocityY,r=Z.value;let n=!1;n="left"===e||"top"===e?i<-z:i>z;const s=Math.abs(t),l=Math.abs(r)/s;n||l>.5?(m(rt)(!1),Z.value=w(t,ot)):(m(rt)(!0),Z.value=w(0,ot))})},[W,$,B,K,Z,rt,X,ot,z,G]),dt=v(()=>K?{transform:[{translateX:Z.value}]}:{transform:[{translateY:Z.value}]}),pt=v(()=>({opacity:g(Z.value,[W,0],[0,E],b.CLAMP),pointerEvents:Math.abs(Z.value-W)<.5?"none":"auto"}),[W,E]),ut=r(()=>buildStyles(S),[S]),ft=o(()=>{if(!D)return;const t=k(F,"selection");t&&L(t),st()},[D,st,F]),ht=r(()=>{switch(X){case"left":return{position:"absolute",top:0,bottom:0,left:0,width:Q,paddingTop:A.top,paddingBottom:A.bottom,paddingLeft:A.left};case"right":return{position:"absolute",top:0,bottom:0,right:0,width:Q,paddingTop:A.top,paddingBottom:A.bottom,paddingRight:A.right};case"top":return{position:"absolute",top:0,left:0,right:0,height:Q,paddingTop:A.top,paddingLeft:A.left,paddingRight:A.right};case"bottom":return{position:"absolute",bottom:0,left:0,right:0,height:Q,paddingBottom:A.bottom,paddingLeft:A.left,paddingRight:A.right}}},[X,Q,A]),bt=n(R);return _&&(bt.current=!0),bt.current?j(p,{style:d.absoluteFill,pointerEvents:"box-none",testID:I,accessibilityViewIsModal:_,children:[O(h.View,{style:[ut.backdrop,{backgroundColor:S.colors.background.overlay},pt],children:O(c,{style:d.absoluteFill,onPress:ft,accessibilityRole:"button",accessibilityLabel:"Close drawer",disabled:!D||!_})}),O(f,{gesture:ct,children:O(h.View,{accessibilityRole:"alert",accessibilityLabel:T??"Drawer",style:[ht,{backgroundColor:S.colors.background.elevated,...S.shadows.xl},N,dt],children:O(p,{style:ut.content,children:P})})})]}):null});C.displayName="Drawer";const resolveSize=(t,e,o)=>{if("number"==typeof t)return t;if("string"==typeof t){const a=parseFloat(t);if(Number.isNaN(a))return e?280:Math.round(.4*o.height);return a/100*(e?o.width:o.height)}return e?280:Math.round(.4*o.height)},buildStyles=t=>d.create({backdrop:{...d.absoluteFill},content:{flex:1}});export{C as Drawer};export default C;
1
+ "use strict";import React,{forwardRef,useCallback,useEffect,useImperativeHandle,useMemo,useRef,useState}from"react";import{Dimensions,Pressable,StyleSheet,View}from"react-native";import{Gesture,GestureDetector}from"react-native-gesture-handler";import Animated,{Extrapolation,interpolate,runOnJS,useAnimatedStyle,useSharedValue,withSpring}from"react-native-reanimated";import{useSafeAreaInsets}from"react-native-safe-area-context";import{useTheme}from"../../theme/index.js";import{resolveHaptic,triggerHaptic}from"../../utils/index.js";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";const DEFAULT_CLOSE_VELOCITY_THRESHOLD=1e3,DEFAULT_DRAG_ACTIVATION_OFFSET=10,Drawer=forwardRef((e,t)=>{const{visible:a,defaultVisible:r=!1,onChange:s,side:o="left",width:i,enableSwipe:l=!0,enableBackdropPress:n=!0,backdropOpacity:u=.5,haptic:c,containerStyle:d,children:p,accessibilityLabel:f,testID:h}=e,m=useTheme(),b=useSafeAreaInsets(),g="boolean"==typeof a,S=m.components.drawer,v=S?.closeVelocityThreshold??1e3,w=S?.dragActivationOffset??10,[y,x]=useState(()=>Dimensions.get("window"));useEffect(()=>{const e=Dimensions.addEventListener("change",({window:e})=>x(e));return()=>e.remove()},[]);const k="left"===o||"right"===o,D=useMemo(()=>resolveSize(i,k,y),[i,k,y]),C=useMemo(()=>{switch(o){case"left":case"top":return-D;case"right":case"bottom":return D}},[o,D]),E=useSharedValue(r?0:C),A=useSharedValue(r?0:C),[M,O]=useState(r),V=useSharedValue(r);useEffect(()=>{M||(E.value=C,A.value=C)},[C,M,E,A]);const _=m.motion.spring.snappy,j=useCallback(()=>{E.value=withSpring(0,_)},[E,_]),L=useCallback(()=>{E.value=withSpring(C,_)},[E,C,_]),T=useCallback(e=>{O(t=>t===e?t:(s?.(e),e)),V.value=e},[s,V]),R=useCallback(()=>{T(!0),j()},[T,j]),I=useCallback(()=>{T(!1),L()},[T,L]),F=useCallback(()=>{M?I():R()},[M,R,I]);useImperativeHandle(t,()=>({open:R,close:I,toggle:F}),[R,I,F]),useEffect(()=>{g&&a!==M&&(a?R():I())},[a]);const H=useMemo(()=>{const e=C,t=o,a=l;let r=Gesture.Pan();return r=k?r.activeOffsetX([-w,w]).failOffsetY([-15,15]):r.activeOffsetY([-w,w]).failOffsetX([-15,15]),r.onStart(()=>{"worklet";a&&(A.value=E.value)}).onUpdate(t=>{"worklet";if(!a)return;const r=k?t.translationX:t.translationY,s=A.value+r,o=Math.min(0,e),i=Math.max(0,e);E.value=s<o?o+.25*(s-o):s>i?i+.25*(s-i):s}).onEnd(r=>{"worklet";if(!a)return;const s=k?r.velocityX:r.velocityY,o=E.value;let i=!1;i="left"===t||"top"===t?s<-v:s>v;const l=Math.abs(e),n=Math.abs(o)/l;i||n>.5?(runOnJS(T)(!1),E.value=withSpring(e,_)):(runOnJS(T)(!0),E.value=withSpring(0,_))})},[C,A,l,k,E,T,o,_,v,w]),P=useAnimatedStyle(()=>k?{transform:[{translateX:E.value}]}:{transform:[{translateY:E.value}]}),Y=useAnimatedStyle(()=>({opacity:interpolate(E.value,[C,0],[0,u],Extrapolation.CLAMP),pointerEvents:Math.abs(E.value-C)<.5?"none":"auto"}),[C,u]),G=useMemo(()=>buildStyles(m),[m]),N=useCallback(()=>{if(!n)return;const e=resolveHaptic(c,"selection");e&&triggerHaptic(e),I()},[n,I,c]),X=useMemo(()=>{switch(o){case"left":return{position:"absolute",top:0,bottom:0,left:0,width:D,paddingTop:b.top,paddingBottom:b.bottom,paddingLeft:b.left};case"right":return{position:"absolute",top:0,bottom:0,right:0,width:D,paddingTop:b.top,paddingBottom:b.bottom,paddingRight:b.right};case"top":return{position:"absolute",top:0,left:0,right:0,height:D,paddingTop:b.top,paddingLeft:b.left,paddingRight:b.right};case"bottom":return{position:"absolute",bottom:0,left:0,right:0,height:D,paddingBottom:b.bottom,paddingLeft:b.left,paddingRight:b.right}}},[o,D,b]),B=useRef(r);return M&&(B.current=!0),B.current?_jsxs(View,{style:StyleSheet.absoluteFill,pointerEvents:"box-none",testID:h,accessibilityViewIsModal:M,children:[_jsx(Animated.View,{style:[G.backdrop,{backgroundColor:m.colors.background.overlay},Y],children:_jsx(Pressable,{style:StyleSheet.absoluteFill,onPress:N,accessibilityRole:"button",accessibilityLabel:"Close drawer",disabled:!n||!M})}),_jsx(GestureDetector,{gesture:H,children:_jsx(Animated.View,{accessibilityRole:"alert",accessibilityLabel:f??"Drawer",style:[X,{backgroundColor:m.colors.background.elevated,...m.shadows.xl},d,P],children:_jsx(View,{style:G.content,children:p})})})]}):null});Drawer.displayName="Drawer";const resolveSize=(e,t,a)=>{if("number"==typeof e)return e;if("string"==typeof e){const r=parseFloat(e);if(Number.isNaN(r))return t?280:Math.round(.4*a.height);return r/100*(t?a.width:a.height)}return t?280:Math.round(.4*a.height)},buildStyles=e=>StyleSheet.create({backdrop:{...StyleSheet.absoluteFill},content:{flex:1}});export{Drawer};export default Drawer;
@@ -1 +1 @@
1
- export{Drawer,default}from"./Drawer.js";
1
+ "use strict";export{Drawer,default}from"./Drawer.js";
@@ -1 +1 @@
1
- import e,{forwardRef as t,useMemo as i}from"react";import{Animated as r,Pressable as o,StyleSheet as n,Text as s,View as l}from"react-native";import{usePressAnimation as a}from"../../hooks/usePressAnimation.js";import{fontFor as c,useTheme as d}from"../../theme/index.js";import{smoothCorners as p}from"../../utils/corners.js";import{triggerHaptic as u}from"../../utils/hapticUtils.js";import{SquircleFill as m,useSquircle as y}from"../SquircleFill/SquircleFill.js";import{jsx as b,Fragment as g,jsxs as S}from"react/jsx-runtime";const f={sm:{iconSize:48,titleFontSize:"lg",descriptionFontSize:"sm",paddingVertical:"lg"},md:{iconSize:64,titleFontSize:"xl",descriptionFontSize:"base",paddingVertical:"xl"},lg:{iconSize:80,titleFontSize:"2xl",descriptionFontSize:"base",paddingVertical:"2xl"}},ActionButton=({action:e,variant:t})=>{const n=d(),{scale:l,pressIn:c,pressOut:p}=a({enabled:!0}),f=i(()=>buildActionStyles(n),[n]),z="primary"===t,h=y(!0,n.radius.md),fillFor=e=>z?n.colors.primary:e?n.colors.surface.pressed:"transparent";return b(r.View,{style:{transform:[{scale:l}]},children:b(o,{onPress:()=>{u("selection"),e.onPress()},onPressIn:c,onPressOut:p,accessibilityRole:"button",accessibilityLabel:e.accessibilityLabel??e.label,accessibilityHint:e.accessibilityHint,testID:e.testID,onLayout:h.onLayout,android_ripple:{color:z?n.colors.primaryHover:n.colors.surface.pressed,borderless:!1},style:({pressed:e})=>[f.button,z?f.buttonPrimary:f.buttonSecondary,!e||z||h.active?null:f.buttonSecondaryPressed,h.active?f.buttonSquircleHost:null],children:({pressed:t})=>S(g,{children:[h.active&&h.size?b(m,{width:h.size.width,height:h.size.height,radius:n.radius.md,fill:fillFor(t),stroke:z?void 0:n.colors.border.primary,strokeWidth:z?0:1,outset:z?0:1}):null,b(s,{style:[f.buttonText,z?f.buttonTextPrimary:f.buttonTextSecondary],numberOfLines:1,children:e.label})]})})})},z=t((e,t)=>{const{icon:r,title:o,description:n,action:a,secondaryAction:u,size:m="md",fill:y=!1,style:g,testID:z}=e,h=d(),x=i(()=>((e,t)=>{const i={...f[t],...e.components.emptyState?.[t]??{}};return{iconSize:i.iconSize,titleSize:e.typography.fontSize[i.titleFontSize],descriptionSize:e.typography.fontSize[i.descriptionFontSize],paddingVertical:e.spacing[i.paddingVertical]}})(h,m),[h,m]),C=i(()=>buildStyles(h),[h]);return S(l,{ref:t,accessibilityRole:"summary",testID:z,style:[C.root,{paddingVertical:x.paddingVertical},y?C.fill:null,g],children:[r?b(l,{style:[C.iconCircle,{width:x.iconSize,height:x.iconSize,borderRadius:x.iconSize/2,...p}],children:r}):null,b(s,{style:[C.title,{fontSize:x.titleSize,...c(h,"semibold")}],children:o}),n?b(s,{style:[C.description,{fontSize:x.descriptionSize}],children:n}):null,a||u?S(l,{style:C.actions,children:[a?b(ActionButton,{action:a,variant:"primary"}):null,u?b(ActionButton,{action:u,variant:"secondary"}):null]}):null]})});z.displayName="EmptyState";const buildStyles=e=>n.create({root:{alignItems:"center",justifyContent:"center",paddingHorizontal:e.spacing.lg,gap:e.spacing.md},fill:{flexGrow:1},iconCircle:{backgroundColor:e.colors.surface.disabled,alignItems:"center",justifyContent:"center"},title:{color:e.colors.text.primary,textAlign:"center"},description:{color:e.colors.text.secondary,textAlign:"center",maxWidth:320,lineHeight:e.typography.fontSize.base*e.typography.lineHeight.normal},actions:{flexDirection:"row",alignItems:"center",gap:e.spacing.sm,marginTop:e.spacing.xs}}),buildActionStyles=e=>n.create({button:{paddingHorizontal:e.spacing.lg,paddingVertical:e.spacing.sm,minHeight:42,borderRadius:e.radius.md,...p,alignItems:"center",justifyContent:"center",flexDirection:"row"},buttonPrimary:{backgroundColor:e.colors.primary},buttonSecondary:{backgroundColor:"transparent",borderWidth:1,borderColor:e.colors.border.primary},buttonSecondaryPressed:{backgroundColor:e.colors.surface.pressed},buttonSquircleHost:{backgroundColor:"transparent",borderColor:"transparent",overflow:"visible"},buttonText:{fontSize:e.typography.fontSize.base,...c(e,"semibold")},buttonTextPrimary:{color:e.colors.onPrimary},buttonTextSecondary:{color:e.colors.text.primary}});export{z as EmptyState};export default z;
1
+ "use strict";import React,{forwardRef,useMemo}from"react";import{Animated,Pressable,StyleSheet,Text,View}from"react-native";import{usePressAnimation}from"../../hooks/usePressAnimation.js";import{fontFor,useTheme}from"../../theme/index.js";import{smoothCorners}from"../../utils/corners.js";import{triggerHaptic}from"../../utils/hapticUtils.js";import{SquircleFill,useSquircle}from"../SquircleFill/SquircleFill.js";import{jsx as _jsx,Fragment as _Fragment,jsxs as _jsxs}from"react/jsx-runtime";const SIZE_FALLBACK={sm:{iconSize:48,titleFontSize:"lg",descriptionFontSize:"sm",paddingVertical:"lg"},md:{iconSize:64,titleFontSize:"xl",descriptionFontSize:"base",paddingVertical:"xl"},lg:{iconSize:80,titleFontSize:"2xl",descriptionFontSize:"base",paddingVertical:"2xl"}},sizeFor=(e,t)=>{const i={...SIZE_FALLBACK[t],...e.components.emptyState?.[t]??{}};return{iconSize:i.iconSize,titleSize:e.typography.fontSize[i.titleFontSize],descriptionSize:e.typography.fontSize[i.descriptionFontSize],paddingVertical:e.spacing[i.paddingVertical]}},ActionButton=({action:e,variant:t})=>{const i=useTheme(),{scale:r,pressIn:o,pressOut:s}=usePressAnimation({enabled:!0}),n=useMemo(()=>buildActionStyles(i),[i]),l="primary"===t,a=useSquircle(!0,i.radius.md),fillFor=e=>l?i.colors.primary:e?i.colors.surface.pressed:"transparent";return _jsx(Animated.View,{style:{transform:[{scale:r}]},children:_jsx(Pressable,{onPress:()=>{triggerHaptic("selection"),e.onPress()},onPressIn:o,onPressOut:s,accessibilityRole:"button",accessibilityLabel:e.accessibilityLabel??e.label,accessibilityHint:e.accessibilityHint,testID:e.testID,onLayout:a.onLayout,android_ripple:{color:l?i.colors.primaryHover:i.colors.surface.pressed,borderless:!1},style:({pressed:e})=>[n.button,l?n.buttonPrimary:n.buttonSecondary,!e||l||a.active?null:n.buttonSecondaryPressed,a.active?n.buttonSquircleHost:null],children:({pressed:t})=>_jsxs(_Fragment,{children:[a.active&&a.size?_jsx(SquircleFill,{width:a.size.width,height:a.size.height,radius:i.radius.md,fill:fillFor(t),stroke:l?void 0:i.colors.border.primary,strokeWidth:l?0:1,outset:l?0:1}):null,_jsx(Text,{style:[n.buttonText,l?n.buttonTextPrimary:n.buttonTextSecondary],numberOfLines:1,children:e.label})]})})})},EmptyState=forwardRef((e,t)=>{const{icon:i,title:r,description:o,action:s,secondaryAction:n,size:l="md",fill:a=!1,style:c,testID:d}=e,u=useTheme(),m=useMemo(()=>sizeFor(u,l),[u,l]),p=useMemo(()=>buildStyles(u),[u]);return _jsxs(View,{ref:t,accessibilityRole:"summary",testID:d,style:[p.root,{paddingVertical:m.paddingVertical},a?p.fill:null,c],children:[i?_jsx(View,{style:[p.iconCircle,{width:m.iconSize,height:m.iconSize,borderRadius:m.iconSize/2,...smoothCorners}],children:i}):null,_jsx(Text,{style:[p.title,{fontSize:m.titleSize,...fontFor(u,"semibold")}],children:r}),o?_jsx(Text,{style:[p.description,{fontSize:m.descriptionSize}],children:o}):null,s||n?_jsxs(View,{style:p.actions,children:[s?_jsx(ActionButton,{action:s,variant:"primary"}):null,n?_jsx(ActionButton,{action:n,variant:"secondary"}):null]}):null]})});EmptyState.displayName="EmptyState";const buildStyles=e=>StyleSheet.create({root:{alignItems:"center",justifyContent:"center",paddingHorizontal:e.spacing.lg,gap:e.spacing.md},fill:{flexGrow:1},iconCircle:{backgroundColor:e.colors.surface.disabled,alignItems:"center",justifyContent:"center"},title:{color:e.colors.text.primary,textAlign:"center"},description:{color:e.colors.text.secondary,textAlign:"center",maxWidth:320,lineHeight:e.typography.fontSize.base*e.typography.lineHeight.normal},actions:{flexDirection:"row",alignItems:"center",gap:e.spacing.sm,marginTop:e.spacing.xs}}),buildActionStyles=e=>StyleSheet.create({button:{paddingHorizontal:e.spacing.lg,paddingVertical:e.spacing.sm,minHeight:42,borderRadius:e.radius.md,...smoothCorners,alignItems:"center",justifyContent:"center",flexDirection:"row"},buttonPrimary:{backgroundColor:e.colors.primary},buttonSecondary:{backgroundColor:"transparent",borderWidth:1,borderColor:e.colors.border.primary},buttonSecondaryPressed:{backgroundColor:e.colors.surface.pressed},buttonSquircleHost:{backgroundColor:"transparent",borderColor:"transparent",overflow:"visible"},buttonText:{fontSize:e.typography.fontSize.base,...fontFor(e,"semibold")},buttonTextPrimary:{color:e.colors.onPrimary},buttonTextSecondary:{color:e.colors.text.primary}});export{EmptyState};export default EmptyState;
@@ -1 +1 @@
1
- export{default,EmptyState}from"./EmptyState.js";
1
+ "use strict";export{default,EmptyState}from"./EmptyState.js";
@@ -1 +1 @@
1
- import{Logger as r}from"@webority/mobile-core";import e,{useMemo as t}from"react";import{StyleSheet as o,Text as s,View as n}from"react-native";import{useTheme as i}from"../../theme/index.js";import{EmptyState as a}from"../EmptyState/index.js";import{jsx as c,jsxs as p}from"react/jsx-runtime";const DefaultFallback=({error:r,reset:e,title:o,message:l,testID:m})=>{const d=i(),h=t(()=>buildStyles(d),[d]),g="undefined"!=typeof __DEV__&&__DEV__;return p(n,{style:h.root,testID:m,children:[c(a,{title:o??"Something went wrong",description:l??"An unexpected error occurred. Please try again.",action:{label:"Try again",onPress:e,testID:m?`${m}-retry`:void 0}}),g?c(s,{style:h.devError,testID:m?`${m}-dev-error`:void 0,children:r.message}):null]})},buildStyles=r=>o.create({root:{flex:1,alignItems:"center",justifyContent:"center",backgroundColor:r.colors.background.primary,padding:r.spacing.lg},devError:{marginTop:r.spacing.md,color:r.colors.error,fontSize:r.typography.fontSize.sm,textAlign:"center"}});export class ErrorBoundary extends e.Component{state={error:null};static getDerivedStateFromError(r){return{error:r}}componentDidUpdate(r){var e,t;!this.state.error||(e=r.resetKeys,t=this.props.resetKeys,e===t||e&&t&&e.length===t.length&&!e.some((r,e)=>r!==t[e]))||this.reset()}componentDidCatch(e,t){const o=(t.componentStack??"").slice(0,500);r.recordError(e,{errorType:"RenderError",componentStack:o});try{this.props.onError?.(e,{componentStack:o})}catch(e){r.error("[@webority/mobile-ui] ErrorBoundary onError threw; the boundary itself is unaffected.",e)}}reset=()=>{this.setState({error:null}),this.props.onReset?.()};render(){const{error:r}=this.state;if(!r)return this.props.children;const{fallback:e,title:t,message:o,testID:s}=this.props;return void 0!==e?"function"==typeof e?e(r,this.reset):e:c(DefaultFallback,{error:r,reset:this.reset,title:t,message:o,testID:s})}}
1
+ "use strict";import{Logger}from"@webority/mobile-core";import React,{useMemo}from"react";import{StyleSheet,Text,View}from"react-native";import{useTheme}from"../../theme/index.js";import{EmptyState}from"../EmptyState/index.js";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";const COMPONENT_STACK_LIMIT=500,DEFAULT_TITLE="Something went wrong",DEFAULT_MESSAGE="An unexpected error occurred. Please try again.",hasResetKeysChanged=(e,t)=>e!==t&&(!e||!t||e.length!==t.length||e.some((e,r)=>e!==t[r])),DefaultFallback=({error:e,reset:t,title:r,message:o,testID:s})=>{const n=useTheme(),i=useMemo(()=>buildStyles(n),[n]),a="undefined"!=typeof __DEV__&&__DEV__;return _jsxs(View,{style:i.root,testID:s,children:[_jsx(EmptyState,{title:r??DEFAULT_TITLE,description:o??DEFAULT_MESSAGE,action:{label:"Try again",onPress:t,testID:s?`${s}-retry`:void 0}}),a?_jsx(Text,{style:i.devError,testID:s?`${s}-dev-error`:void 0,children:e.message}):null]})},buildStyles=e=>StyleSheet.create({root:{flex:1,alignItems:"center",justifyContent:"center",backgroundColor:e.colors.background.primary,padding:e.spacing.lg},devError:{marginTop:e.spacing.md,color:e.colors.error,fontSize:e.typography.fontSize.sm,textAlign:"center"}});export class ErrorBoundary extends React.Component{state={error:null};static getDerivedStateFromError(e){return{error:e}}componentDidUpdate(e){this.state.error&&hasResetKeysChanged(e.resetKeys,this.props.resetKeys)&&this.reset()}componentDidCatch(e,t){const r=(t.componentStack??"").slice(0,500);Logger.recordError(e,{errorType:"RenderError",componentStack:r});try{this.props.onError?.(e,{componentStack:r})}catch(e){Logger.error("[@webority/mobile-ui] ErrorBoundary onError threw; the boundary itself is unaffected.",e)}}reset=()=>{this.setState({error:null}),this.props.onReset?.()};render(){const{error:e}=this.state;if(!e)return this.props.children;const{fallback:t,title:r,message:o,testID:s}=this.props;return void 0!==t?"function"==typeof t?t(e,this.reset):t:_jsx(DefaultFallback,{error:e,reset:this.reset,title:r,message:o,testID:s})}}
@@ -1 +1 @@
1
- export{ErrorBoundary}from"./ErrorBoundary.js";export{useErrorHandler}from"./useErrorHandler.js";export{withErrorBoundary}from"./withErrorBoundary.js";
1
+ "use strict";export{ErrorBoundary}from"./ErrorBoundary.js";export{useErrorHandler}from"./useErrorHandler.js";export{withErrorBoundary}from"./withErrorBoundary.js";
@@ -1 +1 @@
1
- import{useCallback as r,useState as o}from"react";export const useErrorHandler=()=>{const[,t]=o();return r(r=>{t(()=>{throw r instanceof Error?r:new Error(String(r))})},[])};
1
+ "use strict";import{useCallback,useState}from"react";export const useErrorHandler=()=>{const[,r]=useState();return useCallback(t=>{r(()=>{throw t instanceof Error?t:new Error(String(t))})},[])};
@@ -1 +1 @@
1
- import r from"react";import{ErrorBoundary as o}from"./ErrorBoundary.js";import{jsx as t}from"react/jsx-runtime";export const withErrorBoundary=(r,a)=>{const m=r.displayName??r.name??"Component",Wrapped=m=>t(o,{...a,children:t(r,{...m})});return Wrapped.displayName=`withErrorBoundary(${m})`,Wrapped};
1
+ "use strict";import React from"react";import{ErrorBoundary}from"./ErrorBoundary.js";import{jsx as _jsx}from"react/jsx-runtime";export const withErrorBoundary=(r,o)=>{const t=r.displayName??r.name??"Component",Wrapped=t=>_jsx(ErrorBoundary,{...o,children:_jsx(r,{...t})});return Wrapped.displayName=`withErrorBoundary(${t})`,Wrapped};
@@ -1 +1 @@
1
- import t,{useEffect as e,useRef as o}from"react";import{Animated as r,View as n}from"react-native";import{createAnimatedValue as i,useTheme as s}from"../../theme/index.js";import{defaultIcons as a}from"../AppIcon/defaultIcons.js";import{jsx as c}from"react/jsx-runtime";export const Chevron=({color:t,size:m,open:u,style:p})=>{const d=s(),f=o(i(u?1:0)).current;e(()=>{if(void 0===u)return;const t=r.timing(f,{toValue:u?1:0,duration:d.motion.duration.fast,useNativeDriver:!0});return t.start(),()=>t.stop()},[u,f,d.motion.duration.fast]);const l=(d.icons?.chevronDown??a.chevronDown)({size:m,color:t}),h={width:m,height:m,alignItems:"center",justifyContent:"center"};if(void 0===u)return c(n,{style:[h,p],children:l});const v=f.interpolate({inputRange:[0,1],outputRange:["0deg","180deg"]});return c(r.View,{style:[h,{transform:[{rotate:v}]},p],children:l})};export default Chevron;
1
+ "use strict";import React,{useEffect,useRef}from"react";import{Animated,View}from"react-native";import{createAnimatedValue,useTheme}from"../../theme/index.js";import{defaultIcons}from"../AppIcon/defaultIcons.js";import{jsx as _jsx}from"react/jsx-runtime";export const Chevron=({color:e,size:t,open:o,style:r})=>{const n=useTheme(),i=useRef(createAnimatedValue(o?1:0)).current;useEffect(()=>{if(void 0===o)return;const e=Animated.timing(i,{toValue:o?1:0,duration:n.motion.duration.fast,useNativeDriver:!0});return e.start(),()=>e.stop()},[o,i,n.motion.duration.fast]);const s=(n.icons?.chevronDown??defaultIcons.chevronDown)({size:t,color:e}),a={width:t,height:t,alignItems:"center",justifyContent:"center"};if(void 0===o)return _jsx(View,{style:[a,r],children:s});const c=i.interpolate({inputRange:[0,1],outputRange:["0deg","180deg"]});return _jsx(Animated.View,{style:[a,{transform:[{rotate:c}]},r],children:s})};export default Chevron;
@@ -1 +1 @@
1
- import{StyleSheet as e,Text as o,View as r}from"react-native";import{fontFor as l,useTheme as i}from"../../theme/index.js";import{FieldErrorGlyph as s,hasFieldText as n}from"./FieldBase.js";import{jsx as t,jsxs as c}from"react/jsx-runtime";export const hasChoiceDetail=(e,o)=>n(e)||n(o);export const ChoiceText=({label:e,description:m,error:p,disabled:d=!1,labelLines:f,descriptionLines:x,style:y,labelStyle:h})=>{const u=i();if(!n(e)&&!n(m)&&!n(p))return null;const g=u.typography.fontSize.sm;return c(r,{style:[a.column,y],children:[n(e)?t(o,{style:[{color:d?u.colors.text.disabled:u.colors.text.primary,fontSize:u.typography.fontSize.base,...l(u,"normal")},h],numberOfLines:f,children:e}):null,n(m)?t(o,{style:{color:d?u.colors.text.disabled:u.colors.text.secondary,fontSize:g,marginTop:u.spacing.xs/2,...l(u,"normal")},numberOfLines:x,children:m}):null,n(p)?c(r,{style:[a.errorRow,{marginTop:u.spacing.xs,columnGap:u.spacing.xs}],accessibilityLiveRegion:"polite",children:[t(s,{size:g,color:u.colors.field.message}),t(o,{style:{flexShrink:1,color:u.colors.field.message,fontSize:g,...l(u,"normal")},children:p})]}):null]})};const a=e.create({column:{flexShrink:1},errorRow:{flexDirection:"row",alignItems:"center"}});
1
+ "use strict";import{StyleSheet,Text,View}from"react-native";import{fontFor,useTheme}from"../../theme/index.js";import{FieldErrorGlyph,hasFieldText}from"./FieldBase.js";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";export const hasChoiceDetail=(e,s)=>hasFieldText(e)||hasFieldText(s);export const ChoiceText=({label:e,description:s,error:t,disabled:o=!1,labelLines:l,descriptionLines:r,style:i,labelStyle:n})=>{const a=useTheme();if(!hasFieldText(e)&&!hasFieldText(s)&&!hasFieldText(t))return null;const c=a.typography.fontSize.sm;return _jsxs(View,{style:[styles.column,i],children:[hasFieldText(e)?_jsx(Text,{style:[{color:o?a.colors.text.disabled:a.colors.text.primary,fontSize:a.typography.fontSize.base,...fontFor(a,"normal")},n],numberOfLines:l,children:e}):null,hasFieldText(s)?_jsx(Text,{style:{color:o?a.colors.text.disabled:a.colors.text.secondary,fontSize:c,marginTop:a.spacing.xs/2,...fontFor(a,"normal")},numberOfLines:r,children:s}):null,hasFieldText(t)?_jsxs(View,{style:[styles.errorRow,{marginTop:a.spacing.xs,columnGap:a.spacing.xs}],accessibilityLiveRegion:"polite",children:[_jsx(FieldErrorGlyph,{size:c,color:a.colors.field.message}),_jsx(Text,{style:{flexShrink:1,color:a.colors.field.message,fontSize:c,...fontFor(a,"normal")},children:t})]}):null]})};const styles=StyleSheet.create({column:{flexShrink:1},errorRow:{flexDirection:"row",alignItems:"center"}});
@@ -1 +1 @@
1
- import e,{useEffect as t,useMemo as o,useRef as r}from"react";import{Animated as i,Easing as l,Pressable as n,StyleSheet as d,Text as a,View as s}from"react-native";import{createAnimatedValue as c,fontFor as b,useTheme as g}from"../../theme/index.js";import{smoothCorners as p}from"../../utils/corners.js";import{defaultIcons as u}from"../AppIcon/defaultIcons.js";import{SquircleFill as h,useSquircle as m}from"../SquircleFill/SquircleFill.js";import{jsx as f,jsxs as z,Fragment as y}from"react/jsx-runtime";const expandColorSides=e=>"string"==typeof e?{top:e,right:e,bottom:e,left:e}:{top:e.top??"transparent",right:e.right??"transparent",bottom:e.bottom??"transparent",left:e.left??"transparent"};export const pickRepresentativeBorderColor=e=>{for(const t of["bottom","top","left","right"]){const o=e[t];if(o&&"transparent"!==o)return o}return e.bottom};export const resolveFieldTextStyle=(e,t={})=>{const{disabled:o=!1}=t,r=e.components.field,i=e.colors.field;return{color:o?r?.disabledTextColor??i.textDisabled:r?.textColor??i.text,placeholderColor:r?.placeholderColor??(o?i.placeholderDisabled:i.placeholder),weightStyle:r?.fontWeight?{fontWeight:r.fontWeight}:b(e,"normal")}};export const RequiredMark=()=>{const e=g(),t=e.components.field;return f(a,{style:{color:t?.requiredMarkerColor??e.colors.error},children:` ${t?.requiredMarker??"*"}`})};export const RequiredPlaceholder=({text:e,color:t,fontSize:o,weightStyle:r,align:i="center",paddingTop:l,textAlign:n})=>f(s,{pointerEvents:"none",style:[d.absoluteFill,{justifyContent:"top"===i?"flex-start":"center",paddingTop:l}],children:z(a,{accessible:!1,numberOfLines:1,style:{color:t,fontSize:o,...r,includeFontPadding:!1,textAlign:n},children:[e,f(RequiredMark,{})]})});export const FieldErrorGlyph=({size:e,color:t})=>{const o=g(),r=o.icons?.error??u.error;return f(y,{children:r({size:e,color:t})})};export const hasFieldText=e=>null!=e&&!1!==e&&!0!==e&&""!==e;export const fieldTextAsString=e=>"string"==typeof e?e:void 0;export const FieldLabel=({children:e,size:t="md",required:o=!1,help:r,color:i,style:l})=>{const n=g(),d=resolveFieldSize(n,t),c=hasFieldText(r),p=z(a,{style:[F.label,{color:i??n.colors.field.label,fontSize:d.labelFontSize,...b(n,"semibold"),marginBottom:c?0:d.labelGap},c?F.labelShrink:null,l],children:[e,o?f(RequiredMark,{}):null]});return c?z(s,{style:[F.labelRow,{marginBottom:d.labelGap}],children:[p,f(s,{style:[F.help,{marginLeft:n.spacing.xs}],children:r})]}):p};export const FieldMessage=({text:e,error:t=!1,size:o="md",style:r})=>{const i=g(),l=resolveFieldSize(i,o);if(!hasFieldText(e))return null;const n=t?i.colors.field.message:i.colors.text.secondary;return z(s,{style:[F.messageRow,{marginTop:l.messageGap,columnGap:i.spacing.xs+2}],accessibilityLiveRegion:t?"polite":"none",children:[t?f(FieldErrorGlyph,{size:l.messageFontSize,color:n}):null,f(a,{style:[F.messageText,{color:n,fontSize:l.messageFontSize,...b(i,"normal")},r],children:e})]})};const F=d.create({label:{includeFontPadding:!1},labelShrink:{flexShrink:1},labelRow:{flexDirection:"row",alignItems:"center"},help:{flexShrink:0,alignItems:"center",justifyContent:"center"},messageRow:{flexDirection:"row",alignItems:"center"},messageText:{flexShrink:1,includeFontPadding:!1}});export const resolveFieldSize=(e,t)=>{const o=e.components.field?.[t],r=S[t];return{paddingHorizontal:o?.paddingHorizontal??r.paddingHorizontal,paddingVertical:o?.paddingVertical??r.paddingVertical,minHeight:o?.minHeight??r.minHeight,fontSize:o?.fontSize??r.fontSize,borderRadius:o?.borderRadius??r.borderRadius,iconSize:o?.iconSize??r.iconSize,labelFontSize:o?.labelFontSize??r.labelFontSize,labelGap:o?.labelGap??r.labelGap,messageFontSize:o?.messageFontSize??r.messageFontSize,messageGap:o?.messageGap??r.messageGap}};const S={sm:{paddingHorizontal:12,paddingVertical:10,minHeight:38,fontSize:13,borderRadius:10,iconSize:14,labelFontSize:11,labelGap:4,messageFontSize:11,messageGap:2},md:{paddingHorizontal:14,paddingVertical:13,minHeight:44,fontSize:14,borderRadius:10,iconSize:16,labelFontSize:12,labelGap:4,messageFontSize:12,messageGap:2},lg:{paddingHorizontal:16,paddingVertical:15,minHeight:52,fontSize:16,borderRadius:10,iconSize:18,labelFontSize:13,labelGap:4,messageFontSize:13,messageGap:2}};export const resolveVariantColors=(e,t,o)=>{const r=e.components.field?.[t],i=e.colors.field;let l,n,d,a,s;"outlined"===t?(l=i.background,n=i.backgroundFocused,d=i.backgroundDisabled,a=i.border,s=e.colors.border.width):"underline"===t?(l="transparent",n=void 0,d="transparent",a={bottom:i.border},s={bottom:e.colors.border.width}):(l=i.background,n=void 0,d=i.backgroundDisabled,a="transparent",s=0);const wrapToIdleShape=e=>"string"==typeof a?e:{bottom:e},c=expandColorSides(o?.borderIdle??r?.borderIdle??a),b=expandColorSides(o?.borderFocused??r?.borderFocused??wrapToIdleShape(i.borderFocused)),g=expandColorSides(o?.borderError??r?.borderError??wrapToIdleShape(i.borderError)),p=expandColorSides(o?.borderDisabled??r?.borderDisabled??a),u="number"==typeof(h=o?.borderWidth??r?.borderWidth??s)?{top:h,right:h,bottom:h,left:h}:{top:h.top??0,right:h.right??0,bottom:h.bottom??0,left:h.left??0};var h;return{backgroundIdleEmpty:o?.backgroundIdleEmpty??r?.backgroundIdleEmpty??l,backgroundIdleFilled:o?.backgroundIdleFilled??r?.backgroundIdleFilled??o?.backgroundIdleEmpty??r?.backgroundIdleEmpty??l,backgroundFocused:o?.backgroundFocused??r?.backgroundFocused??n,backgroundError:o?.backgroundError??r?.backgroundError??void 0,backgroundDisabled:o?.backgroundDisabled??r?.backgroundDisabled??d,borderIdle:c,borderFocused:b,borderError:g,borderDisabled:p,borderWidth:u,borderFocusedRepresentative:pickRepresentativeBorderColor(b)}};export const FieldBase=e=>{const{size:d="md",variant:a,focused:b=!1,disabled:u=!1,error:F=!1,filled:S=!1,leading:x,leadingDivider:k=!1,trailing:R,slotAlign:v="center",slotLineHeight:C,topNotch:H,children:I,onPress:w,pressFeedback:D=!0,minHeight:L,maxHeight:T,width:E,height:W,paddingHorizontal:G,paddingLeft:B,paddingRight:V,paddingVertical:j,borderRadius:q,borderTopLeftRadius:M,borderTopRightRadius:P,borderBottomLeftRadius:A,borderBottomRightRadius:N,borderWidth:O,borderTopWidth:$,borderRightWidth:J,borderBottomWidth:K,borderLeftWidth:Q,gap:U,fillOverrides:X,style:Y,testID:Z,accessibilityRole:_,accessibilityLabel:ee,accessibilityState:te,accessibilityHint:oe}=e,re=g(),ie=o(()=>buildStyles(),[]),le=a??re.components.field?.defaultVariant??"outlined",ne=resolveFieldSize(re,d),de=o(()=>resolveVariantColors(re,le,X),[re,le,X]),ae=F?2:b?1:0,se=r(c(ae)).current;t(()=>{const e=i.timing(se,{toValue:ae,duration:re.motion.duration.fast,easing:l.bezier(...re.motion.easing.standard),useNativeDriver:!1});return e.start(),()=>e.stop()},[ae,se,re.motion.duration.fast,re.motion.easing.standard]);const ce=[0,1,2],be=S?de.backgroundIdleFilled:de.backgroundIdleEmpty,ge=de.backgroundFocused??be,pe=de.backgroundError??be,ue=u?de.backgroundDisabled:se.interpolate({inputRange:ce,outputRange:[be,ge,pe]}),he=de.borderIdle,me=de.borderFocused,fe=de.borderError,ze={top:$,right:J,bottom:K,left:Q},ye={top:ze.top??O??de.borderWidth.top,right:ze.right??O??de.borderWidth.right,bottom:ze.bottom??O??de.borderWidth.bottom,left:ze.left??O??de.borderWidth.left},Fe={minHeight:W??L??ne.minHeight,maxHeight:T,paddingHorizontal:G??ne.paddingHorizontal,paddingVertical:j??ne.paddingVertical,paddingLeft:B??G??ne.paddingHorizontal,paddingRight:V??G??ne.paddingHorizontal,backgroundColor:ue,columnGap:U??re.spacing.md,alignItems:"top"===v?"flex-start":"center"},Se="underline"===le,xe=Se?0:q??ne.borderRadius,ke=Se?{tl:0,tr:0,bl:0,br:0}:{tl:M??xe,tr:P??xe,bl:A??xe,br:N??xe};Fe.borderTopLeftRadius=ke.tl,Fe.borderTopRightRadius=ke.tr,Fe.borderBottomLeftRadius=ke.bl,Fe.borderBottomRightRadius=ke.br,Fe.borderCurve=p.borderCurve,Fe.borderTopWidth=ye.top,Fe.borderRightWidth=ye.right,Fe.borderBottomWidth=ye.bottom,Fe.borderLeftWidth=ye.left;const sideColor=e=>se.interpolate({inputRange:ce,outputRange:[he[e],me[e],fe[e]]}),sameOnEverySide=e=>e.top===e.right&&e.top===e.bottom&&e.top===e.left,Re=!Se&&ke.tl===ke.tr&&ke.tl===ke.bl&&ke.tl===ke.br&&sameOnEverySide(ye)&&sameOnEverySide(he)&&sameOnEverySide(me)&&sameOnEverySide(fe)&&sameOnEverySide(de.borderDisabled),ve=m(Re,ke.tl);if(ve.active)Fe.backgroundColor="transparent",Fe.borderTopColor="transparent",Fe.borderRightColor="transparent",Fe.borderBottomColor="transparent",Fe.borderLeftColor="transparent";else if(u){const e=de.borderDisabled;Fe.borderTopColor=e.top,Fe.borderRightColor=e.right,Fe.borderBottomColor=e.bottom,Fe.borderLeftColor=e.left}else Fe.borderTopColor=sideColor("top"),Fe.borderRightColor=sideColor("right"),Fe.borderBottomColor=sideColor("bottom"),Fe.borderLeftColor=sideColor("left");const Ce=u?de.borderDisabled.top:sideColor("top"),He=r(ae);He.current=ae,t(()=>{se.setValue(He.current)},[de,se]),void 0!==E&&(Fe.width=E),void 0!==W&&(Fe.height=W);const Ie={disabled:u,...te},we="top"===v,De=we?{alignSelf:"flex-start",marginTop:Math.max(0,((C??ne.iconSize)-ne.iconSize)/2)}:null,Le=W??L??ne.minHeight,Te=(()=>{if(!H)return 0;const e=Math.min(ke.tl,Le/2),t=H.left;return e<=0||t>=e?0:Math.ceil(e-Math.sqrt(e*e-(e-t)*(e-t)))})(),Ee=H&&ye.top>0?f(i.View,{pointerEvents:"none",style:{position:"absolute",top:-ye.top,left:H.left-ye.left,width:H.width,height:ye.top+Te,backgroundColor:ue}}):null,renderInner=e=>z(y,{children:[ve.active&&ve.size?f(h,{width:ve.size.width,height:ve.size.height,radius:ke.tl,fill:e&&!u?re.colors.surface.pressed:ue,stroke:Ce,strokeWidth:ye.top,outset:ye.top}):null,Ee,null!=x?f(s,{style:[ie.slot,De],children:x}):null,null!=x&&k?f(s,{pointerEvents:"none",style:[ie.divider,De,{height:ne.iconSize,backgroundColor:re.colors.field.border}]}):null,f(s,{style:[ie.content,we?ie.contentTop:null],children:I}),null!=R?f(s,{style:[ie.slot,De],children:R}):null]}),We=f(i.View,{onLayout:ve.onLayout,style:[ie.box,Fe,Y],accessibilityRole:_,accessibilityLabel:ee,accessibilityHint:oe,accessibilityState:Ie,testID:Z,children:renderInner(!1)});return w&&!D?f(n,{onPress:w,disabled:u,accessible:!1,children:We}):w?f(n,{onPress:w,disabled:u,accessibilityRole:_??"button",accessibilityLabel:ee,accessibilityHint:oe,accessibilityState:Ie,testID:Z,children:({pressed:e})=>f(i.View,{onLayout:ve.onLayout,style:[ie.box,Fe,!e||u||ve.active?null:{backgroundColor:re.colors.surface.pressed},Y],children:renderInner(e)})}):We};FieldBase.displayName="FieldBase";const buildStyles=()=>d.create({box:{flexDirection:"row",alignItems:"center",overflow:"visible"},slot:{alignItems:"center",justifyContent:"center"},divider:{width:1,alignSelf:"center"},content:{flex:1,flexDirection:"row",alignItems:"center"},contentTop:{alignItems:"flex-start"}});export default FieldBase;
1
+ "use strict";import React,{useEffect,useMemo,useRef}from"react";import{Animated,Easing,Pressable,StyleSheet,Text,View}from"react-native";import{createAnimatedValue,fontFor,useTheme}from"../../theme/index.js";import{smoothCorners}from"../../utils/corners.js";import{defaultIcons}from"../AppIcon/defaultIcons.js";import{SquircleFill,useSquircle}from"../SquircleFill/SquircleFill.js";import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";const expandColorSides=e=>"string"==typeof e?{top:e,right:e,bottom:e,left:e}:{top:e.top??"transparent",right:e.right??"transparent",bottom:e.bottom??"transparent",left:e.left??"transparent"},expandWidthSides=e=>"number"==typeof e?{top:e,right:e,bottom:e,left:e}:{top:e.top??0,right:e.right??0,bottom:e.bottom??0,left:e.left??0};export const pickRepresentativeBorderColor=e=>{for(const t of["bottom","top","left","right"]){const o=e[t];if(o&&"transparent"!==o)return o}return e.bottom};export const resolveFieldTextStyle=(e,t={})=>{const{disabled:o=!1}=t,r=e.components.field,i=e.colors.field;return{color:o?r?.disabledTextColor??i.textDisabled:r?.textColor??i.text,placeholderColor:r?.placeholderColor??(o?i.placeholderDisabled:i.placeholder),weightStyle:r?.fontWeight?{fontWeight:r.fontWeight}:fontFor(e,"normal")}};export const RequiredMark=()=>{const e=useTheme(),t=e.components.field;return _jsx(Text,{style:{color:t?.requiredMarkerColor??e.colors.error},children:` ${t?.requiredMarker??"*"}`})};export const RequiredPlaceholder=({text:e,color:t,fontSize:o,weightStyle:r,align:i="center",paddingTop:l,textAlign:n})=>_jsx(View,{pointerEvents:"none",style:[StyleSheet.absoluteFill,{justifyContent:"top"===i?"flex-start":"center",paddingTop:l}],children:_jsxs(Text,{accessible:!1,numberOfLines:1,style:{color:t,fontSize:o,...r,includeFontPadding:!1,textAlign:n},children:[e,_jsx(RequiredMark,{})]})});export const FieldErrorGlyph=({size:e,color:t})=>{const o=useTheme(),r=o.icons?.error??defaultIcons.error;return _jsx(_Fragment,{children:r({size:e,color:t})})};export const hasFieldText=e=>null!=e&&!1!==e&&!0!==e&&""!==e;export const fieldTextAsString=e=>"string"==typeof e?e:void 0;export const FieldLabel=({children:e,size:t="md",required:o=!1,help:r,color:i,style:l})=>{const n=useTheme(),s=resolveFieldSize(n,t),d=hasFieldText(r),a=_jsxs(Text,{style:[familyStyles.label,{color:i??n.colors.field.label,fontSize:s.labelFontSize,...fontFor(n,"semibold"),marginBottom:d?0:s.labelGap},d?familyStyles.labelShrink:null,l],children:[e,o?_jsx(RequiredMark,{}):null]});return d?_jsxs(View,{style:[familyStyles.labelRow,{marginBottom:s.labelGap}],children:[a,_jsx(View,{style:[familyStyles.help,{marginLeft:n.spacing.xs}],children:r})]}):a};export const FieldMessage=({text:e,error:t=!1,size:o="md",style:r})=>{const i=useTheme(),l=resolveFieldSize(i,o);if(!hasFieldText(e))return null;const n=t?i.colors.field.message:i.colors.text.secondary;return _jsxs(View,{style:[familyStyles.messageRow,{marginTop:l.messageGap,columnGap:i.spacing.xs+2}],accessibilityLiveRegion:t?"polite":"none",children:[t?_jsx(FieldErrorGlyph,{size:l.messageFontSize,color:n}):null,_jsx(Text,{style:[familyStyles.messageText,{color:n,fontSize:l.messageFontSize,...fontFor(i,"normal")},r],children:e})]})};const familyStyles=StyleSheet.create({label:{includeFontPadding:!1},labelShrink:{flexShrink:1},labelRow:{flexDirection:"row",alignItems:"center"},help:{flexShrink:0,alignItems:"center",justifyContent:"center"},messageRow:{flexDirection:"row",alignItems:"center"},messageText:{flexShrink:1,includeFontPadding:!1}});export const resolveFieldSize=(e,t)=>{const o=e.components.field?.[t],r=DEFAULT_SIZES[t];return{paddingHorizontal:o?.paddingHorizontal??r.paddingHorizontal,paddingVertical:o?.paddingVertical??r.paddingVertical,minHeight:o?.minHeight??r.minHeight,fontSize:o?.fontSize??r.fontSize,borderRadius:o?.borderRadius??r.borderRadius,iconSize:o?.iconSize??r.iconSize,labelFontSize:o?.labelFontSize??r.labelFontSize,labelGap:o?.labelGap??r.labelGap,messageFontSize:o?.messageFontSize??r.messageFontSize,messageGap:o?.messageGap??r.messageGap}};const DEFAULT_SIZES={sm:{paddingHorizontal:12,paddingVertical:10,minHeight:38,fontSize:13,borderRadius:10,iconSize:14,labelFontSize:11,labelGap:4,messageFontSize:11,messageGap:2},md:{paddingHorizontal:14,paddingVertical:13,minHeight:44,fontSize:14,borderRadius:10,iconSize:16,labelFontSize:12,labelGap:4,messageFontSize:12,messageGap:2},lg:{paddingHorizontal:16,paddingVertical:15,minHeight:52,fontSize:16,borderRadius:10,iconSize:18,labelFontSize:13,labelGap:4,messageFontSize:13,messageGap:2}};export const resolveVariantColors=(e,t,o)=>{const r=e.components.field?.[t],i=e.colors.field;let l,n,s,d,a;"outlined"===t?(l=i.background,n=i.backgroundFocused,s=i.backgroundDisabled,d=i.border,a=e.colors.border.width):"underline"===t?(l="transparent",n=void 0,s="transparent",d={bottom:i.border},a={bottom:e.colors.border.width}):(l=i.background,n=void 0,s=i.backgroundDisabled,d="transparent",a=0);const wrapToIdleShape=e=>"string"==typeof d?e:{bottom:e},c=expandColorSides(o?.borderIdle??r?.borderIdle??d),b=expandColorSides(o?.borderFocused??r?.borderFocused??wrapToIdleShape(i.borderFocused)),p=expandColorSides(o?.borderError??r?.borderError??wrapToIdleShape(i.borderError)),g=expandColorSides(o?.borderDisabled??r?.borderDisabled??d),u=expandWidthSides(o?.borderWidth??r?.borderWidth??a);return{backgroundIdleEmpty:o?.backgroundIdleEmpty??r?.backgroundIdleEmpty??l,backgroundIdleFilled:o?.backgroundIdleFilled??r?.backgroundIdleFilled??o?.backgroundIdleEmpty??r?.backgroundIdleEmpty??l,backgroundFocused:o?.backgroundFocused??r?.backgroundFocused??n,backgroundError:o?.backgroundError??r?.backgroundError??void 0,backgroundDisabled:o?.backgroundDisabled??r?.backgroundDisabled??s,borderIdle:c,borderFocused:b,borderError:p,borderDisabled:g,borderWidth:u,borderFocusedRepresentative:pickRepresentativeBorderColor(b)}};export const FieldBase=e=>{const{size:t="md",variant:o,focused:r=!1,disabled:i=!1,error:l=!1,filled:n=!1,leading:s,leadingDivider:d=!1,trailing:a,slotAlign:c="center",slotLineHeight:b,topNotch:p,children:g,onPress:u,pressFeedback:m=!0,minHeight:h,maxHeight:f,width:x,height:S,paddingHorizontal:y,paddingLeft:F,paddingRight:z,paddingVertical:R,borderRadius:k,borderTopLeftRadius:C,borderTopRightRadius:T,borderBottomLeftRadius:j,borderBottomRightRadius:v,borderWidth:w,borderTopWidth:I,borderRightWidth:_,borderBottomWidth:E,borderLeftWidth:V,gap:H,fillOverrides:D,style:L,testID:W,accessibilityRole:G,accessibilityLabel:B,accessibilityState:q,accessibilityHint:A}=e,M=useTheme(),P=useMemo(()=>buildStyles(),[]),N=o??M.components.field?.defaultVariant??"outlined",O=resolveFieldSize(M,t),U=useMemo(()=>resolveVariantColors(M,N,D),[M,N,D]),Z=l?2:r?1:0,$=useRef(createAnimatedValue(Z)).current;useEffect(()=>{const e=Animated.timing($,{toValue:Z,duration:M.motion.duration.fast,easing:Easing.bezier(...M.motion.easing.standard),useNativeDriver:!1});return e.start(),()=>e.stop()},[Z,$,M.motion.duration.fast,M.motion.easing.standard]);const J=[0,1,2],K=n?U.backgroundIdleFilled:U.backgroundIdleEmpty,Q=U.backgroundFocused??K,X=U.backgroundError??K,Y=i?U.backgroundDisabled:$.interpolate({inputRange:J,outputRange:[K,Q,X]}),ee=U.borderIdle,te=U.borderFocused,oe=U.borderError,re={top:I,right:_,bottom:E,left:V},ie={top:re.top??w??U.borderWidth.top,right:re.right??w??U.borderWidth.right,bottom:re.bottom??w??U.borderWidth.bottom,left:re.left??w??U.borderWidth.left},le={minHeight:S??h??O.minHeight,maxHeight:f,paddingHorizontal:y??O.paddingHorizontal,paddingVertical:R??O.paddingVertical,paddingLeft:F??y??O.paddingHorizontal,paddingRight:z??y??O.paddingHorizontal,backgroundColor:Y,columnGap:H??M.spacing.md,alignItems:"top"===c?"flex-start":"center"},ne="underline"===N,se=ne?0:k??O.borderRadius,de=ne?{tl:0,tr:0,bl:0,br:0}:{tl:C??se,tr:T??se,bl:j??se,br:v??se};le.borderTopLeftRadius=de.tl,le.borderTopRightRadius=de.tr,le.borderBottomLeftRadius=de.bl,le.borderBottomRightRadius=de.br,le.borderCurve=smoothCorners.borderCurve,le.borderTopWidth=ie.top,le.borderRightWidth=ie.right,le.borderBottomWidth=ie.bottom,le.borderLeftWidth=ie.left;const sideColor=e=>$.interpolate({inputRange:J,outputRange:[ee[e],te[e],oe[e]]}),sameOnEverySide=e=>e.top===e.right&&e.top===e.bottom&&e.top===e.left,ae=!ne&&de.tl===de.tr&&de.tl===de.bl&&de.tl===de.br&&sameOnEverySide(ie)&&sameOnEverySide(ee)&&sameOnEverySide(te)&&sameOnEverySide(oe)&&sameOnEverySide(U.borderDisabled),ce=useSquircle(ae,de.tl);if(ce.active)le.backgroundColor="transparent",le.borderTopColor="transparent",le.borderRightColor="transparent",le.borderBottomColor="transparent",le.borderLeftColor="transparent";else if(i){const e=U.borderDisabled;le.borderTopColor=e.top,le.borderRightColor=e.right,le.borderBottomColor=e.bottom,le.borderLeftColor=e.left}else le.borderTopColor=sideColor("top"),le.borderRightColor=sideColor("right"),le.borderBottomColor=sideColor("bottom"),le.borderLeftColor=sideColor("left");const be=i?U.borderDisabled.top:sideColor("top"),pe=useRef(Z);pe.current=Z,useEffect(()=>{$.setValue(pe.current)},[U,$]),void 0!==x&&(le.width=x),void 0!==S&&(le.height=S);const ge={disabled:i,...q},ue="top"===c,me=ue?{alignSelf:"flex-start",marginTop:Math.max(0,((b??O.iconSize)-O.iconSize)/2)}:null,he=S??h??O.minHeight,fe=(()=>{if(!p)return 0;const e=Math.min(de.tl,he/2),t=p.left;return e<=0||t>=e?0:Math.ceil(e-Math.sqrt(e*e-(e-t)*(e-t)))})(),xe=p&&ie.top>0?_jsx(Animated.View,{pointerEvents:"none",style:{position:"absolute",top:-ie.top,left:p.left-ie.left,width:p.width,height:ie.top+fe,backgroundColor:Y}}):null,renderInner=e=>_jsxs(_Fragment,{children:[ce.active&&ce.size?_jsx(SquircleFill,{width:ce.size.width,height:ce.size.height,radius:de.tl,fill:e&&!i?M.colors.surface.pressed:Y,stroke:be,strokeWidth:ie.top,outset:ie.top}):null,xe,null!=s?_jsx(View,{style:[P.slot,me],children:s}):null,null!=s&&d?_jsx(View,{pointerEvents:"none",style:[P.divider,me,{height:O.iconSize,backgroundColor:M.colors.field.border}]}):null,_jsx(View,{style:[P.content,ue?P.contentTop:null],children:g}),null!=a?_jsx(View,{style:[P.slot,me],children:a}):null]}),Se=_jsx(Animated.View,{onLayout:ce.onLayout,style:[P.box,le,L],accessibilityRole:G,accessibilityLabel:B,accessibilityHint:A,accessibilityState:ge,testID:W,children:renderInner(!1)});return u&&!m?_jsx(Pressable,{onPress:u,disabled:i,accessible:!1,children:Se}):u?_jsx(Pressable,{onPress:u,disabled:i,accessibilityRole:G??"button",accessibilityLabel:B,accessibilityHint:A,accessibilityState:ge,testID:W,children:({pressed:e})=>_jsx(Animated.View,{onLayout:ce.onLayout,style:[P.box,le,!e||i||ce.active?null:{backgroundColor:M.colors.surface.pressed},L],children:renderInner(e)})}):Se};FieldBase.displayName="FieldBase";const buildStyles=()=>StyleSheet.create({box:{flexDirection:"row",alignItems:"center",overflow:"visible"},slot:{alignItems:"center",justifyContent:"center"},divider:{width:1,alignSelf:"center"},content:{flex:1,flexDirection:"row",alignItems:"center"},contentTop:{alignItems:"flex-start"}});export default FieldBase;
@@ -1 +1 @@
1
- export{default,FieldBase,FieldErrorGlyph,FieldLabel,FieldMessage,fieldTextAsString,hasFieldText,RequiredMark,RequiredPlaceholder,resolveFieldSize,resolveFieldTextStyle}from"./FieldBase.js";export{FLOATED_LABEL_SCALE,useFloatingLabel}from"./useFloatingLabel.js";
1
+ "use strict";export{default,FieldBase,FieldErrorGlyph,FieldLabel,FieldMessage,fieldTextAsString,hasFieldText,RequiredMark,RequiredPlaceholder,resolveFieldSize,resolveFieldTextStyle}from"./FieldBase.js";export{FLOATED_LABEL_SCALE,useFloatingLabel}from"./useFloatingLabel.js";
@@ -1 +1 @@
1
- import{useEffect as t,useMemo as e,useRef as n,useState as i}from"react";import{Animated as r,Easing as o,StyleSheet as a}from"react-native";import{createAnimatedValue as l,fontFor as s,useTheme as u}from"../../theme/index.js";import{hasFieldText as d,RequiredMark as g}from"./FieldBase.js";import{jsx as p,jsxs as c}from"react/jsx-runtime";export const FLOATED_LABEL_SCALE=.85;export const useFloatingLabel=({label:a,enabled:h,floated:m,required:x=!1,variant:v,sizeTokens:R,leadingOffset:b,trailingOffset:w=0,textAlign:z="left",paddingLeft:L,lineHeight:O,restNudge:j=0,floatTrim:E=0,color:S,style:y})=>{const A=u(),H=n(l(m?1:0)).current,N=n(l(m?1:0)).current,T="outlined"===v,[F,V]=i(null);return t(()=>{const t=m?1:0,timing=(e,n)=>r.timing(e,{toValue:t,duration:A.motion.duration.fast,easing:o.bezier(...A.motion.easing.standard),useNativeDriver:n});T||N.setValue(t);const e=T?r.parallel([timing(H,!0),timing(N,!1)]):timing(H,!0);return e.start(),()=>e.stop()},[m,T,H,N,A.motion.duration.fast,A.motion.easing.standard]),e(()=>{if(!h||!d(a))return{node:null,topNotch:void 0};const t=O??F?.height??R.fontSize,e=null!=O?R.paddingVertical+j:Math.max(0,(R.minHeight-t)/2),n=-(e+t/2+1-E),i=H.interpolate({inputRange:[0,1],outputRange:[0,n]}),o=H.interpolate({inputRange:[0,1],outputRange:[1,.85]}),l=-b,u=H.interpolate({inputRange:[0,1],outputRange:[0,l]}),m="right"===z?{right:R.paddingHorizontal+w,transformOrigin:"right center"}:"center"===z?{alignSelf:"center",transformOrigin:"center"}:{left:L+b,transformOrigin:"left center"},v=F?.85*F.width:0,B=F?"right"===z?F.width-v:"center"===z?(F.width-v)/2:0:0,D=T&&F?{left:F.x+l+B-4,width:N.interpolate({inputRange:[0,1],outputRange:[0,v+8]})}:void 0;return{node:c(r.Text,{pointerEvents:"none",onLayout:t=>{const{x:e,width:n,height:i}=t.nativeEvent.layout;V(t=>t&&t.x===e&&t.width===n&&t.height===i?t:{x:e,width:n,height:i})},style:[f.label,m,{top:e,color:S,fontSize:R.fontSize,lineHeight:O,...s(A,"medium"),transform:[{translateX:u},{translateY:i},{scale:o}]},y],children:[a,x?p(g,{}):null]}),topNotch:D}},[h,a,x,T,R,b,w,z,L,O,j,E,S,y,H,N,F,A])};const f=a.create({label:{position:"absolute",zIndex:1}});
1
+ "use strict";import{useEffect,useMemo,useRef,useState}from"react";import{Animated,Easing,StyleSheet}from"react-native";import{createAnimatedValue,fontFor,useTheme}from"../../theme/index.js";import{hasFieldText,RequiredMark}from"./FieldBase.js";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";export const FLOATED_LABEL_SCALE=.85;const FLOATED_LABEL_LIFT=1,NOTCH_GAP=4;export const useFloatingLabel=({label:e,enabled:t,floated:n,required:i=!1,variant:a,sizeTokens:r,leadingOffset:o,trailingOffset:s=0,textAlign:l="left",paddingLeft:u,lineHeight:d,restNudge:g=0,floatTrim:m=0,color:f,style:c})=>{const h=useTheme(),p=useRef(createAnimatedValue(n?1:0)).current,x=useRef(createAnimatedValue(n?1:0)).current,A="outlined"===a,[R,E]=useState(null);return useEffect(()=>{const e=n?1:0,timing=(t,n)=>Animated.timing(t,{toValue:e,duration:h.motion.duration.fast,easing:Easing.bezier(...h.motion.easing.standard),useNativeDriver:n});A||x.setValue(e);const t=A?Animated.parallel([timing(p,!0),timing(x,!1)]):timing(p,!0);return t.start(),()=>t.stop()},[n,A,p,x,h.motion.duration.fast,h.motion.easing.standard]),useMemo(()=>{if(!t||!hasFieldText(e))return{node:null,topNotch:void 0};const n=d??R?.height??r.fontSize,a=null!=d?r.paddingVertical+g:Math.max(0,(r.minHeight-n)/2),L=-(a+n/2+1-m),S=p.interpolate({inputRange:[0,1],outputRange:[0,L]}),T=p.interpolate({inputRange:[0,1],outputRange:[1,.85]}),j=-o,v=p.interpolate({inputRange:[0,1],outputRange:[0,j]}),F="right"===l?{right:r.paddingHorizontal+s,transformOrigin:"right center"}:"center"===l?{alignSelf:"center",transformOrigin:"center"}:{left:u+o,transformOrigin:"left center"},_=R?.85*R.width:0,y=R?"right"===l?R.width-_:"center"===l?(R.width-_)/2:0:0,O=A&&R?{left:R.x+j+y-4,width:x.interpolate({inputRange:[0,1],outputRange:[0,_+8]})}:void 0;return{node:_jsxs(Animated.Text,{pointerEvents:"none",onLayout:e=>{const{x:t,width:n,height:i}=e.nativeEvent.layout;E(e=>e&&e.x===t&&e.width===n&&e.height===i?e:{x:t,width:n,height:i})},style:[styles.label,F,{top:a,color:f,fontSize:r.fontSize,lineHeight:d,...fontFor(h,"medium"),transform:[{translateX:v},{translateY:S},{scale:T}]},c],children:[e,i?_jsx(RequiredMark,{}):null]}),topNotch:O}},[t,e,i,A,r,o,s,l,u,d,g,m,f,c,p,x,R,h])};const styles=StyleSheet.create({label:{position:"absolute",zIndex:1}});
@@ -1 +1 @@
1
- import e,{forwardRef as r,useCallback as t,useImperativeHandle as o,useMemo as i,useRef as l,useState as n}from"react";import{Image as s,Pressable as a,ScrollView as c,StyleSheet as d,Text as u,View as g}from"react-native";import{useControllableState as h}from"../../hooks/index.js";import{fontFor as p,useTheme as m}from"../../theme/index.js";import{resolveHaptic as y,triggerHaptic as b}from"../../utils/index.js";import{smoothCorners as f}from"../../utils/corners.js";import{defaultIcons as x}from"../AppIcon/defaultIcons.js";import{OptionSheet as T}from"../OptionSheet/OptionSheet.js";import{Spinner as v}from"../Spinner/index.js";import{jsx as S,jsxs as z}from"react/jsx-runtime";let k=0;const C={trigger:"Attach file",addMore:"Add more",sheetTitle:"Add from",removeFile:e=>`Remove ${e}`,retry:"Retry upload",errorTooMany:e=>`You can attach up to ${e} files.`,errorTooLarge:(e,r)=>`${e} is larger than ${r} MB.`,errorWrongType:e=>`${e} is not an accepted file type.`};export const formatFileSize=e=>{if(void 0===e||e<=0)return"";const r=["B","KB","MB","GB"];let t=e,o=0;for(;t>=1024&&o<r.length-1;)t/=1024,o+=1;return`${t>=10||0===o?Math.round(t):Math.round(10*t)/10} ${r[o]}`};export const matchesAccept=(e,r)=>!r||0===r.length||!!e&&r.some(r=>"*/*"===r||"*"===r||(r.endsWith("/*")?e.startsWith(r.slice(0,r.length-1)):e===r));const extensionOf=e=>{const r=e.lastIndexOf(".");return r<=0||r===e.length-1?"FILE":e.slice(r+1).toUpperCase().slice(0,4)},P=r((e,r)=>{const{files:d,defaultFiles:P,onChange:F,sources:R,maxFiles:w,maxSizeMB:j,accept:B,validate:O,process:I,variant:M="card",renderFile:$,renderTrigger:L,disabled:W=!1,helperText:A,error:E,labels:G,haptic:V,onPick:D,onRemove:H,onError:U,onFilePress:N,onRetry:K,style:Y,accessibilityLabel:q,testID:J}=e,Q=m(),X=i(()=>buildStyles(Q),[Q]),Z=i(()=>({...C,...G}),[G]),_=Q.components.filePicker,ee=_?.thumbnailSize??84,re=_?.borderRadius??Q.radius.md,te=_?.dashedBorderColor??Q.colors.primary,[oe,ie]=h({value:d,defaultValue:P??[],onChange:F}),le=l(oe);le.current=oe;const ne=t(e=>{le.current=e,ie(e)},[ie]),[se,ae]=n(null),[ce,de]=n(!1),ue=E??se??void 0,ge="number"==typeof w&&oe.length>=w,he=t((e,r)=>{0!==e.length&&(ae(e[0]),e.forEach(e=>U?.(e,r)),!1!==V&&b("notificationError"))},[U,V]),pe=t(async e=>{let r;try{r=await e.pick()}catch(e){return void he([e instanceof Error?e.message:String(e)])}if(!r||0===r.length)return;const t=[];let o=r.map(e=>({id:"wfp-"+ ++k,name:e.name??e.uri.split("/").pop()??"file",uri:e.uri,type:e.type,size:e.size,meta:e.meta,status:"idle"}));if("number"==typeof w){const e=Math.max(0,w-le.current.length);o.length>e&&(t.push(Z.errorTooMany(w)),o=o.slice(0,e))}const i=[];for(const e of o){if("number"==typeof j&&"number"==typeof e.size&&e.size>1024*j*1024){t.push(Z.errorTooLarge(e.name,j));continue}if(!matchesAccept(e.type,B)){t.push(Z.errorWrongType(e.name));continue}const r=O?.(e);r?t.push(r):i.push(e)}if(he(t),0===i.length)return;if(!I){ne([...le.current,...i]),ae(t.length>0?t[0]:null);const e=y(V,"selection");return e&&b(e),void D?.(i)}const l=i.map(e=>({...e,status:"processing"}));ne([...le.current,...l]);const n=[];for(const e of l)try{const r=await I({...e,status:"idle"}),t={...r,id:e.id,status:r.status??"idle"};ne(le.current.map(r=>r.id===e.id?t:r)),n.push(t)}catch(r){ne(le.current.filter(r=>r.id!==e.id)),he([r instanceof Error?r.message:String(r)],e)}if(n.length>0){0===t.length&&ae(null);const e=y(V,"selection");e&&b(e),D?.(n)}},[w,j,B,O,I,Z,he,ne,D,V]),me=t(e=>{if(W||ge)return;const r=e?R.find(r=>r.key===e):1===R.length?R[0]:void 0;r?pe(r):R.length>1&&de(!0)},[W,ge,R,pe]),ye=t(e=>{if(W)return;ne(le.current.filter(r=>r.id!==e.id)),ae(null);const r=y(V,"selection");r&&b(r),H?.(e)},[W,ne,H,V]),be=t(()=>{ne([]),ae(null)},[ne]);o(r,()=>({open:me,clear:be}),[me,be]);const fe=0===oe.length?Z.trigger:`${oe.length} file${1===oe.length?"":"s"} attached`,xe=q??`Attachments. ${fe}`,statusText=e=>{switch(e.status){case"processing":return"Processing…";case"uploading":return`Uploading ${Math.round(100*(e.progress??0))}%`;case"done":return"Uploaded";case"error":return e.error??"Failed";default:return""}},fileA11yLabel=e=>[e.name,formatFileSize(e.size),statusText(e)].filter(Boolean).join(", "),Te=Q.icons?.attachment??x.attachment,renderStatusOverlay=e=>{if("processing"===e.status)return S(g,{style:[X.tileOverlay,{backgroundColor:Q.colors.background.overlay}],children:S(v,{size:"sm"})});if("uploading"===e.status){const r=Math.round(100*(e.progress??0));return z(g,{style:[X.tileOverlay,{backgroundColor:Q.colors.background.overlay}],children:[S(u,{style:[X.tileOverlayText,{color:Q.colors.onOverlay}],children:`${r}%`}),S(g,{style:[X.tileProgressTrack,{backgroundColor:Q.colors.border.primary}],children:S(g,{style:[X.tileProgressFill,{width:`${r}%`,backgroundColor:Q.colors.primary}]})})]})}return"done"===e.status?S(g,{style:[X.doneBadge,{backgroundColor:Q.colors.success}],children:S(u,{style:[X.doneBadgeText,{color:Q.colors.onSuccess}],children:"✓"})}):null},renderThumbnail=e=>{const r=(e=>e.thumbnailUrl??((e=>!0===e.type?.startsWith("image/")||!e.type&&/\.(png|jpe?g|gif|webp|heic)$/i.test(e.name))(e)?e.uri??e.url:void 0))(e);return r?S(s,{source:{uri:r},style:X.thumbnailImage}):S(g,{style:[X.extensionTile,{backgroundColor:Q.colors.background.secondary}],children:S(u,{style:[X.extensionText,{color:Q.colors.text.secondary,...p(Q,"semibold")}],children:extensionOf(e.name)})})},removeButton=e=>S(a,{onPress:()=>ye(e),disabled:W,hitSlop:8,accessibilityRole:"button",accessibilityLabel:Z.removeFile(e.name),style:[X.removeButton,{backgroundColor:Q.colors.background.overlay}],children:S(u,{style:[X.removeButtonText,{color:Q.colors.onOverlay}],children:"×"})}),retryButton=e=>K&&"error"===e.status?S(a,{onPress:()=>K(e),disabled:W,hitSlop:8,accessibilityRole:"button",accessibilityLabel:Z.retry,children:S(u,{style:[X.retryText,{color:Q.colors.primary}],children:"↻"})}):null,renderOneFile=(e,r)=>{const t={file:e,index:r,disabled:W,remove:()=>ye(e),retry:K?()=>K(e):void 0},o=$?$(t):"card"===M?(e=>{const{file:r}=e;return z(g,{style:[X.tile,{width:ee,height:ee,borderRadius:re,...f,borderColor:"error"===r.status?Q.colors.error:Q.colors.border.primary}],children:[renderThumbnail(r),renderStatusOverlay(r),"error"===r.status?S(g,{style:[X.tileOverlay,{backgroundColor:Q.colors.background.overlay}],children:retryButton(r)}):null,removeButton(r)]})})(t):(e=>{const{file:r}=e,t=statusText(r);return z(g,{style:[X.listRow,{borderRadius:re,...f,borderColor:"error"===r.status?Q.colors.error:Q.colors.border.primary,backgroundColor:Q.colors.background.primary}],children:[z(g,{style:[X.listThumb,{borderRadius:Q.radius.sm,...f}],children:[renderThumbnail(r),"processing"===r.status?S(g,{style:[X.tileOverlay,{backgroundColor:Q.colors.background.overlay}],children:S(v,{size:"sm"})}):null]}),z(g,{style:X.listTextWrap,children:[S(u,{numberOfLines:1,ellipsizeMode:"middle",style:[X.listName,{color:Q.colors.text.primary,fontSize:Q.typography.fontSize.sm,...p(Q,"medium")}],children:r.name}),S(u,{numberOfLines:1,style:[X.listSubtitle,{color:"error"===r.status?Q.colors.error:Q.colors.text.tertiary,fontSize:Q.typography.fontSize.xs}],children:[formatFileSize(r.size),t].filter(Boolean).join(" · ")}),"uploading"===r.status?S(g,{style:[X.listProgressTrack,{backgroundColor:Q.colors.border.primary}],children:S(g,{style:[X.listProgressFill,{width:`${Math.round(100*(r.progress??0))}%`,backgroundColor:Q.colors.primary}]})}):null]}),retryButton(r),S(a,{onPress:()=>ye(r),disabled:W,hitSlop:8,accessibilityRole:"button",accessibilityLabel:Z.removeFile(r.name),children:S(u,{style:[X.listRemoveText,{color:Q.colors.text.tertiary}],children:"×"})})]})})(t);return S(a,{onPress:N?()=>N(e):void 0,disabled:W||!N,accessibilityLabel:fileA11yLabel(e),children:o},e.id)},ve={open:me,disabled:W||ge,fileCount:oe.length,atCapacity:ge},dashedTrigger=e=>z(a,{onPress:()=>me(),disabled:W||ge,accessibilityRole:"button",accessibilityLabel:xe,accessibilityState:{disabled:W||ge},style:({pressed:r})=>[X.trigger,e?X.triggerCompact:null,{borderRadius:re,...f,borderColor:te,backgroundColor:r?Q.colors.surface.pressed:Q.colors.background.primary,opacity:W||ge?.55:1}],children:[z(g,{style:X.triggerRow,children:[Te?Te({size:16,color:Q.colors.primary}):null,S(u,{style:[X.triggerText,{color:Q.colors.primary,fontSize:Q.typography.fontSize.sm,...p(Q,"medium")}],children:0===oe.length?Z.trigger:Z.addMore})]}),!e&&A?S(u,{style:[X.helperText,{color:Q.colors.text.tertiary,fontSize:Q.typography.fontSize.xs}],children:A}):null]}),Se=S(a,{onPress:()=>me(),disabled:W||ge,accessibilityRole:"button",accessibilityLabel:Z.addMore,style:({pressed:e})=>[X.tile,X.addTile,{width:ee,height:ee,borderRadius:re,...f,borderColor:te,backgroundColor:e?Q.colors.surface.pressed:"transparent",opacity:W||ge?.55:1}],children:S(u,{style:[X.addTileText,{color:Q.colors.primary}],children:"+"})});return z(g,{style:[X.container,Y],testID:J,accessibilityLabel:xe,children:["card"===M?0===oe.length?L?L(ve):dashedTrigger(!1):z(c,{horizontal:!0,showsHorizontalScrollIndicator:!1,contentContainerStyle:[X.strip,{columnGap:Q.spacing.sm}],children:[oe.map(renderOneFile),L?L(ve):ge||W?null:Se]}):z(g,{style:{rowGap:Q.spacing.sm},children:[L?L(ve):ge?null:dashedTrigger(oe.length>0),oe.map(renderOneFile)]}),ue?S(u,{accessibilityLiveRegion:"polite",style:[X.errorText,{color:Q.colors.error,fontSize:Q.typography.fontSize.xs,marginTop:Q.spacing.xxs}],children:ue}):null,S(T,{open:ce,onClose:()=>de(!1),title:Z.sheetTitle,options:R,labelOf:e=>e.label,getValue:e=>e.key,disabledOf:()=>!1,descriptionOf:e=>e.description,iconOf:e=>e.icon,isSelected:()=>!1,onSelect:e=>{de(!1),pe(e)}})]})});P.displayName="FilePicker";const buildStyles=e=>d.create({container:{width:"100%"},trigger:{borderWidth:1,borderStyle:"dashed",alignItems:"center",paddingVertical:14,paddingHorizontal:16},triggerCompact:{paddingVertical:10},triggerRow:{flexDirection:"row",alignItems:"center",columnGap:8},triggerText:{includeFontPadding:!1},helperText:{includeFontPadding:!1,marginTop:6,textAlign:"center"},strip:{paddingVertical:2},tile:{borderWidth:1,overflow:"hidden"},addTile:{borderStyle:"dashed",alignItems:"center",justifyContent:"center"},addTileText:{fontSize:28,includeFontPadding:!1},thumbnailImage:{width:"100%",height:"100%",resizeMode:"cover"},extensionTile:{width:"100%",height:"100%",alignItems:"center",justifyContent:"center"},extensionText:{fontSize:12,letterSpacing:1,includeFontPadding:!1},tileOverlay:{...d.absoluteFill,alignItems:"center",justifyContent:"center"},tileOverlayText:{fontSize:12,includeFontPadding:!1,marginBottom:6},tileProgressTrack:{position:"absolute",left:8,right:8,bottom:8,height:3,borderRadius:2,...f,overflow:"hidden"},tileProgressFill:{height:"100%",borderRadius:2,...f},doneBadge:{position:"absolute",right:4,bottom:4,width:18,height:18,borderRadius:9,...f,alignItems:"center",justifyContent:"center"},doneBadgeText:{fontSize:11,includeFontPadding:!1},removeButton:{position:"absolute",top:4,right:4,width:20,height:20,borderRadius:10,...f,alignItems:"center",justifyContent:"center"},removeButtonText:{fontSize:13,lineHeight:15,includeFontPadding:!1},retryText:{fontSize:20,includeFontPadding:!1},listRow:{flexDirection:"row",alignItems:"center",borderWidth:1,padding:10,columnGap:10},listThumb:{width:40,height:40,overflow:"hidden"},listTextWrap:{flex:1},listName:{includeFontPadding:!1},listSubtitle:{includeFontPadding:!1,marginTop:2},listProgressTrack:{height:3,borderRadius:2,...f,overflow:"hidden",marginTop:6},listProgressFill:{height:"100%",borderRadius:2,...f},listRemoveText:{fontSize:22,includeFontPadding:!1,paddingHorizontal:4},errorText:{includeFontPadding:!1}});export{P as FilePicker};export default P;
1
+ "use strict";import React,{forwardRef,useCallback,useImperativeHandle,useMemo,useRef,useState}from"react";import{Image,Pressable,ScrollView,StyleSheet,Text,View}from"react-native";import{useControllableState}from"../../hooks/index.js";import{fontFor,useTheme}from"../../theme/index.js";import{resolveHaptic,triggerHaptic}from"../../utils/index.js";import{smoothCorners}from"../../utils/corners.js";import{defaultIcons}from"../AppIcon/defaultIcons.js";import{OptionSheet}from"../OptionSheet/OptionSheet.js";import{Spinner}from"../Spinner/index.js";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";let fileIdSeq=0;const nextFileId=()=>"wfp-"+ ++fileIdSeq,DEFAULT_LABELS={trigger:"Attach file",addMore:"Add more",sheetTitle:"Add from",removeFile:e=>`Remove ${e}`,retry:"Retry upload",errorTooMany:e=>`You can attach up to ${e} files.`,errorTooLarge:(e,r)=>`${e} is larger than ${r} MB.`,errorWrongType:e=>`${e} is not an accepted file type.`};export const formatFileSize=e=>{if(void 0===e||e<=0)return"";const r=["B","KB","MB","GB"];let t=e,o=0;for(;t>=1024&&o<r.length-1;)t/=1024,o+=1;return`${t>=10||0===o?Math.round(t):Math.round(10*t)/10} ${r[o]}`};export const matchesAccept=(e,r)=>!r||0===r.length||!!e&&r.some(r=>"*/*"===r||"*"===r||(r.endsWith("/*")?e.startsWith(r.slice(0,r.length-1)):e===r));const isImage=e=>!0===e.type?.startsWith("image/")||!e.type&&/\.(png|jpe?g|gif|webp|heic)$/i.test(e.name),imageSourceOf=e=>e.thumbnailUrl??(isImage(e)?e.uri??e.url:void 0),extensionOf=e=>{const r=e.lastIndexOf(".");return r<=0||r===e.length-1?"FILE":e.slice(r+1).toUpperCase().slice(0,4)},FilePicker=forwardRef((e,r)=>{const{files:t,defaultFiles:o,onChange:i,sources:s,maxFiles:l,maxSizeMB:n,accept:a,validate:c,process:d,variant:u="card",renderFile:g,renderTrigger:h,disabled:p=!1,helperText:m,error:y,labels:b,haptic:f,onPick:x,onRemove:S,onError:T,onFilePress:j,onRetry:C,style:v,accessibilityLabel:w,testID:k}=e,_=useTheme(),F=useMemo(()=>buildStyles(_),[_]),P=useMemo(()=>({...DEFAULT_LABELS,...b}),[b]),z=_.components.filePicker,R=z?.thumbnailSize??84,I=z?.borderRadius??_.radius.md,V=z?.dashedBorderColor??_.colors.primary,[O,B]=useControllableState({value:t,defaultValue:o??[],onChange:i}),L=useRef(O);L.current=O;const M=useCallback(e=>{L.current=e,B(e)},[B]),[H,$]=useState(null),[A,E]=useState(!1),W=y??H??void 0,D="number"==typeof l&&O.length>=l,U=useCallback((e,r)=>{0!==e.length&&($(e[0]),e.forEach(e=>T?.(e,r)),!1!==f&&triggerHaptic("notificationError"))},[T,f]),G=useCallback(async e=>{let r;try{r=await e.pick()}catch(e){return void U([e instanceof Error?e.message:String(e)])}if(!r||0===r.length)return;const t=[];let o=r.map(e=>({id:nextFileId(),name:e.name??e.uri.split("/").pop()??"file",uri:e.uri,type:e.type,size:e.size,meta:e.meta,status:"idle"}));if("number"==typeof l){const e=Math.max(0,l-L.current.length);o.length>e&&(t.push(P.errorTooMany(l)),o=o.slice(0,e))}const i=[];for(const e of o){if("number"==typeof n&&"number"==typeof e.size&&e.size>1024*n*1024){t.push(P.errorTooLarge(e.name,n));continue}if(!matchesAccept(e.type,a)){t.push(P.errorWrongType(e.name));continue}const r=c?.(e);r?t.push(r):i.push(e)}if(U(t),0===i.length)return;if(!d){M([...L.current,...i]),$(t.length>0?t[0]:null);const e=resolveHaptic(f,"selection");return e&&triggerHaptic(e),void x?.(i)}const s=i.map(e=>({...e,status:"processing"}));M([...L.current,...s]);const u=[];for(const e of s)try{const r=await d({...e,status:"idle"}),t={...r,id:e.id,status:r.status??"idle"};M(L.current.map(r=>r.id===e.id?t:r)),u.push(t)}catch(r){M(L.current.filter(r=>r.id!==e.id)),U([r instanceof Error?r.message:String(r)],e)}if(u.length>0){0===t.length&&$(null);const e=resolveHaptic(f,"selection");e&&triggerHaptic(e),x?.(u)}},[l,n,a,c,d,P,U,M,x,f]),N=useCallback(e=>{if(p||D)return;const r=e?s.find(r=>r.key===e):1===s.length?s[0]:void 0;r?G(r):s.length>1&&E(!0)},[p,D,s,G]),q=useCallback(e=>{if(p)return;M(L.current.filter(r=>r.id!==e.id)),$(null);const r=resolveHaptic(f,"selection");r&&triggerHaptic(r),S?.(e)},[p,M,S,f]),K=useCallback(()=>{M([]),$(null)},[M]);useImperativeHandle(r,()=>({open:N,clear:K}),[N,K]);const Y=0===O.length?P.trigger:`${O.length} file${1===O.length?"":"s"} attached`,J=w??`Attachments. ${Y}`,statusText=e=>{switch(e.status){case"processing":return"Processing…";case"uploading":return`Uploading ${Math.round(100*(e.progress??0))}%`;case"done":return"Uploaded";case"error":return e.error??"Failed";default:return""}},fileA11yLabel=e=>[e.name,formatFileSize(e.size),statusText(e)].filter(Boolean).join(", "),Q=_.icons?.attachment??defaultIcons.attachment,renderStatusOverlay=e=>{if("processing"===e.status)return _jsx(View,{style:[F.tileOverlay,{backgroundColor:_.colors.background.overlay}],children:_jsx(Spinner,{size:"sm"})});if("uploading"===e.status){const r=Math.round(100*(e.progress??0));return _jsxs(View,{style:[F.tileOverlay,{backgroundColor:_.colors.background.overlay}],children:[_jsx(Text,{style:[F.tileOverlayText,{color:_.colors.onOverlay}],children:`${r}%`}),_jsx(View,{style:[F.tileProgressTrack,{backgroundColor:_.colors.border.primary}],children:_jsx(View,{style:[F.tileProgressFill,{width:`${r}%`,backgroundColor:_.colors.primary}]})})]})}return"done"===e.status?_jsx(View,{style:[F.doneBadge,{backgroundColor:_.colors.success}],children:_jsx(Text,{style:[F.doneBadgeText,{color:_.colors.onSuccess}],children:"✓"})}):null},renderThumbnail=e=>{const r=imageSourceOf(e);return r?_jsx(Image,{source:{uri:r},style:F.thumbnailImage}):_jsx(View,{style:[F.extensionTile,{backgroundColor:_.colors.background.secondary}],children:_jsx(Text,{style:[F.extensionText,{color:_.colors.text.secondary,...fontFor(_,"semibold")}],children:extensionOf(e.name)})})},removeButton=e=>_jsx(Pressable,{onPress:()=>q(e),disabled:p,hitSlop:8,accessibilityRole:"button",accessibilityLabel:P.removeFile(e.name),style:[F.removeButton,{backgroundColor:_.colors.background.overlay}],children:_jsx(Text,{style:[F.removeButtonText,{color:_.colors.onOverlay}],children:"×"})}),retryButton=e=>C&&"error"===e.status?_jsx(Pressable,{onPress:()=>C(e),disabled:p,hitSlop:8,accessibilityRole:"button",accessibilityLabel:P.retry,children:_jsx(Text,{style:[F.retryText,{color:_.colors.primary}],children:"↻"})}):null,renderOneFile=(e,r)=>{const t={file:e,index:r,disabled:p,remove:()=>q(e),retry:C?()=>C(e):void 0},o=g?g(t):"card"===u?(e=>{const{file:r}=e;return _jsxs(View,{style:[F.tile,{width:R,height:R,borderRadius:I,...smoothCorners,borderColor:"error"===r.status?_.colors.error:_.colors.border.primary}],children:[renderThumbnail(r),renderStatusOverlay(r),"error"===r.status?_jsx(View,{style:[F.tileOverlay,{backgroundColor:_.colors.background.overlay}],children:retryButton(r)}):null,removeButton(r)]})})(t):(e=>{const{file:r}=e,t=statusText(r);return _jsxs(View,{style:[F.listRow,{borderRadius:I,...smoothCorners,borderColor:"error"===r.status?_.colors.error:_.colors.border.primary,backgroundColor:_.colors.background.primary}],children:[_jsxs(View,{style:[F.listThumb,{borderRadius:_.radius.sm,...smoothCorners}],children:[renderThumbnail(r),"processing"===r.status?_jsx(View,{style:[F.tileOverlay,{backgroundColor:_.colors.background.overlay}],children:_jsx(Spinner,{size:"sm"})}):null]}),_jsxs(View,{style:F.listTextWrap,children:[_jsx(Text,{numberOfLines:1,ellipsizeMode:"middle",style:[F.listName,{color:_.colors.text.primary,fontSize:_.typography.fontSize.sm,...fontFor(_,"medium")}],children:r.name}),_jsx(Text,{numberOfLines:1,style:[F.listSubtitle,{color:"error"===r.status?_.colors.error:_.colors.text.tertiary,fontSize:_.typography.fontSize.xs}],children:[formatFileSize(r.size),t].filter(Boolean).join(" · ")}),"uploading"===r.status?_jsx(View,{style:[F.listProgressTrack,{backgroundColor:_.colors.border.primary}],children:_jsx(View,{style:[F.listProgressFill,{width:`${Math.round(100*(r.progress??0))}%`,backgroundColor:_.colors.primary}]})}):null]}),retryButton(r),_jsx(Pressable,{onPress:()=>q(r),disabled:p,hitSlop:8,accessibilityRole:"button",accessibilityLabel:P.removeFile(r.name),children:_jsx(Text,{style:[F.listRemoveText,{color:_.colors.text.tertiary}],children:"×"})})]})})(t);return _jsx(Pressable,{onPress:j?()=>j(e):void 0,disabled:p||!j,accessibilityLabel:fileA11yLabel(e),children:o},e.id)},X={open:N,disabled:p||D,fileCount:O.length,atCapacity:D},dashedTrigger=e=>_jsxs(Pressable,{onPress:()=>N(),disabled:p||D,accessibilityRole:"button",accessibilityLabel:J,accessibilityState:{disabled:p||D},style:({pressed:r})=>[F.trigger,e?F.triggerCompact:null,{borderRadius:I,...smoothCorners,borderColor:V,backgroundColor:r?_.colors.surface.pressed:_.colors.background.primary,opacity:p||D?.55:1}],children:[_jsxs(View,{style:F.triggerRow,children:[Q?Q({size:16,color:_.colors.primary}):null,_jsx(Text,{style:[F.triggerText,{color:_.colors.primary,fontSize:_.typography.fontSize.sm,...fontFor(_,"medium")}],children:0===O.length?P.trigger:P.addMore})]}),!e&&m?_jsx(Text,{style:[F.helperText,{color:_.colors.text.tertiary,fontSize:_.typography.fontSize.xs}],children:m}):null]}),Z=_jsx(Pressable,{onPress:()=>N(),disabled:p||D,accessibilityRole:"button",accessibilityLabel:P.addMore,style:({pressed:e})=>[F.tile,F.addTile,{width:R,height:R,borderRadius:I,...smoothCorners,borderColor:V,backgroundColor:e?_.colors.surface.pressed:"transparent",opacity:p||D?.55:1}],children:_jsx(Text,{style:[F.addTileText,{color:_.colors.primary}],children:"+"})});return _jsxs(View,{style:[F.container,v],testID:k,accessibilityLabel:J,children:["card"===u?0===O.length?h?h(X):dashedTrigger(!1):_jsxs(ScrollView,{horizontal:!0,showsHorizontalScrollIndicator:!1,contentContainerStyle:[F.strip,{columnGap:_.spacing.sm}],children:[O.map(renderOneFile),h?h(X):D||p?null:Z]}):_jsxs(View,{style:{rowGap:_.spacing.sm},children:[h?h(X):D?null:dashedTrigger(O.length>0),O.map(renderOneFile)]}),W?_jsx(Text,{accessibilityLiveRegion:"polite",style:[F.errorText,{color:_.colors.error,fontSize:_.typography.fontSize.xs,marginTop:_.spacing.xxs}],children:W}):null,_jsx(OptionSheet,{open:A,onClose:()=>E(!1),title:P.sheetTitle,options:s,labelOf:e=>e.label,getValue:e=>e.key,disabledOf:()=>!1,descriptionOf:e=>e.description,iconOf:e=>e.icon,isSelected:()=>!1,onSelect:e=>{E(!1),G(e)}})]})});FilePicker.displayName="FilePicker";const buildStyles=e=>StyleSheet.create({container:{width:"100%"},trigger:{borderWidth:1,borderStyle:"dashed",alignItems:"center",paddingVertical:14,paddingHorizontal:16},triggerCompact:{paddingVertical:10},triggerRow:{flexDirection:"row",alignItems:"center",columnGap:8},triggerText:{includeFontPadding:!1},helperText:{includeFontPadding:!1,marginTop:6,textAlign:"center"},strip:{paddingVertical:2},tile:{borderWidth:1,overflow:"hidden"},addTile:{borderStyle:"dashed",alignItems:"center",justifyContent:"center"},addTileText:{fontSize:28,includeFontPadding:!1},thumbnailImage:{width:"100%",height:"100%",resizeMode:"cover"},extensionTile:{width:"100%",height:"100%",alignItems:"center",justifyContent:"center"},extensionText:{fontSize:12,letterSpacing:1,includeFontPadding:!1},tileOverlay:{...StyleSheet.absoluteFill,alignItems:"center",justifyContent:"center"},tileOverlayText:{fontSize:12,includeFontPadding:!1,marginBottom:6},tileProgressTrack:{position:"absolute",left:8,right:8,bottom:8,height:3,borderRadius:2,...smoothCorners,overflow:"hidden"},tileProgressFill:{height:"100%",borderRadius:2,...smoothCorners},doneBadge:{position:"absolute",right:4,bottom:4,width:18,height:18,borderRadius:9,...smoothCorners,alignItems:"center",justifyContent:"center"},doneBadgeText:{fontSize:11,includeFontPadding:!1},removeButton:{position:"absolute",top:4,right:4,width:20,height:20,borderRadius:10,...smoothCorners,alignItems:"center",justifyContent:"center"},removeButtonText:{fontSize:13,lineHeight:15,includeFontPadding:!1},retryText:{fontSize:20,includeFontPadding:!1},listRow:{flexDirection:"row",alignItems:"center",borderWidth:1,padding:10,columnGap:10},listThumb:{width:40,height:40,overflow:"hidden"},listTextWrap:{flex:1},listName:{includeFontPadding:!1},listSubtitle:{includeFontPadding:!1,marginTop:2},listProgressTrack:{height:3,borderRadius:2,...smoothCorners,overflow:"hidden",marginTop:6},listProgressFill:{height:"100%",borderRadius:2,...smoothCorners},listRemoveText:{fontSize:22,includeFontPadding:!1,paddingHorizontal:4},errorText:{includeFontPadding:!1}});export{FilePicker};export default FilePicker;
@@ -1 +1 @@
1
- export{default,FilePicker,formatFileSize}from"./FilePicker.js";
1
+ "use strict";export{default,FilePicker,formatFileSize}from"./FilePicker.js";
@@ -1 +1 @@
1
- import{Logger as e,publicClient as t}from"@webority/mobile-core";import{downloadFile as r}from"@webority/mobile-core/download";import{useCallback as i,useEffect as a,useMemo as o,useRef as n,useState as c}from"react";import{Image as l,PixelRatio as s,ScrollView as h,StyleSheet as d,useWindowDimensions as u,View as p}from"react-native";import m from"../../specs/NativePdfRasterizer.js";import{hashString as f}from"../../utils/hashString.js";import{Spinner as g}from"../Spinner/index.js";import{jsx as w}from"react/jsx-runtime";const y=/^[a-z][a-z0-9+.-]*:/i,toError=e=>e instanceof Error?e:new Error(String(e)),cacheFileName=e=>{const t=(e.split("#")[0]?.split("?")[0]??"").split("/").pop()??"",r=/\.[a-z0-9]{1,8}$/i.exec(t)?.[0]??"";return`${f(e)}${r.toLowerCase()}`};export const FileViewer=({source:d,onLoadComplete:f,onPageChanged:x,onError:v,loadingIndicator:M,style:z,testID:C,accessibilityLabel:I})=>{const{width:P}=u(),[S,V]=c(0),[j,E]=c({width:612,height:792}),F=j.height/j.width,[L,R]=c({}),[$,N]=c(0),W=n(null),D=n(v);D.current=v;const H=n(f);H.current=f;const k=n(x);k.current=x;const A=o(()=>({uri:d.uri,headers:d.headers,client:d.client,cache:d.cache}),[d.uri,d.headers,d.client,d.cache]);a(()=>{let i=!1;return(async()=>{if(m)try{const e=await(async e=>!y.test(e.uri)||e.uri.startsWith("file://")?e.uri.replace(/^file:\/\//,""):(await r({client:e.client??t,url:e.uri,fileName:cacheFileName(e.uri),headers:e.headers,overwrite:!1===e.cache})).path)(A);if(i)return;const a=await m.open(e);if(i)return void await m.close(a.handle).catch(()=>{});W.current=a.handle,V(a.pageCount),N(0),R({}),a.pageWidth>0&&a.pageHeight>0&&E({width:a.pageWidth,height:a.pageHeight}),H.current?.(a.pageCount)}catch(t){if(!i){const r=toError(t);e.error("[@webority/mobile-ui] FileViewer failed to load.",r),D.current?.(r)}}else D.current?.(new Error("[@webority/mobile-ui] PdfRasterizer native module is not linked. Run pod install / rebuild the app after adding @webority/mobile-ui."))})(),()=>{i=!0}},[A]),a(()=>()=>{const e=W.current;e&&m?.close(e).catch(()=>{})},[]);const O=i(async t=>{const r=W.current;if(r&&m)try{const e=((e,t)=>{if(t<=0)return 1;const r=e/t*s.get();return Math.min(Math.max(r,1),3)})(P,j.width),i=await m.renderPage(r,t,e);R(e=>e[t]?e:{...e,[t]:i})}catch(r){e.error(`[@webority/mobile-ui] FileViewer failed to render page ${t}.`,toError(r))}},[j.width,P]),T=P*F;a(()=>{if(0===S)return;const e=Math.max(0,$-1),t=Math.min(S-1,$+1);for(let r=e;r<=t;r+=1)O(r)},[$,S,O]);const q=i(e=>{if(T<=0)return;const t=Math.min(S-1,Math.max(0,Math.round(e.nativeEvent.contentOffset.y/T)));N(e=>(e!==t&&k.current?.(t+1,S),t))},[S,T]),B=o(()=>Array.from({length:S},(e,t)=>t),[S]),G=Math.max(0,$-1),J=Math.min(S-1,$+1);return w(p,{style:[b.root,z],testID:C,accessible:void 0!==I,accessibilityLabel:I,accessibilityRole:"none",children:0===S?w(p,{style:b.pagePlaceholder,children:M?M():w(g,{size:"lg"})}):w(h,{onScroll:q,scrollEventThrottle:32,showsVerticalScrollIndicator:!0,removeClippedSubviews:!0,children:B.map(e=>{const t=e>=G&&e<=J,r=t?L[e]:void 0;return w(p,{style:[b.page,{width:P,height:T}],children:r?w(l,{source:{uri:r},style:b.pageImage,resizeMode:"contain",accessible:!1}):w(p,{style:b.pagePlaceholder,children:t?M?.()??w(g,{size:"lg"}):null})},e)})})})};FileViewer.displayName="FileViewer";const b=d.create({root:{flex:1},page:{alignSelf:"center"},pageImage:{flex:1},pagePlaceholder:{flex:1,alignItems:"center",justifyContent:"center"}});export default FileViewer;
1
+ "use strict";import{Logger,publicClient}from"@webority/mobile-core";import{downloadFile}from"@webority/mobile-core/download";import{useCallback,useEffect,useMemo,useRef,useState}from"react";import{Image,PixelRatio,ScrollView,StyleSheet,useWindowDimensions,View}from"react-native";import PdfRasterizer from"../../specs/NativePdfRasterizer.js";import{hashString}from"../../utils/hashString.js";import{Spinner}from"../Spinner/index.js";import{jsx as _jsx}from"react/jsx-runtime";const HAS_SCHEME=/^[a-z][a-z0-9+.-]*:/i,MAX_RENDER_SCALE=3,RENDER_WINDOW=1,toError=e=>e instanceof Error?e:new Error(String(e)),scaleForWidth=(e,t)=>{if(t<=0)return 1;const r=e/t*PixelRatio.get();return Math.min(Math.max(r,1),3)},cacheFileName=e=>{const t=(e.split("#")[0]?.split("?")[0]??"").split("/").pop()??"",r=/\.[a-z0-9]{1,8}$/i.exec(t)?.[0]??"";return`${hashString(e)}${r.toLowerCase()}`},localPathFromSource=async e=>{if(!HAS_SCHEME.test(e.uri)||e.uri.startsWith("file://"))return e.uri.replace(/^file:\/\//,"");return(await downloadFile({client:e.client??publicClient,url:e.uri,fileName:cacheFileName(e.uri),headers:e.headers,overwrite:!1===e.cache})).path};export const FileViewer=({source:e,onLoadComplete:t,onPageChanged:r,onError:i,loadingIndicator:a,style:o,testID:s,accessibilityLabel:n})=>{const{width:l}=useWindowDimensions(),[c,u]=useState(0),[h,d]=useState({width:612,height:792}),f=h.height/h.width,[m,p]=useState({}),[g,w]=useState(0),y=useRef(null),S=useRef(i);S.current=i;const b=useRef(t);b.current=t;const x=useRef(r);x.current=r;const E=useMemo(()=>({uri:e.uri,headers:e.headers,client:e.client,cache:e.cache}),[e.uri,e.headers,e.client,e.cache]);useEffect(()=>{let e=!1;return(async()=>{if(PdfRasterizer)try{const t=await localPathFromSource(E);if(e)return;const r=await PdfRasterizer.open(t);if(e)return void await PdfRasterizer.close(r.handle).catch(()=>{});y.current=r.handle,u(r.pageCount),w(0),p({}),r.pageWidth>0&&r.pageHeight>0&&d({width:r.pageWidth,height:r.pageHeight}),b.current?.(r.pageCount)}catch(t){if(!e){const e=toError(t);Logger.error("[@webority/mobile-ui] FileViewer failed to load.",e),S.current?.(e)}}else S.current?.(new Error("[@webority/mobile-ui] PdfRasterizer native module is not linked. Run pod install / rebuild the app after adding @webority/mobile-ui."))})(),()=>{e=!0}},[E]),useEffect(()=>()=>{const e=y.current;e&&PdfRasterizer?.close(e).catch(()=>{})},[]);const R=useCallback(async e=>{const t=y.current;if(t&&PdfRasterizer)try{const r=scaleForWidth(l,h.width),i=await PdfRasterizer.renderPage(t,e,r);p(t=>t[e]?t:{...t,[e]:i})}catch(t){Logger.error(`[@webority/mobile-ui] FileViewer failed to render page ${e}.`,toError(t))}},[h.width,l]),P=l*f;useEffect(()=>{if(0===c)return;const e=Math.max(0,g-1),t=Math.min(c-1,g+1);for(let r=e;r<=t;r+=1)R(r)},[g,c,R]);const M=useCallback(e=>{if(P<=0)return;const t=Math.min(c-1,Math.max(0,Math.round(e.nativeEvent.contentOffset.y/P)));w(e=>(e!==t&&x.current?.(t+1,c),t))},[c,P]),j=useMemo(()=>Array.from({length:c},(e,t)=>t),[c]),z=Math.max(0,g-1),C=Math.min(c-1,g+1);return _jsx(View,{style:[styles.root,o],testID:s,accessible:void 0!==n,accessibilityLabel:n,accessibilityRole:"none",children:0===c?_jsx(View,{style:styles.pagePlaceholder,children:a?a():_jsx(Spinner,{size:"lg"})}):_jsx(ScrollView,{onScroll:M,scrollEventThrottle:32,showsVerticalScrollIndicator:!0,removeClippedSubviews:!0,children:j.map(e=>{const t=e>=z&&e<=C,r=t?m[e]:void 0;return _jsx(View,{style:[styles.page,{width:l,height:P}],children:r?_jsx(Image,{source:{uri:r},style:styles.pageImage,resizeMode:"contain",accessible:!1}):_jsx(View,{style:styles.pagePlaceholder,children:t?a?.()??_jsx(Spinner,{size:"lg"}):null})},e)})})})};FileViewer.displayName="FileViewer";const styles=StyleSheet.create({root:{flex:1},page:{alignSelf:"center"},pageImage:{flex:1},pagePlaceholder:{flex:1,alignItems:"center",justifyContent:"center"}});export default FileViewer;
@@ -1 +1 @@
1
- export{FileViewer}from"./FileViewer.js";
1
+ "use strict";export{FileViewer}from"./FileViewer.js";
@@ -1 +1 @@
1
- import t,{forwardRef as e,useCallback as o,useEffect as n,useMemo as r,useRef as i,useState as s}from"react";import{Animated as a,Easing as l,Pressable as c,StyleSheet as d,Text as u,View as m}from"react-native";import{useSafeAreaInsets as p}from"react-native-safe-area-context";import{usePressAnimation as g}from"../../hooks/usePressAnimation.js";import{createAnimatedValue as b,setNativeValue as f,useTheme as y}from"../../theme/index.js";import{ACCENT_PRESSED_TINT as h}from"../../utils/color.js";import{smoothCorners as v}from"../../utils/corners.js";import{resolveHaptic as R,triggerHaptic as w}from"../../utils/hapticUtils.js";import{jsx as S,Fragment as I,jsxs as x}from"react/jsx-runtime";const z={sm:{diameter:40,iconSize:18,fontSize:13,labelPaddingHorizontal:14},md:{diameter:56,iconSize:22,fontSize:15,labelPaddingHorizontal:18},lg:{diameter:72,iconSize:28,fontSize:16,labelPaddingHorizontal:22}},toneBackground=(t,e)=>{switch(e){case"success":return t.colors.success;case"warning":return t.colors.warning;case"error":return t.colors.error;case"neutral":return t.colors.background.tertiary;default:return t.colors.primary}},pressedTintFor=(t,e)=>"neutral"===e?t.colors.surface.pressed:h,toneForeground=(t,e)=>{if("neutral"===e)return t.colors.text.primary;switch(e){case"success":return t.colors.onSuccess;case"warning":return t.colors.onWarning;case"error":return t.colors.onError;default:return t.colors.onPrimary}},C=e((t,e)=>{const{icon:o,onPress:s,label:d,size:h="md",tone:C="primary",position:D,bottomOffset:P,disabled:k=!1,hideOnScroll:L=!1,isScrolling:j=!1,accessibilityLabel:O,accessibilityHint:V,haptic:E,style:H,containerStyle:A,labelStyle:B,testID:F}=t,$=y(),N=p(),T=z[h],W=r(()=>buildStyles($),[$]),{scale:Y,pressIn:G,pressOut:M}=g({enabled:!k}),Q=$.components.floatingActionButton,U=Q?.edgeOffset??24,q=Q?.bottomOffset??24,J=i(b(0)).current;n(()=>{if(!L)return void f(J,0);const t=a.timing(J,{toValue:j?1:0,duration:$.motion.duration.normal,easing:l.bezier(...$.motion.easing.standard),useNativeDriver:!0});return t.start(),()=>t.stop()},[L,j,J,$.motion.duration.normal,$.motion.easing.standard]);const K=J.interpolate({inputRange:[0,1],outputRange:[0,T.diameter+(P??q)+N.bottom+U]}),X=J.interpolate({inputRange:[0,1],outputRange:[1,0]}),Z=o,_="string"==typeof d&&d.length>0,tt=k?$.colors.surface.disabled:toneBackground($,C),et=k?$.colors.text.disabled:toneForeground($,C),ot=r(()=>{if(!D)return null;const t=(P??q)+N.bottom;switch(D){case"bottomLeft":return{position:"absolute",bottom:t,left:U};case"bottomCenter":return{position:"absolute",bottom:t,alignSelf:"center"};default:return{position:"absolute",bottom:t,right:U}}},[D,P,N.bottom,q,U]);return S(a.View,{style:[ot,{transform:[{translateY:K},{scale:Y}],opacity:X},A,H],pointerEvents:L&&j?"none":"auto",children:S(c,{ref:e,onPress:t=>{if(k)return;const e=R(E,"impactLight");e&&w(e),s()},onPressIn:G,onPressOut:M,disabled:k,accessibilityRole:"button",accessibilityLabel:O,accessibilityHint:V,accessibilityState:{disabled:k},testID:F,style:[W.base,_?{height:T.diameter,paddingHorizontal:T.labelPaddingHorizontal,borderRadius:T.diameter/2,...v}:{width:T.diameter,height:T.diameter,borderRadius:T.diameter/2,...v},$.shadows.lg,{backgroundColor:tt,opacity:k?.55:1}],children:({pressed:t})=>x(I,{children:[t&&!k?S(m,{pointerEvents:"none",testID:"fab-pressed",style:[W.pressedTint,{backgroundColor:pressedTintFor($,C),borderRadius:T.diameter/2,...v}]}):null,Z,_?S(u,{style:[W.label,{color:et,fontSize:T.fontSize,fontWeight:$.typography.fontWeight.semibold,marginLeft:$.spacing.sm},B],numberOfLines:1,children:d}):null]})})})});C.displayName="FloatingActionButton";const buildStyles=t=>d.create({base:{flexDirection:"row",alignItems:"center",justifyContent:"center",overflow:"hidden"},pressedTint:{position:"absolute",top:0,right:0,bottom:0,left:0},label:{includeFontPadding:!1}}),FloatingActionButtonGroup=e=>{const{primaryIcon:g,primaryActiveIcon:C,actions:D,open:P,defaultOpen:k=!1,onOpenChange:L,position:j="bottomRight",bottomOffset:O,size:V="md",accessibilityLabel:E="Quick actions",haptic:H,hideOnScroll:A=!1,isScrolling:B=!1,containerStyle:F,secondaryActionStyle:$,labelPillStyle:N,labelStyle:T,testID:W}=e,Y=y(),G=p(),M=z[V],Q=r(()=>buildGroupStyles(Y),[Y]),U=Y.components.floatingActionButton,q=U?.edgeOffset??24,J=U?.bottomOffset??24,K=U?.secondaryGap??16,X=U?.staggerMs??50,Z="boolean"==typeof P,[_,tt]=s(k),et=Z?P:_,ot=i(b(0)).current;n(()=>{if(!A)return void f(ot,0);const t=a.timing(ot,{toValue:B?1:0,duration:Y.motion.duration.normal,easing:l.bezier(...Y.motion.easing.standard),useNativeDriver:!0});return t.start(),()=>t.stop()},[A,B,ot,Y.motion.duration.normal,Y.motion.easing.standard]);const nt=A&&B;n(()=>{nt&&et&&(Z||tt(!1),L?.(!1))},[nt,et,Z,L]);const rt=ot.interpolate({inputRange:[0,1],outputRange:[0,M.diameter+(O??J)+G.bottom+q]}),it=ot.interpolate({inputRange:[0,1],outputRange:[1,0]}),st=i(b(et?1:0)).current,at=i([]),[lt,ct]=s(0);n(()=>{const t=at.current;if(t.length!==D.length){if(t.length<D.length){const e=t.slice();for(let o=t.length;o<D.length;o+=1)e.push(new a.Value(et?1:0));at.current=e}else at.current=t.slice(0,D.length);ct(t=>t+1)}},[D.length]),n(()=>{const t=a.timing(st,{toValue:et?1:0,duration:Y.motion.duration.normal,easing:l.bezier(...Y.motion.easing.standard),useNativeDriver:!0});t.start();const e=at.current.map(t=>a.timing(t,{toValue:et?1:0,duration:Y.motion.duration.normal,easing:l.bezier(...Y.motion.easing.standard),useNativeDriver:!0})),o=et?e:[...e].reverse(),n=a.stagger(X,o);return n.start(),()=>{t.stop(),n.stop()}},[et,st,Y.motion.duration.normal,Y.motion.easing.standard,D.length,lt,X]);const dt=o(t=>{const e=R(H,"impactLight");e&&w(e),Z||tt(t),L?.(t)},[Z,L,H]),ut=o(()=>{dt(!et)},[et,dt]),mt=o(t=>{!1!==H&&w("selection"),t.onPress(),Z||tt(!1),L?.(!1)},[Z,L,H]),pt=o(()=>{et&&dt(!1)},[et,dt]),gt=r(()=>{const t=(O??J)+G.bottom;switch(j){case"bottomLeft":return{position:"absolute",bottom:t,left:q,alignItems:"flex-start"};case"bottomCenter":return{position:"absolute",bottom:t,alignSelf:"center",alignItems:"center"};default:return{position:"absolute",bottom:t,right:q,alignItems:"flex-end"}}},[j,O,G.bottom,J,q]),slotOffset=t=>-(M.diameter+K)*(t+1),bt=r(()=>{switch(j){case"bottomLeft":return{left:0,right:0,justifyContent:"flex-start"};case"bottomCenter":return{left:0,right:0,justifyContent:"center"};default:return{left:0,right:0,justifyContent:"flex-end"}}},[j]),ft=.78*M.diameter,yt=r(()=>{const t=ft+Y.spacing.sm;switch(j){case"bottomLeft":return{left:t,alignItems:"flex-start"};case"bottomCenter":return{right:M.diameter/2+ft/2+Y.spacing.sm,alignItems:"flex-end"};default:return{right:t,alignItems:"flex-end"}}},[j,ft,M.diameter,Y.spacing.sm]),ht=st.interpolate({inputRange:[0,1],outputRange:[0,.4]}),vt=st.interpolate({inputRange:[0,1],outputRange:["0deg","45deg"]});return x(I,{children:[et?S(a.View,{pointerEvents:et?"auto":"none",style:[d.absoluteFill,{backgroundColor:Y.colors.background.overlay,opacity:ht}],children:S(c,{style:d.absoluteFill,onPress:pt,accessibilityElementsHidden:!0,importantForAccessibility:"no",testID:W?`${W}-backdrop`:void 0})}):null,x(a.View,{pointerEvents:nt?"none":"box-none",style:[gt,{transform:[{translateY:rt}],opacity:it},F],accessibilityRole:"menu",testID:W,children:[D.map((e,o)=>{const n=at.current[o];if(!n)return null;const r=n.interpolate({inputRange:[0,1],outputRange:[0,slotOffset(o)]}),i=n.interpolate({inputRange:[0,1],outputRange:[.6,1]}),s=toneBackground(Y,e.tone??"primary"),l=toneForeground(Y,e.tone??"primary"),d=e.label?S(m,{pointerEvents:"none",style:[Q.labelSlot,yt],testID:W?`${W}-label-${e.key}`:void 0,children:S(m,{style:[Q.labelPill,Y.shadows.sm,{backgroundColor:Y.colors.background.elevated,paddingHorizontal:Y.spacing.sm,paddingVertical:Y.spacing.xs,borderRadius:Y.radius.sm,...v},N],children:S(u,{style:[{color:Y.colors.text.primary,fontSize:Y.typography.fontSize.sm,fontWeight:Y.typography.fontWeight.medium},T],numberOfLines:1,children:e.label})})}):null;return x(a.View,{pointerEvents:et?"auto":"none",style:[Q.secondaryRow,bt,{position:"absolute",bottom:0,opacity:n,transform:[{translateY:r},{scale:i}]}],children:[S(c,{onPress:()=>mt(e),accessibilityRole:"menuitem",accessibilityLabel:e.accessibilityLabel,style:[Q.fabBase,Y.shadows.md,{width:ft,height:ft,borderRadius:ft/2,...v,backgroundColor:s},$],testID:W?`${W}-action-${e.key}`:void 0,children:({pressed:o})=>x(I,{children:[o?S(m,{pointerEvents:"none",testID:"fab-pressed",style:[Q.pressedTint,{backgroundColor:pressedTintFor(Y,e.tone??"primary"),borderRadius:ft/2,...v}]}):null,t.isValidElement(e.icon)?e.icon:S(u,{style:{color:l},children:String(e.icon??"")})]})}),d]},e.key)}),S(c,{onPress:ut,accessibilityRole:"button",accessibilityLabel:E,accessibilityState:{expanded:et},style:[Q.fabBase,Y.shadows.lg,{width:M.diameter,height:M.diameter,borderRadius:M.diameter/2,...v,backgroundColor:Y.colors.primary}],testID:W?`${W}-primary`:void 0,children:({pressed:t})=>x(I,{children:[t?S(m,{pointerEvents:"none",testID:"fab-pressed",style:[Q.pressedTint,{backgroundColor:h,borderRadius:M.diameter/2,...v}]}):null,S(a.View,{style:C?void 0:{transform:[{rotate:vt}]},children:et&&C?C:g})]})})]})]})},buildGroupStyles=t=>d.create({fabBase:{flexDirection:"row",alignItems:"center",justifyContent:"center",overflow:"hidden"},pressedTint:{position:"absolute",top:0,right:0,bottom:0,left:0},secondaryRow:{flexDirection:"row",alignItems:"center"},labelSlot:{position:"absolute",top:0,bottom:0,justifyContent:"center"},labelPill:{alignSelf:"auto"}});export{C as FloatingActionButton,FloatingActionButtonGroup};export default C;
1
+ "use strict";import React,{forwardRef,useCallback,useEffect,useMemo,useRef,useState}from"react";import{Animated,Easing,Pressable,StyleSheet,Text,View}from"react-native";import{useSafeAreaInsets}from"react-native-safe-area-context";import{usePressAnimation}from"../../hooks/usePressAnimation.js";import{createAnimatedValue,setNativeValue,useTheme}from"../../theme/index.js";import{ACCENT_PRESSED_TINT}from"../../utils/color.js";import{smoothCorners}from"../../utils/corners.js";import{resolveHaptic,triggerHaptic}from"../../utils/hapticUtils.js";import{jsx as _jsx,Fragment as _Fragment,jsxs as _jsxs}from"react/jsx-runtime";const sizeMap={sm:{diameter:40,iconSize:18,fontSize:13,labelPaddingHorizontal:14},md:{diameter:56,iconSize:22,fontSize:15,labelPaddingHorizontal:18},lg:{diameter:72,iconSize:28,fontSize:16,labelPaddingHorizontal:22}},toneBackground=(e,t)=>{switch(t){case"success":return e.colors.success;case"warning":return e.colors.warning;case"error":return e.colors.error;case"neutral":return e.colors.background.tertiary;default:return e.colors.primary}},pressedTintFor=(e,t)=>"neutral"===t?e.colors.surface.pressed:ACCENT_PRESSED_TINT,toneForeground=(e,t)=>{if("neutral"===t)return e.colors.text.primary;switch(t){case"success":return e.colors.onSuccess;case"warning":return e.colors.onWarning;case"error":return e.colors.onError;default:return e.colors.onPrimary}},FloatingActionButton=forwardRef((e,t)=>{const{icon:o,onPress:n,label:s,size:r="md",tone:i="primary",position:a,bottomOffset:l,disabled:c=!1,hideOnScroll:u=!1,isScrolling:d=!1,accessibilityLabel:m,accessibilityHint:g,haptic:p,style:b,containerStyle:f,labelStyle:h,testID:y}=e,S=useTheme(),x=useSafeAreaInsets(),R=sizeMap[r],C=useMemo(()=>buildStyles(S),[S]),{scale:j,pressIn:v,pressOut:w}=usePressAnimation({enabled:!c}),A=S.components.floatingActionButton,_=A?.edgeOffset??24,E=A?.bottomOffset??24,I=useRef(createAnimatedValue(0)).current;useEffect(()=>{if(!u)return void setNativeValue(I,0);const e=Animated.timing(I,{toValue:d?1:0,duration:S.motion.duration.normal,easing:Easing.bezier(...S.motion.easing.standard),useNativeDriver:!0});return e.start(),()=>e.stop()},[u,d,I,S.motion.duration.normal,S.motion.easing.standard]);const P=I.interpolate({inputRange:[0,1],outputRange:[0,R.diameter+(l??E)+x.bottom+_]}),k=I.interpolate({inputRange:[0,1],outputRange:[1,0]}),z=o,V="string"==typeof s&&s.length>0,T=c?S.colors.surface.disabled:toneBackground(S,i),F=c?S.colors.text.disabled:toneForeground(S,i),D=useMemo(()=>{if(!a)return null;const e=(l??E)+x.bottom;switch(a){case"bottomLeft":return{position:"absolute",bottom:e,left:_};case"bottomCenter":return{position:"absolute",bottom:e,alignSelf:"center"};default:return{position:"absolute",bottom:e,right:_}}},[a,l,x.bottom,E,_]);return _jsx(Animated.View,{style:[D,{transform:[{translateY:P},{scale:j}],opacity:k},f,b],pointerEvents:u&&d?"none":"auto",children:_jsx(Pressable,{ref:t,onPress:e=>{if(c)return;const t=resolveHaptic(p,"impactLight");t&&triggerHaptic(t),n()},onPressIn:v,onPressOut:w,disabled:c,accessibilityRole:"button",accessibilityLabel:m,accessibilityHint:g,accessibilityState:{disabled:c},testID:y,style:[C.base,V?{height:R.diameter,paddingHorizontal:R.labelPaddingHorizontal,borderRadius:R.diameter/2,...smoothCorners}:{width:R.diameter,height:R.diameter,borderRadius:R.diameter/2,...smoothCorners},S.shadows.lg,{backgroundColor:T,opacity:c?.55:1}],children:({pressed:e})=>_jsxs(_Fragment,{children:[e&&!c?_jsx(View,{pointerEvents:"none",testID:"fab-pressed",style:[C.pressedTint,{backgroundColor:pressedTintFor(S,i),borderRadius:R.diameter/2,...smoothCorners}]}):null,z,V?_jsx(Text,{style:[C.label,{color:F,fontSize:R.fontSize,fontWeight:S.typography.fontWeight.semibold,marginLeft:S.spacing.sm},h],numberOfLines:1,children:s}):null]})})})});FloatingActionButton.displayName="FloatingActionButton";const buildStyles=e=>StyleSheet.create({base:{flexDirection:"row",alignItems:"center",justifyContent:"center",overflow:"hidden"},pressedTint:{position:"absolute",top:0,right:0,bottom:0,left:0},label:{includeFontPadding:!1}}),FloatingActionButtonGroup=e=>{const{primaryIcon:t,primaryActiveIcon:o,actions:n,open:s,defaultOpen:r=!1,onOpenChange:i,position:a="bottomRight",bottomOffset:l,size:c="md",accessibilityLabel:u="Quick actions",haptic:d,hideOnScroll:m=!1,isScrolling:g=!1,containerStyle:p,secondaryActionStyle:b,labelPillStyle:f,labelStyle:h,testID:y}=e,S=useTheme(),x=useSafeAreaInsets(),R=sizeMap[c],C=useMemo(()=>buildGroupStyles(S),[S]),j=S.components.floatingActionButton,v=j?.edgeOffset??24,w=j?.bottomOffset??24,A=j?.secondaryGap??16,_=j?.staggerMs??50,E="boolean"==typeof s,[I,P]=useState(r),k=E?s:I,z=useRef(createAnimatedValue(0)).current;useEffect(()=>{if(!m)return void setNativeValue(z,0);const e=Animated.timing(z,{toValue:g?1:0,duration:S.motion.duration.normal,easing:Easing.bezier(...S.motion.easing.standard),useNativeDriver:!0});return e.start(),()=>e.stop()},[m,g,z,S.motion.duration.normal,S.motion.easing.standard]);const V=m&&g;useEffect(()=>{V&&k&&(E||P(!1),i?.(!1))},[V,k,E,i]);const T=z.interpolate({inputRange:[0,1],outputRange:[0,R.diameter+(l??w)+x.bottom+v]}),F=z.interpolate({inputRange:[0,1],outputRange:[1,0]}),D=useRef(createAnimatedValue(k?1:0)).current,H=useRef([]),[B,L]=useState(0);useEffect(()=>{const e=H.current;if(e.length!==n.length){if(e.length<n.length){const t=e.slice();for(let o=e.length;o<n.length;o+=1)t.push(new Animated.Value(k?1:0));H.current=t}else H.current=e.slice(0,n.length);L(e=>e+1)}},[n.length]),useEffect(()=>{const e=Animated.timing(D,{toValue:k?1:0,duration:S.motion.duration.normal,easing:Easing.bezier(...S.motion.easing.standard),useNativeDriver:!0});e.start();const t=H.current.map(e=>Animated.timing(e,{toValue:k?1:0,duration:S.motion.duration.normal,easing:Easing.bezier(...S.motion.easing.standard),useNativeDriver:!0})),o=k?t:[...t].reverse(),n=Animated.stagger(_,o);return n.start(),()=>{e.stop(),n.stop()}},[k,D,S.motion.duration.normal,S.motion.easing.standard,n.length,B,_]);const N=useCallback(e=>{const t=resolveHaptic(d,"impactLight");t&&triggerHaptic(t),E||P(e),i?.(e)},[E,i,d]),O=useCallback(()=>{N(!k)},[k,N]),M=useCallback(e=>{!1!==d&&triggerHaptic("selection"),e.onPress(),E||P(!1),i?.(!1)},[E,i,d]),$=useCallback(()=>{k&&N(!1)},[k,N]),G=useMemo(()=>{const e=(l??w)+x.bottom;switch(a){case"bottomLeft":return{position:"absolute",bottom:e,left:v,alignItems:"flex-start"};case"bottomCenter":return{position:"absolute",bottom:e,alignSelf:"center",alignItems:"center"};default:return{position:"absolute",bottom:e,right:v,alignItems:"flex-end"}}},[a,l,x.bottom,w,v]),slotOffset=e=>-(R.diameter+A)*(e+1),W=useMemo(()=>{switch(a){case"bottomLeft":return{left:0,right:0,justifyContent:"flex-start"};case"bottomCenter":return{left:0,right:0,justifyContent:"center"};default:return{left:0,right:0,justifyContent:"flex-end"}}},[a]),Y=.78*R.diameter,Q=useMemo(()=>{const e=Y+S.spacing.sm;switch(a){case"bottomLeft":return{left:e,alignItems:"flex-start"};case"bottomCenter":return{right:R.diameter/2+Y/2+S.spacing.sm,alignItems:"flex-end"};default:return{right:e,alignItems:"flex-end"}}},[a,Y,R.diameter,S.spacing.sm]),U=D.interpolate({inputRange:[0,1],outputRange:[0,.4]}),q=D.interpolate({inputRange:[0,1],outputRange:["0deg","45deg"]});return _jsxs(_Fragment,{children:[k?_jsx(Animated.View,{pointerEvents:k?"auto":"none",style:[StyleSheet.absoluteFill,{backgroundColor:S.colors.background.overlay,opacity:U}],children:_jsx(Pressable,{style:StyleSheet.absoluteFill,onPress:$,accessibilityElementsHidden:!0,importantForAccessibility:"no",testID:y?`${y}-backdrop`:void 0})}):null,_jsxs(Animated.View,{pointerEvents:V?"none":"box-none",style:[G,{transform:[{translateY:T}],opacity:F},p],accessibilityRole:"menu",testID:y,children:[n.map((e,t)=>{const o=H.current[t];if(!o)return null;const n=o.interpolate({inputRange:[0,1],outputRange:[0,slotOffset(t)]}),s=o.interpolate({inputRange:[0,1],outputRange:[.6,1]}),r=toneBackground(S,e.tone??"primary"),i=toneForeground(S,e.tone??"primary"),a=e.label?_jsx(View,{pointerEvents:"none",style:[C.labelSlot,Q],testID:y?`${y}-label-${e.key}`:void 0,children:_jsx(View,{style:[C.labelPill,S.shadows.sm,{backgroundColor:S.colors.background.elevated,paddingHorizontal:S.spacing.sm,paddingVertical:S.spacing.xs,borderRadius:S.radius.sm,...smoothCorners},f],children:_jsx(Text,{style:[{color:S.colors.text.primary,fontSize:S.typography.fontSize.sm,fontWeight:S.typography.fontWeight.medium},h],numberOfLines:1,children:e.label})})}):null;return _jsxs(Animated.View,{pointerEvents:k?"auto":"none",style:[C.secondaryRow,W,{position:"absolute",bottom:0,opacity:o,transform:[{translateY:n},{scale:s}]}],children:[_jsx(Pressable,{onPress:()=>M(e),accessibilityRole:"menuitem",accessibilityLabel:e.accessibilityLabel,style:[C.fabBase,S.shadows.md,{width:Y,height:Y,borderRadius:Y/2,...smoothCorners,backgroundColor:r},b],testID:y?`${y}-action-${e.key}`:void 0,children:({pressed:t})=>_jsxs(_Fragment,{children:[t?_jsx(View,{pointerEvents:"none",testID:"fab-pressed",style:[C.pressedTint,{backgroundColor:pressedTintFor(S,e.tone??"primary"),borderRadius:Y/2,...smoothCorners}]}):null,React.isValidElement(e.icon)?e.icon:_jsx(Text,{style:{color:i},children:String(e.icon??"")})]})}),a]},e.key)}),_jsx(Pressable,{onPress:O,accessibilityRole:"button",accessibilityLabel:u,accessibilityState:{expanded:k},style:[C.fabBase,S.shadows.lg,{width:R.diameter,height:R.diameter,borderRadius:R.diameter/2,...smoothCorners,backgroundColor:S.colors.primary}],testID:y?`${y}-primary`:void 0,children:({pressed:e})=>_jsxs(_Fragment,{children:[e?_jsx(View,{pointerEvents:"none",testID:"fab-pressed",style:[C.pressedTint,{backgroundColor:ACCENT_PRESSED_TINT,borderRadius:R.diameter/2,...smoothCorners}]}):null,_jsx(Animated.View,{style:o?void 0:{transform:[{rotate:q}]},children:k&&o?o:t})]})})]})]})},buildGroupStyles=e=>StyleSheet.create({fabBase:{flexDirection:"row",alignItems:"center",justifyContent:"center",overflow:"hidden"},pressedTint:{position:"absolute",top:0,right:0,bottom:0,left:0},secondaryRow:{flexDirection:"row",alignItems:"center"},labelSlot:{position:"absolute",top:0,bottom:0,justifyContent:"center"},labelPill:{alignSelf:"auto"}});export{FloatingActionButton,FloatingActionButtonGroup};export default FloatingActionButton;
@@ -1 +1 @@
1
- export{default,FloatingActionButton,FloatingActionButtonGroup}from"./FloatingActionButton.js";
1
+ "use strict";export{default,FloatingActionButton,FloatingActionButtonGroup}from"./FloatingActionButton.js";
@@ -1 +1 @@
1
- import{Logger as e,VersionCheck as t}from"@webority/mobile-core";import a,{useCallback as o,useState as l}from"react";import{Dialog as r}from"../Dialog/index.js";import{jsx as i}from"react/jsx-runtime";export const ForceUpdateDialog=({visible:a,onClose:s,mandatory:n=!1,updateUrl:p,title:m="Update available",message:c="A new version of the app is available. Please update to continue using the latest features and security improvements.",updateLabel:d="Update now",laterLabel:y="Later",containerStyle:u,titleStyle:b,messageStyle:g,testID:f})=>{const[U,v]=l(!1),D=o(()=>{v(!0),(async()=>{try{await t.openUpdateUrl(p??null)}catch(t){e.error("[ForceUpdateDialog] Failed to open store URL",t)}finally{v(!1)}})()},[p]),S=o(()=>{n||s?.()},[n,s]);return i(r,{visible:a,onClose:S,title:m,message:c,variant:"info",actions:n?[{label:d,onPress:D,tone:"primary",loading:U}]:[{label:y,onPress:S,tone:"neutral"},{label:d,onPress:D,tone:"primary",loading:U}],dismissOnAction:!1,containerStyle:u,titleStyle:b,messageStyle:g,testID:f})};export default ForceUpdateDialog;
1
+ "use strict";import{Logger,VersionCheck}from"@webority/mobile-core";import React,{useCallback,useState}from"react";import{Dialog}from"../Dialog/index.js";import{jsx as _jsx}from"react/jsx-runtime";export const ForceUpdateDialog=({visible:e,onClose:t,mandatory:a=!1,updateUrl:o,title:l="Update available",message:s="A new version of the app is available. Please update to continue using the latest features and security improvements.",updateLabel:r="Update now",laterLabel:i="Later",containerStyle:n,titleStyle:c,messageStyle:p,testID:m})=>{const[u,d]=useState(!1),g=useCallback(()=>{d(!0),(async()=>{try{await VersionCheck.openUpdateUrl(o??null)}catch(e){Logger.error("[ForceUpdateDialog] Failed to open store URL",e)}finally{d(!1)}})()},[o]),b=useCallback(()=>{a||t?.()},[a,t]);return _jsx(Dialog,{visible:e,onClose:b,title:l,message:s,variant:"info",actions:a?[{label:r,onPress:g,tone:"primary",loading:u}]:[{label:i,onPress:b,tone:"neutral"},{label:r,onPress:g,tone:"primary",loading:u}],dismissOnAction:!1,containerStyle:n,titleStyle:c,messageStyle:p,testID:m})};export default ForceUpdateDialog;
@@ -1 +1 @@
1
- export{default,ForceUpdateDialog}from"./ForceUpdateDialog.js";
1
+ "use strict";export{default,ForceUpdateDialog}from"./ForceUpdateDialog.js";
@@ -1 +1 @@
1
- import e,{forwardRef as r,useEffect as n,useMemo as l,useRef as t}from"react";import{Animated as i,StyleSheet as o,Text as s,View as a}from"react-native";import{useOptionalFormContext as c}from"../../form/FormContext.js";import{createAnimatedValue as u,fontFor as p,useTheme as d}from"../../theme/index.js";import{fieldTextAsString as m,hasFieldText as f,RequiredMark as h}from"../FieldBase/index.js";import{jsx as y,jsxs as x}from"react/jsx-runtime";const b=r((r,o)=>{const{label:p,help:b,helperText:S,error:g,required:v=!1,name:I,children:F,layout:k="stacked",helperLines:L,labelStyle:w,helperStyle:j,errorStyle:z,containerStyle:D,inputContainerStyle:C,accessibilityLabel:T,testID:B}=r,E=d(),R=l(()=>buildStyles(E),[E]),V=c(),W=null!=I&&null!=V,q=W?V.getFieldProps(I):null,N="function"==typeof F,O=W?N?q?.error:void 0:g,$=m(W?q?.error:g),H=t(u(O?1:0)).current;n(()=>{const e=i.timing(H,{toValue:O?1:0,duration:E.motion.duration.fast,useNativeDriver:!0});return e.start(),()=>e.stop()},[O,H,E.motion.duration.fast]);const P=l(()=>{if(T)return T;const e=m(p);return e?$?`${e}, error: ${$}`:e:void 0},[T,p,$]),A=f(p),G=x(s,{style:[R.label,"inline"!==k||f(b)?null:R.labelInline,f(b)?R.labelShrink:null,w],children:[p,v?y(h,{}):null]}),J=A?f(b)?x(a,{style:[R.labelRow,"inline"===k?R.labelInline:null],children:[G,y(a,{style:[R.help,{marginLeft:E.spacing.xs}],children:b})]}):G:null,K="inline"===k?R.inputInline:R.inputStacked,M=f(O),Q=!M&&f(S),U=(()=>{if(N)return q?F(q):null;if(W&&q&&e.isValidElement(F)){const r=F,n=r.props.onChangeText,l=r.props.onBlur,t=r.props.onFocus;return e.cloneElement(r,{value:q.value,onChangeText:e=>{q.onChangeText(e),n?.(e)},onBlur:e=>{q.onBlur(),l?.(e)},onFocus:e=>{q.onFocus(),t?.(e)},error:q.error,ref:e=>V.registerField(I,e??null)})}return F})(),X=v&&!A&&e.isValidElement(U)?e.cloneElement(U,{required:!0}):U;return x(a,{ref:o,style:["inline"===k?R.rootInline:R.rootStacked,D],accessibilityLabel:P,accessibilityHint:$||void 0,testID:B,children:[J,y(a,{style:[K,C],children:X}),Q?y(s,{style:[R.helper,j],numberOfLines:L||void 0,children:S}):null,M?y(i.Text,{style:[R.error,{opacity:H},z],numberOfLines:L||void 0,accessibilityLiveRegion:"polite",children:O}):null]})});b.displayName="FormField";const buildStyles=e=>o.create({rootStacked:{flexDirection:"column",gap:e.spacing.xs},rootInline:{flexDirection:"row",alignItems:"center",flexWrap:"wrap",gap:e.spacing.xs},label:{fontSize:e.typography.fontSize.sm,...p(e,"medium"),color:e.colors.text.secondary},labelShrink:{flexShrink:1},labelRow:{flexDirection:"row",alignItems:"center"},help:{flexShrink:0},labelInline:{width:e.components.formField?.inlineLabelWidth??"35%"},inputStacked:{width:"100%"},inputInline:{flex:1,minWidth:0},helper:{fontSize:e.typography.fontSize.sm,color:e.colors.text.tertiary},error:{fontSize:e.typography.fontSize.sm,color:e.colors.error}});export{b as FormField};export default b;
1
+ "use strict";import React,{forwardRef,useEffect,useMemo,useRef}from"react";import{Animated,StyleSheet,Text,View}from"react-native";import{useOptionalFormContext}from"../../form/FormContext.js";import{createAnimatedValue,fontFor,useTheme}from"../../theme/index.js";import{fieldTextAsString,hasFieldText,RequiredMark}from"../FieldBase/index.js";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";const FormField=forwardRef((e,t)=>{const{label:r,help:i,helperText:l,error:n,required:o=!1,name:s,children:a,layout:c="stacked",helperLines:u,labelStyle:d,helperStyle:m,errorStyle:x,containerStyle:f,inputContainerStyle:p,accessibilityLabel:h,testID:y}=e,F=useTheme(),S=useMemo(()=>buildStyles(F),[F]),b=useOptionalFormContext(),g=null!=s&&null!=b,T=g?b.getFieldProps(s):null,j="function"==typeof a,w=g?j?T?.error:void 0:n,R=fieldTextAsString(g?T?.error:n),k=useRef(createAnimatedValue(w?1:0)).current;useEffect(()=>{const e=Animated.timing(k,{toValue:w?1:0,duration:F.motion.duration.fast,useNativeDriver:!0});return e.start(),()=>e.stop()},[w,k,F.motion.duration.fast]);const v=useMemo(()=>{if(h)return h;const e=fieldTextAsString(r);return e?R?`${e}, error: ${R}`:e:void 0},[h,r,R]),I=hasFieldText(r),V=_jsxs(Text,{style:[S.label,"inline"!==c||hasFieldText(i)?null:S.labelInline,hasFieldText(i)?S.labelShrink:null,d],children:[r,o?_jsx(RequiredMark,{}):null]}),_=I?hasFieldText(i)?_jsxs(View,{style:[S.labelRow,"inline"===c?S.labelInline:null],children:[V,_jsx(View,{style:[S.help,{marginLeft:F.spacing.xs}],children:i})]}):V:null,A="inline"===c?S.inputInline:S.inputStacked,L=hasFieldText(w),C=!L&&hasFieldText(l),z=(()=>{if(j)return T?a(T):null;if(g&&T&&React.isValidElement(a)){const e=a,t=e.props.onChangeText,r=e.props.onBlur,i=e.props.onFocus;return React.cloneElement(e,{value:T.value,onChangeText:e=>{T.onChangeText(e),t?.(e)},onBlur:e=>{T.onBlur(),r?.(e)},onFocus:e=>{T.onFocus(),i?.(e)},error:T.error,ref:e=>b.registerField(s,e??null)})}return a})(),D=o&&!I&&React.isValidElement(z)?React.cloneElement(z,{required:!0}):z;return _jsxs(View,{ref:t,style:["inline"===c?S.rootInline:S.rootStacked,f],accessibilityLabel:v,accessibilityHint:R||void 0,testID:y,children:[_,_jsx(View,{style:[A,p],children:D}),C?_jsx(Text,{style:[S.helper,m],numberOfLines:u||void 0,children:l}):null,L?_jsx(Animated.Text,{style:[S.error,{opacity:k},x],numberOfLines:u||void 0,accessibilityLiveRegion:"polite",children:w}):null]})});FormField.displayName="FormField";const buildStyles=e=>StyleSheet.create({rootStacked:{flexDirection:"column",gap:e.spacing.xs},rootInline:{flexDirection:"row",alignItems:"center",flexWrap:"wrap",gap:e.spacing.xs},label:{fontSize:e.typography.fontSize.sm,...fontFor(e,"medium"),color:e.colors.text.secondary},labelShrink:{flexShrink:1},labelRow:{flexDirection:"row",alignItems:"center"},help:{flexShrink:0},labelInline:{width:e.components.formField?.inlineLabelWidth??"35%"},inputStacked:{width:"100%"},inputInline:{flex:1,minWidth:0},helper:{fontSize:e.typography.fontSize.sm,color:e.colors.text.tertiary},error:{fontSize:e.typography.fontSize.sm,color:e.colors.error}});export{FormField};export default FormField;
@@ -1 +1 @@
1
- export{default,FormField}from"./FormField.js";
1
+ "use strict";export{default,FormField}from"./FormField.js";
@@ -1 +1 @@
1
- import{forwardRef as r}from"react";import{StyleSheet as e,View as o}from"react-native";import{useTheme as t}from"../../theme/index.js";import{tintOf as s}from"../../utils/color.js";import{smoothCorners as i}from"../../utils/corners.js";import{renderSlotIcon as c}from"../AppIcon/slotIcon.js";import{jsx as a}from"react/jsx-runtime";const n={sm:{diameter:32,icon:16},md:{diameter:40,icon:20},lg:{diameter:56,icon:28}},l=r((r,e)=>{const{icon:l,iconVariant:d,size:u="md",tone:y="primary",accessibilityLabel:p,style:b,testID:f}=r,g=t(),j=n[u],h=((r,e)=>{switch(e){case"secondary":return r.colors.secondary;case"success":return r.colors.success;case"warning":return r.colors.warning;case"error":return r.colors.error;case"info":return r.colors.info;case"neutral":return r.colors.text.secondary;default:return r.colors.primary}})(g,y),x="neutral"===y?g.colors.background.tertiary:s(h,.14,g.colors.background.tertiary),I={color:h,size:j.icon,disabled:!1},w=void 0!==p;return a(o,{ref:e,testID:f,accessible:w,accessibilityRole:w?"image":void 0,accessibilityLabel:p,importantForAccessibility:w?"yes":"no",style:[m.base,{width:j.diameter,height:j.diameter,borderRadius:j.diameter/2,...i,backgroundColor:x},b],children:c(l,I,d)})});l.displayName="IconBadge";const m=e.create({base:{alignItems:"center",justifyContent:"center"}});export{l as IconBadge};export default l;
1
+ "use strict";import{forwardRef}from"react";import{StyleSheet,View}from"react-native";import{useTheme}from"../../theme/index.js";import{tintOf}from"../../utils/color.js";import{smoothCorners}from"../../utils/corners.js";import{renderSlotIcon}from"../AppIcon/slotIcon.js";import{jsx as _jsx}from"react/jsx-runtime";const SIZE_MAP={sm:{diameter:32,icon:16},md:{diameter:40,icon:20},lg:{diameter:56,icon:28}},FILL_OPACITY=.14,inkFor=(e,r)=>{switch(r){case"secondary":return e.colors.secondary;case"success":return e.colors.success;case"warning":return e.colors.warning;case"error":return e.colors.error;case"info":return e.colors.info;case"neutral":return e.colors.text.secondary;default:return e.colors.primary}},IconBadge=forwardRef((e,r)=>{const{icon:o,iconVariant:t,size:s="md",tone:i="primary",accessibilityLabel:c,style:n,testID:a}=e,l=useTheme(),d=SIZE_MAP[s],m=inkFor(l,i),u="neutral"===i?l.colors.background.tertiary:tintOf(m,.14,l.colors.background.tertiary),y={color:m,size:d.icon,disabled:!1},f=void 0!==c;return _jsx(View,{ref:r,testID:a,accessible:f,accessibilityRole:f?"image":void 0,accessibilityLabel:c,importantForAccessibility:f?"yes":"no",style:[styles.base,{width:d.diameter,height:d.diameter,borderRadius:d.diameter/2,...smoothCorners,backgroundColor:u},n],children:renderSlotIcon(o,y,t)})});IconBadge.displayName="IconBadge";const styles=StyleSheet.create({base:{alignItems:"center",justifyContent:"center"}});export{IconBadge};export default IconBadge;
@@ -1 +1 @@
1
- export{IconBadge}from"./IconBadge.js";
1
+ "use strict";export{IconBadge}from"./IconBadge.js";
@@ -1 +1 @@
1
- import{forwardRef as r}from"react";import{Animated as o,Pressable as s,StyleSheet as e}from"react-native";import{usePressAnimation as t}from"../../hooks/usePressAnimation.js";import{useTheme as c}from"../../theme/index.js";import{resolveHaptic as i,triggerHaptic as n}from"../../utils/index.js";import{tintOf as a}from"../../utils/color.js";import{smoothCorners as l}from"../../utils/corners.js";import{renderSlotIcon as d}from"../AppIcon/slotIcon.js";import{Spinner as m}from"../Spinner/index.js";import{jsx as b}from"react/jsx-runtime";const u={sm:{diameter:32,icon:16},md:{diameter:40,icon:20},lg:{diameter:48,icon:24}},p=r((r,e)=>{const{icon:p,iconVariant:y,onPress:g,accessibilityLabel:h,tone:x="primary",variant:j="solid",size:I="md",shape:w="circle",active:P=!1,disabled:S=!1,loading:k=!1,haptic:C,style:v,testID:z}=r,A=c(),D=u[I],L=S||k,{scale:O,pressIn:R,pressOut:V}=t({scaleTo:.92,enabled:!L}),{base:W,on:B,fg:E}=((r,o)=>{switch(o){case"secondary":return{base:r.colors.secondary,on:r.colors.onSecondary,fg:r.colors.secondary};case"success":return{base:r.colors.success,on:r.colors.onSuccess,fg:r.colors.success};case"warning":return{base:r.colors.warning,on:r.colors.onWarning,fg:r.colors.warning};case"error":return{base:r.colors.error,on:r.colors.onError,fg:r.colors.error};case"neutral":return{base:r.colors.background.tertiary,on:r.colors.text.primary,fg:r.colors.text.primary};default:return{base:r.colors.primary,on:r.colors.onPrimary,fg:r.colors.primary}}})(A,x),N=P?"solid":j;let T="transparent",q="transparent",F=0,G=L?A.colors.text.disabled:E;"solid"===N?(T=L?A.colors.surface.disabled:W,G=L?A.colors.text.disabled:B):"soft"===N?T=L?A.colors.surface.disabled:a(W,.14,A.colors.background.secondary):"outline"===N?(q=L?A.colors.border.primary:W,F=A.colors.border.width):"glass"===N&&(T=A.colors.glass.fill,q=A.colors.glass.border,F=1,G=L?A.colors.text.disabled:A.colors.glass.on);const H={color:G,size:D.icon,disabled:L},J="circle"===w?D.diameter/2:A.radius.md;return b(s,{ref:e,onPress:r=>{if(L)return;const o=i(C,"selection");o&&n(o),g?.(r)},onPressIn:R,onPressOut:V,disabled:L,accessibilityRole:"button",accessibilityLabel:h,accessibilityState:{disabled:L,selected:P},hitSlop:6,testID:z,style:({pressed:r})=>[f.base,{width:D.diameter,height:D.diameter,borderRadius:J,...l,backgroundColor:T,borderColor:q,borderWidth:F,opacity:r&&"solid"!==N?.7:1},v],children:b(o.View,{style:[f.content,{transform:[{scale:O}]}],children:k?b(m,{size:"sm",color:G}):d(p,H,y)})})});p.displayName="IconButton";const f=e.create({base:{alignItems:"center",justifyContent:"center"},content:{alignItems:"center",justifyContent:"center"}});export{p as IconButton};export default p;
1
+ "use strict";import{forwardRef}from"react";import{Animated,Pressable,StyleSheet}from"react-native";import{usePressAnimation}from"../../hooks/usePressAnimation.js";import{useTheme}from"../../theme/index.js";import{resolveHaptic,triggerHaptic}from"../../utils/index.js";import{tintOf}from"../../utils/color.js";import{smoothCorners}from"../../utils/corners.js";import{renderSlotIcon}from"../AppIcon/slotIcon.js";import{Spinner}from"../Spinner/index.js";import{jsx as _jsx}from"react/jsx-runtime";const GLASS_RIM_WIDTH=1,SOFT_FILL_OPACITY=.14,SIZE_MAP={sm:{diameter:32,icon:16},md:{diameter:40,icon:20},lg:{diameter:48,icon:24}},toneFor=(e,r)=>{switch(r){case"secondary":return{base:e.colors.secondary,on:e.colors.onSecondary,fg:e.colors.secondary};case"success":return{base:e.colors.success,on:e.colors.onSuccess,fg:e.colors.success};case"warning":return{base:e.colors.warning,on:e.colors.onWarning,fg:e.colors.warning};case"error":return{base:e.colors.error,on:e.colors.onError,fg:e.colors.error};case"neutral":return{base:e.colors.background.tertiary,on:e.colors.text.primary,fg:e.colors.text.primary};default:return{base:e.colors.primary,on:e.colors.onPrimary,fg:e.colors.primary}}},IconButton=forwardRef((e,r)=>{const{icon:o,iconVariant:s,onPress:t,accessibilityLabel:n,tone:i="primary",variant:c="solid",size:a="md",shape:l="circle",active:d=!1,disabled:m=!1,loading:u=!1,haptic:b,style:p,testID:f}=e,y=useTheme(),g=SIZE_MAP[a],I=m||u,{scale:h,pressIn:S,pressOut:x}=usePressAnimation({scaleTo:.92,enabled:!I}),{base:j,on:P,fg:A}=toneFor(y,i),_=d?"solid":c;let w="transparent",C="transparent",O=0,T=I?y.colors.text.disabled:A;"solid"===_?(w=I?y.colors.surface.disabled:j,T=I?y.colors.text.disabled:P):"soft"===_?w=I?y.colors.surface.disabled:tintOf(j,.14,y.colors.background.secondary):"outline"===_?(C=I?y.colors.border.primary:j,O=y.colors.border.width):"glass"===_&&(w=y.colors.glass.fill,C=y.colors.glass.border,O=1,T=I?y.colors.text.disabled:y.colors.glass.on);const v={color:T,size:g.icon,disabled:I},B="circle"===l?g.diameter/2:y.radius.md;return _jsx(Pressable,{ref:r,onPress:e=>{if(I)return;const r=resolveHaptic(b,"selection");r&&triggerHaptic(r),t?.(e)},onPressIn:S,onPressOut:x,disabled:I,accessibilityRole:"button",accessibilityLabel:n,accessibilityState:{disabled:I,selected:d},hitSlop:6,testID:f,style:({pressed:e})=>[styles.base,{width:g.diameter,height:g.diameter,borderRadius:B,...smoothCorners,backgroundColor:w,borderColor:C,borderWidth:O,opacity:e&&"solid"!==_?.7:1},p],children:_jsx(Animated.View,{style:[styles.content,{transform:[{scale:h}]}],children:u?_jsx(Spinner,{size:"sm",color:T}):renderSlotIcon(o,v,s)})})});IconButton.displayName="IconButton";const styles=StyleSheet.create({base:{alignItems:"center",justifyContent:"center"},content:{alignItems:"center",justifyContent:"center"}});export{IconButton};export default IconButton;
@@ -1 +1 @@
1
- export{IconButton}from"./IconButton.js";
1
+ "use strict";export{IconButton}from"./IconButton.js";