@webority/mobile-ui 0.88.0 → 0.89.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 (400) hide show
  1. package/README.md +2 -0
  2. package/lib/commonjs/canvasKit/index.js +1 -1
  3. package/lib/commonjs/canvasKit/meta.js +1 -0
  4. package/lib/commonjs/components/Accordion/Accordion.js +1 -1
  5. package/lib/commonjs/components/AmountSlider/AmountSlider.js +1 -1
  6. package/lib/commonjs/components/AnimatePresence/AnimatePresence.js +1 -1
  7. package/lib/commonjs/components/AppBar/AppBar.js +1 -1
  8. package/lib/commonjs/components/AppIcon/AppIcon.js +1 -1
  9. package/lib/commonjs/components/AsyncBlock/AsyncBlock.js +1 -1
  10. package/lib/commonjs/components/AuthedImage/AuthedImage.js +1 -1
  11. package/lib/commonjs/components/Autocomplete/Autocomplete.js +1 -1
  12. package/lib/commonjs/components/Avatar/Avatar.js +1 -1
  13. package/lib/commonjs/components/Badge/Badge.js +1 -1
  14. package/lib/commonjs/components/Banner/Banner.js +1 -1
  15. package/lib/commonjs/components/BarChart/BarChart.js +1 -1
  16. package/lib/commonjs/components/BottomNavigation/BottomNavigation.js +1 -1
  17. package/lib/commonjs/components/BottomSheet/BottomSheet.js +1 -1
  18. package/lib/commonjs/components/Box/Box.js +1 -1
  19. package/lib/commonjs/components/Button/Button.js +1 -1
  20. package/lib/commonjs/components/Calendar/Calendar.js +1 -1
  21. package/lib/commonjs/components/Calendar/CalendarDay.js +1 -1
  22. package/lib/commonjs/components/Calendar/calendarStyles.js +1 -1
  23. package/lib/commonjs/components/Card/Card.js +1 -1
  24. package/lib/commonjs/components/Carousel/Carousel.js +1 -1
  25. package/lib/commonjs/components/Checkbox/Checkbox.js +1 -1
  26. package/lib/commonjs/components/Chip/Chip.js +1 -1
  27. package/lib/commonjs/components/ChoiceGroup/ChoiceGroup.js +1 -1
  28. package/lib/commonjs/components/Composer/Composer.js +1 -1
  29. package/lib/commonjs/components/Confetti/Confetti.js +1 -1
  30. package/lib/commonjs/components/DatePicker/DatePicker.js +1 -1
  31. package/lib/commonjs/components/DateRangePicker/DateRangePicker.js +1 -1
  32. package/lib/commonjs/components/DateSeparator/DateSeparator.js +1 -1
  33. package/lib/commonjs/components/Descriptions/Descriptions.js +1 -1
  34. package/lib/commonjs/components/Dialog/Dialog.js +1 -1
  35. package/lib/commonjs/components/Divider/Divider.js +1 -1
  36. package/lib/commonjs/components/Drawer/Drawer.js +1 -1
  37. package/lib/commonjs/components/EmptyState/EmptyState.js +1 -1
  38. package/lib/commonjs/components/ErrorBoundary/ErrorBoundary.js +1 -1
  39. package/lib/commonjs/components/FieldBase/Chevron.js +1 -1
  40. package/lib/commonjs/components/FieldBase/ChoiceText.js +1 -1
  41. package/lib/commonjs/components/FieldBase/FieldBase.js +1 -1
  42. package/lib/commonjs/components/FieldBase/useFloatingLabel.js +1 -1
  43. package/lib/commonjs/components/FilePicker/FilePicker.js +1 -1
  44. package/lib/commonjs/components/FileViewer/FileViewer.js +1 -1
  45. package/lib/commonjs/components/FilterChipRow/FilterChipRow.js +1 -1
  46. package/lib/commonjs/components/FloatingActionButton/FloatingActionButton.js +1 -1
  47. package/lib/commonjs/components/FormField/FormField.js +1 -1
  48. package/lib/commonjs/components/IconBadge/IconBadge.js +1 -1
  49. package/lib/commonjs/components/IconButton/IconButton.js +1 -1
  50. package/lib/commonjs/components/ImageGallery/ImageGallery.js +1 -1
  51. package/lib/commonjs/components/InlineSelect/InlineSelect.js +1 -1
  52. package/lib/commonjs/components/Input/Input.js +1 -1
  53. package/lib/commonjs/components/KeyboardAwareScrollView/KeyboardAwareScrollView.js +1 -1
  54. package/lib/commonjs/components/KeyboardToolbar/KeyboardToolbar.js +1 -1
  55. package/lib/commonjs/components/ListItem/ListItem.js +1 -1
  56. package/lib/commonjs/components/LoaderOverlay/LoaderOverlay.js +1 -1
  57. package/lib/commonjs/components/Markdown/Markdown.js +1 -1
  58. package/lib/commonjs/components/Menu/MenuSurface.js +1 -1
  59. package/lib/commonjs/components/MessageBubble/MessageBubble.js +1 -1
  60. package/lib/commonjs/components/MessageList/MessageList.js +1 -1
  61. package/lib/commonjs/components/Modal/Modal.js +1 -1
  62. package/lib/commonjs/components/Notation/Notation.js +1 -1
  63. package/lib/commonjs/components/NumberInput/NumberInput.js +1 -1
  64. package/lib/commonjs/components/OTPInput/OTPInput.js +1 -1
  65. package/lib/commonjs/components/OnboardingPager/OnboardingPager.js +1 -1
  66. package/lib/commonjs/components/OptionSheet/OptionSheet.js +1 -1
  67. package/lib/commonjs/components/PaymentResult/PaymentResult.js +1 -1
  68. package/lib/commonjs/components/PermissionPrompt/PermissionPrompt.js +1 -1
  69. package/lib/commonjs/components/PhoneNumberInput/PhoneNumberInput.js +1 -1
  70. package/lib/commonjs/components/PickerTrigger/PickerTrigger.js +1 -1
  71. package/lib/commonjs/components/ProfileCompletion/ProfileCompletion.js +1 -1
  72. package/lib/commonjs/components/ProfilePicker/ProfilePicker.js +1 -1
  73. package/lib/commonjs/components/ProgressBar/ProgressBar.js +1 -1
  74. package/lib/commonjs/components/ProgressRing/ProgressRing.js +1 -1
  75. package/lib/commonjs/components/Radio/Radio.js +1 -1
  76. package/lib/commonjs/components/Radio/RadioDot.js +1 -1
  77. package/lib/commonjs/components/Rating/Rating.js +1 -1
  78. package/lib/commonjs/components/Repeater/Repeater.js +1 -1
  79. package/lib/commonjs/components/RichTextEditor/RichTextEditor.js +1 -1
  80. package/lib/commonjs/components/ScannerOverlay/ScannerOverlay.js +1 -1
  81. package/lib/commonjs/components/Screen/Screen.js +1 -1
  82. package/lib/commonjs/components/SearchBar/SearchBar.js +1 -1
  83. package/lib/commonjs/components/SearchBar/SearchPanel.js +1 -1
  84. package/lib/commonjs/components/SectionHeader/SectionHeader.js +1 -1
  85. package/lib/commonjs/components/SegmentedControl/SegmentedControl.js +1 -1
  86. package/lib/commonjs/components/Select/Select.js +1 -1
  87. package/lib/commonjs/components/SignaturePad/SignaturePad.js +1 -1
  88. package/lib/commonjs/components/Skeleton/Skeleton.js +1 -1
  89. package/lib/commonjs/components/Skeleton/SkeletonContent.js +1 -1
  90. package/lib/commonjs/components/SlideToConfirm/SlideToConfirm.js +1 -1
  91. package/lib/commonjs/components/Slider/Slider.js +1 -1
  92. package/lib/commonjs/components/Slider/valueText.js +1 -1
  93. package/lib/commonjs/components/SliderField/SliderField.js +1 -1
  94. package/lib/commonjs/components/Sparkline/Sparkline.js +1 -1
  95. package/lib/commonjs/components/Spinner/Spinner.js +1 -1
  96. package/lib/commonjs/components/StatTile/StatTile.js +1 -1
  97. package/lib/commonjs/components/StatusBadge/StatusBadge.js +1 -1
  98. package/lib/commonjs/components/Stepper/Stepper.js +1 -1
  99. package/lib/commonjs/components/Swipeable/Swipeable.js +1 -1
  100. package/lib/commonjs/components/Switch/Switch.js +1 -1
  101. package/lib/commonjs/components/Tabs/Tabs.js +1 -1
  102. package/lib/commonjs/components/TagInput/TagInput.js +1 -1
  103. package/lib/commonjs/components/Text/Text.js +1 -1
  104. package/lib/commonjs/components/TimePicker/TimePicker.js +1 -1
  105. package/lib/commonjs/components/Timeline/Timeline.js +1 -1
  106. package/lib/commonjs/components/Toast/Toast.js +1 -1
  107. package/lib/commonjs/components/Toast/ToastProvider.js +1 -1
  108. package/lib/commonjs/components/Tooltip/RichTooltipBody.js +1 -1
  109. package/lib/commonjs/components/Tooltip/Tooltip.js +1 -1
  110. package/lib/commonjs/components/Tour/Tour.js +1 -1
  111. package/lib/commonjs/components/TypingIndicator/TypingIndicator.js +1 -1
  112. package/lib/commonjs/components/WheelPicker/Wheel.js +1 -1
  113. package/lib/commonjs/components/WheelPicker/WheelPicker.js +1 -1
  114. package/lib/commonjs/hooks/useDragToDismiss.js +1 -1
  115. package/lib/commonjs/hooks/usePressAnimation.js +1 -1
  116. package/lib/commonjs/hooks/useRefreshControl.js +1 -1
  117. package/lib/commonjs/index.js +1 -1
  118. package/lib/commonjs/initUI.js +1 -1
  119. package/lib/commonjs/network/NetworkStatusBanner.js +1 -1
  120. package/lib/commonjs/theme/ThemeContext.js +1 -1
  121. package/lib/commonjs/theme/componentSizes.js +1 -1
  122. package/lib/commonjs/theme/index.js +1 -1
  123. package/lib/commonjs/theme/merge.js +1 -1
  124. package/lib/commonjs/theme/scale.js +1 -1
  125. package/lib/commonjs/theme/textStyle.js +1 -1
  126. package/lib/commonjs/theme/tokens.generated.js +1 -0
  127. package/lib/commonjs/theme/tokens.js +1 -1
  128. package/lib/commonjs/utils/color.js +1 -1
  129. package/lib/module/canvasKit/index.js +1 -1
  130. package/lib/module/canvasKit/meta.js +1 -0
  131. package/lib/module/components/Accordion/Accordion.js +1 -1
  132. package/lib/module/components/AmountSlider/AmountSlider.js +1 -1
  133. package/lib/module/components/AnimatePresence/AnimatePresence.js +1 -1
  134. package/lib/module/components/AppBar/AppBar.js +1 -1
  135. package/lib/module/components/AppIcon/AppIcon.js +1 -1
  136. package/lib/module/components/AsyncBlock/AsyncBlock.js +1 -1
  137. package/lib/module/components/AuthedImage/AuthedImage.js +1 -1
  138. package/lib/module/components/Autocomplete/Autocomplete.js +1 -1
  139. package/lib/module/components/Avatar/Avatar.js +1 -1
  140. package/lib/module/components/Badge/Badge.js +1 -1
  141. package/lib/module/components/Banner/Banner.js +1 -1
  142. package/lib/module/components/BarChart/BarChart.js +1 -1
  143. package/lib/module/components/BottomNavigation/BottomNavigation.js +1 -1
  144. package/lib/module/components/BottomSheet/BottomSheet.js +1 -1
  145. package/lib/module/components/Box/Box.js +1 -1
  146. package/lib/module/components/Button/Button.js +1 -1
  147. package/lib/module/components/Calendar/Calendar.js +1 -1
  148. package/lib/module/components/Calendar/CalendarDay.js +1 -1
  149. package/lib/module/components/Calendar/calendarStyles.js +1 -1
  150. package/lib/module/components/Card/Card.js +1 -1
  151. package/lib/module/components/Carousel/Carousel.js +1 -1
  152. package/lib/module/components/Checkbox/Checkbox.js +1 -1
  153. package/lib/module/components/Chip/Chip.js +1 -1
  154. package/lib/module/components/ChoiceGroup/ChoiceGroup.js +1 -1
  155. package/lib/module/components/Composer/Composer.js +1 -1
  156. package/lib/module/components/Confetti/Confetti.js +1 -1
  157. package/lib/module/components/DatePicker/DatePicker.js +1 -1
  158. package/lib/module/components/DateRangePicker/DateRangePicker.js +1 -1
  159. package/lib/module/components/DateSeparator/DateSeparator.js +1 -1
  160. package/lib/module/components/Descriptions/Descriptions.js +1 -1
  161. package/lib/module/components/Dialog/Dialog.js +1 -1
  162. package/lib/module/components/Divider/Divider.js +1 -1
  163. package/lib/module/components/Drawer/Drawer.js +1 -1
  164. package/lib/module/components/EmptyState/EmptyState.js +1 -1
  165. package/lib/module/components/ErrorBoundary/ErrorBoundary.js +1 -1
  166. package/lib/module/components/FieldBase/Chevron.js +1 -1
  167. package/lib/module/components/FieldBase/ChoiceText.js +1 -1
  168. package/lib/module/components/FieldBase/FieldBase.js +1 -1
  169. package/lib/module/components/FieldBase/useFloatingLabel.js +1 -1
  170. package/lib/module/components/FilePicker/FilePicker.js +1 -1
  171. package/lib/module/components/FileViewer/FileViewer.js +1 -1
  172. package/lib/module/components/FilterChipRow/FilterChipRow.js +1 -1
  173. package/lib/module/components/FloatingActionButton/FloatingActionButton.js +1 -1
  174. package/lib/module/components/FormField/FormField.js +1 -1
  175. package/lib/module/components/IconBadge/IconBadge.js +1 -1
  176. package/lib/module/components/IconButton/IconButton.js +1 -1
  177. package/lib/module/components/ImageGallery/ImageGallery.js +1 -1
  178. package/lib/module/components/InlineSelect/InlineSelect.js +1 -1
  179. package/lib/module/components/Input/Input.js +1 -1
  180. package/lib/module/components/KeyboardAwareScrollView/KeyboardAwareScrollView.js +1 -1
  181. package/lib/module/components/KeyboardToolbar/KeyboardToolbar.js +1 -1
  182. package/lib/module/components/ListItem/ListItem.js +1 -1
  183. package/lib/module/components/LoaderOverlay/LoaderOverlay.js +1 -1
  184. package/lib/module/components/Markdown/Markdown.js +1 -1
  185. package/lib/module/components/Menu/MenuSurface.js +1 -1
  186. package/lib/module/components/MessageBubble/MessageBubble.js +1 -1
  187. package/lib/module/components/MessageList/MessageList.js +1 -1
  188. package/lib/module/components/Modal/Modal.js +1 -1
  189. package/lib/module/components/Notation/Notation.js +1 -1
  190. package/lib/module/components/NumberInput/NumberInput.js +1 -1
  191. package/lib/module/components/OTPInput/OTPInput.js +1 -1
  192. package/lib/module/components/OnboardingPager/OnboardingPager.js +1 -1
  193. package/lib/module/components/OptionSheet/OptionSheet.js +1 -1
  194. package/lib/module/components/PaymentResult/PaymentResult.js +1 -1
  195. package/lib/module/components/PermissionPrompt/PermissionPrompt.js +1 -1
  196. package/lib/module/components/PhoneNumberInput/PhoneNumberInput.js +1 -1
  197. package/lib/module/components/PickerTrigger/PickerTrigger.js +1 -1
  198. package/lib/module/components/ProfileCompletion/ProfileCompletion.js +1 -1
  199. package/lib/module/components/ProfilePicker/ProfilePicker.js +1 -1
  200. package/lib/module/components/ProgressBar/ProgressBar.js +1 -1
  201. package/lib/module/components/ProgressRing/ProgressRing.js +1 -1
  202. package/lib/module/components/Radio/Radio.js +1 -1
  203. package/lib/module/components/Radio/RadioDot.js +1 -1
  204. package/lib/module/components/Rating/Rating.js +1 -1
  205. package/lib/module/components/Repeater/Repeater.js +1 -1
  206. package/lib/module/components/RichTextEditor/RichTextEditor.js +1 -1
  207. package/lib/module/components/ScannerOverlay/ScannerOverlay.js +1 -1
  208. package/lib/module/components/Screen/Screen.js +1 -1
  209. package/lib/module/components/SearchBar/SearchBar.js +1 -1
  210. package/lib/module/components/SearchBar/SearchPanel.js +1 -1
  211. package/lib/module/components/SectionHeader/SectionHeader.js +1 -1
  212. package/lib/module/components/SegmentedControl/SegmentedControl.js +1 -1
  213. package/lib/module/components/Select/Select.js +1 -1
  214. package/lib/module/components/SignaturePad/SignaturePad.js +1 -1
  215. package/lib/module/components/Skeleton/Skeleton.js +1 -1
  216. package/lib/module/components/Skeleton/SkeletonContent.js +1 -1
  217. package/lib/module/components/SlideToConfirm/SlideToConfirm.js +1 -1
  218. package/lib/module/components/Slider/Slider.js +1 -1
  219. package/lib/module/components/Slider/valueText.js +1 -1
  220. package/lib/module/components/SliderField/SliderField.js +1 -1
  221. package/lib/module/components/Sparkline/Sparkline.js +1 -1
  222. package/lib/module/components/Spinner/Spinner.js +1 -1
  223. package/lib/module/components/StatTile/StatTile.js +1 -1
  224. package/lib/module/components/StatusBadge/StatusBadge.js +1 -1
  225. package/lib/module/components/Stepper/Stepper.js +1 -1
  226. package/lib/module/components/Swipeable/Swipeable.js +1 -1
  227. package/lib/module/components/Switch/Switch.js +1 -1
  228. package/lib/module/components/Tabs/Tabs.js +1 -1
  229. package/lib/module/components/TagInput/TagInput.js +1 -1
  230. package/lib/module/components/Text/Text.js +1 -1
  231. package/lib/module/components/TimePicker/TimePicker.js +1 -1
  232. package/lib/module/components/Timeline/Timeline.js +1 -1
  233. package/lib/module/components/Toast/Toast.js +1 -1
  234. package/lib/module/components/Toast/ToastProvider.js +1 -1
  235. package/lib/module/components/Tooltip/RichTooltipBody.js +1 -1
  236. package/lib/module/components/Tooltip/Tooltip.js +1 -1
  237. package/lib/module/components/Tour/Tour.js +1 -1
  238. package/lib/module/components/TypingIndicator/TypingIndicator.js +1 -1
  239. package/lib/module/components/WheelPicker/Wheel.js +1 -1
  240. package/lib/module/components/WheelPicker/WheelPicker.js +1 -1
  241. package/lib/module/hooks/useDragToDismiss.js +1 -1
  242. package/lib/module/hooks/usePressAnimation.js +1 -1
  243. package/lib/module/hooks/useRefreshControl.js +1 -1
  244. package/lib/module/index.js +1 -1
  245. package/lib/module/initUI.js +1 -1
  246. package/lib/module/network/NetworkStatusBanner.js +1 -1
  247. package/lib/module/theme/ThemeContext.js +1 -1
  248. package/lib/module/theme/componentSizes.js +1 -1
  249. package/lib/module/theme/index.js +1 -1
  250. package/lib/module/theme/merge.js +1 -1
  251. package/lib/module/theme/scale.js +1 -1
  252. package/lib/module/theme/textStyle.js +1 -1
  253. package/lib/module/theme/tokens.generated.js +1 -0
  254. package/lib/module/theme/tokens.js +1 -1
  255. package/lib/module/utils/color.js +1 -1
  256. package/lib/typescript/commonjs/canvasKit/meta.d.ts +32 -0
  257. package/lib/typescript/commonjs/components/AmountSlider/AmountSlider.d.ts +1 -1
  258. package/lib/typescript/commonjs/components/AnimatePresence/AnimatePresence.d.ts +1 -1
  259. package/lib/typescript/commonjs/components/AppBar/AppBar.d.ts +4 -4
  260. package/lib/typescript/commonjs/components/AppIcon/AppIcon.d.ts +1 -1
  261. package/lib/typescript/commonjs/components/AppIcon/defaultIcons.d.ts +1 -1
  262. package/lib/typescript/commonjs/components/Avatar/Avatar.d.ts +4 -4
  263. package/lib/typescript/commonjs/components/Badge/Badge.d.ts +1 -1
  264. package/lib/typescript/commonjs/components/Banner/Banner.d.ts +1 -1
  265. package/lib/typescript/commonjs/components/BarChart/BarChart.d.ts +1 -1
  266. package/lib/typescript/commonjs/components/BottomNavigation/BottomNavigation.d.ts +8 -10
  267. package/lib/typescript/commonjs/components/BottomSheet/BottomSheet.d.ts +2 -2
  268. package/lib/typescript/commonjs/components/Box/Box.d.ts +21 -21
  269. package/lib/typescript/commonjs/components/Button/Button.d.ts +3 -3
  270. package/lib/typescript/commonjs/components/Calendar/Calendar.d.ts +1 -1
  271. package/lib/typescript/commonjs/components/Calendar/calendarStyles.d.ts +9 -9
  272. package/lib/typescript/commonjs/components/Card/Card.d.ts +7 -6
  273. package/lib/typescript/commonjs/components/Checkbox/Checkbox.d.ts +1 -1
  274. package/lib/typescript/commonjs/components/Chip/Chip.d.ts +1 -1
  275. package/lib/typescript/commonjs/components/ChoiceGroup/ChoiceGroup.d.ts +1 -1
  276. package/lib/typescript/commonjs/components/Dialog/Dialog.d.ts +2 -2
  277. package/lib/typescript/commonjs/components/FieldBase/Chevron.d.ts +1 -1
  278. package/lib/typescript/commonjs/components/FieldBase/FieldBase.d.ts +32 -33
  279. package/lib/typescript/commonjs/components/FieldBase/useFloatingLabel.d.ts +2 -3
  280. package/lib/typescript/commonjs/components/FloatingActionButton/FloatingActionButton.d.ts +2 -2
  281. package/lib/typescript/commonjs/components/FormField/FormField.d.ts +2 -3
  282. package/lib/typescript/commonjs/components/IconBadge/IconBadge.d.ts +1 -1
  283. package/lib/typescript/commonjs/components/IconButton/IconButton.d.ts +2 -2
  284. package/lib/typescript/commonjs/components/InlineSelect/InlineSelect.d.ts +2 -3
  285. package/lib/typescript/commonjs/components/Input/Input.d.ts +2 -2
  286. package/lib/typescript/commonjs/components/Notation/Notation.d.ts +1 -1
  287. package/lib/typescript/commonjs/components/OptionSheet/OptionSheet.d.ts +2 -2
  288. package/lib/typescript/commonjs/components/PickerTrigger/PickerTrigger.d.ts +2 -3
  289. package/lib/typescript/commonjs/components/ProfileCompletion/ProfileCompletion.d.ts +3 -4
  290. package/lib/typescript/commonjs/components/ProfilePicker/ProfilePicker.d.ts +5 -6
  291. package/lib/typescript/commonjs/components/ProgressBar/ProgressBar.d.ts +1 -1
  292. package/lib/typescript/commonjs/components/ProgressRing/ProgressRing.d.ts +6 -7
  293. package/lib/typescript/commonjs/components/Radio/Radio.d.ts +1 -1
  294. package/lib/typescript/commonjs/components/SearchBar/SearchBar.d.ts +1 -1
  295. package/lib/typescript/commonjs/components/SegmentedControl/SegmentedControl.d.ts +3 -4
  296. package/lib/typescript/commonjs/components/Select/Select.d.ts +5 -5
  297. package/lib/typescript/commonjs/components/Skeleton/Skeleton.d.ts +2 -2
  298. package/lib/typescript/commonjs/components/SlideToConfirm/SlideToConfirm.d.ts +1 -1
  299. package/lib/typescript/commonjs/components/Slider/Slider.d.ts +6 -7
  300. package/lib/typescript/commonjs/components/Slider/valueText.d.ts +1 -1
  301. package/lib/typescript/commonjs/components/Sparkline/Sparkline.d.ts +1 -1
  302. package/lib/typescript/commonjs/components/StatusBadge/StatusBadge.d.ts +2 -3
  303. package/lib/typescript/commonjs/components/Swipeable/Swipeable.d.ts +2 -2
  304. package/lib/typescript/commonjs/components/Switch/Switch.d.ts +1 -1
  305. package/lib/typescript/commonjs/components/Tabs/Tabs.d.ts +6 -7
  306. package/lib/typescript/commonjs/components/Text/Text.d.ts +6 -7
  307. package/lib/typescript/commonjs/components/Timeline/Timeline.d.ts +1 -1
  308. package/lib/typescript/commonjs/components/Toast/Toast.d.ts +1 -1
  309. package/lib/typescript/commonjs/components/Toast/ToastProvider.d.ts +2 -2
  310. package/lib/typescript/commonjs/components/Tour/Tour.d.ts +2 -2
  311. package/lib/typescript/commonjs/hooks/usePresenceMotion.d.ts +2 -2
  312. package/lib/typescript/commonjs/index.d.ts +2 -2
  313. package/lib/typescript/commonjs/initUI.d.ts +3 -3
  314. package/lib/typescript/commonjs/theme/ThemeContext.d.ts +5 -3
  315. package/lib/typescript/commonjs/theme/componentSizes.d.ts +40 -18
  316. package/lib/typescript/commonjs/theme/index.d.ts +15 -17
  317. package/lib/typescript/commonjs/theme/merge.d.ts +15 -2
  318. package/lib/typescript/commonjs/theme/scale.d.ts +6 -4
  319. package/lib/typescript/commonjs/theme/textStyle.d.ts +4 -17
  320. package/lib/typescript/commonjs/theme/tokens.generated.d.ts +362 -0
  321. package/lib/typescript/commonjs/theme/types.d.ts +104 -347
  322. package/lib/typescript/commonjs/utils/color.d.ts +6 -2
  323. package/lib/typescript/commonjs/utils/shadows.d.ts +2 -2
  324. package/lib/typescript/module/canvasKit/meta.d.ts +32 -0
  325. package/lib/typescript/module/components/AmountSlider/AmountSlider.d.ts +1 -1
  326. package/lib/typescript/module/components/AnimatePresence/AnimatePresence.d.ts +1 -1
  327. package/lib/typescript/module/components/AppBar/AppBar.d.ts +4 -4
  328. package/lib/typescript/module/components/AppIcon/AppIcon.d.ts +1 -1
  329. package/lib/typescript/module/components/AppIcon/defaultIcons.d.ts +1 -1
  330. package/lib/typescript/module/components/Avatar/Avatar.d.ts +4 -4
  331. package/lib/typescript/module/components/Badge/Badge.d.ts +1 -1
  332. package/lib/typescript/module/components/Banner/Banner.d.ts +1 -1
  333. package/lib/typescript/module/components/BarChart/BarChart.d.ts +1 -1
  334. package/lib/typescript/module/components/BottomNavigation/BottomNavigation.d.ts +8 -10
  335. package/lib/typescript/module/components/BottomSheet/BottomSheet.d.ts +2 -2
  336. package/lib/typescript/module/components/Box/Box.d.ts +21 -21
  337. package/lib/typescript/module/components/Button/Button.d.ts +3 -3
  338. package/lib/typescript/module/components/Calendar/Calendar.d.ts +1 -1
  339. package/lib/typescript/module/components/Calendar/calendarStyles.d.ts +9 -9
  340. package/lib/typescript/module/components/Card/Card.d.ts +7 -6
  341. package/lib/typescript/module/components/Checkbox/Checkbox.d.ts +1 -1
  342. package/lib/typescript/module/components/Chip/Chip.d.ts +1 -1
  343. package/lib/typescript/module/components/ChoiceGroup/ChoiceGroup.d.ts +1 -1
  344. package/lib/typescript/module/components/Dialog/Dialog.d.ts +2 -2
  345. package/lib/typescript/module/components/FieldBase/Chevron.d.ts +1 -1
  346. package/lib/typescript/module/components/FieldBase/FieldBase.d.ts +32 -33
  347. package/lib/typescript/module/components/FieldBase/useFloatingLabel.d.ts +2 -3
  348. package/lib/typescript/module/components/FloatingActionButton/FloatingActionButton.d.ts +2 -2
  349. package/lib/typescript/module/components/FormField/FormField.d.ts +2 -3
  350. package/lib/typescript/module/components/IconBadge/IconBadge.d.ts +1 -1
  351. package/lib/typescript/module/components/IconButton/IconButton.d.ts +2 -2
  352. package/lib/typescript/module/components/InlineSelect/InlineSelect.d.ts +2 -3
  353. package/lib/typescript/module/components/Input/Input.d.ts +2 -2
  354. package/lib/typescript/module/components/Notation/Notation.d.ts +1 -1
  355. package/lib/typescript/module/components/OptionSheet/OptionSheet.d.ts +2 -2
  356. package/lib/typescript/module/components/PickerTrigger/PickerTrigger.d.ts +2 -3
  357. package/lib/typescript/module/components/ProfileCompletion/ProfileCompletion.d.ts +3 -4
  358. package/lib/typescript/module/components/ProfilePicker/ProfilePicker.d.ts +5 -6
  359. package/lib/typescript/module/components/ProgressBar/ProgressBar.d.ts +1 -1
  360. package/lib/typescript/module/components/ProgressRing/ProgressRing.d.ts +6 -7
  361. package/lib/typescript/module/components/Radio/Radio.d.ts +1 -1
  362. package/lib/typescript/module/components/SearchBar/SearchBar.d.ts +1 -1
  363. package/lib/typescript/module/components/SegmentedControl/SegmentedControl.d.ts +3 -4
  364. package/lib/typescript/module/components/Select/Select.d.ts +5 -5
  365. package/lib/typescript/module/components/Skeleton/Skeleton.d.ts +2 -2
  366. package/lib/typescript/module/components/SlideToConfirm/SlideToConfirm.d.ts +1 -1
  367. package/lib/typescript/module/components/Slider/Slider.d.ts +6 -7
  368. package/lib/typescript/module/components/Slider/valueText.d.ts +1 -1
  369. package/lib/typescript/module/components/Sparkline/Sparkline.d.ts +1 -1
  370. package/lib/typescript/module/components/StatusBadge/StatusBadge.d.ts +2 -3
  371. package/lib/typescript/module/components/Swipeable/Swipeable.d.ts +2 -2
  372. package/lib/typescript/module/components/Switch/Switch.d.ts +1 -1
  373. package/lib/typescript/module/components/Tabs/Tabs.d.ts +6 -7
  374. package/lib/typescript/module/components/Text/Text.d.ts +6 -7
  375. package/lib/typescript/module/components/Timeline/Timeline.d.ts +1 -1
  376. package/lib/typescript/module/components/Toast/Toast.d.ts +1 -1
  377. package/lib/typescript/module/components/Toast/ToastProvider.d.ts +2 -2
  378. package/lib/typescript/module/components/Tour/Tour.d.ts +2 -2
  379. package/lib/typescript/module/hooks/usePresenceMotion.d.ts +2 -2
  380. package/lib/typescript/module/index.d.ts +2 -2
  381. package/lib/typescript/module/initUI.d.ts +3 -3
  382. package/lib/typescript/module/theme/ThemeContext.d.ts +5 -3
  383. package/lib/typescript/module/theme/componentSizes.d.ts +40 -18
  384. package/lib/typescript/module/theme/index.d.ts +15 -17
  385. package/lib/typescript/module/theme/merge.d.ts +15 -2
  386. package/lib/typescript/module/theme/scale.d.ts +6 -4
  387. package/lib/typescript/module/theme/textStyle.d.ts +4 -17
  388. package/lib/typescript/module/theme/tokens.generated.d.ts +362 -0
  389. package/lib/typescript/module/theme/types.d.ts +104 -347
  390. package/lib/typescript/module/utils/color.d.ts +6 -2
  391. package/lib/typescript/module/utils/shadows.d.ts +2 -2
  392. package/package.json +14 -15
  393. package/lib/commonjs/theme/componentTokens.js +0 -1
  394. package/lib/commonjs/theme/retiredThemeKeys.js +0 -1
  395. package/lib/module/theme/componentTokens.js +0 -1
  396. package/lib/module/theme/retiredThemeKeys.js +0 -1
  397. package/lib/typescript/commonjs/theme/componentTokens.d.ts +0 -762
  398. package/lib/typescript/commonjs/theme/retiredThemeKeys.d.ts +0 -22
  399. package/lib/typescript/module/theme/componentTokens.d.ts +0 -762
  400. package/lib/typescript/module/theme/retiredThemeKeys.d.ts +0 -22
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.DEFAULT_MESSAGE_LIST_LABELS=void 0,exports.MessageList=MessageList,exports.default=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_corners=require("../../utils/corners.js"),_index2=require("../Badge/index.js"),_index3=require("../DateSeparator/index.js"),_index4=require("../IconButton/index.js"),_index5=require("../Spinner/index.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_MESSAGE_LIST_LABELS=exports.DEFAULT_MESSAGE_LIST_LABELS=Object.freeze({today:"Today",yesterday:"Yesterday",jumpToLatest:"Jump to the latest message",newMessages:e=>1===e?"1 new message":`${e} new messages`,unread:"New messages",loadingOlder:"Loading earlier messages"}),JUMP_AT=160,KEEP_POSITION={minIndexForVisible:0,autoscrollToTopThreshold:JUMP_AT},positionOf=(e,t)=>e?t?"middle":"last":t?"first":"single";function MessageList({messages:e,keyExtractor:t,renderMessage:n,getAuthorKey:s,getDate:r,firstUnreadKey:a,onLoadOlder:i,loadingOlder:o=!1,hasOlder:l=!0,typing:u,empty:c,getAnnouncement:d,followNew:_,keyboardAware:m=!0,keyboardOffset:x,labels:p,now:g,onScroll:j,contentContainerStyle:f,style:y,testID:b,...S}){const v=(0,_index.useTheme)(),L=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),h=(0,_useReducedMotion.useReducedMotion)(),E=(0,_react.useMemo)(()=>buildStyles(v),[v]),R=(0,_react.useMemo)(()=>({...DEFAULT_MESSAGE_LIST_LABELS,...p}),[p]),w=x??L.bottom,T=(0,_react.useRef)(null),A=(0,_react.useRef)(!1),[C,M]=(0,_react.useState)(!1),[I,N]=(0,_react.useState)(0),O=(0,_react.useMemo)(()=>{const n=r?e.map(e=>(0,_mobileCore.formatDate)(r(e))):null,i=s?e.map(s):null,o=void 0===a?-1:e.findIndex(e=>t(e)===a);return e.map((t,s)=>{const a=s===e.length-1,l=null!==n&&(a||n[s]!==n[s+1]),u=null!==i&&!a&&i[s+1]===i[s]&&!l&&s!==o,c=null!==i&&s>0&&i[s-1]===i[s]&&(null===n||n[s-1]===n[s])&&s-1!==o;return{groupPosition:positionOf(u,c),day:l&&r?(0,_index3.dayLabel)(r(t),{now:g,labels:R}):null,unread:s===o}})},[e,r,s,a,t,g,R]),k=(0,_react.useCallback)(()=>{T.current?.scrollToOffset({offset:0,animated:!h}),N(0)},[h]),q=e.length>0?t(e[0]):null,D=(0,_react.useRef)(q);(0,_react.useEffect)(()=>{const n=D.current;if(D.current=q,null===n||null===q||n===q)return;const s=e.findIndex(e=>t(e)===n);if(-1===s)return void N(0);const r=e.slice(0,s).reverse();for(const e of r){const t=d?.(e);t&&(0,_announce.announce)(t)}_&&r.some(_)?k():A.current&&N(e=>e+r.length)},[q]);const P=(0,_react.useCallback)(e=>{const t=e.nativeEvent.contentOffset.y>JUMP_AT;t!==A.current&&(A.current=t,M(t),t||N(0)),j?.(e)},[j]),F=(0,_react.useCallback)(()=>{l&&!o&&i?.()},[l,o,i]),V=(0,_react.useCallback)(({item:e,index:t})=>{const s=O[t];return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[s?.day?(0,_jsxRuntime.jsx)(_index3.DateSeparator,{label:s.day}):null,s?.unread?(0,_jsxRuntime.jsx)(_index3.DateSeparator,{label:R.unread,emphasis:!0}):null,n({item:e,index:t,groupPosition:s?.groupPosition??"single"})]})},[O,R.unread,n]),B=(0,_react.useCallback)(e=>t(e),[t]),U=(0,_react.useCallback)(e=>(0,_jsxRuntime.jsx)(_reactNativeKeyboardController.KeyboardChatScrollView,{...e,inverted:!0,offset:w}),[w]),K=I>0?`${R.newMessages(I)}. ${R.jumpToLatest}`:R.jumpToLatest;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[E.root,y],children:[(0,_jsxRuntime.jsx)(_reactNative.FlatList,{keyboardShouldPersistTaps:"handled",maintainVisibleContentPosition:KEEP_POSITION,...S,ref:T,data:e,renderItem:V,keyExtractor:B,inverted:!0,onScroll:P,onEndReached:i?F:void 0,ListHeaderComponent:u?(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:u}):null,ListFooterComponent:o?(0,_jsxRuntime.jsx)(_index5.Spinner,{size:"sm",accessibilityLabel:R.loadingOlder,style:E.older}):null,ListEmptyComponent:c?(0,_jsxRuntime.jsx)(_reactNative.View,{style:E.fill,children:c}):null,renderScrollComponent:m?U:void 0,contentContainerStyle:[E.content,0===e.length?E.grow:null,f],testID:b}),C?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:E.jump,pointerEvents:"box-none",children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:E.jumpDisc,children:(0,_jsxRuntime.jsx)(_index4.IconButton,{icon:"arrow-down",accessibilityLabel:K,variant:"ghost",tone:"neutral",onPress:k,testID:b?`${b}-jump`:void 0})}),I>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:E.count,pointerEvents:"none",importantForAccessibility:"no-hide-descendants",accessibilityElementsHidden:!0,children:(0,_jsxRuntime.jsx)(_index2.Badge,{value:I,max:99,tone:"primary",size:"sm"})}):null]}):null]})}const buildStyles=e=>_reactNative.StyleSheet.create({root:{flex:1},content:{paddingHorizontal:e.spacing.md,paddingVertical:e.spacing.sm},grow:{flexGrow:1},fill:{flex:1},older:{paddingVertical:e.spacing.md},jump:{position:"absolute",right:e.spacing.md,bottom:e.spacing.md},jumpDisc:{borderRadius:e.radius.pill,..._corners.smoothCorners,backgroundColor:e.colors.background.elevated,...e.shadows.md},count:{position:"absolute",top:-e.spacing.xs,right:-e.spacing.xs}});var _default=exports.default=MessageList;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.DEFAULT_MESSAGE_LIST_LABELS=void 0,exports.MessageList=MessageList,exports.default=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_corners=require("../../utils/corners.js"),_index2=require("../Badge/index.js"),_index3=require("../DateSeparator/index.js"),_index4=require("../IconButton/index.js"),_index5=require("../Spinner/index.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_MESSAGE_LIST_LABELS=exports.DEFAULT_MESSAGE_LIST_LABELS=Object.freeze({today:"Today",yesterday:"Yesterday",jumpToLatest:"Jump to the latest message",newMessages:e=>1===e?"1 new message":`${e} new messages`,unread:"New messages",loadingOlder:"Loading earlier messages"}),JUMP_AT=160,KEEP_POSITION={minIndexForVisible:0,autoscrollToTopThreshold:JUMP_AT},positionOf=(e,t)=>e?t?"middle":"last":t?"first":"single";function MessageList({messages:e,keyExtractor:t,renderMessage:n,getAuthorKey:s,getDate:r,firstUnreadKey:a,onLoadOlder:o,loadingOlder:i=!1,hasOlder:l=!0,typing:u,empty:c,getAnnouncement:d,followNew:_,keyboardAware:m=!0,keyboardOffset:x,labels:p,now:j,onScroll:f,contentContainerStyle:g,style:y,testID:b,...S}){const v=(0,_index.useTheme)(),L=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),h=(0,_useReducedMotion.useReducedMotion)(),E=(0,_react.useMemo)(()=>buildStyles(v),[v]),R=(0,_react.useMemo)(()=>({...DEFAULT_MESSAGE_LIST_LABELS,...p}),[p]),w=x??L.bottom,T=(0,_react.useRef)(null),A=(0,_react.useRef)(!1),[C,M]=(0,_react.useState)(!1),[I,N]=(0,_react.useState)(0),O=(0,_react.useMemo)(()=>{const n=r?e.map(e=>(0,_mobileCore.formatDate)(r(e))):null,o=s?e.map(s):null,i=void 0===a?-1:e.findIndex(e=>t(e)===a);return e.map((t,s)=>{const a=s===e.length-1,l=null!==n&&(a||n[s]!==n[s+1]),u=null!==o&&!a&&o[s+1]===o[s]&&!l&&s!==i,c=null!==o&&s>0&&o[s-1]===o[s]&&(null===n||n[s-1]===n[s])&&s-1!==i;return{groupPosition:positionOf(u,c),day:l&&r?(0,_index3.dayLabel)(r(t),{now:j,labels:R}):null,unread:s===i}})},[e,r,s,a,t,j,R]),k=(0,_react.useCallback)(()=>{T.current?.scrollToOffset({offset:0,animated:!h}),N(0)},[h]),q=e.length>0?t(e[0]):null,D=(0,_react.useRef)(q);(0,_react.useEffect)(()=>{const n=D.current;if(D.current=q,null===n||null===q||n===q)return;const s=e.findIndex(e=>t(e)===n);if(-1===s)return void N(0);const r=e.slice(0,s).reverse();for(const e of r){const t=d?.(e);t&&(0,_announce.announce)(t)}_&&r.some(_)?k():A.current&&N(e=>e+r.length)},[q]);const P=(0,_react.useCallback)(e=>{const t=e.nativeEvent.contentOffset.y>JUMP_AT;t!==A.current&&(A.current=t,M(t),t||N(0)),f?.(e)},[f]),F=(0,_react.useCallback)(()=>{l&&!i&&o?.()},[l,i,o]),V=(0,_react.useCallback)(({item:e,index:t})=>{const s=O[t];return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[s?.day?(0,_jsxRuntime.jsx)(_index3.DateSeparator,{label:s.day}):null,s?.unread?(0,_jsxRuntime.jsx)(_index3.DateSeparator,{label:R.unread,emphasis:!0}):null,n({item:e,index:t,groupPosition:s?.groupPosition??"single"})]})},[O,R.unread,n]),B=(0,_react.useCallback)(e=>t(e),[t]),U=(0,_react.useCallback)(e=>(0,_jsxRuntime.jsx)(_reactNativeKeyboardController.KeyboardChatScrollView,{...e,inverted:!0,offset:w}),[w]),K=I>0?`${R.newMessages(I)}. ${R.jumpToLatest}`:R.jumpToLatest;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[E.root,y],children:[(0,_jsxRuntime.jsx)(_reactNative.FlatList,{keyboardShouldPersistTaps:"handled",maintainVisibleContentPosition:KEEP_POSITION,...S,ref:T,data:e,renderItem:V,keyExtractor:B,inverted:!0,onScroll:P,onEndReached:o?F:void 0,ListHeaderComponent:u?(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:u}):null,ListFooterComponent:i?(0,_jsxRuntime.jsx)(_index5.Spinner,{size:"sm",accessibilityLabel:R.loadingOlder,style:E.older}):null,ListEmptyComponent:c?(0,_jsxRuntime.jsx)(_reactNative.View,{style:E.fill,children:c}):null,renderScrollComponent:m?U:void 0,contentContainerStyle:[E.content,0===e.length?E.grow:null,g],testID:b}),C?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:E.jump,pointerEvents:"box-none",children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:E.jumpDisc,children:(0,_jsxRuntime.jsx)(_index4.IconButton,{icon:"arrow-down",accessibilityLabel:K,variant:"ghost",tone:"neutral",onPress:k,testID:b?`${b}-jump`:void 0})}),I>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:E.count,pointerEvents:"none",importantForAccessibility:"no-hide-descendants",accessibilityElementsHidden:!0,children:(0,_jsxRuntime.jsx)(_index2.Badge,{value:I,max:99,tone:"primary",size:"sm"})}):null]}):null]})}const buildStyles=e=>_reactNative.StyleSheet.create({root:{flex:1},content:{paddingHorizontal:e.space.md,paddingVertical:e.space.sm},grow:{flexGrow:1},fill:{flex:1},older:{paddingVertical:e.space.md},jump:{position:"absolute",right:e.space.md,bottom:e.space.md},jumpDisc:{borderRadius:e.radius.pill,..._corners.smoothCorners,backgroundColor:e.colors.surface,...e.shadow.elevated},count:{position:"absolute",top:-e.space.xs,right:-e.space.xs}});var _default=exports.default=MessageList;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Modal=exports.MODAL_DISMISS_GRACE_MS=void 0;var _react=require("react"),_reactNative=require("react-native"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_squircle=require("../../utils/squircle.js"),_ModalSafeArea=require("../ModalSafeArea/ModalSafeArea.js"),_SquircleFill=require("../SquircleFill/SquircleFill.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_jsxRuntime=require("react/jsx-runtime");const MODAL_DISMISS_GRACE_MS=exports.MODAL_DISMISS_GRACE_MS=300,Modal=exports.Modal=(0,_react.forwardRef)((e,t)=>{const{visible:r,onRequestClose:a,presentation:i="centered",backdropOpacity:s,backdropPressClose:n=!0,animationDuration:o,accessibilityLabel:l,hardwareBackPress:c=!0,children:u,contentStyle:d,backdropStyle:m,restoreFocusRef:_,onDismissed:p,haptic:f,testID:g}=e,v=(0,_index.useTheme)(),b=(0,_usePresenceMotion.usePresenceMotion)(),[S,x]=(0,_ModalSafeArea.useModalInsets)(),h=o??b.duration("normal"),M=_reactNative.Dimensions.get("window").height,y=v.components.modal,A=y?.scaleStartValue??.9,N=(0,_react.useRef)((0,_index.createAnimatedValue)(A)).current,R=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,j=(0,_react.useRef)((0,_index.createAnimatedValue)(M)).current,q=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,C=(0,_react.useRef)(null),V=(0,_react.useRef)(!1),[D,T]=(0,_react.useState)(r),k=(0,_react.useMemo)(()=>buildStyles(v),[v]),w=(0,_react.useMemo)(()=>{const e=v.colors.background.overlay;if("number"!=typeof s)return e;const t=e.match(/^rgba?\(([^)]+)\)$/);if(!t)return e;const[r,a,i]=t[1].split(",").map(e=>e.trim());return`rgba(${r}, ${a}, ${i}, ${s})`},[v.colors.background.overlay,s]),I=(0,_react.useMemo)(()=>q.interpolate({inputRange:[0,1],outputRange:[transparentOf(w),w]}),[q,w]);(0,_react.useEffect)(()=>{r&&T(!0)},[r]),(0,_react.useEffect)(()=>{const e=[];if(r&&D){const t=_reactNative.Animated.timing(q,{toValue:1,duration:b.duration("normal"),useNativeDriver:!1});if(t.start(),e.push(t),b.reduced){R.setValue(0),j.setValue(0),N.setValue(1);const t=_reactNative.Animated.timing(R,{toValue:1,duration:h,useNativeDriver:!0});t.start(),e.push(t)}else if("bottom"===i){R.setValue(1);const t=_reactNative.Animated.spring(j,{toValue:0,damping:v.motion.spring.gentle.damping,stiffness:v.motion.spring.gentle.stiffness,mass:v.motion.spring.gentle.mass,useNativeDriver:!0});t.start(),e.push(t)}else{const t=_reactNative.Animated.parallel([_reactNative.Animated.spring(N,{toValue:1,damping:v.motion.spring.gentle.damping,stiffness:v.motion.spring.gentle.stiffness,mass:v.motion.spring.gentle.mass,useNativeDriver:!0}),_reactNative.Animated.timing(R,{toValue:1,duration:h,useNativeDriver:!0})]);t.start(),e.push(t)}}else if(D){const t=b.duration("fast"),r=_reactNative.Easing.bezier(...v.motion.easing.accelerate),a=_reactNative.Animated.timing(R,{toValue:0,duration:t,easing:r,useNativeDriver:!0}),s=b.reduced?a:"bottom"===i?_reactNative.Animated.timing(j,{toValue:M,duration:t,easing:r,useNativeDriver:!0}):_reactNative.Animated.parallel([_reactNative.Animated.timing(N,{toValue:A,duration:t,easing:r,useNativeDriver:!0}),a]),n=_reactNative.Animated.parallel([s,_reactNative.Animated.timing(q,{toValue:0,duration:b.duration("normal"),useNativeDriver:!1})]);n.start(({finished:e})=>{e&&(j.setValue(M),T(!1))}),e.push(n)}return()=>e.forEach(e=>e.stop())},[r,D,i,h,N,R,q,j,M,v.motion.spring.gentle.damping,v.motion.spring.gentle.stiffness,v.motion.spring.gentle.mass,b,v.motion.easing.accelerate,A]),(0,_react.useEffect)(()=>{if("web"===_reactNative.Platform.OS)return;let e,t;return r?(e=setTimeout(()=>{C.current&&_reactNative.AccessibilityInfo.sendAccessibilityEvent(C.current,"focus")},150),V.current=!0):V.current&&(V.current=!1,_&&_.current&&(t=setTimeout(()=>{const e=_.current;e&&_reactNative.AccessibilityInfo.sendAccessibilityEvent(e,"focus")},h))),()=>{e&&clearTimeout(e),t&&clearTimeout(t)}},[r,h,_]);const E=(0,_react.useRef)(!1);(0,_react.useEffect)(()=>{if(r)return void(E.current=!0);if(!E.current)return;if(E.current=!1,!p)return;const e=setTimeout(p,MODAL_DISMISS_GRACE_MS);return()=>clearTimeout(e)},[r,p]);const P=(0,_react.useCallback)(()=>{if(!n)return;const e=(0,_hapticUtils.resolveHaptic)(f,"selection");e&&(0,_hapticUtils.triggerHaptic)(e),a()},[n,a,f]),z=(0,_react.useCallback)(()=>{c&&a()},[c,a]),L=(0,_SquircleFill.useSquircle)("bottom"!==i&&"fullScreen"!==i,v.radius.xl),F=(0,_react.useMemo)(()=>"fullScreen"===i?[k.fullScreenContent,{backgroundColor:v.colors.background.elevated}]:"bottom"===i?[k.bottomContent,{backgroundColor:v.colors.background.elevated,borderTopLeftRadius:v.radius.xl,borderTopRightRadius:v.radius.xl,..._corners.smoothCorners,paddingTop:v.spacing.lg,paddingHorizontal:v.spacing.lg,paddingBottom:v.spacing.lg+S.bottom},v.shadows.xl]:[k.centeredContent,{backgroundColor:v.colors.background.elevated,borderRadius:L.active&&L.size?(0,_squircle.squircleHostRadius)(L.size.width,L.size.height,v.radius.xl):v.radius.xl,..._corners.smoothCorners,padding:v.spacing.xl},v.shadows.xl],[i,v,k,S.bottom,L.active,L.size]),O=(0,_react.useMemo)(()=>"bottom"===i?k.bottomWrapper:"fullScreen"===i?k.fullScreenWrapper:k.centeredWrapper,[i,k]),$=(0,_react.useMemo)(()=>"bottom"===i?{opacity:R,transform:[{translateY:j}]}:"fullScreen"===i?{opacity:R}:{opacity:R,transform:[{scale:N}]},[i,N,R,j]);return(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:D,transparent:!0,statusBarTranslucent:!0,navigationBarTranslucent:!0,animationType:"none",onRequestClose:z,testID:g,children:(0,_jsxRuntime.jsx)(_reactNative.View,{ref:e=>{C.current=e,"function"==typeof t?t(e):t&&(t.current=e)},style:k.root,accessible:!1,accessibilityViewIsModal:!0,accessibilityRole:"alert",accessibilityLabel:l,children:(0,_jsxRuntime.jsxs)(_ModalSafeArea.ModalSafeArea,{onInsets:x,children:[(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{collapsable:!1,style:[_reactNative.StyleSheet.absoluteFill,O,{backgroundColor:I},m],children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:P,accessibilityRole:"button",accessibilityLabel:"Close modal",disabled:!n}),(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[F,$,d],onLayout:L.onLayout,pointerEvents:"auto",children:[L.active&&L.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:L.size.width,height:L.size.height,radius:v.radius.xl,fill:v.colors.background.elevated}):null,u]})]}),(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})})})});Modal.displayName="Modal";const transparentOf=e=>{const t=e.match(/^rgba?\(([^)]+)\)$/);if(!t)return"transparent";const[r,a,i]=t[1].split(",").map(e=>e.trim());return`rgba(${r}, ${a}, ${i}, 0)`},buildStyles=e=>_reactNative.StyleSheet.create({root:{flex:1},centeredWrapper:{flex:1,alignItems:"center",justifyContent:"center",paddingHorizontal:e.spacing.lg},centeredContent:{maxWidth:"90%",width:"90%"},bottomWrapper:{flex:1,justifyContent:"flex-end"},bottomContent:{width:"100%"},fullScreenWrapper:{flex:1},fullScreenContent:{flex:1}});var _default=exports.default=Modal;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Modal=exports.MODAL_DISMISS_GRACE_MS=void 0;var _react=require("react"),_reactNative=require("react-native"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_index=require("../../theme/index.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_squircle=require("../../utils/squircle.js"),_ModalSafeArea=require("../ModalSafeArea/ModalSafeArea.js"),_SquircleFill=require("../SquircleFill/SquircleFill.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_jsxRuntime=require("react/jsx-runtime");const MODAL_DISMISS_GRACE_MS=exports.MODAL_DISMISS_GRACE_MS=300,SCALE_START_VALUE=.9,Modal=exports.Modal=(0,_react.forwardRef)((e,t)=>{const{visible:r,onRequestClose:a,presentation:i="centered",backdropOpacity:s,backdropPressClose:o=!0,animationDuration:n,accessibilityLabel:l,hardwareBackPress:c=!0,children:u,contentStyle:d,backdropStyle:m,restoreFocusRef:_,onDismissed:f,haptic:p,testID:v}=e,g=(0,_index.useTheme)(),b=(0,_usePresenceMotion.usePresenceMotion)(),[S,h]=(0,_ModalSafeArea.useModalInsets)(),x=n??b.duration("default"),A=_reactNative.Dimensions.get("window").height,M=(0,_react.useRef)((0,_index.createAnimatedValue)(.9)).current,N=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,y=(0,_react.useRef)((0,_index.createAnimatedValue)(A)).current,R=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,j=(0,_react.useRef)(null),q=(0,_react.useRef)(!1),[C,V]=(0,_react.useState)(r),D=(0,_react.useMemo)(()=>buildStyles(g),[g]),T=(0,_react.useMemo)(()=>{const e=g.colors.scrim;return"number"!=typeof s?e:(0,_color.withAlpha)(e,s)??e},[g.colors.scrim,s]),w=(0,_react.useMemo)(()=>R.interpolate({inputRange:[0,1],outputRange:[(0,_color.transparentOf)(T),T]}),[R,T]);(0,_react.useEffect)(()=>{r&&V(!0)},[r]),(0,_react.useEffect)(()=>{const e=[];if(r&&C){const t=_reactNative.Animated.timing(R,{toValue:1,duration:b.duration("default"),useNativeDriver:!1});if(t.start(),e.push(t),b.reduced){N.setValue(0),y.setValue(0),M.setValue(1);const t=_reactNative.Animated.timing(N,{toValue:1,duration:x,useNativeDriver:!0});t.start(),e.push(t)}else if("bottom"===i){N.setValue(1);const t=_reactNative.Animated.spring(y,{toValue:0,damping:g.motion.spring.gentle.damping,stiffness:g.motion.spring.gentle.stiffness,mass:g.motion.spring.gentle.mass,useNativeDriver:!0});t.start(),e.push(t)}else{const t=_reactNative.Animated.parallel([_reactNative.Animated.spring(M,{toValue:1,damping:g.motion.spring.gentle.damping,stiffness:g.motion.spring.gentle.stiffness,mass:g.motion.spring.gentle.mass,useNativeDriver:!0}),_reactNative.Animated.timing(N,{toValue:1,duration:x,useNativeDriver:!0})]);t.start(),e.push(t)}}else if(C){const t=b.duration("fast"),r=_reactNative.Easing.bezier(...g.motion.ease.accelerate),a=_reactNative.Animated.timing(N,{toValue:0,duration:t,easing:r,useNativeDriver:!0}),s=b.reduced?a:"bottom"===i?_reactNative.Animated.timing(y,{toValue:A,duration:t,easing:r,useNativeDriver:!0}):_reactNative.Animated.parallel([_reactNative.Animated.timing(M,{toValue:.9,duration:t,easing:r,useNativeDriver:!0}),a]),o=_reactNative.Animated.parallel([s,_reactNative.Animated.timing(R,{toValue:0,duration:b.duration("default"),useNativeDriver:!1})]);o.start(({finished:e})=>{e&&(y.setValue(A),V(!1))}),e.push(o)}return()=>e.forEach(e=>e.stop())},[r,C,i,x,M,N,R,y,A,g.motion.spring.gentle.damping,g.motion.spring.gentle.stiffness,g.motion.spring.gentle.mass,b,g.motion.ease.accelerate]),(0,_react.useEffect)(()=>{if("web"===_reactNative.Platform.OS)return;let e,t;return r?(e=setTimeout(()=>{j.current&&_reactNative.AccessibilityInfo.sendAccessibilityEvent(j.current,"focus")},150),q.current=!0):q.current&&(q.current=!1,_&&_.current&&(t=setTimeout(()=>{const e=_.current;e&&_reactNative.AccessibilityInfo.sendAccessibilityEvent(e,"focus")},x))),()=>{e&&clearTimeout(e),t&&clearTimeout(t)}},[r,x,_]);const I=(0,_react.useRef)(!1);(0,_react.useEffect)(()=>{if(r)return void(I.current=!0);if(!I.current)return;if(I.current=!1,!f)return;const e=setTimeout(f,MODAL_DISMISS_GRACE_MS);return()=>clearTimeout(e)},[r,f]);const E=(0,_react.useCallback)(()=>{if(!o)return;const e=(0,_hapticUtils.resolveHaptic)(p,"selection");e&&(0,_hapticUtils.triggerHaptic)(e),a()},[o,a,p]),P=(0,_react.useCallback)(()=>{c&&a()},[c,a]),L=(0,_SquircleFill.useSquircle)("bottom"!==i&&"fullScreen"!==i,g.radius.xl),k=(0,_react.useMemo)(()=>"fullScreen"===i?[D.fullScreenContent,{backgroundColor:g.colors.surface}]:"bottom"===i?[D.bottomContent,{backgroundColor:g.colors.surface,borderTopLeftRadius:g.radius.xl,borderTopRightRadius:g.radius.xl,..._corners.smoothCorners,paddingTop:g.space.lg,paddingHorizontal:g.space.lg,paddingBottom:g.space.lg+S.bottom},g.shadow.modal]:[D.centeredContent,{backgroundColor:g.colors.surface,borderRadius:L.active&&L.size?(0,_squircle.squircleHostRadius)(L.size.width,L.size.height,g.radius.xl):g.radius.xl,..._corners.smoothCorners,padding:g.space.xl},g.shadow.modal],[i,g,D,S.bottom,L.active,L.size]),z=(0,_react.useMemo)(()=>"bottom"===i?D.bottomWrapper:"fullScreen"===i?D.fullScreenWrapper:D.centeredWrapper,[i,D]),F=(0,_react.useMemo)(()=>"bottom"===i?{opacity:N,transform:[{translateY:y}]}:"fullScreen"===i?{opacity:N}:{opacity:N,transform:[{scale:M}]},[i,M,N,y]);return(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:C,transparent:!0,statusBarTranslucent:!0,navigationBarTranslucent:!0,animationType:"none",onRequestClose:P,testID:v,children:(0,_jsxRuntime.jsx)(_reactNative.View,{ref:e=>{j.current=e,"function"==typeof t?t(e):t&&(t.current=e)},style:D.root,accessible:!1,accessibilityViewIsModal:!0,accessibilityRole:"alert",accessibilityLabel:l,children:(0,_jsxRuntime.jsxs)(_ModalSafeArea.ModalSafeArea,{onInsets:h,children:[(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{collapsable:!1,style:[_reactNative.StyleSheet.absoluteFill,z,{backgroundColor:w},m],children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:E,accessibilityRole:"button",accessibilityLabel:"Close modal",disabled:!o}),(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[k,F,d],onLayout:L.onLayout,pointerEvents:"auto",children:[L.active&&L.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:L.size.width,height:L.size.height,radius:g.radius.xl,fill:g.colors.surface}):null,u]})]}),(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})})})});Modal.displayName="Modal";const buildStyles=e=>_reactNative.StyleSheet.create({root:{flex:1},centeredWrapper:{flex:1,alignItems:"center",justifyContent:"center",paddingHorizontal:e.space.lg},centeredContent:{maxWidth:"90%",width:"90%"},bottomWrapper:{flex:1,justifyContent:"flex-end"},bottomContent:{width:"100%"},fullScreenWrapper:{flex:1},fullScreenContent:{flex:1}});var _default=exports.default=Modal;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useNotationInk=exports.sym=exports.parseNotation=exports.default=exports.NotationInkContext=exports.Notation=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_jsxRuntime=require("react/jsx-runtime");const SUBSCRIPTED=/(?<![A-Za-z0-9_])([A-Za-z])_([A-Za-z0-9]+)(?![A-Za-z0-9_])/g,parseNotation=t=>{const e=String(t??""),o=[];let n=0;for(const t of e.matchAll(SUBSCRIPTED)){const r=t.index??0;r>n&&o.push({text:e.slice(n,r)}),o.push({text:t[1],sub:t[2]}),n=r+t[0].length}return n<e.length&&o.push({text:e.slice(n)}),o};exports.parseNotation=parseNotation;const SUB_DROP=.4,NotationInkContext=exports.NotationInkContext=(0,_react.createContext)(null),useNotationInk=(t,e,o)=>{const n=_reactNative.StyleSheet.flatten(t),r=n?.fontSize??e,s=n?.color??o;return(0,_react.useMemo)(()=>({fontSize:r,color:s}),[r,s])};exports.useNotationInk=useNotationInk;const Subscript=({children:t,color:e})=>{const o=(0,_index.useTheme)(),n=(0,_react.useContext)(NotationInkContext),r=Math.round(.75*(n?.fontSize??o.typography.fontSize.sm));return(0,_jsxRuntime.jsx)(_reactNative.View,{style:{transform:[{translateY:Math.round(.4*r)}]},children:(0,_jsxRuntime.jsx)(_reactNative.Text,{maxFontSizeMultiplier:o.maxFontSizeMultiplier,style:[styles.sub,{fontSize:r,lineHeight:r,color:e??n?.color??o.colors.text.primary,...(0,_index.fontFor)(o,"normal")}],children:t})})},renderNotation=(t,e)=>parseNotation(t).map((t,o)=>t.sub?(0,_jsxRuntime.jsxs)(_react.Fragment,{children:[t.text,(0,_jsxRuntime.jsx)(Subscript,{color:e,children:t.sub})]},o):(0,_jsxRuntime.jsx)(_react.Fragment,{children:t.text},o)),Notation=({text:t,base:e,sub:o,desc:n,color:r,testID:s})=>null!=e?(0,_jsxRuntime.jsxs)(_reactNative.Text,{testID:s,children:[e,o?(0,_jsxRuntime.jsx)(Subscript,{color:r,children:o}):null,n?` ${n}`:null]}):(0,_jsxRuntime.jsx)(_reactNative.Text,{testID:s,children:"string"==typeof t||null==t?renderNotation(t??"",r):t.map((t,e)=>"string"==typeof t?(0,_jsxRuntime.jsx)(_react.Fragment,{children:renderNotation(t,r)},e):(0,_jsxRuntime.jsx)(_react.Fragment,{children:t.verbatim},e))});exports.Notation=Notation;const sym=(t,e,o,n)=>(0,_jsxRuntime.jsx)(Notation,{base:t,sub:e,desc:o,color:n});exports.sym=sym;const styles=_reactNative.StyleSheet.create({sub:{includeFontPadding:!1}});var _default=exports.default=Notation;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useNotationInk=exports.sym=exports.parseNotation=exports.default=exports.NotationInkContext=exports.Notation=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_jsxRuntime=require("react/jsx-runtime");const SUBSCRIPTED=/(?<![A-Za-z0-9_])([A-Za-z])_([A-Za-z0-9]+)(?![A-Za-z0-9_])/g,parseNotation=t=>{const e=String(t??""),n=[];let o=0;for(const t of e.matchAll(SUBSCRIPTED)){const r=t.index??0;r>o&&n.push({text:e.slice(o,r)}),n.push({text:t[1],sub:t[2]}),o=r+t[0].length}return o<e.length&&n.push({text:e.slice(o)}),n};exports.parseNotation=parseNotation;const SUB_DROP=.4,NotationInkContext=exports.NotationInkContext=(0,_react.createContext)(null),useNotationInk=(t,e,n)=>{const o=_reactNative.StyleSheet.flatten(t),r=o?.fontSize??e,s=o?.color??n;return(0,_react.useMemo)(()=>({fontSize:r,color:s}),[r,s])};exports.useNotationInk=useNotationInk;const Subscript=({children:t,color:e})=>{const n=(0,_index.useTheme)(),o=(0,_react.useContext)(NotationInkContext),r=Math.round(.75*(o?.fontSize??n.text.sm.size));return(0,_jsxRuntime.jsx)(_reactNative.View,{style:{transform:[{translateY:Math.round(.4*r)}]},children:(0,_jsxRuntime.jsx)(_reactNative.Text,{maxFontSizeMultiplier:n.settings.maxFontSizeMultiplier,style:[styles.sub,{fontSize:r,lineHeight:r,color:e??o?.color??n.colors["text-body"],...(0,_index.fontFor)(n,"normal")}],children:t})})},renderNotation=(t,e)=>parseNotation(t).map((t,n)=>t.sub?(0,_jsxRuntime.jsxs)(_react.Fragment,{children:[t.text,(0,_jsxRuntime.jsx)(Subscript,{color:e,children:t.sub})]},n):(0,_jsxRuntime.jsx)(_react.Fragment,{children:t.text},n)),Notation=({text:t,base:e,sub:n,desc:o,color:r,testID:s})=>null!=e?(0,_jsxRuntime.jsxs)(_reactNative.Text,{testID:s,children:[e,n?(0,_jsxRuntime.jsx)(Subscript,{color:r,children:n}):null,o?` ${o}`:null]}):(0,_jsxRuntime.jsx)(_reactNative.Text,{testID:s,children:"string"==typeof t||null==t?renderNotation(t??"",r):t.map((t,e)=>"string"==typeof t?(0,_jsxRuntime.jsx)(_react.Fragment,{children:renderNotation(t,r)},e):(0,_jsxRuntime.jsx)(_react.Fragment,{children:t.verbatim},e))});exports.Notation=Notation;const sym=(t,e,n,o)=>(0,_jsxRuntime.jsx)(Notation,{base:t,sub:e,desc:n,color:o});exports.sym=sym;const styles=_reactNative.StyleSheet.create({sub:{includeFontPadding:!1}});var _default=exports.default=Notation;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.NumberInput=void 0;var cache,_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"),_FieldBase=require("../FieldBase/FieldBase.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var i,r,a=Object.defineProperty,n={__proto__:null,default:e};if(Object(e)!==e)return n;if(cache||"function"!=typeof WeakMap||(cache=new WeakMap),cache){if(cache.has(e))return cache.get(e);cache.set(e,n)}for(r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((i=a&&Object.getOwnPropertyDescriptor(e,r))&&(i.get||i.set)?a(n,r,i):n[r]=e[r]);return n}const DEFAULT_LONG_PRESS_DELAY=500,DEFAULT_LONG_PRESS_INTERVAL=80,roundToPrecision=(e,t)=>{if(!Number.isFinite(e))return 0;if(t<=0)return Math.round(e);const i=10**t;return Math.round(e*i)/i},clamp=(e,t,i)=>e<t?t:e>i?i:e,formatValue=(e,t,i)=>Number.isFinite(e)?t&&i>0?e.toFixed(i):String(Math.trunc(e)):"",sanitizeTyped=(e,t)=>{if(!e)return"";let i=e.replace(/[^0-9.-]/g,"");if(i=i.replace(/(?!^)-/g,""),t){const e=i.indexOf(".");-1!==e&&(i=i.slice(0,e+1)+i.slice(e+1).replace(/\./g,""))}else i=i.replace(/\./g,"");return i},NumberInput=exports.NumberInput=(0,_react.forwardRef)((e,t)=>{const{value:i,defaultValue:r,onChange:a,min:n=Number.NEGATIVE_INFINITY,max:s=Number.POSITIVE_INFINITY,step:l=1,allowDecimal:c=!1,precision:u=0,label:o,help:d,helperText:b,error:_,disabled:p=!1,size:m="md",variant:x="inline",unit:f,haptic:h,accessibilityLabel:y,style:g,containerStyle:j,inputStyle:N,buttonStyle:v,unitStyle:I,labelStyle:F,textInputProps:S,testID:R}=e,[T,C]=(0,_index.useControllableState)({value:i,defaultValue:r??e.min??0,onChange:a}),P=(0,_index2.useTheme)(),w=(0,_index2.resolveFieldSize)(P,m),k=(0,_FieldBase.resolveFieldTextStyle)(P,{disabled:p}),V=(0,_react.useMemo)(()=>buildStyles(P),[P]),z=P.components.numberInput?.longPressDelayMs??500,L=P.components.numberInput?.longPressIntervalMs??80,D=(0,_react.useRef)(null),[B,E]=(0,_react.useState)(formatValue(T,c,u)),[O,M]=(0,_react.useState)(!1),[q,A]=(0,_react.useState)(!1),W=(0,_react.useCallback)(()=>{p||D.current?.focus()},[p]),H=(0,_react.useRef)(null),G=(0,_react.useRef)(null),Y=(0,_react.useCallback)(()=>{null!==H.current&&(clearTimeout(H.current),H.current=null),null!==G.current&&(clearInterval(G.current),G.current=null)},[]);(0,_react.useEffect)(()=>Y,[Y]),(0,_react.useEffect)(()=>{O||E(formatValue(T,c,u))},[T,c,u,O]);const U=T<=n,$=T>=s,J=!p,K=(0,_react.useCallback)(e=>{const t=roundToPrecision(e,c?u:0),i=clamp(t,n,s);i!==T&&C(i)},[c,s,n,C,u,T]),Q=(0,_react.useCallback)(()=>{if(!J||U)return;const e=(0,_index3.resolveHaptic)(h,"selection");e&&(0,_index3.triggerHaptic)(e),K(T-l)},[U,J,h,K,l,T]),X=(0,_react.useCallback)(()=>{if(!J||$)return;const e=(0,_index3.resolveHaptic)(h,"selection");e&&(0,_index3.triggerHaptic)(e),K(T+l)},[$,J,h,K,l,T]);_react.default.useImperativeHandle(t,()=>({focus:()=>D.current?.focus(),blur:()=>D.current?.blur(),clear:()=>{E(""),Number.isFinite(n)&&n>0?C(n):C(0<n?n:0>s?s:0)}}),[s,n,C]);const Z=(0,_react.useCallback)(e=>{J&&(Y(),H.current=setTimeout(()=>{G.current=setInterval(()=>{"inc"===e?X():Q()},L)},z))},[Y,Q,X,J,z,L]),ee=(0,_react.useCallback)(e=>{const t=sanitizeTyped(e,c);E(t);const i=Number(t);""!==t&&"-"!==t&&"."!==t&&Number.isFinite(i)&&i>=n&&i<=s&&i!==T&&C(roundToPrecision(i,c?u:0))},[c,s,n,C,u,T]),te=(0,_react.useCallback)(()=>{M(!1),A(!1);const e=Number(B);if(""===B||!Number.isFinite(e))return void E(formatValue(T,c,u));const t=roundToPrecision(e,c?u:0),i=clamp(t,n,s);i!==T&&C(i),E(formatValue(i,c,u))},[c,B,s,n,C,u,T]),ie=(0,_react.useCallback)(()=>{M(!0),A(!0)},[]),re=U||p?P.colors.text.disabled:P.colors.text.primary,ae=$||p?P.colors.text.disabled:P.colors.text.primary,ne=w.icon+8,renderStepper=(e,t,i,r,a,n)=>(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:t,onLongPress:()=>Z(e),onPressOut:Y,delayLongPress:z,disabled:i,accessibilityRole:"button",accessibilityLabel:r,accessibilityState:{disabled:i},"aria-disabled":i,style:({pressed:e})=>[{width:ne,height:ne,alignItems:"center",justifyContent:"center",borderRadius:P.radius.pill,..._corners.smoothCorners},e&&!i?{backgroundColor:P.colors.surface.pressed}:null,v],testID:`${R??"numberinput"}-${"inc"===e?"plus":"minus"}`,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{fontSize:w.icon,color:a,fontWeight:P.typography.fontWeight.semibold,lineHeight:w.icon+2},children:n})}),se=y??(0,_FieldBase.fieldTextAsString)(o)??"Number input",le=!0===_||(0,_FieldBase.hasFieldText)(_),ce=(0,_jsxRuntime.jsx)(_FieldBase.FieldBase,{size:m,disabled:p,error:le,filled:!0,focused:q,onPress:W,pressFeedback:!1,leading:renderStepper("dec",Q,U||p,"Decrease",re,"−"),trailing:renderStepper("inc",X,$||p,"Increase",ae,"+"),children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:V.inputRow,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:D,value:B,onChangeText:ee,onFocus:ie,onBlur:te,editable:!p,keyboardType:c?"decimal-pad":"number-pad",selectTextOnFocus:!0,accessibilityRole:"adjustable",accessibilityLabel:se,accessibilityValue:{now:Number.isFinite(T)?T:0},accessibilityState:{disabled:p},"aria-disabled":p,accessibilityActions:[{name:"increment",label:"Increase"},{name:"decrement",label:"Decrease"}],onAccessibilityAction:e=>{"increment"===e.nativeEvent.actionName&&X(),"decrement"===e.nativeEvent.actionName&&Q()},style:[V.input,{fontSize:w.text,color:k.color,...k.weightStyle},N],...S}),f?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.unit,{fontSize:w.text,color:k.placeholderColor},I],children:f}):null]})}),ue=(0,_FieldBase.hasFieldText)(o)?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:m,help:d,style:F,children:o}):null,oe=(0,_jsxRuntime.jsx)(_FieldBase.FieldMessage,{size:m,error:le,text:le?_:b});return"horizontal"===x?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[V.horizontalContainer,g,j],testID:R,accessibilityState:{disabled:p},"aria-disabled":p,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:V.horizontalLabelWrap,children:ue}),(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[ce,oe]})]}):(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[g,j],testID:R,accessibilityState:{disabled:p},"aria-disabled":p,children:[ue,ce,oe]})});NumberInput.displayName="NumberInput";const buildStyles=e=>_reactNative.StyleSheet.create({inputRow:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center"},input:{flex:1,textAlign:"center",padding:e.spacing.none,margin:e.spacing.none,includeFontPadding:!1},unit:{marginLeft:e.spacing.xs},label:{marginBottom:e.spacing.xs},helper:{marginTop:e.spacing.xs},horizontalContainer:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},horizontalLabelWrap:{flexShrink:1,paddingRight:e.spacing.md}});var _default=exports.default=NumberInput;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.NumberInput=void 0;var cache,_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"),_FieldBase=require("../FieldBase/FieldBase.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var i,r,a=Object.defineProperty,n={__proto__:null,default:e};if(Object(e)!==e)return n;if(cache||"function"!=typeof WeakMap||(cache=new WeakMap),cache){if(cache.has(e))return cache.get(e);cache.set(e,n)}for(r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((i=a&&Object.getOwnPropertyDescriptor(e,r))&&(i.get||i.set)?a(n,r,i):n[r]=e[r]);return n}const DEFAULT_LONG_PRESS_DELAY=500,DEFAULT_LONG_PRESS_INTERVAL=80,roundToPrecision=(e,t)=>{if(!Number.isFinite(e))return 0;if(t<=0)return Math.round(e);const i=10**t;return Math.round(e*i)/i},clamp=(e,t,i)=>e<t?t:e>i?i:e,formatValue=(e,t,i)=>Number.isFinite(e)?t&&i>0?e.toFixed(i):String(Math.trunc(e)):"",sanitizeTyped=(e,t)=>{if(!e)return"";let i=e.replace(/[^0-9.-]/g,"");if(i=i.replace(/(?!^)-/g,""),t){const e=i.indexOf(".");-1!==e&&(i=i.slice(0,e+1)+i.slice(e+1).replace(/\./g,""))}else i=i.replace(/\./g,"");return i},NumberInput=exports.NumberInput=(0,_react.forwardRef)((e,t)=>{const{value:i,defaultValue:r,onChange:a,min:n=Number.NEGATIVE_INFINITY,max:s=Number.POSITIVE_INFINITY,step:l=1,allowDecimal:c=!1,precision:u=0,label:o,help:d,helperText:b,error:_,disabled:p=!1,size:m="md",variant:x="inline",unit:f,haptic:h,accessibilityLabel:y,style:g,containerStyle:j,inputStyle:N,buttonStyle:v,unitStyle:F,labelStyle:S,textInputProps:I,testID:R}=e,[T,C]=(0,_index.useControllableState)({value:i,defaultValue:r??e.min??0,onChange:a}),w=(0,_index2.useTheme)(),P=(0,_index2.resolveFieldSize)(w,m),k=(0,_FieldBase.resolveFieldTextStyle)(w,{disabled:p}),V=(0,_react.useMemo)(()=>buildStyles(w),[w]),z=(0,_react.useRef)(null),[L,B]=(0,_react.useState)(formatValue(T,c,u)),[D,E]=(0,_react.useState)(!1),[O,q]=(0,_react.useState)(!1),A=(0,_react.useCallback)(()=>{p||z.current?.focus()},[p]),M=(0,_react.useRef)(null),W=(0,_react.useRef)(null),H=(0,_react.useCallback)(()=>{null!==M.current&&(clearTimeout(M.current),M.current=null),null!==W.current&&(clearInterval(W.current),W.current=null)},[]);(0,_react.useEffect)(()=>H,[H]),(0,_react.useEffect)(()=>{D||B(formatValue(T,c,u))},[T,c,u,D]);const G=T<=n,Y=T>=s,U=!p,$=(0,_react.useCallback)(e=>{const t=roundToPrecision(e,c?u:0),i=clamp(t,n,s);i!==T&&C(i)},[c,s,n,C,u,T]),J=(0,_react.useCallback)(()=>{if(!U||G)return;const e=(0,_index3.resolveHaptic)(h,"selection");e&&(0,_index3.triggerHaptic)(e),$(T-l)},[G,U,h,$,l,T]),K=(0,_react.useCallback)(()=>{if(!U||Y)return;const e=(0,_index3.resolveHaptic)(h,"selection");e&&(0,_index3.triggerHaptic)(e),$(T+l)},[Y,U,h,$,l,T]);_react.default.useImperativeHandle(t,()=>({focus:()=>z.current?.focus(),blur:()=>z.current?.blur(),clear:()=>{B(""),Number.isFinite(n)&&n>0?C(n):C(0<n?n:0>s?s:0)}}),[s,n,C]);const Q=(0,_react.useCallback)(e=>{U&&(H(),M.current=setTimeout(()=>{W.current=setInterval(()=>{"inc"===e?K():J()},80)},500))},[H,J,K,U]),X=(0,_react.useCallback)(e=>{const t=sanitizeTyped(e,c);B(t);const i=Number(t);""!==t&&"-"!==t&&"."!==t&&Number.isFinite(i)&&i>=n&&i<=s&&i!==T&&C(roundToPrecision(i,c?u:0))},[c,s,n,C,u,T]),Z=(0,_react.useCallback)(()=>{E(!1),q(!1);const e=Number(L);if(""===L||!Number.isFinite(e))return void B(formatValue(T,c,u));const t=roundToPrecision(e,c?u:0),i=clamp(t,n,s);i!==T&&C(i),B(formatValue(i,c,u))},[c,L,s,n,C,u,T]),ee=(0,_react.useCallback)(()=>{E(!0),q(!0)},[]),te=G||p?w.colors["text-disabled"]:w.colors["text-body"],ie=Y||p?w.colors["text-disabled"]:w.colors["text-body"],re=P.icon+8,renderStepper=(e,t,i,r,a,n)=>(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:t,onLongPress:()=>Q(e),onPressOut:H,delayLongPress:500,disabled:i,accessibilityRole:"button",accessibilityLabel:r,accessibilityState:{disabled:i},"aria-disabled":i,style:({pressed:e})=>[{width:re,height:re,alignItems:"center",justifyContent:"center",borderRadius:w.radius.pill,..._corners.smoothCorners},e&&!i?{backgroundColor:w.colors["surface-pressed"]}:null,v],testID:`${R??"numberinput"}-${"inc"===e?"plus":"minus"}`,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{fontSize:P.icon,color:a,fontWeight:w.weight.semibold,lineHeight:P.icon+2},children:n})}),ae=y??(0,_FieldBase.fieldTextAsString)(o)??"Number input",ne=!0===_||(0,_FieldBase.hasFieldText)(_),se=(0,_jsxRuntime.jsx)(_FieldBase.FieldBase,{size:m,disabled:p,error:ne,filled:!0,focused:O,onPress:A,pressFeedback:!1,leading:renderStepper("dec",J,G||p,"Decrease",te,"−"),trailing:renderStepper("inc",K,Y||p,"Increase",ie,"+"),children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:V.inputRow,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:z,value:L,onChangeText:X,onFocus:ee,onBlur:Z,editable:!p,keyboardType:c?"decimal-pad":"number-pad",selectTextOnFocus:!0,accessibilityRole:"adjustable",accessibilityLabel:ae,accessibilityValue:{now:Number.isFinite(T)?T:0},accessibilityState:{disabled:p},"aria-disabled":p,accessibilityActions:[{name:"increment",label:"Increase"},{name:"decrement",label:"Decrease"}],onAccessibilityAction:e=>{"increment"===e.nativeEvent.actionName&&K(),"decrement"===e.nativeEvent.actionName&&J()},style:[V.input,{fontSize:P.text,color:k.color,...k.weightStyle},N],...I}),f?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.unit,{fontSize:P.text,color:k.placeholderColor},F],children:f}):null]})}),le=(0,_FieldBase.hasFieldText)(o)?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:m,help:d,style:S,children:o}):null,ce=(0,_jsxRuntime.jsx)(_FieldBase.FieldMessage,{size:m,error:ne,text:ne?_:b});return"horizontal"===x?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[V.horizontalContainer,g,j],testID:R,accessibilityState:{disabled:p},"aria-disabled":p,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:V.horizontalLabelWrap,children:le}),(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[se,ce]})]}):(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[g,j],testID:R,accessibilityState:{disabled:p},"aria-disabled":p,children:[le,se,ce]})});NumberInput.displayName="NumberInput";const buildStyles=e=>_reactNative.StyleSheet.create({inputRow:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center"},input:{flex:1,textAlign:"center",padding:e.space.none,margin:e.space.none,includeFontPadding:!1},unit:{marginLeft:e.space.xs},label:{marginBottom:e.space.xs},helper:{marginTop:e.space.xs},horizontalContainer:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},horizontalLabelWrap:{flexShrink:1,paddingRight:e.space.md}});var _default=exports.default=NumberInput;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.OTPInput=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"),_FieldBase=require("../FieldBase/FieldBase.js"),_jsxRuntime=require("react/jsx-runtime");const sanitizeChar=(e,t)=>e?"number-pad"===t?e.replace(/\D/g,""):e:"",OTPInput=exports.OTPInput=(0,_react.forwardRef)((e,t)=>{const{value:i,defaultValue:r,onChange:n,onComplete:a,length:s=6,keyboardType:o="number-pad",autoFocus:l=!1,autoFocusDelay:c=0,disabled:u=!1,error:d,size:_="md",secure:m=!1,haptic:p,onFocus:g,accessibilityLabel:x,style:f,cellStyle:h,textStyle:v,testID:b}=e,[y,j]=(0,_index.useControllableState)({value:i,defaultValue:r??"",onChange:n}),N=(0,_index2.useTheme)(),R=(0,_react.useMemo)(()=>buildStyles(N),[N]),C=(0,_index2.resolveOtpInputSize)(N,_),T=(0,_react.useRef)([]),[F,k]=(0,_react.useState)(-1),V=(0,_react.useRef)(null),w=(0,_react.useRef)((0,_index2.createAnimatedValue)(0)).current,E=(0,_react.useRef)(new Map),I=(0,_react.useMemo)(()=>{const e=E.current,t=[];for(let i=0;i<s;i+=1){let r=e.get(i);r||(r=new _reactNative.Animated.Value(0),e.set(i,r)),t.push(r)}for(const t of Array.from(e.keys()))t>=s&&e.delete(t);return t},[s]),A=(0,_react.useRef)(-1),S=N.components.otpInput?.shakeOnError??!1,O=(0,_index.useReducedMotion)(),z=!0===d||(0,_FieldBase.hasFieldText)(d);(0,_react.useEffect)(()=>{let e;return null===V.current||!z||V.current||(p&&(0,_index3.triggerHaptic)("notificationError"),S&&!O&&((0,_index2.setNativeValue)(w,0),e=_reactNative.Animated.sequence([_reactNative.Animated.timing(w,{toValue:1,duration:N.motion.duration.instant,easing:_reactNative.Easing.linear,useNativeDriver:!0}),_reactNative.Animated.timing(w,{toValue:-1,duration:N.motion.duration.instant,easing:_reactNative.Easing.linear,useNativeDriver:!0}),_reactNative.Animated.timing(w,{toValue:1,duration:N.motion.duration.instant,easing:_reactNative.Easing.linear,useNativeDriver:!0}),_reactNative.Animated.timing(w,{toValue:0,duration:N.motion.duration.instant,easing:_reactNative.Easing.linear,useNativeDriver:!0})]),e.start())),V.current=z,()=>e?.stop()},[z,w,S,p,O,N.motion.duration.instant]),(0,_react.useEffect)(()=>{const e=A.current;if(A.current=F,e===F)return;if(-1===e&&-1===F)return;const t=[];return I.forEach((i,r)=>{const n=r===F?1:0;if(r!==F&&r!==e)return;const a=_reactNative.Animated.timing(i,{toValue:n,duration:N.motion.duration.fast,easing:_reactNative.Easing.bezier(...N.motion.easing.standard),useNativeDriver:!0});a.start(),t.push(a)}),()=>t.forEach(e=>e.stop())},[F,I,N]);const B=(0,_react.useCallback)(e=>{const t=T.current[e];t&&t.focus()},[]);(0,_react.useImperativeHandle)(t,()=>({focus:()=>B(0),blur:()=>{const e=T.current[F>=0?F:0];e?.blur()},clear:()=>{j(""),B(0)}}),[B,F,j]),(0,_react.useEffect)(()=>{if(l&&!u){const e=setTimeout(()=>B(0),c);return()=>clearTimeout(e)}},[l,c,u,B]);const D=(0,_react.useMemo)(()=>{const e=new Array(s).fill("");for(let t=0;t<Math.min(y.length,s);t+=1)e[t]=y[t]??"";return e},[y,s]),P=(0,_react.useCallback)(e=>{const t=e.slice(0,s);t!==y&&(j(t),t.length===s&&a&&a(t))},[s,j,a,y]),q=(0,_react.useCallback)((e,t)=>{const i=t.replace(/\u200B/g,""),r=sanitizeChar(i,o);if(!r){const t=D.slice(),i=(t[e]??"").length>0;if(t[e]="",P(t.join("").slice(0,s)),!i&&e>0){const t=D.slice();t[e-1]="",P(t.join("")),B(e-1)}return}const n=D[e]??"",a=n&&r.length>s&&r.startsWith(n)?r.slice(n.length):r;if(a.length>=s){const t=a.slice(0,s),i=y.length;return P(t),t.length!==i&&p&&(0,_index3.triggerHaptic)(p),void T.current[e]?.blur()}const l=D.slice();let c=e;for(let e=0;e<r.length&&c<s;e+=1)l[c]=r[e]??"",c+=1;const u=l.join("").slice(0,s),d=y.length;P(u),u.length!==d&&p&&(0,_index3.triggerHaptic)(p);const _=Math.min(c,s-1);c>=s?T.current[e]?.blur():B(_)},[D,B,o,s,p,P,y]),M=(0,_react.useCallback)((e,t)=>{if("Backspace"!==t.nativeEvent.key)return;if(0===(D[e]??"").length){if(e>0){const t=D.slice();t[e-1]="",P(t.join("")),B(e-1)}}else{const t=D.slice();t[e]="",P(t.join(""))}},[D,B,P]),H=(0,_react.useCallback)((e,t)=>{k(e),g?.(t)},[g]),W=(0,_react.useCallback)(()=>{k(-1)},[]),L=(0,_react.useCallback)(()=>{if(u)return;const e=D.indexOf("");B(-1===e?s-1:e)},[D,u,B,s]),$=x??`Enter ${s}-digit code`,G=w.interpolate({inputRange:[-1,1],outputRange:[-6,6]});return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:f,accessible:!0,accessibilityRole:"none",accessibilityLabel:$,accessibilityValue:{text:i},accessibilityState:{disabled:u},"aria-disabled":u,testID:b,children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:L,disabled:u,accessible:!1,children:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[R.row,{columnGap:C.gap,transform:[{translateX:G}]}],children:D.map((e,t)=>{const i=F===t,r=e.length>0,n=z?N.colors.border.error:N.colors.border.focus,a=I[t];if(!a)return null;const l=m&&r?"●":e;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:R.cellWrapper,children:[(0,_jsxRuntime.jsxs)(_FieldBase.FieldBase,{size:_,width:C.cell,height:C.cell,borderRadius:C.radius,borderWidth:1.5,focused:i,error:z,filled:r,disabled:u,paddingHorizontal:N.spacing.none,paddingVertical:N.spacing.none,gap:N.spacing.none,style:h,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:e=>{T.current[t]=e},value:(m&&r?"":e)||"​",onChangeText:e=>q(t,e),onKeyPress:e=>M(t,e),onFocus:e=>H(t,e),onBlur:W,keyboardType:o,editable:!u,selectTextOnFocus:!0,caretHidden:r,maxLength:s+1,textContentType:"oneTimeCode",autoComplete:0===t?"sms-otp":"off",importantForAutofill:0===t?"yes":"no",style:[R.input,{fontSize:C.text,color:N.colors.text.primary,...(0,_index2.fontFor)(N,"semibold")},v]}),m&&r?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:R.maskOverlay,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[{fontSize:C.text,color:N.colors.text.primary,...(0,_index2.fontFor)(N,"semibold")},v],children:l})}):null]}),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[R.underline,{backgroundColor:n,opacity:a}]})]},`otp-cell-${t}`)})})}),(0,_jsxRuntime.jsx)(_FieldBase.FieldMessage,{size:_,error:!0,text:d})]})});OTPInput.displayName="OTPInput";const buildStyles=e=>_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center"},cellWrapper:{alignItems:"center"},input:{width:"100%",height:"100%",textAlign:"center",padding:e.spacing.none},maskOverlay:{..._reactNative.StyleSheet.absoluteFill,alignItems:"center",justifyContent:"center"},underline:{marginTop:e.spacing.xs,height:2,width:"60%",borderRadius:e.radius.pill,..._corners.smoothCorners}});var _default=exports.default=OTPInput;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.OTPInput=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"),_FieldBase=require("../FieldBase/FieldBase.js"),_jsxRuntime=require("react/jsx-runtime");const sanitizeChar=(e,t)=>e?"number-pad"===t?e.replace(/\D/g,""):e:"",OTPInput=exports.OTPInput=(0,_react.forwardRef)((e,t)=>{const{value:i,defaultValue:r,onChange:n,onComplete:a,length:s=6,keyboardType:o="number-pad",autoFocus:l=!1,autoFocusDelay:c=0,disabled:u=!1,error:d,size:_="md",secure:m=!1,haptic:p,onFocus:g,accessibilityLabel:x,style:f,cellStyle:h,textStyle:v,testID:b}=e,[y,j]=(0,_index.useControllableState)({value:i,defaultValue:r??"",onChange:n}),N=(0,_index2.useTheme)(),R=(0,_react.useMemo)(()=>buildStyles(N),[N]),C=(0,_index2.resolveOtpInputSize)(N,_),T=(0,_react.useRef)([]),[F,k]=(0,_react.useState)(-1),V=(0,_react.useRef)(null),w=(0,_react.useRef)((0,_index2.createAnimatedValue)(0)).current,E=(0,_react.useRef)(new Map),A=(0,_react.useMemo)(()=>{const e=E.current,t=[];for(let i=0;i<s;i+=1){let r=e.get(i);r||(r=new _reactNative.Animated.Value(0),e.set(i,r)),t.push(r)}for(const t of Array.from(e.keys()))t>=s&&e.delete(t);return t},[s]),I=(0,_react.useRef)(-1),S=N.settings.components["otp-input"]?.shakeOnError??!1,O=(0,_index.useReducedMotion)(),z=!0===d||(0,_FieldBase.hasFieldText)(d);(0,_react.useEffect)(()=>{let e;return null===V.current||!z||V.current||(p&&(0,_index3.triggerHaptic)("notificationError"),S&&!O&&((0,_index2.setNativeValue)(w,0),e=_reactNative.Animated.sequence([_reactNative.Animated.timing(w,{toValue:1,duration:N.motion.duration.instant,easing:_reactNative.Easing.linear,useNativeDriver:!0}),_reactNative.Animated.timing(w,{toValue:-1,duration:N.motion.duration.instant,easing:_reactNative.Easing.linear,useNativeDriver:!0}),_reactNative.Animated.timing(w,{toValue:1,duration:N.motion.duration.instant,easing:_reactNative.Easing.linear,useNativeDriver:!0}),_reactNative.Animated.timing(w,{toValue:0,duration:N.motion.duration.instant,easing:_reactNative.Easing.linear,useNativeDriver:!0})]),e.start())),V.current=z,()=>e?.stop()},[z,w,S,p,O,N.motion.duration.instant]),(0,_react.useEffect)(()=>{const e=I.current;if(I.current=F,e===F)return;if(-1===e&&-1===F)return;const t=[];return A.forEach((i,r)=>{const n=r===F?1:0;if(r!==F&&r!==e)return;const a=_reactNative.Animated.timing(i,{toValue:n,duration:N.motion.duration.fast,easing:_reactNative.Easing.bezier(...N.motion.ease["in-out"]),useNativeDriver:!0});a.start(),t.push(a)}),()=>t.forEach(e=>e.stop())},[F,A,N]);const B=(0,_react.useCallback)(e=>{const t=T.current[e];t&&t.focus()},[]);(0,_react.useImperativeHandle)(t,()=>({focus:()=>B(0),blur:()=>{const e=T.current[F>=0?F:0];e?.blur()},clear:()=>{j(""),B(0)}}),[B,F,j]),(0,_react.useEffect)(()=>{if(l&&!u){const e=setTimeout(()=>B(0),c);return()=>clearTimeout(e)}},[l,c,u,B]);const D=(0,_react.useMemo)(()=>{const e=new Array(s).fill("");for(let t=0;t<Math.min(y.length,s);t+=1)e[t]=y[t]??"";return e},[y,s]),P=(0,_react.useCallback)(e=>{const t=e.slice(0,s);t!==y&&(j(t),t.length===s&&a&&a(t))},[s,j,a,y]),q=(0,_react.useCallback)((e,t)=>{const i=t.replace(/\u200B/g,""),r=sanitizeChar(i,o);if(!r){const t=D.slice(),i=(t[e]??"").length>0;if(t[e]="",P(t.join("").slice(0,s)),!i&&e>0){const t=D.slice();t[e-1]="",P(t.join("")),B(e-1)}return}const n=D[e]??"",a=n&&r.length>s&&r.startsWith(n)?r.slice(n.length):r;if(a.length>=s){const t=a.slice(0,s),i=y.length;return P(t),t.length!==i&&p&&(0,_index3.triggerHaptic)(p),void T.current[e]?.blur()}const l=D.slice();let c=e;for(let e=0;e<r.length&&c<s;e+=1)l[c]=r[e]??"",c+=1;const u=l.join("").slice(0,s),d=y.length;P(u),u.length!==d&&p&&(0,_index3.triggerHaptic)(p);const _=Math.min(c,s-1);c>=s?T.current[e]?.blur():B(_)},[D,B,o,s,p,P,y]),M=(0,_react.useCallback)((e,t)=>{if("Backspace"!==t.nativeEvent.key)return;if(0===(D[e]??"").length){if(e>0){const t=D.slice();t[e-1]="",P(t.join("")),B(e-1)}}else{const t=D.slice();t[e]="",P(t.join(""))}},[D,B,P]),H=(0,_react.useCallback)((e,t)=>{k(e),g?.(t)},[g]),W=(0,_react.useCallback)(()=>{k(-1)},[]),L=(0,_react.useCallback)(()=>{if(u)return;const e=D.indexOf("");B(-1===e?s-1:e)},[D,u,B,s]),$=x??`Enter ${s}-digit code`,G=w.interpolate({inputRange:[-1,1],outputRange:[-6,6]});return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:f,accessible:!0,accessibilityRole:"none",accessibilityLabel:$,accessibilityValue:{text:i},accessibilityState:{disabled:u},"aria-disabled":u,testID:b,children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:L,disabled:u,accessible:!1,children:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[R.row,{columnGap:C.gap,transform:[{translateX:G}]}],children:D.map((e,t)=>{const i=F===t,r=e.length>0,n=z?N.colors["danger-border"]:N.colors["focus-ring"],a=A[t];if(!a)return null;const l=m&&r?"●":e;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:R.cellWrapper,children:[(0,_jsxRuntime.jsxs)(_FieldBase.FieldBase,{size:_,width:C.cell,height:C.cell,borderRadius:C.radius,borderWidth:1.5,focused:i,error:z,filled:r,disabled:u,paddingHorizontal:N.space.none,paddingVertical:N.space.none,gap:N.space.none,style:h,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:e=>{T.current[t]=e},value:(m&&r?"":e)||"​",onChangeText:e=>q(t,e),onKeyPress:e=>M(t,e),onFocus:e=>H(t,e),onBlur:W,keyboardType:o,editable:!u,selectTextOnFocus:!0,caretHidden:r,maxLength:s+1,textContentType:"oneTimeCode",autoComplete:0===t?"sms-otp":"off",importantForAutofill:0===t?"yes":"no",style:[R.input,{fontSize:C.text,color:N.colors["text-body"],...(0,_index2.fontFor)(N,"semibold")},v]}),m&&r?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:R.maskOverlay,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[{fontSize:C.text,color:N.colors["text-body"],...(0,_index2.fontFor)(N,"semibold")},v],children:l})}):null]}),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[R.underline,{backgroundColor:n,opacity:a}]})]},`otp-cell-${t}`)})})}),(0,_jsxRuntime.jsx)(_FieldBase.FieldMessage,{size:_,error:!0,text:d})]})});OTPInput.displayName="OTPInput";const buildStyles=e=>_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center"},cellWrapper:{alignItems:"center"},input:{width:"100%",height:"100%",textAlign:"center",padding:e.space.none},maskOverlay:{..._reactNative.StyleSheet.absoluteFill,alignItems:"center",justifyContent:"center"},underline:{marginTop:e.space.xs,height:2,width:"60%",borderRadius:e.radius.pill,..._corners.smoothCorners}});var _default=exports.default=OTPInput;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.OnboardingPager=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_corners=require("../../utils/corners.js"),_index2=require("../Button/index.js"),_index3=require("../Carousel/index.js"),_index4=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");const ONBOARDING_MAX_PAGES=6,CONTROL_HEIGHT=44,DOT_SIZE=8,DOT_ACTIVE_WIDTH=24,defaultStep=(e,t)=>`Step ${e} of ${t}`,OnboardingPager=({pages:e,onDone:t,onSkip:n,doneLabel:i="Get started",labels:a,safeArea:r=!0,haptic:o="selection",testID:s})=>{const c=(0,_index.useTheme)(),l=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),u=(0,_useReducedMotion.useReducedMotion)(),d=(0,_react.useMemo)(()=>buildStyles(c),[c]),x=(0,_react.useMemo)(()=>e.slice(0,6),[e]),g=x.length,_=a?.step??defaultStep,p=(0,_react.useRef)(null),[m,b]=(0,_react.useState)(0),j=m>=g-1,y=(0,_react.useCallback)(e=>{e<0||e>=g||p.current?.scrollTo(e,!u)},[g,u]),v=(0,_react.useCallback)(e=>y(m+e),[y,m]),h=(0,_react.useCallback)(()=>{j?t():y(m+1)},[j,t,y,m]),f=(0,_react.useRef)(m);(0,_react.useEffect)(()=>{if(f.current===m)return;f.current=m;const e=x[m];e&&(0,_announce.announce)(`${_(m+1,g)}, ${e.title}`)},[m,x,g,_]);const R=(0,_react.useCallback)((e,t)=>(0,_jsxRuntime.jsx)(_reactNative.ScrollView,{style:d.page,contentContainerStyle:d.pageContent,showsVerticalScrollIndicator:!1,bounces:!1,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{accessible:!0,accessibilityLabel:`${_(t+1,g)}, ${e.title}. ${e.body}`,style:d.pageGroup,children:[e.art?(0,_jsxRuntime.jsx)(_reactNative.View,{style:d.art,children:e.art}):null,(0,_jsxRuntime.jsx)(_index4.Text,{variant:"h2",align:"center",children:e.title}),(0,_jsxRuntime.jsx)(_index4.Text,{variant:"body",color:"secondary",align:"center",children:e.body})]})}),[d,_,g]);return 0===g?null:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[d.root,r?{paddingTop:l.top,paddingBottom:l.bottom}:null],testID:s,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:d.skipRow,children:(0,_jsxRuntime.jsx)(_index2.Button,{title:a?.skip??"Skip",variant:"ghost",tone:"neutral",hitSlop:{top:2,bottom:2,left:8,right:8},haptic:o,onPress:n,testID:s?`${s}-skip`:void 0})}),(0,_jsxRuntime.jsx)(_index3.Carousel,{ref:p,data:x,renderItem:R,keyExtractor:e=>e.key,onIndexChange:b,showPagination:!1,containerStyle:d.carousel,testID:s?`${s}-pages`:void 0}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:d.footer,children:[g>1?(0,_jsxRuntime.jsx)(PageControl,{keys:x.map(e=>e.key),index:m,label:a?.pageControl??"Page",valueText:_(m+1,g),reduceMotion:u,theme:c,onStep:v,testID:s?`${s}-dots`:void 0}):null,(0,_jsxRuntime.jsx)(_index2.Button,{title:j?i:a?.next??"Next",size:"lg",fullWidth:!0,haptic:o,onPress:h,testID:s?`${s}-next`:void 0})]})]})};exports.OnboardingPager=OnboardingPager,OnboardingPager.displayName="OnboardingPager";const PageControl=({keys:e,index:t,label:n,valueText:i,reduceMotion:a,theme:r,onStep:o,testID:s})=>{const c=(0,_react.useCallback)(e=>{"increment"===e.nativeEvent.actionName?o(1):"decrement"===e.nativeEvent.actionName&&o(-1)},[o]);return(0,_jsxRuntime.jsxs)(_reactNative.View,{accessible:!0,accessibilityRole:"adjustable",accessibilityLabel:n,accessibilityValue:{min:0,max:e.length-1,now:t,text:i},accessibilityActions:[{name:"increment"},{name:"decrement"}],onAccessibilityAction:c,style:controlStyles.control,testID:s,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:controlStyles.dots,pointerEvents:"none",children:e.map((e,n)=>(0,_jsxRuntime.jsx)(Dot,{active:n===t,reduceMotion:a,theme:r},e))}),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{accessible:!1,importantForAccessibility:"no",style:controlStyles.back,onPress:()=>o(-1),testID:s?`${s}-back`:void 0}),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{accessible:!1,importantForAccessibility:"no",style:controlStyles.forward,onPress:()=>o(1),testID:s?`${s}-forward`:void 0})]})},Dot=({active:e,reduceMotion:t,theme:n})=>{const i=(0,_react.useRef)((0,_index.createAnimatedValue)(e?1:0)).current;return(0,_react.useEffect)(()=>{const a=_reactNative.Animated.timing(i,{toValue:e?1:0,duration:t?0:n.motion.duration.normal,easing:_reactNative.Easing.bezier(...n.motion.easing.standard),useNativeDriver:!1});return a.start(),()=>a.stop()},[e,t,i,n]),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{width:i.interpolate({inputRange:[0,1],outputRange:[8,24]}),height:8,marginHorizontal:n.spacing.xs,borderRadius:4,..._corners.smoothCorners,backgroundColor:i.interpolate({inputRange:[0,1],outputRange:[n.colors.border.primary,n.colors.primary]})}})},controlStyles=_reactNative.StyleSheet.create({control:{alignSelf:"center",height:44,minWidth:88,alignItems:"center",justifyContent:"center"},dots:{flexDirection:"row",alignItems:"center"},back:{position:"absolute",top:0,bottom:0,start:0,width:"50%"},forward:{position:"absolute",top:0,bottom:0,end:0,width:"50%"}}),buildStyles=e=>_reactNative.StyleSheet.create({root:{flex:1,backgroundColor:e.colors.background.primary},skipRow:{minHeight:44,paddingHorizontal:e.spacing.lg,alignItems:"flex-end",justifyContent:"center"},carousel:{flex:1},page:{flex:1},pageContent:{flexGrow:1,justifyContent:"center",paddingHorizontal:e.spacing.xl,paddingVertical:e.spacing.lg},pageGroup:{alignItems:"center",gap:e.spacing.md},art:{alignItems:"center",marginBottom:e.spacing.xl},footer:{paddingHorizontal:e.spacing.lg,paddingBottom:e.spacing.lg,gap:e.spacing.sm}});var _default=exports.default=OnboardingPager;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.OnboardingPager=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_corners=require("../../utils/corners.js"),_index2=require("../Button/index.js"),_index3=require("../Carousel/index.js"),_index4=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");const ONBOARDING_MAX_PAGES=6,CONTROL_HEIGHT=44,DOT_SIZE=8,DOT_ACTIVE_WIDTH=24,defaultStep=(e,t)=>`Step ${e} of ${t}`,OnboardingPager=({pages:e,onDone:t,onSkip:n,doneLabel:a="Get started",labels:i,safeArea:r=!0,haptic:o="selection",testID:s})=>{const c=(0,_index.useTheme)(),l=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),u=(0,_useReducedMotion.useReducedMotion)(),d=(0,_react.useMemo)(()=>buildStyles(c),[c]),x=(0,_react.useMemo)(()=>e.slice(0,6),[e]),_=x.length,p=i?.step??defaultStep,m=(0,_react.useRef)(null),[g,b]=(0,_react.useState)(0),j=g>=_-1,y=(0,_react.useCallback)(e=>{e<0||e>=_||m.current?.scrollTo(e,!u)},[_,u]),v=(0,_react.useCallback)(e=>y(g+e),[y,g]),h=(0,_react.useCallback)(()=>{j?t():y(g+1)},[j,t,y,g]),f=(0,_react.useRef)(g);(0,_react.useEffect)(()=>{if(f.current===g)return;f.current=g;const e=x[g];e&&(0,_announce.announce)(`${p(g+1,_)}, ${e.title}`)},[g,x,_,p]);const R=(0,_react.useCallback)((e,t)=>(0,_jsxRuntime.jsx)(_reactNative.ScrollView,{style:d.page,contentContainerStyle:d.pageContent,showsVerticalScrollIndicator:!1,bounces:!1,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{accessible:!0,accessibilityLabel:`${p(t+1,_)}, ${e.title}. ${e.body}`,style:d.pageGroup,children:[e.art?(0,_jsxRuntime.jsx)(_reactNative.View,{style:d.art,children:e.art}):null,(0,_jsxRuntime.jsx)(_index4.Text,{variant:"h2",align:"center",children:e.title}),(0,_jsxRuntime.jsx)(_index4.Text,{variant:"body",color:"secondary",align:"center",children:e.body})]})}),[d,p,_]);return 0===_?null:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[d.root,r?{paddingTop:l.top,paddingBottom:l.bottom}:null],testID:s,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:d.skipRow,children:(0,_jsxRuntime.jsx)(_index2.Button,{title:i?.skip??"Skip",variant:"ghost",tone:"neutral",hitSlop:{top:2,bottom:2,left:8,right:8},haptic:o,onPress:n,testID:s?`${s}-skip`:void 0})}),(0,_jsxRuntime.jsx)(_index3.Carousel,{ref:m,data:x,renderItem:R,keyExtractor:e=>e.key,onIndexChange:b,showPagination:!1,containerStyle:d.carousel,testID:s?`${s}-pages`:void 0}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:d.footer,children:[_>1?(0,_jsxRuntime.jsx)(PageControl,{keys:x.map(e=>e.key),index:g,label:i?.pageControl??"Page",valueText:p(g+1,_),reduceMotion:u,theme:c,onStep:v,testID:s?`${s}-dots`:void 0}):null,(0,_jsxRuntime.jsx)(_index2.Button,{title:j?a:i?.next??"Next",size:"lg",fullWidth:!0,haptic:o,onPress:h,testID:s?`${s}-next`:void 0})]})]})};exports.OnboardingPager=OnboardingPager,OnboardingPager.displayName="OnboardingPager";const PageControl=({keys:e,index:t,label:n,valueText:a,reduceMotion:i,theme:r,onStep:o,testID:s})=>{const c=(0,_react.useCallback)(e=>{"increment"===e.nativeEvent.actionName?o(1):"decrement"===e.nativeEvent.actionName&&o(-1)},[o]);return(0,_jsxRuntime.jsxs)(_reactNative.View,{accessible:!0,accessibilityRole:"adjustable",accessibilityLabel:n,accessibilityValue:{min:0,max:e.length-1,now:t,text:a},accessibilityActions:[{name:"increment"},{name:"decrement"}],onAccessibilityAction:c,style:controlStyles.control,testID:s,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:controlStyles.dots,pointerEvents:"none",children:e.map((e,n)=>(0,_jsxRuntime.jsx)(Dot,{active:n===t,reduceMotion:i,theme:r},e))}),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{accessible:!1,importantForAccessibility:"no",style:controlStyles.back,onPress:()=>o(-1),testID:s?`${s}-back`:void 0}),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{accessible:!1,importantForAccessibility:"no",style:controlStyles.forward,onPress:()=>o(1),testID:s?`${s}-forward`:void 0})]})},Dot=({active:e,reduceMotion:t,theme:n})=>{const a=(0,_react.useRef)((0,_index.createAnimatedValue)(e?1:0)).current;return(0,_react.useEffect)(()=>{const i=_reactNative.Animated.timing(a,{toValue:e?1:0,duration:t?0:n.motion.duration.default,easing:_reactNative.Easing.bezier(...n.motion.ease["in-out"]),useNativeDriver:!1});return i.start(),()=>i.stop()},[e,t,a,n]),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{width:a.interpolate({inputRange:[0,1],outputRange:[8,24]}),height:8,marginHorizontal:n.space.xs,borderRadius:4,..._corners.smoothCorners,backgroundColor:a.interpolate({inputRange:[0,1],outputRange:[n.colors.border,n.colors.primary]})}})},controlStyles=_reactNative.StyleSheet.create({control:{alignSelf:"center",height:44,minWidth:88,alignItems:"center",justifyContent:"center"},dots:{flexDirection:"row",alignItems:"center"},back:{position:"absolute",top:0,bottom:0,start:0,width:"50%"},forward:{position:"absolute",top:0,bottom:0,end:0,width:"50%"}}),buildStyles=e=>_reactNative.StyleSheet.create({root:{flex:1,backgroundColor:e.colors.bg},skipRow:{minHeight:44,paddingHorizontal:e.space.lg,alignItems:"flex-end",justifyContent:"center"},carousel:{flex:1},page:{flex:1},pageContent:{flexGrow:1,justifyContent:"center",paddingHorizontal:e.space.xl,paddingVertical:e.space.lg},pageGroup:{alignItems:"center",gap:e.space.md},art:{alignItems:"center",marginBottom:e.space.xl},footer:{paddingHorizontal:e.space.lg,paddingBottom:e.space.lg,gap:e.space.sm}});var _default=exports.default=OnboardingPager;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.OptionSheet=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_useDragToDismiss=require("../../hooks/useDragToDismiss.js"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_ModalSafeArea=require("../ModalSafeArea/ModalSafeArea.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_jsxRuntime=require("react/jsx-runtime");const AnimatedGestureRoot=_reactNative.Animated.createAnimatedComponent(_reactNativeGestureHandler.GestureHandlerRootView),SEARCH_ICON_SIZE=18,OptionSheet=e=>{const{open:t,onClose:r,onAfterClose:i,onOpenChange:a,title:o,options:s,sections:n,renderSectionHeader:l,renderOption:c,alphabetIndex:d=!1,searchPlaceholder:u="Search…",emptyText:p="No options",labelOf:m,getValue:g,disabledOf:h,destructiveOf:_,descriptionOf:x,iconOf:y,isSelected:f,onSelect:b,multi:v=!1,searchable:j=!1,searchSelectionColor:R,accessibilityLabel:S,optionStyle:N,selectedOptionStyle:T,optionTextStyle:C,selectedOptionTextStyle:w,testID:k}=e,I=(0,_index.useTheme)(),V=(0,_usePresenceMotion.usePresenceMotion)(),[M,P]=(0,_ModalSafeArea.useModalInsets)(),z=(0,_react.useMemo)(()=>buildStyles(I),[I]),[D,A]=(0,_react.useState)(""),L=_reactNative.Dimensions.get("window").height,H=Math.round(.7*L),[O,W]=(0,_react.useState)(t),B=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,E=(0,_react.useRef)((0,_index.createAnimatedValue)(H)).current,F=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,q=(0,_react.useMemo)(()=>V.reduced?F:_reactNative.Animated.add(E,F),[V.reduced,E,F]),G=(0,_react.useMemo)(()=>V.reduced?E.interpolate({inputRange:[0,H],outputRange:[1,0],extrapolate:"clamp"}):1,[V.reduced,E,H]),{handleGesture:$,opacity:K}=(0,_useDragToDismiss.useDragToDismiss)({drag:F,travel:H,onDismiss:r}),J=(0,_react.useMemo)(()=>_reactNative.Animated.multiply(G,K),[G,K]),U=(0,_react.useMemo)(()=>{const e=I.colors.background.overlay;return B.interpolate({inputRange:[0,1],outputRange:[transparentOf(e),e]})},[B,I.colors.background.overlay]);(0,_react.useEffect)(()=>{t&&W(!0)},[t]);const Y=(0,_react.useRef)(a);Y.current=a;const Z=(0,_react.useRef)(!1);(0,_react.useEffect)(()=>{Z.current!==t&&(Z.current=t,Y.current?.(t))},[t]);const Q=(0,_react.useRef)(i);Q.current=i;const X=(0,_react.useRef)(O);(0,_react.useEffect)(()=>{X.current&&!O&&"ios"!==_reactNative.Platform.OS&&Q.current?.(),X.current=O},[O]),(0,_react.useEffect)(()=>{if(!O)return;t&&((0,_index.setNativeValue)(F,0),(0,_index.setNativeValue)(K,1));const e=t?_reactNative.Animated.parallel([_reactNative.Animated.timing(B,{toValue:1,duration:V.duration("normal"),easing:_reactNative.Easing.bezier(...I.motion.easing.standard),useNativeDriver:!1}),V.reduced?_reactNative.Animated.timing(E,{toValue:0,duration:V.duration("normal"),easing:_reactNative.Easing.bezier(...I.motion.easing.standard),useNativeDriver:!0}):_reactNative.Animated.spring(E,{toValue:0,damping:I.motion.spring.snappy.damping,stiffness:I.motion.spring.snappy.stiffness,mass:I.motion.spring.snappy.mass,useNativeDriver:!0})]):_reactNative.Animated.parallel([_reactNative.Animated.timing(B,{toValue:0,duration:V.duration("normal"),easing:_reactNative.Easing.bezier(...I.motion.easing.standard),useNativeDriver:!1}),_reactNative.Animated.timing(E,{toValue:H,duration:V.duration("fast"),easing:_reactNative.Easing.bezier(...I.motion.easing.accelerate),useNativeDriver:!0})]);return e.start(({finished:e})=>{e&&!t&&W(!1)}),()=>e.stop()},[t,O,B,E,F,K,H,V,I.motion.easing.standard,I.motion.easing.accelerate,I.motion.spring.snappy]);const ee=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Native(),[]),[te,re]=(0,_react.useState)(0),ie=(0,_reactNativeKeyboardController.useKeyboardState)(e=>e.height),ae=O?Math.max(0,Math.round(ie)):0,oe=Math.max(M.top,_reactNative.StatusBar.currentHeight??0)+I.spacing.sm,se=ae>0,ne=se?Math.max(0,Math.min(H,(te>0?te:L)-ae-oe)):H;(0,_react.useEffect)(()=>{t||A("")},[t]);const le=(0,_react.useMemo)(()=>{const e=j?D.trim().toLowerCase():"",matches=t=>0===e.length||m(t).toLowerCase().includes(e)||(x(t)??"").toLowerCase().includes(e);if(!n)return s.filter(matches).map(e=>({kind:"option",option:e}));const t=[];return n.forEach((e,r)=>{const i=e.options.filter(matches);if(0!==i.length){t.push({kind:"header",title:e.title});for(const e of i)t.push({kind:"option",option:e,section:r})}}),t},[j,D,s,n,m,x]),ce=(0,_react.useCallback)(()=>{r()},[r]),de=(0,_react.useRef)(null),ue=(0,_react.useMemo)(()=>{const e=new Map;if(!d)return e;let t=0;if(n)for(let e=le.length-1;e>=0;e-=1)if("header"===le[e].kind){t=e+1;break}for(let r=t;r<le.length;r+=1){const t=le[r];if("option"!==t.kind)continue;const i=m(t.option).trim().charAt(0).toUpperCase(),a=/^[A-Z]$/.test(i)?i:"#";e.has(a)||e.set(a,r)}return e},[d,le,n,m]),pe=d&&ue.size>0&&0===D.trim().length,me=(0,_react.useMemo)(()=>[..."ABCDEFGHIJKLMNOPQRSTUVWXYZ",...ue.has("#")?["#"]:[]],[ue]),ge=(0,_react.useCallback)(e=>{const t=ue.get(e);void 0!==t&&de.current?.scrollToIndex({index:t,animated:!0,viewPosition:0})},[ue]),he=(0,_react.useRef)(null),xe=(0,_react.useCallback)(()=>{null!==he.current&&(clearTimeout(he.current),he.current=null)},[]),ye=(0,_react.useCallback)(e=>{de.current?.scrollToOffset({offset:e.averageItemLength*e.index,animated:!1}),xe(),he.current=setTimeout(()=>{he.current=null,de.current?.scrollToIndex({index:e.index,animated:!0,viewPosition:0})},50)},[xe]);(0,_react.useEffect)(()=>(O||xe(),xe),[O,xe]);return(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:O,transparent:!0,animationType:"none",onRequestClose:ce,onDismiss:()=>Q.current?.(),statusBarTranslucent:!0,navigationBarTranslucent:!0,children:(0,_jsxRuntime.jsx)(_ModalSafeArea.ModalSafeArea,{onInsets:P,children:(0,_jsxRuntime.jsxs)(AnimatedGestureRoot,{collapsable:!1,onLayout:e=>re(e.nativeEvent.layout.height),style:[_reactNative.StyleSheet.absoluteFill,{backgroundColor:U}],children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:ce,accessibilityRole:"button",accessibilityLabel:"Close picker"}),(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{testID:k,accessibilityViewIsModal:!0,accessibilityLabel:S??o??"Options",style:[z.sheet,{maxHeight:ne,bottom:ae,paddingBottom:se?I.spacing.lg:M.bottom+I.spacing.lg,backgroundColor:I.colors.background.elevated,borderTopLeftRadius:I.radius.xl,borderTopRightRadius:I.radius.xl,..._corners.smoothCorners,opacity:J,transform:[{translateY:q}],...I.shadows.xl}],children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:$,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:z.sheetHandleRow,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.sheetHandle,{backgroundColor:I.components.select?.handleColor??I.components.bottomSheet?.handleColor??I.colors.border.primary}]})}),o?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.sheetTitle,{color:I.colors.text.primary,fontSize:I.typography.fontSize.lg,fontWeight:I.typography.fontWeight.semibold,paddingHorizontal:I.spacing.lg,marginBottom:I.spacing.sm}],children:o}):null]})}),j?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.searchWrap,{marginHorizontal:I.spacing.lg,marginBottom:I.spacing.sm}],children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[z.searchBox,{backgroundColor:I.colors.background.secondary,borderColor:I.colors.border.primary,borderRadius:I.radius.md,..._corners.smoothCorners,paddingHorizontal:I.spacing.md,gap:I.spacing.sm}],children:[(I.icons?.search??_defaultIcons.defaultIcons.search)({size:18,color:I.colors.text.tertiary}),(0,_jsxRuntime.jsx)(_reactNative.TextInput,{value:D,onChangeText:A,placeholder:u,placeholderTextColor:I.colors.text.tertiary,selectionColor:R??I.colors.border.focus,accessibilityLabel:"Search options",style:[z.searchInput,{color:I.colors.text.primary,fontSize:I.typography.fontSize.base,paddingVertical:I.spacing.sm}]}),D.length>0?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>A(""),hitSlop:8,accessibilityRole:"button",accessibilityLabel:"Clear search",children:(I.icons?.close??_defaultIcons.defaultIcons.close)({size:18,color:I.colors.text.secondary})}):null]})}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[z.listWrap,pe?z.listRow:null],children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:ee,children:(0,_jsxRuntime.jsx)(_reactNative.FlatList,{ref:de,data:le,keyExtractor:e=>"header"===e.kind?`h:${e.title}`:`o:${e.section??""}:${String(g(e.option))}`,renderItem:({item:e})=>{if("header"===e.kind)return(0,_jsxRuntime.jsx)(_reactNative.View,{accessible:!0,accessibilityRole:"header",style:[z.sectionHeader,{paddingHorizontal:I.spacing.lg,paddingTop:I.spacing.md}],children:l?l(e.title):(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.sectionTitle,{color:I.colors.text.tertiary,fontSize:I.typography.fontSize.xs,fontWeight:I.typography.fontWeight.semibold}],children:e.title.toUpperCase()})});const t=e.option,r=m(t),i=g(t),a=x(t),o=y(t),s=f(i),n=h(t),d=_?.(t)??!1;return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>b(t),disabled:n,android_ripple:{color:I.colors.surface.pressed,borderless:!1},accessibilityRole:"button",accessibilityLabel:r,accessibilityState:{selected:s,disabled:n},"aria-selected":s,"aria-disabled":n,style:({pressed:e})=>[z.optionRow,{backgroundColor:s?I.colors.surface.selected:e?I.colors.surface.pressed:"transparent",opacity:n?.5:1,paddingHorizontal:I.spacing.lg,paddingVertical:I.spacing.md},N,s?T:null],children:[c?(0,_jsxRuntime.jsx)(_reactNative.View,{style:z.optionTextWrap,children:c(t,{selected:s,disabled:n})}):(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[o?(0,_jsxRuntime.jsx)(_reactNative.View,{style:z.optionIcon,children:o}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:z.optionTextWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.optionLabel,{color:d?I.colors.toneText.error:s?I.colors.primary:I.colors.text.primary,fontSize:I.typography.fontSize.base,fontWeight:s?I.typography.fontWeight.semibold:I.typography.fontWeight.medium},C,s?w:null],children:r}),a?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.optionDescription,{color:I.colors.text.tertiary,fontSize:I.typography.fontSize.sm}],numberOfLines:2,children:a}):null]})]}),v?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.checkbox,{borderColor:s?I.colors.primary:I.colors.border.primary,backgroundColor:s?I.colors.primary:"transparent"}],children:s?(0,_jsxRuntime.jsx)(_reactNative.View,{style:z.checkboxTick}):null}):s?"icon"===I.components.optionSheet?.selectedMarker?(0,_jsxRuntime.jsx)(_reactNative.View,{style:z.singleSelectedIcon,children:(I.icons?.selectedTick??_defaultIcons.defaultIcons.selectedTick)({size:20,color:I.colors.primary})}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.singleSelectedDot,{backgroundColor:I.colors.primary}]}):null]})},onScrollToIndexFailed:ye,overScrollMode:"never",bounces:!1,keyboardShouldPersistTaps:"handled",showsVerticalScrollIndicator:!pe,style:pe?z.listBesideRail:null,ListEmptyComponent:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.empty,{color:I.colors.text.tertiary,fontSize:I.typography.fontSize.sm,paddingVertical:I.spacing.xl}],children:p})})}),pe?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.rail,{paddingRight:I.spacing.xs}],accessibilityRole:"list",accessibilityLabel:"Jump to letter",testID:"option-sheet-alphabet",children:me.map(e=>{const t=ue.has(e);return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>ge(e),disabled:!t,hitSlop:{left:8,right:8},accessibilityRole:"button",accessibilityLabel:`Jump to ${e}`,accessibilityState:{disabled:!t},"aria-disabled":!t,style:z.railLetter,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.railLetterText,{color:t?I.colors.primary:I.colors.text.tertiary,fontSize:I.typography.fontSize.xs,fontWeight:I.typography.fontWeight.semibold,opacity:t?1:.45}],children:e})},e)})}):null]}),v?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.sheetFooter,{borderTopColor:I.colors.border.secondary,paddingHorizontal:I.spacing.lg,paddingVertical:I.spacing.md}],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:ce,accessibilityRole:"button",accessibilityLabel:"Done",style:({pressed:e})=>[z.doneButton,{backgroundColor:e?I.colors.primaryPressed:I.colors.primary,borderRadius:I.radius.md,..._corners.smoothCorners,paddingVertical:I.spacing.sm,paddingHorizontal:I.spacing.lg}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:I.colors.onPrimary,fontSize:I.typography.fontSize.base,fontWeight:I.typography.fontWeight.semibold},children:"Done"})})}):null]}),(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})})})};exports.OptionSheet=OptionSheet,OptionSheet.displayName="OptionSheet";const transparentOf=e=>{const t=e.match(/^rgba?\(([^)]+)\)$/);if(!t)return"transparent";const[r,i,a]=t[1].split(",").map(e=>e.trim());return`rgba(${r}, ${i}, ${a}, 0)`},buildStyles=e=>_reactNative.StyleSheet.create({sheet:{position:"absolute",left:0,right:0,bottom:0,paddingBottom:e.spacing.lg,overflow:"hidden"},sheetHandleRow:{alignItems:"center",paddingTop:e.spacing.sm,paddingBottom:e.spacing.sm},sheetHandle:{width:36,height:4,borderRadius:e.radius.pill,..._corners.smoothCorners},sheetTitle:{includeFontPadding:!1},searchWrap:{width:"auto"},searchBox:{flexDirection:"row",alignItems:"center",borderWidth:1},searchInput:{flex:1,includeFontPadding:!1},optionRow:{flexDirection:"row",alignItems:"center"},sectionHeader:{paddingBottom:e.spacing.xs},listWrap:{flexShrink:1},listRow:{flexDirection:"row"},listBesideRail:{flex:1},rail:{justifyContent:"space-between",alignItems:"center",alignSelf:"stretch",paddingVertical:e.spacing.xs},railLetter:{paddingHorizontal:e.spacing.xs,minHeight:14,justifyContent:"center"},railLetterText:{includeFontPadding:!1,lineHeight:14},sectionTitle:{includeFontPadding:!1,letterSpacing:.6},optionIcon:{marginRight:e.spacing.md},optionTextWrap:{flex:1},optionLabel:{includeFontPadding:!1},optionDescription:{includeFontPadding:!1,marginTop:e.spacing.xxs},checkbox:{width:22,height:22,borderRadius:e.radius.sm,..._corners.smoothCorners,borderWidth:2,alignItems:"center",justifyContent:"center",marginLeft:e.spacing.md},checkboxTick:{width:10,height:6,borderLeftWidth:2,borderBottomWidth:2,borderColor:e.colors.onPrimary,transform:[{rotate:"-45deg"},{translateY:-1}]},singleSelectedDot:{width:8,height:8,borderRadius:e.radius.pill,..._corners.smoothCorners,marginLeft:e.spacing.md},singleSelectedIcon:{marginLeft:e.spacing.md},empty:{textAlign:"center"},sheetFooter:{borderTopWidth:_reactNative.StyleSheet.hairlineWidth,alignItems:"flex-end"},doneButton:{alignSelf:"flex-end"}});var _default=exports.default=OptionSheet;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.OptionSheet=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_useDragToDismiss=require("../../hooks/useDragToDismiss.js"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_index=require("../../theme/index.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_ModalSafeArea=require("../ModalSafeArea/ModalSafeArea.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_jsxRuntime=require("react/jsx-runtime");const AnimatedGestureRoot=_reactNative.Animated.createAnimatedComponent(_reactNativeGestureHandler.GestureHandlerRootView),SEARCH_ICON_SIZE=18,OptionSheet=e=>{const{open:t,onClose:i,onAfterClose:r,onOpenChange:s,title:a,options:o,sections:n,renderSectionHeader:l,renderOption:c,alphabetIndex:d=!1,searchPlaceholder:u="Search…",emptyText:p="No options",labelOf:m,getValue:h,disabledOf:x,destructiveOf:_,descriptionOf:g,iconOf:b,isSelected:f,onSelect:y,multi:v=!1,searchable:j=!1,searchSelectionColor:R,accessibilityLabel:N,optionStyle:S,selectedOptionStyle:T,optionTextStyle:w,selectedOptionTextStyle:C,testID:I}=e,V=(0,_index.useTheme)(),k=(0,_usePresenceMotion.usePresenceMotion)(),[M,z]=(0,_ModalSafeArea.useModalInsets)(),D=(0,_react.useMemo)(()=>buildStyles(V),[V]),[A,P]=(0,_react.useState)(""),L=_reactNative.Dimensions.get("window").height,H=Math.round(.7*L),[O,W]=(0,_react.useState)(t),B=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,E=(0,_react.useRef)((0,_index.createAnimatedValue)(H)).current,q=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,F=(0,_react.useMemo)(()=>k.reduced?q:_reactNative.Animated.add(E,q),[k.reduced,E,q]),G=(0,_react.useMemo)(()=>k.reduced?E.interpolate({inputRange:[0,H],outputRange:[1,0],extrapolate:"clamp"}):1,[k.reduced,E,H]),{handleGesture:$,opacity:K}=(0,_useDragToDismiss.useDragToDismiss)({drag:q,travel:H,onDismiss:i}),J=(0,_react.useMemo)(()=>_reactNative.Animated.multiply(G,K),[G,K]),U=(0,_react.useMemo)(()=>{const e=V.colors.scrim;return B.interpolate({inputRange:[0,1],outputRange:[(0,_color.transparentOf)(e),e]})},[B,V.colors.scrim]);(0,_react.useEffect)(()=>{t&&W(!0)},[t]);const Y=(0,_react.useRef)(s);Y.current=s;const Z=(0,_react.useRef)(!1);(0,_react.useEffect)(()=>{Z.current!==t&&(Z.current=t,Y.current?.(t))},[t]);const Q=(0,_react.useRef)(r);Q.current=r;const X=(0,_react.useRef)(O);(0,_react.useEffect)(()=>{X.current&&!O&&"ios"!==_reactNative.Platform.OS&&Q.current?.(),X.current=O},[O]),(0,_react.useEffect)(()=>{if(!O)return;t&&((0,_index.setNativeValue)(q,0),(0,_index.setNativeValue)(K,1));const e=t?_reactNative.Animated.parallel([_reactNative.Animated.timing(B,{toValue:1,duration:k.duration("default"),easing:_reactNative.Easing.bezier(...V.motion.ease["in-out"]),useNativeDriver:!1}),k.reduced?_reactNative.Animated.timing(E,{toValue:0,duration:k.duration("default"),easing:_reactNative.Easing.bezier(...V.motion.ease["in-out"]),useNativeDriver:!0}):_reactNative.Animated.spring(E,{toValue:0,damping:V.motion.spring.snappy.damping,stiffness:V.motion.spring.snappy.stiffness,mass:V.motion.spring.snappy.mass,useNativeDriver:!0})]):_reactNative.Animated.parallel([_reactNative.Animated.timing(B,{toValue:0,duration:k.duration("default"),easing:_reactNative.Easing.bezier(...V.motion.ease["in-out"]),useNativeDriver:!1}),_reactNative.Animated.timing(E,{toValue:H,duration:k.duration("fast"),easing:_reactNative.Easing.bezier(...V.motion.ease.accelerate),useNativeDriver:!0})]);return e.start(({finished:e})=>{e&&!t&&W(!1)}),()=>e.stop()},[t,O,B,E,q,K,H,k,V.motion.ease["in-out"],V.motion.ease.accelerate,V.motion.spring.snappy]);const ee=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Native(),[]),[te,ie]=(0,_react.useState)(0),re=(0,_reactNativeKeyboardController.useKeyboardState)(e=>e.height),se=O?Math.max(0,Math.round(re)):0,ae=Math.max(M.top,_reactNative.StatusBar.currentHeight??0)+V.space.sm,oe=se>0,ne=oe?Math.max(0,Math.min(H,(te>0?te:L)-se-ae)):H;(0,_react.useEffect)(()=>{t||P("")},[t]);const le=(0,_react.useMemo)(()=>{const e=j?A.trim().toLowerCase():"",matches=t=>0===e.length||m(t).toLowerCase().includes(e)||(g(t)??"").toLowerCase().includes(e);if(!n)return o.filter(matches).map(e=>({kind:"option",option:e}));const t=[];return n.forEach((e,i)=>{const r=e.options.filter(matches);if(0!==r.length){t.push({kind:"header",title:e.title});for(const e of r)t.push({kind:"option",option:e,section:i})}}),t},[j,A,o,n,m,g]),ce=(0,_react.useCallback)(()=>{i()},[i]),de=(0,_react.useRef)(null),ue=(0,_react.useMemo)(()=>{const e=new Map;if(!d)return e;let t=0;if(n)for(let e=le.length-1;e>=0;e-=1)if("header"===le[e].kind){t=e+1;break}for(let i=t;i<le.length;i+=1){const t=le[i];if("option"!==t.kind)continue;const r=m(t.option).trim().charAt(0).toUpperCase(),s=/^[A-Z]$/.test(r)?r:"#";e.has(s)||e.set(s,i)}return e},[d,le,n,m]),pe=d&&ue.size>0&&0===A.trim().length,me=(0,_react.useMemo)(()=>[..."ABCDEFGHIJKLMNOPQRSTUVWXYZ",...ue.has("#")?["#"]:[]],[ue]),he=(0,_react.useCallback)(e=>{const t=ue.get(e);void 0!==t&&de.current?.scrollToIndex({index:t,animated:!0,viewPosition:0})},[ue]),xe=(0,_react.useRef)(null),ge=(0,_react.useCallback)(()=>{null!==xe.current&&(clearTimeout(xe.current),xe.current=null)},[]),be=(0,_react.useCallback)(e=>{de.current?.scrollToOffset({offset:e.averageItemLength*e.index,animated:!1}),ge(),xe.current=setTimeout(()=>{xe.current=null,de.current?.scrollToIndex({index:e.index,animated:!0,viewPosition:0})},50)},[ge]);(0,_react.useEffect)(()=>(O||ge(),ge),[O,ge]);return(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:O,transparent:!0,animationType:"none",onRequestClose:ce,onDismiss:()=>Q.current?.(),statusBarTranslucent:!0,navigationBarTranslucent:!0,children:(0,_jsxRuntime.jsx)(_ModalSafeArea.ModalSafeArea,{onInsets:z,children:(0,_jsxRuntime.jsxs)(AnimatedGestureRoot,{collapsable:!1,onLayout:e=>ie(e.nativeEvent.layout.height),style:[_reactNative.StyleSheet.absoluteFill,{backgroundColor:U}],children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:ce,accessibilityRole:"button",accessibilityLabel:"Close picker"}),(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{testID:I,accessibilityViewIsModal:!0,accessibilityLabel:N??a??"Options",style:[D.sheet,{maxHeight:ne,bottom:se,paddingBottom:oe?V.space.lg:M.bottom+V.space.lg,backgroundColor:V.colors.surface,borderTopLeftRadius:V.radius.xl,borderTopRightRadius:V.radius.xl,..._corners.smoothCorners,opacity:J,transform:[{translateY:F}],...V.shadow.modal}],children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:$,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:D.sheetHandleRow,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[D.sheetHandle,{backgroundColor:V.colors.border}]})}),a?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[D.sheetTitle,{color:V.colors["text-body"],fontSize:V.text.lg.size,fontWeight:V.weight.semibold,paddingHorizontal:V.space.lg,marginBottom:V.space.sm}],children:a}):null]})}),j?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[D.searchWrap,{marginHorizontal:V.space.lg,marginBottom:V.space.sm}],children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[D.searchBox,{backgroundColor:V.colors["bg-subtle"],borderColor:V.colors.border,borderRadius:V.radius.md,..._corners.smoothCorners,paddingHorizontal:V.space.md,gap:V.space.sm}],children:[(V.settings.icons.search??_defaultIcons.defaultIcons.search)({size:18,color:V.colors["text-subtle"]}),(0,_jsxRuntime.jsx)(_reactNative.TextInput,{value:A,onChangeText:P,placeholder:u,placeholderTextColor:V.colors["text-subtle"],selectionColor:R??V.colors["focus-ring"],accessibilityLabel:"Search options",style:[D.searchInput,{color:V.colors["text-body"],fontSize:V.text.base.size,paddingVertical:V.space.sm}]}),A.length>0?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>P(""),hitSlop:8,accessibilityRole:"button",accessibilityLabel:"Clear search",children:(V.settings.icons.close??_defaultIcons.defaultIcons.close)({size:18,color:V.colors["text-muted"]})}):null]})}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[D.listWrap,pe?D.listRow:null],children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:ee,children:(0,_jsxRuntime.jsx)(_reactNative.FlatList,{ref:de,data:le,keyExtractor:e=>"header"===e.kind?`h:${e.title}`:`o:${e.section??""}:${String(h(e.option))}`,renderItem:({item:e})=>{if("header"===e.kind)return(0,_jsxRuntime.jsx)(_reactNative.View,{accessible:!0,accessibilityRole:"header",style:[D.sectionHeader,{paddingHorizontal:V.space.lg,paddingTop:V.space.md}],children:l?l(e.title):(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[D.sectionTitle,{color:V.colors["text-subtle"],fontSize:V.text.xs.size,fontWeight:V.weight.semibold}],children:e.title.toUpperCase()})});const t=e.option,i=m(t),r=h(t),s=g(t),a=b(t),o=f(r),n=x(t),d=_?.(t)??!1;return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>y(t),disabled:n,android_ripple:{color:V.colors["surface-pressed"],borderless:!1},accessibilityRole:"button",accessibilityLabel:i,accessibilityState:{selected:o,disabled:n},"aria-selected":o,"aria-disabled":n,style:({pressed:e})=>[D.optionRow,{backgroundColor:o?V.colors["surface-selected"]:e?V.colors["surface-pressed"]:"transparent",opacity:n?.5:1,paddingHorizontal:V.space.lg,paddingVertical:V.space.md},S,o?T:null],children:[c?(0,_jsxRuntime.jsx)(_reactNative.View,{style:D.optionTextWrap,children:c(t,{selected:o,disabled:n})}):(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[a?(0,_jsxRuntime.jsx)(_reactNative.View,{style:D.optionIcon,children:a}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:D.optionTextWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[D.optionLabel,{color:d?V.colors["danger-text"]:o?V.colors.primary:V.colors["text-body"],fontSize:V.text.base.size,fontWeight:o?V.weight.semibold:V.weight.medium},w,o?C:null],children:i}),s?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[D.optionDescription,{color:V.colors["text-subtle"],fontSize:V.text.sm.size}],numberOfLines:2,children:s}):null]})]}),v?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[D.checkbox,{borderColor:o?V.colors.primary:V.colors.border,backgroundColor:o?V.colors.primary:"transparent"}],children:o?(0,_jsxRuntime.jsx)(_reactNative.View,{style:D.checkboxTick}):null}):o?"icon"===V.settings.components["option-sheet"]?.selectedMarker?(0,_jsxRuntime.jsx)(_reactNative.View,{style:D.singleSelectedIcon,children:(V.settings.icons.selectedTick??_defaultIcons.defaultIcons.selectedTick)({size:20,color:V.colors.primary})}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[D.singleSelectedDot,{backgroundColor:V.colors.primary}]}):null]})},onScrollToIndexFailed:be,overScrollMode:"never",bounces:!1,keyboardShouldPersistTaps:"handled",showsVerticalScrollIndicator:!pe,style:pe?D.listBesideRail:null,ListEmptyComponent:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[D.empty,{color:V.colors["text-subtle"],fontSize:V.text.sm.size,paddingVertical:V.space.xl}],children:p})})}),pe?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[D.rail,{paddingRight:V.space.xs}],accessibilityRole:"list",accessibilityLabel:"Jump to letter",testID:"option-sheet-alphabet",children:me.map(e=>{const t=ue.has(e);return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>he(e),disabled:!t,hitSlop:{left:8,right:8},accessibilityRole:"button",accessibilityLabel:`Jump to ${e}`,accessibilityState:{disabled:!t},"aria-disabled":!t,style:D.railLetter,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[D.railLetterText,{color:t?V.colors.primary:V.colors["text-subtle"],fontSize:V.text.xs.size,fontWeight:V.weight.semibold,opacity:t?1:.45}],children:e})},e)})}):null]}),v?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[D.sheetFooter,{borderTopColor:V.colors["border-subtle"],paddingHorizontal:V.space.lg,paddingVertical:V.space.md}],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:ce,accessibilityRole:"button",accessibilityLabel:"Done",style:({pressed:e})=>[D.doneButton,{backgroundColor:e?V.colors["primary-pressed"]:V.colors.primary,borderRadius:V.radius.md,..._corners.smoothCorners,paddingVertical:V.space.sm,paddingHorizontal:V.space.lg}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:V.colors["on-primary"],fontSize:V.text.base.size,fontWeight:V.weight.semibold},children:"Done"})})}):null]}),(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})})})};exports.OptionSheet=OptionSheet,OptionSheet.displayName="OptionSheet";const buildStyles=e=>_reactNative.StyleSheet.create({sheet:{position:"absolute",left:0,right:0,bottom:0,paddingBottom:e.space.lg,overflow:"hidden"},sheetHandleRow:{alignItems:"center",paddingTop:e.space.sm,paddingBottom:e.space.sm},sheetHandle:{width:36,height:4,borderRadius:e.radius.pill,..._corners.smoothCorners},sheetTitle:{includeFontPadding:!1},searchWrap:{width:"auto"},searchBox:{flexDirection:"row",alignItems:"center",borderWidth:1},searchInput:{flex:1,includeFontPadding:!1},optionRow:{flexDirection:"row",alignItems:"center"},sectionHeader:{paddingBottom:e.space.xs},listWrap:{flexShrink:1},listRow:{flexDirection:"row"},listBesideRail:{flex:1},rail:{justifyContent:"space-between",alignItems:"center",alignSelf:"stretch",paddingVertical:e.space.xs},railLetter:{paddingHorizontal:e.space.xs,minHeight:14,justifyContent:"center"},railLetterText:{includeFontPadding:!1,lineHeight:14},sectionTitle:{includeFontPadding:!1,letterSpacing:.6},optionIcon:{marginRight:e.space.md},optionTextWrap:{flex:1},optionLabel:{includeFontPadding:!1},optionDescription:{includeFontPadding:!1,marginTop:e.space.xxs},checkbox:{width:22,height:22,borderRadius:e.radius.sm,..._corners.smoothCorners,borderWidth:2,alignItems:"center",justifyContent:"center",marginLeft:e.space.md},checkboxTick:{width:10,height:6,borderLeftWidth:2,borderBottomWidth:2,borderColor:e.colors["on-primary"],transform:[{rotate:"-45deg"},{translateY:-1}]},singleSelectedDot:{width:8,height:8,borderRadius:e.radius.pill,..._corners.smoothCorners,marginLeft:e.space.md},singleSelectedIcon:{marginLeft:e.space.md},empty:{textAlign:"center"},sheetFooter:{borderTopWidth:_reactNative.StyleSheet.hairlineWidth,alignItems:"flex-end"},doneButton:{alignSelf:"flex-end"}});var _default=exports.default=OptionSheet;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.PaymentResult=void 0;var cache,_mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated")),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index3=require("../AppIcon/index.js"),_index4=require("../Button/index.js"),_index5=require("../Confetti/index.js"),_index6=require("../Descriptions/index.js"),_index7=require("../StatusBadge/index.js"),_index8=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var n,r,i=Object.defineProperty,a={__proto__:null,default:e};if(Object(e)!==e)return a;if(cache||"function"!=typeof WeakMap||(cache=new WeakMap),cache){if(cache.has(e))return cache.get(e);cache.set(e,a)}for(r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((n=i&&Object.getOwnPropertyDescriptor(e,r))&&(n.get||n.set)?i(a,r,n):a[r]=e[r]);return a}const STATUS={success:{icon:"check-circle",badge:"Success",tone:"success",title:"Payment successful"},pending:{icon:"clock",badge:"Pending",tone:"neutral",title:"Payment pending"},failed:{icon:"x-circle",badge:"Failed",tone:"error",title:"Payment failed"},refunded:{icon:"refresh-cw",badge:"Refunded",tone:"info",title:"Payment refunded"}},MARK_SIZE=72,ICON_SIZE=36,TINT_OPACITY=.14,DEFAULT_REFUND_DAYS=5,CONFETTI_PIECES=60,SETTLE_WINDOW="Most payments confirm in a few minutes. Your bank can take up to 48 hours.",REFRESH_HINT="Tap Check status to see the latest.",PENDING_WARNING="Do not pay again. If money has left your account, it will either complete or come back to you.",istStamp=e=>(0,_mobileCore.formatDateTime)(e,{zone:"IST",zoneLabel:!0}),markColors=(e,t)=>{const{colors:n}=e;switch(t){case"success":return{fill:(0,_color.tintOf)(n.success,.14,n.background.secondary),ink:n.toneText.success};case"failed":return{fill:(0,_color.tintOf)(n.error,.14,n.background.secondary),ink:n.toneText.error};case"refunded":return{fill:(0,_color.tintOf)(n.info,.14,n.background.secondary),ink:n.toneText.info};default:return{fill:n.background.tertiary,ink:n.text.secondary}}},failedLead=(e,t,n,r)=>{if(!0===e){return`${t} will return to your account within ${n} working days.${r?` Reference ${r}.`:""}`}return!1===e?"No money was taken from your account. You can try again.":"We could not confirm whether money left your account. Check your bank statement before you try again."},leadFor=(e,t,n)=>{switch(e){case"success":return"Your payment has been received. Keep this receipt for your records.";case"pending":return"Your bank has not confirmed this payment yet.";case"refunded":return`${t} has been returned to your account.`;default:return n}},renderAction=e=>(0,_jsxRuntime.jsx)(_index4.Button,{title:e.title,size:"lg",fullWidth:!0,variant:e.variant,tone:e.tone,leftIcon:e.icon,loading:e.loading,onPress:e.onPress},e.key),PaymentResult=({status:e,amount:t,currency:n="INR",payee:r,reference:i,paidAt:a,method:s,rows:o,debited:c,refundDays:l=5,settlesBy:u,title:d,message:m,onShare:_,onDownload:h,onDone:x,onRetry:y,onRefresh:p,refreshing:f=!1,celebrate:g=!0,haptic:b=!0,style:v,testID:j})=>{const R=(0,_index2.useTheme)(),k=(0,_index.useReducedMotion)(),N=(0,_react.useMemo)(()=>buildStyles(R),[R]),w=(0,_react.useRef)(null),T=(0,_react.useRef)(null),S=STATUS[e],I=(0,_react.useMemo)(()=>markColors(R,e),[R,e]),P=d??S.title,C=(0,_mobileCore.formatMinor)(t,{currency:n,dropZeroDecimals:!0}),D=failedLead(c,C,l,i),E=m??leadFor(e,C,D),A=`${P}, ${C}${r&&"refunded"!==e?` to ${r}`:""}`,q=void 0===u?SETTLE_WINDOW:`Expected to settle by ${istStamp(u)}.`;(0,_react.useEffect)(()=>{T.current!==e&&(T.current=e,(0,_announce.announce)(A,{polite:"failed"!==e}),b&&("success"===e?(0,_hapticUtils.triggerHaptic)("confirm"):"failed"===e&&(0,_hapticUtils.triggerHaptic)("reject")),"success"===e&&g&&w.current?.start())},[e]);const O=(0,_reactNativeReanimated.useSharedValue)(.9),W=(0,_reactNativeReanimated.useSharedValue)(0),M=R.motion.duration.normal;(0,_react.useEffect)(()=>(k?(O.value=1,W.value=1):"success"===e?(W.value=0,W.value=(0,_reactNativeReanimated.withTiming)(1,{duration:M}),O.value=.6,O.value=(0,_reactNativeReanimated.withSpring)(1,{damping:12,stiffness:160})):(W.value=0,W.value=(0,_reactNativeReanimated.withTiming)(1,{duration:M}),O.value=.9,O.value=(0,_reactNativeReanimated.withTiming)(1,{duration:M})),()=>{(0,_reactNativeReanimated.cancelAnimation)(O),(0,_reactNativeReanimated.cancelAnimation)(W)}),[e,k,O,W,M]);const V=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({opacity:W.value,transform:[{scale:O.value}]})),$=(0,_react.useMemo)(()=>{const e=[];if(r&&e.push({key:"payee",label:"Paid to",value:r}),s&&e.push({key:"method",label:"Method",value:s}),i){const t=/^\d+$/.test(i);e.push({key:"reference",label:"Reference",value:(0,_jsxRuntime.jsx)(_index8.Text,{selectable:!0,accessibilityLabel:t?i.split("").join(" "):void 0,style:N.tabular,children:i})})}void 0!==a&&e.push({key:"paidAt",label:"Date and time",value:istStamp(a)});for(const t of o??[])void 0!==t.value&&null!==t.value&&""!==t.value&&e.push(t);return e},[r,s,i,a,o,N.tabular]),F="pending"===e&&p?{key:"refresh",title:"Check status",onPress:p,icon:"refresh-cw",loading:f}:null,H=x?{key:"done",title:"Done",onPress:x}:null,U=("failed"===e&&!1===c&&y?{key:"retry",title:"Try again",onPress:y,icon:"refresh-cw"}:null)??F??H,L=H&&U!==H?{...H,variant:"ghost",tone:"neutral"}:null,B=[];return _&&B.push({key:"share",title:"Share receipt",onPress:_,icon:"share",variant:"outline",tone:"neutral"}),h&&B.push({key:"download",title:"Download",onPress:h,icon:"download",variant:"outline",tone:"neutral"}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[N.root,v],testID:j,accessibilityRole:"summary",children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:N.header,children:[(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[N.mark,{backgroundColor:I.fill},V],accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",children:(0,_jsxRuntime.jsx)(_index3.AppIcon,{name:S.icon,size:36,color:I.ink})}),(0,_jsxRuntime.jsx)(_index7.StatusBadge,{label:S.badge,tone:S.tone}),(0,_jsxRuntime.jsx)(_index8.Text,{variant:"h3",align:"center",children:P}),(0,_jsxRuntime.jsx)(_index8.Text,{variant:"h1",align:"center",style:N.tabular,children:C}),(0,_jsxRuntime.jsx)(_index8.Text,{variant:"body",color:"secondary",align:"center",children:E})]}),"pending"===e?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:N.note,children:[(0,_jsxRuntime.jsx)(_index8.Text,{variant:"bodySmall",color:"secondary",children:q}),(0,_jsxRuntime.jsx)(_index8.Text,{variant:"bodySmall",weight:"semibold",children:PENDING_WARNING}),F?(0,_jsxRuntime.jsx)(_index8.Text,{variant:"bodySmall",color:"secondary",children:REFRESH_HINT}):null]}):null,$.length>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:N.receipt,children:(0,_jsxRuntime.jsx)(_index6.Descriptions,{items:$,columns:2,bordered:!0})}):null,U||B.length>0?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:N.actions,children:[U?renderAction(U):null,B.length>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:N.pair,children:B.map(e=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:N.pairItem,children:renderAction(e)},e.key))}):null,L?renderAction(L):null]}):null,"success"===e&&g?(0,_jsxRuntime.jsx)(_index5.Confetti,{ref:w,count:60,preset:"pop"}):null]})};exports.PaymentResult=PaymentResult;const buildStyles=e=>_reactNative.StyleSheet.create({root:{gap:e.spacing.lg},header:{alignItems:"center",gap:e.spacing.sm},mark:{width:72,height:72,borderRadius:e.radius.pill,alignItems:"center",justifyContent:"center",marginBottom:e.spacing.xs,..._corners.smoothCorners},tabular:{fontVariant:["tabular-nums"]},note:{gap:e.spacing.xs,padding:e.spacing.md,borderRadius:e.radius.md,backgroundColor:e.colors.background.secondary,..._corners.smoothCorners},receipt:{paddingHorizontal:e.spacing.md,borderRadius:e.radius.lg,borderWidth:_reactNative.StyleSheet.hairlineWidth,borderColor:e.colors.border.secondary,backgroundColor:e.colors.background.primary,..._corners.smoothCorners},actions:{gap:e.spacing.sm},pair:{flexDirection:"row",gap:e.spacing.sm},pairItem:{flex:1}});var _default=exports.default=PaymentResult;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.PaymentResult=void 0;var cache,_mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated")),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index3=require("../AppIcon/index.js"),_index4=require("../Button/index.js"),_index5=require("../Confetti/index.js"),_index6=require("../Descriptions/index.js"),_index7=require("../StatusBadge/index.js"),_index8=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var n,r,i=Object.defineProperty,a={__proto__:null,default:e};if(Object(e)!==e)return a;if(cache||"function"!=typeof WeakMap||(cache=new WeakMap),cache){if(cache.has(e))return cache.get(e);cache.set(e,a)}for(r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((n=i&&Object.getOwnPropertyDescriptor(e,r))&&(n.get||n.set)?i(a,r,n):a[r]=e[r]);return a}const STATUS={success:{icon:"check-circle",badge:"Success",tone:"success",title:"Payment successful"},pending:{icon:"clock",badge:"Pending",tone:"neutral",title:"Payment pending"},failed:{icon:"x-circle",badge:"Failed",tone:"danger",title:"Payment failed"},refunded:{icon:"refresh-cw",badge:"Refunded",tone:"info",title:"Payment refunded"}},MARK_SIZE=72,ICON_SIZE=36,TINT_OPACITY=.14,DEFAULT_REFUND_DAYS=5,CONFETTI_PIECES=60,SETTLE_WINDOW="Most payments confirm in a few minutes. Your bank can take up to 48 hours.",REFRESH_HINT="Tap Check status to see the latest.",PENDING_WARNING="Do not pay again. If money has left your account, it will either complete or come back to you.",istStamp=e=>(0,_mobileCore.formatDateTime)(e,{zone:"IST",zoneLabel:!0}),markColors=(e,t)=>{const{colors:n}=e;switch(t){case"success":return{fill:(0,_color.tintOf)(n.success,.14,n["bg-subtle"]),ink:n["success-text"]};case"failed":return{fill:(0,_color.tintOf)(n.danger,.14,n["bg-subtle"]),ink:n["danger-text"]};case"refunded":return{fill:(0,_color.tintOf)(n.info,.14,n["bg-subtle"]),ink:n["info-text"]};default:return{fill:n["bg-muted"],ink:n["text-muted"]}}},failedLead=(e,t,n,r)=>{if(!0===e){return`${t} will return to your account within ${n} working days.${r?` Reference ${r}.`:""}`}return!1===e?"No money was taken from your account. You can try again.":"We could not confirm whether money left your account. Check your bank statement before you try again."},leadFor=(e,t,n)=>{switch(e){case"success":return"Your payment has been received. Keep this receipt for your records.";case"pending":return"Your bank has not confirmed this payment yet.";case"refunded":return`${t} has been returned to your account.`;default:return n}},renderAction=e=>(0,_jsxRuntime.jsx)(_index4.Button,{title:e.title,size:"lg",fullWidth:!0,variant:e.variant,tone:e.tone,leftIcon:e.icon,loading:e.loading,onPress:e.onPress},e.key),PaymentResult=({status:e,amount:t,currency:n="INR",payee:r,reference:i,paidAt:a,method:s,rows:o,debited:l,refundDays:c=5,settlesBy:u,title:d,message:m,onShare:_,onDownload:h,onDone:x,onRetry:p,onRefresh:f,refreshing:y=!1,celebrate:b=!0,haptic:g=!0,style:v,testID:j})=>{const R=(0,_index2.useTheme)(),N=(0,_index.useReducedMotion)(),k=(0,_react.useMemo)(()=>buildStyles(R),[R]),w=(0,_react.useRef)(null),S=(0,_react.useRef)(null),T=STATUS[e],I=(0,_react.useMemo)(()=>markColors(R,e),[R,e]),P=d??T.title,C=(0,_mobileCore.formatMinor)(t,{currency:n,dropZeroDecimals:!0}),D=failedLead(l,C,c,i),E=m??leadFor(e,C,D),A=`${P}, ${C}${r&&"refunded"!==e?` to ${r}`:""}`,q=void 0===u?SETTLE_WINDOW:`Expected to settle by ${istStamp(u)}.`;(0,_react.useEffect)(()=>{S.current!==e&&(S.current=e,(0,_announce.announce)(A,{polite:"failed"!==e}),g&&("success"===e?(0,_hapticUtils.triggerHaptic)("confirm"):"failed"===e&&(0,_hapticUtils.triggerHaptic)("reject")),"success"===e&&b&&w.current?.start())},[e]);const O=(0,_reactNativeReanimated.useSharedValue)(.9),W=(0,_reactNativeReanimated.useSharedValue)(0),M=R.motion.duration.default;(0,_react.useEffect)(()=>(N?(O.value=1,W.value=1):"success"===e?(W.value=0,W.value=(0,_reactNativeReanimated.withTiming)(1,{duration:M}),O.value=.6,O.value=(0,_reactNativeReanimated.withSpring)(1,{damping:12,stiffness:160})):(W.value=0,W.value=(0,_reactNativeReanimated.withTiming)(1,{duration:M}),O.value=.9,O.value=(0,_reactNativeReanimated.withTiming)(1,{duration:M})),()=>{(0,_reactNativeReanimated.cancelAnimation)(O),(0,_reactNativeReanimated.cancelAnimation)(W)}),[e,N,O,W,M]);const V=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({opacity:W.value,transform:[{scale:O.value}]})),$=(0,_react.useMemo)(()=>{const e=[];if(r&&e.push({key:"payee",label:"Paid to",value:r}),s&&e.push({key:"method",label:"Method",value:s}),i){const t=/^\d+$/.test(i);e.push({key:"reference",label:"Reference",value:(0,_jsxRuntime.jsx)(_index8.Text,{selectable:!0,accessibilityLabel:t?i.split("").join(" "):void 0,style:k.tabular,children:i})})}void 0!==a&&e.push({key:"paidAt",label:"Date and time",value:istStamp(a)});for(const t of o??[])void 0!==t.value&&null!==t.value&&""!==t.value&&e.push(t);return e},[r,s,i,a,o,k.tabular]),F="pending"===e&&f?{key:"refresh",title:"Check status",onPress:f,icon:"refresh-cw",loading:y}:null,H=x?{key:"done",title:"Done",onPress:x}:null,U=("failed"===e&&!1===l&&p?{key:"retry",title:"Try again",onPress:p,icon:"refresh-cw"}:null)??F??H,L=H&&U!==H?{...H,variant:"ghost",tone:"neutral"}:null,B=[];return _&&B.push({key:"share",title:"Share receipt",onPress:_,icon:"share",variant:"outline",tone:"neutral"}),h&&B.push({key:"download",title:"Download",onPress:h,icon:"download",variant:"outline",tone:"neutral"}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[k.root,v],testID:j,accessibilityRole:"summary",children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:k.header,children:[(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[k.mark,{backgroundColor:I.fill},V],accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",children:(0,_jsxRuntime.jsx)(_index3.AppIcon,{name:T.icon,size:36,color:I.ink})}),(0,_jsxRuntime.jsx)(_index7.StatusBadge,{label:T.badge,tone:T.tone}),(0,_jsxRuntime.jsx)(_index8.Text,{variant:"h3",align:"center",children:P}),(0,_jsxRuntime.jsx)(_index8.Text,{variant:"h1",align:"center",style:k.tabular,children:C}),(0,_jsxRuntime.jsx)(_index8.Text,{variant:"body",color:"secondary",align:"center",children:E})]}),"pending"===e?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:k.note,children:[(0,_jsxRuntime.jsx)(_index8.Text,{variant:"bodySmall",color:"secondary",children:q}),(0,_jsxRuntime.jsx)(_index8.Text,{variant:"bodySmall",weight:"semibold",children:PENDING_WARNING}),F?(0,_jsxRuntime.jsx)(_index8.Text,{variant:"bodySmall",color:"secondary",children:REFRESH_HINT}):null]}):null,$.length>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:k.receipt,children:(0,_jsxRuntime.jsx)(_index6.Descriptions,{items:$,columns:2,bordered:!0})}):null,U||B.length>0?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:k.actions,children:[U?renderAction(U):null,B.length>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:k.pair,children:B.map(e=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:k.pairItem,children:renderAction(e)},e.key))}):null,L?renderAction(L):null]}):null,"success"===e&&b?(0,_jsxRuntime.jsx)(_index5.Confetti,{ref:w,count:60,preset:"pop"}):null]})};exports.PaymentResult=PaymentResult;const buildStyles=e=>_reactNative.StyleSheet.create({root:{gap:e.space.lg},header:{alignItems:"center",gap:e.space.sm},mark:{width:72,height:72,borderRadius:e.radius.pill,alignItems:"center",justifyContent:"center",marginBottom:e.space.xs,..._corners.smoothCorners},tabular:{fontVariant:["tabular-nums"]},note:{gap:e.space.xs,padding:e.space.md,borderRadius:e.radius.md,backgroundColor:e.colors["bg-subtle"],..._corners.smoothCorners},receipt:{paddingHorizontal:e.space.md,borderRadius:e.radius.lg,borderWidth:_reactNative.StyleSheet.hairlineWidth,borderColor:e.colors["border-subtle"],backgroundColor:e.colors.bg,..._corners.smoothCorners},actions:{gap:e.space.sm},pair:{flexDirection:"row",gap:e.space.sm},pairItem:{flex:1}});var _default=exports.default=PaymentResult;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.PermissionPrompt=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_index2=require("../Button/index.js"),_index3=require("../IconBadge/index.js"),_index4=require("../Text/index.js"),_usePermissionPrompt=require("./usePermissionPrompt.js"),_jsxRuntime=require("react/jsx-runtime");const ACCESS={camera:"Camera access",microphone:"Microphone access",photos:"Photo access",photosAdd:"Photo access",mediaLibrary:"Media library access",location:"Location access",locationAlways:"Location access",contacts:"Contacts access",calendar:"Calendar access",reminders:"Reminders access",notifications:"Notification access",bluetooth:"Bluetooth access",storage:"Storage access"},unavailableMessage=(e,t,i)=>{const s=ACCESS[e];return"unavailable"===t?`${s} is not available on this device.`:i?`${s} is off for this app. You can turn it on in Settings.`:`${s} is off, so this cannot be used right now.`},PermissionPrompt=({kind:e,title:t,reason:i,icon:s,onResult:n,fallback:a,haptic:r="selection",style:o,testID:c})=>{const l=(0,_index.useTheme)(),u=(0,_react.useMemo)(()=>buildStyles(l),[l]),d=(0,_usePermissionPrompt.usePermissionPrompt)(e,{onResult:n}),x=unavailableMessage(e,d.status,d.showSettings),m=(0,_react.useRef)(!1);if((0,_react.useEffect)(()=>{"explain"!==d.view?("unavailable"===d.view&&m.current&&(0,_announce.announce)(x),m.current=!1):m.current=!0},[d.view,x]),"explain"!==d.view&&"unavailable"!==d.view)return(0,_jsxRuntime.jsx)(_reactNative.View,{style:o,testID:c});const _="explain"===d.view;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[u.root,o],testID:c,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:u.header,children:[s?(0,_jsxRuntime.jsx)(_index3.IconBadge,{icon:s,size:"lg",tone:_?"primary":"neutral"}):null,(0,_jsxRuntime.jsx)(_index4.Text,{variant:"h3",align:"center",children:t}),(0,_jsxRuntime.jsx)(_index4.Text,{variant:"body",color:"secondary",align:"center",children:_?i:x})]}),_?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:u.actions,children:[(0,_jsxRuntime.jsx)(_index2.Button,{haptic:r,title:"Continue",size:"lg",fullWidth:!0,loading:d.requesting,onPress:()=>{d.request()}}),d.cancellable?(0,_jsxRuntime.jsx)(_index2.Button,{haptic:r,title:"Cancel",size:"lg",fullWidth:!0,variant:"ghost",tone:"neutral",disabled:d.requesting,onPress:d.cancel}):null]}):(0,_jsxRuntime.jsxs)(_reactNative.View,{style:u.actions,children:[a?(0,_jsxRuntime.jsx)(_index2.Button,{haptic:r,title:a.label,size:"lg",fullWidth:!0,onPress:a.onPress}):null,d.showSettings?(0,_jsxRuntime.jsx)(_reactNative.View,{style:u.link,children:(0,_jsxRuntime.jsx)(_index2.Button,{haptic:r,title:"Open Settings",variant:"link",onPress:()=>{d.openSettings()}})}):null]})]})};exports.PermissionPrompt=PermissionPrompt;const buildStyles=e=>_reactNative.StyleSheet.create({root:{gap:e.spacing.lg,paddingVertical:e.spacing.lg},header:{alignItems:"center",gap:e.spacing.sm},actions:{gap:e.spacing.sm},link:{alignItems:"center",paddingVertical:e.spacing.sm}});var _default=exports.default=PermissionPrompt;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.PermissionPrompt=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_index2=require("../Button/index.js"),_index3=require("../IconBadge/index.js"),_index4=require("../Text/index.js"),_usePermissionPrompt=require("./usePermissionPrompt.js"),_jsxRuntime=require("react/jsx-runtime");const ACCESS={camera:"Camera access",microphone:"Microphone access",photos:"Photo access",photosAdd:"Photo access",mediaLibrary:"Media library access",location:"Location access",locationAlways:"Location access",contacts:"Contacts access",calendar:"Calendar access",reminders:"Reminders access",notifications:"Notification access",bluetooth:"Bluetooth access",storage:"Storage access"},unavailableMessage=(e,t,s)=>{const i=ACCESS[e];return"unavailable"===t?`${i} is not available on this device.`:s?`${i} is off for this app. You can turn it on in Settings.`:`${i} is off, so this cannot be used right now.`},PermissionPrompt=({kind:e,title:t,reason:s,icon:i,onResult:n,fallback:a,haptic:r="selection",style:o,testID:c})=>{const l=(0,_index.useTheme)(),u=(0,_react.useMemo)(()=>buildStyles(l),[l]),d=(0,_usePermissionPrompt.usePermissionPrompt)(e,{onResult:n}),x=unavailableMessage(e,d.status,d.showSettings),m=(0,_react.useRef)(!1);if((0,_react.useEffect)(()=>{"explain"!==d.view?("unavailable"===d.view&&m.current&&(0,_announce.announce)(x),m.current=!1):m.current=!0},[d.view,x]),"explain"!==d.view&&"unavailable"!==d.view)return(0,_jsxRuntime.jsx)(_reactNative.View,{style:o,testID:c});const _="explain"===d.view;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[u.root,o],testID:c,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:u.header,children:[i?(0,_jsxRuntime.jsx)(_index3.IconBadge,{icon:i,size:"lg",tone:_?"primary":"neutral"}):null,(0,_jsxRuntime.jsx)(_index4.Text,{variant:"h3",align:"center",children:t}),(0,_jsxRuntime.jsx)(_index4.Text,{variant:"body",color:"secondary",align:"center",children:_?s:x})]}),_?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:u.actions,children:[(0,_jsxRuntime.jsx)(_index2.Button,{haptic:r,title:"Continue",size:"lg",fullWidth:!0,loading:d.requesting,onPress:()=>{d.request()}}),d.cancellable?(0,_jsxRuntime.jsx)(_index2.Button,{haptic:r,title:"Cancel",size:"lg",fullWidth:!0,variant:"ghost",tone:"neutral",disabled:d.requesting,onPress:d.cancel}):null]}):(0,_jsxRuntime.jsxs)(_reactNative.View,{style:u.actions,children:[a?(0,_jsxRuntime.jsx)(_index2.Button,{haptic:r,title:a.label,size:"lg",fullWidth:!0,onPress:a.onPress}):null,d.showSettings?(0,_jsxRuntime.jsx)(_reactNative.View,{style:u.link,children:(0,_jsxRuntime.jsx)(_index2.Button,{haptic:r,title:"Open Settings",variant:"link",onPress:()=>{d.openSettings()}})}):null]})]})};exports.PermissionPrompt=PermissionPrompt;const buildStyles=e=>_reactNative.StyleSheet.create({root:{gap:e.space.lg,paddingVertical:e.space.lg},header:{alignItems:"center",gap:e.space.sm},actions:{gap:e.space.sm},link:{alignItems:"center",paddingVertical:e.space.sm}});var _default=exports.default=PermissionPrompt;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.parseE164=exports.formatE164=exports.default=exports.PhoneNumberInput=exports.DEFAULT_CALLING_CODES=exports.ALL_CALLING_CODES=void 0;var _mobileCore=require("@webority/mobile-core"),_countries=require("@webority/mobile-core/phone/countries"),_react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_index4=require("../FieldBase/index.js"),_Chevron=require("../FieldBase/Chevron.js"),_useFloatingLabel=require("../FieldBase/useFloatingLabel.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_CALLING_CODES=exports.DEFAULT_CALLING_CODES=[{iso:"IN",code:"91",label:"India"},{iso:"AE",code:"971",label:"United Arab Emirates"},{iso:"GB",code:"44",label:"United Kingdom"},{iso:"US",code:"1",label:"United States"},{iso:"CA",code:"1",label:"Canada"},{iso:"AU",code:"61",label:"Australia"},{iso:"SG",code:"65",label:"Singapore"},{iso:"SA",code:"966",label:"Saudi Arabia"}],ALL_CALLING_CODES=exports.ALL_CALLING_CODES=(0,_mobileCore.getPhoneCountries)().map(e=>({iso:e.iso,code:e.callingCode,label:_countries.PHONE_COUNTRY_NAMES[e.iso]??e.iso})).sort((e,t)=>e.label.localeCompare(t.label)),digitsOnly=e=>e.replace(/[^0-9]/g,""),formatE164=e=>`+${e.callingCode}${e.nationalNumber}`;exports.formatE164=formatE164;const parseE164=(e,t,i)=>{const n=e.replace(/[^0-9]/g,"");if(!n)return null;const o=(0,_mobileCore.splitPhoneNumber)(`+${n}`);let r=o?.callingCode,l=o?.nationalNumber??"";if(!r){const e=Array.from(new Set(t.map(e=>e.code))).sort((e,t)=>t.length-e.length);if(r=e.find(e=>n.startsWith(e)),!r)return null;l=n.slice(r.length)}const a=t.filter(e=>e.code===r),s=a.find(e=>e.iso===i)?.iso??a.find(e=>e.iso===o?.country)?.iso??o?.country??a[0]?.iso??"";return{callingCode:r,nationalNumber:l,iso:s}};exports.parseE164=parseE164;const planOf=e=>(0,_mobileCore.isSupportedCountry)(e)?e:null,PhoneNumberInput=exports.PhoneNumberInput=(0,_react.forwardRef)((e,t)=>{const{value:i,defaultValue:n,onChange:o,e164:r,onChangeE164:l,returnKeyType:a,submitBehavior:s,onSubmitEditing:u,blurOnSubmit:c,onComplete:d,onValidityChange:b,countries:m=ALL_CALLING_CODES,popularCountries:p,popularCountriesTitle:_="Popular",allCountriesTitle:g="All countries",hiddenCountries:f,showFlag:h=!0,renderFlag:x,renderCountry:C,countrySearchPlaceholder:N,showAlphabetIndex:y,defaultIso:v="IN",validation:S="any",maxLength:L,formatAsYouType:E=!0,countryLocked:j=!1,label:I,labelMode:F="top",labelStyle:O,placeholder:T="Phone number",helperText:A,error:P,invalidMessage:R,required:D,disabled:w=!1,size:q="md",variant:k,borderRadius:M,countrySheetTitle:V="Country code",haptic:z,accessibilityLabel:B,countryAccessibilityLabel:$,onFocus:G,onBlur:U,style:W,testID:H}=e,Y=(0,_index2.useTheme)(),K=(0,_react.useMemo)(()=>buildStyles(Y),[Y]),X=(0,_react.useRef)(null),J=(0,_react.useMemo)(()=>f?.length?m.filter(e=>!f.includes(e.iso)):m,[m,f]),Q=(0,_react.useMemo)(()=>{if(!p?.length)return;const e=p.map(e=>J.find(t=>t.iso===e)).filter(e=>void 0!==e);return e.length?[{title:_,options:e},{title:g,options:J}]:void 0},[p,_,g,J]),Z=(0,_react.useCallback)((e,t,i)=>{if(!e)return null;if(x)return x(e);if(!h)return null;const n=(0,_mobileCore.countryFlagEmoji)(e.iso);return n?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[K.flag,{fontSize:t}],testID:i,children:n}):null},[x,h,K.flag]),ee=(0,_react.useCallback)(e=>{const t=planOf(e),i=t?(0,_mobileCore.maxNationalNumberLength)(t,!1===S?"any":S):Number.POSITIVE_INFINITY;return L?Math.min(i,L):i},[L,S]),te=(0,_react.useCallback)((e,t)=>e.slice(0,ee(t)),[ee]),ie=(0,_react.useCallback)((e,t)=>{const i=planOf(t)??void 0,n=(0,_mobileCore.splitPhoneNumber)(e,i);if(!n)return null;const o=n.country??t,r=m.find(e=>e.iso===o);return{callingCode:r?.code??n.callingCode,nationalNumber:te(n.nationalNumber,o),iso:r?.iso??o}},[m,te]),ne=(0,_react.useMemo)(()=>{const e=J.find(e=>e.iso===v)??J[0]??m[0],t={callingCode:e?.code??"91",nationalNumber:"",iso:e?.iso??"IN"};return"string"==typeof n?ie(n,t.iso)??t:n??t},[m,J,v,n,ie]),oe=(0,_react.useCallback)(e=>{if(!1===S)return e.nationalNumber.length>0;const t=planOf(e.iso);return t?(0,_mobileCore.isValidNationalNumber)(e.nationalNumber,t,S):e.nationalNumber.length>0},[S]),[re,le]=(0,_react.useState)(ne.iso),ae=(0,_react.useMemo)(()=>{if(void 0===r)return;const e=r?parseE164(r,m,re):null;if(e)return{...e,nationalNumber:te(e.nationalNumber,e.iso)};const t=m.find(e=>e.iso===re);return{callingCode:t?.code??ne.callingCode,nationalNumber:"",iso:re}},[r,m,re,ne.callingCode,te]),se=(0,_react.useCallback)(e=>{le(e.iso),o?.(e),l?.(e.nationalNumber?formatE164(e):"",{country:m.find(t=>t.iso===e.iso),national:e.nationalNumber,valid:oe(e)})},[o,l,m,oe]),[ue,ce]=(0,_index.useControllableState)({value:i??ae,defaultValue:ne,onChange:se}),[de,be]=(0,_react.useState)(!1),me=(0,_react.useCallback)(()=>{w||X.current?.focus()},[w]),[pe,ge]=(0,_react.useState)(!1),[fe,he]=(0,_react.useState)(!1),[xe,Ce]=(0,_react.useState)(!1),Ne=(0,_react.useRef)(!1);(0,_react.useEffect)(()=>{xe||(Ne.current=!1)},[xe]);const ye=(0,_index2.resolveFieldSize)(Y,q),ve=(0,_index4.resolveFieldTextStyle)(Y,{disabled:w}),Se=k??Y.components.field?.defaultVariant??"outlined",Le="underline"===Se,Ee=M??ye.radius,je=Y.spacing.md,[Ie,Fe]=(0,_react.useState)(0),Oe=Ie+je+1+je,Te=ue.nationalNumber.length>0,Ae=D&&!I&&!Te&&T.length>0,Pe=de||Te,Re=Boolean(I)&&"float"===F&&Ie>0,De=(0,_useFloatingLabel.useFloatingLabel)({label:I,enabled:Re,floated:Pe,required:D,variant:Se,sizeTokens:ye,leadingOffset:Oe,paddingLeft:Le?Y.spacing.none:ye.paddingX,color:Y.colors.field.label,style:O}),we=(0,_react.useMemo)(()=>m.find(e=>e.iso===ue.iso),[m,ue.iso]),qe=planOf(ue.iso),ke=E&&qe?(0,_mobileCore.formatPhoneAsTyped)(ue.nationalNumber,qe):ue.nationalNumber,Me=ee(ue.iso),Ve=0===ue.nationalNumber.length||pe||!Number.isFinite(Me)?void 0:ke.length+Math.max(0,Me-ue.nationalNumber.length),ze=oe(ue);(0,_react.useEffect)(()=>{Te||he(!1)},[Te]);const Be=qe?(0,_mobileCore.maxNationalNumberLength)(qe,!1===S?"any":S):Number.POSITIVE_INFINITY,$e=ue.nationalNumber.length>=Be,Ge=!1!==S&&!1!==R&&Te&&!ze&&(fe||$e),Ue="mobile"===S?"Enter a valid mobile number":"Enter a valid number",We=(0,_index4.hasFieldText)(P)?P:Ge?R||Ue:void 0,He=!0===P||(0,_index4.hasFieldText)(We),Ye=(0,_react.useRef)(ze),Ke=(0,_react.useRef)(ue);Ke.current=ue,(0,_react.useEffect)(()=>{Ye.current!==ze&&(Ye.current=ze,b?.(ze),ze&&d?.(formatE164(Ke.current)))},[ze,d,b]);const Xe=(0,_react.useCallback)(e=>{if(e.includes("+")){const t=ie(e,ue.iso);if(t&&!j&&J.some(e=>e.iso===t.iso))return void ce(t);if(t&&t.iso===ue.iso)return void ce(t)}ce({...ue,nationalNumber:te(digitsOnly(e),ue.iso)})},[J,j,ue,ie,te,ce]),Je=(0,_react.useCallback)(e=>{const t=e;ce({callingCode:t.code,iso:t.iso,nationalNumber:te(ue.nationalNumber,t.iso)}),Ce(!1);const i=(0,_index3.resolveHaptic)(z,"selection");i&&(0,_index3.triggerHaptic)(i)},[ue,z,te,ce]);(0,_react.useImperativeHandle)(t,()=>({focus:()=>X.current?.focus(),blur:()=>X.current?.blur(),clear:()=>ce({...Ke.current,nationalNumber:""}),isFocused:()=>X.current?.isFocused()??!1,getValue:()=>Ke.current,getE164:()=>formatE164(Ke.current),getFormatted:()=>{const e=Ke.current,t=planOf(e.iso);return t?(0,_mobileCore.formatPhoneAsTyped)(e.nationalNumber,t):e.nationalNumber},isValid:()=>oe(Ke.current),getCountry:()=>m.find(e=>e.iso===Ke.current.iso)}),[m,oe,ce]);const Qe=w||j,Ze=(0,_jsxRuntime.jsx)(_index4.FieldBase,{size:q,variant:Se,borderRadius:Ee,topNotch:De.topNotch,focused:de,disabled:w,error:He,filled:Te,onPress:me,pressFeedback:!1,leadingDivider:!0,paddingLeft:Le?Y.spacing.none:void 0,leading:(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>{Qe||(Ne.current=!0,Ce(!0))},disabled:Qe,accessibilityRole:"button",accessibilityLabel:$??`Country code, currently +${ue.callingCode}`,accessibilityState:{disabled:Qe},"aria-disabled":Qe,hitSlop:6,onLayout:e=>{const{width:t}=e.nativeEvent.layout;Fe(e=>e===t?e:t)},style:K.codeTrigger,testID:H?`${H}-code`:void 0,children:[Z(we,ye.text,H?`${H}-flag`:void 0),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[K.codeText,{color:ve.color,fontSize:ye.text}],children:`+${ue.callingCode}`}),j?null:(0,_jsxRuntime.jsx)(_Chevron.Chevron,{color:w?Y.colors.field.iconDisabled:Y.colors.field.icon,size:ye.icon,open:xe})]}),children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:K.inputWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:X,value:ke,maxLength:Ve,onChangeText:Xe,returnKeyType:a,submitBehavior:s,onSubmitEditing:u,blurOnSubmit:c,onSelectionChange:e=>{const{start:t,end:i}=e.nativeEvent.selection;ge(t!==i)},onFocus:()=>{be(!0),G?.()},onBlur:()=>{be(!1),Te&&!Ne.current&&he(!0),U?.()},editable:!w,placeholder:Re&&!Pe||Ae?void 0:T,placeholderTextColor:ve.placeholderColor,accessibilityLabel:B??I??T,selectionColor:Y.colors.field.caret,keyboardType:"phone-pad",textContentType:"telephoneNumber",autoComplete:"tel",style:[K.input,{color:ve.color,fontSize:ye.text,...ve.weightStyle,paddingLeft:Le?Y.spacing.none:void 0}],testID:H?`${H}-input`:void 0}),Ae?(0,_jsxRuntime.jsx)(_index4.RequiredPlaceholder,{text:T,color:ve.placeholderColor,fontSize:ye.text,weightStyle:ve.weightStyle}):null]})});return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W,testID:H,children:[I&&"top"===F?(0,_jsxRuntime.jsx)(_index4.FieldLabel,{size:q,required:D,children:I}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:K.fieldWrapper,children:[Ze,De.node]}),(0,_jsxRuntime.jsx)(_index4.FieldMessage,{size:q,error:He,text:He?We:A}),(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:xe,onClose:()=>Ce(!1),title:V,options:J,sections:Q,labelOf:e=>`${e.label} (+${e.code})`,getValue:e=>e.iso,disabledOf:()=>!1,descriptionOf:()=>{},iconOf:e=>Z(e,Y.typography.fontSize.lg),renderOption:C?(e,t)=>C(e,{selected:t.selected}):void 0,isSelected:e=>e===we?.iso,onSelect:Je,searchable:J.length>8,searchPlaceholder:N,alphabetIndex:y??J.length>20})]})});PhoneNumberInput.displayName="PhoneNumberInput";const buildStyles=e=>_reactNative.StyleSheet.create({fieldWrapper:{position:"relative",overflow:"visible"},codeTrigger:{flexDirection:"row",alignItems:"center",gap:e.spacing.xxs},flag:{includeFontPadding:!1,marginRight:e.spacing.xs},codeText:{...(0,_index2.fontFor)(e,"semibold"),fontWeight:"600",includeFontPadding:!1,writingDirection:"ltr"},input:{padding:e.spacing.none,margin:e.spacing.none,includeFontPadding:!1,writingDirection:"ltr"},inputWrap:{flex:1,alignSelf:"stretch",justifyContent:"center"}});var _default=exports.default=PhoneNumberInput;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.parseE164=exports.formatE164=exports.default=exports.PhoneNumberInput=exports.DEFAULT_CALLING_CODES=exports.ALL_CALLING_CODES=void 0;var _mobileCore=require("@webority/mobile-core"),_countries=require("@webority/mobile-core/phone/countries"),_react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_index4=require("../FieldBase/index.js"),_Chevron=require("../FieldBase/Chevron.js"),_useFloatingLabel=require("../FieldBase/useFloatingLabel.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_CALLING_CODES=exports.DEFAULT_CALLING_CODES=[{iso:"IN",code:"91",label:"India"},{iso:"AE",code:"971",label:"United Arab Emirates"},{iso:"GB",code:"44",label:"United Kingdom"},{iso:"US",code:"1",label:"United States"},{iso:"CA",code:"1",label:"Canada"},{iso:"AU",code:"61",label:"Australia"},{iso:"SG",code:"65",label:"Singapore"},{iso:"SA",code:"966",label:"Saudi Arabia"}],ALL_CALLING_CODES=exports.ALL_CALLING_CODES=(0,_mobileCore.getPhoneCountries)().map(e=>({iso:e.iso,code:e.callingCode,label:_countries.PHONE_COUNTRY_NAMES[e.iso]??e.iso})).sort((e,t)=>e.label.localeCompare(t.label)),digitsOnly=e=>e.replace(/[^0-9]/g,""),formatE164=e=>`+${e.callingCode}${e.nationalNumber}`;exports.formatE164=formatE164;const parseE164=(e,t,i)=>{const o=e.replace(/[^0-9]/g,"");if(!o)return null;const n=(0,_mobileCore.splitPhoneNumber)(`+${o}`);let r=n?.callingCode,l=n?.nationalNumber??"";if(!r){const e=Array.from(new Set(t.map(e=>e.code))).sort((e,t)=>t.length-e.length);if(r=e.find(e=>o.startsWith(e)),!r)return null;l=o.slice(r.length)}const a=t.filter(e=>e.code===r),s=a.find(e=>e.iso===i)?.iso??a.find(e=>e.iso===n?.country)?.iso??n?.country??a[0]?.iso??"";return{callingCode:r,nationalNumber:l,iso:s}};exports.parseE164=parseE164;const planOf=e=>(0,_mobileCore.isSupportedCountry)(e)?e:null,PhoneNumberInput=exports.PhoneNumberInput=(0,_react.forwardRef)((e,t)=>{const{value:i,defaultValue:o,onChange:n,e164:r,onChangeE164:l,returnKeyType:a,submitBehavior:s,onSubmitEditing:u,blurOnSubmit:c,onComplete:d,onValidityChange:b,countries:m=ALL_CALLING_CODES,popularCountries:p,popularCountriesTitle:_="Popular",allCountriesTitle:f="All countries",hiddenCountries:g,showFlag:h=!0,renderFlag:x,renderCountry:C,countrySearchPlaceholder:N,showAlphabetIndex:y,defaultIso:v="IN",validation:S="any",maxLength:L,formatAsYouType:E=!0,countryLocked:j=!1,label:I,labelMode:F="top",labelStyle:O,placeholder:T="Phone number",helperText:A,error:P,invalidMessage:R,required:D,disabled:w=!1,size:q="md",variant:k,borderRadius:M,countrySheetTitle:V="Country code",haptic:z,accessibilityLabel:B,countryAccessibilityLabel:$,onFocus:G,onBlur:U,style:W,testID:H}=e,Y=(0,_index2.useTheme)(),K=(0,_react.useMemo)(()=>buildStyles(Y),[Y]),J=(0,_react.useRef)(null),Q=(0,_react.useMemo)(()=>g?.length?m.filter(e=>!g.includes(e.iso)):m,[m,g]),X=(0,_react.useMemo)(()=>{if(!p?.length)return;const e=p.map(e=>Q.find(t=>t.iso===e)).filter(e=>void 0!==e);return e.length?[{title:_,options:e},{title:f,options:Q}]:void 0},[p,_,f,Q]),Z=(0,_react.useCallback)((e,t,i)=>{if(!e)return null;if(x)return x(e);if(!h)return null;const o=(0,_mobileCore.countryFlagEmoji)(e.iso);return o?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[K.flag,{fontSize:t}],testID:i,children:o}):null},[x,h,K.flag]),ee=(0,_react.useCallback)(e=>{const t=planOf(e),i=t?(0,_mobileCore.maxNationalNumberLength)(t,!1===S?"any":S):Number.POSITIVE_INFINITY;return L?Math.min(i,L):i},[L,S]),te=(0,_react.useCallback)((e,t)=>e.slice(0,ee(t)),[ee]),ie=(0,_react.useCallback)((e,t)=>{const i=planOf(t)??void 0,o=(0,_mobileCore.splitPhoneNumber)(e,i);if(!o)return null;const n=o.country??t,r=m.find(e=>e.iso===n);return{callingCode:r?.code??o.callingCode,nationalNumber:te(o.nationalNumber,n),iso:r?.iso??n}},[m,te]),oe=(0,_react.useMemo)(()=>{const e=Q.find(e=>e.iso===v)??Q[0]??m[0],t={callingCode:e?.code??"91",nationalNumber:"",iso:e?.iso??"IN"};return"string"==typeof o?ie(o,t.iso)??t:o??t},[m,Q,v,o,ie]),ne=(0,_react.useCallback)(e=>{if(!1===S)return e.nationalNumber.length>0;const t=planOf(e.iso);return t?(0,_mobileCore.isValidNationalNumber)(e.nationalNumber,t,S):e.nationalNumber.length>0},[S]),[re,le]=(0,_react.useState)(oe.iso),ae=(0,_react.useMemo)(()=>{if(void 0===r)return;const e=r?parseE164(r,m,re):null;if(e)return{...e,nationalNumber:te(e.nationalNumber,e.iso)};const t=m.find(e=>e.iso===re);return{callingCode:t?.code??oe.callingCode,nationalNumber:"",iso:re}},[r,m,re,oe.callingCode,te]),se=(0,_react.useCallback)(e=>{le(e.iso),n?.(e),l?.(e.nationalNumber?formatE164(e):"",{country:m.find(t=>t.iso===e.iso),national:e.nationalNumber,valid:ne(e)})},[n,l,m,ne]),[ue,ce]=(0,_index.useControllableState)({value:i??ae,defaultValue:oe,onChange:se}),[de,be]=(0,_react.useState)(!1),me=(0,_react.useCallback)(()=>{w||J.current?.focus()},[w]),[pe,fe]=(0,_react.useState)(!1),[ge,he]=(0,_react.useState)(!1),[xe,Ce]=(0,_react.useState)(!1),Ne=(0,_react.useRef)(!1);(0,_react.useEffect)(()=>{xe||(Ne.current=!1)},[xe]);const ye=(0,_index2.resolveFieldSize)(Y,q),ve=(0,_index4.resolveFieldTextStyle)(Y,{disabled:w}),Se=k??Y.settings.components.field?.defaultVariant??"outlined",Le="underline"===Se,Ee=M??ye.radius,je=Y.space.md,[Ie,Fe]=(0,_react.useState)(0),Oe=Ie+je+1+je,Te=ue.nationalNumber.length>0,Ae=D&&!I&&!Te&&T.length>0,Pe=de||Te,Re=Boolean(I)&&"float"===F&&Ie>0,De=(0,_useFloatingLabel.useFloatingLabel)({label:I,enabled:Re,floated:Pe,required:D,variant:Se,sizeTokens:ye,leadingOffset:Oe,paddingLeft:Le?Y.space.none:ye["padding-x"],color:Y.colors["field-label"],style:O}),we=(0,_react.useMemo)(()=>m.find(e=>e.iso===ue.iso),[m,ue.iso]),qe=planOf(ue.iso),ke=E&&qe?(0,_mobileCore.formatPhoneAsTyped)(ue.nationalNumber,qe):ue.nationalNumber,Me=ee(ue.iso),Ve=0===ue.nationalNumber.length||pe||!Number.isFinite(Me)?void 0:ke.length+Math.max(0,Me-ue.nationalNumber.length),ze=ne(ue);(0,_react.useEffect)(()=>{Te||he(!1)},[Te]);const Be=qe?(0,_mobileCore.maxNationalNumberLength)(qe,!1===S?"any":S):Number.POSITIVE_INFINITY,$e=ue.nationalNumber.length>=Be,Ge=!1!==S&&!1!==R&&Te&&!ze&&(ge||$e),Ue="mobile"===S?"Enter a valid mobile number":"Enter a valid number",We=(0,_index4.hasFieldText)(P)?P:Ge?R||Ue:void 0,He=!0===P||(0,_index4.hasFieldText)(We),Ye=(0,_react.useRef)(ze),Ke=(0,_react.useRef)(ue);Ke.current=ue,(0,_react.useEffect)(()=>{Ye.current!==ze&&(Ye.current=ze,b?.(ze),ze&&d?.(formatE164(Ke.current)))},[ze,d,b]);const Je=(0,_react.useCallback)(e=>{if(e.includes("+")){const t=ie(e,ue.iso);if(t&&!j&&Q.some(e=>e.iso===t.iso))return void ce(t);if(t&&t.iso===ue.iso)return void ce(t)}ce({...ue,nationalNumber:te(digitsOnly(e),ue.iso)})},[Q,j,ue,ie,te,ce]),Qe=(0,_react.useCallback)(e=>{const t=e;ce({callingCode:t.code,iso:t.iso,nationalNumber:te(ue.nationalNumber,t.iso)}),Ce(!1);const i=(0,_index3.resolveHaptic)(z,"selection");i&&(0,_index3.triggerHaptic)(i)},[ue,z,te,ce]);(0,_react.useImperativeHandle)(t,()=>({focus:()=>J.current?.focus(),blur:()=>J.current?.blur(),clear:()=>ce({...Ke.current,nationalNumber:""}),isFocused:()=>J.current?.isFocused()??!1,getValue:()=>Ke.current,getE164:()=>formatE164(Ke.current),getFormatted:()=>{const e=Ke.current,t=planOf(e.iso);return t?(0,_mobileCore.formatPhoneAsTyped)(e.nationalNumber,t):e.nationalNumber},isValid:()=>ne(Ke.current),getCountry:()=>m.find(e=>e.iso===Ke.current.iso)}),[m,ne,ce]);const Xe=w||j,Ze=(0,_jsxRuntime.jsx)(_index4.FieldBase,{size:q,variant:Se,borderRadius:Ee,topNotch:De.topNotch,focused:de,disabled:w,error:He,filled:Te,onPress:me,pressFeedback:!1,leadingDivider:!0,paddingLeft:Le?Y.space.none:void 0,leading:(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>{Xe||(Ne.current=!0,Ce(!0))},disabled:Xe,accessibilityRole:"button",accessibilityLabel:$??`Country code, currently +${ue.callingCode}`,accessibilityState:{disabled:Xe},"aria-disabled":Xe,hitSlop:6,onLayout:e=>{const{width:t}=e.nativeEvent.layout;Fe(e=>e===t?e:t)},style:K.codeTrigger,testID:H?`${H}-code`:void 0,children:[Z(we,ye.text,H?`${H}-flag`:void 0),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[K.codeText,{color:ve.color,fontSize:ye.text}],children:`+${ue.callingCode}`}),j?null:(0,_jsxRuntime.jsx)(_Chevron.Chevron,{color:w?Y.colors["field-icon-disabled"]:Y.colors["field-icon"],size:ye.icon,open:xe})]}),children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:K.inputWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:J,value:ke,maxLength:Ve,onChangeText:Je,returnKeyType:a,submitBehavior:s,onSubmitEditing:u,blurOnSubmit:c,onSelectionChange:e=>{const{start:t,end:i}=e.nativeEvent.selection;fe(t!==i)},onFocus:()=>{be(!0),G?.()},onBlur:()=>{be(!1),Te&&!Ne.current&&he(!0),U?.()},editable:!w,placeholder:Re&&!Pe||Ae?void 0:T,placeholderTextColor:ve.placeholderColor,accessibilityLabel:B??I??T,selectionColor:Y.colors["field-caret"],keyboardType:"phone-pad",textContentType:"telephoneNumber",autoComplete:"tel",style:[K.input,{color:ve.color,fontSize:ye.text,...ve.weightStyle,paddingLeft:Le?Y.space.none:void 0}],testID:H?`${H}-input`:void 0}),Ae?(0,_jsxRuntime.jsx)(_index4.RequiredPlaceholder,{text:T,color:ve.placeholderColor,fontSize:ye.text,weightStyle:ve.weightStyle}):null]})});return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W,testID:H,children:[I&&"top"===F?(0,_jsxRuntime.jsx)(_index4.FieldLabel,{size:q,required:D,children:I}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:K.fieldWrapper,children:[Ze,De.node]}),(0,_jsxRuntime.jsx)(_index4.FieldMessage,{size:q,error:He,text:He?We:A}),(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:xe,onClose:()=>Ce(!1),title:V,options:Q,sections:X,labelOf:e=>`${e.label} (+${e.code})`,getValue:e=>e.iso,disabledOf:()=>!1,descriptionOf:()=>{},iconOf:e=>Z(e,Y.text.lg.size),renderOption:C?(e,t)=>C(e,{selected:t.selected}):void 0,isSelected:e=>e===we?.iso,onSelect:Qe,searchable:Q.length>8,searchPlaceholder:N,alphabetIndex:y??Q.length>20})]})});PhoneNumberInput.displayName="PhoneNumberInput";const buildStyles=e=>_reactNative.StyleSheet.create({fieldWrapper:{position:"relative",overflow:"visible"},codeTrigger:{flexDirection:"row",alignItems:"center",gap:e.space.xxs},flag:{includeFontPadding:!1,marginRight:e.space.xs},codeText:{...(0,_index2.fontFor)(e,"semibold"),fontWeight:"600",includeFontPadding:!1,writingDirection:"ltr"},input:{padding:e.space.none,margin:e.space.none,includeFontPadding:!1,writingDirection:"ltr"},inputWrap:{flex:1,alignSelf:"stretch",justifyContent:"center"}});var _default=exports.default=PhoneNumberInput;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.PickerTrigger=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../FieldBase/index.js"),_Chevron=require("../FieldBase/Chevron.js"),_jsxRuntime=require("react/jsx-runtime");const PickerTrigger=exports.PickerTrigger=(0,_react.forwardRef)((e,i)=>{const{value:t,placeholder:r,label:l,help:s,helperText:n,error:a,required:d=!1,onPress:o,clearable:c=!1,onClear:x,leadingIcon:u,trailing:_,disabled:g=!1,size:y="md",variant:b,style:v,triggerStyle:j,valueStyle:h,labelStyle:m,messageStyle:S,accessibilityLabel:R,testID:T}=e,p=(0,_index.useTheme)(),f=(0,_react.useMemo)(()=>buildStyles(p),[p]),P=(0,_index.resolveFieldSize)(p,y),F=(0,_index2.resolveFieldTextStyle)(p,{disabled:g}),q="string"==typeof t&&t.length>0,z=!0===a||(0,_index2.hasFieldText)(a),w=(0,_index2.hasFieldText)(l),N=q?t:r??"Select…",k=q?F.color:F.placeholderColor,C=q?`${(0,_index2.fieldTextAsString)(l)??"Selection"}: ${t}`:r??"No selection",L=R??C,I={disabled:g},M=void 0===_,B=c&&q&&!g;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[f.root,v],testID:T,children:[w?(0,_jsxRuntime.jsx)(_index2.FieldLabel,{size:y,required:d,help:s,style:m,children:l}):null,(0,_jsxRuntime.jsx)(_index2.FieldBase,{size:y,variant:b,disabled:g,error:z,filled:q,onPress:o,leading:u,trailing:B||M||null!==_?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:f.trailingRow,children:[B?(0,_jsxRuntime.jsx)(_reactNative.Text,{onPress:()=>{g||x?.()},accessibilityRole:"button",accessibilityLabel:"Clear",style:{fontSize:P.icon,color:p.colors.text.secondary,paddingHorizontal:p.spacing.xs},children:"×"}):null,void 0!==_?_:M?(0,_jsxRuntime.jsx)(_Chevron.Chevron,{size:P.icon,color:g?p.colors.text.disabled:p.colors.text.tertiary}):null]}):null,accessibilityLabel:L,accessibilityState:I,accessibilityRole:"button",style:j,children:(0,_jsxRuntime.jsxs)(_reactNative.Text,{numberOfLines:1,style:[f.valueText,{color:k,fontSize:P.text,...F.weightStyle},h],children:[N,q||!d||w?null:(0,_jsxRuntime.jsx)(_index2.RequiredMark,{})]})}),(0,_jsxRuntime.jsx)(_index2.FieldMessage,{size:y,error:z,text:z?a:n,style:S})]})});PickerTrigger.displayName="PickerTrigger";const buildStyles=e=>_reactNative.StyleSheet.create({root:{width:"100%"},label:{includeFontPadding:!1},valueText:{flex:1,includeFontPadding:!1},message:{includeFontPadding:!1},trailingRow:{flexDirection:"row",alignItems:"center"}});var _default=exports.default=PickerTrigger;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.PickerTrigger=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../FieldBase/index.js"),_Chevron=require("../FieldBase/Chevron.js"),_jsxRuntime=require("react/jsx-runtime");const PickerTrigger=exports.PickerTrigger=(0,_react.forwardRef)((e,i)=>{const{value:t,placeholder:l,label:r,help:s,helperText:n,error:a,required:d=!1,onPress:o,clearable:c=!1,onClear:x,leadingIcon:u,trailing:_,disabled:g=!1,size:b="md",variant:y,style:v,triggerStyle:j,valueStyle:h,labelStyle:m,messageStyle:S,accessibilityLabel:R,testID:T}=e,p=(0,_index.useTheme)(),f=(0,_react.useMemo)(()=>buildStyles(p),[p]),P=(0,_index.resolveFieldSize)(p,b),F=(0,_index2.resolveFieldTextStyle)(p,{disabled:g}),q="string"==typeof t&&t.length>0,z=!0===a||(0,_index2.hasFieldText)(a),w=(0,_index2.hasFieldText)(r),N=q?t:l??"Select…",k=q?F.color:F.placeholderColor,C=q?`${(0,_index2.fieldTextAsString)(r)??"Selection"}: ${t}`:l??"No selection",L=R??C,I={disabled:g},M=void 0===_,B=c&&q&&!g;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[f.root,v],testID:T,children:[w?(0,_jsxRuntime.jsx)(_index2.FieldLabel,{size:b,required:d,help:s,style:m,children:r}):null,(0,_jsxRuntime.jsx)(_index2.FieldBase,{size:b,variant:y,disabled:g,error:z,filled:q,onPress:o,leading:u,trailing:B||M||null!==_?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:f.trailingRow,children:[B?(0,_jsxRuntime.jsx)(_reactNative.Text,{onPress:()=>{g||x?.()},accessibilityRole:"button",accessibilityLabel:"Clear",style:{fontSize:P.icon,color:p.colors["text-muted"],paddingHorizontal:p.space.xs},children:"×"}):null,void 0!==_?_:M?(0,_jsxRuntime.jsx)(_Chevron.Chevron,{size:P.icon,color:g?p.colors["text-disabled"]:p.colors["text-subtle"]}):null]}):null,accessibilityLabel:L,accessibilityState:I,accessibilityRole:"button",style:j,children:(0,_jsxRuntime.jsxs)(_reactNative.Text,{numberOfLines:1,style:[f.valueText,{color:k,fontSize:P.text,...F.weightStyle},h],children:[N,q||!d||w?null:(0,_jsxRuntime.jsx)(_index2.RequiredMark,{})]})}),(0,_jsxRuntime.jsx)(_index2.FieldMessage,{size:b,error:z,text:z?a:n,style:S})]})});PickerTrigger.displayName="PickerTrigger";const buildStyles=e=>_reactNative.StyleSheet.create({root:{width:"100%"},label:{includeFontPadding:!1},valueText:{flex:1,includeFontPadding:!1},message:{includeFontPadding:!1},trailingRow:{flexDirection:"row",alignItems:"center"}});var _default=exports.default=PickerTrigger;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ProfileCompletion=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_index2=require("../AppIcon/index.js"),_index3=require("../Avatar/index.js"),_index4=require("../ProgressRing/index.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_AVATAR_SIZE=56,DEFAULT_RING_WIDTH=3,DEFAULT_RING_GAP=1,ProfileCompletion=exports.ProfileCompletion=(0,_react.forwardRef)((e,t)=>{const{progress:i,title:r,subtitle:o,description:n,source:s,ImageComponent:a,size:l=DEFAULT_AVATAR_SIZE,avatarTone:c="neutral",avatarBackgroundColor:d,avatarColor:u,ringWidth:m,ringGap:x=DEFAULT_RING_GAP,ringVariant:p="banded",tone:_,ringColor:g,animated:y=!0,showCompleteBadge:h=!0,trailing:f,accessibilityLabel:b,style:j,titleStyle:v,subtitleStyle:R,descriptionStyle:S,testID:I}=e,N=(0,_index.useTheme)(),w=(0,_react.useMemo)(()=>buildStyles(N),[N]),A=m??N.components.progressRing?.strokeWidth??3,C=l+2*(x+A),T=Math.min(100,Math.max(0,Number.isNaN(i)?0:i)),D=Math.round(T),P=b??`${r}, profile ${D}% complete`,z=I??"profile-completion",L=h&&T>=100,V=Math.max(16,Math.round(.3*C)),G=C/2*(1+Math.SQRT1_2)-A/2,q=g??("banded"===p&&null==_||"success"===_?N.colors.success:"warning"===_?N.colors.warning:"error"===_?N.colors.error:N.colors.primary);return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,style:[w.root,j],testID:I,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:w.summary,accessible:!0,accessibilityRole:"summary",accessibilityLabel:P,accessibilityValue:{min:0,max:100,now:D},testID:`${z}-summary`,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{width:C,height:C},children:[(0,_jsxRuntime.jsx)(_index4.ProgressRing,{progress:T/100,size:C,strokeWidth:A,tone:_??"primary",ringColor:g,colorByProgress:"banded"===p&&null==_&&null==g,animated:y,testID:`${z}-ring`,children:(0,_jsxRuntime.jsx)(_index3.Avatar,{name:r,source:s,ImageComponent:a,size:l,tone:c,backgroundColor:d,color:u,accessibilityLabel:`${r}'s avatar`})}),L?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[w.badge,{width:V,height:V,borderRadius:N.radius.pill,..._corners.smoothCorners,left:G-V/2,top:G-V/2,backgroundColor:N.colors.background.elevated}],testID:`${z}-complete-badge`,children:(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:"verify",variant:"bold",size:V-2,color:q})}):null]}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:w.body,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[w.title,v],numberOfLines:2,children:r}),o?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[w.subtitle,R],numberOfLines:1,children:o}):null,n?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[w.description,S],children:n}):null]})]}),null!=f?(0,_jsxRuntime.jsx)(_reactNative.View,{style:w.trailing,children:f}):null]})});ProfileCompletion.displayName="ProfileCompletion";const buildStyles=e=>_reactNative.StyleSheet.create({root:{flexDirection:"row",alignItems:"center",columnGap:e.spacing.md},summary:{flex:1,flexDirection:"row",alignItems:"center",columnGap:e.spacing.md},body:{flex:1,rowGap:e.spacing.xxs},badge:{position:"absolute",alignItems:"center",justifyContent:"center"},title:{fontSize:e.typography.fontSize.xl,lineHeight:e.typography.fontSize.xl*e.typography.lineHeight.tight,color:e.colors.text.primary,...(0,_index.fontFor)(e,"semibold")},subtitle:{fontSize:e.typography.fontSize.sm,color:e.colors.text.tertiary,textTransform:"uppercase",letterSpacing:e.typography.letterSpacing.wide,...(0,_index.fontFor)(e,"medium")},description:{fontSize:e.typography.fontSize.base,color:e.colors.text.secondary,...(0,_index.fontFor)(e,"normal")},trailing:{alignSelf:"flex-start"}});var _default=exports.default=ProfileCompletion;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ProfileCompletion=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_index2=require("../AppIcon/index.js"),_index3=require("../Avatar/index.js"),_index4=require("../ProgressRing/index.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_AVATAR_SIZE=56,DEFAULT_RING_WIDTH=3,DEFAULT_RING_GAP=1,ProfileCompletion=exports.ProfileCompletion=(0,_react.forwardRef)((e,t)=>{const{progress:i,title:r,subtitle:s,description:o,source:n,ImageComponent:l,size:a=DEFAULT_AVATAR_SIZE,avatarTone:c="neutral",avatarBackgroundColor:d,avatarColor:u,ringWidth:m,ringGap:x=DEFAULT_RING_GAP,ringVariant:_="banded",tone:p,ringColor:g,animated:b=!0,showCompleteBadge:y=!0,trailing:f,accessibilityLabel:j,style:h,titleStyle:v,subtitleStyle:R,descriptionStyle:I,testID:N}=e,w=(0,_index.useTheme)(),A=(0,_react.useMemo)(()=>buildStyles(w),[w]),C=m??3,S=a+2*(x+C),T=Math.min(100,Math.max(0,Number.isNaN(i)?0:i)),D=Math.round(T),P=j??`${r}, profile ${D}% complete`,z=N??"profile-completion",L=y&&T>=100,V=Math.max(16,Math.round(.3*S)),G=S/2*(1+Math.SQRT1_2)-C/2,q=g??("banded"===_&&null==p||"success"===p?w.colors.success:"warning"===p?w.colors.warning:"danger"===p?w.colors.danger:w.colors.primary);return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,style:[A.root,h],testID:N,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:A.summary,accessible:!0,accessibilityRole:"summary",accessibilityLabel:P,accessibilityValue:{min:0,max:100,now:D},testID:`${z}-summary`,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{width:S,height:S},children:[(0,_jsxRuntime.jsx)(_index4.ProgressRing,{progress:T/100,size:S,strokeWidth:C,tone:p??"primary",ringColor:g,colorByProgress:"banded"===_&&null==p&&null==g,animated:b,testID:`${z}-ring`,children:(0,_jsxRuntime.jsx)(_index3.Avatar,{name:r,source:n,ImageComponent:l,size:a,tone:c,backgroundColor:d,color:u,accessibilityLabel:`${r}'s avatar`})}),L?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[A.badge,{width:V,height:V,borderRadius:w.radius.pill,..._corners.smoothCorners,left:G-V/2,top:G-V/2,backgroundColor:w.colors.surface}],testID:`${z}-complete-badge`,children:(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:"verify",variant:"bold",size:V-2,color:q})}):null]}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:A.body,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[A.title,v],numberOfLines:2,children:r}),s?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[A.subtitle,R],numberOfLines:1,children:s}):null,o?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[A.description,I],children:o}):null]})]}),null!=f?(0,_jsxRuntime.jsx)(_reactNative.View,{style:A.trailing,children:f}):null]})});ProfileCompletion.displayName="ProfileCompletion";const buildStyles=e=>_reactNative.StyleSheet.create({root:{flexDirection:"row",alignItems:"center",columnGap:e.space.md},summary:{flex:1,flexDirection:"row",alignItems:"center",columnGap:e.space.md},body:{flex:1,rowGap:e.space.xxs},badge:{position:"absolute",alignItems:"center",justifyContent:"center"},title:{fontSize:e.text.xl.size,lineHeight:e.text.xl.size*e.leading.tight,color:e.colors["text-body"],...(0,_index.fontFor)(e,"semibold")},subtitle:{fontSize:e.text.sm.size,color:e.colors["text-subtle"],textTransform:"uppercase",letterSpacing:e["letter-spacing"].wide,...(0,_index.fontFor)(e,"medium")},description:{fontSize:e.text.base.size,color:e.colors["text-muted"],...(0,_index.fontFor)(e,"normal")},trailing:{alignSelf:"flex-start"}});var _default=exports.default=ProfileCompletion;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ProfilePicker=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_index3=require("../AppIcon/index.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index4=require("../Avatar/index.js"),_index5=require("../FieldBase/index.js"),_FilePicker=require("../FilePicker/FilePicker.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_index6=require("../Spinner/index.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_LABELS={pick:"Change profile photo",remove:"Remove photo",sheetTitle:"Change photo",errorTooLarge:e=>`The photo is larger than ${e} MB.`,errorWrongType:"That file is not a supported image."},DEFAULT_ACCEPT=["image/*"],SHEET_ICON_SIZE=20,SOFT_FILL_OPACITY=.14,SIZE_PX={sm:72,md:120,lg:160},clamp=(e,r,t)=>Math.min(t,Math.max(r,e)),toneFor=(e,r)=>{switch(r){case"success":return{base:e.colors.success,on:e.colors.onSuccess};case"warning":return{base:e.colors.warning,on:e.colors.onWarning};case"error":return{base:e.colors.error,on:e.colors.onError};case"info":return{base:e.colors.info,on:e.colors.onInfo};case"neutral":return{base:e.colors.text.secondary,on:e.colors.onNeutral};default:return{base:e.colors.primary,on:e.colors.onPrimary}}},badgeLookFor=(e,r,t,o)=>{const i=toneFor(e,r),n=o?.badgeColor??i.base,s=e.colors.background.primary,l="neutral"===r&&void 0===o?.badgeColor;let a;switch(t){case"soft":a={fill:l?e.colors.background.tertiary:(0,_color.blendOf)(n,.14,s,e.colors.background.secondary),ring:s,icon:n};break;case"outline":a={fill:s,ring:l?e.colors.border.primary:n,icon:n};break;default:a={fill:n,ring:s,icon:i.on}}return o?.badgeIconColor?{...a,icon:o.badgeIconColor}:a},resolveRadius=(e,r)=>"circle"===e?r/2:"rounded"===e?Math.max(6,Math.round(.22*r)):0,REMOVE_VALUE="__profile-picker-remove__",ProfilePicker=exports.ProfilePicker=(0,_react.forwardRef)((e,r)=>{const{value:t,name:o,sources:i,onPick:n,onRemove:s,loading:l=!1,disabled:a=!1,accept:c=DEFAULT_ACCEPT,maxSizeMB:u,size:d="md",shape:_="circle",badgeIcon:m="camera",tone:x,variant:p,avatarTone:b,avatarBackgroundColor:g,avatarColor:h,label:y,required:f=!1,helperText:v,error:j,layout:k="stacked",title:C,subtitle:S,ImageComponent:R,labels:I,haptic:T,onError:P,accessibilityLabel:F,style:E,testID:w}=e,A=(0,_index.useTheme)(),L=A.components.profilePicker,M=x??L?.defaultTone??"primary",O=p??L?.defaultVariant??"solid",q=(0,_react.useMemo)(()=>badgeLookFor(A,M,O,L),[A,M,O,L]),N=b??L?.defaultAvatarTone,z=(0,_react.useMemo)(()=>{const e=N?(0,_index4.avatarToneColors)(A,N):null;return{background:g??e?.background??A.colors.background.tertiary,icon:h??e?.color??A.colors.text.tertiary}},[A,N,g,h]),V=(0,_react.useMemo)(()=>({...DEFAULT_LABELS,...I}),[I]),[D,B]=(0,_react.useState)(null),[H,U]=(0,_react.useState)(null),[W,$]=(0,_react.useState)(!1),[Z,G]=(0,_react.useState)(t);t!==Z&&(G(t),B(null));const X=l||a,Q=D??t??null,Y=j??H??void 0,J=!X&&(null!==D||Boolean(t)&&Boolean(s)),K=i.length>0||J,ee="number"==typeof d?d:SIZE_PX[d],re=resolveRadius(_,ee),te=re*(1-Math.SQRT1_2),oe=clamp(Math.round(.28*ee),24,44),ie=te-oe/2,ne=Math.max(0,-ie),se=(0,_react.useCallback)(e=>{U(e),P?.(e),!1!==T&&(0,_index2.triggerHaptic)("notificationError")},[P,T]),le=(0,_react.useCallback)(async e=>{let r;try{r=await e.pick()}catch(e){return void se(e instanceof Error?e.message:String(e))}const t=r?.[0];if(!t)return;if("number"==typeof u&&"number"==typeof t.size&&t.size>1024*u*1024)return void se(V.errorTooLarge(u));if(t.type&&!(0,_FilePicker.matchesAccept)(t.type,c))return void se(V.errorWrongType);U(null),B(t.uri);const o=(0,_index2.resolveHaptic)(T,"selection");o&&(0,_index2.triggerHaptic)(o),n?.(t)},[u,c,V,T,n,se]),ae=(0,_react.useCallback)(()=>{X||(de.current=null,1!==i.length||J?(i.length>0||J)&&$(!0):le(i[0]))},[X,i,J,le]),ce=(0,_react.useCallback)(()=>{B(null),U(null);const e=(0,_index2.resolveHaptic)(T,"selection");e&&(0,_index2.triggerHaptic)(e),s?.()},[T,s]),ue=(0,_react.useMemo)(()=>{const e=i.map(e=>({kind:"source",source:e}));return J&&e.push({kind:"remove"}),e},[i,J]),de=(0,_react.useRef)(null),me=(0,_react.useCallback)(e=>{de.current||($(!1),"remove"===e.kind?ce():de.current=e.source)},[ce]),xe=(0,_react.useCallback)(()=>{const e=de.current;de.current=null,e&&le(e)},[le]),pe=w??"profile-picker",be=F??(K?V.pick:o),ge=(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.fill,{width:ee,height:ee,borderRadius:re,..._corners.smoothCorners,backgroundColor:z.background}],children:(0,_jsxRuntime.jsx)(_index3.AppIcon,{name:"user",size:Math.round(.45*ee),color:z.icon})}),he=(0,_jsxRuntime.jsx)(_reactNative.View,{style:{width:ee,height:ee,marginBottom:ne,marginRight:ne},children:(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:ae,disabled:X||!K,accessibilityRole:K?"button":"image",accessibilityLabel:be,accessibilityHint:(0,_index5.fieldTextAsString)(Y),accessibilityState:K?{disabled:X,busy:l}:{busy:l},"aria-disabled":K?X:void 0,"aria-busy":l,testID:`${pe}-button`,style:({pressed:e})=>[{width:ee,height:ee,borderRadius:re,..._corners.smoothCorners},{opacity:a?.55:e?.85:1}],children:[Q||o?(0,_jsxRuntime.jsx)(_index4.Avatar,{source:Q?{uri:Q}:void 0,name:o,size:ee,shape:_,tone:N,backgroundColor:g,color:h,ImageComponent:R,accessibilityLabel:be},Q??"initials"):ge,l?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.fill,styles.overlay,{borderRadius:re,..._corners.smoothCorners,backgroundColor:A.colors.background.overlay}],testID:`${pe}-loading`,children:(0,_jsxRuntime.jsx)(_index6.Spinner,{size:ee>=100?"md":"sm",color:A.colors.onPrimary})}):null,!a&&K?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:`${pe}-badge`,style:[styles.badge,{width:oe,height:oe,borderRadius:A.radius.pill,..._corners.smoothCorners,right:ie,bottom:ie,backgroundColor:q.fill,borderColor:q.ring}],children:(0,_slotIcon.renderSlotIcon)(m,{color:q.icon,size:Math.round(.55*oe),disabled:!1})}):null]})}),ye="stacked"!==k?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[styles.meta,"profile"===k?styles.metaCentred:null],children:[C?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[styles.title,"profile"===k?styles.textCentred:null,{color:A.colors.text.primary,fontSize:A.typography.fontSize.base,...(0,_index.fontFor)(A,"semibold")}],children:C}):null,S?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[styles.subtitle,"profile"===k?styles.textCentred:null,{color:A.colors.text.secondary,fontSize:A.typography.fontSize.sm,marginTop:A.spacing.xxs,...(0,_index.fontFor)(A,"normal")}],children:S}):null,(0,_jsxRuntime.jsx)(_index5.FieldMessage,{text:Y??v,error:(0,_index5.hasFieldText)(Y)})]}):(0,_jsxRuntime.jsx)(_index5.FieldMessage,{text:Y??v,error:(0,_index5.hasFieldText)(Y)});return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:r,style:E,testID:w,children:[y?(0,_jsxRuntime.jsx)(_index5.FieldLabel,{required:f,children:y}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:"inline"===k?[styles.row,{columnGap:A.spacing.md}]:["profile"===k?styles.columnCentred:styles.column,{rowGap:A.spacing.xs}],children:[he,ye]}),(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:W,onClose:()=>$(!1),onAfterClose:xe,title:V.sheetTitle,options:ue,labelOf:e=>{const r=e;return"remove"===r.kind?V.remove:r.source.label},getValue:e=>{const r=e;return"remove"===r.kind?REMOVE_VALUE:r.source.key},disabledOf:()=>!1,destructiveOf:e=>"remove"===e.kind,descriptionOf:e=>{const r=e;return"remove"===r.kind?void 0:r.source.description},iconOf:e=>{const r=e;return"remove"===r.kind?(0,_jsxRuntime.jsx)(_index3.AppIcon,{name:"trash",size:20,color:A.colors.toneText.error}):r.source.icon},isSelected:()=>!1,onSelect:e=>me(e)})]})});ProfilePicker.displayName="ProfilePicker";const styles=_reactNative.StyleSheet.create({fill:{alignItems:"center",justifyContent:"center",overflow:"hidden"},overlay:{..._reactNative.StyleSheet.absoluteFill},badge:{position:"absolute",alignItems:"center",justifyContent:"center",borderWidth:2},row:{flexDirection:"row",alignItems:"center"},column:{alignItems:"flex-start"},columnCentred:{alignItems:"center"},meta:{flexShrink:1},metaCentred:{alignItems:"center"},title:{includeFontPadding:!1},subtitle:{includeFontPadding:!1},textCentred:{textAlign:"center"}});var _default=exports.default=ProfilePicker;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ProfilePicker=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_index3=require("../AppIcon/index.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index4=require("../Avatar/index.js"),_index5=require("../FieldBase/index.js"),_FilePicker=require("../FilePicker/FilePicker.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_index6=require("../Spinner/index.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_LABELS={pick:"Change profile photo",remove:"Remove photo",sheetTitle:"Change photo",errorTooLarge:e=>`The photo is larger than ${e} MB.`,errorWrongType:"That file is not a supported image."},DEFAULT_ACCEPT=["image/*"],SHEET_ICON_SIZE=20,SOFT_FILL_OPACITY=.14,SIZE_PX={sm:72,md:120,lg:160},clamp=(e,r,t)=>Math.min(t,Math.max(r,e)),toneFor=(e,r)=>{switch(r){case"success":return{base:e.colors.success,on:e.colors["on-success"]};case"warning":return{base:e.colors.warning,on:e.colors["on-warning"]};case"danger":return{base:e.colors.danger,on:e.colors["on-danger"]};case"info":return{base:e.colors.info,on:e.colors["on-info"]};case"neutral":return{base:e.colors["text-muted"],on:e.colors["on-neutral-strong"]};default:return{base:e.colors.primary,on:e.colors["on-primary"]}}},badgeLookFor=(e,r,t)=>{const o=toneFor(e,r),i=o.base,s=e.colors.bg,n="neutral"===r;let l;switch(t){case"soft":l={fill:n?e.colors["bg-muted"]:(0,_color.blendOf)(i,.14,s,e.colors["bg-subtle"]),ring:s,icon:i};break;case"outline":l={fill:s,ring:n?e.colors.border:i,icon:i};break;default:l={fill:i,ring:s,icon:o.on}}return l},resolveRadius=(e,r)=>"circle"===e?r/2:"rounded"===e?Math.max(6,Math.round(.22*r)):0,REMOVE_VALUE="__profile-picker-remove__",ProfilePicker=exports.ProfilePicker=(0,_react.forwardRef)((e,r)=>{const{value:t,name:o,sources:i,onPick:s,onRemove:n,loading:l=!1,disabled:a=!1,accept:c=DEFAULT_ACCEPT,maxSizeMB:u,size:d="md",shape:m="circle",badgeIcon:_="camera",tone:x,variant:p,avatarTone:b,avatarBackgroundColor:g,avatarColor:h,label:f,required:y=!1,helperText:v,error:j,layout:k="stacked",title:C,subtitle:R,ImageComponent:S,labels:T,haptic:I,onError:P,accessibilityLabel:F,style:w,testID:E}=e,A=(0,_index.useTheme)(),L=A.settings.components["profile-picker"],M=x??L?.defaultTone??"primary",O=p??L?.defaultVariant??"solid",q=(0,_react.useMemo)(()=>badgeLookFor(A,M,O),[A,M,O]),N=b??L?.defaultAvatarTone,z=(0,_react.useMemo)(()=>{const e=N?(0,_index4.avatarToneColors)(A,N):null;return{background:g??e?.background??A.colors["bg-muted"],icon:h??e?.color??A.colors["text-subtle"]}},[A,N,g,h]),V=(0,_react.useMemo)(()=>({...DEFAULT_LABELS,...T}),[T]),[D,B]=(0,_react.useState)(null),[H,U]=(0,_react.useState)(null),[$,W]=(0,_react.useState)(!1),[Z,G]=(0,_react.useState)(t);t!==Z&&(G(t),B(null));const X=l||a,Q=D??t??null,Y=j??H??void 0,J=!X&&(null!==D||Boolean(t)&&Boolean(n)),K=i.length>0||J,ee="number"==typeof d?d:SIZE_PX[d],re=resolveRadius(m,ee),te=re*(1-Math.SQRT1_2),oe=clamp(Math.round(.28*ee),24,44),ie=te-oe/2,se=Math.max(0,-ie),ne=(0,_react.useCallback)(e=>{U(e),P?.(e),!1!==I&&(0,_index2.triggerHaptic)("notificationError")},[P,I]),le=(0,_react.useCallback)(async e=>{let r;try{r=await e.pick()}catch(e){return void ne(e instanceof Error?e.message:String(e))}const t=r?.[0];if(!t)return;if("number"==typeof u&&"number"==typeof t.size&&t.size>1024*u*1024)return void ne(V.errorTooLarge(u));if(t.type&&!(0,_FilePicker.matchesAccept)(t.type,c))return void ne(V.errorWrongType);U(null),B(t.uri);const o=(0,_index2.resolveHaptic)(I,"selection");o&&(0,_index2.triggerHaptic)(o),s?.(t)},[u,c,V,I,s,ne]),ae=(0,_react.useCallback)(()=>{X||(de.current=null,1!==i.length||J?(i.length>0||J)&&W(!0):le(i[0]))},[X,i,J,le]),ce=(0,_react.useCallback)(()=>{B(null),U(null);const e=(0,_index2.resolveHaptic)(I,"selection");e&&(0,_index2.triggerHaptic)(e),n?.()},[I,n]),ue=(0,_react.useMemo)(()=>{const e=i.map(e=>({kind:"source",source:e}));return J&&e.push({kind:"remove"}),e},[i,J]),de=(0,_react.useRef)(null),me=(0,_react.useCallback)(e=>{de.current||(W(!1),"remove"===e.kind?ce():de.current=e.source)},[ce]),xe=(0,_react.useCallback)(()=>{const e=de.current;de.current=null,e&&le(e)},[le]),pe=E??"profile-picker",be=F??(K?V.pick:o),ge=(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.fill,{width:ee,height:ee,borderRadius:re,..._corners.smoothCorners,backgroundColor:z.background}],children:(0,_jsxRuntime.jsx)(_index3.AppIcon,{name:"user",size:Math.round(.45*ee),color:z.icon})}),he=(0,_jsxRuntime.jsx)(_reactNative.View,{style:{width:ee,height:ee,marginBottom:se,marginRight:se},children:(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:ae,disabled:X||!K,accessibilityRole:K?"button":"image",accessibilityLabel:be,accessibilityHint:(0,_index5.fieldTextAsString)(Y),accessibilityState:K?{disabled:X,busy:l}:{busy:l},"aria-disabled":K?X:void 0,"aria-busy":l,testID:`${pe}-button`,style:({pressed:e})=>[{width:ee,height:ee,borderRadius:re,..._corners.smoothCorners},{opacity:a?.55:e?.85:1}],children:[Q||o?(0,_jsxRuntime.jsx)(_index4.Avatar,{source:Q?{uri:Q}:void 0,name:o,size:ee,shape:m,tone:N,backgroundColor:g,color:h,ImageComponent:S,accessibilityLabel:be},Q??"initials"):ge,l?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.fill,styles.overlay,{borderRadius:re,..._corners.smoothCorners,backgroundColor:A.colors.scrim}],testID:`${pe}-loading`,children:(0,_jsxRuntime.jsx)(_index6.Spinner,{size:ee>=100?"md":"sm",color:A.colors["on-primary"]})}):null,!a&&K?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:`${pe}-badge`,style:[styles.badge,{width:oe,height:oe,borderRadius:A.radius.pill,..._corners.smoothCorners,right:ie,bottom:ie,backgroundColor:q.fill,borderColor:q.ring}],children:(0,_slotIcon.renderSlotIcon)(_,{color:q.icon,size:Math.round(.55*oe),disabled:!1})}):null]})}),fe="stacked"!==k?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[styles.meta,"profile"===k?styles.metaCentred:null],children:[C?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[styles.title,"profile"===k?styles.textCentred:null,{color:A.colors["text-body"],fontSize:A.text.base.size,...(0,_index.fontFor)(A,"semibold")}],children:C}):null,R?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[styles.subtitle,"profile"===k?styles.textCentred:null,{color:A.colors["text-muted"],fontSize:A.text.sm.size,marginTop:A.space.xxs,...(0,_index.fontFor)(A,"normal")}],children:R}):null,(0,_jsxRuntime.jsx)(_index5.FieldMessage,{text:Y??v,error:(0,_index5.hasFieldText)(Y)})]}):(0,_jsxRuntime.jsx)(_index5.FieldMessage,{text:Y??v,error:(0,_index5.hasFieldText)(Y)});return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:r,style:w,testID:E,children:[f?(0,_jsxRuntime.jsx)(_index5.FieldLabel,{required:y,children:f}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:"inline"===k?[styles.row,{columnGap:A.space.md}]:["profile"===k?styles.columnCentred:styles.column,{rowGap:A.space.xs}],children:[he,fe]}),(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:$,onClose:()=>W(!1),onAfterClose:xe,title:V.sheetTitle,options:ue,labelOf:e=>{const r=e;return"remove"===r.kind?V.remove:r.source.label},getValue:e=>{const r=e;return"remove"===r.kind?REMOVE_VALUE:r.source.key},disabledOf:()=>!1,destructiveOf:e=>"remove"===e.kind,descriptionOf:e=>{const r=e;return"remove"===r.kind?void 0:r.source.description},iconOf:e=>{const r=e;return"remove"===r.kind?(0,_jsxRuntime.jsx)(_index3.AppIcon,{name:"trash",size:20,color:A.colors["danger-text"]}):r.source.icon},isSelected:()=>!1,onSelect:e=>me(e)})]})});ProfilePicker.displayName="ProfilePicker";const styles=_reactNative.StyleSheet.create({fill:{alignItems:"center",justifyContent:"center",overflow:"hidden"},overlay:{..._reactNative.StyleSheet.absoluteFill},badge:{position:"absolute",alignItems:"center",justifyContent:"center",borderWidth:2},row:{flexDirection:"row",alignItems:"center"},column:{alignItems:"flex-start"},columnCentred:{alignItems:"center"},meta:{flexShrink:1},metaCentred:{alignItems:"center"},title:{includeFontPadding:!1},subtitle:{includeFontPadding:!1},textCentred:{textAlign:"center"}});var _default=exports.default=ProfilePicker;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ProgressBar=void 0;var _react=require("react"),_reactNative=require("react-native"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_jsxRuntime=require("react/jsx-runtime");const toneColor=(e,t)=>{switch(t){case"success":return e.colors.success;case"warning":return e.colors.warning;case"error":return e.colors.error;default:return e.colors.primary}},GLOW_LOCATIONS=[0,.35,.5,.65,1],glowOf=e=>{const t=(0,_color.tintOf)(e,0,"transparent"),r=(0,_color.tintOf)(e,.6,e);return{colors:[t,r,e,r,t],locations:GLOW_LOCATIONS,start:{x:0,y:.5},end:{x:1,y:.5}}},clampProgress=e=>"number"!=typeof e||Number.isNaN(e)||e<0?0:e>1?1:e,ProgressBar=exports.ProgressBar=(0,_react.forwardRef)((e,t)=>{const r=(0,_index.useTheme)(),i=(0,_useReducedMotion.useReducedMotion)(),{progress:a,label:s,showPercent:n=!1,indeterminate:o,height:l=6,radius:c,tone:u="primary",trackColor:d,barColor:m,gradient:_,segments:p,animated:g=!0,style:x,containerStyle:y,barStyle:h,accessibilityLabel:f,testID:v}=e,b=o??"number"!=typeof a,R=clampProgress(a),j=(0,_react.useRef)((0,_index.createAnimatedValue)(R)).current,w=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,N=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,V=(0,_react.useRef)(0),A=r.components.progressBar?.determinateAnimationDuration??400,S=r.components.progressBar?.indeterminateLoopDuration??1500,B=r.components.progressBar?.indeterminateWidth??"30%",C=(0,_react.useMemo)(()=>buildStyles(r),[r]),O=c??r.radius.pill,P=d??r.colors.surface.disabled,M=m??toneColor(r,u),L=(0,_react.useMemo)(()=>_?"string"==typeof _?r.gradients[_]??null:_:null,[_,r.gradients]),k=(0,_react.useMemo)(()=>glowOf(M),[M]),D=Array.isArray(p)&&p.length>0;(0,_react.useEffect)(()=>{b||(g?_reactNative.Animated.timing(j,{toValue:R,duration:A,easing:_reactNative.Easing.bezier(...r.motion.easing.standard),useNativeDriver:!1}).start():j.setValue(R))},[g,R,A,j,b,r]),(0,_react.useEffect)(()=>{if(!b)return;(0,_index.setNativeValue)(w,0);const e=_reactNative.Animated.loop(_reactNative.Animated.timing(w,{toValue:1,duration:S,easing:_reactNative.Easing.inOut(_reactNative.Easing.ease),useNativeDriver:!0}));return e.start(),()=>{e.stop()}},[b,w,S]);const q=j.interpolate({inputRange:[0,1],outputRange:["0%","100%"]}),E=w.interpolate({inputRange:[0,1],outputRange:[-1,1]}),G=w.interpolate({inputRange:[0,.5,1],outputRange:[.4,1,.4]}),I=n&&!b&&!D,T=null!=s||I,F=f??("string"==typeof s?s:void 0),z=(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,accessibilityRole:"progressbar",accessibilityLabel:F,accessibilityValue:b?{text:"Loading"}:{min:0,max:100,now:Math.round(100*R)},testID:v,onLayout:e=>{const t=e.nativeEvent.layout.width;V.current=t,(0,_index.setNativeValue)(N,t)},style:[C.track,{height:l,borderRadius:O,..._corners.smoothCorners,backgroundColor:P},x,y],children:D?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[C.segments,{height:l}],children:(p??[]).map((e,t)=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:{width:100*clampProgress(e.value)+"%",height:l,backgroundColor:e.color??toneColor(r,e.tone??"primary")}},t))}):b?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[C.indeterminateBar,{height:l,width:i?"100%":B,opacity:i?G:1,transform:i?[]:[{translateX:_reactNative.Animated.multiply(E,N)}]},h],children:(0,_jsxRuntime.jsx)(_index.Gradient,{gradient:k,style:_reactNative.StyleSheet.absoluteFill})}):(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[C.determinateBar,{height:l,borderRadius:O,..._corners.smoothCorners,backgroundColor:L?"transparent":M,width:q,overflow:L?"hidden":void 0},h],children:L?(0,_jsxRuntime.jsx)(_index.Gradient,{gradient:L,style:_reactNative.StyleSheet.absoluteFill}):null})});if(!T)return z;const W={fontSize:r.typography.fontSize.sm,...(0,_index.fontFor)(r,"medium")};return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:C.wrapper,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[C.labelRow,{marginBottom:r.spacing.xs}],children:["string"==typeof s||"number"==typeof s?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[C.label,W,{color:r.colors.text.primary}],children:s}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:C.label,children:s}),I?(0,_jsxRuntime.jsx)(_reactNative.Text,{accessible:!1,importantForAccessibility:"no",style:[W,{color:r.colors.text.secondary}],children:`${Math.round(100*R)}%`}):null]}),z]})});ProgressBar.displayName="ProgressBar";const buildStyles=e=>_reactNative.StyleSheet.create({wrapper:{width:"100%"},labelRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",columnGap:e.spacing.sm},label:{flexShrink:1},track:{width:"100%",overflow:"hidden"},determinateBar:{position:"absolute",left:0,top:0},indeterminateBar:{position:"absolute",left:0,top:0},segments:{flexDirection:"row",width:"100%"}});var _default=exports.default=ProgressBar;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ProgressBar=void 0;var _react=require("react"),_reactNative=require("react-native"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_jsxRuntime=require("react/jsx-runtime");const toneColor=(e,t)=>{switch(t){case"success":return e.colors.success;case"warning":return e.colors.warning;case"danger":return e.colors.danger;default:return e.colors.primary}},DETERMINATE_ANIMATION_DURATION=400,INDETERMINATE_LOOP_DURATION=1500,INDETERMINATE_WIDTH="30%",GLOW_LOCATIONS=[0,.35,.5,.65,1],glowOf=e=>{const t=(0,_color.tintOf)(e,0,"transparent"),r=(0,_color.tintOf)(e,.6,e);return{colors:[t,r,e,r,t],locations:GLOW_LOCATIONS,start:{x:0,y:.5},end:{x:1,y:.5}}},clampProgress=e=>"number"!=typeof e||Number.isNaN(e)||e<0?0:e>1?1:e,ProgressBar=exports.ProgressBar=(0,_react.forwardRef)((e,t)=>{const r=(0,_index.useTheme)(),i=(0,_useReducedMotion.useReducedMotion)(),{progress:a,label:s,showPercent:n=!1,indeterminate:o,height:l=6,radius:c,tone:u="primary",trackColor:d,barColor:_,gradient:m,segments:g,animated:x=!0,style:p,containerStyle:y,barStyle:h,accessibilityLabel:f,testID:N}=e,v=o??"number"!=typeof a,R=clampProgress(a),b=(0,_react.useRef)((0,_index.createAnimatedValue)(R)).current,j=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,w=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,A=(0,_react.useRef)(0),O=(0,_react.useMemo)(()=>buildStyles(r),[r]),V=c??r.radius.pill,E=d??r.colors["surface-disabled"],I=_??toneColor(r,u),T=(0,_react.useMemo)(()=>m?"string"==typeof m?r.settings.gradients[m]??null:m:null,[m,r.settings.gradients]),M=(0,_react.useMemo)(()=>glowOf(I),[I]),S=Array.isArray(g)&&g.length>0;(0,_react.useEffect)(()=>{v||(x?_reactNative.Animated.timing(b,{toValue:R,duration:400,easing:_reactNative.Easing.bezier(...r.motion.ease["in-out"]),useNativeDriver:!1}).start():b.setValue(R))},[x,R,b,v,r]),(0,_react.useEffect)(()=>{if(!v)return;(0,_index.setNativeValue)(j,0);const e=_reactNative.Animated.loop(_reactNative.Animated.timing(j,{toValue:1,duration:1500,easing:_reactNative.Easing.inOut(_reactNative.Easing.ease),useNativeDriver:!0}));return e.start(),()=>{e.stop()}},[v,j]);const C=b.interpolate({inputRange:[0,1],outputRange:["0%","100%"]}),D=j.interpolate({inputRange:[0,1],outputRange:[-1,1]}),P=j.interpolate({inputRange:[0,.5,1],outputRange:[.4,1,.4]}),B=n&&!v&&!S,L=null!=s||B,k=f??("string"==typeof s?s:void 0),q=(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,accessibilityRole:"progressbar",accessibilityLabel:k,accessibilityValue:v?{text:"Loading"}:{min:0,max:100,now:Math.round(100*R)},testID:N,onLayout:e=>{const t=e.nativeEvent.layout.width;A.current=t,(0,_index.setNativeValue)(w,t)},style:[O.track,{height:l,borderRadius:V,..._corners.smoothCorners,backgroundColor:E},p,y],children:S?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[O.segments,{height:l}],children:(g??[]).map((e,t)=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:{width:100*clampProgress(e.value)+"%",height:l,backgroundColor:e.color??toneColor(r,e.tone??"primary")}},t))}):v?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[O.indeterminateBar,{height:l,width:i?"100%":"30%",opacity:i?P:1,transform:i?[]:[{translateX:_reactNative.Animated.multiply(D,w)}]},h],children:(0,_jsxRuntime.jsx)(_index.Gradient,{gradient:M,style:_reactNative.StyleSheet.absoluteFill})}):(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[O.determinateBar,{height:l,borderRadius:V,..._corners.smoothCorners,backgroundColor:T?"transparent":I,width:C,overflow:T?"hidden":void 0},h],children:T?(0,_jsxRuntime.jsx)(_index.Gradient,{gradient:T,style:_reactNative.StyleSheet.absoluteFill}):null})});if(!L)return q;const G={fontSize:r.text.sm.size,...(0,_index.fontFor)(r,"medium")};return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:O.wrapper,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[O.labelRow,{marginBottom:r.space.xs}],children:["string"==typeof s||"number"==typeof s?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[O.label,G,{color:r.colors["text-body"]}],children:s}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:O.label,children:s}),B?(0,_jsxRuntime.jsx)(_reactNative.Text,{accessible:!1,importantForAccessibility:"no",style:[G,{color:r.colors["text-muted"]}],children:`${Math.round(100*R)}%`}):null]}),q]})});ProgressBar.displayName="ProgressBar";const buildStyles=e=>_reactNative.StyleSheet.create({wrapper:{width:"100%"},labelRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",columnGap:e.space.sm},label:{flexShrink:1},track:{width:"100%",overflow:"hidden"},determinateBar:{position:"absolute",left:0,top:0},indeterminateBar:{position:"absolute",left:0,top:0},segments:{flexDirection:"row",width:"100%"}});var _default=exports.default=ProgressBar;