@webority/mobile-ui 0.88.1 → 0.90.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 (396) hide show
  1. package/README.md +2 -0
  2. package/lib/commonjs/canvasKit/index.js +1 -1
  3. package/lib/commonjs/components/Accordion/Accordion.js +1 -1
  4. package/lib/commonjs/components/AmountSlider/AmountSlider.js +1 -1
  5. package/lib/commonjs/components/AnimatePresence/AnimatePresence.js +1 -1
  6. package/lib/commonjs/components/AppBar/AppBar.js +1 -1
  7. package/lib/commonjs/components/AppIcon/AppIcon.js +1 -1
  8. package/lib/commonjs/components/AsyncBlock/AsyncBlock.js +1 -1
  9. package/lib/commonjs/components/AuthedImage/AuthedImage.js +1 -1
  10. package/lib/commonjs/components/Autocomplete/Autocomplete.js +1 -1
  11. package/lib/commonjs/components/Avatar/Avatar.js +1 -1
  12. package/lib/commonjs/components/Badge/Badge.js +1 -1
  13. package/lib/commonjs/components/Banner/Banner.js +1 -1
  14. package/lib/commonjs/components/BarChart/BarChart.js +1 -1
  15. package/lib/commonjs/components/BottomNavigation/BottomNavigation.js +1 -1
  16. package/lib/commonjs/components/BottomSheet/BottomSheet.js +1 -1
  17. package/lib/commonjs/components/Box/Box.js +1 -1
  18. package/lib/commonjs/components/Button/Button.js +1 -1
  19. package/lib/commonjs/components/Calendar/Calendar.js +1 -1
  20. package/lib/commonjs/components/Calendar/CalendarDay.js +1 -1
  21. package/lib/commonjs/components/Calendar/calendarStyles.js +1 -1
  22. package/lib/commonjs/components/Card/Card.js +1 -1
  23. package/lib/commonjs/components/Carousel/Carousel.js +1 -1
  24. package/lib/commonjs/components/Checkbox/Checkbox.js +1 -1
  25. package/lib/commonjs/components/Chip/Chip.js +1 -1
  26. package/lib/commonjs/components/ChoiceGroup/ChoiceGroup.js +1 -1
  27. package/lib/commonjs/components/Composer/Composer.js +1 -1
  28. package/lib/commonjs/components/Confetti/Confetti.js +1 -1
  29. package/lib/commonjs/components/DatePicker/DatePicker.js +1 -1
  30. package/lib/commonjs/components/DateRangePicker/DateRangePicker.js +1 -1
  31. package/lib/commonjs/components/DateSeparator/DateSeparator.js +1 -1
  32. package/lib/commonjs/components/Descriptions/Descriptions.js +1 -1
  33. package/lib/commonjs/components/Dialog/Dialog.js +1 -1
  34. package/lib/commonjs/components/Divider/Divider.js +1 -1
  35. package/lib/commonjs/components/Drawer/Drawer.js +1 -1
  36. package/lib/commonjs/components/EmptyState/EmptyState.js +1 -1
  37. package/lib/commonjs/components/ErrorBoundary/ErrorBoundary.js +1 -1
  38. package/lib/commonjs/components/FieldBase/Chevron.js +1 -1
  39. package/lib/commonjs/components/FieldBase/ChoiceText.js +1 -1
  40. package/lib/commonjs/components/FieldBase/FieldBase.js +1 -1
  41. package/lib/commonjs/components/FieldBase/useFloatingLabel.js +1 -1
  42. package/lib/commonjs/components/FilePicker/FilePicker.js +1 -1
  43. package/lib/commonjs/components/FileViewer/FileViewer.js +1 -1
  44. package/lib/commonjs/components/FilterChipRow/FilterChipRow.js +1 -1
  45. package/lib/commonjs/components/FloatingActionButton/FloatingActionButton.js +1 -1
  46. package/lib/commonjs/components/FormField/FormField.js +1 -1
  47. package/lib/commonjs/components/IconBadge/IconBadge.js +1 -1
  48. package/lib/commonjs/components/IconButton/IconButton.js +1 -1
  49. package/lib/commonjs/components/ImageGallery/ImageGallery.js +1 -1
  50. package/lib/commonjs/components/InlineSelect/InlineSelect.js +1 -1
  51. package/lib/commonjs/components/Input/Input.js +1 -1
  52. package/lib/commonjs/components/KeyboardAwareScrollView/KeyboardAwareScrollView.js +1 -1
  53. package/lib/commonjs/components/KeyboardToolbar/KeyboardToolbar.js +1 -1
  54. package/lib/commonjs/components/ListItem/ListItem.js +1 -1
  55. package/lib/commonjs/components/LoaderOverlay/LoaderOverlay.js +1 -1
  56. package/lib/commonjs/components/Markdown/Markdown.js +1 -1
  57. package/lib/commonjs/components/Menu/MenuSurface.js +1 -1
  58. package/lib/commonjs/components/MessageBubble/MessageBubble.js +1 -1
  59. package/lib/commonjs/components/MessageList/MessageList.js +1 -1
  60. package/lib/commonjs/components/Modal/Modal.js +1 -1
  61. package/lib/commonjs/components/Notation/Notation.js +1 -1
  62. package/lib/commonjs/components/NumberInput/NumberInput.js +1 -1
  63. package/lib/commonjs/components/OTPInput/OTPInput.js +1 -1
  64. package/lib/commonjs/components/OnboardingPager/OnboardingPager.js +1 -1
  65. package/lib/commonjs/components/OptionSheet/OptionSheet.js +1 -1
  66. package/lib/commonjs/components/PaymentResult/PaymentResult.js +1 -1
  67. package/lib/commonjs/components/PermissionPrompt/PermissionPrompt.js +1 -1
  68. package/lib/commonjs/components/PhoneNumberInput/PhoneNumberInput.js +1 -1
  69. package/lib/commonjs/components/PickerTrigger/PickerTrigger.js +1 -1
  70. package/lib/commonjs/components/ProfileCompletion/ProfileCompletion.js +1 -1
  71. package/lib/commonjs/components/ProfilePicker/ProfilePicker.js +1 -1
  72. package/lib/commonjs/components/ProgressBar/ProgressBar.js +1 -1
  73. package/lib/commonjs/components/ProgressRing/ProgressRing.js +1 -1
  74. package/lib/commonjs/components/Radio/Radio.js +1 -1
  75. package/lib/commonjs/components/Radio/RadioDot.js +1 -1
  76. package/lib/commonjs/components/Rating/Rating.js +1 -1
  77. package/lib/commonjs/components/Repeater/Repeater.js +1 -1
  78. package/lib/commonjs/components/RichTextEditor/RichTextEditor.js +1 -1
  79. package/lib/commonjs/components/ScannerOverlay/ScannerOverlay.js +1 -1
  80. package/lib/commonjs/components/Screen/Screen.js +1 -1
  81. package/lib/commonjs/components/SearchBar/SearchBar.js +1 -1
  82. package/lib/commonjs/components/SearchBar/SearchPanel.js +1 -1
  83. package/lib/commonjs/components/SectionHeader/SectionHeader.js +1 -1
  84. package/lib/commonjs/components/SegmentedControl/SegmentedControl.js +1 -1
  85. package/lib/commonjs/components/Select/Select.js +1 -1
  86. package/lib/commonjs/components/SignaturePad/SignaturePad.js +1 -1
  87. package/lib/commonjs/components/Skeleton/Skeleton.js +1 -1
  88. package/lib/commonjs/components/Skeleton/SkeletonContent.js +1 -1
  89. package/lib/commonjs/components/SlideToConfirm/SlideToConfirm.js +1 -1
  90. package/lib/commonjs/components/Slider/Slider.js +1 -1
  91. package/lib/commonjs/components/Slider/valueText.js +1 -1
  92. package/lib/commonjs/components/SliderField/SliderField.js +1 -1
  93. package/lib/commonjs/components/Sparkline/Sparkline.js +1 -1
  94. package/lib/commonjs/components/Spinner/Spinner.js +1 -1
  95. package/lib/commonjs/components/StatTile/StatTile.js +1 -1
  96. package/lib/commonjs/components/StatusBadge/StatusBadge.js +1 -1
  97. package/lib/commonjs/components/Stepper/Stepper.js +1 -1
  98. package/lib/commonjs/components/Swipeable/Swipeable.js +1 -1
  99. package/lib/commonjs/components/Switch/Switch.js +1 -1
  100. package/lib/commonjs/components/Tabs/Tabs.js +1 -1
  101. package/lib/commonjs/components/TagInput/TagInput.js +1 -1
  102. package/lib/commonjs/components/Text/Text.js +1 -1
  103. package/lib/commonjs/components/TimePicker/TimePicker.js +1 -1
  104. package/lib/commonjs/components/Timeline/Timeline.js +1 -1
  105. package/lib/commonjs/components/Toast/Toast.js +1 -1
  106. package/lib/commonjs/components/Toast/ToastProvider.js +1 -1
  107. package/lib/commonjs/components/Tooltip/RichTooltipBody.js +1 -1
  108. package/lib/commonjs/components/Tooltip/Tooltip.js +1 -1
  109. package/lib/commonjs/components/Tour/Tour.js +1 -1
  110. package/lib/commonjs/components/TypingIndicator/TypingIndicator.js +1 -1
  111. package/lib/commonjs/components/WheelPicker/Wheel.js +1 -1
  112. package/lib/commonjs/components/WheelPicker/WheelPicker.js +1 -1
  113. package/lib/commonjs/hooks/useDragToDismiss.js +1 -1
  114. package/lib/commonjs/hooks/usePressAnimation.js +1 -1
  115. package/lib/commonjs/hooks/useRefreshControl.js +1 -1
  116. package/lib/commonjs/index.js +1 -1
  117. package/lib/commonjs/initUI.js +1 -1
  118. package/lib/commonjs/network/NetworkStatusBanner.js +1 -1
  119. package/lib/commonjs/theme/ThemeContext.js +1 -1
  120. package/lib/commonjs/theme/componentSizes.js +1 -1
  121. package/lib/commonjs/theme/index.js +1 -1
  122. package/lib/commonjs/theme/merge.js +1 -1
  123. package/lib/commonjs/theme/scale.js +1 -1
  124. package/lib/commonjs/theme/textStyle.js +1 -1
  125. package/lib/commonjs/theme/tokens.generated.js +1 -1
  126. package/lib/commonjs/theme/tokens.js +1 -1
  127. package/lib/commonjs/utils/color.js +1 -1
  128. package/lib/module/canvasKit/index.js +1 -1
  129. package/lib/module/components/Accordion/Accordion.js +1 -1
  130. package/lib/module/components/AmountSlider/AmountSlider.js +1 -1
  131. package/lib/module/components/AnimatePresence/AnimatePresence.js +1 -1
  132. package/lib/module/components/AppBar/AppBar.js +1 -1
  133. package/lib/module/components/AppIcon/AppIcon.js +1 -1
  134. package/lib/module/components/AsyncBlock/AsyncBlock.js +1 -1
  135. package/lib/module/components/AuthedImage/AuthedImage.js +1 -1
  136. package/lib/module/components/Autocomplete/Autocomplete.js +1 -1
  137. package/lib/module/components/Avatar/Avatar.js +1 -1
  138. package/lib/module/components/Badge/Badge.js +1 -1
  139. package/lib/module/components/Banner/Banner.js +1 -1
  140. package/lib/module/components/BarChart/BarChart.js +1 -1
  141. package/lib/module/components/BottomNavigation/BottomNavigation.js +1 -1
  142. package/lib/module/components/BottomSheet/BottomSheet.js +1 -1
  143. package/lib/module/components/Box/Box.js +1 -1
  144. package/lib/module/components/Button/Button.js +1 -1
  145. package/lib/module/components/Calendar/Calendar.js +1 -1
  146. package/lib/module/components/Calendar/CalendarDay.js +1 -1
  147. package/lib/module/components/Calendar/calendarStyles.js +1 -1
  148. package/lib/module/components/Card/Card.js +1 -1
  149. package/lib/module/components/Carousel/Carousel.js +1 -1
  150. package/lib/module/components/Checkbox/Checkbox.js +1 -1
  151. package/lib/module/components/Chip/Chip.js +1 -1
  152. package/lib/module/components/ChoiceGroup/ChoiceGroup.js +1 -1
  153. package/lib/module/components/Composer/Composer.js +1 -1
  154. package/lib/module/components/Confetti/Confetti.js +1 -1
  155. package/lib/module/components/DatePicker/DatePicker.js +1 -1
  156. package/lib/module/components/DateRangePicker/DateRangePicker.js +1 -1
  157. package/lib/module/components/DateSeparator/DateSeparator.js +1 -1
  158. package/lib/module/components/Descriptions/Descriptions.js +1 -1
  159. package/lib/module/components/Dialog/Dialog.js +1 -1
  160. package/lib/module/components/Divider/Divider.js +1 -1
  161. package/lib/module/components/Drawer/Drawer.js +1 -1
  162. package/lib/module/components/EmptyState/EmptyState.js +1 -1
  163. package/lib/module/components/ErrorBoundary/ErrorBoundary.js +1 -1
  164. package/lib/module/components/FieldBase/Chevron.js +1 -1
  165. package/lib/module/components/FieldBase/ChoiceText.js +1 -1
  166. package/lib/module/components/FieldBase/FieldBase.js +1 -1
  167. package/lib/module/components/FieldBase/useFloatingLabel.js +1 -1
  168. package/lib/module/components/FilePicker/FilePicker.js +1 -1
  169. package/lib/module/components/FileViewer/FileViewer.js +1 -1
  170. package/lib/module/components/FilterChipRow/FilterChipRow.js +1 -1
  171. package/lib/module/components/FloatingActionButton/FloatingActionButton.js +1 -1
  172. package/lib/module/components/FormField/FormField.js +1 -1
  173. package/lib/module/components/IconBadge/IconBadge.js +1 -1
  174. package/lib/module/components/IconButton/IconButton.js +1 -1
  175. package/lib/module/components/ImageGallery/ImageGallery.js +1 -1
  176. package/lib/module/components/InlineSelect/InlineSelect.js +1 -1
  177. package/lib/module/components/Input/Input.js +1 -1
  178. package/lib/module/components/KeyboardAwareScrollView/KeyboardAwareScrollView.js +1 -1
  179. package/lib/module/components/KeyboardToolbar/KeyboardToolbar.js +1 -1
  180. package/lib/module/components/ListItem/ListItem.js +1 -1
  181. package/lib/module/components/LoaderOverlay/LoaderOverlay.js +1 -1
  182. package/lib/module/components/Markdown/Markdown.js +1 -1
  183. package/lib/module/components/Menu/MenuSurface.js +1 -1
  184. package/lib/module/components/MessageBubble/MessageBubble.js +1 -1
  185. package/lib/module/components/MessageList/MessageList.js +1 -1
  186. package/lib/module/components/Modal/Modal.js +1 -1
  187. package/lib/module/components/Notation/Notation.js +1 -1
  188. package/lib/module/components/NumberInput/NumberInput.js +1 -1
  189. package/lib/module/components/OTPInput/OTPInput.js +1 -1
  190. package/lib/module/components/OnboardingPager/OnboardingPager.js +1 -1
  191. package/lib/module/components/OptionSheet/OptionSheet.js +1 -1
  192. package/lib/module/components/PaymentResult/PaymentResult.js +1 -1
  193. package/lib/module/components/PermissionPrompt/PermissionPrompt.js +1 -1
  194. package/lib/module/components/PhoneNumberInput/PhoneNumberInput.js +1 -1
  195. package/lib/module/components/PickerTrigger/PickerTrigger.js +1 -1
  196. package/lib/module/components/ProfileCompletion/ProfileCompletion.js +1 -1
  197. package/lib/module/components/ProfilePicker/ProfilePicker.js +1 -1
  198. package/lib/module/components/ProgressBar/ProgressBar.js +1 -1
  199. package/lib/module/components/ProgressRing/ProgressRing.js +1 -1
  200. package/lib/module/components/Radio/Radio.js +1 -1
  201. package/lib/module/components/Radio/RadioDot.js +1 -1
  202. package/lib/module/components/Rating/Rating.js +1 -1
  203. package/lib/module/components/Repeater/Repeater.js +1 -1
  204. package/lib/module/components/RichTextEditor/RichTextEditor.js +1 -1
  205. package/lib/module/components/ScannerOverlay/ScannerOverlay.js +1 -1
  206. package/lib/module/components/Screen/Screen.js +1 -1
  207. package/lib/module/components/SearchBar/SearchBar.js +1 -1
  208. package/lib/module/components/SearchBar/SearchPanel.js +1 -1
  209. package/lib/module/components/SectionHeader/SectionHeader.js +1 -1
  210. package/lib/module/components/SegmentedControl/SegmentedControl.js +1 -1
  211. package/lib/module/components/Select/Select.js +1 -1
  212. package/lib/module/components/SignaturePad/SignaturePad.js +1 -1
  213. package/lib/module/components/Skeleton/Skeleton.js +1 -1
  214. package/lib/module/components/Skeleton/SkeletonContent.js +1 -1
  215. package/lib/module/components/SlideToConfirm/SlideToConfirm.js +1 -1
  216. package/lib/module/components/Slider/Slider.js +1 -1
  217. package/lib/module/components/Slider/valueText.js +1 -1
  218. package/lib/module/components/SliderField/SliderField.js +1 -1
  219. package/lib/module/components/Sparkline/Sparkline.js +1 -1
  220. package/lib/module/components/Spinner/Spinner.js +1 -1
  221. package/lib/module/components/StatTile/StatTile.js +1 -1
  222. package/lib/module/components/StatusBadge/StatusBadge.js +1 -1
  223. package/lib/module/components/Stepper/Stepper.js +1 -1
  224. package/lib/module/components/Swipeable/Swipeable.js +1 -1
  225. package/lib/module/components/Switch/Switch.js +1 -1
  226. package/lib/module/components/Tabs/Tabs.js +1 -1
  227. package/lib/module/components/TagInput/TagInput.js +1 -1
  228. package/lib/module/components/Text/Text.js +1 -1
  229. package/lib/module/components/TimePicker/TimePicker.js +1 -1
  230. package/lib/module/components/Timeline/Timeline.js +1 -1
  231. package/lib/module/components/Toast/Toast.js +1 -1
  232. package/lib/module/components/Toast/ToastProvider.js +1 -1
  233. package/lib/module/components/Tooltip/RichTooltipBody.js +1 -1
  234. package/lib/module/components/Tooltip/Tooltip.js +1 -1
  235. package/lib/module/components/Tour/Tour.js +1 -1
  236. package/lib/module/components/TypingIndicator/TypingIndicator.js +1 -1
  237. package/lib/module/components/WheelPicker/Wheel.js +1 -1
  238. package/lib/module/components/WheelPicker/WheelPicker.js +1 -1
  239. package/lib/module/hooks/useDragToDismiss.js +1 -1
  240. package/lib/module/hooks/usePressAnimation.js +1 -1
  241. package/lib/module/hooks/useRefreshControl.js +1 -1
  242. package/lib/module/index.js +1 -1
  243. package/lib/module/initUI.js +1 -1
  244. package/lib/module/network/NetworkStatusBanner.js +1 -1
  245. package/lib/module/theme/ThemeContext.js +1 -1
  246. package/lib/module/theme/componentSizes.js +1 -1
  247. package/lib/module/theme/index.js +1 -1
  248. package/lib/module/theme/merge.js +1 -1
  249. package/lib/module/theme/scale.js +1 -1
  250. package/lib/module/theme/textStyle.js +1 -1
  251. package/lib/module/theme/tokens.generated.js +1 -1
  252. package/lib/module/theme/tokens.js +1 -1
  253. package/lib/module/utils/color.js +1 -1
  254. package/lib/typescript/commonjs/components/AmountSlider/AmountSlider.d.ts +1 -1
  255. package/lib/typescript/commonjs/components/AnimatePresence/AnimatePresence.d.ts +1 -1
  256. package/lib/typescript/commonjs/components/AppBar/AppBar.d.ts +4 -4
  257. package/lib/typescript/commonjs/components/AppIcon/AppIcon.d.ts +1 -1
  258. package/lib/typescript/commonjs/components/AppIcon/defaultIcons.d.ts +1 -1
  259. package/lib/typescript/commonjs/components/Avatar/Avatar.d.ts +4 -4
  260. package/lib/typescript/commonjs/components/Badge/Badge.d.ts +1 -1
  261. package/lib/typescript/commonjs/components/Banner/Banner.d.ts +1 -1
  262. package/lib/typescript/commonjs/components/BarChart/BarChart.d.ts +1 -1
  263. package/lib/typescript/commonjs/components/BottomNavigation/BottomNavigation.d.ts +8 -10
  264. package/lib/typescript/commonjs/components/BottomSheet/BottomSheet.d.ts +2 -2
  265. package/lib/typescript/commonjs/components/Box/Box.d.ts +21 -21
  266. package/lib/typescript/commonjs/components/Button/Button.d.ts +3 -3
  267. package/lib/typescript/commonjs/components/Calendar/Calendar.d.ts +1 -1
  268. package/lib/typescript/commonjs/components/Calendar/calendarStyles.d.ts +9 -9
  269. package/lib/typescript/commonjs/components/Card/Card.d.ts +7 -6
  270. package/lib/typescript/commonjs/components/Checkbox/Checkbox.d.ts +1 -1
  271. package/lib/typescript/commonjs/components/Chip/Chip.d.ts +1 -1
  272. package/lib/typescript/commonjs/components/ChoiceGroup/ChoiceGroup.d.ts +1 -1
  273. package/lib/typescript/commonjs/components/Dialog/Dialog.d.ts +2 -2
  274. package/lib/typescript/commonjs/components/FieldBase/Chevron.d.ts +1 -1
  275. package/lib/typescript/commonjs/components/FieldBase/FieldBase.d.ts +32 -33
  276. package/lib/typescript/commonjs/components/FieldBase/useFloatingLabel.d.ts +2 -3
  277. package/lib/typescript/commonjs/components/FloatingActionButton/FloatingActionButton.d.ts +2 -2
  278. package/lib/typescript/commonjs/components/FormField/FormField.d.ts +2 -3
  279. package/lib/typescript/commonjs/components/IconBadge/IconBadge.d.ts +1 -1
  280. package/lib/typescript/commonjs/components/IconButton/IconButton.d.ts +2 -2
  281. package/lib/typescript/commonjs/components/InlineSelect/InlineSelect.d.ts +2 -3
  282. package/lib/typescript/commonjs/components/Input/Input.d.ts +2 -2
  283. package/lib/typescript/commonjs/components/Notation/Notation.d.ts +1 -1
  284. package/lib/typescript/commonjs/components/OptionSheet/OptionSheet.d.ts +2 -2
  285. package/lib/typescript/commonjs/components/PickerTrigger/PickerTrigger.d.ts +2 -3
  286. package/lib/typescript/commonjs/components/ProfileCompletion/ProfileCompletion.d.ts +3 -4
  287. package/lib/typescript/commonjs/components/ProfilePicker/ProfilePicker.d.ts +5 -6
  288. package/lib/typescript/commonjs/components/ProgressBar/ProgressBar.d.ts +1 -1
  289. package/lib/typescript/commonjs/components/ProgressRing/ProgressRing.d.ts +6 -7
  290. package/lib/typescript/commonjs/components/Radio/Radio.d.ts +1 -1
  291. package/lib/typescript/commonjs/components/SearchBar/SearchBar.d.ts +1 -1
  292. package/lib/typescript/commonjs/components/SegmentedControl/SegmentedControl.d.ts +3 -4
  293. package/lib/typescript/commonjs/components/Select/Select.d.ts +5 -5
  294. package/lib/typescript/commonjs/components/Skeleton/Skeleton.d.ts +2 -2
  295. package/lib/typescript/commonjs/components/SlideToConfirm/SlideToConfirm.d.ts +1 -1
  296. package/lib/typescript/commonjs/components/Slider/Slider.d.ts +6 -7
  297. package/lib/typescript/commonjs/components/Slider/valueText.d.ts +1 -1
  298. package/lib/typescript/commonjs/components/Sparkline/Sparkline.d.ts +1 -1
  299. package/lib/typescript/commonjs/components/StatusBadge/StatusBadge.d.ts +2 -3
  300. package/lib/typescript/commonjs/components/Swipeable/Swipeable.d.ts +2 -2
  301. package/lib/typescript/commonjs/components/Switch/Switch.d.ts +1 -1
  302. package/lib/typescript/commonjs/components/Tabs/Tabs.d.ts +6 -7
  303. package/lib/typescript/commonjs/components/Text/Text.d.ts +6 -7
  304. package/lib/typescript/commonjs/components/Timeline/Timeline.d.ts +1 -1
  305. package/lib/typescript/commonjs/components/Toast/Toast.d.ts +1 -1
  306. package/lib/typescript/commonjs/components/Toast/ToastProvider.d.ts +2 -2
  307. package/lib/typescript/commonjs/components/Tour/Tour.d.ts +2 -2
  308. package/lib/typescript/commonjs/hooks/usePresenceMotion.d.ts +2 -2
  309. package/lib/typescript/commonjs/index.d.ts +2 -2
  310. package/lib/typescript/commonjs/initUI.d.ts +3 -3
  311. package/lib/typescript/commonjs/theme/ThemeContext.d.ts +5 -3
  312. package/lib/typescript/commonjs/theme/componentSizes.d.ts +40 -18
  313. package/lib/typescript/commonjs/theme/index.d.ts +15 -17
  314. package/lib/typescript/commonjs/theme/merge.d.ts +15 -2
  315. package/lib/typescript/commonjs/theme/scale.d.ts +6 -4
  316. package/lib/typescript/commonjs/theme/textStyle.d.ts +4 -17
  317. package/lib/typescript/commonjs/theme/tokens.generated.d.ts +239 -92
  318. package/lib/typescript/commonjs/theme/types.d.ts +104 -347
  319. package/lib/typescript/commonjs/utils/color.d.ts +6 -2
  320. package/lib/typescript/commonjs/utils/shadows.d.ts +2 -2
  321. package/lib/typescript/module/components/AmountSlider/AmountSlider.d.ts +1 -1
  322. package/lib/typescript/module/components/AnimatePresence/AnimatePresence.d.ts +1 -1
  323. package/lib/typescript/module/components/AppBar/AppBar.d.ts +4 -4
  324. package/lib/typescript/module/components/AppIcon/AppIcon.d.ts +1 -1
  325. package/lib/typescript/module/components/AppIcon/defaultIcons.d.ts +1 -1
  326. package/lib/typescript/module/components/Avatar/Avatar.d.ts +4 -4
  327. package/lib/typescript/module/components/Badge/Badge.d.ts +1 -1
  328. package/lib/typescript/module/components/Banner/Banner.d.ts +1 -1
  329. package/lib/typescript/module/components/BarChart/BarChart.d.ts +1 -1
  330. package/lib/typescript/module/components/BottomNavigation/BottomNavigation.d.ts +8 -10
  331. package/lib/typescript/module/components/BottomSheet/BottomSheet.d.ts +2 -2
  332. package/lib/typescript/module/components/Box/Box.d.ts +21 -21
  333. package/lib/typescript/module/components/Button/Button.d.ts +3 -3
  334. package/lib/typescript/module/components/Calendar/Calendar.d.ts +1 -1
  335. package/lib/typescript/module/components/Calendar/calendarStyles.d.ts +9 -9
  336. package/lib/typescript/module/components/Card/Card.d.ts +7 -6
  337. package/lib/typescript/module/components/Checkbox/Checkbox.d.ts +1 -1
  338. package/lib/typescript/module/components/Chip/Chip.d.ts +1 -1
  339. package/lib/typescript/module/components/ChoiceGroup/ChoiceGroup.d.ts +1 -1
  340. package/lib/typescript/module/components/Dialog/Dialog.d.ts +2 -2
  341. package/lib/typescript/module/components/FieldBase/Chevron.d.ts +1 -1
  342. package/lib/typescript/module/components/FieldBase/FieldBase.d.ts +32 -33
  343. package/lib/typescript/module/components/FieldBase/useFloatingLabel.d.ts +2 -3
  344. package/lib/typescript/module/components/FloatingActionButton/FloatingActionButton.d.ts +2 -2
  345. package/lib/typescript/module/components/FormField/FormField.d.ts +2 -3
  346. package/lib/typescript/module/components/IconBadge/IconBadge.d.ts +1 -1
  347. package/lib/typescript/module/components/IconButton/IconButton.d.ts +2 -2
  348. package/lib/typescript/module/components/InlineSelect/InlineSelect.d.ts +2 -3
  349. package/lib/typescript/module/components/Input/Input.d.ts +2 -2
  350. package/lib/typescript/module/components/Notation/Notation.d.ts +1 -1
  351. package/lib/typescript/module/components/OptionSheet/OptionSheet.d.ts +2 -2
  352. package/lib/typescript/module/components/PickerTrigger/PickerTrigger.d.ts +2 -3
  353. package/lib/typescript/module/components/ProfileCompletion/ProfileCompletion.d.ts +3 -4
  354. package/lib/typescript/module/components/ProfilePicker/ProfilePicker.d.ts +5 -6
  355. package/lib/typescript/module/components/ProgressBar/ProgressBar.d.ts +1 -1
  356. package/lib/typescript/module/components/ProgressRing/ProgressRing.d.ts +6 -7
  357. package/lib/typescript/module/components/Radio/Radio.d.ts +1 -1
  358. package/lib/typescript/module/components/SearchBar/SearchBar.d.ts +1 -1
  359. package/lib/typescript/module/components/SegmentedControl/SegmentedControl.d.ts +3 -4
  360. package/lib/typescript/module/components/Select/Select.d.ts +5 -5
  361. package/lib/typescript/module/components/Skeleton/Skeleton.d.ts +2 -2
  362. package/lib/typescript/module/components/SlideToConfirm/SlideToConfirm.d.ts +1 -1
  363. package/lib/typescript/module/components/Slider/Slider.d.ts +6 -7
  364. package/lib/typescript/module/components/Slider/valueText.d.ts +1 -1
  365. package/lib/typescript/module/components/Sparkline/Sparkline.d.ts +1 -1
  366. package/lib/typescript/module/components/StatusBadge/StatusBadge.d.ts +2 -3
  367. package/lib/typescript/module/components/Swipeable/Swipeable.d.ts +2 -2
  368. package/lib/typescript/module/components/Switch/Switch.d.ts +1 -1
  369. package/lib/typescript/module/components/Tabs/Tabs.d.ts +6 -7
  370. package/lib/typescript/module/components/Text/Text.d.ts +6 -7
  371. package/lib/typescript/module/components/Timeline/Timeline.d.ts +1 -1
  372. package/lib/typescript/module/components/Toast/Toast.d.ts +1 -1
  373. package/lib/typescript/module/components/Toast/ToastProvider.d.ts +2 -2
  374. package/lib/typescript/module/components/Tour/Tour.d.ts +2 -2
  375. package/lib/typescript/module/hooks/usePresenceMotion.d.ts +2 -2
  376. package/lib/typescript/module/index.d.ts +2 -2
  377. package/lib/typescript/module/initUI.d.ts +3 -3
  378. package/lib/typescript/module/theme/ThemeContext.d.ts +5 -3
  379. package/lib/typescript/module/theme/componentSizes.d.ts +40 -18
  380. package/lib/typescript/module/theme/index.d.ts +15 -17
  381. package/lib/typescript/module/theme/merge.d.ts +15 -2
  382. package/lib/typescript/module/theme/scale.d.ts +6 -4
  383. package/lib/typescript/module/theme/textStyle.d.ts +4 -17
  384. package/lib/typescript/module/theme/tokens.generated.d.ts +239 -92
  385. package/lib/typescript/module/theme/types.d.ts +104 -347
  386. package/lib/typescript/module/utils/color.d.ts +6 -2
  387. package/lib/typescript/module/utils/shadows.d.ts +2 -2
  388. package/package.json +8 -15
  389. package/lib/commonjs/theme/componentTokens.js +0 -1
  390. package/lib/commonjs/theme/retiredThemeKeys.js +0 -1
  391. package/lib/module/theme/componentTokens.js +0 -1
  392. package/lib/module/theme/retiredThemeKeys.js +0 -1
  393. package/lib/typescript/commonjs/theme/componentTokens.d.ts +0 -762
  394. package/lib/typescript/commonjs/theme/retiredThemeKeys.d.ts +0 -22
  395. package/lib/typescript/module/theme/componentTokens.d.ts +0 -762
  396. package/lib/typescript/module/theme/retiredThemeKeys.d.ts +0 -22
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ProgressRing=void 0;var cache,_react=require("react"),_reactNative=require("react-native"),_reactNativeSvg=_interopRequireWildcard(require("react-native-svg")),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var r,o,s=Object.defineProperty,i={__proto__:null,default:e};if(Object(e)!==e)return i;if(cache||"function"!=typeof WeakMap||(cache=new WeakMap),cache){if(cache.has(e))return cache.get(e);cache.set(e,i)}for(o in e)"default"!==o&&{}.hasOwnProperty.call(e,o)&&((r=s&&Object.getOwnPropertyDescriptor(e,o))&&(r.get||r.set)?s(i,o,r):i[o]=e[o]);return i}const AnimatedCircle=_reactNative.Animated.createAnimatedComponent(_reactNativeSvg.Circle),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}},clampProgress=e=>"number"!=typeof e||Number.isNaN(e)?0:Math.min(1,Math.max(0,e)),DEFAULT_STROKE_WIDTH=4,DEFAULT_DURATION=600,DEFAULT_COLOR_STOPS=[1/3,2/3],STOP_EDGE=1e-4,ProgressRing=exports.ProgressRing=(0,_react.forwardRef)((e,t)=>{const{progress:r,size:o=48,strokeWidth:s,tone:i="primary",trackColor:a,ringColor:n,colorByProgress:c=!1,animated:l=!0,rounded:u=!0,children:d,accessibilityLabel:g,style:_,testID:p}=e,m=(0,_index2.useTheme)(),h=m.components.progressRing,f=(0,_index.useReducedMotion)(),x=clampProgress(r),v=s??h?.strokeWidth??4,R=h?.animationDuration??600,y=a??h?.trackColor??m.colors.surface.disabled,[b,j]=h?.colorStops??DEFAULT_COLOR_STOPS,N=Math.max(0,(o-v)/2),P=2*Math.PI*N,w=(0,_react.useRef)((0,_index2.createAnimatedValue)(x)).current;(0,_react.useEffect)(()=>{if(!l||f)return void w.setValue(x);const e=_reactNative.Animated.timing(w,{toValue:x,duration:R,easing:_reactNative.Easing.bezier(...m.motion.easing.standard),useNativeDriver:!1});return e.start(),()=>e.stop()},[l,x,R,w,f,m.motion.easing.standard]);const O=w.interpolate({inputRange:[0,1],outputRange:[P,0]}),k=w.interpolate({inputRange:[0,.001,1],outputRange:[0,1,1]}),D=(0,_react.useMemo)(()=>w.interpolate({inputRange:[0,b-1e-4,b,j-1e-4,j,1],outputRange:[m.colors.error,m.colors.error,m.colors.warning,m.colors.warning,m.colors.success,m.colors.success]}),[w,b,j,m.colors.error,m.colors.warning,m.colors.success]),S=n??(c?D:toneColor(m,i)),C=(0,_react.useMemo)(()=>buildStyles(),[]),M=o/2;return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,accessible:null==d,accessibilityRole:"progressbar",accessibilityLabel:g,accessibilityValue:{min:0,max:100,now:Math.round(100*x)},testID:p,style:[C.root,{width:o,height:o},_],children:[(0,_jsxRuntime.jsxs)(_reactNativeSvg.default,{width:o,height:o,viewBox:`0 0 ${o} ${o}`,children:[(0,_jsxRuntime.jsx)(_reactNativeSvg.Circle,{cx:M,cy:M,r:N,stroke:y,strokeWidth:v,fill:"none"}),(0,_jsxRuntime.jsx)(AnimatedCircle,{cx:M,cy:M,r:N,stroke:S,strokeWidth:v,strokeLinecap:u?"round":"butt",strokeDasharray:`${P} ${P}`,strokeDashoffset:O,strokeOpacity:k,fill:"none",transform:`rotate(-90 ${M} ${M})`,testID:p?`${p}-fill`:void 0})]}),null!=d?(0,_jsxRuntime.jsx)(_reactNative.View,{style:C.content,pointerEvents:"box-none",children:d}):null]})});ProgressRing.displayName="ProgressRing";const buildStyles=()=>_reactNative.StyleSheet.create({root:{alignItems:"center",justifyContent:"center"},content:{position:"absolute",top:0,right:0,bottom:0,left:0,alignItems:"center",justifyContent:"center"}});var _default=exports.default=ProgressRing;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ProgressRing=void 0;var cache,_react=require("react"),_reactNative=require("react-native"),_reactNativeSvg=_interopRequireWildcard(require("react-native-svg")),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var r,s,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(s in e)"default"!==s&&{}.hasOwnProperty.call(e,s)&&((r=i&&Object.getOwnPropertyDescriptor(e,s))&&(r.get||r.set)?i(a,s,r):a[s]=e[s]);return a}const AnimatedCircle=_reactNative.Animated.createAnimatedComponent(_reactNativeSvg.Circle),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}},clampProgress=e=>"number"!=typeof e||Number.isNaN(e)?0:Math.min(1,Math.max(0,e)),DEFAULT_STROKE_WIDTH=4,DEFAULT_DURATION=600,DEFAULT_COLOR_STOPS=[1/3,2/3],STOP_EDGE=1e-4,ProgressRing=exports.ProgressRing=(0,_react.forwardRef)((e,t)=>{const{progress:r,size:s=48,strokeWidth:i,tone:a="primary",trackColor:o,ringColor:n,colorByProgress:c=!1,animated:l=!0,rounded:u=!0,children:d,accessibilityLabel:g,style:_,testID:p}=e,m=(0,_index2.useTheme)(),f=(0,_index.useReducedMotion)(),h=clampProgress(r),x=i??4,v=o??m.colors["surface-disabled"],[R,y]=DEFAULT_COLOR_STOPS,b=Math.max(0,(s-x)/2),j=2*Math.PI*b,N=(0,_react.useRef)((0,_index2.createAnimatedValue)(h)).current;(0,_react.useEffect)(()=>{if(!l||f)return void N.setValue(h);const e=_reactNative.Animated.timing(N,{toValue:h,duration:600,easing:_reactNative.Easing.bezier(...m.motion.ease["in-out"]),useNativeDriver:!1});return e.start(),()=>e.stop()},[l,h,N,f,m.motion.ease["in-out"]]);const P=N.interpolate({inputRange:[0,1],outputRange:[j,0]}),w=N.interpolate({inputRange:[0,.001,1],outputRange:[0,1,1]}),O=(0,_react.useMemo)(()=>N.interpolate({inputRange:[0,R-1e-4,R,y-1e-4,y,1],outputRange:[m.colors.danger,m.colors.danger,m.colors.warning,m.colors.warning,m.colors.success,m.colors.success]}),[N,m.colors.danger,m.colors.warning,m.colors.success]),D=n??(c?O:toneColor(m,a)),S=(0,_react.useMemo)(()=>buildStyles(),[]),k=s/2;return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,accessible:null==d,accessibilityRole:"progressbar",accessibilityLabel:g,accessibilityValue:{min:0,max:100,now:Math.round(100*h)},testID:p,style:[S.root,{width:s,height:s},_],children:[(0,_jsxRuntime.jsxs)(_reactNativeSvg.default,{width:s,height:s,viewBox:`0 0 ${s} ${s}`,children:[(0,_jsxRuntime.jsx)(_reactNativeSvg.Circle,{cx:k,cy:k,r:b,stroke:v,strokeWidth:x,fill:"none"}),(0,_jsxRuntime.jsx)(AnimatedCircle,{cx:k,cy:k,r:b,stroke:D,strokeWidth:x,strokeLinecap:u?"round":"butt",strokeDasharray:`${j} ${j}`,strokeDashoffset:P,strokeOpacity:w,fill:"none",transform:`rotate(-90 ${k} ${k})`,testID:p?`${p}-fill`:void 0})]}),null!=d?(0,_jsxRuntime.jsx)(_reactNative.View,{style:S.content,pointerEvents:"box-none",children:d}):null]})});ProgressRing.displayName="ProgressRing";const buildStyles=()=>_reactNative.StyleSheet.create({root:{alignItems:"center",justifyContent:"center"},content:{position:"absolute",top:0,right:0,bottom:0,left:0,alignItems:"center",justifyContent:"center"}});var _default=exports.default=ProgressRing;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useRadioGroup=exports.default=exports.RadioGroupContext=exports.Radio=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index2=require("../FieldBase/index.js"),_ChoiceText=require("../FieldBase/ChoiceText.js"),_RadioDot=require("./RadioDot.js"),_jsxRuntime=require("react/jsx-runtime");const RadioGroupContext=exports.RadioGroupContext=(0,_react.createContext)(null),useRadioGroup=()=>(0,_react.useContext)(RadioGroupContext);exports.useRadioGroup=useRadioGroup;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}},Radio=exports.Radio=(0,_react.forwardRef)((e,t)=>{const{value:i,selected:r,onChange:o,disabled:s=!1,label:a,description:l,error:c,size:d="md",tone:n="primary",accessibilityLabel:u,haptic:p,style:x,containerStyle:_,circleStyle:b,dotStyle:h,labelStyle:y,testID:R,...m}=e,C=(0,_index.useTheme)(),f=(0,_react.useMemo)(()=>buildStyles(C),[C]),g=useRadioGroup();__DEV__&&void 0===i&&_mobileCore.Logger.warn("[@webority/mobile-ui] Radio was rendered without a `value`. Selection compares against it, so the group cannot track which option is chosen.");const w=g?g.selectedValue===i:!!r,S=g&&g.disabled||s,j=toneColor(C,n),v=(0,_index.spaceOf)(C,C.components.radio.labelGap,"components.radio.labelGap"),G=u??(0,_index2.fieldTextAsString)(a),T=!0===g?.error||!0===c||(0,_index2.hasFieldText)(c);return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:t,onPress:e=>{if(S)return;const t=(0,_hapticUtils.resolveHaptic)(p,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),g?g.onChange(i):o?.(i)},disabled:S,accessibilityRole:"radio",accessibilityLabel:G,accessibilityHint:m.accessibilityHint??(0,_index2.fieldTextAsString)(l),accessibilityState:{checked:w,disabled:S},"aria-checked":w,"aria-disabled":S,testID:R,hitSlop:6,...m,style:({pressed:e})=>[f.row,(0,_ChoiceText.hasChoiceDetail)(l,c)?f.rowTop:null,{opacity:S?.55:e?.85:1},x,_],children:[(0,_jsxRuntime.jsx)(_RadioDot.RadioDot,{selected:w,color:j,disabled:S&&!w,size:d,style:[!T||w||S?null:{borderColor:C.colors.field.borderError},b],dotStyle:h}),(0,_jsxRuntime.jsx)(_ChoiceText.ChoiceText,{label:a,description:l,error:c,disabled:S,labelLines:2,style:{marginLeft:v},labelStyle:y})]})});Radio.displayName="Radio";const buildStyles=e=>_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center"},rowTop:{alignItems:"flex-start"}});var _default=exports.default=Radio;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useRadioGroup=exports.default=exports.RadioGroupContext=exports.Radio=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index2=require("../FieldBase/index.js"),_ChoiceText=require("../FieldBase/ChoiceText.js"),_RadioDot=require("./RadioDot.js"),_jsxRuntime=require("react/jsx-runtime");const RadioGroupContext=exports.RadioGroupContext=(0,_react.createContext)(null),useRadioGroup=()=>(0,_react.useContext)(RadioGroupContext);exports.useRadioGroup=useRadioGroup;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}},Radio=exports.Radio=(0,_react.forwardRef)((e,t)=>{const{value:i,selected:r,onChange:o,disabled:s=!1,label:a,description:l,error:c,size:d="md",tone:n="primary",accessibilityLabel:u,haptic:p,style:x,containerStyle:_,circleStyle:b,dotStyle:h,labelStyle:y,testID:R,...m}=e,C=(0,_index.useTheme)(),g=(0,_react.useMemo)(()=>buildStyles(C),[C]),f=useRadioGroup();__DEV__&&void 0===i&&_mobileCore.Logger.warn("[@webority/mobile-ui] Radio was rendered without a `value`. Selection compares against it, so the group cannot track which option is chosen.");const w=f?f.selectedValue===i:!!r,S=f&&f.disabled||s,j=toneColor(C,n),v=(0,_index.spaceOf)(C,C.components.radio["label-gap"]),T=u??(0,_index2.fieldTextAsString)(a),q=!0===f?.error||!0===c||(0,_index2.hasFieldText)(c);return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:t,onPress:e=>{if(S)return;const t=(0,_hapticUtils.resolveHaptic)(p,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),f?f.onChange(i):o?.(i)},disabled:S,accessibilityRole:"radio",accessibilityLabel:T,accessibilityHint:m.accessibilityHint??(0,_index2.fieldTextAsString)(l),accessibilityState:{checked:w,disabled:S},"aria-checked":w,"aria-disabled":S,testID:R,hitSlop:6,...m,style:({pressed:e})=>[g.row,(0,_ChoiceText.hasChoiceDetail)(l,c)?g.rowTop:null,{opacity:S?.55:e?.85:1},x,_],children:[(0,_jsxRuntime.jsx)(_RadioDot.RadioDot,{selected:w,color:j,disabled:S&&!w,size:d,style:[!q||w||S?null:{borderColor:C.colors["field-border-error"]},b],dotStyle:h}),(0,_jsxRuntime.jsx)(_ChoiceText.ChoiceText,{label:a,description:l,error:c,disabled:S,labelLines:2,style:{marginLeft:v},labelStyle:y})]})});Radio.displayName="Radio";const buildStyles=e=>_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center"},rowTop:{alignItems:"flex-start"}});var _default=exports.default=Radio;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.RadioDot=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_jsxRuntime=require("react/jsx-runtime");const RadioDot=e=>{const{selected:t,color:r,disabled:o=!1,size:s="md",style:i,dotStyle:a}=e,n=(0,_index.useTheme)(),d=(0,_react.useMemo)(()=>buildStyles(),[]),c=r??n.colors.primary;let u,l;if("number"==typeof s)u=s,l=Math.round(s/2);else{const e=(0,_index.resolveRadioSize)(n,s);u=e.outer,l=e.inner}const p=(0,_react.useRef)((0,_index.createAnimatedValue)(t?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.spring(p,{toValue:t?1:0,damping:n.motion.spring.snappy.damping,stiffness:n.motion.spring.snappy.stiffness,mass:n.motion.spring.snappy.mass,useNativeDriver:!0});return e.start(),()=>e.stop()},[t,p,n.motion.spring.snappy]);const m=p.interpolate({inputRange:[0,1],outputRange:[0,1]}),_=o?n.colors.border.primary:t?c:n.colors.border.primary;return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[d.outer,{width:u,height:u,borderWidth:n.colors.border.width,borderRadius:n.radius.pill,..._corners.smoothCorners,borderColor:_},i],children:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[{width:l,height:l,borderRadius:n.radius.pill,..._corners.smoothCorners,backgroundColor:o?n.colors.text.disabled:c,opacity:p,transform:[{scale:m}]},a]})})};exports.RadioDot=RadioDot,RadioDot.displayName="RadioDot";const buildStyles=()=>_reactNative.StyleSheet.create({outer:{alignItems:"center",justifyContent:"center"}});var _default=exports.default=RadioDot;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.RadioDot=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_jsxRuntime=require("react/jsx-runtime");const RadioDot=e=>{const{selected:t,color:r,disabled:o=!1,size:s="md",style:i,dotStyle:a}=e,n=(0,_index.useTheme)(),d=(0,_react.useMemo)(()=>buildStyles(),[]),u=r??n.colors.primary;let c,l;if("number"==typeof s)c=s,l=Math.round(s/2);else{const e=(0,_index.resolveRadioSize)(n,s);c=e.outer,l=e.inner}const p=(0,_react.useRef)((0,_index.createAnimatedValue)(t?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.spring(p,{toValue:t?1:0,damping:n.motion.spring.snappy.damping,stiffness:n.motion.spring.snappy.stiffness,mass:n.motion.spring.snappy.mass,useNativeDriver:!0});return e.start(),()=>e.stop()},[t,p,n.motion.spring.snappy]);const m=p.interpolate({inputRange:[0,1],outputRange:[0,1]}),_=o?n.colors.border:t?u:n.colors.border;return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[d.outer,{width:c,height:c,borderWidth:n.size.border,borderRadius:n.radius.pill,..._corners.smoothCorners,borderColor:_},i],children:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[{width:l,height:l,borderRadius:n.radius.pill,..._corners.smoothCorners,backgroundColor:o?n.colors["text-disabled"]:u,opacity:p,transform:[{scale:m}]},a]})})};exports.RadioDot=RadioDot,RadioDot.displayName="RadioDot";const buildStyles=()=>_reactNative.StyleSheet.create({outer:{alignItems:"center",justifyContent:"center"}});var _default=exports.default=RadioDot;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Rating=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index2=require("../Skeleton/index.js"),_jsxRuntime=require("react/jsx-runtime");const sizePxMap={sm:16,md:24,lg:32},resolveSize=e=>"number"==typeof e?e:sizePxMap[e],toneColorFor=(e,t)=>"primary"===t?e.colors.primary:e.colors.warning,clampToStep=(e,t,i)=>{const a=Math.max(0,Math.min(t,e)),s=Math.round(a/i)*i;return Number(s.toFixed(2))},Star=({index:e,filled:t,size:i,filledColor:a,emptyColor:s,scale:n})=>{const r=Math.max(0,Math.min(1,t-e));return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[starStyles.starWrap,{width:i,height:i,transform:[{scale:n}]}],children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[starStyles.glyph,{color:s,fontSize:i,lineHeight:i}],accessible:!1,children:"☆"}),r>0?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[starStyles.fillClip,{width:i*r,height:i}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[starStyles.glyph,{color:a,fontSize:i,lineHeight:i}],accessible:!1,children:"★"})}):null]})},Rating=exports.Rating=(0,_react.forwardRef)((e,t)=>{const{value:i,onChange:a,max:s=5,allowHalf:n=!0,readonly:r=!1,size:l="md",tone:o="warning",label:c,loading:u=!1,haptic:m,accessibilityLabel:d,style:x,containerStyle:p,starContainerStyle:y,testID:g}=e,_=(0,_index.useTheme)(),h=(0,_react.useMemo)(()=>buildStyles(_),[_]),v=!r&&"function"==typeof a,f=n?.5:1,b=resolveSize(l),j=toneColorFor(_,o),S=_.colors.border.primary,R=(0,_react.useRef)(b),w=(0,_react.useCallback)(e=>{R.current=e.nativeEvent.layout.width},[]),N=(0,_react.useRef)(new Map),C=(0,_react.useMemo)(()=>{const e=N.current,t=[];for(let i=0;i<s;i+=1){let a=e.get(i);a||(a=new _reactNative.Animated.Value(1),e.set(i,a)),t.push(a)}for(const t of Array.from(e.keys()))t>=s&&e.delete(t);return t},[s]),k=_.components.rating?.pulseOnPress??!1,z=_.components.rating?.pulseScale??1.2,M=(0,_react.useCallback)(e=>{const t=C[e];t&&_reactNative.Animated.sequence([_reactNative.Animated.timing(t,{toValue:z,duration:_.motion.duration.fast,easing:_reactNative.Easing.bezier(..._.motion.easing.standard),useNativeDriver:!0}),_reactNative.Animated.spring(t,{toValue:1,damping:_.motion.spring.bouncy.damping,stiffness:_.motion.spring.bouncy.stiffness,mass:_.motion.spring.bouncy.mass,useNativeDriver:!0})]).start()},[_.motion,z,C]),A=(0,_react.useCallback)((e,t)=>{if(!v||!a)return;const i=clampToStep(e,s,f),n=(0,_hapticUtils.resolveHaptic)(m,"selection");n&&(0,_hapticUtils.triggerHaptic)(n),k&&"number"==typeof t&&M(t),a(i)},[v,a,s,f,M,m,k]),V=(0,_react.useCallback)(e=>t=>{if(!v)return;const i=R.current||b,a=t.nativeEvent.locationX??i;let s;s=n&&a<i/2?e+.5:e+1,A(s,e)},[v,b,n,A]),P=(0,_react.useCallback)(e=>{v&&("increment"===e.nativeEvent.actionName?A(i+f):"decrement"===e.nativeEvent.actionName&&A(i-f))},[v,i,f,A]),q=`${i} of ${s} stars`,D=d??c??q,T=[];for(let e=0;e<s;e+=1){const t=C[e];if(!t)continue;const a=(0,_jsxRuntime.jsx)(Star,{index:e,filled:i,size:b,filledColor:j,emptyColor:S,scale:t},e);T.push(v?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:V(e),onLayout:0===e?w:void 0,hitSlop:4,accessible:!1,style:h.starPress,children:a},e):(0,_jsxRuntime.jsx)(_reactNative.View,{onLayout:0===e?w:void 0,style:h.starPress,children:a},e))}const E=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[h.wrapper,x,p],ref:t,testID:g,children:[c?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[h.label,{color:_.colors.text.secondary,fontSize:_.typography.fontSize.sm}],children:c}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[h.row,y],accessible:!0,accessibilityRole:v?"adjustable":"text",accessibilityLabel:D,accessibilityValue:v?{min:0,max:s,now:i,text:q}:void 0,accessibilityActions:v?[{name:"increment"},{name:"decrement"}]:void 0,onAccessibilityAction:v?P:void 0,children:T})]});return u?(0,_jsxRuntime.jsx)(RatingSkeleton,{...e}):E});Rating.displayName="Rating";const RatingSkeleton=({max:e=5,size:t="md",label:i,containerStyle:a,starContainerStyle:s,style:n})=>{const r=(0,_index.useTheme)(),l=resolveSize(t),o=Math.max(1,e);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[{alignItems:"flex-start"},a,n],accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,children:[void 0!==i?(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:80,height:14,style:{marginBottom:r.spacing.xs}}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[{flexDirection:"row"},s],children:Array.from({length:o}).map((e,t)=>(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:l,height:l,radius:Math.round(.25*l),style:t<o-1?{marginRight:r.spacing.xs}:void 0},`sk-star-${t}`))})]})};RatingSkeleton.displayName="RatingSkeleton",Rating.Skeleton=RatingSkeleton;const starStyles=_reactNative.StyleSheet.create({starWrap:{position:"relative",alignItems:"flex-start",justifyContent:"center"},glyph:{textAlign:"left",includeFontPadding:!1},fillClip:{position:"absolute",top:0,left:0,overflow:"hidden"}}),buildStyles=e=>_reactNative.StyleSheet.create({wrapper:{flexDirection:"column"},row:{flexDirection:"row",alignItems:"center"},starPress:{marginRight:e.spacing.xs},label:{marginBottom:e.spacing.xs}});var _default=exports.default=Rating;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Rating=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index2=require("../Skeleton/index.js"),_jsxRuntime=require("react/jsx-runtime");const sizePxMap={sm:16,md:24,lg:32},resolveSize=e=>"number"==typeof e?e:sizePxMap[e],PULSE_SCALE=1.2,toneColorFor=(e,t)=>"primary"===t?e.colors.primary:e.colors.warning,clampToStep=(e,t,i)=>{const a=Math.max(0,Math.min(t,e)),s=Math.round(a/i)*i;return Number(s.toFixed(2))},Star=({index:e,filled:t,size:i,filledColor:a,emptyColor:s,scale:n})=>{const r=Math.max(0,Math.min(1,t-e));return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[starStyles.starWrap,{width:i,height:i,transform:[{scale:n}]}],children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[starStyles.glyph,{color:s,fontSize:i,lineHeight:i}],accessible:!1,children:"☆"}),r>0?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[starStyles.fillClip,{width:i*r,height:i}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[starStyles.glyph,{color:a,fontSize:i,lineHeight:i}],accessible:!1,children:"★"})}):null]})},Rating=exports.Rating=(0,_react.forwardRef)((e,t)=>{const{value:i,onChange:a,max:s=5,allowHalf:n=!0,readonly:r=!1,size:l="md",tone:o="warning",label:c,loading:u=!1,haptic:m,accessibilityLabel:d,style:x,containerStyle:p,starContainerStyle:y,testID:_}=e,h=(0,_index.useTheme)(),g=(0,_react.useMemo)(()=>buildStyles(h),[h]),v=!r&&"function"==typeof a,f=n?.5:1,b=resolveSize(l),j=toneColorFor(h,o),S=h.colors.border,R=(0,_react.useRef)(b),w=(0,_react.useCallback)(e=>{R.current=e.nativeEvent.layout.width},[]),N=(0,_react.useRef)(new Map),C=(0,_react.useMemo)(()=>{const e=N.current,t=[];for(let i=0;i<s;i+=1){let a=e.get(i);a||(a=new _reactNative.Animated.Value(1),e.set(i,a)),t.push(a)}for(const t of Array.from(e.keys()))t>=s&&e.delete(t);return t},[s]),k=h.settings.components.rating?.pulseOnPress??!1,z=(0,_react.useCallback)(e=>{const t=C[e];t&&_reactNative.Animated.sequence([_reactNative.Animated.timing(t,{toValue:1.2,duration:h.motion.duration.fast,easing:_reactNative.Easing.bezier(...h.motion.ease["in-out"]),useNativeDriver:!0}),_reactNative.Animated.spring(t,{toValue:1,damping:h.motion.spring.bouncy.damping,stiffness:h.motion.spring.bouncy.stiffness,mass:h.motion.spring.bouncy.mass,useNativeDriver:!0})]).start()},[h.motion,C]),M=(0,_react.useCallback)((e,t)=>{if(!v||!a)return;const i=clampToStep(e,s,f),n=(0,_hapticUtils.resolveHaptic)(m,"selection");n&&(0,_hapticUtils.triggerHaptic)(n),k&&"number"==typeof t&&z(t),a(i)},[v,a,s,f,z,m,k]),A=(0,_react.useCallback)(e=>t=>{if(!v)return;const i=R.current||b,a=t.nativeEvent.locationX??i;let s;s=n&&a<i/2?e+.5:e+1,M(s,e)},[v,b,n,M]),P=(0,_react.useCallback)(e=>{v&&("increment"===e.nativeEvent.actionName?M(i+f):"decrement"===e.nativeEvent.actionName&&M(i-f))},[v,i,f,M]),V=`${i} of ${s} stars`,E=d??c??V,q=[];for(let e=0;e<s;e+=1){const t=C[e];if(!t)continue;const a=(0,_jsxRuntime.jsx)(Star,{index:e,filled:i,size:b,filledColor:j,emptyColor:S,scale:t},e);q.push(v?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:A(e),onLayout:0===e?w:void 0,hitSlop:4,accessible:!1,style:g.starPress,children:a},e):(0,_jsxRuntime.jsx)(_reactNative.View,{onLayout:0===e?w:void 0,style:g.starPress,children:a},e))}const D=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[g.wrapper,x,p],ref:t,testID:_,children:[c?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[g.label,{color:h.colors["text-muted"],fontSize:h.text.sm.size}],children:c}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[g.row,y],accessible:!0,accessibilityRole:v?"adjustable":"text",accessibilityLabel:E,accessibilityValue:v?{min:0,max:s,now:i,text:V}:void 0,accessibilityActions:v?[{name:"increment"},{name:"decrement"}]:void 0,onAccessibilityAction:v?P:void 0,children:q})]});return u?(0,_jsxRuntime.jsx)(RatingSkeleton,{...e}):D});Rating.displayName="Rating";const RatingSkeleton=({max:e=5,size:t="md",label:i,containerStyle:a,starContainerStyle:s,style:n})=>{const r=(0,_index.useTheme)(),l=resolveSize(t),o=Math.max(1,e);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[{alignItems:"flex-start"},a,n],accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,children:[void 0!==i?(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:80,height:14,style:{marginBottom:r.space.xs}}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[{flexDirection:"row"},s],children:Array.from({length:o}).map((e,t)=>(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:l,height:l,radius:Math.round(.25*l),style:t<o-1?{marginRight:r.space.xs}:void 0},`sk-star-${t}`))})]})};RatingSkeleton.displayName="RatingSkeleton",Rating.Skeleton=RatingSkeleton;const starStyles=_reactNative.StyleSheet.create({starWrap:{position:"relative",alignItems:"flex-start",justifyContent:"center"},glyph:{textAlign:"left",includeFontPadding:!1},fillClip:{position:"absolute",top:0,left:0,overflow:"hidden"}}),buildStyles=e=>_reactNative.StyleSheet.create({wrapper:{flexDirection:"column"},row:{flexDirection:"row",alignItems:"center"},starPress:{marginRight:e.space.xs},label:{marginBottom:e.space.xs}});var _default=exports.default=Rating;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Repeater=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_index3=require("../AppIcon/index.js"),_index4=require("../Button/index.js"),_index5=require("../IconButton/index.js"),_jsxRuntime=require("react/jsx-runtime");let rowIdCounter=0;const nextRowId=()=>(rowIdCounter+=1,`row-${rowIdCounter}`),Repeater=({value:e,onChange:t,createRow:r,renderRow:n,addLabel:i="Add another",rowLabel:a,renderRowHeader:o,onRemove:s,minRows:l=0,maxRows:c,removable:u=!0,emptyText:x,disabled:d=!1,haptic:p,style:_,testID:m})=>{const h=(0,_index.useTheme)(),g=(0,_react.useMemo)(()=>buildStyles(h),[h]),j=(0,_react.useRef)([]);if(j.current.length<e.length)for(;j.current.length<e.length;)j.current.push(nextRowId());else j.current.length>e.length&&(j.current.length=e.length);const R="number"==typeof c&&e.length>=c,v=u&&e.length>l,w=(0,_react.useCallback)(e=>{const t=(0,_index2.resolveHaptic)(p,e);t&&(0,_index2.triggerHaptic)(t)},[p]),y=(0,_react.useCallback)(()=>{d||R||(t([...e,r()]),w("impactLight"))},[R,r,d,w,t,e]),f=(0,_react.useCallback)((r,n)=>{t(e.map((e,t)=>t===r?n:e))},[t,e]),b=(0,_react.useCallback)(r=>{!d&&v&&(j.current=j.current.filter((e,t)=>t!==r),s?.(r,e[r]),t(e.filter((e,t)=>t!==r)),w("notificationWarning"))},[v,d,w,t,s,e]);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[{gap:h.spacing.md},_],testID:m,children:[0===e.length&&x?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[g.empty,{color:h.colors.text.tertiary,fontSize:h.typography.fontSize.sm}],children:x}):null,e.map((e,t)=>{const r={item:e,index:t,update:e=>f(t,e),remove:()=>b(t),canRemove:v};return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{gap:h.spacing.xs},children:[o?o(r):a||v&&!d?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:g.rowHeader,children:[a?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[g.rowLabel,{color:h.colors.text.tertiary,fontSize:h.typography.fontSize.xs}],children:a(t)}):(0,_jsxRuntime.jsx)(_reactNative.View,{}),v&&!d?(0,_jsxRuntime.jsx)(_index5.IconButton,{icon:({color:e,size:t})=>(0,_jsxRuntime.jsx)(_index3.AppIcon,{name:"x",size:t,color:e}),onPress:()=>b(t),accessibilityLabel:`Remove ${a?a(t):`row ${t+1}`}`,size:"sm",tone:"error",variant:"ghost",haptic:p,testID:m?`${m}-remove-${t}`:void 0}):null]}):null,n(r)]},j.current[t])}),R||d?null:(0,_jsxRuntime.jsx)(_index4.Button,{title:i,onPress:y,variant:"outline",size:"sm",haptic:p,testID:m?`${m}-add`:void 0})]})};exports.Repeater=Repeater;const buildStyles=e=>_reactNative.StyleSheet.create({rowHeader:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",minHeight:24},rowLabel:{...(0,_index.fontFor)(e,"semibold"),fontWeight:"600",letterSpacing:.5,textTransform:"uppercase"},empty:{...(0,_index.fontFor)(e,"normal")}});var _default=exports.default=Repeater;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Repeater=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_index3=require("../AppIcon/index.js"),_index4=require("../Button/index.js"),_index5=require("../IconButton/index.js"),_jsxRuntime=require("react/jsx-runtime");let rowIdCounter=0;const nextRowId=()=>(rowIdCounter+=1,`row-${rowIdCounter}`),Repeater=({value:e,onChange:t,createRow:r,renderRow:n,addLabel:i="Add another",rowLabel:s,renderRowHeader:a,onRemove:o,minRows:l=0,maxRows:c,removable:u=!0,emptyText:x,disabled:d=!1,haptic:_,style:m,testID:p})=>{const h=(0,_index.useTheme)(),j=(0,_react.useMemo)(()=>buildStyles(h),[h]),R=(0,_react.useRef)([]);if(R.current.length<e.length)for(;R.current.length<e.length;)R.current.push(nextRowId());else R.current.length>e.length&&(R.current.length=e.length);const v="number"==typeof c&&e.length>=c,g=u&&e.length>l,w=(0,_react.useCallback)(e=>{const t=(0,_index2.resolveHaptic)(_,e);t&&(0,_index2.triggerHaptic)(t)},[_]),b=(0,_react.useCallback)(()=>{d||v||(t([...e,r()]),w("impactLight"))},[v,r,d,w,t,e]),f=(0,_react.useCallback)((r,n)=>{t(e.map((e,t)=>t===r?n:e))},[t,e]),y=(0,_react.useCallback)(r=>{!d&&g&&(R.current=R.current.filter((e,t)=>t!==r),o?.(r,e[r]),t(e.filter((e,t)=>t!==r)),w("notificationWarning"))},[g,d,w,t,o,e]);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[{gap:h.space.md},m],testID:p,children:[0===e.length&&x?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[j.empty,{color:h.colors["text-subtle"],fontSize:h.text.sm.size}],children:x}):null,e.map((e,t)=>{const r={item:e,index:t,update:e=>f(t,e),remove:()=>y(t),canRemove:g};return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{gap:h.space.xs},children:[a?a(r):s||g&&!d?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:j.rowHeader,children:[s?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[j.rowLabel,{color:h.colors["text-subtle"],fontSize:h.text.xs.size}],children:s(t)}):(0,_jsxRuntime.jsx)(_reactNative.View,{}),g&&!d?(0,_jsxRuntime.jsx)(_index5.IconButton,{icon:({color:e,size:t})=>(0,_jsxRuntime.jsx)(_index3.AppIcon,{name:"x",size:t,color:e}),onPress:()=>y(t),accessibilityLabel:`Remove ${s?s(t):`row ${t+1}`}`,size:"sm",tone:"danger",variant:"ghost",haptic:_,testID:p?`${p}-remove-${t}`:void 0}):null]}):null,n(r)]},R.current[t])}),v||d?null:(0,_jsxRuntime.jsx)(_index4.Button,{title:i,onPress:b,variant:"outline",size:"sm",haptic:_,testID:p?`${p}-add`:void 0})]})};exports.Repeater=Repeater;const buildStyles=e=>_reactNative.StyleSheet.create({rowHeader:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",minHeight:24},rowLabel:{...(0,_index.fontFor)(e,"semibold"),fontWeight:"600",letterSpacing:.5,textTransform:"uppercase"},empty:{...(0,_index.fontFor)(e,"normal")}});var _default=exports.default=Repeater;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.RichTextEditor=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_index3=require("../Skeleton/index.js"),_markdownActions=require("./markdownActions.js"),_jsxRuntime=require("react/jsx-runtime");const ACTION_META={bold:{glyph:"B",label:"Bold"},italic:{glyph:"I",label:"Italic"},strikethrough:{glyph:"S",label:"Strikethrough"},code:{glyph:"</>",label:"Inline code"},link:{glyph:"link",label:"Link"},heading1:{glyph:"H1",label:"Heading 1"},heading2:{glyph:"H2",label:"Heading 2"},bulletList:{glyph:"•",label:"Bulleted list"},numberedList:{glyph:"1.",label:"Numbered list"},quote:{glyph:">",label:"Quote"}},DEFAULT_ACTIONS=["bold","italic","strikethrough","code","link","heading1","heading2","bulletList","numberedList","quote"],DEFAULT_MIN_HEIGHT=160,RichTextEditor=exports.RichTextEditor=(0,_react.forwardRef)((e,t)=>{const{value:i,onChangeText:o,placeholder:r,actions:l=DEFAULT_ACTIONS,disabled:n=!1,loading:a=!1,minHeight:s=DEFAULT_MIN_HEIGHT,autoFocus:c=!1,accessibilityLabel:d,haptic:u,style:h,toolbarStyle:x,inputStyle:b,testID:g}=e,p=(0,_index.useTheme)(),m=(0,_react.useMemo)(()=>buildStyles(p),[p]),_=i??"",[y,j]=(0,_react.useState)({start:0,end:0}),[S,T]=(0,_react.useState)(!1),[k,R]=(0,_react.useState)(null),f=(0,_react.useCallback)(e=>{j(e.nativeEvent.selection),R(null)},[]),v=(0,_react.useCallback)(e=>{R(null),o?.(e)},[o]),I=(0,_react.useCallback)(e=>{if(n)return;const t=(0,_index2.resolveHaptic)(u,"selection");t&&(0,_index2.triggerHaptic)(t);const i=(0,_markdownActions.applyMarkdownAction)({text:_,selection:(0,_markdownActions.normalizeSelection)(y,_.length)},e);j(i.selection),R(i.selection),o?.(i.text)},[n,u,o,y,_]);return a?(0,_jsxRuntime.jsx)(RichTextEditorSkeleton,{actionCount:l.length,minHeight:s,style:h,testID:g}):(0,_jsxRuntime.jsxs)(_reactNative.View,{testID:g,style:[m.container,{borderColor:S?p.colors.border.focus:p.colors.border.primary,opacity:n?.55:1},h],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[m.toolbar,x],children:l.map(e=>(0,_jsxRuntime.jsx)(ToolbarButton,{action:e,disabled:n,onPress:I,styles:m,theme:p,testID:g?`${g}-${e}`:void 0},e))}),(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:t,value:_,onChangeText:v,onSelectionChange:f,onFocus:()=>T(!0),onBlur:()=>T(!1),selection:k??void 0,editable:!n,autoFocus:c,multiline:!0,textAlignVertical:"top",placeholder:r,placeholderTextColor:p.colors.text.tertiary,accessibilityLabel:d,style:[m.input,{minHeight:s},b],testID:g?`${g}-input`:void 0})]})});RichTextEditor.displayName="RichTextEditor";const ToolbarButton=({action:e,disabled:t,onPress:i,styles:o,theme:r,testID:l})=>{const n=ACTION_META[e],a={color:t?r.colors.text.disabled:r.colors.text.primary};return"bold"===e&&(a.fontWeight=r.typography.fontWeight.bold),"italic"===e&&(a.fontStyle="italic"),"strikethrough"===e&&(a.textDecorationLine="line-through"),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>i(e),disabled:t,accessibilityRole:"button",accessibilityLabel:n.label,accessibilityState:{disabled:t},"aria-disabled":t,hitSlop:4,testID:l,style:({pressed:e})=>[o.button,{backgroundColor:e?r.colors.surface.pressed:r.colors.background.secondary}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{allowFontScaling:!1,style:[o.buttonLabel,a],children:n.glyph})})};ToolbarButton.displayName="RichTextEditorToolbarButton";const RichTextEditorSkeleton=({actionCount:e,minHeight:t,style:i,testID:o})=>{const r=(0,_index.useTheme)(),l=(0,_react.useMemo)(()=>buildStyles(r),[r]),n=Array.from({length:Math.max(1,e)},(e,t)=>t);return(0,_jsxRuntime.jsxs)(_reactNative.View,{testID:o,style:[l.container,i],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:l.toolbar,children:n.map(e=>(0,_jsxRuntime.jsx)(_index3.Skeleton,{width:34,height:30,radius:"sm"},e))}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[l.skeletonBody,{minHeight:t}],children:[(0,_jsxRuntime.jsx)(_index3.Skeleton,{shape:"text",width:"94%",height:14}),(0,_jsxRuntime.jsx)(_index3.Skeleton,{shape:"text",width:"100%",height:14}),(0,_jsxRuntime.jsx)(_index3.Skeleton,{shape:"text",width:"72%",height:14})]})]})};RichTextEditorSkeleton.displayName="RichTextEditorSkeleton";const buildStyles=e=>_reactNative.StyleSheet.create({container:{borderWidth:e.colors.border.width,borderColor:e.colors.border.primary,borderRadius:e.radius.md,..._corners.smoothCorners,backgroundColor:e.colors.background.primary,overflow:"hidden"},toolbar:{flexDirection:"row",flexWrap:"wrap",alignItems:"center",gap:e.spacing.xs,padding:e.spacing.xs,borderBottomWidth:_reactNative.StyleSheet.hairlineWidth,borderBottomColor:e.colors.border.secondary,backgroundColor:e.colors.background.secondary},button:{minWidth:34,height:30,paddingHorizontal:e.spacing.xs,borderRadius:e.radius.sm,..._corners.smoothCorners,alignItems:"center",justifyContent:"center"},buttonLabel:{...(0,_index.fontFor)(e,"medium"),fontSize:e.typography.fontSize.sm},input:{...(0,_index.fontFor)(e,"normal"),color:e.colors.text.primary,fontSize:e.typography.fontSize.base,lineHeight:1.5*e.typography.fontSize.base,paddingHorizontal:e.spacing.md,paddingVertical:e.spacing.sm},skeletonBody:{paddingHorizontal:e.spacing.md,paddingVertical:e.spacing.sm,gap:e.spacing.sm}});var _default=exports.default=RichTextEditor;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.RichTextEditor=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_index3=require("../Skeleton/index.js"),_markdownActions=require("./markdownActions.js"),_jsxRuntime=require("react/jsx-runtime");const ACTION_META={bold:{glyph:"B",label:"Bold"},italic:{glyph:"I",label:"Italic"},strikethrough:{glyph:"S",label:"Strikethrough"},code:{glyph:"</>",label:"Inline code"},link:{glyph:"link",label:"Link"},heading1:{glyph:"H1",label:"Heading 1"},heading2:{glyph:"H2",label:"Heading 2"},bulletList:{glyph:"•",label:"Bulleted list"},numberedList:{glyph:"1.",label:"Numbered list"},quote:{glyph:">",label:"Quote"}},DEFAULT_ACTIONS=["bold","italic","strikethrough","code","link","heading1","heading2","bulletList","numberedList","quote"],DEFAULT_MIN_HEIGHT=160,TOOLBAR_GLYPH_MAX_SCALE=1.5,RichTextEditor=exports.RichTextEditor=(0,_react.forwardRef)((e,t)=>{const{value:i,onChangeText:o,placeholder:l,actions:s=DEFAULT_ACTIONS,disabled:r=!1,loading:n=!1,minHeight:a=DEFAULT_MIN_HEIGHT,autoFocus:c=!1,accessibilityLabel:d,haptic:u,style:h,toolbarStyle:x,inputStyle:b,testID:_}=e,m=(0,_index.useTheme)(),g=(0,_react.useMemo)(()=>buildStyles(m),[m]),p=i??"",[y,j]=(0,_react.useState)({start:0,end:0}),[S,T]=(0,_react.useState)(!1),[R,k]=(0,_react.useState)(null),v=(0,_react.useCallback)(e=>{j(e.nativeEvent.selection),k(null)},[]),C=(0,_react.useCallback)(e=>{k(null),o?.(e)},[o]),I=(0,_react.useCallback)(e=>{if(r)return;const t=(0,_index2.resolveHaptic)(u,"selection");t&&(0,_index2.triggerHaptic)(t);const i=(0,_markdownActions.applyMarkdownAction)({text:p,selection:(0,_markdownActions.normalizeSelection)(y,p.length)},e);j(i.selection),k(i.selection),o?.(i.text)},[r,u,o,y,p]);return n?(0,_jsxRuntime.jsx)(RichTextEditorSkeleton,{actionCount:s.length,minHeight:a,style:h,testID:_}):(0,_jsxRuntime.jsxs)(_reactNative.View,{testID:_,style:[g.container,{borderColor:S?m.colors["focus-ring"]:m.colors.border,opacity:r?.55:1},h],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[g.toolbar,x],children:s.map(e=>(0,_jsxRuntime.jsx)(ToolbarButton,{action:e,disabled:r,onPress:I,styles:g,theme:m,testID:_?`${_}-${e}`:void 0},e))}),(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:t,value:p,onChangeText:C,onSelectionChange:v,onFocus:()=>T(!0),onBlur:()=>T(!1),selection:R??void 0,editable:!r,autoFocus:c,multiline:!0,textAlignVertical:"top",placeholder:l,placeholderTextColor:m.colors["text-subtle"],accessibilityLabel:d,style:[g.input,{minHeight:a},b],testID:_?`${_}-input`:void 0})]})});RichTextEditor.displayName="RichTextEditor";const ToolbarButton=({action:e,disabled:t,onPress:i,styles:o,theme:l,testID:s})=>{const r=ACTION_META[e],n={color:t?l.colors["text-disabled"]:l.colors["text-body"]};return"bold"===e&&(n.fontWeight=l.weight.bold),"italic"===e&&(n.fontStyle="italic"),"strikethrough"===e&&(n.textDecorationLine="line-through"),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>i(e),disabled:t,accessibilityRole:"button",accessibilityLabel:r.label,accessibilityState:{disabled:t},"aria-disabled":t,hitSlop:4,testID:s,style:({pressed:e})=>[o.button,{backgroundColor:e?l.colors["surface-pressed"]:l.colors["bg-subtle"]}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{maxFontSizeMultiplier:Math.min(l.settings.maxFontSizeMultiplier??1.5,1.5),style:[o.buttonLabel,n],children:r.glyph})})};ToolbarButton.displayName="RichTextEditorToolbarButton";const RichTextEditorSkeleton=({actionCount:e,minHeight:t,style:i,testID:o})=>{const l=(0,_index.useTheme)(),s=(0,_react.useMemo)(()=>buildStyles(l),[l]),r=Array.from({length:Math.max(1,e)},(e,t)=>t);return(0,_jsxRuntime.jsxs)(_reactNative.View,{testID:o,style:[s.container,i],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:s.toolbar,children:r.map(e=>(0,_jsxRuntime.jsx)(_index3.Skeleton,{width:34,height:30,radius:"sm"},e))}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[s.skeletonBody,{minHeight:t}],children:[(0,_jsxRuntime.jsx)(_index3.Skeleton,{shape:"text",width:"94%",height:14}),(0,_jsxRuntime.jsx)(_index3.Skeleton,{shape:"text",width:"100%",height:14}),(0,_jsxRuntime.jsx)(_index3.Skeleton,{shape:"text",width:"72%",height:14})]})]})};RichTextEditorSkeleton.displayName="RichTextEditorSkeleton";const buildStyles=e=>_reactNative.StyleSheet.create({container:{borderWidth:e.size.border,borderColor:e.colors.border,borderRadius:e.radius.md,..._corners.smoothCorners,backgroundColor:e.colors.bg,overflow:"hidden"},toolbar:{flexDirection:"row",flexWrap:"wrap",alignItems:"center",gap:e.space.xs,padding:e.space.xs,borderBottomWidth:_reactNative.StyleSheet.hairlineWidth,borderBottomColor:e.colors["border-subtle"],backgroundColor:e.colors["bg-subtle"]},button:{minWidth:34,height:30,paddingHorizontal:e.space.xs,borderRadius:e.radius.sm,..._corners.smoothCorners,alignItems:"center",justifyContent:"center"},buttonLabel:{...(0,_index.fontFor)(e,"medium"),fontSize:e.text.sm.size},input:{...(0,_index.fontFor)(e,"normal"),color:e.colors["text-body"],fontSize:e.text.base.size,lineHeight:1.5*e.text.base.size,paddingHorizontal:e.space.md,paddingVertical:e.space.sm},skeletonBody:{paddingHorizontal:e.space.md,paddingVertical:e.space.sm,gap:e.space.sm}});var _default=exports.default=RichTextEditor;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ScannerOverlay=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"),_hapticUtils=require("../../utils/hapticUtils.js"),_index2=require("../AppIcon/index.js"),_index3=require("../Button/index.js"),_index4=require("../EmptyState/index.js"),_index5=require("../IconButton/index.js"),_index6=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");const MIN_FRAME=240,DEFAULT_FRAME=260,MARK_LENGTH=32,MARK_THICKNESS=4,LIFT=.06,BREATHE_SCALE=1.03,SNAP_SCALE=1.08,T=4,CORNERS=[{key:"tl",style:{top:0,left:0,borderTopWidth:4,borderLeftWidth:4}},{key:"tr",style:{top:0,right:0,borderTopWidth:4,borderRightWidth:4}},{key:"bl",style:{bottom:0,left:0,borderBottomWidth:4,borderLeftWidth:4}},{key:"br",style:{bottom:0,right:0,borderBottomWidth:4,borderRightWidth:4}}],DEFAULT_LABELS={found:"Code found",invalid:"This code cannot be used. Try another.",torchOn:"Turn torch on",torchOff:"Turn torch off",manualEntry:"Enter code instead",gallery:"Upload from gallery",noPermissionTitle:"Camera access is off",noPermissionMessage:"Allow camera access to scan a code.",permissionAction:"Allow camera access",noCameraTitle:"No camera found",noCameraMessage:"This device has no camera available. You can still add the code another way."},ScannerOverlay=exports.ScannerOverlay=(0,_react.forwardRef)((e,t)=>{const{children:i,state:n="scanning",hint:a="Point the camera at the code",labels:r,torch:o=!1,onTorchChange:s,onManualEntry:l,onGallery:c,onPermissionAction:d,frameSize:u=DEFAULT_FRAME,haptic:m,style:h,testID:_}=e,x=(0,_index.useTheme)(),g=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),p=(0,_useReducedMotion.useReducedMotion)(),f=(0,_react.useMemo)(()=>buildStyles(x),[x]),v={...DEFAULT_LABELS,...r},[y,j]=(0,_react.useState)({width:0,height:0}),b="scanning"===n||"found"===n||"invalid"===n,R=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current,N=x.motion.duration.slower,S=x.motion.duration.normal;(0,_react.useEffect)(()=>{if(R.setValue(1),p)return;let e;return"scanning"===n&&N>0?e=_reactNative.Animated.loop(_reactNative.Animated.sequence([_reactNative.Animated.timing(R,{toValue:1.03,duration:2*N,useNativeDriver:!0}),_reactNative.Animated.timing(R,{toValue:1,duration:2*N,useNativeDriver:!0})])):"found"===n&&S>0&&(R.setValue(1.08),e=_reactNative.Animated.timing(R,{toValue:1,duration:S,useNativeDriver:!0})),e?.start(),()=>e?.stop()},[n,p,N,S,R]);const w=(0,_react.useRef)(n);(0,_react.useEffect)(()=>{w.current!==n&&(w.current=n,!1!==m&&("found"===n?(0,_hapticUtils.triggerHaptic)("notificationSuccess"):"invalid"===n&&(0,_hapticUtils.triggerHaptic)("notificationError")))},[n,m]);const{found:A,invalid:E}=v,{noPermissionTitle:C,noPermissionMessage:M}=v,{noCameraTitle:V,noCameraMessage:k}=v;(0,_react.useEffect)(()=>{switch(n){case"scanning":(0,_announce.announce)(a);break;case"found":(0,_announce.announce)(A);break;case"invalid":(0,_announce.announce)(E,{polite:!1});break;case"noPermission":(0,_announce.announce)(`${C}. ${M}`);break;case"noCamera":(0,_announce.announce)(`${V}. ${k}`)}},[n,a,A,E,C,M,V,k]);const P=Math.max(240,Math.min(u,y.width-2*x.spacing.xl)),L=(y.width-P)/2,q=Math.max(x.spacing.md,(y.height-P)/2-.06*y.height),O=y.width>0&&y.height>0,I={borderColor:"found"===n?x.colors.success:"invalid"===n?x.colors.error:x.colors.onOverlay,width:32,height:32},F="found"===n||"invalid"===n?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.pill,{backgroundColor:"found"===n?x.colors.success:x.colors.error}],children:(0,_jsxRuntime.jsx)(_index6.Text,{variant:"bodySmall",weight:"semibold",align:"center",color:"found"===n?x.colors.onSuccess:x.colors.onError,children:"found"===n?A:E})}):(0,_jsxRuntime.jsx)(_index6.Text,{variant:"bodySmall",align:"center",color:x.colors.onOverlay,children:a}),B=b&&null!=s,D=b?"glass":"outline";return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,testID:_,onLayout:e=>{const{width:t,height:i}=e.nativeEvent.layout;j(e=>e.width===t&&e.height===i?e:{width:t,height:i})},style:[f.root,!b&&{backgroundColor:x.colors.background.primary},h],children:[b?(0,_jsxRuntime.jsx)(_reactNative.View,{style:_reactNative.StyleSheet.absoluteFill,children:i}):null,b&&O?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{pointerEvents:"none",style:_reactNative.StyleSheet.absoluteFill,accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants","aria-hidden":!0,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.scrim,{left:0,right:0,top:0,height:q}]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.scrim,{left:0,right:0,top:q+P,bottom:0}]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.scrim,{left:0,width:L,top:q,height:P}]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.scrim,{left:L+P,right:0,top:q,height:P}]}),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{position:"absolute",left:L,top:q,width:P,height:P,transform:[{scale:R}]},children:CORNERS.map(e=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.mark,I,e.style]},e.key))})]}),(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[f.message,{top:q+P+x.spacing.md}],children:F})]}):null,b?null:(0,_jsxRuntime.jsx)(_reactNative.View,{style:f.panel,children:(0,_jsxRuntime.jsx)(_index4.EmptyState,{fill:!0,icon:(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:"noPermission"===n?"camera":"camera-slash",size:48,color:x.colors.text.tertiary}),title:"noPermission"===n?C:V,description:"noPermission"===n?M:k,action:"noPermission"===n&&d?{label:v.permissionAction,onPress:d}:void 0})}),(0,_jsxRuntime.jsxs)(_reactNative.View,{pointerEvents:"box-none",style:[f.bar,{paddingBottom:Math.max(g.bottom,x.spacing.md)}],children:[B?(0,_jsxRuntime.jsx)(_index5.IconButton,{icon:o?"flash":"flash-slash",variant:"glass",size:"lg",active:o,haptic:m,accessibilityLabel:o?v.torchOff:v.torchOn,onPress:()=>s?.(!o)}):null,c?(0,_jsxRuntime.jsx)(_index3.Button,{title:v.gallery,leftIcon:"gallery",variant:D,tone:"neutral",size:"lg",haptic:m,onPress:c}):null,l?(0,_jsxRuntime.jsx)(_index3.Button,{title:v.manualEntry,leftIcon:"keyboard",variant:D,tone:"neutral",size:"lg",haptic:m,onPress:l}):null]})]})});ScannerOverlay.displayName="ScannerOverlay";const buildStyles=e=>_reactNative.StyleSheet.create({root:{flex:1,overflow:"hidden"},scrim:{position:"absolute",backgroundColor:e.colors.background.overlay},mark:{position:"absolute"},message:{position:"absolute",left:0,right:0,alignItems:"center",paddingHorizontal:e.spacing.xl},pill:{paddingHorizontal:e.spacing.md,paddingVertical:e.spacing.xs,borderRadius:e.radius.pill,..._corners.smoothCorners},panel:{..._reactNative.StyleSheet.absoluteFill,justifyContent:"center"},bar:{position:"absolute",left:0,right:0,bottom:0,flexDirection:"row",flexWrap:"wrap",alignItems:"center",justifyContent:"center",gap:e.spacing.sm,paddingHorizontal:e.spacing.md}});var _default=exports.default=ScannerOverlay;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ScannerOverlay=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"),_hapticUtils=require("../../utils/hapticUtils.js"),_index2=require("../AppIcon/index.js"),_index3=require("../Button/index.js"),_index4=require("../EmptyState/index.js"),_index5=require("../IconButton/index.js"),_index6=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");const MIN_FRAME=240,DEFAULT_FRAME=260,MARK_LENGTH=32,MARK_THICKNESS=4,LIFT=.06,BREATHE_SCALE=1.03,SNAP_SCALE=1.08,T=4,CORNERS=[{key:"tl",style:{top:0,left:0,borderTopWidth:4,borderLeftWidth:4}},{key:"tr",style:{top:0,right:0,borderTopWidth:4,borderRightWidth:4}},{key:"bl",style:{bottom:0,left:0,borderBottomWidth:4,borderLeftWidth:4}},{key:"br",style:{bottom:0,right:0,borderBottomWidth:4,borderRightWidth:4}}],DEFAULT_LABELS={found:"Code found",invalid:"This code cannot be used. Try another.",torchOn:"Turn torch on",torchOff:"Turn torch off",manualEntry:"Enter code instead",gallery:"Upload from gallery",noPermissionTitle:"Camera access is off",noPermissionMessage:"Allow camera access to scan a code.",permissionAction:"Allow camera access",noCameraTitle:"No camera found",noCameraMessage:"This device has no camera available. You can still add the code another way."},ScannerOverlay=exports.ScannerOverlay=(0,_react.forwardRef)((e,t)=>{const{children:i,state:n="scanning",hint:a="Point the camera at the code",labels:r,torch:o=!1,onTorchChange:s,onManualEntry:c,onGallery:l,onPermissionAction:d,frameSize:u=DEFAULT_FRAME,haptic:m,style:h,testID:_}=e,x=(0,_index.useTheme)(),p=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),f=(0,_useReducedMotion.useReducedMotion)(),g=(0,_react.useMemo)(()=>buildStyles(x),[x]),v={...DEFAULT_LABELS,...r},[y,j]=(0,_react.useState)({width:0,height:0}),b="scanning"===n||"found"===n||"invalid"===n,R=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current,N=x.motion.duration.slower,S=x.motion.duration.default;(0,_react.useEffect)(()=>{if(R.setValue(1),f)return;let e;return"scanning"===n&&N>0?e=_reactNative.Animated.loop(_reactNative.Animated.sequence([_reactNative.Animated.timing(R,{toValue:1.03,duration:2*N,useNativeDriver:!0}),_reactNative.Animated.timing(R,{toValue:1,duration:2*N,useNativeDriver:!0})])):"found"===n&&S>0&&(R.setValue(1.08),e=_reactNative.Animated.timing(R,{toValue:1,duration:S,useNativeDriver:!0})),e?.start(),()=>e?.stop()},[n,f,N,S,R]);const w=(0,_react.useRef)(n);(0,_react.useEffect)(()=>{w.current!==n&&(w.current=n,!1!==m&&("found"===n?(0,_hapticUtils.triggerHaptic)("notificationSuccess"):"invalid"===n&&(0,_hapticUtils.triggerHaptic)("notificationError")))},[n,m]);const{found:A,invalid:E}=v,{noPermissionTitle:C,noPermissionMessage:M}=v,{noCameraTitle:V,noCameraMessage:P}=v;(0,_react.useEffect)(()=>{switch(n){case"scanning":(0,_announce.announce)(a);break;case"found":(0,_announce.announce)(A);break;case"invalid":(0,_announce.announce)(E,{polite:!1});break;case"noPermission":(0,_announce.announce)(`${C}. ${M}`);break;case"noCamera":(0,_announce.announce)(`${V}. ${P}`)}},[n,a,A,E,C,M,V,P]);const k=Math.max(240,Math.min(u,y.width-2*x.space.xl)),L=(y.width-k)/2,q=Math.max(x.space.md,(y.height-k)/2-.06*y.height),I=y.width>0&&y.height>0,F={borderColor:"found"===n?x.colors.success:"invalid"===n?x.colors.danger:x.colors["on-scrim"],width:32,height:32},O="found"===n||"invalid"===n?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[g.pill,{backgroundColor:"found"===n?x.colors.success:x.colors.danger}],children:(0,_jsxRuntime.jsx)(_index6.Text,{variant:"bodySmall",weight:"semibold",align:"center",color:"found"===n?x.colors["on-success"]:x.colors["on-danger"],children:"found"===n?A:E})}):(0,_jsxRuntime.jsx)(_index6.Text,{variant:"bodySmall",align:"center",color:x.colors["on-scrim"],children:a}),B=b&&null!=s,D=b?"glass":"outline";return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,testID:_,onLayout:e=>{const{width:t,height:i}=e.nativeEvent.layout;j(e=>e.width===t&&e.height===i?e:{width:t,height:i})},style:[g.root,!b&&{backgroundColor:x.colors.bg},h],children:[b?(0,_jsxRuntime.jsx)(_reactNative.View,{style:_reactNative.StyleSheet.absoluteFill,children:i}):null,b&&I?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{pointerEvents:"none",style:_reactNative.StyleSheet.absoluteFill,accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants","aria-hidden":!0,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[g.scrim,{left:0,right:0,top:0,height:q}]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[g.scrim,{left:0,right:0,top:q+k,bottom:0}]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[g.scrim,{left:0,width:L,top:q,height:k}]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[g.scrim,{left:L+k,right:0,top:q,height:k}]}),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{position:"absolute",left:L,top:q,width:k,height:k,transform:[{scale:R}]},children:CORNERS.map(e=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:[g.mark,F,e.style]},e.key))})]}),(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[g.message,{top:q+k+x.space.md}],children:O})]}):null,b?null:(0,_jsxRuntime.jsx)(_reactNative.View,{style:g.panel,children:(0,_jsxRuntime.jsx)(_index4.EmptyState,{fill:!0,icon:(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:"noPermission"===n?"camera":"camera-slash",size:48,color:x.colors["text-subtle"]}),title:"noPermission"===n?C:V,description:"noPermission"===n?M:P,action:"noPermission"===n&&d?{label:v.permissionAction,onPress:d}:void 0})}),(0,_jsxRuntime.jsxs)(_reactNative.View,{pointerEvents:"box-none",style:[g.bar,{paddingBottom:Math.max(p.bottom,x.space.md)}],children:[B?(0,_jsxRuntime.jsx)(_index5.IconButton,{icon:o?"flash":"flash-slash",variant:"glass",size:"lg",active:o,haptic:m,accessibilityLabel:o?v.torchOff:v.torchOn,onPress:()=>s?.(!o)}):null,l?(0,_jsxRuntime.jsx)(_index3.Button,{title:v.gallery,leftIcon:"gallery",variant:D,tone:"neutral",size:"lg",haptic:m,onPress:l}):null,c?(0,_jsxRuntime.jsx)(_index3.Button,{title:v.manualEntry,leftIcon:"keyboard",variant:D,tone:"neutral",size:"lg",haptic:m,onPress:c}):null]})]})});ScannerOverlay.displayName="ScannerOverlay";const buildStyles=e=>_reactNative.StyleSheet.create({root:{flex:1,overflow:"hidden"},scrim:{position:"absolute",backgroundColor:e.colors.scrim},mark:{position:"absolute"},message:{position:"absolute",left:0,right:0,alignItems:"center",paddingHorizontal:e.space.xl},pill:{paddingHorizontal:e.space.md,paddingVertical:e.space.xs,borderRadius:e.radius.pill,..._corners.smoothCorners},panel:{..._reactNative.StyleSheet.absoluteFill,justifyContent:"center"},bar:{position:"absolute",left:0,right:0,bottom:0,flexDirection:"row",flexWrap:"wrap",alignItems:"center",justifyContent:"center",gap:e.space.sm,paddingHorizontal:e.space.md}});var _default=exports.default=ScannerOverlay;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Screen=Screen;var _react=require("react"),_reactNative=require("react-native"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useRefreshControl=require("../../hooks/useRefreshControl.js"),_index=require("../../theme/index.js"),_index2=require("../AppBar/index.js"),_index3=require("../KeyboardAwareScrollView/index.js"),_index4=require("../KeyboardToolbar/index.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_EDGES=["top","bottom"],SCROLL_EVENT_THROTTLE=16,noop=()=>{},buildStyles=e=>_reactNative.StyleSheet.create({flex:{flex:1},root:{flex:1,backgroundColor:e.colors.background.primary},overlay:{position:"absolute",top:0,left:0,right:0},footer:{backgroundColor:e.colors.background.primary,borderTopWidth:_reactNative.StyleSheet.hairlineWidth,borderTopColor:e.colors.border.primary}});function Screen(e){const{title:t,subtitle:r,largeTitle:o=!0,onBack:i,rightActions:n,leading:a,children:l,onRefresh:s,refreshing:d=!1,footer:c,footerStyle:u,scroll:_=!0,list:f,edges:v=DEFAULT_EDGES,keyboardToolbar:x=!0,contentContainerStyle:h,style:p,testID:y}=e,g=(0,_index.useTheme)(),b=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),m=(0,_react.useMemo)(()=>buildStyles(g),[g]),[S]=(0,_react.useState)(()=>new _reactNative.Animated.Value(0)),[j,R]=(0,_react.useState)(0),T=void 0!==i,C=(0,_react.useRef)(i);C.current=i;const E=Boolean(t||r||i||a||n?.length),N=o&&void 0!==t,k=N&&(void 0!==f||_),A=k?j:0,L=void 0!==c,{refreshControl:w}=(0,_useRefreshControl.useRefreshControl)({onRefresh:s??noop,refreshing:d}),q=s?(0,_react.cloneElement)(w,{progressViewOffset:A}):void 0,B=(0,_react.useMemo)(()=>_reactNative.Animated.event([{nativeEvent:{contentOffset:{y:S}}}],{useNativeDriver:!1}),[S]),V=(0,_react.useCallback)(e=>{const{height:t}=e.nativeEvent.layout;R(e=>Math.max(e,t))},[]);(0,_react.useEffect)(()=>{if(!T)return;const e=_reactNative.BackHandler.addEventListener("hardwareBackPress",()=>(C.current?.(),!0));return()=>e.remove()},[T]);const D=v.includes("left")?b.left:0,K=v.includes("right")?b.right:0,O=v.includes("bottom")?b.bottom:0,M=v.includes("top")&&!E?b.top:0,F=v.filter(e=>"top"!==e&&!("bottom"===e&&L)),H=E?(0,_jsxRuntime.jsx)(_reactNative.View,{style:k?m.overlay:void 0,onLayout:k?V:void 0,children:(0,_jsxRuntime.jsx)(_index2.AppBar,{title:t,subtitle:r,variant:N?"large":"default",scrollY:k?S:void 0,onBack:i,rightActions:n,leading:a})}):null;let I;I=void 0!==f?(0,_jsxRuntime.jsx)(_reactNative.FlatList,{keyboardShouldPersistTaps:"handled",...f,refreshControl:q,onScroll:k?B:void 0,scrollEventThrottle:SCROLL_EVENT_THROTTLE,style:m.flex,contentContainerStyle:[{paddingTop:A,paddingLeft:D,paddingRight:K},{paddingBottom:L?0:O},f.contentContainerStyle,h]}):_?(0,_jsxRuntime.jsx)(_index3.KeyboardAwareScrollView,{refreshControl:q,onScroll:k?B:void 0,safeAreaEdges:F,style:m.flex,contentContainerStyle:[{paddingTop:A},h],children:l}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[m.flex,{paddingLeft:D,paddingRight:K,paddingBottom:L?0:O},h],children:l});const P=L?(0,_jsxRuntime.jsx)(_reactNativeKeyboardController.KeyboardStickyView,{style:[m.footer,{paddingLeft:D,paddingRight:K,paddingBottom:O},u],children:c}):null;return(0,_jsxRuntime.jsxs)(_reactNative.View,{testID:y,style:[m.root,{paddingTop:M},p],children:[k?null:H,I,P,k?H:null,x?(0,_jsxRuntime.jsx)(_index4.KeyboardToolbar,{}):null]})}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Screen=Screen;var _react=require("react"),_reactNative=require("react-native"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useRefreshControl=require("../../hooks/useRefreshControl.js"),_index=require("../../theme/index.js"),_index2=require("../AppBar/index.js"),_index3=require("../KeyboardAwareScrollView/index.js"),_index4=require("../KeyboardToolbar/index.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_EDGES=["top","bottom"],SCROLL_EVENT_THROTTLE=16,noop=()=>{},buildStyles=e=>_reactNative.StyleSheet.create({flex:{flex:1},root:{flex:1,backgroundColor:e.colors.bg},overlay:{position:"absolute",top:0,left:0,right:0},footer:{backgroundColor:e.colors.bg,borderTopWidth:_reactNative.StyleSheet.hairlineWidth,borderTopColor:e.colors.border}});function Screen(e){const{title:t,subtitle:r,largeTitle:o=!0,onBack:n,rightActions:i,leading:a,children:l,onRefresh:s,refreshing:d=!1,footer:c,footerStyle:u,scroll:_=!0,list:f,edges:v=DEFAULT_EDGES,keyboardToolbar:x=!0,contentContainerStyle:h,style:g,testID:p}=e,y=(0,_index.useTheme)(),b=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),S=(0,_react.useMemo)(()=>buildStyles(y),[y]),[m]=(0,_react.useState)(()=>new _reactNative.Animated.Value(0)),[j,R]=(0,_react.useState)(0),T=void 0!==n,C=(0,_react.useRef)(n);C.current=n;const E=Boolean(t||r||n||a||i?.length),N=o&&void 0!==t,A=N&&(void 0!==f||_),L=A?j:0,k=void 0!==c,{refreshControl:w}=(0,_useRefreshControl.useRefreshControl)({onRefresh:s??noop,refreshing:d}),q=s?(0,_react.cloneElement)(w,{progressViewOffset:L}):void 0,B=(0,_react.useMemo)(()=>_reactNative.Animated.event([{nativeEvent:{contentOffset:{y:m}}}],{useNativeDriver:!1}),[m]),V=(0,_react.useCallback)(e=>{const{height:t}=e.nativeEvent.layout;R(e=>Math.max(e,t))},[]);(0,_react.useEffect)(()=>{if(!T)return;const e=_reactNative.BackHandler.addEventListener("hardwareBackPress",()=>(C.current?.(),!0));return()=>e.remove()},[T]);const D=v.includes("left")?b.left:0,K=v.includes("right")?b.right:0,O=v.includes("bottom")?b.bottom:0,M=v.includes("top")&&!E?b.top:0,F=v.filter(e=>"top"!==e&&!("bottom"===e&&k)),H=E?(0,_jsxRuntime.jsx)(_reactNative.View,{style:A?S.overlay:void 0,onLayout:A?V:void 0,children:(0,_jsxRuntime.jsx)(_index2.AppBar,{title:t,subtitle:r,variant:N?"large":"default",scrollY:A?m:void 0,onBack:n,rightActions:i,leading:a})}):null;let I;I=void 0!==f?(0,_jsxRuntime.jsx)(_reactNative.FlatList,{keyboardShouldPersistTaps:"handled",...f,refreshControl:q,onScroll:A?B:void 0,scrollEventThrottle:SCROLL_EVENT_THROTTLE,style:S.flex,contentContainerStyle:[{paddingTop:L,paddingLeft:D,paddingRight:K},{paddingBottom:k?0:O},f.contentContainerStyle,h]}):_?(0,_jsxRuntime.jsx)(_index3.KeyboardAwareScrollView,{refreshControl:q,onScroll:A?B:void 0,safeAreaEdges:F,style:S.flex,contentContainerStyle:[{paddingTop:L},h],children:l}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[S.flex,{paddingLeft:D,paddingRight:K,paddingBottom:k?0:O},h],children:l});const P=k?(0,_jsxRuntime.jsx)(_reactNativeKeyboardController.KeyboardStickyView,{style:[S.footer,{paddingLeft:D,paddingRight:K,paddingBottom:O},u],children:c}):null;return(0,_jsxRuntime.jsxs)(_reactNative.View,{testID:p,style:[S.root,{paddingTop:M},g],children:[A?null:H,I,P,A?H:null,x?(0,_jsxRuntime.jsx)(_index4.KeyboardToolbar,{}):null]})}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SearchBar=void 0;var _react=require("react"),_reactNative=require("react-native"),_useControllableState=require("../../hooks/useControllableState.js"),_useDebounce=require("../../hooks/useDebounce.js"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_mergeRefs=require("../../utils/mergeRefs.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_useFloatingLabel=require("../FieldBase/useFloatingLabel.js"),_SearchPanel=require("./SearchPanel.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_PANEL_ROWS=8,HOLD_RELEASE_MS=50,SearchBar=exports.SearchBar=(0,_react.forwardRef)((e,a)=>{const{value:t,onChangeText:s,onSubmit:l,onFocus:n,onBlur:r,placeholder:c="Search…",autoFocus:i=!1,disabled:o=!1,onClear:u,leftIcon:d,debounceMs:_,size:b="md",variant:h,borderRadius:p,label:g,labelMode:f="top",labelStyle:S,scopes:x,scope:m,onScopeChange:v,recents:R,recentsTitle:j="Recent searches",maxRecents:C=DEFAULT_PANEL_ROWS,onSelectRecent:y,onRemoveRecent:F,onClearRecents:B,suggestions:k,maxSuggestions:L=DEFAULT_PANEL_ROWS,onSelectSuggestion:I,haptic:q,style:E,inputStyle:P,accessibilityLabel:T,testID:N,...D}=e,z=(0,_index.useTheme)(),H=h??z.components.searchBar?.defaultVariant??z.components.field?.defaultVariant??"filled",w="underline"===H,A=(0,_index.resolveFieldSize)(z,b),U=(0,_index.radiusOf)(z,z.components.searchBar[b].radius,`components.searchBar.${b}.radius`),M=(0,_FieldBase.resolveFieldTextStyle)(z,{disabled:o}),O=(0,_react.useRef)(null),V=(0,_react.useMemo)(()=>(0,_mergeRefs.mergeRefs)(O,a),[a]),W=(0,_react.useCallback)(()=>{o||O.current?.focus()},[o]),$=(0,_react.useMemo)(()=>buildStyles(z),[z]),X="string"==typeof t?t:"",[K,G]=(0,_react.useState)(!1),J=(0,_react.useCallback)(e=>{G(!0),n?.(e)},[n]),Q=(0,_react.useCallback)(e=>{G(!1),r?.(e)},[r]),[Y,Z]=(0,_react.useState)(X),ee=(0,_useDebounce.useDebounce)(Y,_??0);(0,_react.useEffect)(()=>{void 0!==_&&X!==Y&&Z(X)},[X,_]);const ae=(0,_react.useRef)(X);(0,_react.useEffect)(()=>{void 0!==_&&ee!==ae.current&&(ae.current=ee,s(ee))},[ee,_,s]);const te=(0,_react.useCallback)(e=>{void 0===_?s(e):Z(e)},[_,s]),se=(0,_react.useCallback)(()=>{const e=(0,_hapticUtils.resolveHaptic)(q,"selection");e&&(0,_hapticUtils.triggerHaptic)(e),void 0!==_&&(Z(""),ae.current=""),s(""),u?.()},[q,_,s,u]),le=(0,_react.useCallback)(()=>{l?.(void 0!==_?Y:X)},[l,_,Y,X]),ne=void 0!==_?Y:X,re=ne.length>0,[ce,ie]=(0,_useControllableState.useControllableState)({value:m,defaultValue:x?.[0]?.value??"",onChange:v}),oe=(0,_react.useCallback)(e=>{ie(e);const a=x?.find(a=>a.value===e)?.label;a&&(0,_announce.announce)(`Searching ${a}`)},[x,ie]),[ue,de]=(0,_react.useState)(!1),be=(0,_react.useRef)(null),he=(0,_react.useCallback)(()=>{be.current&&(clearTimeout(be.current),be.current=null)},[]),pe=(0,_react.useCallback)(()=>{he(),de(!0)},[he]),ge=(0,_react.useCallback)(()=>{he(),be.current=setTimeout(()=>de(!1),50)},[he]);(0,_react.useEffect)(()=>he,[he]);const fe=!o&&(K||ue),Se=(0,_react.useMemo)(()=>(R??[]).slice(0,C),[R,C]),xe=(0,_react.useMemo)(()=>(k??[]).slice(0,L).map(_SearchPanel.normalizeSuggestion),[k,L]),me=fe&&!re&&Se.length>0,ve=fe&&re&&xe.length>0,Re=ve?xe.length:0;(0,_react.useEffect)(()=>{Re>0&&(0,_announce.announce)(1===Re?"1 suggestion":`${Re} suggestions`)},[Re]);const je=(0,_react.useCallback)(()=>{const e=(0,_hapticUtils.resolveHaptic)(q,"selection");e&&(0,_hapticUtils.triggerHaptic)(e)},[q]),Ce=(0,_react.useCallback)(e=>{je(),O.current?.blur(),de(!1),y?.(e)},[je,y]),ye=(0,_react.useCallback)(e=>{je(),O.current?.blur(),de(!1),I?.(e)},[je,I]),Fe=(0,_react.useCallback)(e=>{je(),F?.(e),(0,_announce.announce)(`Removed ${e}`),W()},[je,F,W]),Be=(0,_react.useCallback)(()=>{je(),B?.(),(0,_announce.announce)("Recent searches cleared"),W()},[je,B,W]),ke={size:A.icon,color:o?z.colors.text.disabled:z.colors.text.tertiary,disabled:o},Le=d?(0,_slotIcon.renderSlotIcon)(d,ke):(z.icons?.search??_defaultIcons.defaultIcons.search)(ke),Ie=Boolean(g)&&"float"===f,qe=(0,_useFloatingLabel.useFloatingLabel)({label:g,enabled:Ie,floated:K||re,variant:H,sizeTokens:A,leadingOffset:A.icon+z.spacing.md,trailingOffset:re?A.icon+z.spacing.md:0,paddingLeft:w?z.spacing.none:A.paddingX,color:z.colors.field.label,style:S}),Ee=re&&!o?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:se,hitSlop:8,accessibilityRole:"button",accessibilityLabel:"Clear search",children:(z.icons?.close??_defaultIcons.defaultIcons.close)({size:A.icon,color:z.colors.text.secondary})}):null;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:E,testID:N,children:[g&&!Ie?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:b,style:S,children:g}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:$.root,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:$.fieldWrap,children:[(0,_jsxRuntime.jsx)(_FieldBase.FieldBase,{size:b,variant:H,focused:K,disabled:o,filled:re,minHeight:A.minHeight,paddingHorizontal:w?z.spacing.none:A.paddingX,borderRadius:p??U,leading:Le,trailing:Ee,topNotch:qe.topNotch,onPress:W,pressFeedback:!1,accessibilityRole:"search",accessibilityLabel:T??c,children:(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:V,style:[$.input,{fontSize:A.text,color:M.color,...M.weightStyle},P],value:ne,onChangeText:te,onSubmitEditing:le,onFocus:J,onBlur:Q,placeholder:!Ie||K||re?c:void 0,placeholderTextColor:M.placeholderColor,autoFocus:i,editable:!o,returnKeyType:"search",selectionColor:(0,_FieldBase.resolveVariantColors)(z,H).borderFocusedRepresentative,accessibilityLabel:T??c,accessibilityState:{disabled:o},"aria-disabled":o,...D})}),qe.node]})}),x&&x.length>0?(0,_jsxRuntime.jsx)(_SearchPanel.SearchScopeBar,{scopes:x,scope:ce||(x[0]?.value??""),disabled:o,haptic:q,onChange:oe}):null,me?(0,_jsxRuntime.jsx)(_SearchPanel.SearchRecents,{recents:Se,title:j,onSelect:Ce,onRemove:F?Fe:void 0,onClear:B?Be:void 0,onHold:pe,onRelease:ge}):null,ve?(0,_jsxRuntime.jsx)(_SearchPanel.SearchSuggestions,{suggestions:xe,query:ne,onSelect:ye,onHold:pe,onRelease:ge}):null]})});SearchBar.displayName="SearchBar";const buildStyles=e=>_reactNative.StyleSheet.create({root:{flexDirection:"row",alignItems:"center",width:"100%",position:"relative",overflow:"visible"},fieldWrap:{flex:1,position:"relative",overflow:"visible"},input:{flex:1,padding:e.spacing.none,margin:e.spacing.none,includeFontPadding:!1}});var _default=exports.default=SearchBar;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SearchBar=void 0;var _react=require("react"),_reactNative=require("react-native"),_useControllableState=require("../../hooks/useControllableState.js"),_useDebounce=require("../../hooks/useDebounce.js"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_mergeRefs=require("../../utils/mergeRefs.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_useFloatingLabel=require("../FieldBase/useFloatingLabel.js"),_SearchPanel=require("./SearchPanel.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_PANEL_ROWS=8,HOLD_RELEASE_MS=50,SearchBar=exports.SearchBar=(0,_react.forwardRef)((e,t)=>{const{value:a,onChangeText:s,onSubmit:l,onFocus:n,onBlur:c,placeholder:r="Search…",autoFocus:i=!1,disabled:o=!1,onClear:u,leftIcon:d,debounceMs:_,size:b="md",variant:h,borderRadius:p,label:g,labelMode:f="top",labelStyle:S,scopes:x,scope:m,onScopeChange:v,recents:R,recentsTitle:j="Recent searches",maxRecents:C=DEFAULT_PANEL_ROWS,onSelectRecent:y,onRemoveRecent:F,onClearRecents:k,suggestions:B,maxSuggestions:L=DEFAULT_PANEL_ROWS,onSelectSuggestion:I,haptic:q,style:E,inputStyle:P,accessibilityLabel:T,testID:N,...D}=e,z=(0,_index.useTheme)(),w=h??z.settings.components["search-bar"]?.defaultVariant??z.settings.components.field?.defaultVariant??"filled",A="underline"===w,H=(0,_index.resolveFieldSize)(z,b),U=(0,_index.radiusOf)(z,z.components["search-bar"][b].radius),M=(0,_FieldBase.resolveFieldTextStyle)(z,{disabled:o}),O=(0,_react.useRef)(null),V=(0,_react.useMemo)(()=>(0,_mergeRefs.mergeRefs)(O,t),[t]),W=(0,_react.useCallback)(()=>{o||O.current?.focus()},[o]),$=(0,_react.useMemo)(()=>buildStyles(z),[z]),K="string"==typeof a?a:"",[G,J]=(0,_react.useState)(!1),Q=(0,_react.useCallback)(e=>{J(!0),n?.(e)},[n]),X=(0,_react.useCallback)(e=>{J(!1),c?.(e)},[c]),[Y,Z]=(0,_react.useState)(K),ee=(0,_useDebounce.useDebounce)(Y,_??0);(0,_react.useEffect)(()=>{void 0!==_&&K!==Y&&Z(K)},[K,_]);const te=(0,_react.useRef)(K);(0,_react.useEffect)(()=>{void 0!==_&&ee!==te.current&&(te.current=ee,s(ee))},[ee,_,s]);const ae=(0,_react.useCallback)(e=>{void 0===_?s(e):Z(e)},[_,s]),se=(0,_react.useCallback)(()=>{const e=(0,_hapticUtils.resolveHaptic)(q,"selection");e&&(0,_hapticUtils.triggerHaptic)(e),void 0!==_&&(Z(""),te.current=""),s(""),u?.()},[q,_,s,u]),le=(0,_react.useCallback)(()=>{l?.(void 0!==_?Y:K)},[l,_,Y,K]),ne=void 0!==_?Y:K,ce=ne.length>0,[re,ie]=(0,_useControllableState.useControllableState)({value:m,defaultValue:x?.[0]?.value??"",onChange:v}),oe=(0,_react.useCallback)(e=>{ie(e);const t=x?.find(t=>t.value===e)?.label;t&&(0,_announce.announce)(`Searching ${t}`)},[x,ie]),[ue,de]=(0,_react.useState)(!1),be=(0,_react.useRef)(null),he=(0,_react.useCallback)(()=>{be.current&&(clearTimeout(be.current),be.current=null)},[]),pe=(0,_react.useCallback)(()=>{he(),de(!0)},[he]),ge=(0,_react.useCallback)(()=>{he(),be.current=setTimeout(()=>de(!1),50)},[he]);(0,_react.useEffect)(()=>he,[he]);const fe=!o&&(G||ue),Se=(0,_react.useMemo)(()=>(R??[]).slice(0,C),[R,C]),xe=(0,_react.useMemo)(()=>(B??[]).slice(0,L).map(_SearchPanel.normalizeSuggestion),[B,L]),me=fe&&!ce&&Se.length>0,ve=fe&&ce&&xe.length>0,Re=ve?xe.length:0;(0,_react.useEffect)(()=>{Re>0&&(0,_announce.announce)(1===Re?"1 suggestion":`${Re} suggestions`)},[Re]);const je=(0,_react.useCallback)(()=>{const e=(0,_hapticUtils.resolveHaptic)(q,"selection");e&&(0,_hapticUtils.triggerHaptic)(e)},[q]),Ce=(0,_react.useCallback)(e=>{je(),O.current?.blur(),de(!1),y?.(e)},[je,y]),ye=(0,_react.useCallback)(e=>{je(),O.current?.blur(),de(!1),I?.(e)},[je,I]),Fe=(0,_react.useCallback)(e=>{je(),F?.(e),(0,_announce.announce)(`Removed ${e}`),W()},[je,F,W]),ke=(0,_react.useCallback)(()=>{je(),k?.(),(0,_announce.announce)("Recent searches cleared"),W()},[je,k,W]),Be={size:H.icon,color:o?z.colors["text-disabled"]:z.colors["text-subtle"],disabled:o},Le=d?(0,_slotIcon.renderSlotIcon)(d,Be):(z.settings.icons.search??_defaultIcons.defaultIcons.search)(Be),Ie=Boolean(g)&&"float"===f,qe=(0,_useFloatingLabel.useFloatingLabel)({label:g,enabled:Ie,floated:G||ce,variant:w,sizeTokens:H,leadingOffset:H.icon+z.space.md,trailingOffset:ce?H.icon+z.space.md:0,paddingLeft:A?z.space.none:H["padding-x"],color:z.colors["field-label"],style:S}),Ee=ce&&!o?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:se,hitSlop:8,accessibilityRole:"button",accessibilityLabel:"Clear search",children:(z.settings.icons.close??_defaultIcons.defaultIcons.close)({size:H.icon,color:z.colors["text-muted"]})}):null;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:E,testID:N,children:[g&&!Ie?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:b,style:S,children:g}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:$.root,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:$.fieldWrap,children:[(0,_jsxRuntime.jsx)(_FieldBase.FieldBase,{size:b,variant:w,focused:G,disabled:o,filled:ce,minHeight:H["min-height"],paddingHorizontal:A?z.space.none:H["padding-x"],borderRadius:p??U,leading:Le,trailing:Ee,topNotch:qe.topNotch,onPress:W,pressFeedback:!1,accessibilityRole:"search",accessibilityLabel:T??r,children:(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:V,style:[$.input,{fontSize:H.text,color:M.color,...M.weightStyle},P],value:ne,onChangeText:ae,onSubmitEditing:le,onFocus:Q,onBlur:X,placeholder:!Ie||G||ce?r:void 0,placeholderTextColor:M.placeholderColor,autoFocus:i,editable:!o,returnKeyType:"search",selectionColor:(0,_FieldBase.resolveVariantColors)(z,w).borderFocusedRepresentative,accessibilityLabel:T??r,accessibilityState:{disabled:o},"aria-disabled":o,...D})}),qe.node]})}),x&&x.length>0?(0,_jsxRuntime.jsx)(_SearchPanel.SearchScopeBar,{scopes:x,scope:re||(x[0]?.value??""),disabled:o,haptic:q,onChange:oe}):null,me?(0,_jsxRuntime.jsx)(_SearchPanel.SearchRecents,{recents:Se,title:j,onSelect:Ce,onRemove:F?Fe:void 0,onClear:k?ke:void 0,onHold:pe,onRelease:ge}):null,ve?(0,_jsxRuntime.jsx)(_SearchPanel.SearchSuggestions,{suggestions:xe,query:ne,onSelect:ye,onHold:pe,onRelease:ge}):null]})});SearchBar.displayName="SearchBar";const buildStyles=e=>_reactNative.StyleSheet.create({root:{flexDirection:"row",alignItems:"center",width:"100%",position:"relative",overflow:"visible"},fieldWrap:{flex:1,position:"relative",overflow:"visible"},input:{flex:1,padding:e.space.none,margin:e.space.none,includeFontPadding:!1}});var _default=exports.default=SearchBar;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.normalizeSuggestion=exports.SearchSuggestions=exports.SearchScopeBar=exports.SearchRecents=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../AppIcon/index.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index3=require("../Chip/index.js"),_index4=require("../Text/index.js"),_highlight=require("./highlight.js"),_jsxRuntime=require("react/jsx-runtime");const TOUCH=44,ICON=18,normalizeSuggestion=e=>"string"==typeof e?{text:e}:e;exports.normalizeSuggestion=normalizeSuggestion;const SearchScopeBar=({scopes:e,scope:s,disabled:t,haptic:i,onChange:n})=>{const r=(0,_index.useTheme)(),o=(0,_react.useMemo)(()=>buildStyles(r),[r]);return(0,_jsxRuntime.jsx)(_reactNative.ScrollView,{horizontal:!0,showsHorizontalScrollIndicator:!1,keyboardShouldPersistTaps:"handled",contentContainerStyle:o.scopes,accessibilityLabel:"Search scope",children:e.map(e=>(0,_jsxRuntime.jsx)(_index3.Chip,{label:e.label,selected:e.value===s,disabled:t,haptic:i,onPress:()=>n(e.value),containerStyle:o.scopeChip},e.value))})};exports.SearchScopeBar=SearchScopeBar;const SearchRecents=({recents:e,title:s,onSelect:t,onRemove:i,onClear:n,onHold:r,onRelease:o})=>{const l=(0,_index.useTheme)(),a=(0,_react.useMemo)(()=>buildStyles(l),[l]);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:a.list,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:a.header,children:[(0,_jsxRuntime.jsx)(_index4.Text,{variant:"label",accessibilityRole:"header",style:a.headerTitle,children:s}),n?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:n,onPressIn:r,onPressOut:o,accessibilityRole:"button",accessibilityLabel:"Clear all recent searches",style:a.clearAll,children:(0,_jsxRuntime.jsx)(_index4.Text,{variant:"label",color:"link",children:"Clear all"})}):null]}),e.map(e=>(0,_jsxRuntime.jsxs)(_reactNative.View,{style:a.row,children:[(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>t(e),onPressIn:r,onPressOut:o,accessibilityRole:"button",accessibilityLabel:e,accessibilityHint:"Searches again",android_ripple:{color:l.colors.surface.pressed},style:({pressed:e})=>[a.rowMain,e?{backgroundColor:l.colors.surface.pressed}:null],children:[(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:"history",size:18,color:l.colors.text.tertiary}),(0,_jsxRuntime.jsx)(_index4.Text,{variant:"body",numberOfLines:1,style:a.rowText,children:e})]}),i?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>i(e),onPressIn:r,onPressOut:o,accessibilityRole:"button",accessibilityLabel:`Remove ${e} from recent searches`,style:a.remove,children:(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:"x",size:18,color:l.colors.text.secondary})}):null]},e))]})};exports.SearchRecents=SearchRecents;const SuggestionRow=(0,_react.memo)(({item:e,query:s,onSelect:t,onHold:i,onRelease:n,theme:r,styles:o})=>{const l=(0,_highlight.splitHighlight)(e.text,s),a=e.icon?(0,_slotIcon.renderSlotIcon)(e.icon,{size:18,color:r.colors.text.tertiary,disabled:!1}):(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:"search",size:18,color:r.colors.text.tertiary});return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>t(e),onPressIn:i,onPressOut:n,accessibilityRole:"button",accessibilityLabel:e.subtitle?`${e.text}, ${e.subtitle}`:e.text,android_ripple:{color:r.colors.surface.pressed},style:({pressed:e})=>[o.rowMain,o.suggestion,e?{backgroundColor:r.colors.surface.pressed}:null],children:[a,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:o.rowText,children:[(0,_jsxRuntime.jsx)(_index4.Text,{variant:"body",color:"secondary",numberOfLines:1,children:l.map(e=>(0,_jsxRuntime.jsx)(_reactNative.Text,{style:e.match?o.match:void 0,children:e.text},e.start))}),e.subtitle?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",numberOfLines:1,children:e.subtitle}):null]})]})});SuggestionRow.displayName="SuggestionRow";const SearchSuggestions=({suggestions:e,query:s,onSelect:t,onHold:i,onRelease:n})=>{const r=(0,_index.useTheme)(),o=(0,_react.useMemo)(()=>buildStyles(r),[r]);return(0,_jsxRuntime.jsx)(_reactNative.View,{style:o.list,children:e.map(e=>(0,_jsxRuntime.jsx)(SuggestionRow,{item:e,query:s,onSelect:t,onHold:i,onRelease:n,theme:r,styles:o},e.id??e.text))})};exports.SearchSuggestions=SearchSuggestions;const buildStyles=e=>({..._reactNative.StyleSheet.create({scopes:{flexDirection:"row",alignItems:"center",gap:e.spacing.sm,paddingTop:e.spacing.sm},scopeChip:{minHeight:44},list:{width:"100%",paddingTop:e.spacing.xs},header:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",minHeight:44,paddingHorizontal:e.spacing.xs},headerTitle:{flex:1},clearAll:{minHeight:44,minWidth:44,justifyContent:"center",alignItems:"flex-end"},row:{flexDirection:"row",alignItems:"center"},rowMain:{flex:1,flexDirection:"row",alignItems:"center",gap:e.spacing.md,minHeight:44,paddingHorizontal:e.spacing.xs},suggestion:{paddingVertical:e.spacing.xs},rowText:{flex:1},remove:{width:44,height:44,alignItems:"center",justifyContent:"center"}}),match:{...(0,_index.fontFor)(e,"bold"),color:e.colors.text.primary}});
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.normalizeSuggestion=exports.SearchSuggestions=exports.SearchScopeBar=exports.SearchRecents=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../AppIcon/index.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index3=require("../Chip/index.js"),_index4=require("../Text/index.js"),_highlight=require("./highlight.js"),_jsxRuntime=require("react/jsx-runtime");const TOUCH=44,ICON=18,normalizeSuggestion=e=>"string"==typeof e?{text:e}:e;exports.normalizeSuggestion=normalizeSuggestion;const SearchScopeBar=({scopes:e,scope:s,disabled:t,haptic:i,onChange:n})=>{const r=(0,_index.useTheme)(),o=(0,_react.useMemo)(()=>buildStyles(r),[r]);return(0,_jsxRuntime.jsx)(_reactNative.ScrollView,{horizontal:!0,showsHorizontalScrollIndicator:!1,keyboardShouldPersistTaps:"handled",contentContainerStyle:o.scopes,accessibilityLabel:"Search scope",children:e.map(e=>(0,_jsxRuntime.jsx)(_index3.Chip,{label:e.label,selected:e.value===s,disabled:t,haptic:i,onPress:()=>n(e.value),containerStyle:o.scopeChip},e.value))})};exports.SearchScopeBar=SearchScopeBar;const SearchRecents=({recents:e,title:s,onSelect:t,onRemove:i,onClear:n,onHold:r,onRelease:o})=>{const l=(0,_index.useTheme)(),a=(0,_react.useMemo)(()=>buildStyles(l),[l]);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:a.list,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:a.header,children:[(0,_jsxRuntime.jsx)(_index4.Text,{variant:"label",accessibilityRole:"header",style:a.headerTitle,children:s}),n?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:n,onPressIn:r,onPressOut:o,accessibilityRole:"button",accessibilityLabel:"Clear all recent searches",style:a.clearAll,children:(0,_jsxRuntime.jsx)(_index4.Text,{variant:"label",color:"link",children:"Clear all"})}):null]}),e.map(e=>(0,_jsxRuntime.jsxs)(_reactNative.View,{style:a.row,children:[(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>t(e),onPressIn:r,onPressOut:o,accessibilityRole:"button",accessibilityLabel:e,accessibilityHint:"Searches again",android_ripple:{color:l.colors["surface-pressed"]},style:({pressed:e})=>[a.rowMain,e?{backgroundColor:l.colors["surface-pressed"]}:null],children:[(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:"history",size:18,color:l.colors["text-subtle"]}),(0,_jsxRuntime.jsx)(_index4.Text,{variant:"body",numberOfLines:1,style:a.rowText,children:e})]}),i?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>i(e),onPressIn:r,onPressOut:o,accessibilityRole:"button",accessibilityLabel:`Remove ${e} from recent searches`,style:a.remove,children:(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:"x",size:18,color:l.colors["text-muted"]})}):null]},e))]})};exports.SearchRecents=SearchRecents;const SuggestionRow=(0,_react.memo)(({item:e,query:s,onSelect:t,onHold:i,onRelease:n,theme:r,styles:o})=>{const l=(0,_highlight.splitHighlight)(e.text,s),a=e.icon?(0,_slotIcon.renderSlotIcon)(e.icon,{size:18,color:r.colors["text-subtle"],disabled:!1}):(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:"search",size:18,color:r.colors["text-subtle"]});return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>t(e),onPressIn:i,onPressOut:n,accessibilityRole:"button",accessibilityLabel:e.subtitle?`${e.text}, ${e.subtitle}`:e.text,android_ripple:{color:r.colors["surface-pressed"]},style:({pressed:e})=>[o.rowMain,o.suggestion,e?{backgroundColor:r.colors["surface-pressed"]}:null],children:[a,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:o.rowText,children:[(0,_jsxRuntime.jsx)(_index4.Text,{variant:"body",color:"secondary",numberOfLines:1,children:l.map(e=>(0,_jsxRuntime.jsx)(_reactNative.Text,{style:e.match?o.match:void 0,children:e.text},e.start))}),e.subtitle?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",numberOfLines:1,children:e.subtitle}):null]})]})});SuggestionRow.displayName="SuggestionRow";const SearchSuggestions=({suggestions:e,query:s,onSelect:t,onHold:i,onRelease:n})=>{const r=(0,_index.useTheme)(),o=(0,_react.useMemo)(()=>buildStyles(r),[r]);return(0,_jsxRuntime.jsx)(_reactNative.View,{style:o.list,children:e.map(e=>(0,_jsxRuntime.jsx)(SuggestionRow,{item:e,query:s,onSelect:t,onHold:i,onRelease:n,theme:r,styles:o},e.id??e.text))})};exports.SearchSuggestions=SearchSuggestions;const buildStyles=e=>({..._reactNative.StyleSheet.create({scopes:{flexDirection:"row",alignItems:"center",gap:e.space.sm,paddingTop:e.space.sm},scopeChip:{minHeight:44},list:{width:"100%",paddingTop:e.space.xs},header:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",minHeight:44,paddingHorizontal:e.space.xs},headerTitle:{flex:1},clearAll:{minHeight:44,minWidth:44,justifyContent:"center",alignItems:"flex-end"},row:{flexDirection:"row",alignItems:"center"},rowMain:{flex:1,flexDirection:"row",alignItems:"center",gap:e.space.md,minHeight:44,paddingHorizontal:e.space.xs},suggestion:{paddingVertical:e.space.xs},rowText:{flex:1},remove:{width:44,height:44,alignItems:"center",justifyContent:"center"}}),match:{...(0,_index.fontFor)(e,"bold"),color:e.colors["text-body"]}});
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SectionHeader=void 0;var _react=require("react"),_index=require("../../theme/index.js"),_index2=require("../FieldBase/index.js"),_Text=require("../Text/Text.js"),_jsxRuntime=require("react/jsx-runtime");const SectionHeader=({children:e,variant:t="title",flush:i=!1,required:r=!1,style:a,testID:s})=>{const o=(0,_index.useTheme)(),n=(0,_react.useMemo)(()=>({marginTop:i?0:o.spacing.lg,marginBottom:o.spacing.sm}),[o,i]),d="caps"===t?{variant:"overline",color:"tertiary",weight:void 0}:"sub"===t?{variant:"label",color:"primary",weight:"semibold"}:{variant:"title",color:void 0,weight:void 0};return(0,_jsxRuntime.jsxs)(_Text.Text,{variant:d.variant,color:d.color,weight:d.weight,accessibilityRole:"header",accessibilityLabel:r&&"string"==typeof e?`${e}, required`:void 0,style:[n,a],testID:s,children:[e,r?(0,_jsxRuntime.jsx)(_index2.RequiredMark,{}):null]})};exports.SectionHeader=SectionHeader;var _default=exports.default=SectionHeader;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SectionHeader=void 0;var _react=require("react"),_index=require("../../theme/index.js"),_index2=require("../FieldBase/index.js"),_Text=require("../Text/Text.js"),_jsxRuntime=require("react/jsx-runtime");const SectionHeader=({children:e,variant:t="title",flush:r=!1,required:i=!1,style:a,testID:s})=>{const o=(0,_index.useTheme)(),n=(0,_react.useMemo)(()=>({marginTop:r?0:o.space.lg,marginBottom:o.space.sm}),[o,r]),d="caps"===t?{variant:"overline",color:"tertiary",weight:void 0}:"sub"===t?{variant:"label",color:"primary",weight:"semibold"}:{variant:"title",color:void 0,weight:void 0};return(0,_jsxRuntime.jsxs)(_Text.Text,{variant:d.variant,color:d.color,weight:d.weight,accessibilityRole:"header",accessibilityLabel:i&&"string"==typeof e?`${e}, required`:void 0,style:[n,a],testID:s,children:[e,i?(0,_jsxRuntime.jsx)(_index2.RequiredMark,{}):null]})};exports.SectionHeader=SectionHeader;var _default=exports.default=SectionHeader;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SegmentedControl=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"),_slotIcon=require("../AppIcon/slotIcon.js"),_index4=require("../FieldBase/index.js"),_SquircleFill=require("../SquircleFill/SquircleFill.js"),_jsxRuntime=require("react/jsx-runtime");const LABEL_LINE_HEIGHT_RATIO=1.25,SegmentedControl=exports.SegmentedControl=(0,_react.forwardRef)((e,t)=>{const{segments:i,label:r,helperText:n,error:s,value:l,defaultValue:o,onChange:a,size:d="md",fullWidth:c=!0,disabled:u=!1,tone:m="primary",variant:x="segmented",radius:g,labelLines:h=1,haptic:_,accessibilityLabel:p,style:b,containerStyle:y,segmentStyle:f,selectedIndicatorStyle:v,textStyle:S,labelStyle:j,testID:C}=e,[R,I]=(0,_index.useControllableState)({value:l,defaultValue:o??i[0]?.value,onChange:a}),w=(0,_index2.useTheme)(),k=w.components.segmentedControl,q=(0,_react.useMemo)(()=>buildStyles(w),[w]),N=(0,_react.useMemo)(()=>(0,_index2.resolveSegmentedControlSize)(w,d),[w,d]),L=h>=2?2:1,F=L>1,M="segmented"===x,V="underline"===x,z="pills"===x,E=M?(0,_index2.spaceOf)(w,k.trackPadding,"components.segmentedControl.trackPadding"):0,T=Math.ceil(1.25*N.text)*(L-1),W=k?.underlineHeight??2,A=(0,_index2.spaceOf)(w,k.pillInset,"components.segmentedControl.pillInset"),H=void 0===k.radius?void 0:(0,_index2.radiusOf)(w,k.radius,"components.segmentedControl.radius"),D="number"==typeof g?g:g?w.radius[g]:H,O=D??w.radius.md,P=void 0===D?w.radius.sm:Math.max(D-E,0),B=D??w.radius.pill,X=D??w.radius.none,[G,J]=(0,_react.useState)(0),K=(0,_react.useRef)((0,_index2.createAnimatedValue)(0)).current,Q=Math.max(0,i.findIndex(e=>e.value===R)),U=G>0?(G-2*E)/Math.max(i.length,1):0,Y=(0,_react.useCallback)((e,t)=>{if(t<=0)return;const i=t*e,r=w.motion.spring.snappy,n=_reactNative.Animated.spring(K,{toValue:i,damping:r.damping,stiffness:r.stiffness,mass:r.mass,overshootClamping:!0,useNativeDriver:!0});return n.start(),n},[w.motion.spring.snappy,K]);(0,_react.useEffect)(()=>{if(U>0){const e=Y(Q,U);return()=>e?.stop()}},[Q,U,Y]);const Z=(0,_react.useCallback)(e=>{const t=e.nativeEvent.layout.width;t!==G&&J(t)},[G]),$=(0,_react.useCallback)(e=>{if(u)return;if(e.value===R)return;const t=(0,_index3.resolveHaptic)(_,"selection");t&&(0,_index3.triggerHaptic)(t),I(e.value)},[u,I,R,_]),ee=M?w.colors.background.elevated:z?w.colors.primaryMuted:w.colors.primary,te=M?P:z?B:X,ie="neutral"===m?w.colors.text.primary:w.colors.primary,re=w.colors.background.tertiary,ne=(0,_SquircleFill.useSquircle)(M,O,Z),se=!0===s||(0,_index4.hasFieldText)(s),le=se&&!u,oe=w.colors.field.borderError,ae=w.colors.border.width,de=(0,_index4.hasFieldText)(r),ce=se?s:n,ue=(0,_index4.hasFieldText)(ce),me=p??("string"==typeof r?r:void 0),xe=(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,accessibilityRole:"radiogroup",accessibilityLabel:me,testID:C,style:[q.track,{...F?{minHeight:N.height+T}:{height:N.height},opacity:u?.55:1,alignSelf:c?"stretch":"flex-start"},M?{borderRadius:O,..._corners.smoothCorners,backgroundColor:ne.active?"transparent":re,padding:E}:V?{borderBottomColor:le?oe:w.colors.border.secondary,borderBottomWidth:_reactNative.StyleSheet.hairlineWidth}:null,y,b],onLayout:ne.onLayout,children:[ne.active&&ne.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:ne.size.width,height:ne.size.height,radius:O,fill:re,stroke:le?oe:void 0,strokeWidth:ae}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:q.row,children:[U>0?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[q.thumb,M?F?{top:0,bottom:0}:{top:0,height:N.height-2*E}:z?{top:A,bottom:A}:{bottom:0,height:W},{width:U,borderRadius:te,..._corners.smoothCorners,backgroundColor:ee,transform:[{translateX:K}]},v]}):null,i.map(e=>{const t=e.value===R,i=t?ie:w.colors.text.tertiary,r=(0,_slotIcon.renderSlotIcon)(e.icon,{color:i,size:N.icon,selected:t,disabled:u});return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>$(e),disabled:u,accessibilityRole:"radio",accessibilityLabel:e.label,accessibilityState:{checked:t,selected:t,disabled:u},"aria-checked":t,"aria-disabled":u,style:({pressed:e})=>[q.segment,F?q.segmentMultiline:null,{paddingHorizontal:N.paddingX,opacity:e&&!t?.7:1},f],children:[r?(0,_jsxRuntime.jsx)(_reactNative.View,{style:q.segmentIcon,children:r}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[q.segmentLabel,F?q.segmentLabelMultiline:null,{color:i,fontSize:N.text,fontWeight:t?w.typography.fontWeight.semibold:w.typography.fontWeight.medium},S,j],numberOfLines:L,children:e.label})]},String(e.value))})]}),!le||V||ne.active?null:(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[_reactNative.StyleSheet.absoluteFill,{borderWidth:ae,borderColor:oe,borderRadius:M?O:B,..._corners.smoothCorners}]})]});return de||ue?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{alignSelf:c?"stretch":"flex-start"},children:[de?(0,_jsxRuntime.jsx)(_index4.FieldLabel,{size:d,children:r}):null,xe,ue?(0,_jsxRuntime.jsx)(_index4.FieldMessage,{size:d,text:ce,error:se}):null]}):xe});SegmentedControl.displayName="SegmentedControl";const buildStyles=e=>_reactNative.StyleSheet.create({track:{flexDirection:"row",alignItems:"stretch",position:"relative"},row:{flex:1,flexDirection:"row",alignItems:"stretch",position:"relative",overflow:"hidden"},thumb:{position:"absolute",left:0},segment:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center"},segmentIcon:{marginRight:e.spacing.xs},segmentMultiline:{paddingVertical:e.spacing.xs},segmentLabel:{includeFontPadding:!1},segmentLabelMultiline:{flexShrink:1,textAlign:"center"}});var _default=exports.default=SegmentedControl;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SegmentedControl=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"),_slotIcon=require("../AppIcon/slotIcon.js"),_index4=require("../FieldBase/index.js"),_SquircleFill=require("../SquircleFill/SquircleFill.js"),_jsxRuntime=require("react/jsx-runtime");const LABEL_LINE_HEIGHT_RATIO=1.25,SegmentedControl=exports.SegmentedControl=(0,_react.forwardRef)((e,t)=>{const{segments:i,label:r,helperText:s,error:l,value:n,defaultValue:a,onChange:o,size:d="md",fullWidth:c=!0,disabled:u=!1,tone:m="primary",variant:x="segmented",radius:h,labelLines:g=1,haptic:_,accessibilityLabel:b,style:p,containerStyle:v,segmentStyle:f,selectedIndicatorStyle:y,textStyle:S,labelStyle:j,testID:C}=e,[R,w]=(0,_index.useControllableState)({value:n,defaultValue:a??i[0]?.value,onChange:o}),q=(0,_index2.useTheme)(),I=q.components["segmented-control"],N=(0,_react.useMemo)(()=>buildStyles(q),[q]),L=(0,_react.useMemo)(()=>(0,_index2.resolveSegmentedControlSize)(q,d),[q,d]),k=g>=2?2:1,F=k>1,M="segmented"===x,z="underline"===x,V="pills"===x,T=M?q.space[I["track-padding"]]:0,A=Math.ceil(1.25*L.text)*(k-1),E=I["underline-height"],D=q.space[I["pill-inset"]],H="number"==typeof h?h:h?q.radius[h]:void 0,W=H??q.radius.md,B=void 0===H?q.radius.sm:Math.max(H-T,0),P=H??q.radius.pill,O=H??q.radius.none,[G,X]=(0,_react.useState)(0),J=(0,_react.useRef)((0,_index2.createAnimatedValue)(0)).current,K=Math.max(0,i.findIndex(e=>e.value===R)),Q=G>0?(G-2*T)/Math.max(i.length,1):0,U=(0,_react.useCallback)((e,t)=>{if(t<=0)return;const i=t*e,r=q.motion.spring.snappy,s=_reactNative.Animated.spring(J,{toValue:i,damping:r.damping,stiffness:r.stiffness,mass:r.mass,overshootClamping:!0,useNativeDriver:!0});return s.start(),s},[q.motion.spring.snappy,J]);(0,_react.useEffect)(()=>{if(Q>0){const e=U(K,Q);return()=>e?.stop()}},[K,Q,U]);const Y=(0,_react.useCallback)(e=>{const t=e.nativeEvent.layout.width;t!==G&&X(t)},[G]),Z=(0,_react.useCallback)(e=>{if(u)return;if(e.value===R)return;const t=(0,_index3.resolveHaptic)(_,"selection");t&&(0,_index3.triggerHaptic)(t),w(e.value)},[u,w,R,_]),$=M?q.colors.surface:V?q.colors["primary-soft"]:q.colors.primary,ee=M?B:V?P:O,te="neutral"===m?q.colors["text-body"]:q.colors.primary,ie=q.colors["bg-muted"],re=(0,_SquircleFill.useSquircle)(M,W,Y),se=!0===l||(0,_index4.hasFieldText)(l),le=se&&!u,ne=q.colors["field-border-error"],ae=q.size.border,oe=(0,_index4.hasFieldText)(r),de=se?l:s,ce=(0,_index4.hasFieldText)(de),ue=b??("string"==typeof r?r:void 0),me=(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,accessibilityRole:"radiogroup",accessibilityLabel:ue,testID:C,style:[N.track,{...F?{minHeight:L.height+A}:{height:L.height},opacity:u?.55:1,alignSelf:c?"stretch":"flex-start"},M?{borderRadius:W,..._corners.smoothCorners,backgroundColor:re.active?"transparent":ie,padding:T}:z?{borderBottomColor:le?ne:q.colors["border-subtle"],borderBottomWidth:_reactNative.StyleSheet.hairlineWidth}:null,v,p],onLayout:re.onLayout,children:[re.active&&re.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:re.size.width,height:re.size.height,radius:W,fill:ie,stroke:le?ne:void 0,strokeWidth:ae}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:N.row,children:[Q>0?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[N.thumb,M?F?{top:0,bottom:0}:{top:0,height:L.height-2*T}:V?{top:D,bottom:D}:{bottom:0,height:E},{width:Q,borderRadius:ee,..._corners.smoothCorners,backgroundColor:$,transform:[{translateX:J}]},y]}):null,i.map(e=>{const t=e.value===R,i=t?te:q.colors["text-subtle"],r=(0,_slotIcon.renderSlotIcon)(e.icon,{color:i,size:L.icon,selected:t,disabled:u});return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>Z(e),disabled:u,accessibilityRole:"radio",accessibilityLabel:e.label,accessibilityState:{checked:t,selected:t,disabled:u},"aria-checked":t,"aria-disabled":u,style:({pressed:e})=>[N.segment,F?N.segmentMultiline:null,{paddingHorizontal:L["padding-x"],opacity:e&&!t?.7:1},f],children:[r?(0,_jsxRuntime.jsx)(_reactNative.View,{style:N.segmentIcon,children:r}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[N.segmentLabel,F?N.segmentLabelMultiline:null,{color:i,fontSize:L.text,fontWeight:t?q.weight.semibold:q.weight.medium},S,j],numberOfLines:k,children:e.label})]},String(e.value))})]}),!le||z||re.active?null:(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[_reactNative.StyleSheet.absoluteFill,{borderWidth:ae,borderColor:ne,borderRadius:M?W:P,..._corners.smoothCorners}]})]});return oe||ce?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{alignSelf:c?"stretch":"flex-start"},children:[oe?(0,_jsxRuntime.jsx)(_index4.FieldLabel,{size:d,children:r}):null,me,ce?(0,_jsxRuntime.jsx)(_index4.FieldMessage,{size:d,text:de,error:se}):null]}):me});SegmentedControl.displayName="SegmentedControl";const buildStyles=e=>_reactNative.StyleSheet.create({track:{flexDirection:"row",alignItems:"stretch",position:"relative"},row:{flex:1,flexDirection:"row",alignItems:"stretch",position:"relative",overflow:"hidden"},thumb:{position:"absolute",left:0},segment:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center"},segmentIcon:{marginRight:e.space.xs},segmentMultiline:{paddingVertical:e.space.xs},segmentLabel:{includeFontPadding:!1},segmentLabelMultiline:{flexShrink:1,textAlign:"center"}});var _default=exports.default=SegmentedControl;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Select=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_Chevron=require("../FieldBase/Chevron.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_Notation=require("../Notation/Notation.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_jsxRuntime=require("react/jsx-runtime");const sameSelectValue=(e,t)=>String(e)===String(t),containsValue=(e,t)=>e.some(e=>sameSelectValue(e,t)),Select=exports.Select=(0,_react.forwardRef)((e,t)=>{const{options:i,getOptionLabel:l,getOptionValue:o,getOptionDisabled:r,getOptionDescription:n,getOptionIcon:a,placeholder:s,onOpenChange:c,searchable:d=!1,haptic:u,label:x,help:p,title:_,required:h=!1,error:g,helperText:b,prefix:v,numberOfLines:f=1,disabled:S=!1,size:m="md",variant:j,leftIcon:y,rightIcon:F,chevronColor:C,chevronSize:O,borderRadius:R,accessibilityLabel:k,labelStyle:N,style:V,triggerStyle:T,textStyle:B,optionStyle:I,selectedOptionStyle:q,optionTextStyle:z,selectedOptionTextStyle:H,testID:L}=e,w=!0===e.multi,M=(0,_react.useCallback)(e=>l?l(e):e.label??"",[l]),P=(0,_react.useCallback)(e=>o?o(e):e.value,[o]),D=(0,_react.useCallback)(e=>r?r(e):!0===e.disabled,[r]),E=(0,_react.useCallback)(e=>n?n(e):e.description,[n]),A=(0,_react.useCallback)(e=>a?a(e):e.icon,[a]),$=(0,_index.useTheme)(),G=(0,_react.useMemo)(()=>buildStyles($),[$]),J=(0,_index.resolveFieldSize)($,m),K=(0,_FieldBase.resolveFieldTextStyle)($,{disabled:S}),Q=j??$.components.select?.defaultVariant??$.components.field?.defaultVariant??"outlined",U=(0,_react.useMemo)(()=>{const e=$.components.select?.fillColors?.[Q];if(!e)return;const t={};return void 0!==e.idleEmpty&&(t.backgroundIdleEmpty=e.idleEmpty),void 0!==e.idleFilled&&(t.backgroundIdleFilled=e.idleFilled),void 0!==e.focus&&(t.backgroundFocused=e.focus),void 0!==e.error&&(t.backgroundError=e.error),void 0!==e.disabled&&(t.backgroundDisabled=e.disabled),Object.keys(t).length>0?t:void 0},[$.components.select?.fillColors,Q]),W=R??J.radius,[X,Y]=(0,_react.useState)(!1),Z=(0,_react.useCallback)(t=>{if(w){const i=e.value??[];return containsValue(i,t)}return null!=e.value&&sameSelectValue(e.value,t)},[w,e.value]),ee=(0,_react.useMemo)(()=>{if(w){const t=e.value??[];return i.filter(e=>containsValue(t,P(e)))}const t=e.value;if(null==t)return[];const l=i.find(e=>sameSelectValue(P(e),t));return l?[l]:[]},[w,i,e.value,P]),te=(0,_react.useCallback)(()=>{if(S)return;const e=(0,_index2.resolveHaptic)(u,"selection");e&&(0,_index2.triggerHaptic)(e),Y(!0)},[S,u]),ie=(0,_react.useCallback)(()=>{Y(!1)},[]),le=(0,_react.useCallback)(t=>{if(D(t))return;const i=P(t),l=(0,_index2.resolveHaptic)(u,"selection");if(l&&(0,_index2.triggerHaptic)(l),w){const t=e.value??[],l=containsValue(t,i)?t.filter(e=>!sameSelectValue(e,i)):[...t,i];return void e.onChange(l)}e.onChange(i),ie()},[w,e,ie,D,P,u]),oe=0===ee.length?s??"Select…":ee.map(e=>M(e)).join(", "),re=0===ee.length,ne=!0===g||(0,_FieldBase.hasFieldText)(g),ae=(0,_FieldBase.hasFieldText)(x),se=(0,_FieldBase.fieldTextAsString)(x),ce=Math.round(1.4*J.text),de=(0,_react.useMemo)(()=>({fontSize:J.text,color:K.placeholderColor}),[J.text,K.placeholderColor]),ue={color:S?$.colors.field.iconDisabled:X?$.colors.field.iconFocused:$.colors.field.icon,size:J.icon,disabled:S,focused:X,error:ne},xe=0===ee.length?s??"No selection":`Selected: ${ee.map(e=>M(e)).join(", ")}`,pe=k??`${se??"Select"}. ${xe}`;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[G.container,V],testID:L,children:[ae?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:m,required:h,help:p,style:N,children:x}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,collapsable:!1,children:(0,_jsxRuntime.jsxs)(_FieldBase.FieldBase,{size:m,variant:Q,disabled:S,error:ne,filled:ee.length>0,onPress:te,borderRadius:W,fillOverrides:U,paddingHorizontal:"underline"===Q?$.spacing.none:void 0,accessibilityRole:"button",accessibilityLabel:pe,accessibilityState:{disabled:S,expanded:X},"aria-disabled":S,"aria-expanded":X,style:T,slotAlign:1===f?"center":"top",slotLineHeight:1===f?void 0:ce,leading:y?(0,_jsxRuntime.jsx)(_reactNative.View,{children:(0,_slotIcon.renderSlotIcon)(y,ue)}):null,trailing:F?(0,_jsxRuntime.jsx)(_reactNative.View,{children:(0,_slotIcon.renderSlotIcon)(F,ue)}):(0,_jsxRuntime.jsx)(_Chevron.Chevron,{color:C??(S?$.colors.text.disabled:$.colors.text.tertiary),size:O??J.icon,open:X,style:G.chevron}),children:[(0,_FieldBase.hasFieldText)(v)?"string"==typeof v||"number"==typeof v?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[G.prefix,{color:K.placeholderColor,fontSize:J.text,lineHeight:1===f?void 0:ce,marginRight:$.spacing.xs}],children:v}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[G.prefixNode,{minHeight:1===f?void 0:ce,justifyContent:"center",marginRight:$.spacing.xs}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[G.prefix,{color:K.placeholderColor,fontSize:J.text,lineHeight:1===f?void 0:ce}],children:(0,_jsxRuntime.jsx)(_Notation.NotationInkContext.Provider,{value:de,children:v})})}):null,(0,_jsxRuntime.jsxs)(_reactNative.Text,{style:[G.triggerText,{color:re?K.placeholderColor:K.color,fontSize:J.text,lineHeight:1===f?void 0:ce,...K.weightStyle},B],numberOfLines:f,children:[oe,re&&h&&!ae?(0,_jsxRuntime.jsx)(_FieldBase.RequiredMark,{}):null]})]})}),(0,_jsxRuntime.jsx)(_FieldBase.FieldMessage,{size:m,error:ne,text:ne?g:b}),(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:X,onClose:ie,onOpenChange:c,title:_??se,accessibilityLabel:se??(ae?_:void 0)??s??"Options",options:i,labelOf:M,getValue:P,disabledOf:D,descriptionOf:E,iconOf:A,isSelected:Z,onSelect:le,multi:w,searchable:d,optionStyle:I,selectedOptionStyle:q,optionTextStyle:z,selectedOptionTextStyle:H,searchSelectionColor:(0,_FieldBase.resolveVariantColors)($,Q,U).borderFocusedRepresentative})]})});Select.displayName="Select";const buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},label:{includeFontPadding:!1},triggerText:{flex:1,includeFontPadding:!1},errorText:{includeFontPadding:!1},prefix:{flexShrink:0,includeFontPadding:!1},prefixNode:{flexShrink:0},chevron:{marginLeft:e.spacing.sm}});var _default=exports.default=Select;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Select=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_Chevron=require("../FieldBase/Chevron.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_Notation=require("../Notation/Notation.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_jsxRuntime=require("react/jsx-runtime");const sameSelectValue=(e,t)=>String(e)===String(t),containsValue=(e,t)=>e.some(e=>sameSelectValue(e,t)),Select=exports.Select=(0,_react.forwardRef)((e,t)=>{const{options:i,getOptionLabel:l,getOptionValue:n,getOptionDisabled:r,getOptionDescription:o,getOptionIcon:a,placeholder:s,onOpenChange:c,searchable:d=!1,haptic:u,label:x,help:p,title:_,required:h=!1,error:S,helperText:g,prefix:f,numberOfLines:v=1,disabled:b=!1,size:m="md",variant:j,leftIcon:y,rightIcon:C,chevronColor:F,chevronSize:O,borderRadius:R,accessibilityLabel:N,labelStyle:V,style:T,triggerStyle:B,textStyle:k,optionStyle:q,selectedOptionStyle:z,optionTextStyle:I,selectedOptionTextStyle:H,testID:L}=e,w=!0===e.multi,M=(0,_react.useCallback)(e=>l?l(e):e.label??"",[l]),P=(0,_react.useCallback)(e=>n?n(e):e.value,[n]),D=(0,_react.useCallback)(e=>r?r(e):!0===e.disabled,[r]),A=(0,_react.useCallback)(e=>o?o(e):e.description,[o]),$=(0,_react.useCallback)(e=>a?a(e):e.icon,[a]),E=(0,_index.useTheme)(),G=(0,_react.useMemo)(()=>buildStyles(E),[E]),J=(0,_index.resolveFieldSize)(E,m),K=(0,_FieldBase.resolveFieldTextStyle)(E,{disabled:b}),Q=j??E.settings.components.select?.defaultVariant??E.settings.components.field?.defaultVariant??"outlined",U=R??J.radius,[W,X]=(0,_react.useState)(!1),Y=(0,_react.useCallback)(t=>{if(w){const i=e.value??[];return containsValue(i,t)}return null!=e.value&&sameSelectValue(e.value,t)},[w,e.value]),Z=(0,_react.useMemo)(()=>{if(w){const t=e.value??[];return i.filter(e=>containsValue(t,P(e)))}const t=e.value;if(null==t)return[];const l=i.find(e=>sameSelectValue(P(e),t));return l?[l]:[]},[w,i,e.value,P]),ee=(0,_react.useCallback)(()=>{if(b)return;const e=(0,_index2.resolveHaptic)(u,"selection");e&&(0,_index2.triggerHaptic)(e),X(!0)},[b,u]),te=(0,_react.useCallback)(()=>{X(!1)},[]),ie=(0,_react.useCallback)(t=>{if(D(t))return;const i=P(t),l=(0,_index2.resolveHaptic)(u,"selection");if(l&&(0,_index2.triggerHaptic)(l),w){const t=e.value??[],l=containsValue(t,i)?t.filter(e=>!sameSelectValue(e,i)):[...t,i];return void e.onChange(l)}e.onChange(i),te()},[w,e,te,D,P,u]),le=0===Z.length?s??"Select…":Z.map(e=>M(e)).join(", "),ne=0===Z.length,re=!0===S||(0,_FieldBase.hasFieldText)(S),oe=(0,_FieldBase.hasFieldText)(x),ae=(0,_FieldBase.fieldTextAsString)(x),se=Math.round(1.4*J.text),ce=(0,_react.useMemo)(()=>({fontSize:J.text,color:K.placeholderColor}),[J.text,K.placeholderColor]),de={color:b?E.colors["field-icon-disabled"]:W?E.colors["field-icon-focus"]:E.colors["field-icon"],size:J.icon,disabled:b,focused:W,error:re},ue=0===Z.length?s??"No selection":`Selected: ${Z.map(e=>M(e)).join(", ")}`,xe=N??`${ae??"Select"}. ${ue}`;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[G.container,T],testID:L,children:[oe?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:m,required:h,help:p,style:V,children:x}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,collapsable:!1,children:(0,_jsxRuntime.jsxs)(_FieldBase.FieldBase,{size:m,variant:Q,disabled:b,error:re,filled:Z.length>0,onPress:ee,borderRadius:U,paddingHorizontal:"underline"===Q?E.space.none:void 0,accessibilityRole:"button",accessibilityLabel:xe,accessibilityState:{disabled:b,expanded:W},"aria-disabled":b,"aria-expanded":W,style:B,slotAlign:1===v?"center":"top",slotLineHeight:1===v?void 0:se,leading:y?(0,_jsxRuntime.jsx)(_reactNative.View,{children:(0,_slotIcon.renderSlotIcon)(y,de)}):null,trailing:C?(0,_jsxRuntime.jsx)(_reactNative.View,{children:(0,_slotIcon.renderSlotIcon)(C,de)}):(0,_jsxRuntime.jsx)(_Chevron.Chevron,{color:F??(b?E.colors["text-disabled"]:E.colors["text-subtle"]),size:O??J.icon,open:W,style:G.chevron}),children:[(0,_FieldBase.hasFieldText)(f)?"string"==typeof f||"number"==typeof f?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[G.prefix,{color:K.placeholderColor,fontSize:J.text,lineHeight:1===v?void 0:se,marginRight:E.space.xs}],children:f}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[G.prefixNode,{minHeight:1===v?void 0:se,justifyContent:"center",marginRight:E.space.xs}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[G.prefix,{color:K.placeholderColor,fontSize:J.text,lineHeight:1===v?void 0:se}],children:(0,_jsxRuntime.jsx)(_Notation.NotationInkContext.Provider,{value:ce,children:f})})}):null,(0,_jsxRuntime.jsxs)(_reactNative.Text,{style:[G.triggerText,{color:ne?K.placeholderColor:K.color,fontSize:J.text,lineHeight:1===v?void 0:se,...K.weightStyle},k],numberOfLines:v,children:[le,ne&&h&&!oe?(0,_jsxRuntime.jsx)(_FieldBase.RequiredMark,{}):null]})]})}),(0,_jsxRuntime.jsx)(_FieldBase.FieldMessage,{size:m,error:re,text:re?S:g}),(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:W,onClose:te,onOpenChange:c,title:_??ae,accessibilityLabel:ae??(oe?_:void 0)??s??"Options",options:i,labelOf:M,getValue:P,disabledOf:D,descriptionOf:A,iconOf:$,isSelected:Y,onSelect:ie,multi:w,searchable:d,optionStyle:q,selectedOptionStyle:z,optionTextStyle:I,selectedOptionTextStyle:H,searchSelectionColor:(0,_FieldBase.resolveVariantColors)(E,Q).borderFocusedRepresentative})]})});Select.displayName="Select";const buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},label:{includeFontPadding:!1},triggerText:{flex:1,includeFontPadding:!1},errorText:{includeFontPadding:!1},prefix:{flexShrink:0,includeFontPadding:!1},prefixNode:{flexShrink:0},chevron:{marginLeft:e.space.sm}});var _default=exports.default=Select;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SignaturePad=void 0;var cache,_mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeSvg=_interopRequireWildcard(require("react-native-svg")),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_corners=require("../../utils/corners.js"),_index2=require("../Button/index.js"),_index3=require("../Input/index.js"),_index4=require("../Text/index.js"),_signatureGeometry=require("./signatureGeometry.js"),_writePng=require("./writePng"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var n,a,r=Object.defineProperty,i={__proto__:null,default:e};if(Object(e)!==e)return i;if(cache||"function"!=typeof WeakMap||(cache=new WeakMap),cache){if(cache.has(e))return cache.get(e);cache.set(e,i)}for(a in e)"default"!==a&&{}.hasOwnProperty.call(e,a)&&((n=r&&Object.getOwnPropertyDescriptor(e,a))&&(n.get||n.set)?r(i,a,n):i[a]=e[a]);return i}const DEFAULT_LABELS={pad:"Signature pad",padHint:"Draw with one finger. To sign without drawing, use the type your name action.",caption:"Sign above the line. To start with an up or down stroke, rest your finger a moment first.",typedCaption:"Your typed name is used as your signature.",undo:"Undo",clear:"Clear",typeInstead:"Type your name instead",drawInstead:"Draw instead",typedLabel:"Type your name",typedPlaceholder:"Your full name",empty:"Not signed",signed:"Signed",typingAnnouncement:"Signing by typing your name. Your typed name is used as your signature. Choose Draw instead to sign with your finger.",drawingAnnouncement:"Signing by drawing. Use one finger on the pad.",clearedAnnouncement:"Signature cleared",undoneAnnouncement:"Last stroke removed",emptyError:"Add a signature first.",expand:"Expand",done:"Done",close:"Close"},STROKE_WIDTH=2.5,SIDEWAYS_TO_DRAW=6,UPRIGHT_TO_SCROLL=8,REST_TO_DRAW_MS=200,MIN_POINT_GAP=.8,DEFAULT_HEIGHT=180,EXPANDED_CHROME=200,DEFAULT_NAME_LENGTH=100,MAX_EXPORT_SCALE=3,MIN_TARGET=44,BASELINE_OPACITY=.3,DISABLED_OPACITY=.5,TARGET_STYLE={minHeight:44},defaultScriptFont=()=>_reactNative.Platform.select({ios:"Snell Roundhand",default:"cursive"}),cssFontStack=e=>"cursive"===e?"cursive":`'${e}', cursive`,useScreenReader=()=>{const[e,t]=(0,_react.useState)(!1);return(0,_react.useEffect)(()=>{let e=!0;_reactNative.AccessibilityInfo.isScreenReaderEnabled().then(n=>{e&&t(n)});const n=_reactNative.AccessibilityInfo.addEventListener("screenReaderChanged",t);return()=>{e=!1,n.remove()}},[]),e},StrokePath=(0,_react.memo)(({points:e,color:t})=>(0,_jsxRuntime.jsx)(_reactNativeSvg.Path,{d:(0,_signatureGeometry.strokePath)(e),stroke:t,strokeWidth:2.5,strokeLinecap:"round",strokeLinejoin:"round",fill:"none"}));StrokePath.displayName="SignaturePadStroke";const Marks=({mode:e,strokes:t,name:n,color:a,fontFamily:r,width:i,height:s})=>"draw"===e?(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:t.map(e=>(0,_jsxRuntime.jsx)(StrokePath,{points:e.points,color:a},e.id))}):n?(0,_jsxRuntime.jsx)(_reactNativeSvg.Text,{x:i/2,y:s*_signatureGeometry.BASELINE_RATIO,fontSize:(0,_signatureGeometry.typedFontSize)(i,n),fontFamily:r,textAnchor:"middle",fill:a,children:n}):null,SignaturePadSurface=(0,_react.forwardRef)((e,t)=>{const{expandable:n,initialStrokes:a,onChange:r,initialTypedName:i="",onTypedNameChange:s,defaultMode:o="draw",onModeChange:c,onEmptyChange:d,allowTyped:l=!0,signedBy:u,signedAt:_,height:m=DEFAULT_HEIGHT,maxNameLength:p=DEFAULT_NAME_LENGTH,inkColor:g,paperColor:h,scriptFontFamily:y,labels:x,haptic:f="selection",disabled:v=!1,style:S,testID:R}=e,j=(0,_index.useTheme)(),w=void 0===g&&void 0===h,T=w?j.colors.text.primary:g??_index.lightTheme.colors.text.primary,b=w?j.colors.background.elevated:h??_index.lightTheme.colors.background.elevated,E=w?_index.lightTheme.colors.text.primary:T,C=w?_index.lightTheme.colors.background.elevated:b,A=E!==T||C!==b,N=y??defaultScriptFont(),k=(0,_react.useMemo)(()=>({...DEFAULT_LABELS,...x}),[x]),P=useScreenReader(),I=(0,_react.useRef)(null),L=(0,_react.useRef)(null),[D,G]=(0,_react.useState)(0),[M,F]=(0,_react.useState)(()=>(a??[]).map((e,t)=>({id:t+1,points:[...e]}))),O=(0,_react.useRef)(M),H=(0,_react.useRef)(M.length),B=(0,_react.useRef)(null),q=(0,_react.useRef)(null),[W,Y]=(0,_react.useState)(l?o:"draw"),[$,U]=(0,_react.useState)(i),[z,V]=(0,_react.useState)(null),X=(0,_react.useRef)(!1),{height:K}=(0,_reactNative.useWindowDimensions)(),[J,Q]=(0,_react.useState)(!1),[Z,ee]=(0,_react.useState)([]),te=(0,_react.useRef)({onChange:r,onTypedNameChange:s,onModeChange:c,onEmptyChange:d});(0,_react.useEffect)(()=>{te.current={onChange:r,onTypedNameChange:s,onModeChange:c,onEmptyChange:d}});const ne="draw"===W&&!v,ae="draw"===W?0===M.length:0===$.trim().length,re=(0,_react.useRef)(null);(0,_react.useEffect)(()=>{re.current!==ae&&(re.current=ae,te.current.onEmptyChange?.(ae))},[ae]);const ie=(0,_react.useCallback)(e=>{O.current=e,F(e)},[]),se=(0,_react.useCallback)(()=>{V(Date.now()),te.current.onChange?.(O.current.map(e=>e.points))},[]),oe=(0,_react.useMemo)(()=>{const pan=e=>_reactNativeGestureHandler.Gesture.Pan().enabled(ne).runOnJS(!0).onBegin(e=>{B.current=(0,_signatureGeometry.pointOf)(e.x,e.y)}).onStart(t=>{q.current=e,H.current+=1;const n=(0,_signatureGeometry.pointOf)(t.x,t.y);ie([...O.current,{id:H.current,points:[B.current??n,n]}])}).onUpdate(t=>{if(q.current!==e)return;const n=O.current[O.current.length-1],a=(0,_signatureGeometry.pointOf)(t.x,t.y);(0,_signatureGeometry.distanceBetween)(n.points[n.points.length-1],a)<.8||ie([...O.current.slice(0,-1),{...n,points:[...n.points,a]}])}).onFinalize(()=>{q.current===e&&(q.current=null,se())}),e=pan("sideways").activeOffsetX([-6,6]).failOffsetY([-8,8]),t=pan("rested").activateAfterLongPress(200);return _reactNativeGestureHandler.Gesture.Race(e,t)},[ne,ie,se]),ce=(0,_react.useCallback)(e=>{Y(e),te.current.onModeChange?.(e),(0,_announce.announce)("type"===e?k.typingAnnouncement:k.drawingAnnouncement)},[k.typingAnnouncement,k.drawingAnnouncement]);(0,_react.useEffect)(()=>{P&&l&&!X.current&&"draw"===W&&0===O.current.length&&ce("type")},[P,l,W,ce]);const de=(0,_react.useCallback)(()=>{X.current=!0,ce("draw"===W?"type":"draw")},[W,ce]),le=(0,_react.useCallback)(e=>{U(e),V(Date.now()),te.current.onTypedNameChange?.(e)},[]),ue=(0,_react.useCallback)(()=>{"type"===W?le(""):(ie([]),se()),(0,_announce.announce)(k.clearedAnnouncement)},[W,le,ie,se,k.clearedAnnouncement]),me=(0,_react.useCallback)(()=>{"draw"===W&&0!==O.current.length&&(ie(O.current.slice(0,-1)),se(),(0,_announce.announce)(k.undoneAnnouncement))},[W,ie,se,k.undoneAnnouncement]),pe=(0,_react.useCallback)(()=>{ee(O.current.map(e=>e.points)),Q(!0)},[]),ge=(0,_react.useCallback)(()=>{Q(!1)},[]),he=(0,_react.useCallback)(()=>{ie(Z.map(e=>(H.current+=1,{id:H.current,points:[...e]}))),se(),Q(!1)},[Z,ie,se]),ye=D||_signatureGeometry.FALLBACK_WIDTH;(0,_react.useImperativeHandle)(t,()=>({toFile:()=>new Promise((e,t)=>{if(ae)return void t(new Error(k.emptyError));const n=A?L.current:I.current;if(!n)return void t(new Error("The signature pad is not on screen."));const a=Math.min(3,Math.max(1,_reactNative.PixelRatio.get()));n.toDataURL(n=>{try{e((0,_writePng.writePng)(n))}catch(e){t(e)}},{width:ye*a,height:m*a})}),toSvg:()=>(0,_signatureGeometry.buildSignatureSvg)({width:ye,height:m,mode:W,strokes:M.map(e=>e.points),typedName:$,ink:E,paper:C,strokeWidth:2.5,fontFamily:cssFontStack(N)}),clear:ue,undo:me,isEmpty:()=>ae}),[ae,k.emptyError,ye,m,W,M,$,A,E,C,N,ue,me]);const xe=(0,_react.useMemo)(()=>[{name:"undo",label:k.undo},{name:"clear",label:k.clear},...l?[{name:"toggleMode",label:"draw"===W?k.typeInstead:k.drawInstead}]:[]],[k.undo,k.clear,k.typeInstead,k.drawInstead,l,W]),fe=(0,_react.useCallback)(e=>{if(v)return;const{actionName:t}=e.nativeEvent;"undo"===t?me():"clear"===t?ue():"toggleMode"===t&&l&&de()},[v,me,ue,de,l]),ve=(0,_react.useCallback)(e=>{G(e.nativeEvent.layout.width)},[]),Se=(0,_react.useMemo)(()=>_reactNative.StyleSheet.create({root:{gap:j.spacing.sm},pad:{height:m,borderWidth:j.colors.border.width,borderColor:j.colors.border.primary,borderRadius:j.radius.md,..._corners.smoothCorners,overflow:"hidden",backgroundColor:b,opacity:v?.5:1},baseline:{position:"absolute",left:j.spacing.md,right:j.spacing.md,top:m*_signatureGeometry.BASELINE_RATIO,height:_reactNative.StyleSheet.hairlineWidth,backgroundColor:T,opacity:.3},actions:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:j.spacing.xs},trailing:{flexDirection:"row",alignItems:"center",gap:j.spacing.xs},expandedRoot:{flex:1,padding:j.spacing.md,gap:j.spacing.sm,backgroundColor:j.colors.background.primary},expandedBar:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"}}),[j,m,b,T,v]),Re=$.trim(),je=_??z,we=u&&!ae?`Signed by ${u}${je?`, ${(0,_mobileCore.formatDateTime)(je)}`:""}`:null,Te="type"===W&&Re?`${k.pad}. ${Re}`:k.pad;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[Se.root,S],testID:R,children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:oe,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:Se.pad,onLayout:ve,accessible:!0,accessibilityRole:"image",accessibilityLabel:Te,accessibilityHint:"draw"===W?k.padHint:void 0,accessibilityValue:{text:ae?k.empty:k.signed},accessibilityState:{disabled:v},"aria-disabled":v,accessibilityActions:xe,onAccessibilityAction:fe,children:[A?(0,_jsxRuntime.jsxs)(_reactNativeSvg.default,{ref:L,style:_reactNative.StyleSheet.absoluteFill,width:"100%",height:m,children:[(0,_jsxRuntime.jsx)(_reactNativeSvg.Rect,{x:"0",y:"0",width:"100%",height:"100%",fill:C}),(0,_jsxRuntime.jsx)(Marks,{mode:W,strokes:M,name:Re,color:E,fontFamily:N,width:ye,height:m})]}):null,(0,_jsxRuntime.jsxs)(_reactNativeSvg.default,{ref:I,width:"100%",height:m,children:[(0,_jsxRuntime.jsx)(_reactNativeSvg.Rect,{x:"0",y:"0",width:"100%",height:"100%",fill:b}),(0,_jsxRuntime.jsx)(Marks,{mode:W,strokes:M,name:Re,color:T,fontFamily:N,width:ye,height:m})]}),(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:Se.baseline})]})}),"type"===W?(0,_jsxRuntime.jsx)(_index3.Input,{label:k.typedLabel,placeholder:k.typedPlaceholder,value:$,onChangeText:le,maxLength:p,disabled:v,autoComplete:"name",textContentType:"name",autoCapitalize:"words",autoCorrect:!1,returnKeyType:"done",testID:R?`${R}-name`:void 0}):null,(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"tertiary",children:"draw"===W?k.caption:k.typedCaption}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:Se.actions,children:[l?(0,_jsxRuntime.jsx)(_index2.Button,{title:"draw"===W?k.typeInstead:k.drawInstead,variant:"ghost",tone:"primary",size:"md",style:TARGET_STYLE,haptic:f,disabled:v,onPress:de,testID:R?`${R}-mode`:void 0}):(0,_jsxRuntime.jsx)(_reactNative.View,{}),"draw"===W?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:Se.trailing,children:[M.length>0?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_index2.Button,{title:k.undo,variant:"ghost",tone:"primary",size:"md",style:TARGET_STYLE,haptic:f,disabled:v,onPress:me,testID:R?`${R}-undo`:void 0}),(0,_jsxRuntime.jsx)(_index2.Button,{title:k.clear,variant:"ghost",tone:"primary",size:"md",style:TARGET_STYLE,haptic:f,disabled:v,onPress:ue,testID:R?`${R}-clear`:void 0})]}):null,n?(0,_jsxRuntime.jsx)(_index2.Button,{title:k.expand,variant:"ghost",tone:"primary",size:"md",style:TARGET_STYLE,haptic:f,disabled:v,onPress:pe,testID:R?`${R}-expand`:void 0}):null]}):null,"type"===W&&Re?(0,_jsxRuntime.jsx)(_index2.Button,{title:k.clear,variant:"ghost",tone:"primary",size:"md",style:TARGET_STYLE,haptic:f,disabled:v,onPress:ue,testID:R?`${R}-clear`:void 0}):null]}),we?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"secondary",children:we}):null,n?(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:J,animationType:"slide",presentationStyle:"fullScreen",onRequestClose:ge,children:(0,_jsxRuntime.jsxs)(ExpandedRoot,{style:Se.expandedRoot,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:Se.expandedBar,children:[(0,_jsxRuntime.jsx)(_index2.Button,{title:k.close,variant:"ghost",tone:"primary",size:"md",style:TARGET_STYLE,haptic:f,onPress:ge,testID:R?`${R}-close`:void 0}),(0,_jsxRuntime.jsx)(_index2.Button,{title:k.done,variant:"solid",tone:"primary",size:"md",style:TARGET_STYLE,haptic:f,onPress:he,testID:R?`${R}-done`:void 0})]}),J?(0,_jsxRuntime.jsx)(SignaturePadSurface,{expandable:!1,defaultMode:"draw",allowTyped:!1,initialStrokes:Z,onChange:ee,height:Math.max(DEFAULT_HEIGHT,K-200),inkColor:g,paperColor:h,scriptFontFamily:y,labels:x,haptic:f,testID:R?`${R}-expanded`:void 0}):null]})}):null]})});SignaturePadSurface.displayName="SignaturePadSurface";const ExpandedRoot="android"===_reactNative.Platform.OS?_reactNativeGestureHandler.GestureHandlerRootView:_reactNative.View,SignaturePad=exports.SignaturePad=(0,_react.forwardRef)((e,t)=>(0,_jsxRuntime.jsx)(SignaturePadSurface,{...e,expandable:!0,ref:t}));SignaturePad.displayName="SignaturePad";var _default=exports.default=SignaturePad;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SignaturePad=void 0;var cache,_mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeSvg=_interopRequireWildcard(require("react-native-svg")),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_corners=require("../../utils/corners.js"),_index2=require("../Button/index.js"),_index3=require("../Input/index.js"),_index4=require("../Text/index.js"),_signatureGeometry=require("./signatureGeometry.js"),_writePng=require("./writePng"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var n,a,r=Object.defineProperty,i={__proto__:null,default:e};if(Object(e)!==e)return i;if(cache||"function"!=typeof WeakMap||(cache=new WeakMap),cache){if(cache.has(e))return cache.get(e);cache.set(e,i)}for(a in e)"default"!==a&&{}.hasOwnProperty.call(e,a)&&((n=r&&Object.getOwnPropertyDescriptor(e,a))&&(n.get||n.set)?r(i,a,n):i[a]=e[a]);return i}const DEFAULT_LABELS={pad:"Signature pad",padHint:"Draw with one finger. To sign without drawing, use the type your name action.",caption:"Sign above the line. To start with an up or down stroke, rest your finger a moment first.",typedCaption:"Your typed name is used as your signature.",undo:"Undo",clear:"Clear",typeInstead:"Type your name instead",drawInstead:"Draw instead",typedLabel:"Type your name",typedPlaceholder:"Your full name",empty:"Not signed",signed:"Signed",typingAnnouncement:"Signing by typing your name. Your typed name is used as your signature. Choose Draw instead to sign with your finger.",drawingAnnouncement:"Signing by drawing. Use one finger on the pad.",clearedAnnouncement:"Signature cleared",undoneAnnouncement:"Last stroke removed",emptyError:"Add a signature first.",expand:"Expand",done:"Done",close:"Close"},STROKE_WIDTH=2.5,SIDEWAYS_TO_DRAW=6,UPRIGHT_TO_SCROLL=8,REST_TO_DRAW_MS=200,MIN_POINT_GAP=.8,DEFAULT_HEIGHT=180,EXPANDED_CHROME=200,DEFAULT_NAME_LENGTH=100,MAX_EXPORT_SCALE=3,MIN_TARGET=44,BASELINE_OPACITY=.3,DISABLED_OPACITY=.5,TARGET_STYLE={minHeight:44},defaultScriptFont=()=>_reactNative.Platform.select({ios:"Snell Roundhand",default:"cursive"}),cssFontStack=e=>"cursive"===e?"cursive":`'${e}', cursive`,useScreenReader=()=>{const[e,t]=(0,_react.useState)(!1);return(0,_react.useEffect)(()=>{let e=!0;_reactNative.AccessibilityInfo.isScreenReaderEnabled().then(n=>{e&&t(n)});const n=_reactNative.AccessibilityInfo.addEventListener("screenReaderChanged",t);return()=>{e=!1,n.remove()}},[]),e},StrokePath=(0,_react.memo)(({points:e,color:t})=>(0,_jsxRuntime.jsx)(_reactNativeSvg.Path,{d:(0,_signatureGeometry.strokePath)(e),stroke:t,strokeWidth:2.5,strokeLinecap:"round",strokeLinejoin:"round",fill:"none"}));StrokePath.displayName="SignaturePadStroke";const Marks=({mode:e,strokes:t,name:n,color:a,fontFamily:r,width:i,height:s})=>"draw"===e?(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:t.map(e=>(0,_jsxRuntime.jsx)(StrokePath,{points:e.points,color:a},e.id))}):n?(0,_jsxRuntime.jsx)(_reactNativeSvg.Text,{x:i/2,y:s*_signatureGeometry.BASELINE_RATIO,fontSize:(0,_signatureGeometry.typedFontSize)(i,n),fontFamily:r,textAnchor:"middle",fill:a,children:n}):null,SignaturePadSurface=(0,_react.forwardRef)((e,t)=>{const{expandable:n,initialStrokes:a,onChange:r,initialTypedName:i="",onTypedNameChange:s,defaultMode:o="draw",onModeChange:c,onEmptyChange:d,allowTyped:u=!0,signedBy:l,signedAt:_,height:m=DEFAULT_HEIGHT,maxNameLength:p=DEFAULT_NAME_LENGTH,inkColor:g,paperColor:h,scriptFontFamily:y,labels:x,haptic:f="selection",disabled:v=!1,style:S,testID:R}=e,j=(0,_index.useTheme)(),w=void 0===g&&void 0===h,T=w?j.colors["text-body"]:g??_index.lightTheme.colors["text-body"],b=w?j.colors.surface:h??_index.lightTheme.colors.surface,E=w?_index.lightTheme.colors["text-body"]:T,C=w?_index.lightTheme.colors.surface:b,A=E!==T||C!==b,N=y??defaultScriptFont(),P=(0,_react.useMemo)(()=>({...DEFAULT_LABELS,...x}),[x]),I=useScreenReader(),k=(0,_react.useRef)(null),L=(0,_react.useRef)(null),[D,G]=(0,_react.useState)(0),[M,F]=(0,_react.useState)(()=>(a??[]).map((e,t)=>({id:t+1,points:[...e]}))),O=(0,_react.useRef)(M),H=(0,_react.useRef)(M.length),B=(0,_react.useRef)(null),q=(0,_react.useRef)(null),[W,Y]=(0,_react.useState)(u?o:"draw"),[$,z]=(0,_react.useState)(i),[U,V]=(0,_react.useState)(null),X=(0,_react.useRef)(!1),{height:K}=(0,_reactNative.useWindowDimensions)(),[J,Q]=(0,_react.useState)(!1),[Z,ee]=(0,_react.useState)([]),te=(0,_react.useRef)({onChange:r,onTypedNameChange:s,onModeChange:c,onEmptyChange:d});(0,_react.useEffect)(()=>{te.current={onChange:r,onTypedNameChange:s,onModeChange:c,onEmptyChange:d}});const ne="draw"===W&&!v,ae="draw"===W?0===M.length:0===$.trim().length,re=(0,_react.useRef)(null);(0,_react.useEffect)(()=>{re.current!==ae&&(re.current=ae,te.current.onEmptyChange?.(ae))},[ae]);const ie=(0,_react.useCallback)(e=>{O.current=e,F(e)},[]),se=(0,_react.useCallback)(()=>{V(Date.now()),te.current.onChange?.(O.current.map(e=>e.points))},[]),oe=(0,_react.useMemo)(()=>{const pan=e=>_reactNativeGestureHandler.Gesture.Pan().enabled(ne).runOnJS(!0).onBegin(e=>{B.current=(0,_signatureGeometry.pointOf)(e.x,e.y)}).onStart(t=>{q.current=e,H.current+=1;const n=(0,_signatureGeometry.pointOf)(t.x,t.y);ie([...O.current,{id:H.current,points:[B.current??n,n]}])}).onUpdate(t=>{if(q.current!==e)return;const n=O.current[O.current.length-1],a=(0,_signatureGeometry.pointOf)(t.x,t.y);(0,_signatureGeometry.distanceBetween)(n.points[n.points.length-1],a)<.8||ie([...O.current.slice(0,-1),{...n,points:[...n.points,a]}])}).onFinalize(()=>{q.current===e&&(q.current=null,se())}),e=pan("sideways").activeOffsetX([-6,6]).failOffsetY([-8,8]),t=pan("rested").activateAfterLongPress(200);return _reactNativeGestureHandler.Gesture.Race(e,t)},[ne,ie,se]),ce=(0,_react.useCallback)(e=>{Y(e),te.current.onModeChange?.(e),(0,_announce.announce)("type"===e?P.typingAnnouncement:P.drawingAnnouncement)},[P.typingAnnouncement,P.drawingAnnouncement]);(0,_react.useEffect)(()=>{I&&u&&!X.current&&"draw"===W&&0===O.current.length&&ce("type")},[I,u,W,ce]);const de=(0,_react.useCallback)(()=>{X.current=!0,ce("draw"===W?"type":"draw")},[W,ce]),ue=(0,_react.useCallback)(e=>{z(e),V(Date.now()),te.current.onTypedNameChange?.(e)},[]),le=(0,_react.useCallback)(()=>{"type"===W?ue(""):(ie([]),se()),(0,_announce.announce)(P.clearedAnnouncement)},[W,ue,ie,se,P.clearedAnnouncement]),me=(0,_react.useCallback)(()=>{"draw"===W&&0!==O.current.length&&(ie(O.current.slice(0,-1)),se(),(0,_announce.announce)(P.undoneAnnouncement))},[W,ie,se,P.undoneAnnouncement]),pe=(0,_react.useCallback)(()=>{ee(O.current.map(e=>e.points)),Q(!0)},[]),ge=(0,_react.useCallback)(()=>{Q(!1)},[]),he=(0,_react.useCallback)(()=>{ie(Z.map(e=>(H.current+=1,{id:H.current,points:[...e]}))),se(),Q(!1)},[Z,ie,se]),ye=D||_signatureGeometry.FALLBACK_WIDTH;(0,_react.useImperativeHandle)(t,()=>({toFile:()=>new Promise((e,t)=>{if(ae)return void t(new Error(P.emptyError));const n=A?L.current:k.current;if(!n)return void t(new Error("The signature pad is not on screen."));const a=Math.min(3,Math.max(1,_reactNative.PixelRatio.get()));n.toDataURL(n=>{try{e((0,_writePng.writePng)(n))}catch(e){t(e)}},{width:ye*a,height:m*a})}),toSvg:()=>(0,_signatureGeometry.buildSignatureSvg)({width:ye,height:m,mode:W,strokes:M.map(e=>e.points),typedName:$,ink:E,paper:C,strokeWidth:2.5,fontFamily:cssFontStack(N)}),clear:le,undo:me,isEmpty:()=>ae}),[ae,P.emptyError,ye,m,W,M,$,A,E,C,N,le,me]);const xe=(0,_react.useMemo)(()=>[{name:"undo",label:P.undo},{name:"clear",label:P.clear},...u?[{name:"toggleMode",label:"draw"===W?P.typeInstead:P.drawInstead}]:[]],[P.undo,P.clear,P.typeInstead,P.drawInstead,u,W]),fe=(0,_react.useCallback)(e=>{if(v)return;const{actionName:t}=e.nativeEvent;"undo"===t?me():"clear"===t?le():"toggleMode"===t&&u&&de()},[v,me,le,de,u]),ve=(0,_react.useCallback)(e=>{G(e.nativeEvent.layout.width)},[]),Se=(0,_react.useMemo)(()=>_reactNative.StyleSheet.create({root:{gap:j.space.sm},pad:{height:m,borderWidth:j.size.border,borderColor:j.colors.border,borderRadius:j.radius.md,..._corners.smoothCorners,overflow:"hidden",backgroundColor:b,opacity:v?.5:1},baseline:{position:"absolute",left:j.space.md,right:j.space.md,top:m*_signatureGeometry.BASELINE_RATIO,height:_reactNative.StyleSheet.hairlineWidth,backgroundColor:T,opacity:.3},actions:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:j.space.xs},trailing:{flexDirection:"row",alignItems:"center",gap:j.space.xs},expandedRoot:{flex:1,padding:j.space.md,gap:j.space.sm,backgroundColor:j.colors.bg},expandedBar:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"}}),[j,m,b,T,v]),Re=$.trim(),je=_??U,we=l&&!ae?`Signed by ${l}${je?`, ${(0,_mobileCore.formatDateTime)(je)}`:""}`:null,Te="type"===W&&Re?`${P.pad}. ${Re}`:P.pad;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[Se.root,S],testID:R,children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:oe,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:Se.pad,onLayout:ve,accessible:!0,accessibilityRole:"image",accessibilityLabel:Te,accessibilityHint:"draw"===W?P.padHint:void 0,accessibilityValue:{text:ae?P.empty:P.signed},accessibilityState:{disabled:v},"aria-disabled":v,accessibilityActions:xe,onAccessibilityAction:fe,children:[A?(0,_jsxRuntime.jsxs)(_reactNativeSvg.default,{ref:L,style:_reactNative.StyleSheet.absoluteFill,width:"100%",height:m,children:[(0,_jsxRuntime.jsx)(_reactNativeSvg.Rect,{x:"0",y:"0",width:"100%",height:"100%",fill:C}),(0,_jsxRuntime.jsx)(Marks,{mode:W,strokes:M,name:Re,color:E,fontFamily:N,width:ye,height:m})]}):null,(0,_jsxRuntime.jsxs)(_reactNativeSvg.default,{ref:k,width:"100%",height:m,children:[(0,_jsxRuntime.jsx)(_reactNativeSvg.Rect,{x:"0",y:"0",width:"100%",height:"100%",fill:b}),(0,_jsxRuntime.jsx)(Marks,{mode:W,strokes:M,name:Re,color:T,fontFamily:N,width:ye,height:m})]}),(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:Se.baseline})]})}),"type"===W?(0,_jsxRuntime.jsx)(_index3.Input,{label:P.typedLabel,placeholder:P.typedPlaceholder,value:$,onChangeText:ue,maxLength:p,disabled:v,autoComplete:"name",textContentType:"name",autoCapitalize:"words",autoCorrect:!1,returnKeyType:"done",testID:R?`${R}-name`:void 0}):null,(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"tertiary",children:"draw"===W?P.caption:P.typedCaption}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:Se.actions,children:[u?(0,_jsxRuntime.jsx)(_index2.Button,{title:"draw"===W?P.typeInstead:P.drawInstead,variant:"ghost",tone:"primary",size:"md",style:TARGET_STYLE,haptic:f,disabled:v,onPress:de,testID:R?`${R}-mode`:void 0}):(0,_jsxRuntime.jsx)(_reactNative.View,{}),"draw"===W?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:Se.trailing,children:[M.length>0?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_index2.Button,{title:P.undo,variant:"ghost",tone:"primary",size:"md",style:TARGET_STYLE,haptic:f,disabled:v,onPress:me,testID:R?`${R}-undo`:void 0}),(0,_jsxRuntime.jsx)(_index2.Button,{title:P.clear,variant:"ghost",tone:"primary",size:"md",style:TARGET_STYLE,haptic:f,disabled:v,onPress:le,testID:R?`${R}-clear`:void 0})]}):null,n?(0,_jsxRuntime.jsx)(_index2.Button,{title:P.expand,variant:"ghost",tone:"primary",size:"md",style:TARGET_STYLE,haptic:f,disabled:v,onPress:pe,testID:R?`${R}-expand`:void 0}):null]}):null,"type"===W&&Re?(0,_jsxRuntime.jsx)(_index2.Button,{title:P.clear,variant:"ghost",tone:"primary",size:"md",style:TARGET_STYLE,haptic:f,disabled:v,onPress:le,testID:R?`${R}-clear`:void 0}):null]}),we?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"secondary",children:we}):null,n?(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:J,animationType:"slide",presentationStyle:"fullScreen",onRequestClose:ge,children:(0,_jsxRuntime.jsxs)(ExpandedRoot,{style:Se.expandedRoot,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:Se.expandedBar,children:[(0,_jsxRuntime.jsx)(_index2.Button,{title:P.close,variant:"ghost",tone:"primary",size:"md",style:TARGET_STYLE,haptic:f,onPress:ge,testID:R?`${R}-close`:void 0}),(0,_jsxRuntime.jsx)(_index2.Button,{title:P.done,variant:"solid",tone:"primary",size:"md",style:TARGET_STYLE,haptic:f,onPress:he,testID:R?`${R}-done`:void 0})]}),J?(0,_jsxRuntime.jsx)(SignaturePadSurface,{expandable:!1,defaultMode:"draw",allowTyped:!1,initialStrokes:Z,onChange:ee,height:Math.max(DEFAULT_HEIGHT,K-200),inkColor:g,paperColor:h,scriptFontFamily:y,labels:x,haptic:f,testID:R?`${R}-expanded`:void 0}):null]})}):null]})});SignaturePadSurface.displayName="SignaturePadSurface";const ExpandedRoot="android"===_reactNative.Platform.OS?_reactNativeGestureHandler.GestureHandlerRootView:_reactNative.View,SignaturePad=exports.SignaturePad=(0,_react.forwardRef)((e,t)=>(0,_jsxRuntime.jsx)(SignaturePadSurface,{...e,expandable:!0,ref:t}));SignaturePad.displayName="SignaturePad";var _default=exports.default=SignaturePad;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SkeletonText=exports.SkeletonCircle=exports.Skeleton=void 0;var _react=require("react"),_reactNative=require("react-native"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_Gradient=require("../../theme/Gradient.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_SkeletonClock=require("./SkeletonClock.js"),_SkeletonProvider=require("./SkeletonProvider.js"),_jsxRuntime=require("react/jsx-runtime");const resolveRadius=(e,t)=>"number"==typeof t?t:e.radius[t],resolveWidth=e=>void 0===e?"100%":e,radiusForShape=(e,t,s,i,r)=>{if(void 0!==r)return resolveRadius(e,r);switch(t){case"circle":return"number"==typeof s?Math.min(s,i)/2:i/2;case"rounded":return e.radius.md;default:return e.radius.sm}},Skeleton=({shape:e="rect",width:t="100%",height:s=16,radius:i,variant:r,speed:o,colors:n,style:a,testID:l})=>{const u=(0,_index.useTheme)(),c=(0,_SkeletonProvider.useSkeletonDefaults)(),d=(0,_SkeletonClock.useSkeletonClock)(),h=(0,_useReducedMotion.useReducedMotion)(),m=r??c.variant??"shimmer",p=h&&"auto"===(c.animation??"auto");let x=m;d.enabled?p&&"shimmer"===m&&(x="pulse"):x="none";const k=n?.background??c.colors?.background??u.colors.skeleton.background,S=n?.highlight??c.colors?.highlight??u.colors.skeleton.highlight,{responsive:_}=(0,_index2.useScreenDimensions)(),v=(0,_react.useMemo)(()=>buildStyles(),[]),y=resolveWidth(t),g=_.size(s),b=radiusForShape(u,e,y,g,i),[j,R]=(0,_react.useState)(0),f=(0,_react.useMemo)(()=>j<=0?0:Math.max(48,.7*j),[j]),w=(0,_react.useMemo)(()=>j<=0?0:d.shimmer.interpolate({inputRange:[0,1],outputRange:[-f,j]}),[d.shimmer,f,j]),C=(0,_react.useMemo)(()=>"none"===x?null:"pulse"===x?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[_reactNative.StyleSheet.absoluteFill,{backgroundColor:S,opacity:d.pulse.interpolate({inputRange:[0,1],outputRange:[0,.55]})}]}):j<=0?null:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[v.shimmerBand,{width:f,transform:[{translateX:w}],experimental_backgroundImage:[(0,_Gradient.toBackgroundImage)({colors:["transparent",S,"transparent"],locations:[0,.5,1],start:{x:0,y:.5},end:{x:1,y:.5}})]}]}),[x,S,d.pulse,j,v.shimmerBand,f,w]);return(0,_jsxRuntime.jsx)(_reactNative.View,{onLayout:e=>{const t=e.nativeEvent.layout.width;t!==j&&R(t)},accessible:!0,accessibilityLabel:"Loading",accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,accessibilityLiveRegion:"polite",testID:l,style:[v.base,{width:y,height:g,borderRadius:b,..._corners.smoothCorners,backgroundColor:k},a],children:C})};exports.Skeleton=Skeleton,Skeleton.displayName="Skeleton";const SkeletonCircle=({size:e,style:t,...s})=>{const{responsive:i}=(0,_index2.useScreenDimensions)(),r=i.size(e);return(0,_jsxRuntime.jsx)(Skeleton,{...s,shape:"circle",width:r,height:e,style:t})};exports.SkeletonCircle=SkeletonCircle,SkeletonCircle.displayName="SkeletonCircle";const SkeletonText=({lines:e=3,lastLineWidth:t="60%",spacing:s,fontSize:i,variant:r,speed:o,radius:n="sm",width:a="100%",style:l,testID:u})=>{const c=(0,_index.useTheme)(),d=s??c.spacing.xs,h=Math.max(1,e);return(0,_jsxRuntime.jsx)(_reactNative.View,{style:l,testID:u,children:Array.from({length:h}).map((e,s)=>{const l=s===h-1&&h>1?t:a;return(0,_jsxRuntime.jsx)(Skeleton,{shape:"text",width:l,height:i??c.typography.fontSize.base,radius:n,variant:r,speed:o,style:s<h-1?{marginBottom:d}:void 0},s)})})};exports.SkeletonText=SkeletonText,SkeletonText.displayName="SkeletonText";const buildStyles=()=>_reactNative.StyleSheet.create({base:{overflow:"hidden"},shimmerBand:{position:"absolute",top:0,bottom:0,left:0}});var _default=exports.default=Skeleton;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SkeletonText=exports.SkeletonCircle=exports.Skeleton=void 0;var _react=require("react"),_reactNative=require("react-native"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_Gradient=require("../../theme/Gradient.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_SkeletonClock=require("./SkeletonClock.js"),_SkeletonProvider=require("./SkeletonProvider.js"),_jsxRuntime=require("react/jsx-runtime");const resolveRadius=(e,t)=>"number"==typeof t?t:e.radius[t],resolveWidth=e=>void 0===e?"100%":e,radiusForShape=(e,t,s,i,r)=>{if(void 0!==r)return resolveRadius(e,r);switch(t){case"circle":return"number"==typeof s?Math.min(s,i)/2:i/2;case"rounded":return e.radius.md;default:return e.radius.sm}},Skeleton=({shape:e="rect",width:t="100%",height:s=16,radius:i,variant:r,speed:o,colors:n,style:a,testID:l})=>{const u=(0,_index.useTheme)(),c=(0,_SkeletonProvider.useSkeletonDefaults)(),d=(0,_SkeletonClock.useSkeletonClock)(),m=(0,_useReducedMotion.useReducedMotion)(),h=r??c.variant??"shimmer",p=m&&"auto"===(c.animation??"auto");let x=h;d.enabled?p&&"shimmer"===h&&(x="pulse"):x="none";const k=n?.background??c.colors?.background??u.colors.skeleton,S=n?.highlight??c.colors?.highlight??u.colors["skeleton-highlight"],{responsive:_}=(0,_index2.useScreenDimensions)(),v=(0,_react.useMemo)(()=>buildStyles(),[]),y=resolveWidth(t),g=_.size(s),b=radiusForShape(u,e,y,g,i),[j,R]=(0,_react.useState)(0),f=(0,_react.useMemo)(()=>j<=0?0:Math.max(48,.7*j),[j]),w=(0,_react.useMemo)(()=>j<=0?0:d.shimmer.interpolate({inputRange:[0,1],outputRange:[-f,j]}),[d.shimmer,f,j]),C=(0,_react.useMemo)(()=>"none"===x?null:"pulse"===x?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[_reactNative.StyleSheet.absoluteFill,{backgroundColor:S,opacity:d.pulse.interpolate({inputRange:[0,1],outputRange:[0,.55]})}]}):j<=0?null:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[v.shimmerBand,{width:f,transform:[{translateX:w}],experimental_backgroundImage:[(0,_Gradient.toBackgroundImage)({colors:["transparent",S,"transparent"],locations:[0,.5,1],start:{x:0,y:.5},end:{x:1,y:.5}})]}]}),[x,S,d.pulse,j,v.shimmerBand,f,w]);return(0,_jsxRuntime.jsx)(_reactNative.View,{onLayout:e=>{const t=e.nativeEvent.layout.width;t!==j&&R(t)},accessible:!0,accessibilityLabel:"Loading",accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,accessibilityLiveRegion:"polite",testID:l,style:[v.base,{width:y,height:g,borderRadius:b,..._corners.smoothCorners,backgroundColor:k},a],children:C})};exports.Skeleton=Skeleton,Skeleton.displayName="Skeleton";const SkeletonCircle=({size:e,style:t,...s})=>{const{responsive:i}=(0,_index2.useScreenDimensions)(),r=i.size(e);return(0,_jsxRuntime.jsx)(Skeleton,{...s,shape:"circle",width:r,height:e,style:t})};exports.SkeletonCircle=SkeletonCircle,SkeletonCircle.displayName="SkeletonCircle";const SkeletonText=({lines:e=3,lastLineWidth:t="60%",spacing:s,fontSize:i,variant:r,speed:o,radius:n="sm",width:a="100%",style:l,testID:u})=>{const c=(0,_index.useTheme)(),d=s??c.space.xs,m=Math.max(1,e);return(0,_jsxRuntime.jsx)(_reactNative.View,{style:l,testID:u,children:Array.from({length:m}).map((e,s)=>{const l=s===m-1&&m>1?t:a;return(0,_jsxRuntime.jsx)(Skeleton,{shape:"text",width:l,height:i??c.text.base.size,radius:n,variant:r,speed:o,style:s<m-1?{marginBottom:d}:void 0},s)})})};exports.SkeletonText=SkeletonText,SkeletonText.displayName="SkeletonText";const buildStyles=()=>_reactNative.StyleSheet.create({base:{overflow:"hidden"},shimmerBand:{position:"absolute",top:0,bottom:0,left:0}});var _default=exports.default=Skeleton;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SkeletonContent=void 0;var cache,_react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_index=require("../../theme/index.js"),_Skeleton=require("./Skeleton.js"),_SkeletonProvider=require("./SkeletonProvider.js"),_SkeletonSkip=require("./SkeletonSkip.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var r,i,n=Object.defineProperty,s={__proto__:null,default:e};if(Object(e)!==e)return s;if(cache||"function"!=typeof WeakMap||(cache=new WeakMap),cache){if(cache.has(e))return cache.get(e);cache.set(e,s)}for(i in e)"default"!==i&&{}.hasOwnProperty.call(e,i)&&((r=n&&Object.getOwnPropertyDescriptor(e,i))&&(r.get||r.set)?n(s,i,r):s[i]=e[i]);return s}const DEFAULT_REVEAL_FADE_MS=300,flattenStyle=e=>{if(!e)return{};return _reactNative.StyleSheet.flatten(e)??{}},resolveWidth=(e,t)=>"number"==typeof e?e:"string"!=typeof e||"auto"!==e&&"100%"!==e&&!/^\d+(\.\d+)?%$/.test(e)?t:e,resolveRadius=(e,t)=>"number"==typeof e?e:t,skeletonizeNode=(e,t,r,i,n,s="r")=>{if(null==t||"boolean"==typeof t)return null;if("string"==typeof t||"number"==typeof t)return(0,_jsxRuntime.jsx)(_Skeleton.Skeleton,{shape:"text",width:"60%",height:14,variant:r,speed:i,colors:n},`${s}-text`);if(Array.isArray(t))return _react.Children.map(t,(t,o)=>skeletonizeNode(e,t,r,i,n,`${s}-${o}`));if(!(0,_react.isValidElement)(t))return null;const o=t,a=o.props??{},l=o.type;if(l===_SkeletonSkip.SkeletonSkip)return(0,_react.cloneElement)(o,{key:`${s}-skip`});if("function"==typeof l||"object"==typeof l){const e=l.Skeleton;if(e){const t=e;return(0,_jsxRuntime.jsx)(t,{...a},`${s}-self`)}}if(l===_reactNative.Image){const e=flattenStyle(a.style),t=resolveWidth(e.width,"100%"),o="number"==typeof e.height?e.height:120,l=resolveRadius(e.borderRadius,"sm");return(0,_jsxRuntime.jsx)(_Skeleton.Skeleton,{width:t,height:o,radius:l,variant:r,speed:i,colors:n,style:{margin:"number"==typeof e.margin?e.margin:void 0}},`${s}-img`)}if(l===_reactNative.Text){const t=flattenStyle(a.style),o="number"==typeof t.fontSize?t.fontSize:e.typography.fontSize.base,l=resolveWidth(t.width,"85%");return(0,_jsxRuntime.jsx)(_Skeleton.Skeleton,{shape:"text",width:l,height:Math.round(1.15*o),variant:r,speed:i,colors:n,style:{marginVertical:e.spacing.xxs}},`${s}-txt`)}if(null!=a.children)return(0,_react.cloneElement)(o,{key:`${s}-w`},skeletonizeNode(e,a.children,r,i,n,`${s}-c`));if(l===_reactNative.View){const e=flattenStyle(a.style);if(null!=e.width||null!=e.height){const t=resolveWidth(e.width,"100%"),o="number"==typeof e.height?e.height:20,a=resolveRadius(e.borderRadius,"sm");return(0,_jsxRuntime.jsx)(_Skeleton.Skeleton,{width:t,height:o,radius:a,variant:r,speed:i,colors:n},`${s}-vw`)}}return(0,_react.cloneElement)(o,{key:`${s}-leaf`})},SkeletonContent=({loading:e,children:t,placeholder:r,variant:i,speed:n,count:s=1,colors:o,fadeDuration:a,style:l,testID:c})=>{const u=(0,_index.useTheme)(),d=(0,_SkeletonProvider.useSkeletonDefaults)(),f=(0,_usePresenceMotion.usePresenceMotion)(),h=a??d.fadeDuration??(f.reduced?f.duration("normal"):300),_=(0,_react.useRef)(e),p=(0,_react.useRef)((0,_index.createAnimatedValue)(e?0:1)).current;if((0,_react.useEffect)(()=>{let t;return _.current&&!e?(p.setValue(0),t=_reactNative.Animated.timing(p,{toValue:1,duration:h,useNativeDriver:!0}),t.start()):!_.current&&e&&p.setValue(1),_.current=e,()=>t?.stop()},[e,p,h]),!e)return h<=0?(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:t}):(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[l,{opacity:p}],testID:c,children:t});if(void 0!==r){const e=s>1?Array.from({length:s},(e,t)=>(0,_jsxRuntime.jsx)(_react.default.Fragment,{children:r},`sk-ph-${t}`)):r;return(0,_jsxRuntime.jsx)(_reactNative.View,{style:l,testID:c,accessible:!0,accessibilityLabel:"Loading",accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,accessibilityLiveRegion:"polite",children:e})}const y=s>1?Array.from({length:s},(e,r)=>(0,_jsxRuntime.jsx)(_react.default.Fragment,{children:t},`sk-rep-${r}`)):t;return(0,_jsxRuntime.jsx)(_reactNative.View,{style:l,testID:c,accessible:!0,accessibilityLabel:"Loading",accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,accessibilityLiveRegion:"polite",children:skeletonizeNode(u,y,i,n,o)})};exports.SkeletonContent=SkeletonContent,SkeletonContent.displayName="SkeletonContent";var _default=exports.default=SkeletonContent;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SkeletonContent=void 0;var cache,_react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_index=require("../../theme/index.js"),_Skeleton=require("./Skeleton.js"),_SkeletonProvider=require("./SkeletonProvider.js"),_SkeletonSkip=require("./SkeletonSkip.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var r,i,n=Object.defineProperty,s={__proto__:null,default:e};if(Object(e)!==e)return s;if(cache||"function"!=typeof WeakMap||(cache=new WeakMap),cache){if(cache.has(e))return cache.get(e);cache.set(e,s)}for(i in e)"default"!==i&&{}.hasOwnProperty.call(e,i)&&((r=n&&Object.getOwnPropertyDescriptor(e,i))&&(r.get||r.set)?n(s,i,r):s[i]=e[i]);return s}const DEFAULT_REVEAL_FADE_MS=300,flattenStyle=e=>{if(!e)return{};return _reactNative.StyleSheet.flatten(e)??{}},resolveWidth=(e,t)=>"number"==typeof e?e:"string"!=typeof e||"auto"!==e&&"100%"!==e&&!/^\d+(\.\d+)?%$/.test(e)?t:e,resolveRadius=(e,t)=>"number"==typeof e?e:t,skeletonizeNode=(e,t,r,i,n,s="r")=>{if(null==t||"boolean"==typeof t)return null;if("string"==typeof t||"number"==typeof t)return(0,_jsxRuntime.jsx)(_Skeleton.Skeleton,{shape:"text",width:"60%",height:14,variant:r,speed:i,colors:n},`${s}-text`);if(Array.isArray(t))return _react.Children.map(t,(t,o)=>skeletonizeNode(e,t,r,i,n,`${s}-${o}`));if(!(0,_react.isValidElement)(t))return null;const o=t,a=o.props??{},l=o.type;if(l===_SkeletonSkip.SkeletonSkip)return(0,_react.cloneElement)(o,{key:`${s}-skip`});if("function"==typeof l||"object"==typeof l){const e=l.Skeleton;if(e){const t=e;return(0,_jsxRuntime.jsx)(t,{...a},`${s}-self`)}}if(l===_reactNative.Image){const e=flattenStyle(a.style),t=resolveWidth(e.width,"100%"),o="number"==typeof e.height?e.height:120,l=resolveRadius(e.borderRadius,"sm");return(0,_jsxRuntime.jsx)(_Skeleton.Skeleton,{width:t,height:o,radius:l,variant:r,speed:i,colors:n,style:{margin:"number"==typeof e.margin?e.margin:void 0}},`${s}-img`)}if(l===_reactNative.Text){const t=flattenStyle(a.style),o="number"==typeof t.fontSize?t.fontSize:e.text.base.size,l=resolveWidth(t.width,"85%");return(0,_jsxRuntime.jsx)(_Skeleton.Skeleton,{shape:"text",width:l,height:Math.round(1.15*o),variant:r,speed:i,colors:n,style:{marginVertical:e.space.xxs}},`${s}-txt`)}if(null!=a.children)return(0,_react.cloneElement)(o,{key:`${s}-w`},skeletonizeNode(e,a.children,r,i,n,`${s}-c`));if(l===_reactNative.View){const e=flattenStyle(a.style);if(null!=e.width||null!=e.height){const t=resolveWidth(e.width,"100%"),o="number"==typeof e.height?e.height:20,a=resolveRadius(e.borderRadius,"sm");return(0,_jsxRuntime.jsx)(_Skeleton.Skeleton,{width:t,height:o,radius:a,variant:r,speed:i,colors:n},`${s}-vw`)}}return(0,_react.cloneElement)(o,{key:`${s}-leaf`})},SkeletonContent=({loading:e,children:t,placeholder:r,variant:i,speed:n,count:s=1,colors:o,fadeDuration:a,style:l,testID:c})=>{const u=(0,_index.useTheme)(),d=(0,_SkeletonProvider.useSkeletonDefaults)(),f=(0,_usePresenceMotion.usePresenceMotion)(),_=a??d.fadeDuration??(f.reduced?f.duration("default"):300),h=(0,_react.useRef)(e),p=(0,_react.useRef)((0,_index.createAnimatedValue)(e?0:1)).current;if((0,_react.useEffect)(()=>{let t;return h.current&&!e?(p.setValue(0),t=_reactNative.Animated.timing(p,{toValue:1,duration:_,useNativeDriver:!0}),t.start()):!h.current&&e&&p.setValue(1),h.current=e,()=>t?.stop()},[e,p,_]),!e)return _<=0?(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:t}):(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[l,{opacity:p}],testID:c,children:t});if(void 0!==r){const e=s>1?Array.from({length:s},(e,t)=>(0,_jsxRuntime.jsx)(_react.default.Fragment,{children:r},`sk-ph-${t}`)):r;return(0,_jsxRuntime.jsx)(_reactNative.View,{style:l,testID:c,accessible:!0,accessibilityLabel:"Loading",accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,accessibilityLiveRegion:"polite",children:e})}const y=s>1?Array.from({length:s},(e,r)=>(0,_jsxRuntime.jsx)(_react.default.Fragment,{children:t},`sk-rep-${r}`)):t;return(0,_jsxRuntime.jsx)(_reactNative.View,{style:l,testID:c,accessible:!0,accessibilityLabel:"Loading",accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,accessibilityLiveRegion:"polite",children:skeletonizeNode(u,y,i,n,o)})};exports.SkeletonContent=SkeletonContent,SkeletonContent.displayName="SkeletonContent";var _default=exports.default=SkeletonContent;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SlideToConfirm=void 0;var cache,_react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated")),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var a,r,i=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)&&((a=i&&Object.getOwnPropertyDescriptor(e,r))&&(a.get||a.set)?i(n,r,a):n[r]=e[r]);return n}const SIZE_MAP={sm:{height:44,pad:"xxs"},md:{height:56,pad:"xs"},lg:{height:64,pad:"sm"}},Chevron=({color:e,size:t})=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:{width:0,height:0,borderTopWidth:.4*t,borderBottomWidth:.4*t,borderLeftWidth:.55*t,borderTopColor:"transparent",borderBottomColor:"transparent",borderLeftColor:e,marginLeft:.2*t}}),ACCESSIBILITY_ACTIONS=[{name:"activate",label:"Confirm"},{name:"increment",label:"Confirm"}],SlideToConfirm=exports.SlideToConfirm=(0,_react.forwardRef)((e,t)=>{const{onConfirm:a,label:r="Slide to confirm",confirmedLabel:i="Confirmed",tone:n="primary",size:o="md",disabled:s=!1,threshold:l=.9,resetAfter:c=!1,haptic:d,icon:u,style:m,trackStyle:_,handleStyle:h,labelStyle:v,testID:f}=e,p=(0,_index.useTheme)(),b=SIZE_MAP[o],g=p.spacing[b.pad],x=b.height-2*g,y=(0,_react.useMemo)(()=>buildStyles(p,b),[p,b]),S=p.colors[n],[R,C]=(0,_react.useState)(!1),N=(0,_reactNativeReanimated.useSharedValue)(0),j=(0,_reactNativeReanimated.useSharedValue)(0),w=(0,_reactNativeReanimated.useSharedValue)(0),k=(0,_react.useRef)(null),T=(0,_react.useCallback)(()=>{const e=(0,_index2.resolveHaptic)(d,"notificationSuccess");e&&(0,_index2.triggerHaptic)(e)},[d]),A=(0,_react.useCallback)(()=>{C(!1),N.value=(0,_reactNativeReanimated.withSpring)(0,{damping:18,stiffness:160,mass:1})},[N]),I=(0,_react.useCallback)(()=>{C(!0),T(),a(),!1!==c&&(k.current&&clearTimeout(k.current),k.current=setTimeout(A,c))},[T,a,c,A]),E=(0,_react.useCallback)(e=>{if(s||R)return;const{actionName:t}=e.nativeEvent;"activate"!==t&&"increment"!==t||I()},[s,R,I]);_react.default.useEffect(()=>()=>{(0,_reactNativeReanimated.cancelAnimation)(N),k.current&&clearTimeout(k.current)},[N]);const M=(0,_react.useCallback)(e=>{j.value=Math.max(0,e.nativeEvent.layout.width-x-2*g)},[j,x,g]),q=(0,_react.useMemo)(()=>{const e=l,t={damping:18,stiffness:160,mass:1},a={duration:p.motion.duration.fast,easing:_reactNativeReanimated.Easing.out(_reactNativeReanimated.Easing.cubic)};return _reactNativeGestureHandler.Gesture.Pan().enabled(!s&&!R).minDistance(0).onStart(()=>{"worklet";w.value=N.value}).onUpdate(e=>{"worklet";N.value=Math.min(Math.max(w.value+e.translationX,0),j.value)}).onEnd(()=>{"worklet";j.value>0&&N.value>=j.value*e?(N.value=(0,_reactNativeReanimated.withTiming)(j.value,a),(0,_reactNativeReanimated.runOnJS)(I)()):N.value=(0,_reactNativeReanimated.withSpring)(0,t)})},[s,R,l,N,j,w,I,p.motion.duration.fast]),O=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({transform:[{translateX:N.value}]})),W=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({width:N.value+x+g})),L=(0,_reactNativeReanimated.useAnimatedStyle)(()=>{const e=j.value>0?j.value:1;return{opacity:Math.max(0,1-N.value/(.6*e))}});return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,style:[y.track,{backgroundColor:p.colors.background.secondary},_,m],onLayout:M,testID:f,accessibilityRole:"adjustable",accessibilityLabel:R?i:r,accessibilityState:{disabled:s},"aria-disabled":s,accessibilityActions:ACCESSIBILITY_ACTIONS,onAccessibilityAction:E,children:[(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[y.fill,{backgroundColor:S,opacity:s?.5:1},W],pointerEvents:"none"}),(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[y.labelWrap,L],pointerEvents:"none",children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[y.label,{color:p.colors.text.secondary,fontSize:p.typography.fontSize.base},v],numberOfLines:1,children:R?i:r})}),(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:q,children:(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[y.handle,{width:x,height:x,borderRadius:p.radius.pill,..._corners.smoothCorners,backgroundColor:p.colors.background.elevated,opacity:s?.5:1,...p.shadows.sm},h,O],children:u??(0,_jsxRuntime.jsx)(Chevron,{color:S,size:.5*x})})})]})});SlideToConfirm.displayName="SlideToConfirm";const buildStyles=(e,t)=>_reactNative.StyleSheet.create({track:{height:t.height,borderRadius:e.radius.pill,..._corners.smoothCorners,justifyContent:"center",overflow:"hidden",padding:e.spacing[t.pad]},fill:{position:"absolute",left:0,top:0,bottom:0,borderRadius:e.radius.pill,..._corners.smoothCorners},labelWrap:{position:"absolute",left:t.height,right:t.height},label:{textAlign:"center",includeFontPadding:!1},handle:{alignItems:"center",justifyContent:"center"}});var _default=exports.default=SlideToConfirm;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SlideToConfirm=void 0;var cache,_react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated")),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var a,r,i=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)&&((a=i&&Object.getOwnPropertyDescriptor(e,r))&&(a.get||a.set)?i(n,r,a):n[r]=e[r]);return n}const SIZE_MAP={sm:{height:44,pad:"xxs"},md:{height:56,pad:"xs"},lg:{height:64,pad:"sm"}},Chevron=({color:e,size:t})=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:{width:0,height:0,borderTopWidth:.4*t,borderBottomWidth:.4*t,borderLeftWidth:.55*t,borderTopColor:"transparent",borderBottomColor:"transparent",borderLeftColor:e,marginLeft:.2*t}}),ACCESSIBILITY_ACTIONS=[{name:"activate",label:"Confirm"},{name:"increment",label:"Confirm"}],SlideToConfirm=exports.SlideToConfirm=(0,_react.forwardRef)((e,t)=>{const{onConfirm:a,label:r="Slide to confirm",confirmedLabel:i="Confirmed",tone:n="primary",size:o="md",disabled:s=!1,threshold:l=.9,resetAfter:c=!1,haptic:d,icon:u,style:m,trackStyle:_,handleStyle:h,labelStyle:v,testID:f}=e,p=(0,_index.useTheme)(),b=SIZE_MAP[o],x=p.space[b.pad],g=b.height-2*x,S=(0,_react.useMemo)(()=>buildStyles(p,b),[p,b]),y=p.colors[n],[R,C]=(0,_react.useState)(!1),N=(0,_reactNativeReanimated.useSharedValue)(0),j=(0,_reactNativeReanimated.useSharedValue)(0),w=(0,_reactNativeReanimated.useSharedValue)(0),T=(0,_react.useRef)(null),k=(0,_react.useCallback)(()=>{const e=(0,_index2.resolveHaptic)(d,"notificationSuccess");e&&(0,_index2.triggerHaptic)(e)},[d]),A=(0,_react.useCallback)(()=>{C(!1),N.value=(0,_reactNativeReanimated.withSpring)(0,{damping:18,stiffness:160,mass:1})},[N]),I=(0,_react.useCallback)(()=>{C(!0),k(),a(),!1!==c&&(T.current&&clearTimeout(T.current),T.current=setTimeout(A,c))},[k,a,c,A]),E=(0,_react.useCallback)(e=>{if(s||R)return;const{actionName:t}=e.nativeEvent;"activate"!==t&&"increment"!==t||I()},[s,R,I]);_react.default.useEffect(()=>()=>{(0,_reactNativeReanimated.cancelAnimation)(N),T.current&&clearTimeout(T.current)},[N]);const M=(0,_react.useCallback)(e=>{j.value=Math.max(0,e.nativeEvent.layout.width-g-2*x)},[j,g,x]),q=(0,_react.useMemo)(()=>{const e=l,t={damping:18,stiffness:160,mass:1},a={duration:p.motion.duration.fast,easing:_reactNativeReanimated.Easing.out(_reactNativeReanimated.Easing.cubic)};return _reactNativeGestureHandler.Gesture.Pan().enabled(!s&&!R).minDistance(0).onStart(()=>{"worklet";w.value=N.value}).onUpdate(e=>{"worklet";N.value=Math.min(Math.max(w.value+e.translationX,0),j.value)}).onEnd(()=>{"worklet";j.value>0&&N.value>=j.value*e?(N.value=(0,_reactNativeReanimated.withTiming)(j.value,a),(0,_reactNativeReanimated.runOnJS)(I)()):N.value=(0,_reactNativeReanimated.withSpring)(0,t)})},[s,R,l,N,j,w,I,p.motion.duration.fast]),O=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({transform:[{translateX:N.value}]})),W=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({width:N.value+g+x})),L=(0,_reactNativeReanimated.useAnimatedStyle)(()=>{const e=j.value>0?j.value:1;return{opacity:Math.max(0,1-N.value/(.6*e))}});return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,style:[S.track,{backgroundColor:p.colors["bg-subtle"]},_,m],onLayout:M,testID:f,accessibilityRole:"adjustable",accessibilityLabel:R?i:r,accessibilityState:{disabled:s},"aria-disabled":s,accessibilityActions:ACCESSIBILITY_ACTIONS,onAccessibilityAction:E,children:[(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[S.fill,{backgroundColor:y,opacity:s?.5:1},W],pointerEvents:"none"}),(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[S.labelWrap,L],pointerEvents:"none",children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[S.label,{color:p.colors["text-muted"],fontSize:p.text.base.size},v],numberOfLines:1,children:R?i:r})}),(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:q,children:(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[S.handle,{width:g,height:g,borderRadius:p.radius.pill,..._corners.smoothCorners,backgroundColor:p.colors.surface,opacity:s?.5:1,...p.shadow.card},h,O],children:u??(0,_jsxRuntime.jsx)(Chevron,{color:y,size:.5*g})})})]})});SlideToConfirm.displayName="SlideToConfirm";const buildStyles=(e,t)=>_reactNative.StyleSheet.create({track:{height:t.height,borderRadius:e.radius.pill,..._corners.smoothCorners,justifyContent:"center",overflow:"hidden",padding:e.space[t.pad]},fill:{position:"absolute",left:0,top:0,bottom:0,borderRadius:e.radius.pill,..._corners.smoothCorners},labelWrap:{position:"absolute",left:t.height,right:t.height},label:{textAlign:"center",includeFontPadding:!1},handle:{alignItems:"center",justifyContent:"center"}});var _default=exports.default=SlideToConfirm;