@webority/mobile-ui 0.9.1 → 0.11.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 (346) hide show
  1. package/android/src/newarch/java/com/webority/mobileui/pdfrasterizer/PdfRasterizerModule.kt +6 -7
  2. package/ios/PdfRasterizer.mm +36 -9
  3. package/lib/commonjs/components/BarChart/BarChart.js +1 -0
  4. package/lib/commonjs/components/BarChart/index.js +1 -0
  5. package/lib/commonjs/components/BarChart/scale.js +1 -0
  6. package/lib/commonjs/components/BottomNavigation/BottomNavigation.js +1 -1
  7. package/lib/commonjs/components/BottomNavigation/useScreenReaderEnabled.js +1 -0
  8. package/lib/commonjs/components/BottomSheet/BottomSheet.js +1 -1
  9. package/lib/commonjs/components/BottomSheet/index.js +1 -1
  10. package/lib/commonjs/components/BottomSheet/useSheetSwap.js +1 -0
  11. package/lib/commonjs/components/Card/Card.js +1 -1
  12. package/lib/commonjs/components/Checkbox/Checkbox.js +1 -1
  13. package/lib/commonjs/components/Composer/Composer.js +1 -0
  14. package/lib/commonjs/components/Composer/index.js +1 -0
  15. package/lib/commonjs/components/DateSeparator/DateSeparator.js +1 -0
  16. package/lib/commonjs/components/DateSeparator/index.js +1 -0
  17. package/lib/commonjs/components/FieldBase/ChoiceText.js +1 -1
  18. package/lib/commonjs/components/FieldBase/FieldBase.js +1 -1
  19. package/lib/commonjs/components/FieldBase/useFloatingLabel.js +1 -1
  20. package/lib/commonjs/components/FloatingActionButton/FloatingActionButton.js +1 -1
  21. package/lib/commonjs/components/FormField/FormField.js +1 -1
  22. package/lib/commonjs/components/Input/Input.js +1 -1
  23. package/lib/commonjs/components/ListItem/ListItem.js +1 -1
  24. package/lib/commonjs/components/Menu/Menu.js +1 -0
  25. package/lib/commonjs/components/Menu/MenuSurface.js +1 -0
  26. package/lib/commonjs/components/Menu/focusHost.js +1 -0
  27. package/lib/commonjs/components/Menu/index.js +1 -0
  28. package/lib/commonjs/components/Menu/menuModel.js +1 -0
  29. package/lib/commonjs/components/Menu/useContextMenu.js +1 -0
  30. package/lib/commonjs/components/Menu/webOnly.js +1 -0
  31. package/lib/commonjs/components/MessageBubble/MessageBubble.js +1 -0
  32. package/lib/commonjs/components/MessageBubble/index.js +1 -0
  33. package/lib/commonjs/components/MessageList/MessageList.js +1 -0
  34. package/lib/commonjs/components/MessageList/index.js +1 -0
  35. package/lib/commonjs/components/Notation/Notation.js +1 -1
  36. package/lib/commonjs/components/OnboardingPager/OnboardingPager.js +1 -0
  37. package/lib/commonjs/components/OnboardingPager/index.js +1 -0
  38. package/lib/commonjs/components/OptionSheet/OptionSheet.js +1 -1
  39. package/lib/commonjs/components/PaymentResult/PaymentResult.js +1 -0
  40. package/lib/commonjs/components/PaymentResult/index.js +1 -0
  41. package/lib/commonjs/components/PermissionPrompt/PermissionPrompt.js +1 -0
  42. package/lib/commonjs/components/PermissionPrompt/index.js +1 -0
  43. package/lib/commonjs/components/PermissionPrompt/usePermissionPrompt.js +1 -0
  44. package/lib/commonjs/components/PhoneNumberInput/PhoneNumberInput.js +1 -1
  45. package/lib/commonjs/components/Radio/Radio.js +1 -1
  46. package/lib/commonjs/components/Radio/RadioGroup.js +1 -1
  47. package/lib/commonjs/components/ScannerOverlay/ScannerOverlay.js +1 -0
  48. package/lib/commonjs/components/ScannerOverlay/index.js +1 -0
  49. package/lib/commonjs/components/SearchBar/SearchBar.js +1 -1
  50. package/lib/commonjs/components/SearchBar/SearchPanel.js +1 -0
  51. package/lib/commonjs/components/SearchBar/highlight.js +1 -0
  52. package/lib/commonjs/components/SearchBar/index.js +1 -1
  53. package/lib/commonjs/components/SearchBar/useRecentSearches.js +1 -0
  54. package/lib/commonjs/components/SegmentedControl/SegmentedControl.js +1 -1
  55. package/lib/commonjs/components/Select/Select.js +1 -1
  56. package/lib/commonjs/components/SignaturePad/SignaturePad.js +1 -0
  57. package/lib/commonjs/components/SignaturePad/index.js +1 -0
  58. package/lib/commonjs/components/SignaturePad/signatureGeometry.js +1 -0
  59. package/lib/commonjs/components/SignaturePad/writePng.js +1 -0
  60. package/lib/commonjs/components/SignaturePad/writePng.web.js +1 -0
  61. package/lib/commonjs/components/Sparkline/Sparkline.js +1 -0
  62. package/lib/commonjs/components/Sparkline/geometry.js +1 -0
  63. package/lib/commonjs/components/Sparkline/index.js +1 -0
  64. package/lib/commonjs/components/Spinner/Spinner.js +1 -1
  65. package/lib/commonjs/components/StatTile/StatTile.js +1 -1
  66. package/lib/commonjs/components/Switch/Switch.js +1 -1
  67. package/lib/commonjs/components/TagInput/TagInput.js +1 -1
  68. package/lib/commonjs/components/TimePicker/TimePicker.js +1 -1
  69. package/lib/commonjs/components/Toast/Toast.js +1 -1
  70. package/lib/commonjs/components/Toast/ToastProvider.js +1 -1
  71. package/lib/commonjs/components/Tooltip/RichTooltipBody.js +1 -0
  72. package/lib/commonjs/components/Tooltip/Tooltip.js +1 -1
  73. package/lib/commonjs/components/Tooltip/tooltipPosition.js +1 -0
  74. package/lib/commonjs/components/TypingIndicator/TypingIndicator.js +1 -0
  75. package/lib/commonjs/components/TypingIndicator/index.js +1 -0
  76. package/lib/commonjs/components/WheelPicker/Wheel.js +1 -0
  77. package/lib/commonjs/components/WheelPicker/WheelPicker.js +1 -0
  78. package/lib/commonjs/components/WheelPicker/index.js +1 -0
  79. package/lib/commonjs/components/index.js +1 -1
  80. package/lib/commonjs/hooks/index.js +1 -1
  81. package/lib/commonjs/hooks/useRefreshControl.js +1 -0
  82. package/lib/commonjs/hooks/useScrollDirection.js +1 -0
  83. package/lib/commonjs/index.js +1 -1
  84. package/lib/commonjs/utils/announce.js +1 -0
  85. package/lib/commonjs/utils/hapticUtils.js +1 -1
  86. package/lib/commonjs/utils/index.js +1 -1
  87. package/lib/commonjs/utils/placement.js +1 -0
  88. package/lib/module/components/BarChart/BarChart.js +1 -0
  89. package/lib/module/components/BarChart/index.js +1 -0
  90. package/lib/module/components/BarChart/scale.js +1 -0
  91. package/lib/module/components/BottomNavigation/BottomNavigation.js +1 -1
  92. package/lib/module/components/BottomNavigation/useScreenReaderEnabled.js +1 -0
  93. package/lib/module/components/BottomSheet/BottomSheet.js +1 -1
  94. package/lib/module/components/BottomSheet/index.js +1 -1
  95. package/lib/module/components/BottomSheet/useSheetSwap.js +1 -0
  96. package/lib/module/components/Card/Card.js +1 -1
  97. package/lib/module/components/Checkbox/Checkbox.js +1 -1
  98. package/lib/module/components/Composer/Composer.js +1 -0
  99. package/lib/module/components/Composer/index.js +1 -0
  100. package/lib/module/components/DateSeparator/DateSeparator.js +1 -0
  101. package/lib/module/components/DateSeparator/index.js +1 -0
  102. package/lib/module/components/FieldBase/ChoiceText.js +1 -1
  103. package/lib/module/components/FieldBase/FieldBase.js +1 -1
  104. package/lib/module/components/FieldBase/useFloatingLabel.js +1 -1
  105. package/lib/module/components/FloatingActionButton/FloatingActionButton.js +1 -1
  106. package/lib/module/components/FormField/FormField.js +1 -1
  107. package/lib/module/components/Input/Input.js +1 -1
  108. package/lib/module/components/ListItem/ListItem.js +1 -1
  109. package/lib/module/components/Menu/Menu.js +1 -0
  110. package/lib/module/components/Menu/MenuSurface.js +1 -0
  111. package/lib/module/components/Menu/focusHost.js +1 -0
  112. package/lib/module/components/Menu/index.js +1 -0
  113. package/lib/module/components/Menu/menuModel.js +1 -0
  114. package/lib/module/components/Menu/useContextMenu.js +1 -0
  115. package/lib/module/components/Menu/webOnly.js +1 -0
  116. package/lib/module/components/MessageBubble/MessageBubble.js +1 -0
  117. package/lib/module/components/MessageBubble/index.js +1 -0
  118. package/lib/module/components/MessageList/MessageList.js +1 -0
  119. package/lib/module/components/MessageList/index.js +1 -0
  120. package/lib/module/components/Notation/Notation.js +1 -1
  121. package/lib/module/components/OnboardingPager/OnboardingPager.js +1 -0
  122. package/lib/module/components/OnboardingPager/index.js +1 -0
  123. package/lib/module/components/OptionSheet/OptionSheet.js +1 -1
  124. package/lib/module/components/PaymentResult/PaymentResult.js +1 -0
  125. package/lib/module/components/PaymentResult/index.js +1 -0
  126. package/lib/module/components/PermissionPrompt/PermissionPrompt.js +1 -0
  127. package/lib/module/components/PermissionPrompt/index.js +1 -0
  128. package/lib/module/components/PermissionPrompt/usePermissionPrompt.js +1 -0
  129. package/lib/module/components/PhoneNumberInput/PhoneNumberInput.js +1 -1
  130. package/lib/module/components/Radio/Radio.js +1 -1
  131. package/lib/module/components/Radio/RadioGroup.js +1 -1
  132. package/lib/module/components/ScannerOverlay/ScannerOverlay.js +1 -0
  133. package/lib/module/components/ScannerOverlay/index.js +1 -0
  134. package/lib/module/components/SearchBar/SearchBar.js +1 -1
  135. package/lib/module/components/SearchBar/SearchPanel.js +1 -0
  136. package/lib/module/components/SearchBar/highlight.js +1 -0
  137. package/lib/module/components/SearchBar/index.js +1 -1
  138. package/lib/module/components/SearchBar/useRecentSearches.js +1 -0
  139. package/lib/module/components/SegmentedControl/SegmentedControl.js +1 -1
  140. package/lib/module/components/Select/Select.js +1 -1
  141. package/lib/module/components/SignaturePad/SignaturePad.js +1 -0
  142. package/lib/module/components/SignaturePad/index.js +1 -0
  143. package/lib/module/components/SignaturePad/signatureGeometry.js +1 -0
  144. package/lib/module/components/SignaturePad/writePng.js +1 -0
  145. package/lib/module/components/SignaturePad/writePng.web.js +1 -0
  146. package/lib/module/components/Sparkline/Sparkline.js +1 -0
  147. package/lib/module/components/Sparkline/geometry.js +1 -0
  148. package/lib/module/components/Sparkline/index.js +1 -0
  149. package/lib/module/components/Spinner/Spinner.js +1 -1
  150. package/lib/module/components/StatTile/StatTile.js +1 -1
  151. package/lib/module/components/Switch/Switch.js +1 -1
  152. package/lib/module/components/TagInput/TagInput.js +1 -1
  153. package/lib/module/components/TimePicker/TimePicker.js +1 -1
  154. package/lib/module/components/Toast/Toast.js +1 -1
  155. package/lib/module/components/Toast/ToastProvider.js +1 -1
  156. package/lib/module/components/Tooltip/RichTooltipBody.js +1 -0
  157. package/lib/module/components/Tooltip/Tooltip.js +1 -1
  158. package/lib/module/components/Tooltip/tooltipPosition.js +1 -0
  159. package/lib/module/components/TypingIndicator/TypingIndicator.js +1 -0
  160. package/lib/module/components/TypingIndicator/index.js +1 -0
  161. package/lib/module/components/WheelPicker/Wheel.js +1 -0
  162. package/lib/module/components/WheelPicker/WheelPicker.js +1 -0
  163. package/lib/module/components/WheelPicker/index.js +1 -0
  164. package/lib/module/components/index.js +1 -1
  165. package/lib/module/hooks/index.js +1 -1
  166. package/lib/module/hooks/useRefreshControl.js +1 -0
  167. package/lib/module/hooks/useScrollDirection.js +1 -0
  168. package/lib/module/index.js +1 -1
  169. package/lib/module/utils/announce.js +1 -0
  170. package/lib/module/utils/hapticUtils.js +1 -1
  171. package/lib/module/utils/index.js +1 -1
  172. package/lib/module/utils/placement.js +1 -0
  173. package/lib/typescript/commonjs/components/BarChart/BarChart.d.ts +62 -0
  174. package/lib/typescript/commonjs/components/BarChart/index.d.ts +3 -0
  175. package/lib/typescript/commonjs/components/BarChart/scale.d.ts +15 -0
  176. package/lib/typescript/commonjs/components/BottomNavigation/BottomNavigation.d.ts +32 -0
  177. package/lib/typescript/commonjs/components/BottomNavigation/index.d.ts +1 -1
  178. package/lib/typescript/commonjs/components/BottomNavigation/useScreenReaderEnabled.d.ts +8 -0
  179. package/lib/typescript/commonjs/components/BottomSheet/BottomSheet.d.ts +34 -3
  180. package/lib/typescript/commonjs/components/BottomSheet/index.d.ts +2 -0
  181. package/lib/typescript/commonjs/components/BottomSheet/useSheetSwap.d.ts +24 -0
  182. package/lib/typescript/commonjs/components/Card/Card.d.ts +9 -0
  183. package/lib/typescript/commonjs/components/Checkbox/Checkbox.d.ts +4 -1
  184. package/lib/typescript/commonjs/components/Composer/Composer.d.ts +61 -0
  185. package/lib/typescript/commonjs/components/Composer/index.d.ts +3 -0
  186. package/lib/typescript/commonjs/components/DateSeparator/DateSeparator.d.ts +37 -0
  187. package/lib/typescript/commonjs/components/DateSeparator/index.d.ts +3 -0
  188. package/lib/typescript/commonjs/components/FileViewer/FileViewer.d.ts +1 -1
  189. package/lib/typescript/commonjs/components/FloatingActionButton/FloatingActionButton.d.ts +3 -1
  190. package/lib/typescript/commonjs/components/Input/Input.d.ts +2 -2
  191. package/lib/typescript/commonjs/components/ListItem/ListItem.d.ts +9 -0
  192. package/lib/typescript/commonjs/components/Menu/Menu.d.ts +46 -0
  193. package/lib/typescript/commonjs/components/Menu/MenuSurface.d.ts +30 -0
  194. package/lib/typescript/commonjs/components/Menu/focusHost.d.ts +9 -0
  195. package/lib/typescript/commonjs/components/Menu/index.d.ts +5 -0
  196. package/lib/typescript/commonjs/components/Menu/menuModel.d.ts +68 -0
  197. package/lib/typescript/commonjs/components/Menu/useContextMenu.d.ts +58 -0
  198. package/lib/typescript/commonjs/components/Menu/webOnly.d.ts +7 -0
  199. package/lib/typescript/commonjs/components/MessageBubble/MessageBubble.d.ts +87 -0
  200. package/lib/typescript/commonjs/components/MessageBubble/index.d.ts +3 -0
  201. package/lib/typescript/commonjs/components/MessageList/MessageList.d.ts +68 -0
  202. package/lib/typescript/commonjs/components/MessageList/index.d.ts +3 -0
  203. package/lib/typescript/commonjs/components/Notation/Notation.d.ts +10 -4
  204. package/lib/typescript/commonjs/components/OnboardingPager/OnboardingPager.d.ts +53 -0
  205. package/lib/typescript/commonjs/components/OnboardingPager/index.d.ts +3 -0
  206. package/lib/typescript/commonjs/components/OptionSheet/OptionSheet.d.ts +2 -0
  207. package/lib/typescript/commonjs/components/PaymentResult/PaymentResult.d.ts +71 -0
  208. package/lib/typescript/commonjs/components/PaymentResult/index.d.ts +3 -0
  209. package/lib/typescript/commonjs/components/PermissionPrompt/PermissionPrompt.d.ts +39 -0
  210. package/lib/typescript/commonjs/components/PermissionPrompt/index.d.ts +5 -0
  211. package/lib/typescript/commonjs/components/PermissionPrompt/usePermissionPrompt.d.ts +44 -0
  212. package/lib/typescript/commonjs/components/PhoneNumberInput/PhoneNumberInput.d.ts +5 -2
  213. package/lib/typescript/commonjs/components/Radio/Radio.d.ts +13 -4
  214. package/lib/typescript/commonjs/components/Radio/RadioGroup.d.ts +5 -0
  215. package/lib/typescript/commonjs/components/ScannerOverlay/ScannerOverlay.d.ts +74 -0
  216. package/lib/typescript/commonjs/components/ScannerOverlay/index.d.ts +3 -0
  217. package/lib/typescript/commonjs/components/SearchBar/SearchBar.d.ts +35 -0
  218. package/lib/typescript/commonjs/components/SearchBar/SearchPanel.d.ts +49 -0
  219. package/lib/typescript/commonjs/components/SearchBar/highlight.d.ts +14 -0
  220. package/lib/typescript/commonjs/components/SearchBar/index.d.ts +3 -0
  221. package/lib/typescript/commonjs/components/SearchBar/useRecentSearches.d.ts +24 -0
  222. package/lib/typescript/commonjs/components/SegmentedControl/SegmentedControl.d.ts +5 -1
  223. package/lib/typescript/commonjs/components/Select/Select.d.ts +4 -1
  224. package/lib/typescript/commonjs/components/SignaturePad/SignaturePad.d.ts +94 -0
  225. package/lib/typescript/commonjs/components/SignaturePad/index.d.ts +4 -0
  226. package/lib/typescript/commonjs/components/SignaturePad/signatureGeometry.d.ts +36 -0
  227. package/lib/typescript/commonjs/components/SignaturePad/writePng.d.ts +7 -0
  228. package/lib/typescript/commonjs/components/SignaturePad/writePng.web.d.ts +3 -0
  229. package/lib/typescript/commonjs/components/Sparkline/Sparkline.d.ts +41 -0
  230. package/lib/typescript/commonjs/components/Sparkline/geometry.d.ts +20 -0
  231. package/lib/typescript/commonjs/components/Sparkline/index.d.ts +3 -0
  232. package/lib/typescript/commonjs/components/Spinner/Spinner.d.ts +7 -1
  233. package/lib/typescript/commonjs/components/StatTile/StatTile.d.ts +24 -1
  234. package/lib/typescript/commonjs/components/StatTile/index.d.ts +1 -1
  235. package/lib/typescript/commonjs/components/Switch/Switch.d.ts +11 -4
  236. package/lib/typescript/commonjs/components/TagInput/TagInput.d.ts +4 -0
  237. package/lib/typescript/commonjs/components/Toast/Toast.d.ts +21 -0
  238. package/lib/typescript/commonjs/components/Toast/ToastProvider.d.ts +21 -0
  239. package/lib/typescript/commonjs/components/Toast/index.d.ts +1 -1
  240. package/lib/typescript/commonjs/components/Tooltip/RichTooltipBody.d.ts +27 -0
  241. package/lib/typescript/commonjs/components/Tooltip/Tooltip.d.ts +24 -0
  242. package/lib/typescript/commonjs/components/Tooltip/index.d.ts +1 -1
  243. package/lib/typescript/commonjs/components/Tooltip/tooltipPosition.d.ts +35 -0
  244. package/lib/typescript/commonjs/components/TypingIndicator/TypingIndicator.d.ts +21 -0
  245. package/lib/typescript/commonjs/components/TypingIndicator/index.d.ts +3 -0
  246. package/lib/typescript/commonjs/components/WheelPicker/Wheel.d.ts +34 -0
  247. package/lib/typescript/commonjs/components/WheelPicker/WheelPicker.d.ts +73 -0
  248. package/lib/typescript/commonjs/components/WheelPicker/index.d.ts +3 -0
  249. package/lib/typescript/commonjs/components/index.d.ts +36 -8
  250. package/lib/typescript/commonjs/hooks/index.d.ts +4 -0
  251. package/lib/typescript/commonjs/hooks/useRefreshControl.d.ts +75 -0
  252. package/lib/typescript/commonjs/hooks/useScrollDirection.d.ts +21 -0
  253. package/lib/typescript/commonjs/index.d.ts +4 -4
  254. package/lib/typescript/commonjs/specs/NativePdfRasterizer.d.ts +1 -1
  255. package/lib/typescript/commonjs/utils/announce.d.ts +14 -0
  256. package/lib/typescript/commonjs/utils/hapticUtils.d.ts +1 -1
  257. package/lib/typescript/commonjs/utils/index.d.ts +2 -0
  258. package/lib/typescript/commonjs/utils/placement.d.ts +55 -0
  259. package/lib/typescript/module/components/BarChart/BarChart.d.ts +62 -0
  260. package/lib/typescript/module/components/BarChart/index.d.ts +3 -0
  261. package/lib/typescript/module/components/BarChart/scale.d.ts +15 -0
  262. package/lib/typescript/module/components/BottomNavigation/BottomNavigation.d.ts +32 -0
  263. package/lib/typescript/module/components/BottomNavigation/index.d.ts +1 -1
  264. package/lib/typescript/module/components/BottomNavigation/useScreenReaderEnabled.d.ts +8 -0
  265. package/lib/typescript/module/components/BottomSheet/BottomSheet.d.ts +34 -3
  266. package/lib/typescript/module/components/BottomSheet/index.d.ts +2 -0
  267. package/lib/typescript/module/components/BottomSheet/useSheetSwap.d.ts +24 -0
  268. package/lib/typescript/module/components/Card/Card.d.ts +9 -0
  269. package/lib/typescript/module/components/Checkbox/Checkbox.d.ts +4 -1
  270. package/lib/typescript/module/components/Composer/Composer.d.ts +61 -0
  271. package/lib/typescript/module/components/Composer/index.d.ts +3 -0
  272. package/lib/typescript/module/components/DateSeparator/DateSeparator.d.ts +37 -0
  273. package/lib/typescript/module/components/DateSeparator/index.d.ts +3 -0
  274. package/lib/typescript/module/components/FileViewer/FileViewer.d.ts +1 -1
  275. package/lib/typescript/module/components/FloatingActionButton/FloatingActionButton.d.ts +3 -1
  276. package/lib/typescript/module/components/Input/Input.d.ts +2 -2
  277. package/lib/typescript/module/components/ListItem/ListItem.d.ts +9 -0
  278. package/lib/typescript/module/components/Menu/Menu.d.ts +46 -0
  279. package/lib/typescript/module/components/Menu/MenuSurface.d.ts +30 -0
  280. package/lib/typescript/module/components/Menu/focusHost.d.ts +9 -0
  281. package/lib/typescript/module/components/Menu/index.d.ts +5 -0
  282. package/lib/typescript/module/components/Menu/menuModel.d.ts +68 -0
  283. package/lib/typescript/module/components/Menu/useContextMenu.d.ts +58 -0
  284. package/lib/typescript/module/components/Menu/webOnly.d.ts +7 -0
  285. package/lib/typescript/module/components/MessageBubble/MessageBubble.d.ts +87 -0
  286. package/lib/typescript/module/components/MessageBubble/index.d.ts +3 -0
  287. package/lib/typescript/module/components/MessageList/MessageList.d.ts +68 -0
  288. package/lib/typescript/module/components/MessageList/index.d.ts +3 -0
  289. package/lib/typescript/module/components/Notation/Notation.d.ts +10 -4
  290. package/lib/typescript/module/components/OnboardingPager/OnboardingPager.d.ts +53 -0
  291. package/lib/typescript/module/components/OnboardingPager/index.d.ts +3 -0
  292. package/lib/typescript/module/components/OptionSheet/OptionSheet.d.ts +2 -0
  293. package/lib/typescript/module/components/PaymentResult/PaymentResult.d.ts +71 -0
  294. package/lib/typescript/module/components/PaymentResult/index.d.ts +3 -0
  295. package/lib/typescript/module/components/PermissionPrompt/PermissionPrompt.d.ts +39 -0
  296. package/lib/typescript/module/components/PermissionPrompt/index.d.ts +5 -0
  297. package/lib/typescript/module/components/PermissionPrompt/usePermissionPrompt.d.ts +44 -0
  298. package/lib/typescript/module/components/PhoneNumberInput/PhoneNumberInput.d.ts +5 -2
  299. package/lib/typescript/module/components/Radio/Radio.d.ts +13 -4
  300. package/lib/typescript/module/components/Radio/RadioGroup.d.ts +5 -0
  301. package/lib/typescript/module/components/ScannerOverlay/ScannerOverlay.d.ts +74 -0
  302. package/lib/typescript/module/components/ScannerOverlay/index.d.ts +3 -0
  303. package/lib/typescript/module/components/SearchBar/SearchBar.d.ts +35 -0
  304. package/lib/typescript/module/components/SearchBar/SearchPanel.d.ts +49 -0
  305. package/lib/typescript/module/components/SearchBar/highlight.d.ts +14 -0
  306. package/lib/typescript/module/components/SearchBar/index.d.ts +3 -0
  307. package/lib/typescript/module/components/SearchBar/useRecentSearches.d.ts +24 -0
  308. package/lib/typescript/module/components/SegmentedControl/SegmentedControl.d.ts +5 -1
  309. package/lib/typescript/module/components/Select/Select.d.ts +4 -1
  310. package/lib/typescript/module/components/SignaturePad/SignaturePad.d.ts +94 -0
  311. package/lib/typescript/module/components/SignaturePad/index.d.ts +4 -0
  312. package/lib/typescript/module/components/SignaturePad/signatureGeometry.d.ts +36 -0
  313. package/lib/typescript/module/components/SignaturePad/writePng.d.ts +7 -0
  314. package/lib/typescript/module/components/SignaturePad/writePng.web.d.ts +3 -0
  315. package/lib/typescript/module/components/Sparkline/Sparkline.d.ts +41 -0
  316. package/lib/typescript/module/components/Sparkline/geometry.d.ts +20 -0
  317. package/lib/typescript/module/components/Sparkline/index.d.ts +3 -0
  318. package/lib/typescript/module/components/Spinner/Spinner.d.ts +7 -1
  319. package/lib/typescript/module/components/StatTile/StatTile.d.ts +24 -1
  320. package/lib/typescript/module/components/StatTile/index.d.ts +1 -1
  321. package/lib/typescript/module/components/Switch/Switch.d.ts +11 -4
  322. package/lib/typescript/module/components/TagInput/TagInput.d.ts +4 -0
  323. package/lib/typescript/module/components/Toast/Toast.d.ts +21 -0
  324. package/lib/typescript/module/components/Toast/ToastProvider.d.ts +21 -0
  325. package/lib/typescript/module/components/Toast/index.d.ts +1 -1
  326. package/lib/typescript/module/components/Tooltip/RichTooltipBody.d.ts +27 -0
  327. package/lib/typescript/module/components/Tooltip/Tooltip.d.ts +24 -0
  328. package/lib/typescript/module/components/Tooltip/index.d.ts +1 -1
  329. package/lib/typescript/module/components/Tooltip/tooltipPosition.d.ts +35 -0
  330. package/lib/typescript/module/components/TypingIndicator/TypingIndicator.d.ts +21 -0
  331. package/lib/typescript/module/components/TypingIndicator/index.d.ts +3 -0
  332. package/lib/typescript/module/components/WheelPicker/Wheel.d.ts +34 -0
  333. package/lib/typescript/module/components/WheelPicker/WheelPicker.d.ts +73 -0
  334. package/lib/typescript/module/components/WheelPicker/index.d.ts +3 -0
  335. package/lib/typescript/module/components/index.d.ts +36 -8
  336. package/lib/typescript/module/hooks/index.d.ts +4 -0
  337. package/lib/typescript/module/hooks/useRefreshControl.d.ts +75 -0
  338. package/lib/typescript/module/hooks/useScrollDirection.d.ts +21 -0
  339. package/lib/typescript/module/index.d.ts +4 -4
  340. package/lib/typescript/module/specs/NativePdfRasterizer.d.ts +1 -1
  341. package/lib/typescript/module/utils/announce.d.ts +14 -0
  342. package/lib/typescript/module/utils/hapticUtils.d.ts +1 -1
  343. package/lib/typescript/module/utils/index.d.ts +2 -0
  344. package/lib/typescript/module/utils/placement.d.ts +55 -0
  345. package/package.json +3 -3
  346. package/src/specs/NativePdfRasterizer.ts +1 -1
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ScannerOverlay=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index2=require("../AppIcon/index.js"),_index3=require("../Button/index.js"),_index4=require("../EmptyState/index.js"),_index5=require("../IconButton/index.js"),_index6=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");const MIN_FRAME=240,DEFAULT_FRAME=260,MARK_LENGTH=32,MARK_THICKNESS=4,LIFT=.06,BREATHE_SCALE=1.03,SNAP_SCALE=1.08,T=4,CORNERS=[{key:"tl",style:{top:0,left:0,borderTopWidth:4,borderLeftWidth:4}},{key:"tr",style:{top:0,right:0,borderTopWidth:4,borderRightWidth:4}},{key:"bl",style:{bottom:0,left:0,borderBottomWidth:4,borderLeftWidth:4}},{key:"br",style:{bottom:0,right:0,borderBottomWidth:4,borderRightWidth:4}}],DEFAULT_LABELS={found:"Code found",invalid:"This code cannot be used. Try another.",torchOn:"Turn torch on",torchOff:"Turn torch off",manualEntry:"Enter code instead",gallery:"Upload from gallery",noPermissionTitle:"Camera access is off",noPermissionMessage:"Allow camera access to scan a code.",permissionAction:"Allow camera access",noCameraTitle:"No camera found",noCameraMessage:"This device has no camera available. You can still add the code another way."},ScannerOverlay=exports.ScannerOverlay=(0,_react.forwardRef)((e,t)=>{const{children:i,state:n="scanning",hint:a="Point the camera at the code",labels:r,torch:o=!1,onTorchChange:s,onManualEntry:l,onGallery:c,onPermissionAction:d,frameSize:u=DEFAULT_FRAME,haptic:m,style:h,testID:_}=e,x=(0,_index.useTheme)(),g=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),p=(0,_useReducedMotion.useReducedMotion)(),f=(0,_react.useMemo)(()=>buildStyles(x),[x]),v={...DEFAULT_LABELS,...r},[y,j]=(0,_react.useState)({width:0,height:0}),b="scanning"===n||"found"===n||"invalid"===n,R=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current,N=x.motion.duration.slower,S=x.motion.duration.normal;(0,_react.useEffect)(()=>{if(R.setValue(1),p)return;let e;return"scanning"===n&&N>0?e=_reactNative.Animated.loop(_reactNative.Animated.sequence([_reactNative.Animated.timing(R,{toValue:1.03,duration:2*N,useNativeDriver:!0}),_reactNative.Animated.timing(R,{toValue:1,duration:2*N,useNativeDriver:!0})])):"found"===n&&S>0&&(R.setValue(1.08),e=_reactNative.Animated.timing(R,{toValue:1,duration:S,useNativeDriver:!0})),e?.start(),()=>e?.stop()},[n,p,N,S,R]);const w=(0,_react.useRef)(n);(0,_react.useEffect)(()=>{w.current!==n&&(w.current=n,!1!==m&&("found"===n?(0,_hapticUtils.triggerHaptic)("notificationSuccess"):"invalid"===n&&(0,_hapticUtils.triggerHaptic)("notificationError")))},[n,m]);const{found:A,invalid:E}=v,{noPermissionTitle:C,noPermissionMessage:M}=v,{noCameraTitle:V,noCameraMessage:k}=v;(0,_react.useEffect)(()=>{switch(n){case"scanning":(0,_announce.announce)(a);break;case"found":(0,_announce.announce)(A);break;case"invalid":(0,_announce.announce)(E,{polite:!1});break;case"noPermission":(0,_announce.announce)(`${C}. ${M}`);break;case"noCamera":(0,_announce.announce)(`${V}. ${k}`)}},[n,a,A,E,C,M,V,k]);const P=Math.max(240,Math.min(u,y.width-2*x.spacing.xl)),L=(y.width-P)/2,q=Math.max(x.spacing.md,(y.height-P)/2-.06*y.height),O=y.width>0&&y.height>0,I={borderColor:"found"===n?x.colors.success:"invalid"===n?x.colors.error:x.colors.onOverlay,width:32,height:32},F="found"===n||"invalid"===n?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.pill,{backgroundColor:"found"===n?x.colors.success:x.colors.error}],children:(0,_jsxRuntime.jsx)(_index6.Text,{variant:"bodySmall",weight:"semibold",align:"center",color:"found"===n?x.colors.onSuccess:x.colors.onError,children:"found"===n?A:E})}):(0,_jsxRuntime.jsx)(_index6.Text,{variant:"bodySmall",align:"center",color:x.colors.onOverlay,children:a}),B=b&&null!=s,D=b?"glass":"outline";return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,testID:_,onLayout:e=>{const{width:t,height:i}=e.nativeEvent.layout;j(e=>e.width===t&&e.height===i?e:{width:t,height:i})},style:[f.root,!b&&{backgroundColor:x.colors.background.primary},h],children:[b?(0,_jsxRuntime.jsx)(_reactNative.View,{style:_reactNative.StyleSheet.absoluteFill,children:i}):null,b&&O?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{pointerEvents:"none",style:_reactNative.StyleSheet.absoluteFill,accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants","aria-hidden":!0,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.scrim,{left:0,right:0,top:0,height:q}]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.scrim,{left:0,right:0,top:q+P,bottom:0}]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.scrim,{left:0,width:L,top:q,height:P}]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.scrim,{left:L+P,right:0,top:q,height:P}]}),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{position:"absolute",left:L,top:q,width:P,height:P,transform:[{scale:R}]},children:CORNERS.map(e=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.mark,I,e.style]},e.key))})]}),(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[f.message,{top:q+P+x.spacing.md}],children:F})]}):null,b?null:(0,_jsxRuntime.jsx)(_reactNative.View,{style:f.panel,children:(0,_jsxRuntime.jsx)(_index4.EmptyState,{fill:!0,icon:(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:"noPermission"===n?"camera":"camera-slash",size:48,color:x.colors.text.tertiary}),title:"noPermission"===n?C:V,description:"noPermission"===n?M:k,action:"noPermission"===n&&d?{label:v.permissionAction,onPress:d}:void 0})}),(0,_jsxRuntime.jsxs)(_reactNative.View,{pointerEvents:"box-none",style:[f.bar,{paddingBottom:Math.max(g.bottom,x.spacing.md)}],children:[B?(0,_jsxRuntime.jsx)(_index5.IconButton,{icon:o?"flash":"flash-slash",variant:"glass",size:"lg",active:o,haptic:m,accessibilityLabel:o?v.torchOff:v.torchOn,onPress:()=>s?.(!o)}):null,c?(0,_jsxRuntime.jsx)(_index3.Button,{title:v.gallery,leftIcon:"gallery",variant:D,tone:"neutral",size:"lg",haptic:m,onPress:c}):null,l?(0,_jsxRuntime.jsx)(_index3.Button,{title:v.manualEntry,leftIcon:"keyboard",variant:D,tone:"neutral",size:"lg",haptic:m,onPress:l}):null]})]})});ScannerOverlay.displayName="ScannerOverlay";const buildStyles=e=>_reactNative.StyleSheet.create({root:{flex:1,overflow:"hidden"},scrim:{position:"absolute",backgroundColor:e.colors.background.overlay},mark:{position:"absolute"},message:{position:"absolute",left:0,right:0,alignItems:"center",paddingHorizontal:e.spacing.xl},pill:{paddingHorizontal:e.spacing.md,paddingVertical:e.spacing.xs,borderRadius:e.radius.full,..._corners.smoothCorners},panel:{..._reactNative.StyleSheet.absoluteFill,justifyContent:"center"},bar:{position:"absolute",left:0,right:0,bottom:0,flexDirection:"row",flexWrap:"wrap",alignItems:"center",justifyContent:"center",gap:e.spacing.sm,paddingHorizontal:e.spacing.md}});var _default=exports.default=ScannerOverlay;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"ScannerOverlay",{enumerable:!0,get:function(){return _ScannerOverlay.ScannerOverlay}}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return _ScannerOverlay.default}});var _ScannerOverlay=_interopRequireWildcard(require("./ScannerOverlay.js"));function _interopRequireWildcard(e,r){if("function"==typeof WeakMap)var t=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,r){if(!r&&e&&e.__esModule)return e;var a,o,u={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return u;if(a=r?n:t){if(a.has(e))return a.get(e);a.set(e,u)}for(const r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((o=(a=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,r))&&(o.get||o.set)?a(u,r,o):u[r]=e[r]);return u})(e,r)}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SearchBar=void 0;var _react=require("react"),_reactNative=require("react-native"),_useDebounce=require("../../hooks/useDebounce.js"),_index=require("../../theme/index.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_mergeRefs=require("../../utils/mergeRefs.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_useFloatingLabel=require("../FieldBase/useFloatingLabel.js"),_jsxRuntime=require("react/jsx-runtime");const SearchBar=exports.SearchBar=(0,_react.forwardRef)((e,t)=>{const{value:i,onChangeText:a,onSubmit:s,placeholder:l="Search…",autoFocus:r=!1,disabled:o=!1,onClear:c,leftIcon:n,debounceMs:d,size:u="md",variant:_,borderRadius:b,label:f,labelMode:p="top",labelStyle:h,haptic:v,style:x,inputStyle:g,accessibilityLabel:m,testID:S,...y}=e,j=(0,_index.useTheme)(),F=_??j.components.searchBar?.defaultVariant??j.components.field?.defaultVariant??"filled",R="underline"===F,B=(0,_FieldBase.resolveFieldSize)(j,u),I={...B,...j.components.searchBar?.[u]??{}},z=(0,_FieldBase.resolveFieldTextStyle)(j,{disabled:o}),C=(0,_react.useRef)(null),q=(0,_react.useMemo)(()=>(0,_mergeRefs.mergeRefs)(C,t),[t]),L=(0,_react.useCallback)(()=>{o||C.current?.focus()},[o]),N=(0,_react.useMemo)(()=>buildStyles(j),[j]),w="string"==typeof i?i:"",[T,k]=(0,_react.useState)(!1),[D,H]=(0,_react.useState)(w),V=(0,_useDebounce.useDebounce)(D,d??0);(0,_react.useEffect)(()=>{void 0!==d&&w!==D&&H(w)},[w,d]);const M=(0,_react.useRef)(w);(0,_react.useEffect)(()=>{void 0!==d&&V!==M.current&&(M.current=V,a(V))},[V,d,a]);const P=(0,_react.useCallback)(e=>{void 0===d?a(e):H(e)},[d,a]),U=(0,_react.useCallback)(()=>{const e=(0,_hapticUtils.resolveHaptic)(v,"selection");e&&(0,_hapticUtils.triggerHaptic)(e),void 0!==d&&(H(""),M.current=""),a(""),c?.()},[v,d,a,c]),E=(0,_react.useCallback)(()=>{s?.(void 0!==d?D:w)},[s,d,D,w]),O=void 0!==d?D:w,A=O.length>0,W={size:I.iconSize,color:o?j.colors.text.disabled:j.colors.text.tertiary,disabled:o},K=n?(0,_slotIcon.renderSlotIcon)(n,W):(j.icons?.search??_defaultIcons.defaultIcons.search)(W),G=Boolean(f)&&"float"===p,J=(0,_useFloatingLabel.useFloatingLabel)({label:f,enabled:G,floated:T||A,variant:F,sizeTokens:{...B,...I},leadingOffset:I.iconSize+j.spacing.md,trailingOffset:A?I.iconSize+j.spacing.md:0,paddingLeft:R?0:I.paddingHorizontal,color:j.colors.field.label,style:h}),Q=A&&!o?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:U,hitSlop:8,accessibilityRole:"button",accessibilityLabel:"Clear search",children:(j.icons?.close??_defaultIcons.defaultIcons.close)({size:I.iconSize,color:j.colors.text.secondary})}):null;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:x,testID:S,children:[f&&!G?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:u,style:h,children:f}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:N.root,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:N.fieldWrap,children:[(0,_jsxRuntime.jsx)(_FieldBase.FieldBase,{size:u,variant:F,focused:T,disabled:o,filled:A,minHeight:I.minHeight,paddingHorizontal:R?0:I.paddingHorizontal,borderRadius:b??I.borderRadius,leading:K,trailing:Q,topNotch:J.topNotch,onPress:L,pressFeedback:!1,accessibilityRole:"search",accessibilityLabel:m??l,children:(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:q,style:[N.input,{fontSize:I.fontSize,color:z.color,...z.weightStyle},g],value:O,onChangeText:P,onSubmitEditing:E,onFocus:()=>k(!0),onBlur:()=>k(!1),placeholder:!G||T||A?l:void 0,placeholderTextColor:z.placeholderColor,autoFocus:r,editable:!o,returnKeyType:"search",selectionColor:(0,_FieldBase.resolveVariantColors)(j,F).borderFocusedRepresentative,accessibilityLabel:m??l,accessibilityState:{disabled:o},"aria-disabled":o,...y})}),J.node]})})]})});SearchBar.displayName="SearchBar";const buildStyles=e=>_reactNative.StyleSheet.create({root:{flexDirection:"row",alignItems:"center",width:"100%",position:"relative",overflow:"visible"},fieldWrap:{flex:1,position:"relative",overflow:"visible"},input:{flex:1,padding:0,margin:0,includeFontPadding:!1}});var _default=exports.default=SearchBar;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SearchBar=void 0;var _react=require("react"),_reactNative=require("react-native"),_useControllableState=require("../../hooks/useControllableState.js"),_useDebounce=require("../../hooks/useDebounce.js"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_mergeRefs=require("../../utils/mergeRefs.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_useFloatingLabel=require("../FieldBase/useFloatingLabel.js"),_SearchPanel=require("./SearchPanel.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_PANEL_ROWS=8,HOLD_RELEASE_MS=50,SearchBar=exports.SearchBar=(0,_react.forwardRef)((e,a)=>{const{value:t,onChangeText:l,onSubmit:s,onFocus:r,onBlur:c,placeholder:i="Search…",autoFocus:n=!1,disabled:o=!1,onClear:u,leftIcon:d,debounceMs:_,size:b="md",variant:h,borderRadius:p,label:S,labelMode:g="top",labelStyle:f,scopes:v,scope:m,onScopeChange:x,recents:R,recentsTitle:j="Recent searches",maxRecents:C=DEFAULT_PANEL_ROWS,onSelectRecent:y,onRemoveRecent:F,onClearRecents:B,suggestions:k,maxSuggestions:L=DEFAULT_PANEL_ROWS,onSelectSuggestion:z,haptic:I,style:q,inputStyle:E,accessibilityLabel:P,testID:T,...N}=e,H=(0,_index.useTheme)(),D=h??H.components.searchBar?.defaultVariant??H.components.field?.defaultVariant??"filled",w="underline"===D,A=(0,_FieldBase.resolveFieldSize)(H,b),U={...A,...H.components.searchBar?.[b]??{}},M=(0,_FieldBase.resolveFieldTextStyle)(H,{disabled:o}),O=(0,_react.useRef)(null),V=(0,_react.useMemo)(()=>(0,_mergeRefs.mergeRefs)(O,a),[a]),W=(0,_react.useCallback)(()=>{o||O.current?.focus()},[o]),$=(0,_react.useMemo)(()=>buildStyles(H),[H]),K="string"==typeof t?t:"",[G,J]=(0,_react.useState)(!1),Q=(0,_react.useCallback)(e=>{J(!0),r?.(e)},[r]),X=(0,_react.useCallback)(e=>{J(!1),c?.(e)},[c]),[Y,Z]=(0,_react.useState)(K),ee=(0,_useDebounce.useDebounce)(Y,_??0);(0,_react.useEffect)(()=>{void 0!==_&&K!==Y&&Z(K)},[K,_]);const ae=(0,_react.useRef)(K);(0,_react.useEffect)(()=>{void 0!==_&&ee!==ae.current&&(ae.current=ee,l(ee))},[ee,_,l]);const te=(0,_react.useCallback)(e=>{void 0===_?l(e):Z(e)},[_,l]),le=(0,_react.useCallback)(()=>{const e=(0,_hapticUtils.resolveHaptic)(I,"selection");e&&(0,_hapticUtils.triggerHaptic)(e),void 0!==_&&(Z(""),ae.current=""),l(""),u?.()},[I,_,l,u]),se=(0,_react.useCallback)(()=>{s?.(void 0!==_?Y:K)},[s,_,Y,K]),re=void 0!==_?Y:K,ce=re.length>0,[ie,ne]=(0,_useControllableState.useControllableState)({value:m,defaultValue:v?.[0]?.value??"",onChange:x}),oe=(0,_react.useCallback)(e=>{ne(e);const a=v?.find(a=>a.value===e)?.label;a&&(0,_announce.announce)(`Searching ${a}`)},[v,ne]),[ue,de]=(0,_react.useState)(!1),_e=(0,_react.useRef)(null),be=(0,_react.useCallback)(()=>{_e.current&&(clearTimeout(_e.current),_e.current=null)},[]),he=(0,_react.useCallback)(()=>{be(),de(!0)},[be]),pe=(0,_react.useCallback)(()=>{be(),_e.current=setTimeout(()=>de(!1),50)},[be]);(0,_react.useEffect)(()=>be,[be]);const Se=!o&&(G||ue),ge=(0,_react.useMemo)(()=>(R??[]).slice(0,C),[R,C]),fe=(0,_react.useMemo)(()=>(k??[]).slice(0,L).map(_SearchPanel.normalizeSuggestion),[k,L]),ve=Se&&!ce&&ge.length>0,me=Se&&ce&&fe.length>0,xe=me?fe.length:0;(0,_react.useEffect)(()=>{xe>0&&(0,_announce.announce)(1===xe?"1 suggestion":`${xe} suggestions`)},[xe]);const Re=(0,_react.useCallback)(()=>{const e=(0,_hapticUtils.resolveHaptic)(I,"selection");e&&(0,_hapticUtils.triggerHaptic)(e)},[I]),je=(0,_react.useCallback)(e=>{Re(),O.current?.blur(),de(!1),y?.(e)},[Re,y]),Ce=(0,_react.useCallback)(e=>{Re(),O.current?.blur(),de(!1),z?.(e)},[Re,z]),ye=(0,_react.useCallback)(e=>{Re(),F?.(e),(0,_announce.announce)(`Removed ${e}`),W()},[Re,F,W]),Fe=(0,_react.useCallback)(()=>{Re(),B?.(),(0,_announce.announce)("Recent searches cleared"),W()},[Re,B,W]),Be={size:U.iconSize,color:o?H.colors.text.disabled:H.colors.text.tertiary,disabled:o},ke=d?(0,_slotIcon.renderSlotIcon)(d,Be):(H.icons?.search??_defaultIcons.defaultIcons.search)(Be),Le=Boolean(S)&&"float"===g,ze=(0,_useFloatingLabel.useFloatingLabel)({label:S,enabled:Le,floated:G||ce,variant:D,sizeTokens:{...A,...U},leadingOffset:U.iconSize+H.spacing.md,trailingOffset:ce?U.iconSize+H.spacing.md:0,paddingLeft:w?0:U.paddingHorizontal,color:H.colors.field.label,style:f}),Ie=ce&&!o?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:le,hitSlop:8,accessibilityRole:"button",accessibilityLabel:"Clear search",children:(H.icons?.close??_defaultIcons.defaultIcons.close)({size:U.iconSize,color:H.colors.text.secondary})}):null;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:q,testID:T,children:[S&&!Le?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:b,style:f,children:S}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:$.root,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:$.fieldWrap,children:[(0,_jsxRuntime.jsx)(_FieldBase.FieldBase,{size:b,variant:D,focused:G,disabled:o,filled:ce,minHeight:U.minHeight,paddingHorizontal:w?0:U.paddingHorizontal,borderRadius:p??U.borderRadius,leading:ke,trailing:Ie,topNotch:ze.topNotch,onPress:W,pressFeedback:!1,accessibilityRole:"search",accessibilityLabel:P??i,children:(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:V,style:[$.input,{fontSize:U.fontSize,color:M.color,...M.weightStyle},E],value:re,onChangeText:te,onSubmitEditing:se,onFocus:Q,onBlur:X,placeholder:!Le||G||ce?i:void 0,placeholderTextColor:M.placeholderColor,autoFocus:n,editable:!o,returnKeyType:"search",selectionColor:(0,_FieldBase.resolveVariantColors)(H,D).borderFocusedRepresentative,accessibilityLabel:P??i,accessibilityState:{disabled:o},"aria-disabled":o,...N})}),ze.node]})}),v&&v.length>0?(0,_jsxRuntime.jsx)(_SearchPanel.SearchScopeBar,{scopes:v,scope:ie||(v[0]?.value??""),disabled:o,haptic:I,onChange:oe}):null,ve?(0,_jsxRuntime.jsx)(_SearchPanel.SearchRecents,{recents:ge,title:j,onSelect:je,onRemove:F?ye:void 0,onClear:B?Fe:void 0,onHold:he,onRelease:pe}):null,me?(0,_jsxRuntime.jsx)(_SearchPanel.SearchSuggestions,{suggestions:fe,query:re,onSelect:Ce,onHold:he,onRelease:pe}):null]})});SearchBar.displayName="SearchBar";const buildStyles=e=>_reactNative.StyleSheet.create({root:{flexDirection:"row",alignItems:"center",width:"100%",position:"relative",overflow:"visible"},fieldWrap:{flex:1,position:"relative",overflow:"visible"},input:{flex:1,padding:0,margin:0,includeFontPadding:!1}});var _default=exports.default=SearchBar;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.normalizeSuggestion=exports.SearchSuggestions=exports.SearchScopeBar=exports.SearchRecents=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../AppIcon/index.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index3=require("../Chip/index.js"),_index4=require("../Text/index.js"),_highlight=require("./highlight.js"),_jsxRuntime=require("react/jsx-runtime");const TOUCH=44,ICON=18,normalizeSuggestion=e=>"string"==typeof e?{text:e}:e;exports.normalizeSuggestion=normalizeSuggestion;const SearchScopeBar=({scopes:e,scope:s,disabled:t,haptic:i,onChange:n})=>{const r=(0,_index.useTheme)(),o=(0,_react.useMemo)(()=>buildStyles(r),[r]);return(0,_jsxRuntime.jsx)(_reactNative.ScrollView,{horizontal:!0,showsHorizontalScrollIndicator:!1,keyboardShouldPersistTaps:"handled",contentContainerStyle:o.scopes,accessibilityLabel:"Search scope",children:e.map(e=>(0,_jsxRuntime.jsx)(_index3.Chip,{label:e.label,selected:e.value===s,disabled:t,haptic:i,onPress:()=>n(e.value),containerStyle:o.scopeChip},e.value))})};exports.SearchScopeBar=SearchScopeBar;const SearchRecents=({recents:e,title:s,onSelect:t,onRemove:i,onClear:n,onHold:r,onRelease:o})=>{const l=(0,_index.useTheme)(),a=(0,_react.useMemo)(()=>buildStyles(l),[l]);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:a.list,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:a.header,children:[(0,_jsxRuntime.jsx)(_index4.Text,{variant:"label",accessibilityRole:"header",style:a.headerTitle,children:s}),n?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:n,onPressIn:r,onPressOut:o,accessibilityRole:"button",accessibilityLabel:"Clear all recent searches",style:a.clearAll,children:(0,_jsxRuntime.jsx)(_index4.Text,{variant:"label",color:"link",children:"Clear all"})}):null]}),e.map(e=>(0,_jsxRuntime.jsxs)(_reactNative.View,{style:a.row,children:[(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>t(e),onPressIn:r,onPressOut:o,accessibilityRole:"button",accessibilityLabel:e,accessibilityHint:"Searches again",android_ripple:{color:l.colors.surface.pressed},style:({pressed:e})=>[a.rowMain,e?{backgroundColor:l.colors.surface.pressed}:null],children:[(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:"history",size:18,color:l.colors.text.tertiary}),(0,_jsxRuntime.jsx)(_index4.Text,{variant:"body",numberOfLines:1,style:a.rowText,children:e})]}),i?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>i(e),onPressIn:r,onPressOut:o,accessibilityRole:"button",accessibilityLabel:`Remove ${e} from recent searches`,style:a.remove,children:(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:"x",size:18,color:l.colors.text.secondary})}):null]},e))]})};exports.SearchRecents=SearchRecents;const SuggestionRow=(0,_react.memo)(({item:e,query:s,onSelect:t,onHold:i,onRelease:n,theme:r,styles:o})=>{const l=(0,_highlight.splitHighlight)(e.text,s),a=e.icon?(0,_slotIcon.renderSlotIcon)(e.icon,{size:18,color:r.colors.text.tertiary,disabled:!1}):(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:"search",size:18,color:r.colors.text.tertiary});return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>t(e),onPressIn:i,onPressOut:n,accessibilityRole:"button",accessibilityLabel:e.subtitle?`${e.text}, ${e.subtitle}`:e.text,android_ripple:{color:r.colors.surface.pressed},style:({pressed:e})=>[o.rowMain,o.suggestion,e?{backgroundColor:r.colors.surface.pressed}:null],children:[a,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:o.rowText,children:[(0,_jsxRuntime.jsx)(_index4.Text,{variant:"body",color:"secondary",numberOfLines:1,children:l.map(e=>(0,_jsxRuntime.jsx)(_reactNative.Text,{style:e.match?o.match:void 0,children:e.text},e.start))}),e.subtitle?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",numberOfLines:1,children:e.subtitle}):null]})]})});SuggestionRow.displayName="SuggestionRow";const SearchSuggestions=({suggestions:e,query:s,onSelect:t,onHold:i,onRelease:n})=>{const r=(0,_index.useTheme)(),o=(0,_react.useMemo)(()=>buildStyles(r),[r]);return(0,_jsxRuntime.jsx)(_reactNative.View,{style:o.list,children:e.map(e=>(0,_jsxRuntime.jsx)(SuggestionRow,{item:e,query:s,onSelect:t,onHold:i,onRelease:n,theme:r,styles:o},e.id??e.text))})};exports.SearchSuggestions=SearchSuggestions;const buildStyles=e=>({..._reactNative.StyleSheet.create({scopes:{flexDirection:"row",alignItems:"center",gap:e.spacing.sm,paddingTop:e.spacing.sm},scopeChip:{minHeight:44},list:{width:"100%",paddingTop:e.spacing.xs},header:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",minHeight:44,paddingHorizontal:e.spacing.xs},headerTitle:{flex:1},clearAll:{minHeight:44,minWidth:44,justifyContent:"center",alignItems:"flex-end"},row:{flexDirection:"row",alignItems:"center"},rowMain:{flex:1,flexDirection:"row",alignItems:"center",gap:e.spacing.md,minHeight:44,paddingHorizontal:e.spacing.xs},suggestion:{paddingVertical:e.spacing.xs},rowText:{flex:1},remove:{width:44,height:44,alignItems:"center",justifyContent:"center"}}),match:{...(0,_index.fontFor)(e,"bold"),color:e.colors.text.primary}});
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.splitHighlight=void 0;const MAX_TOKENS=8,escapeRegExp=t=>t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),splitHighlight=(t,e)=>{const s=e.trim().split(/\s+/).filter(Boolean).slice(0,8).sort((t,e)=>e.length-t.length);if(!t||0===s.length)return[{text:t,match:!1,start:0}];const l=new RegExp(s.map(escapeRegExp).join("|"),"gi"),i=[];let h=0,c=l.exec(t);for(;null!==c;){const e=c.index,s=e+c[0].length;e>h&&i.push({text:t.slice(h,e),match:!1,start:h});const g=i[i.length-1];g?.match&&e===h?g.text+=c[0]:i.push({text:c[0],match:!0,start:e}),h=s,c=l.exec(t)}return h<t.length&&i.push({text:t.slice(h),match:!1,start:h}),i.length>0?i:[{text:t,match:!1,start:0}]};exports.splitHighlight=splitHighlight;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"SearchBar",{enumerable:!0,get:function(){return _SearchBar.SearchBar}}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return _SearchBar.default}});var _SearchBar=_interopRequireWildcard(require("./SearchBar.js"));function _interopRequireWildcard(e,r){if("function"==typeof WeakMap)var t=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,r){if(!r&&e&&e.__esModule)return e;var a,o,u={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return u;if(a=r?n:t){if(a.has(e))return a.get(e);a.set(e,u)}for(const r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((o=(a=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,r))&&(o.get||o.set)?a(u,r,o):u[r]=e[r]);return u})(e,r)}
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"SearchBar",{enumerable:!0,get:function(){return _SearchBar.SearchBar}}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return _SearchBar.default}}),Object.defineProperty(exports,"useRecentSearches",{enumerable:!0,get:function(){return _useRecentSearches.useRecentSearches}});var _SearchBar=_interopRequireWildcard(require("./SearchBar.js")),_useRecentSearches=require("./useRecentSearches.js");function _interopRequireWildcard(e,r){if("function"==typeof WeakMap)var t=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,r){if(!r&&e&&e.__esModule)return e;var a,u,c={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return c;if(a=r?n:t){if(a.has(e))return a.get(e);a.set(e,c)}for(const r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((u=(a=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,r))&&(u.get||u.set)?a(c,r,u):c[r]=e[r]);return c})(e,r)}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useRecentSearches=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react");const DEFAULT_MAX=8,isStringList=e=>Array.isArray(e)&&e.every(e=>"string"==typeof e),useRecentSearches=(e,r)=>{const t=r?.max??8,[c,s]=(0,_react.useState)([]),a=(0,_react.useRef)([]),n=(0,_react.useRef)(!1);(0,_react.useEffect)(()=>{let r=!1;return n.current=!1,a.current=[],s([]),_mobileCore.Storage.getJson(e).then(e=>{if(r||n.current||!isStringList(e))return;const c=e.slice(0,t);a.current=c,s(c)}),()=>{r=!0}},[e]);const o=(0,_react.useCallback)(r=>{n.current=!0,a.current=r,s(r),_mobileCore.Storage.setJson(e,r)},[e]);return{recents:c,add:(0,_react.useCallback)(e=>{const r=e.trim();if(!r)return;const c=r.toLowerCase(),s=a.current.filter(e=>e.toLowerCase()!==c);o([r,...s].slice(0,t))},[o,t]),remove:(0,_react.useCallback)(e=>{o(a.current.filter(r=>r!==e))},[o]),clear:(0,_react.useCallback)(()=>{const e=a.current;return o([]),e},[o]),replace:(0,_react.useCallback)(e=>{o(e.slice(0,t))},[o,t])}};exports.useRecentSearches=useRecentSearches;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.segmentedControlTrackPadding=exports.segmentedControlSizes=exports.default=exports.SegmentedControl=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index4=require("../FieldBase/index.js"),_SquircleFill=require("../SquircleFill/SquircleFill.js"),_jsxRuntime=require("react/jsx-runtime");const segmentedControlSizes=exports.segmentedControlSizes={sm:{height:32,fontSize:12,paddingHorizontal:10,iconSize:14},md:{height:40,fontSize:14,paddingHorizontal:14,iconSize:16},lg:{height:48,fontSize:16,paddingHorizontal:18,iconSize:18}},segmentedControlTrackPadding=exports.segmentedControlTrackPadding=4,LABEL_LINE_HEIGHT_RATIO=1.25,sizeMap=segmentedControlSizes,TRACK_PADDING=segmentedControlTrackPadding,SegmentedControl=exports.SegmentedControl=(0,_react.forwardRef)((e,t)=>{const{segments:i,label:n,helperText:r,error:l,value:s,defaultValue:o,onChange:a,size:d="md",fullWidth:c=!0,disabled:u=!1,tone:g="primary",variant:m="segmented",radius:h,labelLines:x=1,haptic:p,accessibilityLabel:_,style:f,containerStyle:S,segmentStyle:b,selectedIndicatorStyle:y,textStyle:v,labelStyle:z,testID:j}=e,[C,R]=(0,_index.useControllableState)({value:s,defaultValue:o??i[0]?.value,onChange:a}),I=(0,_index2.useTheme)(),k=I.components.segmentedControl,q=(0,_react.useMemo)(()=>buildStyles(I),[I]),w=sizeMap[d],N={height:k?.[d]?.height??w.height,fontSize:k?.[d]?.fontSize??w.fontSize,paddingHorizontal:k?.[d]?.paddingHorizontal??w.paddingHorizontal,iconSize:k?.[d]?.iconSize??w.iconSize},L=x>=2?2:1,T=L>1,F="segmented"===m,H="underline"===m,M="pills"===m,A=F?k?.trackPadding??TRACK_PADDING:0,P=Math.ceil(1.25*N.fontSize)*(L-1),D=k?.underlineHeight??2,V=k?.pillInset??4,E="number"==typeof h?h:h?I.radius[h]:k?.radius,W=E??I.radius.md,B=void 0===E?I.radius.sm:Math.max(E-A,0),G=E??I.radius.full,O=E??0,[K,X]=(0,_react.useState)(0),J=(0,_react.useRef)((0,_index2.createAnimatedValue)(0)).current,Q=Math.max(0,i.findIndex(e=>e.value===C)),U=K>0?(K-2*A)/Math.max(i.length,1):0,Y=(0,_react.useCallback)((e,t)=>{if(t<=0)return;const i=t*e,n=I.motion.spring.snappy,r=_reactNative.Animated.spring(J,{toValue:i,damping:n.damping,stiffness:n.stiffness,mass:n.mass,overshootClamping:!0,useNativeDriver:!0});return r.start(),r},[I.motion.spring.snappy,J]);(0,_react.useEffect)(()=>{if(U>0){const e=Y(Q,U);return()=>e?.stop()}},[Q,U,Y]);const Z=(0,_react.useCallback)(e=>{const t=e.nativeEvent.layout.width;t!==K&&X(t)},[K]),$=(0,_react.useCallback)(e=>{if(u)return;if(e.value===C)return;const t=(0,_index3.resolveHaptic)(p,"selection");t&&(0,_index3.triggerHaptic)(t),R(e.value)},[u,R,C,p]),ee=F?I.colors.background.elevated:M?I.colors.primaryMuted:I.colors.primary,te=F?B:M?G:O,ie="neutral"===g?I.colors.text.primary:I.colors.primary,ne=I.colors.background.tertiary,re=(0,_SquircleFill.useSquircle)(F,W,Z),le=(0,_index4.hasFieldText)(n),se=(0,_index4.hasFieldText)(l)?l:r,oe=(0,_index4.hasFieldText)(se),ae=_??("string"==typeof n?n:void 0),de=(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,accessibilityRole:"radiogroup",accessibilityLabel:ae,testID:j,style:[q.track,{...T?{minHeight:N.height+P}:{height:N.height},opacity:u?.55:1,alignSelf:c?"stretch":"flex-start"},F?{borderRadius:W,..._corners.smoothCorners,backgroundColor:re.active?"transparent":ne,padding:A}:H?{borderBottomColor:I.colors.border.secondary,borderBottomWidth:_reactNative.StyleSheet.hairlineWidth}:null,S,f],onLayout:re.onLayout,children:[re.active&&re.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:re.size.width,height:re.size.height,radius:W,fill:ne}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:q.row,children:[U>0?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[q.thumb,F?T?{top:0,bottom:0}:{top:0,height:N.height-2*A}:M?{top:V,bottom:V}:{bottom:0,height:D},{width:U,borderRadius:te,..._corners.smoothCorners,backgroundColor:ee,transform:[{translateX:J}]},y]}):null,i.map(e=>{const t=e.value===C,i=t?ie:I.colors.text.tertiary,n=(0,_slotIcon.renderSlotIcon)(e.icon,{color:i,size:N.iconSize,selected:t,disabled:u});return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>$(e),disabled:u,accessibilityRole:"radio",accessibilityLabel:e.label,accessibilityState:{checked:t,selected:t,disabled:u},"aria-checked":t,"aria-disabled":u,style:({pressed:e})=>[q.segment,T?q.segmentMultiline:null,{paddingHorizontal:N.paddingHorizontal,opacity:e&&!t?.7:1},b],children:[n?(0,_jsxRuntime.jsx)(_reactNative.View,{style:q.segmentIcon,children:n}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[q.segmentLabel,T?q.segmentLabelMultiline:null,{color:i,fontSize:N.fontSize,fontWeight:t?I.typography.fontWeight.semibold:I.typography.fontWeight.medium},v,z],numberOfLines:L,children:e.label})]},String(e.value))})]})]});return le||oe?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{alignSelf:c?"stretch":"flex-start"},children:[le?(0,_jsxRuntime.jsx)(_index4.FieldLabel,{size:d,children:n}):null,de,oe?(0,_jsxRuntime.jsx)(_index4.FieldMessage,{size:d,text:se,error:(0,_index4.hasFieldText)(l)}):null]}):de});SegmentedControl.displayName="SegmentedControl";const buildStyles=e=>_reactNative.StyleSheet.create({track:{flexDirection:"row",alignItems:"stretch",position:"relative"},row:{flex:1,flexDirection:"row",alignItems:"stretch",position:"relative",overflow:"hidden"},thumb:{position:"absolute",left:0},segment:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center"},segmentIcon:{marginRight:6},segmentMultiline:{paddingVertical:6},segmentLabel:{includeFontPadding:!1},segmentLabelMultiline:{flexShrink:1,textAlign:"center"}});var _default=exports.default=SegmentedControl;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.segmentedControlTrackPadding=exports.segmentedControlSizes=exports.default=exports.SegmentedControl=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index4=require("../FieldBase/index.js"),_SquircleFill=require("../SquircleFill/SquircleFill.js"),_jsxRuntime=require("react/jsx-runtime");const segmentedControlSizes=exports.segmentedControlSizes={sm:{height:32,fontSize:12,paddingHorizontal:10,iconSize:14},md:{height:40,fontSize:14,paddingHorizontal:14,iconSize:16},lg:{height:48,fontSize:16,paddingHorizontal:18,iconSize:18}},segmentedControlTrackPadding=exports.segmentedControlTrackPadding=4,LABEL_LINE_HEIGHT_RATIO=1.25,sizeMap=segmentedControlSizes,TRACK_PADDING=segmentedControlTrackPadding,SegmentedControl=exports.SegmentedControl=(0,_react.forwardRef)((e,t)=>{const{segments:i,label:r,helperText:n,error:o,value:l,defaultValue:s,onChange:a,size:d="md",fullWidth:c=!0,disabled:u=!1,tone:g="primary",variant:m="segmented",radius:h,labelLines:x=1,haptic:p,accessibilityLabel:_,style:b,containerStyle:f,segmentStyle:S,selectedIndicatorStyle:y,textStyle:v,labelStyle:z,testID:j}=e,[C,R]=(0,_index.useControllableState)({value:l,defaultValue:s??i[0]?.value,onChange:a}),k=(0,_index2.useTheme)(),I=k.components.segmentedControl,w=(0,_react.useMemo)(()=>buildStyles(k),[k]),N=sizeMap[d],q={height:I?.[d]?.height??N.height,fontSize:I?.[d]?.fontSize??N.fontSize,paddingHorizontal:I?.[d]?.paddingHorizontal??N.paddingHorizontal,iconSize:I?.[d]?.iconSize??N.iconSize},L=x>=2?2:1,F=L>1,H="segmented"===m,M="underline"===m,T="pills"===m,A=H?I?.trackPadding??TRACK_PADDING:0,P=Math.ceil(1.25*q.fontSize)*(L-1),V=I?.underlineHeight??2,D=I?.pillInset??4,E="number"==typeof h?h:h?k.radius[h]:I?.radius,W=E??k.radius.md,B=void 0===E?k.radius.sm:Math.max(E-A,0),G=E??k.radius.full,O=E??0,[K,X]=(0,_react.useState)(0),J=(0,_react.useRef)((0,_index2.createAnimatedValue)(0)).current,Q=Math.max(0,i.findIndex(e=>e.value===C)),U=K>0?(K-2*A)/Math.max(i.length,1):0,Y=(0,_react.useCallback)((e,t)=>{if(t<=0)return;const i=t*e,r=k.motion.spring.snappy,n=_reactNative.Animated.spring(J,{toValue:i,damping:r.damping,stiffness:r.stiffness,mass:r.mass,overshootClamping:!0,useNativeDriver:!0});return n.start(),n},[k.motion.spring.snappy,J]);(0,_react.useEffect)(()=>{if(U>0){const e=Y(Q,U);return()=>e?.stop()}},[Q,U,Y]);const Z=(0,_react.useCallback)(e=>{const t=e.nativeEvent.layout.width;t!==K&&X(t)},[K]),$=(0,_react.useCallback)(e=>{if(u)return;if(e.value===C)return;const t=(0,_index3.resolveHaptic)(p,"selection");t&&(0,_index3.triggerHaptic)(t),R(e.value)},[u,R,C,p]),ee=H?k.colors.background.elevated:T?k.colors.primaryMuted:k.colors.primary,te=H?B:T?G:O,ie="neutral"===g?k.colors.text.primary:k.colors.primary,re=k.colors.background.tertiary,ne=(0,_SquircleFill.useSquircle)(H,W,Z),oe=!0===o||(0,_index4.hasFieldText)(o),le=oe&&!u,se=k.colors.field.borderError,ae=k.colors.border.width,de=(0,_index4.hasFieldText)(r),ce=oe?o:n,ue=(0,_index4.hasFieldText)(ce),ge=_??("string"==typeof r?r:void 0),me=(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,accessibilityRole:"radiogroup",accessibilityLabel:ge,testID:j,style:[w.track,{...F?{minHeight:q.height+P}:{height:q.height},opacity:u?.55:1,alignSelf:c?"stretch":"flex-start"},H?{borderRadius:W,..._corners.smoothCorners,backgroundColor:ne.active?"transparent":re,padding:A}:M?{borderBottomColor:le?se:k.colors.border.secondary,borderBottomWidth:_reactNative.StyleSheet.hairlineWidth}:null,f,b],onLayout:ne.onLayout,children:[ne.active&&ne.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:ne.size.width,height:ne.size.height,radius:W,fill:re,stroke:le?se:void 0,strokeWidth:ae}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:w.row,children:[U>0?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[w.thumb,H?F?{top:0,bottom:0}:{top:0,height:q.height-2*A}:T?{top:D,bottom:D}:{bottom:0,height:V},{width:U,borderRadius:te,..._corners.smoothCorners,backgroundColor:ee,transform:[{translateX:J}]},y]}):null,i.map(e=>{const t=e.value===C,i=t?ie:k.colors.text.tertiary,r=(0,_slotIcon.renderSlotIcon)(e.icon,{color:i,size:q.iconSize,selected:t,disabled:u});return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>$(e),disabled:u,accessibilityRole:"radio",accessibilityLabel:e.label,accessibilityState:{checked:t,selected:t,disabled:u},"aria-checked":t,"aria-disabled":u,style:({pressed:e})=>[w.segment,F?w.segmentMultiline:null,{paddingHorizontal:q.paddingHorizontal,opacity:e&&!t?.7:1},S],children:[r?(0,_jsxRuntime.jsx)(_reactNative.View,{style:w.segmentIcon,children:r}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[w.segmentLabel,F?w.segmentLabelMultiline:null,{color:i,fontSize:q.fontSize,fontWeight:t?k.typography.fontWeight.semibold:k.typography.fontWeight.medium},v,z],numberOfLines:L,children:e.label})]},String(e.value))})]}),!le||M||ne.active?null:(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[_reactNative.StyleSheet.absoluteFill,{borderWidth:ae,borderColor:se,borderRadius:H?W:G,..._corners.smoothCorners}]})]});return de||ue?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{alignSelf:c?"stretch":"flex-start"},children:[de?(0,_jsxRuntime.jsx)(_index4.FieldLabel,{size:d,children:r}):null,me,ue?(0,_jsxRuntime.jsx)(_index4.FieldMessage,{size:d,text:ce,error:oe}):null]}):me});SegmentedControl.displayName="SegmentedControl";const buildStyles=e=>_reactNative.StyleSheet.create({track:{flexDirection:"row",alignItems:"stretch",position:"relative"},row:{flex:1,flexDirection:"row",alignItems:"stretch",position:"relative",overflow:"hidden"},thumb:{position:"absolute",left:0},segment:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center"},segmentIcon:{marginRight:6},segmentMultiline:{paddingVertical:6},segmentLabel:{includeFontPadding:!1},segmentLabelMultiline:{flexShrink:1,textAlign:"center"}});var _default=exports.default=SegmentedControl;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Select=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_Chevron=require("../FieldBase/Chevron.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_jsxRuntime=require("react/jsx-runtime");const sameSelectValue=(e,t)=>String(e)===String(t),containsValue=(e,t)=>e.some(e=>sameSelectValue(e,t)),Select=exports.Select=(0,_react.forwardRef)((e,t)=>{const{options:i,getOptionLabel:l,getOptionValue:r,getOptionDisabled:n,getOptionDescription:o,getOptionIcon:s,placeholder:a,searchable:c=!1,haptic:d,label:u,help:x,title:p,required:_=!1,error:b,helperText:h,prefix:S,numberOfLines:f=1,disabled:g=!1,size:v="md",variant:m,leftIcon:j,rightIcon:y,chevronColor:F,chevronSize:C,borderRadius:O,accessibilityLabel:R,labelStyle:V,style:k,triggerStyle:z,textStyle:B,optionStyle:T,selectedOptionStyle:I,optionTextStyle:N,selectedOptionTextStyle:q,testID:H}=e,L=!0===e.multi,w=(0,_react.useCallback)(e=>l?l(e):e.label??"",[l]),M=(0,_react.useCallback)(e=>r?r(e):e.value,[r]),D=(0,_react.useCallback)(e=>n?n(e):!0===e.disabled,[n]),P=(0,_react.useCallback)(e=>o?o(e):e.description,[o]),E=(0,_react.useCallback)(e=>s?s(e):e.icon,[s]),A=(0,_index.useTheme)(),$=(0,_react.useMemo)(()=>buildStyles(A),[A]),G=(0,_FieldBase.resolveFieldSize)(A,v),J=(0,_FieldBase.resolveFieldTextStyle)(A,{disabled:g}),K=m??A.components.select?.defaultVariant??A.components.field?.defaultVariant??"outlined",Q=(0,_react.useMemo)(()=>{const e=A.components.select?.fillColors?.[K];if(!e)return;const t={};return void 0!==e.idleEmpty&&(t.backgroundIdleEmpty=e.idleEmpty),void 0!==e.idleFilled&&(t.backgroundIdleFilled=e.idleFilled),void 0!==e.focus&&(t.backgroundFocused=e.focus),void 0!==e.error&&(t.backgroundError=e.error),void 0!==e.disabled&&(t.backgroundDisabled=e.disabled),Object.keys(t).length>0?t:void 0},[A.components.select?.fillColors,K]),U=O??A.components.select?.borderRadius,[W,X]=(0,_react.useState)(!1),Y=(0,_react.useCallback)(t=>{if(L){const i=e.value??[];return containsValue(i,t)}return null!=e.value&&sameSelectValue(e.value,t)},[L,e.value]),Z=(0,_react.useMemo)(()=>{if(L){const t=e.value??[];return i.filter(e=>containsValue(t,M(e)))}const t=e.value;if(null==t)return[];const l=i.find(e=>sameSelectValue(M(e),t));return l?[l]:[]},[L,i,e.value,M]),ee=(0,_react.useCallback)(()=>{if(g)return;const e=(0,_index2.resolveHaptic)(d,"selection");e&&(0,_index2.triggerHaptic)(e),X(!0)},[g,d]),te=(0,_react.useCallback)(()=>{X(!1)},[]),ie=(0,_react.useCallback)(t=>{if(D(t))return;const i=M(t),l=(0,_index2.resolveHaptic)(d,"selection");if(l&&(0,_index2.triggerHaptic)(l),L){const t=e.value??[],l=containsValue(t,i)?t.filter(e=>!sameSelectValue(e,i)):[...t,i];return void e.onChange(l)}e.onChange(i),te()},[L,e,te,D,M,d]),le=0===Z.length?a??"Select…":Z.map(e=>w(e)).join(", "),re=0===Z.length,ne=!0===b||(0,_FieldBase.hasFieldText)(b),oe=(0,_FieldBase.hasFieldText)(u),se=(0,_FieldBase.fieldTextAsString)(u),ae=Math.round(1.4*G.fontSize),ce={color:g?A.colors.field.iconDisabled:W?A.colors.field.iconFocused:A.colors.field.icon,size:G.iconSize,disabled:g,focused:W,error:ne},de=0===Z.length?a??"No selection":`Selected: ${Z.map(e=>w(e)).join(", ")}`,ue=R??`${se??"Select"}. ${de}`;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[$.container,k],testID:H,children:[oe?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:v,required:_,help:x,style:V,children:u}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,collapsable:!1,children:(0,_jsxRuntime.jsxs)(_FieldBase.FieldBase,{size:v,variant:K,disabled:g,error:ne,filled:Z.length>0,onPress:ee,borderRadius:U,fillOverrides:Q,paddingHorizontal:"underline"===K?0:void 0,accessibilityRole:"button",accessibilityLabel:ue,accessibilityState:{disabled:g,expanded:W},"aria-disabled":g,"aria-expanded":W,style:z,slotAlign:1===f?"center":"top",slotLineHeight:1===f?void 0:ae,leading:j?(0,_jsxRuntime.jsx)(_reactNative.View,{children:(0,_slotIcon.renderSlotIcon)(j,ce)}):null,trailing:y?(0,_jsxRuntime.jsx)(_reactNative.View,{children:(0,_slotIcon.renderSlotIcon)(y,ce)}):(0,_jsxRuntime.jsx)(_Chevron.Chevron,{color:F??(g?A.colors.text.disabled:A.colors.text.tertiary),size:C??G.iconSize,open:W,style:$.chevron}),children:[(0,_FieldBase.hasFieldText)(S)?"string"==typeof S||"number"==typeof S?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[$.prefix,{color:J.placeholderColor,fontSize:G.fontSize,lineHeight:1===f?void 0:ae,marginRight:A.spacing.xs}],children:S}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[$.prefixNode,{minHeight:1===f?void 0:ae,justifyContent:"center",marginRight:A.spacing.xs}],children:S}):null,(0,_jsxRuntime.jsxs)(_reactNative.Text,{style:[$.triggerText,{color:re?J.placeholderColor:J.color,fontSize:G.fontSize,lineHeight:1===f?void 0:ae,...J.weightStyle},B],numberOfLines:f,children:[le,re&&_&&!oe?(0,_jsxRuntime.jsx)(_FieldBase.RequiredMark,{}):null]})]})}),(0,_jsxRuntime.jsx)(_FieldBase.FieldMessage,{size:v,error:ne,text:ne?b:h}),(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:W,onClose:te,title:p??se,accessibilityLabel:se??(oe?p:void 0)??a??"Options",options:i,labelOf:w,getValue:M,disabledOf:D,descriptionOf:P,iconOf:E,isSelected:Y,onSelect:ie,multi:L,searchable:c,optionStyle:T,selectedOptionStyle:I,optionTextStyle:N,selectedOptionTextStyle:q,searchSelectionColor:(0,_FieldBase.resolveVariantColors)(A,K,Q).borderFocusedRepresentative})]})});Select.displayName="Select";const buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},label:{includeFontPadding:!1},triggerText:{flex:1,includeFontPadding:!1},errorText:{includeFontPadding:!1},prefix:{flexShrink:0,includeFontPadding:!1},prefixNode:{flexShrink:0},chevron:{marginLeft:8}});var _default=exports.default=Select;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Select=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_Chevron=require("../FieldBase/Chevron.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_Notation=require("../Notation/Notation.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_jsxRuntime=require("react/jsx-runtime");const sameSelectValue=(e,t)=>String(e)===String(t),containsValue=(e,t)=>e.some(e=>sameSelectValue(e,t)),Select=exports.Select=(0,_react.forwardRef)((e,t)=>{const{options:i,getOptionLabel:l,getOptionValue:o,getOptionDisabled:r,getOptionDescription:n,getOptionIcon:a,placeholder:s,onOpenChange:c,searchable:d=!1,haptic:u,label:x,help:p,title:_,required:h=!1,error:S,helperText:f,prefix:b,numberOfLines:g=1,disabled:v=!1,size:m="md",variant:j,leftIcon:y,rightIcon:F,chevronColor:C,chevronSize:O,borderRadius:R,accessibilityLabel:z,labelStyle:k,style:N,triggerStyle:V,textStyle:T,optionStyle:B,selectedOptionStyle:I,optionTextStyle:q,selectedOptionTextStyle:H,testID:L}=e,w=!0===e.multi,M=(0,_react.useCallback)(e=>l?l(e):e.label??"",[l]),P=(0,_react.useCallback)(e=>o?o(e):e.value,[o]),D=(0,_react.useCallback)(e=>r?r(e):!0===e.disabled,[r]),E=(0,_react.useCallback)(e=>n?n(e):e.description,[n]),A=(0,_react.useCallback)(e=>a?a(e):e.icon,[a]),$=(0,_index.useTheme)(),G=(0,_react.useMemo)(()=>buildStyles($),[$]),J=(0,_FieldBase.resolveFieldSize)($,m),K=(0,_FieldBase.resolveFieldTextStyle)($,{disabled:v}),Q=j??$.components.select?.defaultVariant??$.components.field?.defaultVariant??"outlined",U=(0,_react.useMemo)(()=>{const e=$.components.select?.fillColors?.[Q];if(!e)return;const t={};return void 0!==e.idleEmpty&&(t.backgroundIdleEmpty=e.idleEmpty),void 0!==e.idleFilled&&(t.backgroundIdleFilled=e.idleFilled),void 0!==e.focus&&(t.backgroundFocused=e.focus),void 0!==e.error&&(t.backgroundError=e.error),void 0!==e.disabled&&(t.backgroundDisabled=e.disabled),Object.keys(t).length>0?t:void 0},[$.components.select?.fillColors,Q]),W=R??$.components.select?.borderRadius,[X,Y]=(0,_react.useState)(!1),Z=(0,_react.useCallback)(t=>{if(w){const i=e.value??[];return containsValue(i,t)}return null!=e.value&&sameSelectValue(e.value,t)},[w,e.value]),ee=(0,_react.useMemo)(()=>{if(w){const t=e.value??[];return i.filter(e=>containsValue(t,P(e)))}const t=e.value;if(null==t)return[];const l=i.find(e=>sameSelectValue(P(e),t));return l?[l]:[]},[w,i,e.value,P]),te=(0,_react.useCallback)(()=>{if(v)return;const e=(0,_index2.resolveHaptic)(u,"selection");e&&(0,_index2.triggerHaptic)(e),Y(!0)},[v,u]),ie=(0,_react.useCallback)(()=>{Y(!1)},[]),le=(0,_react.useCallback)(t=>{if(D(t))return;const i=P(t),l=(0,_index2.resolveHaptic)(u,"selection");if(l&&(0,_index2.triggerHaptic)(l),w){const t=e.value??[],l=containsValue(t,i)?t.filter(e=>!sameSelectValue(e,i)):[...t,i];return void e.onChange(l)}e.onChange(i),ie()},[w,e,ie,D,P,u]),oe=0===ee.length?s??"Select…":ee.map(e=>M(e)).join(", "),re=0===ee.length,ne=!0===S||(0,_FieldBase.hasFieldText)(S),ae=(0,_FieldBase.hasFieldText)(x),se=(0,_FieldBase.fieldTextAsString)(x),ce=Math.round(1.4*J.fontSize),de=(0,_react.useMemo)(()=>({fontSize:J.fontSize,color:K.placeholderColor}),[J.fontSize,K.placeholderColor]),ue={color:v?$.colors.field.iconDisabled:X?$.colors.field.iconFocused:$.colors.field.icon,size:J.iconSize,disabled:v,focused:X,error:ne},xe=0===ee.length?s??"No selection":`Selected: ${ee.map(e=>M(e)).join(", ")}`,pe=z??`${se??"Select"}. ${xe}`;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[G.container,N],testID:L,children:[ae?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:m,required:h,help:p,style:k,children:x}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,collapsable:!1,children:(0,_jsxRuntime.jsxs)(_FieldBase.FieldBase,{size:m,variant:Q,disabled:v,error:ne,filled:ee.length>0,onPress:te,borderRadius:W,fillOverrides:U,paddingHorizontal:"underline"===Q?0:void 0,accessibilityRole:"button",accessibilityLabel:pe,accessibilityState:{disabled:v,expanded:X},"aria-disabled":v,"aria-expanded":X,style:V,slotAlign:1===g?"center":"top",slotLineHeight:1===g?void 0:ce,leading:y?(0,_jsxRuntime.jsx)(_reactNative.View,{children:(0,_slotIcon.renderSlotIcon)(y,ue)}):null,trailing:F?(0,_jsxRuntime.jsx)(_reactNative.View,{children:(0,_slotIcon.renderSlotIcon)(F,ue)}):(0,_jsxRuntime.jsx)(_Chevron.Chevron,{color:C??(v?$.colors.text.disabled:$.colors.text.tertiary),size:O??J.iconSize,open:X,style:G.chevron}),children:[(0,_FieldBase.hasFieldText)(b)?"string"==typeof b||"number"==typeof b?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[G.prefix,{color:K.placeholderColor,fontSize:J.fontSize,lineHeight:1===g?void 0:ce,marginRight:$.spacing.xs}],children:b}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[G.prefixNode,{minHeight:1===g?void 0:ce,justifyContent:"center",marginRight:$.spacing.xs}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[G.prefix,{color:K.placeholderColor,fontSize:J.fontSize,lineHeight:1===g?void 0:ce}],children:(0,_jsxRuntime.jsx)(_Notation.NotationInkContext.Provider,{value:de,children:b})})}):null,(0,_jsxRuntime.jsxs)(_reactNative.Text,{style:[G.triggerText,{color:re?K.placeholderColor:K.color,fontSize:J.fontSize,lineHeight:1===g?void 0:ce,...K.weightStyle},T],numberOfLines:g,children:[oe,re&&h&&!ae?(0,_jsxRuntime.jsx)(_FieldBase.RequiredMark,{}):null]})]})}),(0,_jsxRuntime.jsx)(_FieldBase.FieldMessage,{size:m,error:ne,text:ne?S:f}),(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:X,onClose:ie,onOpenChange:c,title:_??se,accessibilityLabel:se??(ae?_:void 0)??s??"Options",options:i,labelOf:M,getValue:P,disabledOf:D,descriptionOf:E,iconOf:A,isSelected:Z,onSelect:le,multi:w,searchable:d,optionStyle:B,selectedOptionStyle:I,optionTextStyle:q,selectedOptionTextStyle:H,searchSelectionColor:(0,_FieldBase.resolveVariantColors)($,Q,U).borderFocusedRepresentative})]})});Select.displayName="Select";const buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},label:{includeFontPadding:!1},triggerText:{flex:1,includeFontPadding:!1},errorText:{includeFontPadding:!1},prefix:{flexShrink:0,includeFontPadding:!1},prefixNode:{flexShrink:0},chevron:{marginLeft:8}});var _default=exports.default=Select;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SignaturePad=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeSvg=_interopRequireWildcard(require("react-native-svg")),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_corners=require("../../utils/corners.js"),_index2=require("../Button/index.js"),_index3=require("../Input/index.js"),_index4=require("../Text/index.js"),_signatureGeometry=require("./signatureGeometry.js"),_writePng=require("./writePng"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var n=new WeakMap,r=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var a,i,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(a=t?r:n){if(a.has(e))return a.get(e);a.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((i=(a=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(i.get||i.set)?a(o,t,i):o[t]=e[t]);return o})(e,t)}const DEFAULT_LABELS={pad:"Signature pad",padHint:"Draw with one finger. To sign without drawing, use the type your name action.",caption:"Sign above the line. To start with an up or down stroke, rest your finger a moment first.",typedCaption:"Your typed name is used as your signature.",undo:"Undo",clear:"Clear",typeInstead:"Type your name instead",drawInstead:"Draw instead",typedLabel:"Type your name",typedPlaceholder:"Your full name",empty:"Not signed",signed:"Signed",typingAnnouncement:"Signing by typing your name. Your typed name is used as your signature. Choose Draw instead to sign with your finger.",drawingAnnouncement:"Signing by drawing. Use one finger on the pad.",clearedAnnouncement:"Signature cleared",undoneAnnouncement:"Last stroke removed",emptyError:"Add a signature first."},STROKE_WIDTH=2.5,SIDEWAYS_TO_DRAW=6,UPRIGHT_TO_SCROLL=8,REST_TO_DRAW_MS=200,MIN_POINT_GAP=.8,DEFAULT_HEIGHT=180,DEFAULT_NAME_LENGTH=100,MAX_EXPORT_SCALE=3,MIN_TARGET=44,BASELINE_OPACITY=.3,DISABLED_OPACITY=.5,TARGET_STYLE={minHeight:44},defaultScriptFont=()=>_reactNative.Platform.select({ios:"Snell Roundhand",default:"cursive"}),cssFontStack=e=>"cursive"===e?"cursive":`'${e}', cursive`,useScreenReader=()=>{const[e,t]=(0,_react.useState)(!1);return(0,_react.useEffect)(()=>{let e=!0;_reactNative.AccessibilityInfo.isScreenReaderEnabled().then(n=>{e&&t(n)});const n=_reactNative.AccessibilityInfo.addEventListener("screenReaderChanged",t);return()=>{e=!1,n.remove()}},[]),e},StrokePath=(0,_react.memo)(({points:e,color:t})=>(0,_jsxRuntime.jsx)(_reactNativeSvg.Path,{d:(0,_signatureGeometry.strokePath)(e),stroke:t,strokeWidth:2.5,strokeLinecap:"round",strokeLinejoin:"round",fill:"none"}));StrokePath.displayName="SignaturePadStroke";const SignaturePad=exports.SignaturePad=(0,_react.forwardRef)((e,t)=>{const{initialStrokes:n,onChange:r,initialTypedName:a="",onTypedNameChange:i,defaultMode:o="draw",onModeChange:s,onEmptyChange:c,allowTyped:u=!0,signedBy:d,signedAt:l,height:_=DEFAULT_HEIGHT,maxNameLength:p=DEFAULT_NAME_LENGTH,inkColor:g,paperColor:m,scriptFontFamily:y,labels:h,haptic:x="selection",disabled:f=!1,style:v,testID:S}=e,w=(0,_index.useTheme)(),T=g??_index.lightTheme.colors.text.primary,b=m??_index.lightTheme.colors.background.elevated,R=y??defaultScriptFont(),E=(0,_react.useMemo)(()=>({...DEFAULT_LABELS,...h}),[h]),j=useScreenReader(),A=(0,_react.useRef)(null),[C,N]=(0,_react.useState)(0),[I,L]=(0,_react.useState)(()=>(n??[]).map((e,t)=>({id:t+1,points:[...e]}))),P=(0,_react.useRef)(I),k=(0,_react.useRef)(I.length),D=(0,_react.useRef)(null),G=(0,_react.useRef)(null),[M,O]=(0,_react.useState)(u?o:"draw"),[F,H]=(0,_react.useState)(a),[q,W]=(0,_react.useState)(null),B=(0,_react.useRef)(!1),Y=(0,_react.useRef)({onChange:r,onTypedNameChange:i,onModeChange:s,onEmptyChange:c});(0,_react.useEffect)(()=>{Y.current={onChange:r,onTypedNameChange:i,onModeChange:s,onEmptyChange:c}});const U="draw"===M&&!f,$="draw"===M?0===I.length:0===F.trim().length,z=(0,_react.useRef)(null);(0,_react.useEffect)(()=>{z.current!==$&&(z.current=$,Y.current.onEmptyChange?.($))},[$]);const V=(0,_react.useCallback)(e=>{P.current=e,L(e)},[]),K=(0,_react.useCallback)(()=>{W(Date.now()),Y.current.onChange?.(P.current.map(e=>e.points))},[]),X=(0,_react.useMemo)(()=>{const pan=e=>_reactNativeGestureHandler.Gesture.Pan().enabled(U).runOnJS(!0).onBegin(e=>{D.current=(0,_signatureGeometry.pointOf)(e.x,e.y)}).onStart(t=>{G.current=e,k.current+=1;const n=(0,_signatureGeometry.pointOf)(t.x,t.y);V([...P.current,{id:k.current,points:[D.current??n,n]}])}).onUpdate(t=>{if(G.current!==e)return;const n=P.current[P.current.length-1],r=(0,_signatureGeometry.pointOf)(t.x,t.y);(0,_signatureGeometry.distanceBetween)(n.points[n.points.length-1],r)<.8||V([...P.current.slice(0,-1),{...n,points:[...n.points,r]}])}).onFinalize(()=>{G.current===e&&(G.current=null,K())}),e=pan("sideways").activeOffsetX([-6,6]).failOffsetY([-8,8]),t=pan("rested").activateAfterLongPress(200);return _reactNativeGestureHandler.Gesture.Race(e,t)},[U,V,K]),J=(0,_react.useCallback)(e=>{O(e),Y.current.onModeChange?.(e),(0,_announce.announce)("type"===e?E.typingAnnouncement:E.drawingAnnouncement)},[E.typingAnnouncement,E.drawingAnnouncement]);(0,_react.useEffect)(()=>{j&&u&&!B.current&&"draw"===M&&0===P.current.length&&J("type")},[j,u,M,J]);const Q=(0,_react.useCallback)(()=>{B.current=!0,J("draw"===M?"type":"draw")},[M,J]),Z=(0,_react.useCallback)(e=>{H(e),W(Date.now()),Y.current.onTypedNameChange?.(e)},[]),ee=(0,_react.useCallback)(()=>{"type"===M?Z(""):(V([]),K()),(0,_announce.announce)(E.clearedAnnouncement)},[M,Z,V,K,E.clearedAnnouncement]),te=(0,_react.useCallback)(()=>{"draw"===M&&0!==P.current.length&&(V(P.current.slice(0,-1)),K(),(0,_announce.announce)(E.undoneAnnouncement))},[M,V,K,E.undoneAnnouncement]),ne=C||_signatureGeometry.FALLBACK_WIDTH;(0,_react.useImperativeHandle)(t,()=>({toFile:()=>new Promise((e,t)=>{if($)return void t(new Error(E.emptyError));if(!A.current)return void t(new Error("The signature pad is not on screen."));const n=Math.min(3,Math.max(1,_reactNative.PixelRatio.get()));A.current.toDataURL(n=>{try{e((0,_writePng.writePng)(n))}catch(e){t(e)}},{width:ne*n,height:_*n})}),toSvg:()=>(0,_signatureGeometry.buildSignatureSvg)({width:ne,height:_,mode:M,strokes:I.map(e=>e.points),typedName:F,ink:T,paper:b,strokeWidth:2.5,fontFamily:cssFontStack(R)}),clear:ee,undo:te,isEmpty:()=>$}),[$,E.emptyError,ne,_,M,I,F,T,b,R,ee,te]);const re=(0,_react.useMemo)(()=>[{name:"undo",label:E.undo},{name:"clear",label:E.clear},...u?[{name:"toggleMode",label:"draw"===M?E.typeInstead:E.drawInstead}]:[]],[E.undo,E.clear,E.typeInstead,E.drawInstead,u,M]),ae=(0,_react.useCallback)(e=>{if(f)return;const{actionName:t}=e.nativeEvent;"undo"===t?te():"clear"===t?ee():"toggleMode"===t&&u&&Q()},[f,te,ee,Q,u]),ie=(0,_react.useCallback)(e=>{N(e.nativeEvent.layout.width)},[]),oe=(0,_react.useMemo)(()=>_reactNative.StyleSheet.create({root:{gap:w.spacing.sm},pad:{height:_,borderWidth:w.colors.border.width,borderColor:w.colors.border.primary,borderRadius:w.radius.md,..._corners.smoothCorners,overflow:"hidden",backgroundColor:b,opacity:f?.5:1},baseline:{position:"absolute",left:w.spacing.md,right:w.spacing.md,top:_*_signatureGeometry.BASELINE_RATIO,height:_reactNative.StyleSheet.hairlineWidth,backgroundColor:T,opacity:.3},actions:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:w.spacing.xs},trailing:{flexDirection:"row",alignItems:"center",gap:w.spacing.xs}}),[w,_,b,T,f]),se=F.trim(),ce=l??q,ue=d&&!$?`Signed by ${d}${ce?`, ${(0,_mobileCore.formatDateTime)(ce)}`:""}`:null,de="type"===M&&se?`${E.pad}. ${se}`:E.pad;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[oe.root,v],testID:S,children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:X,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:oe.pad,onLayout:ie,accessible:!0,accessibilityRole:"image",accessibilityLabel:de,accessibilityHint:"draw"===M?E.padHint:void 0,accessibilityValue:{text:$?E.empty:E.signed},accessibilityState:{disabled:f},"aria-disabled":f,accessibilityActions:re,onAccessibilityAction:ae,children:[(0,_jsxRuntime.jsxs)(_reactNativeSvg.default,{ref:A,width:"100%",height:_,children:[(0,_jsxRuntime.jsx)(_reactNativeSvg.Rect,{x:"0",y:"0",width:"100%",height:"100%",fill:b}),"draw"===M?I.map(e=>(0,_jsxRuntime.jsx)(StrokePath,{points:e.points,color:T},e.id)):null,"type"===M&&se?(0,_jsxRuntime.jsx)(_reactNativeSvg.Text,{x:ne/2,y:_*_signatureGeometry.BASELINE_RATIO,fontSize:(0,_signatureGeometry.typedFontSize)(ne,se),fontFamily:R,textAnchor:"middle",fill:T,children:se}):null]}),(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:oe.baseline})]})}),"type"===M?(0,_jsxRuntime.jsx)(_index3.Input,{label:E.typedLabel,placeholder:E.typedPlaceholder,value:F,onChangeText:Z,maxLength:p,disabled:f,autoComplete:"name",textContentType:"name",autoCapitalize:"words",autoCorrect:!1,returnKeyType:"done",testID:S?`${S}-name`:void 0}):null,(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"tertiary",children:"draw"===M?E.caption:E.typedCaption}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:oe.actions,children:[u?(0,_jsxRuntime.jsx)(_index2.Button,{title:"draw"===M?E.typeInstead:E.drawInstead,variant:"ghost",tone:"primary",size:"md",style:TARGET_STYLE,haptic:x,disabled:f,onPress:Q,testID:S?`${S}-mode`:void 0}):(0,_jsxRuntime.jsx)(_reactNative.View,{}),"draw"===M&&I.length>0?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:oe.trailing,children:[(0,_jsxRuntime.jsx)(_index2.Button,{title:E.undo,variant:"ghost",tone:"primary",size:"md",style:TARGET_STYLE,haptic:x,disabled:f,onPress:te,testID:S?`${S}-undo`:void 0}),(0,_jsxRuntime.jsx)(_index2.Button,{title:E.clear,variant:"ghost",tone:"primary",size:"md",style:TARGET_STYLE,haptic:x,disabled:f,onPress:ee,testID:S?`${S}-clear`:void 0})]}):null,"type"===M&&se?(0,_jsxRuntime.jsx)(_index2.Button,{title:E.clear,variant:"ghost",tone:"primary",size:"md",style:TARGET_STYLE,haptic:x,disabled:f,onPress:ee,testID:S?`${S}-clear`:void 0}):null]}),ue?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"secondary",children:ue}):null]})});SignaturePad.displayName="SignaturePad";var _default=exports.default=SignaturePad;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"SignaturePad",{enumerable:!0,get:function(){return _SignaturePad.SignaturePad}});var _SignaturePad=require("./SignaturePad.js");
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.typedFontSize=exports.strokePath=exports.pointOf=exports.escapeXml=exports.distanceBetween=exports.buildSignatureSvg=exports.FALLBACK_WIDTH=exports.BASELINE_RATIO=void 0;const FALLBACK_WIDTH=exports.FALLBACK_WIDTH=320,MIN_FONT_SIZE=18,MAX_FONT_SIZE=56,SCRIPT_ADVANCE=.5,TYPED_WIDTH_SHARE=.88,BASELINE_RATIO=exports.BASELINE_RATIO=.7,oneDecimal=t=>Math.round(10*t)/10,pointOf=(t,e)=>[oneDecimal(t),oneDecimal(e)];exports.pointOf=pointOf;const distanceBetween=(t,e)=>Math.hypot(t[0]-e[0],t[1]-e[1]);exports.distanceBetween=distanceBetween;const format=t=>t.toFixed(1),strokePath=t=>{if(0===t.length)return"";const[e,...o]=t,r=[`M${format(e[0])} ${format(e[1])}`];if(0===o.length)return r.push(`L${format(e[0])} ${format(e[1])}`),r.join(" ");if(1===o.length)return r.push(`L${format(o[0][0])} ${format(o[0][1])}`),r.join(" ");for(let t=0;t<o.length-1;t+=1){const e=o[t],n=o[t+1],s=(e[0]+n[0])/2,a=(e[1]+n[1])/2;r.push(`Q${format(e[0])} ${format(e[1])} ${format(s)} ${format(a)}`)}const n=o[o.length-1];return r.push(`L${format(n[0])} ${format(n[1])}`),r.join(" ")};exports.strokePath=strokePath;const typedFontSize=(t,e)=>{const o=Math.max(1,e.length),r=Math.floor(.88*t/(.5*o));return Math.min(56,Math.max(18,r))};exports.typedFontSize=typedFontSize;const escapeXml=t=>t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;");exports.escapeXml=escapeXml;const buildSignatureSvg=t=>{const{width:e,height:o,mode:r,strokes:n,typedName:s,ink:a,paper:i,strokeWidth:p,fontFamily:l}=t,h=Math.round(e),c=Math.round(o),m=[`<rect x="0" y="0" width="${h}" height="${c}" fill="${escapeXml(i)}"/>`];if("type"===r){const t=s.trim();t&&m.push(`<text x="${h/2}" y="${format(c*BASELINE_RATIO)}" text-anchor="middle" font-family="${escapeXml(l)}" font-size="${typedFontSize(h,t)}" fill="${escapeXml(a)}">${escapeXml(t)}</text>`)}else for(const t of n)m.push(`<path d="${strokePath(t)}" fill="none" stroke="${escapeXml(a)}" stroke-width="${p}" stroke-linecap="round" stroke-linejoin="round"/>`);return`<svg xmlns="http://www.w3.org/2000/svg" width="${h}" height="${c}" viewBox="0 0 ${h} ${c}">${m.join("")}</svg>`};exports.buildSignatureSvg=buildSignatureSvg;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.writePng=void 0;const writePng=e=>{const{File:t,Paths:r}=require("expo-file-system"),i=new t(r.cache,`signature-${Date.now().toString(36)}.png`);return i.create({intermediates:!0,overwrite:!0}),i.write(e,{encoding:"base64"}),i.uri};exports.writePng=writePng;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.writePng=void 0;const writePng=e=>`data:image/png;base64,${e}`;exports.writePng=writePng;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Sparkline=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_reactNativeSvg=_interopRequireWildcard(require("react-native-svg")),_index=require("../../theme/index.js"),_geometry=require("./geometry.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,i=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var a,o,l={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return l;if(a=t?i:r){if(a.has(e))return a.get(e);a.set(e,l)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((o=(a=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(o.get||o.set)?a(l,t,o):l[t]=e[t]);return l})(e,t)}const DOT_RADIUS=3,lineColor=(e,t)=>"neutral"===t?e.colors.text.secondary:e.colors.toneText[t],defaultFormat=e=>(0,_mobileCore.formatNumber)(e),Sparkline=exports.Sparkline=(0,_react.forwardRef)((e,t)=>{const{data:r,tone:i="primary",color:a,fill:o=!1,highlightLast:l=!0,height:n=32,width:s,strokeWidth:c=2,label:u,formatLabel:d=defaultFormat,accessibilityLabel:f,style:_,testID:h}=e,m=(0,_index.useTheme)(),[p,v]=(0,_react.useState)(0),y=s??p,x=(0,_react.useCallback)(e=>{if(void 0===s){const t=Math.round(e.nativeEvent.layout.width);v(e=>e===t?e:t)}},[s]),g=Math.max(3,c/2)+1,j=(0,_react.useMemo)(()=>(0,_geometry.sparklineGeometry)(r,y,n,g),[r,y,n,g]),b=a??lineColor(m,i),k=(0,_react.useMemo)(()=>{if(void 0!==f)return f;const e=(0,_geometry.finiteValues)(r),t=u?`${u}, `:"";if(0===e.length)return`${t}no data`;if(1===e.length)return`${t}${d(e[0])}`;return`${t}from ${d(e[0])} to ${d(e[e.length-1])}, low ${d(Math.min(...e))}, high ${d(Math.max(...e))}`},[f,r,d,u]);return(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,accessible:!0,accessibilityRole:"image",accessibilityLabel:k,testID:h,onLayout:x,style:[styles.root,void 0===s?styles.stretch:{width:s},{height:n},_],children:""===j.line?null:(0,_jsxRuntime.jsxs)(_reactNativeSvg.default,{width:y,height:n,viewBox:`0 0 ${y} ${n}`,children:[o?(0,_jsxRuntime.jsx)(_reactNativeSvg.Path,{d:j.area,fill:b,fillOpacity:.14,stroke:"none"}):null,(0,_jsxRuntime.jsx)(_reactNativeSvg.Path,{d:j.line,fill:"none",stroke:b,strokeWidth:c,strokeLinecap:"round",strokeLinejoin:"round",testID:h?`${h}-line`:void 0}),l&&j.last?(0,_jsxRuntime.jsx)(_reactNativeSvg.Circle,{cx:j.last.x,cy:j.last.y,r:3,fill:b,testID:h?`${h}-dot`:void 0}):null]})})});Sparkline.displayName="Sparkline";const styles=_reactNative.StyleSheet.create({root:{overflow:"hidden"},stretch:{alignSelf:"stretch"}});var _default=exports.default=Sparkline;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.sparklineGeometry=exports.finiteValues=void 0;const finite=e=>e.filter(e=>Number.isFinite(e)),round=e=>(Math.round(100*e)/100).toString(),sparklineGeometry=(e,t,n,r)=>{const i=finite(e);if(0===i.length||t<=0||n<=0)return{line:"",area:"",last:null};const o=Math.min(...i),a=Math.max(...i),s=Math.max(0,t-2*r),l=Math.max(0,n-2*r),u=a-o,p=i.map((e,o)=>({x:1===i.length?t/2:r+o*s/(i.length-1),y:0===u?n/2:r+(a-e)/u*l})),x=p.map((e,t)=>`${0===t?"M":"L"}${round(e.x)} ${round(e.y)}`).join(" "),d=p[0],m=p[p.length-1];return{line:x,area:`${x} L${round(m.x)} ${round(n)} L${round(d.x)} ${round(n)} Z`,last:m}};exports.sparklineGeometry=sparklineGeometry;const finiteValues=exports.finiteValues=finite;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"Sparkline",{enumerable:!0,get:function(){return _Sparkline.Sparkline}}),Object.defineProperty(exports,"default",{enumerable:!0,get:function(){return _Sparkline.default}});var _Sparkline=_interopRequireWildcard(require("./Sparkline.js"));function _interopRequireWildcard(e,r){if("function"==typeof WeakMap)var t=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,r){if(!r&&e&&e.__esModule)return e;var i,o,u={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return u;if(i=r?n:t){if(i.has(e))return i.get(e);i.set(e,u)}for(const r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((o=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,r))&&(o.get||o.set)?i(u,r,o):u[r]=e[r]);return u})(e,r)}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Spinner=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_squircle=require("../../utils/squircle.js"),_SquircleFill=require("../SquircleFill/SquircleFill.js"),_jsxRuntime=require("react/jsx-runtime");const sizeMap={sm:20,md:32,lg:48},DOT_COUNT=3,DOT_STAGGER_MS=150,DOT_CYCLE_MS=600,Dot=({size:e,color:t,delay:i,duration:r})=>{const a=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current;return(0,_react.useEffect)(()=>{const e=_reactNative.Animated.loop(_reactNative.Animated.sequence([_reactNative.Animated.delay(i),_reactNative.Animated.timing(a,{toValue:1.4,duration:r/2,easing:_reactNative.Easing.out(_reactNative.Easing.quad),useNativeDriver:!0}),_reactNative.Animated.timing(a,{toValue:1,duration:r/2,easing:_reactNative.Easing.in(_reactNative.Easing.quad),useNativeDriver:!0})]));return e.start(),()=>{e.stop()}},[a,i,r]),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{width:e,height:e,borderRadius:e/2,..._corners.smoothCorners,backgroundColor:t,transform:[{scale:a}]}})},Spinner=exports.Spinner=(0,_react.forwardRef)((e,t)=>{const{size:i="md",color:r,message:a,overlay:n=!1,backdropColor:s,variant:o="circular",accessibilityLabel:l,style:c,testID:u}=e,d=(0,_index.useTheme)(),m=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current;(0,_react.useEffect)(()=>{_reactNative.Animated.timing(m,{toValue:1,duration:d.motion.duration.normal,easing:_reactNative.Easing.bezier(...d.motion.easing.standard),useNativeDriver:!0}).start()},[m,d]);const _=(0,_react.useMemo)(()=>buildStyles(d),[d]),g=sizeMap[i],v=r??d.colors.primary,y=s??d.colors.background.overlay,x=(0,_react.useMemo)(()=>{if("dots"===o){const e=Math.max(6,Math.round(g/4));return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[_.dotsRow,{gap:Math.round(e/2)}],children:Array.from({length:3}).map((t,i)=>(0,_jsxRuntime.jsx)(Dot,{size:e,color:v,delay:150*i,duration:600},i))})}return(0,_jsxRuntime.jsx)(_reactNative.ActivityIndicator,{color:v,size:"sm"===i?"small":"large",style:{width:g,height:g}})},[o,i,g,v,_.dotsRow]),h=l??a??"Loading",p=(0,_SquircleFill.useSquircle)(n,d.radius.lg),j=p.active&&p.size?{borderRadius:(0,_squircle.squircleHostRadius)(p.size.width,p.size.height,d.radius.lg)}:null,b=(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{ref:t,accessible:!0,accessibilityRole:"progressbar",accessibilityLiveRegion:"polite",accessibilityLabel:h,accessibilityState:{busy:!0},"aria-busy":!0,testID:u,onLayout:p.onLayout,style:[n?_.overlayContent:_.inlineContent,j,{opacity:m}],children:[p.active&&p.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:p.size.width,height:p.size.height,radius:d.radius.lg,fill:d.colors.background.elevated}):null,x,a?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[_.message,{color:d.colors.text.primary,fontSize:d.typography.fontSize.base,fontWeight:d.typography.fontWeight.medium,marginTop:d.spacing.md}],numberOfLines:2,children:a}):null]});return n?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"auto",style:[_.overlay,{backgroundColor:y},c],children:b}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[_.inline,c],children:b})});Spinner.displayName="Spinner";const buildStyles=e=>_reactNative.StyleSheet.create({inline:{alignItems:"center",justifyContent:"center"},inlineContent:{alignItems:"center",justifyContent:"center"},overlay:{..._reactNative.StyleSheet.absoluteFill,alignItems:"center",justifyContent:"center",zIndex:1e3},overlayContent:{alignItems:"center",justifyContent:"center",backgroundColor:e.colors.background.elevated,borderRadius:e.radius.lg,..._corners.smoothCorners,paddingHorizontal:e.spacing.xl,paddingVertical:e.spacing.xl,minWidth:140,...e.shadows.lg},dotsRow:{flexDirection:"row",alignItems:"center",justifyContent:"center"},message:{textAlign:"center"}});var _default=exports.default=Spinner;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Spinner=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_squircle=require("../../utils/squircle.js"),_SquircleFill=require("../SquircleFill/SquircleFill.js"),_jsxRuntime=require("react/jsx-runtime");const sizeMap={sm:20,md:32,lg:48},CONTAINER_RATIO=1.5,DOT_COUNT=3,DOT_STAGGER_MS=150,DOT_CYCLE_MS=600,Dot=({size:e,color:t,delay:i,duration:r})=>{const n=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current;return(0,_react.useEffect)(()=>{const e=_reactNative.Animated.loop(_reactNative.Animated.sequence([_reactNative.Animated.delay(i),_reactNative.Animated.timing(n,{toValue:1.4,duration:r/2,easing:_reactNative.Easing.out(_reactNative.Easing.quad),useNativeDriver:!0}),_reactNative.Animated.timing(n,{toValue:1,duration:r/2,easing:_reactNative.Easing.in(_reactNative.Easing.quad),useNativeDriver:!0})]));return e.start(),()=>{e.stop()}},[n,i,r]),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{width:e,height:e,borderRadius:e/2,..._corners.smoothCorners,backgroundColor:t,transform:[{scale:n}]}})},Spinner=exports.Spinner=(0,_react.forwardRef)((e,t)=>{const{size:i="md",color:r,message:n,overlay:a=!1,backdropColor:s,variant:o="circular",accessibilityLabel:c,style:l,testID:u}=e,d="contained"===o,g=a&&!d,_=(0,_index.useTheme)(),m=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current;(0,_react.useEffect)(()=>{_reactNative.Animated.timing(m,{toValue:1,duration:_.motion.duration.normal,easing:_reactNative.Easing.bezier(..._.motion.easing.standard),useNativeDriver:!0}).start()},[m,_]);const y=(0,_react.useMemo)(()=>buildStyles(_),[_]),v=sizeMap[i],h=r??_.colors.primary,x=s??_.colors.background.overlay,p=(0,_react.useMemo)(()=>{if("contained"===o){const e=Math.round(1.5*v);return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[y.container,{width:e,height:e,borderRadius:e/2,backgroundColor:(0,_color.blendOf)(h,.14,_.colors.background.elevated,_.colors.background.secondary)}],children:(0,_jsxRuntime.jsx)(_reactNative.ActivityIndicator,{color:h,size:"sm"===i?"small":"large",style:{width:v,height:v}})})}if("dots"===o){const e=Math.max(6,Math.round(v/4));return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[y.dotsRow,{gap:Math.round(e/2)}],children:Array.from({length:3}).map((t,i)=>(0,_jsxRuntime.jsx)(Dot,{size:e,color:h,delay:150*i,duration:600},i))})}return(0,_jsxRuntime.jsx)(_reactNative.ActivityIndicator,{color:h,size:"sm"===i?"small":"large",style:{width:v,height:v}})},[o,i,v,h,y.dotsRow,y.container,_.colors.background.elevated,_.colors.background.secondary]),j=c??n??"Loading",f=(0,_react.useRef)(j);f.current=j,(0,_react.useEffect)(()=>{d&&(0,_announce.announce)(f.current)},[d]);const b=(0,_SquircleFill.useSquircle)(g,_.radius.lg),N=b.active&&b.size?{borderRadius:(0,_squircle.squircleHostRadius)(b.size.width,b.size.height,_.radius.lg)}:null;let R=y.inlineContent;g?R=y.overlayContent:d&&(R=y.containedContent);const S=(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{ref:t,accessible:!0,accessibilityRole:"progressbar",accessibilityLiveRegion:d?"none":"polite",accessibilityLabel:j,accessibilityState:{busy:!0},"aria-busy":!0,testID:u,onLayout:b.onLayout,style:[R,N,{opacity:m}],children:[b.active&&b.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:b.size.width,height:b.size.height,radius:_.radius.lg,fill:_.colors.background.elevated}):null,p,n?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[y.message,{color:_.colors.text.primary,fontSize:_.typography.fontSize.base,fontWeight:_.typography.fontWeight.medium,marginTop:_.spacing.md}],numberOfLines:2,children:n}):null]});return g?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"auto",style:[y.overlay,{backgroundColor:x},l],children:S}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[d?y.containedFill:y.inline,l],children:S})});Spinner.displayName="Spinner";const buildStyles=e=>_reactNative.StyleSheet.create({inline:{alignItems:"center",justifyContent:"center"},inlineContent:{alignItems:"center",justifyContent:"center"},containedFill:{flex:1,alignSelf:"stretch",alignItems:"center",justifyContent:"center",minHeight:Math.round(1.5*sizeMap.lg)+2*e.spacing.xl},containedContent:{alignItems:"center",justifyContent:"center",paddingHorizontal:e.spacing.lg},container:{alignItems:"center",justifyContent:"center"},overlay:{..._reactNative.StyleSheet.absoluteFill,alignItems:"center",justifyContent:"center",zIndex:1e3},overlayContent:{alignItems:"center",justifyContent:"center",backgroundColor:e.colors.background.elevated,borderRadius:e.radius.lg,..._corners.smoothCorners,paddingHorizontal:e.spacing.xl,paddingVertical:e.spacing.xl,minWidth:140,...e.shadows.lg},dotsRow:{flexDirection:"row",alignItems:"center",justifyContent:"center"},message:{textAlign:"center"}});var _default=exports.default=Spinner;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.StatTile=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../Card/index.js"),_index3=require("../IconBadge/index.js"),_index4=require("../Skeleton/index.js"),_index5=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");const isText=e=>"string"==typeof e||"number"==typeof e,StatTile=exports.StatTile=(0,_react.forwardRef)((e,t)=>{const{label:i,value:n,icon:s,iconVariant:r,tone:a="primary",caption:x,onPress:l,loading:d=!1,accessibilityLabel:c,style:o,testID:u}=e,_=(0,_index.useTheme)(),j=c??(isText(n)?`${i}, ${n}`:void 0);return d?(0,_jsxRuntime.jsx)(_index2.Card,{ref:t,variant:"outlined",style:o,testID:u,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[styles.row,{columnGap:_.spacing.md}],children:[void 0===s?null:(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"circle",width:40,height:40}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.text,children:[(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"50%",height:12}),(0,_jsxRuntime.jsx)(_index4.Skeleton,{shape:"text",width:"35%",height:24,style:{marginTop:_.spacing.xs}})]})]})}):(0,_jsxRuntime.jsx)(_index2.Card,{ref:t,variant:"outlined",onPress:l,accessibilityLabel:j,style:o,testID:u,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[styles.row,{columnGap:_.spacing.md}],children:[void 0===s?null:(0,_jsxRuntime.jsx)(_index3.IconBadge,{icon:s,iconVariant:r,tone:a}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.text,children:[(0,_jsxRuntime.jsx)(_index5.Text,{variant:"caption",color:"secondary",numberOfLines:1,children:i}),isText(n)?(0,_jsxRuntime.jsx)(_index5.Text,{variant:"h3",numberOfLines:1,children:n}):n,null==x||""===x?null:isText(x)?(0,_jsxRuntime.jsx)(_index5.Text,{variant:"caption",color:"tertiary",numberOfLines:1,children:x}):x]})]})})});StatTile.displayName="StatTile";const styles=_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center"},text:{flex:1,minWidth:0}});var _default=exports.default=StatTile;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.StatTile=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../AppIcon/index.js"),_index3=require("../Card/index.js"),_index4=require("../IconBadge/index.js"),_index5=require("../Skeleton/index.js"),_index6=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");const isText=e=>"string"==typeof e||"number"==typeof e,TREND_ICON={up:"arrow-up",down:"arrow-down",flat:"minus"},TREND_WORD={up:"up",down:"down",flat:"no change"},TREND_SIGN={up:"+",down:"-",flat:""},percentText=e=>(0,_mobileCore.formatPercent)(Math.abs(e),{scale:"percent",maximumFractionDigits:1}),trendFigure=e=>"number"==typeof e.value?`${TREND_SIGN[e.direction]}${percentText(e.value)}`:e.value,trendSpoken=e=>{const t=[TREND_WORD[e.direction]];return"flat"!==e.direction&&t.push("number"==typeof e.value?percentText(e.value):e.value),e.period&&t.push(e.period),t.join(" ")},StatTile=exports.StatTile=(0,_react.forwardRef)((e,t)=>{const{label:i,value:n,icon:r,iconVariant:s,tone:a="primary",caption:o,trend:l,sparkline:x,onPress:c,loading:d=!1,accessibilityLabel:u,style:_,testID:p}=e,m=(0,_index.useTheme)(),j=l?`, ${trendSpoken(l)}`:"",h=u??(isText(n)?`${i}, ${n}${j}`:void 0),y=!!l&&l.direction===(l.goodWhen??"up"),v=l&&"flat"!==l.direction?y?"success":"error":"secondary",T="secondary"===v?m.colors.text.secondary:m.colors.toneText[v];return d?(0,_jsxRuntime.jsx)(_index3.Card,{ref:t,variant:"outlined",style:_,testID:p,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[styles.row,{columnGap:m.spacing.md}],children:[void 0===r?null:(0,_jsxRuntime.jsx)(_index5.Skeleton,{shape:"circle",width:40,height:40}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.text,children:[(0,_jsxRuntime.jsx)(_index5.Skeleton,{shape:"text",width:"50%",height:12}),(0,_jsxRuntime.jsx)(_index5.Skeleton,{shape:"text",width:"35%",height:24,style:{marginTop:m.spacing.xs}})]})]})}):(0,_jsxRuntime.jsx)(_index3.Card,{ref:t,variant:"outlined",onPress:c,accessibilityLabel:h,style:_,testID:p,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[styles.row,{columnGap:m.spacing.md}],children:[void 0===r?null:(0,_jsxRuntime.jsx)(_index4.IconBadge,{icon:r,iconVariant:s,tone:a}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.text,children:[(0,_jsxRuntime.jsx)(_index6.Text,{variant:"caption",color:"secondary",numberOfLines:1,children:i}),isText(n)?(0,_jsxRuntime.jsx)(_index6.Text,{variant:"h3",numberOfLines:1,children:n}):n,l?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[styles.trend,{columnGap:m.spacing.xxs}],testID:p?`${p}-trend`:void 0,children:[(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:TREND_ICON[l.direction],size:"xs",color:T}),(0,_jsxRuntime.jsxs)(_index6.Text,{variant:"caption",color:v,numberOfLines:2,style:styles.text,children:[trendFigure(l),l.period?(0,_jsxRuntime.jsx)(_index6.Text,{variant:"caption",color:"tertiary",children:` ${l.period}`}):null]})]}):null,null==o||""===o?null:isText(o)?(0,_jsxRuntime.jsx)(_index6.Text,{variant:"caption",color:"tertiary",numberOfLines:1,children:o}):o,null==x?null:(0,_jsxRuntime.jsx)(_reactNative.View,{style:{marginTop:m.spacing.sm},children:x})]})]})})});StatTile.displayName="StatTile";const styles=_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center"},text:{flex:1,minWidth:0},trend:{flexDirection:"row",alignItems:"center"}});var _default=exports.default=StatTile;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Switch=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_ChoiceText=require("../FieldBase/ChoiceText.js"),_jsxRuntime=require("react/jsx-runtime");const sizeMap={sm:{trackWidth:42,trackHeight:26,thumbSize:22,padding:2},md:{trackWidth:51,trackHeight:31,thumbSize:27,padding:2},lg:{trackWidth:60,trackHeight:36,thumbSize:32,padding:2}},toneColor=(e,t)=>{switch(t){case"success":return e.colors.success;case"warning":return e.colors.warning;case"error":return e.colors.error;default:return e.colors.primary}},Switch=exports.Switch=(0,_react.forwardRef)((e,t)=>{const{value:i,defaultValue:s,onChange:r,disabled:a=!1,size:n="md",tone:c="primary",label:o,description:l,error:d,labelLines:u,layout:h="inline",accessibilityLabel:p,haptic:m="selection",bounce:_=!1,style:b,containerStyle:x,trackStyle:g,thumbStyle:f,testID:y,...v}=e,[w,j]=(0,_index.useControllableState)({value:i,defaultValue:s??!1,onChange:r}),R=(0,_index2.useTheme)(),C={...sizeMap[n],...R.components.switch?.[n]??{}},S=R.components.switch?.thumbColor??"#FFFFFF",k=(0,_react.useMemo)(()=>buildStyles(R),[R]),N="dark"===R.mode?R.colors.secondary:R.colors.surface.disabled,T=toneColor(R,c),V=(0,_react.useRef)((0,_index2.createAnimatedValue)(w?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.spring(V,{toValue:w?1:0,damping:R.motion.spring.snappy.damping,stiffness:R.motion.spring.snappy.stiffness,mass:R.motion.spring.snappy.mass,useNativeDriver:!0});return e.start(),()=>e.stop()},[w,V,R.motion.spring.snappy]);const D=(0,_react.useRef)((0,_index2.createAnimatedValue)(w?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(D,{toValue:w?1:0,duration:R.motion.duration.fast,easing:_reactNative.Easing.out(_reactNative.Easing.ease),useNativeDriver:!1});return e.start(),()=>e.stop()},[w,D,R.motion.duration.fast]);const H=C.padding,z=C.trackWidth-C.thumbSize-C.padding,A=V.interpolate({inputRange:[0,1],outputRange:[H,z]}),q=D.interpolate({inputRange:[0,1],outputRange:[N,T]}),L=(0,_react.useRef)((0,_index2.createAnimatedValue)(1)).current,F=(0,_react.useRef)(!0);(0,_react.useEffect)(()=>{if(!_)return;if(F.current)return void(F.current=!1);const e=_reactNative.Animated.sequence([_reactNative.Animated.spring(L,{toValue:1.15,damping:10,stiffness:220,mass:1,useNativeDriver:!0}),_reactNative.Animated.spring(L,{toValue:1,damping:14,stiffness:240,mass:1,useNativeDriver:!0})]);return e.start(),()=>e.stop()},[w,_,L]);const handlePress=e=>{a||(!1!==m&&(0,_hapticUtils.triggerHaptic)(m),j(!w),v.onPressOut?.(e))},P=p??o,E=Boolean(o)||(0,_ChoiceText.hasChoiceDetail)(l,d),I="row"===h&&E,W=(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[k.track,{width:C.trackWidth,height:C.trackHeight,borderRadius:C.trackHeight/2,..._corners.smoothCorners,backgroundColor:q},g],children:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[k.thumb,R.shadows.sm,{backgroundColor:S,width:C.thumbSize,height:C.thumbSize,borderRadius:C.thumbSize/2,..._corners.smoothCorners,transform:[{translateX:A},{scale:L}]},f]})});if(I)return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:t,onPress:handlePress,disabled:a,accessibilityRole:"switch",accessibilityLabel:P,accessibilityHint:v.accessibilityHint??l,accessibilityState:{checked:w,disabled:a},"aria-checked":w,"aria-disabled":a,testID:y,...v,style:({pressed:e})=>[k.row,k.spreadRow,(0,_ChoiceText.hasChoiceDetail)(l,d)?k.rowTop:null,{opacity:a?.55:e?.9:1},x,b],children:[(0,_jsxRuntime.jsx)(_ChoiceText.ChoiceText,{label:o,description:l,error:d,disabled:a,labelLines:u||void 0,descriptionLines:u||void 0,style:k.spreadText}),W]});const M=(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:t,onPress:handlePress,disabled:a,accessibilityRole:"switch",accessibilityLabel:P,accessibilityHint:v.accessibilityHint??l,accessibilityState:{checked:w,disabled:a},"aria-checked":w,"aria-disabled":a,testID:y,hitSlop:8,...v,style:({pressed:e})=>[{opacity:a?.55:e?.9:1},E?null:b],children:W});return E?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[k.row,(0,_ChoiceText.hasChoiceDetail)(l,d)?k.rowTop:null,x,b],children:[M,(0,_jsxRuntime.jsx)(_ChoiceText.ChoiceText,{label:o,description:l,error:d,disabled:a,labelLines:u||void 0,descriptionLines:u||void 0,style:k.text})]}):x?(0,_jsxRuntime.jsx)(_reactNative.View,{style:x,children:M}):M});Switch.displayName="Switch";const buildStyles=e=>_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center"},track:{justifyContent:"center"},thumb:{position:"absolute",top:2},rowTop:{alignItems:"flex-start"},text:{marginLeft:10},spreadRow:{minHeight:44,justifyContent:"space-between"},spreadText:{flex:1,marginRight:12}});var _default=exports.default=Switch;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Switch=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_ChoiceText=require("../FieldBase/ChoiceText.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_jsxRuntime=require("react/jsx-runtime");const sizeMap={sm:{trackWidth:42,trackHeight:26,thumbSize:22,padding:2},md:{trackWidth:51,trackHeight:31,thumbSize:27,padding:2},lg:{trackWidth:60,trackHeight:36,thumbSize:32,padding:2}},toneColor=(e,t)=>{switch(t){case"success":return e.colors.success;case"warning":return e.colors.warning;case"error":return e.colors.error;default:return e.colors.primary}},Switch=exports.Switch=(0,_react.forwardRef)((e,t)=>{const{value:i,defaultValue:r,onChange:s,disabled:a=!1,size:n="md",tone:o="primary",label:c,description:l,error:d,labelLines:u,layout:h="inline",accessibilityLabel:p,haptic:m="selection",bounce:_=!1,style:b,containerStyle:x,trackStyle:g,thumbStyle:f,testID:y,...v}=e,[w,j]=(0,_index.useControllableState)({value:i,defaultValue:r??!1,onChange:s}),R=(0,_index2.useTheme)(),S={...sizeMap[n],...R.components.switch?.[n]??{}},C=R.components.switch?.thumbColor??"#FFFFFF",k=(0,_react.useMemo)(()=>buildStyles(R),[R]),N="dark"===R.mode?R.colors.secondary:R.colors.surface.disabled,T=toneColor(R,o),F=(0,_react.useRef)((0,_index2.createAnimatedValue)(w?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.spring(F,{toValue:w?1:0,damping:R.motion.spring.snappy.damping,stiffness:R.motion.spring.snappy.stiffness,mass:R.motion.spring.snappy.mass,useNativeDriver:!0});return e.start(),()=>e.stop()},[w,F,R.motion.spring.snappy]);const V=(0,_react.useRef)((0,_index2.createAnimatedValue)(w?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(V,{toValue:w?1:0,duration:R.motion.duration.fast,easing:_reactNative.Easing.out(_reactNative.Easing.ease),useNativeDriver:!1});return e.start(),()=>e.stop()},[w,V,R.motion.duration.fast]);const A=S.padding,H=S.trackWidth-S.thumbSize-S.padding,D=F.interpolate({inputRange:[0,1],outputRange:[A,H]}),q=V.interpolate({inputRange:[0,1],outputRange:[N,T]}),z=(0,_react.useRef)((0,_index2.createAnimatedValue)(1)).current,B=(0,_react.useRef)(!0);(0,_react.useEffect)(()=>{if(!_)return;if(B.current)return void(B.current=!1);const e=_reactNative.Animated.sequence([_reactNative.Animated.spring(z,{toValue:1.15,damping:10,stiffness:220,mass:1,useNativeDriver:!0}),_reactNative.Animated.spring(z,{toValue:1,damping:14,stiffness:240,mass:1,useNativeDriver:!0})]);return e.start(),()=>e.stop()},[w,_,z]);const handlePress=e=>{a||(!1!==m&&(0,_hapticUtils.triggerHaptic)(m),j(!w),v.onPressOut?.(e))},L=p??(0,_FieldBase.fieldTextAsString)(c),E=(0,_FieldBase.hasFieldText)(c)||(0,_ChoiceText.hasChoiceDetail)(l,d),P=(!0===d||(0,_FieldBase.hasFieldText)(d))&&!w&&!a,W="row"===h&&E,I=(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[k.track,{width:S.trackWidth,height:S.trackHeight,borderRadius:S.trackHeight/2,..._corners.smoothCorners,backgroundColor:q},g],children:[P?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[k.errorRing,{borderRadius:S.trackHeight/2,..._corners.smoothCorners,borderWidth:R.colors.border.width,borderColor:R.colors.field.borderError}]}):null,(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[k.thumb,R.shadows.sm,{backgroundColor:C,width:S.thumbSize,height:S.thumbSize,borderRadius:S.thumbSize/2,..._corners.smoothCorners,transform:[{translateX:D},{scale:z}]},f]})]});if(W)return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:t,onPress:handlePress,disabled:a,accessibilityRole:"switch",accessibilityLabel:L,accessibilityHint:v.accessibilityHint??(0,_FieldBase.fieldTextAsString)(l),accessibilityState:{checked:w,disabled:a},"aria-checked":w,"aria-disabled":a,testID:y,...v,style:({pressed:e})=>[k.row,k.spreadRow,(0,_ChoiceText.hasChoiceDetail)(l,d)?k.rowTop:null,{opacity:a?.55:e?.9:1},x,b],children:[(0,_jsxRuntime.jsx)(_ChoiceText.ChoiceText,{label:c,description:l,error:d,disabled:a,labelLines:u||void 0,descriptionLines:u||void 0,style:k.spreadText}),I]});const M=(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:t,onPress:handlePress,disabled:a,accessibilityRole:"switch",accessibilityLabel:L,accessibilityHint:v.accessibilityHint??(0,_FieldBase.fieldTextAsString)(l),accessibilityState:{checked:w,disabled:a},"aria-checked":w,"aria-disabled":a,testID:y,hitSlop:8,...v,style:({pressed:e})=>[{opacity:a?.55:e?.9:1},E?null:b],children:I});return E?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[k.row,(0,_ChoiceText.hasChoiceDetail)(l,d)?k.rowTop:null,x,b],children:[M,(0,_jsxRuntime.jsx)(_ChoiceText.ChoiceText,{label:c,description:l,error:d,disabled:a,labelLines:u||void 0,descriptionLines:u||void 0,style:k.text})]}):x?(0,_jsxRuntime.jsx)(_reactNative.View,{style:x,children:M}):M});Switch.displayName="Switch";const buildStyles=e=>_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center"},track:{justifyContent:"center"},thumb:{position:"absolute",top:2},errorRing:{..._reactNative.StyleSheet.absoluteFill},rowTop:{alignItems:"flex-start"},text:{marginLeft:10},spreadRow:{minHeight:44,justifyContent:"space-between"},spreadText:{flex:1,marginRight:12}});var _default=exports.default=Switch;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.TagInput=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"),_index4=require("../Chip/index.js"),_index5=require("../FieldBase/index.js"),_index6=require("../FormField/index.js"),_jsxRuntime=require("react/jsx-runtime");const TagInput=exports.TagInput=(0,_react.forwardRef)((e,t)=>{const{value:r,defaultValue:i,onChange:a,placeholder:n,label:s,helperText:l,error:o,required:u,disabled:d=!1,size:c="md",variant:x,maxTags:p,unique:_=!0,transform:h,separators:m=[","],haptic:g,style:f,testID:v}=e,j=(0,_index2.useTheme)(),b=(0,_react.useMemo)(()=>buildStyles(j),[j]),[y,T]=(0,_index.useControllableState)({value:r,defaultValue:i??[],onChange:a}),[C,q]=(0,_react.useState)(""),[I,w]=(0,_react.useState)(!1),F=(0,_react.useRef)(null),R=(0,_react.useMemo)(()=>(0,_index3.mergeRefs)(F,t),[t]),S=(0,_react.useCallback)(()=>{d||F.current?.focus()},[d]),k="number"==typeof p&&y.length>=p,N=(0,_react.useCallback)(e=>{const t=h?h(e.trim()):e.trim();if(!t)return;if(k)return;if(_&&y.some(e=>e.toLowerCase()===t.toLowerCase()))return void q("");T([...y,t]),q("");const r=(0,_index3.resolveHaptic)(g,"selection");r&&(0,_index3.triggerHaptic)(r)},[k,g,T,y,h,_]),V=(0,_react.useCallback)(e=>{const t=y.filter((t,r)=>r!==e);T(t);const r=(0,_index3.resolveHaptic)(g,"selection");r&&(0,_index3.triggerHaptic)(r)},[g,T,y]),z=(0,_react.useCallback)(e=>{const t=m.find(t=>t.length>0&&e.includes(t));if(t){const[r]=e.split(t);return void N(r)}q(e)},[N,m]),D=(0,_react.useCallback)(e=>{d||"Backspace"===e.nativeEvent.key&&""===C&&y.length>0&&V(y.length-1)},[d,C,V,y.length]),B=(0,_jsxRuntime.jsx)(_index5.FieldBase,{size:c,variant:x,focused:I,disabled:d,error:(0,_index5.hasFieldText)(o),filled:y.length>0||C.length>0,onPress:S,pressFeedback:!1,style:f,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:b.wrap,children:[y.map((e,t)=>(0,_jsxRuntime.jsx)(_index4.Chip,{label:e,size:"sm",onClose:d?void 0:()=>V(t),haptic:g},`${e}-${t}`)),(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:R,value:C,onChangeText:z,onKeyPress:D,onSubmitEditing:()=>N(C),onFocus:()=>w(!0),onBlur:()=>{w(!1),N(C)},editable:!d&&!k,placeholder:k?void 0:n,placeholderTextColor:j.colors.text.tertiary,blurOnSubmit:!1,returnKeyType:"done",style:[b.input,{color:j.colors.text.primary,fontSize:j.typography.fontSize.base}],testID:v?`${v}-input`:void 0})]})});return s||l||(0,_index5.hasFieldText)(o)?(0,_jsxRuntime.jsx)(_reactNative.View,{testID:v,children:(0,_jsxRuntime.jsx)(_index6.FormField,{label:s,helperText:l,error:o,required:u,children:B})}):(0,_jsxRuntime.jsx)(_reactNative.View,{testID:v,children:B})});TagInput.displayName="TagInput";const buildStyles=e=>_reactNative.StyleSheet.create({wrap:{flex:1,flexDirection:"row",flexWrap:"wrap",alignItems:"center",gap:e.spacing.xs,paddingVertical:e.spacing.xs},input:{...(0,_index2.fontFor)(e,"normal"),flexGrow:1,minWidth:80,padding:0}});var _default=exports.default=TagInput;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.TagInput=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"),_index4=require("../Chip/index.js"),_index5=require("../FieldBase/index.js"),_jsxRuntime=require("react/jsx-runtime");const TagInput=exports.TagInput=(0,_react.forwardRef)((e,t)=>{const{value:r,defaultValue:i,onChange:a,placeholder:n,label:s,helperText:l,error:o,required:u,disabled:d=!1,size:c="md",variant:x,maxTags:p,unique:_=!0,transform:g,separators:m=[","],haptic:f,style:h,testID:v}=e,b=(0,_index2.useTheme)(),j=(0,_react.useMemo)(()=>buildStyles(b),[b]),[y,C]=(0,_index.useControllableState)({value:r,defaultValue:i??[],onChange:a}),[T,q]=(0,_react.useState)(""),[I,R]=(0,_react.useState)(!1),S=(0,_react.useRef)(null),w=(0,_react.useMemo)(()=>(0,_index3.mergeRefs)(S,t),[t]),k=(0,_react.useCallback)(()=>{d||S.current?.focus()},[d]),F="number"==typeof p&&y.length>=p,z=!0===o||(0,_index5.hasFieldText)(o),N=(0,_react.useCallback)(e=>{const t=g?g(e.trim()):e.trim();if(!t)return;if(F)return;if(_&&y.some(e=>e.toLowerCase()===t.toLowerCase()))return void q("");C([...y,t]),q("");const r=(0,_index3.resolveHaptic)(f,"selection");r&&(0,_index3.triggerHaptic)(r)},[F,f,C,y,g,_]),V=(0,_react.useCallback)(e=>{const t=y.filter((t,r)=>r!==e);C(t);const r=(0,_index3.resolveHaptic)(f,"selection");r&&(0,_index3.triggerHaptic)(r)},[f,C,y]),B=(0,_react.useCallback)(e=>{const t=m.find(t=>t.length>0&&e.includes(t));if(t){const[r]=e.split(t);return void N(r)}q(e)},[N,m]),D=(0,_react.useCallback)(e=>{d||"Backspace"===e.nativeEvent.key&&""===T&&y.length>0&&V(y.length-1)},[d,T,V,y.length]),H=(0,_jsxRuntime.jsx)(_index5.FieldBase,{size:c,variant:x,focused:I,disabled:d,error:z,filled:y.length>0||T.length>0,onPress:k,pressFeedback:!1,style:h,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:j.wrap,children:[y.map((e,t)=>(0,_jsxRuntime.jsx)(_index4.Chip,{label:e,size:"sm",onClose:d?void 0:()=>V(t),haptic:f},`${e}-${t}`)),(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:w,value:T,onChangeText:B,onKeyPress:D,onSubmitEditing:()=>N(T),onFocus:()=>R(!0),onBlur:()=>{R(!1),N(T)},editable:!d&&!F,placeholder:F?void 0:n,placeholderTextColor:b.colors.text.tertiary,blurOnSubmit:!1,returnKeyType:"done",accessibilityLabel:s??n,style:[j.input,{color:b.colors.text.primary,fontSize:b.typography.fontSize.base}],testID:v?`${v}-input`:void 0})]})});return(0,_jsxRuntime.jsxs)(_reactNative.View,{testID:v,children:[s?(0,_jsxRuntime.jsx)(_index5.FieldLabel,{size:c,required:u,children:s}):null,H,(0,_jsxRuntime.jsx)(_index5.FieldMessage,{size:c,error:z,text:z?o:l})]})});TagInput.displayName="TagInput";const buildStyles=e=>_reactNative.StyleSheet.create({wrap:{flex:1,flexDirection:"row",flexWrap:"wrap",alignItems:"center",gap:e.spacing.xs,paddingVertical:e.spacing.xs},input:{...(0,_index2.fontFor)(e,"normal"),flexGrow:1,minWidth:80,padding:0}});var _default=exports.default=TagInput;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.TimePicker=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useDragToDismiss=require("../../hooks/useDragToDismiss.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_Button=_interopRequireDefault(require("../Button/Button.js")),_PickerTrigger=require("../PickerTrigger/PickerTrigger.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const ITEM_HEIGHT=40,VISIBLE_ITEMS=5,PICKER_HEIGHT=200,CENTER_OFFSET=Math.floor(2.5),HAPTIC_DEBOUNCE_MS=35,range=(e,t,i=1)=>{const a=[];for(let r=e;r<=t;r+=i)a.push(r);return a},pad2=e=>e.toString().padStart(2,"0"),to24h=(e,t,i)=>"24h"===i?e:"AM"===t?12===e?0:e:12===e?12:e+12,from24h=(e,t)=>"24h"===t?{displayHour:e,period:"AM"}:0===e?{displayHour:12,period:"AM"}:12===e?{displayHour:12,period:"PM"}:e>12?{displayHour:e-12,period:"PM"}:{displayHour:e,period:"AM"},clampMinuteToStep=(e,t)=>{const i=Math.round(e/t)*t;return Math.min(59,Math.max(0,i))},Wheel=({kind:e,label:t,data:i,selectedIndex:a,onIndexChange:r,formatItem:n,theme:s,haptic:o,testID:c})=>{const l=(0,_react.useRef)(null),u=(0,_react.useRef)((0,_index.createAnimatedValue)(40*a)).current,d=(0,_react.useRef)(a),m=(0,_react.useRef)(0);(0,_react.useEffect)(()=>{if(d.current!==a){d.current=a;const e=40*a;(0,_index.setNativeValue)(u,e),requestAnimationFrame(()=>{l.current?.scrollToOffset({offset:e,animated:!1})})}},[a,u]);const p=s.components.timePicker?.hapticDebounceMs??35,h=(0,_react.useMemo)(()=>_reactNative.Animated.event([{nativeEvent:{contentOffset:{y:u}}}],{useNativeDriver:!0,listener:e=>{const t=e.nativeEvent.contentOffset.y,a=Math.round(t/40);if(a!==d.current&&a>=0&&a<i.length){const e=Date.now();if(e-m.current>=p){const t=(0,_hapticUtils.resolveHaptic)(o,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),m.current=e}d.current=a}}}),[u,i.length,o,p]),_=(0,_react.useCallback)(e=>{const t=e.nativeEvent.contentOffset.y,n=Math.max(0,Math.min(i.length-1,Math.round(t/40)));n!==a&&r(n)},[i.length,r,a]),g=(0,_react.useCallback)(e=>{const t=e.nativeEvent.actionName;if("increment"===t){const e=Math.min(i.length-1,a+1);e!==a&&r(e)}else if("decrement"===t){const e=Math.max(0,a-1);e!==a&&r(e)}},[i.length,r,a]),x=(0,_react.useCallback)(({item:e,index:t})=>{const i=_reactNative.Animated.subtract(_reactNative.Animated.divide(u,40),t),r=i.interpolate({inputRange:[-2,-1,0,1,2],outputRange:[.3,.6,1,.6,.3],extrapolate:"clamp"}),o=i.interpolate({inputRange:[-2,-1,0,1,2],outputRange:[.85,.95,1.05,.95,.85],extrapolate:"clamp"}),c=t===a;return(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[styles.wheelItem,{opacity:r,transform:[{scale:o}]}],accessible:!1,importantForAccessibility:"no",children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[{fontSize:s.typography.fontSize.xl,color:c?s.colors.text.primary:s.colors.text.secondary,fontWeight:c?s.typography.fontWeight.semibold:s.typography.fontWeight.medium,letterSpacing:s.typography.letterSpacing.normal}],children:n(e)})})},[u,a,s,n]),y=(0,_react.useCallback)((t,i)=>`${e}-${String(t)}-${i}`,[e]),f=(0,_react.useCallback)((e,t)=>({length:40,offset:40*t,index:t}),[]),v=n(i[a]??"");return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.wheelColumn,testID:c,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:styles.wheelA11yLayer,accessible:!0,accessibilityRole:"adjustable",accessibilityLabel:t,accessibilityValue:{text:v},accessibilityActions:[{name:"increment"},{name:"decrement"}],onAccessibilityAction:g}),(0,_jsxRuntime.jsx)(_reactNative.Animated.FlatList,{ref:l,data:i,keyExtractor:y,renderItem:x,getItemLayout:f,showsVerticalScrollIndicator:!1,snapToInterval:40,snapToAlignment:"start",decelerationRate:"fast",bounces:!1,scrollEventThrottle:16,onScroll:h,onMomentumScrollEnd:_,contentContainerStyle:{paddingVertical:40*CENTER_OFFSET},initialScrollIndex:a,style:styles.wheelList,importantForAccessibility:"no-hide-descendants"})]})},TimePicker=e=>{const{visible:t,value:i,onChange:a,onClose:r,format:n="12h",minuteStep:s=1,title:o="Select Time",confirmLabel:c="Confirm",cancelLabel:l="Cancel",testID:u,style:d,containerStyle:m,headerLabelStyle:p,footerButtonStyle:h,label:_,placeholder:g,helperText:x,error:y,required:f,disabled:v,size:b,variant:j,clearable:N,onClear:R,formatValue:S,triggerStyle:C,haptic:w}=e,T=void 0!==e.visible,[k,I]=(0,_react.useState)(!1),M=T?t:k,A=T?u:u?`${u}-modal`:void 0,D=(0,_index.useTheme)(),E=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),H=(0,_react.useMemo)(()=>buildStyles(D),[D]),P=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,V=(0,_react.useRef)((0,_index.createAnimatedValue)(40)).current,B=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,L=(0,_react.useRef)(0),F=(0,_react.useCallback)(()=>{T?r?.():I(!1)},[T,r]),O=(0,_react.useCallback)(()=>{_reactNative.Animated.parallel([_reactNative.Animated.timing(P,{toValue:0,duration:D.motion.duration.fast,easing:_reactNative.Easing.bezier(...D.motion.easing.accelerate),useNativeDriver:!1}),_reactNative.Animated.timing(V,{toValue:40,duration:D.motion.duration.fast,easing:_reactNative.Easing.bezier(...D.motion.easing.accelerate),useNativeDriver:!0})]).start(()=>F())},[F,P,V,D.motion.duration.fast,D.motion.easing.accelerate]),{handleGesture:q}=(0,_useDragToDismiss.useDragToDismiss)({drag:B,travel:()=>L.current||320,onDismiss:O}),W=(0,_react.useMemo)(()=>"24h"===n?range(0,23):range(1,12),[n]),$=(0,_react.useMemo)(()=>range(0,59,s),[s]),z=(0,_react.useMemo)(()=>["AM","PM"],[]),G=(0,_react.useMemo)(()=>{const e=i&&Number.isFinite(i.hour)?i.hour:(new Date).getHours(),t=i&&Number.isFinite(i.minute)?i.minute:(new Date).getMinutes(),a=clampMinuteToStep(t,s),{displayHour:r,period:o}=from24h(e,n);return{displayHour:r,minute:a,period:o,hour24:e}},[i,n,s]),[U,K]=(0,_react.useState)(()=>{const e=W.indexOf(G.displayHour);return e>=0?e:0}),[Y,J]=(0,_react.useState)(()=>{const e=$.indexOf(G.minute);return e>=0?e:0}),[Q,X]=(0,_react.useState)(()=>"PM"===G.period?1:0);(0,_react.useEffect)(()=>{if(!M)return;const e=i&&Number.isFinite(i.hour)?i.hour:(new Date).getHours(),t=i&&Number.isFinite(i.minute)?i.minute:(new Date).getMinutes(),a=clampMinuteToStep(t,s),{displayHour:r,period:o}=from24h(e,n),c=W.indexOf(r);K(c>=0?c:0);const l=$.indexOf(a);J(l>=0?l:0),X("PM"===o?1:0)},[M,i,n,s,W,$]),(0,_react.useEffect)(()=>{let e;return M?(e=_reactNative.Animated.parallel([_reactNative.Animated.timing(P,{toValue:1,duration:D.motion.duration.normal,easing:_reactNative.Easing.out(_reactNative.Easing.cubic),useNativeDriver:!1}),_reactNative.Animated.spring(V,{toValue:0,damping:D.motion.spring.snappy.damping,stiffness:D.motion.spring.snappy.stiffness,mass:D.motion.spring.snappy.mass,useNativeDriver:!0})]),e.start()):(P.setValue(0),(0,_index.setNativeValue)(V,40),(0,_index.setNativeValue)(B,0)),()=>e?.stop()},[M,P,V,B,D.motion]);const Z=(0,_react.useCallback)(e=>{"ios"!==_reactNative.Platform.OS&&"android"!==_reactNative.Platform.OS||_reactNative.AccessibilityInfo.announceForAccessibility(e)},[]),ee=(0,_react.useCallback)(e=>{K(e),Z(`Hour ${W[e]}`)},[W,Z]),te=(0,_react.useCallback)(e=>{J(e),Z(`${$[e]} minutes`)},[$,Z]),ie=(0,_react.useCallback)(e=>{X(e),Z(z[e]??"")},[z,Z]),ae=(0,_react.useCallback)(()=>{!1!==w&&(0,_hapticUtils.triggerHaptic)("selection"),O()},[O,w]),re=(0,_react.useCallback)(()=>{const e=W[U]??0,t=z[Q]??"AM",i=to24h(e,t,n),r=$[Y]??0;!1!==w&&(0,_hapticUtils.triggerHaptic)("notificationSuccess"),a?.({hour:i,minute:r}),O()},[W,U,z,Q,$,Y,n,a,O,w]),ne=(0,_react.useMemo)(()=>{const e=W[U]??0,t=$[Y]??0;if("24h"===n)return`${pad2(e)}:${pad2(t)}`;const i=z[Q]??"AM";return`${pad2(e)}:${pad2(t)} ${i}`},[W,U,$,Y,z,Q,n]),se=(0,_react.useCallback)(e=>pad2(Number(e)),[]),oe=(0,_react.useCallback)(e=>pad2(Number(e)),[]),ce=(0,_react.useCallback)(e=>String(e),[]),le=(0,_react.useCallback)(e=>{if("24h"===n)return`${pad2(e.hour)}:${pad2(e.minute)}`;const{displayHour:t,period:i}=from24h(e.hour,"12h");return`${t}:${pad2(e.minute)} ${i}`},[n]),ue=!T&&i&&Number.isFinite(i.hour)&&Number.isFinite(i.minute)?(S??le)(i):void 0,de=(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:M,transparent:!0,statusBarTranslucent:!0,navigationBarTranslucent:!0,animationType:"none",onRequestClose:O,testID:A,children:(0,_jsxRuntime.jsxs)(_reactNativeGestureHandler.GestureHandlerRootView,{collapsable:!1,style:H.backdrop,children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:O,accessibilityLabel:"Close time picker",accessibilityRole:"button"}),(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[H.sheet,{paddingBottom:Math.max(E.bottom,D.spacing.lg),transform:[{translateY:_reactNative.Animated.add(V,B)}]},d,m],onLayout:e=>{L.current=e.nativeEvent.layout.height},accessibilityViewIsModal:!0,accessible:!0,accessibilityRole:"none",accessibilityLabel:o,children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:q,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:H.handle}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[H.title,p],accessibilityRole:"header",children:o})]})}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:H.summaryWrap,accessibilityLiveRegion:"polite",accessibilityLabel:`Selected ${ne}`,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:H.summary,children:ne})}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:H.wheelsRow,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{pointerEvents:"none",style:H.selectionBand,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:H.bandLine}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[H.bandLine,H.bandLineBottom]})]}),(0,_jsxRuntime.jsx)(Wheel,{kind:"hour",label:"Hour",data:W,selectedIndex:U,onIndexChange:ee,formatItem:se,theme:D,haptic:w,testID:"time-picker-hour"}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:H.separator,children:":"}),(0,_jsxRuntime.jsx)(Wheel,{kind:"minute",label:"Minute",data:$,selectedIndex:Y,onIndexChange:te,formatItem:oe,theme:D,haptic:w,testID:"time-picker-minute"}),"12h"===n?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:H.spacer}),(0,_jsxRuntime.jsx)(Wheel,{kind:"period",label:"Period",data:z,selectedIndex:Q,onIndexChange:ie,formatItem:ce,theme:D,haptic:w,testID:"time-picker-period"})]}):null]}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:H.footer,children:[(0,_jsxRuntime.jsx)(_Button.default,{title:l,haptic:!1,variant:"ghost",tone:"neutral",onPress:ae,style:[H.footerBtn,h],accessibilityHint:"Dismiss without changes",testID:"time-picker-cancel"}),(0,_jsxRuntime.jsx)(_Button.default,{title:c,variant:"solid",tone:"primary",haptic:!1,onPress:re,style:[H.footerBtn,h],accessibilityHint:"Confirm selected time",testID:"time-picker-confirm"})]})]}),(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})});return T?de:(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_PickerTrigger.PickerTrigger,{label:_,placeholder:g,helperText:x,error:y,required:f,disabled:v,size:b,variant:j,clearable:N,onClear:R,value:ue,onPress:()=>I(!0),triggerStyle:C,testID:u}),de]})};exports.TimePicker=TimePicker;const styles=_reactNative.StyleSheet.create({wheelColumn:{width:64,height:200,overflow:"hidden"},wheelList:{flexGrow:0,height:200},wheelItem:{height:40,alignItems:"center",justifyContent:"center"},wheelA11yLayer:{..._reactNative.StyleSheet.absoluteFill,zIndex:2}}),buildStyles=e=>{const t=e.shadows.xl;return _reactNative.StyleSheet.create({backdrop:{flex:1,backgroundColor:e.colors.background.overlay,justifyContent:"flex-end"},sheet:{backgroundColor:e.colors.background.elevated,borderTopLeftRadius:e.radius.xl,borderTopRightRadius:e.radius.xl,..._corners.smoothCorners,paddingTop:e.spacing.sm,paddingHorizontal:e.spacing.lg,paddingBottom:e.spacing.xl,shadowColor:t.shadowColor,shadowOffset:t.shadowOffset,shadowOpacity:t.shadowOpacity,shadowRadius:t.shadowRadius,elevation:t.elevation},handle:{alignSelf:"center",width:e.components.timePicker?.handleWidth??36,height:e.components.timePicker?.handleHeight??4,borderRadius:e.radius.full,..._corners.smoothCorners,backgroundColor:e.colors.border.secondary,marginBottom:e.spacing.sm},title:{textAlign:"center",fontSize:e.typography.fontSize.lg,fontWeight:e.typography.fontWeight.semibold,color:e.colors.text.primary,marginBottom:e.spacing.sm},summaryWrap:{alignItems:"center",marginBottom:e.spacing.md},summary:{fontSize:e.typography.fontSize["2xl"],fontWeight:e.typography.fontWeight.bold,color:e.colors.primary,letterSpacing:e.typography.letterSpacing.wide},wheelsRow:{flexDirection:"row",alignItems:"center",justifyContent:"center",height:200,position:"relative",marginBottom:e.spacing.lg},selectionBand:{position:"absolute",left:0,right:0,top:40*CENTER_OFFSET,height:40,justifyContent:"space-between"},bandLine:{height:2*_reactNative.StyleSheet.hairlineWidth,backgroundColor:e.colors.primary,opacity:.85},bandLineBottom:{},separator:{fontSize:e.typography.fontSize["2xl"],fontWeight:e.typography.fontWeight.bold,color:e.colors.text.primary,paddingHorizontal:e.spacing.xs},spacer:{width:e.spacing.md},footer:{flexDirection:"row",justifyContent:"flex-end",alignItems:"center",gap:e.spacing.sm},footerBtn:{paddingHorizontal:e.spacing.lg}})};var _default=exports.default=TimePicker;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.TimePicker=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useDragToDismiss=require("../../hooks/useDragToDismiss.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_Button=_interopRequireDefault(require("../Button/Button.js")),_PickerTrigger=require("../PickerTrigger/PickerTrigger.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_index2=require("../WheelPicker/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const range=(e,t,i=1)=>{const a=[];for(let r=e;r<=t;r+=i)a.push(r);return a},pad2=e=>e.toString().padStart(2,"0"),to24h=(e,t,i)=>"24h"===i?e:"AM"===t?12===e?0:e:12===e?12:e+12,from24h=(e,t)=>"24h"===t?{displayHour:e,period:"AM"}:0===e?{displayHour:12,period:"AM"}:12===e?{displayHour:12,period:"PM"}:e>12?{displayHour:e-12,period:"PM"}:{displayHour:e,period:"AM"},clampMinuteToStep=(e,t)=>{const i=Math.round(e/t)*t;return Math.min(59,Math.max(0,i))},TimePicker=e=>{const{visible:t,value:i,onChange:a,onClose:r,format:s="12h",minuteStep:n=1,title:o="Select Time",confirmLabel:l="Confirm",cancelLabel:c="Cancel",testID:u,style:d,containerStyle:m,headerLabelStyle:p,footerButtonStyle:g,label:h,placeholder:_,helperText:x,error:f,required:v,disabled:y,size:b,variant:j,clearable:N,onClear:M,formatValue:k,triggerStyle:R,haptic:S}=e,T=void 0!==e.visible,[D,P]=(0,_react.useState)(!1),C=T?t:D,w=T?u:u?`${u}-modal`:void 0,H=(0,_index.useTheme)(),A=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),q=(0,_react.useMemo)(()=>buildStyles(H),[H]),V=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,B=(0,_react.useRef)((0,_index.createAnimatedValue)(40)).current,$=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,I=(0,_react.useRef)(0),L=(0,_react.useCallback)(()=>{T?r?.():P(!1)},[T,r]),O=(0,_react.useCallback)(()=>{_reactNative.Animated.parallel([_reactNative.Animated.timing(V,{toValue:0,duration:H.motion.duration.fast,easing:_reactNative.Easing.bezier(...H.motion.easing.accelerate),useNativeDriver:!1}),_reactNative.Animated.timing(B,{toValue:40,duration:H.motion.duration.fast,easing:_reactNative.Easing.bezier(...H.motion.easing.accelerate),useNativeDriver:!0})]).start(()=>L())},[L,V,B,H.motion.duration.fast,H.motion.easing.accelerate]),{handleGesture:z}=(0,_useDragToDismiss.useDragToDismiss)({drag:$,travel:()=>I.current||320,onDismiss:O}),W=(0,_react.useMemo)(()=>"24h"===s?range(0,23):range(1,12),[s]),F=(0,_react.useMemo)(()=>range(0,59,n),[n]),E=(0,_react.useMemo)(()=>["AM","PM"],[]),G=(0,_react.useMemo)(()=>{const e=i&&Number.isFinite(i.hour)?i.hour:(new Date).getHours(),t=i&&Number.isFinite(i.minute)?i.minute:(new Date).getMinutes(),a=clampMinuteToStep(t,n),{displayHour:r,period:o}=from24h(e,s);return{displayHour:r,minute:a,period:o,hour24:e}},[i,s,n]),[U,Y]=(0,_react.useState)(()=>{const e=W.indexOf(G.displayHour);return e>=0?e:0}),[J,K]=(0,_react.useState)(()=>{const e=F.indexOf(G.minute);return e>=0?e:0}),[Q,X]=(0,_react.useState)(()=>"PM"===G.period?1:0);(0,_react.useEffect)(()=>{if(!C)return;const e=i&&Number.isFinite(i.hour)?i.hour:(new Date).getHours(),t=i&&Number.isFinite(i.minute)?i.minute:(new Date).getMinutes(),a=clampMinuteToStep(t,n),{displayHour:r,period:o}=from24h(e,s),l=W.indexOf(r);Y(l>=0?l:0);const c=F.indexOf(a);K(c>=0?c:0),X("PM"===o?1:0)},[C,i,s,n,W,F]),(0,_react.useEffect)(()=>{let e;return C?(e=_reactNative.Animated.parallel([_reactNative.Animated.timing(V,{toValue:1,duration:H.motion.duration.normal,easing:_reactNative.Easing.out(_reactNative.Easing.cubic),useNativeDriver:!1}),_reactNative.Animated.spring(B,{toValue:0,damping:H.motion.spring.snappy.damping,stiffness:H.motion.spring.snappy.stiffness,mass:H.motion.spring.snappy.mass,useNativeDriver:!0})]),e.start()):(V.setValue(0),(0,_index.setNativeValue)(B,40),(0,_index.setNativeValue)($,0)),()=>e?.stop()},[C,V,B,$,H.motion]);const Z=(0,_react.useCallback)((e,t)=>{"hour"===e?Y(Math.max(0,W.indexOf(Number(t)))):"minute"===e?K(Math.max(0,F.indexOf(Number(t)))):X("PM"===t?1:0)},[W,F]),ee=(0,_react.useCallback)(()=>{!1!==S&&(0,_hapticUtils.triggerHaptic)("selection"),O()},[O,S]),te=(0,_react.useCallback)(()=>{const e=W[U]??0,t=E[Q]??"AM",i=to24h(e,t,s),r=F[J]??0;!1!==S&&(0,_hapticUtils.triggerHaptic)("notificationSuccess"),a?.({hour:i,minute:r}),O()},[W,U,E,Q,F,J,s,a,O,S]),ie=(0,_react.useMemo)(()=>{const e=W[U]??0,t=F[J]??0;if("24h"===s)return`${pad2(e)}:${pad2(t)}`;const i=E[Q]??"AM";return`${pad2(e)}:${pad2(t)} ${i}`},[W,U,F,J,E,Q,s]),ae=(0,_react.useMemo)(()=>W.map(e=>({value:e,label:pad2(e),accessibilityLabel:`Hour ${e}`})),[W]),re=(0,_react.useMemo)(()=>F.map(e=>({value:e,label:pad2(e),accessibilityLabel:`${e} minutes`})),[F]),se=(0,_react.useMemo)(()=>E.map(e=>({value:e,label:e})),[E]),ne=(0,_react.useMemo)(()=>{const e=[{key:"hour",label:"Hour",items:ae,value:W[U]??0,separator:":",testID:"time-picker-hour"},{key:"minute",label:"Minute",items:re,value:F[J]??0,gapAfter:"12h"===s?H.spacing.md:void 0,testID:"time-picker-minute"}];return"12h"===s&&e.push({key:"period",label:"Period",items:se,value:E[Q]??"AM",testID:"time-picker-period"}),e},[ae,re,se,W,U,F,J,E,Q,s,H.spacing.md]),oe=(0,_react.useCallback)(e=>{if("24h"===s)return`${pad2(e.hour)}:${pad2(e.minute)}`;const{displayHour:t,period:i}=from24h(e.hour,"12h");return`${t}:${pad2(e.minute)} ${i}`},[s]),le=!T&&i&&Number.isFinite(i.hour)&&Number.isFinite(i.minute)?(k??oe)(i):void 0,ce=(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:C,transparent:!0,statusBarTranslucent:!0,navigationBarTranslucent:!0,animationType:"none",onRequestClose:O,testID:w,children:(0,_jsxRuntime.jsxs)(_reactNativeGestureHandler.GestureHandlerRootView,{collapsable:!1,style:q.backdrop,children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:O,accessibilityLabel:"Close time picker",accessibilityRole:"button"}),(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[q.sheet,{paddingBottom:Math.max(A.bottom,H.spacing.lg),transform:[{translateY:_reactNative.Animated.add(B,$)}]},d,m],onLayout:e=>{I.current=e.nativeEvent.layout.height},accessibilityViewIsModal:!0,accessible:!0,accessibilityRole:"none",accessibilityLabel:o,children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:z,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:q.handle}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[q.title,p],accessibilityRole:"header",children:o})]})}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:q.summaryWrap,accessibilityLiveRegion:"polite",accessibilityLabel:`Selected ${ie}`,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:q.summary,children:ie})}),(0,_jsxRuntime.jsx)(_index2.WheelPicker,{columns:ne,onChange:Z,haptic:S,style:q.wheels}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:q.footer,children:[(0,_jsxRuntime.jsx)(_Button.default,{title:c,haptic:!1,variant:"ghost",tone:"neutral",onPress:ee,style:[q.footerBtn,g],accessibilityHint:"Dismiss without changes",testID:"time-picker-cancel"}),(0,_jsxRuntime.jsx)(_Button.default,{title:l,variant:"solid",tone:"primary",haptic:!1,onPress:te,style:[q.footerBtn,g],accessibilityHint:"Confirm selected time",testID:"time-picker-confirm"})]})]}),(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})});return T?ce:(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_PickerTrigger.PickerTrigger,{label:h,placeholder:_,helperText:x,error:f,required:v,disabled:y,size:b,variant:j,clearable:N,onClear:M,value:le,onPress:()=>P(!0),triggerStyle:R,testID:u}),ce]})};exports.TimePicker=TimePicker;const buildStyles=e=>{const t=e.shadows.xl;return _reactNative.StyleSheet.create({backdrop:{flex:1,backgroundColor:e.colors.background.overlay,justifyContent:"flex-end"},sheet:{backgroundColor:e.colors.background.elevated,borderTopLeftRadius:e.radius.xl,borderTopRightRadius:e.radius.xl,..._corners.smoothCorners,paddingTop:e.spacing.sm,paddingHorizontal:e.spacing.lg,paddingBottom:e.spacing.xl,shadowColor:t.shadowColor,shadowOffset:t.shadowOffset,shadowOpacity:t.shadowOpacity,shadowRadius:t.shadowRadius,elevation:t.elevation},handle:{alignSelf:"center",width:e.components.timePicker?.handleWidth??36,height:e.components.timePicker?.handleHeight??4,borderRadius:e.radius.full,..._corners.smoothCorners,backgroundColor:e.colors.border.secondary,marginBottom:e.spacing.sm},title:{textAlign:"center",fontSize:e.typography.fontSize.lg,fontWeight:e.typography.fontWeight.semibold,color:e.colors.text.primary,marginBottom:e.spacing.sm},summaryWrap:{alignItems:"center",marginBottom:e.spacing.md},summary:{fontSize:e.typography.fontSize["2xl"],fontWeight:e.typography.fontWeight.bold,color:e.colors.primary,letterSpacing:e.typography.letterSpacing.wide},wheels:{marginBottom:e.spacing.lg},footer:{flexDirection:"row",justifyContent:"flex-end",alignItems:"center",gap:e.spacing.sm},footerBtn:{paddingHorizontal:e.spacing.lg}})};var _default=exports.default=TimePicker;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Toast=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_SWIPE_DISMISS_THRESHOLD=80,DEFAULT_SWIPE_VELOCITY_THRESHOLD=.5,DEFAULT_STACK_OFFSET=8,DEFAULT_STACK_SCALE_STEP=.04,DEFAULT_AUTO_DISMISS_MS=3e3,Toast=({toast:e,index:t,onDismiss:i,shownAt:a})=>{const r=(0,_index.useTheme)(),n=e.variant??"default",s=e.position??"bottom",o=(0,_react.useMemo)(()=>buildStyles(r),[r]),c=(0,_react.useMemo)(()=>tintFor(r,n),[r,n]),l=(0,_react.useMemo)(()=>inkFor(r,n),[r,n]),d=r.components.toast,u=d?.iconCircleSize??28,m=d?.iconCircleBorderRadius??14,p=d?.iconGlyphFontSize??16,_=d?.tintBarWidth??0,g=d?.swipeDismissThreshold??80,f=d?.swipeVelocityThreshold??.5,v=d?.stackOffset??8,x=d?.stackScaleStep??.04,h=d?.stackMinScale??.9,y=d?.defaultDurationMs??3e3,N=d?.enableSwipeDismiss??!0,S=d?.enterSpringDamping??18,b=d?.enterSpringStiffness??180,R=d?.enterSpringMass??1,T="top"===s?-120:120,A=(0,_react.useRef)((0,_index.createAnimatedValue)(T)).current,w=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,D=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,j=(0,_react.useRef)(!1),V="top"===s?t*v:-t*v,M=Math.max(1-t*x,h),C=(0,_react.useRef)((0,_index.createAnimatedValue)(V)).current;(0,_react.useEffect)(()=>{(0,_index.setNativeValue)(C,V)},[V,C]);const E=(0,_react.useMemo)(()=>_reactNative.Animated.add(A,C),[A,C]),dismiss=()=>{j.current||(j.current=!0,_reactNative.Animated.parallel([_reactNative.Animated.timing(D,{toValue:0,duration:r.motion.duration.fast,easing:_reactNative.Easing.bezier(...r.motion.easing.accelerate),useNativeDriver:!0}),_reactNative.Animated.timing(A,{toValue:T,duration:r.motion.duration.fast,easing:_reactNative.Easing.bezier(...r.motion.easing.accelerate),useNativeDriver:!0})]).start(()=>i(e.id)))};(0,_react.useEffect)(()=>{const t=_reactNative.Animated.parallel([_reactNative.Animated.spring(A,{toValue:0,damping:S,stiffness:b,mass:R,useNativeDriver:!0}),_reactNative.Animated.timing(D,{toValue:1,duration:r.motion.duration.fast,useNativeDriver:!0})]);t.start();const i=e.duration??y;if(i>0){const e=void 0===a?0:Date.now()-a,r=setTimeout(()=>dismiss(),Math.max(i-e,0));return()=>{t.stop(),clearTimeout(r)}}return()=>t.stop()},[]);const L=(0,_react.useMemo)(()=>_reactNative.PanResponder.create({onMoveShouldSetPanResponder:(e,t)=>Math.abs(t.dx)>Math.abs(t.dy)&&Math.abs(t.dx)>6,onPanResponderMove:(e,t)=>{(0,_index.setNativeValue)(w,t.dx);const i=1-.7*Math.min(Math.abs(t.dx)/200,1);(0,_index.setNativeValue)(D,i)},onPanResponderTerminate:()=>{_reactNative.Animated.parallel([_reactNative.Animated.spring(w,{toValue:0,damping:r.motion.spring.snappy.damping,stiffness:r.motion.spring.snappy.stiffness,mass:r.motion.spring.snappy.mass,useNativeDriver:!0}),_reactNative.Animated.timing(D,{toValue:1,duration:r.motion.duration.fast,useNativeDriver:!0})]).start()},onPanResponderRelease:(t,a)=>{if(Math.abs(a.dx)>g||Math.abs(a.vx)>f){const t=a.dx>=0?1:-1;_reactNative.Animated.parallel([_reactNative.Animated.timing(w,{toValue:500*t,duration:r.motion.duration.fast,useNativeDriver:!0}),_reactNative.Animated.timing(D,{toValue:0,duration:r.motion.duration.fast,useNativeDriver:!0})]).start(()=>{j.current=!0,i(e.id)})}else _reactNative.Animated.parallel([_reactNative.Animated.spring(w,{toValue:0,useNativeDriver:!0}),_reactNative.Animated.spring(D,{toValue:1,useNativeDriver:!0})]).start()}}),[w,D,g,f,r.motion.duration.fast,r.motion.spring.snappy.damping,r.motion.spring.snappy.stiffness,r.motion.spring.snappy.mass,i,e.id]),F=e.description?`${e.message}. ${e.description}`:e.message;return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{...N?L.panHandlers:{},accessibilityRole:"alert",accessibilityLiveRegion:"assertive",accessibilityLabel:F,testID:e.testID,style:[o.container,{backgroundColor:r.colors.background.elevated,borderRadius:r.radius.lg,..._corners.smoothCorners,padding:r.spacing.md,...r.shadows.md,shadowColor:r.shadows.md.shadowColor,opacity:D,transform:[{translateY:E},{translateX:w},{scale:M}]},e.style,e.containerStyle],children:[_>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[o.tintBar,{width:_,backgroundColor:c}]}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:o.row,children:[(()=>{if(e.icon)return e.icon;const t=defaultGlyph(n);return t?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[o.iconCircle,{width:u,height:u,borderRadius:m,..._corners.smoothCorners,backgroundColor:c+"22"},e.iconCircleStyle],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[o.iconGlyph,{color:l,fontSize:p}],accessible:!1,children:t})}):null})(),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:o.textBlock,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[o.message,{color:r.colors.text.primary,fontSize:r.typography.fontSize.base,...(0,_index.fontFor)(r,"semibold")},e.textStyle,e.messageStyle],numberOfLines:2,children:e.message}),e.description?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[o.description,{color:r.colors.text.secondary,fontSize:r.typography.fontSize.sm}],numberOfLines:3,children:e.description}):null]}),e.action?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{accessibilityRole:"button",accessibilityLabel:e.action.label,onPress:()=>{e.action?.onPress(),dismiss()},style:({pressed:t})=>[o.actionBtn,{backgroundColor:t?r.colors.surface.pressed:"transparent"},e.actionButtonStyle],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:c,fontSize:r.typography.fontSize.sm,...(0,_index.fontFor)(r,"semibold")},numberOfLines:1,children:e.action.label})}):null]})]})};exports.Toast=Toast;const tintFor=(e,t)=>{switch(t){case"success":return e.colors.success;case"error":return e.colors.error;case"warning":return e.colors.warning;case"info":return e.colors.info;default:return e.colors.text.primary}},inkFor=(e,t)=>{switch(t){case"success":return e.colors.toneText.success;case"error":return e.colors.toneText.error;case"warning":return e.colors.toneText.warning;case"info":return e.colors.toneText.info;default:return e.colors.text.primary}},defaultGlyph=e=>{switch(e){case"success":return"✓";case"error":return"×";case"warning":return"!";case"info":return"i";default:return""}},buildStyles=e=>_reactNative.StyleSheet.create({container:{overflow:"hidden",marginVertical:4},tintBar:{position:"absolute",left:0,top:0,bottom:0},row:{flexDirection:"row",alignItems:"center",paddingLeft:8},iconCircle:{alignItems:"center",justifyContent:"center",marginRight:12},iconGlyph:{fontWeight:"700",lineHeight:18},textBlock:{flex:1,paddingRight:8},message:{lineHeight:20},description:{marginTop:2,lineHeight:18},actionBtn:{paddingHorizontal:10,paddingVertical:6,borderRadius:8,..._corners.smoothCorners,marginLeft:8}});var _default=exports.default=Toast;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Toast=void 0;var _react=require("react"),_reactNative=require("react-native"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_SWIPE_DISMISS_THRESHOLD=80,DEFAULT_SWIPE_VELOCITY_THRESHOLD=.5,DEFAULT_STACK_OFFSET=8,DEFAULT_STACK_SCALE_STEP=.04,DEFAULT_AUTO_DISMISS_MS=3e3,WEB_ACTION_MIN_DURATION_MS=8e3,COUNTDOWN_BAR_HEIGHT=3,ACTION_HIT_SLOP={top:8,bottom:8,left:8,right:8},DISMISS_ACTIONS=[{name:"dismiss",label:"Dismiss"}],Toast=({toast:e,index:t,onDismiss:i,shownAt:a,runtime:n})=>{const r=(0,_index.useTheme)(),s=e.variant??"default",o=e.position??"bottom",c=(0,_react.useMemo)(()=>buildStyles(r),[r]),l=(0,_react.useMemo)(()=>tintFor(r,s),[r,s]),u=(0,_react.useMemo)(()=>inkFor(r,s),[r,s]),d=r.components.toast,m=d?.iconCircleSize??28,_=d?.iconCircleBorderRadius??14,p=d?.iconGlyphFontSize??16,g=d?.tintBarWidth??0,v=d?.swipeDismissThreshold??80,h=d?.swipeVelocityThreshold??.5,f=d?.stackOffset??8,x=d?.stackScaleStep??.04,N=d?.stackMinScale??.9,b=d?.defaultDurationMs??3e3,S=d?.enableSwipeDismiss??!0,y=d?.enterSpringDamping??18,A=d?.enterSpringStiffness??180,R=d?.enterSpringMass??1,w="top"===o?-120:120,T=(0,_react.useRef)((0,_index.createAnimatedValue)(w)).current,M=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,D=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,C=(0,_react.useRef)(!1),j="top"===o?t*f:-t*f,V=Math.max(1-t*x,N),E=(0,_react.useRef)((0,_index.createAnimatedValue)(j)).current;(0,_react.useEffect)(()=>{(0,_index.setNativeValue)(E,j)},[j,E]);const I=(0,_react.useMemo)(()=>_reactNative.Animated.add(T,E),[T,E]),k=(0,_useReducedMotion.useReducedMotion)(),O=void 0!==e.action,L=e.duration??b,P=L>0&&O&&"web"===_reactNative.Platform.OS?Math.max(L,8e3):L,F=P<=0||O&&!0===n?.screenReaderOn,B=!0===e.countdown&&!F,H=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current,z=(0,_react.useRef)({initialised:!1,timer:null,remaining:0,startedAt:0}),U=(0,_react.useRef)({touch:!1,pan:!1,hover:!1}),G=(0,_react.useRef)(()=>{}),q=(0,_react.useRef)({id:e.id,totalMs:P,shownAt:a,runtime:n,persistent:F,animateBar:!1});q.current={id:e.id,totalMs:P,shownAt:a,runtime:n,persistent:F,animateBar:B&&!k};const W=(0,_react.useCallback)(()=>{const e=z.current,t=q.current,i=U.current;if(!e.initialised){e.initialised=!0;const i=t.runtime?.readRemaining(t.id),a=void 0===t.shownAt?0:Date.now()-t.shownAt;e.remaining=i??(t.totalMs>0?Math.max(t.totalMs-a,0):0),t.totalMs>0&&e.remaining<t.totalMs&&(0,_index.setNativeValue)(H,e.remaining/t.totalMs)}const a=!(t.persistent||C.current||i.touch||i.pan||i.hover);a&&null===e.timer?(e.startedAt=Date.now(),e.timer=setTimeout(()=>{e.timer=null,e.remaining=0,G.current()},e.remaining),t.animateBar&&_reactNative.Animated.timing(H,{toValue:0,duration:e.remaining,easing:_reactNative.Easing.linear,useNativeDriver:!0}).start()):a||null===e.timer||(clearTimeout(e.timer),e.timer=null,e.remaining=Math.max(e.remaining-(Date.now()-e.startedAt),0),H.stopAnimation())},[H]),dismiss=()=>{C.current||(C.current=!0,W(),_reactNative.Animated.parallel([_reactNative.Animated.timing(D,{toValue:0,duration:r.motion.duration.fast,easing:_reactNative.Easing.bezier(...r.motion.easing.accelerate),useNativeDriver:!0}),_reactNative.Animated.timing(T,{toValue:w,duration:r.motion.duration.fast,easing:_reactNative.Easing.bezier(...r.motion.easing.accelerate),useNativeDriver:!0})]).start(()=>i(e.id)))};G.current=dismiss,(0,_react.useEffect)(()=>{const e=_reactNative.Animated.parallel([_reactNative.Animated.spring(T,{toValue:0,damping:y,stiffness:A,mass:R,useNativeDriver:!0}),_reactNative.Animated.timing(D,{toValue:1,duration:r.motion.duration.fast,useNativeDriver:!0})]);return e.start(),()=>e.stop()},[]),(0,_react.useEffect)(()=>{W()},[F,W]),(0,_react.useEffect)(()=>()=>{const e=z.current,t=q.current;null!==e.timer&&(clearTimeout(e.timer),e.timer=null,e.remaining=Math.max(e.remaining-(Date.now()-e.startedAt),0)),H.stopAnimation(),e.initialised&&t.totalMs>0&&!C.current&&t.runtime?.writeRemaining(t.id,e.remaining)},[H]);const $=(0,_react.useCallback)((e,t)=>{U.current[e]=t,W()},[W]),K=(0,_react.useCallback)(()=>$("touch",!0),[$]),X=(0,_react.useCallback)(e=>$("touch",(e.nativeEvent.touches?.length??0)>0),[$]),Y=(0,_react.useCallback)(()=>$("hover",!0),[$]),J=(0,_react.useCallback)(()=>$("hover",!1),[$]),Q=(0,_react.useMemo)(()=>_reactNative.PanResponder.create({onMoveShouldSetPanResponder:(e,t)=>Math.abs(t.dx)>Math.abs(t.dy)&&Math.abs(t.dx)>6,onPanResponderGrant:()=>$("pan",!0),onPanResponderMove:(e,t)=>{(0,_index.setNativeValue)(M,t.dx);const i=1-.7*Math.min(Math.abs(t.dx)/200,1);(0,_index.setNativeValue)(D,i)},onPanResponderTerminate:()=>{$("pan",!1),_reactNative.Animated.parallel([_reactNative.Animated.spring(M,{toValue:0,damping:r.motion.spring.snappy.damping,stiffness:r.motion.spring.snappy.stiffness,mass:r.motion.spring.snappy.mass,useNativeDriver:!0}),_reactNative.Animated.timing(D,{toValue:1,duration:r.motion.duration.fast,useNativeDriver:!0})]).start()},onPanResponderRelease:(t,a)=>{if(Math.abs(a.dx)>v||Math.abs(a.vx)>h){const t=a.dx>=0?1:-1;C.current=!0,$("pan",!1),_reactNative.Animated.parallel([_reactNative.Animated.timing(M,{toValue:500*t,duration:r.motion.duration.fast,useNativeDriver:!0}),_reactNative.Animated.timing(D,{toValue:0,duration:r.motion.duration.fast,useNativeDriver:!0})]).start(()=>i(e.id))}else $("pan",!1),_reactNative.Animated.parallel([_reactNative.Animated.spring(M,{toValue:0,useNativeDriver:!0}),_reactNative.Animated.spring(D,{toValue:1,useNativeDriver:!0})]).start()}}),[M,D,$,v,h,r.motion.duration.fast,r.motion.spring.snappy.damping,r.motion.spring.snappy.stiffness,r.motion.spring.snappy.mass,i,e.id]),Z={accessibilityActions:DISMISS_ACTIONS,onAccessibilityAction:e=>{"dismiss"===e.nativeEvent.actionName&&dismiss()}},[ee,te]=(0,_react.useState)(0),ie=(0,_react.useMemo)(()=>H.interpolate({inputRange:[0,1],outputRange:[-ee,0]}),[H,ee]),ae=e.description?`${e.message}. ${e.description}`:e.message,ne=e.action&&B?`${e.action.label}, ${Math.ceil(P/1e3)} seconds`:e.action?.label;return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{...S?Q.panHandlers:{},...O?{}:{accessible:!0,...Z},..."web"===_reactNative.Platform.OS?{onPointerEnter:Y,onPointerLeave:J}:{},onTouchStart:K,onTouchEnd:X,onTouchCancel:X,accessibilityLabel:ae,testID:e.testID,style:[c.container,{backgroundColor:r.colors.background.elevated,borderRadius:r.radius.lg,..._corners.smoothCorners,padding:r.spacing.md,...r.shadows.md,shadowColor:r.shadows.md.shadowColor,opacity:D,transform:[{translateY:I},{translateX:M},{scale:V}]},e.style,e.containerStyle],children:[g>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[c.tintBar,{width:g,backgroundColor:l}]}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:c.row,children:[(()=>{if(e.icon)return e.icon;const t=defaultGlyph(s);return t?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[c.iconCircle,{width:m,height:m,borderRadius:_,..._corners.smoothCorners,backgroundColor:l+"22"},e.iconCircleStyle],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[c.iconGlyph,{color:u,fontSize:p}],accessible:!1,children:t})}):null})(),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:c.textBlock,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[c.message,{color:r.colors.text.primary,fontSize:r.typography.fontSize.base,...(0,_index.fontFor)(r,"semibold")},e.textStyle,e.messageStyle],numberOfLines:2,children:e.message}),e.description?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[c.description,{color:r.colors.text.secondary,fontSize:r.typography.fontSize.sm}],numberOfLines:3,children:e.description}):null]}),e.action?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{accessibilityRole:"button",accessibilityLabel:ne,hitSlop:ACTION_HIT_SLOP,...Z,onPress:()=>{e.action?.onPress(),dismiss()},style:({pressed:t})=>[c.actionBtn,{backgroundColor:t?r.colors.surface.pressed:"transparent"},e.actionButtonStyle],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:l,fontSize:r.typography.fontSize.sm,...(0,_index.fontFor)(r,"semibold")},numberOfLines:1,children:e.action.label})}):null]}),B?(0,_jsxRuntime.jsxs)(_reactNative.View,{pointerEvents:"none",accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",onLayout:e=>te(e.nativeEvent.layout.width),testID:"toast-countdown",style:[c.countdownTrack,{backgroundColor:l+"22"}],children:[k?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[c.countdownFill,{backgroundColor:l}]}):null,!k&&ee>0?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[c.countdownFill,{backgroundColor:l,transform:[{translateX:ie}]}]}):null]}):null]})};exports.Toast=Toast;const tintFor=(e,t)=>{switch(t){case"success":return e.colors.success;case"error":return e.colors.error;case"warning":return e.colors.warning;case"info":return e.colors.info;default:return e.colors.text.primary}},inkFor=(e,t)=>{switch(t){case"success":return e.colors.toneText.success;case"error":return e.colors.toneText.error;case"warning":return e.colors.toneText.warning;case"info":return e.colors.toneText.info;default:return e.colors.text.primary}},defaultGlyph=e=>{switch(e){case"success":return"✓";case"error":return"×";case"warning":return"!";case"info":return"i";default:return""}},buildStyles=e=>_reactNative.StyleSheet.create({container:{overflow:"hidden",marginVertical:4},tintBar:{position:"absolute",left:0,top:0,bottom:0},row:{flexDirection:"row",alignItems:"center",paddingLeft:8},iconCircle:{alignItems:"center",justifyContent:"center",marginRight:12},iconGlyph:{fontWeight:"700",lineHeight:18},textBlock:{flex:1,paddingRight:8},message:{lineHeight:20},description:{marginTop:2,lineHeight:18},countdownTrack:{position:"absolute",left:0,right:0,bottom:0,height:3,overflow:"hidden"},countdownFill:{position:"absolute",left:0,right:0,top:0,bottom:0},actionBtn:{paddingHorizontal:10,paddingVertical:6,borderRadius:8,..._corners.smoothCorners,marginLeft:8}});var _default=exports.default=Toast;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useToast=exports.toast=exports.ToastProvider=exports.ToastHost=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_index=require("../../theme/index.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_Toast=_interopRequireDefault(require("./Toast.js")),_jsxRuntime=require("react/jsx-runtime");function _interopRequireDefault(t){return t&&t.__esModule?t:{default:t}}const MAX_VISIBLE=3,ToastContext=(0,_react.createContext)(null),ToastHostContext=(0,_react.createContext)(null);let nextId=0;const makeId=()=>(nextId+=1,`toast-${Date.now().toString(36)}-${nextId.toString(36)}`),defaultHaptic=t=>{switch(t){case"error":return"notificationError";case"success":return"notificationSuccess";case"warning":return"notificationWarning";default:return"selection"}},resolveHaptics=(t,e)=>{if(!1===t)return!1;const o=t?.[e??"default"];return void 0===o?defaultHaptic(e):o};let nextHostId=0;const makeHostId=()=>(nextHostId+=1,nextHostId);let providerCount=0,activeApi=null;const setActiveApi=t=>{activeApi=t},getActiveApi=()=>activeApi,ToastProvider=({children:t,maxVisible:e=3,topOffset:o,bottomOffset:s,defaultDuration:r,haptics:a})=>{const i=(0,_react.useRef)({defaultDuration:r,haptics:a});i.current={defaultDuration:r,haptics:a};const[n,u]=(0,_react.useState)([]),[c,l]=(0,_react.useState)([]),d=(0,_react.useCallback)(t=>{u(e=>e.filter(e=>e.id!==t))},[]),p=(0,_react.useCallback)(()=>{u([])},[]),_=(0,_react.useCallback)(t=>{const o=makeId(),{defaultDuration:s,haptics:r}=i.current,a={...t,duration:t.duration??s,id:o,shownAt:Date.now()},n=void 0!==t.haptic?t.haptic:resolveHaptics(r,t.variant);return!1!==n&&(0,_hapticUtils.triggerHaptic)(n),u(t=>{const o=[...t,a];return o.length>e?o.slice(o.length-e):o}),o},[e]),f=(0,_react.useMemo)(()=>({show:_,hide:d,hideAll:p}),[_,d,p]);(0,_react.useEffect)(()=>(providerCount+=1,setActiveApi(f),()=>{providerCount-=1,providerCount<=0&&(providerCount=0,setActiveApi(null))}),[f]);const x=(0,_react.useCallback)(t=>{l(e=>[...e,t])},[]),m=(0,_react.useCallback)(t=>{l(e=>e.filter(e=>e!==t))},[]),v=c.length>0?c[c.length-1]:null,h=(0,_react.useMemo)(()=>({register:x,unregister:m,activeHostId:v,queue:n,hide:d,topOffset:o,bottomOffset:s}),[x,m,v,n,d,o,s]);return(0,_jsxRuntime.jsx)(ToastContext.Provider,{value:f,children:(0,_jsxRuntime.jsxs)(ToastHostContext.Provider,{value:h,children:[t,null===v?(0,_jsxRuntime.jsx)(ToastLayers,{queue:n,onDismiss:d,topOffset:o,bottomOffset:s}):null]})})};exports.ToastProvider=ToastProvider;let warnedHost=!1;const warnHostWithoutProvider=()=>{warnedHost||(warnedHost=!0,"undefined"!=typeof __DEV__&&__DEV__&&console.warn("[toast] <ToastHost /> rendered outside a <ToastProvider />; it renders nothing. Mount a provider near your app root."))},ToastHost=()=>{const t=(0,_react.useContext)(ToastHostContext),[e]=(0,_react.useState)(makeHostId),o=t?.register,s=t?.unregister;return(0,_react.useEffect)(()=>{if(o&&s)return o(e),()=>s(e);warnHostWithoutProvider()},[o,s,e]),t&&t.activeHostId===e?(0,_jsxRuntime.jsx)(ToastLayers,{queue:t.queue,onDismiss:t.hide,topOffset:t.topOffset,bottomOffset:t.bottomOffset}):null};exports.ToastHost=ToastHost;const ToastLayers=({queue:t,onDismiss:e,topOffset:o,bottomOffset:s})=>{const r=(0,_index.useTheme)(),a=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),i=(0,_react.useMemo)(()=>buildStyles(),[]),n=t.filter(t=>"top"===(t.position??"bottom")),u=t.filter(t=>"bottom"===(t.position??"bottom"));return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{testID:"toast-layer-top",pointerEvents:"box-none",style:[i.layer,i.top,{top:(o??a.top)+r.spacing.sm,paddingHorizontal:r.spacing.md}],children:n.map((t,o)=>(0,_jsxRuntime.jsx)(_Toast.default,{toast:t,index:n.length-1-o,shownAt:t.shownAt,onDismiss:e},t.id))}),(0,_jsxRuntime.jsx)(_reactNative.View,{testID:"toast-layer-bottom",pointerEvents:"box-none",style:[i.layer,i.bottom,{bottom:(s??a.bottom)+r.spacing.sm,paddingHorizontal:r.spacing.md}],children:u.map((t,o)=>(0,_jsxRuntime.jsx)(_Toast.default,{toast:t,index:u.length-1-o,shownAt:t.shownAt,onDismiss:e},t.id))})]})},useToast=()=>{const t=(0,_react.useContext)(ToastContext);if(!t)throw new Error("useToast must be used within a <ToastProvider>.");return t};exports.useToast=useToast;let warned=!1;const warnNoProvider=()=>{warned||(warned=!0,"undefined"!=typeof __DEV__&&__DEV__&&console.warn("[toast] No <ToastProvider /> mounted; toast() calls are no-ops. Mount a provider near your app root."))},proxy=t=>{const e=getActiveApi();return e?t(e):(warnNoProvider(),"")},toast=exports.toast={show:t=>proxy(e=>e.show(t)),success:(t,e)=>proxy(o=>o.show({...e,message:t,variant:"success"})),error:(t,e)=>proxy(o=>o.show({...e,message:t,variant:"error"})),warning:(t,e)=>proxy(o=>o.show({...e,message:t,variant:"warning"})),info:(t,e)=>proxy(o=>o.show({...e,message:t,variant:"info"})),hideAll:()=>{const t=getActiveApi();t?t.hideAll():warnNoProvider()}},buildStyles=()=>_reactNative.StyleSheet.create({layer:{position:"absolute",left:0,right:0},top:{alignItems:"stretch"},bottom:{alignItems:"stretch"}});
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useToast=exports.toast=exports.ToastProvider=exports.ToastHost=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_Toast=_interopRequireDefault(require("./Toast.js")),_jsxRuntime=require("react/jsx-runtime");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const MAX_VISIBLE=3,UNDO_DEFAULT_DURATION_MS=6e3,UNDO_MIN_DURATION_MS=6e3,ToastContext=(0,_react.createContext)(null),ToastHostContext=(0,_react.createContext)(null);let nextId=0;const makeId=()=>(nextId+=1,`toast-${Date.now().toString(36)}-${nextId.toString(36)}`),defaultHaptic=e=>{switch(e){case"error":return"notificationError";case"success":return"notificationSuccess";case"warning":return"notificationWarning";default:return"selection"}},resolveHaptics=(e,t)=>{if(!1===e)return!1;const r=e?.[t??"default"];return void 0===r?defaultHaptic(t):r};let nextHostId=0;const makeHostId=()=>(nextHostId+=1,nextHostId),useScreenReaderEnabled=()=>{const[e,t]=(0,_react.useState)(!1);return(0,_react.useEffect)(()=>{if("web"===_reactNative.Platform.OS)return;let e=!0;_reactNative.AccessibilityInfo.isScreenReaderEnabled().then(r=>{e&&t(r)});const r=_reactNative.AccessibilityInfo.addEventListener("screenReaderChanged",t);return()=>{e=!1,r.remove()}},[]),e};let providerCount=0,activeApi=null;const setActiveApi=e=>{activeApi=e},getActiveApi=()=>activeApi,ToastProvider=({children:e,maxVisible:t=3,topOffset:r,bottomOffset:o,defaultDuration:s,haptics:n})=>{const a=(0,_react.useRef)({defaultDuration:s,haptics:n});a.current={defaultDuration:s,haptics:n};const[i,u]=(0,_react.useState)([]),[c,d]=(0,_react.useState)([]),l=useScreenReaderEnabled(),p=(0,_react.useRef)(new Map),_=(0,_react.useRef)(new Map);(0,_react.useEffect)(()=>{const e=new Set(i.map(e=>e.id));for(const[t,r]of[...p.current])e.has(t)||(p.current.delete(t),r());for(const t of[..._.current.keys()])e.has(t)||_.current.delete(t)},[i]),(0,_react.useEffect)(()=>{const e=p.current;return()=>{for(const[t,r]of[...e])e.delete(t),r()}},[]);const f=(0,_react.useMemo)(()=>({screenReaderOn:l,readRemaining:e=>_.current.get(e),writeRemaining:(e,t)=>{_.current.set(e,t)}}),[l]),m=(0,_react.useCallback)(e=>{u(t=>t.filter(t=>t.id!==e))},[]),x=(0,_react.useCallback)(()=>{u([])},[]),v=(0,_react.useCallback)(e=>{const r=makeId(),{defaultDuration:o,haptics:s}=a.current,n={...e,duration:e.duration??o,id:r,shownAt:Date.now()},i=void 0!==e.haptic?e.haptic:resolveHaptics(s,e.variant);return!1!==i&&(0,_hapticUtils.triggerHaptic)(i),(0,_announce.announce)(e.description?`${e.message}. ${e.description}`:e.message,{polite:"error"!==e.variant}),u(r=>{const o=[...void 0===e.key?r:r.filter(t=>t.key!==e.key),n];return o.length>t?o.slice(o.length-t):o}),r},[t]),h=(0,_react.useCallback)((e,t)=>{const{onUndo:r,onCommit:o,undoLabel:s,duration:n,...a}=t,i={id:""},u=v({...a,message:e,duration:0===n?0:Math.max(n??6e3,6e3),countdown:!0,action:{label:s??"Undo",onPress:()=>{p.current.delete(i.id),r()}}});return i.id=u,o&&p.current.set(u,o),u},[v]),g=(0,_react.useMemo)(()=>({show:v,undo:h,hide:m,hideAll:x}),[v,h,m,x]);(0,_react.useEffect)(()=>(providerCount+=1,setActiveApi(g),()=>{providerCount-=1,providerCount<=0&&(providerCount=0,setActiveApi(null))}),[g]);const w=(0,_react.useCallback)(e=>{d(t=>[...t,e])},[]),b=(0,_react.useCallback)(e=>{d(t=>t.filter(t=>t!==e))},[]),T=c.length>0?c[c.length-1]:null,A=(0,_react.useMemo)(()=>({register:w,unregister:b,activeHostId:T,queue:i,hide:m,topOffset:r,bottomOffset:o,runtime:f}),[w,b,T,i,m,r,o,f]);return(0,_jsxRuntime.jsx)(ToastContext.Provider,{value:g,children:(0,_jsxRuntime.jsxs)(ToastHostContext.Provider,{value:A,children:[e,null===T?(0,_jsxRuntime.jsx)(ToastLayers,{queue:i,onDismiss:m,topOffset:r,bottomOffset:o,runtime:f}):null]})})};exports.ToastProvider=ToastProvider;let warnedHost=!1;const warnHostWithoutProvider=()=>{warnedHost||(warnedHost=!0,"undefined"!=typeof __DEV__&&__DEV__&&console.warn("[toast] <ToastHost /> rendered outside a <ToastProvider />; it renders nothing. Mount a provider near your app root."))},ToastHost=()=>{const e=(0,_react.useContext)(ToastHostContext),[t]=(0,_react.useState)(makeHostId),r=e?.register,o=e?.unregister;return(0,_react.useEffect)(()=>{if(r&&o)return r(t),()=>o(t);warnHostWithoutProvider()},[r,o,t]),e&&e.activeHostId===t?(0,_jsxRuntime.jsx)(ToastLayers,{queue:e.queue,onDismiss:e.hide,topOffset:e.topOffset,bottomOffset:e.bottomOffset,runtime:e.runtime}):null};exports.ToastHost=ToastHost;const ToastLayers=({queue:e,onDismiss:t,topOffset:r,bottomOffset:o,runtime:s})=>{const n=(0,_index.useTheme)(),a=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),i=(0,_react.useMemo)(()=>buildStyles(),[]),u=e.filter(e=>"top"===(e.position??"bottom")),c=e.filter(e=>"bottom"===(e.position??"bottom"));return(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{testID:"toast-layer-top",pointerEvents:"box-none",style:[i.layer,i.top,{top:(r??a.top)+n.spacing.sm,paddingHorizontal:n.spacing.md}],children:u.map((e,r)=>(0,_jsxRuntime.jsx)(_Toast.default,{toast:e,index:u.length-1-r,shownAt:e.shownAt,runtime:s,onDismiss:t},e.id))}),(0,_jsxRuntime.jsx)(_reactNative.View,{testID:"toast-layer-bottom",pointerEvents:"box-none",style:[i.layer,i.bottom,{bottom:(o??a.bottom)+n.spacing.sm,paddingHorizontal:n.spacing.md}],children:c.map((e,r)=>(0,_jsxRuntime.jsx)(_Toast.default,{toast:e,index:c.length-1-r,shownAt:e.shownAt,runtime:s,onDismiss:t},e.id))})]})},useToast=()=>{const e=(0,_react.useContext)(ToastContext);if(!e)throw new Error("useToast must be used within a <ToastProvider>.");return e};exports.useToast=useToast;let warned=!1;const warnNoProvider=()=>{warned||(warned=!0,"undefined"!=typeof __DEV__&&__DEV__&&console.warn("[toast] No <ToastProvider /> mounted; toast() calls are no-ops. Mount a provider near your app root."))},proxy=e=>{const t=getActiveApi();return t?e(t):(warnNoProvider(),"")},toast=exports.toast={show:e=>proxy(t=>t.show(e)),undo:(e,t)=>proxy(r=>r.undo(e,t)),success:(e,t)=>proxy(r=>r.show({...t,message:e,variant:"success"})),error:(e,t)=>proxy(r=>r.show({...t,message:e,variant:"error"})),warning:(e,t)=>proxy(r=>r.show({...t,message:e,variant:"warning"})),info:(e,t)=>proxy(r=>r.show({...t,message:e,variant:"info"})),hideAll:()=>{const e=getActiveApi();e?e.hideAll():warnNoProvider()}},buildStyles=()=>_reactNative.StyleSheet.create({layer:{position:"absolute",left:0,right:0},top:{alignItems:"stretch"},bottom:{alignItems:"stretch"}});
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.RichTooltipBody=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_index2=require("../Button/index.js"),_index3=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");const RichTooltipBody=({title:e,content:i,action:t,onAction:s,focusRef:r,actionRef:n,messageStyle:o})=>{const a=(0,_index.useTheme)(),c=(0,_react.useMemo)(()=>buildStyles(a),[a]);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:c.card,children:[e?(0,_jsxRuntime.jsx)(_index3.Text,{ref:r,variant:"label",weight:"semibold",accessibilityRole:"header",children:e}):null,"string"==typeof i?(0,_jsxRuntime.jsx)(_index3.Text,{ref:e?void 0:r,variant:"bodySmall",color:"secondary",style:o,children:i}):i,t?(0,_jsxRuntime.jsx)(_reactNative.View,{style:c.actions,children:(0,_jsxRuntime.jsx)(_index2.Button,{ref:n,title:t.label,variant:"ghost",size:"sm",accessibilityLabel:t.accessibilityLabel,onPress:s})}):null]})};exports.RichTooltipBody=RichTooltipBody;const buildStyles=e=>_reactNative.StyleSheet.create({card:{gap:e.spacing.xs,paddingHorizontal:e.spacing.md,paddingTop:e.spacing.md,paddingBottom:e.spacing.sm,backgroundColor:e.colors.background.elevated,borderRadius:e.radius.md,..._corners.smoothCorners,...e.shadows.lg},actions:{flexDirection:"row",justifyContent:"flex-end",marginTop:e.spacing.xs}});