@webority/mobile-ui 0.18.0 → 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 (217) 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 +9 -8
  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/components/Tour/Tour.d.ts +7 -0
  181. package/lib/typescript/commonjs/index.d.ts +4 -4
  182. package/lib/typescript/commonjs/theme/componentSizes.d.ts +27 -0
  183. package/lib/typescript/commonjs/theme/componentTokens.d.ts +762 -0
  184. package/lib/typescript/commonjs/theme/index.d.ts +4 -1
  185. package/lib/typescript/commonjs/theme/retiredThemeKeys.d.ts +22 -0
  186. package/lib/typescript/commonjs/theme/scale.d.ts +5 -0
  187. package/lib/typescript/commonjs/theme/types.d.ts +6 -790
  188. package/lib/typescript/commonjs/utils/index.d.ts +0 -2
  189. package/lib/typescript/module/components/BottomNavigation/BottomNavigation.d.ts +9 -8
  190. package/lib/typescript/module/components/Box/Box.d.ts +18 -20
  191. package/lib/typescript/module/components/Calendar/calendarStyles.d.ts +1 -1
  192. package/lib/typescript/module/components/Card/Card.d.ts +1 -1
  193. package/lib/typescript/module/components/FieldBase/FieldBase.d.ts +2 -8
  194. package/lib/typescript/module/components/FieldBase/index.d.ts +1 -1
  195. package/lib/typescript/module/components/FieldBase/useFloatingLabel.d.ts +3 -2
  196. package/lib/typescript/module/components/InlineSelect/InlineSelect.d.ts +1 -1
  197. package/lib/typescript/module/components/Input/Input.d.ts +1 -1
  198. package/lib/typescript/module/components/PhoneNumberInput/PhoneNumberInput.d.ts +1 -1
  199. package/lib/typescript/module/components/SearchBar/SearchBar.d.ts +1 -1
  200. package/lib/typescript/module/components/SegmentedControl/SegmentedControl.d.ts +1 -15
  201. package/lib/typescript/module/components/Select/Select.d.ts +2 -2
  202. package/lib/typescript/module/components/Skeleton/Skeleton.d.ts +1 -1
  203. package/lib/typescript/module/components/Tabs/Tabs.d.ts +1 -1
  204. package/lib/typescript/module/components/Tour/Tour.d.ts +7 -0
  205. package/lib/typescript/module/index.d.ts +4 -4
  206. package/lib/typescript/module/theme/componentSizes.d.ts +27 -0
  207. package/lib/typescript/module/theme/componentTokens.d.ts +762 -0
  208. package/lib/typescript/module/theme/index.d.ts +4 -1
  209. package/lib/typescript/module/theme/retiredThemeKeys.d.ts +22 -0
  210. package/lib/typescript/module/theme/scale.d.ts +5 -0
  211. package/lib/typescript/module/theme/types.d.ts +6 -790
  212. package/lib/typescript/module/utils/index.d.ts +0 -2
  213. package/package.json +12 -2
  214. package/lib/commonjs/utils/spacing.js +0 -1
  215. package/lib/module/utils/spacing.js +0 -1
  216. package/lib/typescript/commonjs/utils/spacing.d.ts +0 -61
  217. package/lib/typescript/module/utils/spacing.d.ts +0 -61
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.phoneChromeEntries=exports.StatusBar=exports.SafeArea=exports.NavigationBar=exports.KeyboardFrame=exports.HomeIndicator=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_index=require("../theme/index.js");const STATUS_BAR_HEIGHT={Ios:54,Android:24},HOME_AREA_HEIGHT={Ios:34,Android:0},HOME_BAR_WIDTH=134,HOME_BAR_HEIGHT=5,NAV_BAR_HEIGHT=24,NAV_PILL_WIDTH=108,NAV_PILL_HEIGHT=4,KEYBOARD_HEIGHT_IOS=336,KEYBOARD_HEIGHT_ANDROID=300,MARKER={statusBar:"AppStatusBar",homeIndicator:"AppHomeIndicator",navigationBar:"AppNavigationBar",safeArea:"AppSafeArea",keyboardFrame:"AppKeyboardFrame"},wuiMarker=e=>({dataSet:{wui:e}}),paletteFor=e=>"dark"===e?_index.darkTheme:_index.lightTheme,styles=_reactNative.StyleSheet.create({overlayTop:{position:"absolute",top:0,left:0,right:0},overlayBottom:{position:"absolute",bottom:0,left:0,right:0,alignItems:"center",justifyContent:"flex-end"},fill:{flex:1},homeBar:{width:134,height:5},navPill:{width:108,height:4},keyboardPreview:{position:"absolute",bottom:0,left:0,right:0}}),StatusBar=({os:e,colorMode:r="light"})=>{const t=paletteFor(r);return(0,_react.createElement)(_reactNative.View,{...wuiMarker(MARKER.statusBar),accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",pointerEvents:"none",style:[styles.overlayTop,{height:STATUS_BAR_HEIGHT[e],backgroundColor:t.colors.background.primary}]})};exports.StatusBar=StatusBar;const HomeIndicator=({os:e,colorMode:r="light"})=>{const t=paletteFor(r);return(0,_react.createElement)(_reactNative.View,{...wuiMarker(MARKER.homeIndicator),accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",pointerEvents:"none",style:[styles.overlayBottom,{height:HOME_AREA_HEIGHT[e]}]},"Ios"===e?(0,_react.createElement)(_reactNative.View,{style:[styles.homeBar,{backgroundColor:t.colors.text.primary,borderRadius:t.radius.full,marginBottom:t.spacing.sm}]}):null)};exports.HomeIndicator=HomeIndicator;const NavigationBar=({os:e,colorMode:r="light"})=>{if("Android"!==e)return null;const t=paletteFor(r);return(0,_react.createElement)(_reactNative.View,{...wuiMarker(MARKER.navigationBar),accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",pointerEvents:"none",style:[styles.overlayBottom,{height:24,justifyContent:"center"}]},(0,_react.createElement)(_reactNative.View,{style:[styles.navPill,{backgroundColor:t.colors.text.primary,borderRadius:t.radius.full}]}))};exports.NavigationBar=NavigationBar;const SafeArea=({os:e,children:r})=>(0,_react.createElement)(_reactNative.View,{...wuiMarker(MARKER.safeArea),style:[styles.fill,{paddingTop:STATUS_BAR_HEIGHT[e],paddingBottom:HOME_AREA_HEIGHT[e]}]},r);exports.SafeArea=SafeArea;const KEYBOARD_PREVIEW_HEIGHT={ios:336,android:300},KeyboardFrame=({colorMode:e="light",previewOs:r,children:t})=>{const o=paletteFor(e),a=(0,_reactNativeKeyboardController.useKeyboardState)(e=>Math.max(0,Math.round(e.height)));return(0,_react.createElement)(_reactNative.View,{...wuiMarker(MARKER.keyboardFrame),style:[styles.fill,{paddingBottom:a,backgroundColor:o.colors.background.primary}]},t,r?(0,_react.createElement)(_reactNative.View,{pointerEvents:"none",style:[styles.keyboardPreview,{height:KEYBOARD_PREVIEW_HEIGHT[r],backgroundColor:o.colors.background.primary}]}):null)};exports.KeyboardFrame=KeyboardFrame;const SOURCE="@webority/mobile-ui",osProp={name:"os",type:"enum",enum:["Ios","Android"],required:!0},colorModeProp={name:"colorMode",type:"enum",enum:["light","dark"],required:!1},phoneChromeEntries=exports.phoneChromeEntries=[{name:"StatusBar",marker:MARKER.statusBar,acceptsChildren:!1,props:[osProp,colorModeProp],itemsTakeAction:[],takesAction:[],source:SOURCE},{name:"HomeIndicator",marker:MARKER.homeIndicator,acceptsChildren:!1,props:[osProp,colorModeProp],itemsTakeAction:[],takesAction:[],source:SOURCE},{name:"NavigationBar",marker:MARKER.navigationBar,acceptsChildren:!1,props:[osProp,colorModeProp],itemsTakeAction:[],takesAction:[],source:SOURCE},{name:"SafeArea",marker:MARKER.safeArea,acceptsChildren:!0,props:[osProp],itemsTakeAction:[],takesAction:[],source:SOURCE},{name:"KeyboardFrame",marker:MARKER.keyboardFrame,acceptsChildren:!0,props:[colorModeProp],itemsTakeAction:[],takesAction:[],source:SOURCE}];
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.phoneChromeEntries=exports.StatusBar=exports.SafeArea=exports.NavigationBar=exports.KeyboardFrame=exports.HomeIndicator=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_index=require("../theme/index.js");const STATUS_BAR_HEIGHT={Ios:54,Android:24},HOME_AREA_HEIGHT={Ios:34,Android:0},HOME_BAR_WIDTH=134,HOME_BAR_HEIGHT=5,NAV_BAR_HEIGHT=24,NAV_PILL_WIDTH=108,NAV_PILL_HEIGHT=4,KEYBOARD_HEIGHT_IOS=336,KEYBOARD_HEIGHT_ANDROID=300,MARKER={statusBar:"AppStatusBar",homeIndicator:"AppHomeIndicator",navigationBar:"AppNavigationBar",safeArea:"AppSafeArea",keyboardFrame:"AppKeyboardFrame"},wuiMarker=e=>({dataSet:{wui:e}}),paletteFor=e=>"dark"===e?_index.darkTheme:_index.lightTheme,styles=_reactNative.StyleSheet.create({overlayTop:{position:"absolute",top:0,left:0,right:0},overlayBottom:{position:"absolute",bottom:0,left:0,right:0,alignItems:"center",justifyContent:"flex-end"},fill:{flex:1},homeBar:{width:134,height:5},navPill:{width:108,height:4},keyboardPreview:{position:"absolute",bottom:0,left:0,right:0}}),StatusBar=({os:e,colorMode:r="light"})=>{const t=paletteFor(r);return(0,_react.createElement)(_reactNative.View,{...wuiMarker(MARKER.statusBar),accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",pointerEvents:"none",style:[styles.overlayTop,{height:STATUS_BAR_HEIGHT[e],backgroundColor:t.colors.background.primary}]})};exports.StatusBar=StatusBar;const HomeIndicator=({os:e,colorMode:r="light"})=>{const t=paletteFor(r);return(0,_react.createElement)(_reactNative.View,{...wuiMarker(MARKER.homeIndicator),accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",pointerEvents:"none",style:[styles.overlayBottom,{height:HOME_AREA_HEIGHT[e]}]},"Ios"===e?(0,_react.createElement)(_reactNative.View,{style:[styles.homeBar,{backgroundColor:t.colors.text.primary,borderRadius:t.radius.pill,marginBottom:t.spacing.sm}]}):null)};exports.HomeIndicator=HomeIndicator;const NavigationBar=({os:e,colorMode:r="light"})=>{if("Android"!==e)return null;const t=paletteFor(r);return(0,_react.createElement)(_reactNative.View,{...wuiMarker(MARKER.navigationBar),accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",pointerEvents:"none",style:[styles.overlayBottom,{height:24,justifyContent:"center"}]},(0,_react.createElement)(_reactNative.View,{style:[styles.navPill,{backgroundColor:t.colors.text.primary,borderRadius:t.radius.pill}]}))};exports.NavigationBar=NavigationBar;const SafeArea=({os:e,children:r})=>(0,_react.createElement)(_reactNative.View,{...wuiMarker(MARKER.safeArea),style:[styles.fill,{paddingTop:STATUS_BAR_HEIGHT[e],paddingBottom:HOME_AREA_HEIGHT[e]}]},r);exports.SafeArea=SafeArea;const KEYBOARD_PREVIEW_HEIGHT={ios:336,android:300},KeyboardFrame=({colorMode:e="light",previewOs:r,children:t})=>{const o=paletteFor(e),a=(0,_reactNativeKeyboardController.useKeyboardState)(e=>Math.max(0,Math.round(e.height)));return(0,_react.createElement)(_reactNative.View,{...wuiMarker(MARKER.keyboardFrame),style:[styles.fill,{paddingBottom:a,backgroundColor:o.colors.background.primary}]},t,r?(0,_react.createElement)(_reactNative.View,{pointerEvents:"none",style:[styles.keyboardPreview,{height:KEYBOARD_PREVIEW_HEIGHT[r],backgroundColor:o.colors.background.primary}]}):null)};exports.KeyboardFrame=KeyboardFrame;const SOURCE="@webority/mobile-ui",osProp={name:"os",type:"enum",enum:["Ios","Android"],required:!0},colorModeProp={name:"colorMode",type:"enum",enum:["light","dark"],required:!1},phoneChromeEntries=exports.phoneChromeEntries=[{name:"StatusBar",marker:MARKER.statusBar,acceptsChildren:!1,props:[osProp,colorModeProp],itemsTakeAction:[],takesAction:[],source:SOURCE},{name:"HomeIndicator",marker:MARKER.homeIndicator,acceptsChildren:!1,props:[osProp,colorModeProp],itemsTakeAction:[],takesAction:[],source:SOURCE},{name:"NavigationBar",marker:MARKER.navigationBar,acceptsChildren:!1,props:[osProp,colorModeProp],itemsTakeAction:[],takesAction:[],source:SOURCE},{name:"SafeArea",marker:MARKER.safeArea,acceptsChildren:!0,props:[osProp],itemsTakeAction:[],takesAction:[],source:SOURCE},{name:"KeyboardFrame",marker:MARKER.keyboardFrame,acceptsChildren:!0,props:[colorModeProp],itemsTakeAction:[],takesAction:[],source:SOURCE}];
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.AccordionGroup=exports.Accordion=void 0;var _react=require("react"),_reactNative=require("react-native"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_index2=require("../Skeleton/index.js"),_jsxRuntime=require("react/jsx-runtime");const AccordionGroupContext=(0,_react.createContext)(null),useAccordionGroup=()=>(0,_react.useContext)(AccordionGroupContext),AccordionGroup=({children:e,allowMultiple:t=!1,defaultExpandedKeys:i,expandedKeys:r,onChange:n,style:a,testID:o})=>{const c=void 0!==r,[s,l]=(0,_react.useState)(i??[]),d=c?r:s,u=(0,_react.useCallback)(e=>{c||l(e),n?.(e)},[c,n]),p=(0,_react.useCallback)(e=>{let i;i=d.includes(e)?d.filter(t=>t!==e):t?[...d,e]:[e],u(i)},[d,t,u]),_=(0,_react.useCallback)(e=>d.includes(e),[d]),x=(0,_react.useMemo)(()=>({isExpanded:_,toggle:p,allowMultiple:t}),[_,p,t]);return(0,_jsxRuntime.jsx)(AccordionGroupContext.Provider,{value:x,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:a,testID:o,children:e})})};exports.AccordionGroup=AccordionGroup,AccordionGroup.displayName="AccordionGroup";const Chevron=({rotate:e,color:t})=>{const i=(0,_index.useTheme)();return(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[chevronStyles.icon,{transform:[{rotate:e}]}],accessible:!1,children:(i.icons?.chevronDown??_defaultIcons.defaultIcons.chevronDown)({size:16,color:t})})},chevronStyles=_reactNative.StyleSheet.create({icon:{width:16,height:16,alignItems:"center",justifyContent:"center"}}),Accordion=e=>{const{title:t,children:i,id:r,expanded:n,defaultExpanded:a=!1,onChange:o,icon:c,disabled:s=!1,variant:l="plain",accessibilityLabel:d,style:u,headerStyle:p,contentStyle:_,contentWrapperStyle:x,containerStyle:m,testID:h,loading:g=!1,haptic:y}=e,v=(0,_index.useTheme)(),j=(0,_usePresenceMotion.usePresenceMotion)(),b=j.duration("normal"),A=(0,_react.useMemo)(()=>buildStyles(v),[v]),f=useAccordionGroup(),R=void 0!==n,[N,S]=(0,_react.useState)(a),V=f&&r?f.isExpanded(r):null,w=null!==V?V:R?!!n:N,[k,C]=(0,_react.useState)(null),I=(0,_react.useRef)((0,_index.createAnimatedValue)(w?1:0)).current,D=(0,_react.useRef)((0,_index.createAnimatedValue)(w?1:0)).current,G=(0,_react.useRef)((0,_index.createAnimatedValue)(w?1:0)).current,q=(0,_react.useRef)(w);(0,_react.useEffect)(()=>{if(q.current===w)return;q.current=w;const e=w?1:0,t=_reactNative.Easing.bezier(...v.motion.easing.standard),i=_reactNative.Animated.timing(I,{toValue:e,duration:v.motion.duration.normal,easing:t,useNativeDriver:!1}),r=_reactNative.Animated.timing(D,{toValue:e,duration:b,easing:t,useNativeDriver:!1}),n=_reactNative.Animated.timing(G,{toValue:e,duration:v.motion.duration.normal,easing:t,useNativeDriver:!1}),a=j.reduced&&!w?_reactNative.Animated.sequence([r,_reactNative.Animated.parallel([i,n])]):_reactNative.Animated.parallel([i,r,n]);return a.start(),()=>a.stop()},[w,I,D,G,b,j.reduced,v.motion]);const L=(0,_react.useCallback)(e=>{const t=e.nativeEvent.layout.height;t>0&&t!==k&&C(t)},[k]),M=(0,_react.useCallback)(()=>{if(s)return;const e=(0,_hapticUtils.resolveHaptic)(y,"selection");if(e&&(0,_hapticUtils.triggerHaptic)(e),f&&r)return f.toggle(r),void o?.(!w);R||S(!w),o?.(!w)},[s,f,r,w,R,o,y]),P=G.interpolate({inputRange:[0,1],outputRange:["0deg","180deg"]}),E=null===k?void 0:I.interpolate({inputRange:[0,1],outputRange:[0,k]}),z="card"===l?[A.card,v.shadows.sm,{backgroundColor:v.colors.background.elevated,borderRadius:v.radius.md,..._corners.smoothCorners}]:null;return g?(0,_jsxRuntime.jsx)(AccordionSkeleton,{...e}):(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[z,u,m],testID:h,children:[(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:M,disabled:s,accessibilityRole:"button",accessibilityLabel:d??t,accessibilityState:{expanded:w,disabled:s},"aria-expanded":w,"aria-disabled":s,style:({pressed:e})=>[A.header,p,{opacity:s?.55:e?.85:1}],children:[c?(0,_jsxRuntime.jsx)(_reactNative.View,{style:A.iconLeft,children:c}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[A.title,{color:s?v.colors.text.disabled:v.colors.text.primary,fontSize:v.typography.fontSize.base,fontWeight:v.typography.fontWeight.semibold}],numberOfLines:2,children:t}),(0,_jsxRuntime.jsx)(Chevron,{rotate:P,color:s?v.colors.text.disabled:v.colors.text.secondary})]}),null===k?(0,_jsxRuntime.jsx)(_reactNative.View,{style:A.measurer,pointerEvents:"none",onLayout:L,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[A.content,_],children:i})}):null,(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[A.contentWrapper,null===k?{height:0,opacity:0}:{height:E,opacity:D},x],children:(0,_jsxRuntime.jsx)(_reactNative.View,{onLayout:L,style:[A.content,_],children:i})})]})};exports.Accordion=Accordion,Accordion.displayName="Accordion";const AccordionSkeleton=({variant:e="plain",style:t})=>{const i=(0,_index.useTheme)(),r="card"===e;return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[r?{paddingHorizontal:i.spacing.md,paddingVertical:i.spacing.sm,backgroundColor:i.colors.background.elevated,borderRadius:i.radius.md,..._corners.smoothCorners}:{paddingVertical:i.spacing.sm},t],accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{flexDirection:"row",alignItems:"center"},children:[(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"60%",height:18,style:{flex:1}}),(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:16,height:16,radius:"sm",style:{marginLeft:i.spacing.sm}})]})})};AccordionSkeleton.displayName="AccordionSkeleton",Accordion.Skeleton=AccordionSkeleton,_reactNative.LayoutAnimation;const buildStyles=e=>_reactNative.StyleSheet.create({card:{paddingHorizontal:e.spacing.md,paddingVertical:e.components.accordion?.cardPaddingVertical??4,marginVertical:e.spacing.xs},header:{flexDirection:"row",alignItems:"center",paddingVertical:e.spacing.sm},iconLeft:{marginRight:e.spacing.sm},title:{flex:1},contentWrapper:{overflow:"hidden"},content:{paddingBottom:e.spacing.sm},measurer:{position:"absolute",opacity:0,left:0,right:0,top:0,zIndex:-1}});var _default=exports.default=Accordion;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.AccordionGroup=exports.Accordion=void 0;var _react=require("react"),_reactNative=require("react-native"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_index2=require("../Skeleton/index.js"),_jsxRuntime=require("react/jsx-runtime");const AccordionGroupContext=(0,_react.createContext)(null),useAccordionGroup=()=>(0,_react.useContext)(AccordionGroupContext),AccordionGroup=({children:e,allowMultiple:t=!1,defaultExpandedKeys:i,expandedKeys:n,onChange:r,style:a,testID:o})=>{const c=void 0!==n,[s,l]=(0,_react.useState)(i??[]),d=c?n:s,u=(0,_react.useCallback)(e=>{c||l(e),r?.(e)},[c,r]),p=(0,_react.useCallback)(e=>{let i;i=d.includes(e)?d.filter(t=>t!==e):t?[...d,e]:[e],u(i)},[d,t,u]),_=(0,_react.useCallback)(e=>d.includes(e),[d]),x=(0,_react.useMemo)(()=>({isExpanded:_,toggle:p,allowMultiple:t}),[_,p,t]);return(0,_jsxRuntime.jsx)(AccordionGroupContext.Provider,{value:x,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:a,testID:o,children:e})})};exports.AccordionGroup=AccordionGroup,AccordionGroup.displayName="AccordionGroup";const Chevron=({rotate:e,color:t})=>{const i=(0,_index.useTheme)();return(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[chevronStyles.icon,{transform:[{rotate:e}]}],accessible:!1,children:(i.icons?.chevronDown??_defaultIcons.defaultIcons.chevronDown)({size:16,color:t})})},chevronStyles=_reactNative.StyleSheet.create({icon:{width:16,height:16,alignItems:"center",justifyContent:"center"}}),Accordion=e=>{const{title:t,children:i,id:n,expanded:r,defaultExpanded:a=!1,onChange:o,icon:c,disabled:s=!1,variant:l="plain",accessibilityLabel:d,style:u,headerStyle:p,contentStyle:_,contentWrapperStyle:x,containerStyle:m,testID:g,loading:h=!1,haptic:y}=e,v=(0,_index.useTheme)(),j=(0,_usePresenceMotion.usePresenceMotion)(),b=j.duration("normal"),f=(0,_react.useMemo)(()=>buildStyles(v),[v]),A=useAccordionGroup(),R=void 0!==r,[N,S]=(0,_react.useState)(a),w=A&&n?A.isExpanded(n):null,V=null!==w?w:R?!!r:N,[k,C]=(0,_react.useState)(null),I=(0,_react.useRef)((0,_index.createAnimatedValue)(V?1:0)).current,D=(0,_react.useRef)((0,_index.createAnimatedValue)(V?1:0)).current,G=(0,_react.useRef)((0,_index.createAnimatedValue)(V?1:0)).current,q=(0,_react.useRef)(V);(0,_react.useEffect)(()=>{if(q.current===V)return;q.current=V;const e=V?1:0,t=_reactNative.Easing.bezier(...v.motion.easing.standard),i=_reactNative.Animated.timing(I,{toValue:e,duration:v.motion.duration.normal,easing:t,useNativeDriver:!1}),n=_reactNative.Animated.timing(D,{toValue:e,duration:b,easing:t,useNativeDriver:!1}),r=_reactNative.Animated.timing(G,{toValue:e,duration:v.motion.duration.normal,easing:t,useNativeDriver:!1}),a=j.reduced&&!V?_reactNative.Animated.sequence([n,_reactNative.Animated.parallel([i,r])]):_reactNative.Animated.parallel([i,n,r]);return a.start(),()=>a.stop()},[V,I,D,G,b,j.reduced,v.motion]);const P=(0,_react.useCallback)(e=>{const t=e.nativeEvent.layout.height;t>0&&t!==k&&C(t)},[k]),L=(0,_react.useCallback)(()=>{if(s)return;const e=(0,_hapticUtils.resolveHaptic)(y,"selection");if(e&&(0,_hapticUtils.triggerHaptic)(e),A&&n)return A.toggle(n),void o?.(!V);R||S(!V),o?.(!V)},[s,A,n,V,R,o,y]),M=G.interpolate({inputRange:[0,1],outputRange:["0deg","180deg"]}),E=null===k?void 0:I.interpolate({inputRange:[0,1],outputRange:[0,k]}),z="card"===l?[f.card,v.shadows.sm,{backgroundColor:v.colors.background.elevated,borderRadius:v.radius.md,..._corners.smoothCorners}]:null;return h?(0,_jsxRuntime.jsx)(AccordionSkeleton,{...e}):(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[z,u,m],testID:g,children:[(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:L,disabled:s,accessibilityRole:"button",accessibilityLabel:d??t,accessibilityState:{expanded:V,disabled:s},"aria-expanded":V,"aria-disabled":s,style:({pressed:e})=>[f.header,p,{opacity:s?.55:e?.85:1}],children:[c?(0,_jsxRuntime.jsx)(_reactNative.View,{style:f.iconLeft,children:c}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[f.title,{color:s?v.colors.text.disabled:v.colors.text.primary,fontSize:v.typography.fontSize.base,fontWeight:v.typography.fontWeight.semibold}],numberOfLines:2,children:t}),(0,_jsxRuntime.jsx)(Chevron,{rotate:M,color:s?v.colors.text.disabled:v.colors.text.secondary})]}),null===k?(0,_jsxRuntime.jsx)(_reactNative.View,{style:f.measurer,pointerEvents:"none",onLayout:P,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.content,_],children:i})}):null,(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[f.contentWrapper,null===k?{height:0,opacity:0}:{height:E,opacity:D},x],children:(0,_jsxRuntime.jsx)(_reactNative.View,{onLayout:P,style:[f.content,_],children:i})})]})};exports.Accordion=Accordion,Accordion.displayName="Accordion";const AccordionSkeleton=({variant:e="plain",style:t})=>{const i=(0,_index.useTheme)(),n="card"===e;return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[n?{paddingHorizontal:i.spacing.md,paddingVertical:i.spacing.sm,backgroundColor:i.colors.background.elevated,borderRadius:i.radius.md,..._corners.smoothCorners}:{paddingVertical:i.spacing.sm},t],accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{flexDirection:"row",alignItems:"center"},children:[(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"60%",height:18,style:{flex:1}}),(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:16,height:16,radius:"sm",style:{marginLeft:i.spacing.sm}})]})})};AccordionSkeleton.displayName="AccordionSkeleton",Accordion.Skeleton=AccordionSkeleton,_reactNative.LayoutAnimation;const buildStyles=e=>_reactNative.StyleSheet.create({card:{paddingHorizontal:e.spacing.md,paddingVertical:(0,_index.spaceOf)(e,e.components.accordion?.cardPaddingY??"xs","components.accordion.cardPaddingY"),marginVertical:e.spacing.xs},header:{flexDirection:"row",alignItems:"center",paddingVertical:e.spacing.sm},iconLeft:{marginRight:e.spacing.sm},title:{flex:1},contentWrapper:{overflow:"hidden"},content:{paddingBottom:e.spacing.sm},measurer:{position:"absolute",opacity:0,left:0,right:0,top:0,zIndex:-1}});var _default=exports.default=Accordion;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.AppBar=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_AppIcon=require("../AppIcon/AppIcon.js"),_Text=require("../Text/Text.js"),_jsxRuntime=require("react/jsx-runtime");const variantSize=(e,t)=>{switch(t){case"compact":return{height:44,titleSize:e.typography.fontSize.lg,titleWeight:"semibold",alignBottom:!1};case"large":return{height:96,titleSize:e.typography.fontSize["2xl"],titleWeight:"bold",alignBottom:!0};default:return{height:56,titleSize:e.typography.fontSize.lg,titleWeight:"semibold",alignBottom:!1}}},ActionButton=({action:e,side:t,badgeStyle:i,haptic:n,flush:a})=>{const o=(0,_index.useTheme)(),{style:r,pressIn:s,pressOut:l}=(0,_usePressAnimation.usePressAnimation)({enabled:!0}),c=(0,_react.useMemo)(()=>buildActionStyles(o),[o]),p=e.badge,d=void 0!==p&&0!==p,u=void 0!==e.text;return(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:r,children:(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>{const t=(0,_hapticUtils.resolveHaptic)(n,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),e.onPress()},onPressIn:s,onPressOut:l,accessibilityRole:"button",accessibilityLabel:e.accessibilityLabel??e.text,testID:e.testID,android_ripple:{color:o.colors.surface.pressed,borderless:!u},style:({pressed:e})=>[u?c.textButton:c.actionButton,a?null:"left"===t?c.actionLeft:c.actionRight,e&&!u?c.actionPressed:null,e&&u?c.textPressed:null],children:[u?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:c.actionText,numberOfLines:1,children:e.text}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:c.iconWrap,children:e.icon}),d?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[c.badge,i],pointerEvents:"none",children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:c.badgeText,numberOfLines:1,children:String(p)})}):null,e.dot?(0,_jsxRuntime.jsx)(_reactNative.View,{testID:e.testID?`${e.testID}-dot`:"appbar-action-dot",style:c.dot,pointerEvents:"none"}):null]})})},COLLAPSE_RANGE=60,LARGE_TITLE_SCALE_END=.71,AppBar=exports.AppBar=(0,_react.forwardRef)((e,t)=>{const{title:i,subtitle:n,titleAlignment:a="left",leftAction:o,rightActions:r,leading:s,trailing:l,onBack:c,gutter:p,titleVariant:d,titleOffset:u,height:m,divider:g,variant:h="default",transparent:x=!1,scrollY:f,style:_,containerStyle:y,titleStyle:b,subtitleStyle:j,badgeStyle:S,haptic:v,testID:B}=e,R=(0,_index.useTheme)(),A=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),N=(0,_react.useMemo)(()=>variantSize(R,h),[R,h]),w=(0,_react.useMemo)(()=>buildStyles(R),[R]),C="large"===h&&void 0!==f,z=R.components.appBar?.iconSize??24,I=R.components.appBar?.actionButtonSize??44,T=o??(c?{icon:(0,_jsxRuntime.jsx)(_AppIcon.AppIcon,{name:"arrow-left",size:z,color:R.colors.text.primary}),onPress:c,accessibilityLabel:"Back"}:void 0),W=l?void 0:r?.[r.length-1],opticalInset=e=>void 0===e?0:void 0!==e.text?R.spacing.sm:Math.max((I-z)/2,0),L=void 0===p?null:{paddingLeft:Math.max(p-opticalInset(T),0),paddingRight:Math.max(p-opticalInset(W),0)},V=void 0!==u,O=Boolean(T)||Boolean(s),P=g??!x,D=R.components.appBar?.dividerWidth??_reactNative.StyleSheet.hairlineWidth,H=R.components.appBar?.collapseTranslateDistance??-20,E=(0,_react.useMemo)(()=>{if(!f)return null;const e={inputRange:[0,60],extrapolate:"clamp"};return{titleScale:f.interpolate({...e,outputRange:[1,.71]}),titleTranslateY:f.interpolate({...e,outputRange:[0,H]}),titleTranslateX:f.interpolate({...e,outputRange:"center"===a?[0,0]:[0,8]}),subtitleOpacity:f.interpolate({inputRange:[0,30],outputRange:[1,0],extrapolate:"clamp"}),barHeight:f.interpolate({...e,outputRange:[96,56]}),borderOpacity:f.interpolate({...e,outputRange:[0,1]})}},[f,a,H]),M=C&&E?{transform:[{translateX:E.titleTranslateX},{translateY:E.titleTranslateY},{scale:E.titleScale}]}:null,k=i?d?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:M,children:(0,_jsxRuntime.jsx)(_Text.Text,{variant:d,align:"center"===a?"center":"left",accessibilityRole:"header",numberOfLines:1,style:[w.titleVariant,b],children:i})}):(0,_jsxRuntime.jsx)(_reactNative.Animated.Text,{accessibilityRole:"header",style:[w.title,{fontSize:N.titleSize,fontWeight:R.typography.fontWeight[N.titleWeight],textAlign:"center"===a?"center":"left"},M,b],numberOfLines:1,children:i}):null,q=n?(0,_jsxRuntime.jsx)(_reactNative.Animated.Text,{style:[w.subtitle,{textAlign:"center"===a?"center":"left"},C&&E?{opacity:E.subtitleOpacity}:null,j],numberOfLines:1,children:n}):null,U=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[w.titleColumn,"center"===a?w.titleColumnCenter:null,N.alignBottom?w.titleColumnBottom:null],children:[k,q]}),Y=C?_reactNative.Animated.View:_reactNative.View,F=C&&E?{height:_reactNative.Animated.add(E.barHeight,new _reactNative.Animated.Value(A.top))}:{height:(m??N.height)+A.top};return(0,_jsxRuntime.jsxs)(Y,{ref:t,testID:B,style:[w.root,{paddingTop:A.top,backgroundColor:x?"transparent":R.colors.background.elevated},F,!C&&P?{borderBottomWidth:D,borderBottomColor:R.colors.border.primary}:null,_,y],children:[C&&E&&P?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[w.animatedBorder,{backgroundColor:R.colors.border.primary,opacity:E.borderOpacity}]}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[w.row,N.alignBottom?w.rowAlignBottom:null,L,{flex:1}],children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[w.sideSlot,V?w.sideSlotCompact:null],children:[T?(0,_jsxRuntime.jsx)(ActionButton,{action:T,side:"left",haptic:v,flush:V}):null,null!=s&&!1!==s?(0,_jsxRuntime.jsx)(_reactNative.View,{style:w.slotNode,children:s}):null]}),(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[w.center,"center"===a?w.centerAligned:w.centerLeft,V?{paddingLeft:O?u:0,paddingRight:0}:null],children:U}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[w.sideSlot,w.sideSlotRight,V?w.sideSlotCompact:null],children:[r?.map((e,t)=>(0,_jsxRuntime.jsx)(ActionButton,{action:e,side:"right",badgeStyle:S,haptic:v,flush:V},`appbar-right-${t}`)),null!=l&&!1!==l?(0,_jsxRuntime.jsx)(_reactNative.View,{style:w.slotNode,children:l}):null]})]})]})});AppBar.displayName="AppBar";const buildStyles=e=>_reactNative.StyleSheet.create({root:{width:"100%"},row:{flexDirection:"row",alignItems:"center",paddingHorizontal:e.spacing.xs},rowAlignBottom:{alignItems:"flex-end",paddingBottom:e.spacing.sm},sideSlot:{flexDirection:"row",alignItems:"center",minWidth:e.components.appBar?.sideSlotMinWidth??48},sideSlotRight:{justifyContent:"flex-end"},sideSlotCompact:{minWidth:0},slotNode:{flexDirection:"row",alignItems:"center"},center:{flex:1,paddingHorizontal:e.spacing.xs},centerAligned:{alignItems:"center"},centerLeft:{alignItems:"flex-start"},titleColumn:{flexDirection:"column"},titleColumnCenter:{alignItems:"center"},titleColumnBottom:{justifyContent:"flex-end"},title:{color:e.colors.text.primary},titleVariant:{includeFontPadding:!1,textAlignVertical:"center"},subtitle:{marginTop:e.components.appBar?.subtitleMarginTop??2,color:e.colors.text.tertiary,fontSize:e.typography.fontSize.sm,fontWeight:e.typography.fontWeight.normal},animatedBorder:{position:"absolute",left:0,right:0,bottom:0,height:_reactNative.StyleSheet.hairlineWidth}}),buildActionStyles=e=>_reactNative.StyleSheet.create({actionButton:{width:e.components.appBar?.actionButtonSize??44,height:e.components.appBar?.actionButtonSize??44,borderRadius:e.radius.full,..._corners.smoothCorners,alignItems:"center",justifyContent:"center"},actionLeft:{marginRight:e.spacing.xs},actionRight:{marginLeft:e.spacing.xs},actionPressed:{backgroundColor:e.colors.surface.pressed},textButton:{minWidth:44,minHeight:44,paddingHorizontal:e.spacing.sm,alignItems:"center",justifyContent:"center"},textPressed:{opacity:.6},actionText:{color:e.colors.text.link,fontSize:e.typography.fontSize.base,...(0,_index.fontFor)(e,"semibold")},dot:{position:"absolute",top:e.components.appBar?.dotOffset??10,right:e.components.appBar?.dotOffset??10,width:e.components.appBar?.dotSize??8,height:e.components.appBar?.dotSize??8,borderRadius:e.radius.full,backgroundColor:e.colors.error},iconWrap:{alignItems:"center",justifyContent:"center"},badge:{position:"absolute",top:e.components.appBar?.badgeOffset??4,right:e.components.appBar?.badgeOffset??4,minWidth:e.components.appBar?.badgeMinWidth??16,height:e.components.appBar?.badgeHeight??16,paddingHorizontal:e.components.appBar?.badgePaddingHorizontal??4,borderRadius:e.radius.full,..._corners.smoothCorners,backgroundColor:e.colors.error,alignItems:"center",justifyContent:"center"},badgeText:{color:e.colors.onError,fontSize:e.components.appBar?.badgeFontSize??10,fontWeight:e.typography.fontWeight.semibold,lineHeight:e.components.appBar?.badgeLineHeight??12}});var _default=exports.default=AppBar;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.AppBar=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_AppIcon=require("../AppIcon/AppIcon.js"),_Text=require("../Text/Text.js"),_jsxRuntime=require("react/jsx-runtime");const variantSize=(e,t)=>{switch(t){case"compact":return{height:44,titleSize:e.typography.fontSize.lg,titleWeight:"semibold",alignBottom:!1};case"large":return{height:96,titleSize:e.typography.fontSize["2xl"],titleWeight:"bold",alignBottom:!0};default:return{height:56,titleSize:e.typography.fontSize.lg,titleWeight:"semibold",alignBottom:!1}}},ActionButton=({action:e,side:t,badgeStyle:i,haptic:n,flush:a})=>{const o=(0,_index.useTheme)(),{style:r,pressIn:s,pressOut:l}=(0,_usePressAnimation.usePressAnimation)({enabled:!0}),c=(0,_react.useMemo)(()=>buildActionStyles(o),[o]),p=e.badge,d=void 0!==p&&0!==p,u=void 0!==e.text;return(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:r,children:(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>{const t=(0,_hapticUtils.resolveHaptic)(n,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),e.onPress()},onPressIn:s,onPressOut:l,accessibilityRole:"button",accessibilityLabel:e.accessibilityLabel??e.text,testID:e.testID,android_ripple:{color:o.colors.surface.pressed,borderless:!u},style:({pressed:e})=>[u?c.textButton:c.actionButton,a?null:"left"===t?c.actionLeft:c.actionRight,e&&!u?c.actionPressed:null,e&&u?c.textPressed:null],children:[u?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:c.actionText,numberOfLines:1,children:e.text}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:c.iconWrap,children:e.icon}),d?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[c.badge,i],pointerEvents:"none",children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:c.badgeText,numberOfLines:1,children:String(p)})}):null,e.dot?(0,_jsxRuntime.jsx)(_reactNative.View,{testID:e.testID?`${e.testID}-dot`:"appbar-action-dot",style:c.dot,pointerEvents:"none"}):null]})})},COLLAPSE_RANGE=60,LARGE_TITLE_SCALE_END=.71,AppBar=exports.AppBar=(0,_react.forwardRef)((e,t)=>{const{title:i,subtitle:n,titleAlignment:a="left",leftAction:o,rightActions:r,leading:s,trailing:l,onBack:c,gutter:p,titleVariant:d,titleOffset:u,height:g,divider:m,variant:h="default",transparent:x=!1,scrollY:f,style:_,containerStyle:y,titleStyle:b,subtitleStyle:j,badgeStyle:S,haptic:v,testID:B}=e,R=(0,_index.useTheme)(),A=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),N=(0,_react.useMemo)(()=>variantSize(R,h),[R,h]),w=(0,_react.useMemo)(()=>buildStyles(R),[R]),C="large"===h&&void 0!==f,T=R.components.appBar?.iconSize??24,z=R.components.appBar?.actionButtonSize??44,I=o??(c?{icon:(0,_jsxRuntime.jsx)(_AppIcon.AppIcon,{name:"arrow-left",size:T,color:R.colors.text.primary}),onPress:c,accessibilityLabel:"Back"}:void 0),W=l?void 0:r?.[r.length-1],opticalInset=e=>void 0===e?0:void 0!==e.text?R.spacing.sm:Math.max((z-T)/2,0),L=void 0===p?null:{paddingLeft:Math.max(p-opticalInset(I),0),paddingRight:Math.max(p-opticalInset(W),0)},O=void 0!==u,V=Boolean(I)||Boolean(s),P=m??!x,D=R.components.appBar?.dividerWidth??_reactNative.StyleSheet.hairlineWidth,H=R.components.appBar?.collapseTranslateDistance??-20,M=(0,_react.useMemo)(()=>{if(!f)return null;const e={inputRange:[0,60],extrapolate:"clamp"};return{titleScale:f.interpolate({...e,outputRange:[1,.71]}),titleTranslateY:f.interpolate({...e,outputRange:[0,H]}),titleTranslateX:f.interpolate({...e,outputRange:"center"===a?[0,0]:[0,8]}),subtitleOpacity:f.interpolate({inputRange:[0,30],outputRange:[1,0],extrapolate:"clamp"}),barHeight:f.interpolate({...e,outputRange:[96,56]}),borderOpacity:f.interpolate({...e,outputRange:[0,1]})}},[f,a,H]),E=C&&M?{transform:[{translateX:M.titleTranslateX},{translateY:M.titleTranslateY},{scale:M.titleScale}]}:null,k=i?d?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:E,children:(0,_jsxRuntime.jsx)(_Text.Text,{variant:d,align:"center"===a?"center":"left",accessibilityRole:"header",numberOfLines:1,style:[w.titleVariant,b],children:i})}):(0,_jsxRuntime.jsx)(_reactNative.Animated.Text,{accessibilityRole:"header",style:[w.title,{fontSize:N.titleSize,fontWeight:R.typography.fontWeight[N.titleWeight],textAlign:"center"===a?"center":"left"},E,b],numberOfLines:1,children:i}):null,q=n?(0,_jsxRuntime.jsx)(_reactNative.Animated.Text,{style:[w.subtitle,{textAlign:"center"===a?"center":"left"},C&&M?{opacity:M.subtitleOpacity}:null,j],numberOfLines:1,children:n}):null,X=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[w.titleColumn,"center"===a?w.titleColumnCenter:null,N.alignBottom?w.titleColumnBottom:null],children:[k,q]}),U=C?_reactNative.Animated.View:_reactNative.View,Y=C&&M?{height:_reactNative.Animated.add(M.barHeight,new _reactNative.Animated.Value(A.top))}:{height:(g??N.height)+A.top};return(0,_jsxRuntime.jsxs)(U,{ref:t,testID:B,style:[w.root,{paddingTop:A.top,backgroundColor:x?"transparent":R.colors.background.elevated},Y,!C&&P?{borderBottomWidth:D,borderBottomColor:R.colors.border.primary}:null,_,y],children:[C&&M&&P?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[w.animatedBorder,{backgroundColor:R.colors.border.primary,opacity:M.borderOpacity}]}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[w.row,N.alignBottom?w.rowAlignBottom:null,L,{flex:1}],children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[w.sideSlot,O?w.sideSlotCompact:null],children:[I?(0,_jsxRuntime.jsx)(ActionButton,{action:I,side:"left",haptic:v,flush:O}):null,null!=s&&!1!==s?(0,_jsxRuntime.jsx)(_reactNative.View,{style:w.slotNode,children:s}):null]}),(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[w.center,"center"===a?w.centerAligned:w.centerLeft,O?{paddingLeft:V?u:R.spacing.none,paddingRight:R.spacing.none}:null],children:X}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[w.sideSlot,w.sideSlotRight,O?w.sideSlotCompact:null],children:[r?.map((e,t)=>(0,_jsxRuntime.jsx)(ActionButton,{action:e,side:"right",badgeStyle:S,haptic:v,flush:O},`appbar-right-${t}`)),null!=l&&!1!==l?(0,_jsxRuntime.jsx)(_reactNative.View,{style:w.slotNode,children:l}):null]})]})]})});AppBar.displayName="AppBar";const buildStyles=e=>_reactNative.StyleSheet.create({root:{width:"100%"},row:{flexDirection:"row",alignItems:"center",paddingHorizontal:e.spacing.xs},rowAlignBottom:{alignItems:"flex-end",paddingBottom:e.spacing.sm},sideSlot:{flexDirection:"row",alignItems:"center",minWidth:e.components.appBar?.sideSlotMinWidth??48},sideSlotRight:{justifyContent:"flex-end"},sideSlotCompact:{minWidth:0},slotNode:{flexDirection:"row",alignItems:"center"},center:{flex:1,paddingHorizontal:e.spacing.xs},centerAligned:{alignItems:"center"},centerLeft:{alignItems:"flex-start"},titleColumn:{flexDirection:"column"},titleColumnCenter:{alignItems:"center"},titleColumnBottom:{justifyContent:"flex-end"},title:{color:e.colors.text.primary},titleVariant:{includeFontPadding:!1,textAlignVertical:"center"},subtitle:{marginTop:(0,_index.spaceOf)(e,e.components.appBar?.subtitleMarginTop??"xxs","components.appBar.subtitleMarginTop"),color:e.colors.text.tertiary,fontSize:e.typography.fontSize.sm,fontWeight:e.typography.fontWeight.normal},animatedBorder:{position:"absolute",left:0,right:0,bottom:0,height:_reactNative.StyleSheet.hairlineWidth}}),buildActionStyles=e=>_reactNative.StyleSheet.create({actionButton:{width:e.components.appBar?.actionButtonSize??44,height:e.components.appBar?.actionButtonSize??44,borderRadius:e.radius.pill,..._corners.smoothCorners,alignItems:"center",justifyContent:"center"},actionLeft:{marginRight:e.spacing.xs},actionRight:{marginLeft:e.spacing.xs},actionPressed:{backgroundColor:e.colors.surface.pressed},textButton:{minWidth:44,minHeight:44,paddingHorizontal:e.spacing.sm,alignItems:"center",justifyContent:"center"},textPressed:{opacity:.6},actionText:{color:e.colors.text.link,fontSize:e.typography.fontSize.base,...(0,_index.fontFor)(e,"semibold")},dot:{position:"absolute",top:e.components.appBar?.dotOffset??10,right:e.components.appBar?.dotOffset??10,width:e.components.appBar?.dotSize??8,height:e.components.appBar?.dotSize??8,borderRadius:e.radius.pill,backgroundColor:e.colors.error},iconWrap:{alignItems:"center",justifyContent:"center"},badge:{position:"absolute",top:e.components.appBar?.badgeOffset??4,right:e.components.appBar?.badgeOffset??4,minWidth:e.components.appBar?.badgeMinWidth??16,height:e.components.appBar?.badgeHeight??16,paddingHorizontal:(0,_index.spaceOf)(e,e.components.appBar?.badgePaddingX??"xs","components.appBar.badgePaddingX"),borderRadius:e.radius.pill,..._corners.smoothCorners,backgroundColor:e.colors.error,alignItems:"center",justifyContent:"center"},badgeText:{color:e.colors.onError,fontSize:(0,_index.fontSizeOf)(e,e.components.appBar?.badgeText??"xs","components.appBar.badgeText"),fontWeight:e.typography.fontWeight.semibold,lineHeight:e.components.appBar?.badgeLineHeight??13}});var _default=exports.default=AppBar;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.avatarToneColors=exports.AvatarGroup=exports.Avatar=void 0;var _expoImage=require("expo-image"),_react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index2=require("../AppIcon/index.js"),_index3=require("../Skeleton/index.js"),_jsxRuntime=require("react/jsx-runtime");const SOFT_FILL_OPACITY=.14,MIN_TOUCH_TARGET=44,PRESSED_OPACITY=.7,INITIALS_MAX_FONT_SCALE=1.2,avatarToneColors=(e,t)=>{const soft=(e,t)=>(0,_color.tintOf)(e,.14,t);switch(t){case"primary":return{background:soft(e.colors.primary,e.colors.primaryMuted),color:e.colors.toneText.primary};case"secondary":return{background:e.colors.secondary,color:e.colors.onSecondary};case"success":return{background:soft(e.colors.success,e.colors.background.secondary),color:e.colors.toneText.success};case"warning":return{background:soft(e.colors.warning,e.colors.background.secondary),color:e.colors.toneText.warning};case"error":return{background:soft(e.colors.error,e.colors.background.secondary),color:e.colors.toneText.error};case"info":return{background:soft(e.colors.info,e.colors.background.secondary),color:e.colors.toneText.info};default:return{background:e.colors.background.tertiary,color:e.colors.text.primary}}};exports.avatarToneColors=avatarToneColors;const sizeMap={xs:24,sm:32,md:48,lg:64,xl:80},resolveSize=e=>"number"==typeof e?e:sizeMap[e],resolveRadius=(e,t)=>{switch(e){case"circle":return t/2;case"rounded":return Math.max(6,Math.round(.22*t));default:return 0}},initialsFromName=e=>{if(!e)return"";const t=e.trim().split(/\s+/u).filter(Boolean);return 0===t.length?"":1===t.length?t[0].charAt(0).toUpperCase():(t[0].charAt(0)+t[1].charAt(0)).toUpperCase()},hashColor=(e,t)=>{if(!e)return t[0];let r=0;for(let t=0;t<e.length;t+=1)r=(r<<5)-r+e.charCodeAt(t),r|=0;return t[Math.abs(r)%t.length]},RING_WIDTH=1.5,isRingStatus=e=>"verified"===e||"pending"===e,statusColor=(e,t)=>{switch(t){case"online":case"verified":return e.colors.success;case"busy":return e.colors.error;case"away":case"pending":return e.colors.warning;default:return e.colors.text.tertiary}},Avatar=exports.Avatar=(0,_react.forwardRef)((e,t)=>{const{source:r,ImageComponent:o,name:s,size:a="md",shape:i="circle",status:n=null,statusPosition:c="bottomRight",tone:l,backgroundColor:u,color:d,fontSize:h,loading:m=!1,accessibilityLabel:g,onPress:p,onLongPress:b,haptic:v,hitSlop:_,style:y,textStyle:x,testID:f}=e,R=(0,_index.useTheme)(),j=R.components.avatar,[C,A]=(0,_react.useState)(!1),S=(0,_react.useMemo)(()=>resolveSize(a),[a]),I=(0,_react.useMemo)(()=>resolveRadius(i,S),[i,S]),M=j?.borderWidth??0,w=j?.borderColor??R.colors.border.primary,T=j?.statusBorderWidth??2,k=j?.statusBorderColor??R.colors.background.elevated,N=(0,_react.useMemo)(()=>initialsFromName(s),[s]),G=(0,_react.useMemo)(()=>l?avatarToneColors(R,l):null,[R,l]),W=(0,_react.useMemo)(()=>u||(G?.background??hashColor(s??"",R.colors.avatarPalette)),[u,G,s,R.colors.avatarPalette]),z=d??G?.color??R.colors.onPrimary,E=!!r&&!C,L=j?.fontSizeRatio??.4,P=h??j?.fontSize??Math.max(10,Math.round(S*L)),F=Math.max(8,Math.round(.25*S)),D=isRingStatus(n),O=j?.ringWidth??1.5,V=S-2*(D?O+(j?.ringGap??O):0),$=D?resolveRadius(i,V):I,q=D?statusColor(R,n):"transparent",U=Math.max(12,Math.round(.32*S)),B=Math.max(10,U-4),H=E?R.colors.background.tertiary:W,Y=f??"avatar",X=s?`${s}'s avatar`:"Avatar",J="verified"===n?", verified":"pending"===n?", pending verification":"",K=g??`${X}${J}`,Q="function"==typeof p||"function"==typeof b,Z=g??`${s||X}${J}`,ee=Math.max(0,Math.ceil((44-S)/2)),te=[styles.root,{width:S,height:S,borderRadius:I,..._corners.smoothCorners,borderWidth:D?0:M,borderColor:w,backgroundColor:D?"transparent":H},y],re=(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[D?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.ring,{borderRadius:I,..._corners.smoothCorners,borderWidth:O,borderColor:q}],accessible:!1,pointerEvents:"none",testID:`${Y}-ring`}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.picture,{width:V,height:V,borderRadius:$,..._corners.smoothCorners,borderWidth:D?M:0,borderColor:w,backgroundColor:D?H:"transparent"}],children:E?(()=>{const e={width:V,height:V,borderRadius:$,..._corners.smoothCorners},onError=()=>A(!0);return o?(0,_jsxRuntime.jsx)(o,{source:r,onError:onError,style:e,contentFit:"cover",resizeMode:"cover",accessibilityIgnoresInvertColors:!0}):(0,_jsxRuntime.jsx)(_expoImage.Image,{source:r,onError:onError,style:e,contentFit:"cover",accessibilityIgnoresInvertColors:!0})})():(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[styles.initials,{color:z,fontSize:P,fontWeight:R.typography.fontWeight[j?.fontWeight??"semibold"]},x],numberOfLines:1,maxFontSizeMultiplier:1.2,children:N??" "})}),"verified"===n?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.status,"topRight"===c?styles.badgeTopRight:styles.badgeBottomRight,{width:U,height:U,borderRadius:U/2,..._corners.smoothCorners,backgroundColor:k}],accessible:!1,pointerEvents:"none",testID:`${Y}-badge`,children:(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:"verify",variant:"bold",size:B,color:q})}):null,n&&!D?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.status,"topRight"===c?styles.statusTopRight:styles.statusBottomRight,{width:F,height:F,borderRadius:F/2,..._corners.smoothCorners,backgroundColor:statusColor(R,n),borderWidth:T,borderColor:k}],accessible:!1,pointerEvents:"none"}):null]}),oe=Q?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:t,onPress:p?e=>{const t=(0,_hapticUtils.resolveHaptic)(v,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),p?.(e)}:void 0,onLongPress:b?e=>{const t=(0,_hapticUtils.resolveHaptic)(v,"longPress");t&&(0,_hapticUtils.triggerHaptic)(t),b?.(e)}:void 0,hitSlop:_??ee,accessibilityRole:"button",accessibilityLabel:Z,testID:f,style:({pressed:e})=>[te,e?styles.pressed:null],children:re}):(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,style:te,accessible:!0,accessibilityRole:"image",accessibilityLabel:K,testID:f,children:re});return m?(0,_jsxRuntime.jsx)(AvatarSkeleton,{...e}):oe});Avatar.displayName="Avatar";const AvatarSkeleton=({size:e="md",shape:t="circle",style:r})=>{const o=resolveSize(e),s="circle"===t?"circle":"rounded"===t?"rounded":"rect";return(0,_jsxRuntime.jsx)(_index3.Skeleton,{shape:s,width:o,height:o,style:r})};AvatarSkeleton.displayName="AvatarSkeleton",Avatar.Skeleton=AvatarSkeleton;const styles=_reactNative.StyleSheet.create({root:{alignItems:"center",justifyContent:"center",overflow:"visible",position:"relative"},pressed:{opacity:.7},initials:{textAlign:"center"},ring:{position:"absolute",top:0,right:0,bottom:0,left:0},picture:{alignItems:"center",justifyContent:"center",overflow:"hidden"},status:{position:"absolute"},badgeTopRight:{top:-2,right:-2,alignItems:"center",justifyContent:"center"},badgeBottomRight:{bottom:-2,right:-2,alignItems:"center",justifyContent:"center"},statusTopRight:{top:0,right:0},statusBottomRight:{bottom:0,right:0}}),SPACING_OFFSET={tight:-16,normal:-12,loose:-8},STAGGER_MS=50,ENTRANCE_DURATION_MS=220,AvatarGroupItem=({delay:e,marginLeft:t,borderColor:r,borderWidth:o,children:s})=>{const a=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current;return(0,_react.useEffect)(()=>{const t=_reactNative.Animated.timing(a,{toValue:1,duration:220,delay:e,easing:_reactNative.Easing.out(_reactNative.Easing.cubic),useNativeDriver:!0});return t.start(),()=>t.stop()},[e,a]),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[groupStyles.item,{marginLeft:t,borderColor:r,borderWidth:o,opacity:a}],children:s})},AvatarGroup=e=>{const{children:t,max:r=4,size:o="md",spacing:s="normal",overflowVariant:a="count",accessibilityLabel:i,style:n,testID:c}=e,l=(0,_index.useTheme)(),u=(0,_react.useMemo)(()=>_react.Children.toArray(t).filter(e=>(0,_react.isValidElement)(e)),[t]),d=u.length,h=u.slice(0,r),m=Math.max(0,d-r),g=m>0,p=SPACING_OFFSET[s],b=l.colors.background.elevated,v=i??`Group of ${d} ${1===d?"person":"people"}`,_=(0,_react.useMemo)(()=>resolveSize(o),[o]),y=Math.max(10,Math.round(.34*_));return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[groupStyles.row,n],accessible:!0,accessibilityLabel:v,accessibilityRole:"summary",testID:c,children:[h.map((e,t)=>{const r=e.key??`avatar-${t}`,s=(0,_react.cloneElement)(e,{size:o});return(0,_jsxRuntime.jsx)(AvatarGroupItem,{delay:50*t,marginLeft:0===t?0:p,borderColor:b,borderWidth:1.5,children:s},r)}),g?(0,_jsxRuntime.jsx)(AvatarGroupItem,{delay:50*h.length,marginLeft:0===h.length?0:p,borderColor:b,borderWidth:1.5,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[groupStyles.overflow,{width:_,height:_,borderRadius:_/2,..._corners.smoothCorners,backgroundColor:l.colors.surface.disabled}],accessible:!0,accessibilityRole:"text",accessibilityLabel:"count"===a?`${m} more`:"More avatars",children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:l.colors.text.secondary,fontSize:y,fontWeight:l.typography.fontWeight.semibold},numberOfLines:1,maxFontSizeMultiplier:1.2,children:"count"===a?`+${m}`:"+"})})},"avatar-overflow"):null]})};exports.AvatarGroup=AvatarGroup;const groupStyles=_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center"},item:{borderRadius:9999,..._corners.smoothCorners},overflow:{alignItems:"center",justifyContent:"center"}}),AvatarWithGroup=Avatar;AvatarWithGroup.Group=AvatarGroup;var _default=exports.default=AvatarWithGroup;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.avatarToneColors=exports.AvatarGroup=exports.Avatar=void 0;var _expoImage=require("expo-image"),_react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index2=require("../AppIcon/index.js"),_index3=require("../Skeleton/index.js"),_jsxRuntime=require("react/jsx-runtime");const SOFT_FILL_OPACITY=.14,MIN_TOUCH_TARGET=44,PRESSED_OPACITY=.7,INITIALS_MAX_FONT_SCALE=1.2,avatarToneColors=(e,t)=>{const soft=(e,t)=>(0,_color.tintOf)(e,.14,t);switch(t){case"primary":return{background:soft(e.colors.primary,e.colors.primaryMuted),color:e.colors.toneText.primary};case"secondary":return{background:e.colors.secondary,color:e.colors.onSecondary};case"success":return{background:soft(e.colors.success,e.colors.background.secondary),color:e.colors.toneText.success};case"warning":return{background:soft(e.colors.warning,e.colors.background.secondary),color:e.colors.toneText.warning};case"error":return{background:soft(e.colors.error,e.colors.background.secondary),color:e.colors.toneText.error};case"info":return{background:soft(e.colors.info,e.colors.background.secondary),color:e.colors.toneText.info};default:return{background:e.colors.background.tertiary,color:e.colors.text.primary}}};exports.avatarToneColors=avatarToneColors;const sizeMap={xs:24,sm:32,md:48,lg:64,xl:80},resolveSize=e=>"number"==typeof e?e:sizeMap[e],resolveRadius=(e,t,r)=>{switch(t){case"circle":return r/2;case"rounded":return Math.max(e.radius.sm,Math.round(.22*r));default:return 0}},initialsFromName=e=>{if(!e)return"";const t=e.trim().split(/\s+/u).filter(Boolean);return 0===t.length?"":1===t.length?t[0].charAt(0).toUpperCase():(t[0].charAt(0)+t[1].charAt(0)).toUpperCase()},hashColor=(e,t)=>{if(!e)return t[0];let r=0;for(let t=0;t<e.length;t+=1)r=(r<<5)-r+e.charCodeAt(t),r|=0;return t[Math.abs(r)%t.length]},RING_WIDTH=1.5,isRingStatus=e=>"verified"===e||"pending"===e,statusColor=(e,t)=>{switch(t){case"online":case"verified":return e.colors.success;case"busy":return e.colors.error;case"away":case"pending":return e.colors.warning;default:return e.colors.text.tertiary}},Avatar=exports.Avatar=(0,_react.forwardRef)((e,t)=>{const{source:r,ImageComponent:o,name:s,size:a="md",shape:i="circle",status:n=null,statusPosition:c="bottomRight",tone:l,backgroundColor:u,color:d,fontSize:h,loading:m=!1,accessibilityLabel:g,onPress:p,onLongPress:v,haptic:b,hitSlop:x,style:_,textStyle:y,testID:f}=e,R=(0,_index.useTheme)(),j=R.components.avatar,[C,S]=(0,_react.useState)(!1),A=(0,_react.useMemo)(()=>resolveSize(a),[a]),I=(0,_react.useMemo)(()=>resolveRadius(R,i,A),[R,i,A]),M=j?.borderWidth??0,w=j?.borderColor??R.colors.border.primary,T=j?.statusBorderWidth??2,k=j?.statusBorderColor??R.colors.background.elevated,N=(0,_react.useMemo)(()=>initialsFromName(s),[s]),z=(0,_react.useMemo)(()=>l?avatarToneColors(R,l):null,[R,l]),G=(0,_react.useMemo)(()=>u||(z?.background??hashColor(s??"",R.colors.avatarPalette)),[u,z,s,R.colors.avatarPalette]),W=d??z?.color??R.colors.onPrimary,E=!!r&&!C,L=j?.fontSizeRatio??.4,P=h??(void 0!==j?.text?(0,_index.fontSizeOf)(R,j.text,"components.avatar.text"):Math.max(R.typography.fontSize.xs,Math.round(A*L))),F=Math.max(8,Math.round(.25*A)),O=isRingStatus(n),D=j?.ringWidth??1.5,V=A-2*(O?D+(j?.ringGap??D):0),$=O?resolveRadius(R,i,V):I,q=O?statusColor(R,n):"transparent",U=Math.max(12,Math.round(.32*A)),B=Math.max(10,U-4),H=E?R.colors.background.tertiary:G,Y=f??"avatar",X=s?`${s}'s avatar`:"Avatar",J="verified"===n?", verified":"pending"===n?", pending verification":"",K=g??`${X}${J}`,Q="function"==typeof p||"function"==typeof v,Z=g??`${s||X}${J}`,ee=Math.max(0,Math.ceil((44-A)/2)),te=[styles.root,{width:A,height:A,borderRadius:I,..._corners.smoothCorners,borderWidth:O?0:M,borderColor:w,backgroundColor:O?"transparent":H},_],re=(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[O?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.ring,{borderRadius:I,..._corners.smoothCorners,borderWidth:D,borderColor:q}],accessible:!1,pointerEvents:"none",testID:`${Y}-ring`}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.picture,{width:V,height:V,borderRadius:$,..._corners.smoothCorners,borderWidth:O?M:0,borderColor:w,backgroundColor:O?H:"transparent"}],children:E?(()=>{const e={width:V,height:V,borderRadius:$,..._corners.smoothCorners},onError=()=>S(!0);return o?(0,_jsxRuntime.jsx)(o,{source:r,onError:onError,style:e,contentFit:"cover",resizeMode:"cover",accessibilityIgnoresInvertColors:!0}):(0,_jsxRuntime.jsx)(_expoImage.Image,{source:r,onError:onError,style:e,contentFit:"cover",accessibilityIgnoresInvertColors:!0})})():(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[styles.initials,{color:W,fontSize:P,fontWeight:R.typography.fontWeight[j?.fontWeight??"semibold"]},y],numberOfLines:1,maxFontSizeMultiplier:1.2,children:N??" "})}),"verified"===n?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.status,"topRight"===c?styles.badgeTopRight:styles.badgeBottomRight,{width:U,height:U,borderRadius:U/2,..._corners.smoothCorners,backgroundColor:k}],accessible:!1,pointerEvents:"none",testID:`${Y}-badge`,children:(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:"verify",variant:"bold",size:B,color:q})}):null,n&&!O?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.status,"topRight"===c?styles.statusTopRight:styles.statusBottomRight,{width:F,height:F,borderRadius:F/2,..._corners.smoothCorners,backgroundColor:statusColor(R,n),borderWidth:T,borderColor:k}],accessible:!1,pointerEvents:"none"}):null]}),oe=Q?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:t,onPress:p?e=>{const t=(0,_hapticUtils.resolveHaptic)(b,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),p?.(e)}:void 0,onLongPress:v?e=>{const t=(0,_hapticUtils.resolveHaptic)(b,"longPress");t&&(0,_hapticUtils.triggerHaptic)(t),v?.(e)}:void 0,hitSlop:x??ee,accessibilityRole:"button",accessibilityLabel:Z,testID:f,style:({pressed:e})=>[te,e?styles.pressed:null],children:re}):(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,style:te,accessible:!0,accessibilityRole:"image",accessibilityLabel:K,testID:f,children:re});return m?(0,_jsxRuntime.jsx)(AvatarSkeleton,{...e}):oe});Avatar.displayName="Avatar";const AvatarSkeleton=({size:e="md",shape:t="circle",style:r})=>{const o=resolveSize(e),s="circle"===t?"circle":"rounded"===t?"rounded":"rect";return(0,_jsxRuntime.jsx)(_index3.Skeleton,{shape:s,width:o,height:o,style:r})};AvatarSkeleton.displayName="AvatarSkeleton",Avatar.Skeleton=AvatarSkeleton;const styles=_reactNative.StyleSheet.create({root:{alignItems:"center",justifyContent:"center",overflow:"visible",position:"relative"},pressed:{opacity:.7},initials:{textAlign:"center"},ring:{position:"absolute",top:0,right:0,bottom:0,left:0},picture:{alignItems:"center",justifyContent:"center",overflow:"hidden"},status:{position:"absolute"},badgeTopRight:{top:-2,right:-2,alignItems:"center",justifyContent:"center"},badgeBottomRight:{bottom:-2,right:-2,alignItems:"center",justifyContent:"center"},statusTopRight:{top:0,right:0},statusBottomRight:{bottom:0,right:0}}),SPACING_OFFSET={tight:"lg",normal:"md",loose:"sm"},STAGGER_MS=50,ENTRANCE_DURATION_MS=220,AvatarGroupItem=({delay:e,marginLeft:t,borderColor:r,borderWidth:o,children:s})=>{const a=(0,_index.useTheme)(),i=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current;return(0,_react.useEffect)(()=>{const t=_reactNative.Animated.timing(i,{toValue:1,duration:220,delay:e,easing:_reactNative.Easing.out(_reactNative.Easing.cubic),useNativeDriver:!0});return t.start(),()=>t.stop()},[e,i]),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[groupStyles.item,{marginLeft:t,borderRadius:a.radius.pill,borderColor:r,borderWidth:o,opacity:i}],children:s})},AvatarGroup=e=>{const{children:t,max:r=4,size:o="md",spacing:s="normal",overflowVariant:a="count",accessibilityLabel:i,style:n,testID:c}=e,l=(0,_index.useTheme)(),u=(0,_react.useMemo)(()=>_react.Children.toArray(t).filter(e=>(0,_react.isValidElement)(e)),[t]),d=u.length,h=u.slice(0,r),m=Math.max(0,d-r),g=m>0,p=-l.spacing[SPACING_OFFSET[s]],v=l.colors.background.elevated,b=i??`Group of ${d} ${1===d?"person":"people"}`,x=(0,_react.useMemo)(()=>resolveSize(o),[o]),_=Math.max(l.typography.fontSize.xs,Math.round(.34*x));return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[groupStyles.row,n],accessible:!0,accessibilityLabel:b,accessibilityRole:"summary",testID:c,children:[h.map((e,t)=>{const r=e.key??`avatar-${t}`,s=(0,_react.cloneElement)(e,{size:o});return(0,_jsxRuntime.jsx)(AvatarGroupItem,{delay:50*t,marginLeft:0===t?0:p,borderColor:v,borderWidth:1.5,children:s},r)}),g?(0,_jsxRuntime.jsx)(AvatarGroupItem,{delay:50*h.length,marginLeft:0===h.length?0:p,borderColor:v,borderWidth:1.5,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[groupStyles.overflow,{width:x,height:x,borderRadius:x/2,..._corners.smoothCorners,backgroundColor:l.colors.surface.disabled}],accessible:!0,accessibilityRole:"text",accessibilityLabel:"count"===a?`${m} more`:"More avatars",children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:l.colors.text.secondary,fontSize:_,fontWeight:l.typography.fontWeight.semibold},numberOfLines:1,maxFontSizeMultiplier:1.2,children:"count"===a?`+${m}`:"+"})})},"avatar-overflow"):null]})};exports.AvatarGroup=AvatarGroup;const groupStyles=_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center"},item:{..._corners.smoothCorners},overflow:{alignItems:"center",justifyContent:"center"}}),AvatarWithGroup=Avatar;AvatarWithGroup.Group=AvatarGroup;var _default=exports.default=AvatarWithGroup;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Badge=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_index2=require("../Skeleton/index.js"),_jsxRuntime=require("react/jsx-runtime");const toneFor=(e,t)=>{switch(t){case"primary":return{background:e.colors.primary,text:e.colors.onPrimary};case"success":return{background:e.colors.success,text:e.colors.onSuccess};case"warning":return{background:e.colors.warning,text:e.colors.onWarning};case"info":return{background:e.colors.info,text:e.colors.onInfo};case"neutral":return{background:e.colors.background.tertiary,text:e.colors.text.primary};default:return{background:e.colors.error,text:e.colors.onError}}},sizeMap={sm:{fontSize:10,minWidth:16,height:16,paddingH:5,dot:8},md:{fontSize:11,minWidth:20,height:20,paddingH:6,dot:10}},anchorPosition=(e,t)=>{const i=-t;switch(e){case"topLeft":return{top:i,left:i};case"bottomRight":return{bottom:i,right:i};case"bottomLeft":return{bottom:i,left:i};default:return{top:i,right:i}}},formatValue=(e,t)=>{if(null==e)return null;if("number"==typeof e)return e<=0?null:e>t?`${t}+`:String(e);const i=String(e);return 0===i.length?null:i},Badge=exports.Badge=(0,_react.forwardRef)((e,t)=>{const{value:i,max:r=99,variant:n="standard",tone:o="error",size:a="sm",invisible:s=!1,loading:d=!1,children:l,anchor:c="topRight",pulse:u=!1,accessibilityLabel:g,style:h,badgeStyle:m,textStyle:x,testID:p}=e,f=(0,_index.useTheme)(),b=(0,_react.useMemo)(()=>toneFor(f,o),[f,o]),_=f.components.badge?.[a],v={fontSize:_?.fontSize??sizeMap[a].fontSize,minWidth:_?.minWidth??sizeMap[a].minWidth,height:_?.height??sizeMap[a].height,paddingH:_?.paddingHorizontal??sizeMap[a].paddingH,dot:_?.dotSize??sizeMap[a].dot},y=f.components.badge?.borderWidth??1.5,S=f.components.badge?.anchorOffset??4,j="dot"===n?null:formatValue(i,r),z=!s&&("dot"===n||null!==j),k=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current;(0,_react.useEffect)(()=>{if(!u||!z)return void(0,_index.setNativeValue)(k,1);const e=_reactNative.Animated.loop(_reactNative.Animated.sequence([_reactNative.Animated.timing(k,{toValue:1.15,duration:f.motion.duration.slow,easing:_reactNative.Easing.bezier(...f.motion.easing.standard),useNativeDriver:!0}),_reactNative.Animated.timing(k,{toValue:1,duration:f.motion.duration.slow,easing:_reactNative.Easing.bezier(...f.motion.easing.standard),useNativeDriver:!0})]));return e.start(),()=>{e.stop()}},[u,z,k,f]);const w="dot"===n,N=w?"image":"text",R=g??(w?"Notification indicator":j?`${j} unread`:void 0),B=z?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[styles.badge,w?{width:v.dot,height:v.dot,borderRadius:v.dot/2,..._corners.smoothCorners,paddingHorizontal:0}:{minWidth:v.minWidth,minHeight:v.height,borderRadius:f.radius.full,..._corners.smoothCorners,paddingHorizontal:v.paddingH},{backgroundColor:b.background,transform:[{scale:k}]},l?{position:"absolute",borderWidth:y,borderColor:f.colors.background.elevated,...anchorPosition(c,S)}:null,m],accessible:!0,accessibilityRole:N,accessibilityLabel:R,children:w||null===j?null:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[styles.text,{color:b.text,fontSize:v.fontSize,...(0,_index.fontFor)(f,"bold")},x],numberOfLines:1,maxFontSizeMultiplier:f.maxFontSizeMultiplier,children:j??" "})}):null,W=l?(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,style:[styles.wrapper,h],testID:p,children:[l,B]}):(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,style:h,testID:p,children:B});return d?(0,_jsxRuntime.jsx)(BadgeSkeleton,{...e}):W});Badge.displayName="Badge";const BadgeSkeleton=({variant:e="standard",size:t="md",children:i,anchor:r,style:n,badgeStyle:o})=>{const a=sizeMap[t];if("dot"===e)return(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"circle",width:a.dot,height:a.dot,style:[o,n]});const s=a.height/2;if(void 0!==i){const e="topLeft"===r?{top:-a.height/2,left:-a.height/2}:"bottomRight"===r?{bottom:-a.height/2,right:-a.height/2}:"bottomLeft"===r?{bottom:-a.height/2,left:-a.height/2}:{top:-a.height/2,right:-a.height/2};return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[styles.wrapper,n],children:[i,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[{position:"absolute"},e],children:(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:a.minWidth+a.paddingH,height:a.height,radius:s,style:o})})]})}return(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:a.minWidth+a.paddingH,height:a.height,radius:s,style:[o,n]})};BadgeSkeleton.displayName="BadgeSkeleton",Badge.Skeleton=BadgeSkeleton;const styles=_reactNative.StyleSheet.create({wrapper:{position:"relative",alignSelf:"flex-start"},badge:{alignItems:"center",justifyContent:"center",flexDirection:"row"},text:{textAlign:"center",includeFontPadding:!1}});var _default=exports.default=Badge;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Badge=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_index2=require("../Skeleton/index.js"),_jsxRuntime=require("react/jsx-runtime");const toneFor=(e,t)=>{switch(t){case"primary":return{background:e.colors.primary,text:e.colors.onPrimary};case"success":return{background:e.colors.success,text:e.colors.onSuccess};case"warning":return{background:e.colors.warning,text:e.colors.onWarning};case"info":return{background:e.colors.info,text:e.colors.onInfo};case"neutral":return{background:e.colors.background.tertiary,text:e.colors.text.primary};default:return{background:e.colors.error,text:e.colors.onError}}},anchorPosition=(e,t)=>{const r=-t;switch(e){case"topLeft":return{top:r,left:r};case"bottomRight":return{bottom:r,right:r};case"bottomLeft":return{bottom:r,left:r};default:return{top:r,right:r}}},formatValue=(e,t)=>{if(null==e)return null;if("number"==typeof e)return e<=0?null:e>t?`${t}+`:String(e);const r=String(e);return 0===r.length?null:r},Badge=exports.Badge=(0,_react.forwardRef)((e,t)=>{const{value:r,max:i=99,variant:n="standard",tone:o="error",size:a="sm",invisible:s=!1,loading:l=!1,children:d,anchor:c="topRight",pulse:u=!1,accessibilityLabel:g,style:h,badgeStyle:m,textStyle:x,testID:_}=e,b=(0,_index.useTheme)(),f=(0,_react.useMemo)(()=>toneFor(b,o),[b,o]),p=(0,_index.resolveBadgeSize)(b,a),v=b.components.badge?.borderWidth??1.5,y=b.components.badge?.anchorOffset??4,S="dot"===n?null:formatValue(r,i),j=!s&&("dot"===n||null!==S),k=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current;(0,_react.useEffect)(()=>{if(!u||!j)return void(0,_index.setNativeValue)(k,1);const e=_reactNative.Animated.loop(_reactNative.Animated.sequence([_reactNative.Animated.timing(k,{toValue:1.15,duration:b.motion.duration.slow,easing:_reactNative.Easing.bezier(...b.motion.easing.standard),useNativeDriver:!0}),_reactNative.Animated.timing(k,{toValue:1,duration:b.motion.duration.slow,easing:_reactNative.Easing.bezier(...b.motion.easing.standard),useNativeDriver:!0})]));return e.start(),()=>{e.stop()}},[u,j,k,b]);const w="dot"===n,N=w?"image":"text",R=g??(w?"Notification indicator":S?`${S} unread`:void 0),z=j?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[styles.badge,w?{width:p.dotSize,height:p.dotSize,borderRadius:p.dotSize/2,..._corners.smoothCorners,paddingHorizontal:0}:{minWidth:p.minWidth,minHeight:p.height,borderRadius:b.radius.pill,..._corners.smoothCorners,paddingHorizontal:p.paddingX},{backgroundColor:f.background,transform:[{scale:k}]},d?{position:"absolute",borderWidth:v,borderColor:b.colors.background.elevated,...anchorPosition(c,y)}:null,m],accessible:!0,accessibilityRole:N,accessibilityLabel:R,children:w||null===S?null:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[styles.text,{color:f.text,fontSize:p.text,...(0,_index.fontFor)(b,"bold")},x],numberOfLines:1,maxFontSizeMultiplier:b.maxFontSizeMultiplier,children:S??" "})}):null,B=d?(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,style:[styles.wrapper,h],testID:_,children:[d,z]}):(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,style:h,testID:_,children:z});return l?(0,_jsxRuntime.jsx)(BadgeSkeleton,{...e}):B});Badge.displayName="Badge";const BadgeSkeleton=({variant:e="standard",size:t="md",children:r,anchor:i,style:n,badgeStyle:o})=>{const a=(0,_index.useTheme)(),s=(0,_index.resolveBadgeSize)(a,t);if("dot"===e)return(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"circle",width:s.dotSize,height:s.dotSize,style:[o,n]});const l=s.height/2;if(void 0!==r){const e="topLeft"===i?{top:-s.height/2,left:-s.height/2}:"bottomRight"===i?{bottom:-s.height/2,right:-s.height/2}:"bottomLeft"===i?{bottom:-s.height/2,left:-s.height/2}:{top:-s.height/2,right:-s.height/2};return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[styles.wrapper,n],children:[r,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[{position:"absolute"},e],children:(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:s.minWidth+s.paddingX,height:s.height,radius:l,style:o})})]})}return(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:s.minWidth+s.paddingX,height:s.height,radius:l,style:[o,n]})};BadgeSkeleton.displayName="BadgeSkeleton",Badge.Skeleton=BadgeSkeleton;const styles=_reactNative.StyleSheet.create({wrapper:{position:"relative",alignSelf:"flex-start"},badge:{alignItems:"center",justifyContent:"center",flexDirection:"row"},text:{textAlign:"center",includeFontPadding:!1}});var _default=exports.default=Badge;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Banner=void 0;var _react=require("react"),_reactNative=require("react-native"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index2=require("../Skeleton/index.js"),_jsxRuntime=require("react/jsx-runtime");const Banner=exports.Banner=(0,_react.forwardRef)((e,t)=>{const{title:n,message:r,variant:i="info",icon:o,actions:s,dismissible:a=!1,onDismiss:c,haptic:l,visible:d=!0,animateMount:u=!0,loading:p=!1,accessibilityRole:m="alert",accessibilityLabel:g,style:x,containerStyle:h,iconCircleStyle:y,tintBarStyle:_,closeButtonStyle:b,actionButtonStyle:j,testID:f}=e,R=(0,_index.useTheme)(),v=(0,_usePresenceMotion.usePresenceMotion)(),w=(0,_react.useMemo)(()=>buildStyles(R),[R]),S=(0,_react.useMemo)(()=>tintFor(R,i),[R,i]),[B,N]=v.range(-20,0),k=(0,_react.useRef)((0,_index.createAnimatedValue)(u&&d?B:0)).current,C=(0,_react.useRef)((0,_index.createAnimatedValue)(u&&d?0:d?1:0)).current,[V,T]=(0,_react.useState)(d),z=(0,_react.useRef)(!0);if((0,_react.useEffect)(()=>{if(z.current&&(z.current=!1,!u))return;let e;return d?(T(!0),e=_reactNative.Animated.parallel([_reactNative.Animated.timing(k,{toValue:N,duration:R.motion.duration.normal,useNativeDriver:!0}),_reactNative.Animated.timing(C,{toValue:1,duration:v.duration("normal"),useNativeDriver:!0})]),e.start()):V&&(e=_reactNative.Animated.parallel([_reactNative.Animated.timing(k,{toValue:B,duration:R.motion.duration.fast,useNativeDriver:!0}),_reactNative.Animated.timing(C,{toValue:0,duration:v.duration("fast"),useNativeDriver:!0})]),e.start(()=>{T(!1)})),()=>e?.stop()},[d]),!V)return null;const P=n??" ",H="string"==typeof r?r??" ":"",W="alert"===m?"error"===i?"assertive":"polite":"none",D=(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{ref:t,accessibilityRole:m,accessibilityLiveRegion:W,accessibilityLabel:g,testID:f,style:[w.container,{backgroundColor:R.colors.background.secondary,borderRadius:R.radius.md,..._corners.smoothCorners,padding:R.spacing.md,opacity:C,transform:[{translateY:k}]},x,h],children:[(R.components.banner?.tintBarWidth??0)>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[w.tintBar,{backgroundColor:S.bar},_]}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:w.row,children:[!1===o?null:o?(0,_jsxRuntime.jsx)(_reactNative.View,{style:w.iconWrap,children:o}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[w.iconCircle,{backgroundColor:S.bar+"22"},y],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[w.iconGlyph,{color:S.ink}],accessible:!1,children:S.glyph})}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:w.textBlock,children:[n||p?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:R.colors.text.primary,fontSize:R.typography.fontSize.base,...(0,_index.fontFor)(R,"semibold"),lineHeight:20},numberOfLines:2,children:P}):null,"string"==typeof r||p?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:R.colors.text.secondary,fontSize:R.typography.fontSize.sm,...(0,_index.fontFor)(R,"normal"),lineHeight:18,marginTop:n?2:0},children:H||" "}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:{marginTop:n?2:0},children:r})]}),a?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{accessibilityRole:"button",accessibilityLabel:"Dismiss banner",onPress:()=>{const e=(0,_hapticUtils.resolveHaptic)(l,"selection");e&&(0,_hapticUtils.triggerHaptic)(e),c?.()},hitSlop:8,style:({pressed:e})=>[w.closeBtn,{backgroundColor:e?R.colors.surface.pressed:"transparent"},b],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:R.colors.text.secondary,fontSize:R.components.banner?.closeGlyphFontSize??18,fontWeight:R.typography.fontWeight.bold,lineHeight:18},accessible:!1,children:"×"})}):null]}),s&&s.length>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:w.actionsRow,children:s.map((e,t)=>{const n=e.tone??"primary",r=e.variant??"ghost",i="danger"===n?R.colors.error:"neutral"===n?R.colors.text.secondary:S.glyphColor,o="danger"===n?R.colors.toneText.error:"neutral"===n?R.colors.text.secondary:S.ink,s="danger"===n?R.colors.onError:"neutral"===n?R.colors.onNeutral:S.on,a="solid"===r;return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{accessibilityRole:"button",accessibilityLabel:e.label,onPress:()=>{const t=(0,_hapticUtils.resolveHaptic)(l,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),e.onPress()},style:({pressed:t})=>[w.actionBtn,"md"===e.size&&w.actionBtnMd,"outline"===r&&{borderWidth:1,borderColor:o},{backgroundColor:a?i:t?R.colors.surface.pressed:"transparent",opacity:a&&t?.85:1},j],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:a?s:o,fontSize:R.typography.fontSize.sm,textAlign:"center",...(0,_index.fontFor)(R,"semibold")},children:e.label})},`${e.label}-${t}`)})}):null]});return p?(0,_jsxRuntime.jsx)(BannerSkeleton,{...e}):D});Banner.displayName="Banner";const BannerSkeleton=({title:e,actions:t,icon:n,containerStyle:r,style:i})=>{const o=(0,_index.useTheme)(),s=!1!==n;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[{flexDirection:"row",alignItems:"flex-start",backgroundColor:o.colors.background.elevated,borderRadius:o.radius.md,..._corners.smoothCorners,padding:o.spacing.md,borderWidth:1,borderColor:o.colors.border.primary},r,i],accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,children:[s?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{marginRight:o.spacing.sm},children:(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"circle",width:32,height:32})}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{flex:1},children:[void 0!==e?(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"55%",height:16,style:{marginBottom:o.spacing.xs}}):null,(0,_jsxRuntime.jsx)(_index2.SkeletonText,{lines:2,fontSize:13,lastLineWidth:"70%"}),t&&t.length>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{flexDirection:"row",marginTop:o.spacing.sm},children:t.map((e,t)=>(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:72,height:28,shape:"rounded",style:{marginRight:o.spacing.sm}},`sk-banner-action-${t}`))}):null]})]})};BannerSkeleton.displayName="BannerSkeleton",Banner.Skeleton=BannerSkeleton;const tintFor=(e,t)=>{switch(t){case"success":return{bar:e.colors.success,glyphColor:e.colors.success,ink:e.colors.toneText.success,on:e.colors.onSuccess,glyph:"✓"};case"warning":return{bar:e.colors.warning,glyphColor:e.colors.warning,ink:e.colors.toneText.warning,on:e.colors.onWarning,glyph:"⚠"};case"error":return{bar:e.colors.error,glyphColor:e.colors.error,ink:e.colors.toneText.error,on:e.colors.onError,glyph:"✗"};case"neutral":return{bar:e.colors.text.tertiary,glyphColor:e.colors.text.secondary,ink:e.colors.text.secondary,on:e.colors.onNeutral,glyph:"i"};default:return{bar:e.colors.primary,glyphColor:e.colors.primary,ink:e.colors.toneText.primary,on:e.colors.onPrimary,glyph:"i"}}},buildStyles=e=>{const t=e.components.banner?.iconCircleSize??28,n=e.components.banner?.closeButtonSize??28;return _reactNative.StyleSheet.create({container:{overflow:"hidden",paddingLeft:e.components.banner?.containerPaddingLeft??e.spacing.md},tintBar:{position:"absolute",left:0,top:0,bottom:0,width:e.components.banner?.tintBarWidth??0},row:{flexDirection:"row",alignItems:"flex-start"},iconWrap:{marginRight:e.components.banner?.iconGap??e.spacing.sm},iconCircle:{width:t,height:t,borderRadius:e.components.banner?.iconCircleRadius??t/2,..._corners.smoothCorners,alignItems:"center",justifyContent:"center",marginRight:e.components.banner?.iconGap??e.spacing.sm},iconGlyph:{fontSize:e.components.banner?.iconGlyphFontSize??15,fontWeight:"700",lineHeight:e.components.banner?.iconGlyphLineHeight??17},textBlock:{flex:1,paddingRight:e.components.banner?.textBlockPaddingRight??e.spacing.xs},closeBtn:{width:n,height:n,borderRadius:e.components.banner?.closeButtonRadius??n/2,..._corners.smoothCorners,alignItems:"center",justifyContent:"center",marginLeft:e.components.banner?.closeButtonMarginLeft??e.spacing.xxs??4},actionsRow:{flexDirection:"row",flexWrap:"wrap",justifyContent:"flex-end",marginTop:e.components.banner?.actionsRowMarginTop??e.spacing.xs,columnGap:e.components.banner?.actionsRowGap??e.spacing.xs,rowGap:e.components.banner?.actionsRowGap??e.spacing.xs},actionBtn:{paddingHorizontal:e.components.banner?.actionButtonPaddingHorizontal??e.spacing.sm,paddingVertical:e.components.banner?.actionButtonPaddingVertical??6,borderRadius:e.components.banner?.actionButtonRadius??e.radius.sm,..._corners.smoothCorners,maxWidth:"100%",alignItems:"center",justifyContent:"center"},actionBtnMd:{minHeight:44,paddingHorizontal:e.spacing.md}})};var _default=exports.default=Banner;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Banner=void 0;var _react=require("react"),_reactNative=require("react-native"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index2=require("../Skeleton/index.js"),_jsxRuntime=require("react/jsx-runtime");const Banner=exports.Banner=(0,_react.forwardRef)((e,t)=>{const{title:n,message:i,variant:r="info",icon:o,actions:s,dismissible:a=!1,onDismiss:c,haptic:l,visible:d=!0,animateMount:u=!0,loading:p=!1,accessibilityRole:x="alert",accessibilityLabel:m,style:g,containerStyle:h,iconCircleStyle:_,tintBarStyle:y,closeButtonStyle:b,actionButtonStyle:f,testID:j}=e,R=(0,_index.useTheme)(),v=(0,_usePresenceMotion.usePresenceMotion)(),w=(0,_react.useMemo)(()=>buildStyles(R),[R]),B=(0,_react.useMemo)(()=>tintFor(R,r),[R,r]),[S,N]=v.range(-20,0),k=(0,_react.useRef)((0,_index.createAnimatedValue)(u&&d?S:0)).current,C=(0,_react.useRef)((0,_index.createAnimatedValue)(u&&d?0:d?1:0)).current,[T,P]=(0,_react.useState)(d),V=(0,_react.useRef)(!0);if((0,_react.useEffect)(()=>{if(V.current&&(V.current=!1,!u))return;let e;return d?(P(!0),e=_reactNative.Animated.parallel([_reactNative.Animated.timing(k,{toValue:N,duration:R.motion.duration.normal,useNativeDriver:!0}),_reactNative.Animated.timing(C,{toValue:1,duration:v.duration("normal"),useNativeDriver:!0})]),e.start()):T&&(e=_reactNative.Animated.parallel([_reactNative.Animated.timing(k,{toValue:S,duration:R.motion.duration.fast,useNativeDriver:!0}),_reactNative.Animated.timing(C,{toValue:0,duration:v.duration("fast"),useNativeDriver:!0})]),e.start(()=>{P(!1)})),()=>e?.stop()},[d]),!T)return null;const z=n??" ",G="string"==typeof i?i??" ":"",L="alert"===x?"error"===r?"assertive":"polite":"none",M=(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{ref:t,accessibilityRole:x,accessibilityLiveRegion:L,accessibilityLabel:m,testID:j,style:[w.container,{backgroundColor:R.colors.background.secondary,borderRadius:R.radius.md,..._corners.smoothCorners,padding:R.spacing.md,opacity:C,transform:[{translateY:k}]},g,h],children:[(R.components.banner?.tintBarWidth??0)>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[w.tintBar,{backgroundColor:B.bar},y]}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:w.row,children:[!1===o?null:o?(0,_jsxRuntime.jsx)(_reactNative.View,{style:w.iconWrap,children:o}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[w.iconCircle,{backgroundColor:B.bar+"22"},_],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[w.iconGlyph,{color:B.ink}],accessible:!1,children:B.glyph})}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:w.textBlock,children:[n||p?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:R.colors.text.primary,fontSize:R.typography.fontSize.base,...(0,_index.fontFor)(R,"semibold"),lineHeight:20},numberOfLines:2,children:z}):null,"string"==typeof i||p?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:R.colors.text.secondary,fontSize:R.typography.fontSize.sm,...(0,_index.fontFor)(R,"normal"),lineHeight:18,marginTop:n?R.spacing.xxs:0},children:G||" "}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:{marginTop:n?R.spacing.xxs:0},children:i})]}),a?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{accessibilityRole:"button",accessibilityLabel:"Dismiss banner",onPress:()=>{const e=(0,_hapticUtils.resolveHaptic)(l,"selection");e&&(0,_hapticUtils.triggerHaptic)(e),c?.()},hitSlop:8,style:({pressed:e})=>[w.closeBtn,{backgroundColor:e?R.colors.surface.pressed:"transparent"},b],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:R.colors.text.secondary,fontSize:(0,_index.fontSizeOf)(R,R.components.banner?.closeGlyphText??"lg","components.banner.closeGlyphText"),fontWeight:R.typography.fontWeight.bold,lineHeight:17},accessible:!1,children:"×"})}):null]}),s&&s.length>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:w.actionsRow,children:s.map((e,t)=>{const n=e.tone??"primary",i=e.variant??"ghost",r="danger"===n?R.colors.error:"neutral"===n?R.colors.text.secondary:B.glyphColor,o="danger"===n?R.colors.toneText.error:"neutral"===n?R.colors.text.secondary:B.ink,s="danger"===n?R.colors.onError:"neutral"===n?R.colors.onNeutral:B.on,a="solid"===i;return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{accessibilityRole:"button",accessibilityLabel:e.label,onPress:()=>{const t=(0,_hapticUtils.resolveHaptic)(l,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),e.onPress()},style:({pressed:t})=>[w.actionBtn,"md"===e.size&&w.actionBtnMd,"outline"===i&&{borderWidth:1,borderColor:o},{backgroundColor:a?r:t?R.colors.surface.pressed:"transparent",opacity:a&&t?.85:1},f],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:a?s:o,fontSize:R.typography.fontSize.sm,textAlign:"center",...(0,_index.fontFor)(R,"semibold")},children:e.label})},`${e.label}-${t}`)})}):null]});return p?(0,_jsxRuntime.jsx)(BannerSkeleton,{...e}):M});Banner.displayName="Banner";const BannerSkeleton=({title:e,actions:t,icon:n,containerStyle:i,style:r})=>{const o=(0,_index.useTheme)(),s=!1!==n;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[{flexDirection:"row",alignItems:"flex-start",backgroundColor:o.colors.background.elevated,borderRadius:o.radius.md,..._corners.smoothCorners,padding:o.spacing.md,borderWidth:1,borderColor:o.colors.border.primary},i,r],accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,children:[s?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{marginRight:o.spacing.sm},children:(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"circle",width:32,height:32})}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{flex:1},children:[void 0!==e?(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"55%",height:16,style:{marginBottom:o.spacing.xs}}):null,(0,_jsxRuntime.jsx)(_index2.SkeletonText,{lines:2,fontSize:o.typography.fontSize.sm,lastLineWidth:"70%"}),t&&t.length>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{flexDirection:"row",marginTop:o.spacing.sm},children:t.map((e,t)=>(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:72,height:28,shape:"rounded",style:{marginRight:o.spacing.sm}},`sk-banner-action-${t}`))}):null]})]})};BannerSkeleton.displayName="BannerSkeleton",Banner.Skeleton=BannerSkeleton;const tintFor=(e,t)=>{switch(t){case"success":return{bar:e.colors.success,glyphColor:e.colors.success,ink:e.colors.toneText.success,on:e.colors.onSuccess,glyph:"✓"};case"warning":return{bar:e.colors.warning,glyphColor:e.colors.warning,ink:e.colors.toneText.warning,on:e.colors.onWarning,glyph:"⚠"};case"error":return{bar:e.colors.error,glyphColor:e.colors.error,ink:e.colors.toneText.error,on:e.colors.onError,glyph:"✗"};case"neutral":return{bar:e.colors.text.tertiary,glyphColor:e.colors.text.secondary,ink:e.colors.text.secondary,on:e.colors.onNeutral,glyph:"i"};default:return{bar:e.colors.primary,glyphColor:e.colors.primary,ink:e.colors.toneText.primary,on:e.colors.onPrimary,glyph:"i"}}},buildStyles=e=>{const t=e.components.banner,n=t?.iconCircleSize??28,i=t?.closeButtonSize??28,r=(0,_index.spaceOf)(e,t?.iconGap??"sm","components.banner.iconGap");return _reactNative.StyleSheet.create({container:{overflow:"hidden",paddingLeft:(0,_index.spaceOf)(e,t?.containerPaddingLeft??"md","components.banner.containerPaddingLeft")},tintBar:{position:"absolute",left:0,top:0,bottom:0,width:t?.tintBarWidth??0},row:{flexDirection:"row",alignItems:"flex-start"},iconWrap:{marginRight:r},iconCircle:{width:n,height:n,borderRadius:e.radius.pill,..._corners.smoothCorners,alignItems:"center",justifyContent:"center",marginRight:r},iconGlyph:{fontSize:(0,_index.fontSizeOf)(e,t?.iconGlyphText??"base","components.banner.iconGlyphText"),fontWeight:"700",lineHeight:t?.iconGlyphLineHeight??17},textBlock:{flex:1,paddingRight:(0,_index.spaceOf)(e,t?.textBlockPaddingRight??"xs","components.banner.textBlockPaddingRight")},closeBtn:{width:i,height:i,borderRadius:e.radius.pill,..._corners.smoothCorners,alignItems:"center",justifyContent:"center",marginLeft:(0,_index.spaceOf)(e,t?.closeButtonMarginLeft??"xxs","components.banner.closeButtonMarginLeft")},actionsRow:{flexDirection:"row",flexWrap:"wrap",justifyContent:"flex-end",marginTop:(0,_index.spaceOf)(e,t?.actionsRowMarginTop??"xs","components.banner.actionsRowMarginTop"),columnGap:(0,_index.spaceOf)(e,t?.actionsRowGap??"xs","components.banner.actionsRowGap"),rowGap:(0,_index.spaceOf)(e,t?.actionsRowGap??"xs","components.banner.actionsRowGap")},actionBtn:{paddingHorizontal:(0,_index.spaceOf)(e,t?.actionButtonPaddingX??"sm","components.banner.actionButtonPaddingX"),paddingVertical:(0,_index.spaceOf)(e,t?.actionButtonPaddingY??"xs","components.banner.actionButtonPaddingY"),borderRadius:(0,_index.radiusOf)(e,t?.actionButtonRadius??"sm","components.banner.actionButtonRadius"),..._corners.smoothCorners,maxWidth:"100%",alignItems:"center",justifyContent:"center"},actionBtnMd:{minHeight:44,paddingHorizontal:e.spacing.md}})};var _default=exports.default=Banner;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.BarChart=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_index4=require("../Text/index.js"),_scale=require("./scale.js"),_jsxRuntime=require("react/jsx-runtime");const AUTO_VALUES_MAX_BARS=7,MAX_BAR_WIDTH=40,BAR_SHARE=.6,MIN_BAR_HEIGHT=2,VALUE_LABEL_ROOM=20,PLOT_PAD=6,HEADER_MIN_HEIGHT=48,AXIS_LABEL_MIN_WIDTH=44,CHAR_WIDTH=7,FONT_SCALE_CAP=1.2,toneColor=(e,t)=>"neutral"===t?e.colors.text.secondary:e.colors.toneText[t],safe=e=>Number.isFinite(e)?e:0,defaultFormatValue=e=>(0,_mobileCore.formatNumber)(e),defaultFormatTick=e=>(0,_mobileCore.formatCompactNumber)(e),BarChart=exports.BarChart=(0,_react.forwardRef)((e,t)=>{const{data:r,tone:i="primary",color:a,height:s=160,label:n,summary:l,formatValue:o=defaultFormatValue,formatTick:c=defaultFormatTick,showValues:u,selection:x,defaultSelection:d=null,onSelect:m,haptic:_,style:h,testID:b}=e,y=(0,_index2.useTheme)(),f=r.length,[j,p]=(0,_react.useState)(0),[v,R]=(0,_index.useControllableState)({value:x,defaultValue:d,onChange:m}),g=null!==v&&v>=0&&v<f?v:null,N=(0,_react.useRef)(g);N.current=g;const M=(0,_react.useRef)(-1),S=(0,_index3.resolveHaptic)(_,"tick"),w=(0,_react.useCallback)(()=>{S&&(0,_index3.triggerHaptic)(S)},[S]),C=u??(f>0&&f<=7),T=(0,_react.useMemo)(()=>r.map(e=>safe(e.value)),[r]),A=(0,_react.useMemo)(()=>(0,_scale.barScale)(T),[T]),V=C?20:6,L=C&&A.min<0?20:6,H=Math.max(1,s-V-L),I=(0,_react.useCallback)(e=>V+(A.max-e)/(A.max-A.min)*H,[V,A.max,A.min,H]),k=I(0),B=(0,_react.useMemo)(()=>A.ticks.map(e=>c(e)),[A.ticks,c]),D=Math.ceil(7*Math.max(...B.map(e=>e.length),1)*1.2),E=f>0?j/f:0,O=Math.max(1,Math.ceil(44/Math.max(1,E||44))),$=(0,_react.useCallback)(e=>{const t=r[e];return t.accessibilityLabel??`${t.label}, ${o(T[e])}`},[r,o,T]),q=(0,_react.useMemo)(()=>{let e=-1;return T.forEach((t,r)=>{(-1===e||t>T[e])&&(e=r)}),e},[T]),F=l??(q>=0?`Highest: ${r[q].label}, ${o(T[q])}`:""),G=(0,_react.useRef)({fire:w,setSelected:R,count:f,plotWidth:j});G.current={fire:w,setSelected:R,count:f,plotWidth:j};const W=(0,_react.useMemo)(()=>{const indexAt=e=>{const{count:t,plotWidth:r}=G.current;return 0===t||r<=0||!Number.isFinite(e)?-1:Math.min(t-1,Math.max(0,Math.floor(e/r*t)))},scrubTo=e=>{const t=indexAt(e);t<0||t===M.current||(M.current=t,G.current.fire(),G.current.setSelected(t))},e=_reactNativeGestureHandler.Gesture.Pan().runOnJS(!0).activeOffsetX([-8,8]).failOffsetY([-12,12]).onStart(e=>{M.current=N.current??-1,scrubTo(e.x)}).onUpdate(e=>scrubTo(e.x)).withTestId(b?`${b}-pan`:"bar-chart-pan"),t=_reactNativeGestureHandler.Gesture.Tap().runOnJS(!0).onEnd((e,t)=>{if(!t)return;const r=indexAt(e.x);r<0||(G.current.fire(),M.current=r,G.current.setSelected(r===N.current?null:r))}).withTestId(b?`${b}-tap`:"bar-chart-tap");return _reactNativeGestureHandler.Gesture.Race(e,t)},[b]),P=(0,_react.useCallback)(e=>{if(0===f)return;const t=N.current,r="increment"===e.nativeEvent.actionName?null===t?0:Math.min(f-1,t+1):null===t?f-1:Math.max(0,t-1);r!==t&&(w(),R(r))},[f,w,R]),U=(0,_react.useCallback)(e=>{const t=Math.round(e.nativeEvent.layout.width);p(e=>e===t?e:t)},[]),X=a??toneColor(y,i),z=y.radius.xs,J=n??"Bar chart",Y=0===f?`${J}, no data`:F?`${J}, ${F}`:J,K=null===g?F:$(g),Q=T.map((e,t)=>{const r=Math.min(40,Math.max(4,.6*E)),i=I(e),a=e>=0?i:k,n=0===e?0:Math.max(2,Math.abs(i-k)),l=null!==g&&g!==t;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[styles.slot,{height:s}],children:[j>0&&n>0?(0,_jsxRuntime.jsx)(_reactNative.View,{testID:b?`${b}-bar-${t}`:void 0,style:{position:"absolute",left:(E-r)/2,top:a,width:r,height:n,backgroundColor:X,opacity:l?.4:1,..._corners.smoothCorners,...e>=0?{borderTopLeftRadius:z,borderTopRightRadius:z}:{borderBottomLeftRadius:z,borderBottomRightRadius:z}}}):null,C&&j>0?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"secondary",align:"center",numberOfLines:1,maxFontSizeMultiplier:1.2,style:{position:"absolute",left:0,right:0,top:e>=0?i-20+2:i+2},children:c(e)}):null]},t)});return 0===f?(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,accessible:!0,accessibilityRole:"image",accessibilityLabel:Y,testID:b,style:[styles.root,h],children:(0,_jsxRuntime.jsx)(_index4.Text,{variant:"bodySmall",color:"secondary",children:"No data"})}):(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,accessible:!0,accessibilityRole:"adjustable",accessibilityLabel:Y,accessibilityValue:{min:0,max:f-1,now:g??0,text:K},accessibilityActions:[{name:"increment"},{name:"decrement"}],onAccessibilityAction:P,testID:b,style:[styles.root,h],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.header,{minHeight:48,marginBottom:y.spacing.sm}],children:null===g?F?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"bodySmall",color:"secondary",children:F}):null:(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"secondary",numberOfLines:1,children:r[g].label}),(0,_jsxRuntime.jsx)(_index4.Text,{variant:"h3",numberOfLines:1,testID:b?`${b}-callout`:void 0,children:o(T[g])})]})}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.body,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:{width:D,height:s},children:A.ticks.map((e,t)=>(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"tertiary",align:"right",numberOfLines:1,maxFontSizeMultiplier:1.2,style:{position:"absolute",right:y.spacing.xs,left:0,top:I(e)-8},children:B[t]},e))}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.plotColumn,children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:W,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{height:s},onLayout:U,testID:b?`${b}-plot`:void 0,children:[A.ticks.map(e=>(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:{position:"absolute",left:0,right:0,top:I(e)-(0===e?.75:_reactNative.StyleSheet.hairlineWidth),height:0===e?1.5:2*_reactNative.StyleSheet.hairlineWidth,backgroundColor:0===e?y.colors.text.tertiary:y.colors.border.secondary}},e)),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.slots,{height:s}],children:Q})]})}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.axis,children:r.map((e,t)=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.axisSlot,children:t%O===0?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:g===t?"primary":"tertiary",weight:g===t?"semibold":void 0,align:"center",numberOfLines:1,maxFontSizeMultiplier:1.2,style:E>0?{width:E*O}:void 0,children:e.axisLabel??e.label}):null},t))})]})]})]})});BarChart.displayName="BarChart";const styles=_reactNative.StyleSheet.create({root:{alignSelf:"stretch"},header:{justifyContent:"center"},body:{flexDirection:"row"},plotColumn:{flex:1},slots:{flexDirection:"row"},slot:{flex:1},axis:{flexDirection:"row"},axisSlot:{flex:1,alignItems:"center",overflow:"visible"}});var _default=exports.default=BarChart;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.BarChart=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_index4=require("../Text/index.js"),_scale=require("./scale.js"),_jsxRuntime=require("react/jsx-runtime");const AUTO_VALUES_MAX_BARS=7,MAX_BAR_WIDTH=40,BAR_SHARE=.6,MIN_BAR_HEIGHT=2,VALUE_LABEL_ROOM=20,PLOT_PAD=6,HEADER_MIN_HEIGHT=48,AXIS_LABEL_MIN_WIDTH=44,CHAR_WIDTH=7,FONT_SCALE_CAP=1.2,toneColor=(e,t)=>"neutral"===t?e.colors.text.secondary:e.colors.toneText[t],safe=e=>Number.isFinite(e)?e:0,defaultFormatValue=e=>(0,_mobileCore.formatNumber)(e),defaultFormatTick=e=>(0,_mobileCore.formatCompactNumber)(e),BarChart=exports.BarChart=(0,_react.forwardRef)((e,t)=>{const{data:r,tone:i="primary",color:a,height:s=160,label:n,summary:l,formatValue:o=defaultFormatValue,formatTick:c=defaultFormatTick,showValues:u,selection:x,defaultSelection:d=null,onSelect:m,haptic:_,style:h,testID:b}=e,y=(0,_index2.useTheme)(),f=r.length,[j,p]=(0,_react.useState)(0),[v,R]=(0,_index.useControllableState)({value:x,defaultValue:d,onChange:m}),g=null!==v&&v>=0&&v<f?v:null,N=(0,_react.useRef)(g);N.current=g;const M=(0,_react.useRef)(-1),S=(0,_index3.resolveHaptic)(_,"tick"),w=(0,_react.useCallback)(()=>{S&&(0,_index3.triggerHaptic)(S)},[S]),C=u??(f>0&&f<=7),T=(0,_react.useMemo)(()=>r.map(e=>safe(e.value)),[r]),A=(0,_react.useMemo)(()=>(0,_scale.barScale)(T),[T]),V=C?20:6,L=C&&A.min<0?20:6,H=Math.max(1,s-V-L),I=(0,_react.useCallback)(e=>V+(A.max-e)/(A.max-A.min)*H,[V,A.max,A.min,H]),k=I(0),B=(0,_react.useMemo)(()=>A.ticks.map(e=>c(e)),[A.ticks,c]),D=Math.ceil(7*Math.max(...B.map(e=>e.length),1)*1.2),E=f>0?j/f:0,O=Math.max(1,Math.ceil(44/Math.max(1,E||44))),$=(0,_react.useCallback)(e=>{const t=r[e];return t.accessibilityLabel??`${t.label}, ${o(T[e])}`},[r,o,T]),q=(0,_react.useMemo)(()=>{let e=-1;return T.forEach((t,r)=>{(-1===e||t>T[e])&&(e=r)}),e},[T]),F=l??(q>=0?`Highest: ${r[q].label}, ${o(T[q])}`:""),G=(0,_react.useRef)({fire:w,setSelected:R,count:f,plotWidth:j});G.current={fire:w,setSelected:R,count:f,plotWidth:j};const W=(0,_react.useMemo)(()=>{const indexAt=e=>{const{count:t,plotWidth:r}=G.current;return 0===t||r<=0||!Number.isFinite(e)?-1:Math.min(t-1,Math.max(0,Math.floor(e/r*t)))},scrubTo=e=>{const t=indexAt(e);t<0||t===M.current||(M.current=t,G.current.fire(),G.current.setSelected(t))},e=_reactNativeGestureHandler.Gesture.Pan().runOnJS(!0).activeOffsetX([-8,8]).failOffsetY([-12,12]).onStart(e=>{M.current=N.current??-1,scrubTo(e.x)}).onUpdate(e=>scrubTo(e.x)).withTestId(b?`${b}-pan`:"bar-chart-pan"),t=_reactNativeGestureHandler.Gesture.Tap().runOnJS(!0).onEnd((e,t)=>{if(!t)return;const r=indexAt(e.x);r<0||(G.current.fire(),M.current=r,G.current.setSelected(r===N.current?null:r))}).withTestId(b?`${b}-tap`:"bar-chart-tap");return _reactNativeGestureHandler.Gesture.Race(e,t)},[b]),P=(0,_react.useCallback)(e=>{if(0===f)return;const t=N.current,r="increment"===e.nativeEvent.actionName?null===t?0:Math.min(f-1,t+1):null===t?f-1:Math.max(0,t-1);r!==t&&(w(),R(r))},[f,w,R]),U=(0,_react.useCallback)(e=>{const t=Math.round(e.nativeEvent.layout.width);p(e=>e===t?e:t)},[]),X=a??toneColor(y,i),z=y.radius.sm,J=n??"Bar chart",Y=0===f?`${J}, no data`:F?`${J}, ${F}`:J,K=null===g?F:$(g),Q=T.map((e,t)=>{const r=Math.min(40,Math.max(4,.6*E)),i=I(e),a=e>=0?i:k,n=0===e?0:Math.max(2,Math.abs(i-k)),l=null!==g&&g!==t;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[styles.slot,{height:s}],children:[j>0&&n>0?(0,_jsxRuntime.jsx)(_reactNative.View,{testID:b?`${b}-bar-${t}`:void 0,style:{position:"absolute",left:(E-r)/2,top:a,width:r,height:n,backgroundColor:X,opacity:l?.4:1,..._corners.smoothCorners,...e>=0?{borderTopLeftRadius:z,borderTopRightRadius:z}:{borderBottomLeftRadius:z,borderBottomRightRadius:z}}}):null,C&&j>0?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"secondary",align:"center",numberOfLines:1,maxFontSizeMultiplier:1.2,style:{position:"absolute",left:0,right:0,top:e>=0?i-20+2:i+2},children:c(e)}):null]},t)});return 0===f?(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,accessible:!0,accessibilityRole:"image",accessibilityLabel:Y,testID:b,style:[styles.root,h],children:(0,_jsxRuntime.jsx)(_index4.Text,{variant:"bodySmall",color:"secondary",children:"No data"})}):(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,accessible:!0,accessibilityRole:"adjustable",accessibilityLabel:Y,accessibilityValue:{min:0,max:f-1,now:g??0,text:K},accessibilityActions:[{name:"increment"},{name:"decrement"}],onAccessibilityAction:P,testID:b,style:[styles.root,h],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.header,{minHeight:48,marginBottom:y.spacing.sm}],children:null===g?F?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"bodySmall",color:"secondary",children:F}):null:(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"secondary",numberOfLines:1,children:r[g].label}),(0,_jsxRuntime.jsx)(_index4.Text,{variant:"h3",numberOfLines:1,testID:b?`${b}-callout`:void 0,children:o(T[g])})]})}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.body,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:{width:D,height:s},children:A.ticks.map((e,t)=>(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:"tertiary",align:"right",numberOfLines:1,maxFontSizeMultiplier:1.2,style:{position:"absolute",right:y.spacing.xs,left:0,top:I(e)-8},children:B[t]},e))}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.plotColumn,children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:W,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{height:s},onLayout:U,testID:b?`${b}-plot`:void 0,children:[A.ticks.map(e=>(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:{position:"absolute",left:0,right:0,top:I(e)-(0===e?.75:_reactNative.StyleSheet.hairlineWidth),height:0===e?1.5:2*_reactNative.StyleSheet.hairlineWidth,backgroundColor:0===e?y.colors.text.tertiary:y.colors.border.secondary}},e)),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.slots,{height:s}],children:Q})]})}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.axis,children:r.map((e,t)=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.axisSlot,children:t%O===0?(0,_jsxRuntime.jsx)(_index4.Text,{variant:"caption",color:g===t?"primary":"tertiary",weight:g===t?"semibold":void 0,align:"center",numberOfLines:1,maxFontSizeMultiplier:1.2,style:E>0?{width:E*O}:void 0,children:e.axisLabel??e.label}):null},t))})]})]})]})});BarChart.displayName="BarChart";const styles=_reactNative.StyleSheet.create({root:{alignSelf:"stretch"},header:{justifyContent:"center"},body:{flexDirection:"row"},plotColumn:{flex:1},slots:{flexDirection:"row"},slot:{flex:1},axis:{flexDirection:"row"},axisSlot:{flex:1,alignItems:"center",overflow:"visible"}});var _default=exports.default=BarChart;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.BottomNavigation=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_shadows=require("../../utils/shadows.js"),_index3=require("../AppIcon/index.js"),_useScreenReaderEnabled=require("./useScreenReaderEnabled.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var i=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var r,a,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(r=t?n:i){if(r.has(e))return r.get(e);r.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((a=(r=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?r(o,t,a):o[t]=e[t]);return o})(e,t)}const DEFAULT_ICON_SIZE=18,DEFAULT_LABEL_MAX_FONT_SCALE=1.2,ICON_WRAP_AIR=4,PILL_AIR=8,DEFAULT_PILL_MAX_WIDTH=64,TILE_MAX_WIDTH=96,DEFAULT_PILL_INSET=16,DEFAULT_UNDERLINE_HEIGHT=3,DEFAULT_FLOATING_MARGIN=16,DEFAULT_FLOATING_RADIUS=28,DEFAULT_BUBBLE_SIZE=48,DEFAULT_BUBBLE_LIFT=14,DEFAULT_CENTER_SIZE=48,DEFAULT_CENTER_ICON_SIZE=24,CENTER_KEY="__webority_center_action__",TAB_PADDING_VERTICAL=6,BAR_PADDING_HORIZONTAL=4,BAR_PADDING_TOP=6,BAR_PADDING_TOP_BUBBLE=8,FLOATING_BAR_PADDING_VERTICAL=6,FLOATING_BAR_PADDING_HORIZONTAL=8,EXPANDED_FLEX=1.5,SOLID_INACTIVE_OPACITY=.7,TILE_INSET=2,TILE_LABEL_GAP=2,formatBadge=e=>null==e||!1===e?null:!0===e||"·"===e?{text:"",isDot:!0}:"number"==typeof e?e<=0?null:{text:e>99?"99+":String(e),isDot:!1}:"string"==typeof e?0===e.length?null:{text:e,isDot:!1}:null,badgeAccessibilitySuffix=e=>null==e||!1===e?"":"number"==typeof e?e>0?`, ${e} unread`:"":!0===e||"·"===e?", new updates":"string"==typeof e&&e.length>0?`, ${e}`:"",BottomNavigation=exports.BottomNavigation=(0,_react.forwardRef)((e,t)=>{const{tabs:i,centerAction:n,activeTab:r,onChange:a,haptic:o="selection",showLabels:l=!0,variant:s="pill",indicatorPosition:c="bottom",radius:d,indicatorRadius:u="auto",elevation:_,iconSize:h,marginHorizontal:p,marginVertical:g,paddingHorizontal:m,paddingVertical:b,border:f,minimizeOnScroll:y=!1,scrollDirection:x="idle",accessory:R,style:v,indicatorStyle:N,labelStyle:A,labelMaxFontScale:I,testID:j}=e,E=(0,_index.useTheme)(),S=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),w=(0,_react.useMemo)(()=>buildStyles(E),[E]),L=E.components.bottomNavigation,T=h??L?.iconSize??18,D=L?.pillHeight??T+4+8,C=L?.pillMaxWidth??64,M=L?.pillInset??16,B=L?.floatingMargin??16,P=L?.floatingRadius??28,k=L?.bubbleSize??48,V=L?.bubbleLift??14,z=(0,_useReducedMotion.useReducedMotion)(),H=(0,_useScreenReaderEnabled.useScreenReaderEnabled)(y),[F,W]=_react.default.useState(null);(0,_react.useEffect)(()=>{null!==F&&F!==x&&W(null)},[F,x]);const O=y&&!H&&"down"===x&&null===F,[U,q]=_react.default.useState(O);(0,_react.useEffect)(()=>{U!==O&&(z||"web"===_reactNative.Platform.OS||_reactNative.LayoutAnimation.configureNext(_reactNative.LayoutAnimation.Presets.easeInEaseOut),q(O))},[U,O,z]);const G="function"==typeof R?R({minimized:U}):R,$=null!=G&&!1!==G,X=U&&$,[Z,Y]=_react.default.useState(0),K=$&&!X?Z+E.spacing.xs:0,J="tile"===s,Q="floating"===s||J,ee="bubble"===s,te="expand"===s,ie="solid"===s,ne="pill"===s||Q||ie,re=Math.max(0,i.findIndex(e=>e.key===r)),[ae,oe]=_react.default.useState(0),[le,se]=_react.default.useState(0),ce=n?Math.ceil(i.length/2):i.length,de=i.length+(n?1:0),[ue,he]=_react.default.useState({width:0,height:0}),pe=n?.size??48,ge=void 0!==n?.gap,me=Math.max(0,n?.gap??0),be=ge?(ue.width||pe)+2*me:0,fe=ge?i.length>0?Math.max(0,ae-be)/i.length:0:de>0?ae/de:0,ye=ge?be:fe,xe=(0,_react.useRef)((0,_index.createAnimatedValue)(re)).current,Re=(0,_react.useRef)({}),ve=(0,_react.useRef)({});i.forEach(e=>{Re.current[e.key]||(Re.current[e.key]=new _reactNative.Animated.Value(1)),ve.current[e.key]||(ve.current[e.key]=(0,_index.createAnimatedValue)(e.key===r?1:0))});const Ne=fe>0?J?Math.min(fe-4,96):Math.min(fe-M,C):0,Ae=fe>0?(fe-Ne)/2:0,Ie=fe>0?(fe-k)/2:0,hasLabel=e=>l&&!U&&!1!==e.showLabel&&e.label.trim().length>0,je=i[re],Ee=je&&!hasLabel(je)&&le>0?le/2:6+(T+4)/2,Se=Ee-V-k/2,we=Math.max(0,le-4),Le=J?2:Ee-D/2,Te=(0,_react.useRef)(re);(0,_react.useEffect)(()=>{if(Te.current===re)return;Te.current=re;const e=_reactNative.Animated.spring(xe,{toValue:re,tension:120,friction:14,useNativeDriver:!0});return e.start(),()=>e.stop()},[re,xe]);const De=Math.max(1,i.length-1),Ce=(0,_react.useMemo)(()=>{const e=[],t=[];for(let i=0;i<=De;i++)e.push(i),t.push(i<ce?i*fe:i*fe+ye);return xe.interpolate({inputRange:e,outputRange:t})},[xe,De,ce,fe,ye]),Me=i.map(e=>e.key).join(" "),Be=ee||te;(0,_react.useEffect)(()=>{const e=Me.split(" ").flatMap(e=>{const t=e===r?1:0,i=ve.current[e];return i?Be?[_reactNative.Animated.spring(i,{toValue:t,tension:140,friction:13,useNativeDriver:!1})]:(i.setValue(t),[]):[]});if(0===e.length)return;const t=_reactNative.Animated.parallel(e);return t.start(),()=>t.stop()},[r,Me,Be]);const popIcon=e=>{_reactNative.Animated.sequence([_reactNative.Animated.timing(e,{toValue:1.15,duration:120,useNativeDriver:!0}),_reactNative.Animated.spring(e,{toValue:1,tension:200,friction:8,useNativeDriver:!0})]).start()},Pe=(0,_react.useRef)(new _reactNative.Animated.Value(1)).current,{colors:ke}=E,Ve=ie?ke.primary:ke.background.elevated,ze=ie?ke.onPrimary:ke.primary,He=ie?ke.onPrimary:J?ke.text.primary:ke.text.tertiary,Fe=ie?ke.onPrimary:ke.primaryMuted,We=ie?ke.primary:ee?ke.onPrimary:ze,Oe=p??B,Ue=g??(Q?B:0),qe=Ue>0,Ge=b??(Q?6:ee?8:6),$e=m??(Q?8:4),Xe=qe?Ge:Math.max(Ge,S.bottom),Ze=qe?Math.max(Ue,S.bottom):0,Ye="full"===d,Ke=Q?le+K+2*Ge+2*_reactNative.StyleSheet.hairlineWidth:le+K+Ge+Xe,Je=Ye?le>0?Ke/2:E.radius.full:d??L?.borderRadius??(J?E.radius.full:Q?P:0),Qe=void 0!==d||void 0!==L?.borderRadius,activeBgRadius=(e,t)=>"number"==typeof u?Math.max(0,Math.min(u,e/2)):"auto"===u&&Qe?Math.min(Je,e/2):t,et="underline"===s?Math.max($e,Ye&&0===le?0:Je):$e,tt=_??"none",it=E.shadows[tt],nt="none"===tt?null:(0,_shadows.supportsBoxShadow)()?{boxShadow:(0,_shadows.toBoxShadow)(it)}:it,rt=f?_reactNative.StyleSheet.hairlineWidth:0,at=ie?ke.primary:ke.border.primary,ot=n?.lift??0,lt=Ge+rt+K,st=n&&le>0?Math.max(0,(ue.height||pe)/2+ot-le/2-lt):0,ct=n?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[w.centerCell,ge?{flex:0,marginHorizontal:me}:null],pointerEvents:"box-none",children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>{if(!n)return;const e=n.haptic??o;!1!==e&&(0,_index2.triggerHaptic)(e),popIcon(Pe),n.onPress()},onLayout:e=>{const{width:t,height:i}=e.nativeEvent.layout;he(e=>e.width===t&&e.height===i?e:{width:t,height:i})},accessibilityRole:"button",accessibilityLabel:n.label,hitSlop:{top:6,bottom:6,left:6,right:6},style:({pressed:e})=>[{top:-ot},e?{opacity:.85}:null],testID:n.testID??(j?`${j}-center`:void 0),children:n.content?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{transform:[{scale:Pe}]},children:n.content}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[w.centerCircle,{width:pe,height:pe,borderRadius:pe/2,..._corners.smoothCorners,backgroundColor:n.color??ke.primary}],children:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{transform:[{scale:Pe}]},children:(0,_index3.renderSlotIcon)(n.icon??"add",{color:n.iconColor??ke.onPrimary,size:n.iconSize??24,disabled:!1})})})})},CENTER_KEY):null,dt=$?(0,_jsxRuntime.jsx)(_reactNative.View,{style:X?w.accessoryInline:w.accessoryStacked,onLayout:e=>Y(e.nativeEvent.layout.height),testID:j?`${j}-accessory`:void 0,children:G}):null,ut=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:X?[w.tabRow,w.tabRowInline]:w.tabRow,onLayout:e=>{const{width:t,height:i}=e.nativeEvent.layout;oe(t),se(i)},children:[ne&&Ne>0&&(!J||we>0)?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[w.pill,{width:Ne,height:J?we:D,left:Ae,top:Le,backgroundColor:Fe,borderRadius:J?activeBgRadius(we,we/2):activeBgRadius(D,E.radius.full),..._corners.smoothCorners,transform:[{translateX:Ce}]},N]}):null,ee&&fe>0?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[w.bubble,E.shadows.md,{width:k,height:k,borderRadius:k/2,..._corners.smoothCorners,left:Ie,top:Se,backgroundColor:ke.primary,borderColor:ke.background.elevated,transform:[{translateX:Ce}]},N]}):null,(_t=i.map(e=>{const t=e.key===r,i=t?ze:He,n=t?We:He,l="string"==typeof e.icon?{name:e.icon,variant:"bold"}:e.icon,s=t?e.activeIcon??l:e.icon,c=Re.current[e.key],d=ve.current[e.key],u=formatBadge(e.badge??null),_=badgeAccessibilitySuffix(e.badge??null),h=ie&&!t?.7:1,p=ee&&t||ie?ke.primary:ke.background.elevated,g=hasLabel(e),m=g&&(!te||t),b=(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[w.iconWrap,{width:T+4,height:T+4,opacity:h,transform:[{scale:c}]}],children:[(0,_index3.renderSlotIcon)(s,{color:n,size:T,focused:t,disabled:!1}),u?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[u.isDot?w.badgeDot:w.badgePill,{backgroundColor:ke.error,borderColor:p}],children:u.isDot?null:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[w.badgeText,{color:ke.onError}],numberOfLines:1,children:u.text})}):null]}),f=ee?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{top:d.interpolate({inputRange:[0,1],outputRange:[0,-V]})},children:b}):b,y=m?(0,_jsxRuntime.jsx)(_reactNative.Animated.Text,{numberOfLines:1,maxFontSizeMultiplier:I??E.maxFontSizeMultiplier??1.2,style:[w.label,te?w.labelInline:null,{color:i,opacity:te?d:h,fontWeight:t?E.typography.fontWeight.semibold:E.typography.fontWeight.normal},A],children:e.label}):null,R=(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>(e=>{U&&W(x),e.key!==r&&!1!==o&&(0,_index2.triggerHaptic)(o);const t=Re.current[e.key];t&&popIcon(t),a(e.key)})(e),accessibilityRole:"tab",accessibilityState:{selected:t},"aria-selected":t,accessibilityLabel:`${e.label}${_}`,accessibilityHint:`Switches to ${e.label}`,hitSlop:{top:6,bottom:6,left:6,right:6},style:({pressed:e})=>[w.tab,J?w.tabTile:null,e?{opacity:.85}:null],testID:j?`${j}-tab-${e.key}`:void 0,children:te?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[w.expandPill,{height:D,paddingHorizontal:t&&g?E.spacing.md:Math.max(0,(D-(T+4))/2)}],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[w.expandFill,{borderRadius:activeBgRadius(D,D/2),..._corners.smoothCorners,backgroundColor:t?ke.primaryMuted:"transparent"},t?N:null]}),f,y]}):(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[f,y]})},e.key);return te?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{flex:d.interpolate({inputRange:[0,1],outputRange:[1,g?1.5:1]})},children:R},e.key):R}),ct?[..._t.slice(0,ce),ct,..._t.slice(ce)]:_t),"underline"===s&&fe>0?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[w.underline,"top"===c?w.underlineTop:w.underlineBottom,"top"===c?{top:-Ge-K}:{bottom:-Ge},{width:fe,height:L?.underlineHeight??3,backgroundColor:ke.primary,transform:[{translateX:Ce}]},N]}):null]});var _t;return(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,testID:j,accessibilityRole:"tablist",style:[w.outer,{paddingHorizontal:Oe,paddingTop:Math.max(Ue,st),paddingBottom:Ze},v],children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[Q?w.floatingBar:w.dockedBar,X?w.barInline:null,nt,{backgroundColor:Ve,borderColor:at,borderRadius:Je,..._corners.smoothCorners},Q?{borderWidth:rt,paddingHorizontal:$e,paddingVertical:Ge}:{borderTopWidth:rt,borderBottomWidth:rt,borderLeftWidth:rt,borderRightWidth:rt,paddingHorizontal:et,paddingTop:Ge,paddingBottom:Xe}],children:[dt,ut]})})});BottomNavigation.displayName="BottomNavigation";const buildStyles=e=>_reactNative.StyleSheet.create({outer:{backgroundColor:"transparent"},dockedBar:{paddingHorizontal:4},floatingBar:{paddingVertical:6,paddingHorizontal:8},tabRow:{flexDirection:"row",alignItems:"stretch",position:"relative"},tabRowInline:{flex:1},barInline:{flexDirection:"row",alignItems:"center"},accessoryStacked:{marginBottom:e.spacing.xs},accessoryInline:{flexShrink:0,marginRight:e.spacing.xs},tab:{flex:1,minHeight:44,alignItems:"center",justifyContent:"center",paddingVertical:6,gap:4},tabTile:{paddingVertical:8,gap:2},centerCell:{flex:1,minHeight:44,alignItems:"center",justifyContent:"center"},centerCircle:{alignItems:"center",justifyContent:"center"},iconWrap:{alignItems:"center",justifyContent:"center",position:"relative"},label:{fontSize:e.typography.fontSize.xs,lineHeight:e.typography.fontSize.xs*e.typography.lineHeight.tight,textAlign:"center",includeFontPadding:!1},labelInline:{fontSize:e.typography.fontSize.sm,lineHeight:e.typography.fontSize.sm*e.typography.lineHeight.tight,flexShrink:1,includeFontPadding:!1},expandPill:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:e.spacing.xs},expandFill:{position:"absolute",top:0,right:0,bottom:0,left:0,overflow:"hidden"},pill:{position:"absolute",left:0},bubble:{position:"absolute",left:0,borderWidth:3},underline:{position:"absolute",left:0,height:3},underlineBottom:{borderTopLeftRadius:2,borderTopRightRadius:2,..._corners.smoothCorners},underlineTop:{borderBottomLeftRadius:2,borderBottomRightRadius:2,..._corners.smoothCorners},badgePill:{position:"absolute",top:-4,right:-8,minWidth:18,height:18,borderRadius:9,..._corners.smoothCorners,paddingHorizontal:4,paddingVertical:2,alignItems:"center",justifyContent:"center",borderWidth:1.5},badgeDot:{position:"absolute",top:-2,right:-2,width:10,height:10,borderRadius:5,..._corners.smoothCorners,borderWidth:1.5},badgeText:{fontSize:10,fontWeight:"700",lineHeight:12,textAlign:"center",includeFontPadding:!1}});var _default=exports.default=BottomNavigation;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.BottomNavigation=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_shadows=require("../../utils/shadows.js"),_index3=require("../AppIcon/index.js"),_useScreenReaderEnabled=require("./useScreenReaderEnabled.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var i=new WeakMap,n=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var a,r,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(a=t?n:i){if(a.has(e))return a.get(e);a.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((r=(a=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(r.get||r.set)?a(o,t,r):o[t]=e[t]);return o})(e,t)}const DEFAULT_ICON_SIZE=18,DEFAULT_LABEL_MAX_FONT_SCALE=1.2,ICON_WRAP_AIR=4,PILL_AIR=8,DEFAULT_PILL_MAX_WIDTH=64,TILE_MAX_WIDTH=96,DEFAULT_UNDERLINE_HEIGHT=3,DEFAULT_BUBBLE_SIZE=48,DEFAULT_BUBBLE_LIFT=14,DEFAULT_CENTER_SIZE=48,DEFAULT_CENTER_ICON_SIZE=24,CENTER_KEY="__webority_center_action__",EXPANDED_FLEX=1.5,SOLID_INACTIVE_OPACITY=.7,TILE_INSET=2,formatBadge=e=>null==e||!1===e?null:!0===e||"·"===e?{text:"",isDot:!0}:"number"==typeof e?e<=0?null:{text:e>99?"99+":String(e),isDot:!1}:"string"==typeof e?0===e.length?null:{text:e,isDot:!1}:null,badgeAccessibilitySuffix=e=>null==e||!1===e?"":"number"==typeof e?e>0?`, ${e} unread`:"":!0===e||"·"===e?", new updates":"string"==typeof e&&e.length>0?`, ${e}`:"",BottomNavigation=exports.BottomNavigation=(0,_react.forwardRef)((e,t)=>{const{tabs:i,centerAction:n,activeTab:a,onChange:r,haptic:o="selection",showLabels:s=!0,variant:l="pill",indicatorPosition:c="bottom",radius:d,indicatorRadius:u="auto",elevation:p,iconSize:g,marginHorizontal:m,marginVertical:h,paddingHorizontal:_,paddingVertical:b,border:x,minimizeOnScroll:f=!1,scrollDirection:y="idle",accessory:v,style:R,indicatorStyle:N,labelStyle:j,labelMaxFontScale:S,testID:w}=e,E=(0,_index.useTheme)(),I=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),A=(0,_react.useMemo)(()=>buildStyles(E),[E]),C=E.components.bottomNavigation,M=g??C?.iconSize??18,L=C?.pillHeight??M+4+8,k=C?.pillMaxWidth??64,T=(0,_index.spaceOf)(E,C?.pillInset??"lg","components.bottomNavigation.pillInset"),D=(0,_index.spaceOf)(E,C?.floatingMargin??"lg","components.bottomNavigation.floatingMargin"),V=(0,_index.radiusOf)(E,C?.floatingRadius??"xl","components.bottomNavigation.floatingRadius"),z=C?.bubbleSize??48,B=C?.bubbleLift??14,P=(0,_useReducedMotion.useReducedMotion)(),W=(0,_useScreenReaderEnabled.useScreenReaderEnabled)(f),[H,F]=_react.default.useState(null);(0,_react.useEffect)(()=>{null!==H&&H!==y&&F(null)},[H,y]);const O=f&&!W&&"down"===y&&null===H,[q,U]=_react.default.useState(O);(0,_react.useEffect)(()=>{q!==O&&(P||"web"===_reactNative.Platform.OS||_reactNative.LayoutAnimation.configureNext(_reactNative.LayoutAnimation.Presets.easeInEaseOut),U(O))},[q,O,P]);const $="function"==typeof v?v({minimized:q}):v,X=null!=$&&!1!==$,Z=q&&X,[Y,K]=_react.default.useState(0),G=X&&!Z?Y+E.spacing.xs:0,J="tile"===l,Q="floating"===l||J,ee="bubble"===l,te="expand"===l,ie="solid"===l,ne="pill"===l||Q||ie,ae=Math.max(0,i.findIndex(e=>e.key===a)),[re,oe]=_react.default.useState(0),[se,le]=_react.default.useState(0),ce=n?Math.ceil(i.length/2):i.length,de=i.length+(n?1:0),[ue,pe]=_react.default.useState({width:0,height:0}),ge=n?.size??48,me=void 0!==n?.gap,he=Math.max(0,n?.gap??0),be=me?(ue.width||ge)+2*he:0,xe=me?i.length>0?Math.max(0,re-be)/i.length:0:de>0?re/de:0,fe=me?be:xe,ye=(0,_react.useRef)((0,_index.createAnimatedValue)(ae)).current,ve=(0,_react.useRef)({}),Re=(0,_react.useRef)({});i.forEach(e=>{ve.current[e.key]||(ve.current[e.key]=new _reactNative.Animated.Value(1)),Re.current[e.key]||(Re.current[e.key]=(0,_index.createAnimatedValue)(e.key===a?1:0))});const Ne=xe>0?J?Math.min(xe-4,96):Math.min(xe-T,k):0,je=xe>0?(xe-Ne)/2:0,Se=xe>0?(xe-z)/2:0,hasLabel=e=>s&&!q&&!1!==e.showLabel&&e.label.trim().length>0,we=i[ae],Ee=we&&!hasLabel(we)&&se>0?se/2:E.spacing.xs+(M+4)/2,Ie=Ee-B-z/2,Ae=Math.max(0,se-4),Ce=J?2:Ee-L/2,Me=(0,_react.useRef)(ae);(0,_react.useEffect)(()=>{if(Me.current===ae)return;Me.current=ae;const e=_reactNative.Animated.spring(ye,{toValue:ae,tension:120,friction:14,useNativeDriver:!0});return e.start(),()=>e.stop()},[ae,ye]);const Le=Math.max(1,i.length-1),ke=(0,_react.useMemo)(()=>{const e=[],t=[];for(let i=0;i<=Le;i++)e.push(i),t.push(i<ce?i*xe:i*xe+fe);return ye.interpolate({inputRange:e,outputRange:t})},[ye,Le,ce,xe,fe]),Te=i.map(e=>e.key).join(" "),De=ee||te;(0,_react.useEffect)(()=>{const e=Te.split(" ").flatMap(e=>{const t=e===a?1:0,i=Re.current[e];return i?De?[_reactNative.Animated.spring(i,{toValue:t,tension:140,friction:13,useNativeDriver:!1})]:(i.setValue(t),[]):[]});if(0===e.length)return;const t=_reactNative.Animated.parallel(e);return t.start(),()=>t.stop()},[a,Te,De]);const popIcon=e=>{_reactNative.Animated.sequence([_reactNative.Animated.timing(e,{toValue:1.15,duration:120,useNativeDriver:!0}),_reactNative.Animated.spring(e,{toValue:1,tension:200,friction:8,useNativeDriver:!0})]).start()},Ve=(0,_react.useRef)(new _reactNative.Animated.Value(1)).current,{colors:ze}=E,Be=ie?ze.primary:ze.background.elevated,Pe=ie?ze.onPrimary:ze.primary,We=ie?ze.onPrimary:J?ze.text.primary:ze.text.tertiary,He=ie?ze.onPrimary:ze.primaryMuted,Fe=ie?ze.primary:ee?ze.onPrimary:Pe,Oe=m??D,qe=h??(Q?D:0),Ue=qe>0,$e=b??E.spacing.sm,Xe=_??(Q?E.spacing.sm:E.spacing.xs),Ze=Ue?$e:Math.max($e,I.bottom),Ye=Ue?Math.max(qe,I.bottom>0?I.bottom+E.spacing.sm:0):0,Ke="pill"===d,Ge=Q?se+G+2*$e+2*_reactNative.StyleSheet.hairlineWidth:se+G+$e+Ze,Je=void 0===C?.radius?void 0:(0,_index.radiusOf)(E,C.radius,"components.bottomNavigation.radius"),Qe=Ke?se>0?Ge/2:E.radius.pill:d??Je??(J?E.radius.pill:Q?V:E.radius.none),et=void 0!==d||void 0!==C?.radius,activeBgRadius=(e,t)=>"number"==typeof u?Math.max(0,Math.min(u,e/2)):"auto"===u&&et?Math.min(Qe,e/2):t,tt="underline"===l?Math.max(Xe,Ke&&0===se?0:Qe):Xe,it=p??"none",nt=E.shadows[it],at="none"===it?null:(0,_shadows.supportsBoxShadow)()?{boxShadow:(0,_shadows.toBoxShadow)(nt)}:nt,rt=x?_reactNative.StyleSheet.hairlineWidth:0,ot=ie?ze.primary:ze.border.primary,st=n?.lift??0,lt=$e+rt+G,ct=n&&se>0?Math.max(0,(ue.height||ge)/2+st-se/2-lt):0,dt=n?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[A.centerCell,me?{flex:0,marginHorizontal:he}:null],pointerEvents:"box-none",children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>{if(!n)return;const e=n.haptic??o;!1!==e&&(0,_index2.triggerHaptic)(e),popIcon(Ve),n.onPress()},onLayout:e=>{const{width:t,height:i}=e.nativeEvent.layout;pe(e=>e.width===t&&e.height===i?e:{width:t,height:i})},accessibilityRole:"button",accessibilityLabel:n.label,hitSlop:{top:6,bottom:6,left:6,right:6},style:({pressed:e})=>[{top:-st},e?{opacity:.85}:null],testID:n.testID??(w?`${w}-center`:void 0),children:n.content?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{transform:[{scale:Ve}]},children:n.content}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[A.centerCircle,{width:ge,height:ge,borderRadius:E.radius.pill,..._corners.smoothCorners,backgroundColor:n.color??ze.primary}],children:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{transform:[{scale:Ve}]},children:(0,_index3.renderSlotIcon)(n.icon??"add",{color:n.iconColor??ze.onPrimary,size:n.iconSize??24,disabled:!1})})})})},CENTER_KEY):null,ut=X?(0,_jsxRuntime.jsx)(_reactNative.View,{style:Z?A.accessoryInline:A.accessoryStacked,onLayout:e=>K(e.nativeEvent.layout.height),testID:w?`${w}-accessory`:void 0,children:$}):null,pt=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:Z?[A.tabRow,A.tabRowInline]:A.tabRow,onLayout:e=>{const{width:t,height:i}=e.nativeEvent.layout;oe(t),le(i)},children:[ne&&Ne>0&&(!J||Ae>0)?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[A.pill,{width:Ne,height:J?Ae:L,left:je,top:Ce,backgroundColor:He,borderRadius:J?activeBgRadius(Ae,Ae/2):activeBgRadius(L,E.radius.pill),..._corners.smoothCorners,transform:[{translateX:ke}]},N]}):null,ee&&xe>0?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[A.bubble,E.shadows.md,{width:z,height:z,borderRadius:E.radius.pill,..._corners.smoothCorners,left:Se,top:Ie,backgroundColor:ze.primary,borderColor:ze.background.elevated,transform:[{translateX:ke}]},N]}):null,(gt=i.map(e=>{const t=e.key===a,i=t?Pe:We,n=t?Fe:We,s="string"==typeof e.icon?{name:e.icon,variant:"bold"}:e.icon,l=t?e.activeIcon??s:e.icon,c=ve.current[e.key],d=Re.current[e.key],u=formatBadge(e.badge??null),p=badgeAccessibilitySuffix(e.badge??null),g=ie&&!t?.7:1,m=ee&&t||ie?ze.primary:ze.background.elevated,h=hasLabel(e),_=h&&(!te||t),b=(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[A.iconWrap,{width:M+4,height:M+4,opacity:g,transform:[{scale:c}]}],children:[(0,_index3.renderSlotIcon)(l,{color:n,size:M,focused:t,disabled:!1}),u?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[u.isDot?A.badgeDot:A.badgePill,{backgroundColor:ze.error,borderColor:m}],children:u.isDot?null:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[A.badgeText,{color:ze.onError}],numberOfLines:1,children:u.text})}):null]}),x=ee?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{top:d.interpolate({inputRange:[0,1],outputRange:[0,-B]})},children:b}):b,f=_?(0,_jsxRuntime.jsx)(_reactNative.Animated.Text,{numberOfLines:1,maxFontSizeMultiplier:S??E.maxFontSizeMultiplier??1.2,style:[A.label,te?A.labelInline:null,{color:i,opacity:te?d:g,fontWeight:t?E.typography.fontWeight.semibold:E.typography.fontWeight.normal},j],children:e.label}):null,v=(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>(e=>{q&&F(y),e.key!==a&&!1!==o&&(0,_index2.triggerHaptic)(o);const t=ve.current[e.key];t&&popIcon(t),r(e.key)})(e),accessibilityRole:"tab",accessibilityState:{selected:t},"aria-selected":t,accessibilityLabel:`${e.label}${p}`,accessibilityHint:`Switches to ${e.label}`,hitSlop:{top:6,bottom:6,left:6,right:6},style:({pressed:e})=>[A.tab,J?A.tabTile:null,e?{opacity:.85}:null],testID:w?`${w}-tab-${e.key}`:void 0,children:te?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[A.expandPill,{height:L,paddingHorizontal:t&&h?E.spacing.md:Math.max(0,(L-(M+4))/2)}],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[A.expandFill,{borderRadius:activeBgRadius(L,L/2),..._corners.smoothCorners,backgroundColor:t?ze.primaryMuted:"transparent"},t?N:null]}),x,f]}):(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[x,f]})},e.key);return te?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{flex:d.interpolate({inputRange:[0,1],outputRange:[1,h?1.5:1]})},children:v},e.key):v}),dt?[...gt.slice(0,ce),dt,...gt.slice(ce)]:gt),"underline"===l&&xe>0?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[A.underline,"top"===c?A.underlineTop:A.underlineBottom,"top"===c?{top:-$e-G}:{bottom:-$e},{width:xe,height:C?.underlineHeight??3,backgroundColor:ze.primary,transform:[{translateX:ke}]},N]}):null]});var gt;return(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,testID:w,accessibilityRole:"tablist",style:[A.outer,{paddingHorizontal:Oe,paddingTop:Math.max(qe,ct),paddingBottom:Ye},R],children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[Q?A.floatingBar:A.dockedBar,Z?A.barInline:null,at,{backgroundColor:Be,borderColor:ot,borderRadius:Qe,..._corners.smoothCorners},Q?{borderWidth:rt,paddingHorizontal:Xe,paddingVertical:$e}:{borderTopWidth:rt,borderBottomWidth:rt,borderLeftWidth:rt,borderRightWidth:rt,paddingHorizontal:tt,paddingTop:$e,paddingBottom:Ze}],children:[ut,pt]})})});BottomNavigation.displayName="BottomNavigation";const buildStyles=e=>_reactNative.StyleSheet.create({outer:{backgroundColor:"transparent"},dockedBar:{paddingHorizontal:e.spacing.xs},floatingBar:{paddingVertical:e.spacing.sm,paddingHorizontal:e.spacing.sm},tabRow:{flexDirection:"row",alignItems:"stretch",position:"relative"},tabRowInline:{flex:1},barInline:{flexDirection:"row",alignItems:"center"},accessoryStacked:{marginBottom:e.spacing.xs},accessoryInline:{flexShrink:0,marginRight:e.spacing.xs},tab:{flex:1,minHeight:44,alignItems:"center",justifyContent:"center",paddingVertical:e.spacing.xs,gap:e.spacing.xs},tabTile:{paddingVertical:e.spacing.sm,gap:e.spacing.xxs},centerCell:{flex:1,minHeight:44,alignItems:"center",justifyContent:"center"},centerCircle:{alignItems:"center",justifyContent:"center"},iconWrap:{alignItems:"center",justifyContent:"center",position:"relative"},label:{fontSize:e.typography.fontSize.xs,lineHeight:e.typography.fontSize.xs*e.typography.lineHeight.tight,textAlign:"center",includeFontPadding:!1},labelInline:{fontSize:e.typography.fontSize.sm,lineHeight:e.typography.fontSize.sm*e.typography.lineHeight.tight,flexShrink:1,includeFontPadding:!1},expandPill:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:e.spacing.xs},expandFill:{position:"absolute",top:0,right:0,bottom:0,left:0,overflow:"hidden"},pill:{position:"absolute",left:0},bubble:{position:"absolute",left:0,borderWidth:3},underline:{position:"absolute",left:0,height:3},underlineBottom:{borderTopLeftRadius:e.radius.none,borderTopRightRadius:e.radius.none,..._corners.smoothCorners},underlineTop:{borderBottomLeftRadius:e.radius.none,borderBottomRightRadius:e.radius.none,..._corners.smoothCorners},badgePill:{position:"absolute",top:-4,right:-8,minWidth:18,height:18,borderRadius:e.radius.pill,..._corners.smoothCorners,paddingHorizontal:e.spacing.xs,paddingVertical:e.spacing.xxs,alignItems:"center",justifyContent:"center",borderWidth:1.5},badgeDot:{position:"absolute",top:-2,right:-2,width:10,height:10,borderRadius:e.radius.pill,..._corners.smoothCorners,borderWidth:1.5},badgeText:{fontSize:e.typography.fontSize.xs,fontWeight:"700",lineHeight:13,textAlign:"center",includeFontPadding:!1}});var _default=exports.default=BottomNavigation;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useBottomSheet=exports.default=exports.BottomSheet=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated")),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_ModalSafeArea=require("../ModalSafeArea/ModalSafeArea.js"),_ToastProvider=require("../Toast/ToastProvider.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 n,o,i={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return i;if(n=t?r:a){if(n.has(e))return n.get(e);n.set(e,i)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((o=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(o.get||o.set)?n(i,t,o):i[t]=e[t]);return i})(e,t)}const TABLET_MIN_SHORT_SIDE=600,DIALOG_MAX_WIDTH=560,BottomSheetContext=(0,_react.createContext)(null),useBottomSheet=()=>{const e=(0,_react.useContext)(BottomSheetContext);if(!e)throw new Error("useBottomSheet must be used inside a <BottomSheet>.");return e};exports.useBottomSheet=useBottomSheet;const SPRING_CONFIG={damping:20,stiffness:240,mass:1},CLOSE_VELOCITY_THRESHOLD=1e3,DRAG_ACTIVATION_OFFSET=10,BottomSheet=exports.BottomSheet=(0,_react.forwardRef)((e,t)=>{const{snapPoints:a,index:r,onChange:n,onAnimate:o,onAfterClose:i,enablePanDownToClose:s=!0,enableBackdropPress:c=!0,confirmDismiss:l,scrollable:u=!1,scrollRef:d,onScroll:_,onContentSizeChange:h,onScrollLayout:m,scrollEventThrottle:v,keyboardBehavior:f="shift",mode:b="modal",presentation:p="sheet",handleIndicatorStyle:S,containerStyle:R,header:g,footer:x,headerStyle:y,footerStyle:N,children:w,accessibilityLabel:C,accessibilityViewIsModal:j,testID:M}=e,k=(0,_index.useTheme)(),I=(0,_usePresenceMotion.usePresenceMotion)(),O=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),[T,P]=(0,_react.useState)(()=>_reactNative.Dimensions.get("window").height),[E,A]=(0,_react.useState)(()=>_reactNative.Dimensions.get("window").width),H=(0,_react.useCallback)(e=>{const{height:t,width:a}=e.nativeEvent.layout;t>0&&P(e=>e===t?e:t),a>0&&A(e=>e===a?e:a)},[]),B=(0,_reactNative.useWindowDimensions)(),D="dialog"===p||"auto"===p&&Math.min(B.width,B.height)>=600,G=Math.min(560,E-2*k.spacing.xl),[V,q]=(0,_ModalSafeArea.useModalInsets)(),L="modal"===b?V.top:O.top,F="modal"===b?V.bottom:O.bottom,W=a.includes("content"),[J,z]=useMeasuredHeight(),[Y,$]=useMeasuredHeight(),[K,U,X]=useMeasuredHeight(),[Q,Z]=useMeasuredHeight(),ee=D?k.spacing.md:J,te=W?Math.min(ee+(null!=g?Y:0)+K+(null!=x?Q:0)+F,T-L):0,ae=(0,_react.useCallback)((e,t)=>{W&&X(t),h?.(e,t)},[W,h,X]),re=(0,_react.useMemo)(()=>resolveSnapPoints(a,T,te),[a,T,te]),ne=T,oe=re[re.length-1]??0,ie=(0,_reactNativeReanimated.useSharedValue)(ne),se=(0,_reactNativeReanimated.useSharedValue)(ne),ce=(0,_reactNativeReanimated.useSharedValue)(1),le=(0,_reactNativeReanimated.useSharedValue)(-1),[ue,de]=(0,_react.useState)(-1),he=(0,_react.useRef)(!1),[me,ve]=(0,_react.useState)(!1),[fe,be]=(0,_react.useState)(!1),pe=(0,_react.useRef)(!1),Se=(0,_react.useRef)(i);Se.current=i;const[Re,ge]=(0,_react.useState)(!1),xe=(0,_react.useRef)(-1),ye=(0,_react.useRef)(!1);ye.current="modal"===b?fe:Re;const Ne=(0,_react.useRef)(l);Ne.current=l;const we=(0,_react.useRef)(!1),Ce=(0,_react.useRef)(!0),je=(0,_react.useRef)([]),Me=(0,_react.useCallback)(e=>{const t=je.current;je.current=[];for(const a of t)a(e)},[]);(0,_react.useEffect)(()=>(Ce.current=!0,()=>{Ce.current=!1,Me(!1)}),[Me]);const ke=(0,_react.useCallback)(e=>{if(e<0||e>=re.length)return ne;const t=re[e];return D?(T-t)/2:T-t},[re,T,ne,D]),Ie=(0,_react.useCallback)(e=>{xe.current=e;ue!==e&&(de(e),le.value=e,n?.(e))},[ue,le,n]),Oe=(0,_react.useCallback)(()=>{he.current=!1,le.value<0&&(pe.current=!0,"modal"===b?(ve(!1),"ios"!==_reactNative.Platform.OS&&be(!1)):ge(!1))},[b,le]),Te=(0,_react.useCallback)(()=>{pe.current&&be(!1)},[]);(0,_react.useEffect)(()=>{("modal"===b?!fe:!Re)&&pe.current&&(pe.current=!1,Se.current?.(),Me(!0))},[b,fe,Re,Me]);const Pe=(0,_react.useCallback)((e,t,a)=>{he.current=!0,o?.(t,a),ie.value=(0,_reactNativeReanimated.withSpring)(e,SPRING_CONFIG,e=>{"worklet";e&&(0,_reactNativeReanimated.runOnJS)(Oe)()})},[o,ie,Oe]),Ee=(0,_react.useCallback)(e=>{const t="number"==typeof e?clamp(e,0,re.length-1):ue>=0?ue:0,a=le.value,r=ke(t);if(pe.current=!1,Me(!1),"modal"===b?(be(!0),ve(!0)):ge(!0),a<0&&I.reduced)return ie.value=r,ce.value=0,ce.value=(0,_reactNativeReanimated.withTiming)(1,{duration:I.duration("fast"),easing:_reactNativeReanimated.Easing.bezier(...k.motion.easing.decelerate),reduceMotion:_usePresenceMotion.PRESENCE_REDUCE_MOTION}),Ie(t),void o?.(a,t);a<0&&(ie.value=ne,ce.value=1),Ie(t),Pe(r,a,t)},[Pe,ne,ue,le,b,o,I,ce,re.length,Ie,Me,k.motion.easing.decelerate,ie,ke]),Ae=(0,_react.useCallback)(()=>{if(0===re.length)return;const e=le.value,t=ke(0);Ie(0),Pe(t,e,0)},[Pe,le,re.length,Ie,ke]),He=(0,_react.useCallback)(()=>new Promise(e=>{if(xe.current<0)return void(ye.current?je.current.push(e):e(!0));je.current.push(e);const t=le.value;Ie(-1),he.current=!0,o?.(t,-1);const a=I.reduced?ce:ie,r=I.reduced?0:ne;a.value=(0,_reactNativeReanimated.withTiming)(r,{duration:I.duration("fast"),easing:_reactNativeReanimated.Easing.bezier(...k.motion.easing.accelerate),reduceMotion:_usePresenceMotion.PRESENCE_REDUCE_MOTION},e=>{"worklet";e&&(0,_reactNativeReanimated.runOnJS)(Oe)()})}),[ne,le,Oe,o,I,ce,Ie,ie,k.motion.easing.accelerate]),Be=(0,_react.useCallback)(async()=>{await He()},[He]),De=(0,_react.useCallback)((e,t,a)=>{const r=Ne.current;if(!r)return void e();if(we.current)return void t?.();const n=r();"boolean"!=typeof n?(we.current=!0,a?.(),n.then(a=>{we.current=!1,a&&Ce.current&&xe.current>=0?e():t?.()},e=>{throw we.current=!1,e})):(n?e:t)?.()},[]),Ge=(0,_react.useCallback)(()=>new Promise(e=>{xe.current<0?He().then(e):De(()=>{He().then(e)},()=>e(!1))}),[He,De]),Ve=(0,_react.useCallback)(()=>{c&&Ge()},[c,Ge]);(0,_react.useImperativeHandle)(t,()=>({expand:Ee,collapse:Ae,close:Be,requestClose:Ge}),[Ee,Ae,Be,Ge]),(0,_react.useEffect)(()=>{"number"==typeof r&&r!==ue&&(-1===r?Be():Ee(r))},[r]);const qe=(0,_react.useRef)({hostHeight:T,contentSnap:te});(0,_react.useEffect)(()=>{const e=qe.current;e.hostHeight===T&&e.contentSnap===te||(qe.current={hostHeight:T,contentSnap:te},e.hostHeight===T&&le.value<0||(ie.value=(0,_reactNativeReanimated.withSpring)(ke(le.value),SPRING_CONFIG)))},[T,te]);const Le=T-oe,Fe=(0,_react.useMemo)(()=>re.map(e=>T-e),[re,T]),We=(0,_react.useCallback)(()=>{const e=xe.current;e<0||Pe(ke(e),e,e)},[Pe,ke]),Je=(0,_react.useCallback)((e,t)=>{const a=le.value;-1!==e?(Ie(e),Pe(t,a,e)):De(()=>{(0,_index2.triggerHaptic)("selection"),Be()},We,We)},[Pe,Be,le,De,Ie,We]),ze=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Native().withTestId(M?`${M}-content-gesture`:"bottom-sheet-content-gesture"),[M]),Ye=(0,_react.useMemo)(()=>{const e=Fe,t=ne,a=Le,r=s;return _reactNativeGestureHandler.Gesture.Pan().withTestId(M?`${M}-pan-gesture`:"bottom-sheet-pan-gesture").activeOffsetY([-10,10]).failOffsetX([-15,15]).onStart(()=>{"worklet";se.value=ie.value}).onUpdate(e=>{"worklet";const t=se.value+e.translationY;ie.value=t<a?a+.25*(t-a):t}).onEnd(a=>{"worklet";const n=ie.value;if(a.velocityY>1e3)return r?void(0,_reactNativeReanimated.runOnJS)(Je)(-1,t):void(0,_reactNativeReanimated.runOnJS)(Je)(0,e[0]);let o=0,i=Math.abs(n-e[0]);for(let t=1;t<e.length;t++){const a=Math.abs(n-e[t]);a<i&&(i=a,o=t)}const s=e[0];r&&n-s>80?(0,_reactNativeReanimated.runOnJS)(Je)(-1,t):(0,_reactNativeReanimated.runOnJS)(Je)(o,e[o])})},[ne,se,s,Je,Le,Fe,M,ie]),{height:$e}=(0,_reactNativeKeyboardController.useReanimatedKeyboardAnimation)(),Ke="shift"===f,Ue=(0,_reactNativeReanimated.useDerivedValue)(()=>Ke?$e.value:0),Xe=re[ue>=0?ue:0]??oe,Qe=k.spacing.md,Ze=(0,_reactNativeReanimated.useAnimatedStyle)(()=>{if(D){const e=Ue.value,t=T+e-Xe-Qe,a=e<0&&ie.value>t?t:ie.value;return{top:a<L?L:a,opacity:ce.value}}const e=ie.value+Ue.value,t=Ue.value<0?L:Le;return{top:e<t?t:e,opacity:ce.value}}),et=(0,_reactNativeReanimated.useAnimatedStyle)(()=>{const e=Ue.value;if(D){const t=T+e-Xe-Qe,a=e<0&&ie.value>t?t:ie.value,r=T+e-Qe-(a<L?L:a);return{height:r<0?0:r>Xe?Xe:r}}const t=e<0?L:Le,a=ie.value+e,r=T+e-(a<t?t:a);return{height:r<0?0:r>oe?oe:r}}),tt=ue>=0,at=(0,_react.useMemo)(()=>buildStyles(k),[k]),rt=(0,_react.useCallback)(()=>{c&&De(()=>{(0,_index2.triggerHaptic)("selection"),Be()})},[c,Be,De]),nt=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Tap().withTestId(M?`${M}-backdrop-gesture`:"bottom-sheet-backdrop-gesture").maxDuration(250).onEnd((_e,e)=>{"worklet";e&&(0,_reactNativeReanimated.runOnJS)(rt)()}),[rt,M]),ot=(0,_react.useMemo)(()=>({snapIndex:ue,snapPoints:re,expand:Ee,collapse:Ae,close:Be,requestClose:Ge}),[ue,re,Ee,Ae,Be,Ge]);if("inline"===b&&!Re)return null;if("modal"===b&&!fe)return null;const it=(0,_jsxRuntime.jsxs)(_reactNative.View,{collapsable:!1,style:["modal"===b?at.backdropModal:at.backdropInline,{backgroundColor:k.colors.background.overlay}],onLayout:H,testID:M,accessibilityViewIsModal:j??tt,children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:nt,children:(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:_reactNative.StyleSheet.absoluteFill,accessibilityRole:"button",accessibilityLabel:"Close bottom sheet"})}),(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{accessibilityRole:"alert",accessibilityLabel:C,accessibilityViewIsModal:j??tt,accessibilityActions:[{name:"escape",label:"Close bottom sheet"}],onAccessibilityAction:e=>{"escape"===e.nativeEvent.actionName&&Ve()},onAccessibilityEscape:Ve,style:[at.sheet,{height:oe,backgroundColor:k.colors.background.elevated,borderTopLeftRadius:k.radius["2xl"],borderTopRightRadius:k.radius["2xl"],..._corners.smoothCorners,...k.shadows.xl},D?{height:Xe,left:(E-G)/2,right:void 0,width:G,borderBottomLeftRadius:k.radius["2xl"],borderBottomRightRadius:k.radius["2xl"]}:null,R,Ze],children:(0,_jsxRuntime.jsxs)(SheetBody,{style:[at.body,et],keyboardOffset:Ue,children:[D?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{height:k.spacing.md}}):(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:Ye,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:at.handleRow,onLayout:W?z:void 0,accessible:!0,accessibilityLabel:"Drag handle",accessibilityHint:"Drag up or down to resize the sheet, or swipe down to close it",testID:M?`${M}-handle`:"bottom-sheet-handle",children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[at.handle,{backgroundColor:k.components.bottomSheet?.handleColor??k.colors.border.primary},S]})})}),null!=g&&(0,_jsxRuntime.jsx)(_reactNative.View,{style:[at.header,y],onLayout:W?$:void 0,children:g}),u?(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:ze,children:(0,_jsxRuntime.jsx)(_reactNative.ScrollView,{ref:d,style:at.scrollContent,onScroll:_,onContentSizeChange:ae,onLayout:m,scrollEventThrottle:v,keyboardShouldPersistTaps:"always",keyboardDismissMode:"none",children:w})}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:W?[at.content,{overflow:"visible"}]:at.content,children:W?(0,_jsxRuntime.jsx)(_reactNative.View,{onLayout:U,children:w}):w}),null!=x&&(0,_jsxRuntime.jsx)(_reactNative.View,{style:[at.footer,N],onLayout:W?Z:void 0,children:x})]})})]}),st=(0,_jsxRuntime.jsx)(BottomSheetContext.Provider,{value:ot,children:it});return"modal"===b?(0,_jsxRuntime.jsx)(_reactNative.Modal,{transparent:!0,visible:me,onRequestClose:Ve,onDismiss:"ios"===_reactNative.Platform.OS?Te:void 0,statusBarTranslucent:!0,navigationBarTranslucent:!0,animationType:"none",supportedOrientations:["portrait","landscape"],children:(0,_jsxRuntime.jsxs)(_ModalSafeArea.ModalSafeArea,{onInsets:q,children:["android"===_reactNative.Platform.OS?(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureHandlerRootView,{style:at.modalRoot,children:st}):st,(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})}):st}),SheetBody=({style:e,keyboardOffset:t,children:a})=>{const r=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)().bottom,n=(0,_reactNativeReanimated.useAnimatedStyle)(()=>{const e=r+t.value;return{paddingBottom:e>0?e:0}});return(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[e,n],children:a})};BottomSheet.displayName="BottomSheet";const useMeasuredHeight=()=>{const[e,t]=(0,_react.useState)(0),a=(0,_react.useCallback)(e=>{t(t=>t===e?t:e)},[]);return[e,(0,_react.useCallback)(e=>a(e.nativeEvent.layout.height),[a]),a]},resolveSnapPoints=(e,t,a)=>[...e.map(e=>{if("number"==typeof e)return e;if("content"===e)return a;const r=parseFloat(e);return Number.isNaN(r)?0:r/100*t})].sort((e,t)=>e-t),clamp=(e,t,a)=>Math.min(Math.max(e,t),a),buildStyles=e=>_reactNative.StyleSheet.create({backdropModal:{flex:1},backdropInline:{..._reactNative.StyleSheet.absoluteFill},sheet:{position:"absolute",left:0,right:0,overflow:"hidden"},body:{overflow:"hidden"},handleRow:{alignItems:"center",justifyContent:"center",alignSelf:"stretch",paddingTop:12,paddingBottom:24},header:{},footer:{},handle:{width:36,height:4,borderRadius:2,..._corners.smoothCorners},content:{flex:1,overflow:"hidden"},scrollContent:{flex:1},modalRoot:{flex:1}});var _default=exports.default=BottomSheet;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useBottomSheet=exports.default=exports.BottomSheet=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated")),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_ModalSafeArea=require("../ModalSafeArea/ModalSafeArea.js"),_ToastProvider=require("../Toast/ToastProvider.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 n,o,i={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return i;if(n=t?r:a){if(n.has(e))return n.get(e);n.set(e,i)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((o=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(o.get||o.set)?n(i,t,o):i[t]=e[t]);return i})(e,t)}const TABLET_MIN_SHORT_SIDE=600,DIALOG_MAX_WIDTH=560,BottomSheetContext=(0,_react.createContext)(null),useBottomSheet=()=>{const e=(0,_react.useContext)(BottomSheetContext);if(!e)throw new Error("useBottomSheet must be used inside a <BottomSheet>.");return e};exports.useBottomSheet=useBottomSheet;const SPRING_CONFIG={damping:20,stiffness:240,mass:1},CLOSE_VELOCITY_THRESHOLD=1e3,DRAG_ACTIVATION_OFFSET=10,BottomSheet=exports.BottomSheet=(0,_react.forwardRef)((e,t)=>{const{snapPoints:a,index:r,onChange:n,onAnimate:o,onAfterClose:i,enablePanDownToClose:s=!0,enableBackdropPress:c=!0,confirmDismiss:l,scrollable:u=!1,scrollRef:d,onScroll:_,onContentSizeChange:h,onScrollLayout:m,scrollEventThrottle:v,keyboardBehavior:f="shift",mode:b="modal",presentation:p="sheet",handleIndicatorStyle:S,containerStyle:R,header:g,footer:x,headerStyle:y,footerStyle:N,children:w,accessibilityLabel:C,accessibilityViewIsModal:j,testID:M}=e,k=(0,_index.useTheme)(),I=(0,_usePresenceMotion.usePresenceMotion)(),O=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),[T,P]=(0,_react.useState)(()=>_reactNative.Dimensions.get("window").height),[E,A]=(0,_react.useState)(()=>_reactNative.Dimensions.get("window").width),H=(0,_react.useCallback)(e=>{const{height:t,width:a}=e.nativeEvent.layout;t>0&&P(e=>e===t?e:t),a>0&&A(e=>e===a?e:a)},[]),B=(0,_reactNative.useWindowDimensions)(),D="dialog"===p||"auto"===p&&Math.min(B.width,B.height)>=600,G=Math.min(560,E-2*k.spacing.xl),[V,q]=(0,_ModalSafeArea.useModalInsets)(),L="modal"===b?V.top:O.top,F="modal"===b?V.bottom:O.bottom,W=a.includes("content"),[J,z]=useMeasuredHeight(),[Y,$]=useMeasuredHeight(),[K,U,X]=useMeasuredHeight(),[Q,Z]=useMeasuredHeight(),ee=D?k.spacing.md:J,te=W?Math.min(ee+(null!=g?Y:0)+K+(null!=x?Q:0)+F,T-L):0,ae=(0,_react.useCallback)((e,t)=>{W&&X(t),h?.(e,t)},[W,h,X]),re=(0,_react.useMemo)(()=>resolveSnapPoints(a,T,te),[a,T,te]),ne=T,oe=re[re.length-1]??0,ie=(0,_reactNativeReanimated.useSharedValue)(ne),se=(0,_reactNativeReanimated.useSharedValue)(ne),ce=(0,_reactNativeReanimated.useSharedValue)(1),le=(0,_reactNativeReanimated.useSharedValue)(-1),[ue,de]=(0,_react.useState)(-1),he=(0,_react.useRef)(!1),[me,ve]=(0,_react.useState)(!1),[fe,be]=(0,_react.useState)(!1),pe=(0,_react.useRef)(!1),Se=(0,_react.useRef)(i);Se.current=i;const[Re,ge]=(0,_react.useState)(!1),xe=(0,_react.useRef)(-1),ye=(0,_react.useRef)(!1);ye.current="modal"===b?fe:Re;const Ne=(0,_react.useRef)(l);Ne.current=l;const we=(0,_react.useRef)(!1),Ce=(0,_react.useRef)(!0),je=(0,_react.useRef)([]),Me=(0,_react.useCallback)(e=>{const t=je.current;je.current=[];for(const a of t)a(e)},[]);(0,_react.useEffect)(()=>(Ce.current=!0,()=>{Ce.current=!1,Me(!1)}),[Me]);const ke=(0,_react.useCallback)(e=>{if(e<0||e>=re.length)return ne;const t=re[e];return D?(T-t)/2:T-t},[re,T,ne,D]),Ie=(0,_react.useCallback)(e=>{xe.current=e;ue!==e&&(de(e),le.value=e,n?.(e))},[ue,le,n]),Oe=(0,_react.useCallback)(()=>{he.current=!1,le.value<0&&(pe.current=!0,"modal"===b?(ve(!1),"ios"!==_reactNative.Platform.OS&&be(!1)):ge(!1))},[b,le]),Te=(0,_react.useCallback)(()=>{pe.current&&be(!1)},[]);(0,_react.useEffect)(()=>{("modal"===b?!fe:!Re)&&pe.current&&(pe.current=!1,Se.current?.(),Me(!0))},[b,fe,Re,Me]);const Pe=(0,_react.useCallback)((e,t,a)=>{he.current=!0,o?.(t,a),ie.value=(0,_reactNativeReanimated.withSpring)(e,SPRING_CONFIG,e=>{"worklet";e&&(0,_reactNativeReanimated.runOnJS)(Oe)()})},[o,ie,Oe]),Ee=(0,_react.useCallback)(e=>{const t="number"==typeof e?clamp(e,0,re.length-1):ue>=0?ue:0,a=le.value,r=ke(t);if(pe.current=!1,Me(!1),"modal"===b?(be(!0),ve(!0)):ge(!0),a<0&&I.reduced)return ie.value=r,ce.value=0,ce.value=(0,_reactNativeReanimated.withTiming)(1,{duration:I.duration("fast"),easing:_reactNativeReanimated.Easing.bezier(...k.motion.easing.decelerate),reduceMotion:_usePresenceMotion.PRESENCE_REDUCE_MOTION}),Ie(t),void o?.(a,t);a<0&&(ie.value=ne,ce.value=1),Ie(t),Pe(r,a,t)},[Pe,ne,ue,le,b,o,I,ce,re.length,Ie,Me,k.motion.easing.decelerate,ie,ke]),Ae=(0,_react.useCallback)(()=>{if(0===re.length)return;const e=le.value,t=ke(0);Ie(0),Pe(t,e,0)},[Pe,le,re.length,Ie,ke]),He=(0,_react.useCallback)(()=>new Promise(e=>{if(xe.current<0)return void(ye.current?je.current.push(e):e(!0));je.current.push(e);const t=le.value;Ie(-1),he.current=!0,o?.(t,-1);const a=I.reduced?ce:ie,r=I.reduced?0:ne;a.value=(0,_reactNativeReanimated.withTiming)(r,{duration:I.duration("fast"),easing:_reactNativeReanimated.Easing.bezier(...k.motion.easing.accelerate),reduceMotion:_usePresenceMotion.PRESENCE_REDUCE_MOTION},e=>{"worklet";e&&(0,_reactNativeReanimated.runOnJS)(Oe)()})}),[ne,le,Oe,o,I,ce,Ie,ie,k.motion.easing.accelerate]),Be=(0,_react.useCallback)(async()=>{await He()},[He]),De=(0,_react.useCallback)((e,t,a)=>{const r=Ne.current;if(!r)return void e();if(we.current)return void t?.();const n=r();"boolean"!=typeof n?(we.current=!0,a?.(),n.then(a=>{we.current=!1,a&&Ce.current&&xe.current>=0?e():t?.()},e=>{throw we.current=!1,e})):(n?e:t)?.()},[]),Ge=(0,_react.useCallback)(()=>new Promise(e=>{xe.current<0?He().then(e):De(()=>{He().then(e)},()=>e(!1))}),[He,De]),Ve=(0,_react.useCallback)(()=>{c&&Ge()},[c,Ge]);(0,_react.useImperativeHandle)(t,()=>({expand:Ee,collapse:Ae,close:Be,requestClose:Ge}),[Ee,Ae,Be,Ge]),(0,_react.useEffect)(()=>{"number"==typeof r&&r!==ue&&(-1===r?Be():Ee(r))},[r]);const qe=(0,_react.useRef)({hostHeight:T,contentSnap:te});(0,_react.useEffect)(()=>{const e=qe.current;e.hostHeight===T&&e.contentSnap===te||(qe.current={hostHeight:T,contentSnap:te},e.hostHeight===T&&le.value<0||(ie.value=(0,_reactNativeReanimated.withSpring)(ke(le.value),SPRING_CONFIG)))},[T,te]);const Le=T-oe,Fe=(0,_react.useMemo)(()=>re.map(e=>T-e),[re,T]),We=(0,_react.useCallback)(()=>{const e=xe.current;e<0||Pe(ke(e),e,e)},[Pe,ke]),Je=(0,_react.useCallback)((e,t)=>{const a=le.value;-1!==e?(Ie(e),Pe(t,a,e)):De(()=>{(0,_index2.triggerHaptic)("selection"),Be()},We,We)},[Pe,Be,le,De,Ie,We]),ze=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Native().withTestId(M?`${M}-content-gesture`:"bottom-sheet-content-gesture"),[M]),Ye=(0,_react.useMemo)(()=>{const e=Fe,t=ne,a=Le,r=s;return _reactNativeGestureHandler.Gesture.Pan().withTestId(M?`${M}-pan-gesture`:"bottom-sheet-pan-gesture").activeOffsetY([-10,10]).failOffsetX([-15,15]).onStart(()=>{"worklet";se.value=ie.value}).onUpdate(e=>{"worklet";const t=se.value+e.translationY;ie.value=t<a?a+.25*(t-a):t}).onEnd(a=>{"worklet";const n=ie.value;if(a.velocityY>1e3)return r?void(0,_reactNativeReanimated.runOnJS)(Je)(-1,t):void(0,_reactNativeReanimated.runOnJS)(Je)(0,e[0]);let o=0,i=Math.abs(n-e[0]);for(let t=1;t<e.length;t++){const a=Math.abs(n-e[t]);a<i&&(i=a,o=t)}const s=e[0];r&&n-s>80?(0,_reactNativeReanimated.runOnJS)(Je)(-1,t):(0,_reactNativeReanimated.runOnJS)(Je)(o,e[o])})},[ne,se,s,Je,Le,Fe,M,ie]),{height:$e}=(0,_reactNativeKeyboardController.useReanimatedKeyboardAnimation)(),Ke="shift"===f,Ue=(0,_reactNativeReanimated.useDerivedValue)(()=>Ke?$e.value:0),Xe=re[ue>=0?ue:0]??oe,Qe=k.spacing.md,Ze=(0,_reactNativeReanimated.useAnimatedStyle)(()=>{if(D){const e=Ue.value,t=T+e-Xe-Qe,a=e<0&&ie.value>t?t:ie.value;return{top:a<L?L:a,opacity:ce.value}}const e=ie.value+Ue.value,t=Ue.value<0?L:Le;return{top:e<t?t:e,opacity:ce.value}}),et=(0,_reactNativeReanimated.useAnimatedStyle)(()=>{const e=Ue.value;if(D){const t=T+e-Xe-Qe,a=e<0&&ie.value>t?t:ie.value,r=T+e-Qe-(a<L?L:a);return{height:r<0?0:r>Xe?Xe:r}}const t=e<0?L:Le,a=ie.value+e,r=T+e-(a<t?t:a);return{height:r<0?0:r>oe?oe:r}}),tt=ue>=0,at=(0,_react.useMemo)(()=>buildStyles(k),[k]),rt=(0,_react.useCallback)(()=>{c&&De(()=>{(0,_index2.triggerHaptic)("selection"),Be()})},[c,Be,De]),nt=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Tap().withTestId(M?`${M}-backdrop-gesture`:"bottom-sheet-backdrop-gesture").maxDuration(250).onEnd((_e,e)=>{"worklet";e&&(0,_reactNativeReanimated.runOnJS)(rt)()}),[rt,M]),ot=(0,_react.useMemo)(()=>({snapIndex:ue,snapPoints:re,expand:Ee,collapse:Ae,close:Be,requestClose:Ge}),[ue,re,Ee,Ae,Be,Ge]);if("inline"===b&&!Re)return null;if("modal"===b&&!fe)return null;const it=(0,_jsxRuntime.jsxs)(_reactNative.View,{collapsable:!1,style:["modal"===b?at.backdropModal:at.backdropInline,{backgroundColor:k.colors.background.overlay}],onLayout:H,testID:M,accessibilityViewIsModal:j??tt,children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:nt,children:(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:_reactNative.StyleSheet.absoluteFill,accessibilityRole:"button",accessibilityLabel:"Close bottom sheet"})}),(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{accessibilityRole:"alert",accessibilityLabel:C,accessibilityViewIsModal:j??tt,accessibilityActions:[{name:"escape",label:"Close bottom sheet"}],onAccessibilityAction:e=>{"escape"===e.nativeEvent.actionName&&Ve()},onAccessibilityEscape:Ve,style:[at.sheet,{height:oe,backgroundColor:k.colors.background.elevated,borderTopLeftRadius:k.radius.xl,borderTopRightRadius:k.radius.xl,..._corners.smoothCorners,...k.shadows.xl},D?{height:Xe,left:(E-G)/2,right:void 0,width:G,borderBottomLeftRadius:k.radius.xl,borderBottomRightRadius:k.radius.xl}:null,R,Ze],children:(0,_jsxRuntime.jsxs)(SheetBody,{style:[at.body,et],keyboardOffset:Ue,children:[D?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{height:k.spacing.md}}):(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:Ye,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:at.handleRow,onLayout:W?z:void 0,accessible:!0,accessibilityLabel:"Drag handle",accessibilityHint:"Drag up or down to resize the sheet, or swipe down to close it",testID:M?`${M}-handle`:"bottom-sheet-handle",children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[at.handle,{backgroundColor:k.components.bottomSheet?.handleColor??k.colors.border.primary},S]})})}),null!=g&&(0,_jsxRuntime.jsx)(_reactNative.View,{style:[at.header,y],onLayout:W?$:void 0,children:g}),u?(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:ze,children:(0,_jsxRuntime.jsx)(_reactNative.ScrollView,{ref:d,style:at.scrollContent,onScroll:_,onContentSizeChange:ae,onLayout:m,scrollEventThrottle:v,keyboardShouldPersistTaps:"always",keyboardDismissMode:"none",children:w})}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:W?[at.content,{overflow:"visible"}]:at.content,children:W?(0,_jsxRuntime.jsx)(_reactNative.View,{onLayout:U,children:w}):w}),null!=x&&(0,_jsxRuntime.jsx)(_reactNative.View,{style:[at.footer,N],onLayout:W?Z:void 0,children:x})]})})]}),st=(0,_jsxRuntime.jsx)(BottomSheetContext.Provider,{value:ot,children:it});return"modal"===b?(0,_jsxRuntime.jsx)(_reactNative.Modal,{transparent:!0,visible:me,onRequestClose:Ve,onDismiss:"ios"===_reactNative.Platform.OS?Te:void 0,statusBarTranslucent:!0,navigationBarTranslucent:!0,animationType:"none",supportedOrientations:["portrait","landscape"],children:(0,_jsxRuntime.jsxs)(_ModalSafeArea.ModalSafeArea,{onInsets:q,children:["android"===_reactNative.Platform.OS?(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureHandlerRootView,{style:at.modalRoot,children:st}):st,(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})}):st}),SheetBody=({style:e,keyboardOffset:t,children:a})=>{const r=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)().bottom,n=(0,_reactNativeReanimated.useAnimatedStyle)(()=>{const e=r+t.value;return{paddingBottom:e>0?e:0}});return(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[e,n],children:a})};BottomSheet.displayName="BottomSheet";const useMeasuredHeight=()=>{const[e,t]=(0,_react.useState)(0),a=(0,_react.useCallback)(e=>{t(t=>t===e?t:e)},[]);return[e,(0,_react.useCallback)(e=>a(e.nativeEvent.layout.height),[a]),a]},resolveSnapPoints=(e,t,a)=>[...e.map(e=>{if("number"==typeof e)return e;if("content"===e)return a;const r=parseFloat(e);return Number.isNaN(r)?0:r/100*t})].sort((e,t)=>e-t),clamp=(e,t,a)=>Math.min(Math.max(e,t),a),buildStyles=e=>_reactNative.StyleSheet.create({backdropModal:{flex:1},backdropInline:{..._reactNative.StyleSheet.absoluteFill},sheet:{position:"absolute",left:0,right:0,overflow:"hidden"},body:{overflow:"hidden"},handleRow:{alignItems:"center",justifyContent:"center",alignSelf:"stretch",paddingTop:e.spacing.md,paddingBottom:e.spacing.xl},header:{},footer:{},handle:{width:36,height:4,borderRadius:e.radius.pill,..._corners.smoothCorners},content:{flex:1,overflow:"hidden"},scrollContent:{flex:1},modalRoot:{flex:1}});var _default=exports.default=BottomSheet;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.resolveBoxStyle=exports.default=exports.Stack=exports.Spacer=exports.Row=exports.Box=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_SquircleFill=require("../SquircleFill/SquircleFill.js"),_jsxRuntime=require("react/jsx-runtime");const space=(e,r)=>null==r?void 0:e.spacing[r],resolveBoxStyle=(e,r)=>{const t={};if(null!=r.p&&(t.padding=space(e,r.p)),null!=r.px&&(t.paddingHorizontal=space(e,r.px)),null!=r.py&&(t.paddingVertical=space(e,r.py)),null!=r.pt&&(t.paddingTop=space(e,r.pt)),null!=r.pr&&(t.paddingRight=space(e,r.pr)),null!=r.pb&&(t.paddingBottom=space(e,r.pb)),null!=r.pl&&(t.paddingLeft=space(e,r.pl)),null!=r.m&&(t.margin=space(e,r.m)),null!=r.mx&&(t.marginHorizontal=space(e,r.mx)),null!=r.my&&(t.marginVertical=space(e,r.my)),null!=r.mt&&(t.marginTop=space(e,r.mt)),null!=r.mr&&(t.marginRight=space(e,r.mr)),null!=r.mb&&(t.marginBottom=space(e,r.mb)),null!=r.ml&&(t.marginLeft=space(e,r.ml)),null!=r.gap&&(t.gap=space(e,r.gap)),null!=r.bg){const l=e.colors.background;t.backgroundColor=l[r.bg]??r.bg}return null!=r.radius&&(t.borderRadius=e.radius[r.radius],t.borderCurve=_corners.smoothCorners.borderCurve),r.border&&(t.borderWidth=e.colors.border.width,t.borderColor=e.colors.border.primary),null!=r.flex&&(t.flex=r.flex),null!=r.align&&(t.alignItems=r.align),null!=r.justify&&(t.justifyContent=r.justify),null!=r.direction&&(t.flexDirection=r.direction),r.wrap&&(t.flexWrap="wrap"),t};exports.resolveBoxStyle=resolveBoxStyle;const Box=exports.Box=(0,_react.forwardRef)((e,r)=>{const t=(0,_index.useTheme)(),{p:l,px:i,py:o,pt:a,pr:s,pb:n,pl:p,m:u,mx:c,my:d,mt:x,mr:m,mb:g,ml:b,gap:y,bg:f,radius:_,border:j,flex:S,align:h,justify:w,direction:R,wrap:v,style:B,children:q,...k}=e,C=resolveBoxStyle(t,{p:l,px:i,py:o,pt:a,pr:s,pb:n,pl:p,m:u,mx:c,my:d,mt:x,mr:m,mb:g,ml:b,gap:y,bg:f,radius:_,border:j,flex:S,align:h,justify:w,direction:R,wrap:v}),N=(0,_SquircleFill.useSquircle)(null!=_&&(null!=f||Boolean(j)),C.borderRadius,k.onLayout),z=N.active?{...C,backgroundColor:"transparent",borderColor:"transparent"}:C;return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:r,...k,onLayout:N.onLayout,style:[z,B],children:[N.active&&N.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:N.size.width,height:N.size.height,radius:C.borderRadius,fill:C.backgroundColor??"transparent",stroke:C.borderColor,strokeWidth:C.borderWidth??0,outset:C.borderWidth??0}):null,q]})});Box.displayName="Box";const Stack=exports.Stack=(0,_react.forwardRef)(({gap:e="md",...r},t)=>(0,_jsxRuntime.jsx)(Box,{ref:t,direction:"column",gap:e,...r}));Stack.displayName="Stack";const Row=exports.Row=(0,_react.forwardRef)(({gap:e="sm",align:r="center",...t},l)=>(0,_jsxRuntime.jsx)(Box,{ref:l,direction:"row",gap:e,align:r,...t}));Row.displayName="Row";const Spacer=({size:e,style:r,testID:t})=>{const l=(0,_index.useTheme)();if(null!=e){const i=l.spacing[e];return(0,_jsxRuntime.jsx)(_reactNative.View,{testID:t,style:[{width:i,height:i},r]})}return(0,_jsxRuntime.jsx)(_reactNative.View,{testID:t,style:[{flex:1},r]})};exports.Spacer=Spacer,Spacer.displayName="Spacer";var _default=exports.default=Box;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.resolveBoxStyle=exports.default=exports.Stack=exports.Spacer=exports.Row=exports.Box=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_scale=require("../../theme/scale.js"),_corners=require("../../utils/corners.js"),_SquircleFill=require("../SquircleFill/SquircleFill.js"),_jsxRuntime=require("react/jsx-runtime");const space=(e,r,t)=>null==r?void 0:(0,_scale.spaceOf)(e,r,`Box ${t}`),resolveBoxStyle=(e,r)=>{const t={};if(null!=r.p&&(t.padding=space(e,r.p,"p")),null!=r.px&&(t.paddingHorizontal=space(e,r.px,"px")),null!=r.py&&(t.paddingVertical=space(e,r.py,"py")),null!=r.pt&&(t.paddingTop=space(e,r.pt,"pt")),null!=r.pr&&(t.paddingRight=space(e,r.pr,"pr")),null!=r.pb&&(t.paddingBottom=space(e,r.pb,"pb")),null!=r.pl&&(t.paddingLeft=space(e,r.pl,"pl")),null!=r.m&&(t.margin=space(e,r.m,"m")),null!=r.mx&&(t.marginHorizontal=space(e,r.mx,"mx")),null!=r.my&&(t.marginVertical=space(e,r.my,"my")),null!=r.mt&&(t.marginTop=space(e,r.mt,"mt")),null!=r.mr&&(t.marginRight=space(e,r.mr,"mr")),null!=r.mb&&(t.marginBottom=space(e,r.mb,"mb")),null!=r.ml&&(t.marginLeft=space(e,r.ml,"ml")),null!=r.gap&&(t.gap=space(e,r.gap,"gap")),null!=r.bg){const l=e.colors.background;t.backgroundColor=l[r.bg]??r.bg}return null!=r.radius&&(t.borderRadius=(0,_scale.radiusOf)(e,r.radius,"Box radius"),t.borderCurve=_corners.smoothCorners.borderCurve),r.border&&(t.borderWidth=e.colors.border.width,t.borderColor=e.colors.border.primary),null!=r.flex&&(t.flex=r.flex),null!=r.align&&(t.alignItems=r.align),null!=r.justify&&(t.justifyContent=r.justify),null!=r.direction&&(t.flexDirection=r.direction),r.wrap&&(t.flexWrap="wrap"),t};exports.resolveBoxStyle=resolveBoxStyle;const Box=exports.Box=(0,_react.forwardRef)((e,r)=>{const t=(0,_index.useTheme)(),{p:l,px:a,py:o,pt:i,pr:s,pb:n,pl:p,m:c,mx:u,my:d,mt:m,mr:x,mb:g,ml:b,gap:f,bg:y,radius:_,border:j,flex:S,align:h,justify:w,direction:R,wrap:v,style:B,children:q,...k}=e,C=resolveBoxStyle(t,{p:l,px:a,py:o,pt:i,pr:s,pb:n,pl:p,m:c,mx:u,my:d,mt:m,mr:x,mb:g,ml:b,gap:f,bg:y,radius:_,border:j,flex:S,align:h,justify:w,direction:R,wrap:v}),N=(0,_SquircleFill.useSquircle)(null!=_&&(null!=y||Boolean(j)),C.borderRadius,k.onLayout),z=N.active?{...C,backgroundColor:"transparent",borderColor:"transparent"}:C;return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:r,...k,onLayout:N.onLayout,style:[z,B],children:[N.active&&N.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:N.size.width,height:N.size.height,radius:C.borderRadius,fill:C.backgroundColor??"transparent",stroke:C.borderColor,strokeWidth:C.borderWidth??0,outset:C.borderWidth??0}):null,q]})});Box.displayName="Box";const Stack=exports.Stack=(0,_react.forwardRef)(({gap:e="md",...r},t)=>(0,_jsxRuntime.jsx)(Box,{ref:t,direction:"column",gap:e,...r}));Stack.displayName="Stack";const Row=exports.Row=(0,_react.forwardRef)(({gap:e="sm",align:r="center",...t},l)=>(0,_jsxRuntime.jsx)(Box,{ref:l,direction:"row",gap:e,align:r,...t}));Row.displayName="Row";const Spacer=({size:e,style:r,testID:t})=>{const l=(0,_index.useTheme)();if(null!=e){const a=(0,_scale.spaceOf)(l,e,"Spacer size");return(0,_jsxRuntime.jsx)(_reactNative.View,{testID:t,style:[{width:a,height:a},r]})}return(0,_jsxRuntime.jsx)(_reactNative.View,{testID:t,style:[{flex:1},r]})};exports.Spacer=Spacer,Spacer.displayName="Spacer";var _default=exports.default=Box;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Button=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_useFlickGuard=require("../../hooks/useFlickGuard.js"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_animatedValue=require("../../theme/animatedValue.js"),_ariaState=require("../../utils/ariaState.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index2=require("../Spinner/index.js"),_SquircleFill=require("../SquircleFill/SquircleFill.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,r){if("function"==typeof WeakMap)var t=new WeakMap,o=new WeakMap;return(_interopRequireWildcard=function(e,r){if(!r&&e&&e.__esModule)return e;var i,s,n={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return n;if(i=r?o:t){if(i.has(e))return i.get(e);i.set(e,n)}for(const r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((s=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,r))&&(s.get||s.set)?i(n,r,s):n[r]=e[r]);return n})(e,r)}const Button=exports.Button=(0,_react.forwardRef)((e,r)=>{const{title:t,children:o,variant:i="solid",tone:s="primary",size:n="md",loading:a=!1,disabled:l=!1,fullWidth:c=!1,leftIcon:d,rightIcon:u,iconVariant:b,leftIconBadge:g=!1,haptic:p,rounded:_=!1,gradient:h,style:f,containerStyle:m,textStyle:x,pressAnimation:y,onPress:S,accessibilityLabel:j,accessibilityHint:v,accessibilityState:I,testID:C,onLayout:R,...k}=e;if(__DEV__&&hasTextChild(o))throw new Error('[@webority/mobile-ui] Button was given its label as text children. Pass it as `title` (<Button title="Save" />): text children draw a blank button with no accessible name.');const w=(0,_index.useTheme)(),T=!l&&!a,z={...I,disabled:!T,busy:a},F="link"===i,N=y??(!F&&"scale"),q=(0,_usePressAnimation.usePressAnimation)({preset:N||"scale",enabled:!1!==N&&T}),H=(0,_useFlickGuard.useFlickGuard)(),L=(0,_react.useMemo)(()=>buildStyles(w),[w]),W={...sizeMap[n],...w.components.button?.[n]??{}},O=(0,_react.useMemo)(()=>toneFor(w,s),[w,s]),P=(0,_react.useMemo)(()=>variantFor(w,i,O,l),[w,i,O,l]),V=(0,_react.useMemo)(()=>!h||l||"solid"!==i?null:"string"==typeof h?w.gradients[h]??null:h,[h,l,i,w.gradients]),A=_reactNative.StyleSheet.flatten(f)?.borderRadius,E=F?0:"number"==typeof A?A:_?w.radius.full:W.borderRadius,B=(0,_SquircleFill.useSquircle)(!V&&"link"!==i,E,R),D=(0,_react.useRef)((0,_animatedValue.createAnimatedValue)(0)).current,[M,G]=(0,_react.useState)(0),[U,K]=(0,_react.useState)(null),X=F?e=>G(e.nativeEvent.layout.width):void 0,Y=j??t,J="outline"===i||"ghost"===i,Q=!J&&!F,Z={color:P.textColor,size:W.iconSize,disabled:l},$=g&&!F&&Boolean(d),ee=W.minHeight-2*BADGE_INSET-2*P.borderWidth,re={color:P.badgeInk,size:W.badgeIconSize??W.iconSize,disabled:l},te=a?(0,_jsxRuntime.jsx)(_index2.Spinner,{variant:"circular",size:"sm",color:$?P.badgeInk:P.textColor,accessibilityLabel:"Loading"}):d?(0,_slotIcon.renderSlotIcon)(d,$?re:Z,b):null,oe=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:L.contentRow,children:[$?(0,_jsxRuntime.jsx)(_reactNative.View,{testID:"button-icon-badge",style:[L.iconLeft,L.iconBadge,{width:ee,height:ee,borderRadius:ee/2,backgroundColor:P.badgeFill}],children:te}):te?(0,_jsxRuntime.jsx)(_reactNative.View,{style:L.iconLeft,children:te}):null,t?(0,_jsxRuntime.jsxs)(_reactNative.View,{onLayout:X,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[L.label,{color:P.textColor,fontSize:W.fontSize,...(0,_index.fontFor)(w,"semibold")},x],numberOfLines:1,children:t}),F?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",testID:"button-link-underline",style:[L.linkUnderline,{backgroundColor:P.textColor,transform:[{translateX:D.interpolate({inputRange:[0,1],outputRange:[-M/2,0]})},{scaleX:D.interpolate({inputRange:[0,1],outputRange:[0,1]})}]}]}):null]}):o,u?(0,_jsxRuntime.jsx)(_reactNative.View,{style:L.iconRight,children:(0,_slotIcon.renderSlotIcon)(u,Z,b)}):null]}),ie=F?null===U?LINK_HIT_SLOP:Math.max(LINK_HIT_SLOP,touchSlopFor(U)):touchSlopFor(W.minHeight),se={top:ie,bottom:ie,left:F?LINK_HIT_SLOP:0,right:F?LINK_HIT_SLOP:0};return(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[q.style,c?L.fullWidth:null,m],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:r,onPress:e=>{T&&!H.isFlick(e)&&(q.press(),p&&(0,_hapticUtils.triggerHaptic)(p),S?.(e))},onPressIn:e=>{H.onPressIn(e),q.pressIn(),F&&T&&(D.stopAnimation(),D.setValue(0),_reactNative.Animated.timing(D,{toValue:1,duration:w.motion.duration.slower,easing:_reactNative.Easing.bezier(...w.motion.easing.decelerate),useNativeDriver:!0}).start())},onPressOut:()=>{q.pressOut()},disabled:!T,hitSlop:se,accessibilityRole:"button",accessibilityLabel:Y,accessibilityHint:v,accessibilityState:z,...(0,_ariaState.ariaFromState)(z),testID:C,onLayout:e=>{B.onLayout(e),F&&K(e.nativeEvent.layout.height)},style:({pressed:e})=>[L.base,{paddingHorizontal:F?0:W.paddingHorizontal,paddingVertical:F?0:$?BADGE_INSET:W.paddingVertical,paddingLeft:$?BADGE_INSET:void 0,minHeight:F?void 0:W.minHeight,borderRadius:E,..._corners.smoothCorners,backgroundColor:V||B.active?"transparent":P.backgroundColor,borderWidth:P.borderWidth,borderColor:B.active?"transparent":P.borderColor,opacity:a?.55:1,overflow:B.active||F?"visible":"hidden"},e&&J&&!B.active?{backgroundColor:w.colors.surface.pressed}:null,c?L.fullWidth:null,f],...k,"aria-disabled":!T,"aria-busy":a,children:({pressed:e})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[B.active&&B.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:B.size.width,height:B.size.height,radius:E,fill:e&&J?w.colors.surface.pressed:P.backgroundColor,stroke:P.borderColor,strokeWidth:P.borderWidth,outset:P.borderWidth}):null,V?(0,_jsxRuntime.jsx)(_index.Gradient,{gradient:V,style:[_reactNative.StyleSheet.absoluteFill,{borderRadius:E,..._corners.smoothCorners}]}):null,e&&Q?B.active&&B.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:B.size.width,height:B.size.height,radius:E,fill:P.pressedTint,outset:P.borderWidth,testID:"button-pressed"}):(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[L.pressedOverlay,{borderRadius:E,backgroundColor:P.pressedTint,..._corners.smoothCorners}],testID:"button-pressed"}):null,oe]})})})});Button.displayName="Button";const hasTextChild=e=>_react.default.Children.toArray(e).some(e=>"string"==typeof e||"number"==typeof e),sizeMap={xs:{paddingHorizontal:10,paddingVertical:4,minHeight:28,fontSize:12,borderRadius:8,iconSize:14,badgeIconSize:11},sm:{paddingHorizontal:12,paddingVertical:6,minHeight:34,fontSize:14,borderRadius:10,iconSize:16},md:{paddingHorizontal:16,paddingVertical:9,minHeight:44,fontSize:16,borderRadius:12,iconSize:18},lg:{paddingHorizontal:20,paddingVertical:12,minHeight:50,fontSize:18,borderRadius:14,iconSize:20},xl:{paddingHorizontal:24,paddingVertical:14,minHeight:58,fontSize:20,borderRadius:16,iconSize:22}},SOFT_FILL_OPACITY=.14,toneFor=(e,r)=>{switch(r){case"primary":return{base:e.colors.primary,on:e.colors.onPrimary,fg:e.colors.toneText.primary,soft:(0,_color.tintOf)(e.colors.primary,.14,e.colors.primaryMuted)};case"secondary":return{base:e.colors.secondary,on:e.colors.onSecondary,fg:e.colors.onSecondary,soft:e.colors.secondary};case"success":return{base:e.colors.success,on:e.colors.onSuccess,fg:e.colors.toneText.success,soft:(0,_color.tintOf)(e.colors.success,.14,e.colors.background.secondary)};case"warning":return{base:e.colors.warning,on:e.colors.onWarning,fg:e.colors.toneText.warning,soft:(0,_color.tintOf)(e.colors.warning,.14,e.colors.background.secondary)};case"error":return{base:e.colors.error,on:e.colors.onError,fg:e.colors.toneText.error,soft:(0,_color.tintOf)(e.colors.error,.14,e.colors.background.secondary)};default:return{base:e.colors.background.tertiary,on:e.colors.text.primary,fg:e.colors.text.primary,soft:e.colors.background.secondary}}},BADGE_INSET=4,BUTTON_BORDER_WIDTH=1,MIN_TOUCH_TARGET=44,LINK_HIT_SLOP=8,touchSlopFor=e=>Math.max(0,Math.ceil((44-e)/2)),variantFor=(e,r,t,o)=>{const i=o?e.colors.text.disabled:t.fg,s={badgeFill:e.colors.surface.disabled,badgeInk:e.colors.text.disabled},n=o?s:{badgeFill:t.on,badgeInk:t.base},a=o?s:{badgeFill:t.base,badgeInk:t.on};switch(r){case"solid":return{backgroundColor:o?e.colors.surface.disabled:t.base,borderColor:"transparent",borderWidth:1,textColor:o?e.colors.text.disabled:t.on,pressedTint:e.colors.surface.pressed,...n};case"soft":return{backgroundColor:o?e.colors.surface.disabled:t.soft,borderColor:"transparent",borderWidth:1,textColor:i,pressedTint:e.colors.surface.pressed,...a};case"outline":return{backgroundColor:"transparent",borderColor:o?e.colors.border.primary:t.base,borderWidth:1,textColor:i,pressedTint:e.colors.surface.pressed,...a};case"ghost":return{backgroundColor:"transparent",borderColor:"transparent",borderWidth:1,textColor:i,pressedTint:e.colors.surface.pressed,...a};case"link":return{backgroundColor:"transparent",borderColor:"transparent",borderWidth:0,textColor:o?e.colors.text.disabled:e.colors.text.link,pressedTint:e.colors.surface.pressed,...a};case"glass":return{backgroundColor:e.colors.glass.fill,borderColor:e.colors.glass.border,borderWidth:1,textColor:o?e.colors.text.disabled:e.colors.glass.on,pressedTint:_color.ACCENT_PRESSED_TINT,badgeFill:e.colors.glass.badge,badgeInk:o?e.colors.text.disabled:t.base};default:return{backgroundColor:t.base,borderColor:"transparent",borderWidth:1,textColor:t.on,pressedTint:e.colors.surface.pressed,...n}}},buildStyles=e=>_reactNative.StyleSheet.create({pressedOverlay:{position:"absolute",top:0,right:0,bottom:0,left:0},base:{alignItems:"center",justifyContent:"center",flexDirection:"row",overflow:"hidden"},contentRow:{flexDirection:"row",alignItems:"center",justifyContent:"center"},label:{textAlign:"center",includeFontPadding:!1,textAlignVertical:"center"},linkUnderline:{height:1.5,marginTop:1},iconLeft:{marginRight:8},iconBadge:{alignItems:"center",justifyContent:"center"},iconRight:{marginLeft:8},fullWidth:{alignSelf:"stretch"}});var _default=exports.default=Button;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Button=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_useFlickGuard=require("../../hooks/useFlickGuard.js"),_usePressAnimation=require("../../hooks/usePressAnimation.js"),_index=require("../../theme/index.js"),_animatedValue=require("../../theme/animatedValue.js"),_ariaState=require("../../utils/ariaState.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index2=require("../Spinner/index.js"),_SquircleFill=require("../SquircleFill/SquircleFill.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,r){if("function"==typeof WeakMap)var t=new WeakMap,o=new WeakMap;return(_interopRequireWildcard=function(e,r){if(!r&&e&&e.__esModule)return e;var s,i,n={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return n;if(s=r?o:t){if(s.has(e))return s.get(e);s.set(e,n)}for(const r in e)"default"!==r&&{}.hasOwnProperty.call(e,r)&&((i=(s=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,r))&&(i.get||i.set)?s(n,r,i):n[r]=e[r]);return n})(e,r)}const Button=exports.Button=(0,_react.forwardRef)((e,r)=>{const{title:t,children:o,variant:s="solid",tone:i="primary",size:n="md",loading:a=!1,disabled:l=!1,fullWidth:c=!1,leftIcon:d,rightIcon:u,iconVariant:b,leftIconBadge:g=!1,haptic:_,rounded:p=!1,gradient:h,style:f,containerStyle:x,textStyle:m,pressAnimation:y,onPress:v,accessibilityLabel:j,accessibilityHint:S,accessibilityState:C,testID:k,onLayout:I,...R}=e;if(__DEV__&&hasTextChild(o))throw new Error('[@webority/mobile-ui] Button was given its label as text children. Pass it as `title` (<Button title="Save" />): text children draw a blank button with no accessible name.');const w=(0,_index.useTheme)(),T=!l&&!a,F={...C,disabled:!T,busy:a},N="link"===s,q=y??(!N&&"scale"),L=(0,_usePressAnimation.usePressAnimation)({preset:q||"scale",enabled:!1!==q&&T}),W=(0,_useFlickGuard.useFlickGuard)(),O=(0,_react.useMemo)(()=>buildStyles(w),[w]),P=(0,_react.useMemo)(()=>(0,_index.resolveButtonSize)(w,n),[w,n]),V=(0,_react.useMemo)(()=>toneFor(w,i),[w,i]),A=(0,_react.useMemo)(()=>variantFor(w,s,V,l),[w,s,V,l]),B=(0,_react.useMemo)(()=>!h||l||"solid"!==s?null:"string"==typeof h?w.gradients[h]??null:h,[h,l,s,w.gradients]),H=_reactNative.StyleSheet.flatten(f)?.borderRadius,M=N?0:"number"==typeof H?H:p?w.radius.pill:P.radius,z=(0,_SquircleFill.useSquircle)(!B&&"link"!==s,M,I),D=(0,_react.useRef)((0,_animatedValue.createAnimatedValue)(0)).current,[E,U]=(0,_react.useState)(0),[G,K]=(0,_react.useState)(null),X=N?e=>U(e.nativeEvent.layout.width):void 0,Y=j??t,J="outline"===s||"ghost"===s,Q=!J&&!N,Z={color:A.textColor,size:P.icon,disabled:l},$=g&&!N&&Boolean(d),ee=w.spacing.xs,re=P.minHeight-2*ee-2*A.borderWidth,te={color:A.badgeInk,size:P.badgeIcon,disabled:l},oe=a?(0,_jsxRuntime.jsx)(_index2.Spinner,{variant:"circular",size:"sm",color:$?A.badgeInk:A.textColor,accessibilityLabel:"Loading"}):d?(0,_slotIcon.renderSlotIcon)(d,$?te:Z,b):null,se=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:O.contentRow,children:[$?(0,_jsxRuntime.jsx)(_reactNative.View,{testID:"button-icon-badge",style:[O.iconLeft,O.iconBadge,{width:re,height:re,borderRadius:re/2,backgroundColor:A.badgeFill}],children:oe}):oe?(0,_jsxRuntime.jsx)(_reactNative.View,{style:O.iconLeft,children:oe}):null,t?(0,_jsxRuntime.jsxs)(_reactNative.View,{onLayout:X,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[O.label,{color:A.textColor,fontSize:P.text,...(0,_index.fontFor)(w,"semibold")},m],numberOfLines:1,children:t}),N?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",testID:"button-link-underline",style:[O.linkUnderline,{backgroundColor:A.textColor,transform:[{translateX:D.interpolate({inputRange:[0,1],outputRange:[-E/2,0]})},{scaleX:D.interpolate({inputRange:[0,1],outputRange:[0,1]})}]}]}):null]}):o,u?(0,_jsxRuntime.jsx)(_reactNative.View,{style:O.iconRight,children:(0,_slotIcon.renderSlotIcon)(u,Z,b)}):null]}),ie=N?null===G?LINK_HIT_SLOP:Math.max(LINK_HIT_SLOP,touchSlopFor(G)):touchSlopFor(P.minHeight),ne={top:ie,bottom:ie,left:N?LINK_HIT_SLOP:0,right:N?LINK_HIT_SLOP:0};return(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[L.style,c?O.fullWidth:null,x],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:r,onPress:e=>{T&&!W.isFlick(e)&&(L.press(),_&&(0,_hapticUtils.triggerHaptic)(_),v?.(e))},onPressIn:e=>{W.onPressIn(e),L.pressIn(),N&&T&&(D.stopAnimation(),D.setValue(0),_reactNative.Animated.timing(D,{toValue:1,duration:w.motion.duration.slower,easing:_reactNative.Easing.bezier(...w.motion.easing.decelerate),useNativeDriver:!0}).start())},onPressOut:()=>{L.pressOut()},disabled:!T,hitSlop:ne,accessibilityRole:"button",accessibilityLabel:Y,accessibilityHint:S,accessibilityState:F,...(0,_ariaState.ariaFromState)(F),testID:k,onLayout:e=>{z.onLayout(e),N&&K(e.nativeEvent.layout.height)},style:({pressed:e})=>[O.base,{paddingHorizontal:N?0:P.paddingX,paddingVertical:N?0:$?ee:P.paddingY,paddingLeft:$?ee:void 0,minHeight:N?void 0:P.minHeight,borderRadius:M,..._corners.smoothCorners,backgroundColor:B||z.active?"transparent":A.backgroundColor,borderWidth:A.borderWidth,borderColor:z.active?"transparent":A.borderColor,opacity:a?.55:1,overflow:z.active||N?"visible":"hidden"},e&&J&&!z.active?{backgroundColor:w.colors.surface.pressed}:null,c?O.fullWidth:null,f],...R,"aria-disabled":!T,"aria-busy":a,children:({pressed:e})=>(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[z.active&&z.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:z.size.width,height:z.size.height,radius:M,fill:e&&J?w.colors.surface.pressed:A.backgroundColor,stroke:A.borderColor,strokeWidth:A.borderWidth,outset:A.borderWidth}):null,B?(0,_jsxRuntime.jsx)(_index.Gradient,{gradient:B,style:[_reactNative.StyleSheet.absoluteFill,{borderRadius:M,..._corners.smoothCorners}]}):null,e&&Q?z.active&&z.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:z.size.width,height:z.size.height,radius:M,fill:A.pressedTint,outset:A.borderWidth,testID:"button-pressed"}):(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[O.pressedOverlay,{borderRadius:M,backgroundColor:A.pressedTint,..._corners.smoothCorners}],testID:"button-pressed"}):null,se]})})})});Button.displayName="Button";const hasTextChild=e=>_react.default.Children.toArray(e).some(e=>"string"==typeof e||"number"==typeof e),SOFT_FILL_OPACITY=.14,toneFor=(e,r)=>{switch(r){case"primary":return{base:e.colors.primary,on:e.colors.onPrimary,fg:e.colors.toneText.primary,soft:(0,_color.tintOf)(e.colors.primary,.14,e.colors.primaryMuted)};case"secondary":return{base:e.colors.secondary,on:e.colors.onSecondary,fg:e.colors.onSecondary,soft:e.colors.secondary};case"success":return{base:e.colors.success,on:e.colors.onSuccess,fg:e.colors.toneText.success,soft:(0,_color.tintOf)(e.colors.success,.14,e.colors.background.secondary)};case"warning":return{base:e.colors.warning,on:e.colors.onWarning,fg:e.colors.toneText.warning,soft:(0,_color.tintOf)(e.colors.warning,.14,e.colors.background.secondary)};case"error":return{base:e.colors.error,on:e.colors.onError,fg:e.colors.toneText.error,soft:(0,_color.tintOf)(e.colors.error,.14,e.colors.background.secondary)};default:return{base:e.colors.background.tertiary,on:e.colors.text.primary,fg:e.colors.text.primary,soft:e.colors.background.secondary}}},BUTTON_BORDER_WIDTH=1,MIN_TOUCH_TARGET=44,LINK_HIT_SLOP=8,touchSlopFor=e=>Math.max(0,Math.ceil((44-e)/2)),variantFor=(e,r,t,o)=>{const s=o?e.colors.text.disabled:t.fg,i={badgeFill:e.colors.surface.disabled,badgeInk:e.colors.text.disabled},n=o?i:{badgeFill:t.on,badgeInk:t.base},a=o?i:{badgeFill:t.base,badgeInk:t.on};switch(r){case"solid":return{backgroundColor:o?e.colors.surface.disabled:t.base,borderColor:"transparent",borderWidth:1,textColor:o?e.colors.text.disabled:t.on,pressedTint:e.colors.surface.pressed,...n};case"soft":return{backgroundColor:o?e.colors.surface.disabled:t.soft,borderColor:"transparent",borderWidth:1,textColor:s,pressedTint:e.colors.surface.pressed,...a};case"outline":return{backgroundColor:"transparent",borderColor:o?e.colors.border.primary:t.base,borderWidth:1,textColor:s,pressedTint:e.colors.surface.pressed,...a};case"ghost":return{backgroundColor:"transparent",borderColor:"transparent",borderWidth:1,textColor:s,pressedTint:e.colors.surface.pressed,...a};case"link":return{backgroundColor:"transparent",borderColor:"transparent",borderWidth:0,textColor:o?e.colors.text.disabled:e.colors.text.link,pressedTint:e.colors.surface.pressed,...a};case"glass":return{backgroundColor:e.colors.glass.fill,borderColor:e.colors.glass.border,borderWidth:1,textColor:o?e.colors.text.disabled:e.colors.glass.on,pressedTint:_color.ACCENT_PRESSED_TINT,badgeFill:e.colors.glass.badge,badgeInk:o?e.colors.text.disabled:t.base};default:return{backgroundColor:t.base,borderColor:"transparent",borderWidth:1,textColor:t.on,pressedTint:e.colors.surface.pressed,...n}}},buildStyles=e=>_reactNative.StyleSheet.create({pressedOverlay:{position:"absolute",top:0,right:0,bottom:0,left:0},base:{alignItems:"center",justifyContent:"center",flexDirection:"row",overflow:"hidden"},contentRow:{flexDirection:"row",alignItems:"center",justifyContent:"center"},label:{textAlign:"center",includeFontPadding:!1,textAlignVertical:"center"},linkUnderline:{height:1.5,marginTop:1},iconLeft:{marginRight:e.spacing.sm},iconBadge:{alignItems:"center",justifyContent:"center"},iconRight:{marginLeft:e.spacing.sm},fullWidth:{alignSelf:"stretch"}});var _default=exports.default=Button;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildCalendarStyles=exports.NAV_BUTTON_SIZE=exports.MIN_CELL_SIZE=void 0;var _reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js");const MIN_CELL_SIZE=exports.MIN_CELL_SIZE=44,NAV_BUTTON_SIZE=exports.NAV_BUTTON_SIZE=36,DOT_SIZE=5,buildCalendarStyles=e=>{const t=e.components.dateRangePicker,r=t?.navButtonSize??NAV_BUTTON_SIZE;return _reactNative.StyleSheet.create({root:{alignSelf:"stretch"},headerRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginBottom:e.spacing.md},navBtn:{width:r,height:r,borderRadius:e.radius.full,..._corners.smoothCorners,alignItems:"center",justifyContent:"center",backgroundColor:e.colors.background.secondary},navBtnPressed:{backgroundColor:e.colors.surface.pressed},navBtnDisabled:{opacity:.4},navText:{fontSize:t?.navTextFontSize??22,lineHeight:t?.navTextLineHeight??24,color:e.colors.text.primary,...(0,_index.fontFor)(e,"semibold")},headerLabelWrap:{flex:1,alignItems:"center"},headerLabel:{fontSize:e.typography.fontSize.base,color:e.colors.text.primary,...(0,_index.fontFor)(e,"semibold")},weekdayRow:{flexDirection:"row",justifyContent:"center",marginBottom:e.spacing.xs},weekdayCell:{alignItems:"center",paddingVertical:e.spacing.xs},weekdayText:{fontSize:e.typography.fontSize.xs,color:e.colors.text.tertiary,letterSpacing:e.typography.letterSpacing.wide,...(0,_index.fontFor)(e,"medium")},gridRow:{flexDirection:"row",justifyContent:"center"},dayCell:{alignItems:"center",justifyContent:"center",padding:0},barLeft:{position:"absolute",left:0,right:"50%",top:"5%",bottom:"5%"},barRight:{position:"absolute",left:"50%",right:0,top:"5%",bottom:"5%"},rangeFill:{backgroundColor:e.colors.primaryMuted},dayInner:{width:"90%",height:"90%",alignItems:"center",justifyContent:"center",borderRadius:e.radius.full,..._corners.smoothCorners},dayEdge:{backgroundColor:e.colors.primary},dayMid:{borderRadius:e.radius.none},dayText:{fontSize:e.typography.fontSize.sm,...(0,_index.fontFor)(e,"medium")},dayStruck:{textDecorationLine:"line-through"},dots:{position:"absolute",bottom:e.spacing.xs,flexDirection:"row",gap:e.spacing.xxs},dot:{width:5,height:5,borderRadius:e.radius.full,..._corners.smoothCorners}})};exports.buildCalendarStyles=buildCalendarStyles;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildCalendarStyles=exports.NAV_BUTTON_SIZE=exports.MIN_CELL_SIZE=void 0;var _reactNative=require("react-native"),_index=require("../../theme/index.js"),_scale=require("../../theme/scale.js"),_corners=require("../../utils/corners.js");const MIN_CELL_SIZE=exports.MIN_CELL_SIZE=44,NAV_BUTTON_SIZE=exports.NAV_BUTTON_SIZE=36,DOT_SIZE=5,buildCalendarStyles=e=>{const t=e.components.dateRangePicker,r=t?.navButtonSize??NAV_BUTTON_SIZE;return _reactNative.StyleSheet.create({root:{alignSelf:"stretch"},headerRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",marginBottom:e.spacing.md},navBtn:{width:r,height:r,borderRadius:e.radius.pill,..._corners.smoothCorners,alignItems:"center",justifyContent:"center",backgroundColor:e.colors.background.secondary},navBtnPressed:{backgroundColor:e.colors.surface.pressed},navBtnDisabled:{opacity:.4},navText:{fontSize:(0,_scale.fontSizeOf)(e,t?.navText??"2xl","components.dateRangePicker.navText"),lineHeight:t?.navTextLineHeight??26,color:e.colors.text.primary,...(0,_index.fontFor)(e,"semibold")},headerLabelWrap:{flex:1,alignItems:"center"},headerLabel:{fontSize:e.typography.fontSize.base,color:e.colors.text.primary,...(0,_index.fontFor)(e,"semibold")},weekdayRow:{flexDirection:"row",justifyContent:"center",marginBottom:e.spacing.xs},weekdayCell:{alignItems:"center",paddingVertical:e.spacing.xs},weekdayText:{fontSize:e.typography.fontSize.xs,color:e.colors.text.tertiary,letterSpacing:e.typography.letterSpacing.wide,...(0,_index.fontFor)(e,"medium")},gridRow:{flexDirection:"row",justifyContent:"center"},dayCell:{alignItems:"center",justifyContent:"center",padding:e.spacing.none},barLeft:{position:"absolute",left:0,right:"50%",top:"5%",bottom:"5%"},barRight:{position:"absolute",left:"50%",right:0,top:"5%",bottom:"5%"},rangeFill:{backgroundColor:e.colors.primaryMuted},dayInner:{width:"90%",height:"90%",alignItems:"center",justifyContent:"center",borderRadius:e.radius.pill,..._corners.smoothCorners},dayEdge:{backgroundColor:e.colors.primary},dayMid:{borderRadius:e.radius.none},dayText:{fontSize:e.typography.fontSize.sm,...(0,_index.fontFor)(e,"medium")},dayStruck:{textDecorationLine:"line-through"},dots:{position:"absolute",bottom:e.spacing.xs,flexDirection:"row",gap:e.spacing.xxs},dot:{width:5,height:5,borderRadius:e.radius.pill,..._corners.smoothCorners}})};exports.buildCalendarStyles=buildCalendarStyles;