@webority/mobile-ui 0.88.0 → 0.89.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (400) hide show
  1. package/README.md +2 -0
  2. package/lib/commonjs/canvasKit/index.js +1 -1
  3. package/lib/commonjs/canvasKit/meta.js +1 -0
  4. package/lib/commonjs/components/Accordion/Accordion.js +1 -1
  5. package/lib/commonjs/components/AmountSlider/AmountSlider.js +1 -1
  6. package/lib/commonjs/components/AnimatePresence/AnimatePresence.js +1 -1
  7. package/lib/commonjs/components/AppBar/AppBar.js +1 -1
  8. package/lib/commonjs/components/AppIcon/AppIcon.js +1 -1
  9. package/lib/commonjs/components/AsyncBlock/AsyncBlock.js +1 -1
  10. package/lib/commonjs/components/AuthedImage/AuthedImage.js +1 -1
  11. package/lib/commonjs/components/Autocomplete/Autocomplete.js +1 -1
  12. package/lib/commonjs/components/Avatar/Avatar.js +1 -1
  13. package/lib/commonjs/components/Badge/Badge.js +1 -1
  14. package/lib/commonjs/components/Banner/Banner.js +1 -1
  15. package/lib/commonjs/components/BarChart/BarChart.js +1 -1
  16. package/lib/commonjs/components/BottomNavigation/BottomNavigation.js +1 -1
  17. package/lib/commonjs/components/BottomSheet/BottomSheet.js +1 -1
  18. package/lib/commonjs/components/Box/Box.js +1 -1
  19. package/lib/commonjs/components/Button/Button.js +1 -1
  20. package/lib/commonjs/components/Calendar/Calendar.js +1 -1
  21. package/lib/commonjs/components/Calendar/CalendarDay.js +1 -1
  22. package/lib/commonjs/components/Calendar/calendarStyles.js +1 -1
  23. package/lib/commonjs/components/Card/Card.js +1 -1
  24. package/lib/commonjs/components/Carousel/Carousel.js +1 -1
  25. package/lib/commonjs/components/Checkbox/Checkbox.js +1 -1
  26. package/lib/commonjs/components/Chip/Chip.js +1 -1
  27. package/lib/commonjs/components/ChoiceGroup/ChoiceGroup.js +1 -1
  28. package/lib/commonjs/components/Composer/Composer.js +1 -1
  29. package/lib/commonjs/components/Confetti/Confetti.js +1 -1
  30. package/lib/commonjs/components/DatePicker/DatePicker.js +1 -1
  31. package/lib/commonjs/components/DateRangePicker/DateRangePicker.js +1 -1
  32. package/lib/commonjs/components/DateSeparator/DateSeparator.js +1 -1
  33. package/lib/commonjs/components/Descriptions/Descriptions.js +1 -1
  34. package/lib/commonjs/components/Dialog/Dialog.js +1 -1
  35. package/lib/commonjs/components/Divider/Divider.js +1 -1
  36. package/lib/commonjs/components/Drawer/Drawer.js +1 -1
  37. package/lib/commonjs/components/EmptyState/EmptyState.js +1 -1
  38. package/lib/commonjs/components/ErrorBoundary/ErrorBoundary.js +1 -1
  39. package/lib/commonjs/components/FieldBase/Chevron.js +1 -1
  40. package/lib/commonjs/components/FieldBase/ChoiceText.js +1 -1
  41. package/lib/commonjs/components/FieldBase/FieldBase.js +1 -1
  42. package/lib/commonjs/components/FieldBase/useFloatingLabel.js +1 -1
  43. package/lib/commonjs/components/FilePicker/FilePicker.js +1 -1
  44. package/lib/commonjs/components/FileViewer/FileViewer.js +1 -1
  45. package/lib/commonjs/components/FilterChipRow/FilterChipRow.js +1 -1
  46. package/lib/commonjs/components/FloatingActionButton/FloatingActionButton.js +1 -1
  47. package/lib/commonjs/components/FormField/FormField.js +1 -1
  48. package/lib/commonjs/components/IconBadge/IconBadge.js +1 -1
  49. package/lib/commonjs/components/IconButton/IconButton.js +1 -1
  50. package/lib/commonjs/components/ImageGallery/ImageGallery.js +1 -1
  51. package/lib/commonjs/components/InlineSelect/InlineSelect.js +1 -1
  52. package/lib/commonjs/components/Input/Input.js +1 -1
  53. package/lib/commonjs/components/KeyboardAwareScrollView/KeyboardAwareScrollView.js +1 -1
  54. package/lib/commonjs/components/KeyboardToolbar/KeyboardToolbar.js +1 -1
  55. package/lib/commonjs/components/ListItem/ListItem.js +1 -1
  56. package/lib/commonjs/components/LoaderOverlay/LoaderOverlay.js +1 -1
  57. package/lib/commonjs/components/Markdown/Markdown.js +1 -1
  58. package/lib/commonjs/components/Menu/MenuSurface.js +1 -1
  59. package/lib/commonjs/components/MessageBubble/MessageBubble.js +1 -1
  60. package/lib/commonjs/components/MessageList/MessageList.js +1 -1
  61. package/lib/commonjs/components/Modal/Modal.js +1 -1
  62. package/lib/commonjs/components/Notation/Notation.js +1 -1
  63. package/lib/commonjs/components/NumberInput/NumberInput.js +1 -1
  64. package/lib/commonjs/components/OTPInput/OTPInput.js +1 -1
  65. package/lib/commonjs/components/OnboardingPager/OnboardingPager.js +1 -1
  66. package/lib/commonjs/components/OptionSheet/OptionSheet.js +1 -1
  67. package/lib/commonjs/components/PaymentResult/PaymentResult.js +1 -1
  68. package/lib/commonjs/components/PermissionPrompt/PermissionPrompt.js +1 -1
  69. package/lib/commonjs/components/PhoneNumberInput/PhoneNumberInput.js +1 -1
  70. package/lib/commonjs/components/PickerTrigger/PickerTrigger.js +1 -1
  71. package/lib/commonjs/components/ProfileCompletion/ProfileCompletion.js +1 -1
  72. package/lib/commonjs/components/ProfilePicker/ProfilePicker.js +1 -1
  73. package/lib/commonjs/components/ProgressBar/ProgressBar.js +1 -1
  74. package/lib/commonjs/components/ProgressRing/ProgressRing.js +1 -1
  75. package/lib/commonjs/components/Radio/Radio.js +1 -1
  76. package/lib/commonjs/components/Radio/RadioDot.js +1 -1
  77. package/lib/commonjs/components/Rating/Rating.js +1 -1
  78. package/lib/commonjs/components/Repeater/Repeater.js +1 -1
  79. package/lib/commonjs/components/RichTextEditor/RichTextEditor.js +1 -1
  80. package/lib/commonjs/components/ScannerOverlay/ScannerOverlay.js +1 -1
  81. package/lib/commonjs/components/Screen/Screen.js +1 -1
  82. package/lib/commonjs/components/SearchBar/SearchBar.js +1 -1
  83. package/lib/commonjs/components/SearchBar/SearchPanel.js +1 -1
  84. package/lib/commonjs/components/SectionHeader/SectionHeader.js +1 -1
  85. package/lib/commonjs/components/SegmentedControl/SegmentedControl.js +1 -1
  86. package/lib/commonjs/components/Select/Select.js +1 -1
  87. package/lib/commonjs/components/SignaturePad/SignaturePad.js +1 -1
  88. package/lib/commonjs/components/Skeleton/Skeleton.js +1 -1
  89. package/lib/commonjs/components/Skeleton/SkeletonContent.js +1 -1
  90. package/lib/commonjs/components/SlideToConfirm/SlideToConfirm.js +1 -1
  91. package/lib/commonjs/components/Slider/Slider.js +1 -1
  92. package/lib/commonjs/components/Slider/valueText.js +1 -1
  93. package/lib/commonjs/components/SliderField/SliderField.js +1 -1
  94. package/lib/commonjs/components/Sparkline/Sparkline.js +1 -1
  95. package/lib/commonjs/components/Spinner/Spinner.js +1 -1
  96. package/lib/commonjs/components/StatTile/StatTile.js +1 -1
  97. package/lib/commonjs/components/StatusBadge/StatusBadge.js +1 -1
  98. package/lib/commonjs/components/Stepper/Stepper.js +1 -1
  99. package/lib/commonjs/components/Swipeable/Swipeable.js +1 -1
  100. package/lib/commonjs/components/Switch/Switch.js +1 -1
  101. package/lib/commonjs/components/Tabs/Tabs.js +1 -1
  102. package/lib/commonjs/components/TagInput/TagInput.js +1 -1
  103. package/lib/commonjs/components/Text/Text.js +1 -1
  104. package/lib/commonjs/components/TimePicker/TimePicker.js +1 -1
  105. package/lib/commonjs/components/Timeline/Timeline.js +1 -1
  106. package/lib/commonjs/components/Toast/Toast.js +1 -1
  107. package/lib/commonjs/components/Toast/ToastProvider.js +1 -1
  108. package/lib/commonjs/components/Tooltip/RichTooltipBody.js +1 -1
  109. package/lib/commonjs/components/Tooltip/Tooltip.js +1 -1
  110. package/lib/commonjs/components/Tour/Tour.js +1 -1
  111. package/lib/commonjs/components/TypingIndicator/TypingIndicator.js +1 -1
  112. package/lib/commonjs/components/WheelPicker/Wheel.js +1 -1
  113. package/lib/commonjs/components/WheelPicker/WheelPicker.js +1 -1
  114. package/lib/commonjs/hooks/useDragToDismiss.js +1 -1
  115. package/lib/commonjs/hooks/usePressAnimation.js +1 -1
  116. package/lib/commonjs/hooks/useRefreshControl.js +1 -1
  117. package/lib/commonjs/index.js +1 -1
  118. package/lib/commonjs/initUI.js +1 -1
  119. package/lib/commonjs/network/NetworkStatusBanner.js +1 -1
  120. package/lib/commonjs/theme/ThemeContext.js +1 -1
  121. package/lib/commonjs/theme/componentSizes.js +1 -1
  122. package/lib/commonjs/theme/index.js +1 -1
  123. package/lib/commonjs/theme/merge.js +1 -1
  124. package/lib/commonjs/theme/scale.js +1 -1
  125. package/lib/commonjs/theme/textStyle.js +1 -1
  126. package/lib/commonjs/theme/tokens.generated.js +1 -0
  127. package/lib/commonjs/theme/tokens.js +1 -1
  128. package/lib/commonjs/utils/color.js +1 -1
  129. package/lib/module/canvasKit/index.js +1 -1
  130. package/lib/module/canvasKit/meta.js +1 -0
  131. package/lib/module/components/Accordion/Accordion.js +1 -1
  132. package/lib/module/components/AmountSlider/AmountSlider.js +1 -1
  133. package/lib/module/components/AnimatePresence/AnimatePresence.js +1 -1
  134. package/lib/module/components/AppBar/AppBar.js +1 -1
  135. package/lib/module/components/AppIcon/AppIcon.js +1 -1
  136. package/lib/module/components/AsyncBlock/AsyncBlock.js +1 -1
  137. package/lib/module/components/AuthedImage/AuthedImage.js +1 -1
  138. package/lib/module/components/Autocomplete/Autocomplete.js +1 -1
  139. package/lib/module/components/Avatar/Avatar.js +1 -1
  140. package/lib/module/components/Badge/Badge.js +1 -1
  141. package/lib/module/components/Banner/Banner.js +1 -1
  142. package/lib/module/components/BarChart/BarChart.js +1 -1
  143. package/lib/module/components/BottomNavigation/BottomNavigation.js +1 -1
  144. package/lib/module/components/BottomSheet/BottomSheet.js +1 -1
  145. package/lib/module/components/Box/Box.js +1 -1
  146. package/lib/module/components/Button/Button.js +1 -1
  147. package/lib/module/components/Calendar/Calendar.js +1 -1
  148. package/lib/module/components/Calendar/CalendarDay.js +1 -1
  149. package/lib/module/components/Calendar/calendarStyles.js +1 -1
  150. package/lib/module/components/Card/Card.js +1 -1
  151. package/lib/module/components/Carousel/Carousel.js +1 -1
  152. package/lib/module/components/Checkbox/Checkbox.js +1 -1
  153. package/lib/module/components/Chip/Chip.js +1 -1
  154. package/lib/module/components/ChoiceGroup/ChoiceGroup.js +1 -1
  155. package/lib/module/components/Composer/Composer.js +1 -1
  156. package/lib/module/components/Confetti/Confetti.js +1 -1
  157. package/lib/module/components/DatePicker/DatePicker.js +1 -1
  158. package/lib/module/components/DateRangePicker/DateRangePicker.js +1 -1
  159. package/lib/module/components/DateSeparator/DateSeparator.js +1 -1
  160. package/lib/module/components/Descriptions/Descriptions.js +1 -1
  161. package/lib/module/components/Dialog/Dialog.js +1 -1
  162. package/lib/module/components/Divider/Divider.js +1 -1
  163. package/lib/module/components/Drawer/Drawer.js +1 -1
  164. package/lib/module/components/EmptyState/EmptyState.js +1 -1
  165. package/lib/module/components/ErrorBoundary/ErrorBoundary.js +1 -1
  166. package/lib/module/components/FieldBase/Chevron.js +1 -1
  167. package/lib/module/components/FieldBase/ChoiceText.js +1 -1
  168. package/lib/module/components/FieldBase/FieldBase.js +1 -1
  169. package/lib/module/components/FieldBase/useFloatingLabel.js +1 -1
  170. package/lib/module/components/FilePicker/FilePicker.js +1 -1
  171. package/lib/module/components/FileViewer/FileViewer.js +1 -1
  172. package/lib/module/components/FilterChipRow/FilterChipRow.js +1 -1
  173. package/lib/module/components/FloatingActionButton/FloatingActionButton.js +1 -1
  174. package/lib/module/components/FormField/FormField.js +1 -1
  175. package/lib/module/components/IconBadge/IconBadge.js +1 -1
  176. package/lib/module/components/IconButton/IconButton.js +1 -1
  177. package/lib/module/components/ImageGallery/ImageGallery.js +1 -1
  178. package/lib/module/components/InlineSelect/InlineSelect.js +1 -1
  179. package/lib/module/components/Input/Input.js +1 -1
  180. package/lib/module/components/KeyboardAwareScrollView/KeyboardAwareScrollView.js +1 -1
  181. package/lib/module/components/KeyboardToolbar/KeyboardToolbar.js +1 -1
  182. package/lib/module/components/ListItem/ListItem.js +1 -1
  183. package/lib/module/components/LoaderOverlay/LoaderOverlay.js +1 -1
  184. package/lib/module/components/Markdown/Markdown.js +1 -1
  185. package/lib/module/components/Menu/MenuSurface.js +1 -1
  186. package/lib/module/components/MessageBubble/MessageBubble.js +1 -1
  187. package/lib/module/components/MessageList/MessageList.js +1 -1
  188. package/lib/module/components/Modal/Modal.js +1 -1
  189. package/lib/module/components/Notation/Notation.js +1 -1
  190. package/lib/module/components/NumberInput/NumberInput.js +1 -1
  191. package/lib/module/components/OTPInput/OTPInput.js +1 -1
  192. package/lib/module/components/OnboardingPager/OnboardingPager.js +1 -1
  193. package/lib/module/components/OptionSheet/OptionSheet.js +1 -1
  194. package/lib/module/components/PaymentResult/PaymentResult.js +1 -1
  195. package/lib/module/components/PermissionPrompt/PermissionPrompt.js +1 -1
  196. package/lib/module/components/PhoneNumberInput/PhoneNumberInput.js +1 -1
  197. package/lib/module/components/PickerTrigger/PickerTrigger.js +1 -1
  198. package/lib/module/components/ProfileCompletion/ProfileCompletion.js +1 -1
  199. package/lib/module/components/ProfilePicker/ProfilePicker.js +1 -1
  200. package/lib/module/components/ProgressBar/ProgressBar.js +1 -1
  201. package/lib/module/components/ProgressRing/ProgressRing.js +1 -1
  202. package/lib/module/components/Radio/Radio.js +1 -1
  203. package/lib/module/components/Radio/RadioDot.js +1 -1
  204. package/lib/module/components/Rating/Rating.js +1 -1
  205. package/lib/module/components/Repeater/Repeater.js +1 -1
  206. package/lib/module/components/RichTextEditor/RichTextEditor.js +1 -1
  207. package/lib/module/components/ScannerOverlay/ScannerOverlay.js +1 -1
  208. package/lib/module/components/Screen/Screen.js +1 -1
  209. package/lib/module/components/SearchBar/SearchBar.js +1 -1
  210. package/lib/module/components/SearchBar/SearchPanel.js +1 -1
  211. package/lib/module/components/SectionHeader/SectionHeader.js +1 -1
  212. package/lib/module/components/SegmentedControl/SegmentedControl.js +1 -1
  213. package/lib/module/components/Select/Select.js +1 -1
  214. package/lib/module/components/SignaturePad/SignaturePad.js +1 -1
  215. package/lib/module/components/Skeleton/Skeleton.js +1 -1
  216. package/lib/module/components/Skeleton/SkeletonContent.js +1 -1
  217. package/lib/module/components/SlideToConfirm/SlideToConfirm.js +1 -1
  218. package/lib/module/components/Slider/Slider.js +1 -1
  219. package/lib/module/components/Slider/valueText.js +1 -1
  220. package/lib/module/components/SliderField/SliderField.js +1 -1
  221. package/lib/module/components/Sparkline/Sparkline.js +1 -1
  222. package/lib/module/components/Spinner/Spinner.js +1 -1
  223. package/lib/module/components/StatTile/StatTile.js +1 -1
  224. package/lib/module/components/StatusBadge/StatusBadge.js +1 -1
  225. package/lib/module/components/Stepper/Stepper.js +1 -1
  226. package/lib/module/components/Swipeable/Swipeable.js +1 -1
  227. package/lib/module/components/Switch/Switch.js +1 -1
  228. package/lib/module/components/Tabs/Tabs.js +1 -1
  229. package/lib/module/components/TagInput/TagInput.js +1 -1
  230. package/lib/module/components/Text/Text.js +1 -1
  231. package/lib/module/components/TimePicker/TimePicker.js +1 -1
  232. package/lib/module/components/Timeline/Timeline.js +1 -1
  233. package/lib/module/components/Toast/Toast.js +1 -1
  234. package/lib/module/components/Toast/ToastProvider.js +1 -1
  235. package/lib/module/components/Tooltip/RichTooltipBody.js +1 -1
  236. package/lib/module/components/Tooltip/Tooltip.js +1 -1
  237. package/lib/module/components/Tour/Tour.js +1 -1
  238. package/lib/module/components/TypingIndicator/TypingIndicator.js +1 -1
  239. package/lib/module/components/WheelPicker/Wheel.js +1 -1
  240. package/lib/module/components/WheelPicker/WheelPicker.js +1 -1
  241. package/lib/module/hooks/useDragToDismiss.js +1 -1
  242. package/lib/module/hooks/usePressAnimation.js +1 -1
  243. package/lib/module/hooks/useRefreshControl.js +1 -1
  244. package/lib/module/index.js +1 -1
  245. package/lib/module/initUI.js +1 -1
  246. package/lib/module/network/NetworkStatusBanner.js +1 -1
  247. package/lib/module/theme/ThemeContext.js +1 -1
  248. package/lib/module/theme/componentSizes.js +1 -1
  249. package/lib/module/theme/index.js +1 -1
  250. package/lib/module/theme/merge.js +1 -1
  251. package/lib/module/theme/scale.js +1 -1
  252. package/lib/module/theme/textStyle.js +1 -1
  253. package/lib/module/theme/tokens.generated.js +1 -0
  254. package/lib/module/theme/tokens.js +1 -1
  255. package/lib/module/utils/color.js +1 -1
  256. package/lib/typescript/commonjs/canvasKit/meta.d.ts +32 -0
  257. package/lib/typescript/commonjs/components/AmountSlider/AmountSlider.d.ts +1 -1
  258. package/lib/typescript/commonjs/components/AnimatePresence/AnimatePresence.d.ts +1 -1
  259. package/lib/typescript/commonjs/components/AppBar/AppBar.d.ts +4 -4
  260. package/lib/typescript/commonjs/components/AppIcon/AppIcon.d.ts +1 -1
  261. package/lib/typescript/commonjs/components/AppIcon/defaultIcons.d.ts +1 -1
  262. package/lib/typescript/commonjs/components/Avatar/Avatar.d.ts +4 -4
  263. package/lib/typescript/commonjs/components/Badge/Badge.d.ts +1 -1
  264. package/lib/typescript/commonjs/components/Banner/Banner.d.ts +1 -1
  265. package/lib/typescript/commonjs/components/BarChart/BarChart.d.ts +1 -1
  266. package/lib/typescript/commonjs/components/BottomNavigation/BottomNavigation.d.ts +8 -10
  267. package/lib/typescript/commonjs/components/BottomSheet/BottomSheet.d.ts +2 -2
  268. package/lib/typescript/commonjs/components/Box/Box.d.ts +21 -21
  269. package/lib/typescript/commonjs/components/Button/Button.d.ts +3 -3
  270. package/lib/typescript/commonjs/components/Calendar/Calendar.d.ts +1 -1
  271. package/lib/typescript/commonjs/components/Calendar/calendarStyles.d.ts +9 -9
  272. package/lib/typescript/commonjs/components/Card/Card.d.ts +7 -6
  273. package/lib/typescript/commonjs/components/Checkbox/Checkbox.d.ts +1 -1
  274. package/lib/typescript/commonjs/components/Chip/Chip.d.ts +1 -1
  275. package/lib/typescript/commonjs/components/ChoiceGroup/ChoiceGroup.d.ts +1 -1
  276. package/lib/typescript/commonjs/components/Dialog/Dialog.d.ts +2 -2
  277. package/lib/typescript/commonjs/components/FieldBase/Chevron.d.ts +1 -1
  278. package/lib/typescript/commonjs/components/FieldBase/FieldBase.d.ts +32 -33
  279. package/lib/typescript/commonjs/components/FieldBase/useFloatingLabel.d.ts +2 -3
  280. package/lib/typescript/commonjs/components/FloatingActionButton/FloatingActionButton.d.ts +2 -2
  281. package/lib/typescript/commonjs/components/FormField/FormField.d.ts +2 -3
  282. package/lib/typescript/commonjs/components/IconBadge/IconBadge.d.ts +1 -1
  283. package/lib/typescript/commonjs/components/IconButton/IconButton.d.ts +2 -2
  284. package/lib/typescript/commonjs/components/InlineSelect/InlineSelect.d.ts +2 -3
  285. package/lib/typescript/commonjs/components/Input/Input.d.ts +2 -2
  286. package/lib/typescript/commonjs/components/Notation/Notation.d.ts +1 -1
  287. package/lib/typescript/commonjs/components/OptionSheet/OptionSheet.d.ts +2 -2
  288. package/lib/typescript/commonjs/components/PickerTrigger/PickerTrigger.d.ts +2 -3
  289. package/lib/typescript/commonjs/components/ProfileCompletion/ProfileCompletion.d.ts +3 -4
  290. package/lib/typescript/commonjs/components/ProfilePicker/ProfilePicker.d.ts +5 -6
  291. package/lib/typescript/commonjs/components/ProgressBar/ProgressBar.d.ts +1 -1
  292. package/lib/typescript/commonjs/components/ProgressRing/ProgressRing.d.ts +6 -7
  293. package/lib/typescript/commonjs/components/Radio/Radio.d.ts +1 -1
  294. package/lib/typescript/commonjs/components/SearchBar/SearchBar.d.ts +1 -1
  295. package/lib/typescript/commonjs/components/SegmentedControl/SegmentedControl.d.ts +3 -4
  296. package/lib/typescript/commonjs/components/Select/Select.d.ts +5 -5
  297. package/lib/typescript/commonjs/components/Skeleton/Skeleton.d.ts +2 -2
  298. package/lib/typescript/commonjs/components/SlideToConfirm/SlideToConfirm.d.ts +1 -1
  299. package/lib/typescript/commonjs/components/Slider/Slider.d.ts +6 -7
  300. package/lib/typescript/commonjs/components/Slider/valueText.d.ts +1 -1
  301. package/lib/typescript/commonjs/components/Sparkline/Sparkline.d.ts +1 -1
  302. package/lib/typescript/commonjs/components/StatusBadge/StatusBadge.d.ts +2 -3
  303. package/lib/typescript/commonjs/components/Swipeable/Swipeable.d.ts +2 -2
  304. package/lib/typescript/commonjs/components/Switch/Switch.d.ts +1 -1
  305. package/lib/typescript/commonjs/components/Tabs/Tabs.d.ts +6 -7
  306. package/lib/typescript/commonjs/components/Text/Text.d.ts +6 -7
  307. package/lib/typescript/commonjs/components/Timeline/Timeline.d.ts +1 -1
  308. package/lib/typescript/commonjs/components/Toast/Toast.d.ts +1 -1
  309. package/lib/typescript/commonjs/components/Toast/ToastProvider.d.ts +2 -2
  310. package/lib/typescript/commonjs/components/Tour/Tour.d.ts +2 -2
  311. package/lib/typescript/commonjs/hooks/usePresenceMotion.d.ts +2 -2
  312. package/lib/typescript/commonjs/index.d.ts +2 -2
  313. package/lib/typescript/commonjs/initUI.d.ts +3 -3
  314. package/lib/typescript/commonjs/theme/ThemeContext.d.ts +5 -3
  315. package/lib/typescript/commonjs/theme/componentSizes.d.ts +40 -18
  316. package/lib/typescript/commonjs/theme/index.d.ts +15 -17
  317. package/lib/typescript/commonjs/theme/merge.d.ts +15 -2
  318. package/lib/typescript/commonjs/theme/scale.d.ts +6 -4
  319. package/lib/typescript/commonjs/theme/textStyle.d.ts +4 -17
  320. package/lib/typescript/commonjs/theme/tokens.generated.d.ts +362 -0
  321. package/lib/typescript/commonjs/theme/types.d.ts +104 -347
  322. package/lib/typescript/commonjs/utils/color.d.ts +6 -2
  323. package/lib/typescript/commonjs/utils/shadows.d.ts +2 -2
  324. package/lib/typescript/module/canvasKit/meta.d.ts +32 -0
  325. package/lib/typescript/module/components/AmountSlider/AmountSlider.d.ts +1 -1
  326. package/lib/typescript/module/components/AnimatePresence/AnimatePresence.d.ts +1 -1
  327. package/lib/typescript/module/components/AppBar/AppBar.d.ts +4 -4
  328. package/lib/typescript/module/components/AppIcon/AppIcon.d.ts +1 -1
  329. package/lib/typescript/module/components/AppIcon/defaultIcons.d.ts +1 -1
  330. package/lib/typescript/module/components/Avatar/Avatar.d.ts +4 -4
  331. package/lib/typescript/module/components/Badge/Badge.d.ts +1 -1
  332. package/lib/typescript/module/components/Banner/Banner.d.ts +1 -1
  333. package/lib/typescript/module/components/BarChart/BarChart.d.ts +1 -1
  334. package/lib/typescript/module/components/BottomNavigation/BottomNavigation.d.ts +8 -10
  335. package/lib/typescript/module/components/BottomSheet/BottomSheet.d.ts +2 -2
  336. package/lib/typescript/module/components/Box/Box.d.ts +21 -21
  337. package/lib/typescript/module/components/Button/Button.d.ts +3 -3
  338. package/lib/typescript/module/components/Calendar/Calendar.d.ts +1 -1
  339. package/lib/typescript/module/components/Calendar/calendarStyles.d.ts +9 -9
  340. package/lib/typescript/module/components/Card/Card.d.ts +7 -6
  341. package/lib/typescript/module/components/Checkbox/Checkbox.d.ts +1 -1
  342. package/lib/typescript/module/components/Chip/Chip.d.ts +1 -1
  343. package/lib/typescript/module/components/ChoiceGroup/ChoiceGroup.d.ts +1 -1
  344. package/lib/typescript/module/components/Dialog/Dialog.d.ts +2 -2
  345. package/lib/typescript/module/components/FieldBase/Chevron.d.ts +1 -1
  346. package/lib/typescript/module/components/FieldBase/FieldBase.d.ts +32 -33
  347. package/lib/typescript/module/components/FieldBase/useFloatingLabel.d.ts +2 -3
  348. package/lib/typescript/module/components/FloatingActionButton/FloatingActionButton.d.ts +2 -2
  349. package/lib/typescript/module/components/FormField/FormField.d.ts +2 -3
  350. package/lib/typescript/module/components/IconBadge/IconBadge.d.ts +1 -1
  351. package/lib/typescript/module/components/IconButton/IconButton.d.ts +2 -2
  352. package/lib/typescript/module/components/InlineSelect/InlineSelect.d.ts +2 -3
  353. package/lib/typescript/module/components/Input/Input.d.ts +2 -2
  354. package/lib/typescript/module/components/Notation/Notation.d.ts +1 -1
  355. package/lib/typescript/module/components/OptionSheet/OptionSheet.d.ts +2 -2
  356. package/lib/typescript/module/components/PickerTrigger/PickerTrigger.d.ts +2 -3
  357. package/lib/typescript/module/components/ProfileCompletion/ProfileCompletion.d.ts +3 -4
  358. package/lib/typescript/module/components/ProfilePicker/ProfilePicker.d.ts +5 -6
  359. package/lib/typescript/module/components/ProgressBar/ProgressBar.d.ts +1 -1
  360. package/lib/typescript/module/components/ProgressRing/ProgressRing.d.ts +6 -7
  361. package/lib/typescript/module/components/Radio/Radio.d.ts +1 -1
  362. package/lib/typescript/module/components/SearchBar/SearchBar.d.ts +1 -1
  363. package/lib/typescript/module/components/SegmentedControl/SegmentedControl.d.ts +3 -4
  364. package/lib/typescript/module/components/Select/Select.d.ts +5 -5
  365. package/lib/typescript/module/components/Skeleton/Skeleton.d.ts +2 -2
  366. package/lib/typescript/module/components/SlideToConfirm/SlideToConfirm.d.ts +1 -1
  367. package/lib/typescript/module/components/Slider/Slider.d.ts +6 -7
  368. package/lib/typescript/module/components/Slider/valueText.d.ts +1 -1
  369. package/lib/typescript/module/components/Sparkline/Sparkline.d.ts +1 -1
  370. package/lib/typescript/module/components/StatusBadge/StatusBadge.d.ts +2 -3
  371. package/lib/typescript/module/components/Swipeable/Swipeable.d.ts +2 -2
  372. package/lib/typescript/module/components/Switch/Switch.d.ts +1 -1
  373. package/lib/typescript/module/components/Tabs/Tabs.d.ts +6 -7
  374. package/lib/typescript/module/components/Text/Text.d.ts +6 -7
  375. package/lib/typescript/module/components/Timeline/Timeline.d.ts +1 -1
  376. package/lib/typescript/module/components/Toast/Toast.d.ts +1 -1
  377. package/lib/typescript/module/components/Toast/ToastProvider.d.ts +2 -2
  378. package/lib/typescript/module/components/Tour/Tour.d.ts +2 -2
  379. package/lib/typescript/module/hooks/usePresenceMotion.d.ts +2 -2
  380. package/lib/typescript/module/index.d.ts +2 -2
  381. package/lib/typescript/module/initUI.d.ts +3 -3
  382. package/lib/typescript/module/theme/ThemeContext.d.ts +5 -3
  383. package/lib/typescript/module/theme/componentSizes.d.ts +40 -18
  384. package/lib/typescript/module/theme/index.d.ts +15 -17
  385. package/lib/typescript/module/theme/merge.d.ts +15 -2
  386. package/lib/typescript/module/theme/scale.d.ts +6 -4
  387. package/lib/typescript/module/theme/textStyle.d.ts +4 -17
  388. package/lib/typescript/module/theme/tokens.generated.d.ts +362 -0
  389. package/lib/typescript/module/theme/types.d.ts +104 -347
  390. package/lib/typescript/module/utils/color.d.ts +6 -2
  391. package/lib/typescript/module/utils/shadows.d.ts +2 -2
  392. package/package.json +14 -15
  393. package/lib/commonjs/theme/componentTokens.js +0 -1
  394. package/lib/commonjs/theme/retiredThemeKeys.js +0 -1
  395. package/lib/module/theme/componentTokens.js +0 -1
  396. package/lib/module/theme/retiredThemeKeys.js +0 -1
  397. package/lib/typescript/commonjs/theme/componentTokens.d.ts +0 -762
  398. package/lib/typescript/commonjs/theme/retiredThemeKeys.d.ts +0 -22
  399. package/lib/typescript/module/theme/componentTokens.d.ts +0 -762
  400. package/lib/typescript/module/theme/retiredThemeKeys.d.ts +0 -22
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.FilterChipRow=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../Chip/index.js"),_jsxRuntime=require("react/jsx-runtime");const FilterChipRowItem=(0,_react.memo)(({itemKey:e,label:t,count:r,disabled:a,selected:i,size:n,variant:c,tone:l,haptic:o,onSelect:s,onItemLayout:u})=>{const d=(0,_react.useCallback)(()=>s(e),[s,e]),p=(0,_react.useCallback)(t=>u(e,t.nativeEvent.layout),[u,e]);return(0,_jsxRuntime.jsx)(_reactNative.View,{onLayout:p,collapsable:!1,children:(0,_jsxRuntime.jsx)(_index3.Chip,{label:t,count:r,selected:i,selectionMode:"radio",disabled:a,size:n,variant:c,tone:l,haptic:!i&&o,onPress:d})})});FilterChipRowItem.displayName="FilterChipRowItem";const FilterChipRow=exports.FilterChipRow=(0,_react.forwardRef)((e,t)=>{const{items:r,value:a,onChange:i,bleed:n=0,size:c,variant:l,tone:o,haptic:s,accessibilityLabel:u,style:d,contentContainerStyle:p,testID:h}=e,_=(0,_index2.useTheme)(),x=(0,_index.useReducedMotion)(),m=(0,_react.useRef)(null),v=(0,_react.useRef)({viewport:0,content:0,chips:{},revealed:null}),w=(0,_react.useRef)(a),b=(0,_react.useRef)(i);(0,_react.useEffect)(()=>{b.current=i},[i]);const y=(0,_react.useCallback)((e,t)=>{const r=v.current,a=r.chips[e];if(!a||0===r.viewport||0===r.content)return;const i=a.x+a.width/2-r.viewport/2,n=Math.min(Math.max(i,0),Math.max(r.content-r.viewport,0));m.current?.scrollTo({x:n,animated:t&&!x}),r.revealed=e},[x]),C=(0,_react.useCallback)(()=>{v.current.revealed!==w.current&&y(w.current,!1)},[y]);(0,_react.useEffect)(()=>{w.current=a,y(a,!0)},[a,y]);const R=(0,_react.useCallback)(e=>{v.current.viewport=e.nativeEvent.layout.width,C()},[C]),f=(0,_react.useCallback)(e=>{v.current.content=e,C()},[C]),j=(0,_react.useCallback)((e,t)=>{v.current.chips[e]={x:t.x,width:t.width},C()},[C]),k=(0,_react.useCallback)(e=>{e!==w.current?b.current(e):y(e,!0)},[y]),F=(0,_react.useMemo)(()=>[styles.row,{paddingHorizontal:n,columnGap:_.spacing.xs},p],[n,_.spacing.xs,p]);return(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,accessibilityRole:"radiogroup",accessibilityLabel:u,testID:h,style:[n>0?{marginHorizontal:-n}:null,d],children:(0,_jsxRuntime.jsx)(_reactNative.ScrollView,{ref:m,horizontal:!0,showsHorizontalScrollIndicator:!1,keyboardShouldPersistTaps:"handled",contentContainerStyle:F,onLayout:R,onContentSizeChange:f,children:r.map(e=>(0,_jsxRuntime.jsx)(FilterChipRowItem,{itemKey:e.key,label:e.label,count:e.count,disabled:e.disabled,selected:e.key===a,size:c,variant:l,tone:o,haptic:s,onSelect:k,onItemLayout:j},e.key))})})});FilterChipRow.displayName="FilterChipRow";const styles=_reactNative.StyleSheet.create({row:{alignItems:"center"}});var _default=exports.default=FilterChipRow;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.FilterChipRow=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../Chip/index.js"),_jsxRuntime=require("react/jsx-runtime");const FilterChipRowItem=(0,_react.memo)(({itemKey:e,label:t,count:r,disabled:a,selected:i,size:n,variant:c,tone:l,haptic:o,onSelect:s,onItemLayout:u})=>{const d=(0,_react.useCallback)(()=>s(e),[s,e]),p=(0,_react.useCallback)(t=>u(e,t.nativeEvent.layout),[u,e]);return(0,_jsxRuntime.jsx)(_reactNative.View,{onLayout:p,collapsable:!1,children:(0,_jsxRuntime.jsx)(_index3.Chip,{label:t,count:r,selected:i,selectionMode:"radio",disabled:a,size:n,variant:c,tone:l,haptic:!i&&o,onPress:d})})});FilterChipRowItem.displayName="FilterChipRowItem";const FilterChipRow=exports.FilterChipRow=(0,_react.forwardRef)((e,t)=>{const{items:r,value:a,onChange:i,bleed:n=0,size:c,variant:l,tone:o,haptic:s,accessibilityLabel:u,style:d,contentContainerStyle:p,testID:h}=e,_=(0,_index2.useTheme)(),x=(0,_index.useReducedMotion)(),m=(0,_react.useRef)(null),v=(0,_react.useRef)({viewport:0,content:0,chips:{},revealed:null}),w=(0,_react.useRef)(a),b=(0,_react.useRef)(i);(0,_react.useEffect)(()=>{b.current=i},[i]);const y=(0,_react.useCallback)((e,t)=>{const r=v.current,a=r.chips[e];if(!a||0===r.viewport||0===r.content)return;const i=a.x+a.width/2-r.viewport/2,n=Math.min(Math.max(i,0),Math.max(r.content-r.viewport,0));m.current?.scrollTo({x:n,animated:t&&!x}),r.revealed=e},[x]),C=(0,_react.useCallback)(()=>{v.current.revealed!==w.current&&y(w.current,!1)},[y]);(0,_react.useEffect)(()=>{w.current=a,y(a,!0)},[a,y]);const R=(0,_react.useCallback)(e=>{v.current.viewport=e.nativeEvent.layout.width,C()},[C]),f=(0,_react.useCallback)(e=>{v.current.content=e,C()},[C]),j=(0,_react.useCallback)((e,t)=>{v.current.chips[e]={x:t.x,width:t.width},C()},[C]),k=(0,_react.useCallback)(e=>{e!==w.current?b.current(e):y(e,!0)},[y]),F=(0,_react.useMemo)(()=>[styles.row,{paddingHorizontal:n,columnGap:_.space.xs},p],[n,_.space.xs,p]);return(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,accessibilityRole:"radiogroup",accessibilityLabel:u,testID:h,style:[n>0?{marginHorizontal:-n}:null,d],children:(0,_jsxRuntime.jsx)(_reactNative.ScrollView,{ref:m,horizontal:!0,showsHorizontalScrollIndicator:!1,keyboardShouldPersistTaps:"handled",contentContainerStyle:F,onLayout:R,onContentSizeChange:f,children:r.map(e=>(0,_jsxRuntime.jsx)(FilterChipRowItem,{itemKey:e.key,label:e.label,count:e.count,disabled:e.disabled,selected:e.key===a,size:c,variant:l,tone:o,haptic:s,onSelect:k,onItemLayout:j},e.key))})})});FilterChipRow.displayName="FilterChipRow";const styles=_reactNative.StyleSheet.create({row:{alignItems:"center"}});var _default=exports.default=FilterChipRow;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.FloatingActionButtonGroup=exports.FloatingActionButton=void 0;var cache,_mobileCore=require("@webority/mobile-core"),_react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated")),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var n,r,i=Object.defineProperty,a={__proto__:null,default:e};if(Object(e)!==e)return a;if(cache||"function"!=typeof WeakMap||(cache=new WeakMap),cache){if(cache.has(e))return cache.get(e);cache.set(e,a)}for(r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((n=i&&Object.getOwnPropertyDescriptor(e,r))&&(n.get||n.set)?i(a,r,n):a[r]=e[r]);return a}const toneBackground=(e,t)=>{switch(t){case"success":return e.colors.success;case"warning":return e.colors.warning;case"error":return e.colors.error;case"neutral":return e.colors.background.tertiary;default:return e.colors.primary}},pressedTintFor=(e,t)=>"neutral"===t?e.colors.surface.pressed:_color.ACCENT_PRESSED_TINT,toneForeground=(e,t)=>{if("neutral"===t)return e.colors.text.primary;switch(t){case"success":return e.colors.onSuccess;case"warning":return e.colors.onWarning;case"error":return e.colors.onError;default:return e.colors.onPrimary}},FloatingActionButton=exports.FloatingActionButton=(0,_react.forwardRef)((e,t)=>{const{icon:n,onPress:r,label:i,collapsed:a=!1,size:o="md",tone:s="primary",position:c,bottomOffset:l,disabled:u=!1,hideOnScroll:d=!1,isScrolling:m=!1,accessibilityLabel:_,accessibilityHint:g,haptic:p,style:f,containerStyle:b,labelStyle:h,testID:y}=e,v=(0,_index.useTheme)(),x=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),R=(0,_react.useMemo)(()=>(0,_index.resolveFloatingActionButtonSize)(v,o),[v,o]),j=(0,_react.useMemo)(()=>buildStyles(v),[v]),{scale:w,opacity:A,pressIn:N,pressOut:S}=(0,_usePressAnimation.usePressAnimation)({enabled:!u}),C=(0,_usePresenceMotion.usePresenceMotion)(),E=v.components.floatingActionButton,P=(0,_index.spaceOf)(v,E.edgeOffset,"components.floatingActionButton.edgeOffset"),O=(0,_index.spaceOf)(v,E.bottomOffset,"components.floatingActionButton.bottomOffset"),k=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current,I=C.duration("normal");(0,_react.useEffect)(()=>{if(!d)return void(0,_index.setNativeValue)(k,1);const e=_reactNative.Animated.timing(k,{toValue:m?0:1,duration:I,easing:_reactNative.Easing.bezier(...v.motion.easing.standard),useNativeDriver:!0});return e.start(),()=>e.stop()},[d,m,k,I,v.motion.easing.standard]);const B=R.diameter+(l??O)+x.bottom+P,F=k.interpolate({inputRange:[0,1],outputRange:C.range(B,0)}),V=(0,_react.useMemo)(()=>_reactNative.Animated.multiply(k,A),[k,A]),M=n,D="string"==typeof i&&i.length>0,T=D&&a,L=C.reduced,q=v.spacing.sm,z=R.labelPaddingX,G=v.motion.duration.fast,$=v.motion.easing.standard,H=(0,_reactNativeReanimated.useSharedValue)(T?1:0),[W,U]=(0,_react.useState)(null);(0,_react.useEffect)(()=>{const e=T?1:0;return H.value=L?e:(0,_reactNativeReanimated.withTiming)(e,{duration:G,easing:_reactNativeReanimated.Easing.bezier(...$)}),()=>(0,_reactNativeReanimated.cancelAnimation)(H)},[T,L,H,G,$]);const Y=(0,_react.useCallback)(e=>{const t=Math.ceil(e);U(e=>e===t?e:t)},[]),X=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({paddingHorizontal:z*(1-H.value)})),Q=(0,_reactNativeReanimated.useAnimatedStyle)(()=>{const e=Math.max(0,1-2*H.value);return null===W?H.value>=1?{opacity:e,width:0}:{opacity:e}:{opacity:e,width:(W+q)*(1-H.value)}}),J=u?v.colors.surface.disabled:toneBackground(v,s),K=u?v.colors.text.disabled:toneForeground(v,s),Z=(0,_react.useMemo)(()=>{if(!c)return null;const e=(l??O)+x.bottom;switch(c){case"bottomLeft":return{position:"absolute",bottom:e,left:P};case"bottomCenter":return{position:"absolute",bottom:e,alignSelf:"center"};default:return{position:"absolute",bottom:e,right:P}}},[c,l,x.bottom,O,P]);return(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[Z,{transform:[{translateY:F},{scale:w}],opacity:V},b,f],pointerEvents:d&&m?"none":"auto",children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:t,onPress:e=>{if(u)return;const t=(0,_hapticUtils.resolveHaptic)(p,"impactLight");t&&(0,_hapticUtils.triggerHaptic)(t),r()},onPressIn:N,onPressOut:S,disabled:u,accessibilityRole:"button",accessibilityLabel:_,accessibilityHint:g,accessibilityState:{disabled:u},"aria-disabled":u,testID:y,style:[j.base,D?{height:R.diameter,minWidth:R.diameter,borderRadius:R.diameter/2,..._corners.smoothCorners}:{width:R.diameter,height:R.diameter,borderRadius:R.diameter/2,..._corners.smoothCorners},v.shadows.lg,{backgroundColor:J,opacity:u?.55:1}],children:({pressed:e})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[e&&!u?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:"fab-pressed",style:[j.pressedTint,{backgroundColor:pressedTintFor(v,s),borderRadius:R.diameter/2,..._corners.smoothCorners}]}):null,D?(0,_jsxRuntime.jsxs)(_reactNativeReanimated.default.View,{style:[j.extendedRow,X],children:[M,(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[j.labelClip,Q],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{onLayout:e=>Y(e.nativeEvent.layout.width),style:[j.label,{color:K,fontSize:R.text,fontWeight:v.typography.fontWeight.semibold,marginLeft:q},h],numberOfLines:1,children:i})})]}):M]})})})});FloatingActionButton.displayName="FloatingActionButton";const buildStyles=e=>_reactNative.StyleSheet.create({base:{flexDirection:"row",alignItems:"center",justifyContent:"center",overflow:"hidden"},pressedTint:{position:"absolute",top:0,right:0,bottom:0,left:0},extendedRow:{flexDirection:"row",alignItems:"center"},labelClip:{flexDirection:"row",overflow:"hidden"},label:{includeFontPadding:!1,flexShrink:0}}),FAB_GROUP_MIN_ACTIONS=2,FAB_GROUP_MAX_ACTIONS=6,FAB_GROUP_RANGE="2 to 6",describeActionProblem=e=>e.length<2?`was given ${e.length} action(s); a menu holds 2 to 6.`:e.length>6?`was given ${e.length} actions; a menu holds 2 to 6, so only the first 6 are drawn.`:e.some(e=>"string"!=typeof e.label||""===e.label.trim())?"has an action without a visible `label`; every menu action needs one.":"",FloatingActionButtonGroup=e=>{const{primaryIcon:t,primaryActiveIcon:n,actions:r,open:i,defaultOpen:a=!1,onOpenChange:o,position:s="bottomRight",bottomOffset:c,size:l="md",accessibilityLabel:u="Quick actions",haptic:d,hideOnScroll:m=!1,isScrolling:_=!1,containerStyle:g,secondaryActionStyle:p,labelPillStyle:f,labelStyle:b,testID:h}=e,y=(0,_index.useTheme)(),v=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),x=(0,_react.useMemo)(()=>(0,_index.resolveFloatingActionButtonSize)(y,l),[y,l]),R=(0,_react.useMemo)(()=>buildGroupStyles(y),[y]),j=(0,_usePresenceMotion.usePresenceMotion)(),w=j.duration("normal"),A=y.components.floatingActionButton,N=(0,_index.spaceOf)(y,A.edgeOffset,"components.floatingActionButton.edgeOffset"),S=(0,_index.spaceOf)(y,A.bottomOffset,"components.floatingActionButton.bottomOffset"),C=(0,_index.spaceOf)(y,A.secondaryGap,"components.floatingActionButton.secondaryGap"),E=A.staggerMs,P=(0,_react.useMemo)(()=>r.slice(0,6),[r]),O=P.length,k=(0,_react.useMemo)(()=>P.map((e,t)=>({action:e,index:t})).reverse(),[P]),I=__DEV__?describeActionProblem(r):"";(0,_react.useEffect)(()=>{__DEV__&&I&&_mobileCore.Logger.warn(`[@webority/mobile-ui] FloatingActionButtonGroup ${I}`)},[I]);const B="boolean"==typeof i,[F,V]=(0,_react.useState)(a),M=B?i:F,D=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current;(0,_react.useEffect)(()=>{if(!m)return void(0,_index.setNativeValue)(D,1);const e=_reactNative.Animated.timing(D,{toValue:_?0:1,duration:w,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0});return e.start(),()=>e.stop()},[m,_,D,w,y.motion.easing.standard]);const T=m&&_;(0,_react.useEffect)(()=>{T&&M&&(B||V(!1),o?.(!1))},[T,M,B,o]);const L=x.diameter+(c??S)+v.bottom+N,q=D.interpolate({inputRange:[0,1],outputRange:j.range(L,0)}),z=D,G=(0,_react.useRef)((0,_index.createAnimatedValue)(M?1:0)).current,$=(0,_react.useRef)([]),[H,W]=(0,_react.useState)(0);(0,_react.useEffect)(()=>{const e=$.current;if(e.length!==O){if(e.length<O){const t=e.slice();for(let n=e.length;n<O;n+=1)t.push(new _reactNative.Animated.Value(M?1:0));$.current=t}else $.current=e.slice(0,O);W(e=>e+1)}},[O]),(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(G,{toValue:M?1:0,duration:w,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0});e.start();const t=$.current.map(e=>_reactNative.Animated.timing(e,{toValue:M?1:0,duration:w,easing:_reactNative.Easing.bezier(...y.motion.easing.standard),useNativeDriver:!0})),n=M?t:[...t].reverse(),r=_reactNative.Animated.stagger(E,n);return r.start(),()=>{e.stop(),r.stop()}},[M,G,w,y.motion.easing.standard,O,H,E]);const U=(0,_react.useCallback)(e=>{const t=(0,_hapticUtils.resolveHaptic)(d,"impactLight");t&&(0,_hapticUtils.triggerHaptic)(t),B||V(e),o?.(e)},[B,o,d]),Y=(0,_react.useRef)(null),X=(0,_react.useRef)(M),Q=(0,_react.useRef)(!1);(0,_react.useEffect)(()=>{if(X.current===M)return;X.current=M;const e=Q.current;if(Q.current=!1,T||e)return;const t=Y.current;t&&("web"===_reactNative.Platform.OS?t.focus?.():_reactNative.AccessibilityInfo.sendAccessibilityEvent(t,"focus"));const n=1===O?"action":"actions";(0,_announce.announce)(M?`${u}, expanded, ${O} ${n}`:`${u}, collapsed`)},[M,T,u,O]);const J=(0,_react.useCallback)(()=>{U(!M)},[M,U]),K=(0,_react.useCallback)(e=>{!1!==d&&(0,_hapticUtils.triggerHaptic)("selection"),Q.current=!0,e.onPress(),B||V(!1),o?.(!1)},[B,o,d]),Z=(0,_react.useCallback)(()=>{M&&U(!1)},[M,U]);(0,_react.useEffect)(()=>{if(!M)return;const e=_reactNative.BackHandler.addEventListener("hardwareBackPress",()=>(U(!1),!0));return()=>e.remove()},[M,U]),(0,_react.useEffect)(()=>{if(!M||"web"!==_reactNative.Platform.OS)return;const onKeyDown=e=>{"Escape"===e.key&&U(!1)};return window.addEventListener("keydown",onKeyDown),()=>window.removeEventListener("keydown",onKeyDown)},[M,U]);const ee=(0,_react.useMemo)(()=>{const e=(c??S)+v.bottom;switch(s){case"bottomLeft":return{position:"absolute",bottom:e,left:N,alignItems:"flex-start"};case"bottomCenter":return{position:"absolute",bottom:e,alignSelf:"center",alignItems:"center"};default:return{position:"absolute",bottom:e,right:N,alignItems:"flex-end"}}},[s,c,v.bottom,S,N]),slotOffset=e=>-(x.diameter+C)*(e+1),te=(0,_react.useMemo)(()=>{switch(s){case"bottomLeft":return{left:0,right:0,justifyContent:"flex-start"};case"bottomCenter":return{left:0,right:0,justifyContent:"center"};default:return{left:0,right:0,justifyContent:"flex-end"}}},[s]),ne=.78*x.diameter,re=(0,_react.useMemo)(()=>{const e=ne+y.spacing.sm;switch(s){case"bottomLeft":return{left:e,alignItems:"flex-start"};case"bottomCenter":return{right:x.diameter/2+ne/2+y.spacing.sm,alignItems:"flex-end"};default:return{right:e,alignItems:"flex-end"}}},[s,ne,x.diameter,y.spacing.sm]),ie=G.interpolate({inputRange:[0,1],outputRange:[0,.4]}),ae=G.interpolate(j.reduced?{inputRange:[0,.5,.5001,1],outputRange:["0deg","0deg","45deg","45deg"]}:{inputRange:[0,1],outputRange:["0deg","45deg"]});return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[M?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:M?"auto":"none",style:[_reactNative.StyleSheet.absoluteFill,{backgroundColor:y.colors.background.overlay,opacity:ie}],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:Z,accessibilityElementsHidden:!0,importantForAccessibility:"no",testID:h?`${h}-backdrop`:void 0})}):null,(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{pointerEvents:T?"none":"box-none",style:[ee,{transform:[{translateY:q}],opacity:z},g],accessibilityRole:"menu",testID:h,children:[k.map(({action:e,index:t})=>{const n=$.current[t];if(!n)return null;const r=n.interpolate({inputRange:[0,1],outputRange:j.range(0,slotOffset(t))}),i=n.interpolate({inputRange:[0,1],outputRange:j.range(.6,1)}),a=toneBackground(y,e.tone??"primary"),o=toneForeground(y,e.tone??"primary"),s=e.label?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[R.labelSlot,re],testID:h?`${h}-label-${e.key}`:void 0,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[R.labelPill,y.shadows.sm,{backgroundColor:y.colors.background.elevated,paddingHorizontal:y.spacing.sm,paddingVertical:y.spacing.xs,borderRadius:y.radius.sm,..._corners.smoothCorners},f],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[{color:y.colors.text.primary,fontSize:y.typography.fontSize.sm,fontWeight:y.typography.fontWeight.medium},b],numberOfLines:1,children:e.label})})}):null;return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{pointerEvents:M?"auto":"none",accessibilityElementsHidden:!M,importantForAccessibility:M?"auto":"no-hide-descendants","aria-hidden":!M,style:[R.secondaryRow,te,{position:"absolute",bottom:0,opacity:n,transform:[{translateY:r},{scale:i}]}],children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>K(e),focusable:M,accessibilityRole:"menuitem",accessibilityLabel:e.accessibilityLabel,style:[R.fabBase,y.shadows.md,{width:ne,height:ne,borderRadius:ne/2,..._corners.smoothCorners,backgroundColor:a},p],testID:h?`${h}-action-${e.key}`:void 0,children:({pressed:t})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[t?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:"fab-pressed",style:[R.pressedTint,{backgroundColor:pressedTintFor(y,e.tone??"primary"),borderRadius:ne/2,..._corners.smoothCorners}]}):null,_react.default.isValidElement(e.icon)?e.icon:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:o},children:String(e.icon??"")})]})}),s]},e.key)}),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:Y,onPress:J,accessibilityRole:"button",accessibilityLabel:u,accessibilityState:{expanded:M},"aria-expanded":M,style:[R.fabBase,y.shadows.lg,{width:x.diameter,height:x.diameter,borderRadius:x.diameter/2,..._corners.smoothCorners,backgroundColor:y.colors.primary}],testID:h?`${h}-primary`:void 0,children:({pressed:e})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[e?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:"fab-pressed",style:[R.pressedTint,{backgroundColor:_color.ACCENT_PRESSED_TINT,borderRadius:x.diameter/2,..._corners.smoothCorners}]}):null,(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:n?void 0:{transform:[{rotate:ae}]},children:M&&n?n:t})]})})]})]})};exports.FloatingActionButtonGroup=FloatingActionButtonGroup;const buildGroupStyles=e=>_reactNative.StyleSheet.create({fabBase:{flexDirection:"row",alignItems:"center",justifyContent:"center",overflow:"hidden"},pressedTint:{position:"absolute",top:0,right:0,bottom:0,left:0},secondaryRow:{flexDirection:"row",alignItems:"center"},labelSlot:{position:"absolute",top:0,bottom:0,justifyContent:"center"},labelPill:{alignSelf:"auto"}});var _default=exports.default=FloatingActionButton;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.FloatingActionButtonGroup=exports.FloatingActionButton=void 0;var cache,_mobileCore=require("@webority/mobile-core"),_react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated")),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var n,i,r=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(i in e)"default"!==i&&{}.hasOwnProperty.call(e,i)&&((n=r&&Object.getOwnPropertyDescriptor(e,i))&&(n.get||n.set)?r(a,i,n):a[i]=e[i]);return a}const toneBackground=(e,t)=>{switch(t){case"success":return e.colors.success;case"warning":return e.colors.warning;case"danger":return e.colors.danger;case"neutral":return e.colors["bg-muted"];default:return e.colors.primary}},pressedTintFor=(e,t)=>"neutral"===t?e.colors["surface-pressed"]:_color.ACCENT_PRESSED_TINT,toneForeground=(e,t)=>{if("neutral"===t)return e.colors["text-body"];switch(t){case"success":return e.colors["on-success"];case"warning":return e.colors["on-warning"];case"danger":return e.colors["on-danger"];default:return e.colors["on-primary"]}},FloatingActionButton=exports.FloatingActionButton=(0,_react.forwardRef)((e,t)=>{const{icon:n,onPress:i,label:r,collapsed:a=!1,size:o="md",tone:s="primary",position:c,bottomOffset:l,disabled:u=!1,hideOnScroll:d=!1,isScrolling:m=!1,accessibilityLabel:_,accessibilityHint:p,haptic:b,style:f,containerStyle:g,labelStyle:h,testID:v}=e,y=(0,_index.useTheme)(),x=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),R=(0,_react.useMemo)(()=>(0,_index.resolveFloatingActionButtonSize)(y,o),[y,o]),j=(0,_react.useMemo)(()=>buildStyles(y),[y]),{scale:w,opacity:N,pressIn:A,pressOut:S}=(0,_usePressAnimation.usePressAnimation)({enabled:!u}),C=(0,_usePresenceMotion.usePresenceMotion)(),E=y.space[y.components["floating-action-button"]["edge-offset"]],P=y.space[y.components["floating-action-button"]["bottom-offset"]],I=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current,k=C.duration("default");(0,_react.useEffect)(()=>{if(!d)return void(0,_index.setNativeValue)(I,1);const e=_reactNative.Animated.timing(I,{toValue:m?0:1,duration:k,easing:_reactNative.Easing.bezier(...y.motion.ease["in-out"]),useNativeDriver:!0});return e.start(),()=>e.stop()},[d,m,I,k,y.motion.ease["in-out"]]);const F=R.diameter+(l??P)+x.bottom+E,V=I.interpolate({inputRange:[0,1],outputRange:C.range(F,0)}),D=(0,_react.useMemo)(()=>_reactNative.Animated.multiply(I,N),[I,N]),M=n,B="string"==typeof r&&r.length>0,O=B&&a,T=C.reduced,L=y.space.sm,q=R["label-padding-x"],z=y.motion.duration.fast,$=y.motion.ease["in-out"],H=(0,_reactNativeReanimated.useSharedValue)(O?1:0),[G,U]=(0,_react.useState)(null);(0,_react.useEffect)(()=>{const e=O?1:0;return H.value=T?e:(0,_reactNativeReanimated.withTiming)(e,{duration:z,easing:_reactNativeReanimated.Easing.bezier(...$)}),()=>(0,_reactNativeReanimated.cancelAnimation)(H)},[O,T,H,z,$]);const W=(0,_react.useCallback)(e=>{const t=Math.ceil(e);U(e=>e===t?e:t)},[]),Y=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({paddingHorizontal:q*(1-H.value)})),Q=(0,_reactNativeReanimated.useAnimatedStyle)(()=>{const e=Math.max(0,1-2*H.value);return null===G?H.value>=1?{opacity:e,width:0}:{opacity:e}:{opacity:e,width:(G+L)*(1-H.value)}}),X=u?y.colors["surface-disabled"]:toneBackground(y,s),J=u?y.colors["text-disabled"]:toneForeground(y,s),K=(0,_react.useMemo)(()=>{if(!c)return null;const e=(l??P)+x.bottom;switch(c){case"bottomLeft":return{position:"absolute",bottom:e,left:E};case"bottomCenter":return{position:"absolute",bottom:e,alignSelf:"center"};default:return{position:"absolute",bottom:e,right:E}}},[c,l,x.bottom,P,E]);return(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[K,{transform:[{translateY:V},{scale:w}],opacity:D},g,f],pointerEvents:d&&m?"none":"auto",children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:t,onPress:e=>{if(u)return;const t=(0,_hapticUtils.resolveHaptic)(b,"impactLight");t&&(0,_hapticUtils.triggerHaptic)(t),i()},onPressIn:A,onPressOut:S,disabled:u,accessibilityRole:"button",accessibilityLabel:_,accessibilityHint:p,accessibilityState:{disabled:u},"aria-disabled":u,testID:v,style:[j.base,B?{height:R.diameter,minWidth:R.diameter,borderRadius:R.diameter/2,..._corners.smoothCorners}:{width:R.diameter,height:R.diameter,borderRadius:R.diameter/2,..._corners.smoothCorners},y.shadow.popover,{backgroundColor:X,opacity:u?.55:1}],children:({pressed:e})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[e&&!u?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:"fab-pressed",style:[j.pressedTint,{backgroundColor:pressedTintFor(y,s),borderRadius:R.diameter/2,..._corners.smoothCorners}]}):null,B?(0,_jsxRuntime.jsxs)(_reactNativeReanimated.default.View,{style:[j.extendedRow,Y],children:[M,(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[j.labelClip,Q],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{onLayout:e=>W(e.nativeEvent.layout.width),style:[j.label,{color:J,fontSize:R.text,fontWeight:y.weight.semibold,marginLeft:L},h],numberOfLines:1,children:r})})]}):M]})})})});FloatingActionButton.displayName="FloatingActionButton";const buildStyles=e=>_reactNative.StyleSheet.create({base:{flexDirection:"row",alignItems:"center",justifyContent:"center",overflow:"hidden"},pressedTint:{position:"absolute",top:0,right:0,bottom:0,left:0},extendedRow:{flexDirection:"row",alignItems:"center"},labelClip:{flexDirection:"row",overflow:"hidden"},label:{includeFontPadding:!1,flexShrink:0}}),FAB_GROUP_MIN_ACTIONS=2,FAB_GROUP_MAX_ACTIONS=6,FAB_GROUP_RANGE="2 to 6",describeActionProblem=e=>e.length<2?`was given ${e.length} action(s); a menu holds 2 to 6.`:e.length>6?`was given ${e.length} actions; a menu holds 2 to 6, so only the first 6 are drawn.`:e.some(e=>"string"!=typeof e.label||""===e.label.trim())?"has an action without a visible `label`; every menu action needs one.":"",FloatingActionButtonGroup=e=>{const{primaryIcon:t,primaryActiveIcon:n,actions:i,open:r,defaultOpen:a=!1,onOpenChange:o,position:s="bottomRight",bottomOffset:c,size:l="md",accessibilityLabel:u="Quick actions",haptic:d,hideOnScroll:m=!1,isScrolling:_=!1,containerStyle:p,secondaryActionStyle:b,labelPillStyle:f,labelStyle:g,testID:h}=e,v=(0,_index.useTheme)(),y=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),x=(0,_react.useMemo)(()=>(0,_index.resolveFloatingActionButtonSize)(v,l),[v,l]),R=(0,_react.useMemo)(()=>buildGroupStyles(v),[v]),j=(0,_usePresenceMotion.usePresenceMotion)(),w=j.duration("default"),N=v.space[v.components["floating-action-button"]["edge-offset"]],A=v.space[v.components["floating-action-button"]["bottom-offset"]],S=v.space[v.components["floating-action-button"]["secondary-gap"]],C=v.components["floating-action-button"]["stagger-ms"],E=(0,_react.useMemo)(()=>i.slice(0,6),[i]),P=E.length,I=(0,_react.useMemo)(()=>E.map((e,t)=>({action:e,index:t})).reverse(),[E]),k=__DEV__?describeActionProblem(i):"";(0,_react.useEffect)(()=>{__DEV__&&k&&_mobileCore.Logger.warn(`[@webority/mobile-ui] FloatingActionButtonGroup ${k}`)},[k]);const F="boolean"==typeof r,[V,D]=(0,_react.useState)(a),M=F?r:V,B=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current;(0,_react.useEffect)(()=>{if(!m)return void(0,_index.setNativeValue)(B,1);const e=_reactNative.Animated.timing(B,{toValue:_?0:1,duration:w,easing:_reactNative.Easing.bezier(...v.motion.ease["in-out"]),useNativeDriver:!0});return e.start(),()=>e.stop()},[m,_,B,w,v.motion.ease["in-out"]]);const O=m&&_;(0,_react.useEffect)(()=>{O&&M&&(F||D(!1),o?.(!1))},[O,M,F,o]);const T=x.diameter+(c??A)+y.bottom+N,L=B.interpolate({inputRange:[0,1],outputRange:j.range(T,0)}),q=B,z=(0,_react.useRef)((0,_index.createAnimatedValue)(M?1:0)).current,$=(0,_react.useRef)([]),[H,G]=(0,_react.useState)(0);(0,_react.useEffect)(()=>{const e=$.current;if(e.length!==P){if(e.length<P){const t=e.slice();for(let n=e.length;n<P;n+=1)t.push(new _reactNative.Animated.Value(M?1:0));$.current=t}else $.current=e.slice(0,P);G(e=>e+1)}},[P]),(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(z,{toValue:M?1:0,duration:w,easing:_reactNative.Easing.bezier(...v.motion.ease["in-out"]),useNativeDriver:!0});e.start();const t=$.current.map(e=>_reactNative.Animated.timing(e,{toValue:M?1:0,duration:w,easing:_reactNative.Easing.bezier(...v.motion.ease["in-out"]),useNativeDriver:!0})),n=M?t:[...t].reverse(),i=_reactNative.Animated.stagger(C,n);return i.start(),()=>{e.stop(),i.stop()}},[M,z,w,v.motion.ease["in-out"],P,H,C]);const U=(0,_react.useCallback)(e=>{const t=(0,_hapticUtils.resolveHaptic)(d,"impactLight");t&&(0,_hapticUtils.triggerHaptic)(t),F||D(e),o?.(e)},[F,o,d]),W=(0,_react.useRef)(null),Y=(0,_react.useRef)(M),Q=(0,_react.useRef)(!1);(0,_react.useEffect)(()=>{if(Y.current===M)return;Y.current=M;const e=Q.current;if(Q.current=!1,O||e)return;const t=W.current;t&&("web"===_reactNative.Platform.OS?t.focus?.():_reactNative.AccessibilityInfo.sendAccessibilityEvent(t,"focus"));const n=1===P?"action":"actions";(0,_announce.announce)(M?`${u}, expanded, ${P} ${n}`:`${u}, collapsed`)},[M,O,u,P]);const X=(0,_react.useCallback)(()=>{U(!M)},[M,U]),J=(0,_react.useCallback)(e=>{!1!==d&&(0,_hapticUtils.triggerHaptic)("selection"),Q.current=!0,e.onPress(),F||D(!1),o?.(!1)},[F,o,d]),K=(0,_react.useCallback)(()=>{M&&U(!1)},[M,U]);(0,_react.useEffect)(()=>{if(!M)return;const e=_reactNative.BackHandler.addEventListener("hardwareBackPress",()=>(U(!1),!0));return()=>e.remove()},[M,U]),(0,_react.useEffect)(()=>{if(!M||"web"!==_reactNative.Platform.OS)return;const onKeyDown=e=>{"Escape"===e.key&&U(!1)};return window.addEventListener("keydown",onKeyDown),()=>window.removeEventListener("keydown",onKeyDown)},[M,U]);const Z=(0,_react.useMemo)(()=>{const e=(c??A)+y.bottom;switch(s){case"bottomLeft":return{position:"absolute",bottom:e,left:N,alignItems:"flex-start"};case"bottomCenter":return{position:"absolute",bottom:e,alignSelf:"center",alignItems:"center"};default:return{position:"absolute",bottom:e,right:N,alignItems:"flex-end"}}},[s,c,y.bottom,A,N]),slotOffset=e=>-(x.diameter+S)*(e+1),ee=(0,_react.useMemo)(()=>{switch(s){case"bottomLeft":return{left:0,right:0,justifyContent:"flex-start"};case"bottomCenter":return{left:0,right:0,justifyContent:"center"};default:return{left:0,right:0,justifyContent:"flex-end"}}},[s]),te=.78*x.diameter,ne=(0,_react.useMemo)(()=>{const e=te+v.space.sm;switch(s){case"bottomLeft":return{left:e,alignItems:"flex-start"};case"bottomCenter":return{right:x.diameter/2+te/2+v.space.sm,alignItems:"flex-end"};default:return{right:e,alignItems:"flex-end"}}},[s,te,x.diameter,v.space.sm]),ie=z.interpolate({inputRange:[0,1],outputRange:[0,.4]}),re=z.interpolate(j.reduced?{inputRange:[0,.5,.5001,1],outputRange:["0deg","0deg","45deg","45deg"]}:{inputRange:[0,1],outputRange:["0deg","45deg"]});return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[M?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:M?"auto":"none",style:[_reactNative.StyleSheet.absoluteFill,{backgroundColor:v.colors.scrim,opacity:ie}],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:K,accessibilityElementsHidden:!0,importantForAccessibility:"no",testID:h?`${h}-backdrop`:void 0})}):null,(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{pointerEvents:O?"none":"box-none",style:[Z,{transform:[{translateY:L}],opacity:q},p],accessibilityRole:"menu",testID:h,children:[I.map(({action:e,index:t})=>{const n=$.current[t];if(!n)return null;const i=n.interpolate({inputRange:[0,1],outputRange:j.range(0,slotOffset(t))}),r=n.interpolate({inputRange:[0,1],outputRange:j.range(.6,1)}),a=toneBackground(v,e.tone??"primary"),o=toneForeground(v,e.tone??"primary"),s=e.label?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[R.labelSlot,ne],testID:h?`${h}-label-${e.key}`:void 0,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[R.labelPill,v.shadow.card,{backgroundColor:v.colors.surface,paddingHorizontal:v.space.sm,paddingVertical:v.space.xs,borderRadius:v.radius.sm,..._corners.smoothCorners},f],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[{color:v.colors["text-body"],fontSize:v.text.sm.size,fontWeight:v.weight.medium},g],numberOfLines:1,children:e.label})})}):null;return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{pointerEvents:M?"auto":"none",accessibilityElementsHidden:!M,importantForAccessibility:M?"auto":"no-hide-descendants","aria-hidden":!M,style:[R.secondaryRow,ee,{position:"absolute",bottom:0,opacity:n,transform:[{translateY:i},{scale:r}]}],children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>J(e),focusable:M,accessibilityRole:"menuitem",accessibilityLabel:e.accessibilityLabel,style:[R.fabBase,v.shadow.elevated,{width:te,height:te,borderRadius:te/2,..._corners.smoothCorners,backgroundColor:a},b],testID:h?`${h}-action-${e.key}`:void 0,children:({pressed:t})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[t?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:"fab-pressed",style:[R.pressedTint,{backgroundColor:pressedTintFor(v,e.tone??"primary"),borderRadius:te/2,..._corners.smoothCorners}]}):null,_react.default.isValidElement(e.icon)?e.icon:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:o},children:String(e.icon??"")})]})}),s]},e.key)}),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:W,onPress:X,accessibilityRole:"button",accessibilityLabel:u,accessibilityState:{expanded:M},"aria-expanded":M,style:[R.fabBase,v.shadow.popover,{width:x.diameter,height:x.diameter,borderRadius:x.diameter/2,..._corners.smoothCorners,backgroundColor:v.colors.primary}],testID:h?`${h}-primary`:void 0,children:({pressed:e})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[e?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:"fab-pressed",style:[R.pressedTint,{backgroundColor:_color.ACCENT_PRESSED_TINT,borderRadius:x.diameter/2,..._corners.smoothCorners}]}):null,(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:n?void 0:{transform:[{rotate:re}]},children:M&&n?n:t})]})})]})]})};exports.FloatingActionButtonGroup=FloatingActionButtonGroup;const buildGroupStyles=e=>_reactNative.StyleSheet.create({fabBase:{flexDirection:"row",alignItems:"center",justifyContent:"center",overflow:"hidden"},pressedTint:{position:"absolute",top:0,right:0,bottom:0,left:0},secondaryRow:{flexDirection:"row",alignItems:"center"},labelSlot:{position:"absolute",top:0,bottom:0,justifyContent:"center"},labelPill:{alignSelf:"auto"}});var _default=exports.default=FloatingActionButton;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.FormField=void 0;var cache,_react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_FormContext=require("../../form/FormContext.js"),_index=require("../../theme/index.js"),_index2=require("../FieldBase/index.js"),_Notation=require("../Notation/Notation.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var r,i,n=Object.defineProperty,o={__proto__:null,default:e};if(Object(e)!==e)return o;if(cache||"function"!=typeof WeakMap||(cache=new WeakMap),cache){if(cache.has(e))return cache.get(e);cache.set(e,o)}for(i in e)"default"!==i&&{}.hasOwnProperty.call(e,i)&&((r=n&&Object.getOwnPropertyDescriptor(e,i))&&(r.get||r.set)?n(o,i,r):o[i]=e[i]);return o}const FormField=exports.FormField=(0,_react.forwardRef)((e,t)=>{const{label:r,help:i,helperText:n,error:o,required:l=!1,name:a,children:s,layout:c="stacked",helperLines:u,labelStyle:d,helperStyle:x,errorStyle:_,containerStyle:p,inputContainerStyle:f,accessibilityLabel:m,testID:h}=e,y=(0,_index.useTheme)(),j=(0,_react.useMemo)(()=>buildStyles(y),[y]),v=(0,_FormContext.useOptionalFormContext)(),F=null!=a&&null!=v,S=F?v.getFieldProps(a):null,N="function"==typeof s,b=F?N?S?.error:void 0:o,g=(0,_index2.fieldTextAsString)(F?S?.error:o),R=(0,_react.useRef)((0,_index.createAnimatedValue)(b?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(R,{toValue:b?1:0,duration:y.motion.duration.fast,useNativeDriver:!0});return e.start(),()=>e.stop()},[b,R,y.motion.duration.fast]);const k=(0,_react.useMemo)(()=>{if(m)return m;const e=(0,_index2.fieldTextAsString)(r);return e?g?`${e}, error: ${g}`:e:void 0},[m,r,g]),T=(0,_Notation.useNotationInk)(d,y.typography.fontSize.sm,y.colors.text.secondary),I=(0,_Notation.useNotationInk)(x,y.typography.fontSize.sm,y.colors.text.tertiary),w=(0,_Notation.useNotationInk)(_,y.typography.fontSize.sm,y.colors.toneText.error),q=(0,_index2.hasFieldText)(r),C=(0,_jsxRuntime.jsxs)(_reactNative.Text,{style:[j.label,"inline"!==c||(0,_index2.hasFieldText)(i)?null:j.labelInline,(0,_index2.hasFieldText)(i)?j.labelShrink:null,d],children:[(0,_jsxRuntime.jsx)(_Notation.NotationInkContext.Provider,{value:T,children:r}),l?(0,_jsxRuntime.jsx)(_index2.RequiredMark,{}):null]}),z=q?(0,_index2.hasFieldText)(i)?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[j.labelRow,"inline"===c?j.labelInline:null],children:[C,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[j.help,{marginLeft:y.spacing.xs}],children:i})]}):C:null,O="inline"===c?j.inputInline:j.inputStacked,L=(0,_index2.hasFieldText)(b),P=!L&&(0,_index2.hasFieldText)(n),V=(()=>{if(N)return S?s(S):null;if(F&&S&&_react.default.isValidElement(s)){const e=s,t=e.props.onChangeText,r=e.props.onBlur,i=e.props.onFocus;return _react.default.cloneElement(e,{value:S.value,onChangeText:e=>{S.onChangeText(e),t?.(e)},onBlur:e=>{S.onBlur(),r?.(e)},onFocus:e=>{S.onFocus(),i?.(e)},error:S.error,ref:e=>v.registerField(a,e??null)})}return s})(),D=l&&!q&&_react.default.isValidElement(V)?_react.default.cloneElement(V,{required:!0}):V;return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,style:["inline"===c?j.rootInline:j.rootStacked,p],accessibilityLabel:k,accessibilityHint:g||void 0,testID:h,children:[z,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[O,f],children:D}),P?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[j.helper,x],numberOfLines:u||void 0,children:(0,_jsxRuntime.jsx)(_Notation.NotationInkContext.Provider,{value:I,children:n})}):null,L?(0,_jsxRuntime.jsx)(_reactNative.Animated.Text,{style:[j.error,{opacity:R},_],numberOfLines:u||void 0,accessibilityLiveRegion:"polite",children:(0,_jsxRuntime.jsx)(_Notation.NotationInkContext.Provider,{value:w,children:b})}):null]})});FormField.displayName="FormField";const buildStyles=e=>_reactNative.StyleSheet.create({rootStacked:{flexDirection:"column",gap:e.spacing.xs},rootInline:{flexDirection:"row",alignItems:"center",flexWrap:"wrap",gap:e.spacing.xs},label:{fontSize:e.typography.fontSize.sm,...(0,_index.fontFor)(e,"medium"),color:e.colors.text.secondary},labelShrink:{flexShrink:1},labelRow:{flexDirection:"row",alignItems:"center"},help:{flexShrink:0},labelInline:{width:e.components.formField?.inlineLabelWidth??"35%"},inputStacked:{width:"100%"},inputInline:{flex:1,minWidth:0},helper:{fontSize:e.typography.fontSize.sm,color:e.colors.text.tertiary},error:{fontSize:e.typography.fontSize.sm,color:e.colors.toneText.error}});var _default=exports.default=FormField;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.FormField=void 0;var cache,_react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_FormContext=require("../../form/FormContext.js"),_index=require("../../theme/index.js"),_index2=require("../FieldBase/index.js"),_Notation=require("../Notation/Notation.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var i,r,n=Object.defineProperty,l={__proto__:null,default:e};if(Object(e)!==e)return l;if(cache||"function"!=typeof WeakMap||(cache=new WeakMap),cache){if(cache.has(e))return cache.get(e);cache.set(e,l)}for(r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((i=n&&Object.getOwnPropertyDescriptor(e,r))&&(i.get||i.set)?n(l,r,i):l[r]=e[r]);return l}const FormField=exports.FormField=(0,_react.forwardRef)((e,t)=>{const{label:i,help:r,helperText:n,error:l,required:o=!1,name:a,children:s,layout:c="stacked",helperLines:u,labelStyle:d,helperStyle:x,errorStyle:_,containerStyle:m,inputContainerStyle:f,accessibilityLabel:p,testID:h}=e,j=(0,_index.useTheme)(),v=(0,_react.useMemo)(()=>buildStyles(j),[j]),F=(0,_FormContext.useOptionalFormContext)(),y=null!=a&&null!=F,b=y?F.getFieldProps(a):null,N="function"==typeof s,S=y?N?b?.error:void 0:l,R=(0,_index2.fieldTextAsString)(y?b?.error:l),g=(0,_react.useRef)((0,_index.createAnimatedValue)(S?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(g,{toValue:S?1:0,duration:j.motion.duration.fast,useNativeDriver:!0});return e.start(),()=>e.stop()},[S,g,j.motion.duration.fast]);const k=(0,_react.useMemo)(()=>{if(p)return p;const e=(0,_index2.fieldTextAsString)(i);return e?R?`${e}, error: ${R}`:e:void 0},[p,i,R]),I=(0,_Notation.useNotationInk)(d,j.text.sm.size,j.colors["text-muted"]),T=(0,_Notation.useNotationInk)(x,j.text.sm.size,j.colors["text-subtle"]),w=(0,_Notation.useNotationInk)(_,j.text.sm.size,j.colors["danger-text"]),q=(0,_index2.hasFieldText)(i),C=(0,_jsxRuntime.jsxs)(_reactNative.Text,{style:[v.label,"inline"!==c||(0,_index2.hasFieldText)(r)?null:v.labelInline,(0,_index2.hasFieldText)(r)?v.labelShrink:null,d],children:[(0,_jsxRuntime.jsx)(_Notation.NotationInkContext.Provider,{value:I,children:i}),o?(0,_jsxRuntime.jsx)(_index2.RequiredMark,{}):null]}),z=q?(0,_index2.hasFieldText)(r)?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[v.labelRow,"inline"===c?v.labelInline:null],children:[C,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[v.help,{marginLeft:j.space.xs}],children:r})]}):C:null,O="inline"===c?v.inputInline:v.inputStacked,P=(0,_index2.hasFieldText)(S),V=!P&&(0,_index2.hasFieldText)(n),D=(()=>{if(N)return b?s(b):null;if(y&&b&&_react.default.isValidElement(s)){const e=s,t=e.props.onChangeText,i=e.props.onBlur,r=e.props.onFocus;return _react.default.cloneElement(e,{value:b.value,onChangeText:e=>{b.onChangeText(e),t?.(e)},onBlur:e=>{b.onBlur(),i?.(e)},onFocus:e=>{b.onFocus(),r?.(e)},error:b.error,ref:e=>F.registerField(a,e??null)})}return s})(),L=o&&!q&&_react.default.isValidElement(D)?_react.default.cloneElement(D,{required:!0}):D;return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,style:["inline"===c?v.rootInline:v.rootStacked,m],accessibilityLabel:k,accessibilityHint:R||void 0,testID:h,children:[z,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[O,f],children:L}),V?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[v.helper,x],numberOfLines:u||void 0,children:(0,_jsxRuntime.jsx)(_Notation.NotationInkContext.Provider,{value:T,children:n})}):null,P?(0,_jsxRuntime.jsx)(_reactNative.Animated.Text,{style:[v.error,{opacity:g},_],numberOfLines:u||void 0,accessibilityLiveRegion:"polite",children:(0,_jsxRuntime.jsx)(_Notation.NotationInkContext.Provider,{value:w,children:S})}):null]})});FormField.displayName="FormField";const buildStyles=e=>_reactNative.StyleSheet.create({rootStacked:{flexDirection:"column",gap:e.space.xs},rootInline:{flexDirection:"row",alignItems:"center",flexWrap:"wrap",gap:e.space.xs},label:{fontSize:e.text.sm.size,...(0,_index.fontFor)(e,"medium"),color:e.colors["text-muted"]},labelShrink:{flexShrink:1},labelRow:{flexDirection:"row",alignItems:"center"},help:{flexShrink:0},labelInline:{width:"35%"},inputStacked:{width:"100%"},inputInline:{flex:1,minWidth:0},helper:{fontSize:e.text.sm.size,color:e.colors["text-subtle"]},error:{fontSize:e.text.sm.size,color:e.colors["danger-text"]}});var _default=exports.default=FormField;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.IconBadge=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_jsxRuntime=require("react/jsx-runtime");const SIZE_MAP={sm:{diameter:32,icon:16},md:{diameter:40,icon:20},lg:{diameter:56,icon:28}},FILL_OPACITY=.14,inkFor=(e,r)=>{switch(r){case"secondary":return e.colors.secondary;case"success":return e.colors.success;case"warning":return e.colors.warning;case"error":return e.colors.error;case"info":return e.colors.info;case"neutral":return e.colors.text.secondary;default:return e.colors.primary}},IconBadge=exports.IconBadge=(0,_react.forwardRef)((e,r)=>{const{icon:t,iconVariant:o,size:s="md",tone:c="primary",accessibilityLabel:i,style:a,testID:n}=e,l=(0,_index.useTheme)(),d=SIZE_MAP[s],u=inkFor(l,c),m="neutral"===c?l.colors.background.tertiary:(0,_color.tintOf)(u,.14,l.colors.background.tertiary),_={color:u,size:d.icon,disabled:!1},y=void 0!==i;return(0,_jsxRuntime.jsx)(_reactNative.View,{ref:r,testID:n,accessible:y,accessibilityRole:y?"image":void 0,accessibilityLabel:i,importantForAccessibility:y?"yes":"no",style:[styles.base,{width:d.diameter,height:d.diameter,borderRadius:d.diameter/2,..._corners.smoothCorners,backgroundColor:m},a],children:(0,_slotIcon.renderSlotIcon)(t,_,o)})});IconBadge.displayName="IconBadge";const styles=_reactNative.StyleSheet.create({base:{alignItems:"center",justifyContent:"center"}});var _default=exports.default=IconBadge;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.IconBadge=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_jsxRuntime=require("react/jsx-runtime");const SIZE_MAP={sm:{diameter:32,icon:16},md:{diameter:40,icon:20},lg:{diameter:56,icon:28}},FILL_OPACITY=.14,inkFor=(e,r)=>{switch(r){case"secondary":return e.colors.neutral;case"success":return e.colors.success;case"warning":return e.colors.warning;case"danger":return e.colors.danger;case"info":return e.colors.info;case"neutral":return e.colors["text-muted"];default:return e.colors.primary}},IconBadge=exports.IconBadge=(0,_react.forwardRef)((e,r)=>{const{icon:t,iconVariant:o,size:s="md",tone:c="primary",accessibilityLabel:i,style:a,testID:n}=e,l=(0,_index.useTheme)(),d=SIZE_MAP[s],u=inkFor(l,c),m="neutral"===c?l.colors["bg-muted"]:(0,_color.tintOf)(u,.14,l.colors["bg-muted"]),_={color:u,size:d.icon,disabled:!1},I=void 0!==i;return(0,_jsxRuntime.jsx)(_reactNative.View,{ref:r,testID:n,accessible:I,accessibilityRole:I?"image":void 0,accessibilityLabel:i,importantForAccessibility:I?"yes":"no",style:[styles.base,{width:d.diameter,height:d.diameter,borderRadius:d.diameter/2,..._corners.smoothCorners,backgroundColor:m},a],children:(0,_slotIcon.renderSlotIcon)(t,_,o)})});IconBadge.displayName="IconBadge";const styles=_reactNative.StyleSheet.create({base:{alignItems:"center",justifyContent:"center"}});var _default=exports.default=IconBadge;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.IconButton=void 0;var _react=require("react"),_reactNative=require("react-native"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index3=require("../Spinner/index.js"),_jsxRuntime=require("react/jsx-runtime");const GLASS_RIM_WIDTH=1,SOFT_FILL_OPACITY=.14,SIZE_MAP={sm:{diameter:32,icon:16},md:{diameter:40,icon:20},lg:{diameter:48,icon:24}},toneFor=(e,r)=>{switch(r){case"secondary":return{base:e.colors.secondary,on:e.colors.onSecondary,fg:e.colors.secondary};case"success":return{base:e.colors.success,on:e.colors.onSuccess,fg:e.colors.toneText.success};case"warning":return{base:e.colors.warning,on:e.colors.onWarning,fg:e.colors.toneText.warning};case"error":return{base:e.colors.error,on:e.colors.onError,fg:e.colors.toneText.error};case"neutral":return{base:e.colors.background.tertiary,on:e.colors.text.primary,fg:e.colors.text.primary};default:return{base:e.colors.primary,on:e.colors.onPrimary,fg:e.colors.primary}}},IconButton=exports.IconButton=(0,_react.forwardRef)((e,r)=>{const{icon:s,iconVariant:o,onPress:t,accessibilityLabel:n,tone:i="primary",variant:c="solid",size:a="md",shape:l="circle",active:d=!1,disabled:u=!1,loading:b=!1,haptic:m,style:_,testID:x}=e,y=(0,_index.useTheme)(),p=SIZE_MAP[a],g=u||b,{style:f,pressIn:I,pressOut:j}=(0,_usePressAnimation.usePressAnimation)({scaleTo:.92,enabled:!g}),{base:h,on:P,fg:S}=toneFor(y,i),v=d?"solid":c;let q="transparent",A="transparent",w=0,R=g?y.colors.text.disabled:S;"solid"===v?(q=g?y.colors.surface.disabled:h,R=g?y.colors.text.disabled:P):"soft"===v?q=g?y.colors.surface.disabled:(0,_color.tintOf)(h,.14,y.colors.background.secondary):"outline"===v?(A=g?y.colors.border.primary:h,w=y.colors.border.width):"glass"===v&&(q=y.colors.glass.fill,A=y.colors.glass.border,w=1,R=g?y.colors.text.disabled:y.colors.glass.on);const T={color:R,size:p.icon,disabled:g},B="circle"===l?p.diameter/2:y.radius.md;return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:r,onPress:e=>{if(g)return;const r=(0,_index2.resolveHaptic)(m,"selection");r&&(0,_index2.triggerHaptic)(r),t?.(e)},onPressIn:I,onPressOut:j,disabled:g,accessibilityRole:"button",accessibilityLabel:n,accessibilityState:{disabled:g,selected:d},"aria-disabled":g,"aria-selected":d,hitSlop:6,testID:x,style:({pressed:e})=>[styles.base,{width:p.diameter,height:p.diameter,borderRadius:B,..._corners.smoothCorners,backgroundColor:q,borderColor:A,borderWidth:w,opacity:e&&"solid"!==v?.7:1},_],children:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[styles.content,f],children:b?(0,_jsxRuntime.jsx)(_index3.Spinner,{size:"sm",color:R}):(0,_slotIcon.renderSlotIcon)(s,T,o)})})});IconButton.displayName="IconButton";const styles=_reactNative.StyleSheet.create({base:{alignItems:"center",justifyContent:"center"},content:{alignItems:"center",justifyContent:"center"}});var _default=exports.default=IconButton;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.IconButton=void 0;var _react=require("react"),_reactNative=require("react-native"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index3=require("../Spinner/index.js"),_jsxRuntime=require("react/jsx-runtime");const GLASS_RIM_WIDTH=1,SOFT_FILL_OPACITY=.14,SIZE_MAP={sm:{diameter:32,icon:16},md:{diameter:40,icon:20},lg:{diameter:48,icon:24}},toneFor=(e,s)=>{switch(s){case"secondary":return{base:e.colors.neutral,on:e.colors["on-neutral"],fg:e.colors.neutral};case"success":return{base:e.colors.success,on:e.colors["on-success"],fg:e.colors["success-text"]};case"warning":return{base:e.colors.warning,on:e.colors["on-warning"],fg:e.colors["warning-text"]};case"danger":return{base:e.colors.danger,on:e.colors["on-danger"],fg:e.colors["danger-text"]};case"neutral":return{base:e.colors["bg-muted"],on:e.colors["text-body"],fg:e.colors["text-body"]};default:return{base:e.colors.primary,on:e.colors["on-primary"],fg:e.colors.primary}}},IconButton=exports.IconButton=(0,_react.forwardRef)((e,s)=>{const{icon:r,iconVariant:o,onPress:t,accessibilityLabel:n,tone:i="primary",variant:a="solid",size:c="md",shape:l="circle",active:d=!1,disabled:u=!1,loading:b=!1,haptic:_,style:m,testID:x}=e,g=(0,_index.useTheme)(),p=SIZE_MAP[c],y=u||b,{style:f,pressIn:I,pressOut:j}=(0,_usePressAnimation.usePressAnimation)({scaleTo:.92,enabled:!y}),{base:h,on:P,fg:v}=toneFor(g,i),S=d?"solid":a;let q="transparent",A="transparent",w=0,R=y?g.colors["text-disabled"]:v;"solid"===S?(q=y?g.colors["surface-disabled"]:h,R=y?g.colors["text-disabled"]:P):"soft"===S?q=y?g.colors["surface-disabled"]:(0,_color.tintOf)(h,.14,g.colors["bg-subtle"]):"outline"===S?(A=y?g.colors.border:h,w=g.size.border):"glass"===S&&(q=g.colors["glass-fill"],A=g.colors["glass-border"],w=1,R=y?g.colors["text-disabled"]:g.colors["on-glass"]);const B={color:R,size:p.icon,disabled:y},C="circle"===l?p.diameter/2:g.radius.md;return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:s,onPress:e=>{if(y)return;const s=(0,_index2.resolveHaptic)(_,"selection");s&&(0,_index2.triggerHaptic)(s),t?.(e)},onPressIn:I,onPressOut:j,disabled:y,accessibilityRole:"button",accessibilityLabel:n,accessibilityState:{disabled:y,selected:d},"aria-disabled":y,"aria-selected":d,hitSlop:6,testID:x,style:({pressed:e})=>[styles.base,{width:p.diameter,height:p.diameter,borderRadius:C,..._corners.smoothCorners,backgroundColor:q,borderColor:A,borderWidth:w,opacity:e&&"solid"!==S?.7:1},m],children:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[styles.content,f],children:b?(0,_jsxRuntime.jsx)(_index3.Spinner,{size:"sm",color:R}):(0,_slotIcon.renderSlotIcon)(r,B,o)})})});IconButton.displayName="IconButton";const styles=_reactNative.StyleSheet.create({base:{alignItems:"center",justifyContent:"center"},content:{alignItems:"center",justifyContent:"center"}});var _default=exports.default=IconButton;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ImageGallery=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"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_index3=require("../Carousel/index.js"),_index4=require("../Skeleton/index.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var a,i,n=Object.defineProperty,r={__proto__:null,default:e};if(Object(e)!==e)return r;if(cache||"function"!=typeof WeakMap||(cache=new WeakMap),cache){if(cache.has(e))return cache.get(e);cache.set(e,r)}for(i in e)"default"!==i&&{}.hasOwnProperty.call(e,i)&&((a=n&&Object.getOwnPropertyDescriptor(e,i))&&(a.get||a.set)?n(r,i,a):r[i]=e[i]);return r}const MAX_SCALE_FALLBACK=4,MIN_SCALE_FALLBACK=1,DOUBLE_TAP_SCALE_FALLBACK=2,SPRING_CONFIG={damping:18,stiffness:220,mass:1},ImageGallery=({images:e,initialIndex:t=0,showThumbnails:a=!0,showCounter:i=!0,enableLightbox:n=!0,enablePinchZoom:r=!0,onIndexChange:l,haptic:s,loading:o=!1,accessibilityLabel:c,containerStyle:u,testID:d})=>{const m=(0,_index.useTheme)(),_=(0,_react.useMemo)(()=>buildStyles(m),[m]),[h,g]=(0,_react.useState)(clamp(t,0,Math.max(0,e.length-1))),[v,x]=(0,_react.useState)(!1),p=(0,_react.useCallback)(e=>{g(e),l?.(e)},[l]),b=(0,_react.useCallback)(()=>{if(!n)return;const e=(0,_index2.resolveHaptic)(s,"selection");e&&(0,_index2.triggerHaptic)(e),x(!0)},[n,s]),y=(0,_react.useCallback)(()=>{const e=(0,_index2.resolveHaptic)(s,"selection");e&&(0,_index2.triggerHaptic)(e),x(!1)},[s]),S=(0,_react.useCallback)((t,a)=>{const i=t.alt??`Image ${a+1} of ${e.length}`;return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:b,accessibilityRole:"image",accessibilityLabel:i,accessibilityHint:n?"Tap to open fullscreen":void 0,style:_.imageWrap,children:(0,_jsxRuntime.jsx)(_reactNative.Image,{source:t.source,style:_.image,resizeMode:"cover"})})},[n,e.length,b,_]),R=(0,_react.useCallback)(e=>(0,_jsxRuntime.jsx)(_reactNative.Image,{source:e.source,style:_.thumbnailImage,resizeMode:"cover"}),[_]),N=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[_.container,u],testID:d,accessibilityLabel:c??"Image gallery",children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_.carouselWrap,children:[(0,_jsxRuntime.jsx)(_index3.Carousel,{data:e,defaultIndex:t,onIndexChange:p,renderItem:S,showPagination:!1,showThumbnails:a,renderThumbnail:R,haptic:s}),i&&e.length>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:_.counterPill,pointerEvents:"none",children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[_.counterText,{color:m.colors.onOverlay}],accessibilityLabel:`Image ${h+1} of ${e.length}`,children:`${h+1} / ${e.length}`})}):null]}),n?(0,_jsxRuntime.jsx)(Lightbox,{visible:v,images:e,initialIndex:h,enablePinchZoom:r,showCounter:i,onClose:y,onIndexChange:p,haptic:s}):null]});return o?(0,_jsxRuntime.jsx)(ImageGallerySkeleton,{images:e,showThumbnails:a,showCounter:i,containerStyle:u,testID:d}):N};exports.ImageGallery=ImageGallery,ImageGallery.displayName="ImageGallery";const ImageGallerySkeleton=({images:e,showThumbnails:t=!0,showCounter:a=!0,containerStyle:i,testID:n})=>{const r=(0,_index.useTheme)(),l=Math.min(e?.length||4,6);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[{width:"100%"},i],testID:n,accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{position:"relative"},children:[(0,_jsxRuntime.jsx)(_index4.Skeleton,{width:"100%",height:280,radius:"lg"}),a?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{position:"absolute",top:12,right:12},children:(0,_jsxRuntime.jsx)(_index4.Skeleton,{width:44,height:22,radius:"pill"})}):null]}),t?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{flexDirection:"row",marginTop:r.spacing.md},children:Array.from({length:l}).map((e,t)=>(0,_jsxRuntime.jsx)(_index4.Skeleton,{width:64,height:64,radius:"md",style:{marginRight:r.spacing.sm}},`sk-thumb-${t}`))}):null]})};ImageGallerySkeleton.displayName="ImageGallerySkeleton",ImageGallery.Skeleton=ImageGallerySkeleton;const Lightbox=({visible:e,images:t,initialIndex:a,enablePinchZoom:i,showCounter:n,onClose:r,onIndexChange:l,haptic:s})=>{const o=(0,_index.useTheme)(),c=(0,_react.useMemo)(()=>buildLightboxStyles(o),[o]),u=o.components.imageGallery,d=u?.maxScale??4,m=u?.minScale??1,_=u?.doubleTapScale??2,h=(0,_react.useRef)(null),[g,v]=(0,_react.useState)(a),x=(0,_react.useCallback)(e=>{if(e!==g){const t=(0,_index2.resolveHaptic)(s,"selection");t&&(0,_index2.triggerHaptic)(t),v(e),l(e)}},[g,l,s]),p=(0,_react.useCallback)((e,a)=>(0,_jsxRuntime.jsx)(ZoomableImage,{image:e,index:a,total:t.length,active:a===g,enabled:i,maxScale:d,minScale:m,doubleTapScale:_,haptic:s}),[g,i,t.length,d,m,_,s]),b=t[g]?.caption;return(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:e,transparent:!0,statusBarTranslucent:!0,presentationStyle:"overFullScreen",animationType:"fade",onRequestClose:r,accessibilityViewIsModal:!0,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:c.backdrop,accessibilityViewIsModal:!0,children:[(0,_jsxRuntime.jsx)(_index3.Carousel,{ref:h,data:t,defaultIndex:a,onIndexChange:x,renderItem:p,showPagination:!1,haptic:s}),n&&t.length>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:c.counterPill,pointerEvents:"none",children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[c.counterText,{color:o.colors.onOverlay}],accessibilityLabel:`Image ${g+1} of ${t.length}`,children:`${g+1} / ${t.length}`})}):null,(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:r,accessibilityRole:"button",accessibilityLabel:"Close gallery",style:c.closeButton,hitSlop:12,children:(o.icons?.close??_defaultIcons.defaultIcons.close)({size:24,color:o.colors.onOverlay})}),b?(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:c.captionWrap,entering:void 0,accessibilityElementsHidden:!1,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:c.captionText,numberOfLines:3,children:b})}):null,(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})})},ZoomableImage=({image:e,index:t,total:a,active:i,enabled:n,maxScale:r,minScale:l,doubleTapScale:s,haptic:o})=>{const c=_reactNative.Dimensions.get("window"),u=(0,_reactNativeReanimated.useSharedValue)(1),d=(0,_reactNativeReanimated.useSharedValue)(1),m=(0,_reactNativeReanimated.useSharedValue)(0),_=(0,_reactNativeReanimated.useSharedValue)(0),h=(0,_reactNativeReanimated.useSharedValue)(0),g=(0,_reactNativeReanimated.useSharedValue)(0),v=(0,_react.useCallback)(()=>{u.value=(0,_reactNativeReanimated.withSpring)(1,SPRING_CONFIG),d.value=1,m.value=(0,_reactNativeReanimated.withSpring)(0,SPRING_CONFIG),_.value=(0,_reactNativeReanimated.withSpring)(0,SPRING_CONFIG),h.value=0,g.value=0},[u,d,m,_,h,g]);_react.default.useEffect(()=>{i||(u.value=(0,_reactNativeReanimated.withTiming)(1,{duration:150}),m.value=(0,_reactNativeReanimated.withTiming)(0,{duration:150}),_.value=(0,_reactNativeReanimated.withTiming)(0,{duration:150}),d.value=1,h.value=0,g.value=0)},[i,u,m,_,d,h,g]);const x=(0,_react.useCallback)(()=>{!1!==o&&(0,_index2.triggerHaptic)("impactLight")},[o]),p=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Pinch().enabled(n).onStart(()=>{"worklet";d.value=u.value}).onUpdate(e=>{"worklet";const t=d.value*e.scale;u.value=t<l?l+.3*(t-l):t>r?r+.2*(t-r):t}).onEnd(()=>{"worklet";return u.value<l?(u.value=(0,_reactNativeReanimated.withSpring)(l,SPRING_CONFIG),m.value=(0,_reactNativeReanimated.withSpring)(0,SPRING_CONFIG),_.value=(0,_reactNativeReanimated.withSpring)(0,SPRING_CONFIG),d.value=l,h.value=0,void(g.value=0)):u.value>r?(u.value=(0,_reactNativeReanimated.withSpring)(r,SPRING_CONFIG),void(d.value=r)):void(d.value=u.value)}),[n,u,d,m,_,h,g,l,r]),b=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Pan().minPointers(1).maxPointers(1).onStart(()=>{"worklet";h.value=m.value,g.value=_.value}).onUpdate(e=>{"worklet";u.value<=1||(m.value=h.value+e.translationX,_.value=g.value+e.translationY)}).onEnd(()=>{"worklet";h.value=m.value,g.value=_.value}),[u,m,_,h,g]),y=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Tap().numberOfTaps(2).onEnd(()=>{"worklet";(0,_reactNativeReanimated.runOnJS)(x)(),u.value>1?(u.value=(0,_reactNativeReanimated.withSpring)(1,SPRING_CONFIG),m.value=(0,_reactNativeReanimated.withSpring)(0,SPRING_CONFIG),_.value=(0,_reactNativeReanimated.withSpring)(0,SPRING_CONFIG),d.value=1,h.value=0,g.value=0):(u.value=(0,_reactNativeReanimated.withSpring)(s,SPRING_CONFIG),d.value=s)}),[u,d,m,_,h,g,x,s]),S=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Race(p,b,y),[p,b,y]),R=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({transform:[{translateX:m.value},{translateY:_.value},{scale:u.value}]}));_react.default.useEffect(()=>{i||v()},[i,v]);const N=e.alt??`Image ${t+1} of ${a}`;return(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:S,children:(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[lightboxImageStyles.container,{width:c.width}],children:(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.Image,{source:e.source,resizeMode:"contain",style:[lightboxImageStyles.image,R],accessibilityLabel:N,accessible:!0})})})},clamp=(e,t,a)=>Math.min(Math.max(e,t),a),buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},carouselWrap:{width:"100%",position:"relative"},imageWrap:{width:"100%",aspectRatio:16/9,backgroundColor:e.colors.background.secondary,overflow:"hidden",borderRadius:e.radius.md,..._corners.smoothCorners},image:{width:"100%",height:"100%"},thumbnailImage:{width:"100%",height:"100%"},counterPill:{position:"absolute",top:12,alignSelf:"center",paddingHorizontal:e.spacing.md,paddingVertical:e.spacing.xs,borderRadius:e.radius.pill,..._corners.smoothCorners,backgroundColor:"rgba(0,0,0,0.55)"},counterText:{fontSize:e.typography.fontSize.sm,fontWeight:e.typography.fontWeight.semibold}}),buildLightboxStyles=e=>_reactNative.StyleSheet.create({backdrop:{flex:1,backgroundColor:"#000",justifyContent:"center"},counterPill:{position:"absolute",top:48,alignSelf:"center",paddingHorizontal:e.spacing.md,paddingVertical:e.spacing.xs,borderRadius:e.radius.pill,..._corners.smoothCorners,backgroundColor:"rgba(0,0,0,0.6)"},counterText:{fontSize:e.typography.fontSize.sm,fontWeight:e.typography.fontWeight.semibold},closeButton:{position:"absolute",top:44,right:16,width:40,height:40,borderRadius:e.radius.pill,..._corners.smoothCorners,alignItems:"center",justifyContent:"center",backgroundColor:"rgba(0,0,0,0.5)"},captionWrap:{position:"absolute",left:0,right:0,bottom:32,paddingHorizontal:e.spacing.xl},captionText:{color:"#FFFFFF",fontSize:e.typography.fontSize.base,lineHeight:21,textAlign:"center"}}),lightboxImageStyles=_reactNative.StyleSheet.create({container:{flex:1,alignItems:"center",justifyContent:"center"},image:{width:"100%",height:"100%"}});var _default=exports.default=ImageGallery;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ImageGallery=void 0;var 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"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_index3=require("../Carousel/index.js"),_index4=require("../Skeleton/index.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var a,i,r=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(i in e)"default"!==i&&{}.hasOwnProperty.call(e,i)&&((a=r&&Object.getOwnPropertyDescriptor(e,i))&&(a.get||a.set)?r(n,i,a):n[i]=e[i]);return n}const MAX_SCALE_FALLBACK=4,MIN_SCALE_FALLBACK=1,DOUBLE_TAP_SCALE_FALLBACK=2,SPRING_CONFIG={damping:18,stiffness:220,mass:1},ImageGallery=({images:e,initialIndex:t=0,showThumbnails:a=!0,showCounter:i=!0,enableLightbox:r=!0,enablePinchZoom:n=!0,onIndexChange:l,haptic:s,loading:o=!1,accessibilityLabel:c,containerStyle:u,testID:d})=>{const m=(0,_index.useTheme)(),_=(0,_react.useMemo)(()=>buildStyles(m),[m]),[h,g]=(0,_react.useState)(clamp(t,0,Math.max(0,e.length-1))),[v,x]=(0,_react.useState)(!1),p=(0,_react.useCallback)(e=>{g(e),l?.(e)},[l]),b=(0,_react.useCallback)(()=>{if(!r)return;const e=(0,_index2.resolveHaptic)(s,"selection");e&&(0,_index2.triggerHaptic)(e),x(!0)},[r,s]),R=(0,_react.useCallback)(()=>{const e=(0,_index2.resolveHaptic)(s,"selection");e&&(0,_index2.triggerHaptic)(e),x(!1)},[s]),N=(0,_react.useCallback)((t,a)=>{const i=t.alt??`Image ${a+1} of ${e.length}`;return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:b,accessibilityRole:"image",accessibilityLabel:i,accessibilityHint:r?"Tap to open fullscreen":void 0,style:_.imageWrap,children:(0,_jsxRuntime.jsx)(_reactNative.Image,{source:t.source,style:_.image,resizeMode:"cover"})})},[r,e.length,b,_]),S=(0,_react.useCallback)(e=>(0,_jsxRuntime.jsx)(_reactNative.Image,{source:e.source,style:_.thumbnailImage,resizeMode:"cover"}),[_]),y=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[_.container,u],testID:d,accessibilityLabel:c??"Image gallery",children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_.carouselWrap,children:[(0,_jsxRuntime.jsx)(_index3.Carousel,{data:e,defaultIndex:t,onIndexChange:p,renderItem:N,showPagination:!1,showThumbnails:a,renderThumbnail:S,haptic:s}),i&&e.length>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:_.counterPill,pointerEvents:"none",children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[_.counterText,{color:m.colors["on-scrim"]}],accessibilityLabel:`Image ${h+1} of ${e.length}`,children:`${h+1} / ${e.length}`})}):null]}),r?(0,_jsxRuntime.jsx)(Lightbox,{visible:v,images:e,initialIndex:h,enablePinchZoom:n,showCounter:i,onClose:R,onIndexChange:p,haptic:s}):null]});return o?(0,_jsxRuntime.jsx)(ImageGallerySkeleton,{images:e,showThumbnails:a,showCounter:i,containerStyle:u,testID:d}):y};exports.ImageGallery=ImageGallery,ImageGallery.displayName="ImageGallery";const ImageGallerySkeleton=({images:e,showThumbnails:t=!0,showCounter:a=!0,containerStyle:i,testID:r})=>{const n=(0,_index.useTheme)(),l=Math.min(e?.length||4,6);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[{width:"100%"},i],testID:r,accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{position:"relative"},children:[(0,_jsxRuntime.jsx)(_index4.Skeleton,{width:"100%",height:280,radius:"lg"}),a?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{position:"absolute",top:12,right:12},children:(0,_jsxRuntime.jsx)(_index4.Skeleton,{width:44,height:22,radius:"pill"})}):null]}),t?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{flexDirection:"row",marginTop:n.space.md},children:Array.from({length:l}).map((e,t)=>(0,_jsxRuntime.jsx)(_index4.Skeleton,{width:64,height:64,radius:"md",style:{marginRight:n.space.sm}},`sk-thumb-${t}`))}):null]})};ImageGallerySkeleton.displayName="ImageGallerySkeleton",ImageGallery.Skeleton=ImageGallerySkeleton;const Lightbox=({visible:e,images:t,initialIndex:a,enablePinchZoom:i,showCounter:r,onClose:n,onIndexChange:l,haptic:s})=>{const o=(0,_index.useTheme)(),c=(0,_react.useMemo)(()=>buildLightboxStyles(o),[o]),u=(0,_react.useRef)(null),[d,m]=(0,_react.useState)(a),_=(0,_react.useCallback)(e=>{if(e!==d){const t=(0,_index2.resolveHaptic)(s,"selection");t&&(0,_index2.triggerHaptic)(t),m(e),l(e)}},[d,l,s]),h=(0,_react.useCallback)((e,a)=>(0,_jsxRuntime.jsx)(ZoomableImage,{image:e,index:a,total:t.length,active:a===d,enabled:i,maxScale:4,minScale:1,doubleTapScale:2,haptic:s}),[d,i,t.length,s]),g=t[d]?.caption;return(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:e,transparent:!0,statusBarTranslucent:!0,presentationStyle:"overFullScreen",animationType:"fade",onRequestClose:n,accessibilityViewIsModal:!0,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:c.backdrop,accessibilityViewIsModal:!0,children:[(0,_jsxRuntime.jsx)(_index3.Carousel,{ref:u,data:t,defaultIndex:a,onIndexChange:_,renderItem:h,showPagination:!1,haptic:s}),r&&t.length>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:c.counterPill,pointerEvents:"none",children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[c.counterText,{color:o.colors["on-scrim"]}],accessibilityLabel:`Image ${d+1} of ${t.length}`,children:`${d+1} / ${t.length}`})}):null,(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:n,accessibilityRole:"button",accessibilityLabel:"Close gallery",style:c.closeButton,hitSlop:12,children:(o.settings.icons.close??_defaultIcons.defaultIcons.close)({size:24,color:o.colors["on-scrim"]})}),g?(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:c.captionWrap,entering:void 0,accessibilityElementsHidden:!1,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:c.captionText,numberOfLines:3,children:g})}):null,(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})})},ZoomableImage=({image:e,index:t,total:a,active:i,enabled:r,maxScale:n,minScale:l,doubleTapScale:s,haptic:o})=>{const c=_reactNative.Dimensions.get("window"),u=(0,_reactNativeReanimated.useSharedValue)(1),d=(0,_reactNativeReanimated.useSharedValue)(1),m=(0,_reactNativeReanimated.useSharedValue)(0),_=(0,_reactNativeReanimated.useSharedValue)(0),h=(0,_reactNativeReanimated.useSharedValue)(0),g=(0,_reactNativeReanimated.useSharedValue)(0),v=(0,_react.useCallback)(()=>{u.value=(0,_reactNativeReanimated.withSpring)(1,SPRING_CONFIG),d.value=1,m.value=(0,_reactNativeReanimated.withSpring)(0,SPRING_CONFIG),_.value=(0,_reactNativeReanimated.withSpring)(0,SPRING_CONFIG),h.value=0,g.value=0},[u,d,m,_,h,g]);_react.default.useEffect(()=>{i||(u.value=(0,_reactNativeReanimated.withTiming)(1,{duration:150}),m.value=(0,_reactNativeReanimated.withTiming)(0,{duration:150}),_.value=(0,_reactNativeReanimated.withTiming)(0,{duration:150}),d.value=1,h.value=0,g.value=0)},[i,u,m,_,d,h,g]);const x=(0,_react.useCallback)(()=>{!1!==o&&(0,_index2.triggerHaptic)("impactLight")},[o]),p=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Pinch().enabled(r).onStart(()=>{"worklet";d.value=u.value}).onUpdate(e=>{"worklet";const t=d.value*e.scale;u.value=t<l?l+.3*(t-l):t>n?n+.2*(t-n):t}).onEnd(()=>{"worklet";return u.value<l?(u.value=(0,_reactNativeReanimated.withSpring)(l,SPRING_CONFIG),m.value=(0,_reactNativeReanimated.withSpring)(0,SPRING_CONFIG),_.value=(0,_reactNativeReanimated.withSpring)(0,SPRING_CONFIG),d.value=l,h.value=0,void(g.value=0)):u.value>n?(u.value=(0,_reactNativeReanimated.withSpring)(n,SPRING_CONFIG),void(d.value=n)):void(d.value=u.value)}),[r,u,d,m,_,h,g,l,n]),b=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Pan().minPointers(1).maxPointers(1).onStart(()=>{"worklet";h.value=m.value,g.value=_.value}).onUpdate(e=>{"worklet";u.value<=1||(m.value=h.value+e.translationX,_.value=g.value+e.translationY)}).onEnd(()=>{"worklet";h.value=m.value,g.value=_.value}),[u,m,_,h,g]),R=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Tap().numberOfTaps(2).onEnd(()=>{"worklet";(0,_reactNativeReanimated.runOnJS)(x)(),u.value>1?(u.value=(0,_reactNativeReanimated.withSpring)(1,SPRING_CONFIG),m.value=(0,_reactNativeReanimated.withSpring)(0,SPRING_CONFIG),_.value=(0,_reactNativeReanimated.withSpring)(0,SPRING_CONFIG),d.value=1,h.value=0,g.value=0):(u.value=(0,_reactNativeReanimated.withSpring)(s,SPRING_CONFIG),d.value=s)}),[u,d,m,_,h,g,x,s]),N=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Race(p,b,R),[p,b,R]),S=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({transform:[{translateX:m.value},{translateY:_.value},{scale:u.value}]}));_react.default.useEffect(()=>{i||v()},[i,v]);const y=e.alt??`Image ${t+1} of ${a}`;return(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:N,children:(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[lightboxImageStyles.container,{width:c.width}],children:(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.Image,{source:e.source,resizeMode:"contain",style:[lightboxImageStyles.image,S],accessibilityLabel:y,accessible:!0})})})},clamp=(e,t,a)=>Math.min(Math.max(e,t),a),buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},carouselWrap:{width:"100%",position:"relative"},imageWrap:{width:"100%",aspectRatio:16/9,backgroundColor:e.colors["bg-subtle"],overflow:"hidden",borderRadius:e.radius.md,..._corners.smoothCorners},image:{width:"100%",height:"100%"},thumbnailImage:{width:"100%",height:"100%"},counterPill:{position:"absolute",top:12,alignSelf:"center",paddingHorizontal:e.space.md,paddingVertical:e.space.xs,borderRadius:e.radius.pill,..._corners.smoothCorners,backgroundColor:"rgba(0,0,0,0.55)"},counterText:{fontSize:e.text.sm.size,fontWeight:e.weight.semibold}}),buildLightboxStyles=e=>_reactNative.StyleSheet.create({backdrop:{flex:1,backgroundColor:"#000",justifyContent:"center"},counterPill:{position:"absolute",top:48,alignSelf:"center",paddingHorizontal:e.space.md,paddingVertical:e.space.xs,borderRadius:e.radius.pill,..._corners.smoothCorners,backgroundColor:"rgba(0,0,0,0.6)"},counterText:{fontSize:e.text.sm.size,fontWeight:e.weight.semibold},closeButton:{position:"absolute",top:44,right:16,width:40,height:40,borderRadius:e.radius.pill,..._corners.smoothCorners,alignItems:"center",justifyContent:"center",backgroundColor:"rgba(0,0,0,0.5)"},captionWrap:{position:"absolute",left:0,right:0,bottom:32,paddingHorizontal:e.space.xl},captionText:{color:"#FFFFFF",fontSize:e.text.base.size,lineHeight:21,textAlign:"center"}}),lightboxImageStyles=_reactNative.StyleSheet.create({container:{flex:1,alignItems:"center",justifyContent:"center"},image:{width:"100%",height:"100%"}});var _default=exports.default=ImageGallery;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.InlineSelect=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_Chevron=require("../FieldBase/Chevron.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_jsxRuntime=require("react/jsx-runtime");const InlineSelect=exports.InlineSelect=(0,_react.forwardRef)((e,t)=>{const{options:i,getOptionLabel:l,getOptionValue:s,getOptionDisabled:a,getOptionDescription:n,getOptionIcon:r,value:c,onChange:o,placeholder:d,label:u,title:p,searchable:x=!1,haptic:_,disabled:b=!1,size:S="md",color:h,chevronColor:m,chevronSize:y,textStyle:g,style:j,optionStyle:v,selectedOptionStyle:O,optionTextStyle:f,selectedOptionTextStyle:C,accessibilityLabel:I,testID:R}=e,F=(0,_index.useTheme)(),k=(0,_react.useMemo)(()=>buildStyles(F),[F]),q=(0,_index.resolveFieldSize)(F,S),T=(0,_react.useCallback)(e=>l?l(e):e.label??"",[l]),N=(0,_react.useCallback)(e=>s?s(e):e.value,[s]),z=(0,_react.useCallback)(e=>a?a(e):!0===e.disabled,[a]),L=(0,_react.useCallback)(e=>n?n(e):e.description,[n]),B=(0,_react.useCallback)(e=>r?r(e):e.icon,[r]),[D,H]=(0,_react.useState)(!1),P=(0,_react.useMemo)(()=>{if(null!=c)return i.find(e=>N(e)===c)},[i,c,N]),w=(0,_react.useCallback)(e=>c===e,[c]),M=(0,_react.useCallback)(()=>{if(b)return;const e=(0,_index2.resolveHaptic)(_,"selection");e&&(0,_index2.triggerHaptic)(e),H(!0)},[b,_]),V=(0,_react.useCallback)(()=>{H(!1)},[]),$=(0,_react.useCallback)(e=>{if(z(e))return;const t=(0,_index2.resolveHaptic)(_,"selection");t&&(0,_index2.triggerHaptic)(t),o(N(e)),V()},[z,N,o,V,_]),G=b?F.colors.text.disabled:h??F.components.inlineSelect?.color??F.colors.primary,A=void 0!==P?T(P):d??"Select",E=void 0!==P?`Selected: ${T(P)}`:d??"No selection",J=I??`${u??p??"Select"}. ${E}`,K=(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:t,onPress:M,disabled:b,hitSlop:8,accessibilityRole:"button",accessibilityLabel:J,accessibilityState:{disabled:b,expanded:D},"aria-disabled":b,"aria-expanded":D,testID:R,style:({pressed:e})=>[k.trigger,{columnGap:F.spacing.xs,opacity:e&&!b?.6:1},j],children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[k.triggerText,{color:G,fontSize:q.text,...(0,_index.fontFor)(F,"medium")},g],numberOfLines:1,children:A}),(0,_jsxRuntime.jsx)(_Chevron.Chevron,{color:m??G,size:y??q.icon,open:D})]});return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[u?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:k.labelled,children:[(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:S,children:u}),K]}):K,(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:D,onClose:V,title:p,accessibilityLabel:u??p??d??"Options",options:i,labelOf:T,getValue:N,disabledOf:z,descriptionOf:L,iconOf:B,isSelected:w,onSelect:$,searchable:x,optionStyle:v,selectedOptionStyle:O,optionTextStyle:f,selectedOptionTextStyle:C})]})});InlineSelect.displayName="InlineSelect";const buildStyles=e=>_reactNative.StyleSheet.create({labelled:{alignItems:"flex-start"},trigger:{flexDirection:"row",alignItems:"center"},triggerText:{includeFontPadding:!1}});var _default=exports.default=InlineSelect;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.InlineSelect=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_Chevron=require("../FieldBase/Chevron.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_jsxRuntime=require("react/jsx-runtime");const InlineSelect=exports.InlineSelect=(0,_react.forwardRef)((e,t)=>{const{options:i,getOptionLabel:l,getOptionValue:s,getOptionDisabled:a,getOptionDescription:r,getOptionIcon:n,value:c,onChange:o,placeholder:d,label:u,title:x,searchable:p=!1,haptic:_,disabled:b=!1,size:S="md",color:h,chevronColor:y,chevronSize:m,textStyle:g,style:j,optionStyle:v,selectedOptionStyle:O,optionTextStyle:f,selectedOptionTextStyle:C,accessibilityLabel:I,testID:R}=e,F=(0,_index.useTheme)(),k=(0,_react.useMemo)(()=>buildStyles(F),[F]),q=(0,_index.resolveFieldSize)(F,S),T=(0,_react.useCallback)(e=>l?l(e):e.label??"",[l]),N=(0,_react.useCallback)(e=>s?s(e):e.value,[s]),z=(0,_react.useCallback)(e=>a?a(e):!0===e.disabled,[a]),L=(0,_react.useCallback)(e=>r?r(e):e.description,[r]),B=(0,_react.useCallback)(e=>n?n(e):e.icon,[n]),[D,H]=(0,_react.useState)(!1),P=(0,_react.useMemo)(()=>{if(null!=c)return i.find(e=>N(e)===c)},[i,c,N]),w=(0,_react.useCallback)(e=>c===e,[c]),M=(0,_react.useCallback)(()=>{if(b)return;const e=(0,_index2.resolveHaptic)(_,"selection");e&&(0,_index2.triggerHaptic)(e),H(!0)},[b,_]),V=(0,_react.useCallback)(()=>{H(!1)},[]),$=(0,_react.useCallback)(e=>{if(z(e))return;const t=(0,_index2.resolveHaptic)(_,"selection");t&&(0,_index2.triggerHaptic)(t),o(N(e)),V()},[z,N,o,V,_]),G=b?F.colors["text-disabled"]:h??F.colors.primary,A=void 0!==P?T(P):d??"Select",E=void 0!==P?`Selected: ${T(P)}`:d??"No selection",J=I??`${u??x??"Select"}. ${E}`,K=(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:t,onPress:M,disabled:b,hitSlop:8,accessibilityRole:"button",accessibilityLabel:J,accessibilityState:{disabled:b,expanded:D},"aria-disabled":b,"aria-expanded":D,testID:R,style:({pressed:e})=>[k.trigger,{columnGap:F.space.xs,opacity:e&&!b?.6:1},j],children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[k.triggerText,{color:G,fontSize:q.text,...(0,_index.fontFor)(F,"medium")},g],numberOfLines:1,children:A}),(0,_jsxRuntime.jsx)(_Chevron.Chevron,{color:y??G,size:m??q.icon,open:D})]});return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[u?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:k.labelled,children:[(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:S,children:u}),K]}):K,(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:D,onClose:V,title:x,accessibilityLabel:u??x??d??"Options",options:i,labelOf:T,getValue:N,disabledOf:z,descriptionOf:L,iconOf:B,isSelected:w,onSelect:$,searchable:p,optionStyle:v,selectedOptionStyle:O,optionTextStyle:f,selectedOptionTextStyle:C})]})});InlineSelect.displayName="InlineSelect";const buildStyles=e=>_reactNative.StyleSheet.create({labelled:{alignItems:"flex-start"},trigger:{flexDirection:"row",alignItems:"center"},triggerText:{includeFontPadding:!1}});var _default=exports.default=InlineSelect;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Input=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index4=require("../Button/index.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_useFloatingLabel=require("../FieldBase/useFloatingLabel.js"),_Notation=require("../Notation/Notation.js"),_jsxRuntime=require("react/jsx-runtime");const multilineMinHeightMap={sm:72,md:92,lg:110},Input=exports.Input=(0,_react.forwardRef)((e,t)=>{const{label:i,help:n,placeholder:a,value:o,onChangeText:r,error:l,helperText:s,type:d="input",secureTextEntry:c=!1,showPasswordToggle:u=!1,disabled:x=!1,multiline:p=!1,leftIcon:g,rightIcon:f,unit:m,unitStyle:_,prefix:v,prefixStyle:h,readOnly:y=!1,action:j,actionStyle:b,size:N="md",variant:R,labelMode:F,required:S=!1,maxLength:w,showCounter:I=!0,textAlign:T,format:V,parse:k,style:A,containerStyle:B,inputStyle:z,labelStyle:C,messageStyle:q,borderRadius:D,onFocus:L,onBlur:H,accessibilityLabel:P,testID:M,editable:E,...O}=e,G=(0,_index2.useTheme)(),W=(0,_react.useMemo)(()=>buildStyles(G),[G]),X=(0,_index2.resolveFieldSize)(G,N),$=multilineMinHeightMap[N],Y=Math.round(1.4*X.text),J=R??G.components.input?.defaultVariant??G.components.field?.defaultVariant??"outlined",K=F??G.components.input?.defaultLabelMode??"top",[Q,U]=(0,_react.useState)(!1),[Z,ee]=(0,_react.useState)(!1),te="password"===d||u||c,ie="password"===d||u,ne="textarea"===d||p,ae=ne?Math.round(.1*X.text):0,oe="string"==typeof o&&o.length>0,re=(0,_FieldBase.hasFieldText)(l),le=!0===l||re,se=(0,_FieldBase.hasFieldText)(s),de=re||!le&&se,ce=(0,_FieldBase.hasFieldText)(i),ue=(0,_FieldBase.hasFieldText)(v),xe=!x&&!1!==E,pe=Q||oe||ue,ge=(0,_react.useRef)(null),fe=(0,_react.useMemo)(()=>(0,_index3.mergeRefs)(ge,t),[t]),me=(0,_react.useCallback)(()=>{xe&&ge.current?.focus()},[xe]),ve=ce&&"float"===K,he=(0,_react.useRef)((0,_index2.createAnimatedValue)(0)).current,ye=(0,_react.useRef)((0,_index2.createAnimatedValue)(de?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(ye,{toValue:de?1:0,duration:G.motion.duration.fast,easing:_reactNative.Easing.bezier(...G.motion.easing.standard),useNativeDriver:!0});return e.start(),()=>e.stop()},[de,ye,G.motion.duration.fast,G.motion.easing.standard]);const je=(0,_index.useReducedMotion)(),be=G.components.input?.shakeOnError??!1,Ne=(0,_react.useRef)(le);(0,_react.useEffect)(()=>{if(!be)return void(Ne.current=le);let e;return le&&!Ne.current&&(je||((0,_index2.setNativeValue)(he,0),e=_reactNative.Animated.sequence([_reactNative.Animated.timing(he,{toValue:1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(he,{toValue:-1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(he,{toValue:1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(he,{toValue:-1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(he,{toValue:0,duration:100,useNativeDriver:!0})]),e.start()),(0,_index3.triggerHaptic)("notificationError")),Ne.current=le,()=>e?.stop()},[le,he,be,je]);const Re=(0,_react.useCallback)(e=>{U(!0),L?.(e)},[L]),Fe=(0,_react.useCallback)(e=>{U(!1),H?.(e)},[H]),Se=(0,_react.useCallback)(()=>{(0,_index3.triggerHaptic)("selection"),ee(e=>!e)},[]),we=(0,_react.useMemo)(()=>{const e=G.components.input?.fillColors?.[J];if(!e)return;const t={};return void 0!==e.idleEmpty&&(t.backgroundIdleEmpty=e.idleEmpty),void 0!==e.idleFilled&&(t.backgroundIdleFilled=e.idleFilled),void 0!==e.focus&&(t.backgroundFocused=e.focus),void 0!==e.error&&(t.backgroundError=e.error),void 0!==e.disabled&&(t.backgroundDisabled=e.disabled),Object.keys(t).length>0?t:void 0},[G.components.input?.fillColors,J]),Ie=G.colors.field.caret,Te=D??X.radius,Ve=G.components.input?.tintLabelOnFocus??!1,ke=Q&&Ve?G.colors.field.borderFocused:G.colors.field.label,Ae=he.interpolate({inputRange:[-1,0,1],outputRange:[-6,0,6]}),Be=Boolean(f)||Boolean(m)||ie,ze="underline"===J,Ce=g?X.icon+G.spacing.md+1+G.spacing.md:0,qe=(0,_useFloatingLabel.useFloatingLabel)({label:i,enabled:ve,floated:pe,required:S,variant:J,sizeTokens:X,leadingOffset:Ce,trailingOffset:Be?X.icon+G.spacing.sm:0,textAlign:T,paddingLeft:ze?G.spacing.none:X.paddingX,lineHeight:ne?Y:void 0,restNudge:ae,floatTrim:ne?2:0,color:ke,style:C}),De=(0,_FieldBase.resolveFieldTextStyle)(G,{disabled:x}),Le=De.color,He=De.placeholderColor,Pe=S&&!ce&&!oe&&"string"==typeof a&&a.length>0,Me=le?l:s,Ee=I&&"number"==typeof w&&"string"==typeof o?`${o.length} / ${w}`:null,Oe=le?G.colors.field.message:G.colors.text.secondary,Ge=(0,_Notation.useNotationInk)(q,X.messageText,Oe),We=P??(0,_FieldBase.fieldTextAsString)(i)??a,Xe=G.colors.field,$e=x?Xe.iconDisabled:Q?Xe.iconFocused:Xe.icon,Ye={focused:Q,disabled:x,error:le,color:$e,size:X.icon},renderSlot=e=>(0,_slotIcon.renderSlotIcon)(e,Ye),Je=(()=>{if(ie){const e=(Z?G.icons?.eyeOff:G.icons?.eye)??(Z?_defaultIcons.defaultIcons.eyeOff:_defaultIcons.defaultIcons.eye);return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:Se,disabled:!xe,hitSlop:8,accessibilityRole:"button",accessibilityLabel:Z?"Hide password":"Show password",children:e({size:X.icon,color:$e})})}const e=m?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.unit,{fontSize:X.text,color:He},_],children:m}):null,t=f?(0,_jsxRuntime.jsx)(_reactNative.View,{children:renderSlot(f)}):null;return e&&t?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W.trailingRow,children:[e,t]}):e??t})(),Ke=g?(0,_jsxRuntime.jsx)(_reactNative.View,{children:renderSlot(g)}):null,Qe=_reactNative.StyleSheet.flatten(h),Ue=Qe?.fontSize??X.text,Ze=Qe?.color??He,et=(0,_react.useMemo)(()=>({fontSize:Ue,color:Ze}),[Ue,Ze]),tt=ue?"string"==typeof v||"number"==typeof v?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.prefix,{fontSize:X.text,color:He,marginRight:G.spacing.xs,lineHeight:ne?Y:void 0,paddingTop:ne?ae:void 0},h],children:v}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[W.prefixNode,{marginRight:G.spacing.xs,minHeight:ne?Y:void 0,justifyContent:"center",paddingTop:ne?ae:void 0}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.prefix,{fontSize:X.text,color:He,lineHeight:ne?Y:void 0},h],children:(0,_jsxRuntime.jsx)(_Notation.NotationInkContext.Provider,{value:et,children:v})})}):null,it=j?(0,_jsxRuntime.jsx)(_index4.Button,{variant:j.variant??"outline",tone:j.tone??"primary",size:N,title:j.label,leftIcon:j.icon,loading:j.loading,disabled:x||j.disabled,onPress:j.onPress,pressAnimation:!1,testID:j.testID,style:[W.action,{minHeight:X.minHeight,alignSelf:ne?"flex-start":"stretch"},b]}):null;return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[W.container,{transform:[{translateX:Ae}]},A],children:[ce&&!ve?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:N,required:S,help:n,color:ke,style:C,children:i}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[W.fieldRow,{columnGap:G.spacing.sm,alignItems:ne?"flex-start":"stretch"}],children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W.fieldWrapper,children:[(0,_jsxRuntime.jsxs)(_FieldBase.FieldBase,{size:N,variant:J,focused:Q,disabled:x,error:le,filled:oe,minHeight:ne?$:void 0,borderRadius:Te,fillOverrides:we,leading:Ke,leadingDivider:null!=g,paddingLeft:ze?G.spacing.none:void 0,trailing:Je,slotAlign:ne?"top":"center",slotLineHeight:ne?Y:void 0,topNotch:qe.topNotch,onPress:me,pressFeedback:!1,style:B,children:[tt,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W.inputWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:fe,style:[W.input,{color:Le,fontSize:X.text,...De.weightStyle,paddingLeft:ze?G.spacing.none:void 0,minHeight:ne?$-2*X.paddingY:void 0,lineHeight:ne?Y:void 0,paddingTop:ne?ae:void 0,textAlignVertical:ne?"top":"center"},z],textAlign:T,placeholder:ve&&!pe||Pe?void 0:a,placeholderTextColor:He,value:V&&null!=o?V(o):o,onChangeText:e=>{r&&r(k?k(e):e)},onFocus:Re,onBlur:Fe,editable:xe,readOnly:y,secureTextEntry:te&&!Z,multiline:ne,autoCapitalize:te?"none":void 0,autoCorrect:!te&&void 0,maxLength:w,selectionColor:Ie,accessibilityLabel:We,accessibilityState:{disabled:x},"aria-disabled":x,testID:M,...O}),Pe?(0,_jsxRuntime.jsx)(_FieldBase.RequiredPlaceholder,{text:a,color:He,fontSize:X.text,weightStyle:De.weightStyle,align:ne?"top":"center",paddingTop:ne?ae:void 0,textAlign:T}):null]})]}),qe.node]}),it]}),de||Ee?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[W.footerRow,{marginTop:X.messageGap}],children:[de?(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[W.messageRow,{columnGap:G.spacing.xs,opacity:ye}],accessibilityLiveRegion:le?"polite":"none",children:[le?(0,_jsxRuntime.jsx)(_FieldBase.FieldErrorGlyph,{size:X.messageText,color:Oe}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.messageText,{color:Oe,fontSize:X.messageText,...(0,_index2.fontFor)(G,"normal")},q],children:(0,_jsxRuntime.jsx)(_Notation.NotationInkContext.Provider,{value:Ge,children:Me})})]}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:W.footerSpacer}),Ee?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.counterText,{color:G.colors.text.tertiary,fontSize:X.messageText,...(0,_index2.fontFor)(G,"normal")}],children:Ee}):null]}):null]})});Input.displayName="Input";const buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},fieldRow:{flexDirection:"row"},fieldWrapper:{position:"relative",overflow:"visible",flex:1},action:{flexShrink:0},input:{padding:e.spacing.none,margin:e.spacing.none,includeFontPadding:!1},prefix:{flexShrink:0,includeFontPadding:!1},prefixNode:{flexShrink:0},inputWrap:{flex:1,alignSelf:"stretch",justifyContent:"center"},unit:{includeFontPadding:!1},trailingRow:{flexDirection:"row",alignItems:"center",columnGap:e.spacing.sm},footerRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",columnGap:e.spacing.sm},footerSpacer:{flex:1},messageRow:{flex:1,flexDirection:"row",alignItems:"center"},messageText:{flexShrink:1,includeFontPadding:!1},counterText:{flexShrink:0,includeFontPadding:!1}});var _default=exports.default=Input;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Input=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index4=require("../Button/index.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_useFloatingLabel=require("../FieldBase/useFloatingLabel.js"),_Notation=require("../Notation/Notation.js"),_jsxRuntime=require("react/jsx-runtime");const Input=exports.Input=(0,_react.forwardRef)((e,t)=>{const{label:i,help:n,placeholder:a,value:o,onChangeText:s,error:r,helperText:l,type:d="input",secureTextEntry:c=!1,showPasswordToggle:u=!1,disabled:x=!1,multiline:p=!1,leftIcon:f,rightIcon:_,unit:g,unitStyle:m,prefix:v,prefixStyle:h,readOnly:j=!1,action:y,actionStyle:b,size:N="md",variant:R,labelMode:S,required:w=!1,maxLength:F,showCounter:I=!0,textAlign:T,format:V,parse:A,style:B,containerStyle:z,inputStyle:q,labelStyle:C,messageStyle:L,borderRadius:k,onFocus:D,onBlur:P,accessibilityLabel:H,testID:M,editable:O,...E}=e,G=(0,_index2.useTheme)(),W=(0,_react.useMemo)(()=>buildStyles(G),[G]),$=(0,_index2.resolveFieldSize)(G,N),X=G.components.input[N]["multiline-min-height"],J=Math.round(1.4*$.text),K=R??G.settings.components.input?.defaultVariant??G.settings.components.field?.defaultVariant??"outlined",Q=S??G.settings.components.input?.defaultLabelMode??"top",[U,Y]=(0,_react.useState)(!1),[Z,ee]=(0,_react.useState)(!1),te="password"===d||u||c,ie="password"===d||u,ne="textarea"===d||p,ae=ne?Math.round(.1*$.text):0,oe="string"==typeof o&&o.length>0,se=(0,_FieldBase.hasFieldText)(r),re=!0===r||se,le=(0,_FieldBase.hasFieldText)(l),de=se||!re&&le,ce=(0,_FieldBase.hasFieldText)(i),ue=(0,_FieldBase.hasFieldText)(v),xe=!x&&!1!==O,pe=U||oe||ue,fe=(0,_react.useRef)(null),ge=(0,_react.useMemo)(()=>(0,_index3.mergeRefs)(fe,t),[t]),me=(0,_react.useCallback)(()=>{xe&&fe.current?.focus()},[xe]),ve=ce&&"float"===Q,he=(0,_react.useRef)((0,_index2.createAnimatedValue)(0)).current,je=(0,_react.useRef)((0,_index2.createAnimatedValue)(de?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(je,{toValue:de?1:0,duration:G.motion.duration.fast,easing:_reactNative.Easing.bezier(...G.motion.ease["in-out"]),useNativeDriver:!0});return e.start(),()=>e.stop()},[de,je,G.motion.duration.fast,G.motion.ease["in-out"]]);const ye=(0,_index.useReducedMotion)(),be=G.settings.components.input?.shakeOnError??!1,Ne=(0,_react.useRef)(re);(0,_react.useEffect)(()=>{if(!be)return void(Ne.current=re);let e;return re&&!Ne.current&&(ye||((0,_index2.setNativeValue)(he,0),e=_reactNative.Animated.sequence([_reactNative.Animated.timing(he,{toValue:1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(he,{toValue:-1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(he,{toValue:1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(he,{toValue:-1,duration:50,useNativeDriver:!0}),_reactNative.Animated.timing(he,{toValue:0,duration:100,useNativeDriver:!0})]),e.start()),(0,_index3.triggerHaptic)("notificationError")),Ne.current=re,()=>e?.stop()},[re,he,be,ye]);const Re=(0,_react.useCallback)(e=>{Y(!0),D?.(e)},[D]),Se=(0,_react.useCallback)(e=>{Y(!1),P?.(e)},[P]),we=(0,_react.useCallback)(()=>{(0,_index3.triggerHaptic)("selection"),ee(e=>!e)},[]),Fe=G.colors["field-caret"],Ie=k??$.radius,Te=G.settings.components.input?.tintLabelOnFocus??!1,Ve=U&&Te?G.colors["field-border-focus"]:G.colors["field-label"],Ae=he.interpolate({inputRange:[-1,0,1],outputRange:[-6,0,6]}),Be=Boolean(_)||Boolean(g)||ie,ze="underline"===K,qe=f?$.icon+G.space.md+1+G.space.md:0,Ce=(0,_useFloatingLabel.useFloatingLabel)({label:i,enabled:ve,floated:pe,required:w,variant:K,sizeTokens:$,leadingOffset:qe,trailingOffset:Be?$.icon+G.space.sm:0,textAlign:T,paddingLeft:ze?G.space.none:$["padding-x"],lineHeight:ne?J:void 0,restNudge:ae,floatTrim:ne?2:0,color:Ve,style:C}),Le=(0,_FieldBase.resolveFieldTextStyle)(G,{disabled:x}),ke=Le.color,De=Le.placeholderColor,Pe=w&&!ce&&!oe&&"string"==typeof a&&a.length>0,He=re?r:l,Me=I&&"number"==typeof F&&"string"==typeof o?`${o.length} / ${F}`:null,Oe=re?G.colors["field-message"]:G.colors["text-muted"],Ee=(0,_Notation.useNotationInk)(L,$["message-text"],Oe),Ge=H??(0,_FieldBase.fieldTextAsString)(i)??a,We=x?G.colors["field-icon-disabled"]:U?G.colors["field-icon-focus"]:G.colors["field-icon"],$e={focused:U,disabled:x,error:re,color:We,size:$.icon},renderSlot=e=>(0,_slotIcon.renderSlotIcon)(e,$e),Xe=(()=>{if(ie){const e=(Z?G.settings.icons.eyeOff:G.settings.icons.eye)??(Z?_defaultIcons.defaultIcons.eyeOff:_defaultIcons.defaultIcons.eye);return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:we,disabled:!xe,hitSlop:8,accessibilityRole:"button",accessibilityLabel:Z?"Hide password":"Show password",children:e({size:$.icon,color:We})})}const e=g?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.unit,{fontSize:$.text,color:De},m],children:g}):null,t=_?(0,_jsxRuntime.jsx)(_reactNative.View,{children:renderSlot(_)}):null;return e&&t?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W.trailingRow,children:[e,t]}):e??t})(),Je=f?(0,_jsxRuntime.jsx)(_reactNative.View,{children:renderSlot(f)}):null,Ke=_reactNative.StyleSheet.flatten(h),Qe=Ke?.fontSize??$.text,Ue=Ke?.color??De,Ye=(0,_react.useMemo)(()=>({fontSize:Qe,color:Ue}),[Qe,Ue]),Ze=ue?"string"==typeof v||"number"==typeof v?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.prefix,{fontSize:$.text,color:De,marginRight:G.space.xs,lineHeight:ne?J:void 0,paddingTop:ne?ae:void 0},h],children:v}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[W.prefixNode,{marginRight:G.space.xs,minHeight:ne?J:void 0,justifyContent:"center",paddingTop:ne?ae:void 0}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.prefix,{fontSize:$.text,color:De,lineHeight:ne?J:void 0},h],children:(0,_jsxRuntime.jsx)(_Notation.NotationInkContext.Provider,{value:Ye,children:v})})}):null,et=y?(0,_jsxRuntime.jsx)(_index4.Button,{variant:y.variant??"outline",tone:y.tone??"primary",size:N,title:y.label,leftIcon:y.icon,loading:y.loading,disabled:x||y.disabled,onPress:y.onPress,pressAnimation:!1,testID:y.testID,style:[W.action,{minHeight:$["min-height"],alignSelf:ne?"flex-start":"stretch"},b]}):null;return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[W.container,{transform:[{translateX:Ae}]},B],children:[ce&&!ve?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:N,required:w,help:n,color:Ve,style:C,children:i}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[W.fieldRow,{columnGap:G.space.sm,alignItems:ne?"flex-start":"stretch"}],children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W.fieldWrapper,children:[(0,_jsxRuntime.jsxs)(_FieldBase.FieldBase,{size:N,variant:K,focused:U,disabled:x,error:re,filled:oe,minHeight:ne?X:void 0,borderRadius:Ie,leading:Je,leadingDivider:null!=f,paddingLeft:ze?G.space.none:void 0,trailing:Xe,slotAlign:ne?"top":"center",slotLineHeight:ne?J:void 0,topNotch:Ce.topNotch,onPress:me,pressFeedback:!1,style:z,children:[Ze,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W.inputWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:ge,style:[W.input,{color:ke,fontSize:$.text,...Le.weightStyle,paddingLeft:ze?G.space.none:void 0,minHeight:ne?X-2*$["padding-y"]:void 0,lineHeight:ne?J:void 0,paddingTop:ne?ae:void 0,textAlignVertical:ne?"top":"center"},q],textAlign:T,placeholder:ve&&!pe||Pe?void 0:a,placeholderTextColor:De,value:V&&null!=o?V(o):o,onChangeText:e=>{s&&s(A?A(e):e)},onFocus:Re,onBlur:Se,editable:xe,readOnly:j,secureTextEntry:te&&!Z,multiline:ne,autoCapitalize:te?"none":void 0,autoCorrect:!te&&void 0,maxLength:F,selectionColor:Fe,accessibilityLabel:Ge,accessibilityState:{disabled:x},"aria-disabled":x,testID:M,...E}),Pe?(0,_jsxRuntime.jsx)(_FieldBase.RequiredPlaceholder,{text:a,color:De,fontSize:$.text,weightStyle:Le.weightStyle,align:ne?"top":"center",paddingTop:ne?ae:void 0,textAlign:T}):null]})]}),Ce.node]}),et]}),de||Me?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[W.footerRow,{marginTop:$["message-gap"]}],children:[de?(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[W.messageRow,{columnGap:G.space.xs,opacity:je}],accessibilityLiveRegion:re?"polite":"none",children:[re?(0,_jsxRuntime.jsx)(_FieldBase.FieldErrorGlyph,{size:$["message-text"],color:Oe}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.messageText,{color:Oe,fontSize:$["message-text"],...(0,_index2.fontFor)(G,"normal")},L],children:(0,_jsxRuntime.jsx)(_Notation.NotationInkContext.Provider,{value:Ee,children:He})})]}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:W.footerSpacer}),Me?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[W.counterText,{color:G.colors["text-subtle"],fontSize:$["message-text"],...(0,_index2.fontFor)(G,"normal")}],children:Me}):null]}):null]})});Input.displayName="Input";const buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},fieldRow:{flexDirection:"row"},fieldWrapper:{position:"relative",overflow:"visible",flex:1},action:{flexShrink:0},input:{padding:e.space.none,margin:e.space.none,includeFontPadding:!1},prefix:{flexShrink:0,includeFontPadding:!1},prefixNode:{flexShrink:0},inputWrap:{flex:1,alignSelf:"stretch",justifyContent:"center"},unit:{includeFontPadding:!1},trailingRow:{flexDirection:"row",alignItems:"center",columnGap:e.space.sm},footerRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",columnGap:e.space.sm},footerSpacer:{flex:1},messageRow:{flex:1,flexDirection:"row",alignItems:"center"},messageText:{flexShrink:1,includeFontPadding:!1},counterText:{flexShrink:0,includeFontPadding:!1}});var _default=exports.default=Input;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.KeyboardAwareScrollView=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_index=require("../../theme/index.js"),_jsxRuntime=require("react/jsx-runtime");const tapAreaStyle={flexGrow:1},KeyboardAwareScrollView=exports.KeyboardAwareScrollView=(0,_react.forwardRef)((e,r)=>{const{children:t,bottomOffset:o=24,extraKeyboardSpace:a=0,safeAreaEdges:i=["bottom"],refreshing:s=!1,onRefresh:l,dismissOnTapOutside:n=!1,contentContainerStyle:d,refreshControl:c,...u}=e,f=(0,_index.useTheme)(),b=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),y=i.includes("bottom"),p={paddingBottom:y?b.bottom:0,...i.includes("top")?{paddingTop:b.top}:null,...i.includes("left")?{paddingLeft:b.left}:null,...i.includes("right")?{paddingRight:b.right}:null},x=c??(l?(0,_jsxRuntime.jsx)(_reactNative.RefreshControl,{refreshing:s,onRefresh:l,tintColor:f.colors.primary,colors:[f.colors.primary],progressBackgroundColor:f.colors.background.elevated,titleColor:f.colors.text.secondary}):void 0);return(0,_jsxRuntime.jsx)(_reactNativeKeyboardController.KeyboardAwareScrollView,{ref:r,bottomOffset:o,extraKeyboardSpace:a-(y?b.bottom:0),keyboardShouldPersistTaps:"handled",keyboardDismissMode:"none",contentContainerStyle:[d,p],refreshControl:x,...u,children:n?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{accessible:!1,onPress:_reactNative.Keyboard.dismiss,style:tapAreaStyle,children:t}):t})});KeyboardAwareScrollView.displayName="KeyboardAwareScrollView";var _default=exports.default=KeyboardAwareScrollView;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.KeyboardAwareScrollView=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_index=require("../../theme/index.js"),_jsxRuntime=require("react/jsx-runtime");const tapAreaStyle={flexGrow:1},KeyboardAwareScrollView=exports.KeyboardAwareScrollView=(0,_react.forwardRef)((e,r)=>{const{children:t,bottomOffset:o=24,extraKeyboardSpace:a=0,safeAreaEdges:i=["bottom"],refreshing:s=!1,onRefresh:l,dismissOnTapOutside:n=!1,contentContainerStyle:d,refreshControl:c,...u}=e,f=(0,_index.useTheme)(),b=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),y=i.includes("bottom"),p={paddingBottom:y?b.bottom:0,...i.includes("top")?{paddingTop:b.top}:null,...i.includes("left")?{paddingLeft:b.left}:null,...i.includes("right")?{paddingRight:b.right}:null},x=c??(l?(0,_jsxRuntime.jsx)(_reactNative.RefreshControl,{refreshing:s,onRefresh:l,tintColor:f.colors.primary,colors:[f.colors.primary],progressBackgroundColor:f.colors.surface,titleColor:f.colors["text-muted"]}):void 0);return(0,_jsxRuntime.jsx)(_reactNativeKeyboardController.KeyboardAwareScrollView,{ref:r,bottomOffset:o,extraKeyboardSpace:a-(y?b.bottom:0),keyboardShouldPersistTaps:"handled",keyboardDismissMode:"none",contentContainerStyle:[d,p],refreshControl:x,...u,children:n?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{accessible:!1,onPress:_reactNative.Keyboard.dismiss,style:tapAreaStyle,children:t}):t})});KeyboardAwareScrollView.displayName="KeyboardAwareScrollView";var _default=exports.default=KeyboardAwareScrollView;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.KeyboardToolbar=void 0;var _reactNative=require("react-native"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_FormContext=require("../../form/FormContext.js"),_index=require("../../theme/index.js"),_index2=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");const NavButton=({label:e,accessibilityLabel:t,onPress:r,theme:o})=>(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:r,accessibilityRole:"button",accessibilityLabel:t,hitSlop:8,style:{paddingHorizontal:o.spacing.sm},children:(0,_jsxRuntime.jsx)(_index2.Text,{variant:"body",weight:"semibold",size:"lg",color:"link",children:e})}),KeyboardToolbar=e=>{const{doneLabel:t="Done",showNavigation:r=!0,onDone:o,onNext:i,onPrev:s,leading:a,style:l,testID:n}=e,c=(0,_index.useTheme)(),b=(0,_FormContext.useOptionalFormContext)();if(!(0,_reactNativeKeyboardController.useKeyboardState)(e=>e.isVisible))return null;const d=o??(()=>{_reactNativeKeyboardController.KeyboardController.dismiss()}),x=s??b?.focusPrev??(()=>_reactNativeKeyboardController.KeyboardController.setFocusTo("prev")),u=i??b?.focusNext??(()=>_reactNativeKeyboardController.KeyboardController.setFocusTo("next"));return(0,_jsxRuntime.jsx)(_reactNativeKeyboardController.KeyboardStickyView,{style:styles.anchor,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{testID:n,accessibilityRole:"toolbar",style:[styles.bar,{backgroundColor:c.colors.background.elevated,borderTopColor:c.colors.border.primary,paddingHorizontal:c.spacing.md},l],children:[r?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.nav,children:[(0,_jsxRuntime.jsx)(NavButton,{label:"‹",accessibilityLabel:"Previous field",onPress:x,theme:c}),(0,_jsxRuntime.jsx)(NavButton,{label:"›",accessibilityLabel:"Next field",onPress:u,theme:c})]}):(0,_jsxRuntime.jsx)(_reactNative.View,{}),a,(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.spacer}),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:d,accessibilityRole:"button",accessibilityLabel:t,hitSlop:8,children:(0,_jsxRuntime.jsx)(_index2.Text,{variant:"body",weight:"semibold",color:"link",children:t})})]})})};exports.KeyboardToolbar=KeyboardToolbar;const styles=_reactNative.StyleSheet.create({anchor:{position:"absolute",left:0,right:0,bottom:0},bar:{height:44,flexDirection:"row",alignItems:"center",borderTopWidth:_reactNative.StyleSheet.hairlineWidth},nav:{flexDirection:"row",alignItems:"center"},spacer:{flex:1}});var _default=exports.default=KeyboardToolbar;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.KeyboardToolbar=void 0;var _reactNative=require("react-native"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_FormContext=require("../../form/FormContext.js"),_index=require("../../theme/index.js"),_index2=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");const NavButton=({label:e,accessibilityLabel:t,onPress:r,theme:o})=>(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:r,accessibilityRole:"button",accessibilityLabel:t,hitSlop:8,style:{paddingHorizontal:o.space.sm},children:(0,_jsxRuntime.jsx)(_index2.Text,{variant:"body",weight:"semibold",size:"lg",color:"link",children:e})}),KeyboardToolbar=e=>{const{doneLabel:t="Done",showNavigation:r=!0,onDone:o,onNext:i,onPrev:s,leading:a,style:l,testID:n}=e,c=(0,_index.useTheme)(),b=(0,_FormContext.useOptionalFormContext)();if(!(0,_reactNativeKeyboardController.useKeyboardState)(e=>e.isVisible))return null;const d=o??(()=>{_reactNativeKeyboardController.KeyboardController.dismiss()}),x=s??b?.focusPrev??(()=>_reactNativeKeyboardController.KeyboardController.setFocusTo("prev")),u=i??b?.focusNext??(()=>_reactNativeKeyboardController.KeyboardController.setFocusTo("next"));return(0,_jsxRuntime.jsx)(_reactNativeKeyboardController.KeyboardStickyView,{style:styles.anchor,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{testID:n,accessibilityRole:"toolbar",style:[styles.bar,{backgroundColor:c.colors.surface,borderTopColor:c.colors.border,paddingHorizontal:c.space.md},l],children:[r?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.nav,children:[(0,_jsxRuntime.jsx)(NavButton,{label:"‹",accessibilityLabel:"Previous field",onPress:x,theme:c}),(0,_jsxRuntime.jsx)(NavButton,{label:"›",accessibilityLabel:"Next field",onPress:u,theme:c})]}):(0,_jsxRuntime.jsx)(_reactNative.View,{}),a,(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.spacer}),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:d,accessibilityRole:"button",accessibilityLabel:t,hitSlop:8,children:(0,_jsxRuntime.jsx)(_index2.Text,{variant:"body",weight:"semibold",color:"link",children:t})})]})})};exports.KeyboardToolbar=KeyboardToolbar;const styles=_reactNative.StyleSheet.create({anchor:{position:"absolute",left:0,right:0,bottom:0},bar:{height:44,flexDirection:"row",alignItems:"center",borderTopWidth:_reactNative.StyleSheet.hairlineWidth},nav:{flexDirection:"row",alignItems:"center"},spacer:{flex:1}});var _default=exports.default=KeyboardToolbar;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ListItem=void 0;var cache,_react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeSvg=_interopRequireWildcard(require("react-native-svg")),_useFlickGuard=require("../../hooks/useFlickGuard.js"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_mergeRefs=require("../../utils/mergeRefs.js"),_themeStyles=require("../../utils/themeStyles.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_index2=require("../Button/index.js"),_index3=require("../IconBadge/index.js"),_useContextMenu=require("../Menu/useContextMenu.js"),_index4=require("../Skeleton/index.js"),_index5=require("../Swipeable/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var i,s,n=Object.defineProperty,r={__proto__:null,default:e};if(Object(e)!==e)return r;if(cache||"function"!=typeof WeakMap||(cache=new WeakMap),cache){if(cache.has(e))return cache.get(e);cache.set(e,r)}for(s in e)"default"!==s&&{}.hasOwnProperty.call(e,s)&&((i=n&&Object.getOwnPropertyDescriptor(e,s))&&(i.get||i.set)?n(r,s,i):r[s]=e[s]);return r}const Chevron=({color:e})=>{const t=(0,_index.useTheme)();return(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:(t.icons?.chevronRight??_defaultIcons.defaultIcons.chevronRight)({size:20,color:e})})},BADGE_SIZE={sm:"sm",md:"md",lg:"lg"},RIGHT_BELOW_FONT_SCALE=1.2,SelectionBox=({checked:e,disabled:t})=>{const i=(0,_index.useTheme)(),s=(0,_index.resolveCheckboxSize)(i,"md").boxSize,n=Math.round(.72*s);return(0,_jsxRuntime.jsx)(_reactNative.View,{accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",pointerEvents:"none",style:{width:s,height:s,alignItems:"center",justifyContent:"center",borderWidth:i.colors.border.width,borderRadius:i.radius.sm,..._corners.smoothCorners,borderColor:e?i.colors.primary:i.colors.border.primary,backgroundColor:e?i.colors.primary:t?i.colors.surface.disabled:"transparent"},children:e?(0,_jsxRuntime.jsx)(_reactNativeSvg.default,{width:n,height:n,viewBox:"0 0 24 24",children:(0,_jsxRuntime.jsx)(_reactNativeSvg.Path,{d:"M5 12.5l4.5 4.5L19 7.5",stroke:i.colors.onPrimary,strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round",fill:"none"})}):null})},isActionList=e=>Array.isArray(e)&&e.length>0&&e.every(e=>null!=e&&"object"==typeof e&&!_react.default.isValidElement(e)&&"label"in e),renderActions=e=>isActionList(e)?e.map(e=>(0,_jsxRuntime.jsx)(_index2.Button,{size:"sm",variant:e.variant??"outline",tone:e.tone,leftIcon:e.icon,disabled:e.disabled,testID:e.testID,title:e.label,onPress:e.onPress},e.label)):e,ListItem=exports.ListItem=_react.default.memo((0,_react.forwardRef)((e,t)=>{const{title:i,loading:s=!1,subtitle:n,description:r,children:l,titleLines:o=1,subtitleLines:a=1,left:c,icon:d,iconTone:u="primary",right:x,rightPlacement:m="auto",selectable:h=!1,checked:_=!1,onCheckedChange:g,actions:j,onPress:p,haptic:y,selected:b=!1,disabled:f=!1,size:v="md",divider:R=!1,chevron:S=!1,leftActions:w,rightActions:I,contextMenu:k,accessibilityLabel:L,accessibilityHint:N,style:C,containerStyle:A,titleStyle:V,subtitleStyle:q,descriptionStyle:P,leftSlotStyle:T,rightSlotStyle:B,testID:D}=e,M=(0,_index.useTheme)(),z=(0,_react.useMemo)(()=>(0,_index.resolveListItemSize)(M,v),[M,v]),F=stylesFor(M),{fontScale:W}=(0,_reactNative.useWindowDimensions)(),H=!!x&&("below"===m||"auto"===m&&W>1.2),O=(0,_useContextMenu.useContextMenu)(f?void 0:k,{haptic:y||!1,testID:D}),E=(0,_react.useMemo)(()=>(0,_mergeRefs.mergeRefs)(t,O.hostRef),[t,O.hostRef]),G=h||!!p,U=G||O.enabled,Y=U&&!f,{style:Z,pressIn:J,pressOut:K}=(0,_usePressAnimation.usePressAnimation)({enabled:Y}),Q=(0,_useFlickGuard.useFlickGuard)(),X=L??("string"==typeof i?i:void 0),isText=e=>"string"==typeof e||"number"==typeof e,$=c??(void 0===d?null:(0,_jsxRuntime.jsx)(_index3.IconBadge,{icon:d,tone:u,size:BADGE_SIZE[v]})),ee=h?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:F.selectionLead,children:[(0,_jsxRuntime.jsx)(SelectionBox,{checked:_,disabled:f}),$?(0,_jsxRuntime.jsx)(_reactNative.View,{style:F.selectionLeadContent,children:$}):null]}):$,te=null!=j&&!1!==j&&!(Array.isArray(j)&&0===j.length),ie=R&&!te,se=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[F.row,{paddingVertical:z.paddingY,minHeight:z.minHeight,backgroundColor:b?M.colors.surface.selected:"transparent"},ie?F.divider:null,f?F.disabled:null,A],children:[ee?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[F.leftSlot,T],children:ee}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:F.middle,children:[null==i||isText(i)?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[F.title,{fontSize:z.titleText,...(0,_index.fontFor)(M,"medium"),color:f?M.colors.text.disabled:M.colors.text.primary},V],numberOfLines:o,children:i??" "}):i,null==n||""===n?null:isText(n)?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[F.subtitle,{fontSize:z.subtitleText,color:f?M.colors.text.disabled:M.colors.text.secondary},q],numberOfLines:a,children:n}):n,r?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[F.description,{fontSize:z.subtitleText,color:f?M.colors.text.disabled:M.colors.text.tertiary},P],numberOfLines:2,children:r}):null,null!=l&&!1!==l?(0,_jsxRuntime.jsx)(_reactNative.View,{style:F.body,children:l}):null,H?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[F.rightBelow,B],children:x}):null]}),x&&!H||S?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[F.rightSlot,H?null:B],children:[H?null:x,S?(0,_jsxRuntime.jsx)(_reactNative.View,{style:x&&!H?F.chevronWithRight:null,children:(0,_jsxRuntime.jsx)(Chevron,{color:f?M.colors.text.disabled:M.colors.text.tertiary})}):null]}):null]}),ne=U?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[Z,C],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:E,onPress:e=>{Y&&G&&!Q.isFlick(e)&&(y&&(0,_hapticUtils.triggerHaptic)(y),h?g?.(!_):p?.(e))},onPressIn:e=>{Q.onPressIn(e),J()},onPressOut:K,disabled:!Y,accessibilityRole:h?"checkbox":p?"button":void 0,accessibilityLabel:X,accessibilityHint:N,accessibilityState:h?{checked:_,disabled:!Y}:{selected:b,disabled:!Y},"aria-disabled":!Y,...h?{"aria-checked":_}:{"aria-selected":b},testID:D,android_ripple:{color:M.colors.surface.pressed,borderless:!1},style:({pressed:e})=>e?F.pressed:null,...O.hostProps,children:se})}):(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,accessibilityRole:"none",accessibilityLabel:X,accessibilityHint:N,accessibilityState:{selected:b,disabled:f},"aria-selected":b,"aria-disabled":f,testID:D,style:C,children:se}),re=w&&w.length>0||I&&I.length>0,le=te?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[b?{backgroundColor:M.colors.surface.selected}:null,R?F.divider:null],children:[ne,(0,_jsxRuntime.jsx)(_reactNative.View,{style:F.actions,children:renderActions(j)})]}):ne,oe=re?(0,_jsxRuntime.jsx)(_index5.Swipeable,{leftActions:w,rightActions:I,accessibilityLabel:X,children:le}):le;return s?(0,_jsxRuntime.jsx)(ListItemSkeleton,{...e}):O.enabled?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[oe,O.renderSurface((0,_jsxRuntime.jsx)(_reactNative.View,{style:F.preview,children:se}))]}):oe}));ListItem.displayName="ListItem";const ListItemSkeleton=({subtitle:e,description:t,left:i,icon:s,right:n,chevron:r,size:l="md",containerStyle:o,style:a})=>{const c=(0,_index.useTheme)(),d=(0,_index.resolveListItemSize)(c,l),u=Math.round(1.15*d.titleText),x=Math.round(1.15*d.subtitleText);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[{flexDirection:"row",alignItems:"center",paddingHorizontal:c.spacing.md,paddingVertical:d.paddingY,minHeight:d.minHeight},o,a],children:[void 0!==i||void 0!==s?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{marginRight:c.spacing.sm},children:(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"circle",width:40,height:40})}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{flex:1},children:[(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"70%",height:u,style:{marginBottom:c.spacing.xs}}),void 0!==e?(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"50%",height:x,style:void 0!==t?{marginBottom:c.spacing.xs}:void 0}):null,void 0!==t?(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"85%",height:x}):null]}),void 0!==n||r?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{marginLeft:c.spacing.sm},children:(0,_jsxRuntime.jsx)(_index4.Skeleton,{width:20,height:20,radius:"sm"})}):null]})};ListItemSkeleton.displayName="ListItemSkeleton",ListItem.Skeleton=ListItemSkeleton;const buildStyles=e=>_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center",paddingHorizontal:e.spacing.md},divider:{borderBottomWidth:_reactNative.StyleSheet.hairlineWidth,borderBottomColor:e.colors.border.primary},pressed:{backgroundColor:e.colors.surface.pressed},disabled:{opacity:.55},leftSlot:{marginRight:e.spacing.md,alignItems:"center",justifyContent:"center"},middle:{flex:1,flexDirection:"column",justifyContent:"center"},selectionLead:{flexDirection:"row",alignItems:"center"},selectionLeadContent:{marginLeft:e.spacing.sm},body:{marginTop:e.spacing.xs},rightBelow:{alignSelf:"flex-start",flexDirection:"row",alignItems:"center",marginTop:e.spacing.xs},rightSlot:{marginLeft:e.spacing.md,alignItems:"center",justifyContent:"center",flexDirection:"row"},actions:{flexDirection:"row",flexWrap:"wrap",gap:e.spacing.sm,paddingHorizontal:e.spacing.md,paddingBottom:e.spacing.md},chevronWithRight:{marginLeft:e.spacing.xs},preview:{flex:1,backgroundColor:e.colors.background.elevated,borderRadius:e.radius.md,..._corners.smoothCorners,overflow:"hidden"},title:{letterSpacing:e.typography.letterSpacing.normal},subtitle:{marginTop:e.spacing.xxs,...(0,_index.fontFor)(e,"normal")},description:{marginTop:e.spacing.xxs,...(0,_index.fontFor)(e,"normal")}}),stylesFor=(0,_themeStyles.themeStyles)(buildStyles);var _default=exports.default=ListItem;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ListItem=void 0;var cache,_react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeSvg=_interopRequireWildcard(require("react-native-svg")),_useFlickGuard=require("../../hooks/useFlickGuard.js"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_mergeRefs=require("../../utils/mergeRefs.js"),_themeStyles=require("../../utils/themeStyles.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_index2=require("../Button/index.js"),_index3=require("../IconBadge/index.js"),_useContextMenu=require("../Menu/useContextMenu.js"),_index4=require("../Skeleton/index.js"),_index5=require("../Swipeable/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if(!t&&e&&e.__esModule)return e;var i,s,r=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(s in e)"default"!==s&&{}.hasOwnProperty.call(e,s)&&((i=r&&Object.getOwnPropertyDescriptor(e,s))&&(i.get||i.set)?r(n,s,i):n[s]=e[s]);return n}const Chevron=({color:e})=>{const t=(0,_index.useTheme)();return(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:(t.settings.icons.chevronRight??_defaultIcons.defaultIcons.chevronRight)({size:20,color:e})})},BADGE_SIZE={sm:"sm",md:"md",lg:"lg"},RIGHT_BELOW_FONT_SCALE=1.2,SelectionBox=({checked:e,disabled:t})=>{const i=(0,_index.useTheme)(),s=(0,_index.resolveCheckboxSize)(i,"md")["box-size"],r=Math.round(.72*s);return(0,_jsxRuntime.jsx)(_reactNative.View,{accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",pointerEvents:"none",style:{width:s,height:s,alignItems:"center",justifyContent:"center",borderWidth:i.size.border,borderRadius:i.radius.sm,..._corners.smoothCorners,borderColor:e?i.colors.primary:i.colors.border,backgroundColor:e?i.colors.primary:t?i.colors["surface-disabled"]:"transparent"},children:e?(0,_jsxRuntime.jsx)(_reactNativeSvg.default,{width:r,height:r,viewBox:"0 0 24 24",children:(0,_jsxRuntime.jsx)(_reactNativeSvg.Path,{d:"M5 12.5l4.5 4.5L19 7.5",stroke:i.colors["on-primary"],strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round",fill:"none"})}):null})},isActionList=e=>Array.isArray(e)&&e.length>0&&e.every(e=>null!=e&&"object"==typeof e&&!_react.default.isValidElement(e)&&"label"in e),renderActions=e=>isActionList(e)?e.map(e=>(0,_jsxRuntime.jsx)(_index2.Button,{size:"sm",variant:e.variant??"outline",tone:e.tone,leftIcon:e.icon,disabled:e.disabled,testID:e.testID,title:e.label,onPress:e.onPress},e.label)):e,ListItem=exports.ListItem=_react.default.memo((0,_react.forwardRef)((e,t)=>{const{title:i,loading:s=!1,subtitle:r,description:n,children:l,titleLines:o=1,subtitleLines:a=1,left:c,icon:d,iconTone:u="primary",right:x,rightPlacement:m="auto",selectable:h=!1,checked:_=!1,onCheckedChange:j,actions:p,onPress:g,haptic:b,selected:y=!1,disabled:f=!1,size:v="md",divider:R=!1,chevron:S=!1,leftActions:w,rightActions:I,contextMenu:k,accessibilityLabel:L,accessibilityHint:N,style:C,containerStyle:A,titleStyle:V,subtitleStyle:q,descriptionStyle:P,leftSlotStyle:B,rightSlotStyle:D,testID:z}=e,M=(0,_index.useTheme)(),F=(0,_react.useMemo)(()=>(0,_index.resolveListItemSize)(M,v),[M,v]),T=stylesFor(M),{fontScale:W}=(0,_reactNative.useWindowDimensions)(),O=!!x&&("below"===m||"auto"===m&&W>1.2),H=(0,_useContextMenu.useContextMenu)(f?void 0:k,{haptic:b||!1,testID:z}),E=(0,_react.useMemo)(()=>(0,_mergeRefs.mergeRefs)(t,H.hostRef),[t,H.hostRef]),G=h||!!g,U=G||H.enabled,Z=U&&!f,{style:J,pressIn:K,pressOut:Q}=(0,_usePressAnimation.usePressAnimation)({enabled:Z}),X=(0,_useFlickGuard.useFlickGuard)(),Y=L??("string"==typeof i?i:void 0),isText=e=>"string"==typeof e||"number"==typeof e,$=c??(void 0===d?null:(0,_jsxRuntime.jsx)(_index3.IconBadge,{icon:d,tone:u,size:BADGE_SIZE[v]})),ee=h?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:T.selectionLead,children:[(0,_jsxRuntime.jsx)(SelectionBox,{checked:_,disabled:f}),$?(0,_jsxRuntime.jsx)(_reactNative.View,{style:T.selectionLeadContent,children:$}):null]}):$,te=null!=p&&!1!==p&&!(Array.isArray(p)&&0===p.length),ie=R&&!te,se=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[T.row,{paddingVertical:F["padding-y"],minHeight:F["min-height"],backgroundColor:y?M.colors["surface-selected"]:"transparent"},ie?T.divider:null,f?T.disabled:null,A],children:[ee?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[T.leftSlot,B],children:ee}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:T.middle,children:[null==i||isText(i)?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[T.title,{fontSize:F["title-text"],...(0,_index.fontFor)(M,"medium"),color:f?M.colors["text-disabled"]:M.colors["text-body"]},V],numberOfLines:o,children:i??" "}):i,null==r||""===r?null:isText(r)?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[T.subtitle,{fontSize:F["subtitle-text"],color:f?M.colors["text-disabled"]:M.colors["text-muted"]},q],numberOfLines:a,children:r}):r,n?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[T.description,{fontSize:F["subtitle-text"],color:f?M.colors["text-disabled"]:M.colors["text-subtle"]},P],numberOfLines:2,children:n}):null,null!=l&&!1!==l?(0,_jsxRuntime.jsx)(_reactNative.View,{style:T.body,children:l}):null,O?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[T.rightBelow,D],children:x}):null]}),x&&!O||S?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[T.rightSlot,O?null:D],children:[O?null:x,S?(0,_jsxRuntime.jsx)(_reactNative.View,{style:x&&!O?T.chevronWithRight:null,children:(0,_jsxRuntime.jsx)(Chevron,{color:f?M.colors["text-disabled"]:M.colors["text-subtle"]})}):null]}):null]}),re=U?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[J,C],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:E,onPress:e=>{Z&&G&&!X.isFlick(e)&&(b&&(0,_hapticUtils.triggerHaptic)(b),h?j?.(!_):g?.(e))},onPressIn:e=>{X.onPressIn(e),K()},onPressOut:Q,disabled:!Z,accessibilityRole:h?"checkbox":g?"button":void 0,accessibilityLabel:Y,accessibilityHint:N,accessibilityState:h?{checked:_,disabled:!Z}:{selected:y,disabled:!Z},"aria-disabled":!Z,...h?{"aria-checked":_}:{"aria-selected":y},testID:z,android_ripple:{color:M.colors["surface-pressed"],borderless:!1},style:({pressed:e})=>e?T.pressed:null,...H.hostProps,children:se})}):(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,accessibilityRole:"none",accessibilityLabel:Y,accessibilityHint:N,accessibilityState:{selected:y,disabled:f},"aria-selected":y,"aria-disabled":f,testID:z,style:C,children:se}),ne=w&&w.length>0||I&&I.length>0,le=te?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[y?{backgroundColor:M.colors["surface-selected"]}:null,R?T.divider:null],children:[re,(0,_jsxRuntime.jsx)(_reactNative.View,{style:T.actions,children:renderActions(p)})]}):re,oe=ne?(0,_jsxRuntime.jsx)(_index5.Swipeable,{leftActions:w,rightActions:I,accessibilityLabel:Y,children:le}):le;return s?(0,_jsxRuntime.jsx)(ListItemSkeleton,{...e}):H.enabled?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[oe,H.renderSurface((0,_jsxRuntime.jsx)(_reactNative.View,{style:T.preview,children:se}))]}):oe}));ListItem.displayName="ListItem";const ListItemSkeleton=({subtitle:e,description:t,left:i,icon:s,right:r,chevron:n,size:l="md",containerStyle:o,style:a})=>{const c=(0,_index.useTheme)(),d=(0,_index.resolveListItemSize)(c,l),u=Math.round(1.15*d["title-text"]),x=Math.round(1.15*d["subtitle-text"]);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[{flexDirection:"row",alignItems:"center",paddingHorizontal:c.space.md,paddingVertical:d["padding-y"],minHeight:d["min-height"]},o,a],children:[void 0!==i||void 0!==s?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{marginRight:c.space.sm},children:(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"circle",width:40,height:40})}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{flex:1},children:[(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"70%",height:u,style:{marginBottom:c.space.xs}}),void 0!==e?(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"50%",height:x,style:void 0!==t?{marginBottom:c.space.xs}:void 0}):null,void 0!==t?(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"85%",height:x}):null]}),void 0!==r||n?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{marginLeft:c.space.sm},children:(0,_jsxRuntime.jsx)(_index4.Skeleton,{width:20,height:20,radius:"sm"})}):null]})};ListItemSkeleton.displayName="ListItemSkeleton",ListItem.Skeleton=ListItemSkeleton;const buildStyles=e=>_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center",paddingHorizontal:e.space.md},divider:{borderBottomWidth:_reactNative.StyleSheet.hairlineWidth,borderBottomColor:e.colors.border},pressed:{backgroundColor:e.colors["surface-pressed"]},disabled:{opacity:.55},leftSlot:{marginRight:e.space.md,alignItems:"center",justifyContent:"center"},middle:{flex:1,flexDirection:"column",justifyContent:"center"},selectionLead:{flexDirection:"row",alignItems:"center"},selectionLeadContent:{marginLeft:e.space.sm},body:{marginTop:e.space.xs},rightBelow:{alignSelf:"flex-start",flexDirection:"row",alignItems:"center",marginTop:e.space.xs},rightSlot:{marginLeft:e.space.md,alignItems:"center",justifyContent:"center",flexDirection:"row"},actions:{flexDirection:"row",flexWrap:"wrap",gap:e.space.sm,paddingHorizontal:e.space.md,paddingBottom:e.space.md},chevronWithRight:{marginLeft:e.space.xs},preview:{flex:1,backgroundColor:e.colors.surface,borderRadius:e.radius.md,..._corners.smoothCorners,overflow:"hidden"},title:{letterSpacing:e["letter-spacing"].normal},subtitle:{marginTop:e.space.xxs,...(0,_index.fontFor)(e,"normal")},description:{marginTop:e.space.xxs,...(0,_index.fontFor)(e,"normal")}}),stylesFor=(0,_themeStyles.themeStyles)(buildStyles);var _default=exports.default=ListItem;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useLoader=exports.loader=exports.LoaderOverlay=void 0;var _react=require("react"),_reactNative=require("react-native"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_index=require("../../theme/index.js"),_index2=require("../Spinner/index.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_SHOW_DELAY_MS=150,DEFAULT_MIN_VISIBLE_MS=400;let state={refCount:0,message:void 0};const listeners=new Set,notify=()=>{for(const e of listeners)e()},subscribe=e=>(listeners.add(e),()=>{listeners.delete(e)}),getState=()=>state,show=e=>{state={refCount:state.refCount+1,message:e??state.message},notify()},hide=()=>{if(state.refCount<=0)return;const e=state.refCount-1;state={refCount:e,message:0===e?void 0:state.message},notify()},reset=()=>{0===state.refCount&&void 0===state.message||(state={refCount:0,message:void 0},notify())},isVisible=()=>state.refCount>0,wrap=async(e,t)=>{show(t);try{return await("function"==typeof e?e():e)}finally{hide()}},loader=exports.loader={show:show,hide:hide,wrap:wrap,isVisible:isVisible,reset:reset},useLoader=()=>loader;exports.useLoader=useLoader;const LoaderOverlay=({renderIndicator:e,backdropColor:t,showDelayMs:r=150,minVisibleMs:s=400,testID:a})=>{const n=(0,_index.useTheme)(),i=(0,_usePresenceMotion.usePresenceMotion)().duration("normal"),o=(0,_react.useSyncExternalStore)(subscribe,getState),[u,c]=(0,_react.useState)(!1),l=(0,_react.useRef)(null),d=(0,_react.useRef)(null),f=(0,_react.useRef)(null),_=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,y=o.refCount>0;(0,_react.useEffect)(()=>{if(y)return null!==d.current&&(clearTimeout(d.current),d.current=null),void(u||null!==l.current||(l.current=setTimeout(()=>{l.current=null,0!==getState().refCount&&(f.current=Date.now(),c(!0))},r)));if(null!==l.current&&(clearTimeout(l.current),l.current=null),u&&null===d.current){const e=null!==f.current?Date.now()-f.current:s,t=Math.max(0,s-e);d.current=setTimeout(()=>{d.current=null,f.current=null,c(!1)},t)}},[y,u,r,s]),(0,_react.useEffect)(()=>()=>{null!==l.current&&clearTimeout(l.current),null!==d.current&&clearTimeout(d.current)},[]),(0,_react.useEffect)(()=>{u?_reactNative.Animated.timing(_,{toValue:1,duration:i,easing:_reactNative.Easing.bezier(...n.motion.easing.standard),useNativeDriver:!0}).start():_.setValue(0)},[u,i,_,n]),(0,_react.useEffect)(()=>{if(!u)return;const e=_reactNative.BackHandler.addEventListener("hardwareBackPress",()=>!0);return()=>{e.remove()}},[u]);const m=o.message;(0,_react.useEffect)(()=>{u&&m&&_reactNative.AccessibilityInfo.announceForAccessibility(m)},[u,m]);const v=(0,_react.useMemo)(()=>buildStyles(),[]);return u?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"auto",testID:a,accessible:!0,accessibilityViewIsModal:!0,accessibilityLiveRegion:"polite",accessibilityLabel:m??"Loading",accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,style:[v.overlay,{backgroundColor:t??n.colors.background.overlay,opacity:_}],children:e?e(m):(0,_jsxRuntime.jsx)(_index2.Spinner,{size:"lg",message:m})}):null};exports.LoaderOverlay=LoaderOverlay;const buildStyles=()=>_reactNative.StyleSheet.create({overlay:{..._reactNative.StyleSheet.absoluteFill,alignItems:"center",justifyContent:"center",zIndex:1e3}});
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useLoader=exports.loader=exports.LoaderOverlay=void 0;var _react=require("react"),_reactNative=require("react-native"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_index=require("../../theme/index.js"),_index2=require("../Spinner/index.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_SHOW_DELAY_MS=150,DEFAULT_MIN_VISIBLE_MS=400;let state={refCount:0,message:void 0};const listeners=new Set,notify=()=>{for(const e of listeners)e()},subscribe=e=>(listeners.add(e),()=>{listeners.delete(e)}),getState=()=>state,show=e=>{state={refCount:state.refCount+1,message:e??state.message},notify()},hide=()=>{if(state.refCount<=0)return;const e=state.refCount-1;state={refCount:e,message:0===e?void 0:state.message},notify()},reset=()=>{0===state.refCount&&void 0===state.message||(state={refCount:0,message:void 0},notify())},isVisible=()=>state.refCount>0,wrap=async(e,t)=>{show(t);try{return await("function"==typeof e?e():e)}finally{hide()}},loader=exports.loader={show:show,hide:hide,wrap:wrap,isVisible:isVisible,reset:reset},useLoader=()=>loader;exports.useLoader=useLoader;const LoaderOverlay=({renderIndicator:e,backdropColor:t,showDelayMs:r=150,minVisibleMs:s=400,testID:a})=>{const n=(0,_index.useTheme)(),i=(0,_usePresenceMotion.usePresenceMotion)().duration("default"),o=(0,_react.useSyncExternalStore)(subscribe,getState),[u,c]=(0,_react.useState)(!1),l=(0,_react.useRef)(null),d=(0,_react.useRef)(null),f=(0,_react.useRef)(null),_=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,y=o.refCount>0;(0,_react.useEffect)(()=>{if(y)return null!==d.current&&(clearTimeout(d.current),d.current=null),void(u||null!==l.current||(l.current=setTimeout(()=>{l.current=null,0!==getState().refCount&&(f.current=Date.now(),c(!0))},r)));if(null!==l.current&&(clearTimeout(l.current),l.current=null),u&&null===d.current){const e=null!==f.current?Date.now()-f.current:s,t=Math.max(0,s-e);d.current=setTimeout(()=>{d.current=null,f.current=null,c(!1)},t)}},[y,u,r,s]),(0,_react.useEffect)(()=>()=>{null!==l.current&&clearTimeout(l.current),null!==d.current&&clearTimeout(d.current)},[]),(0,_react.useEffect)(()=>{u?_reactNative.Animated.timing(_,{toValue:1,duration:i,easing:_reactNative.Easing.bezier(...n.motion.ease["in-out"]),useNativeDriver:!0}).start():_.setValue(0)},[u,i,_,n]),(0,_react.useEffect)(()=>{if(!u)return;const e=_reactNative.BackHandler.addEventListener("hardwareBackPress",()=>!0);return()=>{e.remove()}},[u]);const m=o.message;(0,_react.useEffect)(()=>{u&&m&&_reactNative.AccessibilityInfo.announceForAccessibility(m)},[u,m]);const v=(0,_react.useMemo)(()=>buildStyles(),[]);return u?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"auto",testID:a,accessible:!0,accessibilityViewIsModal:!0,accessibilityLiveRegion:"polite",accessibilityLabel:m??"Loading",accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,style:[v.overlay,{backgroundColor:t??n.colors.scrim,opacity:_}],children:e?e(m):(0,_jsxRuntime.jsx)(_index2.Spinner,{size:"lg",message:m})}):null};exports.LoaderOverlay=LoaderOverlay;const buildStyles=()=>_reactNative.StyleSheet.create({overlay:{..._reactNative.StyleSheet.absoluteFill,alignItems:"center",justifyContent:"center",zIndex:1e3}});
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Markdown=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_index2=require("../Skeleton/index.js"),_parse=require("./parse.js"),_jsxRuntime=require("react/jsx-runtime");const renderInline=(e,t,r,n="i")=>e.map((e,i)=>{const s=`${n}-${i}`;switch(e.type){case"text":return(0,_jsxRuntime.jsx)(_reactNative.Text,{children:e.value},s);case"strong":return(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{fontWeight:t.typography.fontWeight.bold},children:renderInline(e.children,t,r,s)},s);case"em":return(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{fontStyle:"italic"},children:renderInline(e.children,t,r,s)},s);case"strike":return(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{textDecorationLine:"line-through"},children:renderInline(e.children,t,r,s)},s);case"code":return(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{fontFamily:MONO,backgroundColor:t.colors.background.secondary,color:t.colors.text.primary},children:e.value},s);case"link":return(0,_jsxRuntime.jsx)(_reactNative.Text,{accessibilityRole:"link",onPress:()=>r(e.href),style:{color:t.colors.text.link,textDecorationLine:"underline"},children:renderInline(e.children,t,r,s)},s);default:return null}}),MONO=_reactNative.Platform.select({ios:"Menlo",android:"monospace",default:"monospace"}),HEADING_SCALE={1:"3xl",2:"2xl",3:"xl",4:"lg",5:"base",6:"sm"},Markdown=({children:e,onLinkPress:t,loading:r=!1,style:n,textStyle:i,testID:s})=>{const o=(0,_index.useTheme)(),a=(0,_react.useMemo)(()=>createStyles(o),[o]),l=(0,_react.useMemo)(()=>(0,_parse.parseMarkdown)(e??""),[e]),handleLink=e=>{t?t(e):_reactNative.Linking.openURL(e).catch(()=>{})};return r?(0,_jsxRuntime.jsx)(MarkdownSkeleton,{style:n,testID:s}):0===l.length?null:(0,_jsxRuntime.jsx)(_reactNative.View,{style:n,testID:s,children:l.map((e,t)=>(0,_jsxRuntime.jsx)(MarkdownBlock,{block:e,theme:o,styles:a,textStyle:i,onLinkPress:handleLink},`b-${t}`))})};exports.Markdown=Markdown,Markdown.displayName="Markdown";const MarkdownBlock=({block:e,theme:t,styles:r,textStyle:n,onLinkPress:i})=>{switch(e.type){case"heading":return(0,_jsxRuntime.jsx)(_reactNative.Text,{accessibilityRole:"header",style:[r.block,{fontSize:t.typography.fontSize[HEADING_SCALE[e.level]],fontWeight:t.typography.fontWeight.semibold,color:t.colors.text.primary},n],children:renderInline(e.children,t,i)});case"paragraph":return(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[r.block,r.body,n],children:renderInline(e.children,t,i)});case"listItem":return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[r.listRow,{marginLeft:e.depth*t.spacing.md}],children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[r.body,r.bullet,n],children:e.ordered?`${e.index}.`:"•"}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[r.body,r.listText,n],children:renderInline(e.children,t,i)})]});case"quote":return(0,_jsxRuntime.jsx)(_reactNative.View,{style:r.quote,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[r.body,r.quoteText,n],children:renderInline(e.children,t,i)})});case"codeBlock":return(0,_jsxRuntime.jsx)(_reactNative.View,{style:r.codeBlock,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:r.codeText,children:e.value})});case"rule":return(0,_jsxRuntime.jsx)(_reactNative.View,{style:r.rule});default:return null}},MarkdownSkeleton=({style:e,testID:t})=>{const r=(0,_index.useTheme)();return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:e,testID:t,children:[(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"70%",height:20,style:{marginBottom:r.spacing.sm}}),(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"100%",height:14,style:{marginBottom:r.spacing.xs}}),(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"92%",height:14,style:{marginBottom:r.spacing.xs}}),(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"60%",height:14})]})},createStyles=e=>_reactNative.StyleSheet.create({block:{marginBottom:e.spacing.sm},body:{fontSize:e.typography.fontSize.base,color:e.colors.text.primary,lineHeight:1.5*e.typography.fontSize.base},listRow:{flexDirection:"row",marginBottom:e.spacing.xs},bullet:{width:e.spacing.lg},listText:{flex:1},quote:{borderLeftWidth:3,borderLeftColor:e.colors.border.secondary,paddingLeft:e.spacing.sm,marginBottom:e.spacing.sm},quoteText:{color:e.colors.text.secondary,fontStyle:"italic"},codeBlock:{backgroundColor:e.colors.background.secondary,borderRadius:e.radius.sm,..._corners.smoothCorners,padding:e.spacing.sm,marginBottom:e.spacing.sm},codeText:{fontFamily:MONO,fontSize:e.typography.fontSize.sm,color:e.colors.text.primary},rule:{height:_reactNative.StyleSheet.hairlineWidth,backgroundColor:e.colors.border.primary,marginVertical:e.spacing.md}});
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Markdown=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_index2=require("../Skeleton/index.js"),_parse=require("./parse.js"),_jsxRuntime=require("react/jsx-runtime");const renderInline=(e,t,r,s="i")=>e.map((e,i)=>{const n=`${s}-${i}`;switch(e.type){case"text":return(0,_jsxRuntime.jsx)(_reactNative.Text,{children:e.value},n);case"strong":return(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{fontWeight:t.weight.bold},children:renderInline(e.children,t,r,n)},n);case"em":return(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{fontStyle:"italic"},children:renderInline(e.children,t,r,n)},n);case"strike":return(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{textDecorationLine:"line-through"},children:renderInline(e.children,t,r,n)},n);case"code":return(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{fontFamily:MONO,backgroundColor:t.colors["bg-subtle"],color:t.colors["text-body"]},children:e.value},n);case"link":return(0,_jsxRuntime.jsx)(_reactNative.Text,{accessibilityRole:"link",onPress:()=>r(e.href),style:{color:t.colors.link,textDecorationLine:"underline"},children:renderInline(e.children,t,r,n)},n);default:return null}}),MONO=_reactNative.Platform.select({ios:"Menlo",android:"monospace",default:"monospace"}),HEADING_SCALE={1:"3xl",2:"2xl",3:"xl",4:"lg",5:"base",6:"sm"},Markdown=({children:e,onLinkPress:t,loading:r=!1,style:s,textStyle:i,testID:n})=>{const l=(0,_index.useTheme)(),o=(0,_react.useMemo)(()=>createStyles(l),[l]),a=(0,_react.useMemo)(()=>(0,_parse.parseMarkdown)(e??""),[e]),handleLink=e=>{t?t(e):_reactNative.Linking.openURL(e).catch(()=>{})};return r?(0,_jsxRuntime.jsx)(MarkdownSkeleton,{style:s,testID:n}):0===a.length?null:(0,_jsxRuntime.jsx)(_reactNative.View,{style:s,testID:n,children:a.map((e,t)=>(0,_jsxRuntime.jsx)(MarkdownBlock,{block:e,theme:l,styles:o,textStyle:i,onLinkPress:handleLink},`b-${t}`))})};exports.Markdown=Markdown,Markdown.displayName="Markdown";const MarkdownBlock=({block:e,theme:t,styles:r,textStyle:s,onLinkPress:i})=>{switch(e.type){case"heading":return(0,_jsxRuntime.jsx)(_reactNative.Text,{accessibilityRole:"header",style:[r.block,{fontSize:t.text[HEADING_SCALE[e.level]].size,fontWeight:t.weight.semibold,color:t.colors["text-body"]},s],children:renderInline(e.children,t,i)});case"paragraph":return(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[r.block,r.body,s],children:renderInline(e.children,t,i)});case"listItem":return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[r.listRow,{marginLeft:e.depth*t.space.md}],children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[r.body,r.bullet,s],children:e.ordered?`${e.index}.`:"•"}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[r.body,r.listText,s],children:renderInline(e.children,t,i)})]});case"quote":return(0,_jsxRuntime.jsx)(_reactNative.View,{style:r.quote,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[r.body,r.quoteText,s],children:renderInline(e.children,t,i)})});case"codeBlock":return(0,_jsxRuntime.jsx)(_reactNative.View,{style:r.codeBlock,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:r.codeText,children:e.value})});case"rule":return(0,_jsxRuntime.jsx)(_reactNative.View,{style:r.rule});default:return null}},MarkdownSkeleton=({style:e,testID:t})=>{const r=(0,_index.useTheme)();return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:e,testID:t,children:[(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"70%",height:20,style:{marginBottom:r.space.sm}}),(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"100%",height:14,style:{marginBottom:r.space.xs}}),(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"92%",height:14,style:{marginBottom:r.space.xs}}),(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"60%",height:14})]})},createStyles=e=>_reactNative.StyleSheet.create({block:{marginBottom:e.space.sm},body:{fontSize:e.text.base.size,color:e.colors["text-body"],lineHeight:1.5*e.text.base.size},listRow:{flexDirection:"row",marginBottom:e.space.xs},bullet:{width:e.space.lg},listText:{flex:1},quote:{borderLeftWidth:3,borderLeftColor:e.colors["border-subtle"],paddingLeft:e.space.sm,marginBottom:e.space.sm},quoteText:{color:e.colors["text-muted"],fontStyle:"italic"},codeBlock:{backgroundColor:e.colors["bg-subtle"],borderRadius:e.radius.sm,..._corners.smoothCorners,padding:e.space.sm,marginBottom:e.space.sm},codeText:{fontFamily:MONO,fontSize:e.text.sm.size,color:e.colors["text-body"]},rule:{height:_reactNative.StyleSheet.hairlineWidth,backgroundColor:e.colors.border,marginVertical:e.space.md}});
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.MenuSurface=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_placement=require("../../utils/placement.js"),_responsive=require("../../utils/responsive.js"),_AppIcon=require("../AppIcon/AppIcon.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index2=require("../Divider/index.js"),_ModalSafeArea=require("../ModalSafeArea/ModalSafeArea.js"),_index3=require("../OptionSheet/index.js"),_index4=require("../Text/index.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_focusHost=require("./focusHost.js"),_menuModel=require("./menuModel.js"),_webOnly=require("./webOnly.js"),_jsxRuntime=require("react/jsx-runtime");const MENU_MIN_WIDTH=180,MENU_MAX_WIDTH=280,ROW_MIN_HEIGHT=48,TOP_ACTION_MIN_HEIGHT=64,ICON_SIZE=20,PREVIEW_LIFT=1.02,BACK_KEY="__menu-back",TOP_PREFIX="__menu-top:",WEB_CHECKABLE_ROLE=(0,_webOnly.webOnly)({role:"menuitemcheckbox"}),MenuSurface=e=>{const{open:t,anchor:s,items:i,title:n,topActions:r,placement:o,presentation:a,unavailable:l,context:c=!1,preview:u,onClose:d,restoreFocusTo:_,haptic:m,accessibilityLabel:p,closeLabel:x,backLabel:b,testID:h}=e,f=(0,_index.useTheme)(),v=(0,_react.useMemo)(()=>buildStyles(f),[f]),j=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),[y,g]=(0,_ModalSafeArea.useModalInsets)(),R=(0,_react.useMemo)(()=>({...j,top:y.top,bottom:y.bottom}),[j,y]),w=(0,_reactNative.useWindowDimensions)(),A=(0,_usePresenceMotion.usePresenceMotion)(),I=A.duration("fast"),k=(0,_react.useMemo)(()=>(0,_menuModel.visibleGroups)(i,l),[i,l]),S=(0,_react.useMemo)(()=>(0,_menuModel.visibleTopActions)(r,l),[r,l]),M="sheet"===a||"auto"===a&&w.width<_responsive.Breakpoints.lg&&(0,_menuModel.wantsSheet)(k,S),[N,E]=(0,_react.useState)(null),[T,C]=(0,_react.useState)(null),O=(0,_react.useRef)(d);O.current=d;const P=(0,_react.useRef)(_);P.current=_;const L=(0,_react.useRef)(null),H=(0,_react.useRef)(!1),D=(0,_react.useRef)(!1),q=(0,_react.useRef)(new Map),B=(0,_react.useRef)(null),V=(0,_react.useCallback)(()=>{if(!H.current)return;H.current=!1;const e=L.current;L.current=null,e?e():(0,_focusHost.focusHost)(P.current?.())},[]);(0,_react.useEffect)(()=>{if(t)return D.current=!0,H.current=!1,L.current=null,(0,_placement.claimAnchoredSurface)(()=>O.current());D.current&&(D.current=!1,H.current=!0,E(null),C(null),M||"ios"===_reactNative.Platform.OS||V())},[t]);const F=(0,_react.useCallback)(e=>{if(e.disabled)return;const t=(0,_hapticUtils.resolveHaptic)(m,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),e.key!==BACK_KEY?e.submenu?E(e):(L.current=e.onPress??null,O.current()):E(null)},[m]),K=(0,_react.useMemo)(()=>({width:w.width,height:w.height,insets:R}),[w.width,w.height,R]),W=(0,_react.useMemo)(()=>{if(!s||!T)return null;const e=s.x+s.width/2>K.width/2?"end":"start";return(0,_placement.computePlacement)(s,T,K,o,{align:e})},[s,T,K,o]);let z=K.height-R.top-R.bottom-2*_placement.PLACEMENT_MARGIN;if(s&&W){const e=(0,_placement.placementRoom)(s,K);z="top"===W.placement?e.above:e.below}const $=Math.min(280,K.width-R.left-R.right-2*_placement.PLACEMENT_MARGIN),G=t&&null!==W,U=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,Y=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current;(0,_react.useEffect)(()=>{if(!G)return(0,_index.setNativeValue)(U,0),void(0,_index.setNativeValue)(Y,1);const e=[_reactNative.Animated.timing(U,{toValue:1,duration:I,easing:_reactNative.Easing.bezier(...f.motion.easing.decelerate),useNativeDriver:!0})];c&&!A.reduced&&e.push(_reactNative.Animated.spring(Y,{toValue:1.02,damping:f.motion.spring.snappy.damping,stiffness:f.motion.spring.snappy.stiffness,mass:f.motion.spring.snappy.mass,useNativeDriver:!0}));const t=_reactNative.Animated.parallel(e);return t.start(),()=>t.stop()},[G,c,A.reduced,U,Y,f.motion,I]);const X=(0,_react.useCallback)(e=>{const{width:t,height:s}=e.nativeEvent.layout;C(e=>e&&e.width===t&&e.height===s?e:{width:t,height:s})},[]),Z=c&&"top"===W?.placement,J=N?.submenu?[N.submenu]:k,Q=Z?[...J].reverse().map(e=>[...e].reverse()):J,ee=[];if(N)ee.push({key:BACK_KEY,label:N.label});else for(const e of S)ee.push({key:`${TOP_PREFIX}${e.key}`,label:e.label,item:e});for(const e of Q)for(const t of e)ee.push({key:t.key,label:t.label,item:t});const te=ee[0]?.key;(0,_react.useEffect)(()=>{if(!G||M||!te)return;const e=setTimeout(()=>(0,_focusHost.focusHost)(q.current.get(te)),_focusHost.FOCUS_DELAY_MS);return()=>clearTimeout(e)},[G,M,te]);const setItemRef=e=>t=>{t?q.current.set(e,t):q.current.delete(e)},se=(0,_webOnly.webOnly)({onKeyDown:e=>{const t=e.key??e.nativeEvent?.key??"",s=ee.length,i=ee.findIndex(e=>e.key===B.current);let n=-1;if("ArrowDown"===t)n=(i+1)%s;else if("ArrowUp"===t)n=i<=0?s-1:i-1;else if("Home"===t)n=0;else if("End"===t)n=s-1;else{if("ArrowLeft"===t&&N)return e.preventDefault?.(),void E(null);if("ArrowRight"===t&&ee[i]?.item?.submenu)return e.preventDefault?.(),void F(ee[i].item);if(1===t.length&&""!==t.trim()){const e=t.toLowerCase();for(let t=1;t<=s;t+=1){const r=(i+t)%s;if(ee[r].label.toLowerCase().startsWith(e)){n=r;break}}}}n>=0&&(e.preventDefault?.(),(e=>{const t=ee[e];t&&(0,_focusHost.focusHost)(q.current.get(t.key))})(n))}});if(M){const e=N?.submenu?[{key:BACK_KEY,label:b,icon:"chevron-left"},...N.submenu]:[...S,...k.flat()],s=new Set(e.filter(e=>e.checked).map(e=>e.key));return(0,_jsxRuntime.jsx)(_index3.OptionSheet,{open:t,onClose:d,onAfterClose:V,title:N?.label??n,options:e,labelOf:e=>e.label,getValue:e=>e.key,disabledOf:e=>Boolean(e.disabled),destructiveOf:e=>Boolean(e.destructive),descriptionOf:e=>e.description,iconOf:e=>{const t=e;return(0,_slotIcon.renderSlotIcon)(t.icon,{color:t.destructive?f.colors.toneText.error:f.colors.text.secondary,size:20,disabled:Boolean(t.disabled)})},isSelected:e=>s.has(String(e)),onSelect:e=>F(e),accessibilityLabel:p??n,testID:h?`${h}-sheet`:void 0})}const inkFor=e=>e.disabled?f.colors.text.disabled:e.destructive?f.colors.toneText.error:f.colors.text.primary,ie=N?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:setItemRef(BACK_KEY),onPress:()=>E(null),onFocus:()=>{B.current=BACK_KEY},accessibilityRole:"menuitem",accessibilityLabel:`${b}, ${N.label}`,android_ripple:{color:f.colors.surface.pressed,borderless:!1},style:({pressed:e})=>[v.row,e?v.pressed:null],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:v.icon,children:(0,_jsxRuntime.jsx)(_AppIcon.AppIcon,{name:"chevron-left",size:20,color:f.colors.text.secondary})}),(0,_jsxRuntime.jsx)(_index4.Text,{variant:"body",weight:"semibold",numberOfLines:1,style:v.labels,children:N.label})]}),(0,_jsxRuntime.jsx)(_index2.Divider,{spacing:"none"})]}):(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[n?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"secondary",accessibilityRole:"header",numberOfLines:2,style:v.title,children:n}):null,S.length>0?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:v.topRow,children:S.map(e=>{const t=`${TOP_PREFIX}${e.key}`,s=Boolean(e.disabled),i=inkFor(e);return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:setItemRef(t),onPress:()=>F(e),onFocus:()=>{B.current=t},disabled:s,accessibilityRole:"menuitem",accessibilityLabel:e.accessibilityLabel??e.label,accessibilityState:{disabled:s},"aria-disabled":s,testID:e.testID,style:({pressed:e})=>[v.topAction,e?v.pressed:null],children:[(0,_slotIcon.renderSlotIcon)(e.icon,{color:i,size:20,disabled:s}),(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:i,numberOfLines:1,children:e.label})]},t)})}),(0,_jsxRuntime.jsx)(_index2.Divider,{spacing:"none"})]}):null]});return(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:t,transparent:!0,statusBarTranslucent:!0,presentationStyle:"overFullScreen",animationType:"none",onRequestClose:d,onDismiss:V,children:(0,_jsxRuntime.jsxs)(_ModalSafeArea.ModalSafeArea,{onInsets:g,children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:[_reactNative.StyleSheet.absoluteFill,c?v.scrim:null],onPress:d,accessibilityRole:"button",accessibilityLabel:x,testID:h?`${h}-scrim`:void 0}),c&&u&&s?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",style:[v.preview,{left:s.x,top:s.y,width:s.width,height:s.height,transform:[{scale:Y}]}],children:u}):null,(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{accessibilityRole:"menu",accessibilityLabel:N?.label??p??n,onLayout:X,testID:h?`${h}-menu`:void 0,...se,style:[v.anchored,{left:W?.x??0,top:W?.y??0,maxWidth:$,opacity:G?U:0}],children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:v.surface,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[v.clip,{maxHeight:z}],children:[ie,(0,_jsxRuntime.jsx)(_reactNative.ScrollView,{style:v.scroll,bounces:!1,keyboardShouldPersistTaps:"handled",children:Q.map((e,t)=>{const s=e.some(e=>null!=e.icon);return(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[t>0?(0,_jsxRuntime.jsx)(_index2.Divider,{spacing:"none"}):null,e.map(e=>((e,t)=>{const s=Boolean(e.disabled),i=inkFor(e);return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:setItemRef(e.key),onPress:()=>F(e),onFocus:()=>{B.current=e.key},disabled:s,accessibilityRole:"menuitem",accessibilityLabel:e.accessibilityLabel??e.label,accessibilityState:{disabled:s,checked:e.checked},"aria-disabled":s,"aria-checked":e.checked,...void 0!==e.checked?WEB_CHECKABLE_ROLE:null,android_ripple:{color:f.colors.surface.pressed,borderless:!1},testID:e.testID,style:({pressed:e})=>[v.row,e?v.pressed:null],children:[t?(0,_jsxRuntime.jsx)(_reactNative.View,{style:v.icon,children:(0,_slotIcon.renderSlotIcon)(e.icon,{color:i,size:20,disabled:s})}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:v.labels,children:[(0,_jsxRuntime.jsx)(_index4.Text,{variant:"body",color:i,numberOfLines:2,children:e.label}),e.description?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"secondary",numberOfLines:2,children:e.description}):null]}),e.detail?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"tertiary",children:e.detail}):null,e.checked?(0,_jsxRuntime.jsx)(_AppIcon.AppIcon,{name:"check",size:20,color:f.colors.primary}):null,e.submenu?(0,_jsxRuntime.jsx)(_AppIcon.AppIcon,{name:"chevron-right",size:20,color:f.colors.text.tertiary}):null]},e.key)})(e,s))]},e[0].key)})})]})})}),(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})})};exports.MenuSurface=MenuSurface;const buildStyles=e=>_reactNative.StyleSheet.create({scrim:{backgroundColor:e.colors.background.overlay},preview:{position:"absolute"},anchored:{position:"absolute",minWidth:180},surface:{backgroundColor:e.colors.background.elevated,borderRadius:e.radius.md,..._corners.smoothCorners,...e.shadows.lg},clip:{borderRadius:e.radius.md,..._corners.smoothCorners,overflow:"hidden"},scroll:{flexGrow:0,flexShrink:1},title:{paddingHorizontal:e.spacing.md,paddingTop:e.spacing.sm,paddingBottom:e.spacing.xs},row:{flexDirection:"row",alignItems:"center",gap:e.spacing.md,minHeight:48,paddingHorizontal:e.spacing.md,paddingVertical:e.spacing.sm},pressed:{backgroundColor:e.colors.surface.pressed},icon:{width:20,alignItems:"center"},labels:{flexGrow:1,flexShrink:1},topRow:{flexDirection:"row",padding:e.spacing.xs,gap:e.spacing.xs},topAction:{flexGrow:1,flexBasis:0,alignItems:"center",justifyContent:"center",gap:e.spacing.xs,minHeight:64,borderRadius:e.radius.sm,..._corners.smoothCorners}});
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.MenuSurface=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_placement=require("../../utils/placement.js"),_responsive=require("../../utils/responsive.js"),_AppIcon=require("../AppIcon/AppIcon.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index2=require("../Divider/index.js"),_ModalSafeArea=require("../ModalSafeArea/ModalSafeArea.js"),_index3=require("../OptionSheet/index.js"),_index4=require("../Text/index.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_focusHost=require("./focusHost.js"),_menuModel=require("./menuModel.js"),_webOnly=require("./webOnly.js"),_jsxRuntime=require("react/jsx-runtime");const MENU_MIN_WIDTH=180,MENU_MAX_WIDTH=280,ROW_MIN_HEIGHT=48,TOP_ACTION_MIN_HEIGHT=64,ICON_SIZE=20,PREVIEW_LIFT=1.02,BACK_KEY="__menu-back",TOP_PREFIX="__menu-top:",WEB_CHECKABLE_ROLE=(0,_webOnly.webOnly)({role:"menuitemcheckbox"}),MenuSurface=e=>{const{open:t,anchor:s,items:i,title:r,topActions:n,placement:o,presentation:a,unavailable:l,context:c=!1,preview:u,onClose:d,restoreFocusTo:_,haptic:m,accessibilityLabel:p,closeLabel:x,backLabel:b,testID:h}=e,f=(0,_index.useTheme)(),j=(0,_react.useMemo)(()=>buildStyles(f),[f]),v=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),[y,R]=(0,_ModalSafeArea.useModalInsets)(),g=(0,_react.useMemo)(()=>({...v,top:y.top,bottom:y.bottom}),[v,y]),w=(0,_reactNative.useWindowDimensions)(),A=(0,_usePresenceMotion.usePresenceMotion)(),I=A.duration("fast"),S=(0,_react.useMemo)(()=>(0,_menuModel.visibleGroups)(i,l),[i,l]),k=(0,_react.useMemo)(()=>(0,_menuModel.visibleTopActions)(n,l),[n,l]),M="sheet"===a||"auto"===a&&w.width<_responsive.Breakpoints.lg&&(0,_menuModel.wantsSheet)(S,k),[N,E]=(0,_react.useState)(null),[C,T]=(0,_react.useState)(null),O=(0,_react.useRef)(d);O.current=d;const P=(0,_react.useRef)(_);P.current=_;const L=(0,_react.useRef)(null),H=(0,_react.useRef)(!1),D=(0,_react.useRef)(!1),q=(0,_react.useRef)(new Map),B=(0,_react.useRef)(null),V=(0,_react.useCallback)(()=>{if(!H.current)return;H.current=!1;const e=L.current;L.current=null,e?e():(0,_focusHost.focusHost)(P.current?.())},[]);(0,_react.useEffect)(()=>{if(t)return D.current=!0,H.current=!1,L.current=null,(0,_placement.claimAnchoredSurface)(()=>O.current());D.current&&(D.current=!1,H.current=!0,E(null),T(null),M||"ios"===_reactNative.Platform.OS||V())},[t]);const F=(0,_react.useCallback)(e=>{if(e.disabled)return;const t=(0,_hapticUtils.resolveHaptic)(m,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),e.key!==BACK_KEY?e.submenu?E(e):(L.current=e.onPress??null,O.current()):E(null)},[m]),K=(0,_react.useMemo)(()=>({width:w.width,height:w.height,insets:g}),[w.width,w.height,g]),W=(0,_react.useMemo)(()=>{if(!s||!C)return null;const e=s.x+s.width/2>K.width/2?"end":"start";return(0,_placement.computePlacement)(s,C,K,o,{align:e})},[s,C,K,o]);let z=K.height-g.top-g.bottom-2*_placement.PLACEMENT_MARGIN;if(s&&W){const e=(0,_placement.placementRoom)(s,K);z="top"===W.placement?e.above:e.below}const $=Math.min(280,K.width-g.left-g.right-2*_placement.PLACEMENT_MARGIN),G=t&&null!==W,U=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,Y=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current;(0,_react.useEffect)(()=>{if(!G)return(0,_index.setNativeValue)(U,0),void(0,_index.setNativeValue)(Y,1);const e=[_reactNative.Animated.timing(U,{toValue:1,duration:I,easing:_reactNative.Easing.bezier(...f.motion.ease.decelerate),useNativeDriver:!0})];c&&!A.reduced&&e.push(_reactNative.Animated.spring(Y,{toValue:1.02,damping:f.motion.spring.snappy.damping,stiffness:f.motion.spring.snappy.stiffness,mass:f.motion.spring.snappy.mass,useNativeDriver:!0}));const t=_reactNative.Animated.parallel(e);return t.start(),()=>t.stop()},[G,c,A.reduced,U,Y,f.motion,I]);const X=(0,_react.useCallback)(e=>{const{width:t,height:s}=e.nativeEvent.layout;T(e=>e&&e.width===t&&e.height===s?e:{width:t,height:s})},[]),Z=c&&"top"===W?.placement,J=N?.submenu?[N.submenu]:S,Q=Z?[...J].reverse().map(e=>[...e].reverse()):J,ee=[];if(N)ee.push({key:BACK_KEY,label:N.label});else for(const e of k)ee.push({key:`${TOP_PREFIX}${e.key}`,label:e.label,item:e});for(const e of Q)for(const t of e)ee.push({key:t.key,label:t.label,item:t});const te=ee[0]?.key;(0,_react.useEffect)(()=>{if(!G||M||!te)return;const e=setTimeout(()=>(0,_focusHost.focusHost)(q.current.get(te)),_focusHost.FOCUS_DELAY_MS);return()=>clearTimeout(e)},[G,M,te]);const setItemRef=e=>t=>{t?q.current.set(e,t):q.current.delete(e)},se=(0,_webOnly.webOnly)({onKeyDown:e=>{const t=e.key??e.nativeEvent?.key??"",s=ee.length,i=ee.findIndex(e=>e.key===B.current);let r=-1;if("ArrowDown"===t)r=(i+1)%s;else if("ArrowUp"===t)r=i<=0?s-1:i-1;else if("Home"===t)r=0;else if("End"===t)r=s-1;else{if("ArrowLeft"===t&&N)return e.preventDefault?.(),void E(null);if("ArrowRight"===t&&ee[i]?.item?.submenu)return e.preventDefault?.(),void F(ee[i].item);if(1===t.length&&""!==t.trim()){const e=t.toLowerCase();for(let t=1;t<=s;t+=1){const n=(i+t)%s;if(ee[n].label.toLowerCase().startsWith(e)){r=n;break}}}}r>=0&&(e.preventDefault?.(),(e=>{const t=ee[e];t&&(0,_focusHost.focusHost)(q.current.get(t.key))})(r))}});if(M){const e=N?.submenu?[{key:BACK_KEY,label:b,icon:"chevron-left"},...N.submenu]:[...k,...S.flat()],s=new Set(e.filter(e=>e.checked).map(e=>e.key));return(0,_jsxRuntime.jsx)(_index3.OptionSheet,{open:t,onClose:d,onAfterClose:V,title:N?.label??r,options:e,labelOf:e=>e.label,getValue:e=>e.key,disabledOf:e=>Boolean(e.disabled),destructiveOf:e=>Boolean(e.destructive),descriptionOf:e=>e.description,iconOf:e=>{const t=e;return(0,_slotIcon.renderSlotIcon)(t.icon,{color:t.destructive?f.colors["danger-text"]:f.colors["text-muted"],size:20,disabled:Boolean(t.disabled)})},isSelected:e=>s.has(String(e)),onSelect:e=>F(e),accessibilityLabel:p??r,testID:h?`${h}-sheet`:void 0})}const inkFor=e=>e.disabled?f.colors["text-disabled"]:e.destructive?f.colors["danger-text"]:f.colors["text-body"],ie=N?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:setItemRef(BACK_KEY),onPress:()=>E(null),onFocus:()=>{B.current=BACK_KEY},accessibilityRole:"menuitem",accessibilityLabel:`${b}, ${N.label}`,android_ripple:{color:f.colors["surface-pressed"],borderless:!1},style:({pressed:e})=>[j.row,e?j.pressed:null],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:j.icon,children:(0,_jsxRuntime.jsx)(_AppIcon.AppIcon,{name:"chevron-left",size:20,color:f.colors["text-muted"]})}),(0,_jsxRuntime.jsx)(_index4.Text,{variant:"body",weight:"semibold",numberOfLines:1,style:j.labels,children:N.label})]}),(0,_jsxRuntime.jsx)(_index2.Divider,{spacing:"none"})]}):(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[r?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"secondary",accessibilityRole:"header",numberOfLines:2,style:j.title,children:r}):null,k.length>0?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:j.topRow,children:k.map(e=>{const t=`${TOP_PREFIX}${e.key}`,s=Boolean(e.disabled),i=inkFor(e);return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:setItemRef(t),onPress:()=>F(e),onFocus:()=>{B.current=t},disabled:s,accessibilityRole:"menuitem",accessibilityLabel:e.accessibilityLabel??e.label,accessibilityState:{disabled:s},"aria-disabled":s,testID:e.testID,style:({pressed:e})=>[j.topAction,e?j.pressed:null],children:[(0,_slotIcon.renderSlotIcon)(e.icon,{color:i,size:20,disabled:s}),(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:i,numberOfLines:1,children:e.label})]},t)})}),(0,_jsxRuntime.jsx)(_index2.Divider,{spacing:"none"})]}):null]});return(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:t,transparent:!0,statusBarTranslucent:!0,presentationStyle:"overFullScreen",animationType:"none",onRequestClose:d,onDismiss:V,children:(0,_jsxRuntime.jsxs)(_ModalSafeArea.ModalSafeArea,{onInsets:R,children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:[_reactNative.StyleSheet.absoluteFill,c?j.scrim:null],onPress:d,accessibilityRole:"button",accessibilityLabel:x,testID:h?`${h}-scrim`:void 0}),c&&u&&s?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",style:[j.preview,{left:s.x,top:s.y,width:s.width,height:s.height,transform:[{scale:Y}]}],children:u}):null,(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{accessibilityRole:"menu",accessibilityLabel:N?.label??p??r,onLayout:X,testID:h?`${h}-menu`:void 0,...se,style:[j.anchored,{left:W?.x??0,top:W?.y??0,maxWidth:$,opacity:G?U:0}],children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:j.surface,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[j.clip,{maxHeight:z}],children:[ie,(0,_jsxRuntime.jsx)(_reactNative.ScrollView,{style:j.scroll,bounces:!1,keyboardShouldPersistTaps:"handled",children:Q.map((e,t)=>{const s=e.some(e=>null!=e.icon);return(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[t>0?(0,_jsxRuntime.jsx)(_index2.Divider,{spacing:"none"}):null,e.map(e=>((e,t)=>{const s=Boolean(e.disabled),i=inkFor(e);return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:setItemRef(e.key),onPress:()=>F(e),onFocus:()=>{B.current=e.key},disabled:s,accessibilityRole:"menuitem",accessibilityLabel:e.accessibilityLabel??e.label,accessibilityState:{disabled:s,checked:e.checked},"aria-disabled":s,"aria-checked":e.checked,...void 0!==e.checked?WEB_CHECKABLE_ROLE:null,android_ripple:{color:f.colors["surface-pressed"],borderless:!1},testID:e.testID,style:({pressed:e})=>[j.row,e?j.pressed:null],children:[t?(0,_jsxRuntime.jsx)(_reactNative.View,{style:j.icon,children:(0,_slotIcon.renderSlotIcon)(e.icon,{color:i,size:20,disabled:s})}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:j.labels,children:[(0,_jsxRuntime.jsx)(_index4.Text,{variant:"body",color:i,numberOfLines:2,children:e.label}),e.description?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"secondary",numberOfLines:2,children:e.description}):null]}),e.detail?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"tertiary",children:e.detail}):null,e.checked?(0,_jsxRuntime.jsx)(_AppIcon.AppIcon,{name:"check",size:20,color:f.colors.primary}):null,e.submenu?(0,_jsxRuntime.jsx)(_AppIcon.AppIcon,{name:"chevron-right",size:20,color:f.colors["text-subtle"]}):null]},e.key)})(e,s))]},e[0].key)})})]})})}),(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})})};exports.MenuSurface=MenuSurface;const buildStyles=e=>_reactNative.StyleSheet.create({scrim:{backgroundColor:e.colors.scrim},preview:{position:"absolute"},anchored:{position:"absolute",minWidth:180},surface:{backgroundColor:e.colors.surface,borderRadius:e.radius.md,..._corners.smoothCorners,...e.shadow.popover},clip:{borderRadius:e.radius.md,..._corners.smoothCorners,overflow:"hidden"},scroll:{flexGrow:0,flexShrink:1},title:{paddingHorizontal:e.space.md,paddingTop:e.space.sm,paddingBottom:e.space.xs},row:{flexDirection:"row",alignItems:"center",gap:e.space.md,minHeight:48,paddingHorizontal:e.space.md,paddingVertical:e.space.sm},pressed:{backgroundColor:e.colors["surface-pressed"]},icon:{width:20,alignItems:"center"},labels:{flexGrow:1,flexShrink:1},topRow:{flexDirection:"row",padding:e.space.xs,gap:e.space.xs},topAction:{flexGrow:1,flexBasis:0,alignItems:"center",justifyContent:"center",gap:e.space.xs,minHeight:64,borderRadius:e.radius.sm,..._corners.smoothCorners}});
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.MessageBubble=exports.DEFAULT_MESSAGE_BUBBLE_LABELS=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_corners=require("../../utils/corners.js"),_index2=require("../AppIcon/index.js"),_index3=require("../Button/index.js"),_index4=require("../Markdown/index.js"),_useContextMenu=require("../Menu/useContextMenu.js"),_index5=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_MESSAGE_BUBBLE_LABELS=exports.DEFAULT_MESSAGE_BUBBLE_LABELS=Object.freeze({you:"You",sending:"Sending",sent:"Sent",delivered:"Delivered",read:"Read",failed:"Not sent",retry:"Try again",copy:"Copy",replyTo:e=>e?`Reply to ${e}`:"Reply"}),MAX_WIDTH="85%",STATUS_ICON=14,statusIcon=e=>{switch(e){case"sending":return"clock";case"sent":return"check";case"failed":return"alert-circle";default:return"check-check"}},statusColour=(e,t)=>{switch(t){case"read":return e.colors.toneText.info;case"failed":return e.colors.toneText.error;default:return e.colors.text.tertiary}},MessageBubble=({side:e,text:t,children:s,markdown:r=!1,groupPosition:n="single",author:i,time:o,status:a,replyTo:l,streaming:c=!1,error:u,onRetry:d,actions:x,onCopy:b,onLongPress:m,footer:_,labels:p,haptic:y,style:g,testID:h})=>{const f=(0,_index.useTheme)(),j=(0,_react.useMemo)(()=>buildStyles(f),[f]),L=p?{...DEFAULT_MESSAGE_BUBBLE_LABELS,...p}:DEFAULT_MESSAGE_BUBBLE_LABELS,B="mine"===e,T="single"===n||"first"===n,R="single"===n||"last"===n,E=null==o?"":(0,_mobileCore.formatTime)(o),v=("failed"===a||Boolean(u))&&Boolean(d),S=B?L.you:i??"",M=(0,_react.useMemo)(()=>{const e=[];return b&&!x?.some(e=>"copy"===e.name)&&e.push({name:"copy",label:L.copy,onPress:()=>b(t)}),x&&e.push(...x),l?.onPress&&e.push({name:"openReply",label:L.replyTo(l.author),onPress:l.onPress}),v&&d&&e.push({name:"retry",label:L.retry,onPress:d}),e},[x,b,t,l,v,d,L]),A=(x?.length??0)>0||Boolean(b),P=(0,_react.useMemo)(()=>A?{items:M.map(({name:e,label:t,onPress:s})=>({key:e,label:t,onPress:s}))}:void 0,[A,M]),C=(0,_useContextMenu.useContextMenu)(P,{haptic:y,testID:h}),I=C.hostProps.onLongPress,k=!s||(x?.length??0)>0,D=a&&B?L[a]:"",q=[S,E,t,l?`${L.replyTo(l.author)}: ${l.text}`:"",D].filter(Boolean).join(", "),w=(0,_react.useRef)(c);(0,_react.useEffect)(()=>{w.current&&!c&&!u&&t&&(0,_announce.announce)(S?`${S}, ${t}`:t),w.current=c},[c,u,t,S]);const $=(0,_react.useRef)(u);(0,_react.useEffect)(()=>{u&&u!==$.current&&(0,_announce.announce)(u,{polite:!1}),$.current=u},[u]);const U=(0,_react.useCallback)(e=>{I?.(e),m?.()},[I,m]),N=(0,_react.useCallback)(e=>{M.find(t=>t.name===e.nativeEvent.actionName)?.onPress()},[M]),F=f.radius.xl,z=f.radius.sm,H=B?{borderTopRightRadius:T?F:z,borderBottomRightRadius:R?F:z}:{borderTopLeftRadius:T?F:z,borderBottomLeftRadius:R?F:z},O=s??(r?(0,_jsxRuntime.jsx)(_index4.Markdown,{children:t}):(0,_jsxRuntime.jsx)(_index5.Text,{variant:"body",children:t})),G=l?(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:l.onPress,disabled:!l.onPress,accessibilityRole:l.onPress?"button":void 0,accessibilityLabel:`${L.replyTo(l.author)}: ${l.text}`,style:j.quote,children:[l.author?(0,_jsxRuntime.jsx)(_index5.Text,{variant:"caption",weight:"semibold",color:"link",numberOfLines:1,children:l.author}):null,(0,_jsxRuntime.jsx)(_index5.Text,{variant:"bodySmall",color:"secondary",numberOfLines:2,children:l.text})]}):null,V=[j.bubble,B?j.mine:j.theirs,H],W=k?{accessible:!0,accessibilityLabel:q,accessibilityState:{busy:c},"aria-busy":c,accessibilityActions:M.map(({name:e,label:t})=>({name:e,label:t})),onAccessibilityAction:N}:{accessible:!1},X=A?(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:C.hostRef,...C.hostProps,onLongPress:U,delayLongPress:350,style:V,testID:h?`${h}-bubble`:void 0,...W,children:[G,O]}):(0,_jsxRuntime.jsxs)(_reactNative.View,{style:V,testID:h?`${h}-bubble`:void 0,...W,children:[G,O]}),Y=R&&(""!==E||B&&a);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[j.root,B?j.rootMine:j.rootTheirs,{marginTop:T?f.spacing.sm:f.spacing.xxs},g],testID:h,children:[!B&&T&&i?(0,_jsxRuntime.jsx)(_index5.Text,{variant:"caption",color:"secondary",style:j.author,numberOfLines:1,importantForAccessibility:k?"no-hide-descendants":"auto",accessibilityElementsHidden:k,children:i}):null,X,C.renderSurface(),Y?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[j.meta,B?j.metaMine:null],importantForAccessibility:k?"no-hide-descendants":"auto",accessibilityElementsHidden:k,children:[E?(0,_jsxRuntime.jsx)(_index5.Text,{variant:"caption",color:"tertiary",children:E}):null,B&&a?(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:statusIcon(a),size:14,color:statusColour(f,a),accessibilityLabel:L[a],testID:h?`${h}-status-${a}`:void 0}):null]}):null,u?(0,_jsxRuntime.jsx)(_index5.Text,{variant:"bodySmall",color:"error",style:B?j.endText:null,children:u}):null,v?(0,_jsxRuntime.jsx)(_index3.Button,{title:L.retry,variant:"link",size:"sm",leftIcon:"refresh-cw",onPress:d,testID:h?`${h}-retry`:void 0}):null,_]})};exports.MessageBubble=MessageBubble;const buildStyles=e=>_reactNative.StyleSheet.create({root:{maxWidth:"85%",gap:e.spacing.xs},rootMine:{alignSelf:"flex-end",alignItems:"flex-end"},rootTheirs:{alignSelf:"flex-start",alignItems:"flex-start"},author:{paddingHorizontal:e.spacing.md},bubble:{borderRadius:e.radius.xl,..._corners.smoothCorners,paddingHorizontal:e.spacing.md,paddingVertical:e.spacing.sm,gap:e.spacing.xs},mine:{backgroundColor:e.colors.primaryMuted},theirs:{backgroundColor:e.colors.background.secondary},quote:{borderLeftWidth:3,borderLeftColor:e.colors.primary,paddingLeft:e.spacing.sm,paddingVertical:e.spacing.xs},meta:{flexDirection:"row",alignItems:"center",gap:e.spacing.xs,paddingHorizontal:e.spacing.xs},metaMine:{justifyContent:"flex-end"},endText:{textAlign:"right"}});var _default=exports.default=MessageBubble;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.MessageBubble=exports.DEFAULT_MESSAGE_BUBBLE_LABELS=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_corners=require("../../utils/corners.js"),_index2=require("../AppIcon/index.js"),_index3=require("../Button/index.js"),_index4=require("../Markdown/index.js"),_useContextMenu=require("../Menu/useContextMenu.js"),_index5=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_MESSAGE_BUBBLE_LABELS=exports.DEFAULT_MESSAGE_BUBBLE_LABELS=Object.freeze({you:"You",sending:"Sending",sent:"Sent",delivered:"Delivered",read:"Read",failed:"Not sent",retry:"Try again",copy:"Copy",replyTo:e=>e?`Reply to ${e}`:"Reply"}),MAX_WIDTH="85%",STATUS_ICON=14,statusIcon=e=>{switch(e){case"sending":return"clock";case"sent":return"check";case"failed":return"alert-circle";default:return"check-check"}},statusColour=(e,t)=>{switch(t){case"read":return e.colors["info-text"];case"failed":return e.colors["danger-text"];default:return e.colors["text-subtle"]}},MessageBubble=({side:e,text:t,children:s,markdown:r=!1,groupPosition:n="single",author:i,time:o,status:a,replyTo:l,streaming:c=!1,error:u,onRetry:d,actions:x,onCopy:b,onLongPress:m,footer:_,labels:p,haptic:y,style:h,testID:f})=>{const g=(0,_index.useTheme)(),j=(0,_react.useMemo)(()=>buildStyles(g),[g]),L=p?{...DEFAULT_MESSAGE_BUBBLE_LABELS,...p}:DEFAULT_MESSAGE_BUBBLE_LABELS,B="mine"===e,R="single"===n||"first"===n,E="single"===n||"last"===n,T=null==o?"":(0,_mobileCore.formatTime)(o),v=("failed"===a||Boolean(u))&&Boolean(d),S=B?L.you:i??"",M=(0,_react.useMemo)(()=>{const e=[];return b&&!x?.some(e=>"copy"===e.name)&&e.push({name:"copy",label:L.copy,onPress:()=>b(t)}),x&&e.push(...x),l?.onPress&&e.push({name:"openReply",label:L.replyTo(l.author),onPress:l.onPress}),v&&d&&e.push({name:"retry",label:L.retry,onPress:d}),e},[x,b,t,l,v,d,L]),A=(x?.length??0)>0||Boolean(b),P=(0,_react.useMemo)(()=>A?{items:M.map(({name:e,label:t,onPress:s})=>({key:e,label:t,onPress:s}))}:void 0,[A,M]),C=(0,_useContextMenu.useContextMenu)(P,{haptic:y,testID:f}),I=C.hostProps.onLongPress,D=!s||(x?.length??0)>0,k=a&&B?L[a]:"",q=[S,T,t,l?`${L.replyTo(l.author)}: ${l.text}`:"",k].filter(Boolean).join(", "),w=(0,_react.useRef)(c);(0,_react.useEffect)(()=>{w.current&&!c&&!u&&t&&(0,_announce.announce)(S?`${S}, ${t}`:t),w.current=c},[c,u,t,S]);const $=(0,_react.useRef)(u);(0,_react.useEffect)(()=>{u&&u!==$.current&&(0,_announce.announce)(u,{polite:!1}),$.current=u},[u]);const U=(0,_react.useCallback)(e=>{I?.(e),m?.()},[I,m]),N=(0,_react.useCallback)(e=>{M.find(t=>t.name===e.nativeEvent.actionName)?.onPress()},[M]),F=g.radius.xl,z=g.radius.sm,H=B?{borderTopRightRadius:R?F:z,borderBottomRightRadius:E?F:z}:{borderTopLeftRadius:R?F:z,borderBottomLeftRadius:E?F:z},O=s??(r?(0,_jsxRuntime.jsx)(_index4.Markdown,{children:t}):(0,_jsxRuntime.jsx)(_index5.Text,{variant:"body",children:t})),G=l?(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:l.onPress,disabled:!l.onPress,accessibilityRole:l.onPress?"button":void 0,accessibilityLabel:`${L.replyTo(l.author)}: ${l.text}`,style:j.quote,children:[l.author?(0,_jsxRuntime.jsx)(_index5.Text,{variant:"caption",weight:"semibold",color:"link",numberOfLines:1,children:l.author}):null,(0,_jsxRuntime.jsx)(_index5.Text,{variant:"bodySmall",color:"secondary",numberOfLines:2,children:l.text})]}):null,V=[j.bubble,B?j.mine:j.theirs,H],W=D?{accessible:!0,accessibilityLabel:q,accessibilityState:{busy:c},"aria-busy":c,accessibilityActions:M.map(({name:e,label:t})=>({name:e,label:t})),onAccessibilityAction:N}:{accessible:!1},X=A?(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:C.hostRef,...C.hostProps,onLongPress:U,delayLongPress:350,style:V,testID:f?`${f}-bubble`:void 0,...W,children:[G,O]}):(0,_jsxRuntime.jsxs)(_reactNative.View,{style:V,testID:f?`${f}-bubble`:void 0,...W,children:[G,O]}),Y=E&&(""!==T||B&&a);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[j.root,B?j.rootMine:j.rootTheirs,{marginTop:R?g.space.sm:g.space.xxs},h],testID:f,children:[!B&&R&&i?(0,_jsxRuntime.jsx)(_index5.Text,{variant:"caption",color:"secondary",style:j.author,numberOfLines:1,importantForAccessibility:D?"no-hide-descendants":"auto",accessibilityElementsHidden:D,children:i}):null,X,C.renderSurface(),Y?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[j.meta,B?j.metaMine:null],importantForAccessibility:D?"no-hide-descendants":"auto",accessibilityElementsHidden:D,children:[T?(0,_jsxRuntime.jsx)(_index5.Text,{variant:"caption",color:"tertiary",children:T}):null,B&&a?(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:statusIcon(a),size:14,color:statusColour(g,a),accessibilityLabel:L[a],testID:f?`${f}-status-${a}`:void 0}):null]}):null,u?(0,_jsxRuntime.jsx)(_index5.Text,{variant:"bodySmall",color:"danger",style:B?j.endText:null,children:u}):null,v?(0,_jsxRuntime.jsx)(_index3.Button,{title:L.retry,variant:"link",size:"sm",leftIcon:"refresh-cw",onPress:d,testID:f?`${f}-retry`:void 0}):null,_]})};exports.MessageBubble=MessageBubble;const buildStyles=e=>_reactNative.StyleSheet.create({root:{maxWidth:"85%",gap:e.space.xs},rootMine:{alignSelf:"flex-end",alignItems:"flex-end"},rootTheirs:{alignSelf:"flex-start",alignItems:"flex-start"},author:{paddingHorizontal:e.space.md},bubble:{borderRadius:e.radius.xl,..._corners.smoothCorners,paddingHorizontal:e.space.md,paddingVertical:e.space.sm,gap:e.space.xs},mine:{backgroundColor:e.colors["primary-soft"]},theirs:{backgroundColor:e.colors["bg-subtle"]},quote:{borderLeftWidth:3,borderLeftColor:e.colors.primary,paddingLeft:e.space.sm,paddingVertical:e.space.xs},meta:{flexDirection:"row",alignItems:"center",gap:e.space.xs,paddingHorizontal:e.space.xs},metaMine:{justifyContent:"flex-end"},endText:{textAlign:"right"}});var _default=exports.default=MessageBubble;