@webority/mobile-ui 0.18.1 → 0.19.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 (215) hide show
  1. package/lib/commonjs/canvasKit/index.js +1 -1
  2. package/lib/commonjs/components/Accordion/Accordion.js +1 -1
  3. package/lib/commonjs/components/AppBar/AppBar.js +1 -1
  4. package/lib/commonjs/components/Avatar/Avatar.js +1 -1
  5. package/lib/commonjs/components/Badge/Badge.js +1 -1
  6. package/lib/commonjs/components/Banner/Banner.js +1 -1
  7. package/lib/commonjs/components/BarChart/BarChart.js +1 -1
  8. package/lib/commonjs/components/BottomNavigation/BottomNavigation.js +1 -1
  9. package/lib/commonjs/components/BottomSheet/BottomSheet.js +1 -1
  10. package/lib/commonjs/components/Box/Box.js +1 -1
  11. package/lib/commonjs/components/Button/Button.js +1 -1
  12. package/lib/commonjs/components/Calendar/calendarStyles.js +1 -1
  13. package/lib/commonjs/components/Card/Card.js +1 -1
  14. package/lib/commonjs/components/Carousel/Carousel.js +1 -1
  15. package/lib/commonjs/components/Checkbox/Checkbox.js +1 -1
  16. package/lib/commonjs/components/Chip/Chip.js +1 -1
  17. package/lib/commonjs/components/ChoiceGroup/ChoiceGroup.js +1 -1
  18. package/lib/commonjs/components/Composer/Composer.js +1 -1
  19. package/lib/commonjs/components/DatePicker/DatePicker.js +1 -1
  20. package/lib/commonjs/components/DateRangePicker/DateRangePicker.js +1 -1
  21. package/lib/commonjs/components/Descriptions/Descriptions.js +1 -1
  22. package/lib/commonjs/components/Dialog/Dialog.js +1 -1
  23. package/lib/commonjs/components/EmptyState/EmptyState.js +1 -1
  24. package/lib/commonjs/components/FieldBase/ChoiceText.js +1 -1
  25. package/lib/commonjs/components/FieldBase/FieldBase.js +1 -1
  26. package/lib/commonjs/components/FieldBase/index.js +1 -1
  27. package/lib/commonjs/components/FieldBase/useFloatingLabel.js +1 -1
  28. package/lib/commonjs/components/FilePicker/FilePicker.js +1 -1
  29. package/lib/commonjs/components/FloatingActionButton/FloatingActionButton.js +1 -1
  30. package/lib/commonjs/components/ImageGallery/ImageGallery.js +1 -1
  31. package/lib/commonjs/components/InlineSelect/InlineSelect.js +1 -1
  32. package/lib/commonjs/components/Input/Input.js +1 -1
  33. package/lib/commonjs/components/ListItem/ListItem.js +1 -1
  34. package/lib/commonjs/components/Markdown/Markdown.js +1 -1
  35. package/lib/commonjs/components/MessageBubble/MessageBubble.js +1 -1
  36. package/lib/commonjs/components/MessageList/MessageList.js +1 -1
  37. package/lib/commonjs/components/Modal/Modal.js +1 -1
  38. package/lib/commonjs/components/NumberInput/NumberInput.js +1 -1
  39. package/lib/commonjs/components/OTPInput/OTPInput.js +1 -1
  40. package/lib/commonjs/components/OptionSheet/OptionSheet.js +1 -1
  41. package/lib/commonjs/components/PaymentResult/PaymentResult.js +1 -1
  42. package/lib/commonjs/components/PhoneNumberInput/PhoneNumberInput.js +1 -1
  43. package/lib/commonjs/components/PickerTrigger/PickerTrigger.js +1 -1
  44. package/lib/commonjs/components/ProfileCompletion/ProfileCompletion.js +1 -1
  45. package/lib/commonjs/components/ProfilePicker/ProfilePicker.js +1 -1
  46. package/lib/commonjs/components/ProgressBar/ProgressBar.js +1 -1
  47. package/lib/commonjs/components/Radio/Radio.js +1 -1
  48. package/lib/commonjs/components/Radio/RadioDot.js +1 -1
  49. package/lib/commonjs/components/Rating/Rating.js +1 -1
  50. package/lib/commonjs/components/ScannerOverlay/ScannerOverlay.js +1 -1
  51. package/lib/commonjs/components/SearchBar/SearchBar.js +1 -1
  52. package/lib/commonjs/components/SegmentedControl/SegmentedControl.js +1 -1
  53. package/lib/commonjs/components/Select/Select.js +1 -1
  54. package/lib/commonjs/components/Skeleton/Skeleton.js +1 -1
  55. package/lib/commonjs/components/Skeleton/SkeletonContent.js +1 -1
  56. package/lib/commonjs/components/SlideToConfirm/SlideToConfirm.js +1 -1
  57. package/lib/commonjs/components/Slider/Slider.js +1 -1
  58. package/lib/commonjs/components/SliderField/SliderField.js +1 -1
  59. package/lib/commonjs/components/Spinner/Spinner.js +1 -1
  60. package/lib/commonjs/components/StatusBadge/StatusBadge.js +1 -1
  61. package/lib/commonjs/components/Stepper/Stepper.js +1 -1
  62. package/lib/commonjs/components/Swipeable/Swipeable.js +1 -1
  63. package/lib/commonjs/components/Switch/Switch.js +1 -1
  64. package/lib/commonjs/components/Tabs/Tabs.js +1 -1
  65. package/lib/commonjs/components/TagInput/TagInput.js +1 -1
  66. package/lib/commonjs/components/TimePicker/TimePicker.js +1 -1
  67. package/lib/commonjs/components/Timeline/Timeline.js +1 -1
  68. package/lib/commonjs/components/Toast/Toast.js +1 -1
  69. package/lib/commonjs/components/Tooltip/Tooltip.js +1 -1
  70. package/lib/commonjs/components/Tour/Tour.js +1 -1
  71. package/lib/commonjs/components/TypingIndicator/TypingIndicator.js +1 -1
  72. package/lib/commonjs/components/WheelPicker/Wheel.js +1 -1
  73. package/lib/commonjs/index.js +1 -1
  74. package/lib/commonjs/network/NetworkStatusBanner.js +1 -1
  75. package/lib/commonjs/theme/componentSizes.js +1 -0
  76. package/lib/commonjs/theme/componentTokens.js +1 -0
  77. package/lib/commonjs/theme/index.js +1 -1
  78. package/lib/commonjs/theme/merge.js +1 -1
  79. package/lib/commonjs/theme/retiredThemeKeys.js +1 -0
  80. package/lib/commonjs/theme/scale.js +1 -0
  81. package/lib/commonjs/theme/tokens.js +1 -1
  82. package/lib/commonjs/utils/index.js +1 -1
  83. package/lib/module/canvasKit/index.js +1 -1
  84. package/lib/module/components/Accordion/Accordion.js +1 -1
  85. package/lib/module/components/AppBar/AppBar.js +1 -1
  86. package/lib/module/components/Avatar/Avatar.js +1 -1
  87. package/lib/module/components/Badge/Badge.js +1 -1
  88. package/lib/module/components/Banner/Banner.js +1 -1
  89. package/lib/module/components/BarChart/BarChart.js +1 -1
  90. package/lib/module/components/BottomNavigation/BottomNavigation.js +1 -1
  91. package/lib/module/components/BottomSheet/BottomSheet.js +1 -1
  92. package/lib/module/components/Box/Box.js +1 -1
  93. package/lib/module/components/Button/Button.js +1 -1
  94. package/lib/module/components/Calendar/calendarStyles.js +1 -1
  95. package/lib/module/components/Card/Card.js +1 -1
  96. package/lib/module/components/Carousel/Carousel.js +1 -1
  97. package/lib/module/components/Checkbox/Checkbox.js +1 -1
  98. package/lib/module/components/Chip/Chip.js +1 -1
  99. package/lib/module/components/ChoiceGroup/ChoiceGroup.js +1 -1
  100. package/lib/module/components/Composer/Composer.js +1 -1
  101. package/lib/module/components/DatePicker/DatePicker.js +1 -1
  102. package/lib/module/components/DateRangePicker/DateRangePicker.js +1 -1
  103. package/lib/module/components/Descriptions/Descriptions.js +1 -1
  104. package/lib/module/components/Dialog/Dialog.js +1 -1
  105. package/lib/module/components/EmptyState/EmptyState.js +1 -1
  106. package/lib/module/components/FieldBase/ChoiceText.js +1 -1
  107. package/lib/module/components/FieldBase/FieldBase.js +1 -1
  108. package/lib/module/components/FieldBase/index.js +1 -1
  109. package/lib/module/components/FieldBase/useFloatingLabel.js +1 -1
  110. package/lib/module/components/FilePicker/FilePicker.js +1 -1
  111. package/lib/module/components/FloatingActionButton/FloatingActionButton.js +1 -1
  112. package/lib/module/components/ImageGallery/ImageGallery.js +1 -1
  113. package/lib/module/components/InlineSelect/InlineSelect.js +1 -1
  114. package/lib/module/components/Input/Input.js +1 -1
  115. package/lib/module/components/ListItem/ListItem.js +1 -1
  116. package/lib/module/components/Markdown/Markdown.js +1 -1
  117. package/lib/module/components/MessageBubble/MessageBubble.js +1 -1
  118. package/lib/module/components/MessageList/MessageList.js +1 -1
  119. package/lib/module/components/Modal/Modal.js +1 -1
  120. package/lib/module/components/NumberInput/NumberInput.js +1 -1
  121. package/lib/module/components/OTPInput/OTPInput.js +1 -1
  122. package/lib/module/components/OptionSheet/OptionSheet.js +1 -1
  123. package/lib/module/components/PaymentResult/PaymentResult.js +1 -1
  124. package/lib/module/components/PhoneNumberInput/PhoneNumberInput.js +1 -1
  125. package/lib/module/components/PickerTrigger/PickerTrigger.js +1 -1
  126. package/lib/module/components/ProfileCompletion/ProfileCompletion.js +1 -1
  127. package/lib/module/components/ProfilePicker/ProfilePicker.js +1 -1
  128. package/lib/module/components/ProgressBar/ProgressBar.js +1 -1
  129. package/lib/module/components/Radio/Radio.js +1 -1
  130. package/lib/module/components/Radio/RadioDot.js +1 -1
  131. package/lib/module/components/Rating/Rating.js +1 -1
  132. package/lib/module/components/ScannerOverlay/ScannerOverlay.js +1 -1
  133. package/lib/module/components/SearchBar/SearchBar.js +1 -1
  134. package/lib/module/components/SegmentedControl/SegmentedControl.js +1 -1
  135. package/lib/module/components/Select/Select.js +1 -1
  136. package/lib/module/components/Skeleton/Skeleton.js +1 -1
  137. package/lib/module/components/Skeleton/SkeletonContent.js +1 -1
  138. package/lib/module/components/SlideToConfirm/SlideToConfirm.js +1 -1
  139. package/lib/module/components/Slider/Slider.js +1 -1
  140. package/lib/module/components/SliderField/SliderField.js +1 -1
  141. package/lib/module/components/Spinner/Spinner.js +1 -1
  142. package/lib/module/components/StatusBadge/StatusBadge.js +1 -1
  143. package/lib/module/components/Stepper/Stepper.js +1 -1
  144. package/lib/module/components/Swipeable/Swipeable.js +1 -1
  145. package/lib/module/components/Switch/Switch.js +1 -1
  146. package/lib/module/components/Tabs/Tabs.js +1 -1
  147. package/lib/module/components/TagInput/TagInput.js +1 -1
  148. package/lib/module/components/TimePicker/TimePicker.js +1 -1
  149. package/lib/module/components/Timeline/Timeline.js +1 -1
  150. package/lib/module/components/Toast/Toast.js +1 -1
  151. package/lib/module/components/Tooltip/Tooltip.js +1 -1
  152. package/lib/module/components/Tour/Tour.js +1 -1
  153. package/lib/module/components/TypingIndicator/TypingIndicator.js +1 -1
  154. package/lib/module/components/WheelPicker/Wheel.js +1 -1
  155. package/lib/module/index.js +1 -1
  156. package/lib/module/network/NetworkStatusBanner.js +1 -1
  157. package/lib/module/theme/componentSizes.js +1 -0
  158. package/lib/module/theme/componentTokens.js +1 -0
  159. package/lib/module/theme/index.js +1 -1
  160. package/lib/module/theme/merge.js +1 -1
  161. package/lib/module/theme/retiredThemeKeys.js +1 -0
  162. package/lib/module/theme/scale.js +1 -0
  163. package/lib/module/theme/tokens.js +1 -1
  164. package/lib/module/utils/index.js +1 -1
  165. package/lib/typescript/commonjs/components/BottomNavigation/BottomNavigation.d.ts +6 -6
  166. package/lib/typescript/commonjs/components/Box/Box.d.ts +18 -20
  167. package/lib/typescript/commonjs/components/Calendar/calendarStyles.d.ts +1 -1
  168. package/lib/typescript/commonjs/components/Card/Card.d.ts +1 -1
  169. package/lib/typescript/commonjs/components/FieldBase/FieldBase.d.ts +2 -8
  170. package/lib/typescript/commonjs/components/FieldBase/index.d.ts +1 -1
  171. package/lib/typescript/commonjs/components/FieldBase/useFloatingLabel.d.ts +3 -2
  172. package/lib/typescript/commonjs/components/InlineSelect/InlineSelect.d.ts +1 -1
  173. package/lib/typescript/commonjs/components/Input/Input.d.ts +1 -1
  174. package/lib/typescript/commonjs/components/PhoneNumberInput/PhoneNumberInput.d.ts +1 -1
  175. package/lib/typescript/commonjs/components/SearchBar/SearchBar.d.ts +1 -1
  176. package/lib/typescript/commonjs/components/SegmentedControl/SegmentedControl.d.ts +1 -15
  177. package/lib/typescript/commonjs/components/Select/Select.d.ts +2 -2
  178. package/lib/typescript/commonjs/components/Skeleton/Skeleton.d.ts +1 -1
  179. package/lib/typescript/commonjs/components/Tabs/Tabs.d.ts +1 -1
  180. package/lib/typescript/commonjs/index.d.ts +4 -4
  181. package/lib/typescript/commonjs/theme/componentSizes.d.ts +27 -0
  182. package/lib/typescript/commonjs/theme/componentTokens.d.ts +762 -0
  183. package/lib/typescript/commonjs/theme/index.d.ts +4 -1
  184. package/lib/typescript/commonjs/theme/retiredThemeKeys.d.ts +22 -0
  185. package/lib/typescript/commonjs/theme/scale.d.ts +5 -0
  186. package/lib/typescript/commonjs/theme/types.d.ts +6 -790
  187. package/lib/typescript/commonjs/utils/index.d.ts +0 -2
  188. package/lib/typescript/module/components/BottomNavigation/BottomNavigation.d.ts +6 -6
  189. package/lib/typescript/module/components/Box/Box.d.ts +18 -20
  190. package/lib/typescript/module/components/Calendar/calendarStyles.d.ts +1 -1
  191. package/lib/typescript/module/components/Card/Card.d.ts +1 -1
  192. package/lib/typescript/module/components/FieldBase/FieldBase.d.ts +2 -8
  193. package/lib/typescript/module/components/FieldBase/index.d.ts +1 -1
  194. package/lib/typescript/module/components/FieldBase/useFloatingLabel.d.ts +3 -2
  195. package/lib/typescript/module/components/InlineSelect/InlineSelect.d.ts +1 -1
  196. package/lib/typescript/module/components/Input/Input.d.ts +1 -1
  197. package/lib/typescript/module/components/PhoneNumberInput/PhoneNumberInput.d.ts +1 -1
  198. package/lib/typescript/module/components/SearchBar/SearchBar.d.ts +1 -1
  199. package/lib/typescript/module/components/SegmentedControl/SegmentedControl.d.ts +1 -15
  200. package/lib/typescript/module/components/Select/Select.d.ts +2 -2
  201. package/lib/typescript/module/components/Skeleton/Skeleton.d.ts +1 -1
  202. package/lib/typescript/module/components/Tabs/Tabs.d.ts +1 -1
  203. package/lib/typescript/module/index.d.ts +4 -4
  204. package/lib/typescript/module/theme/componentSizes.d.ts +27 -0
  205. package/lib/typescript/module/theme/componentTokens.d.ts +762 -0
  206. package/lib/typescript/module/theme/index.d.ts +4 -1
  207. package/lib/typescript/module/theme/retiredThemeKeys.d.ts +22 -0
  208. package/lib/typescript/module/theme/scale.d.ts +5 -0
  209. package/lib/typescript/module/theme/types.d.ts +6 -790
  210. package/lib/typescript/module/utils/index.d.ts +0 -2
  211. package/package.json +12 -2
  212. package/lib/commonjs/utils/spacing.js +0 -1
  213. package/lib/module/utils/spacing.js +0 -1
  214. package/lib/typescript/commonjs/utils/spacing.d.ts +0 -61
  215. package/lib/typescript/module/utils/spacing.d.ts +0 -61
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SkeletonText=exports.SkeletonCircle=exports.Skeleton=void 0;var _react=require("react"),_reactNative=require("react-native"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_Gradient=require("../../theme/Gradient.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_SkeletonClock=require("./SkeletonClock.js"),_SkeletonProvider=require("./SkeletonProvider.js"),_jsxRuntime=require("react/jsx-runtime");const resolveRadius=(e,t)=>"number"==typeof t?t:e.radius[t],resolveWidth=e=>void 0===e?"100%":e,radiusForShape=(e,t,s,i,r)=>{if(void 0!==r)return resolveRadius(e,r);switch(t){case"circle":return"number"==typeof s?Math.min(s,i)/2:i/2;case"rounded":return e.radius.md;default:return e.radius.sm}},Skeleton=({shape:e="rect",width:t="100%",height:s=16,radius:i,variant:r,speed:o,colors:n,style:a,testID:l})=>{const u=(0,_index.useTheme)(),c=(0,_SkeletonProvider.useSkeletonDefaults)(),d=(0,_SkeletonClock.useSkeletonClock)(),m=(0,_useReducedMotion.useReducedMotion)(),h=r??c.variant??"shimmer",p=m&&"auto"===(c.animation??"auto");let x=h;d.enabled?p&&"shimmer"===h&&(x="pulse"):x="none";const k=n?.background??c.colors?.background??u.colors.skeleton.background,S=n?.highlight??c.colors?.highlight??u.colors.skeleton.highlight,{responsive:_}=(0,_index2.useScreenDimensions)(),v=(0,_react.useMemo)(()=>buildStyles(),[]),y=resolveWidth(t),g=_.size(s),b=radiusForShape(u,e,y,g,i),[j,R]=(0,_react.useState)(0),f=(0,_react.useMemo)(()=>j<=0?0:Math.max(48,.7*j),[j]),w=(0,_react.useMemo)(()=>j<=0?0:d.shimmer.interpolate({inputRange:[0,1],outputRange:[-f,j]}),[d.shimmer,f,j]),C=(0,_react.useMemo)(()=>"none"===x?null:"pulse"===x?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[_reactNative.StyleSheet.absoluteFill,{backgroundColor:S,opacity:d.pulse.interpolate({inputRange:[0,1],outputRange:[0,.55]})}]}):j<=0?null:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[v.shimmerBand,{width:f,transform:[{translateX:w}],experimental_backgroundImage:[(0,_Gradient.toBackgroundImage)({colors:["transparent",S,"transparent"],locations:[0,.5,1],start:{x:0,y:.5},end:{x:1,y:.5}})]}]}),[x,S,d.pulse,j,v.shimmerBand,f,w]);return(0,_jsxRuntime.jsx)(_reactNative.View,{onLayout:e=>{const t=e.nativeEvent.layout.width;t!==j&&R(t)},accessible:!0,accessibilityLabel:"Loading",accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,accessibilityLiveRegion:"polite",testID:l,style:[v.base,{width:y,height:g,borderRadius:b,..._corners.smoothCorners,backgroundColor:k},a],children:C})};exports.Skeleton=Skeleton,Skeleton.displayName="Skeleton";const SkeletonCircle=({size:e,style:t,...s})=>{const{responsive:i}=(0,_index2.useScreenDimensions)(),r=i.size(e);return(0,_jsxRuntime.jsx)(Skeleton,{...s,shape:"circle",width:r,height:e,style:t})};exports.SkeletonCircle=SkeletonCircle,SkeletonCircle.displayName="SkeletonCircle";const SkeletonText=({lines:e=3,lastLineWidth:t="60%",spacing:s,fontSize:i=14,variant:r,speed:o,radius:n="sm",width:a="100%",style:l,testID:u})=>{const c=(0,_index.useTheme)(),d=s??c.spacing.xs,m=Math.max(1,e);return(0,_jsxRuntime.jsx)(_reactNative.View,{style:l,testID:u,children:Array.from({length:m}).map((e,s)=>{const l=s===m-1&&m>1?t:a;return(0,_jsxRuntime.jsx)(Skeleton,{shape:"text",width:l,height:i,radius:n,variant:r,speed:o,style:s<m-1?{marginBottom:d}:void 0},s)})})};exports.SkeletonText=SkeletonText,SkeletonText.displayName="SkeletonText";const buildStyles=()=>_reactNative.StyleSheet.create({base:{overflow:"hidden"},shimmerBand:{position:"absolute",top:0,bottom:0,left:0}});var _default=exports.default=Skeleton;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SkeletonText=exports.SkeletonCircle=exports.Skeleton=void 0;var _react=require("react"),_reactNative=require("react-native"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_Gradient=require("../../theme/Gradient.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_SkeletonClock=require("./SkeletonClock.js"),_SkeletonProvider=require("./SkeletonProvider.js"),_jsxRuntime=require("react/jsx-runtime");const resolveRadius=(e,t)=>"number"==typeof t?t:e.radius[t],resolveWidth=e=>void 0===e?"100%":e,radiusForShape=(e,t,s,i,r)=>{if(void 0!==r)return resolveRadius(e,r);switch(t){case"circle":return"number"==typeof s?Math.min(s,i)/2:i/2;case"rounded":return e.radius.md;default:return e.radius.sm}},Skeleton=({shape:e="rect",width:t="100%",height:s=16,radius:i,variant:r,speed:o,colors:n,style:a,testID:l})=>{const u=(0,_index.useTheme)(),c=(0,_SkeletonProvider.useSkeletonDefaults)(),d=(0,_SkeletonClock.useSkeletonClock)(),h=(0,_useReducedMotion.useReducedMotion)(),m=r??c.variant??"shimmer",p=h&&"auto"===(c.animation??"auto");let x=m;d.enabled?p&&"shimmer"===m&&(x="pulse"):x="none";const k=n?.background??c.colors?.background??u.colors.skeleton.background,S=n?.highlight??c.colors?.highlight??u.colors.skeleton.highlight,{responsive:_}=(0,_index2.useScreenDimensions)(),v=(0,_react.useMemo)(()=>buildStyles(),[]),y=resolveWidth(t),g=_.size(s),b=radiusForShape(u,e,y,g,i),[j,R]=(0,_react.useState)(0),f=(0,_react.useMemo)(()=>j<=0?0:Math.max(48,.7*j),[j]),w=(0,_react.useMemo)(()=>j<=0?0:d.shimmer.interpolate({inputRange:[0,1],outputRange:[-f,j]}),[d.shimmer,f,j]),C=(0,_react.useMemo)(()=>"none"===x?null:"pulse"===x?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[_reactNative.StyleSheet.absoluteFill,{backgroundColor:S,opacity:d.pulse.interpolate({inputRange:[0,1],outputRange:[0,.55]})}]}):j<=0?null:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[v.shimmerBand,{width:f,transform:[{translateX:w}],experimental_backgroundImage:[(0,_Gradient.toBackgroundImage)({colors:["transparent",S,"transparent"],locations:[0,.5,1],start:{x:0,y:.5},end:{x:1,y:.5}})]}]}),[x,S,d.pulse,j,v.shimmerBand,f,w]);return(0,_jsxRuntime.jsx)(_reactNative.View,{onLayout:e=>{const t=e.nativeEvent.layout.width;t!==j&&R(t)},accessible:!0,accessibilityLabel:"Loading",accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,accessibilityLiveRegion:"polite",testID:l,style:[v.base,{width:y,height:g,borderRadius:b,..._corners.smoothCorners,backgroundColor:k},a],children:C})};exports.Skeleton=Skeleton,Skeleton.displayName="Skeleton";const SkeletonCircle=({size:e,style:t,...s})=>{const{responsive:i}=(0,_index2.useScreenDimensions)(),r=i.size(e);return(0,_jsxRuntime.jsx)(Skeleton,{...s,shape:"circle",width:r,height:e,style:t})};exports.SkeletonCircle=SkeletonCircle,SkeletonCircle.displayName="SkeletonCircle";const SkeletonText=({lines:e=3,lastLineWidth:t="60%",spacing:s,fontSize:i,variant:r,speed:o,radius:n="sm",width:a="100%",style:l,testID:u})=>{const c=(0,_index.useTheme)(),d=s??c.spacing.xs,h=Math.max(1,e);return(0,_jsxRuntime.jsx)(_reactNative.View,{style:l,testID:u,children:Array.from({length:h}).map((e,s)=>{const l=s===h-1&&h>1?t:a;return(0,_jsxRuntime.jsx)(Skeleton,{shape:"text",width:l,height:i??c.typography.fontSize.base,radius:n,variant:r,speed:o,style:s<h-1?{marginBottom:d}:void 0},s)})})};exports.SkeletonText=SkeletonText,SkeletonText.displayName="SkeletonText";const buildStyles=()=>_reactNative.StyleSheet.create({base:{overflow:"hidden"},shimmerBand:{position:"absolute",top:0,bottom:0,left:0}});var _default=exports.default=Skeleton;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SkeletonContent=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_index=require("../../theme/index.js"),_Skeleton=require("./Skeleton.js"),_SkeletonProvider=require("./SkeletonProvider.js"),_SkeletonSkip=require("./SkeletonSkip.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,i=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var n,o,s={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return s;if(n=t?i:r){if(n.has(e))return n.get(e);n.set(e,s)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((o=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(o.get||o.set)?n(s,t,o):s[t]=e[t]);return s})(e,t)}const DEFAULT_REVEAL_FADE_MS=300,flattenStyle=e=>{if(!e)return{};return _reactNative.StyleSheet.flatten(e)??{}},resolveWidth=(e,t)=>"number"==typeof e?e:"string"!=typeof e||"auto"!==e&&"100%"!==e&&!/^\d+(\.\d+)?%$/.test(e)?t:e,resolveRadius=(e,t)=>"number"==typeof e?e:t,skeletonizeNode=(e,t,r,i,n="r")=>{if(null==e||"boolean"==typeof e)return null;if("string"==typeof e||"number"==typeof e)return(0,_jsxRuntime.jsx)(_Skeleton.Skeleton,{shape:"text",width:"60%",height:14,variant:t,speed:r,colors:i},`${n}-text`);if(Array.isArray(e))return _react.Children.map(e,(e,o)=>skeletonizeNode(e,t,r,i,`${n}-${o}`));if(!(0,_react.isValidElement)(e))return null;const o=e,s=o.props??{},a=o.type;if(a===_SkeletonSkip.SkeletonSkip)return(0,_react.cloneElement)(o,{key:`${n}-skip`});if("function"==typeof a||"object"==typeof a){const e=a.Skeleton;if(e){const t=e;return(0,_jsxRuntime.jsx)(t,{...s},`${n}-self`)}}if(a===_reactNative.Image){const e=flattenStyle(s.style),o=resolveWidth(e.width,"100%"),a="number"==typeof e.height?e.height:120,l=resolveRadius(e.borderRadius,"sm");return(0,_jsxRuntime.jsx)(_Skeleton.Skeleton,{width:o,height:a,radius:l,variant:t,speed:r,colors:i,style:{margin:"number"==typeof e.margin?e.margin:void 0}},`${n}-img`)}if(a===_reactNative.Text){const e=flattenStyle(s.style),o="number"==typeof e.fontSize?e.fontSize:14,a=resolveWidth(e.width,"85%");return(0,_jsxRuntime.jsx)(_Skeleton.Skeleton,{shape:"text",width:a,height:Math.round(1.15*o),variant:t,speed:r,colors:i,style:{marginVertical:2}},`${n}-txt`)}if(null!=s.children)return(0,_react.cloneElement)(o,{key:`${n}-w`},skeletonizeNode(s.children,t,r,i,`${n}-c`));if(a===_reactNative.View){const e=flattenStyle(s.style);if(null!=e.width||null!=e.height){const o=resolveWidth(e.width,"100%"),s="number"==typeof e.height?e.height:20,a=resolveRadius(e.borderRadius,"sm");return(0,_jsxRuntime.jsx)(_Skeleton.Skeleton,{width:o,height:s,radius:a,variant:t,speed:r,colors:i},`${n}-vw`)}}return(0,_react.cloneElement)(o,{key:`${n}-leaf`})},SkeletonContent=({loading:e,children:t,placeholder:r,variant:i,speed:n,count:o=1,colors:s,fadeDuration:a,style:l,testID:u})=>{const c=(0,_SkeletonProvider.useSkeletonDefaults)(),d=(0,_usePresenceMotion.usePresenceMotion)(),f=a??c.fadeDuration??(d.reduced?d.duration("normal"):300),_=(0,_react.useRef)(e),p=(0,_react.useRef)((0,_index.createAnimatedValue)(e?0:1)).current;if((0,_react.useEffect)(()=>{let t;return _.current&&!e?(p.setValue(0),t=_reactNative.Animated.timing(p,{toValue:1,duration:f,useNativeDriver:!0}),t.start()):!_.current&&e&&p.setValue(1),_.current=e,()=>t?.stop()},[e,p,f]),!e)return f<=0?(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:t}):(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[l,{opacity:p}],testID:u,children:t});if(void 0!==r){const e=o>1?Array.from({length:o},(e,t)=>(0,_jsxRuntime.jsx)(_react.default.Fragment,{children:r},`sk-ph-${t}`)):r;return(0,_jsxRuntime.jsx)(_reactNative.View,{style:l,testID:u,accessible:!0,accessibilityLabel:"Loading",accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,accessibilityLiveRegion:"polite",children:e})}const y=o>1?Array.from({length:o},(e,r)=>(0,_jsxRuntime.jsx)(_react.default.Fragment,{children:t},`sk-rep-${r}`)):t;return(0,_jsxRuntime.jsx)(_reactNative.View,{style:l,testID:u,accessible:!0,accessibilityLabel:"Loading",accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,accessibilityLiveRegion:"polite",children:skeletonizeNode(y,i,n,s)})};exports.SkeletonContent=SkeletonContent,SkeletonContent.displayName="SkeletonContent";var _default=exports.default=SkeletonContent;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SkeletonContent=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_index=require("../../theme/index.js"),_Skeleton=require("./Skeleton.js"),_SkeletonProvider=require("./SkeletonProvider.js"),_SkeletonSkip=require("./SkeletonSkip.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var r=new WeakMap,i=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var n,o,s={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return s;if(n=t?i:r){if(n.has(e))return n.get(e);n.set(e,s)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((o=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(o.get||o.set)?n(s,t,o):s[t]=e[t]);return s})(e,t)}const DEFAULT_REVEAL_FADE_MS=300,flattenStyle=e=>{if(!e)return{};return _reactNative.StyleSheet.flatten(e)??{}},resolveWidth=(e,t)=>"number"==typeof e?e:"string"!=typeof e||"auto"!==e&&"100%"!==e&&!/^\d+(\.\d+)?%$/.test(e)?t:e,resolveRadius=(e,t)=>"number"==typeof e?e:t,skeletonizeNode=(e,t,r,i,n,o="r")=>{if(null==t||"boolean"==typeof t)return null;if("string"==typeof t||"number"==typeof t)return(0,_jsxRuntime.jsx)(_Skeleton.Skeleton,{shape:"text",width:"60%",height:14,variant:r,speed:i,colors:n},`${o}-text`);if(Array.isArray(t))return _react.Children.map(t,(t,s)=>skeletonizeNode(e,t,r,i,n,`${o}-${s}`));if(!(0,_react.isValidElement)(t))return null;const s=t,a=s.props??{},l=s.type;if(l===_SkeletonSkip.SkeletonSkip)return(0,_react.cloneElement)(s,{key:`${o}-skip`});if("function"==typeof l||"object"==typeof l){const e=l.Skeleton;if(e){const t=e;return(0,_jsxRuntime.jsx)(t,{...a},`${o}-self`)}}if(l===_reactNative.Image){const e=flattenStyle(a.style),t=resolveWidth(e.width,"100%"),s="number"==typeof e.height?e.height:120,l=resolveRadius(e.borderRadius,"sm");return(0,_jsxRuntime.jsx)(_Skeleton.Skeleton,{width:t,height:s,radius:l,variant:r,speed:i,colors:n,style:{margin:"number"==typeof e.margin?e.margin:void 0}},`${o}-img`)}if(l===_reactNative.Text){const t=flattenStyle(a.style),s="number"==typeof t.fontSize?t.fontSize:e.typography.fontSize.base,l=resolveWidth(t.width,"85%");return(0,_jsxRuntime.jsx)(_Skeleton.Skeleton,{shape:"text",width:l,height:Math.round(1.15*s),variant:r,speed:i,colors:n,style:{marginVertical:e.spacing.xxs}},`${o}-txt`)}if(null!=a.children)return(0,_react.cloneElement)(s,{key:`${o}-w`},skeletonizeNode(e,a.children,r,i,n,`${o}-c`));if(l===_reactNative.View){const e=flattenStyle(a.style);if(null!=e.width||null!=e.height){const t=resolveWidth(e.width,"100%"),s="number"==typeof e.height?e.height:20,a=resolveRadius(e.borderRadius,"sm");return(0,_jsxRuntime.jsx)(_Skeleton.Skeleton,{width:t,height:s,radius:a,variant:r,speed:i,colors:n},`${o}-vw`)}}return(0,_react.cloneElement)(s,{key:`${o}-leaf`})},SkeletonContent=({loading:e,children:t,placeholder:r,variant:i,speed:n,count:o=1,colors:s,fadeDuration:a,style:l,testID:u})=>{const c=(0,_index.useTheme)(),d=(0,_SkeletonProvider.useSkeletonDefaults)(),f=(0,_usePresenceMotion.usePresenceMotion)(),_=a??d.fadeDuration??(f.reduced?f.duration("normal"):300),p=(0,_react.useRef)(e),y=(0,_react.useRef)((0,_index.createAnimatedValue)(e?0:1)).current;if((0,_react.useEffect)(()=>{let t;return p.current&&!e?(y.setValue(0),t=_reactNative.Animated.timing(y,{toValue:1,duration:_,useNativeDriver:!0}),t.start()):!p.current&&e&&y.setValue(1),p.current=e,()=>t?.stop()},[e,y,_]),!e)return _<=0?(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:t}):(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[l,{opacity:y}],testID:u,children:t});if(void 0!==r){const e=o>1?Array.from({length:o},(e,t)=>(0,_jsxRuntime.jsx)(_react.default.Fragment,{children:r},`sk-ph-${t}`)):r;return(0,_jsxRuntime.jsx)(_reactNative.View,{style:l,testID:u,accessible:!0,accessibilityLabel:"Loading",accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,accessibilityLiveRegion:"polite",children:e})}const h=o>1?Array.from({length:o},(e,r)=>(0,_jsxRuntime.jsx)(_react.default.Fragment,{children:t},`sk-rep-${r}`)):t;return(0,_jsxRuntime.jsx)(_reactNative.View,{style:l,testID:u,accessible:!0,accessibilityLabel:"Loading",accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,accessibilityLiveRegion:"polite",children:skeletonizeNode(c,h,i,n,s)})};exports.SkeletonContent=SkeletonContent,SkeletonContent.displayName="SkeletonContent";var _default=exports.default=SkeletonContent;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SlideToConfirm=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated")),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var a=new WeakMap,r=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var i,n,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(i=t?r:a){if(i.has(e))return i.get(e);i.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((n=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(n.get||n.set)?i(o,t,n):o[t]=e[t]);return o})(e,t)}const SIZE_MAP={sm:{height:44,pad:4},md:{height:56,pad:5},lg:{height:64,pad:6}},Chevron=({color:e,size:t})=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:{width:0,height:0,borderTopWidth:.4*t,borderBottomWidth:.4*t,borderLeftWidth:.55*t,borderTopColor:"transparent",borderBottomColor:"transparent",borderLeftColor:e,marginLeft:.2*t}}),ACCESSIBILITY_ACTIONS=[{name:"activate",label:"Confirm"},{name:"increment",label:"Confirm"}],SlideToConfirm=exports.SlideToConfirm=(0,_react.forwardRef)((e,t)=>{const{onConfirm:a,label:r="Slide to confirm",confirmedLabel:i="Confirmed",tone:n="primary",size:o="md",disabled:s=!1,threshold:l=.9,resetAfter:c=!1,haptic:d,icon:u,style:m,trackStyle:_,handleStyle:h,labelStyle:f,testID:v}=e,p=(0,_index.useTheme)(),b=SIZE_MAP[o],y=b.height-2*b.pad,g=(0,_react.useMemo)(()=>buildStyles(b),[b]),S=p.colors[n],[x,R]=(0,_react.useState)(!1),C=(0,_reactNativeReanimated.useSharedValue)(0),N=(0,_reactNativeReanimated.useSharedValue)(0),j=(0,_reactNativeReanimated.useSharedValue)(0),w=(0,_react.useRef)(null),k=(0,_react.useCallback)(()=>{const e=(0,_index2.resolveHaptic)(d,"notificationSuccess");e&&(0,_index2.triggerHaptic)(e)},[d]),T=(0,_react.useCallback)(()=>{R(!1),C.value=(0,_reactNativeReanimated.withSpring)(0,{damping:18,stiffness:160,mass:1})},[C]),A=(0,_react.useCallback)(()=>{R(!0),k(),a(),!1!==c&&(w.current&&clearTimeout(w.current),w.current=setTimeout(T,c))},[k,a,c,T]),I=(0,_react.useCallback)(e=>{if(s||x)return;const{actionName:t}=e.nativeEvent;"activate"!==t&&"increment"!==t||A()},[s,x,A]);_react.default.useEffect(()=>()=>{(0,_reactNativeReanimated.cancelAnimation)(C),w.current&&clearTimeout(w.current)},[C]);const M=(0,_react.useCallback)(e=>{N.value=Math.max(0,e.nativeEvent.layout.width-y-2*b.pad)},[N,y,b.pad]),q=(0,_react.useMemo)(()=>{const e=l,t={damping:18,stiffness:160,mass:1},a={duration:p.motion.duration.fast,easing:_reactNativeReanimated.Easing.out(_reactNativeReanimated.Easing.cubic)};return _reactNativeGestureHandler.Gesture.Pan().enabled(!s&&!x).minDistance(0).onStart(()=>{"worklet";j.value=C.value}).onUpdate(e=>{"worklet";C.value=Math.min(Math.max(j.value+e.translationX,0),N.value)}).onEnd(()=>{"worklet";N.value>0&&C.value>=N.value*e?(C.value=(0,_reactNativeReanimated.withTiming)(N.value,a),(0,_reactNativeReanimated.runOnJS)(A)()):C.value=(0,_reactNativeReanimated.withSpring)(0,t)})},[s,x,l,C,N,j,A,p.motion.duration.fast]),E=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({transform:[{translateX:C.value}]})),W=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({width:C.value+y+b.pad})),L=(0,_reactNativeReanimated.useAnimatedStyle)(()=>{const e=N.value>0?N.value:1;return{opacity:Math.max(0,1-C.value/(.6*e))}});return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,style:[g.track,{backgroundColor:p.colors.background.secondary},_,m],onLayout:M,testID:v,accessibilityRole:"adjustable",accessibilityLabel:x?i:r,accessibilityState:{disabled:s},"aria-disabled":s,accessibilityActions:ACCESSIBILITY_ACTIONS,onAccessibilityAction:I,children:[(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[g.fill,{backgroundColor:S,opacity:s?.5:1},W],pointerEvents:"none"}),(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[g.labelWrap,L],pointerEvents:"none",children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[g.label,{color:p.colors.text.secondary,fontSize:p.typography.fontSize.base},f],numberOfLines:1,children:x?i:r})}),(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:q,children:(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[g.handle,{width:y,height:y,borderRadius:y/2,..._corners.smoothCorners,backgroundColor:p.colors.background.elevated,opacity:s?.5:1,...p.shadows.sm},h,E],children:u??(0,_jsxRuntime.jsx)(Chevron,{color:S,size:.5*y})})})]})});SlideToConfirm.displayName="SlideToConfirm";const buildStyles=e=>_reactNative.StyleSheet.create({track:{height:e.height,borderRadius:e.height/2,..._corners.smoothCorners,justifyContent:"center",overflow:"hidden",padding:e.pad},fill:{position:"absolute",left:0,top:0,bottom:0,borderRadius:e.height/2,..._corners.smoothCorners},labelWrap:{position:"absolute",left:e.height,right:e.height},label:{textAlign:"center",includeFontPadding:!1},handle:{alignItems:"center",justifyContent:"center"}});var _default=exports.default=SlideToConfirm;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SlideToConfirm=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated")),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var a=new WeakMap,r=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var i,n,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(i=t?r:a){if(i.has(e))return i.get(e);i.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((n=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(n.get||n.set)?i(o,t,n):o[t]=e[t]);return o})(e,t)}const SIZE_MAP={sm:{height:44,pad:"xxs"},md:{height:56,pad:"xs"},lg:{height:64,pad:"sm"}},Chevron=({color:e,size:t})=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:{width:0,height:0,borderTopWidth:.4*t,borderBottomWidth:.4*t,borderLeftWidth:.55*t,borderTopColor:"transparent",borderBottomColor:"transparent",borderLeftColor:e,marginLeft:.2*t}}),ACCESSIBILITY_ACTIONS=[{name:"activate",label:"Confirm"},{name:"increment",label:"Confirm"}],SlideToConfirm=exports.SlideToConfirm=(0,_react.forwardRef)((e,t)=>{const{onConfirm:a,label:r="Slide to confirm",confirmedLabel:i="Confirmed",tone:n="primary",size:o="md",disabled:s=!1,threshold:l=.9,resetAfter:c=!1,haptic:d,icon:u,style:m,trackStyle:_,handleStyle:f,labelStyle:v,testID:h}=e,p=(0,_index.useTheme)(),b=SIZE_MAP[o],y=p.spacing[b.pad],g=b.height-2*y,x=(0,_react.useMemo)(()=>buildStyles(p,b),[p,b]),S=p.colors[n],[R,C]=(0,_react.useState)(!1),N=(0,_reactNativeReanimated.useSharedValue)(0),j=(0,_reactNativeReanimated.useSharedValue)(0),w=(0,_reactNativeReanimated.useSharedValue)(0),k=(0,_react.useRef)(null),T=(0,_react.useCallback)(()=>{const e=(0,_index2.resolveHaptic)(d,"notificationSuccess");e&&(0,_index2.triggerHaptic)(e)},[d]),A=(0,_react.useCallback)(()=>{C(!1),N.value=(0,_reactNativeReanimated.withSpring)(0,{damping:18,stiffness:160,mass:1})},[N]),I=(0,_react.useCallback)(()=>{C(!0),T(),a(),!1!==c&&(k.current&&clearTimeout(k.current),k.current=setTimeout(A,c))},[T,a,c,A]),M=(0,_react.useCallback)(e=>{if(s||R)return;const{actionName:t}=e.nativeEvent;"activate"!==t&&"increment"!==t||I()},[s,R,I]);_react.default.useEffect(()=>()=>{(0,_reactNativeReanimated.cancelAnimation)(N),k.current&&clearTimeout(k.current)},[N]);const q=(0,_react.useCallback)(e=>{j.value=Math.max(0,e.nativeEvent.layout.width-g-2*y)},[j,g,y]),E=(0,_react.useMemo)(()=>{const e=l,t={damping:18,stiffness:160,mass:1},a={duration:p.motion.duration.fast,easing:_reactNativeReanimated.Easing.out(_reactNativeReanimated.Easing.cubic)};return _reactNativeGestureHandler.Gesture.Pan().enabled(!s&&!R).minDistance(0).onStart(()=>{"worklet";w.value=N.value}).onUpdate(e=>{"worklet";N.value=Math.min(Math.max(w.value+e.translationX,0),j.value)}).onEnd(()=>{"worklet";j.value>0&&N.value>=j.value*e?(N.value=(0,_reactNativeReanimated.withTiming)(j.value,a),(0,_reactNativeReanimated.runOnJS)(I)()):N.value=(0,_reactNativeReanimated.withSpring)(0,t)})},[s,R,l,N,j,w,I,p.motion.duration.fast]),W=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({transform:[{translateX:N.value}]})),L=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({width:N.value+g+y})),O=(0,_reactNativeReanimated.useAnimatedStyle)(()=>{const e=j.value>0?j.value:1;return{opacity:Math.max(0,1-N.value/(.6*e))}});return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,style:[x.track,{backgroundColor:p.colors.background.secondary},_,m],onLayout:q,testID:h,accessibilityRole:"adjustable",accessibilityLabel:R?i:r,accessibilityState:{disabled:s},"aria-disabled":s,accessibilityActions:ACCESSIBILITY_ACTIONS,onAccessibilityAction:M,children:[(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[x.fill,{backgroundColor:S,opacity:s?.5:1},L],pointerEvents:"none"}),(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[x.labelWrap,O],pointerEvents:"none",children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[x.label,{color:p.colors.text.secondary,fontSize:p.typography.fontSize.base},v],numberOfLines:1,children:R?i:r})}),(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:E,children:(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[x.handle,{width:g,height:g,borderRadius:p.radius.pill,..._corners.smoothCorners,backgroundColor:p.colors.background.elevated,opacity:s?.5:1,...p.shadows.sm},f,W],children:u??(0,_jsxRuntime.jsx)(Chevron,{color:S,size:.5*g})})})]})});SlideToConfirm.displayName="SlideToConfirm";const buildStyles=(e,t)=>_reactNative.StyleSheet.create({track:{height:t.height,borderRadius:e.radius.pill,..._corners.smoothCorners,justifyContent:"center",overflow:"hidden",padding:e.spacing[t.pad]},fill:{position:"absolute",left:0,top:0,bottom:0,borderRadius:e.radius.pill,..._corners.smoothCorners},labelWrap:{position:"absolute",left:t.height,right:t.height},label:{textAlign:"center",includeFontPadding:!1},handle:{alignItems:"center",justifyContent:"center"}});var _default=exports.default=SlideToConfirm;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Slider=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated")),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_valueText=require("./valueText.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var a=new WeakMap,r=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var i,n,s={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return s;if(i=t?r:a){if(i.has(e))return i.get(e);i.set(e,s)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((n=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(n.get||n.set)?i(s,t,n):s[t]=e[t]);return s})(e,t)}const SIZE_MAP={sm:{trackHeight:4,thumbDiameter:24},md:{trackHeight:6,thumbDiameter:28},lg:{trackHeight:8,thumbDiameter:32}},VARIANT_SIZE_MAP={inset:{sm:{trackHeight:14,thumbDiameter:10},md:{trackHeight:20,thumbDiameter:14},lg:{trackHeight:26,thumbDiameter:18}},minimal:{sm:{trackHeight:2,thumbDiameter:14},md:{trackHeight:3,thumbDiameter:18},lg:{trackHeight:4,thumbDiameter:22}},bar:{sm:{trackHeight:20,thumbDiameter:20},md:{trackHeight:28,thumbDiameter:28},lg:{trackHeight:36,thumbDiameter:36}}},INSET_RING_RATIO=.3,MIN_THUMB_TOUCH=44,TONE_TO_COLOR_KEY={primary:"primary",success:"success",warning:"warning",error:"error"},clamp=(e,t,a)=>Math.min(Math.max(e,t),a),snapToStep=(e,t,a,r)=>{if(r<=0)return clamp(e,t,a);const i=Math.round((e-t)/r)*r+t,n=String(r).split(".")[1]?.length??0,s=n>0?Number(i.toFixed(n)):i;return clamp(s,t,a)},BUBBLE_GAP=2,BUBBLE_CARET=8,BUBBLE_WRAP_WIDTH=160,NO_SHADOW={shadowOpacity:0,elevation:0},defaultFormatLabel=e=>String(e),Slider=exports.Slider=(0,_react.forwardRef)((e,t)=>{const{min:a=0,max:r=100,step:i=1,disabled:n=!1,tone:s="primary",size:o="md",variant:l="default",showLabel:c=!1,snapThumb:u=!1,formatLabel:d=defaultFormatLabel,renderLabel:m,accessibilityLabel:h,haptic:b,style:_,containerStyle:v,trackStyle:p,fillStyle:f,thumbStyle:g,labelStyle:R,thumbPressScale:y,labelShowDuration:x,labelOpacity:N,testID:w}=e,k=(0,_index2.useTheme)(),S=k.components.slider,j=S?.[o],C=(0,_react.useMemo)(()=>"default"===l?{trackHeight:j?.trackHeight??SIZE_MAP[o].trackHeight,thumbDiameter:j?.thumbDiameter??SIZE_MAP[o].thumbDiameter}:VARIANT_SIZE_MAP[l][o],[j,o,l]),M="inset"===l?C.trackHeight/2:0,O=S?.thumbPressAnimation??!1,H=y??S?.thumbPressScale??1.1,D=x??S?.labelShowDuration??k.motion.duration.fast,A=N??S?.labelOpacity??1,E=(0,_react.useMemo)(()=>buildStyles(k,C),[k,C]),T=(0,_react.useMemo)(()=>({damping:k.motion.spring.snappy.damping,stiffness:k.motion.spring.snappy.stiffness,mass:k.motion.spring.snappy.mass}),[k.motion.spring.snappy]),[V,W]=(0,_react.useState)(0),P=k.colors[TONE_TO_COLOR_KEY[s]],I=(0,_valueText.sliderToneInk)(k,s),L=!0===e.range,[q,X]=(0,_index.useControllableState)({value:e.value,defaultValue:e.defaultValue??(L?[a,r]:a),onChange:e.onChange}),B=(0,_reactNativeReanimated.useSharedValue)(0),G=(0,_reactNativeReanimated.useSharedValue)(0),F=(0,_reactNativeReanimated.useSharedValue)(L?q[0]:q),J=(0,_reactNativeReanimated.useSharedValue)(L?q[1]:q),U=(0,_reactNativeReanimated.useSharedValue)(0),z=(0,_reactNativeReanimated.useSharedValue)(0),Z=(0,_reactNativeReanimated.useSharedValue)(1),K=(0,_reactNativeReanimated.useSharedValue)(1),Y="always"===c,$=(0,_reactNativeReanimated.useSharedValue)(Y?1:0),Q=(0,_reactNativeReanimated.useSharedValue)(Y?1:0),ee=(0,_react.useMemo)(()=>10**(String(i).split(".")[1]?.length??0),[i]);(0,_react.useEffect)(()=>()=>{(0,_reactNativeReanimated.cancelAnimation)(B),(0,_reactNativeReanimated.cancelAnimation)(G),(0,_reactNativeReanimated.cancelAnimation)(Z),(0,_reactNativeReanimated.cancelAnimation)(K),(0,_reactNativeReanimated.cancelAnimation)($),(0,_reactNativeReanimated.cancelAnimation)(Q)},[B,G,Z,K,$,Q]);const te=(0,_react.useCallback)((e,t)=>{const i=t-2*M;return r===a||i<=0?M:M+(e-a)/(r-a)*i},[a,r,M]),ae=(0,_react.useCallback)((e,t)=>{const n=t-2*M;if(n<=0)return a;const s=clamp((e-M)/n,0,1);return snapToStep(a+s*(r-a),a,r,i)},[a,r,i,M]),re=(0,_react.useRef)(!1),ie=k.motion.duration.fast,ne=(0,_react.useRef)(q);ne.current=q;const se=(0,_react.useRef)(V);se.current=V;const oe=(0,_react.useCallback)((e=!1)=>{const t=se.current;if(t<=0)return;const place=t=>e?(0,_reactNativeReanimated.withTiming)(t,{duration:ie,easing:_reactNativeReanimated.Easing.out(_reactNativeReanimated.Easing.cubic)}):t,a=ne.current;if(L){const[e,r]=a,i=Math.min(e,r),n=Math.max(e,r);F.value=i,J.value=n,B.value=place(te(i,t)),G.value=place(te(n,t))}else{const e=a;F.value=e,J.value=e,B.value=place(te(e,t))}},[L,te,F,J,B,G,ie]),[le,ce]=(0,_react.useState)(0),ue=(0,_react.useRef)(!1),de=(0,_react.useCallback)(e=>{re.current=e,e||(ue.current=!0,ce(e=>e+1))},[]);(0,_react.useEffect)(()=>{if(re.current)return;const e=ue.current;ue.current=!1,oe(e)},[JSON.stringify(q),V,le,oe]);const me=(0,_react.useCallback)(e=>{const t=e.nativeEvent.layout.width;z.value=t,W(t)},[z]),he=(0,_react.useCallback)((e,t)=>{X(L?[e,t]:e)},[L,X]),be=(0,_react.useCallback)(()=>{const e=(0,_index3.resolveHaptic)(b,"selection");e&&(0,_index3.triggerHaptic)(e)},[b]),ve=(0,_react.useRef)(he);ve.current=he;const pe=(0,_react.useRef)(be);pe.current=be;const fe=(0,_react.useCallback)((e,t)=>ve.current(e,t),[]),ge=(0,_react.useCallback)(()=>pe.current(),[]),Re=Math.max(0,(44-C.thumbDiameter)/2),ye=Re>0?Re:void 0,xe=(0,_react.useCallback)(e=>{const t="low"===e?B:G,s="low"===e?F:J,o="low"===e?J:F,l="low"===e?Z:K,d="low"===e?$:Q,m="low"===e,h=a,b=r,_=i,v=ee,p=L,f=H,g=O,R=!0===c,y=u,x=A,N=D,w=T,k=M,follow=e=>{"worklet";const a=z.value-2*k;if(a<=0||!Number.isFinite(e))return;const r=Math.min(Math.max(U.value+e,k),z.value-k);let i=h+(r-k)/a*(b-h);_>0&&(i=Math.round((i-h)/_)*_+h,i=Math.round(i*v)/v),i=Math.min(Math.max(i,h),b),p&&(m&&i>o.value&&(i=o.value),!m&&i<o.value&&(i=o.value)),t.value=y||b===h?b===h?k:k+(i-h)/(b-h)*a:p?m?Math.min(r,G.value):Math.max(r,B.value):r,i!==s.value&&(s.value=i,i!==h&&i!==b||(0,_reactNativeReanimated.runOnJS)(ge)(),(0,_reactNativeReanimated.runOnJS)(fe)(F.value,J.value))},S=_reactNativeGestureHandler.Gesture.Pan().enabled(!n).minDistance(0);return(void 0===ye?S:S.hitSlop(ye)).onStart(()=>{"worklet";(0,_reactNativeReanimated.runOnJS)(de)(!0),U.value=t.value,g&&(l.value=(0,_reactNativeReanimated.withSpring)(f,w)),R&&(d.value=(0,_reactNativeReanimated.withTiming)(x,{duration:N,easing:_reactNativeReanimated.Easing.out(_reactNativeReanimated.Easing.cubic)})),(0,_reactNativeReanimated.runOnJS)(ge)()}).onUpdate(e=>{"worklet";follow(e.translationX)}).onEnd(e=>{"worklet";follow(e.translationX),g&&(l.value=(0,_reactNativeReanimated.withSpring)(1,w)),R&&(d.value=(0,_reactNativeReanimated.withTiming)(0,{duration:N,easing:_reactNativeReanimated.Easing.out(_reactNativeReanimated.Easing.cubic)}))}).onFinalize(()=>{"worklet";(0,_reactNativeReanimated.runOnJS)(de)(!1)})},[n,a,r,i,ee,L,H,O,c,u,A,D,T,M,ye,fe,ge,de,B,G,F,J,Z,K,$,Q,U,z]),Ne=(0,_react.useMemo)(()=>xe("low"),[xe]),we=(0,_react.useMemo)(()=>xe("high"),[xe]),ke=(0,_react.useCallback)(e=>{if(n||L||V<=0)return;const t=clamp(e.nativeEvent.locationX,0,V),a=ae(t,V);a!==F.value&&(be(),F.value=a,B.value=(0,_reactNativeReanimated.withTiming)(te(a,V),{duration:k.motion.duration.fast,easing:_reactNativeReanimated.Easing.out(_reactNativeReanimated.Easing.cubic)}),he(a,a))},[n,L,V,ae,te,he,be,B,F,k.motion.duration.fast]),Se=(0,_react.useCallback)(e=>{if(n)return;const t="increment"===e.nativeEvent.actionName?i:-i,s=i>0?Math.round(t*ee)/ee:t;if(L){const e=Math.round((F.value+s)*ee)/ee,t=clamp(e,a,J.value);t!==F.value&&(F.value=t,B.value=te(t,V),be(),he(t,J.value))}else{const e=Math.round((F.value+s)*ee)/ee,t=clamp(e,a,r);t!==F.value&&(F.value=t,B.value=te(t,V),be(),he(t,t))}},[n,i,ee,L,a,r,te,V,B,F,J,he,be]),je=C.thumbDiameter/2,Ce=n?k.colors.surface.disabled:P,Me="inset"===l?{backgroundColor:Ce,borderColor:k.colors.background.elevated,borderWidth:Math.max(2,Math.round(.3*C.thumbDiameter)),...NO_SHADOW}:"minimal"===l?{backgroundColor:Ce,borderWidth:0}:"bar"===l?{backgroundColor:"transparent",borderWidth:0,...NO_SHADOW}:{backgroundColor:k.colors.background.elevated,borderColor:Ce},Oe=(0,_reactNativeReanimated.useAnimatedStyle)(()=>{const e=z.value;if(e<=0)return{opacity:0,transform:[{translateX:0},{scaleX:1}]};const t=n?.55:1;if(L){const a=Math.max(0,G.value-B.value+2*M);return{opacity:t,transform:[{translateX:B.value-M},{scaleX:a/e}]}}return{opacity:t,transform:[{translateX:B.value+M-e},{scaleX:1}]}}),He=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({transform:[{translateX:B.value-je},{scale:Z.value}]})),De=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({transform:[{translateX:G.value-je},{scale:K.value}]})),Ae=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({opacity:$.value})),Ee=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({opacity:Q.value})),clampDisplay=e=>clamp(e,a,r),Te=clampDisplay(L?Math.min(...q):q),Ve=clampDisplay(L?Math.max(...q):q);return(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,style:[E.container,v,_],testID:w,accessibilityRole:"adjustable",accessibilityLabel:h,accessibilityState:{disabled:n},"aria-disabled":n,accessibilityValue:L?{min:a,max:r,now:Te,text:`${Te} to ${Ve}`}:{min:a,max:r,now:Te},accessibilityActions:[{name:"increment"},{name:"decrement"}],onAccessibilityAction:Se,children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:ke,disabled:n||L,style:E.trackTouch,accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:E.trackWrap,onLayout:me,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:E.trackClip,pointerEvents:"none",children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[E.track,{backgroundColor:n?k.colors.surface.disabled:k.colors.border.primary},p]}),(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[E.fill,{backgroundColor:n?k.colors.surface.disabled:P},f,Oe]})]}),(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:Ne,children:(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[E.thumb,{width:C.thumbDiameter,height:C.thumbDiameter,borderRadius:je,..._corners.smoothCorners,opacity:n?.55:1},Me,g,He],accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",children:c?(0,_jsxRuntime.jsxs)(_reactNativeReanimated.default.View,{style:[E.bubbleWrap,Ae],pointerEvents:"none",children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[E.bubble,{backgroundColor:P}],children:m?m(Te):(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[E.bubbleText,{color:I},R],numberOfLines:1,children:d(Te)})}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[E.bubbleCaret,{backgroundColor:P}]})]}):null})}),L?(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:we,children:(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[E.thumb,{width:C.thumbDiameter,height:C.thumbDiameter,borderRadius:je,..._corners.smoothCorners,opacity:n?.55:1},Me,g,De],accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",children:c?(0,_jsxRuntime.jsxs)(_reactNativeReanimated.default.View,{style:[E.bubbleWrap,Ee],pointerEvents:"none",children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[E.bubble,{backgroundColor:P}],children:m?m(Ve):(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[E.bubbleText,{color:I},R],numberOfLines:1,children:d(Ve)})}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[E.bubbleCaret,{backgroundColor:P}]})]}):null})}):null]})})})});Slider.displayName="Slider";const buildStyles=(e,t)=>{const a=e.shadows.md,r=Math.max(t.thumbDiameter,t.trackHeight),i=r/2+4;return _reactNative.StyleSheet.create({container:{width:"100%",paddingVertical:i,justifyContent:"center"},trackTouch:{width:"100%",justifyContent:"center"},trackWrap:{width:"100%",height:r,justifyContent:"center"},trackClip:{position:"absolute",left:0,right:0,height:t.trackHeight,top:(r-t.trackHeight)/2,borderRadius:t.trackHeight/2,..._corners.smoothCorners,overflow:"hidden"},track:{position:"absolute",top:0,right:0,bottom:0,left:0,borderRadius:t.trackHeight/2,..._corners.smoothCorners},fill:{position:"absolute",top:0,left:0,width:"100%",height:t.trackHeight,borderRadius:t.trackHeight/2,..._corners.smoothCorners,transformOrigin:"left"},thumb:{position:"absolute",top:(r-t.thumbDiameter)/2,left:0,borderWidth:2,shadowColor:a.shadowColor,shadowOffset:a.shadowOffset,shadowOpacity:a.shadowOpacity,shadowRadius:a.shadowRadius,elevation:a.elevation,alignItems:"center",justifyContent:"center"},bubbleWrap:{position:"absolute",bottom:t.thumbDiameter+2,left:t.thumbDiameter/2-80,width:160,alignItems:"center"},bubbleCaret:{width:8,height:8,marginTop:-5,borderRadius:1,..._corners.smoothCorners,transform:[{rotate:"45deg"}]},bubble:{paddingHorizontal:e.spacing.sm,paddingVertical:e.spacing.xxs,borderRadius:e.radius.md,..._corners.smoothCorners,minWidth:36,alignItems:"center",justifyContent:"center",..._reactNative.Platform.select({ios:{shadowColor:e.shadows.sm.shadowColor,shadowOffset:e.shadows.sm.shadowOffset,shadowOpacity:e.shadows.sm.shadowOpacity,shadowRadius:e.shadows.sm.shadowRadius},android:{elevation:e.shadows.sm.elevation},default:{}})},bubbleText:{color:e.colors.onPrimary,fontSize:e.typography.fontSize.xs,fontWeight:e.typography.fontWeight.semibold}})};var _default=exports.default=Slider;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Slider=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated")),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_valueText=require("./valueText.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var a=new WeakMap,r=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var i,n,s={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return s;if(i=t?r:a){if(i.has(e))return i.get(e);i.set(e,s)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((n=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(n.get||n.set)?i(s,t,n):s[t]=e[t]);return s})(e,t)}const VARIANT_SIZE_MAP={inset:{sm:{trackHeight:14,thumbDiameter:10},md:{trackHeight:20,thumbDiameter:14},lg:{trackHeight:26,thumbDiameter:18}},minimal:{sm:{trackHeight:2,thumbDiameter:14},md:{trackHeight:3,thumbDiameter:18},lg:{trackHeight:4,thumbDiameter:22}},bar:{sm:{trackHeight:20,thumbDiameter:20},md:{trackHeight:28,thumbDiameter:28},lg:{trackHeight:36,thumbDiameter:36}}},INSET_RING_RATIO=.3,MIN_THUMB_TOUCH=44,TONE_TO_COLOR_KEY={primary:"primary",success:"success",warning:"warning",error:"error"},clamp=(e,t,a)=>Math.min(Math.max(e,t),a),snapToStep=(e,t,a,r)=>{if(r<=0)return clamp(e,t,a);const i=Math.round((e-t)/r)*r+t,n=String(r).split(".")[1]?.length??0,s=n>0?Number(i.toFixed(n)):i;return clamp(s,t,a)},BUBBLE_GAP=2,BUBBLE_CARET=8,BUBBLE_WRAP_WIDTH=160,NO_SHADOW={shadowOpacity:0,elevation:0},defaultFormatLabel=e=>String(e),Slider=exports.Slider=(0,_react.forwardRef)((e,t)=>{const{min:a=0,max:r=100,step:i=1,disabled:n=!1,tone:s="primary",size:o="md",variant:l="default",showLabel:c=!1,snapThumb:u=!1,formatLabel:d=defaultFormatLabel,renderLabel:m,accessibilityLabel:h,haptic:_,style:b,containerStyle:v,trackStyle:p,fillStyle:f,thumbStyle:g,labelStyle:R,thumbPressScale:y,labelShowDuration:x,labelOpacity:N,testID:w}=e,S=(0,_index2.useTheme)(),k=S.components.slider,j=(0,_react.useMemo)(()=>(0,_index2.resolveSliderSize)(S,o),[S,o]),C=(0,_react.useMemo)(()=>"default"===l?j:VARIANT_SIZE_MAP[l][o],[j,o,l]),O="inset"===l?C.trackHeight/2:0,M=k?.thumbPressAnimation??!1,H=y??k?.thumbPressScale??1.1,D=x??k?.labelShowDuration??S.motion.duration.fast,T=N??k?.labelOpacity??1,A=(0,_react.useMemo)(()=>buildStyles(S,C),[S,C]),E=(0,_react.useMemo)(()=>({damping:S.motion.spring.snappy.damping,stiffness:S.motion.spring.snappy.stiffness,mass:S.motion.spring.snappy.mass}),[S.motion.spring.snappy]),[V,W]=(0,_react.useState)(0),P=S.colors[TONE_TO_COLOR_KEY[s]],I=(0,_valueText.sliderToneInk)(S,s),L=!0===e.range,[q,X]=(0,_index.useControllableState)({value:e.value,defaultValue:e.defaultValue??(L?[a,r]:a),onChange:e.onChange}),B=(0,_reactNativeReanimated.useSharedValue)(0),G=(0,_reactNativeReanimated.useSharedValue)(0),F=(0,_reactNativeReanimated.useSharedValue)(L?q[0]:q),z=(0,_reactNativeReanimated.useSharedValue)(L?q[1]:q),J=(0,_reactNativeReanimated.useSharedValue)(0),U=(0,_reactNativeReanimated.useSharedValue)(0),K=(0,_reactNativeReanimated.useSharedValue)(1),Y=(0,_reactNativeReanimated.useSharedValue)(1),Z="always"===c,$=(0,_reactNativeReanimated.useSharedValue)(Z?1:0),Q=(0,_reactNativeReanimated.useSharedValue)(Z?1:0),ee=(0,_react.useMemo)(()=>10**(String(i).split(".")[1]?.length??0),[i]);(0,_react.useEffect)(()=>()=>{(0,_reactNativeReanimated.cancelAnimation)(B),(0,_reactNativeReanimated.cancelAnimation)(G),(0,_reactNativeReanimated.cancelAnimation)(K),(0,_reactNativeReanimated.cancelAnimation)(Y),(0,_reactNativeReanimated.cancelAnimation)($),(0,_reactNativeReanimated.cancelAnimation)(Q)},[B,G,K,Y,$,Q]);const te=(0,_react.useCallback)((e,t)=>{const i=t-2*O;return r===a||i<=0?O:O+(e-a)/(r-a)*i},[a,r,O]),ae=(0,_react.useCallback)((e,t)=>{const n=t-2*O;if(n<=0)return a;const s=clamp((e-O)/n,0,1);return snapToStep(a+s*(r-a),a,r,i)},[a,r,i,O]),re=(0,_react.useRef)(!1),ie=S.motion.duration.fast,ne=(0,_react.useRef)(q);ne.current=q;const se=(0,_react.useRef)(V);se.current=V;const oe=(0,_react.useCallback)((e=!1)=>{const t=se.current;if(t<=0)return;const place=t=>e?(0,_reactNativeReanimated.withTiming)(t,{duration:ie,easing:_reactNativeReanimated.Easing.out(_reactNativeReanimated.Easing.cubic)}):t,a=ne.current;if(L){const[e,r]=a,i=Math.min(e,r),n=Math.max(e,r);F.value=i,z.value=n,B.value=place(te(i,t)),G.value=place(te(n,t))}else{const e=a;F.value=e,z.value=e,B.value=place(te(e,t))}},[L,te,F,z,B,G,ie]),[le,ce]=(0,_react.useState)(0),ue=(0,_react.useRef)(!1),de=(0,_react.useCallback)(e=>{re.current=e,e||(ue.current=!0,ce(e=>e+1))},[]);(0,_react.useEffect)(()=>{if(re.current)return;const e=ue.current;ue.current=!1,oe(e)},[JSON.stringify(q),V,le,oe]);const me=(0,_react.useCallback)(e=>{const t=e.nativeEvent.layout.width;U.value=t,W(t)},[U]),he=(0,_react.useCallback)((e,t)=>{X(L?[e,t]:e)},[L,X]),be=(0,_react.useCallback)(()=>{const e=(0,_index3.resolveHaptic)(_,"selection");e&&(0,_index3.triggerHaptic)(e)},[_]),ve=(0,_react.useRef)(he);ve.current=he;const pe=(0,_react.useRef)(be);pe.current=be;const fe=(0,_react.useCallback)((e,t)=>ve.current(e,t),[]),ge=(0,_react.useCallback)(()=>pe.current(),[]),Re=Math.max(0,(44-C.thumbDiameter)/2),ye=Re>0?Re:void 0,xe=(0,_react.useCallback)(e=>{const t="low"===e?B:G,s="low"===e?F:z,o="low"===e?z:F,l="low"===e?K:Y,d="low"===e?$:Q,m="low"===e,h=a,_=r,b=i,v=ee,p=L,f=H,g=M,R=!0===c,y=u,x=T,N=D,w=E,S=O,follow=e=>{"worklet";const a=U.value-2*S;if(a<=0||!Number.isFinite(e))return;const r=Math.min(Math.max(J.value+e,S),U.value-S);let i=h+(r-S)/a*(_-h);b>0&&(i=Math.round((i-h)/b)*b+h,i=Math.round(i*v)/v),i=Math.min(Math.max(i,h),_),p&&(m&&i>o.value&&(i=o.value),!m&&i<o.value&&(i=o.value)),t.value=y||_===h?_===h?S:S+(i-h)/(_-h)*a:p?m?Math.min(r,G.value):Math.max(r,B.value):r,i!==s.value&&(s.value=i,i!==h&&i!==_||(0,_reactNativeReanimated.runOnJS)(ge)(),(0,_reactNativeReanimated.runOnJS)(fe)(F.value,z.value))},k=_reactNativeGestureHandler.Gesture.Pan().enabled(!n).minDistance(0);return(void 0===ye?k:k.hitSlop(ye)).onStart(()=>{"worklet";(0,_reactNativeReanimated.runOnJS)(de)(!0),J.value=t.value,g&&(l.value=(0,_reactNativeReanimated.withSpring)(f,w)),R&&(d.value=(0,_reactNativeReanimated.withTiming)(x,{duration:N,easing:_reactNativeReanimated.Easing.out(_reactNativeReanimated.Easing.cubic)})),(0,_reactNativeReanimated.runOnJS)(ge)()}).onUpdate(e=>{"worklet";follow(e.translationX)}).onEnd(e=>{"worklet";follow(e.translationX),g&&(l.value=(0,_reactNativeReanimated.withSpring)(1,w)),R&&(d.value=(0,_reactNativeReanimated.withTiming)(0,{duration:N,easing:_reactNativeReanimated.Easing.out(_reactNativeReanimated.Easing.cubic)}))}).onFinalize(()=>{"worklet";(0,_reactNativeReanimated.runOnJS)(de)(!1)})},[n,a,r,i,ee,L,H,M,c,u,T,D,E,O,ye,fe,ge,de,B,G,F,z,K,Y,$,Q,J,U]),Ne=(0,_react.useMemo)(()=>xe("low"),[xe]),we=(0,_react.useMemo)(()=>xe("high"),[xe]),Se=(0,_react.useCallback)(e=>{if(n||L||V<=0)return;const t=clamp(e.nativeEvent.locationX,0,V),a=ae(t,V);a!==F.value&&(be(),F.value=a,B.value=(0,_reactNativeReanimated.withTiming)(te(a,V),{duration:S.motion.duration.fast,easing:_reactNativeReanimated.Easing.out(_reactNativeReanimated.Easing.cubic)}),he(a,a))},[n,L,V,ae,te,he,be,B,F,S.motion.duration.fast]),ke=(0,_react.useCallback)(e=>{if(n)return;const t="increment"===e.nativeEvent.actionName?i:-i,s=i>0?Math.round(t*ee)/ee:t;if(L){const e=Math.round((F.value+s)*ee)/ee,t=clamp(e,a,z.value);t!==F.value&&(F.value=t,B.value=te(t,V),be(),he(t,z.value))}else{const e=Math.round((F.value+s)*ee)/ee,t=clamp(e,a,r);t!==F.value&&(F.value=t,B.value=te(t,V),be(),he(t,t))}},[n,i,ee,L,a,r,te,V,B,F,z,he,be]),je=C.thumbDiameter/2,Ce=n?S.colors.surface.disabled:P,Oe="inset"===l?{backgroundColor:Ce,borderColor:S.colors.background.elevated,borderWidth:Math.max(2,Math.round(.3*C.thumbDiameter)),...NO_SHADOW}:"minimal"===l?{backgroundColor:Ce,borderWidth:0}:"bar"===l?{backgroundColor:"transparent",borderWidth:0,...NO_SHADOW}:{backgroundColor:S.colors.background.elevated,borderColor:Ce},Me=(0,_reactNativeReanimated.useAnimatedStyle)(()=>{const e=U.value;if(e<=0)return{opacity:0,transform:[{translateX:0},{scaleX:1}]};const t=n?.55:1;if(L){const a=Math.max(0,G.value-B.value+2*O);return{opacity:t,transform:[{translateX:B.value-O},{scaleX:a/e}]}}return{opacity:t,transform:[{translateX:B.value+O-e},{scaleX:1}]}}),He=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({transform:[{translateX:B.value-je},{scale:K.value}]})),De=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({transform:[{translateX:G.value-je},{scale:Y.value}]})),Te=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({opacity:$.value})),Ae=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({opacity:Q.value})),clampDisplay=e=>clamp(e,a,r),Ee=clampDisplay(L?Math.min(...q):q),Ve=clampDisplay(L?Math.max(...q):q);return(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,style:[A.container,v,b],testID:w,accessibilityRole:"adjustable",accessibilityLabel:h,accessibilityState:{disabled:n},"aria-disabled":n,accessibilityValue:L?{min:a,max:r,now:Ee,text:`${Ee} to ${Ve}`}:{min:a,max:r,now:Ee},accessibilityActions:[{name:"increment"},{name:"decrement"}],onAccessibilityAction:ke,children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:Se,disabled:n||L,style:A.trackTouch,accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:A.trackWrap,onLayout:me,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:A.trackClip,pointerEvents:"none",children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[A.track,{backgroundColor:n?S.colors.surface.disabled:S.colors.border.primary},p]}),(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[A.fill,{backgroundColor:n?S.colors.surface.disabled:P},f,Me]})]}),(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:Ne,children:(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[A.thumb,{width:C.thumbDiameter,height:C.thumbDiameter,borderRadius:je,..._corners.smoothCorners,opacity:n?.55:1},Oe,g,He],accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",children:c?(0,_jsxRuntime.jsxs)(_reactNativeReanimated.default.View,{style:[A.bubbleWrap,Te],pointerEvents:"none",children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[A.bubble,{backgroundColor:P}],children:m?m(Ee):(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[A.bubbleText,{color:I},R],numberOfLines:1,children:d(Ee)})}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[A.bubbleCaret,{backgroundColor:P}]})]}):null})}),L?(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:we,children:(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[A.thumb,{width:C.thumbDiameter,height:C.thumbDiameter,borderRadius:je,..._corners.smoothCorners,opacity:n?.55:1},Oe,g,De],accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",children:c?(0,_jsxRuntime.jsxs)(_reactNativeReanimated.default.View,{style:[A.bubbleWrap,Ae],pointerEvents:"none",children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[A.bubble,{backgroundColor:P}],children:m?m(Ve):(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[A.bubbleText,{color:I},R],numberOfLines:1,children:d(Ve)})}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[A.bubbleCaret,{backgroundColor:P}]})]}):null})}):null]})})})});Slider.displayName="Slider";const buildStyles=(e,t)=>{const a=e.shadows.md,r=Math.max(t.thumbDiameter,t.trackHeight),i=r/2+e.spacing.xs;return _reactNative.StyleSheet.create({container:{width:"100%",paddingVertical:i,justifyContent:"center"},trackTouch:{width:"100%",justifyContent:"center"},trackWrap:{width:"100%",height:r,justifyContent:"center"},trackClip:{position:"absolute",left:0,right:0,height:t.trackHeight,top:(r-t.trackHeight)/2,borderRadius:t.trackHeight/2,..._corners.smoothCorners,overflow:"hidden"},track:{position:"absolute",top:0,right:0,bottom:0,left:0,borderRadius:t.trackHeight/2,..._corners.smoothCorners},fill:{position:"absolute",top:0,left:0,width:"100%",height:t.trackHeight,borderRadius:t.trackHeight/2,..._corners.smoothCorners,transformOrigin:"left"},thumb:{position:"absolute",top:(r-t.thumbDiameter)/2,left:0,borderWidth:2,shadowColor:a.shadowColor,shadowOffset:a.shadowOffset,shadowOpacity:a.shadowOpacity,shadowRadius:a.shadowRadius,elevation:a.elevation,alignItems:"center",justifyContent:"center"},bubbleWrap:{position:"absolute",bottom:t.thumbDiameter+2,left:t.thumbDiameter/2-80,width:160,alignItems:"center"},bubbleCaret:{width:8,height:8,marginTop:-5,borderRadius:e.radius.none,..._corners.smoothCorners,transform:[{rotate:"45deg"}]},bubble:{paddingHorizontal:e.spacing.sm,paddingVertical:e.spacing.xxs,borderRadius:e.radius.md,..._corners.smoothCorners,minWidth:36,alignItems:"center",justifyContent:"center",..._reactNative.Platform.select({ios:{shadowColor:e.shadows.sm.shadowColor,shadowOffset:e.shadows.sm.shadowOffset,shadowOpacity:e.shadows.sm.shadowOpacity,shadowRadius:e.shadows.sm.shadowRadius},android:{elevation:e.shadows.sm.elevation},default:{}})},bubbleText:{color:e.colors.onPrimary,fontSize:e.typography.fontSize.xs,fontWeight:e.typography.fontWeight.semibold}})};var _default=exports.default=Slider;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SliderField=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../AppIcon/index.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_index4=require("../IconButton/index.js"),_index5=require("../Slider/index.js"),_valueText=require("../Slider/valueText.js"),_index6=require("../Tooltip/index.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_INPUT_WIDTH=72,defaultFormatValue=e=>String(e),stepDecimals=e=>String(e).split(".")[1]?.length??0,ValueBox=({draft:e,error:t,disabled:i,width:l,accessibilityLabel:s,style:a,testID:n})=>{const r=(0,_index2.useTheme)(),o=(0,_FieldBase.resolveFieldSize)(r,"sm"),d=(0,_FieldBase.resolveFieldTextStyle)(r,{disabled:i}),u=(0,_react.useRef)(null),c=(0,_react.useCallback)(()=>{i||u.current?.focus()},[i]);return(0,_jsxRuntime.jsx)(_FieldBase.FieldBase,{size:"sm",focused:e.editing,disabled:i,error:t,filled:!0,width:l,onPress:c,pressFeedback:!1,paddingHorizontal:r.spacing.sm,gap:r.spacing.xs,trailing:t?(0,_jsxRuntime.jsx)(_index3.AppIcon,{name:"info-circle",size:o.iconSize,color:r.colors.toneText.error}):void 0,style:a,children:(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:u,style:[styles.boxInput,{color:d.color,fontSize:o.fontSize,...d.weightStyle}],value:e.text,onChangeText:e.onChangeText,onFocus:e.onFocus,onBlur:e.onBlur,onSubmitEditing:e.onBlur,editable:!i,keyboardType:"decimal-pad",returnKeyType:"done",textAlign:"center",selectionColor:r.colors.primary,accessibilityLabel:s,accessibilityState:{disabled:i},"aria-disabled":i,testID:n})})},SliderField=exports.SliderField=(0,_react.forwardRef)((e,t)=>{const{label:i,unit:l,info:s,required:a=!1,helperText:n,error:r,min:o=0,max:d=100,step:u=1,disabled:c=!1,tone:x="primary",size:_,variant:m,haptic:p,showBubble:b=!0,showBounds:h=!0,showInput:j=!1,showStepper:y=!1,startIcon:v,endIcon:g,startLabel:f,endLabel:S,formatValue:I=defaultFormatValue,parseInput:T,animationDuration:R,inputWidth:w=DEFAULT_INPUT_WIDTH,accessibilityLabel:F,style:B,labelStyle:z,boundStyle:V,sliderStyle:D,inputStyle:L,testID:N}=e,q=(0,_index2.useTheme)(),C=(0,_react.useMemo)(()=>buildStyles(q),[q]),$=R??q.motion.duration.fast,A=!0===e.range,W=!0===r||(0,_FieldBase.hasFieldText)(r),P=stepDecimals(u),[M,k]=(0,_index.useControllableState)({value:e.value,defaultValue:e.defaultValue??(A?[o,d]:o),onChange:e.onChange}),[H,U]=A?M:[M,d],E=(0,_valueText.clampValue)(Math.min(H,U),o,d),K=(0,_valueText.clampValue)(Math.max(H,U),o,d),O=(0,_valueText.useValueDraft)({value:E,min:o,max:d,step:u,format:I,parse:T,onChange:e=>k(A?[Math.min(e,K),K]:e)}),G=(0,_valueText.useValueDraft)({value:K,min:o,max:d,step:u,format:I,parse:T,onChange:e=>k([E,Math.max(e,E)])}),stepBy=e=>{const t=(0,_valueText.snapValue)(E+e*u,o,d,u);t!==E&&k(t)},J={color:c?q.colors.text.disabled:q.colors.text.secondary,size:q.components.field?.md?.iconSize??18,disabled:c},Q=[C.bubbleText,{color:(0,_valueText.sliderToneInk)(q,x),fontWeight:q.typography.fontWeight.semibold}],boundText=e=>(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[C.bound,{color:c?q.colors.text.disabled:q.colors.text.secondary},V],children:e}),X={min:o,max:d,step:u,disabled:c,tone:x,size:_,variant:m,haptic:p,showLabel:!!b&&"always",renderLabel:b?e=>(0,_jsxRuntime.jsx)(_valueText.CountingText,{value:e,format:I,decimals:P,duration:$,style:Q,testID:N&&!A?`${N}-bubble`:void 0}):void 0,accessibilityLabel:F??i,style:D,testID:N?`${N}-slider`:void 0};return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,style:[C.container,B],testID:N,children:[i?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:C.labelRow,children:[(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{required:a,style:z,children:i}),l?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[C.unit,{color:q.colors.text.tertiary}],children:l}):null,s?(0,_jsxRuntime.jsx)(_index6.Tooltip,{content:s,trigger:"press",placement:"top",children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{accessibilityRole:"button",accessibilityLabel:`About ${i}`,hitSlop:8,style:C.infoButton,children:(0,_jsxRuntime.jsx)(_index3.AppIcon,{name:"info-circle",variant:"bold",size:16,color:q.colors.text.tertiary})})}):null]}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[C.row,b?C.rowWithBubble:null],children:[v?(0,_jsxRuntime.jsx)(_reactNative.View,{children:(0,_index3.renderSlotIcon)(v,J)}):null,y&&!A?(0,_jsxRuntime.jsx)(_index4.IconButton,{icon:e=>(0,_jsxRuntime.jsx)(_index3.AppIcon,{name:"minus",size:e.size,color:e.color}),onPress:()=>stepBy(-1),accessibilityLabel:"Decrease",variant:"ghost",tone:"neutral",size:"sm",disabled:c||E<=o,haptic:p,testID:N?`${N}-minus`:void 0}):null,A&&j?(0,_jsxRuntime.jsx)(ValueBox,{draft:O,error:W,disabled:c,width:w,accessibilityLabel:`${i??"Value"} low`,style:L,testID:N?`${N}-input-low`:void 0}):h?boundText(f??I(o)):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:C.sliderWrap,children:A?(0,_jsxRuntime.jsx)(_index5.Slider,{...X,range:!0,value:[E,K],onChange:k}):(0,_jsxRuntime.jsx)(_index5.Slider,{...X,value:E,onChange:k})}),A&&j?(0,_jsxRuntime.jsx)(ValueBox,{draft:G,error:W,disabled:c,width:w,accessibilityLabel:`${i??"Value"} high`,style:L,testID:N?`${N}-input-high`:void 0}):h?boundText(S??I(d)):null,y&&!A?(0,_jsxRuntime.jsx)(_index4.IconButton,{icon:e=>(0,_jsxRuntime.jsx)(_index3.AppIcon,{name:"add",size:e.size,color:e.color}),onPress:()=>stepBy(1),accessibilityLabel:"Increase",variant:"ghost",tone:"neutral",size:"sm",disabled:c||E>=d,haptic:p,testID:N?`${N}-plus`:void 0}):null,g?(0,_jsxRuntime.jsx)(_reactNative.View,{children:(0,_index3.renderSlotIcon)(g,J)}):null,!A&&j?(0,_jsxRuntime.jsx)(ValueBox,{draft:O,error:W,disabled:c,width:w,accessibilityLabel:`${i??"Value"} value`,style:L,testID:N?`${N}-input`:void 0}):null]}),(0,_jsxRuntime.jsx)(_FieldBase.FieldMessage,{text:W?r:n,error:W})]})});SliderField.displayName="SliderField";const styles=_reactNative.StyleSheet.create({boxInput:{flex:1,padding:0,margin:0,includeFontPadding:!1}}),buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},labelRow:{flexDirection:"row",alignItems:"center",gap:e.spacing.xs},unit:{fontSize:e.typography.fontSize.xs},infoButton:{marginLeft:e.spacing.xxs},row:{flexDirection:"row",alignItems:"center",gap:e.spacing.sm},rowWithBubble:{marginTop:e.spacing.lg},sliderWrap:{flex:1,paddingHorizontal:10},bound:{fontSize:e.typography.fontSize.sm,fontVariant:["tabular-nums"]},bubbleText:{fontSize:e.typography.fontSize.xs,fontVariant:["tabular-nums"]}});var _default=exports.default=SliderField;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SliderField=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../AppIcon/index.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_index4=require("../IconButton/index.js"),_index5=require("../Slider/index.js"),_valueText=require("../Slider/valueText.js"),_index6=require("../Tooltip/index.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_INPUT_WIDTH=72,defaultFormatValue=e=>String(e),stepDecimals=e=>String(e).split(".")[1]?.length??0,ValueBox=({draft:e,error:t,disabled:i,width:l,accessibilityLabel:s,styles:a,style:n,testID:r})=>{const o=(0,_index2.useTheme)(),d=(0,_index2.resolveFieldSize)(o,"sm"),u=(0,_FieldBase.resolveFieldTextStyle)(o,{disabled:i}),c=(0,_react.useRef)(null),x=(0,_react.useCallback)(()=>{i||c.current?.focus()},[i]);return(0,_jsxRuntime.jsx)(_FieldBase.FieldBase,{size:"sm",focused:e.editing,disabled:i,error:t,filled:!0,width:l,onPress:x,pressFeedback:!1,paddingHorizontal:o.spacing.sm,gap:o.spacing.xs,trailing:t?(0,_jsxRuntime.jsx)(_index3.AppIcon,{name:"info-circle",size:d.icon,color:o.colors.toneText.error}):void 0,style:n,children:(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:c,style:[a.boxInput,{color:u.color,fontSize:d.text,...u.weightStyle}],value:e.text,onChangeText:e.onChangeText,onFocus:e.onFocus,onBlur:e.onBlur,onSubmitEditing:e.onBlur,editable:!i,keyboardType:"decimal-pad",returnKeyType:"done",textAlign:"center",selectionColor:o.colors.primary,accessibilityLabel:s,accessibilityState:{disabled:i},"aria-disabled":i,testID:r})})},SliderField=exports.SliderField=(0,_react.forwardRef)((e,t)=>{const{label:i,unit:l,info:s,required:a=!1,helperText:n,error:r,min:o=0,max:d=100,step:u=1,disabled:c=!1,tone:x="primary",size:_,variant:m,haptic:p,showBubble:b=!0,showBounds:h=!0,showInput:j=!1,showStepper:y=!1,startIcon:g,endIcon:v,startLabel:f,endLabel:S,formatValue:I=defaultFormatValue,parseInput:T,animationDuration:R,inputWidth:w=DEFAULT_INPUT_WIDTH,accessibilityLabel:F,style:B,labelStyle:V,boundStyle:z,sliderStyle:D,inputStyle:L,testID:N}=e,q=(0,_index2.useTheme)(),C=(0,_react.useMemo)(()=>buildStyles(q),[q]),$=R??q.motion.duration.fast,A=!0===e.range,W=!0===r||(0,_FieldBase.hasFieldText)(r),P=stepDecimals(u),[M,k]=(0,_index.useControllableState)({value:e.value,defaultValue:e.defaultValue??(A?[o,d]:o),onChange:e.onChange}),[H,U]=A?M:[M,d],E=(0,_valueText.clampValue)(Math.min(H,U),o,d),K=(0,_valueText.clampValue)(Math.max(H,U),o,d),O=(0,_valueText.useValueDraft)({value:E,min:o,max:d,step:u,format:I,parse:T,onChange:e=>k(A?[Math.min(e,K),K]:e)}),G=(0,_valueText.useValueDraft)({value:K,min:o,max:d,step:u,format:I,parse:T,onChange:e=>k([E,Math.max(e,E)])}),stepBy=e=>{const t=(0,_valueText.snapValue)(E+e*u,o,d,u);t!==E&&k(t)},J={color:c?q.colors.text.disabled:q.colors.text.secondary,size:(0,_index2.resolveFieldSize)(q,"md").icon,disabled:c},Q=[C.bubbleText,{color:(0,_valueText.sliderToneInk)(q,x),fontWeight:q.typography.fontWeight.semibold}],boundText=e=>(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[C.bound,{color:c?q.colors.text.disabled:q.colors.text.secondary},z],children:e}),X={min:o,max:d,step:u,disabled:c,tone:x,size:_,variant:m,haptic:p,showLabel:!!b&&"always",renderLabel:b?e=>(0,_jsxRuntime.jsx)(_valueText.CountingText,{value:e,format:I,decimals:P,duration:$,style:Q,testID:N&&!A?`${N}-bubble`:void 0}):void 0,accessibilityLabel:F??i,style:D,testID:N?`${N}-slider`:void 0};return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,style:[C.container,B],testID:N,children:[i?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:C.labelRow,children:[(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{required:a,style:V,children:i}),l?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[C.unit,{color:q.colors.text.tertiary}],children:l}):null,s?(0,_jsxRuntime.jsx)(_index6.Tooltip,{content:s,trigger:"press",placement:"top",children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{accessibilityRole:"button",accessibilityLabel:`About ${i}`,hitSlop:8,style:C.infoButton,children:(0,_jsxRuntime.jsx)(_index3.AppIcon,{name:"info-circle",variant:"bold",size:16,color:q.colors.text.tertiary})})}):null]}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[C.row,b?C.rowWithBubble:null],children:[g?(0,_jsxRuntime.jsx)(_reactNative.View,{children:(0,_index3.renderSlotIcon)(g,J)}):null,y&&!A?(0,_jsxRuntime.jsx)(_index4.IconButton,{icon:e=>(0,_jsxRuntime.jsx)(_index3.AppIcon,{name:"minus",size:e.size,color:e.color}),onPress:()=>stepBy(-1),accessibilityLabel:"Decrease",variant:"ghost",tone:"neutral",size:"sm",disabled:c||E<=o,haptic:p,testID:N?`${N}-minus`:void 0}):null,A&&j?(0,_jsxRuntime.jsx)(ValueBox,{draft:O,error:W,disabled:c,width:w,accessibilityLabel:`${i??"Value"} low`,styles:C,style:L,testID:N?`${N}-input-low`:void 0}):h?boundText(f??I(o)):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:C.sliderWrap,children:A?(0,_jsxRuntime.jsx)(_index5.Slider,{...X,range:!0,value:[E,K],onChange:k}):(0,_jsxRuntime.jsx)(_index5.Slider,{...X,value:E,onChange:k})}),A&&j?(0,_jsxRuntime.jsx)(ValueBox,{draft:G,error:W,disabled:c,width:w,accessibilityLabel:`${i??"Value"} high`,styles:C,style:L,testID:N?`${N}-input-high`:void 0}):h?boundText(S??I(d)):null,y&&!A?(0,_jsxRuntime.jsx)(_index4.IconButton,{icon:e=>(0,_jsxRuntime.jsx)(_index3.AppIcon,{name:"add",size:e.size,color:e.color}),onPress:()=>stepBy(1),accessibilityLabel:"Increase",variant:"ghost",tone:"neutral",size:"sm",disabled:c||E>=d,haptic:p,testID:N?`${N}-plus`:void 0}):null,v?(0,_jsxRuntime.jsx)(_reactNative.View,{children:(0,_index3.renderSlotIcon)(v,J)}):null,!A&&j?(0,_jsxRuntime.jsx)(ValueBox,{draft:O,error:W,disabled:c,width:w,accessibilityLabel:`${i??"Value"} value`,styles:C,style:L,testID:N?`${N}-input`:void 0}):null]}),(0,_jsxRuntime.jsx)(_FieldBase.FieldMessage,{text:W?r:n,error:W})]})});SliderField.displayName="SliderField";const buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},labelRow:{flexDirection:"row",alignItems:"center",gap:e.spacing.xs},unit:{fontSize:e.typography.fontSize.xs},infoButton:{marginLeft:e.spacing.xxs},row:{flexDirection:"row",alignItems:"center",gap:e.spacing.sm},rowWithBubble:{marginTop:e.spacing.lg},sliderWrap:{flex:1,paddingHorizontal:e.spacing.sm},bound:{fontSize:e.typography.fontSize.sm,fontVariant:["tabular-nums"]},bubbleText:{fontSize:e.typography.fontSize.xs,fontVariant:["tabular-nums"]},boxInput:{flex:1,padding:e.spacing.none,margin:e.spacing.none,includeFontPadding:!1}});var _default=exports.default=SliderField;
@@ -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"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_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_GROW_SCALE=1.4,DOT_PULSE_MIN_OPACITY=.4,Dot=({size:e,color:t,delay:i,duration:r,reduced:n})=>{const a=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.loop(_reactNative.Animated.sequence([_reactNative.Animated.delay(i),_reactNative.Animated.timing(a,{toValue:1,duration:r/2,easing:_reactNative.Easing.out(_reactNative.Easing.quad),useNativeDriver:!0}),_reactNative.Animated.timing(a,{toValue:0,duration:r/2,easing:_reactNative.Easing.in(_reactNative.Easing.quad),useNativeDriver:!0})]));return e.start(),()=>{e.stop()}},[a,i,r]);const s=(0,_react.useMemo)(()=>({grow:a.interpolate({inputRange:[0,1],outputRange:[1,1.4]}),fade:a.interpolate({inputRange:[0,1],outputRange:[.4,1]})}),[a]);return(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{width:e,height:e,borderRadius:e/2,..._corners.smoothCorners,backgroundColor:t,...n?{opacity:s.fade}:{transform:[{scale:s.grow}]}}})},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,_usePresenceMotion.usePresenceMotion)(),y=m.duration("normal"),v=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current;(0,_react.useEffect)(()=>{_reactNative.Animated.timing(v,{toValue:1,duration:y,easing:_reactNative.Easing.bezier(..._.motion.easing.standard),useNativeDriver:!0}).start()},[v,_,y]);const h=(0,_react.useMemo)(()=>buildStyles(_),[_]),p=sizeMap[i],x=r??_.colors.primary,f=s??_.colors.background.overlay,j=(0,_react.useMemo)(()=>{if("contained"===o){const e=Math.round(1.5*p);return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[h.container,{width:e,height:e,borderRadius:e/2,backgroundColor:(0,_color.blendOf)(x,.14,_.colors.background.elevated,_.colors.background.secondary)}],children:(0,_jsxRuntime.jsx)(_reactNative.ActivityIndicator,{color:x,size:"sm"===i?"small":"large",style:{width:p,height:p}})})}if("dots"===o){const e=Math.max(6,Math.round(p/4));return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[h.dotsRow,{gap:Math.round(e/2)}],children:Array.from({length:3}).map((t,i)=>(0,_jsxRuntime.jsx)(Dot,{size:e,color:x,delay:150*i,duration:600,reduced:m.reduced},i))})}return(0,_jsxRuntime.jsx)(_reactNative.ActivityIndicator,{color:x,size:"sm"===i?"small":"large",style:{width:p,height:p}})},[o,i,p,x,h.dotsRow,h.container,m.reduced,_.colors.background.elevated,_.colors.background.secondary]),b=c??n??"Loading",R=(0,_react.useRef)(b);R.current=b,(0,_react.useEffect)(()=>{d&&(0,_announce.announce)(R.current)},[d]);const N=(0,_SquircleFill.useSquircle)(g,_.radius.lg),S=N.active&&N.size?{borderRadius:(0,_squircle.squircleHostRadius)(N.size.width,N.size.height,_.radius.lg)}:null;let C=h.inlineContent;g?C=h.overlayContent:d&&(C=h.containedContent);const q=(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{ref:t,accessible:!0,accessibilityRole:"progressbar",accessibilityLiveRegion:d?"none":"polite",accessibilityLabel:b,accessibilityState:{busy:!0},"aria-busy":!0,testID:u,onLayout:N.onLayout,style:[C,S,{opacity:v}],children:[N.active&&N.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:N.size.width,height:N.size.height,radius:_.radius.lg,fill:_.colors.background.elevated}):null,j,n?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[h.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:[h.overlay,{backgroundColor:f},l],children:q}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[d?h.containedFill:h.inline,l],children:q})});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
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Spinner=void 0;var _react=require("react"),_reactNative=require("react-native"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_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_GROW_SCALE=1.4,DOT_PULSE_MIN_OPACITY=.4,Dot=({size:e,color:t,delay:i,duration:r,reduced:n})=>{const a=(0,_index.useTheme)(),s=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.loop(_reactNative.Animated.sequence([_reactNative.Animated.delay(i),_reactNative.Animated.timing(s,{toValue:1,duration:r/2,easing:_reactNative.Easing.out(_reactNative.Easing.quad),useNativeDriver:!0}),_reactNative.Animated.timing(s,{toValue:0,duration:r/2,easing:_reactNative.Easing.in(_reactNative.Easing.quad),useNativeDriver:!0})]));return e.start(),()=>{e.stop()}},[s,i,r]);const o=(0,_react.useMemo)(()=>({grow:s.interpolate({inputRange:[0,1],outputRange:[1,1.4]}),fade:s.interpolate({inputRange:[0,1],outputRange:[.4,1]})}),[s]);return(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{width:e,height:e,borderRadius:a.radius.pill,..._corners.smoothCorners,backgroundColor:t,...n?{opacity:o.fade}:{transform:[{scale:o.grow}]}}})},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,_=a&&!d,g=(0,_index.useTheme)(),m=(0,_usePresenceMotion.usePresenceMotion)(),y=m.duration("normal"),v=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current;(0,_react.useEffect)(()=>{_reactNative.Animated.timing(v,{toValue:1,duration:y,easing:_reactNative.Easing.bezier(...g.motion.easing.standard),useNativeDriver:!0}).start()},[v,g,y]);const p=(0,_react.useMemo)(()=>buildStyles(g),[g]),h=sizeMap[i],x=r??g.colors.primary,f=s??g.colors.background.overlay,j=(0,_react.useMemo)(()=>{if("contained"===o){const e=Math.round(1.5*h);return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[p.container,{width:e,height:e,borderRadius:g.radius.pill,backgroundColor:(0,_color.blendOf)(x,.14,g.colors.background.elevated,g.colors.background.secondary)}],children:(0,_jsxRuntime.jsx)(_reactNative.ActivityIndicator,{color:x,size:"sm"===i?"small":"large",style:{width:h,height:h}})})}if("dots"===o){const e=Math.max(6,Math.round(h/4));return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[p.dotsRow,{gap:Math.round(e/2)}],children:Array.from({length:3}).map((t,i)=>(0,_jsxRuntime.jsx)(Dot,{size:e,color:x,delay:150*i,duration:600,reduced:m.reduced},i))})}return(0,_jsxRuntime.jsx)(_reactNative.ActivityIndicator,{color:x,size:"sm"===i?"small":"large",style:{width:h,height:h}})},[o,i,h,x,p.dotsRow,p.container,m.reduced,g.radius.pill,g.colors.background.elevated,g.colors.background.secondary]),b=c??n??"Loading",R=(0,_react.useRef)(b);R.current=b,(0,_react.useEffect)(()=>{d&&(0,_announce.announce)(R.current)},[d]);const N=(0,_SquircleFill.useSquircle)(_,g.radius.lg),S=N.active&&N.size?{borderRadius:(0,_squircle.squircleHostRadius)(N.size.width,N.size.height,g.radius.lg)}:null;let C=p.inlineContent;_?C=p.overlayContent:d&&(C=p.containedContent);const q=(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{ref:t,accessible:!0,accessibilityRole:"progressbar",accessibilityLiveRegion:d?"none":"polite",accessibilityLabel:b,accessibilityState:{busy:!0},"aria-busy":!0,testID:u,onLayout:N.onLayout,style:[C,S,{opacity:v}],children:[N.active&&N.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:N.size.width,height:N.size.height,radius:g.radius.lg,fill:g.colors.background.elevated}):null,j,n?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[p.message,{color:g.colors.text.primary,fontSize:g.typography.fontSize.base,fontWeight:g.typography.fontWeight.medium,marginTop:g.spacing.md}],numberOfLines:2,children:n}):null]});return _?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"auto",style:[p.overlay,{backgroundColor:f},l],children:q}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[d?p.containedFill:p.inline,l],children:q})});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.StatusBadge=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_toneInk=require("../../theme/toneInk.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_index2=require("../Skeleton/index.js"),_jsxRuntime=require("react/jsx-runtime");const sizeMap={sm:{height:22,paddingH:8,fontSize:11,dot:5,gap:5},md:{height:24,paddingH:10,fontSize:12,dot:6,gap:6}},SOFT_FILL_OPACITY=.14,SOFT_BORDER_OPACITY=.4,BORDER_WIDTH=1,toneFor=(e,t)=>{const{toneText:r}=e.colors;switch(t){case"success":return{base:e.colors.success,on:e.colors.onSuccess,ink:r.success};case"warning":return{base:e.colors.warning,on:e.colors.onWarning,ink:r.warning};case"error":case"danger":return{base:e.colors.error,on:e.colors.onError,ink:r.error};case"info":return{base:e.colors.info,on:e.colors.onInfo,ink:r.info};case"primary":return{base:e.colors.primary,on:e.colors.onPrimary,ink:r.primary};default:return{base:e.colors.text.secondary,on:e.colors.onNeutral,ink:e.colors.text.secondary}}},isHex=e=>"string"==typeof e&&/^#[0-9a-f]{6}$/i.test(e),paletteFor=(e,t,r,o)=>{const s=isHex(o),{base:n,on:a,ink:i}=s?{base:o,on:e.colors.text.inverse,ink:(0,_toneInk.deriveToneInk)(o,[e.colors.background.primary,e.colors.background.secondary,e.colors.background.tertiary],e.mode)}:toneFor(e,t),l=!s&&"neutral"===t,c=l?e.colors.background.tertiary:(0,_color.tintOf)(n,.14,e.colors.background.secondary),d=l?e.colors.border.primary:(0,_color.tintOf)(n,.4,n);switch(r){case"solid":return{fill:n,border:n,text:a,dot:a};case"outline":return{fill:"transparent",border:l?d:n,text:i,dot:n};default:return{fill:c,border:d,text:i,dot:n}}},StatusBadge=exports.StatusBadge=(0,_react.forwardRef)((e,t)=>{const{label:r,tone:o="neutral",variant:s="soft",size:n="md",dot:a=!1,color:i,loading:l=!1,accessibilityLabel:c,style:d,textStyle:u,testID:g}=e,x=(0,_index.useTheme)(),b=sizeMap[n],f=(0,_react.useMemo)(()=>paletteFor(x,o,s,i),[x,o,s,i]);return l?(0,_jsxRuntime.jsx)(StatusBadgeSkeleton,{...e}):(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,accessible:!0,accessibilityRole:"text",accessibilityLabel:c??r,testID:g,style:[styles.base,{minHeight:b.height,paddingHorizontal:b.paddingH,borderRadius:x.radius.full,..._corners.smoothCorners,backgroundColor:f.fill,borderColor:f.border,borderWidth:1},d],children:[a?(0,_jsxRuntime.jsx)(_reactNative.View,{testID:"status-badge-dot",style:{width:b.dot,height:b.dot,borderRadius:b.dot/2,marginRight:b.gap,backgroundColor:f.dot}}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[styles.label,{color:f.text,fontSize:b.fontSize,...(0,_index.fontFor)(x,"semibold")},u],numberOfLines:1,maxFontSizeMultiplier:x.maxFontSizeMultiplier,children:r})]})});StatusBadge.displayName="StatusBadge";const StatusBadgeSkeleton=({label:e,size:t="md",dot:r,style:o})=>{const s=sizeMap[t],n=Math.max(32,Math.min(120,6.5*(e??"").length))+2*s.paddingH+(r?s.dot+s.gap:0);return(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:n,height:s.height,radius:s.height/2,style:[styles.skeleton,o]})};StatusBadgeSkeleton.displayName="StatusBadgeSkeleton",StatusBadge.Skeleton=StatusBadgeSkeleton;const styles=_reactNative.StyleSheet.create({base:{alignSelf:"flex-start",flexDirection:"row",alignItems:"center",justifyContent:"center"},label:{textAlign:"center",includeFontPadding:!1,textAlignVertical:"center"},skeleton:{alignSelf:"flex-start"}});var _default=exports.default=StatusBadge;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.StatusBadge=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_toneInk=require("../../theme/toneInk.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_index2=require("../Skeleton/index.js"),_jsxRuntime=require("react/jsx-runtime");const sizeMap={sm:{height:22,paddingX:"sm",text:"xs",dot:5,gap:"xs"},md:{height:24,paddingX:"md",text:"sm",dot:6,gap:"xs"}},sizeFor=(e,t)=>{const r=sizeMap[t];return{height:r.height,paddingH:e.spacing[r.paddingX],fontSize:e.typography.fontSize[r.text],dot:r.dot,gap:e.spacing[r.gap]}},SOFT_FILL_OPACITY=.14,SOFT_BORDER_OPACITY=.4,BORDER_WIDTH=1,toneFor=(e,t)=>{const{toneText:r}=e.colors;switch(t){case"success":return{base:e.colors.success,on:e.colors.onSuccess,ink:r.success};case"warning":return{base:e.colors.warning,on:e.colors.onWarning,ink:r.warning};case"error":case"danger":return{base:e.colors.error,on:e.colors.onError,ink:r.error};case"info":return{base:e.colors.info,on:e.colors.onInfo,ink:r.info};case"primary":return{base:e.colors.primary,on:e.colors.onPrimary,ink:r.primary};default:return{base:e.colors.text.secondary,on:e.colors.onNeutral,ink:e.colors.text.secondary}}},isHex=e=>"string"==typeof e&&/^#[0-9a-f]{6}$/i.test(e),paletteFor=(e,t,r,o)=>{const s=isHex(o),{base:n,on:a,ink:i}=s?{base:o,on:e.colors.text.inverse,ink:(0,_toneInk.deriveToneInk)(o,[e.colors.background.primary,e.colors.background.secondary,e.colors.background.tertiary],e.mode)}:toneFor(e,t),l=!s&&"neutral"===t,d=l?e.colors.background.tertiary:(0,_color.tintOf)(n,.14,e.colors.background.secondary),c=l?e.colors.border.primary:(0,_color.tintOf)(n,.4,n);switch(r){case"solid":return{fill:n,border:n,text:a,dot:a};case"outline":return{fill:"transparent",border:l?c:n,text:i,dot:n};default:return{fill:d,border:c,text:i,dot:n}}},StatusBadge=exports.StatusBadge=(0,_react.forwardRef)((e,t)=>{const{label:r,tone:o="neutral",variant:s="soft",size:n="md",dot:a=!1,color:i,loading:l=!1,accessibilityLabel:d,style:c,textStyle:u,testID:g}=e,x=(0,_index.useTheme)(),b=sizeFor(x,n),p=(0,_react.useMemo)(()=>paletteFor(x,o,s,i),[x,o,s,i]);return l?(0,_jsxRuntime.jsx)(StatusBadgeSkeleton,{...e}):(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,accessible:!0,accessibilityRole:"text",accessibilityLabel:d??r,testID:g,style:[styles.base,{minHeight:b.height,paddingHorizontal:b.paddingH,borderRadius:x.radius.pill,..._corners.smoothCorners,backgroundColor:p.fill,borderColor:p.border,borderWidth:1},c],children:[a?(0,_jsxRuntime.jsx)(_reactNative.View,{testID:"status-badge-dot",style:{width:b.dot,height:b.dot,borderRadius:b.dot/2,marginRight:b.gap,backgroundColor:p.dot}}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[styles.label,{color:p.text,fontSize:b.fontSize,...(0,_index.fontFor)(x,"semibold")},u],numberOfLines:1,maxFontSizeMultiplier:x.maxFontSizeMultiplier,children:r})]})});StatusBadge.displayName="StatusBadge";const StatusBadgeSkeleton=({label:e,size:t="md",dot:r,style:o})=>{const s=(0,_index.useTheme)(),n=sizeFor(s,t),a=Math.max(32,Math.min(120,6.5*(e??"").length))+2*n.paddingH+(r?n.dot+n.gap:0);return(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:a,height:n.height,radius:n.height/2,style:[styles.skeleton,o]})};StatusBadgeSkeleton.displayName="StatusBadgeSkeleton",StatusBadge.Skeleton=StatusBadgeSkeleton;const styles=_reactNative.StyleSheet.create({base:{alignSelf:"flex-start",flexDirection:"row",alignItems:"center",justifyContent:"center"},label:{textAlign:"center",includeFontPadding:!1,textAlignVertical:"center"},skeleton:{alignSelf:"flex-start"}});var _default=exports.default=StatusBadge;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Stepper=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index2=require("../Skeleton/index.js"),_jsxRuntime=require("react/jsx-runtime");const CIRCLE_SIZE=24,SEGMENT_HEIGHT=4,SEGMENT_GAP=6,PULSE_SIZE=32,PULSE_DURATION=1100,toneColorFor=(e,t)=>"success"===t?e.colors.success:e.colors.primary,toneOnColorFor=(e,t)=>"success"===t?e.colors.onSuccess:e.colors.onPrimary,StepCircle=({index:e,step:t,status:i,toneColor:s,upcomingColor:r,upcomingFillColor:n,textOnColor:o,upcomingTextColor:a,interactive:l,canPress:c,totalSteps:u,onPress:d,circleSize:p,pulseSize:m,pulseEnabled:x,pulseDuration:h,circleSlotStyle:_})=>{const y="active"===i,v=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current,g=(0,_react.useRef)((0,_index.createAnimatedValue)(.5)).current;(0,_react.useEffect)(()=>{if(!y||!x)return v.setValue(1),void g.setValue(0);const e=_reactNative.Animated.loop(_reactNative.Animated.parallel([_reactNative.Animated.sequence([_reactNative.Animated.timing(v,{toValue:1.4,duration:h,easing:_reactNative.Easing.out(_reactNative.Easing.ease),useNativeDriver:!0}),_reactNative.Animated.timing(v,{toValue:1,duration:0,useNativeDriver:!0})]),_reactNative.Animated.sequence([_reactNative.Animated.timing(g,{toValue:0,duration:h,easing:_reactNative.Easing.out(_reactNative.Easing.ease),useNativeDriver:!0}),_reactNative.Animated.timing(g,{toValue:.5,duration:0,useNativeDriver:!0})])]));return e.start(),()=>e.stop()},[y,v,g,x,h]);const j="upcoming"===i?n:s,S="upcoming"===i?r:s,b="upcoming"===i?a:o,R="complete"===i,f=`Step ${e+1} of ${u}, ${t.label}, ${i}`,w=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:circleStyles.relative,children:[y&&x?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[circleStyles.pulse,{width:m,height:m,borderRadius:m/2,..._corners.smoothCorners,backgroundColor:s,opacity:g,transform:[{scale:v}]}]}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[circleStyles.circle,{width:p,height:p,borderRadius:p/2,..._corners.smoothCorners,backgroundColor:j,borderColor:S},_],children:t.icon?t.icon:R?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[circleStyles.glyph,{color:b}],children:"✓"}):(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[circleStyles.glyph,{color:b}],children:e+1})})]});return l?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>d(e),disabled:!c,accessibilityRole:"button",accessibilityLabel:f,accessibilityState:{selected:y,disabled:!c},"aria-selected":y,"aria-disabled":!c,hitSlop:8,children:w}):(0,_jsxRuntime.jsx)(_reactNative.View,{accessibilityRole:"text",accessibilityLabel:f,accessibilityState:{selected:y},"aria-selected":y,children:w})},circleStyles=_reactNative.StyleSheet.create({relative:{alignItems:"center",justifyContent:"center"},pulse:{position:"absolute"},circle:{borderWidth:2,alignItems:"center",justifyContent:"center"},glyph:{fontSize:12,fontWeight:"600",includeFontPadding:!1}}),Stepper=exports.Stepper=(0,_react.forwardRef)((e,t)=>{const{steps:i,activeStep:s,defaultActiveStep:r=0,pressMode:n="none",onStepPress:o,onActiveStepChange:a,variant:l="horizontal",tone:c="primary",formatCaption:u,showCaption:d=!0,loading:p=!1,accessibilityLabel:m,style:x,containerStyle:h,circleStyle:_,labelStyle:y,connectorStyle:v,haptic:g,testID:j}=e,S=(0,_index.useTheme)(),b=S.components.stepper,R=b?.circleSize??24,f=b?.pulseSize??32,w=b?.pulseAnimation??!1,C=b?.pulseDuration??1100,N=(0,_hapticUtils.resolveHaptic)(g,"selection"),V=(0,_react.useMemo)(()=>buildStyles(S),[S]),k=toneColorFor(S,c),I=S.colors.border.primary,D=S.colors.background.primary,A=S.colors.text.secondary,E=toneOnColorFor(S,c),L=i.length,T="none"!==n,$=void 0!==s,[P,z]=(0,_react.useState)(r),F=$?s:P,O=null==F||F<0?null:F,B=i.map((e,t)=>(e=>null===O?"upcoming":e<O?"complete":e===O?"active":"upcoming")(t)),q=B.filter(e=>"upcoming"!==e).length,M=B.filter(e=>"complete"===e).length,canPressStatus=e=>"back"===n?"complete"===e:T,handleStepPress=e=>{if(!canPressStatus(B[e]))return;N&&(0,_hapticUtils.triggerHaptic)(N),o?.(e);const t="select"===n&&e===O?null:e;$||z(t),a?.(t)},U=(0,_react.useRef)((0,_index.createAnimatedValue)(q)).current,G=(0,_react.useRef)(q);(0,_react.useEffect)(()=>{const e=G.current;if(e===q)return;G.current=q;const t=_reactNative.Animated.timing(U,{toValue:q,duration:S.motion.duration.normal*Math.abs(q-e),easing:_reactNative.Easing.linear,useNativeDriver:!1});return t.start(),()=>t.stop()},[q,U,S.motion]);const sliceOf=e=>U.interpolate({inputRange:[e,e+1],outputRange:["0%","100%"],extrapolate:"clamp"}),H=L<=1?"0%":U.interpolate({inputRange:[1,L],outputRange:["0%","100%"],extrapolate:"clamp"}),W=null!==O&&O<L?O:null,Z=m??(null!==W?`Progress: step ${W+1} of ${L}`:`Progress: ${M} of ${L} steps done`),[J,K]=(0,_react.useState)(0),Q=L>0&&J>0?J/(2*L):0,X=(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,style:[V.container,h,x],testID:j,accessibilityRole:"progressbar",accessibilityLabel:Z,accessibilityValue:{min:0,max:L,now:q},children:"segmented"===l?(()=>{const e=null!==W?i[W]:void 0,t=d?u?u(W,L,e):null!==W?`Step ${W+1} of ${L}${e?.label?` · ${e.label}`:""}`:`${M} of ${L} done`:"";return(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[d?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.sCaption,{color:S.colors.text.secondary,fontSize:S.typography.fontSize.sm,marginBottom:S.spacing.sm},y],numberOfLines:1,children:t}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:V.sRow,children:i.map((e,t)=>{const i=B[t],s=`Step ${t+1} of ${L}, ${e.label}, ${i}`,r=(0,_jsxRuntime.jsx)(_reactNative.View,{testID:j?`${j}-segment-${t}`:void 0,style:[V.sTrack,{backgroundColor:I},v],children:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[V.sFill,{backgroundColor:k,width:sliceOf(t)}]})});if(T){const n=canPressStatus(i);return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:V.sItem,onPress:()=>handleStepPress(t),disabled:!n,accessibilityRole:"button",accessibilityLabel:s,accessibilityState:{selected:"active"===i,disabled:!n},"aria-selected":"active"===i,"aria-disabled":!n,hitSlop:{top:12,bottom:12},children:r},e.key)}return(0,_jsxRuntime.jsx)(_reactNative.View,{style:V.sItem,accessibilityRole:"text",accessibilityLabel:s,accessibilityState:{selected:"active"===i},"aria-selected":"active"===i,children:r},e.key)})})]})})():"vertical"===l?(0,_jsxRuntime.jsx)(_reactNative.View,{style:V.vCol,children:i.map((e,t)=>{const i=B[t],s=t===L-1;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:V.vRow,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:V.vLeft,children:[(0,_jsxRuntime.jsx)(StepCircle,{index:t,step:e,status:i,toneColor:k,upcomingColor:I,upcomingFillColor:D,onPressColor:k,textOnColor:E,upcomingTextColor:A,interactive:T,canPress:canPressStatus(i),totalSteps:L,onPress:handleStepPress,circleSize:R,pulseSize:f,pulseEnabled:w,pulseDuration:C,circleSlotStyle:_}),s?null:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[V.vConnectorContainer,v],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[V.vConnectorTrack,{backgroundColor:I}]}),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[V.vConnectorFill,{backgroundColor:k,height:sliceOf(t+1)}]})]})]}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:V.vBody,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.vLabel,{color:"upcoming"===i?S.colors.text.tertiary:S.colors.text.primary,fontSize:S.typography.fontSize.base,fontWeight:S.typography.fontWeight.semibold},y],numberOfLines:1,children:e?.label??" "}),e.description?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.vDescription,{color:S.colors.text.secondary,fontSize:S.typography.fontSize.sm}],numberOfLines:3,children:e.description}):null]})]},e.key)})}):(0,_jsxRuntime.jsxs)(_reactNative.View,{style:V.hRow,onLayout:e=>K(e.nativeEvent.layout.width),children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{pointerEvents:"none",style:[V.hConnectorContainer,{left:Q,right:Q},v],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[V.hConnectorTrack,{backgroundColor:I}]}),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[V.hConnectorFill,{backgroundColor:k,width:H}]})]}),i.map((e,t)=>{const i=B[t];return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:V.hStepItem,children:[(0,_jsxRuntime.jsx)(StepCircle,{index:t,step:e,status:i,toneColor:k,upcomingColor:I,upcomingFillColor:D,onPressColor:k,textOnColor:E,upcomingTextColor:A,interactive:T,canPress:canPressStatus(i),totalSteps:L,onPress:handleStepPress,circleSize:R,pulseSize:f,pulseEnabled:w,pulseDuration:C,circleSlotStyle:_}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.hLabel,{color:"upcoming"===i?S.colors.text.tertiary:S.colors.text.primary,fontSize:S.typography.fontSize.xs},y],numberOfLines:1,children:e?.label??" "})]},e.key)})]})});return p?(0,_jsxRuntime.jsx)(StepperSkeleton,{...e}):X});Stepper.displayName="Stepper";const StepperSkeleton=({steps:e,variant:t="horizontal",showCaption:i=!0,containerStyle:s,style:r,testID:n})=>{const o=(0,_index.useTheme)(),a=o.components.stepper,l=a?.circleSize??24,c=(0,_react.useMemo)(()=>buildStyles(o),[o]),u=e.length||3;return"segmented"===t?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[c.container,s,r],testID:n,accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,children:[i?(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"45%",height:14,style:{marginBottom:o.spacing.sm}}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:c.sRow,children:Array.from({length:u}).map((e,t)=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:c.sItem,children:(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:"100%",height:4,radius:2})},`sk-step-${t}`))})]}):"vertical"===t?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[c.container,s,r],testID:n,accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:skeletonStyles.vCol,children:Array.from({length:u}).map((e,t)=>{const i=t===u-1;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:skeletonStyles.vRow,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[skeletonStyles.vLeft,{width:l+8}],children:[(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"circle",width:l,height:l}),i?null:(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:2,height:36})]}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:skeletonStyles.vBody,children:[(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"55%",height:16,style:{marginBottom:4}}),(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"80%",height:12})]})]},`sk-step-${t}`)})})}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[c.container,s,r],testID:n,accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:c.hRow,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[c.hConnectorContainer,{left:50/u+"%",right:50/u+"%"}],children:(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:"100%",height:2,radius:1})}),Array.from({length:u}).map((e,t)=>(0,_jsxRuntime.jsxs)(_reactNative.View,{style:c.hStepItem,children:[(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"circle",width:l,height:l}),(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"80%",height:12,style:{marginTop:o.spacing.xs}})]},`sk-step-${t}`))]})})};StepperSkeleton.displayName="StepperSkeleton",Stepper.Skeleton=StepperSkeleton;const skeletonStyles=_reactNative.StyleSheet.create({vCol:{flexDirection:"column"},vRow:{flexDirection:"row",alignItems:"flex-start"},vLeft:{alignItems:"center"},vBody:{flex:1,paddingLeft:12,paddingBottom:16}}),buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},hRow:{flexDirection:"row",alignItems:"flex-start",justifyContent:"space-between",position:"relative"},hConnectorContainer:{position:"absolute",top:11,height:2,flexDirection:"row",alignItems:"center"},hConnectorTrack:{position:"absolute",left:0,right:0,height:2,borderRadius:1,..._corners.smoothCorners},hConnectorFill:{position:"absolute",left:0,height:2,borderRadius:1,..._corners.smoothCorners},hStepItem:{alignItems:"center",flex:1},hLabel:{marginTop:e.spacing.xs,textAlign:"center"},vCol:{flexDirection:"column"},vRow:{flexDirection:"row",alignItems:"flex-start"},vLeft:{alignItems:"center",alignSelf:"stretch",width:32},vConnectorContainer:{flex:1,width:2,minHeight:32,position:"relative",alignSelf:"center"},vConnectorTrack:{position:"absolute",top:0,bottom:0,width:2,borderRadius:1,..._corners.smoothCorners},vConnectorFill:{position:"absolute",top:0,width:2,borderRadius:1,..._corners.smoothCorners},vBody:{flex:1,paddingLeft:e.spacing.sm,paddingBottom:e.spacing.md},vLabel:{marginBottom:2},vDescription:{},sCaption:{includeFontPadding:!1},sRow:{flexDirection:"row",columnGap:6},sItem:{flex:1},sTrack:{height:4,borderRadius:2,overflow:"hidden"},sFill:{height:4,borderRadius:2}});var _default=exports.default=Stepper;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Stepper=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index2=require("../Skeleton/index.js"),_jsxRuntime=require("react/jsx-runtime");const CIRCLE_SIZE=24,SEGMENT_HEIGHT=4,PULSE_SIZE=32,PULSE_DURATION=1100,toneColorFor=(e,t)=>"success"===t?e.colors.success:e.colors.primary,toneOnColorFor=(e,t)=>"success"===t?e.colors.onSuccess:e.colors.onPrimary,StepCircle=({index:e,step:t,status:i,toneColor:s,upcomingColor:r,upcomingFillColor:n,textOnColor:o,upcomingTextColor:a,interactive:l,canPress:c,totalSteps:u,onPress:d,circleSize:p,pulseSize:m,pulseEnabled:x,pulseDuration:h,circleStyles:_,circleSlotStyle:y})=>{const g="active"===i,v=(0,_index.useTheme)(),j=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current,S=(0,_react.useRef)((0,_index.createAnimatedValue)(.5)).current;(0,_react.useEffect)(()=>{if(!g||!x)return j.setValue(1),void S.setValue(0);const e=_reactNative.Animated.loop(_reactNative.Animated.parallel([_reactNative.Animated.sequence([_reactNative.Animated.timing(j,{toValue:1.4,duration:h,easing:_reactNative.Easing.out(_reactNative.Easing.ease),useNativeDriver:!0}),_reactNative.Animated.timing(j,{toValue:1,duration:0,useNativeDriver:!0})]),_reactNative.Animated.sequence([_reactNative.Animated.timing(S,{toValue:0,duration:h,easing:_reactNative.Easing.out(_reactNative.Easing.ease),useNativeDriver:!0}),_reactNative.Animated.timing(S,{toValue:.5,duration:0,useNativeDriver:!0})])]));return e.start(),()=>e.stop()},[g,j,S,x,h]);const b="upcoming"===i?n:s,R="upcoming"===i?r:s,f="upcoming"===i?a:o,w="complete"===i,C=`Step ${e+1} of ${u}, ${t.label}, ${i}`,N=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:_.relative,children:[g&&x?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[_.pulse,{width:m,height:m,borderRadius:v.radius.pill,..._corners.smoothCorners,backgroundColor:s,opacity:S,transform:[{scale:j}]}]}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[_.circle,{width:p,height:p,borderRadius:v.radius.pill,..._corners.smoothCorners,backgroundColor:b,borderColor:R},y],children:t.icon?t.icon:w?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[_.glyph,{color:f}],children:"✓"}):(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[_.glyph,{color:f}],children:e+1})})]});return l?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>d(e),disabled:!c,accessibilityRole:"button",accessibilityLabel:C,accessibilityState:{selected:g,disabled:!c},"aria-selected":g,"aria-disabled":!c,hitSlop:8,children:N}):(0,_jsxRuntime.jsx)(_reactNative.View,{accessibilityRole:"text",accessibilityLabel:C,accessibilityState:{selected:g},"aria-selected":g,children:N})},buildCircleStyles=e=>_reactNative.StyleSheet.create({relative:{alignItems:"center",justifyContent:"center"},pulse:{position:"absolute"},circle:{borderWidth:2,alignItems:"center",justifyContent:"center"},glyph:{fontSize:e.typography.fontSize.sm,fontWeight:"600",includeFontPadding:!1}}),Stepper=exports.Stepper=(0,_react.forwardRef)((e,t)=>{const{steps:i,activeStep:s,defaultActiveStep:r=0,pressMode:n="none",onStepPress:o,onActiveStepChange:a,variant:l="horizontal",tone:c="primary",formatCaption:u,showCaption:d=!0,loading:p=!1,accessibilityLabel:m,style:x,containerStyle:h,circleStyle:_,labelStyle:y,connectorStyle:g,haptic:v,testID:j}=e,S=(0,_index.useTheme)(),b=S.components.stepper,R=b?.circleSize??24,f=b?.pulseSize??32,w=b?.pulseAnimation??!1,C=b?.pulseDuration??1100,N=(0,_hapticUtils.resolveHaptic)(v,"selection"),V=(0,_react.useMemo)(()=>buildStyles(S),[S]),k=(0,_react.useMemo)(()=>buildCircleStyles(S),[S]),I=toneColorFor(S,c),D=S.colors.border.primary,A=S.colors.background.primary,L=S.colors.text.secondary,T=toneOnColorFor(S,c),$=i.length,E="none"!==n,z=void 0!==s,[P,F]=(0,_react.useState)(r),O=z?s:P,B=null==O||O<0?null:O,q=i.map((e,t)=>(e=>null===B?"upcoming":e<B?"complete":e===B?"active":"upcoming")(t)),M=q.filter(e=>"upcoming"!==e).length,U=q.filter(e=>"complete"===e).length,canPressStatus=e=>"back"===n?"complete"===e:E,handleStepPress=e=>{if(!canPressStatus(q[e]))return;N&&(0,_hapticUtils.triggerHaptic)(N),o?.(e);const t="select"===n&&e===B?null:e;z||F(t),a?.(t)},H=(0,_react.useRef)((0,_index.createAnimatedValue)(M)).current,W=(0,_react.useRef)(M);(0,_react.useEffect)(()=>{const e=W.current;if(e===M)return;W.current=M;const t=_reactNative.Animated.timing(H,{toValue:M,duration:S.motion.duration.normal*Math.abs(M-e),easing:_reactNative.Easing.linear,useNativeDriver:!1});return t.start(),()=>t.stop()},[M,H,S.motion]);const sliceOf=e=>H.interpolate({inputRange:[e,e+1],outputRange:["0%","100%"],extrapolate:"clamp"}),G=$<=1?"0%":H.interpolate({inputRange:[1,$],outputRange:["0%","100%"],extrapolate:"clamp"}),Z=null!==B&&B<$?B:null,J=m??(null!==Z?`Progress: step ${Z+1} of ${$}`:`Progress: ${U} of ${$} steps done`),[K,Q]=(0,_react.useState)(0),X=$>0&&K>0?K/(2*$):0,Y=(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,style:[V.container,h,x],testID:j,accessibilityRole:"progressbar",accessibilityLabel:J,accessibilityValue:{min:0,max:$,now:M},children:"segmented"===l?(()=>{const e=null!==Z?i[Z]:void 0,t=d?u?u(Z,$,e):null!==Z?`Step ${Z+1} of ${$}${e?.label?` · ${e.label}`:""}`:`${U} of ${$} done`:"";return(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[d?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.sCaption,{color:S.colors.text.secondary,fontSize:S.typography.fontSize.sm,marginBottom:S.spacing.sm},y],numberOfLines:1,children:t}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:V.sRow,children:i.map((e,t)=>{const i=q[t],s=`Step ${t+1} of ${$}, ${e.label}, ${i}`,r=(0,_jsxRuntime.jsx)(_reactNative.View,{testID:j?`${j}-segment-${t}`:void 0,style:[V.sTrack,{backgroundColor:D},g],children:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[V.sFill,{backgroundColor:I,width:sliceOf(t)}]})});if(E){const n=canPressStatus(i);return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:V.sItem,onPress:()=>handleStepPress(t),disabled:!n,accessibilityRole:"button",accessibilityLabel:s,accessibilityState:{selected:"active"===i,disabled:!n},"aria-selected":"active"===i,"aria-disabled":!n,hitSlop:{top:12,bottom:12},children:r},e.key)}return(0,_jsxRuntime.jsx)(_reactNative.View,{style:V.sItem,accessibilityRole:"text",accessibilityLabel:s,accessibilityState:{selected:"active"===i},"aria-selected":"active"===i,children:r},e.key)})})]})})():"vertical"===l?(0,_jsxRuntime.jsx)(_reactNative.View,{style:V.vCol,children:i.map((e,t)=>{const i=q[t],s=t===$-1;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:V.vRow,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:V.vLeft,children:[(0,_jsxRuntime.jsx)(StepCircle,{index:t,step:e,status:i,toneColor:I,upcomingColor:D,upcomingFillColor:A,onPressColor:I,textOnColor:T,upcomingTextColor:L,interactive:E,canPress:canPressStatus(i),totalSteps:$,onPress:handleStepPress,circleSize:R,pulseSize:f,pulseEnabled:w,pulseDuration:C,circleStyles:k,circleSlotStyle:_}),s?null:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[V.vConnectorContainer,g],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[V.vConnectorTrack,{backgroundColor:D}]}),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[V.vConnectorFill,{backgroundColor:I,height:sliceOf(t+1)}]})]})]}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:V.vBody,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.vLabel,{color:"upcoming"===i?S.colors.text.tertiary:S.colors.text.primary,fontSize:S.typography.fontSize.base,fontWeight:S.typography.fontWeight.semibold},y],numberOfLines:1,children:e?.label??" "}),e.description?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.vDescription,{color:S.colors.text.secondary,fontSize:S.typography.fontSize.sm}],numberOfLines:3,children:e.description}):null]})]},e.key)})}):(0,_jsxRuntime.jsxs)(_reactNative.View,{style:V.hRow,onLayout:e=>Q(e.nativeEvent.layout.width),children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{pointerEvents:"none",style:[V.hConnectorContainer,{left:X,right:X},g],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[V.hConnectorTrack,{backgroundColor:D}]}),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[V.hConnectorFill,{backgroundColor:I,width:G}]})]}),i.map((e,t)=>{const i=q[t];return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:V.hStepItem,children:[(0,_jsxRuntime.jsx)(StepCircle,{index:t,step:e,status:i,toneColor:I,upcomingColor:D,upcomingFillColor:A,onPressColor:I,textOnColor:T,upcomingTextColor:L,interactive:E,canPress:canPressStatus(i),totalSteps:$,onPress:handleStepPress,circleSize:R,pulseSize:f,pulseEnabled:w,pulseDuration:C,circleStyles:k,circleSlotStyle:_}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.hLabel,{color:"upcoming"===i?S.colors.text.tertiary:S.colors.text.primary,fontSize:S.typography.fontSize.xs},y],numberOfLines:1,children:e?.label??" "})]},e.key)})]})});return p?(0,_jsxRuntime.jsx)(StepperSkeleton,{...e}):Y});Stepper.displayName="Stepper";const StepperSkeleton=({steps:e,variant:t="horizontal",showCaption:i=!0,containerStyle:s,style:r,testID:n})=>{const o=(0,_index.useTheme)(),a=o.components.stepper,l=a?.circleSize??24,c=(0,_react.useMemo)(()=>buildStyles(o),[o]),u=(0,_react.useMemo)(()=>buildSkeletonStyles(o),[o]),d=e.length||3;return"segmented"===t?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[c.container,s,r],testID:n,accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,children:[i?(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"45%",height:14,style:{marginBottom:o.spacing.sm}}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:c.sRow,children:Array.from({length:d}).map((e,t)=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:c.sItem,children:(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:"100%",height:4,radius:"pill"})},`sk-step-${t}`))})]}):"vertical"===t?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[c.container,s,r],testID:n,accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:u.vCol,children:Array.from({length:d}).map((e,t)=>{const i=t===d-1;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:u.vRow,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[u.vLeft,{width:l+8}],children:[(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"circle",width:l,height:l}),i?null:(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:2,height:36})]}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:u.vBody,children:[(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"55%",height:16,style:{marginBottom:o.spacing.xs}}),(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"80%",height:12})]})]},`sk-step-${t}`)})})}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[c.container,s,r],testID:n,accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:c.hRow,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[c.hConnectorContainer,{left:50/d+"%",right:50/d+"%"}],children:(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:"100%",height:2,radius:"pill"})}),Array.from({length:d}).map((e,t)=>(0,_jsxRuntime.jsxs)(_reactNative.View,{style:c.hStepItem,children:[(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"circle",width:l,height:l}),(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"80%",height:12,style:{marginTop:o.spacing.xs}})]},`sk-step-${t}`))]})})};StepperSkeleton.displayName="StepperSkeleton",Stepper.Skeleton=StepperSkeleton;const buildSkeletonStyles=e=>_reactNative.StyleSheet.create({vCol:{flexDirection:"column"},vRow:{flexDirection:"row",alignItems:"flex-start"},vLeft:{alignItems:"center"},vBody:{flex:1,paddingLeft:e.spacing.md,paddingBottom:e.spacing.lg}}),buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},hRow:{flexDirection:"row",alignItems:"flex-start",justifyContent:"space-between",position:"relative"},hConnectorContainer:{position:"absolute",top:11,height:2,flexDirection:"row",alignItems:"center"},hConnectorTrack:{position:"absolute",left:0,right:0,height:2,borderRadius:e.radius.pill,..._corners.smoothCorners},hConnectorFill:{position:"absolute",left:0,height:2,borderRadius:e.radius.pill,..._corners.smoothCorners},hStepItem:{alignItems:"center",flex:1},hLabel:{marginTop:e.spacing.xs,textAlign:"center"},vCol:{flexDirection:"column"},vRow:{flexDirection:"row",alignItems:"flex-start"},vLeft:{alignItems:"center",alignSelf:"stretch",width:32},vConnectorContainer:{flex:1,width:2,minHeight:32,position:"relative",alignSelf:"center"},vConnectorTrack:{position:"absolute",top:0,bottom:0,width:2,borderRadius:e.radius.pill,..._corners.smoothCorners},vConnectorFill:{position:"absolute",top:0,width:2,borderRadius:e.radius.pill,..._corners.smoothCorners},vBody:{flex:1,paddingLeft:e.spacing.sm,paddingBottom:e.spacing.md},vLabel:{marginBottom:e.spacing.xxs},vDescription:{},sCaption:{includeFontPadding:!1},sRow:{flexDirection:"row",columnGap:e.spacing.xs},sItem:{flex:1},sTrack:{height:4,borderRadius:e.radius.pill,overflow:"hidden"},sFill:{height:4,borderRadius:e.radius.pill}});var _default=exports.default=Stepper;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Swipeable=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated")),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var a=new WeakMap,i=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var n,r,s={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return s;if(n=t?i:a){if(n.has(e))return n.get(e);n.set(e,s)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((r=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(r.get||r.set)?n(s,t,r):s[t]=e[t]);return s})(e,t)}const SPRING_CONFIG={damping:22,stiffness:260,mass:1},DRAG_ACTIVATION_OFFSET=10,RUBBER_BAND_FACTOR=.35,FAIL_OFFSET_Y=15,toneToBg=(e,t)=>{switch(t){case"primary":return e.colors.primary;case"success":return e.colors.success;case"warning":return e.colors.warning;case"error":return e.colors.error;default:return e.colors.secondary}},toneToOnColor=(e,t)=>{switch(t){case"primary":return e.colors.onPrimary;case"success":return e.colors.onSuccess;case"warning":return e.colors.onWarning;case"error":return e.colors.onError;default:return e.colors.onSecondary}},Swipeable=e=>{const{children:t,leftActions:a,rightActions:i,threshold:n,fullSwipeThreshold:r,onSwipeOpen:s,onSwipeClose:o,disabled:c=!1,haptic:l,containerStyle:u,contentStyle:d,actionStyle:_,accessibilityLabel:m,testID:p}=e,v=(0,_index.useTheme)(),f=v.components.swipeable,h=n??f?.threshold??80,S=r??f?.fullSwipeThreshold??200,R=f?.dragActivationOffset??10,g=f?.rubberBandFactor??.35,y=f?.failOffsetY??15,N=(0,_react.useMemo)(()=>({damping:f?.springDamping??SPRING_CONFIG.damping,stiffness:f?.springStiffness??SPRING_CONFIG.stiffness,mass:f?.springMass??SPRING_CONFIG.mass}),[f]),b=(0,_react.useMemo)(()=>buildStyles(v),[v]),w=!!a&&a.length>0,x=!!i&&i.length>0,j=_reactNative.Dimensions.get("window").width,O=w?h*(a?.length??0):0,I=x?h*(i?.length??0):0,C=(0,_reactNativeReanimated.useSharedValue)(0),G=(0,_reactNativeReanimated.useSharedValue)(0),P=(0,_react.useRef)(null);(0,_react.useEffect)(()=>()=>{(0,_reactNativeReanimated.cancelAnimation)(C),(0,_reactNativeReanimated.cancelAnimation)(G)},[C,G]);const A=(0,_react.useCallback)(e=>{P.current!==e&&(P.current=e,s?.(e))},[s]),k=(0,_react.useCallback)(()=>{null!==P.current&&(P.current=null,o?.())},[o]),F=(0,_react.useCallback)(e=>{const t="left"===e?a:i,n=t?.[0];n&&(!1!==l&&(0,_index2.triggerHaptic)("notificationSuccess"),n.onPress(),C.value=(0,_reactNativeReanimated.withSpring)(0,N),P.current=null,o?.())},[a,i,C,o,N,l]),M=(0,_react.useCallback)(()=>{C.value=(0,_reactNativeReanimated.withSpring)(0,N),k()},[C,k,N]),T=(0,_react.useCallback)(e=>{const t=(0,_index2.resolveHaptic)(l,"selection");t&&(0,_index2.triggerHaptic)(t),e.onPress(),M()},[M,l]),E=(0,_react.useMemo)(()=>{const e=O,t=I,a=S,i=-S,n=j,r=-j,s=h,o=w,l=x;return _reactNativeGestureHandler.Gesture.Pan().enabled(!c).withTestId(p?`${p}-gesture`:"swipeable-gesture").activeOffsetX([-R,R]).failOffsetY([-y,y]).onStart(()=>{"worklet";G.value=C.value}).onUpdate(a=>{"worklet";const i=G.value+a.translationX;C.value=i>0&&!o||i<0&&!l?0:i>e&&o?e+(i-e)*g:i<-t&&l?(i+t)*g-t:i}).onEnd(()=>{"worklet";const c=C.value;return o&&c>=a?(C.value=(0,_reactNativeReanimated.withSpring)(n,SPRING_CONFIG),void(0,_reactNativeReanimated.runOnJS)(F)("left")):l&&c<=i?(C.value=(0,_reactNativeReanimated.withSpring)(r,SPRING_CONFIG),void(0,_reactNativeReanimated.runOnJS)(F)("right")):o&&c>=s?(C.value=(0,_reactNativeReanimated.withSpring)(e,SPRING_CONFIG),void(0,_reactNativeReanimated.runOnJS)(A)("left")):l&&c<=-s?(C.value=(0,_reactNativeReanimated.withSpring)(-t,SPRING_CONFIG),void(0,_reactNativeReanimated.runOnJS)(A)("right")):(C.value=(0,_reactNativeReanimated.withSpring)(0,N),void(0,_reactNativeReanimated.runOnJS)(k)())})},[c,G,F,S,w,x,O,k,A,I,j,h,C,R,y,g,N,p]),q=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({transform:[{translateX:C.value}]})),B=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({opacity:O>0?Math.min(1,Math.max(0,C.value/O)):0})),D=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({opacity:I>0?Math.min(1,Math.max(0,-C.value/I)):0})),V=(0,_react.useMemo)(()=>{const e=[];return a?.forEach(t=>e.push({name:t.key,label:t.label})),i?.forEach(t=>e.push({name:t.key,label:t.label})),e},[a,i]),W=(0,_react.useCallback)(e=>{const t=e.nativeEvent.actionName,n=[...a??[],...i??[]].find(e=>e.key===t);n&&(!1!==l&&(0,_index2.triggerHaptic)("selection"),n.onPress())},[a,i,l]);return w||x?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[b.root,u],testID:p,accessibilityLabel:m,accessibilityActions:V,onAccessibilityAction:W,children:[w?(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[b.actionsRow,b.actionsLeft,{width:O},_,B],pointerEvents:"box-none",children:a?.map(e=>(0,_jsxRuntime.jsx)(ActionButton,{action:e,theme:v,width:h,onPress:T},e.key))}):null,x?(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[b.actionsRow,b.actionsRight,{width:I},_,D],pointerEvents:"box-none",children:i?.map(e=>(0,_jsxRuntime.jsx)(ActionButton,{action:e,theme:v,width:h,onPress:T},e.key))}):null,(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:E,children:(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[b.content,d,q],children:t})})]}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:u,testID:p,children:t})};exports.Swipeable=Swipeable,Swipeable.displayName="Swipeable";const ActionButton=({action:e,theme:t,width:a,onPress:i})=>{const n=e.tone??"neutral",r=toneToBg(t,n);return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>i(e),accessibilityRole:"button",accessibilityLabel:e.label,style:[actionStyles.button,{width:a,backgroundColor:r,paddingHorizontal:t.spacing.sm}],children:[e.icon?(0,_jsxRuntime.jsx)(_reactNative.View,{style:actionStyles.icon,children:e.icon}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[actionStyles.label,{color:toneToOnColor(t,n),fontSize:t.typography.fontSize.sm,fontWeight:t.typography.fontWeight.semibold}],numberOfLines:1,children:e.label})]})},actionStyles=_reactNative.StyleSheet.create({button:{flexGrow:0,flexShrink:0,alignItems:"center",justifyContent:"center"},icon:{marginBottom:2},label:{textAlign:"center"}}),buildStyles=e=>_reactNative.StyleSheet.create({root:{position:"relative",overflow:"hidden"},content:{backgroundColor:"transparent"},actionsRow:{position:"absolute",top:0,bottom:0,flexDirection:"row"},actionsLeft:{left:0},actionsRight:{right:0,justifyContent:"flex-end"}});var _default=exports.default=Swipeable;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Swipeable=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated")),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var a=new WeakMap,i=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var n,r,s={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return s;if(n=t?i:a){if(n.has(e))return n.get(e);n.set(e,s)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((r=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(r.get||r.set)?n(s,t,r):s[t]=e[t]);return s})(e,t)}const SPRING_CONFIG={damping:22,stiffness:260,mass:1},DRAG_ACTIVATION_OFFSET=10,RUBBER_BAND_FACTOR=.35,FAIL_OFFSET_Y=15,toneToBg=(e,t)=>{switch(t){case"primary":return e.colors.primary;case"success":return e.colors.success;case"warning":return e.colors.warning;case"error":return e.colors.error;default:return e.colors.secondary}},toneToOnColor=(e,t)=>{switch(t){case"primary":return e.colors.onPrimary;case"success":return e.colors.onSuccess;case"warning":return e.colors.onWarning;case"error":return e.colors.onError;default:return e.colors.onSecondary}},Swipeable=e=>{const{children:t,leftActions:a,rightActions:i,threshold:n,fullSwipeThreshold:r,onSwipeOpen:s,onSwipeClose:o,disabled:c=!1,haptic:l,containerStyle:u,contentStyle:d,actionStyle:_,accessibilityLabel:m,testID:p}=e,v=(0,_index.useTheme)(),f=v.components.swipeable,h=n??f?.threshold??80,S=r??f?.fullSwipeThreshold??200,g=f?.dragActivationOffset??10,R=f?.rubberBandFactor??.35,b=f?.failOffsetY??15,y=(0,_react.useMemo)(()=>({damping:f?.springDamping??SPRING_CONFIG.damping,stiffness:f?.springStiffness??SPRING_CONFIG.stiffness,mass:f?.springMass??SPRING_CONFIG.mass}),[f]),N=(0,_react.useMemo)(()=>buildStyles(v),[v]),w=(0,_react.useMemo)(()=>buildActionStyles(v),[v]),x=!!a&&a.length>0,j=!!i&&i.length>0,O=_reactNative.Dimensions.get("window").width,I=x?h*(a?.length??0):0,A=j?h*(i?.length??0):0,C=(0,_reactNativeReanimated.useSharedValue)(0),G=(0,_reactNativeReanimated.useSharedValue)(0),P=(0,_react.useRef)(null);(0,_react.useEffect)(()=>()=>{(0,_reactNativeReanimated.cancelAnimation)(C),(0,_reactNativeReanimated.cancelAnimation)(G)},[C,G]);const k=(0,_react.useCallback)(e=>{P.current!==e&&(P.current=e,s?.(e))},[s]),F=(0,_react.useCallback)(()=>{null!==P.current&&(P.current=null,o?.())},[o]),M=(0,_react.useCallback)(e=>{const t="left"===e?a:i,n=t?.[0];n&&(!1!==l&&(0,_index2.triggerHaptic)("notificationSuccess"),n.onPress(),C.value=(0,_reactNativeReanimated.withSpring)(0,y),P.current=null,o?.())},[a,i,C,o,y,l]),T=(0,_react.useCallback)(()=>{C.value=(0,_reactNativeReanimated.withSpring)(0,y),F()},[C,F,y]),E=(0,_react.useCallback)(e=>{const t=(0,_index2.resolveHaptic)(l,"selection");t&&(0,_index2.triggerHaptic)(t),e.onPress(),T()},[T,l]),q=(0,_react.useMemo)(()=>{const e=I,t=A,a=S,i=-S,n=O,r=-O,s=h,o=x,l=j;return _reactNativeGestureHandler.Gesture.Pan().enabled(!c).withTestId(p?`${p}-gesture`:"swipeable-gesture").activeOffsetX([-g,g]).failOffsetY([-b,b]).onStart(()=>{"worklet";G.value=C.value}).onUpdate(a=>{"worklet";const i=G.value+a.translationX;C.value=i>0&&!o||i<0&&!l?0:i>e&&o?e+(i-e)*R:i<-t&&l?(i+t)*R-t:i}).onEnd(()=>{"worklet";const c=C.value;return o&&c>=a?(C.value=(0,_reactNativeReanimated.withSpring)(n,SPRING_CONFIG),void(0,_reactNativeReanimated.runOnJS)(M)("left")):l&&c<=i?(C.value=(0,_reactNativeReanimated.withSpring)(r,SPRING_CONFIG),void(0,_reactNativeReanimated.runOnJS)(M)("right")):o&&c>=s?(C.value=(0,_reactNativeReanimated.withSpring)(e,SPRING_CONFIG),void(0,_reactNativeReanimated.runOnJS)(k)("left")):l&&c<=-s?(C.value=(0,_reactNativeReanimated.withSpring)(-t,SPRING_CONFIG),void(0,_reactNativeReanimated.runOnJS)(k)("right")):(C.value=(0,_reactNativeReanimated.withSpring)(0,y),void(0,_reactNativeReanimated.runOnJS)(F)())})},[c,G,M,S,x,j,I,F,k,A,O,h,C,g,b,R,y,p]),B=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({transform:[{translateX:C.value}]})),D=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({opacity:I>0?Math.min(1,Math.max(0,C.value/I)):0})),V=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({opacity:A>0?Math.min(1,Math.max(0,-C.value/A)):0})),W=(0,_react.useMemo)(()=>{const e=[];return a?.forEach(t=>e.push({name:t.key,label:t.label})),i?.forEach(t=>e.push({name:t.key,label:t.label})),e},[a,i]),H=(0,_react.useCallback)(e=>{const t=e.nativeEvent.actionName,n=[...a??[],...i??[]].find(e=>e.key===t);n&&(!1!==l&&(0,_index2.triggerHaptic)("selection"),n.onPress())},[a,i,l]);return x||j?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[N.root,u],testID:p,accessibilityLabel:m,accessibilityActions:W,onAccessibilityAction:H,children:[x?(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[N.actionsRow,N.actionsLeft,{width:I},_,D],pointerEvents:"box-none",children:a?.map(e=>(0,_jsxRuntime.jsx)(ActionButton,{action:e,theme:v,actionStyles:w,width:h,onPress:E},e.key))}):null,j?(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[N.actionsRow,N.actionsRight,{width:A},_,V],pointerEvents:"box-none",children:i?.map(e=>(0,_jsxRuntime.jsx)(ActionButton,{action:e,theme:v,actionStyles:w,width:h,onPress:E},e.key))}):null,(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:q,children:(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[N.content,d,B],children:t})})]}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:u,testID:p,children:t})};exports.Swipeable=Swipeable,Swipeable.displayName="Swipeable";const ActionButton=({action:e,theme:t,actionStyles:a,width:i,onPress:n})=>{const r=e.tone??"neutral",s=toneToBg(t,r);return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>n(e),accessibilityRole:"button",accessibilityLabel:e.label,style:[a.button,{width:i,backgroundColor:s,paddingHorizontal:t.spacing.sm}],children:[e.icon?(0,_jsxRuntime.jsx)(_reactNative.View,{style:a.icon,children:e.icon}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[a.label,{color:toneToOnColor(t,r),fontSize:t.typography.fontSize.sm,fontWeight:t.typography.fontWeight.semibold}],numberOfLines:1,children:e.label})]})},buildActionStyles=e=>_reactNative.StyleSheet.create({button:{flexGrow:0,flexShrink:0,alignItems:"center",justifyContent:"center"},icon:{marginBottom:e.spacing.xxs},label:{textAlign:"center"}}),buildStyles=e=>_reactNative.StyleSheet.create({root:{position:"relative",overflow:"hidden"},content:{backgroundColor:"transparent"},actionsRow:{position:"absolute",top:0,bottom:0,flexDirection:"row"},actionsLeft:{left:0},actionsRight:{right:0,justifyContent:"flex-end"}});var _default=exports.default=Swipeable;
@@ -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"),_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
+ "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 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:o="primary",label:c,description:l,error:d,labelLines:u,layout:h="inline",accessibilityLabel:p,haptic:_="selection",bounce:m=!1,style:b,containerStyle:x,trackStyle:f,thumbStyle:g,testID:y,...v}=e,[w,j]=(0,_index.useControllableState)({value:i,defaultValue:s??!1,onChange:r}),R=(0,_index2.useTheme)(),S=(0,_react.useMemo)(()=>(0,_index2.resolveSwitchSize)(R,n),[R,n]),C=R.components.switch?.thumbColor??"#FFFFFF",N=(0,_react.useMemo)(()=>buildStyles(R),[R]),T="dark"===R.mode?R.colors.secondary:R.colors.surface.disabled,F=toneColor(R,o),k=(0,_react.useRef)((0,_index2.createAnimatedValue)(w?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.spring(k,{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,k,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,D=S.trackWidth-S.thumbSize-S.padding,q=k.interpolate({inputRange:[0,1],outputRange:[A,D]}),B=V.interpolate({inputRange:[0,1],outputRange:[T,F]}),L=(0,_react.useRef)((0,_index2.createAnimatedValue)(1)).current,E=(0,_react.useRef)(!0);(0,_react.useEffect)(()=>{if(!m)return;if(E.current)return void(E.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,m,L]);const handlePress=e=>{a||(!1!==_&&(0,_hapticUtils.triggerHaptic)(_),j(!w),v.onPressOut?.(e))},H=p??(0,_FieldBase.fieldTextAsString)(c),P=(0,_FieldBase.hasFieldText)(c)||(0,_ChoiceText.hasChoiceDetail)(l,d),z=(!0===d||(0,_FieldBase.hasFieldText)(d))&&!w&&!a,I="row"===h&&P,M=(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[N.track,{width:S.trackWidth,height:S.trackHeight,borderRadius:R.radius.pill,..._corners.smoothCorners,backgroundColor:B},f],children:[z?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[N.errorRing,{borderRadius:R.radius.pill,..._corners.smoothCorners,borderWidth:R.colors.border.width,borderColor:R.colors.field.borderError}]}):null,(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[N.thumb,R.shadows.sm,{backgroundColor:C,width:S.thumbSize,height:S.thumbSize,borderRadius:R.radius.pill,..._corners.smoothCorners,transform:[{translateX:q},{scale:L}]},g]})]});if(I)return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:t,onPress:handlePress,disabled:a,accessibilityRole:"switch",accessibilityLabel:H,accessibilityHint:v.accessibilityHint??(0,_FieldBase.fieldTextAsString)(l),accessibilityState:{checked:w,disabled:a},"aria-checked":w,"aria-disabled":a,testID:y,...v,style:({pressed:e})=>[N.row,N.spreadRow,(0,_ChoiceText.hasChoiceDetail)(l,d)?N.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:N.spreadText}),M]});const U=(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:t,onPress:handlePress,disabled:a,accessibilityRole:"switch",accessibilityLabel:H,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},P?null:b],children:M});return P?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[N.row,(0,_ChoiceText.hasChoiceDetail)(l,d)?N.rowTop:null,x,b],children:[U,(0,_jsxRuntime.jsx)(_ChoiceText.ChoiceText,{label:c,description:l,error:d,disabled:a,labelLines:u||void 0,descriptionLines:u||void 0,style:N.text})]}):x?(0,_jsxRuntime.jsx)(_reactNative.View,{style:x,children:U}):U});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:e.spacing.sm},spreadRow:{minHeight:44,justifyContent:"space-between"},spreadText:{flex:1,marginRight:e.spacing.md}});var _default=exports.default=Switch;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Tabs=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_SegmentedControl=require("../SegmentedControl/SegmentedControl.js"),_SquircleFill=require("../SquircleFill/SquircleFill.js"),_jsxRuntime=require("react/jsx-runtime");const tabsSizes={sm:{fontSize:13,paddingVertical:8,paddingHorizontal:4,scrollablePaddingHorizontal:12,iconSize:16},md:{fontSize:15,paddingVertical:12,paddingHorizontal:8,scrollablePaddingHorizontal:16,iconSize:18},lg:{fontSize:17,paddingVertical:16,paddingHorizontal:12,scrollablePaddingHorizontal:24,iconSize:20}},Tabs=exports.Tabs=(0,_react.forwardRef)((e,t)=>{const{tabs:i,activeKey:a,onChange:r,variant:n="underline",radius:o,size:l="md",scrollable:s=!1,align:d="left",style:c,containerStyle:u,tabStyle:p,tabLabelStyle:b,tabIconStyle:g,tabBadgeStyle:m,dividerStyle:h,indicatorStyle:y,progress:x,haptic:f,accessibilityLabel:_,testID:S}=e,v=(0,_index.useTheme)(),z=(0,_react.useMemo)(()=>buildStyles(v),[v]),j=v.components.tabs,R=tabsSizes[l],C=j?.[l],H=s?C?.scrollablePaddingHorizontal??j?.tabPaddingHorizontal??R.scrollablePaddingHorizontal:C?.paddingHorizontal??j?.tabPaddingHorizontal??R.paddingHorizontal,w=C?.paddingVertical??j?.tabPaddingVertical??R.paddingVertical,k=C?.fontSize??R.fontSize,I=j?.tabIconSpacing??6,N=C?.iconSize??j?.tabIconSize??R.iconSize,V=j?.underlineHeight??2,q=j?.pillInset??4,P=j?.disabledOpacity??.45,L=j?.badgeGap??6,T="segmented"===n,F=v.components.segmentedControl,W=_SegmentedControl.segmentedControlSizes[l],A=F?.[l]?.height??W.height,M=F?.[l]?.fontSize??W.fontSize,D=F?.[l]?.paddingHorizontal??W.paddingHorizontal,B=j?.trackPadding??4,O="number"==typeof o?o:o?v.radius[o]:j?.radius,E=O??v.radius.md,U=void 0===O?v.radius.sm:Math.max(O-B,0),G=O??v.radius.full,K=O??0,X=v.colors.background.tertiary,J=(0,_SquircleFill.useSquircle)(T,E),[Q,Y]=(0,_react.useState)({}),Z=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,$=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,ee=Q[a],te=i.every(e=>void 0!==Q[e.key]),ie=void 0!==x&&te&&i.length>1,ae=(0,_react.useMemo)(()=>ie&&x?x.interpolate({inputRange:i.map((e,t)=>t),outputRange:i.map(e=>Q[e.key].x),extrapolate:"clamp"}):null,[ie,x,i,Q]),re=(0,_react.useMemo)(()=>ie&&x?x.interpolate({inputRange:i.map((e,t)=>t),outputRange:i.map(e=>Q[e.key].width),extrapolate:"clamp"}):null,[ie,x,i,Q]);(0,_react.useEffect)(()=>{if(!ee)return;if(ie)return;const e=v.motion.spring.snappy,t=_reactNative.Animated.parallel([_reactNative.Animated.spring(Z,{toValue:ee.x,damping:e.damping,stiffness:e.stiffness,mass:e.mass,overshootClamping:!0,useNativeDriver:!1}),_reactNative.Animated.spring($,{toValue:ee.width,damping:e.damping,stiffness:e.stiffness,mass:e.mass,overshootClamping:!0,useNativeDriver:!1})]);return t.start(),()=>t.stop()},[ee,a,Z,$,v.motion.spring.snappy,ie]);const ne=(0,_react.useCallback)(e=>t=>{const{x:i,width:a}=t.nativeEvent.layout;Y(t=>{const r=t[e];return r&&r.x===i&&r.width===a?t:{...t,[e]:{x:i,width:a}}})},[]),oe=(0,_react.useCallback)(e=>{if(e.disabled)return;if(e.key===a)return;const t=(0,_index2.resolveHaptic)(f,"selection");t&&(0,_index2.triggerHaptic)(t),r(e.key)},[a,r,f]),le="pills"===n,se=(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[T?z.indicatorThumb:le?z.indicatorPill:z.indicatorUnderline,T?null:le?{top:q,bottom:q}:{height:V},{width:re??$,transform:[{translateX:ae??Z}],backgroundColor:T?v.colors.background.elevated:le?v.colors.primaryMuted:v.colors.primary,borderRadius:T?U:le?G:K,..._corners.smoothCorners},y]}),renderTabs=()=>i.map(e=>{const t=e.key===a,i=!0===e.disabled,r=t?v.colors.primary:v.colors.text.tertiary,n=(0,_slotIcon.renderSlotIcon)(e.icon,{color:r,size:N,focused:t,disabled:i});return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>oe(e),onLayout:ne(e.key),disabled:i,accessibilityRole:"tab",accessibilityLabel:e.label,accessibilityState:{selected:t,disabled:i},"aria-selected":t,"aria-disabled":i,android_ripple:T?void 0:{color:v.colors.surface.pressed,borderless:!1},style:({pressed:e})=>[z.tab,s?null:z.tabFlex,T?{paddingHorizontal:D,height:A-2*B}:{paddingHorizontal:H,paddingVertical:w},{opacity:i?P:e&&T&&!t?.7:1,backgroundColor:e&&!T?v.colors.surface.pressed:"transparent"},p],children:[n?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.tabIcon,{marginRight:I},g],children:n}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.tabLabel,{color:r,fontSize:T?M:k,fontWeight:t?v.typography.fontWeight.semibold:v.typography.fontWeight.medium},b],numberOfLines:1,children:e.label}),void 0!==e.badge&&null!==e.badge?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.tabBadge,{marginLeft:L,backgroundColor:v.colors.primaryMuted,borderRadius:v.radius.full,..._corners.smoothCorners,paddingHorizontal:v.spacing.xs},m],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:v.colors.primary,fontSize:v.typography.fontSize.xs,fontWeight:v.typography.fontWeight.semibold},numberOfLines:1,children:String(e.badge)})}):null]},e.key)}),de={flexDirection:"row",alignItems:"stretch",justifyContent:s?"flex-start":"center"===d?"center":"flex-start",position:"relative",overflow:"hidden"},ce=T?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[se,renderTabs()]}):(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[renderTabs(),se]});return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,style:[z.container,{borderBottomColor:v.colors.border.secondary,borderBottomWidth:"underline"===n?_reactNative.StyleSheet.hairlineWidth:0},"underline"===n?h:null,T?{padding:B,borderRadius:E,..._corners.smoothCorners,backgroundColor:J.active?"transparent":X}:null,c,u],onLayout:J.onLayout,accessibilityRole:"tablist",accessibilityLabel:_,testID:S,children:[J.active&&J.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:J.size.width,height:J.size.height,radius:E,fill:X}):null,s?(0,_jsxRuntime.jsx)(_reactNative.ScrollView,{horizontal:!0,showsHorizontalScrollIndicator:!1,contentContainerStyle:[de],keyboardShouldPersistTaps:"handled",children:ce}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:de,children:ce})]})});Tabs.displayName="Tabs";const buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%",position:"relative"},tab:{flexDirection:"row",alignItems:"center",justifyContent:"center"},tabFlex:{flex:1},tabIcon:{},tabLabel:{includeFontPadding:!1,flexShrink:1},tabBadge:{minWidth:18,alignItems:"center",justifyContent:"center"},indicatorUnderline:{position:"absolute",left:0,bottom:0},indicatorPill:{position:"absolute",left:0,zIndex:-1},indicatorThumb:{position:"absolute",left:0,top:0,bottom:0}});var _default=exports.default=Tabs;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Tabs=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_SquircleFill=require("../SquircleFill/SquircleFill.js"),_jsxRuntime=require("react/jsx-runtime");const Tabs=exports.Tabs=(0,_react.forwardRef)((e,t)=>{const{tabs:i,activeKey:a,onChange:r,variant:n="underline",radius:s,size:o="md",scrollable:l=!1,align:d="left",style:c,containerStyle:u,tabStyle:p,tabLabelStyle:m,tabIconStyle:b,tabBadgeStyle:g,dividerStyle:x,indicatorStyle:_,progress:y,haptic:h,accessibilityLabel:f,testID:v}=e,j=(0,_index.useTheme)(),S=(0,_react.useMemo)(()=>buildStyles(j),[j]),R=j.components.tabs,k=(0,_react.useMemo)(()=>(0,_index.resolveTabsSize)(j,o),[j,o]),w=l?k.scrollablePaddingX:k.paddingX,C=k.paddingY,N=k.text,I=(0,_index.spaceOf)(j,R.iconGap,"components.tabs.iconGap"),z=k.icon,q=R?.underlineHeight??2,T=(0,_index.spaceOf)(j,R.pillInset,"components.tabs.pillInset"),L=R?.disabledOpacity??.45,F=(0,_index.spaceOf)(j,R.badgeGap,"components.tabs.badgeGap"),V="segmented"===n,P=(0,_react.useMemo)(()=>(0,_index.resolveSegmentedControlSize)(j,o),[j,o]),M=(0,_index.spaceOf)(j,R.trackPadding,"components.tabs.trackPadding"),O=void 0===R.radius?void 0:(0,_index.radiusOf)(j,R.radius,"components.tabs.radius"),W="number"==typeof s?s:s?j.radius[s]:O,A=W??j.radius.md,H=void 0===W?j.radius.sm:Math.max(W-M,0),D=W??j.radius.pill,B=W??j.radius.none,G=j.colors.background.tertiary,X=(0,_SquircleFill.useSquircle)(V,A),[E,U]=(0,_react.useState)({}),K=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,Y=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,J=E[a],Q=i.every(e=>void 0!==E[e.key]),Z=void 0!==y&&Q&&i.length>1,$=(0,_react.useMemo)(()=>Z&&y?y.interpolate({inputRange:i.map((e,t)=>t),outputRange:i.map(e=>E[e.key].x),extrapolate:"clamp"}):null,[Z,y,i,E]),ee=(0,_react.useMemo)(()=>Z&&y?y.interpolate({inputRange:i.map((e,t)=>t),outputRange:i.map(e=>E[e.key].width),extrapolate:"clamp"}):null,[Z,y,i,E]);(0,_react.useEffect)(()=>{if(!J)return;if(Z)return;const e=j.motion.spring.snappy,t=_reactNative.Animated.parallel([_reactNative.Animated.spring(K,{toValue:J.x,damping:e.damping,stiffness:e.stiffness,mass:e.mass,overshootClamping:!0,useNativeDriver:!1}),_reactNative.Animated.spring(Y,{toValue:J.width,damping:e.damping,stiffness:e.stiffness,mass:e.mass,overshootClamping:!0,useNativeDriver:!1})]);return t.start(),()=>t.stop()},[J,a,K,Y,j.motion.spring.snappy,Z]);const te=(0,_react.useCallback)(e=>t=>{const{x:i,width:a}=t.nativeEvent.layout;U(t=>{const r=t[e];return r&&r.x===i&&r.width===a?t:{...t,[e]:{x:i,width:a}}})},[]),ie=(0,_react.useCallback)(e=>{if(e.disabled)return;if(e.key===a)return;const t=(0,_index2.resolveHaptic)(h,"selection");t&&(0,_index2.triggerHaptic)(t),r(e.key)},[a,r,h]),ae="pills"===n,re=(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[V?S.indicatorThumb:ae?S.indicatorPill:S.indicatorUnderline,V?null:ae?{top:T,bottom:T}:{height:q},{width:ee??Y,transform:[{translateX:$??K}],backgroundColor:V?j.colors.background.elevated:ae?j.colors.primaryMuted:j.colors.primary,borderRadius:V?H:ae?D:B,..._corners.smoothCorners},_]}),renderTabs=()=>i.map(e=>{const t=e.key===a,i=!0===e.disabled,r=t?j.colors.primary:j.colors.text.tertiary,n=(0,_slotIcon.renderSlotIcon)(e.icon,{color:r,size:z,focused:t,disabled:i});return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>ie(e),onLayout:te(e.key),disabled:i,accessibilityRole:"tab",accessibilityLabel:e.label,accessibilityState:{selected:t,disabled:i},"aria-selected":t,"aria-disabled":i,android_ripple:V?void 0:{color:j.colors.surface.pressed,borderless:!1},style:({pressed:e})=>[S.tab,l?null:S.tabFlex,V?{paddingHorizontal:P.paddingX,height:P.height-2*M}:{paddingHorizontal:w,paddingVertical:C},{opacity:i?L:e&&V&&!t?.7:1,backgroundColor:e&&!V?j.colors.surface.pressed:"transparent"},p],children:[n?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[S.tabIcon,{marginRight:I},b],children:n}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[S.tabLabel,{color:r,fontSize:V?P.text:N,fontWeight:t?j.typography.fontWeight.semibold:j.typography.fontWeight.medium},m],numberOfLines:1,children:e.label}),void 0!==e.badge&&null!==e.badge?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[S.tabBadge,{marginLeft:F,backgroundColor:j.colors.primaryMuted,borderRadius:j.radius.pill,..._corners.smoothCorners,paddingHorizontal:j.spacing.xs},g],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:j.colors.primary,fontSize:j.typography.fontSize.xs,fontWeight:j.typography.fontWeight.semibold},numberOfLines:1,children:String(e.badge)})}):null]},e.key)}),ne={flexDirection:"row",alignItems:"stretch",justifyContent:l?"flex-start":"center"===d?"center":"flex-start",position:"relative",overflow:"hidden"},se=V?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[re,renderTabs()]}):(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[renderTabs(),re]});return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,style:[S.container,{borderBottomColor:j.colors.border.secondary,borderBottomWidth:"underline"===n?_reactNative.StyleSheet.hairlineWidth:0},"underline"===n?x:null,V?{padding:M,borderRadius:A,..._corners.smoothCorners,backgroundColor:X.active?"transparent":G}:null,c,u],onLayout:X.onLayout,accessibilityRole:"tablist",accessibilityLabel:f,testID:v,children:[X.active&&X.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:X.size.width,height:X.size.height,radius:A,fill:G}):null,l?(0,_jsxRuntime.jsx)(_reactNative.ScrollView,{horizontal:!0,showsHorizontalScrollIndicator:!1,contentContainerStyle:[ne],keyboardShouldPersistTaps:"handled",children:se}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:ne,children:se})]})});Tabs.displayName="Tabs";const buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%",position:"relative"},tab:{flexDirection:"row",alignItems:"center",justifyContent:"center"},tabFlex:{flex:1},tabIcon:{},tabLabel:{includeFontPadding:!1,flexShrink:1},tabBadge:{minWidth:18,alignItems:"center",justifyContent:"center"},indicatorUnderline:{position:"absolute",left:0,bottom:0},indicatorPill:{position:"absolute",left:0,zIndex:-1},indicatorThumb:{position:"absolute",left:0,top:0,bottom:0}});var _default=exports.default=Tabs;
@@ -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"),_jsxRuntime=require("react/jsx-runtime");const TagInput=exports.TagInput=(0,_react.forwardRef)((e,t)=>{const{value:i,defaultValue:r,onChange:n,placeholder:a,label:s,helperText:l,error:o,required:u,disabled:d=!1,size:c="md",variant:x,maxTags:p,unique:_=!0,transform:g,separators:h=[","],haptic:m,onFocus:f,style:j,testID:v}=e,b=(0,_index2.useTheme)(),y=(0,_react.useMemo)(()=>buildStyles(b),[b]),[C,R]=(0,_index.useControllableState)({value:i,defaultValue:r??[],onChange:n}),[S,T]=(0,_react.useState)(""),[q,w]=(0,_react.useState)(!1),I=(0,_react.useRef)(null),F=(0,_react.useMemo)(()=>(0,_index3.mergeRefs)(I,t),[t]),k=(0,_react.useCallback)(()=>{d||I.current?.focus()},[d]),z="number"==typeof p&&C.length>=p,B=!0===o||(0,_index5.hasFieldText)(o),N=u&&!s&&0===C.length&&0===S.length&&Boolean(a),V=(0,_react.useCallback)(e=>{const t=g?g(e.trim()):e.trim();if(!t)return;if(z)return;if(_&&C.some(e=>e.toLowerCase()===t.toLowerCase()))return void T("");R([...C,t]),T("");const i=(0,_index3.resolveHaptic)(m,"selection");i&&(0,_index3.triggerHaptic)(i)},[z,m,R,C,g,_]),D=(0,_react.useCallback)(e=>{const t=C.filter((t,i)=>i!==e);R(t);const i=(0,_index3.resolveHaptic)(m,"selection");i&&(0,_index3.triggerHaptic)(i)},[m,R,C]),H=(0,_react.useCallback)(e=>{const t=h.find(t=>t.length>0&&e.includes(t));if(t){const[i]=e.split(t);return void V(i)}T(e)},[V,h]),L=(0,_react.useCallback)(e=>{d||"Backspace"===e.nativeEvent.key&&""===S&&C.length>0&&D(C.length-1)},[d,S,D,C.length]),M=(0,_jsxRuntime.jsx)(_index5.FieldBase,{size:c,variant:x,focused:q,disabled:d,error:B,filled:C.length>0||S.length>0,onPress:k,pressFeedback:!1,style:j,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:y.wrap,children:[C.map((e,t)=>(0,_jsxRuntime.jsx)(_index4.Chip,{label:e,size:"sm",onClose:d?void 0:()=>D(t),haptic:m},`${e}-${t}`)),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:y.inputBox,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:F,value:S,onChangeText:H,onKeyPress:L,onSubmitEditing:()=>V(S),onFocus:e=>{w(!0),f?.(e)},onBlur:()=>{w(!1),V(S)},editable:!d&&!z,placeholder:z||N?void 0:a,placeholderTextColor:b.colors.text.tertiary,blurOnSubmit:!1,returnKeyType:"done",accessibilityLabel:s??a,style:[y.input,{color:b.colors.text.primary,fontSize:b.typography.fontSize.base}],testID:v?`${v}-input`:void 0}),N?(0,_jsxRuntime.jsx)(_index5.RequiredPlaceholder,{text:a??"",color:b.colors.text.tertiary,fontSize:b.typography.fontSize.base,weightStyle:(0,_index2.fontFor)(b,"normal")}):null]})]})});return(0,_jsxRuntime.jsxs)(_reactNative.View,{testID:v,children:[s?(0,_jsxRuntime.jsx)(_index5.FieldLabel,{size:c,required:u,children:s}):null,M,(0,_jsxRuntime.jsx)(_index5.FieldMessage,{size:c,error:B,text:B?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},inputBox:{flexGrow:1,minWidth:80},input:{...(0,_index2.fontFor)(e,"normal"),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:i,defaultValue:r,onChange:n,placeholder:a,label:s,helperText:l,error:o,required:u,disabled:c=!1,size:d="md",variant:x,maxTags:p,unique:_=!0,transform:g,separators:h=[","],haptic:m,onFocus:f,style:j,testID:v}=e,b=(0,_index2.useTheme)(),y=(0,_react.useMemo)(()=>buildStyles(b),[b]),[C,R]=(0,_index.useControllableState)({value:i,defaultValue:r??[],onChange:n}),[S,T]=(0,_react.useState)(""),[q,w]=(0,_react.useState)(!1),I=(0,_react.useRef)(null),F=(0,_react.useMemo)(()=>(0,_index3.mergeRefs)(I,t),[t]),k=(0,_react.useCallback)(()=>{c||I.current?.focus()},[c]),z="number"==typeof p&&C.length>=p,B=!0===o||(0,_index5.hasFieldText)(o),N=u&&!s&&0===C.length&&0===S.length&&Boolean(a),V=(0,_react.useCallback)(e=>{const t=g?g(e.trim()):e.trim();if(!t)return;if(z)return;if(_&&C.some(e=>e.toLowerCase()===t.toLowerCase()))return void T("");R([...C,t]),T("");const i=(0,_index3.resolveHaptic)(m,"selection");i&&(0,_index3.triggerHaptic)(i)},[z,m,R,C,g,_]),D=(0,_react.useCallback)(e=>{const t=C.filter((t,i)=>i!==e);R(t);const i=(0,_index3.resolveHaptic)(m,"selection");i&&(0,_index3.triggerHaptic)(i)},[m,R,C]),H=(0,_react.useCallback)(e=>{const t=h.find(t=>t.length>0&&e.includes(t));if(t){const[i]=e.split(t);return void V(i)}T(e)},[V,h]),L=(0,_react.useCallback)(e=>{c||"Backspace"===e.nativeEvent.key&&""===S&&C.length>0&&D(C.length-1)},[c,S,D,C.length]),M=(0,_jsxRuntime.jsx)(_index5.FieldBase,{size:d,variant:x,focused:q,disabled:c,error:B,filled:C.length>0||S.length>0,onPress:k,pressFeedback:!1,style:j,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:y.wrap,children:[C.map((e,t)=>(0,_jsxRuntime.jsx)(_index4.Chip,{label:e,size:"sm",onClose:c?void 0:()=>D(t),haptic:m},`${e}-${t}`)),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:y.inputBox,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:F,value:S,onChangeText:H,onKeyPress:L,onSubmitEditing:()=>V(S),onFocus:e=>{w(!0),f?.(e)},onBlur:()=>{w(!1),V(S)},editable:!c&&!z,placeholder:z||N?void 0:a,placeholderTextColor:b.colors.text.tertiary,blurOnSubmit:!1,returnKeyType:"done",accessibilityLabel:s??a,style:[y.input,{color:b.colors.text.primary,fontSize:b.typography.fontSize.base}],testID:v?`${v}-input`:void 0}),N?(0,_jsxRuntime.jsx)(_index5.RequiredPlaceholder,{text:a??"",color:b.colors.text.tertiary,fontSize:b.typography.fontSize.base,weightStyle:(0,_index2.fontFor)(b,"normal")}):null]})]})});return(0,_jsxRuntime.jsxs)(_reactNative.View,{testID:v,children:[s?(0,_jsxRuntime.jsx)(_index5.FieldLabel,{size:d,required:u,children:s}):null,M,(0,_jsxRuntime.jsx)(_index5.FieldMessage,{size:d,error:B,text:B?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},inputBox:{flexGrow:1,minWidth:80},input:{...(0,_index2.fontFor)(e,"normal"),padding:e.spacing.none}});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"),_useDragToDismiss=require("../../hooks/useDragToDismiss.js"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_Button=_interopRequireDefault(require("../Button/Button.js")),_ModalSafeArea=require("../ModalSafeArea/ModalSafeArea.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 AnimatedGestureRoot=_reactNative.Animated.createAnimatedComponent(_reactNativeGestureHandler.GestureHandlerRootView),transparentOf=e=>{const t=e.match(/^rgba?\(([^)]+)\)$/);if(!t)return"transparent";const[a,i,r]=t[1].split(",").map(e=>e.trim());return`rgba(${a}, ${i}, ${r}, 0)`},range=(e,t,a=1)=>{const i=[];for(let r=e;r<=t;r+=a)i.push(r);return i},pad2=e=>e.toString().padStart(2,"0"),to24h=(e,t,a)=>"24h"===a?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 a=Math.round(e/t)*t;return Math.min(59,Math.max(0,a))},TimePicker=e=>{const{visible:t,value:a,onChange:i,onClose:r,format:s="12h",minuteStep:n=1,title:o="Select Time",confirmLabel:l="Confirm",cancelLabel:u="Cancel",testID:c,style:d,containerStyle:m,headerLabelStyle:p,footerButtonStyle:_,label:g,placeholder:h,helperText:v,error:f,required:x,disabled:y,size:b,variant:j,clearable:M,onClear:N,formatValue:R,triggerStyle:k,haptic:A}=e,S=void 0!==e.visible,[P,T]=(0,_react.useState)(!1),D=S?t:P,w=S?c:c?`${c}-modal`:void 0,C=(0,_index.useTheme)(),H=(0,_usePresenceMotion.usePresenceMotion)(),[V,q]=(0,_ModalSafeArea.useModalInsets)(),$=(0,_react.useMemo)(()=>buildStyles(C),[C]),B=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,I=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,O=(0,_react.useRef)((0,_index.createAnimatedValue)(40)).current,L=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,z=(0,_react.useRef)(0),W=(0,_react.useCallback)(()=>{S?r?.():T(!1)},[S,r]),F=(0,_react.useCallback)(()=>{const e=_reactNative.Animated.timing(B,{toValue:0,duration:H.duration("fast"),easing:_reactNative.Easing.bezier(...C.motion.easing.accelerate),useNativeDriver:!0}),t=_reactNative.Animated.timing(I,{toValue:0,duration:H.duration("normal"),useNativeDriver:!1});(H.reduced?_reactNative.Animated.parallel([e,t]):_reactNative.Animated.parallel([e,t,_reactNative.Animated.timing(O,{toValue:40,duration:C.motion.duration.fast,easing:_reactNative.Easing.bezier(...C.motion.easing.accelerate),useNativeDriver:!0})])).start(()=>W())},[I,W,B,H,O,C.motion.duration.fast,C.motion.easing.accelerate]),{handleGesture:G,opacity:E}=(0,_useDragToDismiss.useDragToDismiss)({drag:L,travel:()=>z.current||320,onDismiss:F}),U=(0,_react.useMemo)(()=>_reactNative.Animated.multiply(B,E),[B,E]),Y=(0,_react.useMemo)(()=>I.interpolate({inputRange:[0,1],outputRange:[transparentOf(C.colors.background.overlay),C.colors.background.overlay]}),[I,C.colors.background.overlay]),J=(0,_react.useMemo)(()=>"24h"===s?range(0,23):range(1,12),[s]),K=(0,_react.useMemo)(()=>range(0,59,n),[n]),Q=(0,_react.useMemo)(()=>["AM","PM"],[]),X=(0,_react.useMemo)(()=>{const e=a&&Number.isFinite(a.hour)?a.hour:(new Date).getHours(),t=a&&Number.isFinite(a.minute)?a.minute:(new Date).getMinutes(),i=clampMinuteToStep(t,n),{displayHour:r,period:o}=from24h(e,s);return{displayHour:r,minute:i,period:o,hour24:e}},[a,s,n]),[Z,ee]=(0,_react.useState)(()=>{const e=J.indexOf(X.displayHour);return e>=0?e:0}),[te,ae]=(0,_react.useState)(()=>{const e=K.indexOf(X.minute);return e>=0?e:0}),[ie,re]=(0,_react.useState)(()=>"PM"===X.period?1:0);(0,_react.useEffect)(()=>{if(!D)return;const e=a&&Number.isFinite(a.hour)?a.hour:(new Date).getHours(),t=a&&Number.isFinite(a.minute)?a.minute:(new Date).getMinutes(),i=clampMinuteToStep(t,n),{displayHour:r,period:o}=from24h(e,s),l=J.indexOf(r);ee(l>=0?l:0);const u=K.indexOf(i);ae(u>=0?u:0),re("PM"===o?1:0)},[D,a,s,n,J,K]),(0,_react.useEffect)(()=>{let e;if(D){const t=_reactNative.Animated.timing(B,{toValue:1,duration:H.duration("normal"),easing:_reactNative.Easing.out(_reactNative.Easing.cubic),useNativeDriver:!0}),a=_reactNative.Animated.timing(I,{toValue:1,duration:H.duration("normal"),useNativeDriver:!1});H.reduced?((0,_index.setNativeValue)(O,0),e=_reactNative.Animated.parallel([t,a])):e=_reactNative.Animated.parallel([t,a,_reactNative.Animated.spring(O,{toValue:0,damping:C.motion.spring.snappy.damping,stiffness:C.motion.spring.snappy.stiffness,mass:C.motion.spring.snappy.mass,useNativeDriver:!0})]),e.start()}else B.setValue(0),I.setValue(0),(0,_index.setNativeValue)(O,40),(0,_index.setNativeValue)(L,0),(0,_index.setNativeValue)(E,1);return()=>e?.stop()},[D,B,I,H,O,L,E,C.motion]);const se=(0,_react.useCallback)((e,t)=>{"hour"===e?ee(Math.max(0,J.indexOf(Number(t)))):"minute"===e?ae(Math.max(0,K.indexOf(Number(t)))):re("PM"===t?1:0)},[J,K]),ne=(0,_react.useCallback)(()=>{!1!==A&&(0,_hapticUtils.triggerHaptic)("selection"),F()},[F,A]),oe=(0,_react.useCallback)(()=>{const e=J[Z]??0,t=Q[ie]??"AM",a=to24h(e,t,s),r=K[te]??0;!1!==A&&(0,_hapticUtils.triggerHaptic)("notificationSuccess"),i?.({hour:a,minute:r}),F()},[J,Z,Q,ie,K,te,s,i,F,A]),le=(0,_react.useMemo)(()=>{const e=J[Z]??0,t=K[te]??0;if("24h"===s)return`${pad2(e)}:${pad2(t)}`;const a=Q[ie]??"AM";return`${pad2(e)}:${pad2(t)} ${a}`},[J,Z,K,te,Q,ie,s]),ue=(0,_react.useMemo)(()=>J.map(e=>({value:e,label:pad2(e),accessibilityLabel:`Hour ${e}`})),[J]),ce=(0,_react.useMemo)(()=>K.map(e=>({value:e,label:pad2(e),accessibilityLabel:`${e} minutes`})),[K]),de=(0,_react.useMemo)(()=>Q.map(e=>({value:e,label:e})),[Q]),me=(0,_react.useMemo)(()=>{const e=[{key:"hour",label:"Hour",items:ue,value:J[Z]??0,separator:":",testID:"time-picker-hour"},{key:"minute",label:"Minute",items:ce,value:K[te]??0,gapAfter:"12h"===s?C.spacing.md:void 0,testID:"time-picker-minute"}];return"12h"===s&&e.push({key:"period",label:"Period",items:de,value:Q[ie]??"AM",testID:"time-picker-period"}),e},[ue,ce,de,J,Z,K,te,Q,ie,s,C.spacing.md]),pe=(0,_react.useCallback)(e=>{if("24h"===s)return`${pad2(e.hour)}:${pad2(e.minute)}`;const{displayHour:t,period:a}=from24h(e.hour,"12h");return`${t}:${pad2(e.minute)} ${a}`},[s]),ge=!S&&a&&Number.isFinite(a.hour)&&Number.isFinite(a.minute)?(R??pe)(a):void 0,he=(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:D,transparent:!0,statusBarTranslucent:!0,navigationBarTranslucent:!0,animationType:"none",onRequestClose:F,testID:w,children:(0,_jsxRuntime.jsx)(_ModalSafeArea.ModalSafeArea,{onInsets:q,children:(0,_jsxRuntime.jsxs)(AnimatedGestureRoot,{collapsable:!1,style:[$.backdrop,{backgroundColor:Y}],children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:F,accessibilityLabel:"Close time picker",accessibilityRole:"button"}),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:H.reduced?{opacity:U}:void 0,children:(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[$.sheet,{paddingBottom:Math.max(V.bottom,C.spacing.lg),transform:[{translateY:_reactNative.Animated.add(O,L)}]},d,m],onLayout:e=>{z.current=e.nativeEvent.layout.height},accessibilityViewIsModal:!0,accessible:!0,accessibilityRole:"none",accessibilityLabel:o,children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:G,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:$.handle}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[$.title,p],accessibilityRole:"header",children:o})]})}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:$.summaryWrap,accessibilityLiveRegion:"polite",accessibilityLabel:`Selected ${le}`,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:$.summary,children:le})}),(0,_jsxRuntime.jsx)(_index2.WheelPicker,{columns:me,onChange:se,haptic:A,style:$.wheels}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:$.footer,children:[(0,_jsxRuntime.jsx)(_Button.default,{title:u,haptic:!1,variant:"ghost",tone:"neutral",onPress:ne,style:[$.footerBtn,_],accessibilityHint:"Dismiss without changes",testID:"time-picker-cancel"}),(0,_jsxRuntime.jsx)(_Button.default,{title:l,variant:"solid",tone:"primary",haptic:!1,onPress:oe,style:[$.footerBtn,_],accessibilityHint:"Confirm selected time",testID:"time-picker-confirm"})]})]})}),(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})})});return S?he:(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_PickerTrigger.PickerTrigger,{label:g,placeholder:h,helperText:v,error:f,required:x,disabled:y,size:b,variant:j,clearable:M,onClear:N,value:ge,onPress:()=>T(!0),triggerStyle:k,testID:c}),he]})};exports.TimePicker=TimePicker;const buildStyles=e=>{const t=e.shadows.xl;return _reactNative.StyleSheet.create({backdrop:{flex:1,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
+ "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"),_useDragToDismiss=require("../../hooks/useDragToDismiss.js"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_Button=_interopRequireDefault(require("../Button/Button.js")),_ModalSafeArea=require("../ModalSafeArea/ModalSafeArea.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 AnimatedGestureRoot=_reactNative.Animated.createAnimatedComponent(_reactNativeGestureHandler.GestureHandlerRootView),transparentOf=e=>{const t=e.match(/^rgba?\(([^)]+)\)$/);if(!t)return"transparent";const[a,i,r]=t[1].split(",").map(e=>e.trim());return`rgba(${a}, ${i}, ${r}, 0)`},range=(e,t,a=1)=>{const i=[];for(let r=e;r<=t;r+=a)i.push(r);return i},pad2=e=>e.toString().padStart(2,"0"),to24h=(e,t,a)=>"24h"===a?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 a=Math.round(e/t)*t;return Math.min(59,Math.max(0,a))},TimePicker=e=>{const{visible:t,value:a,onChange:i,onClose:r,format:s="12h",minuteStep:n=1,title:o="Select Time",confirmLabel:l="Confirm",cancelLabel:u="Cancel",testID:c,style:d,containerStyle:m,headerLabelStyle:p,footerButtonStyle:_,label:g,placeholder:h,helperText:v,error:f,required:x,disabled:y,size:b,variant:j,clearable:M,onClear:N,formatValue:R,triggerStyle:k,haptic:A}=e,S=void 0!==e.visible,[P,T]=(0,_react.useState)(!1),D=S?t:P,w=S?c:c?`${c}-modal`:void 0,C=(0,_index.useTheme)(),H=(0,_usePresenceMotion.usePresenceMotion)(),[V,q]=(0,_ModalSafeArea.useModalInsets)(),$=(0,_react.useMemo)(()=>buildStyles(C),[C]),B=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,I=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,O=(0,_react.useRef)((0,_index.createAnimatedValue)(40)).current,L=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,z=(0,_react.useRef)(0),W=(0,_react.useCallback)(()=>{S?r?.():T(!1)},[S,r]),F=(0,_react.useCallback)(()=>{const e=_reactNative.Animated.timing(B,{toValue:0,duration:H.duration("fast"),easing:_reactNative.Easing.bezier(...C.motion.easing.accelerate),useNativeDriver:!0}),t=_reactNative.Animated.timing(I,{toValue:0,duration:H.duration("normal"),useNativeDriver:!1});(H.reduced?_reactNative.Animated.parallel([e,t]):_reactNative.Animated.parallel([e,t,_reactNative.Animated.timing(O,{toValue:40,duration:C.motion.duration.fast,easing:_reactNative.Easing.bezier(...C.motion.easing.accelerate),useNativeDriver:!0})])).start(()=>W())},[I,W,B,H,O,C.motion.duration.fast,C.motion.easing.accelerate]),{handleGesture:G,opacity:E}=(0,_useDragToDismiss.useDragToDismiss)({drag:L,travel:()=>z.current||320,onDismiss:F}),U=(0,_react.useMemo)(()=>_reactNative.Animated.multiply(B,E),[B,E]),Y=(0,_react.useMemo)(()=>I.interpolate({inputRange:[0,1],outputRange:[transparentOf(C.colors.background.overlay),C.colors.background.overlay]}),[I,C.colors.background.overlay]),J=(0,_react.useMemo)(()=>"24h"===s?range(0,23):range(1,12),[s]),K=(0,_react.useMemo)(()=>range(0,59,n),[n]),Q=(0,_react.useMemo)(()=>["AM","PM"],[]),X=(0,_react.useMemo)(()=>{const e=a&&Number.isFinite(a.hour)?a.hour:(new Date).getHours(),t=a&&Number.isFinite(a.minute)?a.minute:(new Date).getMinutes(),i=clampMinuteToStep(t,n),{displayHour:r,period:o}=from24h(e,s);return{displayHour:r,minute:i,period:o,hour24:e}},[a,s,n]),[Z,ee]=(0,_react.useState)(()=>{const e=J.indexOf(X.displayHour);return e>=0?e:0}),[te,ae]=(0,_react.useState)(()=>{const e=K.indexOf(X.minute);return e>=0?e:0}),[ie,re]=(0,_react.useState)(()=>"PM"===X.period?1:0);(0,_react.useEffect)(()=>{if(!D)return;const e=a&&Number.isFinite(a.hour)?a.hour:(new Date).getHours(),t=a&&Number.isFinite(a.minute)?a.minute:(new Date).getMinutes(),i=clampMinuteToStep(t,n),{displayHour:r,period:o}=from24h(e,s),l=J.indexOf(r);ee(l>=0?l:0);const u=K.indexOf(i);ae(u>=0?u:0),re("PM"===o?1:0)},[D,a,s,n,J,K]),(0,_react.useEffect)(()=>{let e;if(D){const t=_reactNative.Animated.timing(B,{toValue:1,duration:H.duration("normal"),easing:_reactNative.Easing.out(_reactNative.Easing.cubic),useNativeDriver:!0}),a=_reactNative.Animated.timing(I,{toValue:1,duration:H.duration("normal"),useNativeDriver:!1});H.reduced?((0,_index.setNativeValue)(O,0),e=_reactNative.Animated.parallel([t,a])):e=_reactNative.Animated.parallel([t,a,_reactNative.Animated.spring(O,{toValue:0,damping:C.motion.spring.snappy.damping,stiffness:C.motion.spring.snappy.stiffness,mass:C.motion.spring.snappy.mass,useNativeDriver:!0})]),e.start()}else B.setValue(0),I.setValue(0),(0,_index.setNativeValue)(O,40),(0,_index.setNativeValue)(L,0),(0,_index.setNativeValue)(E,1);return()=>e?.stop()},[D,B,I,H,O,L,E,C.motion]);const se=(0,_react.useCallback)((e,t)=>{"hour"===e?ee(Math.max(0,J.indexOf(Number(t)))):"minute"===e?ae(Math.max(0,K.indexOf(Number(t)))):re("PM"===t?1:0)},[J,K]),ne=(0,_react.useCallback)(()=>{!1!==A&&(0,_hapticUtils.triggerHaptic)("selection"),F()},[F,A]),oe=(0,_react.useCallback)(()=>{const e=J[Z]??0,t=Q[ie]??"AM",a=to24h(e,t,s),r=K[te]??0;!1!==A&&(0,_hapticUtils.triggerHaptic)("notificationSuccess"),i?.({hour:a,minute:r}),F()},[J,Z,Q,ie,K,te,s,i,F,A]),le=(0,_react.useMemo)(()=>{const e=J[Z]??0,t=K[te]??0;if("24h"===s)return`${pad2(e)}:${pad2(t)}`;const a=Q[ie]??"AM";return`${pad2(e)}:${pad2(t)} ${a}`},[J,Z,K,te,Q,ie,s]),ue=(0,_react.useMemo)(()=>J.map(e=>({value:e,label:pad2(e),accessibilityLabel:`Hour ${e}`})),[J]),ce=(0,_react.useMemo)(()=>K.map(e=>({value:e,label:pad2(e),accessibilityLabel:`${e} minutes`})),[K]),de=(0,_react.useMemo)(()=>Q.map(e=>({value:e,label:e})),[Q]),me=(0,_react.useMemo)(()=>{const e=[{key:"hour",label:"Hour",items:ue,value:J[Z]??0,separator:":",testID:"time-picker-hour"},{key:"minute",label:"Minute",items:ce,value:K[te]??0,gapAfter:"12h"===s?C.spacing.md:void 0,testID:"time-picker-minute"}];return"12h"===s&&e.push({key:"period",label:"Period",items:de,value:Q[ie]??"AM",testID:"time-picker-period"}),e},[ue,ce,de,J,Z,K,te,Q,ie,s,C.spacing.md]),pe=(0,_react.useCallback)(e=>{if("24h"===s)return`${pad2(e.hour)}:${pad2(e.minute)}`;const{displayHour:t,period:a}=from24h(e.hour,"12h");return`${t}:${pad2(e.minute)} ${a}`},[s]),ge=!S&&a&&Number.isFinite(a.hour)&&Number.isFinite(a.minute)?(R??pe)(a):void 0,he=(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:D,transparent:!0,statusBarTranslucent:!0,navigationBarTranslucent:!0,animationType:"none",onRequestClose:F,testID:w,children:(0,_jsxRuntime.jsx)(_ModalSafeArea.ModalSafeArea,{onInsets:q,children:(0,_jsxRuntime.jsxs)(AnimatedGestureRoot,{collapsable:!1,style:[$.backdrop,{backgroundColor:Y}],children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:F,accessibilityLabel:"Close time picker",accessibilityRole:"button"}),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:H.reduced?{opacity:U}:void 0,children:(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[$.sheet,{paddingBottom:Math.max(V.bottom,C.spacing.lg),transform:[{translateY:_reactNative.Animated.add(O,L)}]},d,m],onLayout:e=>{z.current=e.nativeEvent.layout.height},accessibilityViewIsModal:!0,accessible:!0,accessibilityRole:"none",accessibilityLabel:o,children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:G,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:$.handle}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[$.title,p],accessibilityRole:"header",children:o})]})}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:$.summaryWrap,accessibilityLiveRegion:"polite",accessibilityLabel:`Selected ${le}`,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:$.summary,children:le})}),(0,_jsxRuntime.jsx)(_index2.WheelPicker,{columns:me,onChange:se,haptic:A,style:$.wheels}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:$.footer,children:[(0,_jsxRuntime.jsx)(_Button.default,{title:u,haptic:!1,variant:"ghost",tone:"neutral",onPress:ne,style:[$.footerBtn,_],accessibilityHint:"Dismiss without changes",testID:"time-picker-cancel"}),(0,_jsxRuntime.jsx)(_Button.default,{title:l,variant:"solid",tone:"primary",haptic:!1,onPress:oe,style:[$.footerBtn,_],accessibilityHint:"Confirm selected time",testID:"time-picker-confirm"})]})]})}),(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})})});return S?he:(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_PickerTrigger.PickerTrigger,{label:g,placeholder:h,helperText:v,error:f,required:x,disabled:y,size:b,variant:j,clearable:M,onClear:N,value:ge,onPress:()=>T(!0),triggerStyle:k,testID:c}),he]})};exports.TimePicker=TimePicker;const buildStyles=e=>{const t=e.shadows.xl;return _reactNative.StyleSheet.create({backdrop:{flex:1,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.pill,..._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.Timeline=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_jsxRuntime=require("react/jsx-runtime");const DOT=12,HALO=6,RAIL=2,GAP=4,GUTTER=28,HALO_OPACITY=.16,Timeline=({items:e,variant:t="feed",orientation:r="vertical",style:i,testID:n})=>{const o=(0,_index.useTheme)(),s=o.components.timeline,a=s?.dotSize??12,l=s?.haloWidth??6,c=s?.connectorGap??4,d=a+2*l,u=(0,_react.useMemo)(()=>buildStyles(o,a,d,c),[o,a,d,c]),m="horizontal"===r,x=o.colors.border.primary,[h,_]=(0,_react.useState)(0),g=(0,_react.useCallback)(e=>{const{width:t}=e.nativeEvent.layout;_(e=>e===t?e:t)},[]),y=m&&h>0&&e.length>0?h/e.length:0,renderDisc=(e,t)=>e.icon?(0,_jsxRuntime.jsx)(_reactNative.View,{style:u.disc,children:e.icon}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[u.disc,{backgroundColor:(0,_color.tintOf)(t,.16,o.colors.background.tertiary)}],children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[u.dot,{backgroundColor:t}]})}),renderText=(e,t)=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[u.title,{fontSize:m?o.typography.fontSize.sm:o.typography.fontSize.base,color:"upcoming"===t?o.colors.text.secondary:o.colors.text.primary},m?u.centred:null],children:e.title}),e.meta?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[u.meta,{fontSize:o.typography.fontSize.xs,color:o.colors.text.tertiary},m?u.centred:null],children:e.meta}):null,e.description?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[u.description,{fontSize:o.typography.fontSize.sm,color:o.colors.text.secondary},m?u.centred:null],children:e.description}):null,e.children]}),j=e.map((r,i)=>{const n=r.status??("feed"===t?"done":"upcoming"),s=r.color??(e=>{switch(e){case"done":return o.colors.success;case"current":return o.colors.warning;case"onHold":return o.colors.info;case"rejected":return o.colors.error;case"cancelled":case"skipped":return o.colors.text.tertiary;default:return o.colors.text.disabled}})(n),a=0===i,l=i===e.length-1,d=r.key??`${r.title}-${i}`;return m?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[u.hColumn,y>0?{width:y,flex:0}:null],children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:u.hDotRow,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[u.hSegment,{marginRight:c,backgroundColor:a?"transparent":x}]}),renderDisc(r,s),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[u.hSegment,{marginLeft:c,backgroundColor:l?"transparent":x}]})]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:u.hBody,children:renderText(r,n)})]},d):(0,_jsxRuntime.jsxs)(_reactNative.View,{style:u.row,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:u.gutter,children:[renderDisc(r,s),l?null:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[u.rail,{backgroundColor:x}]})]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[u.body,{paddingBottom:l?0:o.spacing.lg}],children:renderText(r,n)})]},d)});return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[m?u.hRow:null,i],onLayout:m?g:void 0,testID:n,children:j})};exports.Timeline=Timeline;const buildStyles=(e,t,r,i)=>_reactNative.StyleSheet.create({row:{flexDirection:"row"},gutter:{width:Math.max(28,r+4),alignItems:"center"},disc:{width:r,height:r,borderRadius:r/2,..._corners.smoothCorners,alignItems:"center",justifyContent:"center"},dot:{width:t,height:t,borderRadius:t/2,..._corners.smoothCorners},rail:{width:2,flex:1,marginTop:i,borderRadius:1,..._corners.smoothCorners},body:{flex:1,gap:2,paddingLeft:e.spacing.sm},hRow:{flexDirection:"row",alignItems:"flex-start"},hColumn:{flex:1,minWidth:0,alignItems:"center"},hDotRow:{alignSelf:"stretch",flexDirection:"row",alignItems:"center"},hSegment:{flex:1,height:2,borderRadius:1,..._corners.smoothCorners},hBody:{alignSelf:"stretch",alignItems:"center",paddingHorizontal:e.spacing.xs,marginTop:e.spacing.sm,gap:2},centred:{textAlign:"center"},title:{...(0,_index.fontFor)(e,"semibold"),fontWeight:"600"},meta:{...(0,_index.fontFor)(e,"normal")},description:{...(0,_index.fontFor)(e,"normal")}});var _default=exports.default=Timeline;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Timeline=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_jsxRuntime=require("react/jsx-runtime");const DOT=12,HALO=6,RAIL=2,GUTTER=28,HALO_OPACITY=.16,Timeline=({items:e,variant:t="feed",orientation:r="vertical",style:i,testID:n})=>{const o=(0,_index.useTheme)(),s=o.components.timeline,l=s?.dotSize??12,a=s?.haloWidth??6,c=(0,_index.spaceOf)(o,s?.connectorGap??"xs","components.timeline.connectorGap"),d=l+2*a,u=(0,_react.useMemo)(()=>buildStyles(o,l,d,c),[o,l,d,c]),x="horizontal"===r,m=o.colors.border.primary,[h,_]=(0,_react.useState)(0),g=(0,_react.useCallback)(e=>{const{width:t}=e.nativeEvent.layout;_(e=>e===t?e:t)},[]),p=x&&h>0&&e.length>0?h/e.length:0,renderDisc=(e,t)=>e.icon?(0,_jsxRuntime.jsx)(_reactNative.View,{style:u.disc,children:e.icon}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[u.disc,{backgroundColor:(0,_color.tintOf)(t,.16,o.colors.background.tertiary)}],children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[u.dot,{backgroundColor:t}]})}),renderText=(e,t)=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[u.title,{fontSize:x?o.typography.fontSize.sm:o.typography.fontSize.base,color:"upcoming"===t?o.colors.text.secondary:o.colors.text.primary},x?u.centred:null],children:e.title}),e.meta?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[u.meta,{fontSize:o.typography.fontSize.xs,color:o.colors.text.tertiary},x?u.centred:null],children:e.meta}):null,e.description?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[u.description,{fontSize:o.typography.fontSize.sm,color:o.colors.text.secondary},x?u.centred:null],children:e.description}):null,e.children]}),y=e.map((r,i)=>{const n=r.status??("feed"===t?"done":"upcoming"),s=r.color??(e=>{switch(e){case"done":return o.colors.success;case"current":return o.colors.warning;case"onHold":return o.colors.info;case"rejected":return o.colors.error;case"cancelled":case"skipped":return o.colors.text.tertiary;default:return o.colors.text.disabled}})(n),l=0===i,a=i===e.length-1,d=r.key??`${r.title}-${i}`;return x?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[u.hColumn,p>0?{width:p,flex:0}:null],children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:u.hDotRow,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[u.hSegment,{marginRight:c,backgroundColor:l?"transparent":m}]}),renderDisc(r,s),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[u.hSegment,{marginLeft:c,backgroundColor:a?"transparent":m}]})]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:u.hBody,children:renderText(r,n)})]},d):(0,_jsxRuntime.jsxs)(_reactNative.View,{style:u.row,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:u.gutter,children:[renderDisc(r,s),a?null:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[u.rail,{backgroundColor:m}]})]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[u.body,{paddingBottom:a?0:o.spacing.lg}],children:renderText(r,n)})]},d)});return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[x?u.hRow:null,i],onLayout:x?g:void 0,testID:n,children:y})};exports.Timeline=Timeline;const buildStyles=(e,t,r,i)=>_reactNative.StyleSheet.create({row:{flexDirection:"row"},gutter:{width:Math.max(28,r+4),alignItems:"center"},disc:{width:r,height:r,borderRadius:e.radius.pill,..._corners.smoothCorners,alignItems:"center",justifyContent:"center"},dot:{width:t,height:t,borderRadius:e.radius.pill,..._corners.smoothCorners},rail:{width:2,flex:1,marginTop:i,borderRadius:e.radius.pill,..._corners.smoothCorners},body:{flex:1,gap:e.spacing.xxs,paddingLeft:e.spacing.sm},hRow:{flexDirection:"row",alignItems:"flex-start"},hColumn:{flex:1,minWidth:0,alignItems:"center"},hDotRow:{alignSelf:"stretch",flexDirection:"row",alignItems:"center"},hSegment:{flex:1,height:2,borderRadius:e.radius.pill,..._corners.smoothCorners},hBody:{alignSelf:"stretch",alignItems:"center",paddingHorizontal:e.spacing.xs,marginTop:e.spacing.sm,gap:e.spacing.xxs},centred:{textAlign:"center"},title:{...(0,_index.fontFor)(e,"semibold"),fontWeight:"600"},meta:{...(0,_index.fontFor)(e,"normal")},description:{...(0,_index.fontFor)(e,"normal")}});var _default=exports.default=Timeline;