@webority/mobile-ui 0.95.0 → 0.98.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 (97) hide show
  1. package/dist/canvas-kit/kit.css +0 -0
  2. package/dist/canvas-kit/kit.js +52518 -0
  3. package/dist/canvas-kit/manifest.json +21091 -0
  4. package/dist/canvas-kit/release.json +25 -0
  5. package/lib/commonjs/canvasKit/index.js +1 -1
  6. package/lib/commonjs/components/AppBar/AppBar.js +1 -1
  7. package/lib/commonjs/components/Avatar/Avatar.js +1 -1
  8. package/lib/commonjs/components/Banner/Banner.js +1 -1
  9. package/lib/commonjs/components/BottomNavigation/BottomNavigation.js +1 -1
  10. package/lib/commonjs/components/Button/Button.js +1 -1
  11. package/lib/commonjs/components/Calendar/Calendar.js +1 -1
  12. package/lib/commonjs/components/Checkbox/Checkbox.js +1 -1
  13. package/lib/commonjs/components/Chip/Chip.js +1 -1
  14. package/lib/commonjs/components/DatePicker/DatePicker.js +1 -1
  15. package/lib/commonjs/components/EmptyState/EmptyState.meta.js +1 -1
  16. package/lib/commonjs/components/FilePicker/FilePicker.js +1 -1
  17. package/lib/commonjs/components/IconButton/IconButton.js +1 -1
  18. package/lib/commonjs/components/ImageGallery/ImageGallery.js +1 -1
  19. package/lib/commonjs/components/InlineSelect/InlineSelect.js +1 -1
  20. package/lib/commonjs/components/Input/Input.js +1 -1
  21. package/lib/commonjs/components/KeyboardToolbar/KeyboardToolbar.js +1 -1
  22. package/lib/commonjs/components/OptionSheet/OptionSheet.js +1 -1
  23. package/lib/commonjs/components/PhoneNumberInput/PhoneNumberInput.js +1 -1
  24. package/lib/commonjs/components/Radio/Radio.js +1 -1
  25. package/lib/commonjs/components/Rating/Rating.js +1 -1
  26. package/lib/commonjs/components/RichTextEditor/RichTextEditor.js +1 -1
  27. package/lib/commonjs/components/SearchBar/SearchBar.js +1 -1
  28. package/lib/commonjs/components/SliderField/SliderField.js +1 -1
  29. package/lib/commonjs/components/Stepper/Stepper.js +1 -1
  30. package/lib/commonjs/components/Switch/Switch.js +1 -1
  31. package/lib/commonjs/components/Text/Text.js +1 -1
  32. package/lib/commonjs/components/Toast/Toast.js +1 -1
  33. package/lib/commonjs/index.js +1 -1
  34. package/lib/commonjs/theme/index.js +1 -1
  35. package/lib/module/canvasKit/index.js +1 -1
  36. package/lib/module/components/AppBar/AppBar.js +1 -1
  37. package/lib/module/components/Avatar/Avatar.js +1 -1
  38. package/lib/module/components/Banner/Banner.js +1 -1
  39. package/lib/module/components/BottomNavigation/BottomNavigation.js +1 -1
  40. package/lib/module/components/Button/Button.js +1 -1
  41. package/lib/module/components/Calendar/Calendar.js +1 -1
  42. package/lib/module/components/Checkbox/Checkbox.js +1 -1
  43. package/lib/module/components/Chip/Chip.js +1 -1
  44. package/lib/module/components/DatePicker/DatePicker.js +1 -1
  45. package/lib/module/components/EmptyState/EmptyState.meta.js +1 -1
  46. package/lib/module/components/FilePicker/FilePicker.js +1 -1
  47. package/lib/module/components/IconButton/IconButton.js +1 -1
  48. package/lib/module/components/ImageGallery/ImageGallery.js +1 -1
  49. package/lib/module/components/InlineSelect/InlineSelect.js +1 -1
  50. package/lib/module/components/Input/Input.js +1 -1
  51. package/lib/module/components/KeyboardToolbar/KeyboardToolbar.js +1 -1
  52. package/lib/module/components/OptionSheet/OptionSheet.js +1 -1
  53. package/lib/module/components/PhoneNumberInput/PhoneNumberInput.js +1 -1
  54. package/lib/module/components/Radio/Radio.js +1 -1
  55. package/lib/module/components/Rating/Rating.js +1 -1
  56. package/lib/module/components/RichTextEditor/RichTextEditor.js +1 -1
  57. package/lib/module/components/SearchBar/SearchBar.js +1 -1
  58. package/lib/module/components/SliderField/SliderField.js +1 -1
  59. package/lib/module/components/Stepper/Stepper.js +1 -1
  60. package/lib/module/components/Switch/Switch.js +1 -1
  61. package/lib/module/components/Text/Text.js +1 -1
  62. package/lib/module/components/Toast/Toast.js +1 -1
  63. package/lib/module/index.js +1 -1
  64. package/lib/module/theme/index.js +1 -1
  65. package/lib/typescript/commonjs/canvasKit/index.d.ts +20 -3
  66. package/lib/typescript/commonjs/components/AppBar/AppBar.d.ts +1 -0
  67. package/lib/typescript/commonjs/components/Button/Button.meta.d.ts +1 -1
  68. package/lib/typescript/commonjs/components/Card/Card.meta.d.ts +1 -1
  69. package/lib/typescript/commonjs/components/Checkbox/Checkbox.meta.d.ts +1 -1
  70. package/lib/typescript/commonjs/components/DecimalInput/DecimalInput.meta.d.ts +1 -1
  71. package/lib/typescript/commonjs/components/EmptyState/EmptyState.meta.d.ts +1 -1
  72. package/lib/typescript/commonjs/components/Input/Input.meta.d.ts +1 -1
  73. package/lib/typescript/commonjs/components/Radio/Radio.meta.d.ts +1 -1
  74. package/lib/typescript/commonjs/components/SearchBar/SearchBar.meta.d.ts +1 -1
  75. package/lib/typescript/commonjs/components/Switch/Switch.meta.d.ts +1 -1
  76. package/lib/typescript/commonjs/components/Text/Text.meta.d.ts +1 -1
  77. package/lib/typescript/commonjs/index.d.ts +2 -3
  78. package/lib/typescript/commonjs/theme/index.d.ts +0 -20
  79. package/lib/typescript/module/canvasKit/index.d.ts +20 -3
  80. package/lib/typescript/module/components/AppBar/AppBar.d.ts +1 -0
  81. package/lib/typescript/module/components/Button/Button.meta.d.ts +1 -1
  82. package/lib/typescript/module/components/Card/Card.meta.d.ts +1 -1
  83. package/lib/typescript/module/components/Checkbox/Checkbox.meta.d.ts +1 -1
  84. package/lib/typescript/module/components/DecimalInput/DecimalInput.meta.d.ts +1 -1
  85. package/lib/typescript/module/components/EmptyState/EmptyState.meta.d.ts +1 -1
  86. package/lib/typescript/module/components/Input/Input.meta.d.ts +1 -1
  87. package/lib/typescript/module/components/Radio/Radio.meta.d.ts +1 -1
  88. package/lib/typescript/module/components/SearchBar/SearchBar.meta.d.ts +1 -1
  89. package/lib/typescript/module/components/Switch/Switch.meta.d.ts +1 -1
  90. package/lib/typescript/module/components/Text/Text.meta.d.ts +1 -1
  91. package/lib/typescript/module/index.d.ts +2 -3
  92. package/lib/typescript/module/theme/index.d.ts +0 -20
  93. package/package.json +10 -8
  94. package/lib/commonjs/initUI.js +0 -1
  95. package/lib/module/initUI.js +0 -1
  96. package/lib/typescript/commonjs/initUI.d.ts +0 -12
  97. package/lib/typescript/module/initUI.d.ts +0 -12
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Stepper=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index2=require("../Skeleton/index.js"),_jsxRuntime=require("react/jsx-runtime");const CIRCLE_SIZE=24,SEGMENT_HEIGHT=4,PULSE_SIZE=32,PULSE_DURATION=1100,toneColorFor=(e,t)=>"success"===t?e.colors.success:e.colors.primary,toneOnColorFor=(e,t)=>"success"===t?e.colors["on-success"]:e.colors["on-primary"],StepCircle=({index:e,step:t,status:i,toneColor:s,upcomingColor:r,upcomingFillColor:n,textOnColor:o,upcomingTextColor:a,interactive:l,canPress:c,totalSteps:u,onPress:d,pulseEnabled:x,circleStyles:m,circleSlotStyle:p})=>{const _="active"===i,h=(0,_index.useTheme)(),v=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current,y=(0,_react.useRef)((0,_index.createAnimatedValue)(.5)).current;(0,_react.useEffect)(()=>{if(!_||!x)return v.setValue(1),void y.setValue(0);const e=_reactNative.Animated.loop(_reactNative.Animated.parallel([_reactNative.Animated.sequence([_reactNative.Animated.timing(v,{toValue:1.4,duration:1100,easing:_reactNative.Easing.out(_reactNative.Easing.ease),useNativeDriver:!0}),_reactNative.Animated.timing(v,{toValue:1,duration:0,useNativeDriver:!0})]),_reactNative.Animated.sequence([_reactNative.Animated.timing(y,{toValue:0,duration:1100,easing:_reactNative.Easing.out(_reactNative.Easing.ease),useNativeDriver:!0}),_reactNative.Animated.timing(y,{toValue:.5,duration:0,useNativeDriver:!0})])]));return e.start(),()=>e.stop()},[_,v,y,x]);const j="upcoming"===i?n:s,g="upcoming"===i?r:s,b="upcoming"===i?a:o,S="complete"===i,R=`Step ${e+1} of ${u}, ${t.label}, ${i}`,f=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:m.relative,children:[_&&x?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[m.pulse,{width:32,height:32,borderRadius:h.radius.pill,..._corners.smoothCorners,backgroundColor:s,opacity:y,transform:[{scale:v}]}]}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[m.circle,{width:24,height:24,borderRadius:h.radius.pill,..._corners.smoothCorners,backgroundColor:j,borderColor:g},p],children:t.icon?t.icon:S?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[m.glyph,{color:b}],children:"✓"}):(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[m.glyph,{color:b}],children:e+1})})]});return l?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>d(e),disabled:!c,accessibilityRole:"button",accessibilityLabel:R,accessibilityState:{selected:_,disabled:!c},"aria-selected":_,"aria-disabled":!c,hitSlop:8,children:f}):(0,_jsxRuntime.jsx)(_reactNative.View,{accessibilityRole:"text",accessibilityLabel:R,accessibilityState:{selected:_},"aria-selected":_,children:f})},buildCircleStyles=e=>_reactNative.StyleSheet.create({relative:{alignItems:"center",justifyContent:"center"},pulse:{position:"absolute"},circle:{borderWidth:2,alignItems:"center",justifyContent:"center"},glyph:{fontSize:e.text.sm.size,fontWeight:"600",includeFontPadding:!1}}),Stepper=exports.Stepper=(0,_react.forwardRef)((e,t)=>{const{steps:i,activeStep:s,defaultActiveStep:r=0,pressMode:n="none",onStepPress:o,onActiveStepChange:a,variant:l="horizontal",tone:c="primary",formatCaption:u,showCaption:d=!0,loading:x=!1,accessibilityLabel:m,style:p,containerStyle:_,circleStyle:h,labelStyle:v,connectorStyle:y,haptic:j,testID:g}=e,b=(0,_index.useTheme)(),S=b.settings.components.stepper?.pulseAnimation??!1,R=(0,_hapticUtils.resolveHaptic)(j,"selection"),f=(0,_react.useMemo)(()=>buildStyles(b),[b]),w=(0,_react.useMemo)(()=>buildCircleStyles(b),[b]),C=toneColorFor(b,c),N=b.colors.border,V=b.colors.bg,k=b.colors["text-muted"],I=toneOnColorFor(b,c),A=i.length,L="none"!==n,T=void 0!==s,[$,D]=(0,_react.useState)(r),E=T?s:$,P=null==E||E<0?null:E,F=i.map((e,t)=>(e=>null===P?"upcoming":e<P?"complete":e===P?"active":"upcoming")(t)),z=F.filter(e=>"upcoming"!==e).length,O=F.filter(e=>"complete"===e).length,canPressStatus=e=>"back"===n?"complete"===e:L,handleStepPress=e=>{if(!canPressStatus(F[e]))return;R&&(0,_hapticUtils.triggerHaptic)(R),o?.(e);const t="select"===n&&e===P?null:e;T||D(t),a?.(t)},B=(0,_react.useRef)((0,_index.createAnimatedValue)(z)).current,q=(0,_react.useRef)(z);(0,_react.useEffect)(()=>{const e=q.current;if(e===z)return;q.current=z;const t=_reactNative.Animated.timing(B,{toValue:z,duration:b.motion.duration.default*Math.abs(z-e),easing:_reactNative.Easing.linear,useNativeDriver:!1});return t.start(),()=>t.stop()},[z,B,b.motion]);const sliceOf=e=>B.interpolate({inputRange:[e,e+1],outputRange:["0%","100%"],extrapolate:"clamp"}),M=A<=1?"0%":B.interpolate({inputRange:[1,A],outputRange:["0%","100%"],extrapolate:"clamp"}),U=null!==P&&P<A?P:null,H=m??(null!==U?`Progress: step ${U+1} of ${A}`:`Progress: ${O} of ${A} steps done`),[G,W]=(0,_react.useState)(0),Z=A>0&&G>0?G/(2*A):0,J=(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,style:[f.container,_,p],testID:g,accessibilityRole:"progressbar",accessibilityLabel:H,accessibilityValue:{min:0,max:A,now:z},children:"segmented"===l?(()=>{const e=null!==U?i[U]:void 0,t=d?u?u(U,A,e):null!==U?`Step ${U+1} of ${A}${e?.label?` · ${e.label}`:""}`:`${O} of ${A} done`:"";return(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[d?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[f.sCaption,{color:b.colors["text-muted"],fontSize:b.text.sm.size,marginBottom:b.space.sm},v],numberOfLines:1,children:t}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:f.sRow,children:i.map((e,t)=>{const i=F[t],s=`Step ${t+1} of ${A}, ${e.label}, ${i}`,r=(0,_jsxRuntime.jsx)(_reactNative.View,{testID:g?`${g}-segment-${t}`:void 0,style:[f.sTrack,{backgroundColor:N},y],children:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[f.sFill,{backgroundColor:C,width:sliceOf(t)}]})});if(L){const n=canPressStatus(i);return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:f.sItem,onPress:()=>handleStepPress(t),disabled:!n,accessibilityRole:"button",accessibilityLabel:s,accessibilityState:{selected:"active"===i,disabled:!n},"aria-selected":"active"===i,"aria-disabled":!n,hitSlop:{top:12,bottom:12},children:r},e.key)}return(0,_jsxRuntime.jsx)(_reactNative.View,{style:f.sItem,accessibilityRole:"text",accessibilityLabel:s,accessibilityState:{selected:"active"===i},"aria-selected":"active"===i,children:r},e.key)})})]})})():"vertical"===l?(0,_jsxRuntime.jsx)(_reactNative.View,{style:f.vCol,children:i.map((e,t)=>{const i=F[t],s=t===A-1;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:f.vRow,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:f.vLeft,children:[(0,_jsxRuntime.jsx)(StepCircle,{index:t,step:e,status:i,toneColor:C,upcomingColor:N,upcomingFillColor:V,onPressColor:C,textOnColor:I,upcomingTextColor:k,interactive:L,canPress:canPressStatus(i),totalSteps:A,onPress:handleStepPress,pulseEnabled:S,circleStyles:w,circleSlotStyle:h}),s?null:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[f.vConnectorContainer,y],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.vConnectorTrack,{backgroundColor:N}]}),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[f.vConnectorFill,{backgroundColor:C,height:sliceOf(t+1)}]})]})]}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:f.vBody,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[f.vLabel,{color:"upcoming"===i?b.colors["text-subtle"]:b.colors["text-body"],fontSize:b.text.base.size,fontWeight:b.weight.semibold},v],numberOfLines:1,children:e?.label??" "}),e.description?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[f.vDescription,{color:b.colors["text-muted"],fontSize:b.text.sm.size}],numberOfLines:3,children:e.description}):null]})]},e.key)})}):(0,_jsxRuntime.jsxs)(_reactNative.View,{style:f.hRow,onLayout:e=>W(e.nativeEvent.layout.width),children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{pointerEvents:"none",style:[f.hConnectorContainer,{left:Z,right:Z},y],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.hConnectorTrack,{backgroundColor:N}]}),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[f.hConnectorFill,{backgroundColor:C,width:M}]})]}),i.map((e,t)=>{const i=F[t];return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:f.hStepItem,children:[(0,_jsxRuntime.jsx)(StepCircle,{index:t,step:e,status:i,toneColor:C,upcomingColor:N,upcomingFillColor:V,onPressColor:C,textOnColor:I,upcomingTextColor:k,interactive:L,canPress:canPressStatus(i),totalSteps:A,onPress:handleStepPress,pulseEnabled:S,circleStyles:w,circleSlotStyle:h}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[f.hLabel,{color:"upcoming"===i?b.colors["text-subtle"]:b.colors["text-body"],fontSize:b.text.xs.size},v],numberOfLines:1,children:e?.label??" "})]},e.key)})]})});return x?(0,_jsxRuntime.jsx)(StepperSkeleton,{...e}):J});Stepper.displayName="Stepper";const StepperSkeleton=({steps:e,variant:t="horizontal",showCaption:i=!0,containerStyle:s,style:r,testID:n})=>{const o=(0,_index.useTheme)(),a=(0,_react.useMemo)(()=>buildStyles(o),[o]),l=(0,_react.useMemo)(()=>buildSkeletonStyles(o),[o]),c=e.length||3;return"segmented"===t?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[a.container,s,r],testID:n,accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,children:[i?(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"45%",height:14,style:{marginBottom:o.space.sm}}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:a.sRow,children:Array.from({length:c}).map((e,t)=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:a.sItem,children:(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:"100%",height:4,radius:"pill"})},`sk-step-${t}`))})]}):"vertical"===t?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[a.container,s,r],testID:n,accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:l.vCol,children:Array.from({length:c}).map((e,t)=>{const i=t===c-1;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:l.vRow,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[l.vLeft,{width:32}],children:[(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"circle",width:24,height:24}),i?null:(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:2,height:36})]}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:l.vBody,children:[(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"55%",height:16,style:{marginBottom:o.space.xs}}),(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"80%",height:12})]})]},`sk-step-${t}`)})})}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[a.container,s,r],testID:n,accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:a.hRow,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[a.hConnectorContainer,{left:50/c+"%",right:50/c+"%"}],children:(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:"100%",height:2,radius:"pill"})}),Array.from({length:c}).map((e,t)=>(0,_jsxRuntime.jsxs)(_reactNative.View,{style:a.hStepItem,children:[(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"circle",width:24,height:24}),(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"80%",height:12,style:{marginTop:o.space.xs}})]},`sk-step-${t}`))]})})};StepperSkeleton.displayName="StepperSkeleton",Stepper.Skeleton=StepperSkeleton;const buildSkeletonStyles=e=>_reactNative.StyleSheet.create({vCol:{flexDirection:"column"},vRow:{flexDirection:"row",alignItems:"flex-start"},vLeft:{alignItems:"center"},vBody:{flex:1,paddingLeft:e.space.md,paddingBottom:e.space.lg}}),buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},hRow:{flexDirection:"row",alignItems:"flex-start",justifyContent:"space-between",position:"relative"},hConnectorContainer:{position:"absolute",top:11,height:2,flexDirection:"row",alignItems:"center"},hConnectorTrack:{position:"absolute",left:0,right:0,height:2,borderRadius:e.radius.pill,..._corners.smoothCorners},hConnectorFill:{position:"absolute",left:0,height:2,borderRadius:e.radius.pill,..._corners.smoothCorners},hStepItem:{alignItems:"center",flex:1},hLabel:{marginTop:e.space.xs,textAlign:"center"},vCol:{flexDirection:"column"},vRow:{flexDirection:"row",alignItems:"flex-start"},vLeft:{alignItems:"center",alignSelf:"stretch",width:32},vConnectorContainer:{flex:1,width:2,minHeight:32,position:"relative",alignSelf:"center"},vConnectorTrack:{position:"absolute",top:0,bottom:0,width:2,borderRadius:e.radius.pill,..._corners.smoothCorners},vConnectorFill:{position:"absolute",top:0,width:2,borderRadius:e.radius.pill,..._corners.smoothCorners},vBody:{flex:1,paddingLeft:e.space.sm,paddingBottom:e.space.md},vLabel:{marginBottom:e.space.xxs},vDescription:{},sCaption:{includeFontPadding:!1},sRow:{flexDirection:"row",columnGap:e.space.xs},sItem:{flex:1},sTrack:{height:4,borderRadius:e.radius.pill,overflow:"hidden"},sFill:{height:4,borderRadius:e.radius.pill}});var _default=exports.default=Stepper;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Stepper=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_hitSlop=require("../../utils/hitSlop.js"),_index2=require("../Skeleton/index.js"),_jsxRuntime=require("react/jsx-runtime");const CIRCLE_SIZE=24,SEGMENT_HEIGHT=4,PULSE_SIZE=32,PULSE_DURATION=1100,toneColorFor=(e,t)=>"success"===t?e.colors.success:e.colors.primary,toneOnColorFor=(e,t)=>"success"===t?e.colors["on-success"]:e.colors["on-primary"],StepCircle=({index:e,step:t,status:i,toneColor:s,upcomingColor:r,upcomingFillColor:n,textOnColor:o,upcomingTextColor:l,interactive:a,canPress:c,totalSteps:u,onPress:d,pulseEnabled:p,circleStyles:x,circleSlotStyle:m})=>{const _="active"===i,h=(0,_index.useTheme)(),v=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current,y=(0,_react.useRef)((0,_index.createAnimatedValue)(.5)).current;(0,_react.useEffect)(()=>{if(!_||!p)return v.setValue(1),void y.setValue(0);const e=_reactNative.Animated.loop(_reactNative.Animated.parallel([_reactNative.Animated.sequence([_reactNative.Animated.timing(v,{toValue:1.4,duration:1100,easing:_reactNative.Easing.out(_reactNative.Easing.ease),useNativeDriver:!0}),_reactNative.Animated.timing(v,{toValue:1,duration:0,useNativeDriver:!0})]),_reactNative.Animated.sequence([_reactNative.Animated.timing(y,{toValue:0,duration:1100,easing:_reactNative.Easing.out(_reactNative.Easing.ease),useNativeDriver:!0}),_reactNative.Animated.timing(y,{toValue:.5,duration:0,useNativeDriver:!0})])]));return e.start(),()=>e.stop()},[_,v,y,p]);const j="upcoming"===i?n:s,g="upcoming"===i?r:s,b="upcoming"===i?l:o,S="complete"===i,R=`Step ${e+1} of ${u}, ${t.label}, ${i}`,f=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:x.relative,children:[_&&p?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[x.pulse,{width:32,height:32,borderRadius:h.radius.pill,..._corners.smoothCorners,backgroundColor:s,opacity:y,transform:[{scale:v}]}]}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[x.circle,{width:24,height:24,borderRadius:h.radius.pill,..._corners.smoothCorners,backgroundColor:j,borderColor:g},m],children:t.icon?t.icon:S?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[x.glyph,{color:b}],children:"✓"}):(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[x.glyph,{color:b}],children:e+1})})]});return a?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>d(e),disabled:!c,accessibilityRole:"button",accessibilityLabel:R,accessibilityState:{selected:_,disabled:!c},"aria-selected":_,"aria-disabled":!c,hitSlop:8,...(0,_hitSlop.hitSlopMarker)(8),children:f}):(0,_jsxRuntime.jsx)(_reactNative.View,{accessibilityRole:"text",accessibilityLabel:R,accessibilityState:{selected:_},"aria-selected":_,children:f})},buildCircleStyles=e=>_reactNative.StyleSheet.create({relative:{alignItems:"center",justifyContent:"center"},pulse:{position:"absolute"},circle:{borderWidth:2,alignItems:"center",justifyContent:"center"},glyph:{fontSize:e.text.sm.size,fontWeight:"600",includeFontPadding:!1}}),Stepper=exports.Stepper=(0,_react.forwardRef)((e,t)=>{const{steps:i,activeStep:s,defaultActiveStep:r=0,pressMode:n="none",onStepPress:o,onActiveStepChange:l,variant:a="horizontal",tone:c="primary",formatCaption:u,showCaption:d=!0,loading:p=!1,accessibilityLabel:x,style:m,containerStyle:_,circleStyle:h,labelStyle:v,connectorStyle:y,haptic:j,testID:g}=e,b=(0,_index.useTheme)(),S=b.settings.components.stepper?.pulseAnimation??!1,R=(0,_hapticUtils.resolveHaptic)(j,"selection"),f=(0,_react.useMemo)(()=>buildStyles(b),[b]),w=(0,_react.useMemo)(()=>buildCircleStyles(b),[b]),C=toneColorFor(b,c),N=b.colors.border,V=b.colors.bg,k=b.colors["text-muted"],I=toneOnColorFor(b,c),A=i.length,L="none"!==n,T=void 0!==s,[$,D]=(0,_react.useState)(r),E=T?s:$,P=null==E||E<0?null:E,F=i.map((e,t)=>(e=>null===P?"upcoming":e<P?"complete":e===P?"active":"upcoming")(t)),z=F.filter(e=>"upcoming"!==e).length,O=F.filter(e=>"complete"===e).length,canPressStatus=e=>"back"===n?"complete"===e:L,handleStepPress=e=>{if(!canPressStatus(F[e]))return;R&&(0,_hapticUtils.triggerHaptic)(R),o?.(e);const t="select"===n&&e===P?null:e;T||D(t),l?.(t)},q=(0,_react.useRef)((0,_index.createAnimatedValue)(z)).current,B=(0,_react.useRef)(z);(0,_react.useEffect)(()=>{const e=B.current;if(e===z)return;B.current=z;const t=_reactNative.Animated.timing(q,{toValue:z,duration:b.motion.duration.default*Math.abs(z-e),easing:_reactNative.Easing.linear,useNativeDriver:!1});return t.start(),()=>t.stop()},[z,q,b.motion]);const sliceOf=e=>q.interpolate({inputRange:[e,e+1],outputRange:["0%","100%"],extrapolate:"clamp"}),M=A<=1?"0%":q.interpolate({inputRange:[1,A],outputRange:["0%","100%"],extrapolate:"clamp"}),U=null!==P&&P<A?P:null,H=x??(null!==U?`Progress: step ${U+1} of ${A}`:`Progress: ${O} of ${A} steps done`),[G,W]=(0,_react.useState)(0),Z=A>0&&G>0?G/(2*A):0,J=(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,style:[f.container,_,m],testID:g,accessibilityRole:"progressbar",accessibilityLabel:H,accessibilityValue:{min:0,max:A,now:z},children:"segmented"===a?(()=>{const e=null!==U?i[U]:void 0,t=d?u?u(U,A,e):null!==U?`Step ${U+1} of ${A}${e?.label?` · ${e.label}`:""}`:`${O} of ${A} done`:"";return(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[d?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[f.sCaption,{color:b.colors["text-muted"],fontSize:b.text.sm.size,marginBottom:b.space.sm},v],numberOfLines:1,children:t}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:f.sRow,children:i.map((e,t)=>{const i=F[t],s=`Step ${t+1} of ${A}, ${e.label}, ${i}`,r=(0,_jsxRuntime.jsx)(_reactNative.View,{testID:g?`${g}-segment-${t}`:void 0,style:[f.sTrack,{backgroundColor:N},y],children:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[f.sFill,{backgroundColor:C,width:sliceOf(t)}]})});if(L){const n=canPressStatus(i);return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:f.sItem,onPress:()=>handleStepPress(t),disabled:!n,accessibilityRole:"button",accessibilityLabel:s,accessibilityState:{selected:"active"===i,disabled:!n},"aria-selected":"active"===i,"aria-disabled":!n,hitSlop:{top:12,bottom:12},...(0,_hitSlop.hitSlopMarker)({top:12,bottom:12}),children:r},e.key)}return(0,_jsxRuntime.jsx)(_reactNative.View,{style:f.sItem,accessibilityRole:"text",accessibilityLabel:s,accessibilityState:{selected:"active"===i},"aria-selected":"active"===i,children:r},e.key)})})]})})():"vertical"===a?(0,_jsxRuntime.jsx)(_reactNative.View,{style:f.vCol,children:i.map((e,t)=>{const i=F[t],s=t===A-1;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:f.vRow,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:f.vLeft,children:[(0,_jsxRuntime.jsx)(StepCircle,{index:t,step:e,status:i,toneColor:C,upcomingColor:N,upcomingFillColor:V,onPressColor:C,textOnColor:I,upcomingTextColor:k,interactive:L,canPress:canPressStatus(i),totalSteps:A,onPress:handleStepPress,pulseEnabled:S,circleStyles:w,circleSlotStyle:h}),s?null:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[f.vConnectorContainer,y],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.vConnectorTrack,{backgroundColor:N}]}),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[f.vConnectorFill,{backgroundColor:C,height:sliceOf(t+1)}]})]})]}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:f.vBody,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[f.vLabel,{color:"upcoming"===i?b.colors["text-subtle"]:b.colors["text-body"],fontSize:b.text.base.size,fontWeight:b.weight.semibold},v],numberOfLines:1,children:e?.label??" "}),e.description?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[f.vDescription,{color:b.colors["text-muted"],fontSize:b.text.sm.size}],numberOfLines:3,children:e.description}):null]})]},e.key)})}):(0,_jsxRuntime.jsxs)(_reactNative.View,{style:f.hRow,onLayout:e=>W(e.nativeEvent.layout.width),children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{pointerEvents:"none",style:[f.hConnectorContainer,{left:Z,right:Z},y],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.hConnectorTrack,{backgroundColor:N}]}),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[f.hConnectorFill,{backgroundColor:C,width:M}]})]}),i.map((e,t)=>{const i=F[t];return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:f.hStepItem,children:[(0,_jsxRuntime.jsx)(StepCircle,{index:t,step:e,status:i,toneColor:C,upcomingColor:N,upcomingFillColor:V,onPressColor:C,textOnColor:I,upcomingTextColor:k,interactive:L,canPress:canPressStatus(i),totalSteps:A,onPress:handleStepPress,pulseEnabled:S,circleStyles:w,circleSlotStyle:h}),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[f.hLabel,{color:"upcoming"===i?b.colors["text-subtle"]:b.colors["text-body"],fontSize:b.text.xs.size},v],numberOfLines:1,children:e?.label??" "})]},e.key)})]})});return p?(0,_jsxRuntime.jsx)(StepperSkeleton,{...e}):J});Stepper.displayName="Stepper";const StepperSkeleton=({steps:e,variant:t="horizontal",showCaption:i=!0,containerStyle:s,style:r,testID:n})=>{const o=(0,_index.useTheme)(),l=(0,_react.useMemo)(()=>buildStyles(o),[o]),a=(0,_react.useMemo)(()=>buildSkeletonStyles(o),[o]),c=e.length||3;return"segmented"===t?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[l.container,s,r],testID:n,accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,children:[i?(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"45%",height:14,style:{marginBottom:o.space.sm}}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:l.sRow,children:Array.from({length:c}).map((e,t)=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:l.sItem,children:(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:"100%",height:4,radius:"pill"})},`sk-step-${t}`))})]}):"vertical"===t?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[l.container,s,r],testID:n,accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:a.vCol,children:Array.from({length:c}).map((e,t)=>{const i=t===c-1;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:a.vRow,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[a.vLeft,{width:32}],children:[(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"circle",width:24,height:24}),i?null:(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:2,height:36})]}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:a.vBody,children:[(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"55%",height:16,style:{marginBottom:o.space.xs}}),(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"80%",height:12})]})]},`sk-step-${t}`)})})}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[l.container,s,r],testID:n,accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:l.hRow,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[l.hConnectorContainer,{left:50/c+"%",right:50/c+"%"}],children:(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:"100%",height:2,radius:"pill"})}),Array.from({length:c}).map((e,t)=>(0,_jsxRuntime.jsxs)(_reactNative.View,{style:l.hStepItem,children:[(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"circle",width:24,height:24}),(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:"80%",height:12,style:{marginTop:o.space.xs}})]},`sk-step-${t}`))]})})};StepperSkeleton.displayName="StepperSkeleton",Stepper.Skeleton=StepperSkeleton;const buildSkeletonStyles=e=>_reactNative.StyleSheet.create({vCol:{flexDirection:"column"},vRow:{flexDirection:"row",alignItems:"flex-start"},vLeft:{alignItems:"center"},vBody:{flex:1,paddingLeft:e.space.md,paddingBottom:e.space.lg}}),buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},hRow:{flexDirection:"row",alignItems:"flex-start",justifyContent:"space-between",position:"relative"},hConnectorContainer:{position:"absolute",top:11,height:2,flexDirection:"row",alignItems:"center"},hConnectorTrack:{position:"absolute",left:0,right:0,height:2,borderRadius:e.radius.pill,..._corners.smoothCorners},hConnectorFill:{position:"absolute",left:0,height:2,borderRadius:e.radius.pill,..._corners.smoothCorners},hStepItem:{alignItems:"center",flex:1},hLabel:{marginTop:e.space.xs,textAlign:"center"},vCol:{flexDirection:"column"},vRow:{flexDirection:"row",alignItems:"flex-start"},vLeft:{alignItems:"center",alignSelf:"stretch",width:32},vConnectorContainer:{flex:1,width:2,minHeight:32,position:"relative",alignSelf:"center"},vConnectorTrack:{position:"absolute",top:0,bottom:0,width:2,borderRadius:e.radius.pill,..._corners.smoothCorners},vConnectorFill:{position:"absolute",top:0,width:2,borderRadius:e.radius.pill,..._corners.smoothCorners},vBody:{flex:1,paddingLeft:e.space.sm,paddingBottom:e.space.md},vLabel:{marginBottom:e.space.xxs},vDescription:{},sCaption:{includeFontPadding:!1},sRow:{flexDirection:"row",columnGap:e.space.xs},sItem:{flex:1},sTrack:{height:4,borderRadius:e.radius.pill,overflow:"hidden"},sFill:{height:4,borderRadius:e.radius.pill}});var _default=exports.default=Stepper;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Switch=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_ChoiceText=require("../FieldBase/ChoiceText.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_jsxRuntime=require("react/jsx-runtime");const toneColor=(e,t)=>{switch(t){case"success":return e.colors.success;case"warning":return e.colors.warning;case"danger":return e.colors.danger;default:return e.colors.primary}},Switch=exports.Switch=(0,_react.forwardRef)((e,t)=>{const{value:i,defaultValue:s,onChange:r,disabled:a=!1,size:n="md",tone:o="primary",label:c,description:l,error:d,labelLines:u,layout:h="inline",accessibilityLabel:p,haptic:_="selection",bounce:m=!1,style:b,containerStyle:x,trackStyle:f,thumbStyle:g,testID:y,...v}=e,[w,j]=(0,_index.useControllableState)({value:i,defaultValue:s??!1,onChange:r}),R=(0,_index2.useTheme)(),C=(0,_react.useMemo)(()=>(0,_index2.resolveSwitchSize)(R,n),[R,n]),S=R.colors.thumb,N=(0,_react.useMemo)(()=>buildStyles(R),[R]),T="dark"===R.mode?R.colors.neutral:R.colors["surface-disabled"],k=toneColor(R,o),V=(0,_react.useRef)((0,_index2.createAnimatedValue)(w?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.spring(V,{toValue:w?1:0,damping:R.motion.spring.snappy.damping,stiffness:R.motion.spring.snappy.stiffness,mass:R.motion.spring.snappy.mass,useNativeDriver:!0});return e.start(),()=>e.stop()},[w,V,R.motion.spring.snappy]);const A=(0,_react.useRef)((0,_index2.createAnimatedValue)(w?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(A,{toValue:w?1:0,duration:R.motion.duration.fast,easing:_reactNative.Easing.out(_reactNative.Easing.ease),useNativeDriver:!1});return e.start(),()=>e.stop()},[w,A,R.motion.duration.fast]);const F=C.padding,D=C["track-width"]-C["thumb-size"]-C.padding,q=V.interpolate({inputRange:[0,1],outputRange:[F,D]}),B=A.interpolate({inputRange:[0,1],outputRange:[T,k]}),L=(0,_react.useRef)((0,_index2.createAnimatedValue)(1)).current,z=(0,_react.useRef)(!0);(0,_react.useEffect)(()=>{if(!m)return;if(z.current)return void(z.current=!1);const e=_reactNative.Animated.sequence([_reactNative.Animated.spring(L,{toValue:1.15,damping:10,stiffness:220,mass:1,useNativeDriver:!0}),_reactNative.Animated.spring(L,{toValue:1,damping:14,stiffness:240,mass:1,useNativeDriver:!0})]);return e.start(),()=>e.stop()},[w,m,L]);const handlePress=e=>{a||(!1!==_&&(0,_hapticUtils.triggerHaptic)(_),j(!w),v.onPressOut?.(e))},E=p??(0,_FieldBase.fieldTextAsString)(c),H=(0,_FieldBase.hasFieldText)(c)||(0,_ChoiceText.hasChoiceDetail)(l,d),P=(!0===d||(0,_FieldBase.hasFieldText)(d))&&!w&&!a,I="row"===h&&H,M=(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[N.track,{width:C["track-width"],height:C["track-height"],borderRadius:R.radius.pill,..._corners.smoothCorners,backgroundColor:B},f],children:[P?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[N.errorRing,{borderRadius:R.radius.pill,..._corners.smoothCorners,borderWidth:R.size.border,borderColor:R.colors["field-border-error"]}]}):null,(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[N.thumb,R.shadow.card,{backgroundColor:S,width:C["thumb-size"],height:C["thumb-size"],borderRadius:R.radius.pill,..._corners.smoothCorners,transform:[{translateX:q},{scale:L}]},g]})]});if(I)return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:t,onPress:handlePress,disabled:a,accessibilityRole:"switch",accessibilityLabel:E,accessibilityHint:v.accessibilityHint??(0,_FieldBase.fieldTextAsString)(l),accessibilityState:{checked:w,disabled:a},"aria-checked":w,"aria-disabled":a,testID:y,...v,style:({pressed:e})=>[N.row,N.spreadRow,(0,_ChoiceText.hasChoiceDetail)(l,d)?N.rowTop:null,{opacity:a?.55:e?.9:1},x,b],children:[(0,_jsxRuntime.jsx)(_ChoiceText.ChoiceText,{label:c,description:l,error:d,disabled:a,labelLines:u||void 0,descriptionLines:u||void 0,style:N.spreadText}),M]});const U=(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:t,onPress:handlePress,disabled:a,accessibilityRole:"switch",accessibilityLabel:E,accessibilityHint:v.accessibilityHint??(0,_FieldBase.fieldTextAsString)(l),accessibilityState:{checked:w,disabled:a},"aria-checked":w,"aria-disabled":a,testID:y,hitSlop:8,...v,style:({pressed:e})=>[{opacity:a?.55:e?.9:1},H?null:b],children:M});return H?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[N.row,(0,_ChoiceText.hasChoiceDetail)(l,d)?N.rowTop:null,x,b],children:[U,(0,_jsxRuntime.jsx)(_ChoiceText.ChoiceText,{label:c,description:l,error:d,disabled:a,labelLines:u||void 0,descriptionLines:u||void 0,style:N.text})]}):x?(0,_jsxRuntime.jsx)(_reactNative.View,{style:x,children:U}):U});Switch.displayName="Switch";const buildStyles=e=>_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center"},track:{justifyContent:"center"},thumb:{position:"absolute",top:2},errorRing:{..._reactNative.StyleSheet.absoluteFill},rowTop:{alignItems:"flex-start"},text:{marginLeft:e.space.sm},spreadRow:{minHeight:44,justifyContent:"space-between"},spreadText:{flex:1,marginRight:e.space.md}});var _default=exports.default=Switch;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Switch=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_hitSlop=require("../../utils/hitSlop.js"),_ChoiceText=require("../FieldBase/ChoiceText.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_jsxRuntime=require("react/jsx-runtime");const toneColor=(e,t)=>{switch(t){case"success":return e.colors.success;case"warning":return e.colors.warning;case"danger":return e.colors.danger;default:return e.colors.primary}},Switch=exports.Switch=(0,_react.forwardRef)((e,t)=>{const{value:i,defaultValue:s,onChange:r,disabled:a=!1,size:n="md",tone:o="primary",label:l,description:c,error:d,labelLines:u,layout:h="inline",accessibilityLabel:p,haptic:_="selection",bounce:m=!1,style:b,containerStyle:x,trackStyle:f,thumbStyle:g,testID:y,hitSlop:v,...w}=e,[S,j]=(0,_index.useControllableState)({value:i,defaultValue:s??!1,onChange:r}),R=(0,_index2.useTheme)(),C=(0,_react.useMemo)(()=>(0,_index2.resolveSwitchSize)(R,n),[R,n]),N=R.colors.thumb,T=(0,_react.useMemo)(()=>buildStyles(R),[R]),k="dark"===R.mode?R.colors.neutral:R.colors["surface-disabled"],V=toneColor(R,o),A=v??8,F=(0,_react.useRef)((0,_index2.createAnimatedValue)(S?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.spring(F,{toValue:S?1:0,damping:R.motion.spring.snappy.damping,stiffness:R.motion.spring.snappy.stiffness,mass:R.motion.spring.snappy.mass,useNativeDriver:!0});return e.start(),()=>e.stop()},[S,F,R.motion.spring.snappy]);const q=(0,_react.useRef)((0,_index2.createAnimatedValue)(S?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.timing(q,{toValue:S?1:0,duration:R.motion.duration.fast,easing:_reactNative.Easing.out(_reactNative.Easing.ease),useNativeDriver:!1});return e.start(),()=>e.stop()},[S,q,R.motion.duration.fast]);const D=C.padding,B=C["track-width"]-C["thumb-size"]-C.padding,L=F.interpolate({inputRange:[0,1],outputRange:[D,B]}),z=q.interpolate({inputRange:[0,1],outputRange:[k,V]}),E=(0,_react.useRef)((0,_index2.createAnimatedValue)(1)).current,H=(0,_react.useRef)(!0);(0,_react.useEffect)(()=>{if(!m)return;if(H.current)return void(H.current=!1);const e=_reactNative.Animated.sequence([_reactNative.Animated.spring(E,{toValue:1.15,damping:10,stiffness:220,mass:1,useNativeDriver:!0}),_reactNative.Animated.spring(E,{toValue:1,damping:14,stiffness:240,mass:1,useNativeDriver:!0})]);return e.start(),()=>e.stop()},[S,m,E]);const handlePress=e=>{a||(!1!==_&&(0,_hapticUtils.triggerHaptic)(_),j(!S),w.onPressOut?.(e))},P=p??(0,_FieldBase.fieldTextAsString)(l),I=(0,_FieldBase.hasFieldText)(l)||(0,_ChoiceText.hasChoiceDetail)(c,d),M=(!0===d||(0,_FieldBase.hasFieldText)(d))&&!S&&!a,U="row"===h&&I,O=(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[T.track,{width:C["track-width"],height:C["track-height"],borderRadius:R.radius.pill,..._corners.smoothCorners,backgroundColor:z},f],children:[M?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[T.errorRing,{borderRadius:R.radius.pill,..._corners.smoothCorners,borderWidth:R.size.border,borderColor:R.colors["field-border-error"]}]}):null,(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[T.thumb,R.shadow.card,{backgroundColor:N,width:C["thumb-size"],height:C["thumb-size"],borderRadius:R.radius.pill,..._corners.smoothCorners,transform:[{translateX:L},{scale:E}]},g]})]});if(U)return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:t,onPress:handlePress,disabled:a,accessibilityRole:"switch",accessibilityLabel:P,accessibilityHint:w.accessibilityHint??(0,_FieldBase.fieldTextAsString)(c),accessibilityState:{checked:S,disabled:a},"aria-checked":S,"aria-disabled":a,testID:y,hitSlop:v,...null==v?{}:(0,_hitSlop.hitSlopMarker)(v),...w,style:({pressed:e})=>[T.row,T.spreadRow,(0,_ChoiceText.hasChoiceDetail)(c,d)?T.rowTop:null,{opacity:a?.55:e?.9:1},x,b],children:[(0,_jsxRuntime.jsx)(_ChoiceText.ChoiceText,{label:l,description:c,error:d,disabled:a,labelLines:u||void 0,descriptionLines:u||void 0,style:T.spreadText}),O]});const W=(0,_jsxRuntime.jsx)(_reactNative.Pressable,{ref:t,onPress:handlePress,disabled:a,accessibilityRole:"switch",accessibilityLabel:P,accessibilityHint:w.accessibilityHint??(0,_FieldBase.fieldTextAsString)(c),accessibilityState:{checked:S,disabled:a},"aria-checked":S,"aria-disabled":a,testID:y,hitSlop:A,...(0,_hitSlop.hitSlopMarker)(A),...w,style:({pressed:e})=>[{opacity:a?.55:e?.9:1},I?null:b],children:O});return I?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[T.row,(0,_ChoiceText.hasChoiceDetail)(c,d)?T.rowTop:null,x,b],children:[W,(0,_jsxRuntime.jsx)(_ChoiceText.ChoiceText,{label:l,description:c,error:d,disabled:a,labelLines:u||void 0,descriptionLines:u||void 0,style:T.text})]}):x?(0,_jsxRuntime.jsx)(_reactNative.View,{style:x,children:W}):W});Switch.displayName="Switch";const buildStyles=e=>_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center"},track:{justifyContent:"center"},thumb:{position:"absolute",top:2},errorRing:{..._reactNative.StyleSheet.absoluteFill},rowTop:{alignItems:"flex-start"},text:{marginLeft:e.space.sm},spreadRow:{minHeight:44,justifyContent:"space-between"},spreadText:{flex:1,marginRight:e.space.md}});var _default=exports.default=Switch;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.resolveColor=exports.default=exports.Text=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_warnInvalidValue=require("../../utils/warnInvalidValue.js"),_jsxRuntime=require("react/jsx-runtime");const VARIANTS={display:{size:"4xl",weight:"bold",line:"display",color:"primary",heading:!0,fontFamily:"display"},h1:{size:"3xl",weight:"bold",line:"heading",color:"primary",heading:!0,fontFamily:"display"},h2:{size:"2xl",weight:"semibold",line:"heading",color:"primary",heading:!0,fontFamily:"display"},h3:{size:"xl",weight:"semibold",line:"heading",color:"primary",heading:!0},title:{size:"lg",weight:"semibold",line:"body",color:"primary",fontFamily:"display"},body:{size:"base",weight:"normal",line:"body",color:"primary"},bodySmall:{size:"sm",weight:"normal",line:"body",color:"secondary"},caption:{size:"xs",weight:"normal",line:"body",color:"tertiary"},label:{size:"sm",weight:"medium",line:"body",color:"secondary"},overline:{size:"xs",weight:"semibold",line:"body",color:"secondary",uppercase:!0,letterSpacing:"wide"}},TEXT_ROLE_COLOR={textStrong:"text",primary:"text-body",secondary:"text-muted",tertiary:"text-subtle",inverse:"text-inverse",disabled:"text-disabled",link:"link"},SEMANTIC={success:!0,warning:!0,danger:!0,info:!0},resolveColor=(e,i)=>Object.hasOwn(TEXT_ROLE_COLOR,i)?e.colors[TEXT_ROLE_COLOR[i]]:Object.hasOwn(SEMANTIC,i)?e.colors[`${i}-text`]:i;exports.resolveColor=resolveColor;const Text=exports.Text=(0,_react.forwardRef)((e,i)=>{const{variant:t="body",color:r,weight:o,size:l,align:n,italic:a,underline:s,style:d,children:c,...y}=e,p=(0,_index.useTheme)(),x=Object.hasOwn(VARIANTS,t),g=p.settings.textVariants,u=!x&&g&&Object.hasOwn(g,t)?g[t]:void 0;x||u||(0,_warnInvalidValue.warnInvalidValue)("Text","variant",e.variant,[...Object.keys(VARIANTS),...Object.keys(g??{})]);const m=(0,_react.useMemo)(()=>{if(u){const e="string"==typeof l?l:u.size,i="number"==typeof l?l:p.text[e].size;return{fontSize:i,lineHeight:u.lineHeight??("number"==typeof l?void 0:Math.round(i*p.leading[u.heading?"heading":"body"])),color:void 0!==r?resolveColor(p,r):u.color?p.colors[u.color]:resolveColor(p,"primary"),textAlign:n,textTransform:u.uppercase?"uppercase":void 0,letterSpacing:u.letterSpacing?p["letter-spacing"][u.letterSpacing]:void 0,fontStyle:a||u.italic?"italic":void 0,fontVariant:u.fontVariant,textDecorationLine:s?"underline":void 0,...(0,_index.fontFor)(p,o??u.weight??"normal",u.fontFamily)}}const e=VARIANTS[x?t:"body"],i="number"==typeof l?l:p.text[l??e.size].size;return{fontSize:i,lineHeight:Math.round(i*p.leading[e.line]),color:resolveColor(p,r??e.color),textAlign:n,textTransform:e.uppercase?"uppercase":void 0,letterSpacing:e.letterSpacing?p["letter-spacing"][e.letterSpacing]:void 0,fontStyle:a?"italic":void 0,textDecorationLine:s?"underline":void 0,...(0,_index.fontFor)(p,o??e.weight,e.fontFamily)}},[p,u,x,t,r,o,l,n,a,s]),h=x?VARIANTS[t].heading:u?.heading;return(0,_jsxRuntime.jsx)(_reactNative.Text,{ref:i,style:[m,d],maxFontSizeMultiplier:p.settings.maxFontSizeMultiplier,accessibilityRole:h?"header":y.accessibilityRole,...y,children:c})});Text.displayName="Text";var _default=exports.default=Text;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.resolveColor=exports.default=exports.Text=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_warnInvalidValue=require("../../utils/warnInvalidValue.js"),_Notation=require("../Notation/Notation.js"),_jsxRuntime=require("react/jsx-runtime");const VARIANTS={display:{size:"4xl",weight:"bold",line:"display",color:"primary",heading:!0,fontFamily:"display"},h1:{size:"3xl",weight:"bold",line:"heading",color:"primary",heading:!0,fontFamily:"display"},h2:{size:"2xl",weight:"semibold",line:"heading",color:"primary",heading:!0,fontFamily:"display"},h3:{size:"xl",weight:"semibold",line:"heading",color:"primary",heading:!0},title:{size:"lg",weight:"semibold",line:"body",color:"primary",fontFamily:"display"},body:{size:"base",weight:"normal",line:"body",color:"primary"},bodySmall:{size:"sm",weight:"normal",line:"body",color:"secondary"},caption:{size:"xs",weight:"normal",line:"body",color:"tertiary"},label:{size:"sm",weight:"medium",line:"body",color:"secondary"},overline:{size:"xs",weight:"semibold",line:"body",color:"secondary",uppercase:!0,letterSpacing:"wide"}},TEXT_ROLE_COLOR={textStrong:"text",primary:"text-body",secondary:"text-muted",tertiary:"text-subtle",inverse:"text-inverse",disabled:"text-disabled",link:"link"},SEMANTIC={success:!0,warning:!0,danger:!0,info:!0},resolveColor=(e,t)=>Object.hasOwn(TEXT_ROLE_COLOR,t)?e.colors[TEXT_ROLE_COLOR[t]]:Object.hasOwn(SEMANTIC,t)?e.colors[`${t}-text`]:t;exports.resolveColor=resolveColor;const Text=exports.Text=(0,_react.forwardRef)((e,t)=>{const{variant:i="body",color:o,weight:r,size:n,align:a,italic:l,underline:s,style:d,children:c,...y}=e,x=(0,_index.useTheme)(),p=Object.hasOwn(VARIANTS,i),g=x.settings.textVariants,u=!p&&g&&Object.hasOwn(g,i)?g[i]:void 0;p||u||(0,_warnInvalidValue.warnInvalidValue)("Text","variant",e.variant,[...Object.keys(VARIANTS),...Object.keys(g??{})]);const m=(0,_react.useMemo)(()=>{if(u){const e="string"==typeof n?n:u.size,t="number"==typeof n?n:x.text[e].size;return{fontSize:t,lineHeight:u.lineHeight??("number"==typeof n?void 0:Math.round(t*x.leading[u.heading?"heading":"body"])),color:void 0!==o?resolveColor(x,o):u.color?x.colors[u.color]:resolveColor(x,"primary"),textAlign:a,textTransform:u.uppercase?"uppercase":void 0,letterSpacing:u.letterSpacing?x["letter-spacing"][u.letterSpacing]:void 0,fontStyle:l||u.italic?"italic":void 0,fontVariant:u.fontVariant,textDecorationLine:s?"underline":void 0,...(0,_index.fontFor)(x,r??u.weight??"normal",u.fontFamily)}}const e=VARIANTS[p?i:"body"],t="number"==typeof n?n:x.text[n??e.size].size;return{fontSize:t,lineHeight:Math.round(t*x.leading[e.line]),color:resolveColor(x,o??e.color),textAlign:a,textTransform:e.uppercase?"uppercase":void 0,letterSpacing:e.letterSpacing?x["letter-spacing"][e.letterSpacing]:void 0,fontStyle:l?"italic":void 0,textDecorationLine:s?"underline":void 0,...(0,_index.fontFor)(x,r??e.weight,e.fontFamily)}},[x,u,p,i,o,r,n,a,l,s]),h=(0,_Notation.useNotationInk)([m,d],x.text.base.size,x.colors["text-body"]),b=p?VARIANTS[i].heading:u?.heading,v="string"==typeof c||"number"==typeof c;return(0,_jsxRuntime.jsx)(_reactNative.Text,{ref:t,style:[m,d],maxFontSizeMultiplier:x.settings.maxFontSizeMultiplier,accessibilityRole:b?"header":y.accessibilityRole,...y,children:v?c:(0,_jsxRuntime.jsx)(_Notation.NotationInkContext.Provider,{value:h,children:c})})});Text.displayName="Text";var _default=exports.default=Text;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Toast=void 0;var _react=require("react"),_reactNative=require("react-native"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_jsxRuntime=require("react/jsx-runtime");const SWIPE_DISMISS_THRESHOLD=80,SWIPE_VELOCITY_THRESHOLD=.5,STACK_OFFSET=8,STACK_SCALE_STEP=.04,DEFAULT_AUTO_DISMISS_MS=3e3,WEB_ACTION_MIN_DURATION_MS=8e3,COUNTDOWN_BAR_HEIGHT=3,ACTION_HIT_SLOP={top:10,bottom:10,left:10,right:10},DISMISS_ACTIONS=[{name:"dismiss",label:"Dismiss"}],Toast=({toast:e,index:t,onDismiss:a,shownAt:i,runtime:n})=>{const r=(0,_index.useTheme)(),s=(0,_usePresenceMotion.usePresenceMotion)(),o=s.duration("fast"),c=e.variant??"default",l=e.position??"bottom",u=(0,_react.useMemo)(()=>buildStyles(r),[r]),d=(0,_react.useMemo)(()=>tintFor(r,c),[r,c]),m=(0,_react.useMemo)(()=>inkFor(r,c),[r,c]),_=r.components.toast["icon-circle-size"],p=r.text[r.components.toast["icon-glyph-text"]].size,v=r.components.toast["tint-bar-width"],g=r.settings.components.toast?.defaultDurationMs??3e3,x=r.settings.components.toast?.enableSwipeDismiss??!0,h="top"===l?-120:120,f=(0,_react.useRef)((0,_index.createAnimatedValue)(s.reduced?0:h)).current,N=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,b=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,A=(0,_react.useRef)(!1),y="top"===l?8*t:8*-t,S=Math.max(1-.04*t,.9),w=(0,_react.useRef)((0,_index.createAnimatedValue)(y)).current;(0,_react.useEffect)(()=>{(0,_index.setNativeValue)(w,y)},[y,w]);const R=(0,_react.useMemo)(()=>_reactNative.Animated.add(f,w),[f,w]),M=void 0!==e.action,T=e.duration??g,V=T>0&&M&&"web"===_reactNative.Platform.OS?Math.max(T,8e3):T,D=V<=0||M&&!0===n?.screenReaderOn,j=!0===e.countdown&&!D,C=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current,I=(0,_react.useRef)({initialised:!1,timer:null,remaining:0,startedAt:0}),E=(0,_react.useRef)({touch:!1,pan:!1,hover:!1}),P=(0,_react.useRef)(()=>{}),O=(0,_react.useRef)({id:e.id,totalMs:V,shownAt:i,runtime:n,persistent:D,animateBar:!1});O.current={id:e.id,totalMs:V,shownAt:i,runtime:n,persistent:D,animateBar:j&&!s.reduced};const k=(0,_react.useCallback)(()=>{const e=I.current,t=O.current,a=E.current;if(!e.initialised){e.initialised=!0;const a=t.runtime?.readRemaining(t.id),i=void 0===t.shownAt?0:Date.now()-t.shownAt;e.remaining=a??(t.totalMs>0?Math.max(t.totalMs-i,0):0),t.totalMs>0&&e.remaining<t.totalMs&&(0,_index.setNativeValue)(C,e.remaining/t.totalMs)}const i=!(t.persistent||A.current||a.touch||a.pan||a.hover);i&&null===e.timer?(e.startedAt=Date.now(),e.timer=setTimeout(()=>{e.timer=null,e.remaining=0,P.current()},e.remaining),t.animateBar&&_reactNative.Animated.timing(C,{toValue:0,duration:e.remaining,easing:_reactNative.Easing.linear,useNativeDriver:!0}).start()):i||null===e.timer||(clearTimeout(e.timer),e.timer=null,e.remaining=Math.max(e.remaining-(Date.now()-e.startedAt),0),C.stopAnimation())},[C]),dismiss=()=>{if(A.current)return;A.current=!0,k();const t=[_reactNative.Animated.timing(b,{toValue:0,duration:o,easing:_reactNative.Easing.bezier(...r.motion.ease.accelerate),useNativeDriver:!0})];s.reduced||t.push(_reactNative.Animated.timing(f,{toValue:h,duration:r.motion.duration.fast,easing:_reactNative.Easing.bezier(...r.motion.ease.accelerate),useNativeDriver:!0})),_reactNative.Animated.parallel(t).start(()=>a(e.id))};P.current=dismiss,(0,_react.useEffect)(()=>{const e=s.reduced?_reactNative.Animated.timing(b,{toValue:1,duration:o,useNativeDriver:!0}):_reactNative.Animated.parallel([_reactNative.Animated.spring(f,{toValue:0,damping:18,stiffness:180,mass:1,useNativeDriver:!0}),_reactNative.Animated.timing(b,{toValue:1,duration:o,useNativeDriver:!0})]);return e.start(),()=>e.stop()},[]),(0,_react.useEffect)(()=>{k()},[D,k]),(0,_react.useEffect)(()=>()=>{const e=I.current,t=O.current;null!==e.timer&&(clearTimeout(e.timer),e.timer=null,e.remaining=Math.max(e.remaining-(Date.now()-e.startedAt),0)),C.stopAnimation(),e.initialised&&t.totalMs>0&&!A.current&&t.runtime?.writeRemaining(t.id,e.remaining)},[C]);const L=(0,_react.useCallback)((e,t)=>{E.current[e]=t,k()},[k]),H=(0,_react.useCallback)(()=>L("touch",!0),[L]),F=(0,_react.useCallback)(e=>L("touch",(e.nativeEvent.touches?.length??0)>0),[L]),z=(0,_react.useCallback)(()=>L("hover",!0),[L]),B=(0,_react.useCallback)(()=>L("hover",!1),[L]),q=(0,_react.useMemo)(()=>_reactNative.PanResponder.create({onMoveShouldSetPanResponder:(e,t)=>Math.abs(t.dx)>Math.abs(t.dy)&&Math.abs(t.dx)>6,onPanResponderGrant:()=>L("pan",!0),onPanResponderMove:(e,t)=>{(0,_index.setNativeValue)(N,t.dx);const a=1-.7*Math.min(Math.abs(t.dx)/200,1);(0,_index.setNativeValue)(b,a)},onPanResponderTerminate:()=>{if(L("pan",!1),s.reduced)return(0,_index.setNativeValue)(N,0),void _reactNative.Animated.timing(b,{toValue:1,duration:o,useNativeDriver:!0}).start();_reactNative.Animated.parallel([_reactNative.Animated.spring(N,{toValue:0,damping:r.motion.spring.snappy.damping,stiffness:r.motion.spring.snappy.stiffness,mass:r.motion.spring.snappy.mass,useNativeDriver:!0}),_reactNative.Animated.timing(b,{toValue:1,duration:o,useNativeDriver:!0})]).start()},onPanResponderRelease:(t,i)=>{if(Math.abs(i.dx)>80||Math.abs(i.vx)>.5){const t=i.dx>=0?1:-1;A.current=!0,L("pan",!1);const n=[_reactNative.Animated.timing(b,{toValue:0,duration:o,useNativeDriver:!0})];s.reduced||n.push(_reactNative.Animated.timing(N,{toValue:500*t,duration:r.motion.duration.fast,useNativeDriver:!0})),_reactNative.Animated.parallel(n).start(()=>a(e.id))}else L("pan",!1),s.reduced?((0,_index.setNativeValue)(N,0),_reactNative.Animated.timing(b,{toValue:1,duration:o,useNativeDriver:!0}).start()):_reactNative.Animated.parallel([_reactNative.Animated.spring(N,{toValue:0,useNativeDriver:!0}),_reactNative.Animated.spring(b,{toValue:1,useNativeDriver:!0})]).start()}}),[N,b,L,o,s.reduced,r.motion.duration.fast,r.motion.spring.snappy.damping,r.motion.spring.snappy.stiffness,r.motion.spring.snappy.mass,a,e.id]),G={accessibilityActions:DISMISS_ACTIONS,onAccessibilityAction:e=>{"dismiss"===e.nativeEvent.actionName&&dismiss()}},[W,U]=(0,_react.useState)(0),$=(0,_react.useMemo)(()=>C.interpolate({inputRange:[0,1],outputRange:[-W,0]}),[C,W]),K=e.description?`${e.message}. ${e.description}`:e.message,X=e.action&&j?`${e.action.label}, ${Math.ceil(V/1e3)} seconds`:e.action?.label;return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{...x?q.panHandlers:{},...M?{}:{accessible:!0,...G},..."web"===_reactNative.Platform.OS?{onPointerEnter:z,onPointerLeave:B}:{},onTouchStart:H,onTouchEnd:F,onTouchCancel:F,accessibilityLabel:K,testID:e.testID,style:[u.container,{backgroundColor:r.colors.surface,borderRadius:r.radius.lg,..._corners.smoothCorners,padding:r.space.md,...r.shadow.elevated,opacity:b,transform:[{translateY:R},{translateX:N},{scale:S}]},e.style,e.containerStyle],children:[v>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[u.tintBar,{width:v,backgroundColor:d}]}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:u.row,children:[(()=>{if(e.icon)return e.icon;const t=defaultGlyph(c);return t?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[u.iconCircle,{width:_,height:_,borderRadius:r.radius.pill,..._corners.smoothCorners,backgroundColor:d+"22"},e.iconCircleStyle],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[u.iconGlyph,{color:m,fontSize:p}],accessible:!1,children:t})}):null})(),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:u.textBlock,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[u.message,{color:r.colors["text-body"],fontSize:r.text.base.size,...(0,_index.fontFor)(r,"semibold")},e.textStyle,e.messageStyle],numberOfLines:2,children:e.message}),e.description?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[u.description,{color:r.colors["text-muted"],fontSize:r.text.sm.size}],numberOfLines:3,children:e.description}):null]}),e.action?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{accessibilityRole:"button",accessibilityLabel:X,hitSlop:ACTION_HIT_SLOP,...G,onPress:()=>{e.action?.onPress(),dismiss()},style:({pressed:t})=>[u.actionBtn,{backgroundColor:t?r.colors["surface-pressed"]:"transparent"},e.actionButtonStyle],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:d,fontSize:r.text.sm.size,...(0,_index.fontFor)(r,"semibold")},numberOfLines:1,children:e.action.label})}):null]}),j?(0,_jsxRuntime.jsxs)(_reactNative.View,{pointerEvents:"none",accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",onLayout:e=>U(e.nativeEvent.layout.width),testID:"toast-countdown",style:[u.countdownTrack,{backgroundColor:d+"22"}],children:[s.reduced?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[u.countdownFill,{backgroundColor:d}]}):null,!s.reduced&&W>0?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[u.countdownFill,{backgroundColor:d,transform:[{translateX:$}]}]}):null]}):null]})};exports.Toast=Toast;const tintFor=(e,t)=>{switch(t){case"success":return e.colors.success;case"danger":return e.colors.danger;case"warning":return e.colors.warning;case"info":return e.colors.info;default:return e.colors["text-body"]}},inkFor=(e,t)=>{switch(t){case"success":return e.colors["success-text"];case"danger":return e.colors["danger-text"];case"warning":return e.colors["warning-text"];case"info":return e.colors["info-text"];default:return e.colors["text-body"]}},defaultGlyph=e=>{switch(e){case"success":return"✓";case"danger":return"×";case"warning":return"!";case"info":return"i";default:return""}},buildStyles=e=>_reactNative.StyleSheet.create({container:{overflow:"hidden",marginVertical:e.space.xs},tintBar:{position:"absolute",left:0,top:0,bottom:0},row:{flexDirection:"row",alignItems:"center",paddingLeft:e.space.sm},iconCircle:{alignItems:"center",justifyContent:"center",marginRight:e.space.md},iconGlyph:{fontWeight:"700",lineHeight:19},textBlock:{flex:1,paddingRight:e.space.sm},message:{lineHeight:20},description:{marginTop:e.space.xxs,lineHeight:18},countdownTrack:{position:"absolute",left:0,right:0,bottom:0,height:3,overflow:"hidden"},countdownFill:{position:"absolute",left:0,right:0,top:0,bottom:0},actionBtn:{paddingHorizontal:e.space.sm,paddingVertical:e.space.xs,minHeight:e.components.toast["action-min-height"],borderRadius:e.radius.md,..._corners.smoothCorners,marginLeft:e.space.sm}});var _default=exports.default=Toast;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Toast=void 0;var _react=require("react"),_reactNative=require("react-native"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hitSlop=require("../../utils/hitSlop.js"),_jsxRuntime=require("react/jsx-runtime");const SWIPE_DISMISS_THRESHOLD=80,SWIPE_VELOCITY_THRESHOLD=.5,STACK_OFFSET=8,STACK_SCALE_STEP=.04,DEFAULT_AUTO_DISMISS_MS=3e3,WEB_ACTION_MIN_DURATION_MS=8e3,COUNTDOWN_BAR_HEIGHT=3,ACTION_HIT_SLOP={top:10,bottom:10,left:10,right:10},DISMISS_ACTIONS=[{name:"dismiss",label:"Dismiss"}],Toast=({toast:e,index:t,onDismiss:i,shownAt:a,runtime:n})=>{const r=(0,_index.useTheme)(),s=(0,_usePresenceMotion.usePresenceMotion)(),o=s.duration("fast"),c=e.variant??"default",l=e.position??"bottom",u=(0,_react.useMemo)(()=>buildStyles(r),[r]),d=(0,_react.useMemo)(()=>tintFor(r,c),[r,c]),m=(0,_react.useMemo)(()=>inkFor(r,c),[r,c]),_=r.components.toast["icon-circle-size"],p=r.text[r.components.toast["icon-glyph-text"]].size,v=r.components.toast["tint-bar-width"],g=r.settings.components.toast?.defaultDurationMs??3e3,h=r.settings.components.toast?.enableSwipeDismiss??!0,x="top"===l?-120:120,f=(0,_react.useRef)((0,_index.createAnimatedValue)(s.reduced?0:x)).current,N=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,b=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,A=(0,_react.useRef)(!1),S="top"===l?8*t:8*-t,y=Math.max(1-.04*t,.9),w=(0,_react.useRef)((0,_index.createAnimatedValue)(S)).current;(0,_react.useEffect)(()=>{(0,_index.setNativeValue)(w,S)},[S,w]);const R=(0,_react.useMemo)(()=>_reactNative.Animated.add(f,w),[f,w]),M=void 0!==e.action,T=e.duration??g,V=T>0&&M&&"web"===_reactNative.Platform.OS?Math.max(T,8e3):T,D=V<=0||M&&!0===n?.screenReaderOn,j=!0===e.countdown&&!D,C=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current,I=(0,_react.useRef)({initialised:!1,timer:null,remaining:0,startedAt:0}),E=(0,_react.useRef)({touch:!1,pan:!1,hover:!1}),O=(0,_react.useRef)(()=>{}),P=(0,_react.useRef)({id:e.id,totalMs:V,shownAt:a,runtime:n,persistent:D,animateBar:!1});P.current={id:e.id,totalMs:V,shownAt:a,runtime:n,persistent:D,animateBar:j&&!s.reduced};const k=(0,_react.useCallback)(()=>{const e=I.current,t=P.current,i=E.current;if(!e.initialised){e.initialised=!0;const i=t.runtime?.readRemaining(t.id),a=void 0===t.shownAt?0:Date.now()-t.shownAt;e.remaining=i??(t.totalMs>0?Math.max(t.totalMs-a,0):0),t.totalMs>0&&e.remaining<t.totalMs&&(0,_index.setNativeValue)(C,e.remaining/t.totalMs)}const a=!(t.persistent||A.current||i.touch||i.pan||i.hover);a&&null===e.timer?(e.startedAt=Date.now(),e.timer=setTimeout(()=>{e.timer=null,e.remaining=0,O.current()},e.remaining),t.animateBar&&_reactNative.Animated.timing(C,{toValue:0,duration:e.remaining,easing:_reactNative.Easing.linear,useNativeDriver:!0}).start()):a||null===e.timer||(clearTimeout(e.timer),e.timer=null,e.remaining=Math.max(e.remaining-(Date.now()-e.startedAt),0),C.stopAnimation())},[C]),dismiss=()=>{if(A.current)return;A.current=!0,k();const t=[_reactNative.Animated.timing(b,{toValue:0,duration:o,easing:_reactNative.Easing.bezier(...r.motion.ease.accelerate),useNativeDriver:!0})];s.reduced||t.push(_reactNative.Animated.timing(f,{toValue:x,duration:r.motion.duration.fast,easing:_reactNative.Easing.bezier(...r.motion.ease.accelerate),useNativeDriver:!0})),_reactNative.Animated.parallel(t).start(()=>i(e.id))};O.current=dismiss,(0,_react.useEffect)(()=>{const e=s.reduced?_reactNative.Animated.timing(b,{toValue:1,duration:o,useNativeDriver:!0}):_reactNative.Animated.parallel([_reactNative.Animated.spring(f,{toValue:0,damping:18,stiffness:180,mass:1,useNativeDriver:!0}),_reactNative.Animated.timing(b,{toValue:1,duration:o,useNativeDriver:!0})]);return e.start(),()=>e.stop()},[]),(0,_react.useEffect)(()=>{k()},[D,k]),(0,_react.useEffect)(()=>()=>{const e=I.current,t=P.current;null!==e.timer&&(clearTimeout(e.timer),e.timer=null,e.remaining=Math.max(e.remaining-(Date.now()-e.startedAt),0)),C.stopAnimation(),e.initialised&&t.totalMs>0&&!A.current&&t.runtime?.writeRemaining(t.id,e.remaining)},[C]);const L=(0,_react.useCallback)((e,t)=>{E.current[e]=t,k()},[k]),H=(0,_react.useCallback)(()=>L("touch",!0),[L]),F=(0,_react.useCallback)(e=>L("touch",(e.nativeEvent.touches?.length??0)>0),[L]),z=(0,_react.useCallback)(()=>L("hover",!0),[L]),B=(0,_react.useCallback)(()=>L("hover",!1),[L]),q=(0,_react.useMemo)(()=>_reactNative.PanResponder.create({onMoveShouldSetPanResponder:(e,t)=>Math.abs(t.dx)>Math.abs(t.dy)&&Math.abs(t.dx)>6,onPanResponderGrant:()=>L("pan",!0),onPanResponderMove:(e,t)=>{(0,_index.setNativeValue)(N,t.dx);const i=1-.7*Math.min(Math.abs(t.dx)/200,1);(0,_index.setNativeValue)(b,i)},onPanResponderTerminate:()=>{if(L("pan",!1),s.reduced)return(0,_index.setNativeValue)(N,0),void _reactNative.Animated.timing(b,{toValue:1,duration:o,useNativeDriver:!0}).start();_reactNative.Animated.parallel([_reactNative.Animated.spring(N,{toValue:0,damping:r.motion.spring.snappy.damping,stiffness:r.motion.spring.snappy.stiffness,mass:r.motion.spring.snappy.mass,useNativeDriver:!0}),_reactNative.Animated.timing(b,{toValue:1,duration:o,useNativeDriver:!0})]).start()},onPanResponderRelease:(t,a)=>{if(Math.abs(a.dx)>80||Math.abs(a.vx)>.5){const t=a.dx>=0?1:-1;A.current=!0,L("pan",!1);const n=[_reactNative.Animated.timing(b,{toValue:0,duration:o,useNativeDriver:!0})];s.reduced||n.push(_reactNative.Animated.timing(N,{toValue:500*t,duration:r.motion.duration.fast,useNativeDriver:!0})),_reactNative.Animated.parallel(n).start(()=>i(e.id))}else L("pan",!1),s.reduced?((0,_index.setNativeValue)(N,0),_reactNative.Animated.timing(b,{toValue:1,duration:o,useNativeDriver:!0}).start()):_reactNative.Animated.parallel([_reactNative.Animated.spring(N,{toValue:0,useNativeDriver:!0}),_reactNative.Animated.spring(b,{toValue:1,useNativeDriver:!0})]).start()}}),[N,b,L,o,s.reduced,r.motion.duration.fast,r.motion.spring.snappy.damping,r.motion.spring.snappy.stiffness,r.motion.spring.snappy.mass,i,e.id]),G={accessibilityActions:DISMISS_ACTIONS,onAccessibilityAction:e=>{"dismiss"===e.nativeEvent.actionName&&dismiss()}},[W,U]=(0,_react.useState)(0),$=(0,_react.useMemo)(()=>C.interpolate({inputRange:[0,1],outputRange:[-W,0]}),[C,W]),K=e.description?`${e.message}. ${e.description}`:e.message,X=e.action&&j?`${e.action.label}, ${Math.ceil(V/1e3)} seconds`:e.action?.label;return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{...h?q.panHandlers:{},...M?{}:{accessible:!0,...G},..."web"===_reactNative.Platform.OS?{onPointerEnter:z,onPointerLeave:B}:{},onTouchStart:H,onTouchEnd:F,onTouchCancel:F,accessibilityLabel:K,testID:e.testID,style:[u.container,{backgroundColor:r.colors.surface,borderRadius:r.radius.lg,..._corners.smoothCorners,padding:r.space.md,...r.shadow.elevated,opacity:b,transform:[{translateY:R},{translateX:N},{scale:y}]},e.style,e.containerStyle],children:[v>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[u.tintBar,{width:v,backgroundColor:d}]}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:u.row,children:[(()=>{if(e.icon)return e.icon;const t=defaultGlyph(c);return t?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[u.iconCircle,{width:_,height:_,borderRadius:r.radius.pill,..._corners.smoothCorners,backgroundColor:d+"22"},e.iconCircleStyle],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[u.iconGlyph,{color:m,fontSize:p}],accessible:!1,children:t})}):null})(),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:u.textBlock,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[u.message,{color:r.colors["text-body"],fontSize:r.text.base.size,...(0,_index.fontFor)(r,"semibold")},e.textStyle,e.messageStyle],numberOfLines:2,children:e.message}),e.description?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[u.description,{color:r.colors["text-muted"],fontSize:r.text.sm.size}],numberOfLines:3,children:e.description}):null]}),e.action?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{accessibilityRole:"button",accessibilityLabel:X,hitSlop:ACTION_HIT_SLOP,...(0,_hitSlop.hitSlopMarker)(ACTION_HIT_SLOP),...G,onPress:()=>{e.action?.onPress(),dismiss()},style:({pressed:t})=>[u.actionBtn,{backgroundColor:t?r.colors["surface-pressed"]:"transparent"},e.actionButtonStyle],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:d,fontSize:r.text.sm.size,...(0,_index.fontFor)(r,"semibold")},numberOfLines:1,children:e.action.label})}):null]}),j?(0,_jsxRuntime.jsxs)(_reactNative.View,{pointerEvents:"none",accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",onLayout:e=>U(e.nativeEvent.layout.width),testID:"toast-countdown",style:[u.countdownTrack,{backgroundColor:d+"22"}],children:[s.reduced?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[u.countdownFill,{backgroundColor:d}]}):null,!s.reduced&&W>0?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[u.countdownFill,{backgroundColor:d,transform:[{translateX:$}]}]}):null]}):null]})};exports.Toast=Toast;const tintFor=(e,t)=>{switch(t){case"success":return e.colors.success;case"danger":return e.colors.danger;case"warning":return e.colors.warning;case"info":return e.colors.info;default:return e.colors["text-body"]}},inkFor=(e,t)=>{switch(t){case"success":return e.colors["success-text"];case"danger":return e.colors["danger-text"];case"warning":return e.colors["warning-text"];case"info":return e.colors["info-text"];default:return e.colors["text-body"]}},defaultGlyph=e=>{switch(e){case"success":return"✓";case"danger":return"×";case"warning":return"!";case"info":return"i";default:return""}},buildStyles=e=>_reactNative.StyleSheet.create({container:{overflow:"hidden",marginVertical:e.space.xs},tintBar:{position:"absolute",left:0,top:0,bottom:0},row:{flexDirection:"row",alignItems:"center",paddingLeft:e.space.sm},iconCircle:{alignItems:"center",justifyContent:"center",marginRight:e.space.md},iconGlyph:{fontWeight:"700",lineHeight:19},textBlock:{flex:1,paddingRight:e.space.sm},message:{lineHeight:20},description:{marginTop:e.space.xxs,lineHeight:18},countdownTrack:{position:"absolute",left:0,right:0,bottom:0,height:3,overflow:"hidden"},countdownFill:{position:"absolute",left:0,right:0,top:0,bottom:0},actionBtn:{paddingHorizontal:e.space.sm,paddingVertical:e.space.xs,minHeight:e.components.toast["action-min-height"],borderRadius:e.radius.md,..._corners.smoothCorners,marginLeft:e.space.sm}});var _default=exports.default=Toast;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _exportNames={APP_ICON_SIZES:!0,AppIcon:!0,CURATED_ICON_NAMES:!0,defaultIcons:!0,ICON_NAMES:!0,ICONSAX_SUFFIX:!0,renderSlotIcon:!0,deletePath:!0,Form:!0,getPath:!0,HookFormField:!0,isFieldFilled:!0,rules:!0,setPath:!0,useField:!0,useFieldArray:!0,useForm:!0,useFormCompletion:!0,useFormContext:!0,useHookFormField:!0,useOptionalFormContext:!0,FLICK_TOLERANCE:!0,PRESENCE_REDUCE_MOTION:!0,PRESS_ANIMATION_PRESETS:!0,useControllableState:!0,useDebounce:!0,useFieldChain:!0,useFlickGuard:!0,usePresenceMotion:!0,usePressAnimation:!0,useReducedMotion:!0,useRefreshControl:!0,useScrollDirection:!0,useToggle:!0,initUI:!0,NetworkStatusBanner:!0,COLOR_NAMES:!0,DURATION_NAMES:!0,darkTheme:!0,EASE_NAMES:!0,FONT_NAMES:!0,getColorMode:!0,getTheme:!0,LEADING_NAMES:!0,LETTER_SPACING_NAMES:!0,lightTheme:!0,mergeBrand:!0,RADIUS_NAMES:!0,radiusOf:!0,resetTheme:!0,resolveBadgeSize:!0,resolveButtonSize:!0,resolveCheckboxSize:!0,resolveChipSize:!0,resolveEmptyStateSize:!0,resolveFieldSize:!0,resolveFloatingActionButtonSize:!0,resolveListItemSize:!0,resolveOtpInputSize:!0,resolveRadioSize:!0,resolveSegmentedControlSize:!0,resolveSliderSize:!0,resolveSwitchSize:!0,resolveTabsSize:!0,SHADOW_NAMES:!0,SIZE_NAMES:!0,SPACE_NAMES:!0,setColorMode:!0,setTheme:!0,spaceOf:!0,subscribeTheme:!0,TEXT_NAMES:!0,ThemeProvider:!0,textOf:!0,useTheme:!0,useThemeMode:!0,WEIGHT_NAMES:!0,announce:!0,Breakpoints:!0,configureFeedback:!0,feedback:!0,hapticForIntent:!0,isFeedbackEnabled:!0,isScreenSize:!0,isTablet:!0,Responsive:!0,ScreenDimensions:!0,SQUIRCLE_MIN_RADIUS:!0,SQUIRCLE_SMOOTHING:!0,setHapticImplementation:!0,shadowStyle:!0,smoothCorners:!0,squircleApplies:!0,squircleHostRadius:!0,squirclePath:!0,triggerHaptic:!0,useScreenDimensions:!0,warnUnknownProps:!0};Object.defineProperty(exports,"APP_ICON_SIZES",{enumerable:!0,get:function(){return _index2.APP_ICON_SIZES}}),Object.defineProperty(exports,"AppIcon",{enumerable:!0,get:function(){return _index2.AppIcon}}),Object.defineProperty(exports,"Breakpoints",{enumerable:!0,get:function(){return _index7.Breakpoints}}),Object.defineProperty(exports,"COLOR_NAMES",{enumerable:!0,get:function(){return _index6.COLOR_NAMES}}),Object.defineProperty(exports,"CURATED_ICON_NAMES",{enumerable:!0,get:function(){return _index2.CURATED_ICON_NAMES}}),Object.defineProperty(exports,"DURATION_NAMES",{enumerable:!0,get:function(){return _index6.DURATION_NAMES}}),Object.defineProperty(exports,"EASE_NAMES",{enumerable:!0,get:function(){return _index6.EASE_NAMES}}),Object.defineProperty(exports,"FLICK_TOLERANCE",{enumerable:!0,get:function(){return _index4.FLICK_TOLERANCE}}),Object.defineProperty(exports,"FONT_NAMES",{enumerable:!0,get:function(){return _index6.FONT_NAMES}}),Object.defineProperty(exports,"Form",{enumerable:!0,get:function(){return _index3.Form}}),Object.defineProperty(exports,"HookFormField",{enumerable:!0,get:function(){return _index3.HookFormField}}),Object.defineProperty(exports,"ICONSAX_SUFFIX",{enumerable:!0,get:function(){return _index2.ICONSAX_SUFFIX}}),Object.defineProperty(exports,"ICON_NAMES",{enumerable:!0,get:function(){return _index2.ICON_NAMES}}),Object.defineProperty(exports,"LEADING_NAMES",{enumerable:!0,get:function(){return _index6.LEADING_NAMES}}),Object.defineProperty(exports,"LETTER_SPACING_NAMES",{enumerable:!0,get:function(){return _index6.LETTER_SPACING_NAMES}}),Object.defineProperty(exports,"NetworkStatusBanner",{enumerable:!0,get:function(){return _index5.NetworkStatusBanner}}),Object.defineProperty(exports,"PRESENCE_REDUCE_MOTION",{enumerable:!0,get:function(){return _index4.PRESENCE_REDUCE_MOTION}}),Object.defineProperty(exports,"PRESS_ANIMATION_PRESETS",{enumerable:!0,get:function(){return _index4.PRESS_ANIMATION_PRESETS}}),Object.defineProperty(exports,"RADIUS_NAMES",{enumerable:!0,get:function(){return _index6.RADIUS_NAMES}}),Object.defineProperty(exports,"Responsive",{enumerable:!0,get:function(){return _index7.Responsive}}),Object.defineProperty(exports,"SHADOW_NAMES",{enumerable:!0,get:function(){return _index6.SHADOW_NAMES}}),Object.defineProperty(exports,"SIZE_NAMES",{enumerable:!0,get:function(){return _index6.SIZE_NAMES}}),Object.defineProperty(exports,"SPACE_NAMES",{enumerable:!0,get:function(){return _index6.SPACE_NAMES}}),Object.defineProperty(exports,"SQUIRCLE_MIN_RADIUS",{enumerable:!0,get:function(){return _index7.SQUIRCLE_MIN_RADIUS}}),Object.defineProperty(exports,"SQUIRCLE_SMOOTHING",{enumerable:!0,get:function(){return _index7.SQUIRCLE_SMOOTHING}}),Object.defineProperty(exports,"ScreenDimensions",{enumerable:!0,get:function(){return _index7.ScreenDimensions}}),Object.defineProperty(exports,"TEXT_NAMES",{enumerable:!0,get:function(){return _index6.TEXT_NAMES}}),Object.defineProperty(exports,"ThemeProvider",{enumerable:!0,get:function(){return _index6.ThemeProvider}}),Object.defineProperty(exports,"WEIGHT_NAMES",{enumerable:!0,get:function(){return _index6.WEIGHT_NAMES}}),Object.defineProperty(exports,"announce",{enumerable:!0,get:function(){return _index7.announce}}),Object.defineProperty(exports,"configureFeedback",{enumerable:!0,get:function(){return _index7.configureFeedback}}),Object.defineProperty(exports,"darkTheme",{enumerable:!0,get:function(){return _index6.darkTheme}}),Object.defineProperty(exports,"defaultIcons",{enumerable:!0,get:function(){return _index2.defaultIcons}}),Object.defineProperty(exports,"deletePath",{enumerable:!0,get:function(){return _index3.deletePath}}),Object.defineProperty(exports,"feedback",{enumerable:!0,get:function(){return _index7.feedback}}),Object.defineProperty(exports,"getColorMode",{enumerable:!0,get:function(){return _index6.getColorMode}}),Object.defineProperty(exports,"getPath",{enumerable:!0,get:function(){return _index3.getPath}}),Object.defineProperty(exports,"getTheme",{enumerable:!0,get:function(){return _index6.getTheme}}),Object.defineProperty(exports,"hapticForIntent",{enumerable:!0,get:function(){return _index7.hapticForIntent}}),Object.defineProperty(exports,"initUI",{enumerable:!0,get:function(){return _initUI.initUI}}),Object.defineProperty(exports,"isFeedbackEnabled",{enumerable:!0,get:function(){return _index7.isFeedbackEnabled}}),Object.defineProperty(exports,"isFieldFilled",{enumerable:!0,get:function(){return _index3.isFieldFilled}}),Object.defineProperty(exports,"isScreenSize",{enumerable:!0,get:function(){return _index7.isScreenSize}}),Object.defineProperty(exports,"isTablet",{enumerable:!0,get:function(){return _index7.isTablet}}),Object.defineProperty(exports,"lightTheme",{enumerable:!0,get:function(){return _index6.lightTheme}}),Object.defineProperty(exports,"mergeBrand",{enumerable:!0,get:function(){return _index6.mergeBrand}}),Object.defineProperty(exports,"radiusOf",{enumerable:!0,get:function(){return _index6.radiusOf}}),Object.defineProperty(exports,"renderSlotIcon",{enumerable:!0,get:function(){return _index2.renderSlotIcon}}),Object.defineProperty(exports,"resetTheme",{enumerable:!0,get:function(){return _index6.resetTheme}}),Object.defineProperty(exports,"resolveBadgeSize",{enumerable:!0,get:function(){return _index6.resolveBadgeSize}}),Object.defineProperty(exports,"resolveButtonSize",{enumerable:!0,get:function(){return _index6.resolveButtonSize}}),Object.defineProperty(exports,"resolveCheckboxSize",{enumerable:!0,get:function(){return _index6.resolveCheckboxSize}}),Object.defineProperty(exports,"resolveChipSize",{enumerable:!0,get:function(){return _index6.resolveChipSize}}),Object.defineProperty(exports,"resolveEmptyStateSize",{enumerable:!0,get:function(){return _index6.resolveEmptyStateSize}}),Object.defineProperty(exports,"resolveFieldSize",{enumerable:!0,get:function(){return _index6.resolveFieldSize}}),Object.defineProperty(exports,"resolveFloatingActionButtonSize",{enumerable:!0,get:function(){return _index6.resolveFloatingActionButtonSize}}),Object.defineProperty(exports,"resolveListItemSize",{enumerable:!0,get:function(){return _index6.resolveListItemSize}}),Object.defineProperty(exports,"resolveOtpInputSize",{enumerable:!0,get:function(){return _index6.resolveOtpInputSize}}),Object.defineProperty(exports,"resolveRadioSize",{enumerable:!0,get:function(){return _index6.resolveRadioSize}}),Object.defineProperty(exports,"resolveSegmentedControlSize",{enumerable:!0,get:function(){return _index6.resolveSegmentedControlSize}}),Object.defineProperty(exports,"resolveSliderSize",{enumerable:!0,get:function(){return _index6.resolveSliderSize}}),Object.defineProperty(exports,"resolveSwitchSize",{enumerable:!0,get:function(){return _index6.resolveSwitchSize}}),Object.defineProperty(exports,"resolveTabsSize",{enumerable:!0,get:function(){return _index6.resolveTabsSize}}),Object.defineProperty(exports,"rules",{enumerable:!0,get:function(){return _index3.rules}}),Object.defineProperty(exports,"setColorMode",{enumerable:!0,get:function(){return _index6.setColorMode}}),Object.defineProperty(exports,"setHapticImplementation",{enumerable:!0,get:function(){return _index7.setHapticImplementation}}),Object.defineProperty(exports,"setPath",{enumerable:!0,get:function(){return _index3.setPath}}),Object.defineProperty(exports,"setTheme",{enumerable:!0,get:function(){return _index6.setTheme}}),Object.defineProperty(exports,"shadowStyle",{enumerable:!0,get:function(){return _index7.shadowStyle}}),Object.defineProperty(exports,"smoothCorners",{enumerable:!0,get:function(){return _index7.smoothCorners}}),Object.defineProperty(exports,"spaceOf",{enumerable:!0,get:function(){return _index6.spaceOf}}),Object.defineProperty(exports,"squircleApplies",{enumerable:!0,get:function(){return _index7.squircleApplies}}),Object.defineProperty(exports,"squircleHostRadius",{enumerable:!0,get:function(){return _index7.squircleHostRadius}}),Object.defineProperty(exports,"squirclePath",{enumerable:!0,get:function(){return _index7.squirclePath}}),Object.defineProperty(exports,"subscribeTheme",{enumerable:!0,get:function(){return _index6.subscribeTheme}}),Object.defineProperty(exports,"textOf",{enumerable:!0,get:function(){return _index6.textOf}}),Object.defineProperty(exports,"triggerHaptic",{enumerable:!0,get:function(){return _index7.triggerHaptic}}),Object.defineProperty(exports,"useControllableState",{enumerable:!0,get:function(){return _index4.useControllableState}}),Object.defineProperty(exports,"useDebounce",{enumerable:!0,get:function(){return _index4.useDebounce}}),Object.defineProperty(exports,"useField",{enumerable:!0,get:function(){return _index3.useField}}),Object.defineProperty(exports,"useFieldArray",{enumerable:!0,get:function(){return _index3.useFieldArray}}),Object.defineProperty(exports,"useFieldChain",{enumerable:!0,get:function(){return _index4.useFieldChain}}),Object.defineProperty(exports,"useFlickGuard",{enumerable:!0,get:function(){return _index4.useFlickGuard}}),Object.defineProperty(exports,"useForm",{enumerable:!0,get:function(){return _index3.useForm}}),Object.defineProperty(exports,"useFormCompletion",{enumerable:!0,get:function(){return _index3.useFormCompletion}}),Object.defineProperty(exports,"useFormContext",{enumerable:!0,get:function(){return _index3.useFormContext}}),Object.defineProperty(exports,"useHookFormField",{enumerable:!0,get:function(){return _index3.useHookFormField}}),Object.defineProperty(exports,"useOptionalFormContext",{enumerable:!0,get:function(){return _index3.useOptionalFormContext}}),Object.defineProperty(exports,"usePresenceMotion",{enumerable:!0,get:function(){return _index4.usePresenceMotion}}),Object.defineProperty(exports,"usePressAnimation",{enumerable:!0,get:function(){return _index4.usePressAnimation}}),Object.defineProperty(exports,"useReducedMotion",{enumerable:!0,get:function(){return _index4.useReducedMotion}}),Object.defineProperty(exports,"useRefreshControl",{enumerable:!0,get:function(){return _index4.useRefreshControl}}),Object.defineProperty(exports,"useScreenDimensions",{enumerable:!0,get:function(){return _index7.useScreenDimensions}}),Object.defineProperty(exports,"useScrollDirection",{enumerable:!0,get:function(){return _index4.useScrollDirection}}),Object.defineProperty(exports,"useTheme",{enumerable:!0,get:function(){return _index6.useTheme}}),Object.defineProperty(exports,"useThemeMode",{enumerable:!0,get:function(){return _index6.useThemeMode}}),Object.defineProperty(exports,"useToggle",{enumerable:!0,get:function(){return _index4.useToggle}}),Object.defineProperty(exports,"warnUnknownProps",{enumerable:!0,get:function(){return _index7.warnUnknownProps}});var _index=require("./components/index.js");Object.keys(_index).forEach(function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_index[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _index[e]}}))});var _index2=require("./components/AppIcon/index.js"),_index3=require("./form/index.js"),_index4=require("./hooks/index.js"),_initUI=require("./initUI.js"),_index5=require("./network/index.js"),_index6=require("./theme/index.js"),_index7=require("./utils/index.js");
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _exportNames={PHONE_CHROME_INSETS:!0,APP_ICON_SIZES:!0,AppIcon:!0,CURATED_ICON_NAMES:!0,defaultIcons:!0,ICON_NAMES:!0,ICONSAX_SUFFIX:!0,renderSlotIcon:!0,deletePath:!0,Form:!0,getPath:!0,HookFormField:!0,isFieldFilled:!0,rules:!0,setPath:!0,useField:!0,useFieldArray:!0,useForm:!0,useFormCompletion:!0,useFormContext:!0,useHookFormField:!0,useOptionalFormContext:!0,FLICK_TOLERANCE:!0,PRESENCE_REDUCE_MOTION:!0,PRESS_ANIMATION_PRESETS:!0,useControllableState:!0,useDebounce:!0,useFieldChain:!0,useFlickGuard:!0,usePresenceMotion:!0,usePressAnimation:!0,useReducedMotion:!0,useRefreshControl:!0,useScrollDirection:!0,useToggle:!0,NetworkStatusBanner:!0,COLOR_NAMES:!0,DURATION_NAMES:!0,darkTheme:!0,EASE_NAMES:!0,FONT_NAMES:!0,LEADING_NAMES:!0,LETTER_SPACING_NAMES:!0,lightTheme:!0,mergeBrand:!0,RADIUS_NAMES:!0,radiusOf:!0,resolveBadgeSize:!0,resolveButtonSize:!0,resolveCheckboxSize:!0,resolveChipSize:!0,resolveEmptyStateSize:!0,resolveFieldSize:!0,resolveFloatingActionButtonSize:!0,resolveListItemSize:!0,resolveOtpInputSize:!0,resolveRadioSize:!0,resolveSegmentedControlSize:!0,resolveSliderSize:!0,resolveSwitchSize:!0,resolveTabsSize:!0,SHADOW_NAMES:!0,SIZE_NAMES:!0,SPACE_NAMES:!0,spaceOf:!0,TEXT_NAMES:!0,ThemeProvider:!0,textOf:!0,useTheme:!0,useThemeMode:!0,WEIGHT_NAMES:!0,announce:!0,Breakpoints:!0,configureFeedback:!0,feedback:!0,hapticForIntent:!0,isFeedbackEnabled:!0,isScreenSize:!0,isTablet:!0,Responsive:!0,ScreenDimensions:!0,SQUIRCLE_MIN_RADIUS:!0,SQUIRCLE_SMOOTHING:!0,setHapticImplementation:!0,shadowStyle:!0,smoothCorners:!0,squircleApplies:!0,squircleHostRadius:!0,squirclePath:!0,triggerHaptic:!0,useScreenDimensions:!0,warnUnknownProps:!0};Object.defineProperty(exports,"APP_ICON_SIZES",{enumerable:!0,get:function(){return _index3.APP_ICON_SIZES}}),Object.defineProperty(exports,"AppIcon",{enumerable:!0,get:function(){return _index3.AppIcon}}),Object.defineProperty(exports,"Breakpoints",{enumerable:!0,get:function(){return _index8.Breakpoints}}),Object.defineProperty(exports,"COLOR_NAMES",{enumerable:!0,get:function(){return _index7.COLOR_NAMES}}),Object.defineProperty(exports,"CURATED_ICON_NAMES",{enumerable:!0,get:function(){return _index3.CURATED_ICON_NAMES}}),Object.defineProperty(exports,"DURATION_NAMES",{enumerable:!0,get:function(){return _index7.DURATION_NAMES}}),Object.defineProperty(exports,"EASE_NAMES",{enumerable:!0,get:function(){return _index7.EASE_NAMES}}),Object.defineProperty(exports,"FLICK_TOLERANCE",{enumerable:!0,get:function(){return _index5.FLICK_TOLERANCE}}),Object.defineProperty(exports,"FONT_NAMES",{enumerable:!0,get:function(){return _index7.FONT_NAMES}}),Object.defineProperty(exports,"Form",{enumerable:!0,get:function(){return _index4.Form}}),Object.defineProperty(exports,"HookFormField",{enumerable:!0,get:function(){return _index4.HookFormField}}),Object.defineProperty(exports,"ICONSAX_SUFFIX",{enumerable:!0,get:function(){return _index3.ICONSAX_SUFFIX}}),Object.defineProperty(exports,"ICON_NAMES",{enumerable:!0,get:function(){return _index3.ICON_NAMES}}),Object.defineProperty(exports,"LEADING_NAMES",{enumerable:!0,get:function(){return _index7.LEADING_NAMES}}),Object.defineProperty(exports,"LETTER_SPACING_NAMES",{enumerable:!0,get:function(){return _index7.LETTER_SPACING_NAMES}}),Object.defineProperty(exports,"NetworkStatusBanner",{enumerable:!0,get:function(){return _index6.NetworkStatusBanner}}),Object.defineProperty(exports,"PHONE_CHROME_INSETS",{enumerable:!0,get:function(){return _index.PHONE_CHROME_INSETS}}),Object.defineProperty(exports,"PRESENCE_REDUCE_MOTION",{enumerable:!0,get:function(){return _index5.PRESENCE_REDUCE_MOTION}}),Object.defineProperty(exports,"PRESS_ANIMATION_PRESETS",{enumerable:!0,get:function(){return _index5.PRESS_ANIMATION_PRESETS}}),Object.defineProperty(exports,"RADIUS_NAMES",{enumerable:!0,get:function(){return _index7.RADIUS_NAMES}}),Object.defineProperty(exports,"Responsive",{enumerable:!0,get:function(){return _index8.Responsive}}),Object.defineProperty(exports,"SHADOW_NAMES",{enumerable:!0,get:function(){return _index7.SHADOW_NAMES}}),Object.defineProperty(exports,"SIZE_NAMES",{enumerable:!0,get:function(){return _index7.SIZE_NAMES}}),Object.defineProperty(exports,"SPACE_NAMES",{enumerable:!0,get:function(){return _index7.SPACE_NAMES}}),Object.defineProperty(exports,"SQUIRCLE_MIN_RADIUS",{enumerable:!0,get:function(){return _index8.SQUIRCLE_MIN_RADIUS}}),Object.defineProperty(exports,"SQUIRCLE_SMOOTHING",{enumerable:!0,get:function(){return _index8.SQUIRCLE_SMOOTHING}}),Object.defineProperty(exports,"ScreenDimensions",{enumerable:!0,get:function(){return _index8.ScreenDimensions}}),Object.defineProperty(exports,"TEXT_NAMES",{enumerable:!0,get:function(){return _index7.TEXT_NAMES}}),Object.defineProperty(exports,"ThemeProvider",{enumerable:!0,get:function(){return _index7.ThemeProvider}}),Object.defineProperty(exports,"WEIGHT_NAMES",{enumerable:!0,get:function(){return _index7.WEIGHT_NAMES}}),Object.defineProperty(exports,"announce",{enumerable:!0,get:function(){return _index8.announce}}),Object.defineProperty(exports,"configureFeedback",{enumerable:!0,get:function(){return _index8.configureFeedback}}),Object.defineProperty(exports,"darkTheme",{enumerable:!0,get:function(){return _index7.darkTheme}}),Object.defineProperty(exports,"defaultIcons",{enumerable:!0,get:function(){return _index3.defaultIcons}}),Object.defineProperty(exports,"deletePath",{enumerable:!0,get:function(){return _index4.deletePath}}),Object.defineProperty(exports,"feedback",{enumerable:!0,get:function(){return _index8.feedback}}),Object.defineProperty(exports,"getPath",{enumerable:!0,get:function(){return _index4.getPath}}),Object.defineProperty(exports,"hapticForIntent",{enumerable:!0,get:function(){return _index8.hapticForIntent}}),Object.defineProperty(exports,"isFeedbackEnabled",{enumerable:!0,get:function(){return _index8.isFeedbackEnabled}}),Object.defineProperty(exports,"isFieldFilled",{enumerable:!0,get:function(){return _index4.isFieldFilled}}),Object.defineProperty(exports,"isScreenSize",{enumerable:!0,get:function(){return _index8.isScreenSize}}),Object.defineProperty(exports,"isTablet",{enumerable:!0,get:function(){return _index8.isTablet}}),Object.defineProperty(exports,"lightTheme",{enumerable:!0,get:function(){return _index7.lightTheme}}),Object.defineProperty(exports,"mergeBrand",{enumerable:!0,get:function(){return _index7.mergeBrand}}),Object.defineProperty(exports,"radiusOf",{enumerable:!0,get:function(){return _index7.radiusOf}}),Object.defineProperty(exports,"renderSlotIcon",{enumerable:!0,get:function(){return _index3.renderSlotIcon}}),Object.defineProperty(exports,"resolveBadgeSize",{enumerable:!0,get:function(){return _index7.resolveBadgeSize}}),Object.defineProperty(exports,"resolveButtonSize",{enumerable:!0,get:function(){return _index7.resolveButtonSize}}),Object.defineProperty(exports,"resolveCheckboxSize",{enumerable:!0,get:function(){return _index7.resolveCheckboxSize}}),Object.defineProperty(exports,"resolveChipSize",{enumerable:!0,get:function(){return _index7.resolveChipSize}}),Object.defineProperty(exports,"resolveEmptyStateSize",{enumerable:!0,get:function(){return _index7.resolveEmptyStateSize}}),Object.defineProperty(exports,"resolveFieldSize",{enumerable:!0,get:function(){return _index7.resolveFieldSize}}),Object.defineProperty(exports,"resolveFloatingActionButtonSize",{enumerable:!0,get:function(){return _index7.resolveFloatingActionButtonSize}}),Object.defineProperty(exports,"resolveListItemSize",{enumerable:!0,get:function(){return _index7.resolveListItemSize}}),Object.defineProperty(exports,"resolveOtpInputSize",{enumerable:!0,get:function(){return _index7.resolveOtpInputSize}}),Object.defineProperty(exports,"resolveRadioSize",{enumerable:!0,get:function(){return _index7.resolveRadioSize}}),Object.defineProperty(exports,"resolveSegmentedControlSize",{enumerable:!0,get:function(){return _index7.resolveSegmentedControlSize}}),Object.defineProperty(exports,"resolveSliderSize",{enumerable:!0,get:function(){return _index7.resolveSliderSize}}),Object.defineProperty(exports,"resolveSwitchSize",{enumerable:!0,get:function(){return _index7.resolveSwitchSize}}),Object.defineProperty(exports,"resolveTabsSize",{enumerable:!0,get:function(){return _index7.resolveTabsSize}}),Object.defineProperty(exports,"rules",{enumerable:!0,get:function(){return _index4.rules}}),Object.defineProperty(exports,"setHapticImplementation",{enumerable:!0,get:function(){return _index8.setHapticImplementation}}),Object.defineProperty(exports,"setPath",{enumerable:!0,get:function(){return _index4.setPath}}),Object.defineProperty(exports,"shadowStyle",{enumerable:!0,get:function(){return _index8.shadowStyle}}),Object.defineProperty(exports,"smoothCorners",{enumerable:!0,get:function(){return _index8.smoothCorners}}),Object.defineProperty(exports,"spaceOf",{enumerable:!0,get:function(){return _index7.spaceOf}}),Object.defineProperty(exports,"squircleApplies",{enumerable:!0,get:function(){return _index8.squircleApplies}}),Object.defineProperty(exports,"squircleHostRadius",{enumerable:!0,get:function(){return _index8.squircleHostRadius}}),Object.defineProperty(exports,"squirclePath",{enumerable:!0,get:function(){return _index8.squirclePath}}),Object.defineProperty(exports,"textOf",{enumerable:!0,get:function(){return _index7.textOf}}),Object.defineProperty(exports,"triggerHaptic",{enumerable:!0,get:function(){return _index8.triggerHaptic}}),Object.defineProperty(exports,"useControllableState",{enumerable:!0,get:function(){return _index5.useControllableState}}),Object.defineProperty(exports,"useDebounce",{enumerable:!0,get:function(){return _index5.useDebounce}}),Object.defineProperty(exports,"useField",{enumerable:!0,get:function(){return _index4.useField}}),Object.defineProperty(exports,"useFieldArray",{enumerable:!0,get:function(){return _index4.useFieldArray}}),Object.defineProperty(exports,"useFieldChain",{enumerable:!0,get:function(){return _index5.useFieldChain}}),Object.defineProperty(exports,"useFlickGuard",{enumerable:!0,get:function(){return _index5.useFlickGuard}}),Object.defineProperty(exports,"useForm",{enumerable:!0,get:function(){return _index4.useForm}}),Object.defineProperty(exports,"useFormCompletion",{enumerable:!0,get:function(){return _index4.useFormCompletion}}),Object.defineProperty(exports,"useFormContext",{enumerable:!0,get:function(){return _index4.useFormContext}}),Object.defineProperty(exports,"useHookFormField",{enumerable:!0,get:function(){return _index4.useHookFormField}}),Object.defineProperty(exports,"useOptionalFormContext",{enumerable:!0,get:function(){return _index4.useOptionalFormContext}}),Object.defineProperty(exports,"usePresenceMotion",{enumerable:!0,get:function(){return _index5.usePresenceMotion}}),Object.defineProperty(exports,"usePressAnimation",{enumerable:!0,get:function(){return _index5.usePressAnimation}}),Object.defineProperty(exports,"useReducedMotion",{enumerable:!0,get:function(){return _index5.useReducedMotion}}),Object.defineProperty(exports,"useRefreshControl",{enumerable:!0,get:function(){return _index5.useRefreshControl}}),Object.defineProperty(exports,"useScreenDimensions",{enumerable:!0,get:function(){return _index8.useScreenDimensions}}),Object.defineProperty(exports,"useScrollDirection",{enumerable:!0,get:function(){return _index5.useScrollDirection}}),Object.defineProperty(exports,"useTheme",{enumerable:!0,get:function(){return _index7.useTheme}}),Object.defineProperty(exports,"useThemeMode",{enumerable:!0,get:function(){return _index7.useThemeMode}}),Object.defineProperty(exports,"useToggle",{enumerable:!0,get:function(){return _index5.useToggle}}),Object.defineProperty(exports,"warnUnknownProps",{enumerable:!0,get:function(){return _index8.warnUnknownProps}});var _index=require("./canvasKit/index.js"),_index2=require("./components/index.js");Object.keys(_index2).forEach(function(e){"default"!==e&&"__esModule"!==e&&(Object.prototype.hasOwnProperty.call(_exportNames,e)||e in exports&&exports[e]===_index2[e]||Object.defineProperty(exports,e,{enumerable:!0,get:function(){return _index2[e]}}))});var _index3=require("./components/AppIcon/index.js"),_index4=require("./form/index.js"),_index5=require("./hooks/index.js"),_index6=require("./network/index.js"),_index7=require("./theme/index.js"),_index8=require("./utils/index.js");
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"COLOR_NAMES",{enumerable:!0,get:function(){return _tokensGenerated.COLOR_NAMES}}),Object.defineProperty(exports,"DURATION_NAMES",{enumerable:!0,get:function(){return _tokensGenerated.DURATION_NAMES}}),Object.defineProperty(exports,"EASE_NAMES",{enumerable:!0,get:function(){return _tokensGenerated.EASE_NAMES}}),Object.defineProperty(exports,"FONT_NAMES",{enumerable:!0,get:function(){return _tokensGenerated.FONT_NAMES}}),Object.defineProperty(exports,"Gradient",{enumerable:!0,get:function(){return _Gradient.Gradient}}),Object.defineProperty(exports,"LEADING_NAMES",{enumerable:!0,get:function(){return _tokensGenerated.LEADING_NAMES}}),Object.defineProperty(exports,"LETTER_SPACING_NAMES",{enumerable:!0,get:function(){return _tokensGenerated.LETTER_SPACING_NAMES}}),Object.defineProperty(exports,"RADIUS_NAMES",{enumerable:!0,get:function(){return _tokensGenerated.RADIUS_NAMES}}),Object.defineProperty(exports,"SHADOW_NAMES",{enumerable:!0,get:function(){return _tokensGenerated.SHADOW_NAMES}}),Object.defineProperty(exports,"SIZE_NAMES",{enumerable:!0,get:function(){return _tokensGenerated.SIZE_NAMES}}),Object.defineProperty(exports,"SPACE_NAMES",{enumerable:!0,get:function(){return _tokensGenerated.SPACE_NAMES}}),Object.defineProperty(exports,"TEXT_NAMES",{enumerable:!0,get:function(){return _tokensGenerated.TEXT_NAMES}}),Object.defineProperty(exports,"ThemeProvider",{enumerable:!0,get:function(){return _ThemeContext.ThemeProvider}}),Object.defineProperty(exports,"WEIGHT_NAMES",{enumerable:!0,get:function(){return _tokensGenerated.WEIGHT_NAMES}}),Object.defineProperty(exports,"createAnimatedValue",{enumerable:!0,get:function(){return _animatedValue.createAnimatedValue}}),Object.defineProperty(exports,"darkTheme",{enumerable:!0,get:function(){return _tokens.darkTheme}}),Object.defineProperty(exports,"fontFor",{enumerable:!0,get:function(){return _textStyle.fontFor}}),exports.getTheme=exports.getColorMode=void 0,Object.defineProperty(exports,"gradientAngle",{enumerable:!0,get:function(){return _Gradient.gradientAngle}}),Object.defineProperty(exports,"lightTheme",{enumerable:!0,get:function(){return _tokens.lightTheme}}),Object.defineProperty(exports,"mergeBrand",{enumerable:!0,get:function(){return _merge.mergeBrand}}),Object.defineProperty(exports,"radiusOf",{enumerable:!0,get:function(){return _scale.radiusOf}}),exports.resetTheme=void 0,Object.defineProperty(exports,"resolveBadgeSize",{enumerable:!0,get:function(){return _componentSizes.resolveBadgeSize}}),Object.defineProperty(exports,"resolveButtonSize",{enumerable:!0,get:function(){return _componentSizes.resolveButtonSize}}),Object.defineProperty(exports,"resolveCheckboxSize",{enumerable:!0,get:function(){return _componentSizes.resolveCheckboxSize}}),Object.defineProperty(exports,"resolveChipSize",{enumerable:!0,get:function(){return _componentSizes.resolveChipSize}}),Object.defineProperty(exports,"resolveEmptyStateSize",{enumerable:!0,get:function(){return _componentSizes.resolveEmptyStateSize}}),Object.defineProperty(exports,"resolveFieldSize",{enumerable:!0,get:function(){return _componentSizes.resolveFieldSize}}),Object.defineProperty(exports,"resolveFloatingActionButtonSize",{enumerable:!0,get:function(){return _componentSizes.resolveFloatingActionButtonSize}}),Object.defineProperty(exports,"resolveListItemSize",{enumerable:!0,get:function(){return _componentSizes.resolveListItemSize}}),Object.defineProperty(exports,"resolveOtpInputSize",{enumerable:!0,get:function(){return _componentSizes.resolveOtpInputSize}}),Object.defineProperty(exports,"resolveRadioSize",{enumerable:!0,get:function(){return _componentSizes.resolveRadioSize}}),Object.defineProperty(exports,"resolveSegmentedControlSize",{enumerable:!0,get:function(){return _componentSizes.resolveSegmentedControlSize}}),Object.defineProperty(exports,"resolveSliderSize",{enumerable:!0,get:function(){return _componentSizes.resolveSliderSize}}),Object.defineProperty(exports,"resolveSwitchSize",{enumerable:!0,get:function(){return _componentSizes.resolveSwitchSize}}),Object.defineProperty(exports,"resolveTabsSize",{enumerable:!0,get:function(){return _componentSizes.resolveTabsSize}}),exports.setColorMode=void 0,Object.defineProperty(exports,"setNativeValue",{enumerable:!0,get:function(){return _animatedValue.setNativeValue}}),exports.setTheme=void 0,Object.defineProperty(exports,"spaceOf",{enumerable:!0,get:function(){return _scale.spaceOf}}),exports.subscribeTheme=void 0,Object.defineProperty(exports,"textOf",{enumerable:!0,get:function(){return _scale.textOf}}),Object.defineProperty(exports,"toBackgroundImage",{enumerable:!0,get:function(){return _Gradient.toBackgroundImage}}),Object.defineProperty(exports,"useTheme",{enumerable:!0,get:function(){return _ThemeContext.useTheme}}),Object.defineProperty(exports,"useThemeMode",{enumerable:!0,get:function(){return _ThemeContext.useThemeMode}}),Object.defineProperty(exports,"validateComponentTokens",{enumerable:!0,get:function(){return _componentSizes.validateComponentTokens}});var _merge=require("./merge.js"),_tokens=require("./tokens.js"),_animatedValue=require("./animatedValue.js"),_componentSizes=require("./componentSizes.js"),_Gradient=require("./Gradient.js"),_scale=require("./scale.js"),_ThemeContext=require("./ThemeContext.js"),_textStyle=require("./textStyle.js"),_tokensGenerated=require("./tokens.generated.js");let brandGlobal,settingsGlobal,currentMode="light",currentTheme=_tokens.lightTheme;const subscribers=new Set,recompute=()=>{const e="dark"===currentMode?_tokens.darkTheme:_tokens.lightTheme;currentTheme=brandGlobal||settingsGlobal?(0,_merge.mergeBrand)(e,brandGlobal,settingsGlobal):e,subscribers.forEach(e=>e())},setTheme=(e,t)=>{brandGlobal=e,settingsGlobal=t,recompute()};exports.setTheme=setTheme;const setColorMode=e=>{currentMode=e,recompute()};exports.setColorMode=setColorMode;const getColorMode=()=>currentMode;exports.getColorMode=getColorMode;const getTheme=()=>currentTheme;exports.getTheme=getTheme;const resetTheme=()=>{currentMode="light",brandGlobal=void 0,settingsGlobal=void 0,recompute()};exports.resetTheme=resetTheme;const subscribeTheme=e=>(subscribers.add(e),()=>{subscribers.delete(e)});exports.subscribeTheme=subscribeTheme;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),Object.defineProperty(exports,"COLOR_NAMES",{enumerable:!0,get:function(){return _tokensGenerated.COLOR_NAMES}}),Object.defineProperty(exports,"DURATION_NAMES",{enumerable:!0,get:function(){return _tokensGenerated.DURATION_NAMES}}),Object.defineProperty(exports,"EASE_NAMES",{enumerable:!0,get:function(){return _tokensGenerated.EASE_NAMES}}),Object.defineProperty(exports,"FONT_NAMES",{enumerable:!0,get:function(){return _tokensGenerated.FONT_NAMES}}),Object.defineProperty(exports,"Gradient",{enumerable:!0,get:function(){return _Gradient.Gradient}}),Object.defineProperty(exports,"LEADING_NAMES",{enumerable:!0,get:function(){return _tokensGenerated.LEADING_NAMES}}),Object.defineProperty(exports,"LETTER_SPACING_NAMES",{enumerable:!0,get:function(){return _tokensGenerated.LETTER_SPACING_NAMES}}),Object.defineProperty(exports,"RADIUS_NAMES",{enumerable:!0,get:function(){return _tokensGenerated.RADIUS_NAMES}}),Object.defineProperty(exports,"SHADOW_NAMES",{enumerable:!0,get:function(){return _tokensGenerated.SHADOW_NAMES}}),Object.defineProperty(exports,"SIZE_NAMES",{enumerable:!0,get:function(){return _tokensGenerated.SIZE_NAMES}}),Object.defineProperty(exports,"SPACE_NAMES",{enumerable:!0,get:function(){return _tokensGenerated.SPACE_NAMES}}),Object.defineProperty(exports,"TEXT_NAMES",{enumerable:!0,get:function(){return _tokensGenerated.TEXT_NAMES}}),Object.defineProperty(exports,"ThemeProvider",{enumerable:!0,get:function(){return _ThemeContext.ThemeProvider}}),Object.defineProperty(exports,"WEIGHT_NAMES",{enumerable:!0,get:function(){return _tokensGenerated.WEIGHT_NAMES}}),Object.defineProperty(exports,"createAnimatedValue",{enumerable:!0,get:function(){return _animatedValue.createAnimatedValue}}),Object.defineProperty(exports,"darkTheme",{enumerable:!0,get:function(){return _tokens.darkTheme}}),Object.defineProperty(exports,"fontFor",{enumerable:!0,get:function(){return _textStyle.fontFor}}),Object.defineProperty(exports,"gradientAngle",{enumerable:!0,get:function(){return _Gradient.gradientAngle}}),Object.defineProperty(exports,"lightTheme",{enumerable:!0,get:function(){return _tokens.lightTheme}}),Object.defineProperty(exports,"mergeBrand",{enumerable:!0,get:function(){return _merge.mergeBrand}}),Object.defineProperty(exports,"radiusOf",{enumerable:!0,get:function(){return _scale.radiusOf}}),Object.defineProperty(exports,"resolveBadgeSize",{enumerable:!0,get:function(){return _componentSizes.resolveBadgeSize}}),Object.defineProperty(exports,"resolveButtonSize",{enumerable:!0,get:function(){return _componentSizes.resolveButtonSize}}),Object.defineProperty(exports,"resolveCheckboxSize",{enumerable:!0,get:function(){return _componentSizes.resolveCheckboxSize}}),Object.defineProperty(exports,"resolveChipSize",{enumerable:!0,get:function(){return _componentSizes.resolveChipSize}}),Object.defineProperty(exports,"resolveEmptyStateSize",{enumerable:!0,get:function(){return _componentSizes.resolveEmptyStateSize}}),Object.defineProperty(exports,"resolveFieldSize",{enumerable:!0,get:function(){return _componentSizes.resolveFieldSize}}),Object.defineProperty(exports,"resolveFloatingActionButtonSize",{enumerable:!0,get:function(){return _componentSizes.resolveFloatingActionButtonSize}}),Object.defineProperty(exports,"resolveListItemSize",{enumerable:!0,get:function(){return _componentSizes.resolveListItemSize}}),Object.defineProperty(exports,"resolveOtpInputSize",{enumerable:!0,get:function(){return _componentSizes.resolveOtpInputSize}}),Object.defineProperty(exports,"resolveRadioSize",{enumerable:!0,get:function(){return _componentSizes.resolveRadioSize}}),Object.defineProperty(exports,"resolveSegmentedControlSize",{enumerable:!0,get:function(){return _componentSizes.resolveSegmentedControlSize}}),Object.defineProperty(exports,"resolveSliderSize",{enumerable:!0,get:function(){return _componentSizes.resolveSliderSize}}),Object.defineProperty(exports,"resolveSwitchSize",{enumerable:!0,get:function(){return _componentSizes.resolveSwitchSize}}),Object.defineProperty(exports,"resolveTabsSize",{enumerable:!0,get:function(){return _componentSizes.resolveTabsSize}}),Object.defineProperty(exports,"setNativeValue",{enumerable:!0,get:function(){return _animatedValue.setNativeValue}}),Object.defineProperty(exports,"spaceOf",{enumerable:!0,get:function(){return _scale.spaceOf}}),Object.defineProperty(exports,"textOf",{enumerable:!0,get:function(){return _scale.textOf}}),Object.defineProperty(exports,"toBackgroundImage",{enumerable:!0,get:function(){return _Gradient.toBackgroundImage}}),Object.defineProperty(exports,"useTheme",{enumerable:!0,get:function(){return _ThemeContext.useTheme}}),Object.defineProperty(exports,"useThemeMode",{enumerable:!0,get:function(){return _ThemeContext.useThemeMode}}),Object.defineProperty(exports,"validateComponentTokens",{enumerable:!0,get:function(){return _componentSizes.validateComponentTokens}});var _animatedValue=require("./animatedValue.js"),_componentSizes=require("./componentSizes.js"),_Gradient=require("./Gradient.js"),_merge=require("./merge.js"),_scale=require("./scale.js"),_ThemeContext=require("./ThemeContext.js"),_textStyle=require("./textStyle.js"),_tokens=require("./tokens.js"),_tokensGenerated=require("./tokens.generated.js");
@@ -1 +1 @@
1
- "use strict";import{createElement}from"react";import{StyleSheet,View}from"react-native";import{useKeyboardState}from"react-native-keyboard-controller";import{darkTheme,lightTheme}from"../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?darkTheme:lightTheme,styles=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}});export const StatusBar=({os:e,colorMode:o="light"})=>{const t=paletteFor(o);return createElement(View,{...wuiMarker(MARKER.statusBar),accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",pointerEvents:"none",style:[styles.overlayTop,{height:STATUS_BAR_HEIGHT[e],backgroundColor:t.colors.bg}]})};export const HomeIndicator=({os:e,colorMode:o="light"})=>{const t=paletteFor(o);return createElement(View,{...wuiMarker(MARKER.homeIndicator),accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",pointerEvents:"none",style:[styles.overlayBottom,{height:HOME_AREA_HEIGHT[e]}]},"Ios"===e?createElement(View,{style:[styles.homeBar,{backgroundColor:t.colors["text-body"],borderRadius:t.radius.pill,marginBottom:t.space.sm}]}):null)};export const NavigationBar=({os:e,colorMode:o="light"})=>{if("Android"!==e)return null;const t=paletteFor(o);return createElement(View,{...wuiMarker(MARKER.navigationBar),accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",pointerEvents:"none",style:[styles.overlayBottom,{height:24,justifyContent:"center"}]},createElement(View,{style:[styles.navPill,{backgroundColor:t.colors["text-body"],borderRadius:t.radius.pill}]}))};export const SafeArea=({os:e,children:o})=>createElement(View,{...wuiMarker(MARKER.safeArea),style:[styles.fill,{paddingTop:STATUS_BAR_HEIGHT[e],paddingBottom:HOME_AREA_HEIGHT[e]}]},o);const KEYBOARD_PREVIEW_HEIGHT={ios:336,android:300};export const KeyboardFrame=({colorMode:e="light",previewOs:o,children:t})=>{const r=paletteFor(e),a=useKeyboardState(e=>Math.max(0,Math.round(e.height)));return createElement(View,{...wuiMarker(MARKER.keyboardFrame),style:[styles.fill,{paddingBottom:a,backgroundColor:r.colors.bg}]},t,o?createElement(View,{pointerEvents:"none",style:[styles.keyboardPreview,{height:KEYBOARD_PREVIEW_HEIGHT[o],backgroundColor:r.colors.bg}]}):null)};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};export const 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";import{createElement}from"react";import{StyleSheet,Text,View}from"react-native";import{useKeyboardState}from"react-native-keyboard-controller";import{darkTheme,fontFor,lightTheme}from"../theme/index.js";export const PHONE_CHROME_INSETS={Ios:{top:54,bottom:34},Android:{top:24,bottom:0}};const 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,SIGNAL_MAX=4,SIGNAL_BAR_WIDTH=3,SIGNAL_BAR_HEIGHTS=[4,6,8,10],BATTERY_FULL=100,BATTERY_WIDTH=24,BATTERY_HEIGHT=12,BATTERY_BORDER=1,BATTERY_INSET=1,BATTERY_CAP_WIDTH=2,BATTERY_CAP_HEIGHT=4,MARKER={statusBar:"AppStatusBar",homeIndicator:"AppHomeIndicator",navigationBar:"AppNavigationBar",safeArea:"AppSafeArea",keyboardFrame:"AppKeyboardFrame"},wuiMarker=e=>({dataSet:{wui:e}}),paletteFor=e=>"dark"===e?darkTheme:lightTheme,finiteOrZero=e=>"number"==typeof e&&Number.isFinite(e)?e:0,styles=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},statusRow:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"space-between"},statusGroup:{flexDirection:"row",alignItems:"center"}}),SignalGlyph=({bars:e,theme:t})=>createElement(View,{testID:"status-bar-signal",style:{flexDirection:"row",alignItems:"flex-end",columnGap:t.space.xxs}},SIGNAL_BAR_HEIGHTS.map((o,r)=>createElement(View,{key:r,style:{width:3,height:o,borderRadius:t.space.xxs/2,backgroundColor:r<e?t.colors["text-body"]:t.colors["text-disabled"]}}))),BatteryGlyph=({level:e,theme:t})=>{const o=Math.round(20*e/100);return createElement(View,{testID:"status-bar-battery",style:{flexDirection:"row",alignItems:"center"}},createElement(View,{style:{width:24,height:12,borderWidth:1,borderColor:t.colors["text-muted"],borderRadius:t.radius.sm/2,padding:1}},createElement(View,{testID:"status-bar-battery-fill",style:{height:"100%",width:o,backgroundColor:t.colors["text-body"],borderRadius:t.space.xxs/2}})),createElement(View,{style:{width:2,height:4,marginLeft:1,backgroundColor:t.colors["text-muted"],borderTopRightRadius:t.space.xxs/2,borderBottomRightRadius:t.space.xxs/2}}))};export const StatusBar=({os:e,colorMode:t="light",time:o,signal:r,battery:a})=>{const i=paletteFor(t),s={...wuiMarker(MARKER.statusBar),accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",pointerEvents:"none",style:[styles.overlayTop,{height:PHONE_CHROME_INSETS[e].top}]};if("string"!=typeof o&&"number"!=typeof r&&"number"!=typeof a)return createElement(View,s);const n="Ios"===e,l="string"==typeof o?createElement(Text,{numberOfLines:1,allowFontScaling:!1,style:{color:i.colors["text-body"],fontSize:n?i.text.base.size:i.text.sm.size,...fontFor(i,n?"semibold":"medium")}},o):createElement(View),c=createElement(View,{style:[styles.statusGroup,{columnGap:i.space.xs}]},"number"==typeof r?createElement(SignalGlyph,{bars:Math.min(4,Math.max(0,Math.round(finiteOrZero(r)))),theme:i}):null,"number"==typeof a?createElement(BatteryGlyph,{level:Math.min(100,Math.max(0,finiteOrZero(a))),theme:i}):null);return createElement(View,s,createElement(View,{style:[styles.statusRow,{paddingHorizontal:n?i.space["2xl"]:i.space.lg}]},l,c))};export const HomeIndicator=({os:e,colorMode:t="light"})=>{const o=paletteFor(t);return createElement(View,{...wuiMarker(MARKER.homeIndicator),accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",pointerEvents:"none",style:[styles.overlayBottom,{height:PHONE_CHROME_INSETS[e].bottom}]},"Ios"===e?createElement(View,{style:[styles.homeBar,{backgroundColor:o.colors["text-body"],borderRadius:o.radius.pill,marginBottom:o.space.sm}]}):null)};export const NavigationBar=({os:e,colorMode:t="light"})=>{if("Android"!==e)return null;const o=paletteFor(t);return createElement(View,{...wuiMarker(MARKER.navigationBar),accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",pointerEvents:"none",style:[styles.overlayBottom,{height:24,justifyContent:"center"}]},createElement(View,{style:[styles.navPill,{backgroundColor:o.colors["text-body"],borderRadius:o.radius.pill}]}))};export const SafeArea=({os:e,children:t})=>createElement(View,{...wuiMarker(MARKER.safeArea),style:[styles.fill,{paddingBottom:PHONE_CHROME_INSETS[e].bottom}]},t);const KEYBOARD_PREVIEW_HEIGHT={ios:336,android:300};export const KeyboardFrame=({colorMode:e="light",previewOs:t,children:o})=>{const r=paletteFor(e),a=useKeyboardState(e=>Math.max(0,Math.round(e.height)));return createElement(View,{...wuiMarker(MARKER.keyboardFrame),style:[styles.fill,{paddingBottom:a,backgroundColor:r.colors.bg}]},o,t?createElement(View,{pointerEvents:"none",style:[styles.keyboardPreview,{height:KEYBOARD_PREVIEW_HEIGHT[t],backgroundColor:r.colors.bg}]}):null)};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},timeProp={name:"time",type:"string",required:!1,description:"The clock as shown, such as 9:41."},signalProp={name:"signal",type:"number",required:!1,description:"Signal strength in bars, 0 to 4."},batteryProp={name:"battery",type:"number",required:!1,description:"Battery level in percent, 0 to 100."};export const phoneChromeEntries=[{name:"StatusBar",marker:MARKER.statusBar,acceptsChildren:!1,props:[osProp,colorModeProp,timeProp,signalProp,batteryProp],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";import{forwardRef,useMemo}from"react";import{Animated,Pressable,StyleSheet,Text,View}from"react-native";import{useSafeAreaInsets}from"react-native-safe-area-context";import{usePressAnimation}from"../../hooks/usePressAnimation.js";import{fontFor,useTheme}from"../../theme/index.js";import{smoothCorners}from"../../utils/corners.js";import{resolveHaptic,triggerHaptic}from"../../utils/hapticUtils.js";import{AppIcon}from"../AppIcon/AppIcon.js";import{Text as ThemedText}from"../Text/Text.js";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";const ACTION_BUTTON_SIZE=44,DOT_OFFSET=10,DOT_SIZE=8,BADGE_OFFSET=4,variantSize=(e,t)=>{switch(t){case"compact":return{height:44,titleSize:e.text.lg.size,titleWeight:"semibold",alignBottom:!1};case"large":return{height:96,titleSize:e.text["2xl"].size,titleWeight:"bold",alignBottom:!0};default:return{height:56,titleSize:e.text.lg.size,titleWeight:"semibold",alignBottom:!1}}},ActionButton=({action:e,side:t,badgeStyle:i,haptic:n,flush:o})=>{const l=useTheme(),{style:s,pressIn:r,pressOut:a}=usePressAnimation({enabled:!0}),c=useMemo(()=>buildActionStyles(l),[l]),d=e.badge,u=void 0!==d&&0!==d,p=void 0!==e.text;return _jsx(Animated.View,{style:s,children:_jsxs(Pressable,{onPress:()=>{const t=resolveHaptic(n,"selection");t&&triggerHaptic(t),e.onPress()},onPressIn:r,onPressOut:a,accessibilityRole:"button",accessibilityLabel:e.accessibilityLabel??e.text,testID:e.testID,android_ripple:{color:l.colors["surface-pressed"],borderless:!p},style:({pressed:e})=>[p?c.textButton:c.actionButton,o?null:"left"===t?c.actionLeft:c.actionRight,e&&!p?c.actionPressed:null,e&&p?c.textPressed:null],children:[p?_jsx(Text,{style:c.actionText,numberOfLines:1,children:e.text}):_jsx(View,{style:c.iconWrap,children:e.icon}),u?_jsx(View,{style:[c.badge,i],pointerEvents:"none",children:_jsx(Text,{style:c.badgeText,numberOfLines:1,children:String(d)})}):null,e.dot?_jsx(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=forwardRef((e,t)=>{const{title:i,subtitle:n,titleAlignment:o="left",leftAction:l,rightActions:s,leading:r,trailing:a,onBack:c,gutter:d,titleVariant:u,titleOffset:p,height:m,divider:g,variant:h="default",transparent:x=!1,scrollY:f,style:b,containerStyle:y,titleStyle:S,subtitleStyle:A,badgeStyle:j,haptic:_,testID:w}=e,T=useTheme(),B=useSafeAreaInsets(),I=useMemo(()=>variantSize(T,h),[T,h]),C=useMemo(()=>buildStyles(T),[T]),R="large"===h&&void 0!==f,v=l??(c?{icon:_jsx(AppIcon,{name:"arrow-left",size:24,color:T.colors["text-body"]}),onPress:c,accessibilityLabel:"Back"}:void 0),z=a?void 0:s?.[s.length-1],opticalInset=e=>void 0===e?0:void 0!==e.text?T.space.sm:Math.max(10,0),V=void 0===d?null:{paddingLeft:Math.max(d-opticalInset(v),0),paddingRight:Math.max(d-opticalInset(z),0)},L=void 0!==p,O=Boolean(v)||Boolean(r),P=g??!x,W=StyleSheet.hairlineWidth,D=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,-20]}),titleTranslateX:f.interpolate({...e,outputRange:"center"===o?[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,o]),E=R&&D?{transform:[{translateX:D.titleTranslateX},{translateY:D.titleTranslateY},{scale:D.titleScale}]}:null,H=i?u?_jsx(Animated.View,{style:E,children:_jsx(ThemedText,{variant:u,align:"center"===o?"center":"left",accessibilityRole:"header",numberOfLines:1,style:[C.titleVariant,S],children:i})}):_jsx(Animated.Text,{accessibilityRole:"header",style:[C.title,{fontSize:I.titleSize,fontWeight:T.weight[I.titleWeight],textAlign:"center"===o?"center":"left"},E,S],numberOfLines:1,children:i}):null,k=n?_jsx(Animated.Text,{style:[C.subtitle,{textAlign:"center"===o?"center":"left"},R&&D?{opacity:D.subtitleOpacity}:null,A],numberOfLines:1,children:n}):null,M=_jsxs(View,{style:[C.titleColumn,"center"===o?C.titleColumnCenter:null,I.alignBottom?C.titleColumnBottom:null],children:[H,k]}),N=R?Animated.View:View,F=R&&D?{height:Animated.add(D.barHeight,new Animated.Value(B.top))}:{height:(m??I.height)+B.top};return _jsxs(N,{ref:t,testID:w,style:[C.root,{paddingTop:B.top,backgroundColor:x?"transparent":T.colors.surface},F,!R&&P?{borderBottomWidth:W,borderBottomColor:T.colors.border}:null,b,y],children:[R&&D&&P?_jsx(Animated.View,{pointerEvents:"none",style:[C.animatedBorder,{backgroundColor:T.colors.border,opacity:D.borderOpacity}]}):null,_jsxs(View,{style:[C.row,I.alignBottom?C.rowAlignBottom:null,V,{flex:1}],children:[_jsxs(View,{style:[C.sideSlot,L?C.sideSlotCompact:null],children:[v?_jsx(ActionButton,{action:v,side:"left",haptic:_,flush:L}):null,null!=r&&!1!==r?_jsx(View,{style:C.slotNode,children:r}):null]}),_jsx(View,{pointerEvents:"none",style:[C.center,"center"===o?C.centerAligned:C.centerLeft,L?{paddingLeft:O?p:T.space.none,paddingRight:T.space.none}:null],children:M}),_jsxs(View,{style:[C.sideSlot,C.sideSlotRight,L?C.sideSlotCompact:null],children:[s?.map((e,t)=>_jsx(ActionButton,{action:e,side:"right",badgeStyle:j,haptic:_,flush:L},`appbar-right-${t}`)),null!=a&&!1!==a?_jsx(View,{style:C.slotNode,children:a}):null]})]})]})});AppBar.displayName="AppBar";const buildStyles=e=>StyleSheet.create({root:{width:"100%"},row:{flexDirection:"row",alignItems:"center",paddingHorizontal:e.space.xs},rowAlignBottom:{alignItems:"flex-end",paddingBottom:e.space.sm},sideSlot:{flexDirection:"row",alignItems:"center",minWidth:48},sideSlotRight:{justifyContent:"flex-end"},sideSlotCompact:{minWidth:0},slotNode:{flexDirection:"row",alignItems:"center"},center:{flex:1,paddingHorizontal:e.space.xs},centerAligned:{alignItems:"center"},centerLeft:{alignItems:"flex-start"},titleColumn:{flexDirection:"column"},titleColumnCenter:{alignItems:"center"},titleColumnBottom:{justifyContent:"flex-end"},title:{color:e.colors["text-body"]},titleVariant:{includeFontPadding:!1,textAlignVertical:"center"},subtitle:{marginTop:e.space.xxs,color:e.colors["text-subtle"],fontSize:e.text.sm.size,fontWeight:e.weight.normal},animatedBorder:{position:"absolute",left:0,right:0,bottom:0,height:StyleSheet.hairlineWidth}}),buildActionStyles=e=>StyleSheet.create({actionButton:{width:44,height:44,borderRadius:e.radius.pill,...smoothCorners,alignItems:"center",justifyContent:"center"},actionLeft:{marginRight:e.space.xs},actionRight:{marginLeft:e.space.xs},actionPressed:{backgroundColor:e.colors["surface-pressed"]},textButton:{minWidth:44,minHeight:44,paddingHorizontal:e.space.sm,alignItems:"center",justifyContent:"center"},textPressed:{opacity:.6},actionText:{color:e.colors.link,fontSize:e.text.base.size,...fontFor(e,"semibold")},dot:{position:"absolute",top:10,right:10,width:8,height:8,borderRadius:e.radius.pill,backgroundColor:e.colors.danger},iconWrap:{alignItems:"center",justifyContent:"center"},badge:{position:"absolute",top:4,right:4,minWidth:16,height:16,paddingHorizontal:e.space.xs,borderRadius:e.radius.pill,...smoothCorners,backgroundColor:e.colors.danger,alignItems:"center",justifyContent:"center"},badgeText:{color:e.colors["on-danger"],fontSize:e.text.xs.size,fontWeight:e.weight.semibold,lineHeight:13}});export{AppBar};export default AppBar;
1
+ "use strict";import{forwardRef,useMemo}from"react";import{Animated,Pressable,StyleSheet,Text,View}from"react-native";import{useSafeAreaInsets}from"react-native-safe-area-context";import{usePressAnimation}from"../../hooks/usePressAnimation.js";import{fontFor,useTheme}from"../../theme/index.js";import{smoothCorners}from"../../utils/corners.js";import{resolveHaptic,triggerHaptic}from"../../utils/hapticUtils.js";import{AppIcon}from"../AppIcon/AppIcon.js";import{Text as ThemedText}from"../Text/Text.js";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";const ACTION_BUTTON_SIZE=44,DOT_OFFSET=10,DOT_SIZE=8,BADGE_OFFSET=4,variantSize=(e,t)=>{switch(t){case"compact":return{height:44,titleSize:e.text.lg.size,titleWeight:"semibold",alignBottom:!1,subtitleLines:1};case"large":return{height:96,titleSize:e.text["2xl"].size,titleWeight:"bold",alignBottom:!0,subtitleLines:2};default:return{height:56,titleSize:e.text.lg.size,titleWeight:"semibold",alignBottom:!1,subtitleLines:1}}},ActionButton=({action:e,side:t,badgeStyle:i,haptic:n,flush:o})=>{const l=useTheme(),{style:s,pressIn:r,pressOut:a}=usePressAnimation({enabled:!0}),c=useMemo(()=>buildActionStyles(l),[l]),d=e.badge,u=void 0!==d&&0!==d,p=void 0!==e.text;return _jsx(Animated.View,{style:s,children:_jsxs(Pressable,{onPress:()=>{const t=resolveHaptic(n,"selection");t&&triggerHaptic(t),e.onPress()},onPressIn:r,onPressOut:a,accessibilityRole:"button",accessibilityLabel:e.accessibilityLabel??e.text,testID:e.testID,android_ripple:{color:l.colors["surface-pressed"],borderless:!p},style:({pressed:e})=>[p?c.textButton:c.actionButton,o?null:"left"===t?c.actionLeft:c.actionRight,e&&!p?c.actionPressed:null,e&&p?c.textPressed:null],children:[p?_jsx(Text,{style:c.actionText,numberOfLines:1,children:e.text}):_jsx(View,{style:c.iconWrap,children:e.icon}),u?_jsx(View,{style:[c.badge,i],pointerEvents:"none",children:_jsx(Text,{style:c.badgeText,numberOfLines:1,children:String(d)})}):null,e.dot?_jsx(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=forwardRef((e,t)=>{const{title:i,subtitle:n,titleAlignment:o="left",leftAction:l,rightActions:s,leading:r,trailing:a,onBack:c,gutter:d,titleVariant:u,titleOffset:p,height:m,divider:g,variant:h="default",transparent:x=!1,scrollY:f,style:b,containerStyle:y,titleStyle:S,subtitleStyle:A,badgeStyle:j,haptic:_,testID:w}=e,T=useTheme(),B=useSafeAreaInsets(),I=useMemo(()=>variantSize(T,h),[T,h]),C=useMemo(()=>buildStyles(T),[T]),R="large"===h&&void 0!==f,L=l??(c?{icon:_jsx(AppIcon,{name:"arrow-left",size:24,color:T.colors["text-body"]}),onPress:c,accessibilityLabel:"Back"}:void 0),v=a?void 0:s?.[s.length-1],opticalInset=e=>void 0===e?0:void 0!==e.text?T.space.sm:Math.max(10,0),z=void 0===d?null:{paddingLeft:Math.max(d-opticalInset(L),0),paddingRight:Math.max(d-opticalInset(v),0)},V=void 0!==p,O=Boolean(L)||Boolean(r),W=g??!x,P=StyleSheet.hairlineWidth,D=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,-20]}),titleTranslateX:f.interpolate({...e,outputRange:"center"===o?[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,o]),E=R&&D?{transform:[{translateX:D.titleTranslateX},{translateY:D.titleTranslateY},{scale:D.titleScale}]}:null,H=i?u?_jsx(Animated.View,{style:E,children:_jsx(ThemedText,{variant:u,align:"center"===o?"center":"left",accessibilityRole:"header",numberOfLines:1,style:[C.titleVariant,S],children:i})}):_jsx(Animated.Text,{accessibilityRole:"header",style:[C.title,{fontSize:I.titleSize,fontWeight:T.weight[I.titleWeight],textAlign:"center"===o?"center":"left"},E,S],numberOfLines:1,children:i}):null,k=n?_jsx(Animated.Text,{style:[C.subtitle,{textAlign:"center"===o?"center":"left"},R&&D?{opacity:D.subtitleOpacity}:null,A],numberOfLines:I.subtitleLines,children:n}):null,M=_jsxs(View,{style:[C.titleColumn,"center"===o?C.titleColumnCenter:null,I.alignBottom?C.titleColumnBottom:null],children:[H,k]}),N=R?Animated.View:View,F=R&&D?{height:Animated.add(D.barHeight,new Animated.Value(B.top))}:{height:(m??I.height)+B.top};return _jsxs(N,{ref:t,testID:w,style:[C.root,{paddingTop:B.top,backgroundColor:x?"transparent":T.colors.surface},F,!R&&W?{borderBottomWidth:P,borderBottomColor:T.colors.border}:null,b,y],children:[R&&D&&W?_jsx(Animated.View,{pointerEvents:"none",style:[C.animatedBorder,{backgroundColor:T.colors.border,opacity:D.borderOpacity}]}):null,_jsxs(View,{style:[C.row,I.alignBottom?C.rowAlignBottom:null,z,{flex:1}],children:[_jsxs(View,{style:[C.sideSlot,V?C.sideSlotCompact:null],children:[L?_jsx(ActionButton,{action:L,side:"left",haptic:_,flush:V}):null,null!=r&&!1!==r?_jsx(View,{style:C.slotNode,children:r}):null]}),_jsx(View,{pointerEvents:"none",style:[C.center,"center"===o?C.centerAligned:C.centerLeft,V?{paddingLeft:O?p:T.space.none,paddingRight:T.space.none}:null],children:M}),_jsxs(View,{style:[C.sideSlot,C.sideSlotRight,V?C.sideSlotCompact:null],children:[s?.map((e,t)=>_jsx(ActionButton,{action:e,side:"right",badgeStyle:j,haptic:_,flush:V},`appbar-right-${t}`)),null!=a&&!1!==a?_jsx(View,{style:C.slotNode,children:a}):null]})]})]})});AppBar.displayName="AppBar";const buildStyles=e=>StyleSheet.create({root:{width:"100%"},row:{flexDirection:"row",alignItems:"center",paddingHorizontal:e.space.xs},rowAlignBottom:{alignItems:"flex-end",paddingBottom:e.space.sm},sideSlot:{flexDirection:"row",alignItems:"center",minWidth:48},sideSlotRight:{justifyContent:"flex-end"},sideSlotCompact:{minWidth:0},slotNode:{flexDirection:"row",alignItems:"center"},center:{flex:1,minWidth:0,paddingHorizontal:e.space.xs},centerAligned:{alignItems:"center"},centerLeft:{alignItems:"flex-start"},titleColumn:{flexDirection:"column",maxWidth:"100%"},titleColumnCenter:{alignItems:"center"},titleColumnBottom:{justifyContent:"flex-end"},title:{color:e.colors["text-body"]},titleVariant:{includeFontPadding:!1,textAlignVertical:"center"},subtitle:{marginTop:e.space.xxs,color:e.colors["text-subtle"],fontSize:e.text.sm.size,fontWeight:e.weight.normal},animatedBorder:{position:"absolute",left:0,right:0,bottom:0,height:StyleSheet.hairlineWidth}}),buildActionStyles=e=>StyleSheet.create({actionButton:{width:44,height:44,borderRadius:e.radius.pill,...smoothCorners,alignItems:"center",justifyContent:"center"},actionLeft:{marginRight:e.space.xs},actionRight:{marginLeft:e.space.xs},actionPressed:{backgroundColor:e.colors["surface-pressed"]},textButton:{minWidth:44,minHeight:44,paddingHorizontal:e.space.sm,alignItems:"center",justifyContent:"center"},textPressed:{opacity:.6},actionText:{color:e.colors.link,fontSize:e.text.base.size,...fontFor(e,"semibold")},dot:{position:"absolute",top:10,right:10,width:8,height:8,borderRadius:e.radius.pill,backgroundColor:e.colors.danger},iconWrap:{alignItems:"center",justifyContent:"center"},badge:{position:"absolute",top:4,right:4,minWidth:16,height:16,paddingHorizontal:e.space.xs,borderRadius:e.radius.pill,...smoothCorners,backgroundColor:e.colors.danger,alignItems:"center",justifyContent:"center"},badgeText:{color:e.colors["on-danger"],fontSize:e.text.xs.size,fontWeight:e.weight.semibold,lineHeight:13}});export{AppBar};export default AppBar;
@@ -1 +1 @@
1
- "use strict";import{Image}from"expo-image";import{Children,cloneElement,forwardRef,isValidElement,useEffect,useMemo,useRef,useState}from"react";import{Animated,Easing,Pressable,StyleSheet,Text,View}from"react-native";import{createAnimatedValue,useTheme}from"../../theme/index.js";import{tintOf}from"../../utils/color.js";import{smoothCorners}from"../../utils/corners.js";import{resolveHaptic,triggerHaptic}from"../../utils/hapticUtils.js";import{AppIcon}from"../AppIcon/index.js";import{Skeleton}from"../Skeleton/index.js";import{jsx as _jsx,Fragment as _Fragment,jsxs as _jsxs}from"react/jsx-runtime";const SOFT_FILL_OPACITY=.14,MIN_TOUCH_TARGET=44,PRESSED_OPACITY=.7,INITIALS_MAX_FONT_SCALE=1.2;export const AVATAR_COLORS=["avatar-1","avatar-2","avatar-3","avatar-4","avatar-5","avatar-6","avatar-7","avatar-8"];export const avatarToneColors=(e,t)=>{const soft=(e,t)=>tintOf(e,.14,t);switch(t){case"primary":return{background:soft(e.colors.primary,e.colors["primary-soft"]),color:e.colors["primary-text"]};case"secondary":return{background:e.colors.neutral,color:e.colors["on-neutral"]};case"success":return{background:soft(e.colors.success,e.colors["bg-subtle"]),color:e.colors["success-text"]};case"warning":return{background:soft(e.colors.warning,e.colors["bg-subtle"]),color:e.colors["warning-text"]};case"danger":return{background:soft(e.colors.danger,e.colors["bg-subtle"]),color:e.colors["danger-text"]};case"info":return{background:soft(e.colors.info,e.colors["bg-subtle"]),color:e.colors["info-text"]};default:return{background:e.colors["bg-muted"],color:e.colors["text-body"]}}};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.danger;case"away":case"pending":return e.colors.warning;default:return e.colors["text-subtle"]}},Avatar=forwardRef((e,t)=>{const{source:r,ImageComponent:o,name:s,size:a="md",shape:i="circle",status:n=null,statusPosition:l="bottomRight",tone:c,backgroundColor:u,color:d,fontSize:m,loading:h=!1,accessibilityLabel:g,onPress:p,onLongPress:b,haptic:y,hitSlop:f,style:v,textStyle:x,testID:A}=e,C=useTheme(),[S,R]=useState(!1),_=useMemo(()=>resolveSize(a),[a]),I=useMemo(()=>resolveRadius(C,i,_),[C,i,_]),w=C.colors.border,j=C.colors.surface,M=useMemo(()=>initialsFromName(s),[s]),T=useMemo(()=>c?avatarToneColors(C,c):null,[C,c]),k=useMemo(()=>u||(T?.background??C.colors[hashColor(s??"",AVATAR_COLORS)]),[u,T,s,C]),E=d??T?.color??C.colors["on-primary"],L=!!r&&!S,z=m??Math.max(C.text.xs.size,Math.round(.4*_)),G=Math.max(8,Math.round(.25*_)),V=isRingStatus(n),F=_-2*(V?3:0),O=V?resolveRadius(C,i,F):I,N=V?statusColor(C,n):"transparent",W=Math.max(12,Math.round(.32*_)),P=Math.max(10,W-4),D=L?C.colors["bg-muted"]:k,$=A??"avatar",H=s?`${s}'s avatar`:"Avatar",B="verified"===n?", verified":"pending"===n?", pending verification":"",U=g??`${H}${B}`,Y="function"==typeof p||"function"==typeof b,X=g??`${s||H}${B}`,q=Math.max(0,Math.ceil((44-_)/2)),J=[styles.root,{width:_,height:_,borderRadius:I,...smoothCorners,borderWidth:0,borderColor:w,backgroundColor:V?"transparent":D},v],K=_jsxs(_Fragment,{children:[V?_jsx(View,{style:[styles.ring,{borderRadius:I,...smoothCorners,borderWidth:1.5,borderColor:N}],accessible:!1,pointerEvents:"none",testID:`${$}-ring`}):null,_jsx(View,{style:[styles.picture,{width:F,height:F,borderRadius:O,...smoothCorners,borderWidth:0,borderColor:w,backgroundColor:V?D:"transparent"}],children:L?(()=>{const e={width:F,height:F,borderRadius:O,...smoothCorners},onError=()=>R(!0);return o?_jsx(o,{source:r,onError:onError,style:e,contentFit:"cover",resizeMode:"cover",accessibilityIgnoresInvertColors:!0}):_jsx(Image,{source:r,onError:onError,style:e,contentFit:"cover",accessibilityIgnoresInvertColors:!0})})():_jsx(Text,{style:[styles.initials,{color:E,fontSize:z,fontWeight:C.weight.semibold},x],numberOfLines:1,maxFontSizeMultiplier:1.2,children:M??" "})}),"verified"===n?_jsx(View,{style:[styles.status,"topRight"===l?styles.badgeTopRight:styles.badgeBottomRight,{width:W,height:W,borderRadius:W/2,...smoothCorners,backgroundColor:j}],accessible:!1,pointerEvents:"none",testID:`${$}-badge`,children:_jsx(AppIcon,{name:"verify",variant:"bold",size:P,color:N})}):null,n&&!V?_jsx(View,{style:[styles.status,"topRight"===l?styles.statusTopRight:styles.statusBottomRight,{width:G,height:G,borderRadius:G/2,...smoothCorners,backgroundColor:statusColor(C,n),borderWidth:2,borderColor:j}],accessible:!1,pointerEvents:"none"}):null]}),Q=Y?_jsx(Pressable,{ref:t,onPress:p?e=>{const t=resolveHaptic(y,"selection");t&&triggerHaptic(t),p?.(e)}:void 0,onLongPress:b?e=>{const t=resolveHaptic(y,"longPress");t&&triggerHaptic(t),b?.(e)}:void 0,hitSlop:f??q,accessibilityRole:"button",accessibilityLabel:X,testID:A,style:({pressed:e})=>[J,e?styles.pressed:null],children:K}):_jsx(View,{ref:t,style:J,accessible:!0,accessibilityRole:"image",accessibilityLabel:U,testID:A,children:K});return h?_jsx(AvatarSkeleton,{...e}):Q});Avatar.displayName="Avatar";const AvatarSkeleton=({size:e="md",shape:t="circle",style:r})=>{const o=resolveSize(e);return _jsx(Skeleton,{shape:"circle"===t?"circle":"rounded"===t?"rounded":"rect",width:o,height:o,style:r})};AvatarSkeleton.displayName="AvatarSkeleton",Avatar.Skeleton=AvatarSkeleton;const styles=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=useTheme(),i=useRef(createAnimatedValue(0)).current;return useEffect(()=>{const t=Animated.timing(i,{toValue:1,duration:220,delay:e,easing:Easing.out(Easing.cubic),useNativeDriver:!0});return t.start(),()=>t.stop()},[e,i]),_jsx(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:l}=e,c=useTheme(),u=useMemo(()=>Children.toArray(t).filter(e=>isValidElement(e)),[t]),d=u.length,m=u.slice(0,r),h=Math.max(0,d-r),g=h>0,p=-c.space[SPACING_OFFSET[s]],b=c.colors.surface,y=i??`Group of ${d} ${1===d?"person":"people"}`,f=useMemo(()=>resolveSize(o),[o]),v=Math.max(c.text.xs.size,Math.round(.34*f));return _jsxs(View,{style:[groupStyles.row,n],accessible:!0,accessibilityLabel:y,accessibilityRole:"summary",testID:l,children:[m.map((e,t)=>{const r=e.key??`avatar-${t}`;return _jsx(AvatarGroupItem,{delay:50*t,marginLeft:0===t?0:p,borderColor:b,borderWidth:1.5,children:cloneElement(e,{size:o})},r)}),g?_jsx(AvatarGroupItem,{delay:50*m.length,marginLeft:0===m.length?0:p,borderColor:b,borderWidth:1.5,children:_jsx(View,{style:[groupStyles.overflow,{width:f,height:f,borderRadius:f/2,...smoothCorners,backgroundColor:c.colors["surface-disabled"]}],accessible:!0,accessibilityRole:"text",accessibilityLabel:"count"===a?`${h} more`:"More avatars",children:_jsx(Text,{style:{color:c.colors["text-muted"],fontSize:v,fontWeight:c.weight.semibold},numberOfLines:1,maxFontSizeMultiplier:1.2,children:"count"===a?`+${h}`:"+"})})},"avatar-overflow"):null]})},groupStyles=StyleSheet.create({row:{flexDirection:"row",alignItems:"center"},item:{...smoothCorners},overflow:{alignItems:"center",justifyContent:"center"}}),AvatarWithGroup=Avatar;AvatarWithGroup.Group=AvatarGroup;export{Avatar,AvatarGroup};export default AvatarWithGroup;
1
+ "use strict";import{Image}from"expo-image";import{Children,cloneElement,forwardRef,isValidElement,useEffect,useMemo,useRef,useState}from"react";import{Animated,Easing,Pressable,StyleSheet,Text,View}from"react-native";import{createAnimatedValue,useTheme}from"../../theme/index.js";import{tintOf}from"../../utils/color.js";import{smoothCorners}from"../../utils/corners.js";import{resolveHaptic,triggerHaptic}from"../../utils/hapticUtils.js";import{hitSlopMarker}from"../../utils/hitSlop.js";import{AppIcon}from"../AppIcon/index.js";import{Skeleton}from"../Skeleton/index.js";import{jsx as _jsx,Fragment as _Fragment,jsxs as _jsxs}from"react/jsx-runtime";const SOFT_FILL_OPACITY=.14,MIN_TOUCH_TARGET=44,PRESSED_OPACITY=.7,INITIALS_MAX_FONT_SCALE=1.2;export const AVATAR_COLORS=["avatar-1","avatar-2","avatar-3","avatar-4","avatar-5","avatar-6","avatar-7","avatar-8"];export const avatarToneColors=(e,t)=>{const soft=(e,t)=>tintOf(e,.14,t);switch(t){case"primary":return{background:soft(e.colors.primary,e.colors["primary-soft"]),color:e.colors["primary-text"]};case"secondary":return{background:e.colors.neutral,color:e.colors["on-neutral"]};case"success":return{background:soft(e.colors.success,e.colors["bg-subtle"]),color:e.colors["success-text"]};case"warning":return{background:soft(e.colors.warning,e.colors["bg-subtle"]),color:e.colors["warning-text"]};case"danger":return{background:soft(e.colors.danger,e.colors["bg-subtle"]),color:e.colors["danger-text"]};case"info":return{background:soft(e.colors.info,e.colors["bg-subtle"]),color:e.colors["info-text"]};default:return{background:e.colors["bg-muted"],color:e.colors["text-body"]}}};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.danger;case"away":case"pending":return e.colors.warning;default:return e.colors["text-subtle"]}},Avatar=forwardRef((e,t)=>{const{source:r,ImageComponent:o,name:s,size:a="md",shape:i="circle",status:n=null,statusPosition:l="bottomRight",tone:c,backgroundColor:u,color:d,fontSize:m,loading:h=!1,accessibilityLabel:g,onPress:p,onLongPress:b,haptic:f,hitSlop:y,style:v,textStyle:x,testID:A}=e,C=useTheme(),[S,R]=useState(!1),_=useMemo(()=>resolveSize(a),[a]),I=useMemo(()=>resolveRadius(C,i,_),[C,i,_]),w=C.colors.border,j=C.colors.surface,M=useMemo(()=>initialsFromName(s),[s]),T=useMemo(()=>c?avatarToneColors(C,c):null,[C,c]),k=useMemo(()=>u||(T?.background??C.colors[hashColor(s??"",AVATAR_COLORS)]),[u,T,s,C]),E=d??T?.color??C.colors["on-primary"],L=!!r&&!S,z=m??Math.max(C.text.xs.size,Math.round(.4*_)),G=Math.max(8,Math.round(.25*_)),V=isRingStatus(n),F=_-2*(V?3:0),O=V?resolveRadius(C,i,F):I,N=V?statusColor(C,n):"transparent",W=Math.max(12,Math.round(.32*_)),P=Math.max(10,W-4),D=L?C.colors["bg-muted"]:k,$=A??"avatar",H=s?`${s}'s avatar`:"Avatar",B="verified"===n?", verified":"pending"===n?", pending verification":"",U=g??`${H}${B}`,Y="function"==typeof p||"function"==typeof b,X=g??`${s||H}${B}`,q=Math.max(0,Math.ceil((44-_)/2)),J=y??q,K=[styles.root,{width:_,height:_,borderRadius:I,...smoothCorners,borderWidth:0,borderColor:w,backgroundColor:V?"transparent":D},v],Q=_jsxs(_Fragment,{children:[V?_jsx(View,{style:[styles.ring,{borderRadius:I,...smoothCorners,borderWidth:1.5,borderColor:N}],accessible:!1,pointerEvents:"none",testID:`${$}-ring`}):null,_jsx(View,{style:[styles.picture,{width:F,height:F,borderRadius:O,...smoothCorners,borderWidth:0,borderColor:w,backgroundColor:V?D:"transparent"}],children:L?(()=>{const e={width:F,height:F,borderRadius:O,...smoothCorners},onError=()=>R(!0);return o?_jsx(o,{source:r,onError:onError,style:e,contentFit:"cover",resizeMode:"cover",accessibilityIgnoresInvertColors:!0}):_jsx(Image,{source:r,onError:onError,style:e,contentFit:"cover",accessibilityIgnoresInvertColors:!0})})():_jsx(Text,{style:[styles.initials,{color:E,fontSize:z,fontWeight:C.weight.semibold},x],numberOfLines:1,maxFontSizeMultiplier:1.2,children:M??" "})}),"verified"===n?_jsx(View,{style:[styles.status,"topRight"===l?styles.badgeTopRight:styles.badgeBottomRight,{width:W,height:W,borderRadius:W/2,...smoothCorners,backgroundColor:j}],accessible:!1,pointerEvents:"none",testID:`${$}-badge`,children:_jsx(AppIcon,{name:"verify",variant:"bold",size:P,color:N})}):null,n&&!V?_jsx(View,{style:[styles.status,"topRight"===l?styles.statusTopRight:styles.statusBottomRight,{width:G,height:G,borderRadius:G/2,...smoothCorners,backgroundColor:statusColor(C,n),borderWidth:2,borderColor:j}],accessible:!1,pointerEvents:"none"}):null]}),Z=Y?_jsx(Pressable,{ref:t,onPress:p?e=>{const t=resolveHaptic(f,"selection");t&&triggerHaptic(t),p?.(e)}:void 0,onLongPress:b?e=>{const t=resolveHaptic(f,"longPress");t&&triggerHaptic(t),b?.(e)}:void 0,hitSlop:J,...hitSlopMarker(J),accessibilityRole:"button",accessibilityLabel:X,testID:A,style:({pressed:e})=>[K,e?styles.pressed:null],children:Q}):_jsx(View,{ref:t,style:K,accessible:!0,accessibilityRole:"image",accessibilityLabel:U,testID:A,children:Q});return h?_jsx(AvatarSkeleton,{...e}):Z});Avatar.displayName="Avatar";const AvatarSkeleton=({size:e="md",shape:t="circle",style:r})=>{const o=resolveSize(e);return _jsx(Skeleton,{shape:"circle"===t?"circle":"rounded"===t?"rounded":"rect",width:o,height:o,style:r})};AvatarSkeleton.displayName="AvatarSkeleton",Avatar.Skeleton=AvatarSkeleton;const styles=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=useTheme(),i=useRef(createAnimatedValue(0)).current;return useEffect(()=>{const t=Animated.timing(i,{toValue:1,duration:220,delay:e,easing:Easing.out(Easing.cubic),useNativeDriver:!0});return t.start(),()=>t.stop()},[e,i]),_jsx(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:l}=e,c=useTheme(),u=useMemo(()=>Children.toArray(t).filter(e=>isValidElement(e)),[t]),d=u.length,m=u.slice(0,r),h=Math.max(0,d-r),g=h>0,p=-c.space[SPACING_OFFSET[s]],b=c.colors.surface,f=i??`Group of ${d} ${1===d?"person":"people"}`,y=useMemo(()=>resolveSize(o),[o]),v=Math.max(c.text.xs.size,Math.round(.34*y));return _jsxs(View,{style:[groupStyles.row,n],accessible:!0,accessibilityLabel:f,accessibilityRole:"summary",testID:l,children:[m.map((e,t)=>{const r=e.key??`avatar-${t}`;return _jsx(AvatarGroupItem,{delay:50*t,marginLeft:0===t?0:p,borderColor:b,borderWidth:1.5,children:cloneElement(e,{size:o})},r)}),g?_jsx(AvatarGroupItem,{delay:50*m.length,marginLeft:0===m.length?0:p,borderColor:b,borderWidth:1.5,children:_jsx(View,{style:[groupStyles.overflow,{width:y,height:y,borderRadius:y/2,...smoothCorners,backgroundColor:c.colors["surface-disabled"]}],accessible:!0,accessibilityRole:"text",accessibilityLabel:"count"===a?`${h} more`:"More avatars",children:_jsx(Text,{style:{color:c.colors["text-muted"],fontSize:v,fontWeight:c.weight.semibold},numberOfLines:1,maxFontSizeMultiplier:1.2,children:"count"===a?`+${h}`:"+"})})},"avatar-overflow"):null]})},groupStyles=StyleSheet.create({row:{flexDirection:"row",alignItems:"center"},item:{...smoothCorners},overflow:{alignItems:"center",justifyContent:"center"}}),AvatarWithGroup=Avatar;AvatarWithGroup.Group=AvatarGroup;export{Avatar,AvatarGroup};export default AvatarWithGroup;
@@ -1 +1 @@
1
- "use strict";import{forwardRef,useEffect,useMemo,useRef,useState}from"react";import{Animated,Pressable,StyleSheet,Text,View}from"react-native";import{usePresenceMotion}from"../../hooks/usePresenceMotion.js";import{createAnimatedValue,fontFor,useTheme}from"../../theme/index.js";import{smoothCorners}from"../../utils/corners.js";import{resolveHaptic,triggerHaptic}from"../../utils/hapticUtils.js";import{Skeleton,SkeletonText}from"../Skeleton/index.js";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";const Banner=forwardRef((e,t)=>{const{title:r,message:o,variant:s="info",icon:n,actions:i,dismissible:l=!1,onDismiss:a,haptic:c,visible:d=!0,animateMount:u=!0,loading:m=!1,accessibilityRole:p="alert",accessibilityLabel:g,style:h,containerStyle:x,iconCircleStyle:y,tintBarStyle:b,closeButtonStyle:f,actionButtonStyle:w,testID:j}=e,S=useTheme(),k=usePresenceMotion(),C=useMemo(()=>buildStyles(S),[S]),B=useMemo(()=>tintFor(S,s),[S,s]),[_,R]=k.range(-20,0),V=useRef(createAnimatedValue(u&&d?_:0)).current,v=useRef(createAnimatedValue(u&&d?0:d?1:0)).current,[z,T]=useState(d),H=useRef(!0);if(useEffect(()=>{if(H.current&&(H.current=!1,!u))return;let e;return d?(T(!0),e=Animated.parallel([Animated.timing(V,{toValue:R,duration:S.motion.duration.default,useNativeDriver:!0}),Animated.timing(v,{toValue:1,duration:k.duration("default"),useNativeDriver:!0})]),e.start()):z&&(e=Animated.parallel([Animated.timing(V,{toValue:_,duration:S.motion.duration.fast,useNativeDriver:!0}),Animated.timing(v,{toValue:0,duration:k.duration("fast"),useNativeDriver:!0})]),e.start(()=>{T(!1)})),()=>e?.stop()},[d]),!z)return null;const A=r??" ",D="string"==typeof o?o??" ":"",L="alert"===p?"danger"===s?"assertive":"polite":"none",M=_jsxs(Animated.View,{ref:t,accessibilityRole:p,accessibilityLiveRegion:L,accessibilityLabel:g,testID:j,style:[C.container,{backgroundColor:S.colors["bg-subtle"],borderRadius:S.radius.md,...smoothCorners,padding:S.space.md,opacity:v,transform:[{translateY:V}]},h,x],children:[S.components.banner["tint-bar-width"]>0?_jsx(View,{style:[C.tintBar,{backgroundColor:B.bar},b]}):null,_jsxs(View,{style:C.row,children:[!1===n?null:_jsx(View,n?{style:C.iconWrap,children:n}:{style:[C.iconCircle,{backgroundColor:B.bar+"22"},y],children:_jsx(Text,{style:[C.iconGlyph,{color:B.ink}],accessible:!1,children:B.glyph})}),_jsxs(View,{style:C.textBlock,children:[r||m?_jsx(Text,{style:{color:S.colors["text-body"],fontSize:S.text.base.size,...fontFor(S,"semibold"),lineHeight:20},numberOfLines:2,children:A}):null,"string"==typeof o||m?_jsx(Text,{style:{color:S.colors["text-muted"],fontSize:S.text.sm.size,...fontFor(S,"normal"),lineHeight:18,marginTop:r?S.space.xxs:0},children:D||" "}):_jsx(View,{style:{marginTop:r?S.space.xxs:0},children:o})]}),l?_jsx(Pressable,{accessibilityRole:"button",accessibilityLabel:"Dismiss banner",onPress:()=>{const e=resolveHaptic(c,"selection");e&&triggerHaptic(e),a?.()},hitSlop:8,style:({pressed:e})=>[C.closeBtn,{backgroundColor:e?S.colors["surface-pressed"]:"transparent"},f],children:_jsx(Text,{style:{color:S.colors["text-muted"],fontSize:S.text.lg.size,fontWeight:S.weight.bold,lineHeight:17},accessible:!1,children:"×"})}):null]}),i&&i.length>0?_jsx(View,{style:C.actionsRow,children:i.map((e,t)=>{const r=e.tone??"primary",o=e.variant??"ghost",s="danger"===r?S.colors.danger:"neutral"===r?S.colors["text-muted"]:B.glyphColor,n="danger"===r?S.colors["danger-text"]:"neutral"===r?S.colors["text-muted"]:B.ink,i="danger"===r?S.colors["on-danger"]:"neutral"===r?S.colors["on-neutral-strong"]:B.on,l="solid"===o;return _jsx(Pressable,{accessibilityRole:"button",accessibilityLabel:e.label,onPress:()=>{const t=resolveHaptic(c,"selection");t&&triggerHaptic(t),e.onPress()},style:({pressed:t})=>[C.actionBtn,"md"===e.size&&C.actionBtnMd,"outline"===o&&{borderWidth:1,borderColor:n},{backgroundColor:l?s:t?S.colors["surface-pressed"]:"transparent",opacity:l&&t?.85:1},w],children:_jsx(Text,{style:{color:l?i:n,fontSize:S.text.sm.size,textAlign:"center",...fontFor(S,"semibold")},children:e.label})},`${e.label}-${t}`)})}):null]});return m?_jsx(BannerSkeleton,{...e}):M});Banner.displayName="Banner";const BannerSkeleton=({title:e,actions:t,icon:r,containerStyle:o,style:s})=>{const n=useTheme(),i=!1!==r;return _jsxs(View,{style:[{flexDirection:"row",alignItems:"flex-start",backgroundColor:n.colors.surface,borderRadius:n.radius.md,...smoothCorners,padding:n.space.md,borderWidth:1,borderColor:n.colors.border},o,s],accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,children:[i?_jsx(View,{style:{marginRight:n.space.sm},children:_jsx(Skeleton,{shape:"circle",width:32,height:32})}):null,_jsxs(View,{style:{flex:1},children:[void 0!==e?_jsx(Skeleton,{shape:"text",width:"55%",height:16,style:{marginBottom:n.space.xs}}):null,_jsx(SkeletonText,{lines:2,fontSize:n.text.sm.size,lastLineWidth:"70%"}),t&&t.length>0?_jsx(View,{style:{flexDirection:"row",marginTop:n.space.sm},children:t.map((e,t)=>_jsx(Skeleton,{width:72,height:28,shape:"rounded",style:{marginRight:n.space.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["success-text"],on:e.colors["on-success"],glyph:"✓"};case"warning":return{bar:e.colors.warning,glyphColor:e.colors.warning,ink:e.colors["warning-text"],on:e.colors["on-warning"],glyph:"⚠"};case"danger":return{bar:e.colors.danger,glyphColor:e.colors.danger,ink:e.colors["danger-text"],on:e.colors["on-danger"],glyph:"✗"};case"neutral":return{bar:e.colors["text-subtle"],glyphColor:e.colors["text-muted"],ink:e.colors["text-muted"],on:e.colors["on-neutral-strong"],glyph:"i"};default:return{bar:e.colors.primary,glyphColor:e.colors.primary,ink:e.colors["primary-text"],on:e.colors["on-primary"],glyph:"i"}}},buildStyles=e=>{const t=e.components.banner,r=e.space.sm;return StyleSheet.create({container:{overflow:"hidden",paddingLeft:e.space.md},tintBar:{position:"absolute",left:0,top:0,bottom:0,width:t["tint-bar-width"]},row:{flexDirection:"row",alignItems:"flex-start"},iconWrap:{marginRight:r},iconCircle:{width:28,height:28,borderRadius:e.radius.pill,...smoothCorners,alignItems:"center",justifyContent:"center",marginRight:r},iconGlyph:{fontSize:e.text.base.size,fontWeight:"700",lineHeight:17},textBlock:{flex:1,paddingRight:e.space.xs},closeBtn:{width:28,height:28,borderRadius:e.radius.pill,...smoothCorners,alignItems:"center",justifyContent:"center",marginLeft:e.space.xxs},actionsRow:{flexDirection:"row",flexWrap:"wrap",justifyContent:"flex-end",marginTop:e.space.xs,columnGap:e.space.xs,rowGap:e.space.xs},actionBtn:{paddingHorizontal:e.space.sm,paddingVertical:e.space.xs,borderRadius:e.radius.sm,...smoothCorners,maxWidth:"100%",alignItems:"center",justifyContent:"center"},actionBtnMd:{minHeight:44,paddingHorizontal:e.space.md}})};export{Banner};export default Banner;
1
+ "use strict";import{forwardRef,useEffect,useMemo,useRef,useState}from"react";import{Animated,Pressable,StyleSheet,Text,View}from"react-native";import{usePresenceMotion}from"../../hooks/usePresenceMotion.js";import{createAnimatedValue,fontFor,useTheme}from"../../theme/index.js";import{smoothCorners}from"../../utils/corners.js";import{resolveHaptic,triggerHaptic}from"../../utils/hapticUtils.js";import{hitSlopMarker}from"../../utils/hitSlop.js";import{Skeleton,SkeletonText}from"../Skeleton/index.js";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";const Banner=forwardRef((e,t)=>{const{title:r,message:o,variant:s="info",icon:n,actions:i,dismissible:l=!1,onDismiss:a,haptic:c,visible:d=!0,animateMount:u=!0,loading:m=!1,accessibilityRole:p="alert",accessibilityLabel:g,style:h,containerStyle:x,iconCircleStyle:y,tintBarStyle:b,closeButtonStyle:f,actionButtonStyle:w,testID:j}=e,S=useTheme(),k=usePresenceMotion(),C=useMemo(()=>buildStyles(S),[S]),B=useMemo(()=>tintFor(S,s),[S,s]),[_,R]=k.range(-20,0),V=useRef(createAnimatedValue(u&&d?_:0)).current,v=useRef(createAnimatedValue(u&&d?0:d?1:0)).current,[z,T]=useState(d),H=useRef(!0);if(useEffect(()=>{if(H.current&&(H.current=!1,!u))return;let e;return d?(T(!0),e=Animated.parallel([Animated.timing(V,{toValue:R,duration:S.motion.duration.default,useNativeDriver:!0}),Animated.timing(v,{toValue:1,duration:k.duration("default"),useNativeDriver:!0})]),e.start()):z&&(e=Animated.parallel([Animated.timing(V,{toValue:_,duration:S.motion.duration.fast,useNativeDriver:!0}),Animated.timing(v,{toValue:0,duration:k.duration("fast"),useNativeDriver:!0})]),e.start(()=>{T(!1)})),()=>e?.stop()},[d]),!z)return null;const A=r??" ",D="string"==typeof o?o??" ":"",M="alert"===p?"danger"===s?"assertive":"polite":"none",L=_jsxs(Animated.View,{ref:t,accessibilityRole:p,accessibilityLiveRegion:M,accessibilityLabel:g,testID:j,style:[C.container,{backgroundColor:S.colors["bg-subtle"],borderRadius:S.radius.md,...smoothCorners,padding:S.space.md,opacity:v,transform:[{translateY:V}]},h,x],children:[S.components.banner["tint-bar-width"]>0?_jsx(View,{style:[C.tintBar,{backgroundColor:B.bar},b]}):null,_jsxs(View,{style:C.row,children:[!1===n?null:_jsx(View,n?{style:C.iconWrap,children:n}:{style:[C.iconCircle,{backgroundColor:B.bar+"22"},y],children:_jsx(Text,{style:[C.iconGlyph,{color:B.ink}],accessible:!1,children:B.glyph})}),_jsxs(View,{style:C.textBlock,children:[r||m?_jsx(Text,{style:{color:S.colors["text-body"],fontSize:S.text.base.size,...fontFor(S,"semibold"),lineHeight:20},numberOfLines:2,children:A}):null,"string"==typeof o||m?_jsx(Text,{style:{color:S.colors["text-muted"],fontSize:S.text.sm.size,...fontFor(S,"normal"),lineHeight:18,marginTop:r?S.space.xxs:0},children:D||" "}):_jsx(View,{style:{marginTop:r?S.space.xxs:0},children:o})]}),l?_jsx(Pressable,{accessibilityRole:"button",accessibilityLabel:"Dismiss banner",onPress:()=>{const e=resolveHaptic(c,"selection");e&&triggerHaptic(e),a?.()},hitSlop:8,...hitSlopMarker(8),style:({pressed:e})=>[C.closeBtn,{backgroundColor:e?S.colors["surface-pressed"]:"transparent"},f],children:_jsx(Text,{style:{color:S.colors["text-muted"],fontSize:S.text.lg.size,fontWeight:S.weight.bold,lineHeight:17},accessible:!1,children:"×"})}):null]}),i&&i.length>0?_jsx(View,{style:C.actionsRow,children:i.map((e,t)=>{const r=e.tone??"primary",o=e.variant??"ghost",s="danger"===r?S.colors.danger:"neutral"===r?S.colors["text-muted"]:B.glyphColor,n="danger"===r?S.colors["danger-text"]:"neutral"===r?S.colors["text-muted"]:B.ink,i="danger"===r?S.colors["on-danger"]:"neutral"===r?S.colors["on-neutral-strong"]:B.on,l="solid"===o;return _jsx(Pressable,{accessibilityRole:"button",accessibilityLabel:e.label,onPress:()=>{const t=resolveHaptic(c,"selection");t&&triggerHaptic(t),e.onPress()},style:({pressed:t})=>[C.actionBtn,"md"===e.size&&C.actionBtnMd,"outline"===o&&{borderWidth:1,borderColor:n},{backgroundColor:l?s:t?S.colors["surface-pressed"]:"transparent",opacity:l&&t?.85:1},w],children:_jsx(Text,{style:{color:l?i:n,fontSize:S.text.sm.size,textAlign:"center",...fontFor(S,"semibold")},children:e.label})},`${e.label}-${t}`)})}):null]});return m?_jsx(BannerSkeleton,{...e}):L});Banner.displayName="Banner";const BannerSkeleton=({title:e,actions:t,icon:r,containerStyle:o,style:s})=>{const n=useTheme(),i=!1!==r;return _jsxs(View,{style:[{flexDirection:"row",alignItems:"flex-start",backgroundColor:n.colors.surface,borderRadius:n.radius.md,...smoothCorners,padding:n.space.md,borderWidth:1,borderColor:n.colors.border},o,s],accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,children:[i?_jsx(View,{style:{marginRight:n.space.sm},children:_jsx(Skeleton,{shape:"circle",width:32,height:32})}):null,_jsxs(View,{style:{flex:1},children:[void 0!==e?_jsx(Skeleton,{shape:"text",width:"55%",height:16,style:{marginBottom:n.space.xs}}):null,_jsx(SkeletonText,{lines:2,fontSize:n.text.sm.size,lastLineWidth:"70%"}),t&&t.length>0?_jsx(View,{style:{flexDirection:"row",marginTop:n.space.sm},children:t.map((e,t)=>_jsx(Skeleton,{width:72,height:28,shape:"rounded",style:{marginRight:n.space.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["success-text"],on:e.colors["on-success"],glyph:"✓"};case"warning":return{bar:e.colors.warning,glyphColor:e.colors.warning,ink:e.colors["warning-text"],on:e.colors["on-warning"],glyph:"⚠"};case"danger":return{bar:e.colors.danger,glyphColor:e.colors.danger,ink:e.colors["danger-text"],on:e.colors["on-danger"],glyph:"✗"};case"neutral":return{bar:e.colors["text-subtle"],glyphColor:e.colors["text-muted"],ink:e.colors["text-muted"],on:e.colors["on-neutral-strong"],glyph:"i"};default:return{bar:e.colors.primary,glyphColor:e.colors.primary,ink:e.colors["primary-text"],on:e.colors["on-primary"],glyph:"i"}}},buildStyles=e=>{const t=e.components.banner,r=e.space.sm;return StyleSheet.create({container:{overflow:"hidden",paddingLeft:e.space.md},tintBar:{position:"absolute",left:0,top:0,bottom:0,width:t["tint-bar-width"]},row:{flexDirection:"row",alignItems:"flex-start"},iconWrap:{marginRight:r},iconCircle:{width:28,height:28,borderRadius:e.radius.pill,...smoothCorners,alignItems:"center",justifyContent:"center",marginRight:r},iconGlyph:{fontSize:e.text.base.size,fontWeight:"700",lineHeight:17},textBlock:{flex:1,paddingRight:e.space.xs},closeBtn:{width:28,height:28,borderRadius:e.radius.pill,...smoothCorners,alignItems:"center",justifyContent:"center",marginLeft:e.space.xxs},actionsRow:{flexDirection:"row",flexWrap:"wrap",justifyContent:"flex-end",marginTop:e.space.xs,columnGap:e.space.xs,rowGap:e.space.xs},actionBtn:{paddingHorizontal:e.space.sm,paddingVertical:e.space.xs,borderRadius:e.radius.sm,...smoothCorners,maxWidth:"100%",alignItems:"center",justifyContent:"center"},actionBtnMd:{minHeight:44,paddingHorizontal:e.space.md}})};export{Banner};export default Banner;
@@ -1 +1 @@
1
- "use strict";import React,{forwardRef,useEffect,useMemo,useRef}from"react";import{Animated,LayoutAnimation,Platform,Pressable,StyleSheet,Text,View}from"react-native";import{useSafeAreaInsets}from"react-native-safe-area-context";import{useReducedMotion}from"../../hooks/useReducedMotion.js";import{createAnimatedValue,useTheme}from"../../theme/index.js";import{triggerHaptic}from"../../utils/index.js";import{smoothCorners}from"../../utils/corners.js";import{supportsBoxShadow,toBoxShadow}from"../../utils/shadows.js";import{renderSlotIcon}from"../AppIcon/index.js";import{useScreenReaderEnabled}from"./useScreenReaderEnabled.js";import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";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=forwardRef((e,t)=>{const{tabs:i,centerAction:n,activeTab:o,onChange:a,haptic:r="selection",showLabels:s=!0,variant:l="pill",indicatorPosition:d="bottom",radius:c,indicatorRadius:u="auto",elevation:p,iconSize:m,marginHorizontal:h,marginVertical:g,paddingHorizontal:b,paddingVertical:f,border:x,minimizeOnScroll:y=!1,scrollDirection:_="idle",accessory:S,style:w,indicatorStyle:R,labelStyle:I,labelMaxFontScale:E,testID:A}=e,v=useTheme(),C=useSafeAreaInsets(),j=useMemo(()=>buildStyles(v),[v]),T=m??18,L=T+4+8,V=v.space.lg,D=v.space.lg,M=v.radius.xl,k=useReducedMotion(),B=useScreenReaderEnabled(y),[z,F]=React.useState(null);useEffect(()=>{null!==z&&z!==_&&F(null)},[z,_]);const N=y&&!B&&"down"===_&&null===z,[P,H]=React.useState(N);useEffect(()=>{P!==N&&(k||"web"===Platform.OS||LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut),H(N))},[P,N,k]);const W="function"==typeof S?S({minimized:P}):S,O=null!=W&&!1!==W,U=P&&O,[$,X]=React.useState(0),Z=O&&!U?$+v.space.xs:0,Y="tile"===l,K="floating"===l||Y,q="bubble"===l,G="expand"===l,J="solid"===l,Q="pill"===l||K||J,ee=Math.max(0,i.findIndex(e=>e.key===o)),[te,ie]=React.useState(0),[ne,oe]=React.useState(0),ae=n?Math.ceil(i.length/2):i.length,re=i.length+(n?1:0),[se,le]=React.useState({width:0,height:0}),de=n?.size??48,ce=void 0!==n?.gap,ue=Math.max(0,n?.gap??0),pe=ce?(se.width||de)+2*ue:0,me=ce?i.length>0?Math.max(0,te-pe)/i.length:0:re>0?te/re:0,he=ce?pe:me,ge=useRef(createAnimatedValue(ee)).current,be=useRef({}),fe=useRef({});i.forEach(e=>{be.current[e.key]||(be.current[e.key]=new Animated.Value(1)),fe.current[e.key]||(fe.current[e.key]=createAnimatedValue(e.key===o?1:0))});const xe=me>0?Y?Math.min(me-4,96):Math.min(me-V,64):0,ye=me>0?(me-xe)/2:0,Se=me>0?(me-48)/2:0,hasLabel=e=>s&&!P&&!1!==e.showLabel&&e.label.trim().length>0,we=i[ee],Re=we&&!hasLabel(we)&&ne>0?ne/2:v.space.xs+(T+4)/2,Ie=Re-14-24,Ee=Math.max(0,ne-4),Ae=Y?2:Re-L/2,ve=useRef(ee);useEffect(()=>{if(ve.current===ee)return;ve.current=ee;const e=Animated.spring(ge,{toValue:ee,tension:120,friction:14,useNativeDriver:!0});return e.start(),()=>e.stop()},[ee,ge]);const Ce=Math.max(1,i.length-1),je=useMemo(()=>{const e=[],t=[];for(let i=0;i<=Ce;i++)e.push(i),t.push(i<ae?i*me:i*me+he);return ge.interpolate({inputRange:e,outputRange:t})},[ge,Ce,ae,me,he]),Te=i.map(e=>e.key).join(" "),Le=q||G;useEffect(()=>{const e=Te.split(" ").flatMap(e=>{const t=e===o?1:0,i=fe.current[e];return i?Le?[Animated.spring(i,{toValue:t,tension:140,friction:13,useNativeDriver:!1})]:(i.setValue(t),[]):[]});if(0===e.length)return;const t=Animated.parallel(e);return t.start(),()=>t.stop()},[o,Te,Le]);const popIcon=e=>{Animated.sequence([Animated.timing(e,{toValue:1.15,duration:120,useNativeDriver:!0}),Animated.spring(e,{toValue:1,tension:200,friction:8,useNativeDriver:!0})]).start()},Ve=useRef(new Animated.Value(1)).current,{colors:De}=v,Me=J?De.primary:De.surface,ke=J?De["on-primary"]:De.primary,Be=J?De["on-primary"]:Y?De["text-body"]:De["text-subtle"],ze=J?De["on-primary"]:De["primary-soft"],Fe=J?De.primary:q?De["on-primary"]:ke,Ne=h??D,Pe=g??(K?D:0),He=Pe>0,We=f??v.space.sm,Oe=b??(K?v.space.sm:v.space.xs),Ue=He?We:Math.max(We,C.bottom),$e=He?Math.max(Pe,C.bottom>0?C.bottom+v.space.sm:0):0,Xe="pill"===c,Ze=K?ne+Z+2*We+2*StyleSheet.hairlineWidth:ne+Z+We+Ue,Ye=Xe?ne>0?Ze/2:v.radius.pill:c??(Y?v.radius.pill:K?M:v.radius.none),Ke=void 0!==c,activeBgRadius=(e,t)=>"number"==typeof u?Math.max(0,Math.min(u,e/2)):"auto"===u&&Ke?Math.min(Ye,e/2):t,qe="underline"===l?Math.max(Oe,Xe&&0===ne?0:Ye):Oe,Ge=p??"none",Je="none"===Ge?void 0:v.shadow[Ge],Qe=void 0===Je?null:supportsBoxShadow()?{boxShadow:toBoxShadow(Je)}:Je,et=x?StyleSheet.hairlineWidth:0,tt=J?De.primary:De.border,it=n?.lift??0,nt=We+et+Z,ot=n&&ne>0?Math.max(0,(se.height||de)/2+it-ne/2-nt):0,at=n?_jsx(View,{style:[j.centerCell,ce?{flex:0,marginHorizontal:ue}:null],pointerEvents:"box-none",children:_jsxs(Pressable,{onPress:()=>{if(!n)return;const e=n.haptic??r;!1!==e&&triggerHaptic(e),popIcon(Ve),n.onPress()},onLayout:e=>{const{width:t,height:i}=e.nativeEvent.layout;le(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})=>[j.centerPressable,{top:-it},e?{opacity:.85}:null],testID:n.testID??(A?`${A}-center`:void 0),children:[n.content?_jsx(Animated.View,{style:{transform:[{scale:Ve}]},children:n.content}):_jsx(View,{style:[j.centerCircle,{width:de,height:de,borderRadius:v.radius.pill,...smoothCorners,backgroundColor:n.color??De.primary}],children:_jsx(Animated.View,{style:{transform:[{scale:Ve}]},children:renderSlotIcon(n.icon??"add",{color:n.iconColor??De["on-primary"],size:n.iconSize??24,disabled:!1})})}),(rt=n,s&&!P&&rt.label.trim().length>0?_jsx(Text,{numberOfLines:1,maxFontSizeMultiplier:E??v.settings.maxFontSizeMultiplier??1.2,style:[j.label,{color:Be,opacity:J?.7:1},I],children:n.label}):null)]})},CENTER_KEY):null;var rt;const st=O?_jsx(View,{style:U?j.accessoryInline:j.accessoryStacked,onLayout:e=>X(e.nativeEvent.layout.height),testID:A?`${A}-accessory`:void 0,children:W}):null,lt=_jsxs(View,{style:U?[j.tabRow,j.tabRowInline]:j.tabRow,onLayout:e=>{const{width:t,height:i}=e.nativeEvent.layout;ie(t),oe(i)},children:[Q&&xe>0&&(!Y||Ee>0)?_jsx(Animated.View,{pointerEvents:"none",style:[j.pill,{width:xe,height:Y?Ee:L,left:ye,top:Ae,backgroundColor:ze,borderRadius:Y?activeBgRadius(Ee,Ee/2):activeBgRadius(L,v.radius.pill),...smoothCorners,transform:[{translateX:je}]},R]}):null,q&&me>0?_jsx(Animated.View,{pointerEvents:"none",style:[j.bubble,v.shadow.elevated,{width:48,height:48,borderRadius:v.radius.pill,...smoothCorners,left:Se,top:Ie,backgroundColor:De.primary,borderColor:De.surface,transform:[{translateX:je}]},R]}):null,(dt=i.map(e=>{const t=e.key===o,i=t?ke:Be,n=t?Fe:Be,s="string"==typeof e.icon?{name:e.icon,variant:"bold"}:e.icon,l=t?e.activeIcon??s:e.icon,d=be.current[e.key],c=fe.current[e.key],u=formatBadge(e.badge??null),p=badgeAccessibilitySuffix(e.badge??null),m=J&&!t?.7:1,h=q&&t||J?De.primary:De.surface,g=hasLabel(e),b=g&&(!G||t),f=_jsxs(Animated.View,{style:[j.iconWrap,{width:T+4,height:T+4,opacity:m,transform:[{scale:d}]}],children:[renderSlotIcon(l,{color:n,size:T,focused:t,disabled:!1}),u?_jsx(View,{style:[u.isDot?j.badgeDot:j.badgePill,{backgroundColor:De.danger,borderColor:h}],children:u.isDot?null:_jsx(Text,{style:[j.badgeText,{color:De["on-danger"]}],numberOfLines:1,children:u.text})}):null]}),x=q?_jsx(Animated.View,{style:{top:c.interpolate({inputRange:[0,1],outputRange:[0,-14]})},children:f}):f,y=b?_jsx(Animated.Text,{numberOfLines:1,maxFontSizeMultiplier:E??v.settings.maxFontSizeMultiplier??1.2,style:[j.label,G?j.labelInline:null,{color:i,opacity:G?c:m,fontWeight:t?v.weight.semibold:v.weight.normal},I],children:e.label}):null,S=_jsx(Pressable,{onPress:()=>(e=>{P&&F(_),e.key!==o&&!1!==r&&triggerHaptic(r);const t=be.current[e.key];t&&popIcon(t),a(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})=>[j.tab,Y?j.tabTile:null,e?{opacity:.85}:null],testID:A?`${A}-tab-${e.key}`:void 0,children:G?_jsxs(View,{style:[j.expandPill,{height:L,paddingHorizontal:t&&g?v.space.md:Math.max(0,(L-(T+4))/2)}],children:[_jsx(View,{pointerEvents:"none",style:[j.expandFill,{borderRadius:activeBgRadius(L,L/2),...smoothCorners,backgroundColor:t?De["primary-soft"]:"transparent"},t?R:null]}),x,y]}):_jsxs(_Fragment,{children:[x,y]})},e.key);return G?_jsx(Animated.View,{style:{flex:c.interpolate({inputRange:[0,1],outputRange:[1,g?1.5:1]})},children:S},e.key):S}),at?[...dt.slice(0,ae),at,...dt.slice(ae)]:dt),"underline"===l&&me>0?_jsx(Animated.View,{pointerEvents:"none",style:[j.underline,"top"===d?j.underlineTop:j.underlineBottom,"top"===d?{top:-We-Z}:{bottom:-We},{width:me,height:3,backgroundColor:De.primary,transform:[{translateX:je}]},R]}):null]});var dt;return _jsx(View,{ref:t,testID:A,accessibilityRole:"tablist",style:[j.outer,{paddingHorizontal:Ne,paddingTop:Math.max(Pe,ot),paddingBottom:$e},w],children:_jsxs(View,{style:[K?j.floatingBar:j.dockedBar,U?j.barInline:null,Qe,{backgroundColor:Me,borderColor:tt,borderRadius:Ye,...smoothCorners},K?{borderWidth:et,paddingHorizontal:Oe,paddingVertical:We}:{borderTopWidth:et,borderBottomWidth:et,borderLeftWidth:et,borderRightWidth:et,paddingHorizontal:qe,paddingTop:We,paddingBottom:Ue}],children:[st,lt]})})});BottomNavigation.displayName="BottomNavigation";const buildStyles=e=>StyleSheet.create({outer:{backgroundColor:"transparent"},dockedBar:{paddingHorizontal:e.space.xs},floatingBar:{paddingVertical:e.space.sm,paddingHorizontal:e.space.sm},tabRow:{flexDirection:"row",alignItems:"stretch",position:"relative"},tabRowInline:{flex:1},barInline:{flexDirection:"row",alignItems:"center"},accessoryStacked:{marginBottom:e.space.xs},accessoryInline:{flexShrink:0,marginRight:e.space.xs},tab:{flex:1,minHeight:44,alignItems:"center",justifyContent:"center",paddingVertical:e.space.xs,gap:e.space.xs},tabTile:{paddingVertical:e.space.sm,gap:e.space.xxs},centerCell:{flex:1,minHeight:44,alignItems:"center",justifyContent:"center"},centerPressable:{alignItems:"center",maxWidth:"100%",gap:e.space.xs},centerCircle:{alignItems:"center",justifyContent:"center"},iconWrap:{alignItems:"center",justifyContent:"center",position:"relative"},label:{fontSize:e.text.xs.size,lineHeight:e.text.xs.size*e.leading.heading,textAlign:"center",includeFontPadding:!1},labelInline:{fontSize:e.text.sm.size,lineHeight:e.text.sm.size*e.leading.heading,flexShrink:1,includeFontPadding:!1},expandPill:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:e.space.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,...smoothCorners},underlineTop:{borderBottomLeftRadius:e.radius.none,borderBottomRightRadius:e.radius.none,...smoothCorners},badgePill:{position:"absolute",top:-4,right:-8,minWidth:18,height:18,borderRadius:e.radius.pill,...smoothCorners,paddingHorizontal:e.space.xs,paddingVertical:e.space.xxs,alignItems:"center",justifyContent:"center",borderWidth:1.5},badgeDot:{position:"absolute",top:-2,right:-2,width:10,height:10,borderRadius:e.radius.pill,...smoothCorners,borderWidth:1.5},badgeText:{fontSize:e.text.xs.size,fontWeight:"700",lineHeight:13,textAlign:"center",includeFontPadding:!1}});export{BottomNavigation};export default BottomNavigation;
1
+ "use strict";import React,{forwardRef,useEffect,useMemo,useRef}from"react";import{Animated,LayoutAnimation,Platform,Pressable,StyleSheet,Text,View}from"react-native";import{useSafeAreaInsets}from"react-native-safe-area-context";import{useReducedMotion}from"../../hooks/useReducedMotion.js";import{createAnimatedValue,useTheme}from"../../theme/index.js";import{triggerHaptic}from"../../utils/index.js";import{smoothCorners}from"../../utils/corners.js";import{hitSlopMarker}from"../../utils/hitSlop.js";import{supportsBoxShadow,toBoxShadow}from"../../utils/shadows.js";import{renderSlotIcon}from"../AppIcon/index.js";import{useScreenReaderEnabled}from"./useScreenReaderEnabled.js";import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";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=forwardRef((e,t)=>{const{tabs:i,centerAction:n,activeTab:o,onChange:r,haptic:a="selection",showLabels:s=!0,variant:l="pill",indicatorPosition:d="bottom",radius:c,indicatorRadius:u="auto",elevation:p,iconSize:m,marginHorizontal:h,marginVertical:g,paddingHorizontal:b,paddingVertical:f,border:x,minimizeOnScroll:y=!1,scrollDirection:S="idle",accessory:_,style:w,indicatorStyle:R,labelStyle:I,labelMaxFontScale:E,testID:A}=e,v=useTheme(),j=useSafeAreaInsets(),C=useMemo(()=>buildStyles(v),[v]),T=m??18,L=T+4+8,V=v.space.lg,D=v.space.lg,M=v.radius.xl,k=useReducedMotion(),B=useScreenReaderEnabled(y),[z,F]=React.useState(null);useEffect(()=>{null!==z&&z!==S&&F(null)},[z,S]);const N=y&&!B&&"down"===S&&null===z,[P,H]=React.useState(N);useEffect(()=>{P!==N&&(k||"web"===Platform.OS||LayoutAnimation.configureNext(LayoutAnimation.Presets.easeInEaseOut),H(N))},[P,N,k]);const W="function"==typeof _?_({minimized:P}):_,O=null!=W&&!1!==W,U=P&&O,[$,X]=React.useState(0),Z=O&&!U?$+v.space.xs:0,Y="tile"===l,K="floating"===l||Y,q="bubble"===l,G="expand"===l,J="solid"===l,Q="pill"===l||K||J,ee=Math.max(0,i.findIndex(e=>e.key===o)),[te,ie]=React.useState(0),[ne,oe]=React.useState(0),re=n?Math.ceil(i.length/2):i.length,ae=i.length+(n?1:0),[se,le]=React.useState({width:0,height:0}),de=n?.size??48,ce=void 0!==n?.gap,ue=Math.max(0,n?.gap??0),pe=ce?(se.width||de)+2*ue:0,me=ce?i.length>0?Math.max(0,te-pe)/i.length:0:ae>0?te/ae:0,he=ce?pe:me,ge=useRef(createAnimatedValue(ee)).current,be=useRef({}),fe=useRef({});i.forEach(e=>{be.current[e.key]||(be.current[e.key]=new Animated.Value(1)),fe.current[e.key]||(fe.current[e.key]=createAnimatedValue(e.key===o?1:0))});const xe=me>0?Y?Math.min(me-4,96):Math.min(me-V,64):0,ye=me>0?(me-xe)/2:0,Se=me>0?(me-48)/2:0,hasLabel=e=>s&&!P&&!1!==e.showLabel&&e.label.trim().length>0,we=i[ee],Re=we&&!hasLabel(we)&&ne>0?ne/2:v.space.xs+(T+4)/2,Ie=Re-14-24,Ee=Math.max(0,ne-4),Ae=Y?2:Re-L/2,ve=useRef(ee);useEffect(()=>{if(ve.current===ee)return;ve.current=ee;const e=Animated.spring(ge,{toValue:ee,tension:120,friction:14,useNativeDriver:!0});return e.start(),()=>e.stop()},[ee,ge]);const je=Math.max(1,i.length-1),Ce=useMemo(()=>{const e=[],t=[];for(let i=0;i<=je;i++)e.push(i),t.push(i<re?i*me:i*me+he);return ge.interpolate({inputRange:e,outputRange:t})},[ge,je,re,me,he]),Te=i.map(e=>e.key).join(" "),Le=q||G;useEffect(()=>{const e=Te.split(" ").flatMap(e=>{const t=e===o?1:0,i=fe.current[e];return i?Le?[Animated.spring(i,{toValue:t,tension:140,friction:13,useNativeDriver:!1})]:(i.setValue(t),[]):[]});if(0===e.length)return;const t=Animated.parallel(e);return t.start(),()=>t.stop()},[o,Te,Le]);const popIcon=e=>{Animated.sequence([Animated.timing(e,{toValue:1.15,duration:120,useNativeDriver:!0}),Animated.spring(e,{toValue:1,tension:200,friction:8,useNativeDriver:!0})]).start()},Ve=useRef(new Animated.Value(1)).current,{colors:De}=v,Me=J?De.primary:De.surface,ke=J?De["on-primary"]:De.primary,Be=J?De["on-primary"]:Y?De["text-body"]:De["text-subtle"],ze=J?De["on-primary"]:De["primary-soft"],Fe=J?De.primary:q?De["on-primary"]:ke,Ne=h??D,Pe=g??(K?D:0),He=Pe>0,We=f??v.space.sm,Oe=b??(K?v.space.sm:v.space.xs),Ue=He?We:Math.max(We,j.bottom),$e=He?Math.max(Pe,j.bottom>0?j.bottom+v.space.sm:0):0,Xe="pill"===c,Ze=K?ne+Z+2*We+2*StyleSheet.hairlineWidth:ne+Z+We+Ue,Ye=Xe?ne>0?Ze/2:v.radius.pill:c??(Y?v.radius.pill:K?M:v.radius.none),Ke=void 0!==c,activeBgRadius=(e,t)=>"number"==typeof u?Math.max(0,Math.min(u,e/2)):"auto"===u&&Ke?Math.min(Ye,e/2):t,qe="underline"===l?Math.max(Oe,Xe&&0===ne?0:Ye):Oe,Ge=p??"none",Je="none"===Ge?void 0:v.shadow[Ge],Qe=void 0===Je?null:supportsBoxShadow()?{boxShadow:toBoxShadow(Je)}:Je,et=x?StyleSheet.hairlineWidth:0,tt=J?De.primary:De.border,it=n?.lift??0,nt=We+et+Z,ot=n&&ne>0?Math.max(0,(se.height||de)/2+it-ne/2-nt):0,rt=n?_jsx(View,{style:[C.centerCell,ce?{flex:0,marginHorizontal:ue}:null],pointerEvents:"box-none",children:_jsxs(Pressable,{onPress:()=>{if(!n)return;const e=n.haptic??a;!1!==e&&triggerHaptic(e),popIcon(Ve),n.onPress()},onLayout:e=>{const{width:t,height:i}=e.nativeEvent.layout;le(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},...hitSlopMarker({top:6,bottom:6,left:6,right:6}),style:({pressed:e})=>[C.centerPressable,{top:-it},e?{opacity:.85}:null],testID:n.testID??(A?`${A}-center`:void 0),children:[n.content?_jsx(Animated.View,{style:{transform:[{scale:Ve}]},children:n.content}):_jsx(View,{style:[C.centerCircle,{width:de,height:de,borderRadius:v.radius.pill,...smoothCorners,backgroundColor:n.color??De.primary}],children:_jsx(Animated.View,{style:{transform:[{scale:Ve}]},children:renderSlotIcon(n.icon??"add",{color:n.iconColor??De["on-primary"],size:n.iconSize??24,disabled:!1})})}),(at=n,s&&!P&&at.label.trim().length>0?_jsx(Text,{numberOfLines:1,maxFontSizeMultiplier:E??v.settings.maxFontSizeMultiplier??1.2,style:[C.label,{color:Be,opacity:J?.7:1},I],children:n.label}):null)]})},CENTER_KEY):null;var at;const st=O?_jsx(View,{style:U?C.accessoryInline:C.accessoryStacked,onLayout:e=>X(e.nativeEvent.layout.height),testID:A?`${A}-accessory`:void 0,children:W}):null,lt=_jsxs(View,{style:U?[C.tabRow,C.tabRowInline]:C.tabRow,onLayout:e=>{const{width:t,height:i}=e.nativeEvent.layout;ie(t),oe(i)},children:[Q&&xe>0&&(!Y||Ee>0)?_jsx(Animated.View,{pointerEvents:"none",style:[C.pill,{width:xe,height:Y?Ee:L,left:ye,top:Ae,backgroundColor:ze,borderRadius:Y?activeBgRadius(Ee,Ee/2):activeBgRadius(L,v.radius.pill),...smoothCorners,transform:[{translateX:Ce}]},R]}):null,q&&me>0?_jsx(Animated.View,{pointerEvents:"none",style:[C.bubble,v.shadow.elevated,{width:48,height:48,borderRadius:v.radius.pill,...smoothCorners,left:Se,top:Ie,backgroundColor:De.primary,borderColor:De.surface,transform:[{translateX:Ce}]},R]}):null,(dt=i.map(e=>{const t=e.key===o,i=t?ke:Be,n=t?Fe:Be,s="string"==typeof e.icon?{name:e.icon,variant:"bold"}:e.icon,l=t?e.activeIcon??s:e.icon,d=be.current[e.key],c=fe.current[e.key],u=formatBadge(e.badge??null),p=badgeAccessibilitySuffix(e.badge??null),m=J&&!t?.7:1,h=q&&t||J?De.primary:De.surface,g=hasLabel(e),b=g&&(!G||t),f=_jsxs(Animated.View,{style:[C.iconWrap,{width:T+4,height:T+4,opacity:m,transform:[{scale:d}]}],children:[renderSlotIcon(l,{color:n,size:T,focused:t,disabled:!1}),u?_jsx(View,{style:[u.isDot?C.badgeDot:C.badgePill,{backgroundColor:De.danger,borderColor:h}],children:u.isDot?null:_jsx(Text,{style:[C.badgeText,{color:De["on-danger"]}],numberOfLines:1,children:u.text})}):null]}),x=q?_jsx(Animated.View,{style:{top:c.interpolate({inputRange:[0,1],outputRange:[0,-14]})},children:f}):f,y=b?_jsx(Animated.Text,{numberOfLines:1,maxFontSizeMultiplier:E??v.settings.maxFontSizeMultiplier??1.2,style:[C.label,G?C.labelInline:null,{color:i,opacity:G?c:m,fontWeight:t?v.weight.semibold:v.weight.normal},I],children:e.label}):null,_=_jsx(Pressable,{onPress:()=>(e=>{P&&F(S),e.key!==o&&!1!==a&&triggerHaptic(a);const t=be.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},...hitSlopMarker({top:6,bottom:6,left:6,right:6}),style:({pressed:e})=>[C.tab,Y?C.tabTile:null,e?{opacity:.85}:null],testID:A?`${A}-tab-${e.key}`:void 0,children:G?_jsxs(View,{style:[C.expandPill,{height:L,paddingHorizontal:t&&g?v.space.md:Math.max(0,(L-(T+4))/2)}],children:[_jsx(View,{pointerEvents:"none",style:[C.expandFill,{borderRadius:activeBgRadius(L,L/2),...smoothCorners,backgroundColor:t?De["primary-soft"]:"transparent"},t?R:null]}),x,y]}):_jsxs(_Fragment,{children:[x,y]})},e.key);return G?_jsx(Animated.View,{style:{flex:c.interpolate({inputRange:[0,1],outputRange:[1,g?1.5:1]})},children:_},e.key):_}),rt?[...dt.slice(0,re),rt,...dt.slice(re)]:dt),"underline"===l&&me>0?_jsx(Animated.View,{pointerEvents:"none",style:[C.underline,"top"===d?C.underlineTop:C.underlineBottom,"top"===d?{top:-We-Z}:{bottom:-We},{width:me,height:3,backgroundColor:De.primary,transform:[{translateX:Ce}]},R]}):null]});var dt;return _jsx(View,{ref:t,testID:A,accessibilityRole:"tablist",style:[C.outer,{paddingHorizontal:Ne,paddingTop:Math.max(Pe,ot),paddingBottom:$e},w],children:_jsxs(View,{style:[K?C.floatingBar:C.dockedBar,U?C.barInline:null,Qe,{backgroundColor:Me,borderColor:tt,borderRadius:Ye,...smoothCorners},K?{borderWidth:et,paddingHorizontal:Oe,paddingVertical:We}:{borderTopWidth:et,borderBottomWidth:et,borderLeftWidth:et,borderRightWidth:et,paddingHorizontal:qe,paddingTop:We,paddingBottom:Ue}],children:[st,lt]})})});BottomNavigation.displayName="BottomNavigation";const buildStyles=e=>StyleSheet.create({outer:{backgroundColor:"transparent"},dockedBar:{paddingHorizontal:e.space.xs},floatingBar:{paddingVertical:e.space.sm,paddingHorizontal:e.space.sm},tabRow:{flexDirection:"row",alignItems:"stretch",position:"relative"},tabRowInline:{flex:1},barInline:{flexDirection:"row",alignItems:"center"},accessoryStacked:{marginBottom:e.space.xs},accessoryInline:{flexShrink:0,marginRight:e.space.xs},tab:{flex:1,minHeight:44,alignItems:"center",justifyContent:"center",paddingVertical:e.space.xs,gap:e.space.xs},tabTile:{paddingVertical:e.space.sm,gap:e.space.xxs},centerCell:{flex:1,minHeight:44,alignItems:"center",justifyContent:"center"},centerPressable:{alignItems:"center",maxWidth:"100%",gap:e.space.xs},centerCircle:{alignItems:"center",justifyContent:"center"},iconWrap:{alignItems:"center",justifyContent:"center",position:"relative"},label:{fontSize:e.text.xs.size,lineHeight:e.text.xs.size*e.leading.heading,textAlign:"center",includeFontPadding:!1},labelInline:{fontSize:e.text.sm.size,lineHeight:e.text.sm.size*e.leading.heading,flexShrink:1,includeFontPadding:!1},expandPill:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:e.space.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,...smoothCorners},underlineTop:{borderBottomLeftRadius:e.radius.none,borderBottomRightRadius:e.radius.none,...smoothCorners},badgePill:{position:"absolute",top:-4,right:-8,minWidth:18,height:18,borderRadius:e.radius.pill,...smoothCorners,paddingHorizontal:e.space.xs,paddingVertical:e.space.xxs,alignItems:"center",justifyContent:"center",borderWidth:1.5},badgeDot:{position:"absolute",top:-2,right:-2,width:10,height:10,borderRadius:e.radius.pill,...smoothCorners,borderWidth:1.5},badgeText:{fontSize:e.text.xs.size,fontWeight:"700",lineHeight:13,textAlign:"center",includeFontPadding:!1}});export{BottomNavigation};export default BottomNavigation;
@@ -1 +1 @@
1
- "use strict";import React,{forwardRef,useMemo,useRef,useState}from"react";import{Animated,Easing,Pressable,StyleSheet,Text,View}from"react-native";import{useFlickGuard}from"../../hooks/useFlickGuard.js";import{usePressAnimation}from"../../hooks/usePressAnimation.js";import{fontFor,Gradient,resolveButtonSize,useTheme}from"../../theme/index.js";import{createAnimatedValue}from"../../theme/animatedValue.js";import{ariaFromState}from"../../utils/ariaState.js";import{ACCENT_PRESSED_TINT,tintOf}from"../../utils/color.js";import{smoothCorners}from"../../utils/corners.js";import{triggerHaptic}from"../../utils/hapticUtils.js";import{hitSlopMarker}from"../../utils/hitSlop.js";import{renderSlotIcon}from"../AppIcon/slotIcon.js";import{Spinner}from"../Spinner/index.js";import{SquircleFill,useSquircle}from"../SquircleFill/SquircleFill.js";import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";const Button=forwardRef((e,t)=>{const{title:r,children:o,variant:s="solid",tone:i="primary",size:n="md",loading:l=!1,disabled:a=!1,fullWidth:d=!1,leftIcon:c,rightIcon:u,iconVariant:b,leftIconBadge:g=!1,haptic:p,rounded:h=!1,gradient:m,style:f,containerStyle:x,textStyle:y,pressAnimation:S,onPress:C,accessibilityLabel:_,accessibilityHint:I,accessibilityState:k,testID:w,onLayout:j,...T}=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 F=useTheme(),v=!a&&!l,L={...k,disabled:!v,busy:l},R="link"===s,O=S??(!R&&"scale"),P=usePressAnimation({preset:O||"scale",enabled:!1!==O&&v}),A=useFlickGuard(),W=useMemo(()=>buildStyles(F),[F]),V=useMemo(()=>resolveButtonSize(F,n),[F,n]),E=useMemo(()=>toneFor(F,i),[F,i]),z=useMemo(()=>variantFor(F,s,E,a),[F,s,E,a]),B=useMemo(()=>!m||a||"solid"!==s?null:"string"==typeof m?F.settings.gradients[m]??null:m,[m,a,s,F.settings.gradients]),D=StyleSheet.flatten(f)?.borderRadius,H=R?0:"number"==typeof D?D:h?F.radius.pill:V.radius,N=useSquircle(!B&&"link"!==s,H,j),M=useRef(createAnimatedValue(0)).current,[q,G]=useState(0),[K,U]=useState(null),X=R?e=>G(e.nativeEvent.layout.width):void 0,Y=_??r,J="outline"===s||"ghost"===s,Q=!J&&!R,Z={color:z.textColor,size:V.icon,disabled:a},$=g&&!R&&Boolean(c),ee=F.space.xs,te=V["min-height"]-2*ee-2*z.borderWidth,re={color:z.badgeInk,size:V["badge-icon"],disabled:a},oe=l?_jsx(Spinner,{variant:"circular",size:"sm",color:$?z.badgeInk:z.textColor,accessibilityLabel:"Loading"}):c?renderSlotIcon(c,$?re:Z,b):null,se=_jsxs(View,{style:W.contentRow,children:[$?_jsx(View,{testID:"button-icon-badge",style:[W.iconLeft,W.iconBadge,{width:te,height:te,borderRadius:te/2,backgroundColor:z.badgeFill}],children:oe}):oe?_jsx(View,{style:W.iconLeft,children:oe}):null,r?_jsxs(View,{onLayout:X,children:[_jsx(Text,{style:[W.label,{color:z.textColor,fontSize:V.text,...fontFor(F,"semibold")},y],numberOfLines:1,children:r}),R?_jsx(Animated.View,{pointerEvents:"none",testID:"button-link-underline",style:[W.linkUnderline,{backgroundColor:z.textColor,transform:[{translateX:M.interpolate({inputRange:[0,1],outputRange:[-q/2,0]})},{scaleX:M.interpolate({inputRange:[0,1],outputRange:[0,1]})}]}]}):null]}):o,u?_jsx(View,{style:W.iconRight,children:renderSlotIcon(u,Z,b)}):null]}),ie=R?null===K?LINK_HIT_SLOP:Math.max(LINK_HIT_SLOP,touchSlopFor(K)):touchSlopFor(V["min-height"]),ne={top:ie,bottom:ie,left:R?LINK_HIT_SLOP:0,right:R?LINK_HIT_SLOP:0};return _jsx(Animated.View,{style:[P.style,d?W.fullWidth:null,x],children:_jsx(Pressable,{ref:t,onPress:e=>{v&&!A.isFlick(e)&&(P.press(),p&&triggerHaptic(p),C?.(e))},onPressIn:e=>{A.onPressIn(e),P.pressIn(),R&&v&&(M.stopAnimation(),M.setValue(0),Animated.timing(M,{toValue:1,duration:F.motion.duration.slower,easing:Easing.bezier(...F.motion.ease.decelerate),useNativeDriver:!0}).start())},onPressOut:()=>{P.pressOut()},disabled:!v,hitSlop:ne,...hitSlopMarker(ne),accessibilityRole:"button",accessibilityLabel:Y,accessibilityHint:I,accessibilityState:L,...ariaFromState(L),testID:w,onLayout:e=>{N.onLayout(e),R&&U(e.nativeEvent.layout.height)},style:({pressed:e})=>[W.base,{paddingHorizontal:R?0:V["padding-x"],paddingVertical:R?0:$?ee:V["padding-y"],paddingLeft:$?ee:void 0,minHeight:R?void 0:V["min-height"],borderRadius:H,...smoothCorners,backgroundColor:B||N.active?"transparent":z.backgroundColor,borderWidth:z.borderWidth,borderColor:N.active?"transparent":z.borderColor,opacity:l?.55:1,overflow:N.active||R?"visible":"hidden"},e&&J&&!N.active?{backgroundColor:F.colors["surface-pressed"]}:null,d?W.fullWidth:null,f],...T,"aria-disabled":!v,"aria-busy":l,children:({pressed:e})=>_jsxs(_Fragment,{children:[N.active&&N.size?_jsx(SquircleFill,{width:N.size.width,height:N.size.height,radius:H,fill:e&&J?F.colors["surface-pressed"]:z.backgroundColor,stroke:z.borderColor,strokeWidth:z.borderWidth,outset:z.borderWidth}):null,B?_jsx(Gradient,{gradient:B,style:[StyleSheet.absoluteFill,{borderRadius:H,...smoothCorners}]}):null,e&&Q?N.active&&N.size?_jsx(SquircleFill,{width:N.size.width,height:N.size.height,radius:H,fill:z.pressedTint,outset:z.borderWidth,testID:"button-pressed"}):_jsx(View,{pointerEvents:"none",style:[W.pressedOverlay,{borderRadius:H,backgroundColor:z.pressedTint,...smoothCorners}],testID:"button-pressed"}):null,se]})})})});Button.displayName="Button";const hasTextChild=e=>React.Children.toArray(e).some(e=>"string"==typeof e||"number"==typeof e),SOFT_FILL_OPACITY=.14,toneFor=(e,t)=>{switch(t){case"primary":return{base:e.colors.primary,on:e.colors["on-primary"],fg:e.colors["primary-text"],soft:tintOf(e.colors.primary,.14,e.colors["primary-soft"])};case"secondary":return{base:e.colors.neutral,on:e.colors["on-neutral"],fg:e.colors["on-neutral"],soft:e.colors.neutral};case"success":return{base:e.colors.success,on:e.colors["on-success"],fg:e.colors["success-text"],soft:tintOf(e.colors.success,.14,e.colors["bg-subtle"])};case"warning":return{base:e.colors.warning,on:e.colors["on-warning"],fg:e.colors["warning-text"],soft:tintOf(e.colors.warning,.14,e.colors["bg-subtle"])};case"danger":return{base:e.colors.danger,on:e.colors["on-danger"],fg:e.colors["danger-text"],soft:tintOf(e.colors.danger,.14,e.colors["bg-subtle"])};default:return{base:e.colors["bg-muted"],on:e.colors["text-body"],fg:e.colors["text-body"],soft:e.colors["bg-subtle"]}}},BUTTON_BORDER_WIDTH=1,MIN_TOUCH_TARGET=44,LINK_HIT_SLOP=8,touchSlopFor=e=>Math.max(0,Math.ceil((44-e)/2)),variantFor=(e,t,r,o)=>{const s=o?e.colors["text-disabled"]:r.fg,i={badgeFill:e.colors["surface-disabled"],badgeInk:e.colors["text-disabled"]},n=o?i:{badgeFill:r.on,badgeInk:r.base},l=o?i:{badgeFill:r.base,badgeInk:r.on};switch(t){case"solid":return{backgroundColor:o?e.colors["surface-disabled"]:r.base,borderColor:"transparent",borderWidth:1,textColor:o?e.colors["text-disabled"]:r.on,pressedTint:e.colors["surface-pressed"],...n};case"soft":return{backgroundColor:o?e.colors["surface-disabled"]:r.soft,borderColor:"transparent",borderWidth:1,textColor:s,pressedTint:e.colors["surface-pressed"],...l};case"outline":return{backgroundColor:"transparent",borderColor:o?e.colors.border:r.base,borderWidth:1,textColor:s,pressedTint:e.colors["surface-pressed"],...l};case"ghost":return{backgroundColor:"transparent",borderColor:"transparent",borderWidth:1,textColor:s,pressedTint:e.colors["surface-pressed"],...l};case"link":return{backgroundColor:"transparent",borderColor:"transparent",borderWidth:0,textColor:o?e.colors["text-disabled"]:e.colors.link,pressedTint:e.colors["surface-pressed"],...l};case"glass":return{backgroundColor:e.colors["glass-fill"],borderColor:e.colors["glass-border"],borderWidth:1,textColor:o?e.colors["text-disabled"]:e.colors["on-glass"],pressedTint:ACCENT_PRESSED_TINT,badgeFill:e.colors["glass-badge"],badgeInk:o?e.colors["text-disabled"]:r.base};default:return{backgroundColor:r.base,borderColor:"transparent",borderWidth:1,textColor:r.on,pressedTint:e.colors["surface-pressed"],...n}}},buildStyles=e=>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.space.sm},iconBadge:{alignItems:"center",justifyContent:"center"},iconRight:{marginLeft:e.space.sm},fullWidth:{alignSelf:"stretch"}});export{Button};export default Button;
1
+ "use strict";import React,{forwardRef,useMemo,useRef,useState}from"react";import{Animated,Easing,Pressable,StyleSheet,Text,View}from"react-native";import{useFlickGuard}from"../../hooks/useFlickGuard.js";import{usePressAnimation}from"../../hooks/usePressAnimation.js";import{fontFor,Gradient,resolveButtonSize,useTheme}from"../../theme/index.js";import{createAnimatedValue}from"../../theme/animatedValue.js";import{ariaFromState}from"../../utils/ariaState.js";import{ACCENT_PRESSED_TINT,tintOf}from"../../utils/color.js";import{smoothCorners}from"../../utils/corners.js";import{triggerHaptic}from"../../utils/hapticUtils.js";import{hitSlopMarker}from"../../utils/hitSlop.js";import{renderSlotIcon}from"../AppIcon/slotIcon.js";import{Spinner}from"../Spinner/index.js";import{SquircleFill,useSquircle}from"../SquircleFill/SquircleFill.js";import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";const Button=forwardRef((e,t)=>{const{title:o,children:r,variant:s="solid",tone:i="primary",size:n="md",loading:l=!1,disabled:a=!1,fullWidth:d=!1,leftIcon:c,rightIcon:u,iconVariant:b,leftIconBadge:g=!1,haptic:p,rounded:h=!1,gradient:m,style:f,containerStyle:x,textStyle:y,pressAnimation:S,onPress:C,accessibilityLabel:_,accessibilityHint:I,accessibilityState:k,testID:w,onLayout:j,...T}=e;if(__DEV__&&hasTextChild(r))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 F=useTheme(),v=!a&&!l,L={...k,disabled:!v,busy:l},R="link"===s,O=S??(!R&&"scale"),P=usePressAnimation({preset:O||"scale",enabled:!1!==O&&v}),A=useFlickGuard(),W=useMemo(()=>buildStyles(F),[F]),V=useMemo(()=>resolveButtonSize(F,n),[F,n]),E=useMemo(()=>toneFor(F,i),[F,i]),z=useMemo(()=>variantFor(F,s,E,a),[F,s,E,a]),B=useMemo(()=>!m||a||"solid"!==s?null:"string"==typeof m?F.settings.gradients[m]??null:m,[m,a,s,F.settings.gradients]),D=StyleSheet.flatten(f)?.borderRadius,H=R?0:"number"==typeof D?D:h?F.radius.pill:V.radius,N=useSquircle(!B&&"link"!==s,H,j),M=useRef(createAnimatedValue(0)).current,[q,G]=useState(0),[K,U]=useState(null),X=R?e=>G(e.nativeEvent.layout.width):void 0,Y=_??o,J="outline"===s||"ghost"===s,Q=!J&&!R,Z={color:z.textColor,size:V.icon,disabled:a},$=g&&!R&&Boolean(c),ee=F.space.xs,te=V["min-height"]-2*ee-2*z.borderWidth,oe={color:z.badgeInk,size:V["badge-icon"],disabled:a},re=l?_jsx(Spinner,{variant:"circular",size:"sm",color:$?z.badgeInk:z.textColor,accessibilityLabel:"Loading"}):c?renderSlotIcon(c,$?oe:Z,b):null,se=_jsxs(View,{style:W.contentRow,children:[$?_jsx(View,{testID:"button-icon-badge",style:[W.iconLeft,W.iconBadge,{width:te,height:te,borderRadius:te/2,backgroundColor:z.badgeFill}],children:re}):re?_jsx(View,{style:W.iconLeft,children:re}):null,o?_jsxs(View,{onLayout:X,children:[_jsx(Text,{style:[W.label,{color:z.textColor,fontSize:V.text,...fontFor(F,"semibold")},y],numberOfLines:1,children:o}),R?_jsx(Animated.View,{pointerEvents:"none",testID:"button-link-underline",style:[W.linkUnderline,{backgroundColor:z.textColor,transform:[{translateX:M.interpolate({inputRange:[0,1],outputRange:[-q/2,0]})},{scaleX:M.interpolate({inputRange:[0,1],outputRange:[0,1]})}]}]}):null]}):r,u?_jsx(View,{style:W.iconRight,children:renderSlotIcon(u,Z,b)}):null]}),ie=R?null===K?LINK_HIT_SLOP:Math.max(LINK_HIT_SLOP,touchSlopFor(K)):touchSlopFor(V["min-height"]),ne={top:ie,bottom:ie,left:R?LINK_HIT_SLOP:0,right:R?LINK_HIT_SLOP:0};return _jsx(Animated.View,{style:[P.style,d?W.fullWidth:null,x],children:_jsx(Pressable,{ref:t,onPress:e=>{v&&!A.isFlick(e)&&(P.press(),p&&triggerHaptic(p),C?.(e))},onPressIn:e=>{A.onPressIn(e),P.pressIn(),R&&v&&(M.stopAnimation(),M.setValue(0),Animated.timing(M,{toValue:1,duration:F.motion.duration.slower,easing:Easing.bezier(...F.motion.ease.decelerate),useNativeDriver:!0}).start())},onPressOut:()=>{P.pressOut()},disabled:!v,hitSlop:ne,...hitSlopMarker(ne),accessibilityRole:"button",accessibilityLabel:Y,accessibilityHint:I,accessibilityState:L,...ariaFromState(L),testID:w,onLayout:e=>{N.onLayout(e),R&&U(e.nativeEvent.layout.height)},style:({pressed:e})=>[W.base,{paddingHorizontal:R?0:V["padding-x"],paddingVertical:R?0:$?ee:V["padding-y"],paddingLeft:$?ee:void 0,minHeight:R?void 0:V["min-height"],borderRadius:H,...smoothCorners,backgroundColor:B||N.active?"transparent":z.backgroundColor,borderWidth:z.borderWidth,borderColor:N.active?"transparent":z.borderColor,opacity:l?.55:1,overflow:N.active||R?"visible":"hidden"},e&&J&&!N.active?{backgroundColor:F.colors["surface-pressed"]}:null,d?W.fullWidth:null,f],...T,"aria-disabled":!v,"aria-busy":l,children:({pressed:e})=>_jsxs(_Fragment,{children:[N.active&&N.size?_jsx(SquircleFill,{width:N.size.width,height:N.size.height,radius:H,fill:e&&J?F.colors["surface-pressed"]:z.backgroundColor,stroke:z.borderColor,strokeWidth:z.borderWidth,outset:z.borderWidth}):null,B?_jsx(Gradient,{gradient:B,style:[StyleSheet.absoluteFill,{borderRadius:H,...smoothCorners}]}):null,e&&Q?N.active&&N.size?_jsx(SquircleFill,{width:N.size.width,height:N.size.height,radius:H,fill:z.pressedTint,outset:z.borderWidth,testID:"button-pressed"}):_jsx(View,{pointerEvents:"none",style:[W.pressedOverlay,{borderRadius:H,backgroundColor:z.pressedTint,...smoothCorners}],testID:"button-pressed"}):null,se]})})})});Button.displayName="Button";const hasTextChild=e=>React.Children.toArray(e).some(e=>"string"==typeof e||"number"==typeof e),SOFT_FILL_OPACITY=.14,toneFor=(e,t)=>{switch(t){case"primary":return{base:e.colors.primary,outline:e.colors.primary,on:e.colors["on-primary"],fg:e.colors["primary-text"],soft:tintOf(e.colors.primary,.14,e.colors["primary-soft"])};case"secondary":return{base:e.colors.neutral,outline:e.colors.border,on:e.colors["on-neutral"],fg:e.colors["on-neutral"],soft:e.colors.neutral};case"success":return{base:e.colors.success,outline:e.colors.success,on:e.colors["on-success"],fg:e.colors["success-text"],soft:tintOf(e.colors.success,.14,e.colors["bg-subtle"])};case"warning":return{base:e.colors.warning,outline:e.colors.warning,on:e.colors["on-warning"],fg:e.colors["warning-text"],soft:tintOf(e.colors.warning,.14,e.colors["bg-subtle"])};case"danger":return{base:e.colors.danger,outline:e.colors.danger,on:e.colors["on-danger"],fg:e.colors["danger-text"],soft:tintOf(e.colors.danger,.14,e.colors["bg-subtle"])};default:return{base:e.colors["bg-muted"],outline:e.colors.border,on:e.colors["text-body"],fg:e.colors["text-body"],soft:e.colors["bg-subtle"]}}},BUTTON_BORDER_WIDTH=1,MIN_TOUCH_TARGET=44,LINK_HIT_SLOP=8,touchSlopFor=e=>Math.max(0,Math.ceil((44-e)/2)),variantFor=(e,t,o,r)=>{const s=r?e.colors["text-disabled"]:o.fg,i={badgeFill:e.colors["surface-disabled"],badgeInk:e.colors["text-disabled"]},n=r?i:{badgeFill:o.on,badgeInk:o.base},l=r?i:{badgeFill:o.base,badgeInk:o.on};switch(t){case"solid":return{backgroundColor:r?e.colors["surface-disabled"]:o.base,borderColor:"transparent",borderWidth:1,textColor:r?e.colors["text-disabled"]:o.on,pressedTint:e.colors["surface-pressed"],...n};case"soft":return{backgroundColor:r?e.colors["surface-disabled"]:o.soft,borderColor:"transparent",borderWidth:1,textColor:s,pressedTint:e.colors["surface-pressed"],...l};case"outline":return{backgroundColor:"transparent",borderColor:r?e.colors.border:o.outline,borderWidth:1,textColor:s,pressedTint:e.colors["surface-pressed"],...l};case"ghost":return{backgroundColor:"transparent",borderColor:"transparent",borderWidth:1,textColor:s,pressedTint:e.colors["surface-pressed"],...l};case"link":return{backgroundColor:"transparent",borderColor:"transparent",borderWidth:0,textColor:r?e.colors["text-disabled"]:e.colors.link,pressedTint:e.colors["surface-pressed"],...l};case"glass":return{backgroundColor:e.colors["glass-fill"],borderColor:e.colors["glass-border"],borderWidth:1,textColor:r?e.colors["text-disabled"]:e.colors["on-glass"],pressedTint:ACCENT_PRESSED_TINT,badgeFill:e.colors["glass-badge"],badgeInk:r?e.colors["text-disabled"]:o.base};default:return{backgroundColor:o.base,borderColor:"transparent",borderWidth:1,textColor:o.on,pressedTint:e.colors["surface-pressed"],...n}}},buildStyles=e=>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.space.sm},iconBadge:{alignItems:"center",justifyContent:"center"},iconRight:{marginLeft:e.space.sm},fullWidth:{alignSelf:"stretch"}});export{Button};export default Button;