@webority/mobile-ui 0.8.1 → 0.9.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 (315) hide show
  1. package/lib/commonjs/components/Accordion/Accordion.js +1 -1
  2. package/lib/commonjs/components/AnimatePresence/AnimatePresence.js +1 -1
  3. package/lib/commonjs/components/AppBar/AppBar.js +1 -1
  4. package/lib/commonjs/components/AppIcon/AppIcon.js +1 -1
  5. package/lib/commonjs/components/AsyncBlock/AsyncBlock.js +1 -1
  6. package/lib/commonjs/components/Autocomplete/Autocomplete.js +1 -1
  7. package/lib/commonjs/components/Avatar/Avatar.js +1 -1
  8. package/lib/commonjs/components/Badge/Badge.js +1 -1
  9. package/lib/commonjs/components/Banner/Banner.js +1 -1
  10. package/lib/commonjs/components/BottomNavigation/BottomNavigation.js +1 -1
  11. package/lib/commonjs/components/BottomSheet/BottomSheet.js +1 -1
  12. package/lib/commonjs/components/Box/Box.js +1 -1
  13. package/lib/commonjs/components/Button/Button.js +1 -1
  14. package/lib/commonjs/components/Calendar/Calendar.js +1 -0
  15. package/lib/commonjs/components/Calendar/CalendarDay.js +1 -0
  16. package/lib/commonjs/components/Calendar/calendarDates.js +1 -0
  17. package/lib/commonjs/components/Calendar/calendarStyles.js +1 -0
  18. package/lib/commonjs/components/Calendar/index.js +1 -0
  19. package/lib/commonjs/components/Card/Card.js +1 -1
  20. package/lib/commonjs/components/Carousel/Carousel.js +1 -1
  21. package/lib/commonjs/components/Checkbox/Checkbox.js +1 -1
  22. package/lib/commonjs/components/Chip/Chip.js +1 -1
  23. package/lib/commonjs/components/ChoiceGroup/ChoiceGroup.js +1 -1
  24. package/lib/commonjs/components/Confetti/Confetti.js +1 -1
  25. package/lib/commonjs/components/DatePicker/DatePicker.js +1 -1
  26. package/lib/commonjs/components/DateRangePicker/DateRangePicker.js +1 -1
  27. package/lib/commonjs/components/Descriptions/Descriptions.js +1 -1
  28. package/lib/commonjs/components/Dialog/Dialog.js +1 -1
  29. package/lib/commonjs/components/Drawer/Drawer.js +1 -1
  30. package/lib/commonjs/components/EmptyState/EmptyState.js +1 -1
  31. package/lib/commonjs/components/ErrorBoundary/ErrorBoundary.js +1 -1
  32. package/lib/commonjs/components/ErrorBoundary/withErrorBoundary.js +1 -1
  33. package/lib/commonjs/components/FieldBase/Chevron.js +1 -1
  34. package/lib/commonjs/components/FieldBase/FieldBase.js +1 -1
  35. package/lib/commonjs/components/FilePicker/FilePicker.js +1 -1
  36. package/lib/commonjs/components/FloatingActionButton/FloatingActionButton.js +1 -1
  37. package/lib/commonjs/components/ForceUpdateDialog/ForceUpdateDialog.js +1 -1
  38. package/lib/commonjs/components/FormField/FormField.js +1 -1
  39. package/lib/commonjs/components/IconButton/IconButton.js +1 -1
  40. package/lib/commonjs/components/ImageGallery/ImageGallery.js +1 -1
  41. package/lib/commonjs/components/InlineSelect/InlineSelect.js +1 -1
  42. package/lib/commonjs/components/Input/Input.js +1 -1
  43. package/lib/commonjs/components/KeyboardToolbar/KeyboardToolbar.js +1 -1
  44. package/lib/commonjs/components/ListItem/ListItem.js +1 -1
  45. package/lib/commonjs/components/LoaderOverlay/LoaderOverlay.js +1 -1
  46. package/lib/commonjs/components/Markdown/Markdown.js +1 -1
  47. package/lib/commonjs/components/Modal/Modal.js +1 -1
  48. package/lib/commonjs/components/NumberInput/NumberInput.js +1 -1
  49. package/lib/commonjs/components/OTPInput/OTPInput.js +1 -1
  50. package/lib/commonjs/components/OptionSheet/OptionSheet.js +1 -1
  51. package/lib/commonjs/components/PhoneNumberInput/PhoneNumberInput.js +1 -1
  52. package/lib/commonjs/components/ProfilePicker/ProfilePicker.js +1 -1
  53. package/lib/commonjs/components/Radio/Radio.js +1 -1
  54. package/lib/commonjs/components/Radio/RadioDot.js +1 -1
  55. package/lib/commonjs/components/Radio/RadioGroup.js +1 -1
  56. package/lib/commonjs/components/Rating/Rating.js +1 -1
  57. package/lib/commonjs/components/Repeater/Repeater.js +1 -1
  58. package/lib/commonjs/components/RichTextEditor/RichTextEditor.js +1 -1
  59. package/lib/commonjs/components/SearchBar/SearchBar.js +1 -1
  60. package/lib/commonjs/components/SectionHeader/SectionHeader.js +1 -1
  61. package/lib/commonjs/components/SegmentedControl/SegmentedControl.js +1 -1
  62. package/lib/commonjs/components/Select/Select.js +1 -1
  63. package/lib/commonjs/components/Skeleton/Skeleton.js +1 -1
  64. package/lib/commonjs/components/Skeleton/SkeletonClock.js +1 -1
  65. package/lib/commonjs/components/Skeleton/SkeletonContent.js +1 -1
  66. package/lib/commonjs/components/Skeleton/SkeletonProvider.js +1 -1
  67. package/lib/commonjs/components/Skeleton/SkeletonSkip.js +1 -1
  68. package/lib/commonjs/components/SlideToConfirm/SlideToConfirm.js +1 -1
  69. package/lib/commonjs/components/Slider/Slider.js +1 -1
  70. package/lib/commonjs/components/SliderField/SliderField.js +1 -1
  71. package/lib/commonjs/components/Spinner/Spinner.js +1 -1
  72. package/lib/commonjs/components/StatusBadge/StatusBadge.js +1 -1
  73. package/lib/commonjs/components/Stepper/Stepper.js +1 -1
  74. package/lib/commonjs/components/Swipeable/Swipeable.js +1 -1
  75. package/lib/commonjs/components/Switch/Switch.js +1 -1
  76. package/lib/commonjs/components/Tabs/Tabs.js +1 -1
  77. package/lib/commonjs/components/Text/Text.js +1 -1
  78. package/lib/commonjs/components/TimePicker/TimePicker.js +1 -1
  79. package/lib/commonjs/components/Timeline/Timeline.js +1 -1
  80. package/lib/commonjs/components/Toast/Toast.js +1 -1
  81. package/lib/commonjs/components/Toast/ToastProvider.js +1 -1
  82. package/lib/commonjs/components/ZoomableImage/ZoomableImage.js +1 -1
  83. package/lib/commonjs/components/index.js +1 -1
  84. package/lib/commonjs/form/FormContext.js +1 -1
  85. package/lib/commonjs/network/NetworkStatusBanner.js +1 -1
  86. package/lib/commonjs/theme/ThemeContext.js +1 -1
  87. package/lib/commonjs/theme/merge.js +1 -1
  88. package/lib/commonjs/theme/textStyle.js +1 -1
  89. package/lib/commonjs/theme/tokens.js +1 -1
  90. package/lib/commonjs/theme/toneInk.js +1 -0
  91. package/lib/commonjs/utils/ariaState.js +1 -0
  92. package/lib/module/components/Accordion/Accordion.js +1 -1
  93. package/lib/module/components/AnimatePresence/AnimatePresence.js +1 -1
  94. package/lib/module/components/AppBar/AppBar.js +1 -1
  95. package/lib/module/components/AppIcon/AppIcon.js +1 -1
  96. package/lib/module/components/AsyncBlock/AsyncBlock.js +1 -1
  97. package/lib/module/components/Autocomplete/Autocomplete.js +1 -1
  98. package/lib/module/components/Avatar/Avatar.js +1 -1
  99. package/lib/module/components/Badge/Badge.js +1 -1
  100. package/lib/module/components/Banner/Banner.js +1 -1
  101. package/lib/module/components/BottomNavigation/BottomNavigation.js +1 -1
  102. package/lib/module/components/BottomSheet/BottomSheet.js +1 -1
  103. package/lib/module/components/Box/Box.js +1 -1
  104. package/lib/module/components/Button/Button.js +1 -1
  105. package/lib/module/components/Calendar/Calendar.js +1 -0
  106. package/lib/module/components/Calendar/CalendarDay.js +1 -0
  107. package/lib/module/components/Calendar/calendarDates.js +1 -0
  108. package/lib/module/components/Calendar/calendarStyles.js +1 -0
  109. package/lib/module/components/Calendar/index.js +1 -0
  110. package/lib/module/components/Card/Card.js +1 -1
  111. package/lib/module/components/Carousel/Carousel.js +1 -1
  112. package/lib/module/components/Checkbox/Checkbox.js +1 -1
  113. package/lib/module/components/Chip/Chip.js +1 -1
  114. package/lib/module/components/ChoiceGroup/ChoiceGroup.js +1 -1
  115. package/lib/module/components/Confetti/Confetti.js +1 -1
  116. package/lib/module/components/DatePicker/DatePicker.js +1 -1
  117. package/lib/module/components/DateRangePicker/DateRangePicker.js +1 -1
  118. package/lib/module/components/Descriptions/Descriptions.js +1 -1
  119. package/lib/module/components/Dialog/Dialog.js +1 -1
  120. package/lib/module/components/Drawer/Drawer.js +1 -1
  121. package/lib/module/components/EmptyState/EmptyState.js +1 -1
  122. package/lib/module/components/ErrorBoundary/ErrorBoundary.js +1 -1
  123. package/lib/module/components/ErrorBoundary/withErrorBoundary.js +1 -1
  124. package/lib/module/components/FieldBase/Chevron.js +1 -1
  125. package/lib/module/components/FieldBase/FieldBase.js +1 -1
  126. package/lib/module/components/FilePicker/FilePicker.js +1 -1
  127. package/lib/module/components/FloatingActionButton/FloatingActionButton.js +1 -1
  128. package/lib/module/components/ForceUpdateDialog/ForceUpdateDialog.js +1 -1
  129. package/lib/module/components/FormField/FormField.js +1 -1
  130. package/lib/module/components/IconButton/IconButton.js +1 -1
  131. package/lib/module/components/ImageGallery/ImageGallery.js +1 -1
  132. package/lib/module/components/InlineSelect/InlineSelect.js +1 -1
  133. package/lib/module/components/Input/Input.js +1 -1
  134. package/lib/module/components/KeyboardToolbar/KeyboardToolbar.js +1 -1
  135. package/lib/module/components/ListItem/ListItem.js +1 -1
  136. package/lib/module/components/LoaderOverlay/LoaderOverlay.js +1 -1
  137. package/lib/module/components/Markdown/Markdown.js +1 -1
  138. package/lib/module/components/Modal/Modal.js +1 -1
  139. package/lib/module/components/NumberInput/NumberInput.js +1 -1
  140. package/lib/module/components/OTPInput/OTPInput.js +1 -1
  141. package/lib/module/components/OptionSheet/OptionSheet.js +1 -1
  142. package/lib/module/components/PhoneNumberInput/PhoneNumberInput.js +1 -1
  143. package/lib/module/components/ProfilePicker/ProfilePicker.js +1 -1
  144. package/lib/module/components/Radio/Radio.js +1 -1
  145. package/lib/module/components/Radio/RadioDot.js +1 -1
  146. package/lib/module/components/Radio/RadioGroup.js +1 -1
  147. package/lib/module/components/Rating/Rating.js +1 -1
  148. package/lib/module/components/Repeater/Repeater.js +1 -1
  149. package/lib/module/components/RichTextEditor/RichTextEditor.js +1 -1
  150. package/lib/module/components/SearchBar/SearchBar.js +1 -1
  151. package/lib/module/components/SectionHeader/SectionHeader.js +1 -1
  152. package/lib/module/components/SegmentedControl/SegmentedControl.js +1 -1
  153. package/lib/module/components/Select/Select.js +1 -1
  154. package/lib/module/components/Skeleton/Skeleton.js +1 -1
  155. package/lib/module/components/Skeleton/SkeletonClock.js +1 -1
  156. package/lib/module/components/Skeleton/SkeletonContent.js +1 -1
  157. package/lib/module/components/Skeleton/SkeletonProvider.js +1 -1
  158. package/lib/module/components/Skeleton/SkeletonSkip.js +1 -1
  159. package/lib/module/components/SlideToConfirm/SlideToConfirm.js +1 -1
  160. package/lib/module/components/Slider/Slider.js +1 -1
  161. package/lib/module/components/SliderField/SliderField.js +1 -1
  162. package/lib/module/components/Spinner/Spinner.js +1 -1
  163. package/lib/module/components/StatusBadge/StatusBadge.js +1 -1
  164. package/lib/module/components/Stepper/Stepper.js +1 -1
  165. package/lib/module/components/Swipeable/Swipeable.js +1 -1
  166. package/lib/module/components/Switch/Switch.js +1 -1
  167. package/lib/module/components/Tabs/Tabs.js +1 -1
  168. package/lib/module/components/Text/Text.js +1 -1
  169. package/lib/module/components/TimePicker/TimePicker.js +1 -1
  170. package/lib/module/components/Timeline/Timeline.js +1 -1
  171. package/lib/module/components/Toast/Toast.js +1 -1
  172. package/lib/module/components/Toast/ToastProvider.js +1 -1
  173. package/lib/module/components/ZoomableImage/ZoomableImage.js +1 -1
  174. package/lib/module/components/index.js +1 -1
  175. package/lib/module/form/FormContext.js +1 -1
  176. package/lib/module/network/NetworkStatusBanner.js +1 -1
  177. package/lib/module/theme/ThemeContext.js +1 -1
  178. package/lib/module/theme/merge.js +1 -1
  179. package/lib/module/theme/textStyle.js +1 -1
  180. package/lib/module/theme/tokens.js +1 -1
  181. package/lib/module/theme/toneInk.js +1 -0
  182. package/lib/module/utils/ariaState.js +1 -0
  183. package/lib/typescript/commonjs/components/Accordion/Accordion.d.ts +1 -1
  184. package/lib/typescript/commonjs/components/AnimatePresence/AnimatePresence.d.ts +1 -1
  185. package/lib/typescript/commonjs/components/AppBar/AppBar.d.ts +1 -1
  186. package/lib/typescript/commonjs/components/AppIcon/AppIcon.d.ts +1 -1
  187. package/lib/typescript/commonjs/components/AsyncBlock/AsyncBlock.d.ts +1 -1
  188. package/lib/typescript/commonjs/components/Avatar/Avatar.d.ts +2 -2
  189. package/lib/typescript/commonjs/components/Badge/Badge.d.ts +1 -1
  190. package/lib/typescript/commonjs/components/Banner/Banner.d.ts +1 -1
  191. package/lib/typescript/commonjs/components/BottomNavigation/BottomNavigation.d.ts +6 -0
  192. package/lib/typescript/commonjs/components/BottomSheet/BottomSheet.d.ts +1 -1
  193. package/lib/typescript/commonjs/components/Box/Box.d.ts +1 -1
  194. package/lib/typescript/commonjs/components/Calendar/Calendar.d.ts +70 -0
  195. package/lib/typescript/commonjs/components/Calendar/CalendarDay.d.ts +30 -0
  196. package/lib/typescript/commonjs/components/Calendar/calendarDates.d.ts +24 -0
  197. package/lib/typescript/commonjs/components/Calendar/calendarStyles.d.ts +125 -0
  198. package/lib/typescript/commonjs/components/Calendar/index.d.ts +4 -0
  199. package/lib/typescript/commonjs/components/Carousel/Carousel.d.ts +1 -1
  200. package/lib/typescript/commonjs/components/Chip/Chip.d.ts +1 -1
  201. package/lib/typescript/commonjs/components/ChoiceGroup/ChoiceGroup.d.ts +11 -1
  202. package/lib/typescript/commonjs/components/Confetti/Confetti.d.ts +1 -1
  203. package/lib/typescript/commonjs/components/DatePicker/DatePicker.d.ts +1 -1
  204. package/lib/typescript/commonjs/components/DateRangePicker/DateRangePicker.d.ts +7 -1
  205. package/lib/typescript/commonjs/components/Descriptions/Descriptions.d.ts +1 -1
  206. package/lib/typescript/commonjs/components/Dialog/Dialog.d.ts +1 -1
  207. package/lib/typescript/commonjs/components/Drawer/Drawer.d.ts +1 -1
  208. package/lib/typescript/commonjs/components/EmptyState/EmptyState.d.ts +1 -1
  209. package/lib/typescript/commonjs/components/ErrorBoundary/withErrorBoundary.d.ts +1 -1
  210. package/lib/typescript/commonjs/components/FieldBase/Chevron.d.ts +1 -1
  211. package/lib/typescript/commonjs/components/FilePicker/FilePicker.d.ts +1 -1
  212. package/lib/typescript/commonjs/components/ForceUpdateDialog/ForceUpdateDialog.d.ts +1 -1
  213. package/lib/typescript/commonjs/components/InlineSelect/InlineSelect.d.ts +1 -1
  214. package/lib/typescript/commonjs/components/ListItem/ListItem.d.ts +24 -0
  215. package/lib/typescript/commonjs/components/ListItem/index.d.ts +1 -1
  216. package/lib/typescript/commonjs/components/LoaderOverlay/LoaderOverlay.d.ts +1 -1
  217. package/lib/typescript/commonjs/components/Markdown/Markdown.d.ts +1 -1
  218. package/lib/typescript/commonjs/components/Modal/Modal.d.ts +1 -1
  219. package/lib/typescript/commonjs/components/ProfilePicker/ProfilePicker.d.ts +1 -1
  220. package/lib/typescript/commonjs/components/Radio/RadioDot.d.ts +1 -1
  221. package/lib/typescript/commonjs/components/Radio/RadioGroup.d.ts +1 -1
  222. package/lib/typescript/commonjs/components/Rating/Rating.d.ts +1 -1
  223. package/lib/typescript/commonjs/components/Repeater/Repeater.d.ts +1 -1
  224. package/lib/typescript/commonjs/components/RichTextEditor/RichTextEditor.d.ts +1 -1
  225. package/lib/typescript/commonjs/components/SectionHeader/SectionHeader.d.ts +1 -1
  226. package/lib/typescript/commonjs/components/SegmentedControl/SegmentedControl.d.ts +7 -0
  227. package/lib/typescript/commonjs/components/Skeleton/Skeleton.d.ts +1 -1
  228. package/lib/typescript/commonjs/components/Skeleton/SkeletonClock.d.ts +1 -1
  229. package/lib/typescript/commonjs/components/Skeleton/SkeletonProvider.d.ts +1 -1
  230. package/lib/typescript/commonjs/components/Skeleton/SkeletonSkip.d.ts +1 -1
  231. package/lib/typescript/commonjs/components/Spinner/Spinner.d.ts +1 -1
  232. package/lib/typescript/commonjs/components/StatusBadge/StatusBadge.d.ts +1 -1
  233. package/lib/typescript/commonjs/components/Stepper/Stepper.d.ts +1 -1
  234. package/lib/typescript/commonjs/components/Swipeable/Swipeable.d.ts +1 -1
  235. package/lib/typescript/commonjs/components/Text/Text.d.ts +1 -1
  236. package/lib/typescript/commonjs/components/TimePicker/TimePicker.d.ts +1 -1
  237. package/lib/typescript/commonjs/components/Timeline/Timeline.d.ts +1 -1
  238. package/lib/typescript/commonjs/components/Toast/Toast.d.ts +1 -1
  239. package/lib/typescript/commonjs/components/Toast/ToastProvider.d.ts +1 -1
  240. package/lib/typescript/commonjs/components/ZoomableImage/ZoomableImage.d.ts +1 -1
  241. package/lib/typescript/commonjs/components/index.d.ts +3 -1
  242. package/lib/typescript/commonjs/form/FormContext.d.ts +1 -1
  243. package/lib/typescript/commonjs/network/NetworkStatusBanner.d.ts +1 -1
  244. package/lib/typescript/commonjs/theme/ThemeContext.d.ts +1 -1
  245. package/lib/typescript/commonjs/theme/textStyle.d.ts +4 -1
  246. package/lib/typescript/commonjs/theme/toneInk.d.ts +38 -0
  247. package/lib/typescript/commonjs/theme/types.d.ts +37 -4
  248. package/lib/typescript/commonjs/utils/ariaState.d.ts +10 -0
  249. package/lib/typescript/module/components/Accordion/Accordion.d.ts +1 -1
  250. package/lib/typescript/module/components/AnimatePresence/AnimatePresence.d.ts +1 -1
  251. package/lib/typescript/module/components/AppBar/AppBar.d.ts +1 -1
  252. package/lib/typescript/module/components/AppIcon/AppIcon.d.ts +1 -1
  253. package/lib/typescript/module/components/AsyncBlock/AsyncBlock.d.ts +1 -1
  254. package/lib/typescript/module/components/Avatar/Avatar.d.ts +2 -2
  255. package/lib/typescript/module/components/Badge/Badge.d.ts +1 -1
  256. package/lib/typescript/module/components/Banner/Banner.d.ts +1 -1
  257. package/lib/typescript/module/components/BottomNavigation/BottomNavigation.d.ts +6 -0
  258. package/lib/typescript/module/components/BottomSheet/BottomSheet.d.ts +1 -1
  259. package/lib/typescript/module/components/Box/Box.d.ts +1 -1
  260. package/lib/typescript/module/components/Calendar/Calendar.d.ts +70 -0
  261. package/lib/typescript/module/components/Calendar/CalendarDay.d.ts +30 -0
  262. package/lib/typescript/module/components/Calendar/calendarDates.d.ts +24 -0
  263. package/lib/typescript/module/components/Calendar/calendarStyles.d.ts +125 -0
  264. package/lib/typescript/module/components/Calendar/index.d.ts +4 -0
  265. package/lib/typescript/module/components/Carousel/Carousel.d.ts +1 -1
  266. package/lib/typescript/module/components/Chip/Chip.d.ts +1 -1
  267. package/lib/typescript/module/components/ChoiceGroup/ChoiceGroup.d.ts +11 -1
  268. package/lib/typescript/module/components/Confetti/Confetti.d.ts +1 -1
  269. package/lib/typescript/module/components/DatePicker/DatePicker.d.ts +1 -1
  270. package/lib/typescript/module/components/DateRangePicker/DateRangePicker.d.ts +7 -1
  271. package/lib/typescript/module/components/Descriptions/Descriptions.d.ts +1 -1
  272. package/lib/typescript/module/components/Dialog/Dialog.d.ts +1 -1
  273. package/lib/typescript/module/components/Drawer/Drawer.d.ts +1 -1
  274. package/lib/typescript/module/components/EmptyState/EmptyState.d.ts +1 -1
  275. package/lib/typescript/module/components/ErrorBoundary/withErrorBoundary.d.ts +1 -1
  276. package/lib/typescript/module/components/FieldBase/Chevron.d.ts +1 -1
  277. package/lib/typescript/module/components/FilePicker/FilePicker.d.ts +1 -1
  278. package/lib/typescript/module/components/ForceUpdateDialog/ForceUpdateDialog.d.ts +1 -1
  279. package/lib/typescript/module/components/InlineSelect/InlineSelect.d.ts +1 -1
  280. package/lib/typescript/module/components/ListItem/ListItem.d.ts +24 -0
  281. package/lib/typescript/module/components/ListItem/index.d.ts +1 -1
  282. package/lib/typescript/module/components/LoaderOverlay/LoaderOverlay.d.ts +1 -1
  283. package/lib/typescript/module/components/Markdown/Markdown.d.ts +1 -1
  284. package/lib/typescript/module/components/Modal/Modal.d.ts +1 -1
  285. package/lib/typescript/module/components/ProfilePicker/ProfilePicker.d.ts +1 -1
  286. package/lib/typescript/module/components/Radio/RadioDot.d.ts +1 -1
  287. package/lib/typescript/module/components/Radio/RadioGroup.d.ts +1 -1
  288. package/lib/typescript/module/components/Rating/Rating.d.ts +1 -1
  289. package/lib/typescript/module/components/Repeater/Repeater.d.ts +1 -1
  290. package/lib/typescript/module/components/RichTextEditor/RichTextEditor.d.ts +1 -1
  291. package/lib/typescript/module/components/SectionHeader/SectionHeader.d.ts +1 -1
  292. package/lib/typescript/module/components/SegmentedControl/SegmentedControl.d.ts +7 -0
  293. package/lib/typescript/module/components/Skeleton/Skeleton.d.ts +1 -1
  294. package/lib/typescript/module/components/Skeleton/SkeletonClock.d.ts +1 -1
  295. package/lib/typescript/module/components/Skeleton/SkeletonProvider.d.ts +1 -1
  296. package/lib/typescript/module/components/Skeleton/SkeletonSkip.d.ts +1 -1
  297. package/lib/typescript/module/components/Spinner/Spinner.d.ts +1 -1
  298. package/lib/typescript/module/components/StatusBadge/StatusBadge.d.ts +1 -1
  299. package/lib/typescript/module/components/Stepper/Stepper.d.ts +1 -1
  300. package/lib/typescript/module/components/Swipeable/Swipeable.d.ts +1 -1
  301. package/lib/typescript/module/components/Text/Text.d.ts +1 -1
  302. package/lib/typescript/module/components/TimePicker/TimePicker.d.ts +1 -1
  303. package/lib/typescript/module/components/Timeline/Timeline.d.ts +1 -1
  304. package/lib/typescript/module/components/Toast/Toast.d.ts +1 -1
  305. package/lib/typescript/module/components/Toast/ToastProvider.d.ts +1 -1
  306. package/lib/typescript/module/components/ZoomableImage/ZoomableImage.d.ts +1 -1
  307. package/lib/typescript/module/components/index.d.ts +3 -1
  308. package/lib/typescript/module/form/FormContext.d.ts +1 -1
  309. package/lib/typescript/module/network/NetworkStatusBanner.d.ts +1 -1
  310. package/lib/typescript/module/theme/ThemeContext.d.ts +1 -1
  311. package/lib/typescript/module/theme/textStyle.d.ts +4 -1
  312. package/lib/typescript/module/theme/toneInk.d.ts +38 -0
  313. package/lib/typescript/module/theme/types.d.ts +37 -4
  314. package/lib/typescript/module/utils/ariaState.d.ts +10 -0
  315. package/package.json +2 -2
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Chevron=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var i,o,a={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return a;if(i=t?n:r){if(i.has(e))return i.get(e);i.set(e,a)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((o=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(o.get||o.set)?i(a,t,o):a[t]=e[t]);return a})(e,t)}const Chevron=({color:e,size:t,open:r,style:n})=>{const i=(0,_index.useTheme)(),o=(0,_react.useRef)((0,_index.createAnimatedValue)(r?1:0)).current;(0,_react.useEffect)(()=>{if(void 0===r)return;const e=_reactNative.Animated.timing(o,{toValue:r?1:0,duration:i.motion.duration.fast,useNativeDriver:!0});return e.start(),()=>e.stop()},[r,o,i.motion.duration.fast]);const a=(i.icons?.chevronDown??_defaultIcons.defaultIcons.chevronDown)({size:t,color:e}),u={width:t,height:t,alignItems:"center",justifyContent:"center"};if(void 0===r)return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[u,n],children:a});const s=o.interpolate({inputRange:[0,1],outputRange:["0deg","180deg"]});return(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[u,{transform:[{rotate:s}]},n],children:a})};exports.Chevron=Chevron;var _default=exports.default=Chevron;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Chevron=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_jsxRuntime=require("react/jsx-runtime");const Chevron=({color:e,size:t,open:r,style:n})=>{const i=(0,_index.useTheme)(),o=(0,_react.useRef)((0,_index.createAnimatedValue)(r?1:0)).current;(0,_react.useEffect)(()=>{if(void 0===r)return;const e=_reactNative.Animated.timing(o,{toValue:r?1:0,duration:i.motion.duration.fast,useNativeDriver:!0});return e.start(),()=>e.stop()},[r,o,i.motion.duration.fast]);const a=(i.icons?.chevronDown??_defaultIcons.defaultIcons.chevronDown)({size:t,color:e}),s={width:t,height:t,alignItems:"center",justifyContent:"center"};if(void 0===r)return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[s,n],children:a});const u=o.interpolate({inputRange:[0,1],outputRange:["0deg","180deg"]});return(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[s,{transform:[{rotate:u}]},n],children:a})};exports.Chevron=Chevron;var _default=exports.default=Chevron;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.resolveVariantColors=exports.resolveFieldTextStyle=exports.resolveFieldSize=exports.pickRepresentativeBorderColor=exports.hasFieldText=exports.fieldTextAsString=exports.default=exports.RequiredPlaceholder=exports.RequiredMark=exports.FieldMessage=exports.FieldLabel=exports.FieldErrorGlyph=exports.FieldBase=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_Notation=require("../Notation/Notation.js"),_SquircleFill=require("../SquircleFill/SquircleFill.js"),_jsxRuntime=require("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},pickRepresentativeBorderColor=e=>{for(const t of["bottom","top","left","right"]){const r=e[t];if(r&&"transparent"!==r)return r}return e.bottom};exports.pickRepresentativeBorderColor=pickRepresentativeBorderColor;const resolveFieldTextStyle=(e,t={})=>{const{disabled:r=!1}=t,o=e.components.field,i=e.colors.field;return{color:r?o?.disabledTextColor??i.textDisabled:o?.textColor??i.text,placeholderColor:o?.placeholderColor??(r?i.placeholderDisabled:i.placeholder),weightStyle:o?.fontWeight?{fontWeight:o.fontWeight}:(0,_index.fontFor)(e,"normal")}};exports.resolveFieldTextStyle=resolveFieldTextStyle;const RequiredMark=()=>{const e=(0,_index.useTheme)(),t=e.components.field;return(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:t?.requiredMarkerColor??e.colors.error},children:` ${t?.requiredMarker??"*"}`})};exports.RequiredMark=RequiredMark;const RequiredPlaceholder=({text:e,color:t,fontSize:r,weightStyle:o,align:i="center",paddingTop:l,textAlign:s})=>(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[_reactNative.StyleSheet.absoluteFill,{justifyContent:"top"===i?"flex-start":"center",paddingTop:l}],children:(0,_jsxRuntime.jsxs)(_reactNative.Text,{accessible:!1,numberOfLines:1,style:{color:t,fontSize:r,...o,includeFontPadding:!1,textAlign:s},children:[e,(0,_jsxRuntime.jsx)(RequiredMark,{})]})});exports.RequiredPlaceholder=RequiredPlaceholder;const FieldErrorGlyph=({size:e,color:t})=>{const r=(0,_index.useTheme)(),o=r.icons?.error??_defaultIcons.defaultIcons.error;return(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:o({size:e,color:t})})};exports.FieldErrorGlyph=FieldErrorGlyph;const hasFieldText=e=>null!=e&&!1!==e&&!0!==e&&""!==e;exports.hasFieldText=hasFieldText;const fieldTextAsString=e=>"string"==typeof e?e:void 0;exports.fieldTextAsString=fieldTextAsString;const FieldLabel=({children:e,size:t="md",required:r=!1,help:o,color:i,style:l})=>{const s=(0,_index.useTheme)(),n=resolveFieldSize(s,t),a=hasFieldText(o),d=_reactNative.StyleSheet.flatten(l),c=d?.fontSize??n.labelFontSize,u=d?.color??i??s.colors.field.label,b=(0,_react.useMemo)(()=>({fontSize:c,color:u}),[c,u]),p=(0,_jsxRuntime.jsxs)(_reactNative.Text,{style:[familyStyles.label,{color:i??s.colors.field.label,fontSize:n.labelFontSize,...(0,_index.fontFor)(s,"semibold"),marginBottom:a?0:n.labelGap},a?familyStyles.labelShrink:null,l],children:[(0,_jsxRuntime.jsx)(_Notation.NotationInkContext.Provider,{value:b,children:e}),r?(0,_jsxRuntime.jsx)(RequiredMark,{}):null]});return a?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[familyStyles.labelRow,{marginBottom:n.labelGap}],children:[p,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[familyStyles.help,{marginLeft:s.spacing.xs}],children:o})]}):p};exports.FieldLabel=FieldLabel;const FieldMessage=({text:e,error:t=!1,size:r="md",style:o})=>{const i=(0,_index.useTheme)(),l=resolveFieldSize(i,r);if(!hasFieldText(e))return null;const s=t?i.colors.field.message:i.colors.text.secondary;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[familyStyles.messageRow,{marginTop:l.messageGap,columnGap:i.spacing.xs+2}],accessibilityLiveRegion:t?"polite":"none",children:[t?(0,_jsxRuntime.jsx)(FieldErrorGlyph,{size:l.messageFontSize,color:s}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[familyStyles.messageText,{color:s,fontSize:l.messageFontSize,...(0,_index.fontFor)(i,"normal")},o],children:e})]})};exports.FieldMessage=FieldMessage;const familyStyles=_reactNative.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}}),resolveFieldSize=(e,t)=>{const r=e.components.field?.[t],o=DEFAULT_SIZES[t];return{paddingHorizontal:r?.paddingHorizontal??o.paddingHorizontal,paddingVertical:r?.paddingVertical??o.paddingVertical,minHeight:r?.minHeight??o.minHeight,fontSize:r?.fontSize??o.fontSize,borderRadius:r?.borderRadius??o.borderRadius,iconSize:r?.iconSize??o.iconSize,labelFontSize:r?.labelFontSize??o.labelFontSize,labelGap:r?.labelGap??o.labelGap,messageFontSize:r?.messageFontSize??o.messageFontSize,messageGap:r?.messageGap??o.messageGap}};exports.resolveFieldSize=resolveFieldSize;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}},resolveVariantColors=(e,t,r)=>{const o=e.components.field?.[t],i=e.colors.field;let l,s,n,a,d;"outlined"===t?(l=i.background,s=i.backgroundFocused,n=i.backgroundDisabled,a=i.border,d=e.colors.border.width):"underline"===t?(l="transparent",s=void 0,n="transparent",a={bottom:i.border},d={bottom:e.colors.border.width}):(l=i.background,s=void 0,n=i.backgroundDisabled,a="transparent",d=0);const wrapToIdleShape=e=>"string"==typeof a?e:{bottom:e},c=expandColorSides(r?.borderIdle??o?.borderIdle??a),u=expandColorSides(r?.borderFocused??o?.borderFocused??wrapToIdleShape(i.borderFocused)),b=expandColorSides(r?.borderError??o?.borderError??wrapToIdleShape(i.borderError)),p=expandColorSides(r?.borderDisabled??o?.borderDisabled??a),g=expandWidthSides(r?.borderWidth??o?.borderWidth??d);return{backgroundIdleEmpty:r?.backgroundIdleEmpty??o?.backgroundIdleEmpty??l,backgroundIdleFilled:r?.backgroundIdleFilled??o?.backgroundIdleFilled??r?.backgroundIdleEmpty??o?.backgroundIdleEmpty??l,backgroundFocused:r?.backgroundFocused??o?.backgroundFocused??s,backgroundError:r?.backgroundError??o?.backgroundError??void 0,backgroundDisabled:r?.backgroundDisabled??o?.backgroundDisabled??n,borderIdle:c,borderFocused:u,borderError:b,borderDisabled:p,borderWidth:g,borderFocusedRepresentative:pickRepresentativeBorderColor(u)}};exports.resolveVariantColors=resolveVariantColors;const FieldBase=e=>{const{size:t="md",variant:r,focused:o=!1,disabled:i=!1,error:l=!1,filled:s=!1,leading:n,leadingDivider:a=!1,trailing:d,slotAlign:c="center",slotLineHeight:u,topNotch:b,children:p,onPress:g,pressFeedback:m=!0,minHeight:h,maxHeight:x,width:f,height:S,paddingHorizontal:F,paddingLeft:R,paddingRight:_,paddingVertical:y,borderRadius:v,borderTopLeftRadius:z,borderTopRightRadius:j,borderBottomLeftRadius:k,borderBottomRightRadius:C,borderWidth:T,borderTopWidth:I,borderRightWidth:N,borderBottomWidth:w,borderLeftWidth:E,gap:q,fillOverrides:V,style:L,testID:H,accessibilityRole:D,accessibilityLabel:B,accessibilityState:G,accessibilityHint:W}=e,M=(0,_index.useTheme)(),A=(0,_react.useMemo)(()=>buildStyles(),[]),P=r??M.components.field?.defaultVariant??"outlined",O=resolveFieldSize(M,t),U=(0,_react.useMemo)(()=>resolveVariantColors(M,P,V),[M,P,V]),Z=l?2:o?1:0,$=(0,_react.useRef)((0,_index.createAnimatedValue)(Z)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing($,{toValue:Z,duration:M.motion.duration.fast,easing:_reactNative.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=s?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,re=U.borderError,oe={top:I,right:N,bottom:w,left:E},ie={top:oe.top??T??U.borderWidth.top,right:oe.right??T??U.borderWidth.right,bottom:oe.bottom??T??U.borderWidth.bottom,left:oe.left??T??U.borderWidth.left},le={minHeight:S??h??O.minHeight,maxHeight:x,paddingHorizontal:F??O.paddingHorizontal,paddingVertical:y??O.paddingVertical,paddingLeft:R??F??O.paddingHorizontal,paddingRight:_??F??O.paddingHorizontal,backgroundColor:Y,columnGap:q??M.spacing.md,alignItems:"top"===c?"flex-start":"center"},se="underline"===P,ne=se?0:v??O.borderRadius,ae=se?{tl:0,tr:0,bl:0,br:0}:{tl:z??ne,tr:j??ne,bl:k??ne,br:C??ne};le.borderTopLeftRadius=ae.tl,le.borderTopRightRadius=ae.tr,le.borderBottomLeftRadius=ae.bl,le.borderBottomRightRadius=ae.br,le.borderCurve=_corners.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],re[e]]}),sameOnEverySide=e=>e.top===e.right&&e.top===e.bottom&&e.top===e.left,de=!se&&ae.tl===ae.tr&&ae.tl===ae.bl&&ae.tl===ae.br&&sameOnEverySide(ie)&&sameOnEverySide(ee)&&sameOnEverySide(te)&&sameOnEverySide(re)&&sameOnEverySide(U.borderDisabled),ce=(0,_SquircleFill.useSquircle)(de,ae.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 ue=i?U.borderDisabled.top:sideColor("top"),be=(0,_react.useRef)(Z);be.current=Z,(0,_react.useEffect)(()=>{$.setValue(be.current)},[U,$]),void 0!==f&&(le.width=f),void 0!==S&&(le.height=S);const pe={disabled:i,...G},ge="top"===c,me=ge?{alignSelf:"flex-start",marginTop:Math.max(0,((u??O.iconSize)-O.iconSize)/2)}:null,he=S??h??O.minHeight,xe=(()=>{if(!b)return 0;const e=Math.min(ae.tl,he/2),t=b.left;return e<=0||t>=e?0:Math.ceil(e-Math.sqrt(e*e-(e-t)*(e-t)))})(),fe=b&&ie.top>0?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:{position:"absolute",top:-ie.top,left:b.left-ie.left,width:b.width,height:ie.top+xe,backgroundColor:Y}}):null,renderInner=e=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[ce.active&&ce.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:ce.size.width,height:ce.size.height,radius:ae.tl,fill:e&&!i?M.colors.surface.pressed:Y,stroke:ue,strokeWidth:ie.top,outset:ie.top}):null,fe,null!=n?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[A.slot,me],children:n}):null,null!=n&&a?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[A.divider,me,{height:O.iconSize,backgroundColor:M.colors.field.border}]}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[A.content,ge?A.contentTop:null],children:p}),null!=d?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[A.slot,me],children:d}):null]}),Se=(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{onLayout:ce.onLayout,style:[A.box,le,L],accessibilityRole:D,accessibilityLabel:B,accessibilityHint:W,accessibilityState:pe,testID:H,children:renderInner(!1)});return g&&!m?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:g,disabled:i,accessible:!1,children:Se}):g?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:g,disabled:i,accessibilityRole:D??"button",accessibilityLabel:B,accessibilityHint:W,accessibilityState:pe,testID:H,children:({pressed:e})=>(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{onLayout:ce.onLayout,style:[A.box,le,!e||i||ce.active?null:{backgroundColor:M.colors.surface.pressed},L],children:renderInner(e)})}):Se};exports.FieldBase=FieldBase,FieldBase.displayName="FieldBase";const buildStyles=()=>_reactNative.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"}});var _default=exports.default=FieldBase;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.resolveVariantColors=exports.resolveFieldTextStyle=exports.resolveFieldSize=exports.pickRepresentativeBorderColor=exports.hasFieldText=exports.fieldTextAsString=exports.default=exports.RequiredPlaceholder=exports.RequiredMark=exports.FieldMessage=exports.FieldLabel=exports.FieldErrorGlyph=exports.FieldBase=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_ariaState=require("../../utils/ariaState.js"),_corners=require("../../utils/corners.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_Notation=require("../Notation/Notation.js"),_SquircleFill=require("../SquircleFill/SquircleFill.js"),_jsxRuntime=require("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},pickRepresentativeBorderColor=e=>{for(const t of["bottom","top","left","right"]){const r=e[t];if(r&&"transparent"!==r)return r}return e.bottom};exports.pickRepresentativeBorderColor=pickRepresentativeBorderColor;const resolveFieldTextStyle=(e,t={})=>{const{disabled:r=!1}=t,o=e.components.field,i=e.colors.field;return{color:r?o?.disabledTextColor??i.textDisabled:o?.textColor??i.text,placeholderColor:o?.placeholderColor??(r?i.placeholderDisabled:i.placeholder),weightStyle:o?.fontWeight?{fontWeight:o.fontWeight}:(0,_index.fontFor)(e,"normal")}};exports.resolveFieldTextStyle=resolveFieldTextStyle;const RequiredMark=()=>{const e=(0,_index.useTheme)(),t=e.components.field;return(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:t?.requiredMarkerColor??e.colors.toneText.error},children:` ${t?.requiredMarker??"*"}`})};exports.RequiredMark=RequiredMark;const RequiredPlaceholder=({text:e,color:t,fontSize:r,weightStyle:o,align:i="center",paddingTop:l,textAlign:a})=>(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[_reactNative.StyleSheet.absoluteFill,{justifyContent:"top"===i?"flex-start":"center",paddingTop:l}],children:(0,_jsxRuntime.jsxs)(_reactNative.Text,{accessible:!1,numberOfLines:1,style:{color:t,fontSize:r,...o,includeFontPadding:!1,textAlign:a},children:[e,(0,_jsxRuntime.jsx)(RequiredMark,{})]})});exports.RequiredPlaceholder=RequiredPlaceholder;const FieldErrorGlyph=({size:e,color:t})=>{const r=(0,_index.useTheme)(),o=r.icons?.error??_defaultIcons.defaultIcons.error;return(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:o({size:e,color:t})})};exports.FieldErrorGlyph=FieldErrorGlyph;const hasFieldText=e=>null!=e&&!1!==e&&!0!==e&&""!==e;exports.hasFieldText=hasFieldText;const fieldTextAsString=e=>"string"==typeof e?e:void 0;exports.fieldTextAsString=fieldTextAsString;const FieldLabel=({children:e,size:t="md",required:r=!1,help:o,color:i,style:l})=>{const a=(0,_index.useTheme)(),s=resolveFieldSize(a,t),n=hasFieldText(o),d=_reactNative.StyleSheet.flatten(l),c=d?.fontSize??s.labelFontSize,u=d?.color??i??a.colors.field.label,b=(0,_react.useMemo)(()=>({fontSize:c,color:u}),[c,u]),p=(0,_jsxRuntime.jsxs)(_reactNative.Text,{style:[familyStyles.label,{color:i??a.colors.field.label,fontSize:s.labelFontSize,...(0,_index.fontFor)(a,"semibold"),marginBottom:n?0:s.labelGap},n?familyStyles.labelShrink:null,l],children:[(0,_jsxRuntime.jsx)(_Notation.NotationInkContext.Provider,{value:b,children:e}),r?(0,_jsxRuntime.jsx)(RequiredMark,{}):null]});return n?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[familyStyles.labelRow,{marginBottom:s.labelGap}],children:[p,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[familyStyles.help,{marginLeft:a.spacing.xs}],children:o})]}):p};exports.FieldLabel=FieldLabel;const FieldMessage=({text:e,error:t=!1,size:r="md",style:o})=>{const i=(0,_index.useTheme)(),l=resolveFieldSize(i,r);if(!hasFieldText(e))return null;const a=t?i.colors.field.message:i.colors.text.secondary;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[familyStyles.messageRow,{marginTop:l.messageGap,columnGap:i.spacing.xs+2}],accessibilityLiveRegion:t?"polite":"none",children:[t?(0,_jsxRuntime.jsx)(FieldErrorGlyph,{size:l.messageFontSize,color:a}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[familyStyles.messageText,{color:a,fontSize:l.messageFontSize,...(0,_index.fontFor)(i,"normal")},o],children:e})]})};exports.FieldMessage=FieldMessage;const familyStyles=_reactNative.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}}),resolveFieldSize=(e,t)=>{const r=e.components.field?.[t],o=DEFAULT_SIZES[t];return{paddingHorizontal:r?.paddingHorizontal??o.paddingHorizontal,paddingVertical:r?.paddingVertical??o.paddingVertical,minHeight:r?.minHeight??o.minHeight,fontSize:r?.fontSize??o.fontSize,borderRadius:r?.borderRadius??o.borderRadius,iconSize:r?.iconSize??o.iconSize,labelFontSize:r?.labelFontSize??o.labelFontSize,labelGap:r?.labelGap??o.labelGap,messageFontSize:r?.messageFontSize??o.messageFontSize,messageGap:r?.messageGap??o.messageGap}};exports.resolveFieldSize=resolveFieldSize;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}},resolveVariantColors=(e,t,r)=>{const o=e.components.field?.[t],i=e.colors.field;let l,a,s,n,d;"outlined"===t?(l=i.background,a=i.backgroundFocused,s=i.backgroundDisabled,n=i.border,d=e.colors.border.width):"underline"===t?(l="transparent",a=void 0,s="transparent",n={bottom:i.border},d={bottom:e.colors.border.width}):(l=i.background,a=void 0,s=i.backgroundDisabled,n="transparent",d=0);const wrapToIdleShape=e=>"string"==typeof n?e:{bottom:e},c=expandColorSides(r?.borderIdle??o?.borderIdle??n),u=expandColorSides(r?.borderFocused??o?.borderFocused??wrapToIdleShape(i.borderFocused)),b=expandColorSides(r?.borderError??o?.borderError??wrapToIdleShape(i.borderError)),p=expandColorSides(r?.borderDisabled??o?.borderDisabled??n),g=expandWidthSides(r?.borderWidth??o?.borderWidth??d);return{backgroundIdleEmpty:r?.backgroundIdleEmpty??o?.backgroundIdleEmpty??l,backgroundIdleFilled:r?.backgroundIdleFilled??o?.backgroundIdleFilled??r?.backgroundIdleEmpty??o?.backgroundIdleEmpty??l,backgroundFocused:r?.backgroundFocused??o?.backgroundFocused??a,backgroundError:r?.backgroundError??o?.backgroundError??void 0,backgroundDisabled:r?.backgroundDisabled??o?.backgroundDisabled??s,borderIdle:c,borderFocused:u,borderError:b,borderDisabled:p,borderWidth:g,borderFocusedRepresentative:pickRepresentativeBorderColor(u)}};exports.resolveVariantColors=resolveVariantColors;const FieldBase=e=>{const{size:t="md",variant:r,focused:o=!1,disabled:i=!1,error:l=!1,filled:a=!1,leading:s,leadingDivider:n=!1,trailing:d,slotAlign:c="center",slotLineHeight:u,topNotch:b,children:p,onPress:g,pressFeedback:m=!0,minHeight:x,maxHeight:h,width:f,height:S,paddingHorizontal:F,paddingLeft:_,paddingRight:R,paddingVertical:y,borderRadius:v,borderTopLeftRadius:z,borderTopRightRadius:j,borderBottomLeftRadius:k,borderBottomRightRadius:C,borderWidth:T,borderTopWidth:I,borderRightWidth:N,borderBottomWidth:w,borderLeftWidth:q,gap:E,fillOverrides:V,style:L,testID:H,accessibilityRole:D,accessibilityLabel:B,accessibilityState:G,accessibilityHint:W}=e,M=(0,_index.useTheme)(),A=(0,_react.useMemo)(()=>buildStyles(),[]),P=r??M.components.field?.defaultVariant??"outlined",O=resolveFieldSize(M,t),U=(0,_react.useMemo)(()=>resolveVariantColors(M,P,V),[M,P,V]),Z=l?2:o?1:0,$=(0,_react.useRef)((0,_index.createAnimatedValue)(Z)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing($,{toValue:Z,duration:M.motion.duration.fast,easing:_reactNative.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=a?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,re=U.borderError,oe={top:I,right:N,bottom:w,left:q},ie={top:oe.top??T??U.borderWidth.top,right:oe.right??T??U.borderWidth.right,bottom:oe.bottom??T??U.borderWidth.bottom,left:oe.left??T??U.borderWidth.left},le={minHeight:S??x??O.minHeight,maxHeight:h,paddingHorizontal:F??O.paddingHorizontal,paddingVertical:y??O.paddingVertical,paddingLeft:_??F??O.paddingHorizontal,paddingRight:R??F??O.paddingHorizontal,backgroundColor:Y,columnGap:E??M.spacing.md,alignItems:"top"===c?"flex-start":"center"},ae="underline"===P,se=ae?0:v??O.borderRadius,ne=ae?{tl:0,tr:0,bl:0,br:0}:{tl:z??se,tr:j??se,bl:k??se,br:C??se};le.borderTopLeftRadius=ne.tl,le.borderTopRightRadius=ne.tr,le.borderBottomLeftRadius=ne.bl,le.borderBottomRightRadius=ne.br,le.borderCurve=_corners.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],re[e]]}),sameOnEverySide=e=>e.top===e.right&&e.top===e.bottom&&e.top===e.left,de=!ae&&ne.tl===ne.tr&&ne.tl===ne.bl&&ne.tl===ne.br&&sameOnEverySide(ie)&&sameOnEverySide(ee)&&sameOnEverySide(te)&&sameOnEverySide(re)&&sameOnEverySide(U.borderDisabled),ce=(0,_SquircleFill.useSquircle)(de,ne.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 ue=i?U.borderDisabled.top:sideColor("top"),be=(0,_react.useRef)(Z);be.current=Z,(0,_react.useEffect)(()=>{$.setValue(be.current)},[U,$]),void 0!==f&&(le.width=f),void 0!==S&&(le.height=S);const pe={disabled:i,...G},ge="top"===c,me=ge?{alignSelf:"flex-start",marginTop:Math.max(0,((u??O.iconSize)-O.iconSize)/2)}:null,xe=S??x??O.minHeight,he=(()=>{if(!b)return 0;const e=Math.min(ne.tl,xe/2),t=b.left;return e<=0||t>=e?0:Math.ceil(e-Math.sqrt(e*e-(e-t)*(e-t)))})(),fe=b&&ie.top>0?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:{position:"absolute",top:-ie.top,left:b.left-ie.left,width:b.width,height:ie.top+he,backgroundColor:Y}}):null,renderInner=e=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[ce.active&&ce.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:ce.size.width,height:ce.size.height,radius:ne.tl,fill:e&&!i?M.colors.surface.pressed:Y,stroke:ue,strokeWidth:ie.top,outset:ie.top}):null,fe,null!=s?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[A.slot,me],children:s}):null,null!=s&&n?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[A.divider,me,{height:O.iconSize,backgroundColor:M.colors.field.border}]}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[A.content,ge?A.contentTop:null],children:p}),null!=d?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[A.slot,me],children:d}):null]}),Se=(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{onLayout:ce.onLayout,style:[A.box,le,L],accessibilityRole:D,accessibilityLabel:B,accessibilityHint:W,accessibilityState:pe,...(0,_ariaState.ariaFromState)(pe),testID:H,children:renderInner(!1)});return g&&!m?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:g,disabled:i,accessible:!1,children:Se}):g?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:g,disabled:i,accessibilityRole:D??"button",accessibilityLabel:B,accessibilityHint:W,accessibilityState:pe,...(0,_ariaState.ariaFromState)(pe),testID:H,children:({pressed:e})=>(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{onLayout:ce.onLayout,style:[A.box,le,!e||i||ce.active?null:{backgroundColor:M.colors.surface.pressed},L],children:renderInner(e)})}):Se};exports.FieldBase=FieldBase,FieldBase.displayName="FieldBase";const buildStyles=()=>_reactNative.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"}});var _default=exports.default=FieldBase;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.matchesAccept=exports.formatFileSize=exports.default=exports.FilePicker=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_index4=require("../FieldBase/index.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_index5=require("../Spinner/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,i=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var o,s,n={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return n;if(o=t?i:r){if(o.has(e))return o.get(e);o.set(e,n)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((s=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(s.get||s.set)?o(n,t,s):n[t]=e[t]);return n})(e,t)}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,t)=>`${e} is larger than ${t} MB.`,errorWrongType:e=>`${e} is not an accepted file type.`},formatFileSize=e=>{if(void 0===e||e<=0)return"";const t=["B","KB","MB","GB"];let r=e,i=0;for(;r>=1024&&i<t.length-1;)r/=1024,i+=1;return`${r>=10||0===i?Math.round(r):Math.round(10*r)/10} ${t[i]}`};exports.formatFileSize=formatFileSize;const matchesAccept=(e,t)=>!t||0===t.length||!!e&&t.some(t=>"*/*"===t||"*"===t||(t.endsWith("/*")?e.startsWith(t.slice(0,t.length-1)):e===t));exports.matchesAccept=matchesAccept;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 t=e.lastIndexOf(".");return t<=0||t===e.length-1?"FILE":e.slice(t+1).toUpperCase().slice(0,4)},FilePicker=exports.FilePicker=(0,_react.forwardRef)((e,t)=>{const{files:r,defaultFiles:i,onChange:o,sources:s,maxFiles:n,maxSizeMB:l,accept:a,validate:c,process:d,variant:u="card",renderFile:g,renderTrigger:h,disabled:m=!1,helperText:x,error:p,labels:_,haptic:y,onPick:b,onRemove:f,onError:j,onFilePress:v,onRetry:R,style:S,accessibilityLabel:T,testID:C}=e,w=(0,_index2.useTheme)(),k=(0,_react.useMemo)(()=>buildStyles(w),[w]),F=(0,_react.useMemo)(()=>({...DEFAULT_LABELS,..._}),[_]),P=w.components.filePicker,N=P?.thumbnailSize??84,z=P?.borderRadius??w.radius.md,O=P?.dashedBorderColor??w.colors.primary,[I,M]=(0,_index.useControllableState)({value:r,defaultValue:i??[],onChange:o}),V=(0,_react.useRef)(I);V.current=I;const B=(0,_react.useCallback)(e=>{V.current=e,M(e)},[M]),[L,q]=(0,_react.useState)(null),[W,A]=(0,_react.useState)(!1),$=p??L??void 0,H="number"==typeof n&&I.length>=n,E=(0,_react.useCallback)((e,t)=>{0!==e.length&&(q(e[0]),e.forEach(e=>j?.(e,t)),!1!==y&&(0,_index3.triggerHaptic)("notificationError"))},[j,y]),D=(0,_react.useCallback)(async e=>{let t;try{t=await e.pick()}catch(e){return void E([e instanceof Error?e.message:String(e)])}if(!t||0===t.length)return;const r=[];let i=t.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 n){const e=Math.max(0,n-V.current.length);i.length>e&&(r.push(F.errorTooMany(n)),i=i.slice(0,e))}const o=[];for(const e of i){if("number"==typeof l&&"number"==typeof e.size&&e.size>1024*l*1024){r.push(F.errorTooLarge(e.name,l));continue}if(!matchesAccept(e.type,a)){r.push(F.errorWrongType(e.name));continue}const t=c?.(e);t?r.push(t):o.push(e)}if(E(r),0===o.length)return;if(!d){B([...V.current,...o]),q(r.length>0?r[0]:null);const e=(0,_index3.resolveHaptic)(y,"selection");return e&&(0,_index3.triggerHaptic)(e),void b?.(o)}const s=o.map(e=>({...e,status:"processing"}));B([...V.current,...s]);const u=[];for(const e of s)try{const t=await d({...e,status:"idle"}),r={...t,id:e.id,status:t.status??"idle"};B(V.current.map(t=>t.id===e.id?r:t)),u.push(r)}catch(t){B(V.current.filter(t=>t.id!==e.id)),E([t instanceof Error?t.message:String(t)],e)}if(u.length>0){0===r.length&&q(null);const e=(0,_index3.resolveHaptic)(y,"selection");e&&(0,_index3.triggerHaptic)(e),b?.(u)}},[n,l,a,c,d,F,E,B,b,y]),U=(0,_react.useCallback)(e=>{if(m||H)return;const t=e?s.find(t=>t.key===e):1===s.length?s[0]:void 0;t?D(t):s.length>1&&A(!0)},[m,H,s,D]),G=(0,_react.useCallback)(e=>{if(m)return;B(V.current.filter(t=>t.id!==e.id)),q(null);const t=(0,_index3.resolveHaptic)(y,"selection");t&&(0,_index3.triggerHaptic)(t),f?.(e)},[m,B,f,y]),K=(0,_react.useCallback)(()=>{B([]),q(null)},[B]);(0,_react.useImperativeHandle)(t,()=>({open:U,clear:K}),[U,K]);const Y=0===I.length?F.trigger:`${I.length} file${1===I.length?"":"s"} attached`,J=T??`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=w.icons?.attachment??_defaultIcons.defaultIcons.attachment,renderStatusOverlay=e=>{if("processing"===e.status)return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[k.tileOverlay,{backgroundColor:w.colors.background.overlay}],children:(0,_jsxRuntime.jsx)(_index5.Spinner,{size:"sm"})});if("uploading"===e.status){const t=Math.round(100*(e.progress??0));return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[k.tileOverlay,{backgroundColor:w.colors.background.overlay}],children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[k.tileOverlayText,{color:w.colors.onOverlay}],children:`${t}%`}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[k.tileProgressTrack,{backgroundColor:w.colors.border.primary}],children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[k.tileProgressFill,{width:`${t}%`,backgroundColor:w.colors.primary}]})})]})}return"done"===e.status?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[k.doneBadge,{backgroundColor:w.colors.success}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[k.doneBadgeText,{color:w.colors.onSuccess}],children:"✓"})}):null},renderThumbnail=e=>{const t=imageSourceOf(e);return t?(0,_jsxRuntime.jsx)(_reactNative.Image,{source:{uri:t},style:k.thumbnailImage}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[k.extensionTile,{backgroundColor:w.colors.background.secondary}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[k.extensionText,{color:w.colors.text.secondary,...(0,_index2.fontFor)(w,"semibold")}],children:extensionOf(e.name)})})},removeButton=e=>(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>G(e),disabled:m,hitSlop:8,accessibilityRole:"button",accessibilityLabel:F.removeFile(e.name),style:[k.removeButton,{backgroundColor:w.colors.background.overlay}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[k.removeButtonText,{color:w.colors.onOverlay}],children:"×"})}),retryButton=e=>R&&"error"===e.status?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>R(e),disabled:m,hitSlop:8,accessibilityRole:"button",accessibilityLabel:F.retry,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[k.retryText,{color:w.colors.primary}],children:"↻"})}):null,renderOneFile=(e,t)=>{const r={file:e,index:t,disabled:m,remove:()=>G(e),retry:R?()=>R(e):void 0},i=g?g(r):"card"===u?(e=>{const{file:t}=e;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[k.tile,{width:N,height:N,borderRadius:z,..._corners.smoothCorners,borderColor:"error"===t.status?w.colors.error:w.colors.border.primary}],children:[renderThumbnail(t),renderStatusOverlay(t),"error"===t.status?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[k.tileOverlay,{backgroundColor:w.colors.background.overlay}],children:retryButton(t)}):null,removeButton(t)]})})(r):(e=>{const{file:t}=e,r=statusText(t);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[k.listRow,{borderRadius:z,..._corners.smoothCorners,borderColor:"error"===t.status?w.colors.error:w.colors.border.primary,backgroundColor:w.colors.background.primary}],children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[k.listThumb,{borderRadius:w.radius.sm,..._corners.smoothCorners}],children:[renderThumbnail(t),"processing"===t.status?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[k.tileOverlay,{backgroundColor:w.colors.background.overlay}],children:(0,_jsxRuntime.jsx)(_index5.Spinner,{size:"sm"})}):null]}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:k.listTextWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{numberOfLines:1,ellipsizeMode:"middle",style:[k.listName,{color:w.colors.text.primary,fontSize:w.typography.fontSize.sm,...(0,_index2.fontFor)(w,"medium")}],children:t.name}),(0,_jsxRuntime.jsx)(_reactNative.Text,{numberOfLines:1,style:[k.listSubtitle,{color:"error"===t.status?w.colors.error:w.colors.text.tertiary,fontSize:w.typography.fontSize.xs}],children:[formatFileSize(t.size),r].filter(Boolean).join(" · ")}),"uploading"===t.status?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[k.listProgressTrack,{backgroundColor:w.colors.border.primary}],children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[k.listProgressFill,{width:`${Math.round(100*(t.progress??0))}%`,backgroundColor:w.colors.primary}]})}):null]}),retryButton(t),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>G(t),disabled:m,hitSlop:8,accessibilityRole:"button",accessibilityLabel:F.removeFile(t.name),children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[k.listRemoveText,{color:w.colors.text.tertiary}],children:"×"})})]})})(r);return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:v?()=>v(e):void 0,disabled:m||!v,accessibilityLabel:fileA11yLabel(e),children:i},e.id)},X={open:U,disabled:m||H,fileCount:I.length,atCapacity:H},dashedTrigger=e=>(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>U(),disabled:m||H,accessibilityRole:"button",accessibilityLabel:J,accessibilityState:{disabled:m||H},style:({pressed:t})=>[k.trigger,e?k.triggerCompact:null,{borderRadius:z,..._corners.smoothCorners,borderColor:O,backgroundColor:t?w.colors.surface.pressed:w.colors.background.primary,opacity:m||H?.55:1}],children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:k.triggerRow,children:[Q?Q({size:16,color:w.colors.primary}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[k.triggerText,{color:w.colors.primary,fontSize:w.typography.fontSize.sm,...(0,_index2.fontFor)(w,"medium")}],children:0===I.length?F.trigger:F.addMore})]}),!e&&x?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[k.helperText,{color:w.colors.text.tertiary,fontSize:w.typography.fontSize.xs}],children:x}):null]}),Z=(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>U(),disabled:m||H,accessibilityRole:"button",accessibilityLabel:F.addMore,style:({pressed:e})=>[k.tile,k.addTile,{width:N,height:N,borderRadius:z,..._corners.smoothCorners,borderColor:O,backgroundColor:e?w.colors.surface.pressed:"transparent",opacity:m||H?.55:1}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[k.addTileText,{color:w.colors.primary}],children:"+"})});return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[k.container,S],testID:C,accessibilityLabel:J,children:["card"===u?0===I.length?h?h(X):dashedTrigger(!1):(0,_jsxRuntime.jsxs)(_reactNative.ScrollView,{horizontal:!0,showsHorizontalScrollIndicator:!1,contentContainerStyle:[k.strip,{columnGap:w.spacing.sm}],children:[I.map(renderOneFile),h?h(X):H||m?null:Z]}):(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{rowGap:w.spacing.sm},children:[h?h(X):H?null:dashedTrigger(I.length>0),I.map(renderOneFile)]}),(0,_index4.hasFieldText)($)?(0,_jsxRuntime.jsx)(_reactNative.Text,{accessibilityLiveRegion:"polite",style:[k.errorText,{color:w.colors.error,fontSize:w.typography.fontSize.xs,marginTop:w.spacing.xxs}],children:$}):null,(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:W,onClose:()=>A(!1),title:F.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=>{A(!1),D(e)}})]})});FilePicker.displayName="FilePicker";const buildStyles=e=>_reactNative.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:{..._reactNative.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,..._corners.smoothCorners,overflow:"hidden"},tileProgressFill:{height:"100%",borderRadius:2,..._corners.smoothCorners},doneBadge:{position:"absolute",right:4,bottom:4,width:18,height:18,borderRadius:9,..._corners.smoothCorners,alignItems:"center",justifyContent:"center"},doneBadgeText:{fontSize:11,includeFontPadding:!1},removeButton:{position:"absolute",top:4,right:4,width:20,height:20,borderRadius:10,..._corners.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,..._corners.smoothCorners,overflow:"hidden",marginTop:6},listProgressFill:{height:"100%",borderRadius:2,..._corners.smoothCorners},listRemoveText:{fontSize:22,includeFontPadding:!1,paddingHorizontal:4},errorText:{includeFontPadding:!1}});var _default=exports.default=FilePicker;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.matchesAccept=exports.formatFileSize=exports.default=exports.FilePicker=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_index4=require("../FieldBase/index.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_index5=require("../Spinner/index.js"),_jsxRuntime=require("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,t)=>`${e} is larger than ${t} MB.`,errorWrongType:e=>`${e} is not an accepted file type.`},formatFileSize=e=>{if(void 0===e||e<=0)return"";const t=["B","KB","MB","GB"];let r=e,i=0;for(;r>=1024&&i<t.length-1;)r/=1024,i+=1;return`${r>=10||0===i?Math.round(r):Math.round(10*r)/10} ${t[i]}`};exports.formatFileSize=formatFileSize;const matchesAccept=(e,t)=>!t||0===t.length||!!e&&t.some(t=>"*/*"===t||"*"===t||(t.endsWith("/*")?e.startsWith(t.slice(0,t.length-1)):e===t));exports.matchesAccept=matchesAccept;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 t=e.lastIndexOf(".");return t<=0||t===e.length-1?"FILE":e.slice(t+1).toUpperCase().slice(0,4)},FilePicker=exports.FilePicker=(0,_react.forwardRef)((e,t)=>{const{files:r,defaultFiles:i,onChange:o,sources:s,maxFiles:n,maxSizeMB:l,accept:a,validate:c,process:d,variant:u="card",renderFile:m,renderTrigger:x,disabled:g=!1,helperText:h,error:p,labels:_,haptic:y,onPick:b,onRemove:f,onError:j,onFilePress:v,onRetry:R,style:T,accessibilityLabel:S,testID:C}=e,F=(0,_index2.useTheme)(),w=(0,_react.useMemo)(()=>buildStyles(F),[F]),k=(0,_react.useMemo)(()=>({...DEFAULT_LABELS,..._}),[_]),N=F.components.filePicker,P=N?.thumbnailSize??84,z=N?.borderRadius??F.radius.md,I=N?.dashedBorderColor??F.colors.primary,[O,V]=(0,_index.useControllableState)({value:r,defaultValue:i??[],onChange:o}),B=(0,_react.useRef)(O);B.current=O;const L=(0,_react.useCallback)(e=>{B.current=e,V(e)},[V]),[M,A]=(0,_react.useState)(null),[$,q]=(0,_react.useState)(!1),H=p??M??void 0,E="number"==typeof n&&O.length>=n,W=(0,_react.useCallback)((e,t)=>{0!==e.length&&(A(e[0]),e.forEach(e=>j?.(e,t)),!1!==y&&(0,_index3.triggerHaptic)("notificationError"))},[j,y]),D=(0,_react.useCallback)(async e=>{let t;try{t=await e.pick()}catch(e){return void W([e instanceof Error?e.message:String(e)])}if(!t||0===t.length)return;const r=[];let i=t.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 n){const e=Math.max(0,n-B.current.length);i.length>e&&(r.push(k.errorTooMany(n)),i=i.slice(0,e))}const o=[];for(const e of i){if("number"==typeof l&&"number"==typeof e.size&&e.size>1024*l*1024){r.push(k.errorTooLarge(e.name,l));continue}if(!matchesAccept(e.type,a)){r.push(k.errorWrongType(e.name));continue}const t=c?.(e);t?r.push(t):o.push(e)}if(W(r),0===o.length)return;if(!d){L([...B.current,...o]),A(r.length>0?r[0]:null);const e=(0,_index3.resolveHaptic)(y,"selection");return e&&(0,_index3.triggerHaptic)(e),void b?.(o)}const s=o.map(e=>({...e,status:"processing"}));L([...B.current,...s]);const u=[];for(const e of s)try{const t=await d({...e,status:"idle"}),r={...t,id:e.id,status:t.status??"idle"};L(B.current.map(t=>t.id===e.id?r:t)),u.push(r)}catch(t){L(B.current.filter(t=>t.id!==e.id)),W([t instanceof Error?t.message:String(t)],e)}if(u.length>0){0===r.length&&A(null);const e=(0,_index3.resolveHaptic)(y,"selection");e&&(0,_index3.triggerHaptic)(e),b?.(u)}},[n,l,a,c,d,k,W,L,b,y]),U=(0,_react.useCallback)(e=>{if(g||E)return;const t=e?s.find(t=>t.key===e):1===s.length?s[0]:void 0;t?D(t):s.length>1&&q(!0)},[g,E,s,D]),G=(0,_react.useCallback)(e=>{if(g)return;L(B.current.filter(t=>t.id!==e.id)),A(null);const t=(0,_index3.resolveHaptic)(y,"selection");t&&(0,_index3.triggerHaptic)(t),f?.(e)},[g,L,f,y]),K=(0,_react.useCallback)(()=>{L([]),A(null)},[L]);(0,_react.useImperativeHandle)(t,()=>({open:U,clear:K}),[U,K]);const Y=0===O.length?k.trigger:`${O.length} file${1===O.length?"":"s"} attached`,J=S??`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=F.icons?.attachment??_defaultIcons.defaultIcons.attachment,renderStatusOverlay=e=>{if("processing"===e.status)return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[w.tileOverlay,{backgroundColor:F.colors.background.overlay}],children:(0,_jsxRuntime.jsx)(_index5.Spinner,{size:"sm"})});if("uploading"===e.status){const t=Math.round(100*(e.progress??0));return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[w.tileOverlay,{backgroundColor:F.colors.background.overlay}],children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[w.tileOverlayText,{color:F.colors.onOverlay}],children:`${t}%`}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[w.tileProgressTrack,{backgroundColor:F.colors.border.primary}],children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[w.tileProgressFill,{width:`${t}%`,backgroundColor:F.colors.primary}]})})]})}return"done"===e.status?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[w.doneBadge,{backgroundColor:F.colors.success}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[w.doneBadgeText,{color:F.colors.onSuccess}],children:"✓"})}):null},renderThumbnail=e=>{const t=imageSourceOf(e);return t?(0,_jsxRuntime.jsx)(_reactNative.Image,{source:{uri:t},style:w.thumbnailImage}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[w.extensionTile,{backgroundColor:F.colors.background.secondary}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[w.extensionText,{color:F.colors.text.secondary,...(0,_index2.fontFor)(F,"semibold")}],children:extensionOf(e.name)})})},removeButton=e=>(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>G(e),disabled:g,hitSlop:8,accessibilityRole:"button",accessibilityLabel:k.removeFile(e.name),style:[w.removeButton,{backgroundColor:F.colors.background.overlay}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[w.removeButtonText,{color:F.colors.onOverlay}],children:"×"})}),retryButton=e=>R&&"error"===e.status?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>R(e),disabled:g,hitSlop:8,accessibilityRole:"button",accessibilityLabel:k.retry,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[w.retryText,{color:F.colors.primary}],children:"↻"})}):null,renderOneFile=(e,t)=>{const r={file:e,index:t,disabled:g,remove:()=>G(e),retry:R?()=>R(e):void 0},i=m?m(r):"card"===u?(e=>{const{file:t}=e;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[w.tile,{width:P,height:P,borderRadius:z,..._corners.smoothCorners,borderColor:"error"===t.status?F.colors.error:F.colors.border.primary}],children:[renderThumbnail(t),renderStatusOverlay(t),"error"===t.status?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[w.tileOverlay,{backgroundColor:F.colors.background.overlay}],children:retryButton(t)}):null,removeButton(t)]})})(r):(e=>{const{file:t}=e,r=statusText(t);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[w.listRow,{borderRadius:z,..._corners.smoothCorners,borderColor:"error"===t.status?F.colors.error:F.colors.border.primary,backgroundColor:F.colors.background.primary}],children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[w.listThumb,{borderRadius:F.radius.sm,..._corners.smoothCorners}],children:[renderThumbnail(t),"processing"===t.status?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[w.tileOverlay,{backgroundColor:F.colors.background.overlay}],children:(0,_jsxRuntime.jsx)(_index5.Spinner,{size:"sm"})}):null]}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:w.listTextWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{numberOfLines:1,ellipsizeMode:"middle",style:[w.listName,{color:F.colors.text.primary,fontSize:F.typography.fontSize.sm,...(0,_index2.fontFor)(F,"medium")}],children:t.name}),(0,_jsxRuntime.jsx)(_reactNative.Text,{numberOfLines:1,style:[w.listSubtitle,{color:"error"===t.status?F.colors.toneText.error:F.colors.text.tertiary,fontSize:F.typography.fontSize.xs}],children:[formatFileSize(t.size),r].filter(Boolean).join(" · ")}),"uploading"===t.status?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[w.listProgressTrack,{backgroundColor:F.colors.border.primary}],children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[w.listProgressFill,{width:`${Math.round(100*(t.progress??0))}%`,backgroundColor:F.colors.primary}]})}):null]}),retryButton(t),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>G(t),disabled:g,hitSlop:8,accessibilityRole:"button",accessibilityLabel:k.removeFile(t.name),children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[w.listRemoveText,{color:F.colors.text.tertiary}],children:"×"})})]})})(r);return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:v?()=>v(e):void 0,disabled:g||!v,accessibilityLabel:fileA11yLabel(e),children:i},e.id)},X={open:U,disabled:g||E,fileCount:O.length,atCapacity:E},dashedTrigger=e=>(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>U(),disabled:g||E,accessibilityRole:"button",accessibilityLabel:J,accessibilityState:{disabled:g||E},"aria-disabled":g||E,style:({pressed:t})=>[w.trigger,e?w.triggerCompact:null,{borderRadius:z,..._corners.smoothCorners,borderColor:I,backgroundColor:t?F.colors.surface.pressed:F.colors.background.primary,opacity:g||E?.55:1}],children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:w.triggerRow,children:[Q?Q({size:16,color:F.colors.primary}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[w.triggerText,{color:F.colors.primary,fontSize:F.typography.fontSize.sm,...(0,_index2.fontFor)(F,"medium")}],children:0===O.length?k.trigger:k.addMore})]}),!e&&h?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[w.helperText,{color:F.colors.text.tertiary,fontSize:F.typography.fontSize.xs}],children:h}):null]}),Z=(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>U(),disabled:g||E,accessibilityRole:"button",accessibilityLabel:k.addMore,style:({pressed:e})=>[w.tile,w.addTile,{width:P,height:P,borderRadius:z,..._corners.smoothCorners,borderColor:I,backgroundColor:e?F.colors.surface.pressed:"transparent",opacity:g||E?.55:1}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[w.addTileText,{color:F.colors.primary}],children:"+"})});return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[w.container,T],testID:C,accessibilityLabel:J,children:["card"===u?0===O.length?x?x(X):dashedTrigger(!1):(0,_jsxRuntime.jsxs)(_reactNative.ScrollView,{horizontal:!0,showsHorizontalScrollIndicator:!1,contentContainerStyle:[w.strip,{columnGap:F.spacing.sm}],children:[O.map(renderOneFile),x?x(X):E||g?null:Z]}):(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{rowGap:F.spacing.sm},children:[x?x(X):E?null:dashedTrigger(O.length>0),O.map(renderOneFile)]}),(0,_index4.hasFieldText)(H)?(0,_jsxRuntime.jsx)(_reactNative.Text,{accessibilityLiveRegion:"polite",style:[w.errorText,{color:F.colors.toneText.error,fontSize:F.typography.fontSize.xs,marginTop:F.spacing.xxs}],children:H}):null,(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:$,onClose:()=>q(!1),title:k.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=>{q(!1),D(e)}})]})});FilePicker.displayName="FilePicker";const buildStyles=e=>_reactNative.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:{..._reactNative.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,..._corners.smoothCorners,overflow:"hidden"},tileProgressFill:{height:"100%",borderRadius:2,..._corners.smoothCorners},doneBadge:{position:"absolute",right:4,bottom:4,width:18,height:18,borderRadius:9,..._corners.smoothCorners,alignItems:"center",justifyContent:"center"},doneBadgeText:{fontSize:11,includeFontPadding:!1},removeButton:{position:"absolute",top:4,right:4,width:20,height:20,borderRadius:10,..._corners.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,..._corners.smoothCorners,overflow:"hidden",marginTop:6},listProgressFill:{height:"100%",borderRadius:2,..._corners.smoothCorners},listRemoveText:{fontSize:22,includeFontPadding:!1,paddingHorizontal:4},errorText:{includeFontPadding:!1}});var _default=exports.default=FilePicker;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.FloatingActionButtonGroup=exports.FloatingActionButton=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var i,o,a={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return a;if(i=t?n:r){if(i.has(e))return i.get(e);i.set(e,a)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((o=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(o.get||o.set)?i(a,t,o):a[t]=e[t]);return a})(e,t)}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:_color.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=exports.FloatingActionButton=(0,_react.forwardRef)((e,t)=>{const{icon:r,onPress:n,label:i,size:o="md",tone:a="primary",position:s,bottomOffset:l,disabled:c=!1,hideOnScroll:u=!1,isScrolling:d=!1,accessibilityLabel:m,accessibilityHint:p,haptic:g,style:b,containerStyle:f,labelStyle:_,testID:h}=e,y=(0,_index.useTheme)(),x=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),v=sizeMap[o],R=(0,_react.useMemo)(()=>buildStyles(y),[y]),{scale:j,pressIn:S,pressOut:N}=(0,_usePressAnimation.usePressAnimation)({enabled:!c}),A=y.components.floatingActionButton,w=A?.edgeOffset??24,C=A?.bottomOffset??24,P=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current;(0,_react.useEffect)(()=>{if(!u)return void(0,_index.setNativeValue)(P,0);const e=_reactNative.Animated.timing(P,{toValue:d?1:0,duration:y.motion.duration.normal,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0});return e.start(),()=>e.stop()},[u,d,P,y.motion.duration.normal,y.motion.easing.standard]);const I=P.interpolate({inputRange:[0,1],outputRange:[0,v.diameter+(l??C)+x.bottom+w]}),k=P.interpolate({inputRange:[0,1],outputRange:[1,0]}),E=r,z="string"==typeof i&&i.length>0,F=c?y.colors.surface.disabled:toneBackground(y,a),V=c?y.colors.text.disabled:toneForeground(y,a),D=(0,_react.useMemo)(()=>{if(!s)return null;const e=(l??C)+x.bottom;switch(s){case"bottomLeft":return{position:"absolute",bottom:e,left:w};case"bottomCenter":return{position:"absolute",bottom:e,alignSelf:"center"};default:return{position:"absolute",bottom:e,right:w}}},[s,l,x.bottom,C,w]);return(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[D,{transform:[{translateY:I},{scale:j}],opacity:k},f,b],pointerEvents:u&&d?"none":"auto",children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:t,onPress:e=>{if(c)return;const t=(0,_hapticUtils.resolveHaptic)(g,"impactLight");t&&(0,_hapticUtils.triggerHaptic)(t),n()},onPressIn:S,onPressOut:N,disabled:c,accessibilityRole:"button",accessibilityLabel:m,accessibilityHint:p,accessibilityState:{disabled:c},testID:h,style:[R.base,z?{height:v.diameter,paddingHorizontal:v.labelPaddingHorizontal,borderRadius:v.diameter/2,..._corners.smoothCorners}:{width:v.diameter,height:v.diameter,borderRadius:v.diameter/2,..._corners.smoothCorners},y.shadows.lg,{backgroundColor:F,opacity:c?.55:1}],children:({pressed:e})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[e&&!c?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:"fab-pressed",style:[R.pressedTint,{backgroundColor:pressedTintFor(y,a),borderRadius:v.diameter/2,..._corners.smoothCorners}]}):null,E,z?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[R.label,{color:V,fontSize:v.fontSize,fontWeight:y.typography.fontWeight.semibold,marginLeft:y.spacing.sm},_],numberOfLines:1,children:i}):null]})})})});FloatingActionButton.displayName="FloatingActionButton";const buildStyles=e=>_reactNative.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:r,actions:n,open:i,defaultOpen:o=!1,onOpenChange:a,position:s="bottomRight",bottomOffset:l,size:c="md",accessibilityLabel:u="Quick actions",haptic:d,hideOnScroll:m=!1,isScrolling:p=!1,containerStyle:g,secondaryActionStyle:b,labelPillStyle:f,labelStyle:_,testID:h}=e,y=(0,_index.useTheme)(),x=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),v=sizeMap[c],R=(0,_react.useMemo)(()=>buildGroupStyles(y),[y]),j=y.components.floatingActionButton,S=j?.edgeOffset??24,N=j?.bottomOffset??24,A=j?.secondaryGap??16,w=j?.staggerMs??50,C="boolean"==typeof i,[P,I]=(0,_react.useState)(o),k=C?i:P,E=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current;(0,_react.useEffect)(()=>{if(!m)return void(0,_index.setNativeValue)(E,0);const e=_reactNative.Animated.timing(E,{toValue:p?1:0,duration:y.motion.duration.normal,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0});return e.start(),()=>e.stop()},[m,p,E,y.motion.duration.normal,y.motion.easing.standard]);const z=m&&p;(0,_react.useEffect)(()=>{z&&k&&(C||I(!1),a?.(!1))},[z,k,C,a]);const F=E.interpolate({inputRange:[0,1],outputRange:[0,v.diameter+(l??N)+x.bottom+S]}),V=E.interpolate({inputRange:[0,1],outputRange:[1,0]}),D=(0,_react.useRef)((0,_index.createAnimatedValue)(k?1:0)).current,O=(0,_react.useRef)([]),[T,B]=(0,_react.useState)(0);(0,_react.useEffect)(()=>{const e=O.current;if(e.length!==n.length){if(e.length<n.length){const t=e.slice();for(let r=e.length;r<n.length;r+=1)t.push(new _reactNative.Animated.Value(k?1:0));O.current=t}else O.current=e.slice(0,n.length);B(e=>e+1)}},[n.length]),(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(D,{toValue:k?1:0,duration:y.motion.duration.normal,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0});e.start();const t=O.current.map(e=>_reactNative.Animated.timing(e,{toValue:k?1:0,duration:y.motion.duration.normal,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0})),r=k?t:[...t].reverse(),n=_reactNative.Animated.stagger(w,r);return n.start(),()=>{e.stop(),n.stop()}},[k,D,y.motion.duration.normal,y.motion.easing.standard,n.length,T,w]);const L=(0,_react.useCallback)(e=>{const t=(0,_hapticUtils.resolveHaptic)(d,"impactLight");t&&(0,_hapticUtils.triggerHaptic)(t),C||I(e),a?.(e)},[C,a,d]),M=(0,_react.useCallback)(()=>{L(!k)},[k,L]),H=(0,_react.useCallback)(e=>{!1!==d&&(0,_hapticUtils.triggerHaptic)("selection"),e.onPress(),C||I(!1),a?.(!1)},[C,a,d]),q=(0,_react.useCallback)(()=>{k&&L(!1)},[k,L]),W=(0,_react.useMemo)(()=>{const e=(l??N)+x.bottom;switch(s){case"bottomLeft":return{position:"absolute",bottom:e,left:S,alignItems:"flex-start"};case"bottomCenter":return{position:"absolute",bottom:e,alignSelf:"center",alignItems:"center"};default:return{position:"absolute",bottom:e,right:S,alignItems:"flex-end"}}},[s,l,x.bottom,N,S]),slotOffset=e=>-(v.diameter+A)*(e+1),G=(0,_react.useMemo)(()=>{switch(s){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"}}},[s]),U=.78*v.diameter,$=(0,_react.useMemo)(()=>{const e=U+y.spacing.sm;switch(s){case"bottomLeft":return{left:e,alignItems:"flex-start"};case"bottomCenter":return{right:v.diameter/2+U/2+y.spacing.sm,alignItems:"flex-end"};default:return{right:e,alignItems:"flex-end"}}},[s,U,v.diameter,y.spacing.sm]),Y=D.interpolate({inputRange:[0,1],outputRange:[0,.4]}),Q=D.interpolate({inputRange:[0,1],outputRange:["0deg","45deg"]});return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[k?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:k?"auto":"none",style:[_reactNative.StyleSheet.absoluteFill,{backgroundColor:y.colors.background.overlay,opacity:Y}],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:q,accessibilityElementsHidden:!0,importantForAccessibility:"no",testID:h?`${h}-backdrop`:void 0})}):null,(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{pointerEvents:z?"none":"box-none",style:[W,{transform:[{translateY:F}],opacity:V},g],accessibilityRole:"menu",testID:h,children:[n.map((e,t)=>{const r=O.current[t];if(!r)return null;const n=r.interpolate({inputRange:[0,1],outputRange:[0,slotOffset(t)]}),i=r.interpolate({inputRange:[0,1],outputRange:[.6,1]}),o=toneBackground(y,e.tone??"primary"),a=toneForeground(y,e.tone??"primary"),s=e.label?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[R.labelSlot,$],testID:h?`${h}-label-${e.key}`:void 0,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[R.labelPill,y.shadows.sm,{backgroundColor:y.colors.background.elevated,paddingHorizontal:y.spacing.sm,paddingVertical:y.spacing.xs,borderRadius:y.radius.sm,..._corners.smoothCorners},f],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[{color:y.colors.text.primary,fontSize:y.typography.fontSize.sm,fontWeight:y.typography.fontWeight.medium},_],numberOfLines:1,children:e.label})})}):null;return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{pointerEvents:k?"auto":"none",style:[R.secondaryRow,G,{position:"absolute",bottom:0,opacity:r,transform:[{translateY:n},{scale:i}]}],children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>H(e),accessibilityRole:"menuitem",accessibilityLabel:e.accessibilityLabel,style:[R.fabBase,y.shadows.md,{width:U,height:U,borderRadius:U/2,..._corners.smoothCorners,backgroundColor:o},b],testID:h?`${h}-action-${e.key}`:void 0,children:({pressed:t})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[t?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:"fab-pressed",style:[R.pressedTint,{backgroundColor:pressedTintFor(y,e.tone??"primary"),borderRadius:U/2,..._corners.smoothCorners}]}):null,_react.default.isValidElement(e.icon)?e.icon:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:a},children:String(e.icon??"")})]})}),s]},e.key)}),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:M,accessibilityRole:"button",accessibilityLabel:u,accessibilityState:{expanded:k},style:[R.fabBase,y.shadows.lg,{width:v.diameter,height:v.diameter,borderRadius:v.diameter/2,..._corners.smoothCorners,backgroundColor:y.colors.primary}],testID:h?`${h}-primary`:void 0,children:({pressed:e})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[e?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:"fab-pressed",style:[R.pressedTint,{backgroundColor:_color.ACCENT_PRESSED_TINT,borderRadius:v.diameter/2,..._corners.smoothCorners}]}):null,(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:r?void 0:{transform:[{rotate:Q}]},children:k&&r?r:t})]})})]})]})};exports.FloatingActionButtonGroup=FloatingActionButtonGroup;const buildGroupStyles=e=>_reactNative.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"}});var _default=exports.default=FloatingActionButton;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.FloatingActionButtonGroup=exports.FloatingActionButton=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var i,o,a={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return a;if(i=t?n:r){if(i.has(e))return i.get(e);i.set(e,a)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((o=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(o.get||o.set)?i(a,t,o):a[t]=e[t]);return a})(e,t)}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:_color.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=exports.FloatingActionButton=(0,_react.forwardRef)((e,t)=>{const{icon:r,onPress:n,label:i,size:o="md",tone:a="primary",position:s,bottomOffset:l,disabled:c=!1,hideOnScroll:u=!1,isScrolling:d=!1,accessibilityLabel:m,accessibilityHint:p,haptic:g,style:b,containerStyle:f,labelStyle:_,testID:h}=e,y=(0,_index.useTheme)(),x=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),v=sizeMap[o],R=(0,_react.useMemo)(()=>buildStyles(y),[y]),{scale:j,pressIn:S,pressOut:N}=(0,_usePressAnimation.usePressAnimation)({enabled:!c}),A=y.components.floatingActionButton,w=A?.edgeOffset??24,C=A?.bottomOffset??24,P=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current;(0,_react.useEffect)(()=>{if(!u)return void(0,_index.setNativeValue)(P,0);const e=_reactNative.Animated.timing(P,{toValue:d?1:0,duration:y.motion.duration.normal,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0});return e.start(),()=>e.stop()},[u,d,P,y.motion.duration.normal,y.motion.easing.standard]);const I=P.interpolate({inputRange:[0,1],outputRange:[0,v.diameter+(l??C)+x.bottom+w]}),k=P.interpolate({inputRange:[0,1],outputRange:[1,0]}),E=r,z="string"==typeof i&&i.length>0,F=c?y.colors.surface.disabled:toneBackground(y,a),V=c?y.colors.text.disabled:toneForeground(y,a),D=(0,_react.useMemo)(()=>{if(!s)return null;const e=(l??C)+x.bottom;switch(s){case"bottomLeft":return{position:"absolute",bottom:e,left:w};case"bottomCenter":return{position:"absolute",bottom:e,alignSelf:"center"};default:return{position:"absolute",bottom:e,right:w}}},[s,l,x.bottom,C,w]);return(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[D,{transform:[{translateY:I},{scale:j}],opacity:k},f,b],pointerEvents:u&&d?"none":"auto",children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:t,onPress:e=>{if(c)return;const t=(0,_hapticUtils.resolveHaptic)(g,"impactLight");t&&(0,_hapticUtils.triggerHaptic)(t),n()},onPressIn:S,onPressOut:N,disabled:c,accessibilityRole:"button",accessibilityLabel:m,accessibilityHint:p,accessibilityState:{disabled:c},"aria-disabled":c,testID:h,style:[R.base,z?{height:v.diameter,paddingHorizontal:v.labelPaddingHorizontal,borderRadius:v.diameter/2,..._corners.smoothCorners}:{width:v.diameter,height:v.diameter,borderRadius:v.diameter/2,..._corners.smoothCorners},y.shadows.lg,{backgroundColor:F,opacity:c?.55:1}],children:({pressed:e})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[e&&!c?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:"fab-pressed",style:[R.pressedTint,{backgroundColor:pressedTintFor(y,a),borderRadius:v.diameter/2,..._corners.smoothCorners}]}):null,E,z?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[R.label,{color:V,fontSize:v.fontSize,fontWeight:y.typography.fontWeight.semibold,marginLeft:y.spacing.sm},_],numberOfLines:1,children:i}):null]})})})});FloatingActionButton.displayName="FloatingActionButton";const buildStyles=e=>_reactNative.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:r,actions:n,open:i,defaultOpen:o=!1,onOpenChange:a,position:s="bottomRight",bottomOffset:l,size:c="md",accessibilityLabel:u="Quick actions",haptic:d,hideOnScroll:m=!1,isScrolling:p=!1,containerStyle:g,secondaryActionStyle:b,labelPillStyle:f,labelStyle:_,testID:h}=e,y=(0,_index.useTheme)(),x=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),v=sizeMap[c],R=(0,_react.useMemo)(()=>buildGroupStyles(y),[y]),j=y.components.floatingActionButton,S=j?.edgeOffset??24,N=j?.bottomOffset??24,A=j?.secondaryGap??16,w=j?.staggerMs??50,C="boolean"==typeof i,[P,I]=(0,_react.useState)(o),k=C?i:P,E=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current;(0,_react.useEffect)(()=>{if(!m)return void(0,_index.setNativeValue)(E,0);const e=_reactNative.Animated.timing(E,{toValue:p?1:0,duration:y.motion.duration.normal,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0});return e.start(),()=>e.stop()},[m,p,E,y.motion.duration.normal,y.motion.easing.standard]);const z=m&&p;(0,_react.useEffect)(()=>{z&&k&&(C||I(!1),a?.(!1))},[z,k,C,a]);const F=E.interpolate({inputRange:[0,1],outputRange:[0,v.diameter+(l??N)+x.bottom+S]}),V=E.interpolate({inputRange:[0,1],outputRange:[1,0]}),D=(0,_react.useRef)((0,_index.createAnimatedValue)(k?1:0)).current,O=(0,_react.useRef)([]),[T,B]=(0,_react.useState)(0);(0,_react.useEffect)(()=>{const e=O.current;if(e.length!==n.length){if(e.length<n.length){const t=e.slice();for(let r=e.length;r<n.length;r+=1)t.push(new _reactNative.Animated.Value(k?1:0));O.current=t}else O.current=e.slice(0,n.length);B(e=>e+1)}},[n.length]),(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(D,{toValue:k?1:0,duration:y.motion.duration.normal,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0});e.start();const t=O.current.map(e=>_reactNative.Animated.timing(e,{toValue:k?1:0,duration:y.motion.duration.normal,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0})),r=k?t:[...t].reverse(),n=_reactNative.Animated.stagger(w,r);return n.start(),()=>{e.stop(),n.stop()}},[k,D,y.motion.duration.normal,y.motion.easing.standard,n.length,T,w]);const L=(0,_react.useCallback)(e=>{const t=(0,_hapticUtils.resolveHaptic)(d,"impactLight");t&&(0,_hapticUtils.triggerHaptic)(t),C||I(e),a?.(e)},[C,a,d]),M=(0,_react.useCallback)(()=>{L(!k)},[k,L]),H=(0,_react.useCallback)(e=>{!1!==d&&(0,_hapticUtils.triggerHaptic)("selection"),e.onPress(),C||I(!1),a?.(!1)},[C,a,d]),q=(0,_react.useCallback)(()=>{k&&L(!1)},[k,L]),W=(0,_react.useMemo)(()=>{const e=(l??N)+x.bottom;switch(s){case"bottomLeft":return{position:"absolute",bottom:e,left:S,alignItems:"flex-start"};case"bottomCenter":return{position:"absolute",bottom:e,alignSelf:"center",alignItems:"center"};default:return{position:"absolute",bottom:e,right:S,alignItems:"flex-end"}}},[s,l,x.bottom,N,S]),slotOffset=e=>-(v.diameter+A)*(e+1),G=(0,_react.useMemo)(()=>{switch(s){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"}}},[s]),U=.78*v.diameter,$=(0,_react.useMemo)(()=>{const e=U+y.spacing.sm;switch(s){case"bottomLeft":return{left:e,alignItems:"flex-start"};case"bottomCenter":return{right:v.diameter/2+U/2+y.spacing.sm,alignItems:"flex-end"};default:return{right:e,alignItems:"flex-end"}}},[s,U,v.diameter,y.spacing.sm]),Y=D.interpolate({inputRange:[0,1],outputRange:[0,.4]}),Q=D.interpolate({inputRange:[0,1],outputRange:["0deg","45deg"]});return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[k?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:k?"auto":"none",style:[_reactNative.StyleSheet.absoluteFill,{backgroundColor:y.colors.background.overlay,opacity:Y}],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:q,accessibilityElementsHidden:!0,importantForAccessibility:"no",testID:h?`${h}-backdrop`:void 0})}):null,(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{pointerEvents:z?"none":"box-none",style:[W,{transform:[{translateY:F}],opacity:V},g],accessibilityRole:"menu",testID:h,children:[n.map((e,t)=>{const r=O.current[t];if(!r)return null;const n=r.interpolate({inputRange:[0,1],outputRange:[0,slotOffset(t)]}),i=r.interpolate({inputRange:[0,1],outputRange:[.6,1]}),o=toneBackground(y,e.tone??"primary"),a=toneForeground(y,e.tone??"primary"),s=e.label?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[R.labelSlot,$],testID:h?`${h}-label-${e.key}`:void 0,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[R.labelPill,y.shadows.sm,{backgroundColor:y.colors.background.elevated,paddingHorizontal:y.spacing.sm,paddingVertical:y.spacing.xs,borderRadius:y.radius.sm,..._corners.smoothCorners},f],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[{color:y.colors.text.primary,fontSize:y.typography.fontSize.sm,fontWeight:y.typography.fontWeight.medium},_],numberOfLines:1,children:e.label})})}):null;return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{pointerEvents:k?"auto":"none",style:[R.secondaryRow,G,{position:"absolute",bottom:0,opacity:r,transform:[{translateY:n},{scale:i}]}],children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>H(e),accessibilityRole:"menuitem",accessibilityLabel:e.accessibilityLabel,style:[R.fabBase,y.shadows.md,{width:U,height:U,borderRadius:U/2,..._corners.smoothCorners,backgroundColor:o},b],testID:h?`${h}-action-${e.key}`:void 0,children:({pressed:t})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[t?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:"fab-pressed",style:[R.pressedTint,{backgroundColor:pressedTintFor(y,e.tone??"primary"),borderRadius:U/2,..._corners.smoothCorners}]}):null,_react.default.isValidElement(e.icon)?e.icon:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:a},children:String(e.icon??"")})]})}),s]},e.key)}),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:M,accessibilityRole:"button",accessibilityLabel:u,accessibilityState:{expanded:k},"aria-expanded":k,style:[R.fabBase,y.shadows.lg,{width:v.diameter,height:v.diameter,borderRadius:v.diameter/2,..._corners.smoothCorners,backgroundColor:y.colors.primary}],testID:h?`${h}-primary`:void 0,children:({pressed:e})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[e?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:"fab-pressed",style:[R.pressedTint,{backgroundColor:_color.ACCENT_PRESSED_TINT,borderRadius:v.diameter/2,..._corners.smoothCorners}]}):null,(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:r?void 0:{transform:[{rotate:Q}]},children:k&&r?r:t})]})})]})]})};exports.FloatingActionButtonGroup=FloatingActionButtonGroup;const buildGroupStyles=e=>_reactNative.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"}});var _default=exports.default=FloatingActionButton;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ForceUpdateDialog=void 0;var _mobileCore=require("@webority/mobile-core"),_react=_interopRequireWildcard(require("react")),_index=require("../Dialog/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,a=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var o,i,l={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return l;if(o=t?a:r){if(o.has(e))return o.get(e);o.set(e,l)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((i=(o=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(i.get||i.set)?o(l,t,i):l[t]=e[t]);return l})(e,t)}const ForceUpdateDialog=({visible:e,onClose:t,mandatory:r=!1,updateUrl:a,title:o="Update available",message:i="A new version of the app is available. Please update to continue using the latest features and security improvements.",updateLabel:l="Update now",laterLabel:n="Later",containerStyle:s,titleStyle:u,messageStyle:c,testID:p})=>{const[d,f]=(0,_react.useState)(!1),_=(0,_react.useCallback)(()=>{f(!0),(async()=>{try{await _mobileCore.VersionCheck.openUpdateUrl(a??null)}catch(e){_mobileCore.Logger.error("[ForceUpdateDialog] Failed to open store URL",e)}finally{f(!1)}})()},[a]),y=(0,_react.useCallback)(()=>{r||t?.()},[r,t]),b=r?[{label:l,onPress:_,tone:"primary",loading:d}]:[{label:n,onPress:y,tone:"neutral"},{label:l,onPress:_,tone:"primary",loading:d}];return(0,_jsxRuntime.jsx)(_index.Dialog,{visible:e,onClose:y,title:o,message:i,variant:"info",actions:b,dismissOnAction:!1,containerStyle:s,titleStyle:u,messageStyle:c,testID:p})};exports.ForceUpdateDialog=ForceUpdateDialog;var _default=exports.default=ForceUpdateDialog;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ForceUpdateDialog=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_index=require("../Dialog/index.js"),_jsxRuntime=require("react/jsx-runtime");const ForceUpdateDialog=({visible:e,onClose:t,mandatory:a=!1,updateUrl:r,title:o="Update available",message:l="A new version of the app is available. Please update to continue using the latest features and security improvements.",updateLabel:i="Update now",laterLabel:s="Later",containerStyle:n,titleStyle:c,messageStyle:d,testID:u})=>{const[p,b]=(0,_react.useState)(!1),g=(0,_react.useCallback)(()=>{b(!0),(async()=>{try{await _mobileCore.VersionCheck.openUpdateUrl(r??null)}catch(e){_mobileCore.Logger.error("[ForceUpdateDialog] Failed to open store URL",e)}finally{b(!1)}})()},[r]),m=(0,_react.useCallback)(()=>{a||t?.()},[a,t]),y=a?[{label:i,onPress:g,tone:"primary",loading:p}]:[{label:s,onPress:m,tone:"neutral"},{label:i,onPress:g,tone:"primary",loading:p}];return(0,_jsxRuntime.jsx)(_index.Dialog,{visible:e,onClose:m,title:o,message:l,variant:"info",actions:y,dismissOnAction:!1,containerStyle:n,titleStyle:c,messageStyle:d,testID:u})};exports.ForceUpdateDialog=ForceUpdateDialog;var _default=exports.default=ForceUpdateDialog;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.FormField=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_FormContext=require("../../form/FormContext.js"),_index=require("../../theme/index.js"),_index2=require("../FieldBase/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,i=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var n,l,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(n=t?i:r){if(n.has(e))return n.get(e);n.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((l=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(l.get||l.set)?n(o,t,l):o[t]=e[t]);return o})(e,t)}const FormField=exports.FormField=(0,_react.forwardRef)((e,t)=>{const{label:r,help:i,helperText:n,error:l,required:o=!1,name:a,children:s,layout:u="stacked",helperLines:c,labelStyle:d,helperStyle:x,errorStyle:p,containerStyle:f,inputContainerStyle:_,accessibilityLabel:m,testID:h}=e,y=(0,_index.useTheme)(),F=(0,_react.useMemo)(()=>buildStyles(y),[y]),v=(0,_FormContext.useOptionalFormContext)(),b=null!=a&&null!=v,j=b?v.getFieldProps(a):null,S="function"==typeof s,g=b?S?j?.error:void 0:l,R=(0,_index2.fieldTextAsString)(b?j?.error:l),w=(0,_react.useRef)((0,_index.createAnimatedValue)(g?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(w,{toValue:g?1:0,duration:y.motion.duration.fast,useNativeDriver:!0});return e.start(),()=>e.stop()},[g,w,y.motion.duration.fast]);const T=(0,_react.useMemo)(()=>{if(m)return m;const e=(0,_index2.fieldTextAsString)(r);return e?R?`${e}, error: ${R}`:e:void 0},[m,r,R]),k=(0,_index2.hasFieldText)(r),q=(0,_jsxRuntime.jsxs)(_reactNative.Text,{style:[F.label,"inline"!==u||(0,_index2.hasFieldText)(i)?null:F.labelInline,(0,_index2.hasFieldText)(i)?F.labelShrink:null,d],children:[r,o?(0,_jsxRuntime.jsx)(_index2.RequiredMark,{}):null]}),N=k?(0,_index2.hasFieldText)(i)?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[F.labelRow,"inline"===u?F.labelInline:null],children:[q,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[F.help,{marginLeft:y.spacing.xs}],children:i})]}):q:null,I="inline"===u?F.inputInline:F.inputStacked,W=(0,_index2.hasFieldText)(g),C=!W&&(0,_index2.hasFieldText)(n),L=(()=>{if(S)return j?s(j):null;if(b&&j&&_react.default.isValidElement(s)){const e=s,t=e.props.onChangeText,r=e.props.onBlur,i=e.props.onFocus;return _react.default.cloneElement(e,{value:j.value,onChangeText:e=>{j.onChangeText(e),t?.(e)},onBlur:e=>{j.onBlur(),r?.(e)},onFocus:e=>{j.onFocus(),i?.(e)},error:j.error,ref:e=>v.registerField(a,e??null)})}return s})(),M=o&&!k&&_react.default.isValidElement(L)?_react.default.cloneElement(L,{required:!0}):L;return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,style:["inline"===u?F.rootInline:F.rootStacked,f],accessibilityLabel:T,accessibilityHint:R||void 0,testID:h,children:[N,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[I,_],children:M}),C?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[F.helper,x],numberOfLines:c||void 0,children:n}):null,W?(0,_jsxRuntime.jsx)(_reactNative.Animated.Text,{style:[F.error,{opacity:w},p],numberOfLines:c||void 0,accessibilityLiveRegion:"polite",children:g}):null]})});FormField.displayName="FormField";const buildStyles=e=>_reactNative.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,...(0,_index.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}});var _default=exports.default=FormField;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.FormField=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_FormContext=require("../../form/FormContext.js"),_index=require("../../theme/index.js"),_index2=require("../FieldBase/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,i=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var n,l,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(n=t?i:r){if(n.has(e))return n.get(e);n.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((l=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(l.get||l.set)?n(o,t,l):o[t]=e[t]);return o})(e,t)}const FormField=exports.FormField=(0,_react.forwardRef)((e,t)=>{const{label:r,help:i,helperText:n,error:l,required:o=!1,name:a,children:s,layout:u="stacked",helperLines:c,labelStyle:d,helperStyle:x,errorStyle:p,containerStyle:f,inputContainerStyle:_,accessibilityLabel:m,testID:h}=e,y=(0,_index.useTheme)(),F=(0,_react.useMemo)(()=>buildStyles(y),[y]),v=(0,_FormContext.useOptionalFormContext)(),b=null!=a&&null!=v,j=b?v.getFieldProps(a):null,S="function"==typeof s,g=b?S?j?.error:void 0:l,R=(0,_index2.fieldTextAsString)(b?j?.error:l),T=(0,_react.useRef)((0,_index.createAnimatedValue)(g?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(T,{toValue:g?1:0,duration:y.motion.duration.fast,useNativeDriver:!0});return e.start(),()=>e.stop()},[g,T,y.motion.duration.fast]);const w=(0,_react.useMemo)(()=>{if(m)return m;const e=(0,_index2.fieldTextAsString)(r);return e?R?`${e}, error: ${R}`:e:void 0},[m,r,R]),k=(0,_index2.hasFieldText)(r),q=(0,_jsxRuntime.jsxs)(_reactNative.Text,{style:[F.label,"inline"!==u||(0,_index2.hasFieldText)(i)?null:F.labelInline,(0,_index2.hasFieldText)(i)?F.labelShrink:null,d],children:[r,o?(0,_jsxRuntime.jsx)(_index2.RequiredMark,{}):null]}),N=k?(0,_index2.hasFieldText)(i)?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[F.labelRow,"inline"===u?F.labelInline:null],children:[q,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[F.help,{marginLeft:y.spacing.xs}],children:i})]}):q:null,I="inline"===u?F.inputInline:F.inputStacked,W=(0,_index2.hasFieldText)(g),C=!W&&(0,_index2.hasFieldText)(n),L=(()=>{if(S)return j?s(j):null;if(b&&j&&_react.default.isValidElement(s)){const e=s,t=e.props.onChangeText,r=e.props.onBlur,i=e.props.onFocus;return _react.default.cloneElement(e,{value:j.value,onChangeText:e=>{j.onChangeText(e),t?.(e)},onBlur:e=>{j.onBlur(),r?.(e)},onFocus:e=>{j.onFocus(),i?.(e)},error:j.error,ref:e=>v.registerField(a,e??null)})}return s})(),M=o&&!k&&_react.default.isValidElement(L)?_react.default.cloneElement(L,{required:!0}):L;return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,style:["inline"===u?F.rootInline:F.rootStacked,f],accessibilityLabel:w,accessibilityHint:R||void 0,testID:h,children:[N,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[I,_],children:M}),C?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[F.helper,x],numberOfLines:c||void 0,children:n}):null,W?(0,_jsxRuntime.jsx)(_reactNative.Animated.Text,{style:[F.error,{opacity:T},p],numberOfLines:c||void 0,accessibilityLiveRegion:"polite",children:g}):null]})});FormField.displayName="FormField";const buildStyles=e=>_reactNative.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,...(0,_index.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.toneText.error}});var _default=exports.default=FormField;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.IconButton=void 0;var _react=require("react"),_reactNative=require("react-native"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index3=require("../Spinner/index.js"),_jsxRuntime=require("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=exports.IconButton=(0,_react.forwardRef)((e,r)=>{const{icon:s,iconVariant:o,onPress:t,accessibilityLabel:n,tone:i="primary",variant:c="solid",size:a="md",shape:l="circle",active:d=!1,disabled:u=!1,loading:b=!1,haptic:m,style:_,testID:y}=e,p=(0,_index.useTheme)(),x=SIZE_MAP[a],g=u||b,{scale:f,pressIn:I,pressOut:j}=(0,_usePressAnimation.usePressAnimation)({scaleTo:.92,enabled:!g}),{base:h,on:P,fg:S}=toneFor(p,i),v=d?"solid":c;let q="transparent",A="transparent",w=0,R=g?p.colors.text.disabled:S;"solid"===v?(q=g?p.colors.surface.disabled:h,R=g?p.colors.text.disabled:P):"soft"===v?q=g?p.colors.surface.disabled:(0,_color.tintOf)(h,.14,p.colors.background.secondary):"outline"===v?(A=g?p.colors.border.primary:h,w=p.colors.border.width):"glass"===v&&(q=p.colors.glass.fill,A=p.colors.glass.border,w=1,R=g?p.colors.text.disabled:p.colors.glass.on);const B={color:R,size:x.icon,disabled:g},C="circle"===l?x.diameter/2:p.radius.md;return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:r,onPress:e=>{if(g)return;const r=(0,_index2.resolveHaptic)(m,"selection");r&&(0,_index2.triggerHaptic)(r),t?.(e)},onPressIn:I,onPressOut:j,disabled:g,accessibilityRole:"button",accessibilityLabel:n,accessibilityState:{disabled:g,selected:d},hitSlop:6,testID:y,style:({pressed:e})=>[styles.base,{width:x.diameter,height:x.diameter,borderRadius:C,..._corners.smoothCorners,backgroundColor:q,borderColor:A,borderWidth:w,opacity:e&&"solid"!==v?.7:1},_],children:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[styles.content,{transform:[{scale:f}]}],children:b?(0,_jsxRuntime.jsx)(_index3.Spinner,{size:"sm",color:R}):(0,_slotIcon.renderSlotIcon)(s,B,o)})})});IconButton.displayName="IconButton";const styles=_reactNative.StyleSheet.create({base:{alignItems:"center",justifyContent:"center"},content:{alignItems:"center",justifyContent:"center"}});var _default=exports.default=IconButton;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.IconButton=void 0;var _react=require("react"),_reactNative=require("react-native"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index3=require("../Spinner/index.js"),_jsxRuntime=require("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.toneText.success};case"warning":return{base:e.colors.warning,on:e.colors.onWarning,fg:e.colors.toneText.warning};case"error":return{base:e.colors.error,on:e.colors.onError,fg:e.colors.toneText.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=exports.IconButton=(0,_react.forwardRef)((e,r)=>{const{icon:s,iconVariant:o,onPress:t,accessibilityLabel:n,tone:i="primary",variant:c="solid",size:a="md",shape:l="circle",active:d=!1,disabled:u=!1,loading:b=!1,haptic:m,style:_,testID:x}=e,y=(0,_index.useTheme)(),p=SIZE_MAP[a],g=u||b,{scale:f,pressIn:I,pressOut:j}=(0,_usePressAnimation.usePressAnimation)({scaleTo:.92,enabled:!g}),{base:h,on:P,fg:S}=toneFor(y,i),v=d?"solid":c;let q="transparent",A="transparent",w=0,R=g?y.colors.text.disabled:S;"solid"===v?(q=g?y.colors.surface.disabled:h,R=g?y.colors.text.disabled:P):"soft"===v?q=g?y.colors.surface.disabled:(0,_color.tintOf)(h,.14,y.colors.background.secondary):"outline"===v?(A=g?y.colors.border.primary:h,w=y.colors.border.width):"glass"===v&&(q=y.colors.glass.fill,A=y.colors.glass.border,w=1,R=g?y.colors.text.disabled:y.colors.glass.on);const T={color:R,size:p.icon,disabled:g},B="circle"===l?p.diameter/2:y.radius.md;return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:r,onPress:e=>{if(g)return;const r=(0,_index2.resolveHaptic)(m,"selection");r&&(0,_index2.triggerHaptic)(r),t?.(e)},onPressIn:I,onPressOut:j,disabled:g,accessibilityRole:"button",accessibilityLabel:n,accessibilityState:{disabled:g,selected:d},"aria-disabled":g,"aria-selected":d,hitSlop:6,testID:x,style:({pressed:e})=>[styles.base,{width:p.diameter,height:p.diameter,borderRadius:B,..._corners.smoothCorners,backgroundColor:q,borderColor:A,borderWidth:w,opacity:e&&"solid"!==v?.7:1},_],children:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[styles.content,{transform:[{scale:f}]}],children:b?(0,_jsxRuntime.jsx)(_index3.Spinner,{size:"sm",color:R}):(0,_slotIcon.renderSlotIcon)(s,T,o)})})});IconButton.displayName="IconButton";const styles=_reactNative.StyleSheet.create({base:{alignItems:"center",justifyContent:"center"},content:{alignItems:"center",justifyContent:"center"}});var _default=exports.default=IconButton;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ImageGallery=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated")),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_index3=require("../Carousel/index.js"),_index4=require("../Skeleton/index.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var a=new WeakMap,i=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var r,n,l={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return l;if(r=t?i:a){if(r.has(e))return r.get(e);r.set(e,l)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((n=(r=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(n.get||n.set)?r(l,t,n):l[t]=e[t]);return l})(e,t)}const MAX_SCALE_FALLBACK=4,MIN_SCALE_FALLBACK=1,DOUBLE_TAP_SCALE_FALLBACK=2,SPRING_CONFIG={damping:18,stiffness:220,mass:1},ImageGallery=({images:e,initialIndex:t=0,showThumbnails:a=!0,showCounter:i=!0,enableLightbox:r=!0,enablePinchZoom:n=!0,onIndexChange:l,haptic:s,loading:o=!1,accessibilityLabel:c,containerStyle:u,testID:d})=>{const m=(0,_index.useTheme)(),_=(0,_react.useMemo)(()=>buildStyles(m),[m]),[h,g]=(0,_react.useState)(clamp(t,0,Math.max(0,e.length-1))),[v,x]=(0,_react.useState)(!1),p=(0,_react.useCallback)(e=>{g(e),l?.(e)},[l]),b=(0,_react.useCallback)(()=>{if(!r)return;const e=(0,_index2.resolveHaptic)(s,"selection");e&&(0,_index2.triggerHaptic)(e),x(!0)},[r,s]),y=(0,_react.useCallback)(()=>{const e=(0,_index2.resolveHaptic)(s,"selection");e&&(0,_index2.triggerHaptic)(e),x(!1)},[s]),R=(0,_react.useCallback)((t,a)=>{const i=t.alt??`Image ${a+1} of ${e.length}`;return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:b,accessibilityRole:"image",accessibilityLabel:i,accessibilityHint:r?"Tap to open fullscreen":void 0,style:_.imageWrap,children:(0,_jsxRuntime.jsx)(_reactNative.Image,{source:t.source,style:_.image,resizeMode:"cover"})})},[r,e.length,b,_]),S=(0,_react.useCallback)(e=>(0,_jsxRuntime.jsx)(_reactNative.Image,{source:e.source,style:_.thumbnailImage,resizeMode:"cover"}),[_]),N=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[_.container,u],testID:d,accessibilityLabel:c??"Image gallery",children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_.carouselWrap,children:[(0,_jsxRuntime.jsx)(_index3.Carousel,{data:e,defaultIndex:t,onIndexChange:p,renderItem:R,showPagination:!1,showThumbnails:a,renderThumbnail:S,haptic:s}),i&&e.length>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:_.counterPill,pointerEvents:"none",children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[_.counterText,{color:m.colors.onOverlay}],accessibilityLabel:`Image ${h+1} of ${e.length}`,children:`${h+1} / ${e.length}`})}):null]}),r?(0,_jsxRuntime.jsx)(Lightbox,{visible:v,images:e,initialIndex:h,enablePinchZoom:n,showCounter:i,onClose:y,onIndexChange:p,haptic:s}):null]});return o?(0,_jsxRuntime.jsx)(ImageGallerySkeleton,{images:e,showThumbnails:a,showCounter:i,containerStyle:u,testID:d}):N};exports.ImageGallery=ImageGallery,ImageGallery.displayName="ImageGallery";const ImageGallerySkeleton=({images:e,showThumbnails:t=!0,showCounter:a=!0,containerStyle:i,testID:r})=>{const n=Math.min(e?.length||4,6);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[{width:"100%"},i],testID:r,accessibilityRole:"progressbar",accessibilityState:{busy:!0},children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{position:"relative"},children:[(0,_jsxRuntime.jsx)(_index4.Skeleton,{width:"100%",height:280,radius:"lg"}),a?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{position:"absolute",top:12,right:12},children:(0,_jsxRuntime.jsx)(_index4.Skeleton,{width:44,height:22,radius:"full"})}):null]}),t?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{flexDirection:"row",marginTop:12},children:Array.from({length:n}).map((e,t)=>(0,_jsxRuntime.jsx)(_index4.Skeleton,{width:64,height:64,radius:"md",style:{marginRight:8}},`sk-thumb-${t}`))}):null]})};ImageGallerySkeleton.displayName="ImageGallerySkeleton",ImageGallery.Skeleton=ImageGallerySkeleton;const Lightbox=({visible:e,images:t,initialIndex:a,enablePinchZoom:i,showCounter:r,onClose:n,onIndexChange:l,haptic:s})=>{const o=(0,_index.useTheme)(),c=(0,_react.useMemo)(()=>buildLightboxStyles(o),[o]),u=o.components.imageGallery,d=u?.maxScale??4,m=u?.minScale??1,_=u?.doubleTapScale??2,h=(0,_react.useRef)(null),[g,v]=(0,_react.useState)(a),x=(0,_react.useCallback)(e=>{if(e!==g){const t=(0,_index2.resolveHaptic)(s,"selection");t&&(0,_index2.triggerHaptic)(t),v(e),l(e)}},[g,l,s]),p=(0,_react.useCallback)((e,a)=>(0,_jsxRuntime.jsx)(ZoomableImage,{image:e,index:a,total:t.length,active:a===g,enabled:i,maxScale:d,minScale:m,doubleTapScale:_,haptic:s}),[g,i,t.length,d,m,_,s]),b=t[g]?.caption;return(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:e,transparent:!0,statusBarTranslucent:!0,presentationStyle:"overFullScreen",animationType:"fade",onRequestClose:n,accessibilityViewIsModal:!0,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:c.backdrop,accessibilityViewIsModal:!0,children:[(0,_jsxRuntime.jsx)(_index3.Carousel,{ref:h,data:t,defaultIndex:a,onIndexChange:x,renderItem:p,showPagination:!1,haptic:s}),r&&t.length>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:c.counterPill,pointerEvents:"none",children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[c.counterText,{color:o.colors.onOverlay}],accessibilityLabel:`Image ${g+1} of ${t.length}`,children:`${g+1} / ${t.length}`})}):null,(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:n,accessibilityRole:"button",accessibilityLabel:"Close gallery",style:c.closeButton,hitSlop:12,children:(o.icons?.close??_defaultIcons.defaultIcons.close)({size:24,color:o.colors.onOverlay})}),b?(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:c.captionWrap,entering:void 0,accessibilityElementsHidden:!1,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:c.captionText,numberOfLines:3,children:b})}):null,(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})})},ZoomableImage=({image:e,index:t,total:a,active:i,enabled:r,maxScale:n,minScale:l,doubleTapScale:s,haptic:o})=>{const c=_reactNative.Dimensions.get("window"),u=(0,_reactNativeReanimated.useSharedValue)(1),d=(0,_reactNativeReanimated.useSharedValue)(1),m=(0,_reactNativeReanimated.useSharedValue)(0),_=(0,_reactNativeReanimated.useSharedValue)(0),h=(0,_reactNativeReanimated.useSharedValue)(0),g=(0,_reactNativeReanimated.useSharedValue)(0),v=(0,_react.useCallback)(()=>{u.value=(0,_reactNativeReanimated.withSpring)(1,SPRING_CONFIG),d.value=1,m.value=(0,_reactNativeReanimated.withSpring)(0,SPRING_CONFIG),_.value=(0,_reactNativeReanimated.withSpring)(0,SPRING_CONFIG),h.value=0,g.value=0},[u,d,m,_,h,g]);_react.default.useEffect(()=>{i||(u.value=(0,_reactNativeReanimated.withTiming)(1,{duration:150}),m.value=(0,_reactNativeReanimated.withTiming)(0,{duration:150}),_.value=(0,_reactNativeReanimated.withTiming)(0,{duration:150}),d.value=1,h.value=0,g.value=0)},[i,u,m,_,d,h,g]);const x=(0,_react.useCallback)(()=>{!1!==o&&(0,_index2.triggerHaptic)("impactLight")},[o]),p=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Pinch().enabled(r).onStart(()=>{"worklet";d.value=u.value}).onUpdate(e=>{"worklet";const t=d.value*e.scale;u.value=t<l?l+.3*(t-l):t>n?n+.2*(t-n):t}).onEnd(()=>{"worklet";return u.value<l?(u.value=(0,_reactNativeReanimated.withSpring)(l,SPRING_CONFIG),m.value=(0,_reactNativeReanimated.withSpring)(0,SPRING_CONFIG),_.value=(0,_reactNativeReanimated.withSpring)(0,SPRING_CONFIG),d.value=l,h.value=0,void(g.value=0)):u.value>n?(u.value=(0,_reactNativeReanimated.withSpring)(n,SPRING_CONFIG),void(d.value=n)):void(d.value=u.value)}),[r,u,d,m,_,h,g,l,n]),b=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Pan().minPointers(1).maxPointers(1).onStart(()=>{"worklet";h.value=m.value,g.value=_.value}).onUpdate(e=>{"worklet";u.value<=1||(m.value=h.value+e.translationX,_.value=g.value+e.translationY)}).onEnd(()=>{"worklet";h.value=m.value,g.value=_.value}),[u,m,_,h,g]),y=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Tap().numberOfTaps(2).onEnd(()=>{"worklet";(0,_reactNativeReanimated.runOnJS)(x)(),u.value>1?(u.value=(0,_reactNativeReanimated.withSpring)(1,SPRING_CONFIG),m.value=(0,_reactNativeReanimated.withSpring)(0,SPRING_CONFIG),_.value=(0,_reactNativeReanimated.withSpring)(0,SPRING_CONFIG),d.value=1,h.value=0,g.value=0):(u.value=(0,_reactNativeReanimated.withSpring)(s,SPRING_CONFIG),d.value=s)}),[u,d,m,_,h,g,x,s]),R=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Race(p,b,y),[p,b,y]),S=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({transform:[{translateX:m.value},{translateY:_.value},{scale:u.value}]}));_react.default.useEffect(()=>{i||v()},[i,v]);const N=e.alt??`Image ${t+1} of ${a}`;return(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:R,children:(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[lightboxImageStyles.container,{width:c.width}],children:(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.Image,{source:e.source,resizeMode:"contain",style:[lightboxImageStyles.image,S],accessibilityLabel:N,accessible:!0})})})},clamp=(e,t,a)=>Math.min(Math.max(e,t),a),buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},carouselWrap:{width:"100%",position:"relative"},imageWrap:{width:"100%",aspectRatio:16/9,backgroundColor:e.colors.background.secondary,overflow:"hidden",borderRadius:e.radius.md,..._corners.smoothCorners},image:{width:"100%",height:"100%"},thumbnailImage:{width:"100%",height:"100%"},counterPill:{position:"absolute",top:12,alignSelf:"center",paddingHorizontal:12,paddingVertical:4,borderRadius:e.radius.full,..._corners.smoothCorners,backgroundColor:"rgba(0,0,0,0.55)"},counterText:{fontSize:e.typography.fontSize.sm,fontWeight:e.typography.fontWeight.semibold}}),buildLightboxStyles=e=>_reactNative.StyleSheet.create({backdrop:{flex:1,backgroundColor:"#000",justifyContent:"center"},counterPill:{position:"absolute",top:48,alignSelf:"center",paddingHorizontal:14,paddingVertical:6,borderRadius:e.radius.full,..._corners.smoothCorners,backgroundColor:"rgba(0,0,0,0.6)"},counterText:{fontSize:e.typography.fontSize.sm,fontWeight:e.typography.fontWeight.semibold},closeButton:{position:"absolute",top:44,right:16,width:40,height:40,borderRadius:20,..._corners.smoothCorners,alignItems:"center",justifyContent:"center",backgroundColor:"rgba(0,0,0,0.5)"},captionWrap:{position:"absolute",left:0,right:0,bottom:32,paddingHorizontal:24},captionText:{color:"#FFFFFF",fontSize:14,lineHeight:20,textAlign:"center"}}),lightboxImageStyles=_reactNative.StyleSheet.create({container:{flex:1,alignItems:"center",justifyContent:"center"},image:{width:"100%",height:"100%"}});var _default=exports.default=ImageGallery;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ImageGallery=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated")),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_index3=require("../Carousel/index.js"),_index4=require("../Skeleton/index.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var a=new WeakMap,i=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var r,n,l={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return l;if(r=t?i:a){if(r.has(e))return r.get(e);r.set(e,l)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((n=(r=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(n.get||n.set)?r(l,t,n):l[t]=e[t]);return l})(e,t)}const MAX_SCALE_FALLBACK=4,MIN_SCALE_FALLBACK=1,DOUBLE_TAP_SCALE_FALLBACK=2,SPRING_CONFIG={damping:18,stiffness:220,mass:1},ImageGallery=({images:e,initialIndex:t=0,showThumbnails:a=!0,showCounter:i=!0,enableLightbox:r=!0,enablePinchZoom:n=!0,onIndexChange:l,haptic:s,loading:o=!1,accessibilityLabel:c,containerStyle:u,testID:d})=>{const m=(0,_index.useTheme)(),_=(0,_react.useMemo)(()=>buildStyles(m),[m]),[h,g]=(0,_react.useState)(clamp(t,0,Math.max(0,e.length-1))),[v,x]=(0,_react.useState)(!1),p=(0,_react.useCallback)(e=>{g(e),l?.(e)},[l]),b=(0,_react.useCallback)(()=>{if(!r)return;const e=(0,_index2.resolveHaptic)(s,"selection");e&&(0,_index2.triggerHaptic)(e),x(!0)},[r,s]),y=(0,_react.useCallback)(()=>{const e=(0,_index2.resolveHaptic)(s,"selection");e&&(0,_index2.triggerHaptic)(e),x(!1)},[s]),R=(0,_react.useCallback)((t,a)=>{const i=t.alt??`Image ${a+1} of ${e.length}`;return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:b,accessibilityRole:"image",accessibilityLabel:i,accessibilityHint:r?"Tap to open fullscreen":void 0,style:_.imageWrap,children:(0,_jsxRuntime.jsx)(_reactNative.Image,{source:t.source,style:_.image,resizeMode:"cover"})})},[r,e.length,b,_]),S=(0,_react.useCallback)(e=>(0,_jsxRuntime.jsx)(_reactNative.Image,{source:e.source,style:_.thumbnailImage,resizeMode:"cover"}),[_]),N=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[_.container,u],testID:d,accessibilityLabel:c??"Image gallery",children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_.carouselWrap,children:[(0,_jsxRuntime.jsx)(_index3.Carousel,{data:e,defaultIndex:t,onIndexChange:p,renderItem:R,showPagination:!1,showThumbnails:a,renderThumbnail:S,haptic:s}),i&&e.length>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:_.counterPill,pointerEvents:"none",children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[_.counterText,{color:m.colors.onOverlay}],accessibilityLabel:`Image ${h+1} of ${e.length}`,children:`${h+1} / ${e.length}`})}):null]}),r?(0,_jsxRuntime.jsx)(Lightbox,{visible:v,images:e,initialIndex:h,enablePinchZoom:n,showCounter:i,onClose:y,onIndexChange:p,haptic:s}):null]});return o?(0,_jsxRuntime.jsx)(ImageGallerySkeleton,{images:e,showThumbnails:a,showCounter:i,containerStyle:u,testID:d}):N};exports.ImageGallery=ImageGallery,ImageGallery.displayName="ImageGallery";const ImageGallerySkeleton=({images:e,showThumbnails:t=!0,showCounter:a=!0,containerStyle:i,testID:r})=>{const n=Math.min(e?.length||4,6);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[{width:"100%"},i],testID:r,accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{position:"relative"},children:[(0,_jsxRuntime.jsx)(_index4.Skeleton,{width:"100%",height:280,radius:"lg"}),a?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{position:"absolute",top:12,right:12},children:(0,_jsxRuntime.jsx)(_index4.Skeleton,{width:44,height:22,radius:"full"})}):null]}),t?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{flexDirection:"row",marginTop:12},children:Array.from({length:n}).map((e,t)=>(0,_jsxRuntime.jsx)(_index4.Skeleton,{width:64,height:64,radius:"md",style:{marginRight:8}},`sk-thumb-${t}`))}):null]})};ImageGallerySkeleton.displayName="ImageGallerySkeleton",ImageGallery.Skeleton=ImageGallerySkeleton;const Lightbox=({visible:e,images:t,initialIndex:a,enablePinchZoom:i,showCounter:r,onClose:n,onIndexChange:l,haptic:s})=>{const o=(0,_index.useTheme)(),c=(0,_react.useMemo)(()=>buildLightboxStyles(o),[o]),u=o.components.imageGallery,d=u?.maxScale??4,m=u?.minScale??1,_=u?.doubleTapScale??2,h=(0,_react.useRef)(null),[g,v]=(0,_react.useState)(a),x=(0,_react.useCallback)(e=>{if(e!==g){const t=(0,_index2.resolveHaptic)(s,"selection");t&&(0,_index2.triggerHaptic)(t),v(e),l(e)}},[g,l,s]),p=(0,_react.useCallback)((e,a)=>(0,_jsxRuntime.jsx)(ZoomableImage,{image:e,index:a,total:t.length,active:a===g,enabled:i,maxScale:d,minScale:m,doubleTapScale:_,haptic:s}),[g,i,t.length,d,m,_,s]),b=t[g]?.caption;return(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:e,transparent:!0,statusBarTranslucent:!0,presentationStyle:"overFullScreen",animationType:"fade",onRequestClose:n,accessibilityViewIsModal:!0,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:c.backdrop,accessibilityViewIsModal:!0,children:[(0,_jsxRuntime.jsx)(_index3.Carousel,{ref:h,data:t,defaultIndex:a,onIndexChange:x,renderItem:p,showPagination:!1,haptic:s}),r&&t.length>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:c.counterPill,pointerEvents:"none",children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[c.counterText,{color:o.colors.onOverlay}],accessibilityLabel:`Image ${g+1} of ${t.length}`,children:`${g+1} / ${t.length}`})}):null,(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:n,accessibilityRole:"button",accessibilityLabel:"Close gallery",style:c.closeButton,hitSlop:12,children:(o.icons?.close??_defaultIcons.defaultIcons.close)({size:24,color:o.colors.onOverlay})}),b?(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:c.captionWrap,entering:void 0,accessibilityElementsHidden:!1,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:c.captionText,numberOfLines:3,children:b})}):null,(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})})},ZoomableImage=({image:e,index:t,total:a,active:i,enabled:r,maxScale:n,minScale:l,doubleTapScale:s,haptic:o})=>{const c=_reactNative.Dimensions.get("window"),u=(0,_reactNativeReanimated.useSharedValue)(1),d=(0,_reactNativeReanimated.useSharedValue)(1),m=(0,_reactNativeReanimated.useSharedValue)(0),_=(0,_reactNativeReanimated.useSharedValue)(0),h=(0,_reactNativeReanimated.useSharedValue)(0),g=(0,_reactNativeReanimated.useSharedValue)(0),v=(0,_react.useCallback)(()=>{u.value=(0,_reactNativeReanimated.withSpring)(1,SPRING_CONFIG),d.value=1,m.value=(0,_reactNativeReanimated.withSpring)(0,SPRING_CONFIG),_.value=(0,_reactNativeReanimated.withSpring)(0,SPRING_CONFIG),h.value=0,g.value=0},[u,d,m,_,h,g]);_react.default.useEffect(()=>{i||(u.value=(0,_reactNativeReanimated.withTiming)(1,{duration:150}),m.value=(0,_reactNativeReanimated.withTiming)(0,{duration:150}),_.value=(0,_reactNativeReanimated.withTiming)(0,{duration:150}),d.value=1,h.value=0,g.value=0)},[i,u,m,_,d,h,g]);const x=(0,_react.useCallback)(()=>{!1!==o&&(0,_index2.triggerHaptic)("impactLight")},[o]),p=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Pinch().enabled(r).onStart(()=>{"worklet";d.value=u.value}).onUpdate(e=>{"worklet";const t=d.value*e.scale;u.value=t<l?l+.3*(t-l):t>n?n+.2*(t-n):t}).onEnd(()=>{"worklet";return u.value<l?(u.value=(0,_reactNativeReanimated.withSpring)(l,SPRING_CONFIG),m.value=(0,_reactNativeReanimated.withSpring)(0,SPRING_CONFIG),_.value=(0,_reactNativeReanimated.withSpring)(0,SPRING_CONFIG),d.value=l,h.value=0,void(g.value=0)):u.value>n?(u.value=(0,_reactNativeReanimated.withSpring)(n,SPRING_CONFIG),void(d.value=n)):void(d.value=u.value)}),[r,u,d,m,_,h,g,l,n]),b=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Pan().minPointers(1).maxPointers(1).onStart(()=>{"worklet";h.value=m.value,g.value=_.value}).onUpdate(e=>{"worklet";u.value<=1||(m.value=h.value+e.translationX,_.value=g.value+e.translationY)}).onEnd(()=>{"worklet";h.value=m.value,g.value=_.value}),[u,m,_,h,g]),y=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Tap().numberOfTaps(2).onEnd(()=>{"worklet";(0,_reactNativeReanimated.runOnJS)(x)(),u.value>1?(u.value=(0,_reactNativeReanimated.withSpring)(1,SPRING_CONFIG),m.value=(0,_reactNativeReanimated.withSpring)(0,SPRING_CONFIG),_.value=(0,_reactNativeReanimated.withSpring)(0,SPRING_CONFIG),d.value=1,h.value=0,g.value=0):(u.value=(0,_reactNativeReanimated.withSpring)(s,SPRING_CONFIG),d.value=s)}),[u,d,m,_,h,g,x,s]),R=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Race(p,b,y),[p,b,y]),S=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({transform:[{translateX:m.value},{translateY:_.value},{scale:u.value}]}));_react.default.useEffect(()=>{i||v()},[i,v]);const N=e.alt??`Image ${t+1} of ${a}`;return(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:R,children:(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[lightboxImageStyles.container,{width:c.width}],children:(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.Image,{source:e.source,resizeMode:"contain",style:[lightboxImageStyles.image,S],accessibilityLabel:N,accessible:!0})})})},clamp=(e,t,a)=>Math.min(Math.max(e,t),a),buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},carouselWrap:{width:"100%",position:"relative"},imageWrap:{width:"100%",aspectRatio:16/9,backgroundColor:e.colors.background.secondary,overflow:"hidden",borderRadius:e.radius.md,..._corners.smoothCorners},image:{width:"100%",height:"100%"},thumbnailImage:{width:"100%",height:"100%"},counterPill:{position:"absolute",top:12,alignSelf:"center",paddingHorizontal:12,paddingVertical:4,borderRadius:e.radius.full,..._corners.smoothCorners,backgroundColor:"rgba(0,0,0,0.55)"},counterText:{fontSize:e.typography.fontSize.sm,fontWeight:e.typography.fontWeight.semibold}}),buildLightboxStyles=e=>_reactNative.StyleSheet.create({backdrop:{flex:1,backgroundColor:"#000",justifyContent:"center"},counterPill:{position:"absolute",top:48,alignSelf:"center",paddingHorizontal:14,paddingVertical:6,borderRadius:e.radius.full,..._corners.smoothCorners,backgroundColor:"rgba(0,0,0,0.6)"},counterText:{fontSize:e.typography.fontSize.sm,fontWeight:e.typography.fontWeight.semibold},closeButton:{position:"absolute",top:44,right:16,width:40,height:40,borderRadius:20,..._corners.smoothCorners,alignItems:"center",justifyContent:"center",backgroundColor:"rgba(0,0,0,0.5)"},captionWrap:{position:"absolute",left:0,right:0,bottom:32,paddingHorizontal:24},captionText:{color:"#FFFFFF",fontSize:14,lineHeight:20,textAlign:"center"}}),lightboxImageStyles=_reactNative.StyleSheet.create({container:{flex:1,alignItems:"center",justifyContent:"center"},image:{width:"100%",height:"100%"}});var _default=exports.default=ImageGallery;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.InlineSelect=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_Chevron=require("../FieldBase/Chevron.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var i=new WeakMap,l=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var r,n,s={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return s;if(r=t?l:i){if(r.has(e))return r.get(e);r.set(e,s)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((n=(r=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(n.get||n.set)?r(s,t,n):s[t]=e[t]);return s})(e,t)}const InlineSelect=exports.InlineSelect=(0,_react.forwardRef)((e,t)=>{const{options:i,getOptionLabel:l,getOptionValue:r,getOptionDisabled:n,getOptionDescription:s,getOptionIcon:a,value:o,onChange:c,placeholder:d,label:u,title:p,searchable:_=!1,haptic:x,disabled:b=!1,size:S="md",color:f,chevronColor:y,chevronSize:g,textStyle:h,style:j,optionStyle:m,selectedOptionStyle:v,optionTextStyle:O,selectedOptionTextStyle:C,accessibilityLabel:R,testID:k}=e,q=(0,_index.useTheme)(),F=(0,_react.useMemo)(()=>buildStyles(q),[q]),I=(0,_FieldBase.resolveFieldSize)(q,S),z=(0,_react.useCallback)(e=>l?l(e):e.label??"",[l]),T=(0,_react.useCallback)(e=>r?r(e):e.value,[r]),w=(0,_react.useCallback)(e=>n?n(e):!0===e.disabled,[n]),M=(0,_react.useCallback)(e=>s?s(e):e.description,[s]),N=(0,_react.useCallback)(e=>a?a(e):e.icon,[a]),[P,B]=(0,_react.useState)(!1),D=(0,_react.useMemo)(()=>{if(null!=o)return i.find(e=>T(e)===o)},[i,o,T]),L=(0,_react.useCallback)(e=>o===e,[o]),W=(0,_react.useCallback)(()=>{if(b)return;const e=(0,_index2.resolveHaptic)(x,"selection");e&&(0,_index2.triggerHaptic)(e),B(!0)},[b,x]),H=(0,_react.useCallback)(()=>{B(!1)},[]),V=(0,_react.useCallback)(e=>{if(w(e))return;const t=(0,_index2.resolveHaptic)(x,"selection");t&&(0,_index2.triggerHaptic)(t),c(T(e)),H()},[w,T,c,H,x]),$=b?q.colors.text.disabled:f??q.components.inlineSelect?.color??q.colors.primary,G=void 0!==D?z(D):d??"Select",A=void 0!==D?`Selected: ${z(D)}`:d??"No selection",E=R??`${u??p??"Select"}. ${A}`,J=(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:t,onPress:W,disabled:b,hitSlop:8,accessibilityRole:"button",accessibilityLabel:E,accessibilityState:{disabled:b,expanded:P},testID:k,style:({pressed:e})=>[F.trigger,{columnGap:q.spacing.xs,opacity:e&&!b?.6:1},j],children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[F.triggerText,{color:$,fontSize:I.fontSize,...(0,_index.fontFor)(q,"medium")},h],numberOfLines:1,children:G}),(0,_jsxRuntime.jsx)(_Chevron.Chevron,{color:y??$,size:g??I.iconSize,open:P})]});return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[u?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:F.labelled,children:[(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:S,children:u}),J]}):J,(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:P,onClose:H,title:p,accessibilityLabel:u??p??d??"Options",options:i,labelOf:z,getValue:T,disabledOf:w,descriptionOf:M,iconOf:N,isSelected:L,onSelect:V,searchable:_,optionStyle:m,selectedOptionStyle:v,optionTextStyle:O,selectedOptionTextStyle:C})]})});InlineSelect.displayName="InlineSelect";const buildStyles=e=>_reactNative.StyleSheet.create({labelled:{alignItems:"flex-start"},trigger:{flexDirection:"row",alignItems:"center"},triggerText:{includeFontPadding:!1}});var _default=exports.default=InlineSelect;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.InlineSelect=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_Chevron=require("../FieldBase/Chevron.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_jsxRuntime=require("react/jsx-runtime");const InlineSelect=exports.InlineSelect=(0,_react.forwardRef)((e,t)=>{const{options:i,getOptionLabel:l,getOptionValue:s,getOptionDisabled:a,getOptionDescription:n,getOptionIcon:r,value:c,onChange:o,placeholder:d,label:u,title:p,searchable:x=!1,haptic:_,disabled:b=!1,size:S="md",color:h,chevronColor:m,chevronSize:y,textStyle:g,style:j,optionStyle:v,selectedOptionStyle:f,optionTextStyle:O,selectedOptionTextStyle:C,accessibilityLabel:F,testID:I}=e,R=(0,_index.useTheme)(),k=(0,_react.useMemo)(()=>buildStyles(R),[R]),q=(0,_FieldBase.resolveFieldSize)(R,S),z=(0,_react.useCallback)(e=>l?l(e):e.label??"",[l]),T=(0,_react.useCallback)(e=>s?s(e):e.value,[s]),N=(0,_react.useCallback)(e=>a?a(e):!0===e.disabled,[a]),B=(0,_react.useCallback)(e=>n?n(e):e.description,[n]),L=(0,_react.useCallback)(e=>r?r(e):e.icon,[r]),[D,H]=(0,_react.useState)(!1),P=(0,_react.useMemo)(()=>{if(null!=c)return i.find(e=>T(e)===c)},[i,c,T]),w=(0,_react.useCallback)(e=>c===e,[c]),M=(0,_react.useCallback)(()=>{if(b)return;const e=(0,_index2.resolveHaptic)(_,"selection");e&&(0,_index2.triggerHaptic)(e),H(!0)},[b,_]),V=(0,_react.useCallback)(()=>{H(!1)},[]),$=(0,_react.useCallback)(e=>{if(N(e))return;const t=(0,_index2.resolveHaptic)(_,"selection");t&&(0,_index2.triggerHaptic)(t),o(T(e)),V()},[N,T,o,V,_]),G=b?R.colors.text.disabled:h??R.components.inlineSelect?.color??R.colors.primary,A=void 0!==P?z(P):d??"Select",E=void 0!==P?`Selected: ${z(P)}`:d??"No selection",J=F??`${u??p??"Select"}. ${E}`,K=(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:t,onPress:M,disabled:b,hitSlop:8,accessibilityRole:"button",accessibilityLabel:J,accessibilityState:{disabled:b,expanded:D},"aria-disabled":b,"aria-expanded":D,testID:I,style:({pressed:e})=>[k.trigger,{columnGap:R.spacing.xs,opacity:e&&!b?.6:1},j],children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[k.triggerText,{color:G,fontSize:q.fontSize,...(0,_index.fontFor)(R,"medium")},g],numberOfLines:1,children:A}),(0,_jsxRuntime.jsx)(_Chevron.Chevron,{color:m??G,size:y??q.iconSize,open:D})]});return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[u?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:k.labelled,children:[(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:S,children:u}),K]}):K,(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:D,onClose:V,title:p,accessibilityLabel:u??p??d??"Options",options:i,labelOf:z,getValue:T,disabledOf:N,descriptionOf:B,iconOf:L,isSelected:w,onSelect:$,searchable:x,optionStyle:v,selectedOptionStyle:f,optionTextStyle:O,selectedOptionTextStyle:C})]})});InlineSelect.displayName="InlineSelect";const buildStyles=e=>_reactNative.StyleSheet.create({labelled:{alignItems:"flex-start"},trigger:{flexDirection:"row",alignItems:"center"},triggerText:{includeFontPadding:!1}});var _default=exports.default=InlineSelect;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Input=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index4=require("../Button/index.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_useFloatingLabel=require("../FieldBase/useFloatingLabel.js"),_jsxRuntime=require("react/jsx-runtime");const multilineMinHeightMap={sm:72,md:92,lg:110},Input=exports.Input=(0,_react.forwardRef)((e,t)=>{const{label:i,help:n,placeholder:a,value:r,onChangeText:o,error:l,helperText:s,type:d="input",secureTextEntry:c=!1,showPasswordToggle:u=!1,disabled:p=!1,multiline:x=!1,leftIcon:f,rightIcon:g,unit:m,unitStyle:_,prefix:v,prefixStyle:h,readOnly:y=!1,action:b,actionStyle:j,size:S="md",variant:F,labelMode:R,required:N=!1,maxLength:w,showCounter:I=!0,textAlign:z,format:T,parse:V,style:B,containerStyle:A,inputStyle:k,labelStyle:C,messageStyle:D,borderRadius:L,onFocus:q,onBlur:H,accessibilityLabel:M,testID:P,editable:E,...O}=e,G=(0,_index2.useTheme)(),W=(0,_react.useMemo)(()=>buildStyles(G),[G]),$=(0,_FieldBase.resolveFieldSize)(G,S),X=multilineMinHeightMap[S],J=Math.round(1.4*$.fontSize),K=F??G.components.input?.defaultVariant??G.components.field?.defaultVariant??"outlined",Q=R??G.components.input?.defaultLabelMode??"top",[U,Y]=(0,_react.useState)(!1),[Z,ee]=(0,_react.useState)(!1),te="password"===d||u||c,ie="password"===d||u,ne="textarea"===d||x,ae=ne?Math.round(.1*$.fontSize):0,re="string"==typeof r&&r.length>0,oe=(0,_FieldBase.hasFieldText)(l),le=!0===l||oe,se=(0,_FieldBase.hasFieldText)(s),de=oe||!le&&se,ce=(0,_FieldBase.hasFieldText)(i),ue=(0,_FieldBase.hasFieldText)(v),pe=!p&&!1!==E,xe=U||re||ue,fe=(0,_react.useRef)(null),ge=(0,_react.useMemo)(()=>(0,_index3.mergeRefs)(fe,t),[t]),me=(0,_react.useCallback)(()=>{pe&&fe.current?.focus()},[pe]),_e=ce&&"float"===Q,ve=(0,_react.useRef)((0,_index2.createAnimatedValue)(0)).current,he=(0,_react.useRef)((0,_index2.createAnimatedValue)(de?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(he,{toValue:de?1:0,duration:G.motion.duration.fast,easing:_reactNative.Easing.bezier(...G.motion.easing.standard),useNativeDriver:!0});return e.start(),()=>e.stop()},[de,he,G.motion.duration.fast,G.motion.easing.standard]);const ye=(0,_index.useReducedMotion)(),be=G.components.input?.shakeOnError??!1,je=(0,_react.useRef)(le);(0,_react.useEffect)(()=>{if(!be)return void(je.current=le);let e;return le&&!je.current&&(ye||((0,_index2.setNativeValue)(ve,0),e=_reactNative.Animated.sequence([_reactNative.Animated.timing(ve,{toValue:1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(ve,{toValue:-1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(ve,{toValue:1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(ve,{toValue:-1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(ve,{toValue:0,duration:100,useNativeDriver:!0})]),e.start()),(0,_index3.triggerHaptic)("notificationError")),je.current=le,()=>e?.stop()},[le,ve,be,ye]);const Se=(0,_react.useCallback)(e=>{Y(!0),q?.(e)},[q]),Fe=(0,_react.useCallback)(e=>{Y(!1),H?.(e)},[H]),Re=(0,_react.useCallback)(()=>{(0,_index3.triggerHaptic)("selection"),ee(e=>!e)},[]),Ne=(0,_react.useMemo)(()=>{const e=G.components.input?.fillColors?.[K];if(!e)return;const t={};return void 0!==e.idleEmpty&&(t.backgroundIdleEmpty=e.idleEmpty),void 0!==e.idleFilled&&(t.backgroundIdleFilled=e.idleFilled),void 0!==e.focus&&(t.backgroundFocused=e.focus),void 0!==e.error&&(t.backgroundError=e.error),void 0!==e.disabled&&(t.backgroundDisabled=e.disabled),Object.keys(t).length>0?t:void 0},[G.components.input?.fillColors,K]),we=G.colors.field.caret,Ie=L??G.components.input?.borderRadius,ze=G.components.input?.tintLabelOnFocus??!1,Te=U&&ze?G.colors.field.borderFocused:G.colors.field.label,Ve=ve.interpolate({inputRange:[-1,0,1],outputRange:[-6,0,6]}),Be=Boolean(g)||Boolean(m)||ie,Ae="underline"===K,ke=f?$.iconSize+G.spacing.md+1+G.spacing.md:0,Ce=(0,_useFloatingLabel.useFloatingLabel)({label:i,enabled:_e,floated:xe,required:N,variant:K,sizeTokens:$,leadingOffset:ke,trailingOffset:Be?$.iconSize+G.spacing.sm:0,textAlign:z,paddingLeft:Ae?0:$.paddingHorizontal,lineHeight:ne?J:void 0,restNudge:ae,floatTrim:ne?2:0,color:Te,style:C}),De=(0,_FieldBase.resolveFieldTextStyle)(G,{disabled:p}),Le=De.color,qe=De.placeholderColor,He=N&&!ce&&!re&&"string"==typeof a&&a.length>0,Me=le?l:s,Pe=I&&"number"==typeof w&&"string"==typeof r?`${r.length} / ${w}`:null,Ee=le?G.colors.field.message:G.colors.text.secondary,Oe=M??(0,_FieldBase.fieldTextAsString)(i)??a,Ge=G.colors.field,We=p?Ge.iconDisabled:U?Ge.iconFocused:Ge.icon,$e={focused:U,disabled:p,error:le,color:We,size:$.iconSize},renderSlot=e=>(0,_slotIcon.renderSlotIcon)(e,$e),Xe=(()=>{if(ie){const e=(Z?G.icons?.eyeOff:G.icons?.eye)??(Z?_defaultIcons.defaultIcons.eyeOff:_defaultIcons.defaultIcons.eye);return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:Re,disabled:!pe,hitSlop:8,accessibilityRole:"button",accessibilityLabel:Z?"Hide password":"Show password",children:e({size:$.iconSize,color:We})})}const e=m?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.unit,{fontSize:$.fontSize,color:qe},_],children:m}):null,t=g?(0,_jsxRuntime.jsx)(_reactNative.View,{children:renderSlot(g)}):null;return e&&t?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W.trailingRow,children:[e,t]}):e??t})(),Je=f?(0,_jsxRuntime.jsx)(_reactNative.View,{children:renderSlot(f)}):null,Ke=ue?"string"==typeof v||"number"==typeof v?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.prefix,{fontSize:$.fontSize,color:qe,marginRight:G.spacing.xs,lineHeight:ne?J:void 0,paddingTop:ne?ae:void 0},h],children:v}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[W.prefixNode,{marginRight:G.spacing.xs,minHeight:ne?J:void 0,justifyContent:"center",paddingTop:ne?ae:void 0}],children:v}):null,Qe=b?(0,_jsxRuntime.jsx)(_index4.Button,{variant:b.variant??"outline",tone:b.tone??"primary",size:S,title:b.label,leftIcon:b.icon,loading:b.loading,disabled:p||b.disabled,onPress:b.onPress,pressAnimation:!1,testID:b.testID,style:[W.action,{minHeight:$.minHeight,alignSelf:ne?"flex-start":"stretch"},j]}):null;return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[W.container,{transform:[{translateX:Ve}]},B],children:[ce&&!_e?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:S,required:N,help:n,color:Te,style:C,children:i}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[W.fieldRow,{columnGap:G.spacing.sm,alignItems:ne?"flex-start":"stretch"}],children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W.fieldWrapper,children:[(0,_jsxRuntime.jsxs)(_FieldBase.FieldBase,{size:S,variant:K,focused:U,disabled:p,error:le,filled:re,minHeight:ne?X:void 0,borderRadius:Ie,fillOverrides:Ne,leading:Je,leadingDivider:null!=f,paddingLeft:Ae?0:void 0,trailing:Xe,slotAlign:ne?"top":"center",slotLineHeight:ne?J:void 0,topNotch:Ce.topNotch,onPress:me,pressFeedback:!1,style:A,children:[Ke,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W.inputWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:ge,style:[W.input,{color:Le,fontSize:$.fontSize,...De.weightStyle,paddingLeft:Ae?0:void 0,minHeight:ne?X-2*$.paddingVertical:void 0,lineHeight:ne?J:void 0,paddingTop:ne?ae:void 0,textAlignVertical:ne?"top":"center"},k],textAlign:z,placeholder:_e&&!xe||He?void 0:a,placeholderTextColor:qe,value:T&&null!=r?T(r):r,onChangeText:e=>{o&&o(V?V(e):e)},onFocus:Se,onBlur:Fe,editable:pe,readOnly:y,secureTextEntry:te&&!Z,multiline:ne,autoCapitalize:te?"none":void 0,autoCorrect:!te&&void 0,maxLength:w,selectionColor:we,accessibilityLabel:Oe,accessibilityState:{disabled:p},testID:P,...O}),He?(0,_jsxRuntime.jsx)(_FieldBase.RequiredPlaceholder,{text:a,color:qe,fontSize:$.fontSize,weightStyle:De.weightStyle,align:ne?"top":"center",paddingTop:ne?ae:void 0,textAlign:z}):null]})]}),Ce.node]}),Qe]}),de||Pe?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[W.footerRow,{marginTop:$.messageGap}],children:[de?(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[W.messageRow,{columnGap:G.spacing.xs+2,opacity:he}],accessibilityLiveRegion:le?"polite":"none",children:[le?(0,_jsxRuntime.jsx)(_FieldBase.FieldErrorGlyph,{size:$.messageFontSize,color:Ee}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.messageText,{color:Ee,fontSize:$.messageFontSize,...(0,_index2.fontFor)(G,"normal")},D],children:Me})]}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:W.footerSpacer}),Pe?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.counterText,{color:G.colors.text.tertiary,fontSize:$.messageFontSize,...(0,_index2.fontFor)(G,"normal")}],children:Pe}):null]}):null]})});Input.displayName="Input";const buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},fieldRow:{flexDirection:"row"},fieldWrapper:{position:"relative",overflow:"visible",flex:1},action:{flexShrink:0},input:{padding:0,margin:0,includeFontPadding:!1},prefix:{flexShrink:0,includeFontPadding:!1},prefixNode:{flexShrink:0},inputWrap:{flex:1,alignSelf:"stretch",justifyContent:"center"},unit:{includeFontPadding:!1},trailingRow:{flexDirection:"row",alignItems:"center",columnGap:8},footerRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",columnGap:8},footerSpacer:{flex:1},messageRow:{flex:1,flexDirection:"row",alignItems:"center"},messageText:{flexShrink:1,includeFontPadding:!1},counterText:{flexShrink:0,includeFontPadding:!1}});var _default=exports.default=Input;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Input=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index4=require("../Button/index.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_useFloatingLabel=require("../FieldBase/useFloatingLabel.js"),_jsxRuntime=require("react/jsx-runtime");const multilineMinHeightMap={sm:72,md:92,lg:110},Input=exports.Input=(0,_react.forwardRef)((e,t)=>{const{label:i,help:n,placeholder:a,value:r,onChangeText:o,error:l,helperText:s,type:d="input",secureTextEntry:c=!1,showPasswordToggle:u=!1,disabled:p=!1,multiline:x=!1,leftIcon:f,rightIcon:g,unit:m,unitStyle:_,prefix:v,prefixStyle:h,readOnly:y=!1,action:b,actionStyle:j,size:S="md",variant:F,labelMode:R,required:N=!1,maxLength:w,showCounter:I=!0,textAlign:z,format:T,parse:V,style:B,containerStyle:A,inputStyle:k,labelStyle:C,messageStyle:D,borderRadius:L,onFocus:q,onBlur:H,accessibilityLabel:M,testID:P,editable:E,...O}=e,G=(0,_index2.useTheme)(),W=(0,_react.useMemo)(()=>buildStyles(G),[G]),$=(0,_FieldBase.resolveFieldSize)(G,S),X=multilineMinHeightMap[S],J=Math.round(1.4*$.fontSize),K=F??G.components.input?.defaultVariant??G.components.field?.defaultVariant??"outlined",Q=R??G.components.input?.defaultLabelMode??"top",[U,Y]=(0,_react.useState)(!1),[Z,ee]=(0,_react.useState)(!1),te="password"===d||u||c,ie="password"===d||u,ne="textarea"===d||x,ae=ne?Math.round(.1*$.fontSize):0,re="string"==typeof r&&r.length>0,oe=(0,_FieldBase.hasFieldText)(l),le=!0===l||oe,se=(0,_FieldBase.hasFieldText)(s),de=oe||!le&&se,ce=(0,_FieldBase.hasFieldText)(i),ue=(0,_FieldBase.hasFieldText)(v),pe=!p&&!1!==E,xe=U||re||ue,fe=(0,_react.useRef)(null),ge=(0,_react.useMemo)(()=>(0,_index3.mergeRefs)(fe,t),[t]),me=(0,_react.useCallback)(()=>{pe&&fe.current?.focus()},[pe]),_e=ce&&"float"===Q,ve=(0,_react.useRef)((0,_index2.createAnimatedValue)(0)).current,he=(0,_react.useRef)((0,_index2.createAnimatedValue)(de?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(he,{toValue:de?1:0,duration:G.motion.duration.fast,easing:_reactNative.Easing.bezier(...G.motion.easing.standard),useNativeDriver:!0});return e.start(),()=>e.stop()},[de,he,G.motion.duration.fast,G.motion.easing.standard]);const ye=(0,_index.useReducedMotion)(),be=G.components.input?.shakeOnError??!1,je=(0,_react.useRef)(le);(0,_react.useEffect)(()=>{if(!be)return void(je.current=le);let e;return le&&!je.current&&(ye||((0,_index2.setNativeValue)(ve,0),e=_reactNative.Animated.sequence([_reactNative.Animated.timing(ve,{toValue:1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(ve,{toValue:-1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(ve,{toValue:1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(ve,{toValue:-1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(ve,{toValue:0,duration:100,useNativeDriver:!0})]),e.start()),(0,_index3.triggerHaptic)("notificationError")),je.current=le,()=>e?.stop()},[le,ve,be,ye]);const Se=(0,_react.useCallback)(e=>{Y(!0),q?.(e)},[q]),Fe=(0,_react.useCallback)(e=>{Y(!1),H?.(e)},[H]),Re=(0,_react.useCallback)(()=>{(0,_index3.triggerHaptic)("selection"),ee(e=>!e)},[]),Ne=(0,_react.useMemo)(()=>{const e=G.components.input?.fillColors?.[K];if(!e)return;const t={};return void 0!==e.idleEmpty&&(t.backgroundIdleEmpty=e.idleEmpty),void 0!==e.idleFilled&&(t.backgroundIdleFilled=e.idleFilled),void 0!==e.focus&&(t.backgroundFocused=e.focus),void 0!==e.error&&(t.backgroundError=e.error),void 0!==e.disabled&&(t.backgroundDisabled=e.disabled),Object.keys(t).length>0?t:void 0},[G.components.input?.fillColors,K]),we=G.colors.field.caret,Ie=L??G.components.input?.borderRadius,ze=G.components.input?.tintLabelOnFocus??!1,Te=U&&ze?G.colors.field.borderFocused:G.colors.field.label,Ve=ve.interpolate({inputRange:[-1,0,1],outputRange:[-6,0,6]}),Be=Boolean(g)||Boolean(m)||ie,Ae="underline"===K,ke=f?$.iconSize+G.spacing.md+1+G.spacing.md:0,Ce=(0,_useFloatingLabel.useFloatingLabel)({label:i,enabled:_e,floated:xe,required:N,variant:K,sizeTokens:$,leadingOffset:ke,trailingOffset:Be?$.iconSize+G.spacing.sm:0,textAlign:z,paddingLeft:Ae?0:$.paddingHorizontal,lineHeight:ne?J:void 0,restNudge:ae,floatTrim:ne?2:0,color:Te,style:C}),De=(0,_FieldBase.resolveFieldTextStyle)(G,{disabled:p}),Le=De.color,qe=De.placeholderColor,He=N&&!ce&&!re&&"string"==typeof a&&a.length>0,Me=le?l:s,Pe=I&&"number"==typeof w&&"string"==typeof r?`${r.length} / ${w}`:null,Ee=le?G.colors.field.message:G.colors.text.secondary,Oe=M??(0,_FieldBase.fieldTextAsString)(i)??a,Ge=G.colors.field,We=p?Ge.iconDisabled:U?Ge.iconFocused:Ge.icon,$e={focused:U,disabled:p,error:le,color:We,size:$.iconSize},renderSlot=e=>(0,_slotIcon.renderSlotIcon)(e,$e),Xe=(()=>{if(ie){const e=(Z?G.icons?.eyeOff:G.icons?.eye)??(Z?_defaultIcons.defaultIcons.eyeOff:_defaultIcons.defaultIcons.eye);return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:Re,disabled:!pe,hitSlop:8,accessibilityRole:"button",accessibilityLabel:Z?"Hide password":"Show password",children:e({size:$.iconSize,color:We})})}const e=m?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.unit,{fontSize:$.fontSize,color:qe},_],children:m}):null,t=g?(0,_jsxRuntime.jsx)(_reactNative.View,{children:renderSlot(g)}):null;return e&&t?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W.trailingRow,children:[e,t]}):e??t})(),Je=f?(0,_jsxRuntime.jsx)(_reactNative.View,{children:renderSlot(f)}):null,Ke=ue?"string"==typeof v||"number"==typeof v?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.prefix,{fontSize:$.fontSize,color:qe,marginRight:G.spacing.xs,lineHeight:ne?J:void 0,paddingTop:ne?ae:void 0},h],children:v}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[W.prefixNode,{marginRight:G.spacing.xs,minHeight:ne?J:void 0,justifyContent:"center",paddingTop:ne?ae:void 0}],children:v}):null,Qe=b?(0,_jsxRuntime.jsx)(_index4.Button,{variant:b.variant??"outline",tone:b.tone??"primary",size:S,title:b.label,leftIcon:b.icon,loading:b.loading,disabled:p||b.disabled,onPress:b.onPress,pressAnimation:!1,testID:b.testID,style:[W.action,{minHeight:$.minHeight,alignSelf:ne?"flex-start":"stretch"},j]}):null;return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[W.container,{transform:[{translateX:Ve}]},B],children:[ce&&!_e?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:S,required:N,help:n,color:Te,style:C,children:i}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[W.fieldRow,{columnGap:G.spacing.sm,alignItems:ne?"flex-start":"stretch"}],children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W.fieldWrapper,children:[(0,_jsxRuntime.jsxs)(_FieldBase.FieldBase,{size:S,variant:K,focused:U,disabled:p,error:le,filled:re,minHeight:ne?X:void 0,borderRadius:Ie,fillOverrides:Ne,leading:Je,leadingDivider:null!=f,paddingLeft:Ae?0:void 0,trailing:Xe,slotAlign:ne?"top":"center",slotLineHeight:ne?J:void 0,topNotch:Ce.topNotch,onPress:me,pressFeedback:!1,style:A,children:[Ke,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W.inputWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:ge,style:[W.input,{color:Le,fontSize:$.fontSize,...De.weightStyle,paddingLeft:Ae?0:void 0,minHeight:ne?X-2*$.paddingVertical:void 0,lineHeight:ne?J:void 0,paddingTop:ne?ae:void 0,textAlignVertical:ne?"top":"center"},k],textAlign:z,placeholder:_e&&!xe||He?void 0:a,placeholderTextColor:qe,value:T&&null!=r?T(r):r,onChangeText:e=>{o&&o(V?V(e):e)},onFocus:Se,onBlur:Fe,editable:pe,readOnly:y,secureTextEntry:te&&!Z,multiline:ne,autoCapitalize:te?"none":void 0,autoCorrect:!te&&void 0,maxLength:w,selectionColor:we,accessibilityLabel:Oe,accessibilityState:{disabled:p},"aria-disabled":p,testID:P,...O}),He?(0,_jsxRuntime.jsx)(_FieldBase.RequiredPlaceholder,{text:a,color:qe,fontSize:$.fontSize,weightStyle:De.weightStyle,align:ne?"top":"center",paddingTop:ne?ae:void 0,textAlign:z}):null]})]}),Ce.node]}),Qe]}),de||Pe?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[W.footerRow,{marginTop:$.messageGap}],children:[de?(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[W.messageRow,{columnGap:G.spacing.xs+2,opacity:he}],accessibilityLiveRegion:le?"polite":"none",children:[le?(0,_jsxRuntime.jsx)(_FieldBase.FieldErrorGlyph,{size:$.messageFontSize,color:Ee}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.messageText,{color:Ee,fontSize:$.messageFontSize,...(0,_index2.fontFor)(G,"normal")},D],children:Me})]}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:W.footerSpacer}),Pe?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.counterText,{color:G.colors.text.tertiary,fontSize:$.messageFontSize,...(0,_index2.fontFor)(G,"normal")}],children:Pe}):null]}):null]})});Input.displayName="Input";const buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},fieldRow:{flexDirection:"row"},fieldWrapper:{position:"relative",overflow:"visible",flex:1},action:{flexShrink:0},input:{padding:0,margin:0,includeFontPadding:!1},prefix:{flexShrink:0,includeFontPadding:!1},prefixNode:{flexShrink:0},inputWrap:{flex:1,alignSelf:"stretch",justifyContent:"center"},unit:{includeFontPadding:!1},trailingRow:{flexDirection:"row",alignItems:"center",columnGap:8},footerRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",columnGap:8},footerSpacer:{flex:1},messageRow:{flex:1,flexDirection:"row",alignItems:"center"},messageText:{flexShrink:1,includeFontPadding:!1},counterText:{flexShrink:0,includeFontPadding:!1}});var _default=exports.default=Input;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.KeyboardToolbar=void 0;var _reactNative=require("react-native"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_FormContext=require("../../form/FormContext.js"),_index=require("../../theme/index.js"),_index2=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");const NavButton=({label:e,accessibilityLabel:t,onPress:r,theme:o})=>(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:r,accessibilityRole:"button",accessibilityLabel:t,hitSlop:8,style:{paddingHorizontal:o.spacing.sm},children:(0,_jsxRuntime.jsx)(_index2.Text,{variant:"h2",color:"link",children:e})}),KeyboardToolbar=e=>{const{doneLabel:t="Done",showNavigation:r=!0,onDone:o,onNext:i,onPrev:a,leading:s,style:l,testID:n}=e,c=(0,_index.useTheme)(),b=(0,_FormContext.useOptionalFormContext)();if(!(0,_reactNativeKeyboardController.useKeyboardState)(e=>e.isVisible))return null;const d=o??(()=>{_reactNativeKeyboardController.KeyboardController.dismiss()}),x=a??b?.focusPrev??(()=>_reactNativeKeyboardController.KeyboardController.setFocusTo("prev")),u=i??b?.focusNext??(()=>_reactNativeKeyboardController.KeyboardController.setFocusTo("next"));return(0,_jsxRuntime.jsx)(_reactNativeKeyboardController.KeyboardStickyView,{style:styles.anchor,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{testID:n,accessibilityRole:"toolbar",style:[styles.bar,{backgroundColor:c.colors.background.elevated,borderTopColor:c.colors.border.primary,paddingHorizontal:c.spacing.md},l],children:[r?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.nav,children:[(0,_jsxRuntime.jsx)(NavButton,{label:"‹",accessibilityLabel:"Previous field",onPress:x,theme:c}),(0,_jsxRuntime.jsx)(NavButton,{label:"›",accessibilityLabel:"Next field",onPress:u,theme:c})]}):(0,_jsxRuntime.jsx)(_reactNative.View,{}),s,(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.spacer}),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:d,accessibilityRole:"button",accessibilityLabel:t,hitSlop:8,children:(0,_jsxRuntime.jsx)(_index2.Text,{variant:"body",weight:"semibold",color:"link",children:t})})]})})};exports.KeyboardToolbar=KeyboardToolbar;const styles=_reactNative.StyleSheet.create({anchor:{position:"absolute",left:0,right:0,bottom:0},bar:{height:44,flexDirection:"row",alignItems:"center",borderTopWidth:_reactNative.StyleSheet.hairlineWidth},nav:{flexDirection:"row",alignItems:"center"},spacer:{flex:1}});var _default=exports.default=KeyboardToolbar;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.KeyboardToolbar=void 0;var _reactNative=require("react-native"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_FormContext=require("../../form/FormContext.js"),_index=require("../../theme/index.js"),_index2=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");const NavButton=({label:e,accessibilityLabel:t,onPress:r,theme:o})=>(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:r,accessibilityRole:"button",accessibilityLabel:t,hitSlop:8,style:{paddingHorizontal:o.spacing.sm},children:(0,_jsxRuntime.jsx)(_index2.Text,{variant:"body",weight:"semibold",size:"lg",color:"link",children:e})}),KeyboardToolbar=e=>{const{doneLabel:t="Done",showNavigation:r=!0,onDone:o,onNext:i,onPrev:s,leading:a,style:l,testID:n}=e,c=(0,_index.useTheme)(),b=(0,_FormContext.useOptionalFormContext)();if(!(0,_reactNativeKeyboardController.useKeyboardState)(e=>e.isVisible))return null;const d=o??(()=>{_reactNativeKeyboardController.KeyboardController.dismiss()}),x=s??b?.focusPrev??(()=>_reactNativeKeyboardController.KeyboardController.setFocusTo("prev")),u=i??b?.focusNext??(()=>_reactNativeKeyboardController.KeyboardController.setFocusTo("next"));return(0,_jsxRuntime.jsx)(_reactNativeKeyboardController.KeyboardStickyView,{style:styles.anchor,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{testID:n,accessibilityRole:"toolbar",style:[styles.bar,{backgroundColor:c.colors.background.elevated,borderTopColor:c.colors.border.primary,paddingHorizontal:c.spacing.md},l],children:[r?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.nav,children:[(0,_jsxRuntime.jsx)(NavButton,{label:"‹",accessibilityLabel:"Previous field",onPress:x,theme:c}),(0,_jsxRuntime.jsx)(NavButton,{label:"›",accessibilityLabel:"Next field",onPress:u,theme:c})]}):(0,_jsxRuntime.jsx)(_reactNative.View,{}),a,(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.spacer}),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:d,accessibilityRole:"button",accessibilityLabel:t,hitSlop:8,children:(0,_jsxRuntime.jsx)(_index2.Text,{variant:"body",weight:"semibold",color:"link",children:t})})]})})};exports.KeyboardToolbar=KeyboardToolbar;const styles=_reactNative.StyleSheet.create({anchor:{position:"absolute",left:0,right:0,bottom:0},bar:{height:44,flexDirection:"row",alignItems:"center",borderTopWidth:_reactNative.StyleSheet.hairlineWidth},nav:{flexDirection:"row",alignItems:"center"},spacer:{flex:1}});var _default=exports.default=KeyboardToolbar;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ListItem=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_useFlickGuard=require("../../hooks/useFlickGuard.js"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_index2=require("../Button/index.js"),_index3=require("../IconBadge/index.js"),_index4=require("../Skeleton/index.js"),_index5=require("../Swipeable/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var i=new WeakMap,s=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var n,r,l={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return l;if(n=t?s:i){if(n.has(e))return n.get(e);n.set(e,l)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((r=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(r.get||r.set)?n(l,t,r):l[t]=e[t]);return l})(e,t)}const SIZE_FALLBACK={sm:{paddingVertical:"sm",titleFontSize:"sm",subtitleFontSize:"xs",minHeight:44},md:{paddingVertical:"md",titleFontSize:"base",subtitleFontSize:"sm",minHeight:56},lg:{paddingVertical:"lg",titleFontSize:"lg",subtitleFontSize:"sm",minHeight:72}},sizeFor=(e,t)=>{const i={...SIZE_FALLBACK[t],...e.components.listItem?.[t]??{}};return{paddingVertical:e.spacing[i.paddingVertical],titleSize:e.typography.fontSize[i.titleFontSize],subtitleSize:e.typography.fontSize[i.subtitleFontSize],minHeight:i.minHeight}},Chevron=({color:e})=>{const t=(0,_index.useTheme)();return(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:(t.icons?.chevronRight??_defaultIcons.defaultIcons.chevronRight)({size:20,color:e})})},BADGE_SIZE={sm:"sm",md:"md",lg:"lg"},isActionList=e=>Array.isArray(e)&&e.length>0&&e.every(e=>null!=e&&"object"==typeof e&&!_react.default.isValidElement(e)&&"label"in e),renderActions=e=>isActionList(e)?e.map(e=>(0,_jsxRuntime.jsx)(_index2.Button,{size:"sm",variant:e.variant??"outline",tone:e.tone,leftIcon:e.icon,disabled:e.disabled,testID:e.testID,title:e.label,onPress:e.onPress},e.label)):e,ListItem=exports.ListItem=(0,_react.forwardRef)((e,t)=>{const{title:i,loading:s=!1,subtitle:n,description:r,titleLines:l=1,subtitleLines:o=1,left:a,icon:c,iconTone:d="primary",right:u,actions:m,onPress:x,haptic:p,selected:_=!1,disabled:h=!1,size:g="md",divider:y=!1,chevron:j=!1,leftActions:f,rightActions:b,accessibilityLabel:S,accessibilityHint:v,style:R,containerStyle:I,titleStyle:w,subtitleStyle:z,descriptionStyle:L,leftSlotStyle:k,rightSlotStyle:A,testID:V}=e,F=(0,_index.useTheme)(),N=(0,_react.useMemo)(()=>sizeFor(F,g),[F,g]),H=(0,_react.useMemo)(()=>buildStyles(F),[F]),P=!!x&&!h,{scale:q,pressIn:B,pressOut:D}=(0,_usePressAnimation.usePressAnimation)({enabled:P}),C=(0,_useFlickGuard.useFlickGuard)(),W=S??("string"==typeof i?i:void 0),isText=e=>"string"==typeof e||"number"==typeof e,O=a??(void 0===c?null:(0,_jsxRuntime.jsx)(_index3.IconBadge,{icon:c,tone:d,size:BADGE_SIZE[g]})),M=null!=m&&!1!==m&&!(Array.isArray(m)&&0===m.length),T=y&&!M,E=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[H.row,{paddingVertical:N.paddingVertical,minHeight:N.minHeight,backgroundColor:_?F.colors.surface.selected:"transparent"},T?H.divider:null,h?H.disabled:null,I],children:[O?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[H.leftSlot,k],children:O}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:H.middle,children:[null==i||isText(i)?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[H.title,{fontSize:N.titleSize,...(0,_index.fontFor)(F,"medium"),color:h?F.colors.text.disabled:F.colors.text.primary},w],numberOfLines:l,children:i??" "}):i,null==n||""===n?null:isText(n)?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[H.subtitle,{fontSize:N.subtitleSize,color:h?F.colors.text.disabled:F.colors.text.secondary},z],numberOfLines:o,children:n}):n,r?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[H.description,{fontSize:N.subtitleSize,color:h?F.colors.text.disabled:F.colors.text.tertiary},L],numberOfLines:2,children:r}):null]}),u||j?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[H.rightSlot,A],children:[u,j?(0,_jsxRuntime.jsx)(_reactNative.View,{style:u?H.chevronWithRight:null,children:(0,_jsxRuntime.jsx)(Chevron,{color:h?F.colors.text.disabled:F.colors.text.tertiary})}):null]}):null]}),G=x?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[{transform:[{scale:q}]},R],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:t,onPress:e=>{if(!P||C.isFlick(e))return;const t=(0,_hapticUtils.resolveHaptic)(p,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),x?.(e)},onPressIn:e=>{C.onPressIn(e),B()},onPressOut:D,disabled:!P,accessibilityRole:"button",accessibilityLabel:W,accessibilityHint:v,accessibilityState:{selected:_,disabled:!P},testID:V,android_ripple:{color:F.colors.surface.pressed,borderless:!1},style:({pressed:e})=>e?H.pressed:null,children:E})}):(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,accessibilityRole:"none",accessibilityLabel:W,accessibilityHint:v,accessibilityState:{selected:_,disabled:h},testID:V,style:R,children:E}),U=f&&f.length>0||b&&b.length>0,Z=M?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[_?{backgroundColor:F.colors.surface.selected}:null,y?H.divider:null],children:[G,(0,_jsxRuntime.jsx)(_reactNative.View,{style:H.actions,children:renderActions(m)})]}):G,K=U?(0,_jsxRuntime.jsx)(_index5.Swipeable,{leftActions:f,rightActions:b,accessibilityLabel:W,children:Z}):Z;return s?(0,_jsxRuntime.jsx)(ListItemSkeleton,{...e}):K});ListItem.displayName="ListItem";const ListItemSkeleton=({subtitle:e,description:t,left:i,icon:s,right:n,chevron:r,size:l="md",containerStyle:o,style:a})=>{const c=(0,_index.useTheme)(),d=sizeFor(c,l),u=Math.round(1.15*d.titleSize),m=Math.round(1.15*d.subtitleSize);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[{flexDirection:"row",alignItems:"center",paddingHorizontal:c.spacing.md,paddingVertical:d.paddingVertical,minHeight:d.minHeight},o,a],children:[void 0!==i||void 0!==s?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{marginRight:c.spacing.sm},children:(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"circle",width:40,height:40})}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{flex:1},children:[(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"70%",height:u,style:{marginBottom:c.spacing.xs}}),void 0!==e?(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"50%",height:m,style:void 0!==t?{marginBottom:c.spacing.xs}:void 0}):null,void 0!==t?(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"85%",height:m}):null]}),void 0!==n||r?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{marginLeft:c.spacing.sm},children:(0,_jsxRuntime.jsx)(_index4.Skeleton,{width:20,height:20,radius:"sm"})}):null]})};ListItemSkeleton.displayName="ListItemSkeleton",ListItem.Skeleton=ListItemSkeleton;const buildStyles=e=>_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center",paddingHorizontal:e.spacing.md},divider:{borderBottomWidth:_reactNative.StyleSheet.hairlineWidth,borderBottomColor:e.colors.border.primary},pressed:{backgroundColor:e.colors.surface.pressed},disabled:{opacity:.55},leftSlot:{marginRight:e.spacing.md,alignItems:"center",justifyContent:"center"},middle:{flex:1,flexDirection:"column",justifyContent:"center"},rightSlot:{marginLeft:e.spacing.md,alignItems:"center",justifyContent:"center",flexDirection:"row"},actions:{flexDirection:"row",flexWrap:"wrap",gap:e.spacing.sm,paddingHorizontal:e.spacing.md,paddingBottom:e.spacing.md},chevronWithRight:{marginLeft:e.spacing.xs},title:{letterSpacing:e.typography.letterSpacing.normal},subtitle:{marginTop:2,...(0,_index.fontFor)(e,"normal")},description:{marginTop:2,...(0,_index.fontFor)(e,"normal")}});var _default=exports.default=ListItem;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ListItem=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeSvg=_interopRequireWildcard(require("react-native-svg")),_useFlickGuard=require("../../hooks/useFlickGuard.js"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_index2=require("../Button/index.js"),_index3=require("../IconBadge/index.js"),_index4=require("../Skeleton/index.js"),_index5=require("../Swipeable/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var i=new WeakMap,s=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var n,r,l={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return l;if(n=t?s:i){if(n.has(e))return n.get(e);n.set(e,l)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((r=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(r.get||r.set)?n(l,t,r):l[t]=e[t]);return l})(e,t)}const SIZE_FALLBACK={sm:{paddingVertical:"sm",titleFontSize:"sm",subtitleFontSize:"xs",minHeight:44},md:{paddingVertical:"md",titleFontSize:"base",subtitleFontSize:"sm",minHeight:56},lg:{paddingVertical:"lg",titleFontSize:"lg",subtitleFontSize:"sm",minHeight:72}},sizeFor=(e,t)=>{const i={...SIZE_FALLBACK[t],...e.components.listItem?.[t]??{}};return{paddingVertical:e.spacing[i.paddingVertical],titleSize:e.typography.fontSize[i.titleFontSize],subtitleSize:e.typography.fontSize[i.subtitleFontSize],minHeight:i.minHeight}},Chevron=({color:e})=>{const t=(0,_index.useTheme)();return(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:(t.icons?.chevronRight??_defaultIcons.defaultIcons.chevronRight)({size:20,color:e})})},BADGE_SIZE={sm:"sm",md:"md",lg:"lg"},RIGHT_BELOW_FONT_SCALE=1.2,DEFAULT_BOX_SIZE=20,SelectionBox=({checked:e,disabled:t})=>{const i=(0,_index.useTheme)(),s=i.components.checkbox?.md?.boxSize??20,n=Math.round(.72*s);return(0,_jsxRuntime.jsx)(_reactNative.View,{accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",pointerEvents:"none",style:{width:s,height:s,alignItems:"center",justifyContent:"center",borderWidth:i.colors.border.width,borderRadius:i.radius.xs,..._corners.smoothCorners,borderColor:e?i.colors.primary:i.colors.border.primary,backgroundColor:e?i.colors.primary:t?i.colors.surface.disabled:"transparent"},children:e?(0,_jsxRuntime.jsx)(_reactNativeSvg.default,{width:n,height:n,viewBox:"0 0 24 24",children:(0,_jsxRuntime.jsx)(_reactNativeSvg.Path,{d:"M5 12.5l4.5 4.5L19 7.5",stroke:i.colors.onPrimary,strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round",fill:"none"})}):null})},isActionList=e=>Array.isArray(e)&&e.length>0&&e.every(e=>null!=e&&"object"==typeof e&&!_react.default.isValidElement(e)&&"label"in e),renderActions=e=>isActionList(e)?e.map(e=>(0,_jsxRuntime.jsx)(_index2.Button,{size:"sm",variant:e.variant??"outline",tone:e.tone,leftIcon:e.icon,disabled:e.disabled,testID:e.testID,title:e.label,onPress:e.onPress},e.label)):e,ListItem=exports.ListItem=(0,_react.forwardRef)((e,t)=>{const{title:i,loading:s=!1,subtitle:n,description:r,titleLines:l=1,subtitleLines:o=1,left:a,icon:c,iconTone:d="primary",right:u,rightPlacement:m="auto",selectable:x=!1,checked:h=!1,onCheckedChange:_,actions:g,onPress:p,haptic:j,selected:y=!1,disabled:b=!1,size:f="md",divider:S=!1,chevron:v=!1,leftActions:R,rightActions:w,accessibilityLabel:I,accessibilityHint:L,style:k,containerStyle:z,titleStyle:N,subtitleStyle:A,descriptionStyle:V,leftSlotStyle:F,rightSlotStyle:B,testID:C}=e,H=(0,_index.useTheme)(),P=(0,_react.useMemo)(()=>sizeFor(H,f),[H,f]),q=(0,_react.useMemo)(()=>buildStyles(H),[H]),{fontScale:D}=(0,_reactNative.useWindowDimensions)(),W=!!u&&("below"===m||"auto"===m&&D>1.2),T=x||!!p,E=T&&!b,{scale:O,pressIn:M,pressOut:G}=(0,_usePressAnimation.usePressAnimation)({enabled:E}),U=(0,_useFlickGuard.useFlickGuard)(),Z=I??("string"==typeof i?i:void 0),isText=e=>"string"==typeof e||"number"==typeof e,K=a??(void 0===c?null:(0,_jsxRuntime.jsx)(_index3.IconBadge,{icon:c,tone:d,size:BADGE_SIZE[f]})),X=x?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:q.selectionLead,children:[(0,_jsxRuntime.jsx)(SelectionBox,{checked:h,disabled:b}),K?(0,_jsxRuntime.jsx)(_reactNative.View,{style:q.selectionLeadContent,children:K}):null]}):K,J=null!=g&&!1!==g&&!(Array.isArray(g)&&0===g.length),Q=S&&!J,Y=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[q.row,{paddingVertical:P.paddingVertical,minHeight:P.minHeight,backgroundColor:y?H.colors.surface.selected:"transparent"},Q?q.divider:null,b?q.disabled:null,z],children:[X?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[q.leftSlot,F],children:X}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:q.middle,children:[null==i||isText(i)?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[q.title,{fontSize:P.titleSize,...(0,_index.fontFor)(H,"medium"),color:b?H.colors.text.disabled:H.colors.text.primary},N],numberOfLines:l,children:i??" "}):i,null==n||""===n?null:isText(n)?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[q.subtitle,{fontSize:P.subtitleSize,color:b?H.colors.text.disabled:H.colors.text.secondary},A],numberOfLines:o,children:n}):n,r?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[q.description,{fontSize:P.subtitleSize,color:b?H.colors.text.disabled:H.colors.text.tertiary},V],numberOfLines:2,children:r}):null,W?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[q.rightBelow,B],children:u}):null]}),u&&!W||v?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[q.rightSlot,W?null:B],children:[W?null:u,v?(0,_jsxRuntime.jsx)(_reactNative.View,{style:u&&!W?q.chevronWithRight:null,children:(0,_jsxRuntime.jsx)(Chevron,{color:b?H.colors.text.disabled:H.colors.text.tertiary})}):null]}):null]}),$=T?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[{transform:[{scale:O}]},k],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:t,onPress:e=>{if(!E||U.isFlick(e))return;const t=(0,_hapticUtils.resolveHaptic)(j,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),x?_?.(!h):p?.(e)},onPressIn:e=>{U.onPressIn(e),M()},onPressOut:G,disabled:!E,accessibilityRole:x?"checkbox":"button",accessibilityLabel:Z,accessibilityHint:L,accessibilityState:x?{checked:h,disabled:!E}:{selected:y,disabled:!E},"aria-disabled":!E,...x?{"aria-checked":h}:{"aria-selected":y},testID:C,android_ripple:{color:H.colors.surface.pressed,borderless:!1},style:({pressed:e})=>e?q.pressed:null,children:Y})}):(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,accessibilityRole:"none",accessibilityLabel:Z,accessibilityHint:L,accessibilityState:{selected:y,disabled:b},"aria-selected":y,"aria-disabled":b,testID:C,style:k,children:Y}),ee=R&&R.length>0||w&&w.length>0,te=J?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[y?{backgroundColor:H.colors.surface.selected}:null,S?q.divider:null],children:[$,(0,_jsxRuntime.jsx)(_reactNative.View,{style:q.actions,children:renderActions(g)})]}):$,ie=ee?(0,_jsxRuntime.jsx)(_index5.Swipeable,{leftActions:R,rightActions:w,accessibilityLabel:Z,children:te}):te;return s?(0,_jsxRuntime.jsx)(ListItemSkeleton,{...e}):ie});ListItem.displayName="ListItem";const ListItemSkeleton=({subtitle:e,description:t,left:i,icon:s,right:n,chevron:r,size:l="md",containerStyle:o,style:a})=>{const c=(0,_index.useTheme)(),d=sizeFor(c,l),u=Math.round(1.15*d.titleSize),m=Math.round(1.15*d.subtitleSize);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[{flexDirection:"row",alignItems:"center",paddingHorizontal:c.spacing.md,paddingVertical:d.paddingVertical,minHeight:d.minHeight},o,a],children:[void 0!==i||void 0!==s?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{marginRight:c.spacing.sm},children:(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"circle",width:40,height:40})}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{flex:1},children:[(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"70%",height:u,style:{marginBottom:c.spacing.xs}}),void 0!==e?(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"50%",height:m,style:void 0!==t?{marginBottom:c.spacing.xs}:void 0}):null,void 0!==t?(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"85%",height:m}):null]}),void 0!==n||r?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{marginLeft:c.spacing.sm},children:(0,_jsxRuntime.jsx)(_index4.Skeleton,{width:20,height:20,radius:"sm"})}):null]})};ListItemSkeleton.displayName="ListItemSkeleton",ListItem.Skeleton=ListItemSkeleton;const buildStyles=e=>_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center",paddingHorizontal:e.spacing.md},divider:{borderBottomWidth:_reactNative.StyleSheet.hairlineWidth,borderBottomColor:e.colors.border.primary},pressed:{backgroundColor:e.colors.surface.pressed},disabled:{opacity:.55},leftSlot:{marginRight:e.spacing.md,alignItems:"center",justifyContent:"center"},middle:{flex:1,flexDirection:"column",justifyContent:"center"},selectionLead:{flexDirection:"row",alignItems:"center"},selectionLeadContent:{marginLeft:e.spacing.sm},rightBelow:{alignSelf:"flex-start",flexDirection:"row",alignItems:"center",marginTop:e.spacing.xs},rightSlot:{marginLeft:e.spacing.md,alignItems:"center",justifyContent:"center",flexDirection:"row"},actions:{flexDirection:"row",flexWrap:"wrap",gap:e.spacing.sm,paddingHorizontal:e.spacing.md,paddingBottom:e.spacing.md},chevronWithRight:{marginLeft:e.spacing.xs},title:{letterSpacing:e.typography.letterSpacing.normal},subtitle:{marginTop:2,...(0,_index.fontFor)(e,"normal")},description:{marginTop:2,...(0,_index.fontFor)(e,"normal")}});var _default=exports.default=ListItem;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useLoader=exports.loader=exports.LoaderOverlay=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_index2=require("../Spinner/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,s=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var n,a,i={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return i;if(n=t?s:r){if(n.has(e))return n.get(e);n.set(e,i)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((a=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?n(i,t,a):i[t]=e[t]);return i})(e,t)}const DEFAULT_SHOW_DELAY_MS=150,DEFAULT_MIN_VISIBLE_MS=400;let state={refCount:0,message:void 0};const listeners=new Set,notify=()=>{for(const e of listeners)e()},subscribe=e=>(listeners.add(e),()=>{listeners.delete(e)}),getState=()=>state,show=e=>{state={refCount:state.refCount+1,message:e??state.message},notify()},hide=()=>{if(state.refCount<=0)return;const e=state.refCount-1;state={refCount:e,message:0===e?void 0:state.message},notify()},reset=()=>{0===state.refCount&&void 0===state.message||(state={refCount:0,message:void 0},notify())},isVisible=()=>state.refCount>0,wrap=async(e,t)=>{show(t);try{return await("function"==typeof e?e():e)}finally{hide()}},loader=exports.loader={show:show,hide:hide,wrap:wrap,isVisible:isVisible,reset:reset},useLoader=()=>loader;exports.useLoader=useLoader;const LoaderOverlay=({renderIndicator:e,backdropColor:t,showDelayMs:r=150,minVisibleMs:s=400,testID:n})=>{const a=(0,_index.useTheme)(),i=(0,_useReducedMotion.useReducedMotion)(),[u,o]=(0,_react.useState)(getState),[c,l]=(0,_react.useState)(!1),d=(0,_react.useRef)(!1),f=(0,_react.useRef)(null),_=(0,_react.useRef)(null),y=(0,_react.useRef)(null),m=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current;(0,_react.useEffect)(()=>subscribe(()=>o(getState())),[]),(0,_react.useEffect)(()=>{d.current=c},[c]);const p=u.refCount>0;(0,_react.useEffect)(()=>{if(p)return null!==_.current&&(clearTimeout(_.current),_.current=null),void(d.current||null!==f.current||(f.current=setTimeout(()=>{f.current=null,y.current=Date.now(),l(!0)},r)));if(null!==f.current)return clearTimeout(f.current),void(f.current=null);if(d.current&&null===_.current){const e=null!==y.current?Date.now()-y.current:s,t=Math.max(0,s-e);_.current=setTimeout(()=>{_.current=null,y.current=null,l(!1)},t)}},[p,r,s]),(0,_react.useEffect)(()=>()=>{null!==f.current&&clearTimeout(f.current),null!==_.current&&clearTimeout(_.current)},[]),(0,_react.useEffect)(()=>{c?i?m.setValue(1):_reactNative.Animated.timing(m,{toValue:1,duration:a.motion.duration.normal,easing:_reactNative.Easing.bezier(...a.motion.easing.standard),useNativeDriver:!0}).start():m.setValue(0)},[c,i,m,a]),(0,_react.useEffect)(()=>{if(!c)return;const e=_reactNative.BackHandler.addEventListener("hardwareBackPress",()=>!0);return()=>{e.remove()}},[c]);const v=u.message;(0,_react.useEffect)(()=>{c&&v&&_reactNative.AccessibilityInfo.announceForAccessibility(v)},[c,v]);const b=(0,_react.useMemo)(()=>buildStyles(),[]);return c?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"auto",testID:n,accessible:!0,accessibilityViewIsModal:!0,accessibilityLiveRegion:"polite",accessibilityLabel:v??"Loading",accessibilityRole:"progressbar",accessibilityState:{busy:!0},style:[b.overlay,{backgroundColor:t??a.colors.background.overlay,opacity:m}],children:e?e(v):(0,_jsxRuntime.jsx)(_index2.Spinner,{size:"lg",message:v})}):null};exports.LoaderOverlay=LoaderOverlay;const buildStyles=()=>_reactNative.StyleSheet.create({overlay:{..._reactNative.StyleSheet.absoluteFill,alignItems:"center",justifyContent:"center",zIndex:1e3}});
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useLoader=exports.loader=exports.LoaderOverlay=void 0;var _react=require("react"),_reactNative=require("react-native"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_index2=require("../Spinner/index.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_SHOW_DELAY_MS=150,DEFAULT_MIN_VISIBLE_MS=400;let state={refCount:0,message:void 0};const listeners=new Set,notify=()=>{for(const e of listeners)e()},subscribe=e=>(listeners.add(e),()=>{listeners.delete(e)}),getState=()=>state,show=e=>{state={refCount:state.refCount+1,message:e??state.message},notify()},hide=()=>{if(state.refCount<=0)return;const e=state.refCount-1;state={refCount:e,message:0===e?void 0:state.message},notify()},reset=()=>{0===state.refCount&&void 0===state.message||(state={refCount:0,message:void 0},notify())},isVisible=()=>state.refCount>0,wrap=async(e,t)=>{show(t);try{return await("function"==typeof e?e():e)}finally{hide()}},loader=exports.loader={show:show,hide:hide,wrap:wrap,isVisible:isVisible,reset:reset},useLoader=()=>loader;exports.useLoader=useLoader;const LoaderOverlay=({renderIndicator:e,backdropColor:t,showDelayMs:r=150,minVisibleMs:s=400,testID:a})=>{const n=(0,_index.useTheme)(),i=(0,_useReducedMotion.useReducedMotion)(),[u,o]=(0,_react.useState)(getState),[c,l]=(0,_react.useState)(!1),d=(0,_react.useRef)(!1),f=(0,_react.useRef)(null),_=(0,_react.useRef)(null),m=(0,_react.useRef)(null),y=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current;(0,_react.useEffect)(()=>subscribe(()=>o(getState())),[]),(0,_react.useEffect)(()=>{d.current=c},[c]);const v=u.refCount>0;(0,_react.useEffect)(()=>{if(v)return null!==_.current&&(clearTimeout(_.current),_.current=null),void(d.current||null!==f.current||(f.current=setTimeout(()=>{f.current=null,m.current=Date.now(),l(!0)},r)));if(null!==f.current)return clearTimeout(f.current),void(f.current=null);if(d.current&&null===_.current){const e=null!==m.current?Date.now()-m.current:s,t=Math.max(0,s-e);_.current=setTimeout(()=>{_.current=null,m.current=null,l(!1)},t)}},[v,r,s]),(0,_react.useEffect)(()=>()=>{null!==f.current&&clearTimeout(f.current),null!==_.current&&clearTimeout(_.current)},[]),(0,_react.useEffect)(()=>{c?i?y.setValue(1):_reactNative.Animated.timing(y,{toValue:1,duration:n.motion.duration.normal,easing:_reactNative.Easing.bezier(...n.motion.easing.standard),useNativeDriver:!0}).start():y.setValue(0)},[c,i,y,n]),(0,_react.useEffect)(()=>{if(!c)return;const e=_reactNative.BackHandler.addEventListener("hardwareBackPress",()=>!0);return()=>{e.remove()}},[c]);const b=u.message;(0,_react.useEffect)(()=>{c&&b&&_reactNative.AccessibilityInfo.announceForAccessibility(b)},[c,b]);const g=(0,_react.useMemo)(()=>buildStyles(),[]);return c?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"auto",testID:a,accessible:!0,accessibilityViewIsModal:!0,accessibilityLiveRegion:"polite",accessibilityLabel:b??"Loading",accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,style:[g.overlay,{backgroundColor:t??n.colors.background.overlay,opacity:y}],children:e?e(b):(0,_jsxRuntime.jsx)(_index2.Spinner,{size:"lg",message:b})}):null};exports.LoaderOverlay=LoaderOverlay;const buildStyles=()=>_reactNative.StyleSheet.create({overlay:{..._reactNative.StyleSheet.absoluteFill,alignItems:"center",justifyContent:"center",zIndex:1e3}});
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Markdown=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_index2=require("../Skeleton/index.js"),_parse=require("./parse.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var i,o,s={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return s;if(i=t?n:r){if(i.has(e))return i.get(e);i.set(e,s)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((o=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(o.get||o.set)?i(s,t,o):s[t]=e[t]);return s})(e,t)}const renderInline=(e,t,r,n="i")=>e.map((e,i)=>{const o=`${n}-${i}`;switch(e.type){case"text":return(0,_jsxRuntime.jsx)(_reactNative.Text,{children:e.value},o);case"strong":return(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{fontWeight:t.typography.fontWeight.bold},children:renderInline(e.children,t,r,o)},o);case"em":return(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{fontStyle:"italic"},children:renderInline(e.children,t,r,o)},o);case"strike":return(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{textDecorationLine:"line-through"},children:renderInline(e.children,t,r,o)},o);case"code":return(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{fontFamily:MONO,backgroundColor:t.colors.background.secondary,color:t.colors.text.primary},children:e.value},o);case"link":return(0,_jsxRuntime.jsx)(_reactNative.Text,{accessibilityRole:"link",onPress:()=>r(e.href),style:{color:t.colors.text.link,textDecorationLine:"underline"},children:renderInline(e.children,t,r,o)},o);default:return null}}),MONO=_reactNative.Platform.select({ios:"Menlo",android:"monospace",default:"monospace"}),HEADING_SCALE={1:"3xl",2:"2xl",3:"xl",4:"lg",5:"base",6:"sm"},Markdown=({children:e,onLinkPress:t,loading:r=!1,style:n,textStyle:i,testID:o})=>{const s=(0,_index.useTheme)(),a=(0,_react.useMemo)(()=>createStyles(s),[s]),l=(0,_react.useMemo)(()=>(0,_parse.parseMarkdown)(e??""),[e]),handleLink=e=>{t?t(e):_reactNative.Linking.openURL(e).catch(()=>{})};return r?(0,_jsxRuntime.jsx)(MarkdownSkeleton,{style:n,testID:o}):0===l.length?null:(0,_jsxRuntime.jsx)(_reactNative.View,{style:n,testID:o,children:l.map((e,t)=>(0,_jsxRuntime.jsx)(MarkdownBlock,{block:e,theme:s,styles:a,textStyle:i,onLinkPress:handleLink},`b-${t}`))})};exports.Markdown=Markdown,Markdown.displayName="Markdown";const MarkdownBlock=({block:e,theme:t,styles:r,textStyle:n,onLinkPress:i})=>{switch(e.type){case"heading":return(0,_jsxRuntime.jsx)(_reactNative.Text,{accessibilityRole:"header",style:[r.block,{fontSize:t.typography.fontSize[HEADING_SCALE[e.level]],fontWeight:t.typography.fontWeight.semibold,color:t.colors.text.primary},n],children:renderInline(e.children,t,i)});case"paragraph":return(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[r.block,r.body,n],children:renderInline(e.children,t,i)});case"listItem":return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[r.listRow,{marginLeft:e.depth*t.spacing.md}],children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[r.body,r.bullet,n],children:e.ordered?`${e.index}.`:"•"}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[r.body,r.listText,n],children:renderInline(e.children,t,i)})]});case"quote":return(0,_jsxRuntime.jsx)(_reactNative.View,{style:r.quote,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[r.body,r.quoteText,n],children:renderInline(e.children,t,i)})});case"codeBlock":return(0,_jsxRuntime.jsx)(_reactNative.View,{style:r.codeBlock,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:r.codeText,children:e.value})});case"rule":return(0,_jsxRuntime.jsx)(_reactNative.View,{style:r.rule});default:return null}},MarkdownSkeleton=({style:e,testID:t})=>(0,_jsxRuntime.jsxs)(_reactNative.View,{style:e,testID:t,children:[(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"70%",height:20,style:{marginBottom:8}}),(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"100%",height:14,style:{marginBottom:6}}),(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"92%",height:14,style:{marginBottom:6}}),(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"60%",height:14})]}),createStyles=e=>_reactNative.StyleSheet.create({block:{marginBottom:e.spacing.sm},body:{fontSize:e.typography.fontSize.base,color:e.colors.text.primary,lineHeight:1.5*e.typography.fontSize.base},listRow:{flexDirection:"row",marginBottom:e.spacing.xs},bullet:{width:e.spacing.lg},listText:{flex:1},quote:{borderLeftWidth:3,borderLeftColor:e.colors.border.secondary,paddingLeft:e.spacing.sm,marginBottom:e.spacing.sm},quoteText:{color:e.colors.text.secondary,fontStyle:"italic"},codeBlock:{backgroundColor:e.colors.background.secondary,borderRadius:e.radius.sm,..._corners.smoothCorners,padding:e.spacing.sm,marginBottom:e.spacing.sm},codeText:{fontFamily:MONO,fontSize:e.typography.fontSize.sm,color:e.colors.text.primary},rule:{height:_reactNative.StyleSheet.hairlineWidth,backgroundColor:e.colors.border.primary,marginVertical:e.spacing.md}});
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Markdown=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_index2=require("../Skeleton/index.js"),_parse=require("./parse.js"),_jsxRuntime=require("react/jsx-runtime");const renderInline=(e,t,r,i="i")=>e.map((e,n)=>{const s=`${i}-${n}`;switch(e.type){case"text":return(0,_jsxRuntime.jsx)(_reactNative.Text,{children:e.value},s);case"strong":return(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{fontWeight:t.typography.fontWeight.bold},children:renderInline(e.children,t,r,s)},s);case"em":return(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{fontStyle:"italic"},children:renderInline(e.children,t,r,s)},s);case"strike":return(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{textDecorationLine:"line-through"},children:renderInline(e.children,t,r,s)},s);case"code":return(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{fontFamily:MONO,backgroundColor:t.colors.background.secondary,color:t.colors.text.primary},children:e.value},s);case"link":return(0,_jsxRuntime.jsx)(_reactNative.Text,{accessibilityRole:"link",onPress:()=>r(e.href),style:{color:t.colors.text.link,textDecorationLine:"underline"},children:renderInline(e.children,t,r,s)},s);default:return null}}),MONO=_reactNative.Platform.select({ios:"Menlo",android:"monospace",default:"monospace"}),HEADING_SCALE={1:"3xl",2:"2xl",3:"xl",4:"lg",5:"base",6:"sm"},Markdown=({children:e,onLinkPress:t,loading:r=!1,style:i,textStyle:n,testID:s})=>{const o=(0,_index.useTheme)(),l=(0,_react.useMemo)(()=>createStyles(o),[o]),a=(0,_react.useMemo)(()=>(0,_parse.parseMarkdown)(e??""),[e]),handleLink=e=>{t?t(e):_reactNative.Linking.openURL(e).catch(()=>{})};return r?(0,_jsxRuntime.jsx)(MarkdownSkeleton,{style:i,testID:s}):0===a.length?null:(0,_jsxRuntime.jsx)(_reactNative.View,{style:i,testID:s,children:a.map((e,t)=>(0,_jsxRuntime.jsx)(MarkdownBlock,{block:e,theme:o,styles:l,textStyle:n,onLinkPress:handleLink},`b-${t}`))})};exports.Markdown=Markdown,Markdown.displayName="Markdown";const MarkdownBlock=({block:e,theme:t,styles:r,textStyle:i,onLinkPress:n})=>{switch(e.type){case"heading":return(0,_jsxRuntime.jsx)(_reactNative.Text,{accessibilityRole:"header",style:[r.block,{fontSize:t.typography.fontSize[HEADING_SCALE[e.level]],fontWeight:t.typography.fontWeight.semibold,color:t.colors.text.primary},i],children:renderInline(e.children,t,n)});case"paragraph":return(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[r.block,r.body,i],children:renderInline(e.children,t,n)});case"listItem":return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[r.listRow,{marginLeft:e.depth*t.spacing.md}],children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[r.body,r.bullet,i],children:e.ordered?`${e.index}.`:"•"}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[r.body,r.listText,i],children:renderInline(e.children,t,n)})]});case"quote":return(0,_jsxRuntime.jsx)(_reactNative.View,{style:r.quote,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[r.body,r.quoteText,i],children:renderInline(e.children,t,n)})});case"codeBlock":return(0,_jsxRuntime.jsx)(_reactNative.View,{style:r.codeBlock,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:r.codeText,children:e.value})});case"rule":return(0,_jsxRuntime.jsx)(_reactNative.View,{style:r.rule});default:return null}},MarkdownSkeleton=({style:e,testID:t})=>(0,_jsxRuntime.jsxs)(_reactNative.View,{style:e,testID:t,children:[(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"70%",height:20,style:{marginBottom:8}}),(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"100%",height:14,style:{marginBottom:6}}),(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"92%",height:14,style:{marginBottom:6}}),(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"60%",height:14})]}),createStyles=e=>_reactNative.StyleSheet.create({block:{marginBottom:e.spacing.sm},body:{fontSize:e.typography.fontSize.base,color:e.colors.text.primary,lineHeight:1.5*e.typography.fontSize.base},listRow:{flexDirection:"row",marginBottom:e.spacing.xs},bullet:{width:e.spacing.lg},listText:{flex:1},quote:{borderLeftWidth:3,borderLeftColor:e.colors.border.secondary,paddingLeft:e.spacing.sm,marginBottom:e.spacing.sm},quoteText:{color:e.colors.text.secondary,fontStyle:"italic"},codeBlock:{backgroundColor:e.colors.background.secondary,borderRadius:e.radius.sm,..._corners.smoothCorners,padding:e.spacing.sm,marginBottom:e.spacing.sm},codeText:{fontFamily:MONO,fontSize:e.typography.fontSize.sm,color:e.colors.text.primary},rule:{height:_reactNative.StyleSheet.hairlineWidth,backgroundColor:e.colors.border.primary,marginVertical:e.spacing.md}});