@webority/mobile-ui 0.18.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/canvasKit/index.js +1 -1
- package/lib/commonjs/components/Accordion/Accordion.js +1 -1
- package/lib/commonjs/components/AppBar/AppBar.js +1 -1
- package/lib/commonjs/components/Avatar/Avatar.js +1 -1
- package/lib/commonjs/components/Badge/Badge.js +1 -1
- package/lib/commonjs/components/Banner/Banner.js +1 -1
- package/lib/commonjs/components/BarChart/BarChart.js +1 -1
- package/lib/commonjs/components/BottomNavigation/BottomNavigation.js +1 -1
- package/lib/commonjs/components/BottomSheet/BottomSheet.js +1 -1
- package/lib/commonjs/components/Box/Box.js +1 -1
- package/lib/commonjs/components/Button/Button.js +1 -1
- package/lib/commonjs/components/Calendar/calendarStyles.js +1 -1
- package/lib/commonjs/components/Card/Card.js +1 -1
- package/lib/commonjs/components/Carousel/Carousel.js +1 -1
- package/lib/commonjs/components/Checkbox/Checkbox.js +1 -1
- package/lib/commonjs/components/Chip/Chip.js +1 -1
- package/lib/commonjs/components/ChoiceGroup/ChoiceGroup.js +1 -1
- package/lib/commonjs/components/Composer/Composer.js +1 -1
- package/lib/commonjs/components/DatePicker/DatePicker.js +1 -1
- package/lib/commonjs/components/DateRangePicker/DateRangePicker.js +1 -1
- package/lib/commonjs/components/Descriptions/Descriptions.js +1 -1
- package/lib/commonjs/components/Dialog/Dialog.js +1 -1
- package/lib/commonjs/components/EmptyState/EmptyState.js +1 -1
- package/lib/commonjs/components/FieldBase/ChoiceText.js +1 -1
- package/lib/commonjs/components/FieldBase/FieldBase.js +1 -1
- package/lib/commonjs/components/FieldBase/index.js +1 -1
- package/lib/commonjs/components/FieldBase/useFloatingLabel.js +1 -1
- package/lib/commonjs/components/FilePicker/FilePicker.js +1 -1
- package/lib/commonjs/components/FloatingActionButton/FloatingActionButton.js +1 -1
- package/lib/commonjs/components/ImageGallery/ImageGallery.js +1 -1
- package/lib/commonjs/components/InlineSelect/InlineSelect.js +1 -1
- package/lib/commonjs/components/Input/Input.js +1 -1
- package/lib/commonjs/components/ListItem/ListItem.js +1 -1
- package/lib/commonjs/components/Markdown/Markdown.js +1 -1
- package/lib/commonjs/components/MessageBubble/MessageBubble.js +1 -1
- package/lib/commonjs/components/MessageList/MessageList.js +1 -1
- package/lib/commonjs/components/Modal/Modal.js +1 -1
- package/lib/commonjs/components/NumberInput/NumberInput.js +1 -1
- package/lib/commonjs/components/OTPInput/OTPInput.js +1 -1
- package/lib/commonjs/components/OptionSheet/OptionSheet.js +1 -1
- package/lib/commonjs/components/PaymentResult/PaymentResult.js +1 -1
- package/lib/commonjs/components/PhoneNumberInput/PhoneNumberInput.js +1 -1
- package/lib/commonjs/components/PickerTrigger/PickerTrigger.js +1 -1
- package/lib/commonjs/components/ProfileCompletion/ProfileCompletion.js +1 -1
- package/lib/commonjs/components/ProfilePicker/ProfilePicker.js +1 -1
- package/lib/commonjs/components/ProgressBar/ProgressBar.js +1 -1
- package/lib/commonjs/components/Radio/Radio.js +1 -1
- package/lib/commonjs/components/Radio/RadioDot.js +1 -1
- package/lib/commonjs/components/Rating/Rating.js +1 -1
- package/lib/commonjs/components/ScannerOverlay/ScannerOverlay.js +1 -1
- package/lib/commonjs/components/SearchBar/SearchBar.js +1 -1
- package/lib/commonjs/components/SegmentedControl/SegmentedControl.js +1 -1
- package/lib/commonjs/components/Select/Select.js +1 -1
- package/lib/commonjs/components/Skeleton/Skeleton.js +1 -1
- package/lib/commonjs/components/Skeleton/SkeletonContent.js +1 -1
- package/lib/commonjs/components/SlideToConfirm/SlideToConfirm.js +1 -1
- package/lib/commonjs/components/Slider/Slider.js +1 -1
- package/lib/commonjs/components/SliderField/SliderField.js +1 -1
- package/lib/commonjs/components/Spinner/Spinner.js +1 -1
- package/lib/commonjs/components/StatusBadge/StatusBadge.js +1 -1
- package/lib/commonjs/components/Stepper/Stepper.js +1 -1
- package/lib/commonjs/components/Swipeable/Swipeable.js +1 -1
- package/lib/commonjs/components/Switch/Switch.js +1 -1
- package/lib/commonjs/components/Tabs/Tabs.js +1 -1
- package/lib/commonjs/components/TagInput/TagInput.js +1 -1
- package/lib/commonjs/components/TimePicker/TimePicker.js +1 -1
- package/lib/commonjs/components/Timeline/Timeline.js +1 -1
- package/lib/commonjs/components/Toast/Toast.js +1 -1
- package/lib/commonjs/components/Tooltip/Tooltip.js +1 -1
- package/lib/commonjs/components/Tour/Tour.js +1 -1
- package/lib/commonjs/components/TypingIndicator/TypingIndicator.js +1 -1
- package/lib/commonjs/components/WheelPicker/Wheel.js +1 -1
- package/lib/commonjs/index.js +1 -1
- package/lib/commonjs/network/NetworkStatusBanner.js +1 -1
- package/lib/commonjs/theme/componentSizes.js +1 -0
- package/lib/commonjs/theme/componentTokens.js +1 -0
- package/lib/commonjs/theme/index.js +1 -1
- package/lib/commonjs/theme/merge.js +1 -1
- package/lib/commonjs/theme/retiredThemeKeys.js +1 -0
- package/lib/commonjs/theme/scale.js +1 -0
- package/lib/commonjs/theme/tokens.js +1 -1
- package/lib/commonjs/utils/index.js +1 -1
- package/lib/module/canvasKit/index.js +1 -1
- package/lib/module/components/Accordion/Accordion.js +1 -1
- package/lib/module/components/AppBar/AppBar.js +1 -1
- package/lib/module/components/Avatar/Avatar.js +1 -1
- package/lib/module/components/Badge/Badge.js +1 -1
- package/lib/module/components/Banner/Banner.js +1 -1
- package/lib/module/components/BarChart/BarChart.js +1 -1
- package/lib/module/components/BottomNavigation/BottomNavigation.js +1 -1
- package/lib/module/components/BottomSheet/BottomSheet.js +1 -1
- package/lib/module/components/Box/Box.js +1 -1
- package/lib/module/components/Button/Button.js +1 -1
- package/lib/module/components/Calendar/calendarStyles.js +1 -1
- package/lib/module/components/Card/Card.js +1 -1
- package/lib/module/components/Carousel/Carousel.js +1 -1
- package/lib/module/components/Checkbox/Checkbox.js +1 -1
- package/lib/module/components/Chip/Chip.js +1 -1
- package/lib/module/components/ChoiceGroup/ChoiceGroup.js +1 -1
- package/lib/module/components/Composer/Composer.js +1 -1
- package/lib/module/components/DatePicker/DatePicker.js +1 -1
- package/lib/module/components/DateRangePicker/DateRangePicker.js +1 -1
- package/lib/module/components/Descriptions/Descriptions.js +1 -1
- package/lib/module/components/Dialog/Dialog.js +1 -1
- package/lib/module/components/EmptyState/EmptyState.js +1 -1
- package/lib/module/components/FieldBase/ChoiceText.js +1 -1
- package/lib/module/components/FieldBase/FieldBase.js +1 -1
- package/lib/module/components/FieldBase/index.js +1 -1
- package/lib/module/components/FieldBase/useFloatingLabel.js +1 -1
- package/lib/module/components/FilePicker/FilePicker.js +1 -1
- package/lib/module/components/FloatingActionButton/FloatingActionButton.js +1 -1
- package/lib/module/components/ImageGallery/ImageGallery.js +1 -1
- package/lib/module/components/InlineSelect/InlineSelect.js +1 -1
- package/lib/module/components/Input/Input.js +1 -1
- package/lib/module/components/ListItem/ListItem.js +1 -1
- package/lib/module/components/Markdown/Markdown.js +1 -1
- package/lib/module/components/MessageBubble/MessageBubble.js +1 -1
- package/lib/module/components/MessageList/MessageList.js +1 -1
- package/lib/module/components/Modal/Modal.js +1 -1
- package/lib/module/components/NumberInput/NumberInput.js +1 -1
- package/lib/module/components/OTPInput/OTPInput.js +1 -1
- package/lib/module/components/OptionSheet/OptionSheet.js +1 -1
- package/lib/module/components/PaymentResult/PaymentResult.js +1 -1
- package/lib/module/components/PhoneNumberInput/PhoneNumberInput.js +1 -1
- package/lib/module/components/PickerTrigger/PickerTrigger.js +1 -1
- package/lib/module/components/ProfileCompletion/ProfileCompletion.js +1 -1
- package/lib/module/components/ProfilePicker/ProfilePicker.js +1 -1
- package/lib/module/components/ProgressBar/ProgressBar.js +1 -1
- package/lib/module/components/Radio/Radio.js +1 -1
- package/lib/module/components/Radio/RadioDot.js +1 -1
- package/lib/module/components/Rating/Rating.js +1 -1
- package/lib/module/components/ScannerOverlay/ScannerOverlay.js +1 -1
- package/lib/module/components/SearchBar/SearchBar.js +1 -1
- package/lib/module/components/SegmentedControl/SegmentedControl.js +1 -1
- package/lib/module/components/Select/Select.js +1 -1
- package/lib/module/components/Skeleton/Skeleton.js +1 -1
- package/lib/module/components/Skeleton/SkeletonContent.js +1 -1
- package/lib/module/components/SlideToConfirm/SlideToConfirm.js +1 -1
- package/lib/module/components/Slider/Slider.js +1 -1
- package/lib/module/components/SliderField/SliderField.js +1 -1
- package/lib/module/components/Spinner/Spinner.js +1 -1
- package/lib/module/components/StatusBadge/StatusBadge.js +1 -1
- package/lib/module/components/Stepper/Stepper.js +1 -1
- package/lib/module/components/Swipeable/Swipeable.js +1 -1
- package/lib/module/components/Switch/Switch.js +1 -1
- package/lib/module/components/Tabs/Tabs.js +1 -1
- package/lib/module/components/TagInput/TagInput.js +1 -1
- package/lib/module/components/TimePicker/TimePicker.js +1 -1
- package/lib/module/components/Timeline/Timeline.js +1 -1
- package/lib/module/components/Toast/Toast.js +1 -1
- package/lib/module/components/Tooltip/Tooltip.js +1 -1
- package/lib/module/components/Tour/Tour.js +1 -1
- package/lib/module/components/TypingIndicator/TypingIndicator.js +1 -1
- package/lib/module/components/WheelPicker/Wheel.js +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/network/NetworkStatusBanner.js +1 -1
- package/lib/module/theme/componentSizes.js +1 -0
- package/lib/module/theme/componentTokens.js +1 -0
- package/lib/module/theme/index.js +1 -1
- package/lib/module/theme/merge.js +1 -1
- package/lib/module/theme/retiredThemeKeys.js +1 -0
- package/lib/module/theme/scale.js +1 -0
- package/lib/module/theme/tokens.js +1 -1
- package/lib/module/utils/index.js +1 -1
- package/lib/typescript/commonjs/components/BottomNavigation/BottomNavigation.d.ts +9 -8
- package/lib/typescript/commonjs/components/Box/Box.d.ts +18 -20
- package/lib/typescript/commonjs/components/Calendar/calendarStyles.d.ts +1 -1
- package/lib/typescript/commonjs/components/Card/Card.d.ts +1 -1
- package/lib/typescript/commonjs/components/FieldBase/FieldBase.d.ts +2 -8
- package/lib/typescript/commonjs/components/FieldBase/index.d.ts +1 -1
- package/lib/typescript/commonjs/components/FieldBase/useFloatingLabel.d.ts +3 -2
- package/lib/typescript/commonjs/components/InlineSelect/InlineSelect.d.ts +1 -1
- package/lib/typescript/commonjs/components/Input/Input.d.ts +1 -1
- package/lib/typescript/commonjs/components/PhoneNumberInput/PhoneNumberInput.d.ts +1 -1
- package/lib/typescript/commonjs/components/SearchBar/SearchBar.d.ts +1 -1
- package/lib/typescript/commonjs/components/SegmentedControl/SegmentedControl.d.ts +1 -15
- package/lib/typescript/commonjs/components/Select/Select.d.ts +2 -2
- package/lib/typescript/commonjs/components/Skeleton/Skeleton.d.ts +1 -1
- package/lib/typescript/commonjs/components/Tabs/Tabs.d.ts +1 -1
- package/lib/typescript/commonjs/components/Tour/Tour.d.ts +7 -0
- package/lib/typescript/commonjs/index.d.ts +4 -4
- package/lib/typescript/commonjs/theme/componentSizes.d.ts +27 -0
- package/lib/typescript/commonjs/theme/componentTokens.d.ts +762 -0
- package/lib/typescript/commonjs/theme/index.d.ts +4 -1
- package/lib/typescript/commonjs/theme/retiredThemeKeys.d.ts +22 -0
- package/lib/typescript/commonjs/theme/scale.d.ts +5 -0
- package/lib/typescript/commonjs/theme/types.d.ts +6 -790
- package/lib/typescript/commonjs/utils/index.d.ts +0 -2
- package/lib/typescript/module/components/BottomNavigation/BottomNavigation.d.ts +9 -8
- package/lib/typescript/module/components/Box/Box.d.ts +18 -20
- package/lib/typescript/module/components/Calendar/calendarStyles.d.ts +1 -1
- package/lib/typescript/module/components/Card/Card.d.ts +1 -1
- package/lib/typescript/module/components/FieldBase/FieldBase.d.ts +2 -8
- package/lib/typescript/module/components/FieldBase/index.d.ts +1 -1
- package/lib/typescript/module/components/FieldBase/useFloatingLabel.d.ts +3 -2
- package/lib/typescript/module/components/InlineSelect/InlineSelect.d.ts +1 -1
- package/lib/typescript/module/components/Input/Input.d.ts +1 -1
- package/lib/typescript/module/components/PhoneNumberInput/PhoneNumberInput.d.ts +1 -1
- package/lib/typescript/module/components/SearchBar/SearchBar.d.ts +1 -1
- package/lib/typescript/module/components/SegmentedControl/SegmentedControl.d.ts +1 -15
- package/lib/typescript/module/components/Select/Select.d.ts +2 -2
- package/lib/typescript/module/components/Skeleton/Skeleton.d.ts +1 -1
- package/lib/typescript/module/components/Tabs/Tabs.d.ts +1 -1
- package/lib/typescript/module/components/Tour/Tour.d.ts +7 -0
- package/lib/typescript/module/index.d.ts +4 -4
- package/lib/typescript/module/theme/componentSizes.d.ts +27 -0
- package/lib/typescript/module/theme/componentTokens.d.ts +762 -0
- package/lib/typescript/module/theme/index.d.ts +4 -1
- package/lib/typescript/module/theme/retiredThemeKeys.d.ts +22 -0
- package/lib/typescript/module/theme/scale.d.ts +5 -0
- package/lib/typescript/module/theme/types.d.ts +6 -790
- package/lib/typescript/module/utils/index.d.ts +0 -2
- package/package.json +12 -2
- package/lib/commonjs/utils/spacing.js +0 -1
- package/lib/module/utils/spacing.js +0 -1
- package/lib/typescript/commonjs/utils/spacing.d.ts +0 -61
- package/lib/typescript/module/utils/spacing.d.ts +0 -61
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.OTPInput=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_jsxRuntime=require("react/jsx-runtime");const
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.OTPInput=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_jsxRuntime=require("react/jsx-runtime");const sanitizeChar=(e,t)=>e?"number-pad"===t?e.replace(/\D/g,""):e:"",OTPInput=exports.OTPInput=(0,_react.forwardRef)((e,t)=>{const{value:i,defaultValue:r,onChange:n,onComplete:a,length:s=6,keyboardType:o="number-pad",autoFocus:l=!1,autoFocusDelay:c=0,disabled:u=!1,error:d,size:_="md",secure:m=!1,haptic:p,onFocus:g,accessibilityLabel:x,style:f,cellStyle:h,textStyle:v,testID:b}=e,[y,j]=(0,_index.useControllableState)({value:i,defaultValue:r??"",onChange:n}),N=(0,_index2.useTheme)(),R=(0,_react.useMemo)(()=>buildStyles(N),[N]),C=(0,_index2.resolveOtpInputSize)(N,_),T=(0,_react.useRef)([]),[F,k]=(0,_react.useState)(-1),V=(0,_react.useRef)(null),w=(0,_react.useRef)((0,_index2.createAnimatedValue)(0)).current,E=(0,_react.useRef)(new Map),I=(0,_react.useMemo)(()=>{const e=E.current,t=[];for(let i=0;i<s;i+=1){let r=e.get(i);r||(r=new _reactNative.Animated.Value(0),e.set(i,r)),t.push(r)}for(const t of Array.from(e.keys()))t>=s&&e.delete(t);return t},[s]),A=(0,_react.useRef)(-1),S=N.components.otpInput?.shakeOnError??!1,O=(0,_index.useReducedMotion)(),z=!0===d||(0,_FieldBase.hasFieldText)(d);(0,_react.useEffect)(()=>{let e;return null===V.current||!z||V.current||(p&&(0,_index3.triggerHaptic)("notificationError"),S&&!O&&((0,_index2.setNativeValue)(w,0),e=_reactNative.Animated.sequence([_reactNative.Animated.timing(w,{toValue:1,duration:N.motion.duration.instant,easing:_reactNative.Easing.linear,useNativeDriver:!0}),_reactNative.Animated.timing(w,{toValue:-1,duration:N.motion.duration.instant,easing:_reactNative.Easing.linear,useNativeDriver:!0}),_reactNative.Animated.timing(w,{toValue:1,duration:N.motion.duration.instant,easing:_reactNative.Easing.linear,useNativeDriver:!0}),_reactNative.Animated.timing(w,{toValue:0,duration:N.motion.duration.instant,easing:_reactNative.Easing.linear,useNativeDriver:!0})]),e.start())),V.current=z,()=>e?.stop()},[z,w,S,p,O,N.motion.duration.instant]),(0,_react.useEffect)(()=>{const e=A.current;if(A.current=F,e===F)return;if(-1===e&&-1===F)return;const t=[];return I.forEach((i,r)=>{const n=r===F?1:0;if(r!==F&&r!==e)return;const a=_reactNative.Animated.timing(i,{toValue:n,duration:N.motion.duration.fast,easing:_reactNative.Easing.bezier(...N.motion.easing.standard),useNativeDriver:!0});a.start(),t.push(a)}),()=>t.forEach(e=>e.stop())},[F,I,N]);const B=(0,_react.useCallback)(e=>{const t=T.current[e];t&&t.focus()},[]);(0,_react.useImperativeHandle)(t,()=>({focus:()=>B(0),blur:()=>{const e=T.current[F>=0?F:0];e?.blur()},clear:()=>{j(""),B(0)}}),[B,F,j]),(0,_react.useEffect)(()=>{if(l&&!u){const e=setTimeout(()=>B(0),c);return()=>clearTimeout(e)}},[l,c,u,B]);const D=(0,_react.useMemo)(()=>{const e=new Array(s).fill("");for(let t=0;t<Math.min(y.length,s);t+=1)e[t]=y[t]??"";return e},[y,s]),P=(0,_react.useCallback)(e=>{const t=e.slice(0,s);t!==y&&(j(t),t.length===s&&a&&a(t))},[s,j,a,y]),q=(0,_react.useCallback)((e,t)=>{const i=t.replace(/\u200B/g,""),r=sanitizeChar(i,o);if(!r){const t=D.slice(),i=(t[e]??"").length>0;if(t[e]="",P(t.join("").slice(0,s)),!i&&e>0){const t=D.slice();t[e-1]="",P(t.join("")),B(e-1)}return}const n=D[e]??"",a=n&&r.length>s&&r.startsWith(n)?r.slice(n.length):r;if(a.length>=s){const t=a.slice(0,s),i=y.length;return P(t),t.length!==i&&p&&(0,_index3.triggerHaptic)(p),void T.current[e]?.blur()}const l=D.slice();let c=e;for(let e=0;e<r.length&&c<s;e+=1)l[c]=r[e]??"",c+=1;const u=l.join("").slice(0,s),d=y.length;P(u),u.length!==d&&p&&(0,_index3.triggerHaptic)(p);const _=Math.min(c,s-1);c>=s?T.current[e]?.blur():B(_)},[D,B,o,s,p,P,y]),M=(0,_react.useCallback)((e,t)=>{if("Backspace"!==t.nativeEvent.key)return;if(0===(D[e]??"").length){if(e>0){const t=D.slice();t[e-1]="",P(t.join("")),B(e-1)}}else{const t=D.slice();t[e]="",P(t.join(""))}},[D,B,P]),H=(0,_react.useCallback)((e,t)=>{k(e),g?.(t)},[g]),W=(0,_react.useCallback)(()=>{k(-1)},[]),L=(0,_react.useCallback)(()=>{if(u)return;const e=D.indexOf("");B(-1===e?s-1:e)},[D,u,B,s]),$=x??`Enter ${s}-digit code`,G=w.interpolate({inputRange:[-1,1],outputRange:[-6,6]});return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:f,accessible:!0,accessibilityRole:"none",accessibilityLabel:$,accessibilityValue:{text:i},accessibilityState:{disabled:u},"aria-disabled":u,testID:b,children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:L,disabled:u,accessible:!1,children:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[R.row,{columnGap:C.gap,transform:[{translateX:G}]}],children:D.map((e,t)=>{const i=F===t,r=e.length>0,n=z?N.colors.border.error:N.colors.border.focus,a=I[t];if(!a)return null;const l=m&&r?"●":e;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:R.cellWrapper,children:[(0,_jsxRuntime.jsxs)(_FieldBase.FieldBase,{size:_,width:C.cell,height:C.cell,borderRadius:C.radius,borderWidth:1.5,focused:i,error:z,filled:r,disabled:u,paddingHorizontal:N.spacing.none,paddingVertical:N.spacing.none,gap:N.spacing.none,style:h,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:e=>{T.current[t]=e},value:(m&&r?"":e)||"",onChangeText:e=>q(t,e),onKeyPress:e=>M(t,e),onFocus:e=>H(t,e),onBlur:W,keyboardType:o,editable:!u,selectTextOnFocus:!0,caretHidden:r,maxLength:s+1,textContentType:"oneTimeCode",autoComplete:0===t?"sms-otp":"off",importantForAutofill:0===t?"yes":"no",style:[R.input,{fontSize:C.text,color:N.colors.text.primary,...(0,_index2.fontFor)(N,"semibold")},v]}),m&&r?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:R.maskOverlay,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[{fontSize:C.text,color:N.colors.text.primary,...(0,_index2.fontFor)(N,"semibold")},v],children:l})}):null]}),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[R.underline,{backgroundColor:n,opacity:a}]})]},`otp-cell-${t}`)})})}),(0,_jsxRuntime.jsx)(_FieldBase.FieldMessage,{size:_,error:!0,text:d})]})});OTPInput.displayName="OTPInput";const buildStyles=e=>_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center"},cellWrapper:{alignItems:"center"},input:{width:"100%",height:"100%",textAlign:"center",padding:e.spacing.none},maskOverlay:{..._reactNative.StyleSheet.absoluteFill,alignItems:"center",justifyContent:"center"},underline:{marginTop:e.spacing.xs,height:2,width:"60%",borderRadius:e.radius.pill,..._corners.smoothCorners}});var _default=exports.default=OTPInput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.OptionSheet=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_useDragToDismiss=require("../../hooks/useDragToDismiss.js"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_ModalSafeArea=require("../ModalSafeArea/ModalSafeArea.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_jsxRuntime=require("react/jsx-runtime");const AnimatedGestureRoot=_reactNative.Animated.createAnimatedComponent(_reactNativeGestureHandler.GestureHandlerRootView),SEARCH_ICON_SIZE=18,OptionSheet=e=>{const{open:t,onClose:r,onAfterClose:i,onOpenChange:a,title:o,options:s,sections:n,renderSectionHeader:l,renderOption:c,alphabetIndex:d=!1,searchPlaceholder:u="Search…",emptyText:p="No options",labelOf:m,getValue:h,disabledOf:g,destructiveOf:_,descriptionOf:x,iconOf:y,isSelected:f,onSelect:b,multi:v=!1,searchable:j=!1,searchSelectionColor:R,accessibilityLabel:S,optionStyle:N,selectedOptionStyle:T,optionTextStyle:C,selectedOptionTextStyle:w,testID:k}=e,I=(0,_index.useTheme)(),V=(0,_usePresenceMotion.usePresenceMotion)(),[M,P]=(0,_ModalSafeArea.useModalInsets)(),z=(0,_react.useMemo)(()=>buildStyles(I),[I]),[D,A]=(0,_react.useState)(""),L=_reactNative.Dimensions.get("window").height,H=Math.round(.7*L),[O,W]=(0,_react.useState)(t),B=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,E=(0,_react.useRef)((0,_index.createAnimatedValue)(H)).current,F=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,q=(0,_react.useMemo)(()=>V.reduced?F:_reactNative.Animated.add(E,F),[V.reduced,E,F]),G=(0,_react.useMemo)(()=>V.reduced?E.interpolate({inputRange:[0,H],outputRange:[1,0],extrapolate:"clamp"}):1,[V.reduced,E,H]),{handleGesture:$,opacity:K}=(0,_useDragToDismiss.useDragToDismiss)({drag:F,travel:H,onDismiss:r}),J=(0,_react.useMemo)(()=>_reactNative.Animated.multiply(G,K),[G,K]),U=(0,_react.useMemo)(()=>{const e=I.colors.background.overlay;return B.interpolate({inputRange:[0,1],outputRange:[transparentOf(e),e]})},[B,I.colors.background.overlay]);(0,_react.useEffect)(()=>{t&&W(!0)},[t]);const Y=(0,_react.useRef)(a);Y.current=a;const Z=(0,_react.useRef)(!1);(0,_react.useEffect)(()=>{Z.current!==t&&(Z.current=t,Y.current?.(t))},[t]);const Q=(0,_react.useRef)(i);Q.current=i;const X=(0,_react.useRef)(O);(0,_react.useEffect)(()=>{X.current&&!O&&"ios"!==_reactNative.Platform.OS&&Q.current?.(),X.current=O},[O]),(0,_react.useEffect)(()=>{if(!O)return;t&&((0,_index.setNativeValue)(F,0),(0,_index.setNativeValue)(K,1));const e=t?_reactNative.Animated.parallel([_reactNative.Animated.timing(B,{toValue:1,duration:V.duration("normal"),easing:_reactNative.Easing.bezier(...I.motion.easing.standard),useNativeDriver:!1}),V.reduced?_reactNative.Animated.timing(E,{toValue:0,duration:V.duration("normal"),easing:_reactNative.Easing.bezier(...I.motion.easing.standard),useNativeDriver:!0}):_reactNative.Animated.spring(E,{toValue:0,damping:I.motion.spring.snappy.damping,stiffness:I.motion.spring.snappy.stiffness,mass:I.motion.spring.snappy.mass,useNativeDriver:!0})]):_reactNative.Animated.parallel([_reactNative.Animated.timing(B,{toValue:0,duration:V.duration("normal"),easing:_reactNative.Easing.bezier(...I.motion.easing.standard),useNativeDriver:!1}),_reactNative.Animated.timing(E,{toValue:H,duration:V.duration("fast"),easing:_reactNative.Easing.bezier(...I.motion.easing.accelerate),useNativeDriver:!0})]);return e.start(({finished:e})=>{e&&!t&&W(!1)}),()=>e.stop()},[t,O,B,E,F,K,H,V,I.motion.easing.standard,I.motion.easing.accelerate,I.motion.spring.snappy]);const ee=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Native(),[]),[te,re]=(0,_react.useState)(0),ie=(0,_reactNativeKeyboardController.useKeyboardState)(e=>e.height),ae=O?Math.max(0,Math.round(ie)):0,oe=Math.max(M.top,_reactNative.StatusBar.currentHeight??0)+I.spacing.sm,se=ae>0,ne=se?Math.max(0,Math.min(H,(te>0?te:L)-ae-oe)):H;(0,_react.useEffect)(()=>{t||A("")},[t]);const le=(0,_react.useMemo)(()=>{const e=j?D.trim().toLowerCase():"",matches=t=>0===e.length||m(t).toLowerCase().includes(e)||(x(t)??"").toLowerCase().includes(e);if(!n)return s.filter(matches).map(e=>({kind:"option",option:e}));const t=[];return n.forEach((e,r)=>{const i=e.options.filter(matches);if(0!==i.length){t.push({kind:"header",title:e.title});for(const e of i)t.push({kind:"option",option:e,section:r})}}),t},[j,D,s,n,m,x]),ce=(0,_react.useCallback)(()=>{r()},[r]),de=(0,_react.useRef)(null),ue=(0,_react.useMemo)(()=>{const e=new Map;if(!d)return e;let t=0;if(n)for(let e=le.length-1;e>=0;e-=1)if("header"===le[e].kind){t=e+1;break}for(let r=t;r<le.length;r+=1){const t=le[r];if("option"!==t.kind)continue;const i=m(t.option).trim().charAt(0).toUpperCase(),a=/^[A-Z]$/.test(i)?i:"#";e.has(a)||e.set(a,r)}return e},[d,le,n,m]),pe=d&&ue.size>0&&0===D.trim().length,me=(0,_react.useMemo)(()=>[..."ABCDEFGHIJKLMNOPQRSTUVWXYZ",...ue.has("#")?["#"]:[]],[ue]),he=(0,_react.useCallback)(e=>{const t=ue.get(e);void 0!==t&&de.current?.scrollToIndex({index:t,animated:!0,viewPosition:0})},[ue]),ge=(0,_react.useRef)(null),xe=(0,_react.useCallback)(()=>{null!==ge.current&&(clearTimeout(ge.current),ge.current=null)},[]),ye=(0,_react.useCallback)(e=>{de.current?.scrollToOffset({offset:e.averageItemLength*e.index,animated:!1}),xe(),ge.current=setTimeout(()=>{ge.current=null,de.current?.scrollToIndex({index:e.index,animated:!0,viewPosition:0})},50)},[xe]);(0,_react.useEffect)(()=>(O||xe(),xe),[O,xe]);return(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:O,transparent:!0,animationType:"none",onRequestClose:ce,onDismiss:()=>Q.current?.(),statusBarTranslucent:!0,navigationBarTranslucent:!0,children:(0,_jsxRuntime.jsx)(_ModalSafeArea.ModalSafeArea,{onInsets:P,children:(0,_jsxRuntime.jsxs)(AnimatedGestureRoot,{collapsable:!1,onLayout:e=>re(e.nativeEvent.layout.height),style:[_reactNative.StyleSheet.absoluteFill,{backgroundColor:U}],children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:ce,accessibilityRole:"button",accessibilityLabel:"Close picker"}),(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{testID:k,accessibilityViewIsModal:!0,accessibilityLabel:S??o??"Options",style:[z.sheet,{maxHeight:ne,bottom:ae,paddingBottom:se?16:M.bottom+16,backgroundColor:I.colors.background.elevated,borderTopLeftRadius:I.radius.xl,borderTopRightRadius:I.radius.xl,..._corners.smoothCorners,opacity:J,transform:[{translateY:q}],...I.shadows.xl}],children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:$,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:z.sheetHandleRow,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.sheetHandle,{backgroundColor:I.components.select?.handleColor??I.components.bottomSheet?.handleColor??I.colors.border.primary}]})}),o?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.sheetTitle,{color:I.colors.text.primary,fontSize:I.typography.fontSize.lg,fontWeight:I.typography.fontWeight.semibold,paddingHorizontal:I.spacing.lg,marginBottom:I.spacing.sm}],children:o}):null]})}),j?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.searchWrap,{marginHorizontal:I.spacing.lg,marginBottom:I.spacing.sm}],children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[z.searchBox,{backgroundColor:I.colors.background.secondary,borderColor:I.colors.border.primary,borderRadius:I.radius.md,..._corners.smoothCorners,paddingHorizontal:I.spacing.md,gap:I.spacing.sm}],children:[(I.icons?.search??_defaultIcons.defaultIcons.search)({size:18,color:I.colors.text.tertiary}),(0,_jsxRuntime.jsx)(_reactNative.TextInput,{value:D,onChangeText:A,placeholder:u,placeholderTextColor:I.colors.text.tertiary,selectionColor:R??I.colors.border.focus,accessibilityLabel:"Search options",style:[z.searchInput,{color:I.colors.text.primary,fontSize:I.typography.fontSize.base,paddingVertical:I.spacing.sm}]}),D.length>0?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>A(""),hitSlop:8,accessibilityRole:"button",accessibilityLabel:"Clear search",children:(I.icons?.close??_defaultIcons.defaultIcons.close)({size:18,color:I.colors.text.secondary})}):null]})}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[z.listWrap,pe?z.listRow:null],children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:ee,children:(0,_jsxRuntime.jsx)(_reactNative.FlatList,{ref:de,data:le,keyExtractor:e=>"header"===e.kind?`h:${e.title}`:`o:${e.section??""}:${String(h(e.option))}`,renderItem:({item:e})=>{if("header"===e.kind)return(0,_jsxRuntime.jsx)(_reactNative.View,{accessible:!0,accessibilityRole:"header",style:[z.sectionHeader,{paddingHorizontal:I.spacing.lg,paddingTop:I.spacing.md}],children:l?l(e.title):(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.sectionTitle,{color:I.colors.text.tertiary,fontSize:I.typography.fontSize.xs,fontWeight:I.typography.fontWeight.semibold}],children:e.title.toUpperCase()})});const t=e.option,r=m(t),i=h(t),a=x(t),o=y(t),s=f(i),n=g(t),d=_?.(t)??!1;return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>b(t),disabled:n,android_ripple:{color:I.colors.surface.pressed,borderless:!1},accessibilityRole:"button",accessibilityLabel:r,accessibilityState:{selected:s,disabled:n},"aria-selected":s,"aria-disabled":n,style:({pressed:e})=>[z.optionRow,{backgroundColor:s?I.colors.surface.selected:e?I.colors.surface.pressed:"transparent",opacity:n?.5:1,paddingHorizontal:I.spacing.lg,paddingVertical:I.spacing.md},N,s?T:null],children:[c?(0,_jsxRuntime.jsx)(_reactNative.View,{style:z.optionTextWrap,children:c(t,{selected:s,disabled:n})}):(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[o?(0,_jsxRuntime.jsx)(_reactNative.View,{style:z.optionIcon,children:o}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:z.optionTextWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.optionLabel,{color:d?I.colors.toneText.error:s?I.colors.primary:I.colors.text.primary,fontSize:I.typography.fontSize.base,fontWeight:s?I.typography.fontWeight.semibold:I.typography.fontWeight.medium},C,s?w:null],children:r}),a?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.optionDescription,{color:I.colors.text.tertiary,fontSize:I.typography.fontSize.sm}],numberOfLines:2,children:a}):null]})]}),v?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.checkbox,{borderColor:s?I.colors.primary:I.colors.border.primary,backgroundColor:s?I.colors.primary:"transparent"}],children:s?(0,_jsxRuntime.jsx)(_reactNative.View,{style:z.checkboxTick}):null}):s?"icon"===I.components.optionSheet?.selectedMarker?(0,_jsxRuntime.jsx)(_reactNative.View,{style:z.singleSelectedIcon,children:(I.icons?.selectedTick??_defaultIcons.defaultIcons.selectedTick)({size:20,color:I.colors.primary})}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.singleSelectedDot,{backgroundColor:I.colors.primary}]}):null]})},onScrollToIndexFailed:ye,overScrollMode:"never",bounces:!1,keyboardShouldPersistTaps:"handled",showsVerticalScrollIndicator:!pe,style:pe?z.listBesideRail:null,ListEmptyComponent:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.empty,{color:I.colors.text.tertiary,fontSize:I.typography.fontSize.sm,paddingVertical:I.spacing.xl}],children:p})})}),pe?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.rail,{paddingRight:I.spacing.xs}],accessibilityRole:"list",accessibilityLabel:"Jump to letter",testID:"option-sheet-alphabet",children:me.map(e=>{const t=ue.has(e);return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>he(e),disabled:!t,hitSlop:{left:8,right:8},accessibilityRole:"button",accessibilityLabel:`Jump to ${e}`,accessibilityState:{disabled:!t},"aria-disabled":!t,style:z.railLetter,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.railLetterText,{color:t?I.colors.primary:I.colors.text.tertiary,fontSize:I.typography.fontSize.xs,fontWeight:I.typography.fontWeight.semibold,opacity:t?1:.45}],children:e})},e)})}):null]}),v?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.sheetFooter,{borderTopColor:I.colors.border.secondary,paddingHorizontal:I.spacing.lg,paddingVertical:I.spacing.md}],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:ce,accessibilityRole:"button",accessibilityLabel:"Done",style:({pressed:e})=>[z.doneButton,{backgroundColor:e?I.colors.primaryPressed:I.colors.primary,borderRadius:I.radius.md,..._corners.smoothCorners,paddingVertical:I.spacing.sm,paddingHorizontal:I.spacing.lg}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:I.colors.onPrimary,fontSize:I.typography.fontSize.base,fontWeight:I.typography.fontWeight.semibold},children:"Done"})})}):null]}),(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})})})};exports.OptionSheet=OptionSheet,OptionSheet.displayName="OptionSheet";const transparentOf=e=>{const t=e.match(/^rgba?\(([^)]+)\)$/);if(!t)return"transparent";const[r,i,a]=t[1].split(",").map(e=>e.trim());return`rgba(${r}, ${i}, ${a}, 0)`},buildStyles=e=>_reactNative.StyleSheet.create({sheet:{position:"absolute",left:0,right:0,bottom:0,paddingBottom:16,overflow:"hidden"},sheetHandleRow:{alignItems:"center",paddingTop:10,paddingBottom:8},sheetHandle:{width:36,height:4,borderRadius:2,..._corners.smoothCorners},sheetTitle:{includeFontPadding:!1},searchWrap:{width:"auto"},searchBox:{flexDirection:"row",alignItems:"center",borderWidth:1},searchInput:{flex:1,includeFontPadding:!1},optionRow:{flexDirection:"row",alignItems:"center"},sectionHeader:{paddingBottom:4},listWrap:{flexShrink:1},listRow:{flexDirection:"row"},listBesideRail:{flex:1},rail:{justifyContent:"space-between",alignItems:"center",alignSelf:"stretch",paddingVertical:4},railLetter:{paddingHorizontal:4,minHeight:14,justifyContent:"center"},railLetterText:{includeFontPadding:!1,lineHeight:14},sectionTitle:{includeFontPadding:!1,letterSpacing:.6},optionIcon:{marginRight:12},optionTextWrap:{flex:1},optionLabel:{includeFontPadding:!1},optionDescription:{includeFontPadding:!1,marginTop:2},checkbox:{width:22,height:22,borderRadius:6,..._corners.smoothCorners,borderWidth:2,alignItems:"center",justifyContent:"center",marginLeft:12},checkboxTick:{width:10,height:6,borderLeftWidth:2,borderBottomWidth:2,borderColor:e.colors.onPrimary,transform:[{rotate:"-45deg"},{translateY:-1}]},singleSelectedDot:{width:8,height:8,borderRadius:4,..._corners.smoothCorners,marginLeft:12},singleSelectedIcon:{marginLeft:12},empty:{textAlign:"center"},sheetFooter:{borderTopWidth:_reactNative.StyleSheet.hairlineWidth,alignItems:"flex-end"},doneButton:{alignSelf:"flex-end"}});var _default=exports.default=OptionSheet;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.OptionSheet=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeGestureHandler=require("react-native-gesture-handler"),_reactNativeKeyboardController=require("react-native-keyboard-controller"),_useDragToDismiss=require("../../hooks/useDragToDismiss.js"),_usePresenceMotion=require("../../hooks/usePresenceMotion.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_ModalSafeArea=require("../ModalSafeArea/ModalSafeArea.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_jsxRuntime=require("react/jsx-runtime");const AnimatedGestureRoot=_reactNative.Animated.createAnimatedComponent(_reactNativeGestureHandler.GestureHandlerRootView),SEARCH_ICON_SIZE=18,OptionSheet=e=>{const{open:t,onClose:r,onAfterClose:i,onOpenChange:a,title:o,options:s,sections:n,renderSectionHeader:l,renderOption:c,alphabetIndex:d=!1,searchPlaceholder:u="Search…",emptyText:p="No options",labelOf:m,getValue:g,disabledOf:h,destructiveOf:_,descriptionOf:x,iconOf:y,isSelected:f,onSelect:b,multi:v=!1,searchable:j=!1,searchSelectionColor:R,accessibilityLabel:S,optionStyle:N,selectedOptionStyle:T,optionTextStyle:C,selectedOptionTextStyle:w,testID:k}=e,I=(0,_index.useTheme)(),V=(0,_usePresenceMotion.usePresenceMotion)(),[M,P]=(0,_ModalSafeArea.useModalInsets)(),z=(0,_react.useMemo)(()=>buildStyles(I),[I]),[D,A]=(0,_react.useState)(""),L=_reactNative.Dimensions.get("window").height,H=Math.round(.7*L),[O,W]=(0,_react.useState)(t),B=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,E=(0,_react.useRef)((0,_index.createAnimatedValue)(H)).current,F=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,q=(0,_react.useMemo)(()=>V.reduced?F:_reactNative.Animated.add(E,F),[V.reduced,E,F]),G=(0,_react.useMemo)(()=>V.reduced?E.interpolate({inputRange:[0,H],outputRange:[1,0],extrapolate:"clamp"}):1,[V.reduced,E,H]),{handleGesture:$,opacity:K}=(0,_useDragToDismiss.useDragToDismiss)({drag:F,travel:H,onDismiss:r}),J=(0,_react.useMemo)(()=>_reactNative.Animated.multiply(G,K),[G,K]),U=(0,_react.useMemo)(()=>{const e=I.colors.background.overlay;return B.interpolate({inputRange:[0,1],outputRange:[transparentOf(e),e]})},[B,I.colors.background.overlay]);(0,_react.useEffect)(()=>{t&&W(!0)},[t]);const Y=(0,_react.useRef)(a);Y.current=a;const Z=(0,_react.useRef)(!1);(0,_react.useEffect)(()=>{Z.current!==t&&(Z.current=t,Y.current?.(t))},[t]);const Q=(0,_react.useRef)(i);Q.current=i;const X=(0,_react.useRef)(O);(0,_react.useEffect)(()=>{X.current&&!O&&"ios"!==_reactNative.Platform.OS&&Q.current?.(),X.current=O},[O]),(0,_react.useEffect)(()=>{if(!O)return;t&&((0,_index.setNativeValue)(F,0),(0,_index.setNativeValue)(K,1));const e=t?_reactNative.Animated.parallel([_reactNative.Animated.timing(B,{toValue:1,duration:V.duration("normal"),easing:_reactNative.Easing.bezier(...I.motion.easing.standard),useNativeDriver:!1}),V.reduced?_reactNative.Animated.timing(E,{toValue:0,duration:V.duration("normal"),easing:_reactNative.Easing.bezier(...I.motion.easing.standard),useNativeDriver:!0}):_reactNative.Animated.spring(E,{toValue:0,damping:I.motion.spring.snappy.damping,stiffness:I.motion.spring.snappy.stiffness,mass:I.motion.spring.snappy.mass,useNativeDriver:!0})]):_reactNative.Animated.parallel([_reactNative.Animated.timing(B,{toValue:0,duration:V.duration("normal"),easing:_reactNative.Easing.bezier(...I.motion.easing.standard),useNativeDriver:!1}),_reactNative.Animated.timing(E,{toValue:H,duration:V.duration("fast"),easing:_reactNative.Easing.bezier(...I.motion.easing.accelerate),useNativeDriver:!0})]);return e.start(({finished:e})=>{e&&!t&&W(!1)}),()=>e.stop()},[t,O,B,E,F,K,H,V,I.motion.easing.standard,I.motion.easing.accelerate,I.motion.spring.snappy]);const ee=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Native(),[]),[te,re]=(0,_react.useState)(0),ie=(0,_reactNativeKeyboardController.useKeyboardState)(e=>e.height),ae=O?Math.max(0,Math.round(ie)):0,oe=Math.max(M.top,_reactNative.StatusBar.currentHeight??0)+I.spacing.sm,se=ae>0,ne=se?Math.max(0,Math.min(H,(te>0?te:L)-ae-oe)):H;(0,_react.useEffect)(()=>{t||A("")},[t]);const le=(0,_react.useMemo)(()=>{const e=j?D.trim().toLowerCase():"",matches=t=>0===e.length||m(t).toLowerCase().includes(e)||(x(t)??"").toLowerCase().includes(e);if(!n)return s.filter(matches).map(e=>({kind:"option",option:e}));const t=[];return n.forEach((e,r)=>{const i=e.options.filter(matches);if(0!==i.length){t.push({kind:"header",title:e.title});for(const e of i)t.push({kind:"option",option:e,section:r})}}),t},[j,D,s,n,m,x]),ce=(0,_react.useCallback)(()=>{r()},[r]),de=(0,_react.useRef)(null),ue=(0,_react.useMemo)(()=>{const e=new Map;if(!d)return e;let t=0;if(n)for(let e=le.length-1;e>=0;e-=1)if("header"===le[e].kind){t=e+1;break}for(let r=t;r<le.length;r+=1){const t=le[r];if("option"!==t.kind)continue;const i=m(t.option).trim().charAt(0).toUpperCase(),a=/^[A-Z]$/.test(i)?i:"#";e.has(a)||e.set(a,r)}return e},[d,le,n,m]),pe=d&&ue.size>0&&0===D.trim().length,me=(0,_react.useMemo)(()=>[..."ABCDEFGHIJKLMNOPQRSTUVWXYZ",...ue.has("#")?["#"]:[]],[ue]),ge=(0,_react.useCallback)(e=>{const t=ue.get(e);void 0!==t&&de.current?.scrollToIndex({index:t,animated:!0,viewPosition:0})},[ue]),he=(0,_react.useRef)(null),xe=(0,_react.useCallback)(()=>{null!==he.current&&(clearTimeout(he.current),he.current=null)},[]),ye=(0,_react.useCallback)(e=>{de.current?.scrollToOffset({offset:e.averageItemLength*e.index,animated:!1}),xe(),he.current=setTimeout(()=>{he.current=null,de.current?.scrollToIndex({index:e.index,animated:!0,viewPosition:0})},50)},[xe]);(0,_react.useEffect)(()=>(O||xe(),xe),[O,xe]);return(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:O,transparent:!0,animationType:"none",onRequestClose:ce,onDismiss:()=>Q.current?.(),statusBarTranslucent:!0,navigationBarTranslucent:!0,children:(0,_jsxRuntime.jsx)(_ModalSafeArea.ModalSafeArea,{onInsets:P,children:(0,_jsxRuntime.jsxs)(AnimatedGestureRoot,{collapsable:!1,onLayout:e=>re(e.nativeEvent.layout.height),style:[_reactNative.StyleSheet.absoluteFill,{backgroundColor:U}],children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:ce,accessibilityRole:"button",accessibilityLabel:"Close picker"}),(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{testID:k,accessibilityViewIsModal:!0,accessibilityLabel:S??o??"Options",style:[z.sheet,{maxHeight:ne,bottom:ae,paddingBottom:se?I.spacing.lg:M.bottom+I.spacing.lg,backgroundColor:I.colors.background.elevated,borderTopLeftRadius:I.radius.xl,borderTopRightRadius:I.radius.xl,..._corners.smoothCorners,opacity:J,transform:[{translateY:q}],...I.shadows.xl}],children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:$,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:z.sheetHandleRow,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.sheetHandle,{backgroundColor:I.components.select?.handleColor??I.components.bottomSheet?.handleColor??I.colors.border.primary}]})}),o?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.sheetTitle,{color:I.colors.text.primary,fontSize:I.typography.fontSize.lg,fontWeight:I.typography.fontWeight.semibold,paddingHorizontal:I.spacing.lg,marginBottom:I.spacing.sm}],children:o}):null]})}),j?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.searchWrap,{marginHorizontal:I.spacing.lg,marginBottom:I.spacing.sm}],children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[z.searchBox,{backgroundColor:I.colors.background.secondary,borderColor:I.colors.border.primary,borderRadius:I.radius.md,..._corners.smoothCorners,paddingHorizontal:I.spacing.md,gap:I.spacing.sm}],children:[(I.icons?.search??_defaultIcons.defaultIcons.search)({size:18,color:I.colors.text.tertiary}),(0,_jsxRuntime.jsx)(_reactNative.TextInput,{value:D,onChangeText:A,placeholder:u,placeholderTextColor:I.colors.text.tertiary,selectionColor:R??I.colors.border.focus,accessibilityLabel:"Search options",style:[z.searchInput,{color:I.colors.text.primary,fontSize:I.typography.fontSize.base,paddingVertical:I.spacing.sm}]}),D.length>0?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>A(""),hitSlop:8,accessibilityRole:"button",accessibilityLabel:"Clear search",children:(I.icons?.close??_defaultIcons.defaultIcons.close)({size:18,color:I.colors.text.secondary})}):null]})}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[z.listWrap,pe?z.listRow:null],children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:ee,children:(0,_jsxRuntime.jsx)(_reactNative.FlatList,{ref:de,data:le,keyExtractor:e=>"header"===e.kind?`h:${e.title}`:`o:${e.section??""}:${String(g(e.option))}`,renderItem:({item:e})=>{if("header"===e.kind)return(0,_jsxRuntime.jsx)(_reactNative.View,{accessible:!0,accessibilityRole:"header",style:[z.sectionHeader,{paddingHorizontal:I.spacing.lg,paddingTop:I.spacing.md}],children:l?l(e.title):(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.sectionTitle,{color:I.colors.text.tertiary,fontSize:I.typography.fontSize.xs,fontWeight:I.typography.fontWeight.semibold}],children:e.title.toUpperCase()})});const t=e.option,r=m(t),i=g(t),a=x(t),o=y(t),s=f(i),n=h(t),d=_?.(t)??!1;return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>b(t),disabled:n,android_ripple:{color:I.colors.surface.pressed,borderless:!1},accessibilityRole:"button",accessibilityLabel:r,accessibilityState:{selected:s,disabled:n},"aria-selected":s,"aria-disabled":n,style:({pressed:e})=>[z.optionRow,{backgroundColor:s?I.colors.surface.selected:e?I.colors.surface.pressed:"transparent",opacity:n?.5:1,paddingHorizontal:I.spacing.lg,paddingVertical:I.spacing.md},N,s?T:null],children:[c?(0,_jsxRuntime.jsx)(_reactNative.View,{style:z.optionTextWrap,children:c(t,{selected:s,disabled:n})}):(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[o?(0,_jsxRuntime.jsx)(_reactNative.View,{style:z.optionIcon,children:o}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:z.optionTextWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.optionLabel,{color:d?I.colors.toneText.error:s?I.colors.primary:I.colors.text.primary,fontSize:I.typography.fontSize.base,fontWeight:s?I.typography.fontWeight.semibold:I.typography.fontWeight.medium},C,s?w:null],children:r}),a?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.optionDescription,{color:I.colors.text.tertiary,fontSize:I.typography.fontSize.sm}],numberOfLines:2,children:a}):null]})]}),v?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.checkbox,{borderColor:s?I.colors.primary:I.colors.border.primary,backgroundColor:s?I.colors.primary:"transparent"}],children:s?(0,_jsxRuntime.jsx)(_reactNative.View,{style:z.checkboxTick}):null}):s?"icon"===I.components.optionSheet?.selectedMarker?(0,_jsxRuntime.jsx)(_reactNative.View,{style:z.singleSelectedIcon,children:(I.icons?.selectedTick??_defaultIcons.defaultIcons.selectedTick)({size:20,color:I.colors.primary})}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.singleSelectedDot,{backgroundColor:I.colors.primary}]}):null]})},onScrollToIndexFailed:ye,overScrollMode:"never",bounces:!1,keyboardShouldPersistTaps:"handled",showsVerticalScrollIndicator:!pe,style:pe?z.listBesideRail:null,ListEmptyComponent:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.empty,{color:I.colors.text.tertiary,fontSize:I.typography.fontSize.sm,paddingVertical:I.spacing.xl}],children:p})})}),pe?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.rail,{paddingRight:I.spacing.xs}],accessibilityRole:"list",accessibilityLabel:"Jump to letter",testID:"option-sheet-alphabet",children:me.map(e=>{const t=ue.has(e);return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>ge(e),disabled:!t,hitSlop:{left:8,right:8},accessibilityRole:"button",accessibilityLabel:`Jump to ${e}`,accessibilityState:{disabled:!t},"aria-disabled":!t,style:z.railLetter,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[z.railLetterText,{color:t?I.colors.primary:I.colors.text.tertiary,fontSize:I.typography.fontSize.xs,fontWeight:I.typography.fontWeight.semibold,opacity:t?1:.45}],children:e})},e)})}):null]}),v?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[z.sheetFooter,{borderTopColor:I.colors.border.secondary,paddingHorizontal:I.spacing.lg,paddingVertical:I.spacing.md}],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:ce,accessibilityRole:"button",accessibilityLabel:"Done",style:({pressed:e})=>[z.doneButton,{backgroundColor:e?I.colors.primaryPressed:I.colors.primary,borderRadius:I.radius.md,..._corners.smoothCorners,paddingVertical:I.spacing.sm,paddingHorizontal:I.spacing.lg}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:I.colors.onPrimary,fontSize:I.typography.fontSize.base,fontWeight:I.typography.fontWeight.semibold},children:"Done"})})}):null]}),(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})})})};exports.OptionSheet=OptionSheet,OptionSheet.displayName="OptionSheet";const transparentOf=e=>{const t=e.match(/^rgba?\(([^)]+)\)$/);if(!t)return"transparent";const[r,i,a]=t[1].split(",").map(e=>e.trim());return`rgba(${r}, ${i}, ${a}, 0)`},buildStyles=e=>_reactNative.StyleSheet.create({sheet:{position:"absolute",left:0,right:0,bottom:0,paddingBottom:e.spacing.lg,overflow:"hidden"},sheetHandleRow:{alignItems:"center",paddingTop:e.spacing.sm,paddingBottom:e.spacing.sm},sheetHandle:{width:36,height:4,borderRadius:e.radius.pill,..._corners.smoothCorners},sheetTitle:{includeFontPadding:!1},searchWrap:{width:"auto"},searchBox:{flexDirection:"row",alignItems:"center",borderWidth:1},searchInput:{flex:1,includeFontPadding:!1},optionRow:{flexDirection:"row",alignItems:"center"},sectionHeader:{paddingBottom:e.spacing.xs},listWrap:{flexShrink:1},listRow:{flexDirection:"row"},listBesideRail:{flex:1},rail:{justifyContent:"space-between",alignItems:"center",alignSelf:"stretch",paddingVertical:e.spacing.xs},railLetter:{paddingHorizontal:e.spacing.xs,minHeight:14,justifyContent:"center"},railLetterText:{includeFontPadding:!1,lineHeight:14},sectionTitle:{includeFontPadding:!1,letterSpacing:.6},optionIcon:{marginRight:e.spacing.md},optionTextWrap:{flex:1},optionLabel:{includeFontPadding:!1},optionDescription:{includeFontPadding:!1,marginTop:e.spacing.xxs},checkbox:{width:22,height:22,borderRadius:e.radius.sm,..._corners.smoothCorners,borderWidth:2,alignItems:"center",justifyContent:"center",marginLeft:e.spacing.md},checkboxTick:{width:10,height:6,borderLeftWidth:2,borderBottomWidth:2,borderColor:e.colors.onPrimary,transform:[{rotate:"-45deg"},{translateY:-1}]},singleSelectedDot:{width:8,height:8,borderRadius:e.radius.pill,..._corners.smoothCorners,marginLeft:e.spacing.md},singleSelectedIcon:{marginLeft:e.spacing.md},empty:{textAlign:"center"},sheetFooter:{borderTopWidth:_reactNative.StyleSheet.hairlineWidth,alignItems:"flex-end"},doneButton:{alignSelf:"flex-end"}});var _default=exports.default=OptionSheet;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.PaymentResult=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated")),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index3=require("../AppIcon/index.js"),_index4=require("../Button/index.js"),_index5=require("../Confetti/index.js"),_index6=require("../Descriptions/index.js"),_index7=require("../StatusBadge/index.js"),_index8=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var n=new WeakMap,r=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var i,a,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(i=t?r:n){if(i.has(e))return i.get(e);i.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((a=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?i(o,t,a):o[t]=e[t]);return o})(e,t)}const STATUS={success:{icon:"check-circle",badge:"Success",tone:"success",title:"Payment successful"},pending:{icon:"clock",badge:"Pending",tone:"neutral",title:"Payment pending"},failed:{icon:"x-circle",badge:"Failed",tone:"error",title:"Payment failed"},refunded:{icon:"refresh-cw",badge:"Refunded",tone:"info",title:"Payment refunded"}},MARK_SIZE=72,ICON_SIZE=36,TINT_OPACITY=.14,DEFAULT_REFUND_DAYS=5,CONFETTI_PIECES=60,SETTLE_WINDOW="Most payments confirm in a few minutes. Your bank can take up to 48 hours.",REFRESH_HINT="Tap Check status to see the latest.",PENDING_WARNING="Do not pay again. If money has left your account, it will either complete or come back to you.",istStamp=e=>(0,_mobileCore.formatDateTime)(e,{zone:"IST",zoneLabel:!0}),markColors=(e,t)=>{const{colors:n}=e;switch(t){case"success":return{fill:(0,_color.tintOf)(n.success,.14,n.background.secondary),ink:n.toneText.success};case"failed":return{fill:(0,_color.tintOf)(n.error,.14,n.background.secondary),ink:n.toneText.error};case"refunded":return{fill:(0,_color.tintOf)(n.info,.14,n.background.secondary),ink:n.toneText.info};default:return{fill:n.background.tertiary,ink:n.text.secondary}}},failedLead=(e,t,n,r)=>{if(!0===e){return`${t} will return to your account within ${n} working days.${r?` Reference ${r}.`:""}`}return!1===e?"No money was taken from your account. You can try again.":"We could not confirm whether money left your account. Check your bank statement before you try again."},leadFor=(e,t,n)=>{switch(e){case"success":return"Your payment has been received. Keep this receipt for your records.";case"pending":return"Your bank has not confirmed this payment yet.";case"refunded":return`${t} has been returned to your account.`;default:return n}},renderAction=e=>(0,_jsxRuntime.jsx)(_index4.Button,{title:e.title,size:"lg",fullWidth:!0,variant:e.variant,tone:e.tone,leftIcon:e.icon,loading:e.loading,onPress:e.onPress},e.key),PaymentResult=({status:e,amount:t,currency:n="INR",payee:r,reference:i,paidAt:a,method:o,rows:s,debited:c,refundDays:l=5,settlesBy:u,title:d,message:m,onShare:_,onDownload:p,onDone:y,onRetry:f,onRefresh:x,refreshing:h=!1,celebrate:g=!0,haptic:b=!0,style:v,testID:j})=>{const R=(0,_index2.useTheme)(),k=(0,_index.useReducedMotion)(),N=(0,_react.useMemo)(()=>buildStyles(R),[R]),w=(0,_react.useRef)(null),T=(0,_react.useRef)(null),S=STATUS[e],I=(0,_react.useMemo)(()=>markColors(R,e),[R,e]),P=d??S.title,C=(0,_mobileCore.formatMinor)(t,{currency:n,dropZeroDecimals:!0}),D=failedLead(c,C,l,i),E=m??leadFor(e,C,D),q=`${P}, ${C}${r&&"refunded"!==e?` to ${r}`:""}`,A=void 0===u?SETTLE_WINDOW:`Expected to settle by ${istStamp(u)}.`;(0,_react.useEffect)(()=>{T.current!==e&&(T.current=e,(0,_announce.announce)(q,{polite:"failed"!==e}),b&&("success"===e?(0,_hapticUtils.triggerHaptic)("confirm"):"failed"===e&&(0,_hapticUtils.triggerHaptic)("reject")),"success"===e&&g&&w.current?.start())},[e]);const W=(0,_reactNativeReanimated.useSharedValue)(.9),M=(0,_reactNativeReanimated.useSharedValue)(0),O=R.motion.duration.normal;(0,_react.useEffect)(()=>(k?(W.value=1,M.value=1):"success"===e?(M.value=0,M.value=(0,_reactNativeReanimated.withTiming)(1,{duration:O}),W.value=.6,W.value=(0,_reactNativeReanimated.withSpring)(1,{damping:12,stiffness:160})):(M.value=0,M.value=(0,_reactNativeReanimated.withTiming)(1,{duration:O}),W.value=.9,W.value=(0,_reactNativeReanimated.withTiming)(1,{duration:O})),()=>{(0,_reactNativeReanimated.cancelAnimation)(W),(0,_reactNativeReanimated.cancelAnimation)(M)}),[e,k,W,M,O]);const V=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({opacity:M.value,transform:[{scale:W.value}]})),$=(0,_react.useMemo)(()=>{const e=[];if(r&&e.push({key:"payee",label:"Paid to",value:r}),o&&e.push({key:"method",label:"Method",value:o}),i){const t=/^\d+$/.test(i);e.push({key:"reference",label:"Reference",value:(0,_jsxRuntime.jsx)(_index8.Text,{selectable:!0,accessibilityLabel:t?i.split("").join(" "):void 0,style:N.tabular,children:i})})}void 0!==a&&e.push({key:"paidAt",label:"Date and time",value:istStamp(a)});for(const t of s??[])void 0!==t.value&&null!==t.value&&""!==t.value&&e.push(t);return e},[r,o,i,a,s,N.tabular]),F="pending"===e&&x?{key:"refresh",title:"Check status",onPress:x,icon:"refresh-cw",loading:h}:null,H=y?{key:"done",title:"Done",onPress:y}:null,U=("failed"===e&&!1===c&&f?{key:"retry",title:"Try again",onPress:f,icon:"refresh-cw"}:null)??F??H,L=H&&U!==H?{...H,variant:"ghost",tone:"neutral"}:null,B=[];return _&&B.push({key:"share",title:"Share receipt",onPress:_,icon:"share",variant:"outline",tone:"neutral"}),p&&B.push({key:"download",title:"Download",onPress:p,icon:"download",variant:"outline",tone:"neutral"}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[N.root,v],testID:j,accessibilityRole:"summary",children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:N.header,children:[(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[N.mark,{backgroundColor:I.fill},V],accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",children:(0,_jsxRuntime.jsx)(_index3.AppIcon,{name:S.icon,size:36,color:I.ink})}),(0,_jsxRuntime.jsx)(_index7.StatusBadge,{label:S.badge,tone:S.tone}),(0,_jsxRuntime.jsx)(_index8.Text,{variant:"h3",align:"center",children:P}),(0,_jsxRuntime.jsx)(_index8.Text,{variant:"h1",align:"center",style:N.tabular,children:C}),(0,_jsxRuntime.jsx)(_index8.Text,{variant:"body",color:"secondary",align:"center",children:E})]}),"pending"===e?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:N.note,children:[(0,_jsxRuntime.jsx)(_index8.Text,{variant:"bodySmall",color:"secondary",children:A}),(0,_jsxRuntime.jsx)(_index8.Text,{variant:"bodySmall",weight:"semibold",children:PENDING_WARNING}),F?(0,_jsxRuntime.jsx)(_index8.Text,{variant:"bodySmall",color:"secondary",children:REFRESH_HINT}):null]}):null,$.length>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:N.receipt,children:(0,_jsxRuntime.jsx)(_index6.Descriptions,{items:$,columns:2,bordered:!0})}):null,U||B.length>0?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:N.actions,children:[U?renderAction(U):null,B.length>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:N.pair,children:B.map(e=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:N.pairItem,children:renderAction(e)},e.key))}):null,L?renderAction(L):null]}):null,"success"===e&&g?(0,_jsxRuntime.jsx)(_index5.Confetti,{ref:w,count:60,preset:"pop"}):null]})};exports.PaymentResult=PaymentResult;const buildStyles=e=>_reactNative.StyleSheet.create({root:{gap:e.spacing.lg},header:{alignItems:"center",gap:e.spacing.sm},mark:{width:72,height:72,borderRadius:
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.PaymentResult=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated")),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index3=require("../AppIcon/index.js"),_index4=require("../Button/index.js"),_index5=require("../Confetti/index.js"),_index6=require("../Descriptions/index.js"),_index7=require("../StatusBadge/index.js"),_index8=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var n=new WeakMap,r=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var i,a,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(i=t?r:n){if(i.has(e))return i.get(e);i.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((a=(i=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?i(o,t,a):o[t]=e[t]);return o})(e,t)}const STATUS={success:{icon:"check-circle",badge:"Success",tone:"success",title:"Payment successful"},pending:{icon:"clock",badge:"Pending",tone:"neutral",title:"Payment pending"},failed:{icon:"x-circle",badge:"Failed",tone:"error",title:"Payment failed"},refunded:{icon:"refresh-cw",badge:"Refunded",tone:"info",title:"Payment refunded"}},MARK_SIZE=72,ICON_SIZE=36,TINT_OPACITY=.14,DEFAULT_REFUND_DAYS=5,CONFETTI_PIECES=60,SETTLE_WINDOW="Most payments confirm in a few minutes. Your bank can take up to 48 hours.",REFRESH_HINT="Tap Check status to see the latest.",PENDING_WARNING="Do not pay again. If money has left your account, it will either complete or come back to you.",istStamp=e=>(0,_mobileCore.formatDateTime)(e,{zone:"IST",zoneLabel:!0}),markColors=(e,t)=>{const{colors:n}=e;switch(t){case"success":return{fill:(0,_color.tintOf)(n.success,.14,n.background.secondary),ink:n.toneText.success};case"failed":return{fill:(0,_color.tintOf)(n.error,.14,n.background.secondary),ink:n.toneText.error};case"refunded":return{fill:(0,_color.tintOf)(n.info,.14,n.background.secondary),ink:n.toneText.info};default:return{fill:n.background.tertiary,ink:n.text.secondary}}},failedLead=(e,t,n,r)=>{if(!0===e){return`${t} will return to your account within ${n} working days.${r?` Reference ${r}.`:""}`}return!1===e?"No money was taken from your account. You can try again.":"We could not confirm whether money left your account. Check your bank statement before you try again."},leadFor=(e,t,n)=>{switch(e){case"success":return"Your payment has been received. Keep this receipt for your records.";case"pending":return"Your bank has not confirmed this payment yet.";case"refunded":return`${t} has been returned to your account.`;default:return n}},renderAction=e=>(0,_jsxRuntime.jsx)(_index4.Button,{title:e.title,size:"lg",fullWidth:!0,variant:e.variant,tone:e.tone,leftIcon:e.icon,loading:e.loading,onPress:e.onPress},e.key),PaymentResult=({status:e,amount:t,currency:n="INR",payee:r,reference:i,paidAt:a,method:o,rows:s,debited:c,refundDays:l=5,settlesBy:u,title:d,message:m,onShare:_,onDownload:p,onDone:y,onRetry:f,onRefresh:x,refreshing:h=!1,celebrate:g=!0,haptic:b=!0,style:v,testID:j})=>{const R=(0,_index2.useTheme)(),k=(0,_index.useReducedMotion)(),N=(0,_react.useMemo)(()=>buildStyles(R),[R]),w=(0,_react.useRef)(null),T=(0,_react.useRef)(null),S=STATUS[e],I=(0,_react.useMemo)(()=>markColors(R,e),[R,e]),P=d??S.title,C=(0,_mobileCore.formatMinor)(t,{currency:n,dropZeroDecimals:!0}),D=failedLead(c,C,l,i),E=m??leadFor(e,C,D),q=`${P}, ${C}${r&&"refunded"!==e?` to ${r}`:""}`,A=void 0===u?SETTLE_WINDOW:`Expected to settle by ${istStamp(u)}.`;(0,_react.useEffect)(()=>{T.current!==e&&(T.current=e,(0,_announce.announce)(q,{polite:"failed"!==e}),b&&("success"===e?(0,_hapticUtils.triggerHaptic)("confirm"):"failed"===e&&(0,_hapticUtils.triggerHaptic)("reject")),"success"===e&&g&&w.current?.start())},[e]);const W=(0,_reactNativeReanimated.useSharedValue)(.9),M=(0,_reactNativeReanimated.useSharedValue)(0),O=R.motion.duration.normal;(0,_react.useEffect)(()=>(k?(W.value=1,M.value=1):"success"===e?(M.value=0,M.value=(0,_reactNativeReanimated.withTiming)(1,{duration:O}),W.value=.6,W.value=(0,_reactNativeReanimated.withSpring)(1,{damping:12,stiffness:160})):(M.value=0,M.value=(0,_reactNativeReanimated.withTiming)(1,{duration:O}),W.value=.9,W.value=(0,_reactNativeReanimated.withTiming)(1,{duration:O})),()=>{(0,_reactNativeReanimated.cancelAnimation)(W),(0,_reactNativeReanimated.cancelAnimation)(M)}),[e,k,W,M,O]);const V=(0,_reactNativeReanimated.useAnimatedStyle)(()=>({opacity:M.value,transform:[{scale:W.value}]})),$=(0,_react.useMemo)(()=>{const e=[];if(r&&e.push({key:"payee",label:"Paid to",value:r}),o&&e.push({key:"method",label:"Method",value:o}),i){const t=/^\d+$/.test(i);e.push({key:"reference",label:"Reference",value:(0,_jsxRuntime.jsx)(_index8.Text,{selectable:!0,accessibilityLabel:t?i.split("").join(" "):void 0,style:N.tabular,children:i})})}void 0!==a&&e.push({key:"paidAt",label:"Date and time",value:istStamp(a)});for(const t of s??[])void 0!==t.value&&null!==t.value&&""!==t.value&&e.push(t);return e},[r,o,i,a,s,N.tabular]),F="pending"===e&&x?{key:"refresh",title:"Check status",onPress:x,icon:"refresh-cw",loading:h}:null,H=y?{key:"done",title:"Done",onPress:y}:null,U=("failed"===e&&!1===c&&f?{key:"retry",title:"Try again",onPress:f,icon:"refresh-cw"}:null)??F??H,L=H&&U!==H?{...H,variant:"ghost",tone:"neutral"}:null,B=[];return _&&B.push({key:"share",title:"Share receipt",onPress:_,icon:"share",variant:"outline",tone:"neutral"}),p&&B.push({key:"download",title:"Download",onPress:p,icon:"download",variant:"outline",tone:"neutral"}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[N.root,v],testID:j,accessibilityRole:"summary",children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:N.header,children:[(0,_jsxRuntime.jsx)(_reactNativeReanimated.default.View,{style:[N.mark,{backgroundColor:I.fill},V],accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants",children:(0,_jsxRuntime.jsx)(_index3.AppIcon,{name:S.icon,size:36,color:I.ink})}),(0,_jsxRuntime.jsx)(_index7.StatusBadge,{label:S.badge,tone:S.tone}),(0,_jsxRuntime.jsx)(_index8.Text,{variant:"h3",align:"center",children:P}),(0,_jsxRuntime.jsx)(_index8.Text,{variant:"h1",align:"center",style:N.tabular,children:C}),(0,_jsxRuntime.jsx)(_index8.Text,{variant:"body",color:"secondary",align:"center",children:E})]}),"pending"===e?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:N.note,children:[(0,_jsxRuntime.jsx)(_index8.Text,{variant:"bodySmall",color:"secondary",children:A}),(0,_jsxRuntime.jsx)(_index8.Text,{variant:"bodySmall",weight:"semibold",children:PENDING_WARNING}),F?(0,_jsxRuntime.jsx)(_index8.Text,{variant:"bodySmall",color:"secondary",children:REFRESH_HINT}):null]}):null,$.length>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:N.receipt,children:(0,_jsxRuntime.jsx)(_index6.Descriptions,{items:$,columns:2,bordered:!0})}):null,U||B.length>0?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:N.actions,children:[U?renderAction(U):null,B.length>0?(0,_jsxRuntime.jsx)(_reactNative.View,{style:N.pair,children:B.map(e=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:N.pairItem,children:renderAction(e)},e.key))}):null,L?renderAction(L):null]}):null,"success"===e&&g?(0,_jsxRuntime.jsx)(_index5.Confetti,{ref:w,count:60,preset:"pop"}):null]})};exports.PaymentResult=PaymentResult;const buildStyles=e=>_reactNative.StyleSheet.create({root:{gap:e.spacing.lg},header:{alignItems:"center",gap:e.spacing.sm},mark:{width:72,height:72,borderRadius:e.radius.pill,alignItems:"center",justifyContent:"center",marginBottom:e.spacing.xs,..._corners.smoothCorners},tabular:{fontVariant:["tabular-nums"]},note:{gap:e.spacing.xs,padding:e.spacing.md,borderRadius:e.radius.md,backgroundColor:e.colors.background.secondary,..._corners.smoothCorners},receipt:{paddingHorizontal:e.spacing.md,borderRadius:e.radius.lg,borderWidth:_reactNative.StyleSheet.hairlineWidth,borderColor:e.colors.border.secondary,backgroundColor:e.colors.background.primary,..._corners.smoothCorners},actions:{gap:e.spacing.sm},pair:{flexDirection:"row",gap:e.spacing.sm},pairItem:{flex:1}});var _default=exports.default=PaymentResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.parseE164=exports.formatE164=exports.default=exports.PhoneNumberInput=exports.DEFAULT_CALLING_CODES=exports.ALL_CALLING_CODES=void 0;var _mobileCore=require("@webority/mobile-core"),_countries=require("@webority/mobile-core/phone/countries"),_react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_index4=require("../FieldBase/index.js"),_Chevron=require("../FieldBase/Chevron.js"),_useFloatingLabel=require("../FieldBase/useFloatingLabel.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_CALLING_CODES=exports.DEFAULT_CALLING_CODES=[{iso:"IN",code:"91",label:"India"},{iso:"AE",code:"971",label:"United Arab Emirates"},{iso:"GB",code:"44",label:"United Kingdom"},{iso:"US",code:"1",label:"United States"},{iso:"CA",code:"1",label:"Canada"},{iso:"AU",code:"61",label:"Australia"},{iso:"SG",code:"65",label:"Singapore"},{iso:"SA",code:"966",label:"Saudi Arabia"}],ALL_CALLING_CODES=exports.ALL_CALLING_CODES=(0,_mobileCore.getPhoneCountries)().map(e=>({iso:e.iso,code:e.callingCode,label:_countries.PHONE_COUNTRY_NAMES[e.iso]??e.iso})).sort((e,t)=>e.label.localeCompare(t.label)),digitsOnly=e=>e.replace(/[^0-9]/g,""),formatE164=e=>`+${e.callingCode}${e.nationalNumber}`;exports.formatE164=formatE164;const parseE164=(e,t,i)=>{const o=e.replace(/[^0-9]/g,"");if(!o)return null;const n=(0,_mobileCore.splitPhoneNumber)(`+${o}`);let r=n?.callingCode,l=n?.nationalNumber??"";if(!r){const e=Array.from(new Set(t.map(e=>e.code))).sort((e,t)=>t.length-e.length);if(r=e.find(e=>o.startsWith(e)),!r)return null;l=o.slice(r.length)}const a=t.filter(e=>e.code===r),s=a.find(e=>e.iso===i)?.iso??a.find(e=>e.iso===n?.country)?.iso??n?.country??a[0]?.iso??"";return{callingCode:r,nationalNumber:l,iso:s}};exports.parseE164=parseE164;const planOf=e=>(0,_mobileCore.isSupportedCountry)(e)?e:null,PhoneNumberInput=exports.PhoneNumberInput=(0,_react.forwardRef)((e,t)=>{const{value:i,defaultValue:o,onChange:n,e164:r,onChangeE164:l,returnKeyType:a,submitBehavior:s,onSubmitEditing:u,blurOnSubmit:c,onComplete:d,onValidityChange:b,countries:m=ALL_CALLING_CODES,popularCountries:p,popularCountriesTitle:_="Popular",allCountriesTitle:f="All countries",hiddenCountries:h,showFlag:g=!0,renderFlag:x,renderCountry:C,countrySearchPlaceholder:N,showAlphabetIndex:y,defaultIso:S="IN",validation:v="any",maxLength:L,formatAsYouType:E=!0,countryLocked:I=!1,label:j,labelMode:F="top",labelStyle:O,placeholder:T="Phone number",helperText:A,error:P,invalidMessage:R,required:D,disabled:z=!1,size:w="md",variant:q,borderRadius:k,countrySheetTitle:M="Country code",haptic:V,accessibilityLabel:B,countryAccessibilityLabel:$,onFocus:G,onBlur:U,style:W,testID:H}=e,Y=(0,_index2.useTheme)(),K=(0,_react.useMemo)(()=>buildStyles(Y),[Y]),J=(0,_react.useRef)(null),Q=(0,_react.useMemo)(()=>h?.length?m.filter(e=>!h.includes(e.iso)):m,[m,h]),X=(0,_react.useMemo)(()=>{if(!p?.length)return;const e=p.map(e=>Q.find(t=>t.iso===e)).filter(e=>void 0!==e);return e.length?[{title:_,options:e},{title:f,options:Q}]:void 0},[p,_,f,Q]),Z=(0,_react.useCallback)((e,t,i)=>{if(!e)return null;if(x)return x(e);if(!g)return null;const o=(0,_mobileCore.countryFlagEmoji)(e.iso);return o?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[K.flag,{fontSize:t}],testID:i,children:o}):null},[x,g,K.flag]),ee=(0,_react.useCallback)(e=>{const t=planOf(e),i=t?(0,_mobileCore.maxNationalNumberLength)(t,!1===v?"any":v):Number.POSITIVE_INFINITY;return L?Math.min(i,L):i},[L,v]),te=(0,_react.useCallback)((e,t)=>e.slice(0,ee(t)),[ee]),ie=(0,_react.useCallback)((e,t)=>{const i=planOf(t)??void 0,o=(0,_mobileCore.splitPhoneNumber)(e,i);if(!o)return null;const n=o.country??t,r=m.find(e=>e.iso===n);return{callingCode:r?.code??o.callingCode,nationalNumber:te(o.nationalNumber,n),iso:r?.iso??n}},[m,te]),oe=(0,_react.useMemo)(()=>{const e=Q.find(e=>e.iso===S)??Q[0]??m[0],t={callingCode:e?.code??"91",nationalNumber:"",iso:e?.iso??"IN"};return"string"==typeof o?ie(o,t.iso)??t:o??t},[m,Q,S,o,ie]),ne=(0,_react.useCallback)(e=>{if(!1===v)return e.nationalNumber.length>0;const t=planOf(e.iso);return t?(0,_mobileCore.isValidNationalNumber)(e.nationalNumber,t,v):e.nationalNumber.length>0},[v]),[re,le]=(0,_react.useState)(oe.iso),ae=(0,_react.useMemo)(()=>{if(void 0===r)return;const e=r?parseE164(r,m,re):null;if(e)return{...e,nationalNumber:te(e.nationalNumber,e.iso)};const t=m.find(e=>e.iso===re);return{callingCode:t?.code??oe.callingCode,nationalNumber:"",iso:re}},[r,m,re,oe.callingCode,te]),se=(0,_react.useCallback)(e=>{le(e.iso),n?.(e),l?.(e.nationalNumber?formatE164(e):"",{country:m.find(t=>t.iso===e.iso),national:e.nationalNumber,valid:ne(e)})},[n,l,m,ne]),[ue,ce]=(0,_index.useControllableState)({value:i??ae,defaultValue:oe,onChange:se}),[de,be]=(0,_react.useState)(!1),me=(0,_react.useCallback)(()=>{z||J.current?.focus()},[z]),[pe,fe]=(0,_react.useState)(!1),[he,ge]=(0,_react.useState)(!1),[xe,Ce]=(0,_react.useState)(!1),Ne=(0,_react.useRef)(!1);(0,_react.useEffect)(()=>{xe||(Ne.current=!1)},[xe]);const ye=(0,_index4.resolveFieldSize)(Y,w),Se=(0,_index4.resolveFieldTextStyle)(Y,{disabled:z}),ve=q??Y.components.field?.defaultVariant??"outlined",Le="underline"===ve,Ee=k??Y.components.phoneNumberInput?.borderRadius,Ie=Y.spacing.md,[je,Fe]=(0,_react.useState)(0),Oe=je+Ie+1+Ie,Te=ue.nationalNumber.length>0,Ae=D&&!j&&!Te&&T.length>0,Pe=de||Te,Re=Boolean(j)&&"float"===F&&je>0,De=(0,_useFloatingLabel.useFloatingLabel)({label:j,enabled:Re,floated:Pe,required:D,variant:ve,sizeTokens:ye,leadingOffset:Oe,paddingLeft:Le?0:ye.paddingHorizontal,color:Y.colors.field.label,style:O}),ze=(0,_react.useMemo)(()=>m.find(e=>e.iso===ue.iso),[m,ue.iso]),we=planOf(ue.iso),qe=E&&we?(0,_mobileCore.formatPhoneAsTyped)(ue.nationalNumber,we):ue.nationalNumber,ke=ee(ue.iso),Me=0===ue.nationalNumber.length||pe||!Number.isFinite(ke)?void 0:qe.length+Math.max(0,ke-ue.nationalNumber.length),Ve=ne(ue);(0,_react.useEffect)(()=>{Te||ge(!1)},[Te]);const Be=we?(0,_mobileCore.maxNationalNumberLength)(we,!1===v?"any":v):Number.POSITIVE_INFINITY,$e=ue.nationalNumber.length>=Be,Ge=!1!==v&&!1!==R&&Te&&!Ve&&(he||$e),Ue="mobile"===v?"Enter a valid mobile number":"Enter a valid number",We=(0,_index4.hasFieldText)(P)?P:Ge?R||Ue:void 0,He=!0===P||(0,_index4.hasFieldText)(We),Ye=(0,_react.useRef)(Ve),Ke=(0,_react.useRef)(ue);Ke.current=ue,(0,_react.useEffect)(()=>{Ye.current!==Ve&&(Ye.current=Ve,b?.(Ve),Ve&&d?.(formatE164(Ke.current)))},[Ve,d,b]);const Je=(0,_react.useCallback)(e=>{if(e.includes("+")){const t=ie(e,ue.iso);if(t&&!I&&Q.some(e=>e.iso===t.iso))return void ce(t);if(t&&t.iso===ue.iso)return void ce(t)}ce({...ue,nationalNumber:te(digitsOnly(e),ue.iso)})},[Q,I,ue,ie,te,ce]),Qe=(0,_react.useCallback)(e=>{const t=e;ce({callingCode:t.code,iso:t.iso,nationalNumber:te(ue.nationalNumber,t.iso)}),Ce(!1);const i=(0,_index3.resolveHaptic)(V,"selection");i&&(0,_index3.triggerHaptic)(i)},[ue,V,te,ce]);(0,_react.useImperativeHandle)(t,()=>({focus:()=>J.current?.focus(),blur:()=>J.current?.blur(),clear:()=>ce({...Ke.current,nationalNumber:""}),isFocused:()=>J.current?.isFocused()??!1,getValue:()=>Ke.current,getE164:()=>formatE164(Ke.current),getFormatted:()=>{const e=Ke.current,t=planOf(e.iso);return t?(0,_mobileCore.formatPhoneAsTyped)(e.nationalNumber,t):e.nationalNumber},isValid:()=>ne(Ke.current),getCountry:()=>m.find(e=>e.iso===Ke.current.iso)}),[m,ne,ce]);const Xe=z||I,Ze=(0,_jsxRuntime.jsx)(_index4.FieldBase,{size:w,variant:ve,borderRadius:Ee,topNotch:De.topNotch,focused:de,disabled:z,error:He,filled:Te,onPress:me,pressFeedback:!1,leadingDivider:!0,paddingLeft:Le?0:void 0,leading:(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>{Xe||(Ne.current=!0,Ce(!0))},disabled:Xe,accessibilityRole:"button",accessibilityLabel:$??`Country code, currently +${ue.callingCode}`,accessibilityState:{disabled:Xe},"aria-disabled":Xe,hitSlop:6,onLayout:e=>{const{width:t}=e.nativeEvent.layout;Fe(e=>e===t?e:t)},style:K.codeTrigger,testID:H?`${H}-code`:void 0,children:[Z(ze,ye.fontSize,H?`${H}-flag`:void 0),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[K.codeText,{color:Se.color,fontSize:ye.fontSize}],children:`+${ue.callingCode}`}),I?null:(0,_jsxRuntime.jsx)(_Chevron.Chevron,{color:z?Y.colors.field.iconDisabled:Y.colors.field.icon,size:ye.iconSize,open:xe})]}),children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:K.inputWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:J,value:qe,maxLength:Me,onChangeText:Je,returnKeyType:a,submitBehavior:s,onSubmitEditing:u,blurOnSubmit:c,onSelectionChange:e=>{const{start:t,end:i}=e.nativeEvent.selection;fe(t!==i)},onFocus:()=>{be(!0),G?.()},onBlur:()=>{be(!1),Te&&!Ne.current&&ge(!0),U?.()},editable:!z,placeholder:Re&&!Pe||Ae?void 0:T,placeholderTextColor:Se.placeholderColor,accessibilityLabel:B??j??T,selectionColor:Y.colors.field.caret,keyboardType:"phone-pad",textContentType:"telephoneNumber",autoComplete:"tel",style:[K.input,{color:Se.color,fontSize:ye.fontSize,...Se.weightStyle,paddingLeft:Le?0:void 0}],testID:H?`${H}-input`:void 0}),Ae?(0,_jsxRuntime.jsx)(_index4.RequiredPlaceholder,{text:T,color:Se.placeholderColor,fontSize:ye.fontSize,weightStyle:Se.weightStyle}):null]})});return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W,testID:H,children:[j&&"top"===F?(0,_jsxRuntime.jsx)(_index4.FieldLabel,{size:w,required:D,children:j}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:K.fieldWrapper,children:[Ze,De.node]}),(0,_jsxRuntime.jsx)(_index4.FieldMessage,{size:w,error:He,text:He?We:A}),(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:xe,onClose:()=>Ce(!1),title:M,options:Q,sections:X,labelOf:e=>`${e.label} (+${e.code})`,getValue:e=>e.iso,disabledOf:()=>!1,descriptionOf:()=>{},iconOf:e=>Z(e,Y.typography.fontSize.lg),renderOption:C?(e,t)=>C(e,{selected:t.selected}):void 0,isSelected:e=>e===ze?.iso,onSelect:Qe,searchable:Q.length>8,searchPlaceholder:N,alphabetIndex:y??Q.length>20})]})});PhoneNumberInput.displayName="PhoneNumberInput";const buildStyles=e=>_reactNative.StyleSheet.create({fieldWrapper:{position:"relative",overflow:"visible"},codeTrigger:{flexDirection:"row",alignItems:"center",gap:2},flag:{includeFontPadding:!1,marginRight:4},codeText:{...(0,_index2.fontFor)(e,"semibold"),fontWeight:"600",includeFontPadding:!1,writingDirection:"ltr"},input:{padding:0,margin:0,includeFontPadding:!1,writingDirection:"ltr"},inputWrap:{flex:1,alignSelf:"stretch",justifyContent:"center"}});var _default=exports.default=PhoneNumberInput;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.parseE164=exports.formatE164=exports.default=exports.PhoneNumberInput=exports.DEFAULT_CALLING_CODES=exports.ALL_CALLING_CODES=void 0;var _mobileCore=require("@webority/mobile-core"),_countries=require("@webority/mobile-core/phone/countries"),_react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_index4=require("../FieldBase/index.js"),_Chevron=require("../FieldBase/Chevron.js"),_useFloatingLabel=require("../FieldBase/useFloatingLabel.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_CALLING_CODES=exports.DEFAULT_CALLING_CODES=[{iso:"IN",code:"91",label:"India"},{iso:"AE",code:"971",label:"United Arab Emirates"},{iso:"GB",code:"44",label:"United Kingdom"},{iso:"US",code:"1",label:"United States"},{iso:"CA",code:"1",label:"Canada"},{iso:"AU",code:"61",label:"Australia"},{iso:"SG",code:"65",label:"Singapore"},{iso:"SA",code:"966",label:"Saudi Arabia"}],ALL_CALLING_CODES=exports.ALL_CALLING_CODES=(0,_mobileCore.getPhoneCountries)().map(e=>({iso:e.iso,code:e.callingCode,label:_countries.PHONE_COUNTRY_NAMES[e.iso]??e.iso})).sort((e,t)=>e.label.localeCompare(t.label)),digitsOnly=e=>e.replace(/[^0-9]/g,""),formatE164=e=>`+${e.callingCode}${e.nationalNumber}`;exports.formatE164=formatE164;const parseE164=(e,t,i)=>{const n=e.replace(/[^0-9]/g,"");if(!n)return null;const o=(0,_mobileCore.splitPhoneNumber)(`+${n}`);let r=o?.callingCode,l=o?.nationalNumber??"";if(!r){const e=Array.from(new Set(t.map(e=>e.code))).sort((e,t)=>t.length-e.length);if(r=e.find(e=>n.startsWith(e)),!r)return null;l=n.slice(r.length)}const a=t.filter(e=>e.code===r),s=a.find(e=>e.iso===i)?.iso??a.find(e=>e.iso===o?.country)?.iso??o?.country??a[0]?.iso??"";return{callingCode:r,nationalNumber:l,iso:s}};exports.parseE164=parseE164;const planOf=e=>(0,_mobileCore.isSupportedCountry)(e)?e:null,PhoneNumberInput=exports.PhoneNumberInput=(0,_react.forwardRef)((e,t)=>{const{value:i,defaultValue:n,onChange:o,e164:r,onChangeE164:l,returnKeyType:a,submitBehavior:s,onSubmitEditing:u,blurOnSubmit:c,onComplete:d,onValidityChange:b,countries:m=ALL_CALLING_CODES,popularCountries:p,popularCountriesTitle:_="Popular",allCountriesTitle:g="All countries",hiddenCountries:f,showFlag:h=!0,renderFlag:x,renderCountry:C,countrySearchPlaceholder:N,showAlphabetIndex:y,defaultIso:v="IN",validation:S="any",maxLength:L,formatAsYouType:E=!0,countryLocked:j=!1,label:I,labelMode:F="top",labelStyle:O,placeholder:T="Phone number",helperText:A,error:P,invalidMessage:R,required:D,disabled:w=!1,size:q="md",variant:k,borderRadius:M,countrySheetTitle:V="Country code",haptic:z,accessibilityLabel:B,countryAccessibilityLabel:$,onFocus:G,onBlur:U,style:W,testID:H}=e,Y=(0,_index2.useTheme)(),K=(0,_react.useMemo)(()=>buildStyles(Y),[Y]),X=(0,_react.useRef)(null),J=(0,_react.useMemo)(()=>f?.length?m.filter(e=>!f.includes(e.iso)):m,[m,f]),Q=(0,_react.useMemo)(()=>{if(!p?.length)return;const e=p.map(e=>J.find(t=>t.iso===e)).filter(e=>void 0!==e);return e.length?[{title:_,options:e},{title:g,options:J}]:void 0},[p,_,g,J]),Z=(0,_react.useCallback)((e,t,i)=>{if(!e)return null;if(x)return x(e);if(!h)return null;const n=(0,_mobileCore.countryFlagEmoji)(e.iso);return n?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[K.flag,{fontSize:t}],testID:i,children:n}):null},[x,h,K.flag]),ee=(0,_react.useCallback)(e=>{const t=planOf(e),i=t?(0,_mobileCore.maxNationalNumberLength)(t,!1===S?"any":S):Number.POSITIVE_INFINITY;return L?Math.min(i,L):i},[L,S]),te=(0,_react.useCallback)((e,t)=>e.slice(0,ee(t)),[ee]),ie=(0,_react.useCallback)((e,t)=>{const i=planOf(t)??void 0,n=(0,_mobileCore.splitPhoneNumber)(e,i);if(!n)return null;const o=n.country??t,r=m.find(e=>e.iso===o);return{callingCode:r?.code??n.callingCode,nationalNumber:te(n.nationalNumber,o),iso:r?.iso??o}},[m,te]),ne=(0,_react.useMemo)(()=>{const e=J.find(e=>e.iso===v)??J[0]??m[0],t={callingCode:e?.code??"91",nationalNumber:"",iso:e?.iso??"IN"};return"string"==typeof n?ie(n,t.iso)??t:n??t},[m,J,v,n,ie]),oe=(0,_react.useCallback)(e=>{if(!1===S)return e.nationalNumber.length>0;const t=planOf(e.iso);return t?(0,_mobileCore.isValidNationalNumber)(e.nationalNumber,t,S):e.nationalNumber.length>0},[S]),[re,le]=(0,_react.useState)(ne.iso),ae=(0,_react.useMemo)(()=>{if(void 0===r)return;const e=r?parseE164(r,m,re):null;if(e)return{...e,nationalNumber:te(e.nationalNumber,e.iso)};const t=m.find(e=>e.iso===re);return{callingCode:t?.code??ne.callingCode,nationalNumber:"",iso:re}},[r,m,re,ne.callingCode,te]),se=(0,_react.useCallback)(e=>{le(e.iso),o?.(e),l?.(e.nationalNumber?formatE164(e):"",{country:m.find(t=>t.iso===e.iso),national:e.nationalNumber,valid:oe(e)})},[o,l,m,oe]),[ue,ce]=(0,_index.useControllableState)({value:i??ae,defaultValue:ne,onChange:se}),[de,be]=(0,_react.useState)(!1),me=(0,_react.useCallback)(()=>{w||X.current?.focus()},[w]),[pe,ge]=(0,_react.useState)(!1),[fe,he]=(0,_react.useState)(!1),[xe,Ce]=(0,_react.useState)(!1),Ne=(0,_react.useRef)(!1);(0,_react.useEffect)(()=>{xe||(Ne.current=!1)},[xe]);const ye=(0,_index2.resolveFieldSize)(Y,q),ve=(0,_index4.resolveFieldTextStyle)(Y,{disabled:w}),Se=k??Y.components.field?.defaultVariant??"outlined",Le="underline"===Se,Ee=M??ye.radius,je=Y.spacing.md,[Ie,Fe]=(0,_react.useState)(0),Oe=Ie+je+1+je,Te=ue.nationalNumber.length>0,Ae=D&&!I&&!Te&&T.length>0,Pe=de||Te,Re=Boolean(I)&&"float"===F&&Ie>0,De=(0,_useFloatingLabel.useFloatingLabel)({label:I,enabled:Re,floated:Pe,required:D,variant:Se,sizeTokens:ye,leadingOffset:Oe,paddingLeft:Le?Y.spacing.none:ye.paddingX,color:Y.colors.field.label,style:O}),we=(0,_react.useMemo)(()=>m.find(e=>e.iso===ue.iso),[m,ue.iso]),qe=planOf(ue.iso),ke=E&&qe?(0,_mobileCore.formatPhoneAsTyped)(ue.nationalNumber,qe):ue.nationalNumber,Me=ee(ue.iso),Ve=0===ue.nationalNumber.length||pe||!Number.isFinite(Me)?void 0:ke.length+Math.max(0,Me-ue.nationalNumber.length),ze=oe(ue);(0,_react.useEffect)(()=>{Te||he(!1)},[Te]);const Be=qe?(0,_mobileCore.maxNationalNumberLength)(qe,!1===S?"any":S):Number.POSITIVE_INFINITY,$e=ue.nationalNumber.length>=Be,Ge=!1!==S&&!1!==R&&Te&&!ze&&(fe||$e),Ue="mobile"===S?"Enter a valid mobile number":"Enter a valid number",We=(0,_index4.hasFieldText)(P)?P:Ge?R||Ue:void 0,He=!0===P||(0,_index4.hasFieldText)(We),Ye=(0,_react.useRef)(ze),Ke=(0,_react.useRef)(ue);Ke.current=ue,(0,_react.useEffect)(()=>{Ye.current!==ze&&(Ye.current=ze,b?.(ze),ze&&d?.(formatE164(Ke.current)))},[ze,d,b]);const Xe=(0,_react.useCallback)(e=>{if(e.includes("+")){const t=ie(e,ue.iso);if(t&&!j&&J.some(e=>e.iso===t.iso))return void ce(t);if(t&&t.iso===ue.iso)return void ce(t)}ce({...ue,nationalNumber:te(digitsOnly(e),ue.iso)})},[J,j,ue,ie,te,ce]),Je=(0,_react.useCallback)(e=>{const t=e;ce({callingCode:t.code,iso:t.iso,nationalNumber:te(ue.nationalNumber,t.iso)}),Ce(!1);const i=(0,_index3.resolveHaptic)(z,"selection");i&&(0,_index3.triggerHaptic)(i)},[ue,z,te,ce]);(0,_react.useImperativeHandle)(t,()=>({focus:()=>X.current?.focus(),blur:()=>X.current?.blur(),clear:()=>ce({...Ke.current,nationalNumber:""}),isFocused:()=>X.current?.isFocused()??!1,getValue:()=>Ke.current,getE164:()=>formatE164(Ke.current),getFormatted:()=>{const e=Ke.current,t=planOf(e.iso);return t?(0,_mobileCore.formatPhoneAsTyped)(e.nationalNumber,t):e.nationalNumber},isValid:()=>oe(Ke.current),getCountry:()=>m.find(e=>e.iso===Ke.current.iso)}),[m,oe,ce]);const Qe=w||j,Ze=(0,_jsxRuntime.jsx)(_index4.FieldBase,{size:q,variant:Se,borderRadius:Ee,topNotch:De.topNotch,focused:de,disabled:w,error:He,filled:Te,onPress:me,pressFeedback:!1,leadingDivider:!0,paddingLeft:Le?Y.spacing.none:void 0,leading:(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>{Qe||(Ne.current=!0,Ce(!0))},disabled:Qe,accessibilityRole:"button",accessibilityLabel:$??`Country code, currently +${ue.callingCode}`,accessibilityState:{disabled:Qe},"aria-disabled":Qe,hitSlop:6,onLayout:e=>{const{width:t}=e.nativeEvent.layout;Fe(e=>e===t?e:t)},style:K.codeTrigger,testID:H?`${H}-code`:void 0,children:[Z(we,ye.text,H?`${H}-flag`:void 0),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[K.codeText,{color:ve.color,fontSize:ye.text}],children:`+${ue.callingCode}`}),j?null:(0,_jsxRuntime.jsx)(_Chevron.Chevron,{color:w?Y.colors.field.iconDisabled:Y.colors.field.icon,size:ye.icon,open:xe})]}),children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:K.inputWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:X,value:ke,maxLength:Ve,onChangeText:Xe,returnKeyType:a,submitBehavior:s,onSubmitEditing:u,blurOnSubmit:c,onSelectionChange:e=>{const{start:t,end:i}=e.nativeEvent.selection;ge(t!==i)},onFocus:()=>{be(!0),G?.()},onBlur:()=>{be(!1),Te&&!Ne.current&&he(!0),U?.()},editable:!w,placeholder:Re&&!Pe||Ae?void 0:T,placeholderTextColor:ve.placeholderColor,accessibilityLabel:B??I??T,selectionColor:Y.colors.field.caret,keyboardType:"phone-pad",textContentType:"telephoneNumber",autoComplete:"tel",style:[K.input,{color:ve.color,fontSize:ye.text,...ve.weightStyle,paddingLeft:Le?Y.spacing.none:void 0}],testID:H?`${H}-input`:void 0}),Ae?(0,_jsxRuntime.jsx)(_index4.RequiredPlaceholder,{text:T,color:ve.placeholderColor,fontSize:ye.text,weightStyle:ve.weightStyle}):null]})});return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:W,testID:H,children:[I&&"top"===F?(0,_jsxRuntime.jsx)(_index4.FieldLabel,{size:q,required:D,children:I}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:K.fieldWrapper,children:[Ze,De.node]}),(0,_jsxRuntime.jsx)(_index4.FieldMessage,{size:q,error:He,text:He?We:A}),(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:xe,onClose:()=>Ce(!1),title:V,options:J,sections:Q,labelOf:e=>`${e.label} (+${e.code})`,getValue:e=>e.iso,disabledOf:()=>!1,descriptionOf:()=>{},iconOf:e=>Z(e,Y.typography.fontSize.lg),renderOption:C?(e,t)=>C(e,{selected:t.selected}):void 0,isSelected:e=>e===we?.iso,onSelect:Je,searchable:J.length>8,searchPlaceholder:N,alphabetIndex:y??J.length>20})]})});PhoneNumberInput.displayName="PhoneNumberInput";const buildStyles=e=>_reactNative.StyleSheet.create({fieldWrapper:{position:"relative",overflow:"visible"},codeTrigger:{flexDirection:"row",alignItems:"center",gap:e.spacing.xxs},flag:{includeFontPadding:!1,marginRight:e.spacing.xs},codeText:{...(0,_index2.fontFor)(e,"semibold"),fontWeight:"600",includeFontPadding:!1,writingDirection:"ltr"},input:{padding:e.spacing.none,margin:e.spacing.none,includeFontPadding:!1,writingDirection:"ltr"},inputWrap:{flex:1,alignSelf:"stretch",justifyContent:"center"}});var _default=exports.default=PhoneNumberInput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.PickerTrigger=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../FieldBase/index.js"),_Chevron=require("../FieldBase/Chevron.js"),_jsxRuntime=require("react/jsx-runtime");const PickerTrigger=exports.PickerTrigger=(0,_react.forwardRef)((e,i)=>{const{value:t,placeholder:r,label:l,help:s,helperText:n,error:a,required:d=!1,onPress:o,clearable:c=!1,onClear:x,leadingIcon:u,trailing:_,disabled:g=!1,size:y="md",variant:b,style:v,triggerStyle:j,valueStyle:h,labelStyle:m,messageStyle:S,accessibilityLabel:R,testID:T}=e,
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.PickerTrigger=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../FieldBase/index.js"),_Chevron=require("../FieldBase/Chevron.js"),_jsxRuntime=require("react/jsx-runtime");const PickerTrigger=exports.PickerTrigger=(0,_react.forwardRef)((e,i)=>{const{value:t,placeholder:r,label:l,help:s,helperText:n,error:a,required:d=!1,onPress:o,clearable:c=!1,onClear:x,leadingIcon:u,trailing:_,disabled:g=!1,size:y="md",variant:b,style:v,triggerStyle:j,valueStyle:h,labelStyle:m,messageStyle:S,accessibilityLabel:R,testID:T}=e,p=(0,_index.useTheme)(),f=(0,_react.useMemo)(()=>buildStyles(p),[p]),P=(0,_index.resolveFieldSize)(p,y),F=(0,_index2.resolveFieldTextStyle)(p,{disabled:g}),q="string"==typeof t&&t.length>0,z=!0===a||(0,_index2.hasFieldText)(a),w=(0,_index2.hasFieldText)(l),N=q?t:r??"Select…",k=q?F.color:F.placeholderColor,C=q?`${(0,_index2.fieldTextAsString)(l)??"Selection"}: ${t}`:r??"No selection",L=R??C,I={disabled:g},M=void 0===_,B=c&&q&&!g;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[f.root,v],testID:T,children:[w?(0,_jsxRuntime.jsx)(_index2.FieldLabel,{size:y,required:d,help:s,style:m,children:l}):null,(0,_jsxRuntime.jsx)(_index2.FieldBase,{size:y,variant:b,disabled:g,error:z,filled:q,onPress:o,leading:u,trailing:B||M||null!==_?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:f.trailingRow,children:[B?(0,_jsxRuntime.jsx)(_reactNative.Text,{onPress:()=>{g||x?.()},accessibilityRole:"button",accessibilityLabel:"Clear",style:{fontSize:P.icon,color:p.colors.text.secondary,paddingHorizontal:p.spacing.xs},children:"×"}):null,void 0!==_?_:M?(0,_jsxRuntime.jsx)(_Chevron.Chevron,{size:P.icon,color:g?p.colors.text.disabled:p.colors.text.tertiary}):null]}):null,accessibilityLabel:L,accessibilityState:I,accessibilityRole:"button",style:j,children:(0,_jsxRuntime.jsxs)(_reactNative.Text,{numberOfLines:1,style:[f.valueText,{color:k,fontSize:P.text,...F.weightStyle},h],children:[N,q||!d||w?null:(0,_jsxRuntime.jsx)(_index2.RequiredMark,{})]})}),(0,_jsxRuntime.jsx)(_index2.FieldMessage,{size:y,error:z,text:z?a:n,style:S})]})});PickerTrigger.displayName="PickerTrigger";const buildStyles=e=>_reactNative.StyleSheet.create({root:{width:"100%"},label:{includeFontPadding:!1},valueText:{flex:1,includeFontPadding:!1},message:{includeFontPadding:!1},trailingRow:{flexDirection:"row",alignItems:"center"}});var _default=exports.default=PickerTrigger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ProfileCompletion=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_index2=require("../AppIcon/index.js"),_index3=require("../Avatar/index.js"),_index4=require("../ProgressRing/index.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_AVATAR_SIZE=56,DEFAULT_RING_WIDTH=3,DEFAULT_RING_GAP=1,ProfileCompletion=exports.ProfileCompletion=(0,_react.forwardRef)((e,t)=>{const{progress:
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ProfileCompletion=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_index2=require("../AppIcon/index.js"),_index3=require("../Avatar/index.js"),_index4=require("../ProgressRing/index.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_AVATAR_SIZE=56,DEFAULT_RING_WIDTH=3,DEFAULT_RING_GAP=1,ProfileCompletion=exports.ProfileCompletion=(0,_react.forwardRef)((e,t)=>{const{progress:i,title:r,subtitle:o,description:n,source:s,ImageComponent:a,size:l=DEFAULT_AVATAR_SIZE,avatarTone:c="neutral",avatarBackgroundColor:d,avatarColor:u,ringWidth:m,ringGap:x=DEFAULT_RING_GAP,ringVariant:p="banded",tone:_,ringColor:g,animated:y=!0,showCompleteBadge:h=!0,trailing:f,accessibilityLabel:b,style:j,titleStyle:v,subtitleStyle:R,descriptionStyle:S,testID:I}=e,N=(0,_index.useTheme)(),w=(0,_react.useMemo)(()=>buildStyles(N),[N]),A=m??N.components.progressRing?.strokeWidth??3,C=l+2*(x+A),T=Math.min(100,Math.max(0,Number.isNaN(i)?0:i)),D=Math.round(T),P=b??`${r}, profile ${D}% complete`,z=I??"profile-completion",L=h&&T>=100,V=Math.max(16,Math.round(.3*C)),G=C/2*(1+Math.SQRT1_2)-A/2,q=g??("banded"===p&&null==_||"success"===_?N.colors.success:"warning"===_?N.colors.warning:"error"===_?N.colors.error:N.colors.primary);return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,style:[w.root,j],testID:I,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:w.summary,accessible:!0,accessibilityRole:"summary",accessibilityLabel:P,accessibilityValue:{min:0,max:100,now:D},testID:`${z}-summary`,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{width:C,height:C},children:[(0,_jsxRuntime.jsx)(_index4.ProgressRing,{progress:T/100,size:C,strokeWidth:A,tone:_??"primary",ringColor:g,colorByProgress:"banded"===p&&null==_&&null==g,animated:y,testID:`${z}-ring`,children:(0,_jsxRuntime.jsx)(_index3.Avatar,{name:r,source:s,ImageComponent:a,size:l,tone:c,backgroundColor:d,color:u,accessibilityLabel:`${r}'s avatar`})}),L?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[w.badge,{width:V,height:V,borderRadius:N.radius.pill,..._corners.smoothCorners,left:G-V/2,top:G-V/2,backgroundColor:N.colors.background.elevated}],testID:`${z}-complete-badge`,children:(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:"verify",variant:"bold",size:V-2,color:q})}):null]}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:w.body,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[w.title,v],numberOfLines:2,children:r}),o?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[w.subtitle,R],numberOfLines:1,children:o}):null,n?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[w.description,S],children:n}):null]})]}),null!=f?(0,_jsxRuntime.jsx)(_reactNative.View,{style:w.trailing,children:f}):null]})});ProfileCompletion.displayName="ProfileCompletion";const buildStyles=e=>_reactNative.StyleSheet.create({root:{flexDirection:"row",alignItems:"center",columnGap:e.spacing.md},summary:{flex:1,flexDirection:"row",alignItems:"center",columnGap:e.spacing.md},body:{flex:1,rowGap:e.spacing.xxs},badge:{position:"absolute",alignItems:"center",justifyContent:"center"},title:{fontSize:e.typography.fontSize.xl,lineHeight:e.typography.fontSize.xl*e.typography.lineHeight.tight,color:e.colors.text.primary,...(0,_index.fontFor)(e,"semibold")},subtitle:{fontSize:e.typography.fontSize.sm,color:e.colors.text.tertiary,textTransform:"uppercase",letterSpacing:e.typography.letterSpacing.wide,...(0,_index.fontFor)(e,"medium")},description:{fontSize:e.typography.fontSize.base,color:e.colors.text.secondary,...(0,_index.fontFor)(e,"normal")},trailing:{alignSelf:"flex-start"}});var _default=exports.default=ProfileCompletion;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ProfilePicker=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_index3=require("../AppIcon/index.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index4=require("../Avatar/index.js"),_index5=require("../FieldBase/index.js"),_FilePicker=require("../FilePicker/FilePicker.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_index6=require("../Spinner/index.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_LABELS={pick:"Change profile photo",remove:"Remove photo",sheetTitle:"Change photo",errorTooLarge:e=>`The photo is larger than ${e} MB.`,errorWrongType:"That file is not a supported image."},DEFAULT_ACCEPT=["image/*"],SHEET_ICON_SIZE=20,SOFT_FILL_OPACITY=.14,SIZE_PX={sm:72,md:120,lg:160},clamp=(e,r,t)=>Math.min(t,Math.max(r,e)),toneFor=(e,r)=>{switch(r){case"success":return{base:e.colors.success,on:e.colors.onSuccess};case"warning":return{base:e.colors.warning,on:e.colors.onWarning};case"error":return{base:e.colors.error,on:e.colors.onError};case"info":return{base:e.colors.info,on:e.colors.onInfo};case"neutral":return{base:e.colors.text.secondary,on:e.colors.onNeutral};default:return{base:e.colors.primary,on:e.colors.onPrimary}}},badgeLookFor=(e,r,t,o)=>{const i=toneFor(e,r),n=o?.badgeColor??i.base,s=e.colors.background.primary,l="neutral"===r&&void 0===o?.badgeColor;let a;switch(t){case"soft":a={fill:l?e.colors.background.tertiary:(0,_color.blendOf)(n,.14,s,e.colors.background.secondary),ring:s,icon:n};break;case"outline":a={fill:s,ring:l?e.colors.border.primary:n,icon:n};break;default:a={fill:n,ring:s,icon:i.on}}return o?.badgeIconColor?{...a,icon:o.badgeIconColor}:a},resolveRadius=(e,r)=>"circle"===e?r/2:"rounded"===e?Math.max(6,Math.round(.22*r)):0,REMOVE_VALUE="__profile-picker-remove__",ProfilePicker=exports.ProfilePicker=(0,_react.forwardRef)((e,r)=>{const{value:t,name:o,sources:i,onPick:n,onRemove:s,loading:l=!1,disabled:a=!1,accept:c=DEFAULT_ACCEPT,maxSizeMB:u,size:d="md",shape:_="circle",badgeIcon:m="camera",tone:x,variant:p,avatarTone:b,avatarBackgroundColor:g,avatarColor:h,label:y,required:f=!1,helperText:v,error:j,layout:k="stacked",title:C,subtitle:S,ImageComponent:R,labels:I,haptic:T,onError:P,accessibilityLabel:F,style:E,testID:w}=e,A=(0,_index.useTheme)(),L=A.components.profilePicker,M=x??L?.defaultTone??"primary",O=p??L?.defaultVariant??"solid",q=(0,_react.useMemo)(()=>badgeLookFor(A,M,O,L),[A,M,O,L]),N=b??L?.defaultAvatarTone,z=(0,_react.useMemo)(()=>{const e=N?(0,_index4.avatarToneColors)(A,N):null;return{background:g??e?.background??A.colors.background.tertiary,icon:h??e?.color??A.colors.text.tertiary}},[A,N,g,h]),V=(0,_react.useMemo)(()=>({...DEFAULT_LABELS,...I}),[I]),[D,B]=(0,_react.useState)(null),[H,U]=(0,_react.useState)(null),[W,$]=(0,_react.useState)(!1),[Z,G]=(0,_react.useState)(t);t!==Z&&(G(t),B(null));const X=l||a,Q=D??t??null,Y=j??H??void 0,J=!X&&(null!==D||Boolean(t)&&Boolean(s)),K=i.length>0||J,ee="number"==typeof d?d:SIZE_PX[d],re=resolveRadius(_,ee),te=re*(1-Math.SQRT1_2),oe=clamp(Math.round(.28*ee),24,44),ie=te-oe/2,ne=Math.max(0,-ie),se=(0,_react.useCallback)(e=>{U(e),P?.(e),!1!==T&&(0,_index2.triggerHaptic)("notificationError")},[P,T]),le=(0,_react.useCallback)(async e=>{let r;try{r=await e.pick()}catch(e){return void se(e instanceof Error?e.message:String(e))}const t=r?.[0];if(!t)return;if("number"==typeof u&&"number"==typeof t.size&&t.size>1024*u*1024)return void se(V.errorTooLarge(u));if(t.type&&!(0,_FilePicker.matchesAccept)(t.type,c))return void se(V.errorWrongType);U(null),B(t.uri);const o=(0,_index2.resolveHaptic)(T,"selection");o&&(0,_index2.triggerHaptic)(o),n?.(t)},[u,c,V,T,n,se]),ae=(0,_react.useCallback)(()=>{X||(de.current=null,1!==i.length||J?(i.length>0||J)&&$(!0):le(i[0]))},[X,i,J,le]),ce=(0,_react.useCallback)(()=>{B(null),U(null);const e=(0,_index2.resolveHaptic)(T,"selection");e&&(0,_index2.triggerHaptic)(e),s?.()},[T,s]),ue=(0,_react.useMemo)(()=>{const e=i.map(e=>({kind:"source",source:e}));return J&&e.push({kind:"remove"}),e},[i,J]),de=(0,_react.useRef)(null),me=(0,_react.useCallback)(e=>{de.current||($(!1),"remove"===e.kind?ce():de.current=e.source)},[ce]),xe=(0,_react.useCallback)(()=>{const e=de.current;de.current=null,e&&le(e)},[le]),pe=w??"profile-picker",be=F??(K?V.pick:o),ge=(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.fill,{width:ee,height:ee,borderRadius:re,..._corners.smoothCorners,backgroundColor:z.background}],children:(0,_jsxRuntime.jsx)(_index3.AppIcon,{name:"user",size:Math.round(.45*ee),color:z.icon})}),he=(0,_jsxRuntime.jsx)(_reactNative.View,{style:{width:ee,height:ee,marginBottom:ne,marginRight:ne},children:(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:ae,disabled:X||!K,accessibilityRole:K?"button":"image",accessibilityLabel:be,accessibilityHint:(0,_index5.fieldTextAsString)(Y),accessibilityState:K?{disabled:X,busy:l}:{busy:l},"aria-disabled":K?X:void 0,"aria-busy":l,testID:`${pe}-button`,style:({pressed:e})=>[{width:ee,height:ee,borderRadius:re,..._corners.smoothCorners},{opacity:a?.55:e?.85:1}],children:[Q||o?(0,_jsxRuntime.jsx)(_index4.Avatar,{source:Q?{uri:Q}:void 0,name:o,size:ee,shape:_,tone:N,backgroundColor:g,color:h,ImageComponent:R,accessibilityLabel:be},Q??"initials"):ge,l?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.fill,styles.overlay,{borderRadius:re,..._corners.smoothCorners,backgroundColor:A.colors.background.overlay}],testID:`${pe}-loading`,children:(0,_jsxRuntime.jsx)(_index6.Spinner,{size:ee>=100?"md":"sm",color:A.colors.onPrimary})}):null,!a&&K?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:`${pe}-badge`,style:[styles.badge,{width:oe,height:oe,borderRadius:
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ProfilePicker=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_index3=require("../AppIcon/index.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index4=require("../Avatar/index.js"),_index5=require("../FieldBase/index.js"),_FilePicker=require("../FilePicker/FilePicker.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_index6=require("../Spinner/index.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_LABELS={pick:"Change profile photo",remove:"Remove photo",sheetTitle:"Change photo",errorTooLarge:e=>`The photo is larger than ${e} MB.`,errorWrongType:"That file is not a supported image."},DEFAULT_ACCEPT=["image/*"],SHEET_ICON_SIZE=20,SOFT_FILL_OPACITY=.14,SIZE_PX={sm:72,md:120,lg:160},clamp=(e,r,t)=>Math.min(t,Math.max(r,e)),toneFor=(e,r)=>{switch(r){case"success":return{base:e.colors.success,on:e.colors.onSuccess};case"warning":return{base:e.colors.warning,on:e.colors.onWarning};case"error":return{base:e.colors.error,on:e.colors.onError};case"info":return{base:e.colors.info,on:e.colors.onInfo};case"neutral":return{base:e.colors.text.secondary,on:e.colors.onNeutral};default:return{base:e.colors.primary,on:e.colors.onPrimary}}},badgeLookFor=(e,r,t,o)=>{const i=toneFor(e,r),n=o?.badgeColor??i.base,s=e.colors.background.primary,l="neutral"===r&&void 0===o?.badgeColor;let a;switch(t){case"soft":a={fill:l?e.colors.background.tertiary:(0,_color.blendOf)(n,.14,s,e.colors.background.secondary),ring:s,icon:n};break;case"outline":a={fill:s,ring:l?e.colors.border.primary:n,icon:n};break;default:a={fill:n,ring:s,icon:i.on}}return o?.badgeIconColor?{...a,icon:o.badgeIconColor}:a},resolveRadius=(e,r)=>"circle"===e?r/2:"rounded"===e?Math.max(6,Math.round(.22*r)):0,REMOVE_VALUE="__profile-picker-remove__",ProfilePicker=exports.ProfilePicker=(0,_react.forwardRef)((e,r)=>{const{value:t,name:o,sources:i,onPick:n,onRemove:s,loading:l=!1,disabled:a=!1,accept:c=DEFAULT_ACCEPT,maxSizeMB:u,size:d="md",shape:_="circle",badgeIcon:m="camera",tone:x,variant:p,avatarTone:b,avatarBackgroundColor:g,avatarColor:h,label:y,required:f=!1,helperText:v,error:j,layout:k="stacked",title:C,subtitle:S,ImageComponent:R,labels:I,haptic:T,onError:P,accessibilityLabel:F,style:E,testID:w}=e,A=(0,_index.useTheme)(),L=A.components.profilePicker,M=x??L?.defaultTone??"primary",O=p??L?.defaultVariant??"solid",q=(0,_react.useMemo)(()=>badgeLookFor(A,M,O,L),[A,M,O,L]),N=b??L?.defaultAvatarTone,z=(0,_react.useMemo)(()=>{const e=N?(0,_index4.avatarToneColors)(A,N):null;return{background:g??e?.background??A.colors.background.tertiary,icon:h??e?.color??A.colors.text.tertiary}},[A,N,g,h]),V=(0,_react.useMemo)(()=>({...DEFAULT_LABELS,...I}),[I]),[D,B]=(0,_react.useState)(null),[H,U]=(0,_react.useState)(null),[W,$]=(0,_react.useState)(!1),[Z,G]=(0,_react.useState)(t);t!==Z&&(G(t),B(null));const X=l||a,Q=D??t??null,Y=j??H??void 0,J=!X&&(null!==D||Boolean(t)&&Boolean(s)),K=i.length>0||J,ee="number"==typeof d?d:SIZE_PX[d],re=resolveRadius(_,ee),te=re*(1-Math.SQRT1_2),oe=clamp(Math.round(.28*ee),24,44),ie=te-oe/2,ne=Math.max(0,-ie),se=(0,_react.useCallback)(e=>{U(e),P?.(e),!1!==T&&(0,_index2.triggerHaptic)("notificationError")},[P,T]),le=(0,_react.useCallback)(async e=>{let r;try{r=await e.pick()}catch(e){return void se(e instanceof Error?e.message:String(e))}const t=r?.[0];if(!t)return;if("number"==typeof u&&"number"==typeof t.size&&t.size>1024*u*1024)return void se(V.errorTooLarge(u));if(t.type&&!(0,_FilePicker.matchesAccept)(t.type,c))return void se(V.errorWrongType);U(null),B(t.uri);const o=(0,_index2.resolveHaptic)(T,"selection");o&&(0,_index2.triggerHaptic)(o),n?.(t)},[u,c,V,T,n,se]),ae=(0,_react.useCallback)(()=>{X||(de.current=null,1!==i.length||J?(i.length>0||J)&&$(!0):le(i[0]))},[X,i,J,le]),ce=(0,_react.useCallback)(()=>{B(null),U(null);const e=(0,_index2.resolveHaptic)(T,"selection");e&&(0,_index2.triggerHaptic)(e),s?.()},[T,s]),ue=(0,_react.useMemo)(()=>{const e=i.map(e=>({kind:"source",source:e}));return J&&e.push({kind:"remove"}),e},[i,J]),de=(0,_react.useRef)(null),me=(0,_react.useCallback)(e=>{de.current||($(!1),"remove"===e.kind?ce():de.current=e.source)},[ce]),xe=(0,_react.useCallback)(()=>{const e=de.current;de.current=null,e&&le(e)},[le]),pe=w??"profile-picker",be=F??(K?V.pick:o),ge=(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.fill,{width:ee,height:ee,borderRadius:re,..._corners.smoothCorners,backgroundColor:z.background}],children:(0,_jsxRuntime.jsx)(_index3.AppIcon,{name:"user",size:Math.round(.45*ee),color:z.icon})}),he=(0,_jsxRuntime.jsx)(_reactNative.View,{style:{width:ee,height:ee,marginBottom:ne,marginRight:ne},children:(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:ae,disabled:X||!K,accessibilityRole:K?"button":"image",accessibilityLabel:be,accessibilityHint:(0,_index5.fieldTextAsString)(Y),accessibilityState:K?{disabled:X,busy:l}:{busy:l},"aria-disabled":K?X:void 0,"aria-busy":l,testID:`${pe}-button`,style:({pressed:e})=>[{width:ee,height:ee,borderRadius:re,..._corners.smoothCorners},{opacity:a?.55:e?.85:1}],children:[Q||o?(0,_jsxRuntime.jsx)(_index4.Avatar,{source:Q?{uri:Q}:void 0,name:o,size:ee,shape:_,tone:N,backgroundColor:g,color:h,ImageComponent:R,accessibilityLabel:be},Q??"initials"):ge,l?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.fill,styles.overlay,{borderRadius:re,..._corners.smoothCorners,backgroundColor:A.colors.background.overlay}],testID:`${pe}-loading`,children:(0,_jsxRuntime.jsx)(_index6.Spinner,{size:ee>=100?"md":"sm",color:A.colors.onPrimary})}):null,!a&&K?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",testID:`${pe}-badge`,style:[styles.badge,{width:oe,height:oe,borderRadius:A.radius.pill,..._corners.smoothCorners,right:ie,bottom:ie,backgroundColor:q.fill,borderColor:q.ring}],children:(0,_slotIcon.renderSlotIcon)(m,{color:q.icon,size:Math.round(.55*oe),disabled:!1})}):null]})}),ye="stacked"!==k?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[styles.meta,"profile"===k?styles.metaCentred:null],children:[C?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[styles.title,"profile"===k?styles.textCentred:null,{color:A.colors.text.primary,fontSize:A.typography.fontSize.base,...(0,_index.fontFor)(A,"semibold")}],children:C}):null,S?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[styles.subtitle,"profile"===k?styles.textCentred:null,{color:A.colors.text.secondary,fontSize:A.typography.fontSize.sm,marginTop:A.spacing.xxs,...(0,_index.fontFor)(A,"normal")}],children:S}):null,(0,_jsxRuntime.jsx)(_index5.FieldMessage,{text:Y??v,error:(0,_index5.hasFieldText)(Y)})]}):(0,_jsxRuntime.jsx)(_index5.FieldMessage,{text:Y??v,error:(0,_index5.hasFieldText)(Y)});return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:r,style:E,testID:w,children:[y?(0,_jsxRuntime.jsx)(_index5.FieldLabel,{required:f,children:y}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:"inline"===k?[styles.row,{columnGap:A.spacing.md}]:["profile"===k?styles.columnCentred:styles.column,{rowGap:A.spacing.xs}],children:[he,ye]}),(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:W,onClose:()=>$(!1),onAfterClose:xe,title:V.sheetTitle,options:ue,labelOf:e=>{const r=e;return"remove"===r.kind?V.remove:r.source.label},getValue:e=>{const r=e;return"remove"===r.kind?REMOVE_VALUE:r.source.key},disabledOf:()=>!1,destructiveOf:e=>"remove"===e.kind,descriptionOf:e=>{const r=e;return"remove"===r.kind?void 0:r.source.description},iconOf:e=>{const r=e;return"remove"===r.kind?(0,_jsxRuntime.jsx)(_index3.AppIcon,{name:"trash",size:20,color:A.colors.toneText.error}):r.source.icon},isSelected:()=>!1,onSelect:e=>me(e)})]})});ProfilePicker.displayName="ProfilePicker";const styles=_reactNative.StyleSheet.create({fill:{alignItems:"center",justifyContent:"center",overflow:"hidden"},overlay:{..._reactNative.StyleSheet.absoluteFill},badge:{position:"absolute",alignItems:"center",justifyContent:"center",borderWidth:2},row:{flexDirection:"row",alignItems:"center"},column:{alignItems:"flex-start"},columnCentred:{alignItems:"center"},meta:{flexShrink:1},metaCentred:{alignItems:"center"},title:{includeFontPadding:!1},subtitle:{includeFontPadding:!1},textCentred:{textAlign:"center"}});var _default=exports.default=ProfilePicker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ProgressBar=void 0;var _react=require("react"),_reactNative=require("react-native"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_jsxRuntime=require("react/jsx-runtime");const toneColor=(e,t)=>{switch(t){case"success":return e.colors.success;case"warning":return e.colors.warning;case"error":return e.colors.error;default:return e.colors.primary}},GLOW_LOCATIONS=[0,.35,.5,.65,1],glowOf=e=>{const t=(0,_color.tintOf)(e,0,"transparent"),r=(0,_color.tintOf)(e,.6,e);return{colors:[t,r,e,r,t],locations:GLOW_LOCATIONS,start:{x:0,y:.5},end:{x:1,y:.5}}},clampProgress=e=>"number"!=typeof e||Number.isNaN(e)||e<0?0:e>1?1:e,ProgressBar=exports.ProgressBar=(0,_react.forwardRef)((e,t)=>{const r=(0,_index.useTheme)(),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ProgressBar=void 0;var _react=require("react"),_reactNative=require("react-native"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_color=require("../../utils/color.js"),_corners=require("../../utils/corners.js"),_jsxRuntime=require("react/jsx-runtime");const toneColor=(e,t)=>{switch(t){case"success":return e.colors.success;case"warning":return e.colors.warning;case"error":return e.colors.error;default:return e.colors.primary}},GLOW_LOCATIONS=[0,.35,.5,.65,1],glowOf=e=>{const t=(0,_color.tintOf)(e,0,"transparent"),r=(0,_color.tintOf)(e,.6,e);return{colors:[t,r,e,r,t],locations:GLOW_LOCATIONS,start:{x:0,y:.5},end:{x:1,y:.5}}},clampProgress=e=>"number"!=typeof e||Number.isNaN(e)||e<0?0:e>1?1:e,ProgressBar=exports.ProgressBar=(0,_react.forwardRef)((e,t)=>{const r=(0,_index.useTheme)(),i=(0,_useReducedMotion.useReducedMotion)(),{progress:a,label:s,showPercent:n=!1,indeterminate:o,height:l=6,radius:c,tone:u="primary",trackColor:d,barColor:m,gradient:_,segments:p,animated:g=!0,style:x,containerStyle:y,barStyle:h,accessibilityLabel:f,testID:v}=e,b=o??"number"!=typeof a,R=clampProgress(a),j=(0,_react.useRef)((0,_index.createAnimatedValue)(R)).current,w=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,N=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,V=(0,_react.useRef)(0),A=r.components.progressBar?.determinateAnimationDuration??400,S=r.components.progressBar?.indeterminateLoopDuration??1500,B=r.components.progressBar?.indeterminateWidth??"30%",C=(0,_react.useMemo)(()=>buildStyles(r),[r]),O=c??r.radius.pill,P=d??r.colors.surface.disabled,M=m??toneColor(r,u),L=(0,_react.useMemo)(()=>_?"string"==typeof _?r.gradients[_]??null:_:null,[_,r.gradients]),k=(0,_react.useMemo)(()=>glowOf(M),[M]),D=Array.isArray(p)&&p.length>0;(0,_react.useEffect)(()=>{b||(g?_reactNative.Animated.timing(j,{toValue:R,duration:A,easing:_reactNative.Easing.bezier(...r.motion.easing.standard),useNativeDriver:!1}).start():j.setValue(R))},[g,R,A,j,b,r]),(0,_react.useEffect)(()=>{if(!b)return;(0,_index.setNativeValue)(w,0);const e=_reactNative.Animated.loop(_reactNative.Animated.timing(w,{toValue:1,duration:S,easing:_reactNative.Easing.inOut(_reactNative.Easing.ease),useNativeDriver:!0}));return e.start(),()=>{e.stop()}},[b,w,S]);const q=j.interpolate({inputRange:[0,1],outputRange:["0%","100%"]}),E=w.interpolate({inputRange:[0,1],outputRange:[-1,1]}),G=w.interpolate({inputRange:[0,.5,1],outputRange:[.4,1,.4]}),I=n&&!b&&!D,T=null!=s||I,F=f??("string"==typeof s?s:void 0),z=(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,accessibilityRole:"progressbar",accessibilityLabel:F,accessibilityValue:b?{text:"Loading"}:{min:0,max:100,now:Math.round(100*R)},testID:v,onLayout:e=>{const t=e.nativeEvent.layout.width;V.current=t,(0,_index.setNativeValue)(N,t)},style:[C.track,{height:l,borderRadius:O,..._corners.smoothCorners,backgroundColor:P},x,y],children:D?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[C.segments,{height:l}],children:(p??[]).map((e,t)=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:{width:100*clampProgress(e.value)+"%",height:l,backgroundColor:e.color??toneColor(r,e.tone??"primary")}},t))}):b?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[C.indeterminateBar,{height:l,width:i?"100%":B,opacity:i?G:1,transform:i?[]:[{translateX:_reactNative.Animated.multiply(E,N)}]},h],children:(0,_jsxRuntime.jsx)(_index.Gradient,{gradient:k,style:_reactNative.StyleSheet.absoluteFill})}):(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[C.determinateBar,{height:l,borderRadius:O,..._corners.smoothCorners,backgroundColor:L?"transparent":M,width:q,overflow:L?"hidden":void 0},h],children:L?(0,_jsxRuntime.jsx)(_index.Gradient,{gradient:L,style:_reactNative.StyleSheet.absoluteFill}):null})});if(!T)return z;const W={fontSize:r.typography.fontSize.sm,...(0,_index.fontFor)(r,"medium")};return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:C.wrapper,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[C.labelRow,{marginBottom:r.spacing.xs}],children:["string"==typeof s||"number"==typeof s?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[C.label,W,{color:r.colors.text.primary}],children:s}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:C.label,children:s}),I?(0,_jsxRuntime.jsx)(_reactNative.Text,{accessible:!1,importantForAccessibility:"no",style:[W,{color:r.colors.text.secondary}],children:`${Math.round(100*R)}%`}):null]}),z]})});ProgressBar.displayName="ProgressBar";const buildStyles=e=>_reactNative.StyleSheet.create({wrapper:{width:"100%"},labelRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",columnGap:e.spacing.sm},label:{flexShrink:1},track:{width:"100%",overflow:"hidden"},determinateBar:{position:"absolute",left:0,top:0},indeterminateBar:{position:"absolute",left:0,top:0},segments:{flexDirection:"row",width:"100%"}});var _default=exports.default=ProgressBar;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useRadioGroup=exports.default=exports.RadioGroupContext=exports.Radio=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index2=require("../FieldBase/index.js"),_ChoiceText=require("../FieldBase/ChoiceText.js"),_RadioDot=require("./RadioDot.js"),_jsxRuntime=require("react/jsx-runtime");const RadioGroupContext=exports.RadioGroupContext=(0,_react.createContext)(null),useRadioGroup=()=>(0,_react.useContext)(RadioGroupContext);exports.useRadioGroup=useRadioGroup;const toneColor=(e,t)=>{switch(t){case"success":return e.colors.success;case"warning":return e.colors.warning;case"error":return e.colors.error;default:return e.colors.primary}},Radio=exports.Radio=(0,_react.forwardRef)((e,t)=>{const{value:i,selected:r,onChange:o,disabled:s=!1,label:a,description:l,error:c,size:d="md",tone:n="primary",accessibilityLabel:u,haptic:p,style:x,containerStyle:_,circleStyle:b,dotStyle:h,labelStyle:y,testID:R,...m}=e,C=(0,_index.useTheme)(),f=(0,_react.useMemo)(()=>buildStyles(C),[C]),g=useRadioGroup();__DEV__&&void 0===i&&_mobileCore.Logger.warn("[@webority/mobile-ui] Radio was rendered without a `value`. Selection compares against it, so the group cannot track which option is chosen.");const w=g?g.selectedValue===i:!!r,S=g&&g.disabled||s,j=toneColor(C,n),v=C.components.radio
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useRadioGroup=exports.default=exports.RadioGroupContext=exports.Radio=void 0;var _mobileCore=require("@webority/mobile-core"),_react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index2=require("../FieldBase/index.js"),_ChoiceText=require("../FieldBase/ChoiceText.js"),_RadioDot=require("./RadioDot.js"),_jsxRuntime=require("react/jsx-runtime");const RadioGroupContext=exports.RadioGroupContext=(0,_react.createContext)(null),useRadioGroup=()=>(0,_react.useContext)(RadioGroupContext);exports.useRadioGroup=useRadioGroup;const toneColor=(e,t)=>{switch(t){case"success":return e.colors.success;case"warning":return e.colors.warning;case"error":return e.colors.error;default:return e.colors.primary}},Radio=exports.Radio=(0,_react.forwardRef)((e,t)=>{const{value:i,selected:r,onChange:o,disabled:s=!1,label:a,description:l,error:c,size:d="md",tone:n="primary",accessibilityLabel:u,haptic:p,style:x,containerStyle:_,circleStyle:b,dotStyle:h,labelStyle:y,testID:R,...m}=e,C=(0,_index.useTheme)(),f=(0,_react.useMemo)(()=>buildStyles(C),[C]),g=useRadioGroup();__DEV__&&void 0===i&&_mobileCore.Logger.warn("[@webority/mobile-ui] Radio was rendered without a `value`. Selection compares against it, so the group cannot track which option is chosen.");const w=g?g.selectedValue===i:!!r,S=g&&g.disabled||s,j=toneColor(C,n),v=(0,_index.spaceOf)(C,C.components.radio.labelGap,"components.radio.labelGap"),G=u??(0,_index2.fieldTextAsString)(a),T=!0===g?.error||!0===c||(0,_index2.hasFieldText)(c);return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{ref:t,onPress:e=>{if(S)return;const t=(0,_hapticUtils.resolveHaptic)(p,"selection");t&&(0,_hapticUtils.triggerHaptic)(t),g?g.onChange(i):o?.(i)},disabled:S,accessibilityRole:"radio",accessibilityLabel:G,accessibilityHint:m.accessibilityHint??(0,_index2.fieldTextAsString)(l),accessibilityState:{checked:w,disabled:S},"aria-checked":w,"aria-disabled":S,testID:R,hitSlop:6,...m,style:({pressed:e})=>[f.row,(0,_ChoiceText.hasChoiceDetail)(l,c)?f.rowTop:null,{opacity:S?.55:e?.85:1},x,_],children:[(0,_jsxRuntime.jsx)(_RadioDot.RadioDot,{selected:w,color:j,disabled:S&&!w,size:d,style:[!T||w||S?null:{borderColor:C.colors.field.borderError},b],dotStyle:h}),(0,_jsxRuntime.jsx)(_ChoiceText.ChoiceText,{label:a,description:l,error:c,disabled:S,labelLines:2,style:{marginLeft:v},labelStyle:y})]})});Radio.displayName="Radio";const buildStyles=e=>_reactNative.StyleSheet.create({row:{flexDirection:"row",alignItems:"center"},rowTop:{alignItems:"flex-start"}});var _default=exports.default=Radio;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.RadioDot=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_jsxRuntime=require("react/jsx-runtime");const
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.RadioDot=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_jsxRuntime=require("react/jsx-runtime");const RadioDot=e=>{const{selected:t,color:r,disabled:o=!1,size:s="md",style:i,dotStyle:a}=e,n=(0,_index.useTheme)(),d=(0,_react.useMemo)(()=>buildStyles(),[]),c=r??n.colors.primary;let u,l;if("number"==typeof s)u=s,l=Math.round(s/2);else{const e=(0,_index.resolveRadioSize)(n,s);u=e.outer,l=e.inner}const p=(0,_react.useRef)((0,_index.createAnimatedValue)(t?1:0)).current;(0,_react.useEffect)(()=>{const e=_reactNative.Animated.spring(p,{toValue:t?1:0,damping:n.motion.spring.snappy.damping,stiffness:n.motion.spring.snappy.stiffness,mass:n.motion.spring.snappy.mass,useNativeDriver:!0});return e.start(),()=>e.stop()},[t,p,n.motion.spring.snappy]);const m=p.interpolate({inputRange:[0,1],outputRange:[0,1]}),_=o?n.colors.border.primary:t?c:n.colors.border.primary;return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[d.outer,{width:u,height:u,borderWidth:n.colors.border.width,borderRadius:n.radius.pill,..._corners.smoothCorners,borderColor:_},i],children:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[{width:l,height:l,borderRadius:n.radius.pill,..._corners.smoothCorners,backgroundColor:o?n.colors.text.disabled:c,opacity:p,transform:[{scale:m}]},a]})})};exports.RadioDot=RadioDot,RadioDot.displayName="RadioDot";const buildStyles=()=>_reactNative.StyleSheet.create({outer:{alignItems:"center",justifyContent:"center"}});var _default=exports.default=RadioDot;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Rating=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index2=require("../Skeleton/index.js"),_jsxRuntime=require("react/jsx-runtime");const sizePxMap={sm:16,md:24,lg:32},resolveSize=e=>"number"==typeof e?e:sizePxMap[e],toneColorFor=(e,t)=>"primary"===t?e.colors.primary:e.colors.warning,clampToStep=(e,t,i)=>{const a=Math.max(0,Math.min(t,e)),s=Math.round(a/i)*i;return Number(s.toFixed(2))},Star=({index:e,filled:t,size:i,filledColor:a,emptyColor:s,scale:n})=>{const r=Math.max(0,Math.min(1,t-e));return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[starStyles.starWrap,{width:i,height:i,transform:[{scale:n}]}],children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[starStyles.glyph,{color:s,fontSize:i,lineHeight:i}],accessible:!1,children:"☆"}),r>0?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[starStyles.fillClip,{width:i*r,height:i}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[starStyles.glyph,{color:a,fontSize:i,lineHeight:i}],accessible:!1,children:"★"})}):null]})},Rating=exports.Rating=(0,_react.forwardRef)((e,t)=>{const{value:i,onChange:a,max:s=5,allowHalf:n=!0,readonly:r=!1,size:l="md",tone:o="warning",label:c,loading:u=!1,haptic:m,accessibilityLabel:d,style:x,containerStyle:
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Rating=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index2=require("../Skeleton/index.js"),_jsxRuntime=require("react/jsx-runtime");const sizePxMap={sm:16,md:24,lg:32},resolveSize=e=>"number"==typeof e?e:sizePxMap[e],toneColorFor=(e,t)=>"primary"===t?e.colors.primary:e.colors.warning,clampToStep=(e,t,i)=>{const a=Math.max(0,Math.min(t,e)),s=Math.round(a/i)*i;return Number(s.toFixed(2))},Star=({index:e,filled:t,size:i,filledColor:a,emptyColor:s,scale:n})=>{const r=Math.max(0,Math.min(1,t-e));return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[starStyles.starWrap,{width:i,height:i,transform:[{scale:n}]}],children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[starStyles.glyph,{color:s,fontSize:i,lineHeight:i}],accessible:!1,children:"☆"}),r>0?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[starStyles.fillClip,{width:i*r,height:i}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[starStyles.glyph,{color:a,fontSize:i,lineHeight:i}],accessible:!1,children:"★"})}):null]})},Rating=exports.Rating=(0,_react.forwardRef)((e,t)=>{const{value:i,onChange:a,max:s=5,allowHalf:n=!0,readonly:r=!1,size:l="md",tone:o="warning",label:c,loading:u=!1,haptic:m,accessibilityLabel:d,style:x,containerStyle:p,starContainerStyle:y,testID:g}=e,_=(0,_index.useTheme)(),h=(0,_react.useMemo)(()=>buildStyles(_),[_]),v=!r&&"function"==typeof a,f=n?.5:1,b=resolveSize(l),j=toneColorFor(_,o),S=_.colors.border.primary,R=(0,_react.useRef)(b),w=(0,_react.useCallback)(e=>{R.current=e.nativeEvent.layout.width},[]),N=(0,_react.useRef)(new Map),C=(0,_react.useMemo)(()=>{const e=N.current,t=[];for(let i=0;i<s;i+=1){let a=e.get(i);a||(a=new _reactNative.Animated.Value(1),e.set(i,a)),t.push(a)}for(const t of Array.from(e.keys()))t>=s&&e.delete(t);return t},[s]),k=_.components.rating?.pulseOnPress??!1,z=_.components.rating?.pulseScale??1.2,M=(0,_react.useCallback)(e=>{const t=C[e];t&&_reactNative.Animated.sequence([_reactNative.Animated.timing(t,{toValue:z,duration:_.motion.duration.fast,easing:_reactNative.Easing.bezier(..._.motion.easing.standard),useNativeDriver:!0}),_reactNative.Animated.spring(t,{toValue:1,damping:_.motion.spring.bouncy.damping,stiffness:_.motion.spring.bouncy.stiffness,mass:_.motion.spring.bouncy.mass,useNativeDriver:!0})]).start()},[_.motion,z,C]),A=(0,_react.useCallback)((e,t)=>{if(!v||!a)return;const i=clampToStep(e,s,f),n=(0,_hapticUtils.resolveHaptic)(m,"selection");n&&(0,_hapticUtils.triggerHaptic)(n),k&&"number"==typeof t&&M(t),a(i)},[v,a,s,f,M,m,k]),V=(0,_react.useCallback)(e=>t=>{if(!v)return;const i=R.current||b,a=t.nativeEvent.locationX??i;let s;s=n&&a<i/2?e+.5:e+1,A(s,e)},[v,b,n,A]),P=(0,_react.useCallback)(e=>{v&&("increment"===e.nativeEvent.actionName?A(i+f):"decrement"===e.nativeEvent.actionName&&A(i-f))},[v,i,f,A]),q=`${i} of ${s} stars`,D=d??c??q,T=[];for(let e=0;e<s;e+=1){const t=C[e];if(!t)continue;const a=(0,_jsxRuntime.jsx)(Star,{index:e,filled:i,size:b,filledColor:j,emptyColor:S,scale:t},e);T.push(v?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:V(e),onLayout:0===e?w:void 0,hitSlop:4,accessible:!1,style:h.starPress,children:a},e):(0,_jsxRuntime.jsx)(_reactNative.View,{onLayout:0===e?w:void 0,style:h.starPress,children:a},e))}const E=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[h.wrapper,x,p],ref:t,testID:g,children:[c?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[h.label,{color:_.colors.text.secondary,fontSize:_.typography.fontSize.sm}],children:c}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[h.row,y],accessible:!0,accessibilityRole:v?"adjustable":"text",accessibilityLabel:D,accessibilityValue:v?{min:0,max:s,now:i,text:q}:void 0,accessibilityActions:v?[{name:"increment"},{name:"decrement"}]:void 0,onAccessibilityAction:v?P:void 0,children:T})]});return u?(0,_jsxRuntime.jsx)(RatingSkeleton,{...e}):E});Rating.displayName="Rating";const RatingSkeleton=({max:e=5,size:t="md",label:i,containerStyle:a,starContainerStyle:s,style:n})=>{const r=(0,_index.useTheme)(),l=resolveSize(t),o=Math.max(1,e);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[{alignItems:"flex-start"},a,n],accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,children:[void 0!==i?(0,_jsxRuntime.jsx)(_index2.Skeleton,{shape:"text",width:80,height:14,style:{marginBottom:r.spacing.xs}}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[{flexDirection:"row"},s],children:Array.from({length:o}).map((e,t)=>(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:l,height:l,radius:Math.round(.25*l),style:t<o-1?{marginRight:r.spacing.xs}:void 0},`sk-star-${t}`))})]})};RatingSkeleton.displayName="RatingSkeleton",Rating.Skeleton=RatingSkeleton;const starStyles=_reactNative.StyleSheet.create({starWrap:{position:"relative",alignItems:"flex-start",justifyContent:"center"},glyph:{textAlign:"left",includeFontPadding:!1},fillClip:{position:"absolute",top:0,left:0,overflow:"hidden"}}),buildStyles=e=>_reactNative.StyleSheet.create({wrapper:{flexDirection:"column"},row:{flexDirection:"row",alignItems:"center"},starPress:{marginRight:e.spacing.xs},label:{marginBottom:e.spacing.xs}});var _default=exports.default=Rating;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ScannerOverlay=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index2=require("../AppIcon/index.js"),_index3=require("../Button/index.js"),_index4=require("../EmptyState/index.js"),_index5=require("../IconButton/index.js"),_index6=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");const MIN_FRAME=240,DEFAULT_FRAME=260,MARK_LENGTH=32,MARK_THICKNESS=4,LIFT=.06,BREATHE_SCALE=1.03,SNAP_SCALE=1.08,T=4,CORNERS=[{key:"tl",style:{top:0,left:0,borderTopWidth:4,borderLeftWidth:4}},{key:"tr",style:{top:0,right:0,borderTopWidth:4,borderRightWidth:4}},{key:"bl",style:{bottom:0,left:0,borderBottomWidth:4,borderLeftWidth:4}},{key:"br",style:{bottom:0,right:0,borderBottomWidth:4,borderRightWidth:4}}],DEFAULT_LABELS={found:"Code found",invalid:"This code cannot be used. Try another.",torchOn:"Turn torch on",torchOff:"Turn torch off",manualEntry:"Enter code instead",gallery:"Upload from gallery",noPermissionTitle:"Camera access is off",noPermissionMessage:"Allow camera access to scan a code.",permissionAction:"Allow camera access",noCameraTitle:"No camera found",noCameraMessage:"This device has no camera available. You can still add the code another way."},ScannerOverlay=exports.ScannerOverlay=(0,_react.forwardRef)((e,t)=>{const{children:i,state:n="scanning",hint:a="Point the camera at the code",labels:r,torch:o=!1,onTorchChange:s,onManualEntry:l,onGallery:c,onPermissionAction:d,frameSize:u=DEFAULT_FRAME,haptic:m,style:h,testID:_}=e,x=(0,_index.useTheme)(),g=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),p=(0,_useReducedMotion.useReducedMotion)(),f=(0,_react.useMemo)(()=>buildStyles(x),[x]),v={...DEFAULT_LABELS,...r},[y,j]=(0,_react.useState)({width:0,height:0}),b="scanning"===n||"found"===n||"invalid"===n,R=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current,N=x.motion.duration.slower,S=x.motion.duration.normal;(0,_react.useEffect)(()=>{if(R.setValue(1),p)return;let e;return"scanning"===n&&N>0?e=_reactNative.Animated.loop(_reactNative.Animated.sequence([_reactNative.Animated.timing(R,{toValue:1.03,duration:2*N,useNativeDriver:!0}),_reactNative.Animated.timing(R,{toValue:1,duration:2*N,useNativeDriver:!0})])):"found"===n&&S>0&&(R.setValue(1.08),e=_reactNative.Animated.timing(R,{toValue:1,duration:S,useNativeDriver:!0})),e?.start(),()=>e?.stop()},[n,p,N,S,R]);const w=(0,_react.useRef)(n);(0,_react.useEffect)(()=>{w.current!==n&&(w.current=n,!1!==m&&("found"===n?(0,_hapticUtils.triggerHaptic)("notificationSuccess"):"invalid"===n&&(0,_hapticUtils.triggerHaptic)("notificationError")))},[n,m]);const{found:A,invalid:E}=v,{noPermissionTitle:C,noPermissionMessage:M}=v,{noCameraTitle:V,noCameraMessage:k}=v;(0,_react.useEffect)(()=>{switch(n){case"scanning":(0,_announce.announce)(a);break;case"found":(0,_announce.announce)(A);break;case"invalid":(0,_announce.announce)(E,{polite:!1});break;case"noPermission":(0,_announce.announce)(`${C}. ${M}`);break;case"noCamera":(0,_announce.announce)(`${V}. ${k}`)}},[n,a,A,E,C,M,V,k]);const P=Math.max(240,Math.min(u,y.width-2*x.spacing.xl)),L=(y.width-P)/2,q=Math.max(x.spacing.md,(y.height-P)/2-.06*y.height),O=y.width>0&&y.height>0,I={borderColor:"found"===n?x.colors.success:"invalid"===n?x.colors.error:x.colors.onOverlay,width:32,height:32},F="found"===n||"invalid"===n?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.pill,{backgroundColor:"found"===n?x.colors.success:x.colors.error}],children:(0,_jsxRuntime.jsx)(_index6.Text,{variant:"bodySmall",weight:"semibold",align:"center",color:"found"===n?x.colors.onSuccess:x.colors.onError,children:"found"===n?A:E})}):(0,_jsxRuntime.jsx)(_index6.Text,{variant:"bodySmall",align:"center",color:x.colors.onOverlay,children:a}),B=b&&null!=s,D=b?"glass":"outline";return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,testID:_,onLayout:e=>{const{width:t,height:i}=e.nativeEvent.layout;j(e=>e.width===t&&e.height===i?e:{width:t,height:i})},style:[f.root,!b&&{backgroundColor:x.colors.background.primary},h],children:[b?(0,_jsxRuntime.jsx)(_reactNative.View,{style:_reactNative.StyleSheet.absoluteFill,children:i}):null,b&&O?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{pointerEvents:"none",style:_reactNative.StyleSheet.absoluteFill,accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants","aria-hidden":!0,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.scrim,{left:0,right:0,top:0,height:q}]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.scrim,{left:0,right:0,top:q+P,bottom:0}]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.scrim,{left:0,width:L,top:q,height:P}]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.scrim,{left:L+P,right:0,top:q,height:P}]}),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{position:"absolute",left:L,top:q,width:P,height:P,transform:[{scale:R}]},children:CORNERS.map(e=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.mark,I,e.style]},e.key))})]}),(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[f.message,{top:q+P+x.spacing.md}],children:F})]}):null,b?null:(0,_jsxRuntime.jsx)(_reactNative.View,{style:f.panel,children:(0,_jsxRuntime.jsx)(_index4.EmptyState,{fill:!0,icon:(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:"noPermission"===n?"camera":"camera-slash",size:48,color:x.colors.text.tertiary}),title:"noPermission"===n?C:V,description:"noPermission"===n?M:k,action:"noPermission"===n&&d?{label:v.permissionAction,onPress:d}:void 0})}),(0,_jsxRuntime.jsxs)(_reactNative.View,{pointerEvents:"box-none",style:[f.bar,{paddingBottom:Math.max(g.bottom,x.spacing.md)}],children:[B?(0,_jsxRuntime.jsx)(_index5.IconButton,{icon:o?"flash":"flash-slash",variant:"glass",size:"lg",active:o,haptic:m,accessibilityLabel:o?v.torchOff:v.torchOn,onPress:()=>s?.(!o)}):null,c?(0,_jsxRuntime.jsx)(_index3.Button,{title:v.gallery,leftIcon:"gallery",variant:D,tone:"neutral",size:"lg",haptic:m,onPress:c}):null,l?(0,_jsxRuntime.jsx)(_index3.Button,{title:v.manualEntry,leftIcon:"keyboard",variant:D,tone:"neutral",size:"lg",haptic:m,onPress:l}):null]})]})});ScannerOverlay.displayName="ScannerOverlay";const buildStyles=e=>_reactNative.StyleSheet.create({root:{flex:1,overflow:"hidden"},scrim:{position:"absolute",backgroundColor:e.colors.background.overlay},mark:{position:"absolute"},message:{position:"absolute",left:0,right:0,alignItems:"center",paddingHorizontal:e.spacing.xl},pill:{paddingHorizontal:e.spacing.md,paddingVertical:e.spacing.xs,borderRadius:e.radius.
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ScannerOverlay=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useReducedMotion=require("../../hooks/useReducedMotion.js"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_index2=require("../AppIcon/index.js"),_index3=require("../Button/index.js"),_index4=require("../EmptyState/index.js"),_index5=require("../IconButton/index.js"),_index6=require("../Text/index.js"),_jsxRuntime=require("react/jsx-runtime");const MIN_FRAME=240,DEFAULT_FRAME=260,MARK_LENGTH=32,MARK_THICKNESS=4,LIFT=.06,BREATHE_SCALE=1.03,SNAP_SCALE=1.08,T=4,CORNERS=[{key:"tl",style:{top:0,left:0,borderTopWidth:4,borderLeftWidth:4}},{key:"tr",style:{top:0,right:0,borderTopWidth:4,borderRightWidth:4}},{key:"bl",style:{bottom:0,left:0,borderBottomWidth:4,borderLeftWidth:4}},{key:"br",style:{bottom:0,right:0,borderBottomWidth:4,borderRightWidth:4}}],DEFAULT_LABELS={found:"Code found",invalid:"This code cannot be used. Try another.",torchOn:"Turn torch on",torchOff:"Turn torch off",manualEntry:"Enter code instead",gallery:"Upload from gallery",noPermissionTitle:"Camera access is off",noPermissionMessage:"Allow camera access to scan a code.",permissionAction:"Allow camera access",noCameraTitle:"No camera found",noCameraMessage:"This device has no camera available. You can still add the code another way."},ScannerOverlay=exports.ScannerOverlay=(0,_react.forwardRef)((e,t)=>{const{children:i,state:n="scanning",hint:a="Point the camera at the code",labels:r,torch:o=!1,onTorchChange:s,onManualEntry:l,onGallery:c,onPermissionAction:d,frameSize:u=DEFAULT_FRAME,haptic:m,style:h,testID:_}=e,x=(0,_index.useTheme)(),g=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),p=(0,_useReducedMotion.useReducedMotion)(),f=(0,_react.useMemo)(()=>buildStyles(x),[x]),v={...DEFAULT_LABELS,...r},[y,j]=(0,_react.useState)({width:0,height:0}),b="scanning"===n||"found"===n||"invalid"===n,R=(0,_react.useRef)((0,_index.createAnimatedValue)(1)).current,N=x.motion.duration.slower,S=x.motion.duration.normal;(0,_react.useEffect)(()=>{if(R.setValue(1),p)return;let e;return"scanning"===n&&N>0?e=_reactNative.Animated.loop(_reactNative.Animated.sequence([_reactNative.Animated.timing(R,{toValue:1.03,duration:2*N,useNativeDriver:!0}),_reactNative.Animated.timing(R,{toValue:1,duration:2*N,useNativeDriver:!0})])):"found"===n&&S>0&&(R.setValue(1.08),e=_reactNative.Animated.timing(R,{toValue:1,duration:S,useNativeDriver:!0})),e?.start(),()=>e?.stop()},[n,p,N,S,R]);const w=(0,_react.useRef)(n);(0,_react.useEffect)(()=>{w.current!==n&&(w.current=n,!1!==m&&("found"===n?(0,_hapticUtils.triggerHaptic)("notificationSuccess"):"invalid"===n&&(0,_hapticUtils.triggerHaptic)("notificationError")))},[n,m]);const{found:A,invalid:E}=v,{noPermissionTitle:C,noPermissionMessage:M}=v,{noCameraTitle:V,noCameraMessage:k}=v;(0,_react.useEffect)(()=>{switch(n){case"scanning":(0,_announce.announce)(a);break;case"found":(0,_announce.announce)(A);break;case"invalid":(0,_announce.announce)(E,{polite:!1});break;case"noPermission":(0,_announce.announce)(`${C}. ${M}`);break;case"noCamera":(0,_announce.announce)(`${V}. ${k}`)}},[n,a,A,E,C,M,V,k]);const P=Math.max(240,Math.min(u,y.width-2*x.spacing.xl)),L=(y.width-P)/2,q=Math.max(x.spacing.md,(y.height-P)/2-.06*y.height),O=y.width>0&&y.height>0,I={borderColor:"found"===n?x.colors.success:"invalid"===n?x.colors.error:x.colors.onOverlay,width:32,height:32},F="found"===n||"invalid"===n?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.pill,{backgroundColor:"found"===n?x.colors.success:x.colors.error}],children:(0,_jsxRuntime.jsx)(_index6.Text,{variant:"bodySmall",weight:"semibold",align:"center",color:"found"===n?x.colors.onSuccess:x.colors.onError,children:"found"===n?A:E})}):(0,_jsxRuntime.jsx)(_index6.Text,{variant:"bodySmall",align:"center",color:x.colors.onOverlay,children:a}),B=b&&null!=s,D=b?"glass":"outline";return(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,testID:_,onLayout:e=>{const{width:t,height:i}=e.nativeEvent.layout;j(e=>e.width===t&&e.height===i?e:{width:t,height:i})},style:[f.root,!b&&{backgroundColor:x.colors.background.primary},h],children:[b?(0,_jsxRuntime.jsx)(_reactNative.View,{style:_reactNative.StyleSheet.absoluteFill,children:i}):null,b&&O?(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{pointerEvents:"none",style:_reactNative.StyleSheet.absoluteFill,accessibilityElementsHidden:!0,importantForAccessibility:"no-hide-descendants","aria-hidden":!0,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.scrim,{left:0,right:0,top:0,height:q}]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.scrim,{left:0,right:0,top:q+P,bottom:0}]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.scrim,{left:0,width:L,top:q,height:P}]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.scrim,{left:L+P,right:0,top:q,height:P}]}),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{position:"absolute",left:L,top:q,width:P,height:P,transform:[{scale:R}]},children:CORNERS.map(e=>(0,_jsxRuntime.jsx)(_reactNative.View,{style:[f.mark,I,e.style]},e.key))})]}),(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[f.message,{top:q+P+x.spacing.md}],children:F})]}):null,b?null:(0,_jsxRuntime.jsx)(_reactNative.View,{style:f.panel,children:(0,_jsxRuntime.jsx)(_index4.EmptyState,{fill:!0,icon:(0,_jsxRuntime.jsx)(_index2.AppIcon,{name:"noPermission"===n?"camera":"camera-slash",size:48,color:x.colors.text.tertiary}),title:"noPermission"===n?C:V,description:"noPermission"===n?M:k,action:"noPermission"===n&&d?{label:v.permissionAction,onPress:d}:void 0})}),(0,_jsxRuntime.jsxs)(_reactNative.View,{pointerEvents:"box-none",style:[f.bar,{paddingBottom:Math.max(g.bottom,x.spacing.md)}],children:[B?(0,_jsxRuntime.jsx)(_index5.IconButton,{icon:o?"flash":"flash-slash",variant:"glass",size:"lg",active:o,haptic:m,accessibilityLabel:o?v.torchOff:v.torchOn,onPress:()=>s?.(!o)}):null,c?(0,_jsxRuntime.jsx)(_index3.Button,{title:v.gallery,leftIcon:"gallery",variant:D,tone:"neutral",size:"lg",haptic:m,onPress:c}):null,l?(0,_jsxRuntime.jsx)(_index3.Button,{title:v.manualEntry,leftIcon:"keyboard",variant:D,tone:"neutral",size:"lg",haptic:m,onPress:l}):null]})]})});ScannerOverlay.displayName="ScannerOverlay";const buildStyles=e=>_reactNative.StyleSheet.create({root:{flex:1,overflow:"hidden"},scrim:{position:"absolute",backgroundColor:e.colors.background.overlay},mark:{position:"absolute"},message:{position:"absolute",left:0,right:0,alignItems:"center",paddingHorizontal:e.spacing.xl},pill:{paddingHorizontal:e.spacing.md,paddingVertical:e.spacing.xs,borderRadius:e.radius.pill,..._corners.smoothCorners},panel:{..._reactNative.StyleSheet.absoluteFill,justifyContent:"center"},bar:{position:"absolute",left:0,right:0,bottom:0,flexDirection:"row",flexWrap:"wrap",alignItems:"center",justifyContent:"center",gap:e.spacing.sm,paddingHorizontal:e.spacing.md}});var _default=exports.default=ScannerOverlay;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SearchBar=void 0;var _react=require("react"),_reactNative=require("react-native"),_useControllableState=require("../../hooks/useControllableState.js"),_useDebounce=require("../../hooks/useDebounce.js"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_mergeRefs=require("../../utils/mergeRefs.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_useFloatingLabel=require("../FieldBase/useFloatingLabel.js"),_SearchPanel=require("./SearchPanel.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_PANEL_ROWS=8,HOLD_RELEASE_MS=50,SearchBar=exports.SearchBar=(0,_react.forwardRef)((e,a)=>{const{value:t,onChangeText:
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SearchBar=void 0;var _react=require("react"),_reactNative=require("react-native"),_useControllableState=require("../../hooks/useControllableState.js"),_useDebounce=require("../../hooks/useDebounce.js"),_index=require("../../theme/index.js"),_announce=require("../../utils/announce.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_mergeRefs=require("../../utils/mergeRefs.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_useFloatingLabel=require("../FieldBase/useFloatingLabel.js"),_SearchPanel=require("./SearchPanel.js"),_jsxRuntime=require("react/jsx-runtime");const DEFAULT_PANEL_ROWS=8,HOLD_RELEASE_MS=50,SearchBar=exports.SearchBar=(0,_react.forwardRef)((e,a)=>{const{value:t,onChangeText:s,onSubmit:l,onFocus:n,onBlur:r,placeholder:c="Search…",autoFocus:i=!1,disabled:o=!1,onClear:u,leftIcon:d,debounceMs:_,size:b="md",variant:h,borderRadius:p,label:g,labelMode:f="top",labelStyle:S,scopes:x,scope:m,onScopeChange:v,recents:R,recentsTitle:j="Recent searches",maxRecents:C=DEFAULT_PANEL_ROWS,onSelectRecent:y,onRemoveRecent:F,onClearRecents:B,suggestions:k,maxSuggestions:L=DEFAULT_PANEL_ROWS,onSelectSuggestion:I,haptic:q,style:E,inputStyle:P,accessibilityLabel:T,testID:N,...D}=e,z=(0,_index.useTheme)(),H=h??z.components.searchBar?.defaultVariant??z.components.field?.defaultVariant??"filled",w="underline"===H,A=(0,_index.resolveFieldSize)(z,b),U=(0,_index.radiusOf)(z,z.components.searchBar[b].radius,`components.searchBar.${b}.radius`),M=(0,_FieldBase.resolveFieldTextStyle)(z,{disabled:o}),O=(0,_react.useRef)(null),V=(0,_react.useMemo)(()=>(0,_mergeRefs.mergeRefs)(O,a),[a]),W=(0,_react.useCallback)(()=>{o||O.current?.focus()},[o]),$=(0,_react.useMemo)(()=>buildStyles(z),[z]),X="string"==typeof t?t:"",[K,G]=(0,_react.useState)(!1),J=(0,_react.useCallback)(e=>{G(!0),n?.(e)},[n]),Q=(0,_react.useCallback)(e=>{G(!1),r?.(e)},[r]),[Y,Z]=(0,_react.useState)(X),ee=(0,_useDebounce.useDebounce)(Y,_??0);(0,_react.useEffect)(()=>{void 0!==_&&X!==Y&&Z(X)},[X,_]);const ae=(0,_react.useRef)(X);(0,_react.useEffect)(()=>{void 0!==_&&ee!==ae.current&&(ae.current=ee,s(ee))},[ee,_,s]);const te=(0,_react.useCallback)(e=>{void 0===_?s(e):Z(e)},[_,s]),se=(0,_react.useCallback)(()=>{const e=(0,_hapticUtils.resolveHaptic)(q,"selection");e&&(0,_hapticUtils.triggerHaptic)(e),void 0!==_&&(Z(""),ae.current=""),s(""),u?.()},[q,_,s,u]),le=(0,_react.useCallback)(()=>{l?.(void 0!==_?Y:X)},[l,_,Y,X]),ne=void 0!==_?Y:X,re=ne.length>0,[ce,ie]=(0,_useControllableState.useControllableState)({value:m,defaultValue:x?.[0]?.value??"",onChange:v}),oe=(0,_react.useCallback)(e=>{ie(e);const a=x?.find(a=>a.value===e)?.label;a&&(0,_announce.announce)(`Searching ${a}`)},[x,ie]),[ue,de]=(0,_react.useState)(!1),be=(0,_react.useRef)(null),he=(0,_react.useCallback)(()=>{be.current&&(clearTimeout(be.current),be.current=null)},[]),pe=(0,_react.useCallback)(()=>{he(),de(!0)},[he]),ge=(0,_react.useCallback)(()=>{he(),be.current=setTimeout(()=>de(!1),50)},[he]);(0,_react.useEffect)(()=>he,[he]);const fe=!o&&(K||ue),Se=(0,_react.useMemo)(()=>(R??[]).slice(0,C),[R,C]),xe=(0,_react.useMemo)(()=>(k??[]).slice(0,L).map(_SearchPanel.normalizeSuggestion),[k,L]),me=fe&&!re&&Se.length>0,ve=fe&&re&&xe.length>0,Re=ve?xe.length:0;(0,_react.useEffect)(()=>{Re>0&&(0,_announce.announce)(1===Re?"1 suggestion":`${Re} suggestions`)},[Re]);const je=(0,_react.useCallback)(()=>{const e=(0,_hapticUtils.resolveHaptic)(q,"selection");e&&(0,_hapticUtils.triggerHaptic)(e)},[q]),Ce=(0,_react.useCallback)(e=>{je(),O.current?.blur(),de(!1),y?.(e)},[je,y]),ye=(0,_react.useCallback)(e=>{je(),O.current?.blur(),de(!1),I?.(e)},[je,I]),Fe=(0,_react.useCallback)(e=>{je(),F?.(e),(0,_announce.announce)(`Removed ${e}`),W()},[je,F,W]),Be=(0,_react.useCallback)(()=>{je(),B?.(),(0,_announce.announce)("Recent searches cleared"),W()},[je,B,W]),ke={size:A.icon,color:o?z.colors.text.disabled:z.colors.text.tertiary,disabled:o},Le=d?(0,_slotIcon.renderSlotIcon)(d,ke):(z.icons?.search??_defaultIcons.defaultIcons.search)(ke),Ie=Boolean(g)&&"float"===f,qe=(0,_useFloatingLabel.useFloatingLabel)({label:g,enabled:Ie,floated:K||re,variant:H,sizeTokens:A,leadingOffset:A.icon+z.spacing.md,trailingOffset:re?A.icon+z.spacing.md:0,paddingLeft:w?z.spacing.none:A.paddingX,color:z.colors.field.label,style:S}),Ee=re&&!o?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:se,hitSlop:8,accessibilityRole:"button",accessibilityLabel:"Clear search",children:(z.icons?.close??_defaultIcons.defaultIcons.close)({size:A.icon,color:z.colors.text.secondary})}):null;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:E,testID:N,children:[g&&!Ie?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:b,style:S,children:g}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:$.root,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:$.fieldWrap,children:[(0,_jsxRuntime.jsx)(_FieldBase.FieldBase,{size:b,variant:H,focused:K,disabled:o,filled:re,minHeight:A.minHeight,paddingHorizontal:w?z.spacing.none:A.paddingX,borderRadius:p??U,leading:Le,trailing:Ee,topNotch:qe.topNotch,onPress:W,pressFeedback:!1,accessibilityRole:"search",accessibilityLabel:T??c,children:(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:V,style:[$.input,{fontSize:A.text,color:M.color,...M.weightStyle},P],value:ne,onChangeText:te,onSubmitEditing:le,onFocus:J,onBlur:Q,placeholder:!Ie||K||re?c:void 0,placeholderTextColor:M.placeholderColor,autoFocus:i,editable:!o,returnKeyType:"search",selectionColor:(0,_FieldBase.resolveVariantColors)(z,H).borderFocusedRepresentative,accessibilityLabel:T??c,accessibilityState:{disabled:o},"aria-disabled":o,...D})}),qe.node]})}),x&&x.length>0?(0,_jsxRuntime.jsx)(_SearchPanel.SearchScopeBar,{scopes:x,scope:ce||(x[0]?.value??""),disabled:o,haptic:q,onChange:oe}):null,me?(0,_jsxRuntime.jsx)(_SearchPanel.SearchRecents,{recents:Se,title:j,onSelect:Ce,onRemove:F?Fe:void 0,onClear:B?Be:void 0,onHold:pe,onRelease:ge}):null,ve?(0,_jsxRuntime.jsx)(_SearchPanel.SearchSuggestions,{suggestions:xe,query:ne,onSelect:ye,onHold:pe,onRelease:ge}):null]})});SearchBar.displayName="SearchBar";const buildStyles=e=>_reactNative.StyleSheet.create({root:{flexDirection:"row",alignItems:"center",width:"100%",position:"relative",overflow:"visible"},fieldWrap:{flex:1,position:"relative",overflow:"visible"},input:{flex:1,padding:e.spacing.none,margin:e.spacing.none,includeFontPadding:!1}});var _default=exports.default=SearchBar;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SegmentedControl=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index4=require("../FieldBase/index.js"),_SquircleFill=require("../SquircleFill/SquircleFill.js"),_jsxRuntime=require("react/jsx-runtime");const LABEL_LINE_HEIGHT_RATIO=1.25,SegmentedControl=exports.SegmentedControl=(0,_react.forwardRef)((e,t)=>{const{segments:i,label:r,helperText:n,error:s,value:l,defaultValue:o,onChange:a,size:d="md",fullWidth:c=!0,disabled:u=!1,tone:m="primary",variant:x="segmented",radius:g,labelLines:h=1,haptic:_,accessibilityLabel:p,style:b,containerStyle:y,segmentStyle:f,selectedIndicatorStyle:v,textStyle:S,labelStyle:j,testID:C}=e,[R,I]=(0,_index.useControllableState)({value:l,defaultValue:o??i[0]?.value,onChange:a}),w=(0,_index2.useTheme)(),k=w.components.segmentedControl,q=(0,_react.useMemo)(()=>buildStyles(w),[w]),N=(0,_react.useMemo)(()=>(0,_index2.resolveSegmentedControlSize)(w,d),[w,d]),L=h>=2?2:1,F=L>1,M="segmented"===x,V="underline"===x,z="pills"===x,E=M?(0,_index2.spaceOf)(w,k.trackPadding,"components.segmentedControl.trackPadding"):0,T=Math.ceil(1.25*N.text)*(L-1),W=k?.underlineHeight??2,A=(0,_index2.spaceOf)(w,k.pillInset,"components.segmentedControl.pillInset"),H=void 0===k.radius?void 0:(0,_index2.radiusOf)(w,k.radius,"components.segmentedControl.radius"),D="number"==typeof g?g:g?w.radius[g]:H,O=D??w.radius.md,P=void 0===D?w.radius.sm:Math.max(D-E,0),B=D??w.radius.pill,X=D??w.radius.none,[G,J]=(0,_react.useState)(0),K=(0,_react.useRef)((0,_index2.createAnimatedValue)(0)).current,Q=Math.max(0,i.findIndex(e=>e.value===R)),U=G>0?(G-2*E)/Math.max(i.length,1):0,Y=(0,_react.useCallback)((e,t)=>{if(t<=0)return;const i=t*e,r=w.motion.spring.snappy,n=_reactNative.Animated.spring(K,{toValue:i,damping:r.damping,stiffness:r.stiffness,mass:r.mass,overshootClamping:!0,useNativeDriver:!0});return n.start(),n},[w.motion.spring.snappy,K]);(0,_react.useEffect)(()=>{if(U>0){const e=Y(Q,U);return()=>e?.stop()}},[Q,U,Y]);const Z=(0,_react.useCallback)(e=>{const t=e.nativeEvent.layout.width;t!==G&&J(t)},[G]),$=(0,_react.useCallback)(e=>{if(u)return;if(e.value===R)return;const t=(0,_index3.resolveHaptic)(_,"selection");t&&(0,_index3.triggerHaptic)(t),I(e.value)},[u,I,R,_]),ee=M?w.colors.background.elevated:z?w.colors.primaryMuted:w.colors.primary,te=M?P:z?B:X,ie="neutral"===m?w.colors.text.primary:w.colors.primary,re=w.colors.background.tertiary,ne=(0,_SquircleFill.useSquircle)(M,O,Z),se=!0===s||(0,_index4.hasFieldText)(s),le=se&&!u,oe=w.colors.field.borderError,ae=w.colors.border.width,de=(0,_index4.hasFieldText)(r),ce=se?s:n,ue=(0,_index4.hasFieldText)(ce),me=p??("string"==typeof r?r:void 0),xe=(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,accessibilityRole:"radiogroup",accessibilityLabel:me,testID:C,style:[q.track,{...F?{minHeight:N.height+T}:{height:N.height},opacity:u?.55:1,alignSelf:c?"stretch":"flex-start"},M?{borderRadius:O,..._corners.smoothCorners,backgroundColor:ne.active?"transparent":re,padding:E}:V?{borderBottomColor:le?oe:w.colors.border.secondary,borderBottomWidth:_reactNative.StyleSheet.hairlineWidth}:null,y,b],onLayout:ne.onLayout,children:[ne.active&&ne.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:ne.size.width,height:ne.size.height,radius:O,fill:re,stroke:le?oe:void 0,strokeWidth:ae}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:q.row,children:[U>0?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[q.thumb,M?F?{top:0,bottom:0}:{top:0,height:N.height-2*E}:z?{top:A,bottom:A}:{bottom:0,height:W},{width:U,borderRadius:te,..._corners.smoothCorners,backgroundColor:ee,transform:[{translateX:K}]},v]}):null,i.map(e=>{const t=e.value===R,i=t?ie:w.colors.text.tertiary,r=(0,_slotIcon.renderSlotIcon)(e.icon,{color:i,size:N.icon,selected:t,disabled:u});return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>$(e),disabled:u,accessibilityRole:"radio",accessibilityLabel:e.label,accessibilityState:{checked:t,selected:t,disabled:u},"aria-checked":t,"aria-disabled":u,style:({pressed:e})=>[q.segment,F?q.segmentMultiline:null,{paddingHorizontal:N.paddingX,opacity:e&&!t?.7:1},f],children:[r?(0,_jsxRuntime.jsx)(_reactNative.View,{style:q.segmentIcon,children:r}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[q.segmentLabel,F?q.segmentLabelMultiline:null,{color:i,fontSize:N.text,fontWeight:t?w.typography.fontWeight.semibold:w.typography.fontWeight.medium},S,j],numberOfLines:L,children:e.label})]},String(e.value))})]}),!le||V||ne.active?null:(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[_reactNative.StyleSheet.absoluteFill,{borderWidth:ae,borderColor:oe,borderRadius:M?O:B,..._corners.smoothCorners}]})]});return de||ue?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{alignSelf:c?"stretch":"flex-start"},children:[de?(0,_jsxRuntime.jsx)(_index4.FieldLabel,{size:d,children:r}):null,xe,ue?(0,_jsxRuntime.jsx)(_index4.FieldMessage,{size:d,text:ce,error:se}):null]}):xe});SegmentedControl.displayName="SegmentedControl";const buildStyles=e=>_reactNative.StyleSheet.create({track:{flexDirection:"row",alignItems:"stretch",position:"relative"},row:{flex:1,flexDirection:"row",alignItems:"stretch",position:"relative",overflow:"hidden"},thumb:{position:"absolute",left:0},segment:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center"},segmentIcon:{marginRight:e.spacing.xs},segmentMultiline:{paddingVertical:e.spacing.xs},segmentLabel:{includeFontPadding:!1},segmentLabelMultiline:{flexShrink:1,textAlign:"center"}});var _default=exports.default=SegmentedControl;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Select=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_Chevron=require("../FieldBase/Chevron.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_Notation=require("../Notation/Notation.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_jsxRuntime=require("react/jsx-runtime");const sameSelectValue=(e,t)=>String(e)===String(t),containsValue=(e,t)=>e.some(e=>sameSelectValue(e,t)),Select=exports.Select=(0,_react.forwardRef)((e,t)=>{const{options:i,getOptionLabel:l,getOptionValue:o,getOptionDisabled:r,getOptionDescription:n,getOptionIcon:a,placeholder:s,onOpenChange:c,searchable:d=!1,haptic:u,label:x,help:p,title:_,required:h=!1,error:
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Select=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_Chevron=require("../FieldBase/Chevron.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_Notation=require("../Notation/Notation.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_jsxRuntime=require("react/jsx-runtime");const sameSelectValue=(e,t)=>String(e)===String(t),containsValue=(e,t)=>e.some(e=>sameSelectValue(e,t)),Select=exports.Select=(0,_react.forwardRef)((e,t)=>{const{options:i,getOptionLabel:l,getOptionValue:o,getOptionDisabled:r,getOptionDescription:n,getOptionIcon:a,placeholder:s,onOpenChange:c,searchable:d=!1,haptic:u,label:x,help:p,title:_,required:h=!1,error:g,helperText:b,prefix:v,numberOfLines:f=1,disabled:S=!1,size:m="md",variant:j,leftIcon:y,rightIcon:F,chevronColor:C,chevronSize:O,borderRadius:R,accessibilityLabel:k,labelStyle:N,style:V,triggerStyle:T,textStyle:B,optionStyle:I,selectedOptionStyle:q,optionTextStyle:z,selectedOptionTextStyle:H,testID:L}=e,w=!0===e.multi,M=(0,_react.useCallback)(e=>l?l(e):e.label??"",[l]),P=(0,_react.useCallback)(e=>o?o(e):e.value,[o]),D=(0,_react.useCallback)(e=>r?r(e):!0===e.disabled,[r]),E=(0,_react.useCallback)(e=>n?n(e):e.description,[n]),A=(0,_react.useCallback)(e=>a?a(e):e.icon,[a]),$=(0,_index.useTheme)(),G=(0,_react.useMemo)(()=>buildStyles($),[$]),J=(0,_index.resolveFieldSize)($,m),K=(0,_FieldBase.resolveFieldTextStyle)($,{disabled:S}),Q=j??$.components.select?.defaultVariant??$.components.field?.defaultVariant??"outlined",U=(0,_react.useMemo)(()=>{const e=$.components.select?.fillColors?.[Q];if(!e)return;const t={};return void 0!==e.idleEmpty&&(t.backgroundIdleEmpty=e.idleEmpty),void 0!==e.idleFilled&&(t.backgroundIdleFilled=e.idleFilled),void 0!==e.focus&&(t.backgroundFocused=e.focus),void 0!==e.error&&(t.backgroundError=e.error),void 0!==e.disabled&&(t.backgroundDisabled=e.disabled),Object.keys(t).length>0?t:void 0},[$.components.select?.fillColors,Q]),W=R??J.radius,[X,Y]=(0,_react.useState)(!1),Z=(0,_react.useCallback)(t=>{if(w){const i=e.value??[];return containsValue(i,t)}return null!=e.value&&sameSelectValue(e.value,t)},[w,e.value]),ee=(0,_react.useMemo)(()=>{if(w){const t=e.value??[];return i.filter(e=>containsValue(t,P(e)))}const t=e.value;if(null==t)return[];const l=i.find(e=>sameSelectValue(P(e),t));return l?[l]:[]},[w,i,e.value,P]),te=(0,_react.useCallback)(()=>{if(S)return;const e=(0,_index2.resolveHaptic)(u,"selection");e&&(0,_index2.triggerHaptic)(e),Y(!0)},[S,u]),ie=(0,_react.useCallback)(()=>{Y(!1)},[]),le=(0,_react.useCallback)(t=>{if(D(t))return;const i=P(t),l=(0,_index2.resolveHaptic)(u,"selection");if(l&&(0,_index2.triggerHaptic)(l),w){const t=e.value??[],l=containsValue(t,i)?t.filter(e=>!sameSelectValue(e,i)):[...t,i];return void e.onChange(l)}e.onChange(i),ie()},[w,e,ie,D,P,u]),oe=0===ee.length?s??"Select…":ee.map(e=>M(e)).join(", "),re=0===ee.length,ne=!0===g||(0,_FieldBase.hasFieldText)(g),ae=(0,_FieldBase.hasFieldText)(x),se=(0,_FieldBase.fieldTextAsString)(x),ce=Math.round(1.4*J.text),de=(0,_react.useMemo)(()=>({fontSize:J.text,color:K.placeholderColor}),[J.text,K.placeholderColor]),ue={color:S?$.colors.field.iconDisabled:X?$.colors.field.iconFocused:$.colors.field.icon,size:J.icon,disabled:S,focused:X,error:ne},xe=0===ee.length?s??"No selection":`Selected: ${ee.map(e=>M(e)).join(", ")}`,pe=k??`${se??"Select"}. ${xe}`;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[G.container,V],testID:L,children:[ae?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:m,required:h,help:p,style:N,children:x}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,collapsable:!1,children:(0,_jsxRuntime.jsxs)(_FieldBase.FieldBase,{size:m,variant:Q,disabled:S,error:ne,filled:ee.length>0,onPress:te,borderRadius:W,fillOverrides:U,paddingHorizontal:"underline"===Q?$.spacing.none:void 0,accessibilityRole:"button",accessibilityLabel:pe,accessibilityState:{disabled:S,expanded:X},"aria-disabled":S,"aria-expanded":X,style:T,slotAlign:1===f?"center":"top",slotLineHeight:1===f?void 0:ce,leading:y?(0,_jsxRuntime.jsx)(_reactNative.View,{children:(0,_slotIcon.renderSlotIcon)(y,ue)}):null,trailing:F?(0,_jsxRuntime.jsx)(_reactNative.View,{children:(0,_slotIcon.renderSlotIcon)(F,ue)}):(0,_jsxRuntime.jsx)(_Chevron.Chevron,{color:C??(S?$.colors.text.disabled:$.colors.text.tertiary),size:O??J.icon,open:X,style:G.chevron}),children:[(0,_FieldBase.hasFieldText)(v)?"string"==typeof v||"number"==typeof v?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[G.prefix,{color:K.placeholderColor,fontSize:J.text,lineHeight:1===f?void 0:ce,marginRight:$.spacing.xs}],children:v}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[G.prefixNode,{minHeight:1===f?void 0:ce,justifyContent:"center",marginRight:$.spacing.xs}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[G.prefix,{color:K.placeholderColor,fontSize:J.text,lineHeight:1===f?void 0:ce}],children:(0,_jsxRuntime.jsx)(_Notation.NotationInkContext.Provider,{value:de,children:v})})}):null,(0,_jsxRuntime.jsxs)(_reactNative.Text,{style:[G.triggerText,{color:re?K.placeholderColor:K.color,fontSize:J.text,lineHeight:1===f?void 0:ce,...K.weightStyle},B],numberOfLines:f,children:[oe,re&&h&&!ae?(0,_jsxRuntime.jsx)(_FieldBase.RequiredMark,{}):null]})]})}),(0,_jsxRuntime.jsx)(_FieldBase.FieldMessage,{size:m,error:ne,text:ne?g:b}),(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:X,onClose:ie,onOpenChange:c,title:_??se,accessibilityLabel:se??(ae?_:void 0)??s??"Options",options:i,labelOf:M,getValue:P,disabledOf:D,descriptionOf:E,iconOf:A,isSelected:Z,onSelect:le,multi:w,searchable:d,optionStyle:I,selectedOptionStyle:q,optionTextStyle:z,selectedOptionTextStyle:H,searchSelectionColor:(0,_FieldBase.resolveVariantColors)($,Q,U).borderFocusedRepresentative})]})});Select.displayName="Select";const buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},label:{includeFontPadding:!1},triggerText:{flex:1,includeFontPadding:!1},errorText:{includeFontPadding:!1},prefix:{flexShrink:0,includeFontPadding:!1},prefixNode:{flexShrink:0},chevron:{marginLeft:e.spacing.sm}});var _default=exports.default=Select;
|