@webority/mobile-ui 0.8.1 → 0.9.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/components/Accordion/Accordion.js +1 -1
- package/lib/commonjs/components/AnimatePresence/AnimatePresence.js +1 -1
- package/lib/commonjs/components/AppBar/AppBar.js +1 -1
- package/lib/commonjs/components/AppIcon/AppIcon.js +1 -1
- package/lib/commonjs/components/AsyncBlock/AsyncBlock.js +1 -1
- package/lib/commonjs/components/Autocomplete/Autocomplete.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/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/Calendar.js +1 -0
- package/lib/commonjs/components/Calendar/CalendarDay.js +1 -0
- package/lib/commonjs/components/Calendar/calendarDates.js +1 -0
- package/lib/commonjs/components/Calendar/calendarStyles.js +1 -0
- package/lib/commonjs/components/Calendar/index.js +1 -0
- 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/Confetti/Confetti.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/Drawer/Drawer.js +1 -1
- package/lib/commonjs/components/EmptyState/EmptyState.js +1 -1
- package/lib/commonjs/components/ErrorBoundary/ErrorBoundary.js +1 -1
- package/lib/commonjs/components/ErrorBoundary/withErrorBoundary.js +1 -1
- package/lib/commonjs/components/FieldBase/Chevron.js +1 -1
- package/lib/commonjs/components/FieldBase/FieldBase.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/ForceUpdateDialog/ForceUpdateDialog.js +1 -1
- package/lib/commonjs/components/FormField/FormField.js +1 -1
- package/lib/commonjs/components/IconButton/IconButton.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/KeyboardToolbar/KeyboardToolbar.js +1 -1
- package/lib/commonjs/components/ListItem/ListItem.js +1 -1
- package/lib/commonjs/components/LoaderOverlay/LoaderOverlay.js +1 -1
- package/lib/commonjs/components/Markdown/Markdown.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/PhoneNumberInput/PhoneNumberInput.js +1 -1
- package/lib/commonjs/components/ProfilePicker/ProfilePicker.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/Radio/RadioGroup.js +1 -1
- package/lib/commonjs/components/Rating/Rating.js +1 -1
- package/lib/commonjs/components/Repeater/Repeater.js +1 -1
- package/lib/commonjs/components/RichTextEditor/RichTextEditor.js +1 -1
- package/lib/commonjs/components/SearchBar/SearchBar.js +1 -1
- package/lib/commonjs/components/SectionHeader/SectionHeader.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/SkeletonClock.js +1 -1
- package/lib/commonjs/components/Skeleton/SkeletonContent.js +1 -1
- package/lib/commonjs/components/Skeleton/SkeletonProvider.js +1 -1
- package/lib/commonjs/components/Skeleton/SkeletonSkip.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/Text/Text.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/Toast/ToastProvider.js +1 -1
- package/lib/commonjs/components/ZoomableImage/ZoomableImage.js +1 -1
- package/lib/commonjs/components/index.js +1 -1
- package/lib/commonjs/form/FormContext.js +1 -1
- package/lib/commonjs/network/NetworkStatusBanner.js +1 -1
- package/lib/commonjs/theme/ThemeContext.js +1 -1
- package/lib/commonjs/theme/merge.js +1 -1
- package/lib/commonjs/theme/textStyle.js +1 -1
- package/lib/commonjs/theme/tokens.js +1 -1
- package/lib/commonjs/theme/toneInk.js +1 -0
- package/lib/commonjs/utils/ariaState.js +1 -0
- package/lib/module/components/Accordion/Accordion.js +1 -1
- package/lib/module/components/AnimatePresence/AnimatePresence.js +1 -1
- package/lib/module/components/AppBar/AppBar.js +1 -1
- package/lib/module/components/AppIcon/AppIcon.js +1 -1
- package/lib/module/components/AsyncBlock/AsyncBlock.js +1 -1
- package/lib/module/components/Autocomplete/Autocomplete.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/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/Calendar.js +1 -0
- package/lib/module/components/Calendar/CalendarDay.js +1 -0
- package/lib/module/components/Calendar/calendarDates.js +1 -0
- package/lib/module/components/Calendar/calendarStyles.js +1 -0
- package/lib/module/components/Calendar/index.js +1 -0
- 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/Confetti/Confetti.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/Drawer/Drawer.js +1 -1
- package/lib/module/components/EmptyState/EmptyState.js +1 -1
- package/lib/module/components/ErrorBoundary/ErrorBoundary.js +1 -1
- package/lib/module/components/ErrorBoundary/withErrorBoundary.js +1 -1
- package/lib/module/components/FieldBase/Chevron.js +1 -1
- package/lib/module/components/FieldBase/FieldBase.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/ForceUpdateDialog/ForceUpdateDialog.js +1 -1
- package/lib/module/components/FormField/FormField.js +1 -1
- package/lib/module/components/IconButton/IconButton.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/KeyboardToolbar/KeyboardToolbar.js +1 -1
- package/lib/module/components/ListItem/ListItem.js +1 -1
- package/lib/module/components/LoaderOverlay/LoaderOverlay.js +1 -1
- package/lib/module/components/Markdown/Markdown.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/PhoneNumberInput/PhoneNumberInput.js +1 -1
- package/lib/module/components/ProfilePicker/ProfilePicker.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/Radio/RadioGroup.js +1 -1
- package/lib/module/components/Rating/Rating.js +1 -1
- package/lib/module/components/Repeater/Repeater.js +1 -1
- package/lib/module/components/RichTextEditor/RichTextEditor.js +1 -1
- package/lib/module/components/SearchBar/SearchBar.js +1 -1
- package/lib/module/components/SectionHeader/SectionHeader.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/SkeletonClock.js +1 -1
- package/lib/module/components/Skeleton/SkeletonContent.js +1 -1
- package/lib/module/components/Skeleton/SkeletonProvider.js +1 -1
- package/lib/module/components/Skeleton/SkeletonSkip.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/Text/Text.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/Toast/ToastProvider.js +1 -1
- package/lib/module/components/ZoomableImage/ZoomableImage.js +1 -1
- package/lib/module/components/index.js +1 -1
- package/lib/module/form/FormContext.js +1 -1
- package/lib/module/network/NetworkStatusBanner.js +1 -1
- package/lib/module/theme/ThemeContext.js +1 -1
- package/lib/module/theme/merge.js +1 -1
- package/lib/module/theme/textStyle.js +1 -1
- package/lib/module/theme/tokens.js +1 -1
- package/lib/module/theme/toneInk.js +1 -0
- package/lib/module/utils/ariaState.js +1 -0
- package/lib/typescript/commonjs/components/Accordion/Accordion.d.ts +1 -1
- package/lib/typescript/commonjs/components/AnimatePresence/AnimatePresence.d.ts +1 -1
- package/lib/typescript/commonjs/components/AppBar/AppBar.d.ts +1 -1
- package/lib/typescript/commonjs/components/AppIcon/AppIcon.d.ts +1 -1
- package/lib/typescript/commonjs/components/AsyncBlock/AsyncBlock.d.ts +1 -1
- package/lib/typescript/commonjs/components/Avatar/Avatar.d.ts +2 -2
- package/lib/typescript/commonjs/components/Badge/Badge.d.ts +1 -1
- package/lib/typescript/commonjs/components/Banner/Banner.d.ts +1 -1
- package/lib/typescript/commonjs/components/BottomNavigation/BottomNavigation.d.ts +6 -0
- package/lib/typescript/commonjs/components/BottomSheet/BottomSheet.d.ts +1 -1
- package/lib/typescript/commonjs/components/Box/Box.d.ts +1 -1
- package/lib/typescript/commonjs/components/Calendar/Calendar.d.ts +70 -0
- package/lib/typescript/commonjs/components/Calendar/CalendarDay.d.ts +30 -0
- package/lib/typescript/commonjs/components/Calendar/calendarDates.d.ts +24 -0
- package/lib/typescript/commonjs/components/Calendar/calendarStyles.d.ts +125 -0
- package/lib/typescript/commonjs/components/Calendar/index.d.ts +4 -0
- package/lib/typescript/commonjs/components/Carousel/Carousel.d.ts +1 -1
- package/lib/typescript/commonjs/components/Chip/Chip.d.ts +1 -1
- package/lib/typescript/commonjs/components/ChoiceGroup/ChoiceGroup.d.ts +11 -1
- package/lib/typescript/commonjs/components/Confetti/Confetti.d.ts +1 -1
- package/lib/typescript/commonjs/components/DatePicker/DatePicker.d.ts +1 -1
- package/lib/typescript/commonjs/components/DateRangePicker/DateRangePicker.d.ts +7 -1
- package/lib/typescript/commonjs/components/Descriptions/Descriptions.d.ts +1 -1
- package/lib/typescript/commonjs/components/Dialog/Dialog.d.ts +1 -1
- package/lib/typescript/commonjs/components/Drawer/Drawer.d.ts +1 -1
- package/lib/typescript/commonjs/components/EmptyState/EmptyState.d.ts +1 -1
- package/lib/typescript/commonjs/components/ErrorBoundary/withErrorBoundary.d.ts +1 -1
- package/lib/typescript/commonjs/components/FieldBase/Chevron.d.ts +1 -1
- package/lib/typescript/commonjs/components/FilePicker/FilePicker.d.ts +1 -1
- package/lib/typescript/commonjs/components/ForceUpdateDialog/ForceUpdateDialog.d.ts +1 -1
- package/lib/typescript/commonjs/components/InlineSelect/InlineSelect.d.ts +1 -1
- package/lib/typescript/commonjs/components/ListItem/ListItem.d.ts +24 -0
- package/lib/typescript/commonjs/components/ListItem/index.d.ts +1 -1
- package/lib/typescript/commonjs/components/LoaderOverlay/LoaderOverlay.d.ts +1 -1
- package/lib/typescript/commonjs/components/Markdown/Markdown.d.ts +1 -1
- package/lib/typescript/commonjs/components/Modal/Modal.d.ts +1 -1
- package/lib/typescript/commonjs/components/ProfilePicker/ProfilePicker.d.ts +1 -1
- package/lib/typescript/commonjs/components/Radio/RadioDot.d.ts +1 -1
- package/lib/typescript/commonjs/components/Radio/RadioGroup.d.ts +1 -1
- package/lib/typescript/commonjs/components/Rating/Rating.d.ts +1 -1
- package/lib/typescript/commonjs/components/Repeater/Repeater.d.ts +1 -1
- package/lib/typescript/commonjs/components/RichTextEditor/RichTextEditor.d.ts +1 -1
- package/lib/typescript/commonjs/components/SectionHeader/SectionHeader.d.ts +1 -1
- package/lib/typescript/commonjs/components/SegmentedControl/SegmentedControl.d.ts +7 -0
- package/lib/typescript/commonjs/components/Skeleton/Skeleton.d.ts +1 -1
- package/lib/typescript/commonjs/components/Skeleton/SkeletonClock.d.ts +1 -1
- package/lib/typescript/commonjs/components/Skeleton/SkeletonProvider.d.ts +1 -1
- package/lib/typescript/commonjs/components/Skeleton/SkeletonSkip.d.ts +1 -1
- package/lib/typescript/commonjs/components/Spinner/Spinner.d.ts +1 -1
- package/lib/typescript/commonjs/components/StatusBadge/StatusBadge.d.ts +1 -1
- package/lib/typescript/commonjs/components/Stepper/Stepper.d.ts +1 -1
- package/lib/typescript/commonjs/components/Swipeable/Swipeable.d.ts +1 -1
- package/lib/typescript/commonjs/components/Text/Text.d.ts +1 -1
- package/lib/typescript/commonjs/components/TimePicker/TimePicker.d.ts +1 -1
- package/lib/typescript/commonjs/components/Timeline/Timeline.d.ts +1 -1
- package/lib/typescript/commonjs/components/Toast/Toast.d.ts +1 -1
- package/lib/typescript/commonjs/components/Toast/ToastProvider.d.ts +1 -1
- package/lib/typescript/commonjs/components/ZoomableImage/ZoomableImage.d.ts +1 -1
- package/lib/typescript/commonjs/components/index.d.ts +3 -1
- package/lib/typescript/commonjs/form/FormContext.d.ts +1 -1
- package/lib/typescript/commonjs/network/NetworkStatusBanner.d.ts +1 -1
- package/lib/typescript/commonjs/theme/ThemeContext.d.ts +1 -1
- package/lib/typescript/commonjs/theme/textStyle.d.ts +4 -1
- package/lib/typescript/commonjs/theme/toneInk.d.ts +38 -0
- package/lib/typescript/commonjs/theme/types.d.ts +37 -4
- package/lib/typescript/commonjs/utils/ariaState.d.ts +10 -0
- package/lib/typescript/module/components/Accordion/Accordion.d.ts +1 -1
- package/lib/typescript/module/components/AnimatePresence/AnimatePresence.d.ts +1 -1
- package/lib/typescript/module/components/AppBar/AppBar.d.ts +1 -1
- package/lib/typescript/module/components/AppIcon/AppIcon.d.ts +1 -1
- package/lib/typescript/module/components/AsyncBlock/AsyncBlock.d.ts +1 -1
- package/lib/typescript/module/components/Avatar/Avatar.d.ts +2 -2
- package/lib/typescript/module/components/Badge/Badge.d.ts +1 -1
- package/lib/typescript/module/components/Banner/Banner.d.ts +1 -1
- package/lib/typescript/module/components/BottomNavigation/BottomNavigation.d.ts +6 -0
- package/lib/typescript/module/components/BottomSheet/BottomSheet.d.ts +1 -1
- package/lib/typescript/module/components/Box/Box.d.ts +1 -1
- package/lib/typescript/module/components/Calendar/Calendar.d.ts +70 -0
- package/lib/typescript/module/components/Calendar/CalendarDay.d.ts +30 -0
- package/lib/typescript/module/components/Calendar/calendarDates.d.ts +24 -0
- package/lib/typescript/module/components/Calendar/calendarStyles.d.ts +125 -0
- package/lib/typescript/module/components/Calendar/index.d.ts +4 -0
- package/lib/typescript/module/components/Carousel/Carousel.d.ts +1 -1
- package/lib/typescript/module/components/Chip/Chip.d.ts +1 -1
- package/lib/typescript/module/components/ChoiceGroup/ChoiceGroup.d.ts +11 -1
- package/lib/typescript/module/components/Confetti/Confetti.d.ts +1 -1
- package/lib/typescript/module/components/DatePicker/DatePicker.d.ts +1 -1
- package/lib/typescript/module/components/DateRangePicker/DateRangePicker.d.ts +7 -1
- package/lib/typescript/module/components/Descriptions/Descriptions.d.ts +1 -1
- package/lib/typescript/module/components/Dialog/Dialog.d.ts +1 -1
- package/lib/typescript/module/components/Drawer/Drawer.d.ts +1 -1
- package/lib/typescript/module/components/EmptyState/EmptyState.d.ts +1 -1
- package/lib/typescript/module/components/ErrorBoundary/withErrorBoundary.d.ts +1 -1
- package/lib/typescript/module/components/FieldBase/Chevron.d.ts +1 -1
- package/lib/typescript/module/components/FilePicker/FilePicker.d.ts +1 -1
- package/lib/typescript/module/components/ForceUpdateDialog/ForceUpdateDialog.d.ts +1 -1
- package/lib/typescript/module/components/InlineSelect/InlineSelect.d.ts +1 -1
- package/lib/typescript/module/components/ListItem/ListItem.d.ts +24 -0
- package/lib/typescript/module/components/ListItem/index.d.ts +1 -1
- package/lib/typescript/module/components/LoaderOverlay/LoaderOverlay.d.ts +1 -1
- package/lib/typescript/module/components/Markdown/Markdown.d.ts +1 -1
- package/lib/typescript/module/components/Modal/Modal.d.ts +1 -1
- package/lib/typescript/module/components/ProfilePicker/ProfilePicker.d.ts +1 -1
- package/lib/typescript/module/components/Radio/RadioDot.d.ts +1 -1
- package/lib/typescript/module/components/Radio/RadioGroup.d.ts +1 -1
- package/lib/typescript/module/components/Rating/Rating.d.ts +1 -1
- package/lib/typescript/module/components/Repeater/Repeater.d.ts +1 -1
- package/lib/typescript/module/components/RichTextEditor/RichTextEditor.d.ts +1 -1
- package/lib/typescript/module/components/SectionHeader/SectionHeader.d.ts +1 -1
- package/lib/typescript/module/components/SegmentedControl/SegmentedControl.d.ts +7 -0
- package/lib/typescript/module/components/Skeleton/Skeleton.d.ts +1 -1
- package/lib/typescript/module/components/Skeleton/SkeletonClock.d.ts +1 -1
- package/lib/typescript/module/components/Skeleton/SkeletonProvider.d.ts +1 -1
- package/lib/typescript/module/components/Skeleton/SkeletonSkip.d.ts +1 -1
- package/lib/typescript/module/components/Spinner/Spinner.d.ts +1 -1
- package/lib/typescript/module/components/StatusBadge/StatusBadge.d.ts +1 -1
- package/lib/typescript/module/components/Stepper/Stepper.d.ts +1 -1
- package/lib/typescript/module/components/Swipeable/Swipeable.d.ts +1 -1
- package/lib/typescript/module/components/Text/Text.d.ts +1 -1
- package/lib/typescript/module/components/TimePicker/TimePicker.d.ts +1 -1
- package/lib/typescript/module/components/Timeline/Timeline.d.ts +1 -1
- package/lib/typescript/module/components/Toast/Toast.d.ts +1 -1
- package/lib/typescript/module/components/Toast/ToastProvider.d.ts +1 -1
- package/lib/typescript/module/components/ZoomableImage/ZoomableImage.d.ts +1 -1
- package/lib/typescript/module/components/index.d.ts +3 -1
- package/lib/typescript/module/form/FormContext.d.ts +1 -1
- package/lib/typescript/module/network/NetworkStatusBanner.d.ts +1 -1
- package/lib/typescript/module/theme/ThemeContext.d.ts +1 -1
- package/lib/typescript/module/theme/textStyle.d.ts +4 -1
- package/lib/typescript/module/theme/toneInk.d.ts +38 -0
- package/lib/typescript/module/theme/types.d.ts +37 -4
- package/lib/typescript/module/utils/ariaState.d.ts +10 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Modal=exports.MODAL_DISMISS_GRACE_MS=void 0;var _react=
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Modal=exports.MODAL_DISMISS_GRACE_MS=void 0;var _react=require("react"),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_squircle=require("../../utils/squircle.js"),_SquircleFill=require("../SquircleFill/SquircleFill.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_jsxRuntime=require("react/jsx-runtime");const MODAL_DISMISS_GRACE_MS=exports.MODAL_DISMISS_GRACE_MS=300,Modal=exports.Modal=(0,_react.forwardRef)((e,t)=>{const{visible:r,onRequestClose:i,presentation:a="centered",backdropOpacity:s,backdropPressClose:n=!0,animationDuration:o,accessibilityLabel:c,hardwareBackPress:l=!0,children:u,contentStyle:d,backdropStyle:m,restoreFocusRef:_,onDismissed:p,haptic:f,testID:g}=e,v=(0,_index.useTheme)(),b=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),x=o??v.motion.duration.normal,S=_reactNative.Dimensions.get("window").height,h=v.components.modal,y=h?.scaleStartValue??.9,N=(0,_react.useRef)((0,_index.createAnimatedValue)(y)).current,R=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,A=(0,_react.useRef)((0,_index.createAnimatedValue)(S)).current,C=(0,_react.useRef)(null),M=(0,_react.useRef)(!1),[j,q]=(0,_react.useState)(r),D=(0,_react.useMemo)(()=>buildStyles(v),[v]),T=(0,_react.useMemo)(()=>{const e=v.colors.background.overlay;if("number"!=typeof s)return e;const t=e.match(/^rgba?\(([^)]+)\)$/);if(!t)return e;const[r,i,a]=t[1].split(",").map(e=>e.trim());return`rgba(${r}, ${i}, ${a}, ${s})`},[v.colors.background.overlay,s]);(0,_react.useEffect)(()=>{r&&q(!0)},[r]),(0,_react.useEffect)(()=>{const e=[];if(r&&j)if("bottom"===a){const t=_reactNative.Animated.spring(A,{toValue:0,damping:v.motion.spring.gentle.damping,stiffness:v.motion.spring.gentle.stiffness,mass:v.motion.spring.gentle.mass,useNativeDriver:!0});t.start(),e.push(t)}else{const t=_reactNative.Animated.parallel([_reactNative.Animated.spring(N,{toValue:1,damping:v.motion.spring.gentle.damping,stiffness:v.motion.spring.gentle.stiffness,mass:v.motion.spring.gentle.mass,useNativeDriver:!0}),_reactNative.Animated.timing(R,{toValue:1,duration:x,useNativeDriver:!0})]);t.start(),e.push(t)}else if(j){const t=v.motion.duration.fast,r=_reactNative.Easing.bezier(...v.motion.easing.accelerate),i=_reactNative.Animated.parallel(["bottom"===a?_reactNative.Animated.timing(A,{toValue:S,duration:t,easing:r,useNativeDriver:!0}):_reactNative.Animated.parallel([_reactNative.Animated.timing(N,{toValue:y,duration:t,easing:r,useNativeDriver:!0}),_reactNative.Animated.timing(R,{toValue:0,duration:t,easing:r,useNativeDriver:!0})])]);i.start(({finished:e})=>{e&&q(!1)}),e.push(i)}return()=>e.forEach(e=>e.stop())},[r,j,a,x,N,R,A,S,v.motion.spring.gentle.damping,v.motion.spring.gentle.stiffness,v.motion.spring.gentle.mass,v.motion.duration.fast,v.motion.easing.accelerate,y]),(0,_react.useEffect)(()=>{if("web"===_reactNative.Platform.OS)return;let e,t;return r?(e=setTimeout(()=>{C.current&&_reactNative.AccessibilityInfo.sendAccessibilityEvent(C.current,"focus")},150),M.current=!0):M.current&&(M.current=!1,_&&_.current&&(t=setTimeout(()=>{const e=_.current;e&&_reactNative.AccessibilityInfo.sendAccessibilityEvent(e,"focus")},x))),()=>{e&&clearTimeout(e),t&&clearTimeout(t)}},[r,x,_]);const k=(0,_react.useRef)(!1);(0,_react.useEffect)(()=>{if(r)return void(k.current=!0);if(!k.current)return;if(k.current=!1,!p)return;const e=setTimeout(p,MODAL_DISMISS_GRACE_MS);return()=>clearTimeout(e)},[r,p]);const w=(0,_react.useCallback)(()=>{if(!n)return;const e=(0,_hapticUtils.resolveHaptic)(f,"selection");e&&(0,_hapticUtils.triggerHaptic)(e),i()},[n,i,f]),I=(0,_react.useCallback)(()=>{l&&i()},[l,i]),V=(0,_SquircleFill.useSquircle)("bottom"!==a&&"fullScreen"!==a,v.radius.xl),E=(0,_react.useMemo)(()=>"fullScreen"===a?[D.fullScreenContent,{backgroundColor:v.colors.background.elevated}]:"bottom"===a?[D.bottomContent,{backgroundColor:v.colors.background.elevated,borderTopLeftRadius:v.radius.xl,borderTopRightRadius:v.radius.xl,..._corners.smoothCorners,paddingTop:v.spacing.lg,paddingHorizontal:v.spacing.lg,paddingBottom:v.spacing.lg+b.bottom},v.shadows.xl]:[D.centeredContent,{backgroundColor:v.colors.background.elevated,borderRadius:V.active&&V.size?(0,_squircle.squircleHostRadius)(V.size.width,V.size.height,v.radius.xl):v.radius.xl,..._corners.smoothCorners,padding:v.spacing.xl},v.shadows.xl],[a,v,D,b.bottom,V.active,V.size]),z=(0,_react.useMemo)(()=>"bottom"===a?D.bottomWrapper:"fullScreen"===a?D.fullScreenWrapper:D.centeredWrapper,[a,D]),L=(0,_react.useMemo)(()=>"bottom"===a?{transform:[{translateY:A}]}:"fullScreen"===a?{opacity:R}:{opacity:R,transform:[{scale:N}]},[a,N,R,A]);return(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:j,transparent:!0,statusBarTranslucent:!0,navigationBarTranslucent:!0,animationType:"none",onRequestClose:I,testID:g,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:e=>{C.current=e,"function"==typeof t?t(e):t&&(t.current=e)},style:D.root,accessible:!1,accessibilityViewIsModal:!0,accessibilityRole:"alert",accessibilityLabel:c,children:[(0,_jsxRuntime.jsxs)(_reactNative.View,{collapsable:!1,style:[_reactNative.StyleSheet.absoluteFill,z,{backgroundColor:T},m],children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:w,accessibilityRole:"button",accessibilityLabel:"Close modal",disabled:!n}),(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[E,L,d],onLayout:V.onLayout,pointerEvents:"auto",children:[V.active&&V.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:V.size.width,height:V.size.height,radius:v.radius.xl,fill:v.colors.background.elevated}):null,u]})]}),(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})})});Modal.displayName="Modal";const buildStyles=e=>_reactNative.StyleSheet.create({root:{flex:1},centeredWrapper:{flex:1,alignItems:"center",justifyContent:"center",paddingHorizontal:16},centeredContent:{maxWidth:"90%",width:"90%"},bottomWrapper:{flex:1,justifyContent:"flex-end"},bottomContent:{width:"100%"},fullScreenWrapper:{flex:1},fullScreenContent:{flex:1}});var _default=exports.default=Modal;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.NumberInput=void 0;var _react=_interopRequireWildcard(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");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var i=new WeakMap,r=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var n,a,s={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return s;if(n=t?r:i){if(n.has(e))return n.get(e);n.set(e,s)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((a=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?n(s,t,a):s[t]=e[t]);return s})(e,t)}const DEFAULT_LONG_PRESS_DELAY=500,DEFAULT_LONG_PRESS_INTERVAL=80,roundToPrecision=(e,t)=>{if(!Number.isFinite(e))return 0;if(t<=0)return Math.round(e);const i=10**t;return Math.round(e*i)/i},clamp=(e,t,i)=>e<t?t:e>i?i:e,formatValue=(e,t,i)=>Number.isFinite(e)?t&&i>0?e.toFixed(i):String(Math.trunc(e)):"",sanitizeTyped=(e,t)=>{if(!e)return"";let i=e.replace(/[^0-9.-]/g,"");if(i=i.replace(/(?!^)-/g,""),t){const e=i.indexOf(".");-1!==e&&(i=i.slice(0,e+1)+i.slice(e+1).replace(/\./g,""))}else i=i.replace(/\./g,"");return i},NumberInput=exports.NumberInput=(0,_react.forwardRef)((e,t)=>{const{value:i,defaultValue:r,onChange:n,min:a=Number.NEGATIVE_INFINITY,max:s=Number.POSITIVE_INFINITY,step:l=1,allowDecimal:c=!1,precision:u=0,label:o,help:d,helperText:
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.NumberInput=void 0;var _react=_interopRequireWildcard(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");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var i=new WeakMap,r=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var n,a,s={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return s;if(n=t?r:i){if(n.has(e))return n.get(e);n.set(e,s)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((a=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?n(s,t,a):s[t]=e[t]);return s})(e,t)}const DEFAULT_LONG_PRESS_DELAY=500,DEFAULT_LONG_PRESS_INTERVAL=80,roundToPrecision=(e,t)=>{if(!Number.isFinite(e))return 0;if(t<=0)return Math.round(e);const i=10**t;return Math.round(e*i)/i},clamp=(e,t,i)=>e<t?t:e>i?i:e,formatValue=(e,t,i)=>Number.isFinite(e)?t&&i>0?e.toFixed(i):String(Math.trunc(e)):"",sanitizeTyped=(e,t)=>{if(!e)return"";let i=e.replace(/[^0-9.-]/g,"");if(i=i.replace(/(?!^)-/g,""),t){const e=i.indexOf(".");-1!==e&&(i=i.slice(0,e+1)+i.slice(e+1).replace(/\./g,""))}else i=i.replace(/\./g,"");return i},NumberInput=exports.NumberInput=(0,_react.forwardRef)((e,t)=>{const{value:i,defaultValue:r,onChange:n,min:a=Number.NEGATIVE_INFINITY,max:s=Number.POSITIVE_INFINITY,step:l=1,allowDecimal:c=!1,precision:u=0,label:o,help:d,helperText:b,error:_,disabled:p=!1,size:m="md",variant:f="inline",unit:x,haptic:y,accessibilityLabel:h,style:g,containerStyle:j,inputStyle:N,buttonStyle:S,unitStyle:v,labelStyle:F,textInputProps:I,testID:R}=e,[T,C]=(0,_index.useControllableState)({value:i,defaultValue:r??e.min??0,onChange:n}),P=(0,_index2.useTheme)(),z=(0,_FieldBase.resolveFieldSize)(P,m),w=(0,_FieldBase.resolveFieldTextStyle)(P,{disabled:p}),k=(0,_react.useMemo)(()=>buildStyles(P),[P]),V=P.components.numberInput?.longPressDelayMs??500,L=P.components.numberInput?.longPressIntervalMs??80,B=(0,_react.useRef)(null),[D,E]=(0,_react.useState)(formatValue(T,c,u)),[M,q]=(0,_react.useState)(!1),[O,A]=(0,_react.useState)(!1),W=(0,_react.useCallback)(()=>{p||B.current?.focus()},[p]),H=(0,_react.useRef)(null),G=(0,_react.useRef)(null),Y=(0,_react.useCallback)(()=>{null!==H.current&&(clearTimeout(H.current),H.current=null),null!==G.current&&(clearInterval(G.current),G.current=null)},[]);(0,_react.useEffect)(()=>Y,[Y]),(0,_react.useEffect)(()=>{M||E(formatValue(T,c,u))},[T,c,u,M]);const U=T<=a,$=T>=s,J=!p,K=(0,_react.useCallback)(e=>{const t=roundToPrecision(e,c?u:0),i=clamp(t,a,s);i!==T&&C(i)},[c,s,a,C,u,T]),Q=(0,_react.useCallback)(()=>{if(!J||U)return;const e=(0,_index3.resolveHaptic)(y,"selection");e&&(0,_index3.triggerHaptic)(e),K(T-l)},[U,J,y,K,l,T]),X=(0,_react.useCallback)(()=>{if(!J||$)return;const e=(0,_index3.resolveHaptic)(y,"selection");e&&(0,_index3.triggerHaptic)(e),K(T+l)},[$,J,y,K,l,T]);_react.default.useImperativeHandle(t,()=>({focus:()=>B.current?.focus(),blur:()=>B.current?.blur(),clear:()=>{E(""),Number.isFinite(a)&&a>0?C(a):C(0<a?a:0>s?s:0)}}),[s,a,C]);const Z=(0,_react.useCallback)(e=>{J&&(Y(),H.current=setTimeout(()=>{G.current=setInterval(()=>{"inc"===e?X():Q()},L)},V))},[Y,Q,X,J,V,L]),ee=(0,_react.useCallback)(e=>{const t=sanitizeTyped(e,c);E(t);const i=Number(t);""!==t&&"-"!==t&&"."!==t&&Number.isFinite(i)&&i>=a&&i<=s&&i!==T&&C(roundToPrecision(i,c?u:0))},[c,s,a,C,u,T]),te=(0,_react.useCallback)(()=>{q(!1),A(!1);const e=Number(D);if(""===D||!Number.isFinite(e))return void E(formatValue(T,c,u));const t=roundToPrecision(e,c?u:0),i=clamp(t,a,s);i!==T&&C(i),E(formatValue(i,c,u))},[c,D,s,a,C,u,T]),ie=(0,_react.useCallback)(()=>{q(!0),A(!0)},[]),re=U||p?P.colors.text.disabled:P.colors.text.primary,ne=$||p?P.colors.text.disabled:P.colors.text.primary,ae=z.iconSize+8,renderStepper=(e,t,i,r,n,a)=>(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:t,onLongPress:()=>Z(e),onPressOut:Y,delayLongPress:V,disabled:i,accessibilityRole:"button",accessibilityLabel:r,accessibilityState:{disabled:i},"aria-disabled":i,style:({pressed:e})=>[{width:ae,height:ae,alignItems:"center",justifyContent:"center",borderRadius:ae/2,..._corners.smoothCorners},e&&!i?{backgroundColor:P.colors.surface.pressed}:null,S],testID:`${R??"numberinput"}-${"inc"===e?"plus":"minus"}`,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{fontSize:z.iconSize,color:n,fontWeight:P.typography.fontWeight.semibold,lineHeight:z.iconSize+2},children:a})}),se=h??(0,_FieldBase.fieldTextAsString)(o)??"Number input",le=!0===_||(0,_FieldBase.hasFieldText)(_),ce=(0,_jsxRuntime.jsx)(_FieldBase.FieldBase,{size:m,disabled:p,error:le,filled:!0,focused:O,onPress:W,pressFeedback:!1,leading:renderStepper("dec",Q,U||p,"Decrease",re,"−"),trailing:renderStepper("inc",X,$||p,"Increase",ne,"+"),children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:k.inputRow,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:B,value:D,onChangeText:ee,onFocus:ie,onBlur:te,editable:!p,keyboardType:c?"decimal-pad":"number-pad",selectTextOnFocus:!0,accessibilityRole:"adjustable",accessibilityLabel:se,accessibilityValue:{now:Number.isFinite(T)?T:0},accessibilityState:{disabled:p},"aria-disabled":p,accessibilityActions:[{name:"increment",label:"Increase"},{name:"decrement",label:"Decrease"}],onAccessibilityAction:e=>{"increment"===e.nativeEvent.actionName&&X(),"decrement"===e.nativeEvent.actionName&&Q()},style:[k.input,{fontSize:z.fontSize,color:w.color,...w.weightStyle},N],...I}),x?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[k.unit,{fontSize:z.fontSize,color:w.placeholderColor},v],children:x}):null]})}),ue=(0,_FieldBase.hasFieldText)(o)?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:m,help:d,style:F,children:o}):null,oe=(0,_jsxRuntime.jsx)(_FieldBase.FieldMessage,{size:m,error:le,text:le?_:b});return"horizontal"===f?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[k.horizontalContainer,g,j],testID:R,accessibilityState:{disabled:p},"aria-disabled":p,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:k.horizontalLabelWrap,children:ue}),(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[ce,oe]})]}):(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[g,j],testID:R,accessibilityState:{disabled:p},"aria-disabled":p,children:[ue,ce,oe]})});NumberInput.displayName="NumberInput";const buildStyles=e=>_reactNative.StyleSheet.create({inputRow:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center"},input:{flex:1,textAlign:"center",padding:0,margin:0,includeFontPadding:!1},unit:{marginLeft:4},label:{marginBottom:6},helper:{marginTop:6},horizontalContainer:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},horizontalLabelWrap:{flexShrink:1,paddingRight:12}});var _default=exports.default=NumberInput;
|
|
@@ -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 sizeMap={sm:{cell:36,fontSize:16,borderRadius:8,gap:8},md:{cell:48,fontSize:20,borderRadius:10,gap:10},lg:{cell:56,fontSize:24,borderRadius:12,gap:12}},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,accessibilityLabel:f,style:g,cellStyle:x,textStyle:h,testID:v}=e,[b,y]=(0,_index.useControllableState)({value:i,defaultValue:r??"",onChange:n}),j=(0,_index2.useTheme)(),N=(0,_react.useMemo)(()=>buildStyles(j),[j]),R={...sizeMap[_],...j.components.otpInput?.[_]??{}},C=(0,_react.useRef)([]),[T,S]=(0,_react.useState)(-1),k=(0,_react.useRef)(null),F=(0,_react.useRef)((0,_index2.createAnimatedValue)(0)).current,V=(0,_react.useRef)(new Map),z=(0,_react.useMemo)(()=>{const e=V.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]),I=(0,_react.useRef)(-1),w=j.components.otpInput?.shakeOnError??!1,E=(0,_index.useReducedMotion)(),A=!0===d||(0,_FieldBase.hasFieldText)(d);(0,_react.useEffect)(()=>{let e;return null===k.current||!A||k.current||(!1!==p&&(0,_index3.triggerHaptic)("notificationError"),w&&!E&&((0,_index2.setNativeValue)(F,0),e=_reactNative.Animated.sequence([_reactNative.Animated.timing(F,{toValue:1,duration:j.motion.duration.instant,easing:_reactNative.Easing.linear,useNativeDriver:!0}),_reactNative.Animated.timing(F,{toValue:-1,duration:j.motion.duration.instant,easing:_reactNative.Easing.linear,useNativeDriver:!0}),_reactNative.Animated.timing(F,{toValue:1,duration:j.motion.duration.instant,easing:_reactNative.Easing.linear,useNativeDriver:!0}),_reactNative.Animated.timing(F,{toValue:0,duration:j.motion.duration.instant,easing:_reactNative.Easing.linear,useNativeDriver:!0})]),e.start())),k.current=A,()=>e?.stop()},[A,F,w,p,E,j.motion.duration.instant]),(0,_react.useEffect)(()=>{const e=I.current;if(I.current=T,e===T)return;if(-1===e&&-1===T)return;const t=[];return z.forEach((i,r)=>{const n=r===T?1:0;if(r!==T&&r!==e)return;const a=_reactNative.Animated.timing(i,{toValue:n,duration:j.motion.duration.fast,easing:_reactNative.Easing.bezier(...j.motion.easing.standard),useNativeDriver:!0});a.start(),t.push(a)}),()=>t.forEach(e=>e.stop())},[T,z,j]);const M=(0,_react.useCallback)(e=>{const t=C.current[e];t&&t.focus()},[]);(0,_react.useImperativeHandle)(t,()=>({focus:()=>M(0),blur:()=>{const e=C.current[T>=0?T:0];e?.blur()},clear:()=>{y(""),M(0)}}),[M,T,y]),(0,_react.useEffect)(()=>{if(l&&!u){const e=setTimeout(()=>M(0),c);return()=>clearTimeout(e)}},[l,c,u,M]);const O=(0,_react.useMemo)(()=>{const e=new Array(s).fill("");for(let t=0;t<Math.min(b.length,s);t+=1)e[t]=b[t]??"";return e},[b,s]),B=(0,_react.useCallback)(e=>{const t=e.slice(0,s);t!==b&&(y(t),t.length===s&&a&&a(t))},[s,y,a,b]),D=(0,_react.useCallback)((e,t)=>{const i=t.replace(/\u200B/g,""),r=sanitizeChar(i,o);if(!r){const t=O.slice(),i=(t[e]??"").length>0;if(t[e]="",B(t.join("").slice(0,s)),!i&&e>0){const t=O.slice();t[e-1]="",B(t.join("")),M(e-1)}return}const n=O[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=b.length;if(B(t),t.length!==i){const e=(0,_index3.resolveHaptic)(p,"selection");e&&(0,_index3.triggerHaptic)(e)}return void C.current[e]?.blur()}const l=O.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=b.length;if(B(u),u.length!==d){const e=(0,_index3.resolveHaptic)(p,"selection");e&&(0,_index3.triggerHaptic)(e)}const _=Math.min(c,s-1);c>=s?C.current[e]?.blur():M(_)},[O,M,o,s,p,B,b]),P=(0,_react.useCallback)((e,t)=>{if("Backspace"!==t.nativeEvent.key)return;if(0===(O[e]??"").length){if(e>0){const t=O.slice();t[e-1]="",B(t.join("")),M(e-1)}}else{const t=O.slice();t[e]="",B(t.join(""))}},[O,M,B]),q=(0,_react.useCallback)(e=>{S(e)},[]),H=(0,_react.useCallback)(()=>{S(-1)},[]),W=(0,_react.useCallback)(()=>{if(u)return;const e=O.findIndex(e=>""===e);M(-1===e?s-1:e)},[O,u,M,s]),L=f??`Enter ${s}-digit code`,$=F.interpolate({inputRange:[-1,1],outputRange:[-6,6]});return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:g,accessible:!0,accessibilityRole:"none",accessibilityLabel:L,accessibilityValue:{text:i},accessibilityState:{disabled:u},testID:v,children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:W,disabled:u,accessible:!1,children:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[N.row,{columnGap:R.gap,transform:[{translateX:$}]}],children:O.map((e,t)=>{const i=T===t,r=e.length>0,n=A?j.colors.border.error:j.colors.border.focus,a=z[t];if(!a)return null;const l=m&&r?"●":e;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:N.cellWrapper,children:[(0,_jsxRuntime.jsxs)(_FieldBase.FieldBase,{size:_,width:R.cell,height:R.cell,borderRadius:R.borderRadius,borderWidth:1.5,focused:i,error:A,filled:r,disabled:u,paddingHorizontal:0,paddingVertical:0,gap:0,style:x,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:e=>{C.current[t]=e},value:(m&&r?"":e)||"",onChangeText:e=>D(t,e),onKeyPress:e=>P(t,e),onFocus:()=>q(t),onBlur:H,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:[N.input,{fontSize:R.fontSize,color:j.colors.text.primary,...(0,_index2.fontFor)(j,"semibold")},h]}),m&&r?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:N.maskOverlay,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[{fontSize:R.fontSize,color:j.colors.text.primary,...(0,_index2.fontFor)(j,"semibold")},h],children:l})}):null]}),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[N.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:0},maskOverlay:{..._reactNative.StyleSheet.absoluteFill,alignItems:"center",justifyContent:"center"},underline:{marginTop:4,height:2,width:"60%",borderRadius:1,..._corners.smoothCorners}});var _default=exports.default=OTPInput;
|
|
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 sizeMap={sm:{cell:36,fontSize:16,borderRadius:8,gap:8},md:{cell:48,fontSize:20,borderRadius:10,gap:10},lg:{cell:56,fontSize:24,borderRadius:12,gap:12}},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,accessibilityLabel:f,style:g,cellStyle:x,textStyle:h,testID:v}=e,[b,y]=(0,_index.useControllableState)({value:i,defaultValue:r??"",onChange:n}),j=(0,_index2.useTheme)(),N=(0,_react.useMemo)(()=>buildStyles(j),[j]),R={...sizeMap[_],...j.components.otpInput?.[_]??{}},C=(0,_react.useRef)([]),[T,S]=(0,_react.useState)(-1),k=(0,_react.useRef)(null),F=(0,_react.useRef)((0,_index2.createAnimatedValue)(0)).current,V=(0,_react.useRef)(new Map),z=(0,_react.useMemo)(()=>{const e=V.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]),I=(0,_react.useRef)(-1),w=j.components.otpInput?.shakeOnError??!1,E=(0,_index.useReducedMotion)(),A=!0===d||(0,_FieldBase.hasFieldText)(d);(0,_react.useEffect)(()=>{let e;return null===k.current||!A||k.current||(!1!==p&&(0,_index3.triggerHaptic)("notificationError"),w&&!E&&((0,_index2.setNativeValue)(F,0),e=_reactNative.Animated.sequence([_reactNative.Animated.timing(F,{toValue:1,duration:j.motion.duration.instant,easing:_reactNative.Easing.linear,useNativeDriver:!0}),_reactNative.Animated.timing(F,{toValue:-1,duration:j.motion.duration.instant,easing:_reactNative.Easing.linear,useNativeDriver:!0}),_reactNative.Animated.timing(F,{toValue:1,duration:j.motion.duration.instant,easing:_reactNative.Easing.linear,useNativeDriver:!0}),_reactNative.Animated.timing(F,{toValue:0,duration:j.motion.duration.instant,easing:_reactNative.Easing.linear,useNativeDriver:!0})]),e.start())),k.current=A,()=>e?.stop()},[A,F,w,p,E,j.motion.duration.instant]),(0,_react.useEffect)(()=>{const e=I.current;if(I.current=T,e===T)return;if(-1===e&&-1===T)return;const t=[];return z.forEach((i,r)=>{const n=r===T?1:0;if(r!==T&&r!==e)return;const a=_reactNative.Animated.timing(i,{toValue:n,duration:j.motion.duration.fast,easing:_reactNative.Easing.bezier(...j.motion.easing.standard),useNativeDriver:!0});a.start(),t.push(a)}),()=>t.forEach(e=>e.stop())},[T,z,j]);const M=(0,_react.useCallback)(e=>{const t=C.current[e];t&&t.focus()},[]);(0,_react.useImperativeHandle)(t,()=>({focus:()=>M(0),blur:()=>{const e=C.current[T>=0?T:0];e?.blur()},clear:()=>{y(""),M(0)}}),[M,T,y]),(0,_react.useEffect)(()=>{if(l&&!u){const e=setTimeout(()=>M(0),c);return()=>clearTimeout(e)}},[l,c,u,M]);const O=(0,_react.useMemo)(()=>{const e=new Array(s).fill("");for(let t=0;t<Math.min(b.length,s);t+=1)e[t]=b[t]??"";return e},[b,s]),B=(0,_react.useCallback)(e=>{const t=e.slice(0,s);t!==b&&(y(t),t.length===s&&a&&a(t))},[s,y,a,b]),D=(0,_react.useCallback)((e,t)=>{const i=t.replace(/\u200B/g,""),r=sanitizeChar(i,o);if(!r){const t=O.slice(),i=(t[e]??"").length>0;if(t[e]="",B(t.join("").slice(0,s)),!i&&e>0){const t=O.slice();t[e-1]="",B(t.join("")),M(e-1)}return}const n=O[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=b.length;if(B(t),t.length!==i){const e=(0,_index3.resolveHaptic)(p,"selection");e&&(0,_index3.triggerHaptic)(e)}return void C.current[e]?.blur()}const l=O.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=b.length;if(B(u),u.length!==d){const e=(0,_index3.resolveHaptic)(p,"selection");e&&(0,_index3.triggerHaptic)(e)}const _=Math.min(c,s-1);c>=s?C.current[e]?.blur():M(_)},[O,M,o,s,p,B,b]),P=(0,_react.useCallback)((e,t)=>{if("Backspace"!==t.nativeEvent.key)return;if(0===(O[e]??"").length){if(e>0){const t=O.slice();t[e-1]="",B(t.join("")),M(e-1)}}else{const t=O.slice();t[e]="",B(t.join(""))}},[O,M,B]),q=(0,_react.useCallback)(e=>{S(e)},[]),H=(0,_react.useCallback)(()=>{S(-1)},[]),W=(0,_react.useCallback)(()=>{if(u)return;const e=O.findIndex(e=>""===e);M(-1===e?s-1:e)},[O,u,M,s]),L=f??`Enter ${s}-digit code`,$=F.interpolate({inputRange:[-1,1],outputRange:[-6,6]});return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:g,accessible:!0,accessibilityRole:"none",accessibilityLabel:L,accessibilityValue:{text:i},accessibilityState:{disabled:u},"aria-disabled":u,testID:v,children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:W,disabled:u,accessible:!1,children:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[N.row,{columnGap:R.gap,transform:[{translateX:$}]}],children:O.map((e,t)=>{const i=T===t,r=e.length>0,n=A?j.colors.border.error:j.colors.border.focus,a=z[t];if(!a)return null;const l=m&&r?"●":e;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:N.cellWrapper,children:[(0,_jsxRuntime.jsxs)(_FieldBase.FieldBase,{size:_,width:R.cell,height:R.cell,borderRadius:R.borderRadius,borderWidth:1.5,focused:i,error:A,filled:r,disabled:u,paddingHorizontal:0,paddingVertical:0,gap:0,style:x,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:e=>{C.current[t]=e},value:(m&&r?"":e)||"",onChangeText:e=>D(t,e),onKeyPress:e=>P(t,e),onFocus:()=>q(t),onBlur:H,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:[N.input,{fontSize:R.fontSize,color:j.colors.text.primary,...(0,_index2.fontFor)(j,"semibold")},h]}),m&&r?(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:N.maskOverlay,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[{fontSize:R.fontSize,color:j.colors.text.primary,...(0,_index2.fontFor)(j,"semibold")},h],children:l})}):null]}),(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[N.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:0},maskOverlay:{..._reactNative.StyleSheet.absoluteFill,alignItems:"center",justifyContent:"center"},underline:{marginTop:4,height:2,width:"60%",borderRadius:1,..._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"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useDragToDismiss=require("../../hooks/useDragToDismiss.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_jsxRuntime=require("react/jsx-runtime");const SEARCH_ICON_SIZE=18,OptionSheet=e=>{const{open:t,onClose:i,onAfterClose:r,title:o,options:a,sections:s,renderSectionHeader:n,renderOption:l,alphabetIndex:c=!1,searchPlaceholder:d="Search…",emptyText:u="No options",labelOf:p,getValue:m,disabledOf:h,destructiveOf:g,descriptionOf:x,iconOf:_,isSelected:y,onSelect:f,multi:b=!1,searchable:v=!1,searchSelectionColor:j,accessibilityLabel:R,optionStyle:S,selectedOptionStyle:N,optionTextStyle:T,selectedOptionTextStyle:C,testID:w}=e,k=(0,_index.useTheme)(),I=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),V=(0,_react.useMemo)(()=>buildStyles(k),[k]),[z,D]=(0,_react.useState)(""),L=_reactNative.Dimensions.get("window").height,P=Math.round(.7*L),[H,W]=(0,_react.useState)(t),O=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,A=(0,_react.useRef)((0,_index.createAnimatedValue)(P)).current,M=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,B=(0,_react.useMemo)(()=>_reactNative.Animated.add(A,M),[A,M]);(0,_react.useEffect)(()=>{t&&W(!0)},[t]);const E=(0,_react.useRef)(r);E.current=r;const F=(0,_react.useRef)(H);(0,_react.useEffect)(()=>{F.current&&!H&&"ios"!==_reactNative.Platform.OS&&E.current?.(),F.current=H},[H]),(0,_react.useEffect)(()=>{if(!H)return;t&&(0,_index.setNativeValue)(M,0);const e=t?_reactNative.Animated.parallel([_reactNative.Animated.timing(O,{toValue:1,duration:k.motion.duration.fast,easing:_reactNative.Easing.bezier(...k.motion.easing.standard),useNativeDriver:!1}),_reactNative.Animated.spring(A,{toValue:0,damping:k.motion.spring.snappy.damping,stiffness:k.motion.spring.snappy.stiffness,mass:k.motion.spring.snappy.mass,useNativeDriver:!0})]):_reactNative.Animated.parallel([_reactNative.Animated.timing(O,{toValue:0,duration:k.motion.duration.fast,easing:_reactNative.Easing.bezier(...k.motion.easing.standard),useNativeDriver:!1}),_reactNative.Animated.timing(A,{toValue:P,duration:k.motion.duration.fast,easing:_reactNative.Easing.bezier(...k.motion.easing.accelerate),useNativeDriver:!0})]);return e.start(({finished:e})=>{e&&!t&&W(!1)}),()=>e.stop()},[t,H,O,A,M,P,k.motion.duration.fast,k.motion.easing.standard,k.motion.easing.accelerate,k.motion.spring.snappy]);const{handleGesture:q}=(0,_useDragToDismiss.useDragToDismiss)({drag:M,travel:P,onDismiss:i}),G=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Native(),[]),[$,K]=(0,_react.useState)(0),J=(0,_reactNativeKeyboardController.useKeyboardState)(e=>e.height),U=H?Math.max(0,Math.round(J)):0,Y=Math.max(I.top,_reactNative.StatusBar.currentHeight??0)+k.spacing.sm,Z=U>0,Q=Z?Math.max(0,Math.min(P,($>0?$:L)-U-Y)):P;(0,_react.useEffect)(()=>{t||D("")},[t]);const X=(0,_react.useMemo)(()=>{const e=v?z.trim().toLowerCase():"",matches=t=>0===e.length||p(t).toLowerCase().includes(e)||(x(t)??"").toLowerCase().includes(e);if(!s)return a.filter(matches).map(e=>({kind:"option",option:e}));const t=[];return s.forEach((e,i)=>{const r=e.options.filter(matches);if(0!==r.length){t.push({kind:"header",title:e.title});for(const e of r)t.push({kind:"option",option:e,section:i})}}),t},[v,z,a,s,p,x]),ee=(0,_react.useCallback)(()=>{i()},[i]),te=(0,_react.useRef)(null),ie=(0,_react.useMemo)(()=>{const e=new Map;if(!c)return e;let t=0;if(s)for(let e=X.length-1;e>=0;e-=1)if("header"===X[e].kind){t=e+1;break}for(let i=t;i<X.length;i+=1){const t=X[i];if("option"!==t.kind)continue;const r=p(t.option).trim().charAt(0).toUpperCase(),o=/^[A-Z]$/.test(r)?r:"#";e.has(o)||e.set(o,i)}return e},[c,X,s,p]),re=c&&ie.size>0&&0===z.trim().length,oe=(0,_react.useMemo)(()=>[..."ABCDEFGHIJKLMNOPQRSTUVWXYZ",...ie.has("#")?["#"]:[]],[ie]),ae=(0,_react.useCallback)(e=>{const t=ie.get(e);void 0!==t&&te.current?.scrollToIndex({index:t,animated:!0,viewPosition:0})},[ie]),se=(0,_react.useRef)(null),ne=(0,_react.useCallback)(()=>{null!==se.current&&(clearTimeout(se.current),se.current=null)},[]),le=(0,_react.useCallback)(e=>{te.current?.scrollToOffset({offset:e.averageItemLength*e.index,animated:!1}),ne(),se.current=setTimeout(()=>{se.current=null,te.current?.scrollToIndex({index:e.index,animated:!0,viewPosition:0})},50)},[ne]);(0,_react.useEffect)(()=>(H||ne(),ne),[H,ne]);return(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:H,transparent:!0,animationType:"none",onRequestClose:ee,onDismiss:()=>E.current?.(),statusBarTranslucent:!0,navigationBarTranslucent:!0,children:(0,_jsxRuntime.jsxs)(_reactNativeGestureHandler.GestureHandlerRootView,{collapsable:!1,onLayout:e=>K(e.nativeEvent.layout.height),style:[_reactNative.StyleSheet.absoluteFill,{backgroundColor:k.colors.background.overlay}],children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:ee,accessibilityRole:"button",accessibilityLabel:"Close picker"}),(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{testID:w,accessibilityViewIsModal:!0,accessibilityLabel:R??o??"Options",style:[V.sheet,{maxHeight:Q,bottom:U,paddingBottom:Z?16:I.bottom+16,backgroundColor:k.colors.background.elevated,borderTopLeftRadius:k.radius.xl,borderTopRightRadius:k.radius.xl,..._corners.smoothCorners,transform:[{translateY:B}],...k.shadows.xl}],children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:q,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:V.sheetHandleRow,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[V.sheetHandle,{backgroundColor:k.components.select?.handleColor??k.components.bottomSheet?.handleColor??k.colors.border.primary}]})}),o?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.sheetTitle,{color:k.colors.text.primary,fontSize:k.typography.fontSize.lg,fontWeight:k.typography.fontWeight.semibold,paddingHorizontal:k.spacing.lg,marginBottom:k.spacing.sm}],children:o}):null]})}),v?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[V.searchWrap,{marginHorizontal:k.spacing.lg,marginBottom:k.spacing.sm}],children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[V.searchBox,{backgroundColor:k.colors.background.secondary,borderColor:k.colors.border.primary,borderRadius:k.radius.md,..._corners.smoothCorners,paddingHorizontal:k.spacing.md,gap:k.spacing.sm}],children:[(k.icons?.search??_defaultIcons.defaultIcons.search)({size:18,color:k.colors.text.tertiary}),(0,_jsxRuntime.jsx)(_reactNative.TextInput,{value:z,onChangeText:D,placeholder:d,placeholderTextColor:k.colors.text.tertiary,selectionColor:j??k.colors.border.focus,accessibilityLabel:"Search options",style:[V.searchInput,{color:k.colors.text.primary,fontSize:k.typography.fontSize.base,paddingVertical:k.spacing.sm}]}),z.length>0?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>D(""),hitSlop:8,accessibilityRole:"button",accessibilityLabel:"Clear search",children:(k.icons?.close??_defaultIcons.defaultIcons.close)({size:18,color:k.colors.text.secondary})}):null]})}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[V.listWrap,re?V.listRow:null],children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:G,children:(0,_jsxRuntime.jsx)(_reactNative.FlatList,{ref:te,data:X,keyExtractor:e=>"header"===e.kind?`h:${e.title}`:`o:${e.section??""}:${String(m(e.option))}`,renderItem:({item:e})=>{if("header"===e.kind)return(0,_jsxRuntime.jsx)(_reactNative.View,{accessible:!0,accessibilityRole:"header",style:[V.sectionHeader,{paddingHorizontal:k.spacing.lg,paddingTop:k.spacing.md}],children:n?n(e.title):(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.sectionTitle,{color:k.colors.text.tertiary,fontSize:k.typography.fontSize.xs,fontWeight:k.typography.fontWeight.semibold}],children:e.title.toUpperCase()})});const t=e.option,i=p(t),r=m(t),o=x(t),a=_(t),s=y(r),c=h(t),d=g?.(t)??!1;return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>f(t),disabled:c,android_ripple:{color:k.colors.surface.pressed,borderless:!1},accessibilityRole:"button",accessibilityLabel:i,accessibilityState:{selected:s,disabled:c},style:({pressed:e})=>[V.optionRow,{backgroundColor:s?k.colors.surface.selected:e?k.colors.surface.pressed:"transparent",opacity:c?.5:1,paddingHorizontal:k.spacing.lg,paddingVertical:k.spacing.md},S,s?N:null],children:[l?(0,_jsxRuntime.jsx)(_reactNative.View,{style:V.optionTextWrap,children:l(t,{selected:s,disabled:c})}):(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[a?(0,_jsxRuntime.jsx)(_reactNative.View,{style:V.optionIcon,children:a}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:V.optionTextWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.optionLabel,{color:d?k.colors.error:s?k.colors.primary:k.colors.text.primary,fontSize:k.typography.fontSize.base,fontWeight:s?k.typography.fontWeight.semibold:k.typography.fontWeight.medium},T,s?C:null],children:i}),o?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.optionDescription,{color:k.colors.text.tertiary,fontSize:k.typography.fontSize.sm}],numberOfLines:2,children:o}):null]})]}),b?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[V.checkbox,{borderColor:s?k.colors.primary:k.colors.border.primary,backgroundColor:s?k.colors.primary:"transparent"}],children:s?(0,_jsxRuntime.jsx)(_reactNative.View,{style:V.checkboxTick}):null}):s?"icon"===k.components.optionSheet?.selectedMarker?(0,_jsxRuntime.jsx)(_reactNative.View,{style:V.singleSelectedIcon,children:(k.icons?.selectedTick??_defaultIcons.defaultIcons.selectedTick)({size:20,color:k.colors.primary})}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[V.singleSelectedDot,{backgroundColor:k.colors.primary}]}):null]})},onScrollToIndexFailed:le,overScrollMode:"never",bounces:!1,keyboardShouldPersistTaps:"handled",showsVerticalScrollIndicator:!re,style:re?V.listBesideRail:null,ListEmptyComponent:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.empty,{color:k.colors.text.tertiary,fontSize:k.typography.fontSize.sm,paddingVertical:k.spacing.xl}],children:u})})}),re?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[V.rail,{paddingRight:k.spacing.xs}],accessibilityRole:"list",accessibilityLabel:"Jump to letter",testID:"option-sheet-alphabet",children:oe.map(e=>{const t=ie.has(e);return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>ae(e),disabled:!t,hitSlop:{left:8,right:8},accessibilityRole:"button",accessibilityLabel:`Jump to ${e}`,accessibilityState:{disabled:!t},style:V.railLetter,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.railLetterText,{color:t?k.colors.primary:k.colors.text.tertiary,fontSize:k.typography.fontSize.xs,fontWeight:k.typography.fontWeight.semibold,opacity:t?1:.45}],children:e})},e)})}):null]}),b?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[V.sheetFooter,{borderTopColor:k.colors.border.secondary,paddingHorizontal:k.spacing.lg,paddingVertical:k.spacing.md}],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:ee,accessibilityRole:"button",accessibilityLabel:"Done",style:({pressed:e})=>[V.doneButton,{backgroundColor:e?k.colors.primaryPressed:k.colors.primary,borderRadius:k.radius.md,..._corners.smoothCorners,paddingVertical:k.spacing.sm,paddingHorizontal:k.spacing.lg}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:k.colors.onPrimary,fontSize:k.typography.fontSize.base,fontWeight:k.typography.fontWeight.semibold},children:"Done"})})}):null]}),(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})})};exports.OptionSheet=OptionSheet,OptionSheet.displayName="OptionSheet";const 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"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_useDragToDismiss=require("../../hooks/useDragToDismiss.js"),_index=require("../../theme/index.js"),_corners=require("../../utils/corners.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_ToastProvider=require("../Toast/ToastProvider.js"),_jsxRuntime=require("react/jsx-runtime");const SEARCH_ICON_SIZE=18,OptionSheet=e=>{const{open:t,onClose:i,onAfterClose:r,title:o,options:a,sections:s,renderSectionHeader:n,renderOption:l,alphabetIndex:c=!1,searchPlaceholder:d="Search…",emptyText:u="No options",labelOf:p,getValue:m,disabledOf:h,destructiveOf:g,descriptionOf:x,iconOf:_,isSelected:y,onSelect:b,multi:f=!1,searchable:v=!1,searchSelectionColor:j,accessibilityLabel:R,optionStyle:S,selectedOptionStyle:N,optionTextStyle:T,selectedOptionTextStyle:C,testID:w}=e,k=(0,_index.useTheme)(),I=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),V=(0,_react.useMemo)(()=>buildStyles(k),[k]),[z,D]=(0,_react.useState)(""),L=_reactNative.Dimensions.get("window").height,P=Math.round(.7*L),[H,W]=(0,_react.useState)(t),O=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,A=(0,_react.useRef)((0,_index.createAnimatedValue)(P)).current,M=(0,_react.useRef)((0,_index.createAnimatedValue)(0)).current,B=(0,_react.useMemo)(()=>_reactNative.Animated.add(A,M),[A,M]);(0,_react.useEffect)(()=>{t&&W(!0)},[t]);const E=(0,_react.useRef)(r);E.current=r;const F=(0,_react.useRef)(H);(0,_react.useEffect)(()=>{F.current&&!H&&"ios"!==_reactNative.Platform.OS&&E.current?.(),F.current=H},[H]),(0,_react.useEffect)(()=>{if(!H)return;t&&(0,_index.setNativeValue)(M,0);const e=t?_reactNative.Animated.parallel([_reactNative.Animated.timing(O,{toValue:1,duration:k.motion.duration.fast,easing:_reactNative.Easing.bezier(...k.motion.easing.standard),useNativeDriver:!1}),_reactNative.Animated.spring(A,{toValue:0,damping:k.motion.spring.snappy.damping,stiffness:k.motion.spring.snappy.stiffness,mass:k.motion.spring.snappy.mass,useNativeDriver:!0})]):_reactNative.Animated.parallel([_reactNative.Animated.timing(O,{toValue:0,duration:k.motion.duration.fast,easing:_reactNative.Easing.bezier(...k.motion.easing.standard),useNativeDriver:!1}),_reactNative.Animated.timing(A,{toValue:P,duration:k.motion.duration.fast,easing:_reactNative.Easing.bezier(...k.motion.easing.accelerate),useNativeDriver:!0})]);return e.start(({finished:e})=>{e&&!t&&W(!1)}),()=>e.stop()},[t,H,O,A,M,P,k.motion.duration.fast,k.motion.easing.standard,k.motion.easing.accelerate,k.motion.spring.snappy]);const{handleGesture:q}=(0,_useDragToDismiss.useDragToDismiss)({drag:M,travel:P,onDismiss:i}),G=(0,_react.useMemo)(()=>_reactNativeGestureHandler.Gesture.Native(),[]),[$,K]=(0,_react.useState)(0),J=(0,_reactNativeKeyboardController.useKeyboardState)(e=>e.height),U=H?Math.max(0,Math.round(J)):0,Y=Math.max(I.top,_reactNative.StatusBar.currentHeight??0)+k.spacing.sm,Z=U>0,Q=Z?Math.max(0,Math.min(P,($>0?$:L)-U-Y)):P;(0,_react.useEffect)(()=>{t||D("")},[t]);const X=(0,_react.useMemo)(()=>{const e=v?z.trim().toLowerCase():"",matches=t=>0===e.length||p(t).toLowerCase().includes(e)||(x(t)??"").toLowerCase().includes(e);if(!s)return a.filter(matches).map(e=>({kind:"option",option:e}));const t=[];return s.forEach((e,i)=>{const r=e.options.filter(matches);if(0!==r.length){t.push({kind:"header",title:e.title});for(const e of r)t.push({kind:"option",option:e,section:i})}}),t},[v,z,a,s,p,x]),ee=(0,_react.useCallback)(()=>{i()},[i]),te=(0,_react.useRef)(null),ie=(0,_react.useMemo)(()=>{const e=new Map;if(!c)return e;let t=0;if(s)for(let e=X.length-1;e>=0;e-=1)if("header"===X[e].kind){t=e+1;break}for(let i=t;i<X.length;i+=1){const t=X[i];if("option"!==t.kind)continue;const r=p(t.option).trim().charAt(0).toUpperCase(),o=/^[A-Z]$/.test(r)?r:"#";e.has(o)||e.set(o,i)}return e},[c,X,s,p]),re=c&&ie.size>0&&0===z.trim().length,oe=(0,_react.useMemo)(()=>[..."ABCDEFGHIJKLMNOPQRSTUVWXYZ",...ie.has("#")?["#"]:[]],[ie]),ae=(0,_react.useCallback)(e=>{const t=ie.get(e);void 0!==t&&te.current?.scrollToIndex({index:t,animated:!0,viewPosition:0})},[ie]),se=(0,_react.useRef)(null),ne=(0,_react.useCallback)(()=>{null!==se.current&&(clearTimeout(se.current),se.current=null)},[]),le=(0,_react.useCallback)(e=>{te.current?.scrollToOffset({offset:e.averageItemLength*e.index,animated:!1}),ne(),se.current=setTimeout(()=>{se.current=null,te.current?.scrollToIndex({index:e.index,animated:!0,viewPosition:0})},50)},[ne]);(0,_react.useEffect)(()=>(H||ne(),ne),[H,ne]);return(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:H,transparent:!0,animationType:"none",onRequestClose:ee,onDismiss:()=>E.current?.(),statusBarTranslucent:!0,navigationBarTranslucent:!0,children:(0,_jsxRuntime.jsxs)(_reactNativeGestureHandler.GestureHandlerRootView,{collapsable:!1,onLayout:e=>K(e.nativeEvent.layout.height),style:[_reactNative.StyleSheet.absoluteFill,{backgroundColor:k.colors.background.overlay}],children:[(0,_jsxRuntime.jsx)(_reactNative.Pressable,{style:_reactNative.StyleSheet.absoluteFill,onPress:ee,accessibilityRole:"button",accessibilityLabel:"Close picker"}),(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{testID:w,accessibilityViewIsModal:!0,accessibilityLabel:R??o??"Options",style:[V.sheet,{maxHeight:Q,bottom:U,paddingBottom:Z?16:I.bottom+16,backgroundColor:k.colors.background.elevated,borderTopLeftRadius:k.radius.xl,borderTopRightRadius:k.radius.xl,..._corners.smoothCorners,transform:[{translateY:B}],...k.shadows.xl}],children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:q,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:V.sheetHandleRow,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[V.sheetHandle,{backgroundColor:k.components.select?.handleColor??k.components.bottomSheet?.handleColor??k.colors.border.primary}]})}),o?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.sheetTitle,{color:k.colors.text.primary,fontSize:k.typography.fontSize.lg,fontWeight:k.typography.fontWeight.semibold,paddingHorizontal:k.spacing.lg,marginBottom:k.spacing.sm}],children:o}):null]})}),v?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[V.searchWrap,{marginHorizontal:k.spacing.lg,marginBottom:k.spacing.sm}],children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[V.searchBox,{backgroundColor:k.colors.background.secondary,borderColor:k.colors.border.primary,borderRadius:k.radius.md,..._corners.smoothCorners,paddingHorizontal:k.spacing.md,gap:k.spacing.sm}],children:[(k.icons?.search??_defaultIcons.defaultIcons.search)({size:18,color:k.colors.text.tertiary}),(0,_jsxRuntime.jsx)(_reactNative.TextInput,{value:z,onChangeText:D,placeholder:d,placeholderTextColor:k.colors.text.tertiary,selectionColor:j??k.colors.border.focus,accessibilityLabel:"Search options",style:[V.searchInput,{color:k.colors.text.primary,fontSize:k.typography.fontSize.base,paddingVertical:k.spacing.sm}]}),z.length>0?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>D(""),hitSlop:8,accessibilityRole:"button",accessibilityLabel:"Clear search",children:(k.icons?.close??_defaultIcons.defaultIcons.close)({size:18,color:k.colors.text.secondary})}):null]})}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[V.listWrap,re?V.listRow:null],children:[(0,_jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector,{gesture:G,children:(0,_jsxRuntime.jsx)(_reactNative.FlatList,{ref:te,data:X,keyExtractor:e=>"header"===e.kind?`h:${e.title}`:`o:${e.section??""}:${String(m(e.option))}`,renderItem:({item:e})=>{if("header"===e.kind)return(0,_jsxRuntime.jsx)(_reactNative.View,{accessible:!0,accessibilityRole:"header",style:[V.sectionHeader,{paddingHorizontal:k.spacing.lg,paddingTop:k.spacing.md}],children:n?n(e.title):(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.sectionTitle,{color:k.colors.text.tertiary,fontSize:k.typography.fontSize.xs,fontWeight:k.typography.fontWeight.semibold}],children:e.title.toUpperCase()})});const t=e.option,i=p(t),r=m(t),o=x(t),a=_(t),s=y(r),c=h(t),d=g?.(t)??!1;return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>b(t),disabled:c,android_ripple:{color:k.colors.surface.pressed,borderless:!1},accessibilityRole:"button",accessibilityLabel:i,accessibilityState:{selected:s,disabled:c},"aria-selected":s,"aria-disabled":c,style:({pressed:e})=>[V.optionRow,{backgroundColor:s?k.colors.surface.selected:e?k.colors.surface.pressed:"transparent",opacity:c?.5:1,paddingHorizontal:k.spacing.lg,paddingVertical:k.spacing.md},S,s?N:null],children:[l?(0,_jsxRuntime.jsx)(_reactNative.View,{style:V.optionTextWrap,children:l(t,{selected:s,disabled:c})}):(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[a?(0,_jsxRuntime.jsx)(_reactNative.View,{style:V.optionIcon,children:a}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:V.optionTextWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.optionLabel,{color:d?k.colors.toneText.error:s?k.colors.primary:k.colors.text.primary,fontSize:k.typography.fontSize.base,fontWeight:s?k.typography.fontWeight.semibold:k.typography.fontWeight.medium},T,s?C:null],children:i}),o?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.optionDescription,{color:k.colors.text.tertiary,fontSize:k.typography.fontSize.sm}],numberOfLines:2,children:o}):null]})]}),f?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[V.checkbox,{borderColor:s?k.colors.primary:k.colors.border.primary,backgroundColor:s?k.colors.primary:"transparent"}],children:s?(0,_jsxRuntime.jsx)(_reactNative.View,{style:V.checkboxTick}):null}):s?"icon"===k.components.optionSheet?.selectedMarker?(0,_jsxRuntime.jsx)(_reactNative.View,{style:V.singleSelectedIcon,children:(k.icons?.selectedTick??_defaultIcons.defaultIcons.selectedTick)({size:20,color:k.colors.primary})}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[V.singleSelectedDot,{backgroundColor:k.colors.primary}]}):null]})},onScrollToIndexFailed:le,overScrollMode:"never",bounces:!1,keyboardShouldPersistTaps:"handled",showsVerticalScrollIndicator:!re,style:re?V.listBesideRail:null,ListEmptyComponent:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.empty,{color:k.colors.text.tertiary,fontSize:k.typography.fontSize.sm,paddingVertical:k.spacing.xl}],children:u})})}),re?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[V.rail,{paddingRight:k.spacing.xs}],accessibilityRole:"list",accessibilityLabel:"Jump to letter",testID:"option-sheet-alphabet",children:oe.map(e=>{const t=ie.has(e);return(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>ae(e),disabled:!t,hitSlop:{left:8,right:8},accessibilityRole:"button",accessibilityLabel:`Jump to ${e}`,accessibilityState:{disabled:!t},"aria-disabled":!t,style:V.railLetter,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[V.railLetterText,{color:t?k.colors.primary:k.colors.text.tertiary,fontSize:k.typography.fontSize.xs,fontWeight:k.typography.fontWeight.semibold,opacity:t?1:.45}],children:e})},e)})}):null]}),f?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[V.sheetFooter,{borderTopColor:k.colors.border.secondary,paddingHorizontal:k.spacing.lg,paddingVertical:k.spacing.md}],children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:ee,accessibilityRole:"button",accessibilityLabel:"Done",style:({pressed:e})=>[V.doneButton,{backgroundColor:e?k.colors.primaryPressed:k.colors.primary,borderRadius:k.radius.md,..._corners.smoothCorners,paddingVertical:k.spacing.sm,paddingHorizontal:k.spacing.lg}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:{color:k.colors.onPrimary,fontSize:k.typography.fontSize.base,fontWeight:k.typography.fontWeight.semibold},children:"Done"})})}):null]}),(0,_jsxRuntime.jsx)(_ToastProvider.ToastHost,{})]})})};exports.OptionSheet=OptionSheet,OptionSheet.displayName="OptionSheet";const 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 +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,_e]=(0,_react.useState)(!1),[fe,he]=(0,_react.useState)(!1),[ge,xe]=(0,_react.useState)(!1),Ce=(0,_react.useRef)(!1);(0,_react.useEffect)(()=>{ge||(Ce.current=!1)},[ge]);const Ne=(0,_index4.resolveFieldSize)(Y,w),ye=(0,_index4.resolveFieldTextStyle)(Y,{disabled:z}),Se=q??Y.components.field?.defaultVariant??"outlined",ve="underline"===Se,Le=k??Y.components.phoneNumberInput?.borderRadius,Ee=Y.spacing.md,[Ie,je]=(0,_react.useState)(0),Fe=Ie+Ee+1+Ee,Oe=ue.nationalNumber.length>0,Te=D&&!j&&!Oe&&T.length>0,Ae=de||Oe,Pe=Boolean(j)&&"float"===F&&Ie>0,Re=(0,_useFloatingLabel.useFloatingLabel)({label:j,enabled:Pe,floated:Ae,required:D,variant:Se,sizeTokens:Ne,leadingOffset:Fe,paddingLeft:ve?0:Ne.paddingHorizontal,color:Y.colors.field.label,style:O}),De=(0,_react.useMemo)(()=>m.find(e=>e.iso===ue.iso),[m,ue.iso]),ze=planOf(ue.iso),we=E&&ze?(0,_mobileCore.formatPhoneAsTyped)(ue.nationalNumber,ze):ue.nationalNumber,qe=ee(ue.iso),ke=0===ue.nationalNumber.length||pe||!Number.isFinite(qe)?void 0:we.length+Math.max(0,qe-ue.nationalNumber.length),Me=ne(ue);(0,_react.useEffect)(()=>{Oe||he(!1)},[Oe]);const Ve=ze?(0,_mobileCore.maxNationalNumberLength)(ze,!1===v?"any":v):Number.POSITIVE_INFINITY,Be=ue.nationalNumber.length>=Ve,$e=P??(!1!==v&&!1!==R&&Oe&&!Me&&(fe||Be)?R||("mobile"===v?"Enter a valid mobile number":"Enter a valid number"):void 0),Ge=(0,_react.useRef)(Me),Ue=(0,_react.useRef)(ue);Ue.current=ue,(0,_react.useEffect)(()=>{Ge.current!==Me&&(Ge.current=Me,b?.(Me),Me&&d?.(formatE164(Ue.current)))},[Me,d,b]);const We=(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]),He=(0,_react.useCallback)(e=>{const t=e;ce({callingCode:t.code,iso:t.iso,nationalNumber:te(ue.nationalNumber,t.iso)}),xe(!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({...Ue.current,nationalNumber:""}),isFocused:()=>J.current?.isFocused()??!1,getValue:()=>Ue.current,getE164:()=>formatE164(Ue.current),getFormatted:()=>{const e=Ue.current,t=planOf(e.iso);return t?(0,_mobileCore.formatPhoneAsTyped)(e.nationalNumber,t):e.nationalNumber},isValid:()=>ne(Ue.current),getCountry:()=>m.find(e=>e.iso===Ue.current.iso)}),[m,ne,ce]);const Ye=z||I,Ke=(0,_jsxRuntime.jsx)(_index4.FieldBase,{size:w,variant:Se,borderRadius:Le,topNotch:Re.topNotch,focused:de,disabled:z,error:(0,_index4.hasFieldText)($e),filled:Oe,onPress:me,pressFeedback:!1,leadingDivider:!0,paddingLeft:ve?0:void 0,leading:(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>{Ye||(Ce.current=!0,xe(!0))},disabled:Ye,accessibilityRole:"button",accessibilityLabel:$??`Country code, currently +${ue.callingCode}`,accessibilityState:{disabled:Ye},hitSlop:6,onLayout:e=>{const{width:t}=e.nativeEvent.layout;je(e=>e===t?e:t)},style:K.codeTrigger,testID:H?`${H}-code`:void 0,children:[Z(De,Ne.fontSize,H?`${H}-flag`:void 0),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[K.codeText,{color:ye.color,fontSize:Ne.fontSize}],children:`+${ue.callingCode}`}),I?null:(0,_jsxRuntime.jsx)(_Chevron.Chevron,{color:z?Y.colors.field.iconDisabled:Y.colors.field.icon,size:Ne.iconSize,open:ge})]}),children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:K.inputWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:J,value:we,maxLength:ke,onChangeText:We,returnKeyType:a,submitBehavior:s,onSubmitEditing:u,blurOnSubmit:c,onSelectionChange:e=>{const{start:t,end:i}=e.nativeEvent.selection;_e(t!==i)},onFocus:()=>{be(!0),G?.()},onBlur:()=>{be(!1),Oe&&!Ce.current&&he(!0),U?.()},editable:!z,placeholder:Pe&&!Ae||Te?void 0:T,placeholderTextColor:ye.placeholderColor,accessibilityLabel:B??j??T,selectionColor:Y.colors.field.caret,keyboardType:"phone-pad",textContentType:"telephoneNumber",autoComplete:"tel",style:[K.input,{color:ye.color,fontSize:Ne.fontSize,...ye.weightStyle,paddingLeft:ve?0:void 0}],testID:H?`${H}-input`:void 0}),Te?(0,_jsxRuntime.jsx)(_index4.RequiredPlaceholder,{text:T,color:ye.placeholderColor,fontSize:Ne.fontSize,weightStyle:ye.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:[Ke,Re.node]}),(0,_jsxRuntime.jsx)(_index4.FieldMessage,{size:w,error:(0,_index4.hasFieldText)($e),text:$e??A}),(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:ge,onClose:()=>xe(!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===De?.iso,onSelect:He,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 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,_e]=(0,_react.useState)(!1),[fe,he]=(0,_react.useState)(!1),[ge,xe]=(0,_react.useState)(!1),Ce=(0,_react.useRef)(!1);(0,_react.useEffect)(()=>{ge||(Ce.current=!1)},[ge]);const Ne=(0,_index4.resolveFieldSize)(Y,w),ye=(0,_index4.resolveFieldTextStyle)(Y,{disabled:z}),Se=q??Y.components.field?.defaultVariant??"outlined",ve="underline"===Se,Le=k??Y.components.phoneNumberInput?.borderRadius,Ee=Y.spacing.md,[Ie,je]=(0,_react.useState)(0),Fe=Ie+Ee+1+Ee,Oe=ue.nationalNumber.length>0,Te=D&&!j&&!Oe&&T.length>0,Ae=de||Oe,Pe=Boolean(j)&&"float"===F&&Ie>0,Re=(0,_useFloatingLabel.useFloatingLabel)({label:j,enabled:Pe,floated:Ae,required:D,variant:Se,sizeTokens:Ne,leadingOffset:Fe,paddingLeft:ve?0:Ne.paddingHorizontal,color:Y.colors.field.label,style:O}),De=(0,_react.useMemo)(()=>m.find(e=>e.iso===ue.iso),[m,ue.iso]),ze=planOf(ue.iso),we=E&&ze?(0,_mobileCore.formatPhoneAsTyped)(ue.nationalNumber,ze):ue.nationalNumber,qe=ee(ue.iso),ke=0===ue.nationalNumber.length||pe||!Number.isFinite(qe)?void 0:we.length+Math.max(0,qe-ue.nationalNumber.length),Me=ne(ue);(0,_react.useEffect)(()=>{Oe||he(!1)},[Oe]);const Ve=ze?(0,_mobileCore.maxNationalNumberLength)(ze,!1===v?"any":v):Number.POSITIVE_INFINITY,Be=ue.nationalNumber.length>=Ve,$e=P??(!1!==v&&!1!==R&&Oe&&!Me&&(fe||Be)?R||("mobile"===v?"Enter a valid mobile number":"Enter a valid number"):void 0),Ge=(0,_react.useRef)(Me),Ue=(0,_react.useRef)(ue);Ue.current=ue,(0,_react.useEffect)(()=>{Ge.current!==Me&&(Ge.current=Me,b?.(Me),Me&&d?.(formatE164(Ue.current)))},[Me,d,b]);const We=(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]),He=(0,_react.useCallback)(e=>{const t=e;ce({callingCode:t.code,iso:t.iso,nationalNumber:te(ue.nationalNumber,t.iso)}),xe(!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({...Ue.current,nationalNumber:""}),isFocused:()=>J.current?.isFocused()??!1,getValue:()=>Ue.current,getE164:()=>formatE164(Ue.current),getFormatted:()=>{const e=Ue.current,t=planOf(e.iso);return t?(0,_mobileCore.formatPhoneAsTyped)(e.nationalNumber,t):e.nationalNumber},isValid:()=>ne(Ue.current),getCountry:()=>m.find(e=>e.iso===Ue.current.iso)}),[m,ne,ce]);const Ye=z||I,Ke=(0,_jsxRuntime.jsx)(_index4.FieldBase,{size:w,variant:Se,borderRadius:Le,topNotch:Re.topNotch,focused:de,disabled:z,error:(0,_index4.hasFieldText)($e),filled:Oe,onPress:me,pressFeedback:!1,leadingDivider:!0,paddingLeft:ve?0:void 0,leading:(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>{Ye||(Ce.current=!0,xe(!0))},disabled:Ye,accessibilityRole:"button",accessibilityLabel:$??`Country code, currently +${ue.callingCode}`,accessibilityState:{disabled:Ye},"aria-disabled":Ye,hitSlop:6,onLayout:e=>{const{width:t}=e.nativeEvent.layout;je(e=>e===t?e:t)},style:K.codeTrigger,testID:H?`${H}-code`:void 0,children:[Z(De,Ne.fontSize,H?`${H}-flag`:void 0),(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[K.codeText,{color:ye.color,fontSize:Ne.fontSize}],children:`+${ue.callingCode}`}),I?null:(0,_jsxRuntime.jsx)(_Chevron.Chevron,{color:z?Y.colors.field.iconDisabled:Y.colors.field.icon,size:Ne.iconSize,open:ge})]}),children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:K.inputWrap,children:[(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:J,value:we,maxLength:ke,onChangeText:We,returnKeyType:a,submitBehavior:s,onSubmitEditing:u,blurOnSubmit:c,onSelectionChange:e=>{const{start:t,end:i}=e.nativeEvent.selection;_e(t!==i)},onFocus:()=>{be(!0),G?.()},onBlur:()=>{be(!1),Oe&&!Ce.current&&he(!0),U?.()},editable:!z,placeholder:Pe&&!Ae||Te?void 0:T,placeholderTextColor:ye.placeholderColor,accessibilityLabel:B??j??T,selectionColor:Y.colors.field.caret,keyboardType:"phone-pad",textContentType:"telephoneNumber",autoComplete:"tel",style:[K.input,{color:ye.color,fontSize:Ne.fontSize,...ye.weightStyle,paddingLeft:ve?0:void 0}],testID:H?`${H}-input`:void 0}),Te?(0,_jsxRuntime.jsx)(_index4.RequiredPlaceholder,{text:T,color:ye.placeholderColor,fontSize:Ne.fontSize,weightStyle:ye.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:[Ke,Re.node]}),(0,_jsxRuntime.jsx)(_index4.FieldMessage,{size:w,error:(0,_index4.hasFieldText)($e),text:$e??A}),(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:ge,onClose:()=>xe(!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===De?.iso,onSelect:He,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 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.ProfilePicker=void 0;var _react=
|
|
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.text.inverse};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),_e=(0,_react.useCallback)(e=>{de.current||($(!1),"remove"===e.kind?ce():de.current=e.source)},[ce]),me=(0,_react.useCallback)(()=>{const e=de.current;de.current=null,e&&le(e)},[le]),xe=w??"profile-picker",pe=F??(K?V.pick:o),be=(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})}),ge=(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:pe,accessibilityHint:(0,_index5.fieldTextAsString)(Y),accessibilityState:K?{disabled:X,busy:l}:{busy:l},"aria-disabled":K?X:void 0,"aria-busy":l,testID:`${xe}-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:pe},Q??"initials"):be,l?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.fill,styles.overlay,{borderRadius:re,..._corners.smoothCorners,backgroundColor:A.colors.background.overlay}],testID:`${xe}-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:`${xe}-badge`,style:[styles.badge,{width:oe,height:oe,borderRadius:oe/2,..._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]})}),he="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,...(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:[ge,he]}),(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:W,onClose:()=>$(!1),onAfterClose:me,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=>_e(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,marginTop:2},textCentred:{textAlign:"center"}});var _default=exports.default=ProfilePicker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useRadioGroup=exports.default=exports.RadioGroupContext=exports.Radio=void 0;var _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:
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.useRadioGroup=exports.default=exports.RadioGroupContext=exports.Radio=void 0;var _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:R,testID:y,...m}=e,C=(0,_index.useTheme)(),j=(0,_react.useMemo)(()=>buildStyles(C),[C]),w=useRadioGroup();__DEV__&&void 0===i&&console.warn("[@webority/mobile-ui] Radio was rendered without a `value`. Selection compares against it, so the group cannot track which option is chosen.");const f=w?w.selectedValue===i:!!r,S=w&&w.disabled||s,v=toneColor(C,n),g=C.components.radio?.labelGap??10,G=u??a;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),w?w.onChange(i):o?.(i)},disabled:S,accessibilityRole:"radio",accessibilityLabel:G,accessibilityHint:m.accessibilityHint??l,accessibilityState:{checked:f,disabled:S},"aria-checked":f,"aria-disabled":S,testID:y,hitSlop:6,...m,style:({pressed:e})=>[j.row,(0,_ChoiceText.hasChoiceDetail)(l,c)?j.rowTop:null,{opacity:S?.55:e?.85:1},x,_],children:[(0,_jsxRuntime.jsx)(_RadioDot.RadioDot,{selected:f,color:v,disabled:S&&!f,size:d,style:[!(0,_index2.hasFieldText)(c)||f||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:g},labelStyle:R})]})});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=
|
|
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 sizeMap={sm:{outer:16,inner:8},md:{outer:20,inner:10},lg:{outer:24,inner:12}},RadioDot=e=>{const{selected:t,color:r,disabled:o=!1,size:s="md",style:i,dotStyle:n}=e,a=(0,_index.useTheme)(),d=(0,_react.useMemo)(()=>buildStyles(),[]),u=r??a.colors.primary;let c,l;if("number"==typeof s)c=s,l=Math.round(s/2);else{const e=a.components.radio?.[s];c=e?.outer??sizeMap[s].outer,l=e?.inner??sizeMap[s].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:a.motion.spring.snappy.damping,stiffness:a.motion.spring.snappy.stiffness,mass:a.motion.spring.snappy.mass,useNativeDriver:!0});return e.start(),()=>e.stop()},[t,p,a.motion.spring.snappy]);const m=p.interpolate({inputRange:[0,1],outputRange:[0,1]}),_=o?a.colors.border.primary:t?u:a.colors.border.primary;return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[d.outer,{width:c,height:c,borderWidth:a.colors.border.width,borderRadius:c/2,..._corners.smoothCorners,borderColor:_},i],children:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:[{width:l,height:l,borderRadius:l/2,..._corners.smoothCorners,backgroundColor:o?a.colors.text.disabled:u,opacity:p,transform:[{scale:m}]},n]})})};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.RadioGroup=void 0;var _react=
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.RadioGroup=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_Radio=require("./Radio.js"),_jsxRuntime=require("react/jsx-runtime");const RadioGroup=({value:e,defaultValue:a,onChange:i,children:t,disabled:r=!1,accessibilityLabel:o,style:s,testID:d})=>{const[u,l]=(0,_index.useControllableState)({value:e,defaultValue:a??void 0,onChange:i}),c=(0,_react.useMemo)(()=>({selectedValue:u,onChange:l,disabled:r}),[u,l,r]);return(0,_jsxRuntime.jsx)(_Radio.RadioGroupContext.Provider,{value:c,children:(0,_jsxRuntime.jsx)(_reactNative.View,{accessibilityRole:"radiogroup",accessibilityLabel:o,accessibilityState:{disabled:r},"aria-disabled":r,testID:d,style:s,children:t})})};exports.RadioGroup=RadioGroup,RadioGroup.displayName="RadioGroup";var _default=exports.default=RadioGroup;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Rating=void 0;var _react=
|
|
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:y,starContainerStyle:p,testID:_}=e,g=(0,_index.useTheme)(),h=(0,_react.useMemo)(()=>buildStyles(g),[g]),v=!r&&"function"==typeof a,f=n?.5:1,b=resolveSize(l),j=toneColorFor(g,o),S=g.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=g.components.rating?.pulseOnPress??!1,z=g.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:g.motion.duration.fast,easing:_reactNative.Easing.bezier(...g.motion.easing.standard),useNativeDriver:!0}),_reactNative.Animated.spring(t,{toValue:1,damping:g.motion.spring.bouncy.damping,stiffness:g.motion.spring.bouncy.stiffness,mass:g.motion.spring.bouncy.mass,useNativeDriver:!0})]).start()},[g.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,E=[];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);E.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 T=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[h.wrapper,x,y],ref:t,testID:_,children:[c?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[h.label,{color:g.colors.text.secondary,fontSize:g.typography.fontSize.sm}],children:c}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[h.row,p],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:E})]});return u?(0,_jsxRuntime.jsx)(RatingSkeleton,{...e}):T});Rating.displayName="Rating";const RatingSkeleton=({max:e=5,size:t="md",label:i,containerStyle:a,starContainerStyle:s,style:n})=>{const r=resolveSize(t),l=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:6}}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:[{flexDirection:"row"},s],children:Array.from({length:l}).map((e,t)=>(0,_jsxRuntime.jsx)(_index2.Skeleton,{width:r,height:r,radius:Math.round(.25*r),style:t<l-1?{marginRight:4}: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:4},label:{marginBottom:6}});var _default=exports.default=Rating;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Repeater=void 0;var _react=
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Repeater=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_index3=require("../AppIcon/index.js"),_index4=require("../Button/index.js"),_index5=require("../IconButton/index.js"),_jsxRuntime=require("react/jsx-runtime");let rowIdCounter=0;const nextRowId=()=>(rowIdCounter+=1,`row-${rowIdCounter}`),Repeater=({value:e,onChange:t,createRow:r,renderRow:n,addLabel:i="Add another",rowLabel:a,renderRowHeader:o,onRemove:s,minRows:l=0,maxRows:c,removable:u=!0,emptyText:x,disabled:d=!1,haptic:p,style:_,testID:m})=>{const h=(0,_index.useTheme)(),g=(0,_react.useMemo)(()=>buildStyles(h),[h]),j=(0,_react.useRef)([]);if(j.current.length<e.length)for(;j.current.length<e.length;)j.current.push(nextRowId());else j.current.length>e.length&&(j.current.length=e.length);const R="number"==typeof c&&e.length>=c,v=u&&e.length>l,w=(0,_react.useCallback)(e=>{const t=(0,_index2.resolveHaptic)(p,e);t&&(0,_index2.triggerHaptic)(t)},[p]),y=(0,_react.useCallback)(()=>{d||R||(t([...e,r()]),w("impactLight"))},[R,r,d,w,t,e]),f=(0,_react.useCallback)((r,n)=>{t(e.map((e,t)=>t===r?n:e))},[t,e]),b=(0,_react.useCallback)(r=>{!d&&v&&(j.current=j.current.filter((e,t)=>t!==r),s?.(r,e[r]),t(e.filter((e,t)=>t!==r)),w("notificationWarning"))},[v,d,w,t,s,e]);return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[{gap:h.spacing.md},_],testID:m,children:[0===e.length&&x?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[g.empty,{color:h.colors.text.tertiary,fontSize:h.typography.fontSize.sm}],children:x}):null,e.map((e,t)=>{const r={item:e,index:t,update:e=>f(t,e),remove:()=>b(t),canRemove:v};return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{gap:h.spacing.xs},children:[o?o(r):a||v&&!d?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:g.rowHeader,children:[a?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[g.rowLabel,{color:h.colors.text.tertiary,fontSize:h.typography.fontSize.xs}],children:a(t)}):(0,_jsxRuntime.jsx)(_reactNative.View,{}),v&&!d?(0,_jsxRuntime.jsx)(_index5.IconButton,{icon:({color:e,size:t})=>(0,_jsxRuntime.jsx)(_index3.AppIcon,{name:"x",size:t,color:e}),onPress:()=>b(t),accessibilityLabel:`Remove ${a?a(t):`row ${t+1}`}`,size:"sm",tone:"error",variant:"ghost",haptic:p,testID:m?`${m}-remove-${t}`:void 0}):null]}):null,n(r)]},j.current[t])}),R||d?null:(0,_jsxRuntime.jsx)(_index4.Button,{title:i,onPress:y,variant:"outline",size:"sm",haptic:p,testID:m?`${m}-add`:void 0})]})};exports.Repeater=Repeater;const buildStyles=e=>_reactNative.StyleSheet.create({rowHeader:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",minHeight:24},rowLabel:{...(0,_index.fontFor)(e,"semibold"),fontWeight:"600",letterSpacing:.5,textTransform:"uppercase"},empty:{...(0,_index.fontFor)(e,"normal")}});var _default=exports.default=Repeater;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.RichTextEditor=void 0;var _react=
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.RichTextEditor=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_index3=require("../Skeleton/index.js"),_markdownActions=require("./markdownActions.js"),_jsxRuntime=require("react/jsx-runtime");const ACTION_META={bold:{glyph:"B",label:"Bold"},italic:{glyph:"I",label:"Italic"},strikethrough:{glyph:"S",label:"Strikethrough"},code:{glyph:"</>",label:"Inline code"},link:{glyph:"link",label:"Link"},heading1:{glyph:"H1",label:"Heading 1"},heading2:{glyph:"H2",label:"Heading 2"},bulletList:{glyph:"•",label:"Bulleted list"},numberedList:{glyph:"1.",label:"Numbered list"},quote:{glyph:">",label:"Quote"}},DEFAULT_ACTIONS=["bold","italic","strikethrough","code","link","heading1","heading2","bulletList","numberedList","quote"],DEFAULT_MIN_HEIGHT=160,RichTextEditor=exports.RichTextEditor=(0,_react.forwardRef)((e,t)=>{const{value:i,onChangeText:o,placeholder:r,actions:l=DEFAULT_ACTIONS,disabled:n=!1,loading:a=!1,minHeight:s=DEFAULT_MIN_HEIGHT,autoFocus:c=!1,accessibilityLabel:d,haptic:u,style:h,toolbarStyle:x,inputStyle:b,testID:g}=e,p=(0,_index.useTheme)(),m=(0,_react.useMemo)(()=>buildStyles(p),[p]),_=i??"",[y,j]=(0,_react.useState)({start:0,end:0}),[S,T]=(0,_react.useState)(!1),[k,R]=(0,_react.useState)(null),f=(0,_react.useCallback)(e=>{j(e.nativeEvent.selection),R(null)},[]),v=(0,_react.useCallback)(e=>{R(null),o?.(e)},[o]),I=(0,_react.useCallback)(e=>{if(n)return;const t=(0,_index2.resolveHaptic)(u,"selection");t&&(0,_index2.triggerHaptic)(t);const i=(0,_markdownActions.applyMarkdownAction)({text:_,selection:(0,_markdownActions.normalizeSelection)(y,_.length)},e);j(i.selection),R(i.selection),o?.(i.text)},[n,u,o,y,_]);return a?(0,_jsxRuntime.jsx)(RichTextEditorSkeleton,{actionCount:l.length,minHeight:s,style:h,testID:g}):(0,_jsxRuntime.jsxs)(_reactNative.View,{testID:g,style:[m.container,{borderColor:S?p.colors.border.focus:p.colors.border.primary,opacity:n?.55:1},h],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[m.toolbar,x],children:l.map(e=>(0,_jsxRuntime.jsx)(ToolbarButton,{action:e,disabled:n,onPress:I,styles:m,theme:p,testID:g?`${g}-${e}`:void 0},e))}),(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:t,value:_,onChangeText:v,onSelectionChange:f,onFocus:()=>T(!0),onBlur:()=>T(!1),selection:k??void 0,editable:!n,autoFocus:c,multiline:!0,textAlignVertical:"top",placeholder:r,placeholderTextColor:p.colors.text.tertiary,accessibilityLabel:d,style:[m.input,{minHeight:s},b],testID:g?`${g}-input`:void 0})]})});RichTextEditor.displayName="RichTextEditor";const ToolbarButton=({action:e,disabled:t,onPress:i,styles:o,theme:r,testID:l})=>{const n=ACTION_META[e],a={color:t?r.colors.text.disabled:r.colors.text.primary};return"bold"===e&&(a.fontWeight=r.typography.fontWeight.bold),"italic"===e&&(a.fontStyle="italic"),"strikethrough"===e&&(a.textDecorationLine="line-through"),(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>i(e),disabled:t,accessibilityRole:"button",accessibilityLabel:n.label,accessibilityState:{disabled:t},"aria-disabled":t,hitSlop:4,testID:l,style:({pressed:e})=>[o.button,{backgroundColor:e?r.colors.surface.pressed:r.colors.background.secondary}],children:(0,_jsxRuntime.jsx)(_reactNative.Text,{allowFontScaling:!1,style:[o.buttonLabel,a],children:n.glyph})})};ToolbarButton.displayName="RichTextEditorToolbarButton";const RichTextEditorSkeleton=({actionCount:e,minHeight:t,style:i,testID:o})=>{const r=(0,_index.useTheme)(),l=(0,_react.useMemo)(()=>buildStyles(r),[r]),n=Array.from({length:Math.max(1,e)},(e,t)=>t);return(0,_jsxRuntime.jsxs)(_reactNative.View,{testID:o,style:[l.container,i],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:l.toolbar,children:n.map(e=>(0,_jsxRuntime.jsx)(_index3.Skeleton,{width:34,height:30,radius:"sm"},e))}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[l.skeletonBody,{minHeight:t}],children:[(0,_jsxRuntime.jsx)(_index3.Skeleton,{shape:"text",width:"94%",height:14}),(0,_jsxRuntime.jsx)(_index3.Skeleton,{shape:"text",width:"100%",height:14}),(0,_jsxRuntime.jsx)(_index3.Skeleton,{shape:"text",width:"72%",height:14})]})]})};RichTextEditorSkeleton.displayName="RichTextEditorSkeleton";const buildStyles=e=>_reactNative.StyleSheet.create({container:{borderWidth:e.colors.border.width,borderColor:e.colors.border.primary,borderRadius:e.radius.md,..._corners.smoothCorners,backgroundColor:e.colors.background.primary,overflow:"hidden"},toolbar:{flexDirection:"row",flexWrap:"wrap",alignItems:"center",gap:e.spacing.xs,padding:e.spacing.xs,borderBottomWidth:_reactNative.StyleSheet.hairlineWidth,borderBottomColor:e.colors.border.secondary,backgroundColor:e.colors.background.secondary},button:{minWidth:34,height:30,paddingHorizontal:e.spacing.xs,borderRadius:e.radius.sm,..._corners.smoothCorners,alignItems:"center",justifyContent:"center"},buttonLabel:{...(0,_index.fontFor)(e,"medium"),fontSize:e.typography.fontSize.sm},input:{...(0,_index.fontFor)(e,"normal"),color:e.colors.text.primary,fontSize:e.typography.fontSize.base,lineHeight:1.5*e.typography.fontSize.base,paddingHorizontal:e.spacing.md,paddingVertical:e.spacing.sm},skeletonBody:{paddingHorizontal:e.spacing.md,paddingVertical:e.spacing.sm,gap:e.spacing.sm}});var _default=exports.default=RichTextEditor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SearchBar=void 0;var _react=require("react"),_reactNative=require("react-native"),_useDebounce=require("../../hooks/useDebounce.js"),_index=require("../../theme/index.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_mergeRefs=require("../../utils/mergeRefs.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_useFloatingLabel=require("../FieldBase/useFloatingLabel.js"),_jsxRuntime=require("react/jsx-runtime");const SearchBar=exports.SearchBar=(0,_react.forwardRef)((e,t)=>{const{value:i,onChangeText:a,onSubmit:s,placeholder:l="Search…",autoFocus:r=!1,disabled:o=!1,onClear:c,leftIcon:n,debounceMs:d,size:u="md",variant:_,borderRadius:b,label:f,labelMode:p="top",labelStyle:h,haptic:v,style:x,inputStyle:g,accessibilityLabel:m,testID:S,...y}=e,j=(0,_index.useTheme)(),F=_??j.components.searchBar?.defaultVariant??j.components.field?.defaultVariant??"filled",R="underline"===F,B=(0,_FieldBase.resolveFieldSize)(j,u),I={...B,...j.components.searchBar?.[u]??{}},z=(0,_FieldBase.resolveFieldTextStyle)(j,{disabled:o}),C=(0,_react.useRef)(null),q=(0,_react.useMemo)(()=>(0,_mergeRefs.mergeRefs)(C,t),[t]),L=(0,_react.useCallback)(()=>{o||C.current?.focus()},[o]),N=(0,_react.useMemo)(()=>buildStyles(j),[j]),w="string"==typeof i?i:"",[T,k]=(0,_react.useState)(!1),[D,H]=(0,_react.useState)(w),V=(0,_useDebounce.useDebounce)(D,d??0);(0,_react.useEffect)(()=>{void 0!==d&&w!==D&&H(w)},[w,d]);const M=(0,_react.useRef)(w);(0,_react.useEffect)(()=>{void 0!==d&&V!==M.current&&(M.current=V,a(V))},[V,d,a]);const P=(0,_react.useCallback)(e=>{void 0===d?a(e):H(e)},[d,a]),U=(0,_react.useCallback)(()=>{const e=(0,_hapticUtils.resolveHaptic)(v,"selection");e&&(0,_hapticUtils.triggerHaptic)(e),void 0!==d&&(H(""),M.current=""),a(""),c?.()},[v,d,a,c]),E=(0,_react.useCallback)(()=>{s?.(void 0!==d?D:w)},[s,d,D,w]),O=void 0!==d?D:w,A=O.length>0,W={size:I.iconSize,color:o?j.colors.text.disabled:j.colors.text.tertiary,disabled:o},K=n?(0,_slotIcon.renderSlotIcon)(n,W):(j.icons?.search??_defaultIcons.defaultIcons.search)(W),G=Boolean(f)&&"float"===p,J=(0,_useFloatingLabel.useFloatingLabel)({label:f,enabled:G,floated:T||A,variant:F,sizeTokens:{...B,...I},leadingOffset:I.iconSize+j.spacing.md,trailingOffset:A?I.iconSize+j.spacing.md:0,paddingLeft:R?0:I.paddingHorizontal,color:j.colors.field.label,style:h}),Q=A&&!o?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:U,hitSlop:8,accessibilityRole:"button",accessibilityLabel:"Clear search",children:(j.icons?.close??_defaultIcons.defaultIcons.close)({size:I.iconSize,color:j.colors.text.secondary})}):null;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:x,testID:S,children:[f&&!G?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:u,style:h,children:f}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:N.root,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:N.fieldWrap,children:[(0,_jsxRuntime.jsx)(_FieldBase.FieldBase,{size:u,variant:F,focused:T,disabled:o,filled:A,minHeight:I.minHeight,paddingHorizontal:R?0:I.paddingHorizontal,borderRadius:b??I.borderRadius,leading:K,trailing:Q,topNotch:J.topNotch,onPress:L,pressFeedback:!1,accessibilityRole:"search",accessibilityLabel:m??l,children:(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:q,style:[N.input,{fontSize:I.fontSize,color:z.color,...z.weightStyle},g],value:O,onChangeText:P,onSubmitEditing:E,onFocus:()=>k(!0),onBlur:()=>k(!1),placeholder:!G||T||A?l:void 0,placeholderTextColor:z.placeholderColor,autoFocus:r,editable:!o,returnKeyType:"search",selectionColor:(0,_FieldBase.resolveVariantColors)(j,F).borderFocusedRepresentative,accessibilityLabel:m??l,accessibilityState:{disabled:o},...y})}),J.node]})})]})});SearchBar.displayName="SearchBar";const buildStyles=e=>_reactNative.StyleSheet.create({root:{flexDirection:"row",alignItems:"center",width:"100%",position:"relative",overflow:"visible"},fieldWrap:{flex:1,position:"relative",overflow:"visible"},input:{flex:1,padding:0,margin:0,includeFontPadding:!1}});var _default=exports.default=SearchBar;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SearchBar=void 0;var _react=require("react"),_reactNative=require("react-native"),_useDebounce=require("../../hooks/useDebounce.js"),_index=require("../../theme/index.js"),_hapticUtils=require("../../utils/hapticUtils.js"),_mergeRefs=require("../../utils/mergeRefs.js"),_defaultIcons=require("../AppIcon/defaultIcons.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_useFloatingLabel=require("../FieldBase/useFloatingLabel.js"),_jsxRuntime=require("react/jsx-runtime");const SearchBar=exports.SearchBar=(0,_react.forwardRef)((e,t)=>{const{value:i,onChangeText:a,onSubmit:s,placeholder:l="Search…",autoFocus:r=!1,disabled:o=!1,onClear:c,leftIcon:n,debounceMs:d,size:u="md",variant:_,borderRadius:b,label:f,labelMode:p="top",labelStyle:h,haptic:v,style:x,inputStyle:g,accessibilityLabel:m,testID:S,...y}=e,j=(0,_index.useTheme)(),F=_??j.components.searchBar?.defaultVariant??j.components.field?.defaultVariant??"filled",R="underline"===F,B=(0,_FieldBase.resolveFieldSize)(j,u),I={...B,...j.components.searchBar?.[u]??{}},z=(0,_FieldBase.resolveFieldTextStyle)(j,{disabled:o}),C=(0,_react.useRef)(null),q=(0,_react.useMemo)(()=>(0,_mergeRefs.mergeRefs)(C,t),[t]),L=(0,_react.useCallback)(()=>{o||C.current?.focus()},[o]),N=(0,_react.useMemo)(()=>buildStyles(j),[j]),w="string"==typeof i?i:"",[T,k]=(0,_react.useState)(!1),[D,H]=(0,_react.useState)(w),V=(0,_useDebounce.useDebounce)(D,d??0);(0,_react.useEffect)(()=>{void 0!==d&&w!==D&&H(w)},[w,d]);const M=(0,_react.useRef)(w);(0,_react.useEffect)(()=>{void 0!==d&&V!==M.current&&(M.current=V,a(V))},[V,d,a]);const P=(0,_react.useCallback)(e=>{void 0===d?a(e):H(e)},[d,a]),U=(0,_react.useCallback)(()=>{const e=(0,_hapticUtils.resolveHaptic)(v,"selection");e&&(0,_hapticUtils.triggerHaptic)(e),void 0!==d&&(H(""),M.current=""),a(""),c?.()},[v,d,a,c]),E=(0,_react.useCallback)(()=>{s?.(void 0!==d?D:w)},[s,d,D,w]),O=void 0!==d?D:w,A=O.length>0,W={size:I.iconSize,color:o?j.colors.text.disabled:j.colors.text.tertiary,disabled:o},K=n?(0,_slotIcon.renderSlotIcon)(n,W):(j.icons?.search??_defaultIcons.defaultIcons.search)(W),G=Boolean(f)&&"float"===p,J=(0,_useFloatingLabel.useFloatingLabel)({label:f,enabled:G,floated:T||A,variant:F,sizeTokens:{...B,...I},leadingOffset:I.iconSize+j.spacing.md,trailingOffset:A?I.iconSize+j.spacing.md:0,paddingLeft:R?0:I.paddingHorizontal,color:j.colors.field.label,style:h}),Q=A&&!o?(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:U,hitSlop:8,accessibilityRole:"button",accessibilityLabel:"Clear search",children:(j.icons?.close??_defaultIcons.defaultIcons.close)({size:I.iconSize,color:j.colors.text.secondary})}):null;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:x,testID:S,children:[f&&!G?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:u,style:h,children:f}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{style:N.root,children:(0,_jsxRuntime.jsxs)(_reactNative.View,{style:N.fieldWrap,children:[(0,_jsxRuntime.jsx)(_FieldBase.FieldBase,{size:u,variant:F,focused:T,disabled:o,filled:A,minHeight:I.minHeight,paddingHorizontal:R?0:I.paddingHorizontal,borderRadius:b??I.borderRadius,leading:K,trailing:Q,topNotch:J.topNotch,onPress:L,pressFeedback:!1,accessibilityRole:"search",accessibilityLabel:m??l,children:(0,_jsxRuntime.jsx)(_reactNative.TextInput,{ref:q,style:[N.input,{fontSize:I.fontSize,color:z.color,...z.weightStyle},g],value:O,onChangeText:P,onSubmitEditing:E,onFocus:()=>k(!0),onBlur:()=>k(!1),placeholder:!G||T||A?l:void 0,placeholderTextColor:z.placeholderColor,autoFocus:r,editable:!o,returnKeyType:"search",selectionColor:(0,_FieldBase.resolveVariantColors)(j,F).borderFocusedRepresentative,accessibilityLabel:m??l,accessibilityState:{disabled:o},"aria-disabled":o,...y})}),J.node]})})]})});SearchBar.displayName="SearchBar";const buildStyles=e=>_reactNative.StyleSheet.create({root:{flexDirection:"row",alignItems:"center",width:"100%",position:"relative",overflow:"visible"},fieldWrap:{flex:1,position:"relative",overflow:"visible"},input:{flex:1,padding:0,margin:0,includeFontPadding:!1}});var _default=exports.default=SearchBar;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SectionHeader=void 0;var _react=
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SectionHeader=void 0;var _react=require("react"),_index=require("../../theme/index.js"),_index2=require("../FieldBase/index.js"),_Text=require("../Text/Text.js"),_jsxRuntime=require("react/jsx-runtime");const SectionHeader=({children:e,variant:t="title",flush:i=!1,required:r=!1,style:a,testID:s})=>{const o=(0,_index.useTheme)(),n=(0,_react.useMemo)(()=>({marginTop:i?0:o.spacing.lg,marginBottom:o.spacing.sm}),[o,i]),d="caps"===t?{variant:"overline",color:"tertiary",weight:void 0}:"sub"===t?{variant:"label",color:"primary",weight:"semibold"}:{variant:"title",color:void 0,weight:void 0};return(0,_jsxRuntime.jsxs)(_Text.Text,{variant:d.variant,color:d.color,weight:d.weight,accessibilityRole:"header",accessibilityLabel:r&&"string"==typeof e?`${e}, required`:void 0,style:[n,a],testID:s,children:[e,r?(0,_jsxRuntime.jsx)(_index2.RequiredMark,{}):null]})};exports.SectionHeader=SectionHeader;var _default=exports.default=SectionHeader;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.segmentedControlTrackPadding=exports.segmentedControlSizes=exports.default=exports.SegmentedControl=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index4=require("../FieldBase/index.js"),_SquircleFill=require("../SquircleFill/SquircleFill.js"),_jsxRuntime=require("react/jsx-runtime");const segmentedControlSizes=exports.segmentedControlSizes={sm:{height:32,fontSize:12,paddingHorizontal:10,iconSize:14},md:{height:40,fontSize:14,paddingHorizontal:14,iconSize:16},lg:{height:48,fontSize:16,paddingHorizontal:18,iconSize:18}},segmentedControlTrackPadding=exports.segmentedControlTrackPadding=4,sizeMap=segmentedControlSizes,TRACK_PADDING=segmentedControlTrackPadding,SegmentedControl=exports.SegmentedControl=(0,_react.forwardRef)((e,t)=>{const{segments:i,label:
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.segmentedControlTrackPadding=exports.segmentedControlSizes=exports.default=exports.SegmentedControl=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../hooks/index.js"),_index2=require("../../theme/index.js"),_index3=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_index4=require("../FieldBase/index.js"),_SquircleFill=require("../SquircleFill/SquircleFill.js"),_jsxRuntime=require("react/jsx-runtime");const segmentedControlSizes=exports.segmentedControlSizes={sm:{height:32,fontSize:12,paddingHorizontal:10,iconSize:14},md:{height:40,fontSize:14,paddingHorizontal:14,iconSize:16},lg:{height:48,fontSize:16,paddingHorizontal:18,iconSize:18}},segmentedControlTrackPadding=exports.segmentedControlTrackPadding=4,LABEL_LINE_HEIGHT_RATIO=1.25,sizeMap=segmentedControlSizes,TRACK_PADDING=segmentedControlTrackPadding,SegmentedControl=exports.SegmentedControl=(0,_react.forwardRef)((e,t)=>{const{segments:i,label:n,helperText:r,error:l,value:s,defaultValue:o,onChange:a,size:d="md",fullWidth:c=!0,disabled:u=!1,tone:g="primary",variant:m="segmented",radius:h,labelLines:x=1,haptic:p,accessibilityLabel:_,style:f,containerStyle:S,segmentStyle:b,selectedIndicatorStyle:y,textStyle:v,labelStyle:z,testID:j}=e,[C,R]=(0,_index.useControllableState)({value:s,defaultValue:o??i[0]?.value,onChange:a}),I=(0,_index2.useTheme)(),k=I.components.segmentedControl,q=(0,_react.useMemo)(()=>buildStyles(I),[I]),w=sizeMap[d],N={height:k?.[d]?.height??w.height,fontSize:k?.[d]?.fontSize??w.fontSize,paddingHorizontal:k?.[d]?.paddingHorizontal??w.paddingHorizontal,iconSize:k?.[d]?.iconSize??w.iconSize},L=x>=2?2:1,T=L>1,F="segmented"===m,H="underline"===m,M="pills"===m,A=F?k?.trackPadding??TRACK_PADDING:0,P=Math.ceil(1.25*N.fontSize)*(L-1),D=k?.underlineHeight??2,V=k?.pillInset??4,E="number"==typeof h?h:h?I.radius[h]:k?.radius,W=E??I.radius.md,B=void 0===E?I.radius.sm:Math.max(E-A,0),G=E??I.radius.full,O=E??0,[K,X]=(0,_react.useState)(0),J=(0,_react.useRef)((0,_index2.createAnimatedValue)(0)).current,Q=Math.max(0,i.findIndex(e=>e.value===C)),U=K>0?(K-2*A)/Math.max(i.length,1):0,Y=(0,_react.useCallback)((e,t)=>{if(t<=0)return;const i=t*e,n=I.motion.spring.snappy,r=_reactNative.Animated.spring(J,{toValue:i,damping:n.damping,stiffness:n.stiffness,mass:n.mass,overshootClamping:!0,useNativeDriver:!0});return r.start(),r},[I.motion.spring.snappy,J]);(0,_react.useEffect)(()=>{if(U>0){const e=Y(Q,U);return()=>e?.stop()}},[Q,U,Y]);const Z=(0,_react.useCallback)(e=>{const t=e.nativeEvent.layout.width;t!==K&&X(t)},[K]),$=(0,_react.useCallback)(e=>{if(u)return;if(e.value===C)return;const t=(0,_index3.resolveHaptic)(p,"selection");t&&(0,_index3.triggerHaptic)(t),R(e.value)},[u,R,C,p]),ee=F?I.colors.background.elevated:M?I.colors.primaryMuted:I.colors.primary,te=F?B:M?G:O,ie="neutral"===g?I.colors.text.primary:I.colors.primary,ne=I.colors.background.tertiary,re=(0,_SquircleFill.useSquircle)(F,W,Z),le=(0,_index4.hasFieldText)(n),se=(0,_index4.hasFieldText)(l)?l:r,oe=(0,_index4.hasFieldText)(se),ae=_??("string"==typeof n?n:void 0),de=(0,_jsxRuntime.jsxs)(_reactNative.View,{ref:t,accessibilityRole:"radiogroup",accessibilityLabel:ae,testID:j,style:[q.track,{...T?{minHeight:N.height+P}:{height:N.height},opacity:u?.55:1,alignSelf:c?"stretch":"flex-start"},F?{borderRadius:W,..._corners.smoothCorners,backgroundColor:re.active?"transparent":ne,padding:A}:H?{borderBottomColor:I.colors.border.secondary,borderBottomWidth:_reactNative.StyleSheet.hairlineWidth}:null,S,f],onLayout:re.onLayout,children:[re.active&&re.size?(0,_jsxRuntime.jsx)(_SquircleFill.SquircleFill,{width:re.size.width,height:re.size.height,radius:W,fill:ne}):null,(0,_jsxRuntime.jsxs)(_reactNative.View,{style:q.row,children:[U>0?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[q.thumb,F?T?{top:0,bottom:0}:{top:0,height:N.height-2*A}:M?{top:V,bottom:V}:{bottom:0,height:D},{width:U,borderRadius:te,..._corners.smoothCorners,backgroundColor:ee,transform:[{translateX:J}]},y]}):null,i.map(e=>{const t=e.value===C,i=t?ie:I.colors.text.tertiary,n=(0,_slotIcon.renderSlotIcon)(e.icon,{color:i,size:N.iconSize,selected:t,disabled:u});return(0,_jsxRuntime.jsxs)(_reactNative.Pressable,{onPress:()=>$(e),disabled:u,accessibilityRole:"radio",accessibilityLabel:e.label,accessibilityState:{checked:t,selected:t,disabled:u},"aria-checked":t,"aria-disabled":u,style:({pressed:e})=>[q.segment,T?q.segmentMultiline:null,{paddingHorizontal:N.paddingHorizontal,opacity:e&&!t?.7:1},b],children:[n?(0,_jsxRuntime.jsx)(_reactNative.View,{style:q.segmentIcon,children:n}):null,(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[q.segmentLabel,T?q.segmentLabelMultiline:null,{color:i,fontSize:N.fontSize,fontWeight:t?I.typography.fontWeight.semibold:I.typography.fontWeight.medium},v,z],numberOfLines:L,children:e.label})]},String(e.value))})]})]});return le||oe?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:{alignSelf:c?"stretch":"flex-start"},children:[le?(0,_jsxRuntime.jsx)(_index4.FieldLabel,{size:d,children:n}):null,de,oe?(0,_jsxRuntime.jsx)(_index4.FieldMessage,{size:d,text:se,error:(0,_index4.hasFieldText)(l)}):null]}):de});SegmentedControl.displayName="SegmentedControl";const buildStyles=e=>_reactNative.StyleSheet.create({track:{flexDirection:"row",alignItems:"stretch",position:"relative"},row:{flex:1,flexDirection:"row",alignItems:"stretch",position:"relative",overflow:"hidden"},thumb:{position:"absolute",left:0},segment:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center"},segmentIcon:{marginRight:6},segmentMultiline:{paddingVertical:6},segmentLabel:{includeFontPadding:!1},segmentLabelMultiline:{flexShrink:1,textAlign:"center"}});var _default=exports.default=SegmentedControl;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Select=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_Chevron=require("../FieldBase/Chevron.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_jsxRuntime=require("react/jsx-runtime");const sameSelectValue=(e,t)=>String(e)===String(t),containsValue=(e,t)=>e.some(e=>sameSelectValue(e,t)),Select=exports.Select=(0,_react.forwardRef)((e,t)=>{const{options:i,getOptionLabel:l,getOptionValue:r,getOptionDisabled:n,getOptionDescription:o,getOptionIcon:s,placeholder:a,searchable:c=!1,haptic:d,label:u,help:x,title:p,required:_=!1,error:b,helperText:h,prefix:S,numberOfLines:f=1,disabled:g=!1,size:v="md",variant:m,leftIcon:j,rightIcon:y,chevronColor:F,chevronSize:C,borderRadius:O,accessibilityLabel:R,labelStyle:V,style:k,triggerStyle:z,textStyle:B,optionStyle:T,selectedOptionStyle:I,optionTextStyle:N,selectedOptionTextStyle:q,testID:H}=e,L=!0===e.multi,w=(0,_react.useCallback)(e=>l?l(e):e.label??"",[l]),M=(0,_react.useCallback)(e=>r?r(e):e.value,[r]),D=(0,_react.useCallback)(e=>n?n(e):!0===e.disabled,[n]),P=(0,_react.useCallback)(e=>o?o(e):e.description,[o]),E=(0,_react.useCallback)(e=>s?s(e):e.icon,[s]),A=(0,_index.useTheme)(),$=(0,_react.useMemo)(()=>buildStyles(A),[A]),G=(0,_FieldBase.resolveFieldSize)(A,v),J=(0,_FieldBase.resolveFieldTextStyle)(A,{disabled:g}),K=m??A.components.select?.defaultVariant??A.components.field?.defaultVariant??"outlined",Q=(0,_react.useMemo)(()=>{const e=A.components.select?.fillColors?.[K];if(!e)return;const t={};return void 0!==e.idleEmpty&&(t.backgroundIdleEmpty=e.idleEmpty),void 0!==e.idleFilled&&(t.backgroundIdleFilled=e.idleFilled),void 0!==e.focus&&(t.backgroundFocused=e.focus),void 0!==e.error&&(t.backgroundError=e.error),void 0!==e.disabled&&(t.backgroundDisabled=e.disabled),Object.keys(t).length>0?t:void 0},[A.components.select?.fillColors,K]),U=O??A.components.select?.borderRadius,[W,X]=(0,_react.useState)(!1),Y=(0,_react.useCallback)(t=>{if(L){const i=e.value??[];return containsValue(i,t)}return null!=e.value&&sameSelectValue(e.value,t)},[L,e.value]),Z=(0,_react.useMemo)(()=>{if(L){const t=e.value??[];return i.filter(e=>containsValue(t,M(e)))}const t=e.value;if(null==t)return[];const l=i.find(e=>sameSelectValue(M(e),t));return l?[l]:[]},[L,i,e.value,M]),ee=(0,_react.useCallback)(()=>{if(g)return;const e=(0,_index2.resolveHaptic)(d,"selection");e&&(0,_index2.triggerHaptic)(e),X(!0)},[g,d]),te=(0,_react.useCallback)(()=>{X(!1)},[]),ie=(0,_react.useCallback)(t=>{if(D(t))return;const i=M(t),l=(0,_index2.resolveHaptic)(d,"selection");if(l&&(0,_index2.triggerHaptic)(l),L){const t=e.value??[],l=containsValue(t,i)?t.filter(e=>!sameSelectValue(e,i)):[...t,i];return void e.onChange(l)}e.onChange(i),te()},[L,e,te,D,M,d]),le=0===Z.length?a??"Select…":Z.map(e=>w(e)).join(", "),re=0===Z.length,ne=!0===b||(0,_FieldBase.hasFieldText)(b),oe=(0,_FieldBase.hasFieldText)(u),se=(0,_FieldBase.fieldTextAsString)(u),ae=Math.round(1.4*G.fontSize),ce={color:g?A.colors.field.iconDisabled:W?A.colors.field.iconFocused:A.colors.field.icon,size:G.iconSize,disabled:g,focused:W,error:ne},de=0===Z.length?a??"No selection":`Selected: ${Z.map(e=>w(e)).join(", ")}`,ue=R??`${se??"Select"}. ${de}`;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[$.container,k],testID:H,children:[oe?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:v,required:_,help:x,style:V,children:u}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,collapsable:!1,children:(0,_jsxRuntime.jsxs)(_FieldBase.FieldBase,{size:v,variant:K,disabled:g,error:ne,filled:Z.length>0,onPress:ee,borderRadius:U,fillOverrides:Q,paddingHorizontal:"underline"===K?0:void 0,accessibilityRole:"button",accessibilityLabel:ue,accessibilityState:{disabled:g,expanded:W},style:z,slotAlign:1===f?"center":"top",slotLineHeight:1===f?void 0:ae,leading:j?(0,_jsxRuntime.jsx)(_reactNative.View,{children:(0,_slotIcon.renderSlotIcon)(j,ce)}):null,trailing:y?(0,_jsxRuntime.jsx)(_reactNative.View,{children:(0,_slotIcon.renderSlotIcon)(y,ce)}):(0,_jsxRuntime.jsx)(_Chevron.Chevron,{color:F??(g?A.colors.text.disabled:A.colors.text.tertiary),size:C??G.iconSize,open:W,style:$.chevron}),children:[(0,_FieldBase.hasFieldText)(S)?"string"==typeof S||"number"==typeof S?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[$.prefix,{color:J.placeholderColor,fontSize:G.fontSize,lineHeight:1===f?void 0:ae,marginRight:A.spacing.xs}],children:S}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[$.prefixNode,{minHeight:1===f?void 0:ae,justifyContent:"center",marginRight:A.spacing.xs}],children:S}):null,(0,_jsxRuntime.jsxs)(_reactNative.Text,{style:[$.triggerText,{color:re?J.placeholderColor:J.color,fontSize:G.fontSize,lineHeight:1===f?void 0:ae,...J.weightStyle},B],numberOfLines:f,children:[le,re&&_&&!oe?(0,_jsxRuntime.jsx)(_FieldBase.RequiredMark,{}):null]})]})}),(0,_jsxRuntime.jsx)(_FieldBase.FieldMessage,{size:v,error:ne,text:ne?b:h}),(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:W,onClose:te,title:p??se,accessibilityLabel:se??(oe?p:void 0)??a??"Options",options:i,labelOf:w,getValue:M,disabledOf:D,descriptionOf:P,iconOf:E,isSelected:Y,onSelect:ie,multi:L,searchable:c,optionStyle:T,selectedOptionStyle:I,optionTextStyle:N,selectedOptionTextStyle:q,searchSelectionColor:(0,_FieldBase.resolveVariantColors)(A,K,Q).borderFocusedRepresentative})]})});Select.displayName="Select";const buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},label:{includeFontPadding:!1},triggerText:{flex:1,includeFontPadding:!1},errorText:{includeFontPadding:!1},prefix:{flexShrink:0,includeFontPadding:!1},prefixNode:{flexShrink:0},chevron:{marginLeft:8}});var _default=exports.default=Select;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.Select=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_slotIcon=require("../AppIcon/slotIcon.js"),_Chevron=require("../FieldBase/Chevron.js"),_FieldBase=require("../FieldBase/FieldBase.js"),_OptionSheet=require("../OptionSheet/OptionSheet.js"),_jsxRuntime=require("react/jsx-runtime");const sameSelectValue=(e,t)=>String(e)===String(t),containsValue=(e,t)=>e.some(e=>sameSelectValue(e,t)),Select=exports.Select=(0,_react.forwardRef)((e,t)=>{const{options:i,getOptionLabel:l,getOptionValue:r,getOptionDisabled:n,getOptionDescription:o,getOptionIcon:s,placeholder:a,searchable:c=!1,haptic:d,label:u,help:x,title:p,required:_=!1,error:b,helperText:h,prefix:S,numberOfLines:f=1,disabled:g=!1,size:v="md",variant:m,leftIcon:j,rightIcon:y,chevronColor:F,chevronSize:C,borderRadius:O,accessibilityLabel:R,labelStyle:V,style:k,triggerStyle:z,textStyle:B,optionStyle:T,selectedOptionStyle:I,optionTextStyle:N,selectedOptionTextStyle:q,testID:H}=e,L=!0===e.multi,w=(0,_react.useCallback)(e=>l?l(e):e.label??"",[l]),M=(0,_react.useCallback)(e=>r?r(e):e.value,[r]),D=(0,_react.useCallback)(e=>n?n(e):!0===e.disabled,[n]),P=(0,_react.useCallback)(e=>o?o(e):e.description,[o]),E=(0,_react.useCallback)(e=>s?s(e):e.icon,[s]),A=(0,_index.useTheme)(),$=(0,_react.useMemo)(()=>buildStyles(A),[A]),G=(0,_FieldBase.resolveFieldSize)(A,v),J=(0,_FieldBase.resolveFieldTextStyle)(A,{disabled:g}),K=m??A.components.select?.defaultVariant??A.components.field?.defaultVariant??"outlined",Q=(0,_react.useMemo)(()=>{const e=A.components.select?.fillColors?.[K];if(!e)return;const t={};return void 0!==e.idleEmpty&&(t.backgroundIdleEmpty=e.idleEmpty),void 0!==e.idleFilled&&(t.backgroundIdleFilled=e.idleFilled),void 0!==e.focus&&(t.backgroundFocused=e.focus),void 0!==e.error&&(t.backgroundError=e.error),void 0!==e.disabled&&(t.backgroundDisabled=e.disabled),Object.keys(t).length>0?t:void 0},[A.components.select?.fillColors,K]),U=O??A.components.select?.borderRadius,[W,X]=(0,_react.useState)(!1),Y=(0,_react.useCallback)(t=>{if(L){const i=e.value??[];return containsValue(i,t)}return null!=e.value&&sameSelectValue(e.value,t)},[L,e.value]),Z=(0,_react.useMemo)(()=>{if(L){const t=e.value??[];return i.filter(e=>containsValue(t,M(e)))}const t=e.value;if(null==t)return[];const l=i.find(e=>sameSelectValue(M(e),t));return l?[l]:[]},[L,i,e.value,M]),ee=(0,_react.useCallback)(()=>{if(g)return;const e=(0,_index2.resolveHaptic)(d,"selection");e&&(0,_index2.triggerHaptic)(e),X(!0)},[g,d]),te=(0,_react.useCallback)(()=>{X(!1)},[]),ie=(0,_react.useCallback)(t=>{if(D(t))return;const i=M(t),l=(0,_index2.resolveHaptic)(d,"selection");if(l&&(0,_index2.triggerHaptic)(l),L){const t=e.value??[],l=containsValue(t,i)?t.filter(e=>!sameSelectValue(e,i)):[...t,i];return void e.onChange(l)}e.onChange(i),te()},[L,e,te,D,M,d]),le=0===Z.length?a??"Select…":Z.map(e=>w(e)).join(", "),re=0===Z.length,ne=!0===b||(0,_FieldBase.hasFieldText)(b),oe=(0,_FieldBase.hasFieldText)(u),se=(0,_FieldBase.fieldTextAsString)(u),ae=Math.round(1.4*G.fontSize),ce={color:g?A.colors.field.iconDisabled:W?A.colors.field.iconFocused:A.colors.field.icon,size:G.iconSize,disabled:g,focused:W,error:ne},de=0===Z.length?a??"No selection":`Selected: ${Z.map(e=>w(e)).join(", ")}`,ue=R??`${se??"Select"}. ${de}`;return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[$.container,k],testID:H,children:[oe?(0,_jsxRuntime.jsx)(_FieldBase.FieldLabel,{size:v,required:_,help:x,style:V,children:u}):null,(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,collapsable:!1,children:(0,_jsxRuntime.jsxs)(_FieldBase.FieldBase,{size:v,variant:K,disabled:g,error:ne,filled:Z.length>0,onPress:ee,borderRadius:U,fillOverrides:Q,paddingHorizontal:"underline"===K?0:void 0,accessibilityRole:"button",accessibilityLabel:ue,accessibilityState:{disabled:g,expanded:W},"aria-disabled":g,"aria-expanded":W,style:z,slotAlign:1===f?"center":"top",slotLineHeight:1===f?void 0:ae,leading:j?(0,_jsxRuntime.jsx)(_reactNative.View,{children:(0,_slotIcon.renderSlotIcon)(j,ce)}):null,trailing:y?(0,_jsxRuntime.jsx)(_reactNative.View,{children:(0,_slotIcon.renderSlotIcon)(y,ce)}):(0,_jsxRuntime.jsx)(_Chevron.Chevron,{color:F??(g?A.colors.text.disabled:A.colors.text.tertiary),size:C??G.iconSize,open:W,style:$.chevron}),children:[(0,_FieldBase.hasFieldText)(S)?"string"==typeof S||"number"==typeof S?(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[$.prefix,{color:J.placeholderColor,fontSize:G.fontSize,lineHeight:1===f?void 0:ae,marginRight:A.spacing.xs}],children:S}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[$.prefixNode,{minHeight:1===f?void 0:ae,justifyContent:"center",marginRight:A.spacing.xs}],children:S}):null,(0,_jsxRuntime.jsxs)(_reactNative.Text,{style:[$.triggerText,{color:re?J.placeholderColor:J.color,fontSize:G.fontSize,lineHeight:1===f?void 0:ae,...J.weightStyle},B],numberOfLines:f,children:[le,re&&_&&!oe?(0,_jsxRuntime.jsx)(_FieldBase.RequiredMark,{}):null]})]})}),(0,_jsxRuntime.jsx)(_FieldBase.FieldMessage,{size:v,error:ne,text:ne?b:h}),(0,_jsxRuntime.jsx)(_OptionSheet.OptionSheet,{open:W,onClose:te,title:p??se,accessibilityLabel:se??(oe?p:void 0)??a??"Options",options:i,labelOf:w,getValue:M,disabledOf:D,descriptionOf:P,iconOf:E,isSelected:Y,onSelect:ie,multi:L,searchable:c,optionStyle:T,selectedOptionStyle:I,optionTextStyle:N,selectedOptionTextStyle:q,searchSelectionColor:(0,_FieldBase.resolveVariantColors)(A,K,Q).borderFocusedRepresentative})]})});Select.displayName="Select";const buildStyles=e=>_reactNative.StyleSheet.create({container:{width:"100%"},label:{includeFontPadding:!1},triggerText:{flex:1,includeFontPadding:!1},errorText:{includeFontPadding:!1},prefix:{flexShrink:0,includeFontPadding:!1},prefixNode:{flexShrink:0},chevron:{marginLeft:8}});var _default=exports.default=Select;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SkeletonText=exports.SkeletonCircle=exports.Skeleton=void 0;var _react=
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.SkeletonText=exports.SkeletonCircle=exports.Skeleton=void 0;var _react=require("react"),_reactNative=require("react-native"),_index=require("../../theme/index.js"),_Gradient=require("../../theme/Gradient.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_SkeletonClock=require("./SkeletonClock.js"),_SkeletonProvider=require("./SkeletonProvider.js"),_jsxRuntime=require("react/jsx-runtime");const resolveRadius=(e,t)=>"number"==typeof t?t:e.radius[t],resolveWidth=e=>void 0===e?"100%":e,radiusForShape=(e,t,r,s,i)=>{if(void 0!==i)return resolveRadius(e,i);switch(t){case"circle":return"number"==typeof r?Math.min(r,s)/2:s/2;case"rounded":return e.radius.md;default:return e.radius.sm}},Skeleton=({shape:e="rect",width:t="100%",height:r=16,radius:s,variant:i,speed:n,colors:o,style:a,testID:l})=>{const u=(0,_index.useTheme)(),c=(0,_SkeletonProvider.useSkeletonDefaults)(),d=(0,_SkeletonClock.useSkeletonClock)(),h=i??c.variant??"shimmer",m=d.enabled?h:"none",p=o?.background??c.colors?.background??u.colors.skeleton.background,x=o?.highlight??c.colors?.highlight??u.colors.skeleton.highlight,{responsive:k}=(0,_index2.useScreenDimensions)(),S=(0,_react.useMemo)(()=>buildStyles(),[]),_=resolveWidth(t),v=k.size(r),y=radiusForShape(u,e,_,v,s),[g,b]=(0,_react.useState)(0),j=(0,_react.useMemo)(()=>g<=0?0:Math.max(48,.7*g),[g]),R=(0,_react.useMemo)(()=>g<=0?0:d.shimmer.interpolate({inputRange:[0,1],outputRange:[-j,g]}),[d.shimmer,j,g]),f=(0,_react.useMemo)(()=>"none"===m?null:"pulse"===m?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[_reactNative.StyleSheet.absoluteFill,{backgroundColor:x,opacity:d.pulse.interpolate({inputRange:[0,1],outputRange:[0,.55]})}]}):g<=0?null:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[S.shimmerBand,{width:j,transform:[{translateX:R}],experimental_backgroundImage:[(0,_Gradient.toBackgroundImage)({colors:["transparent",x,"transparent"],locations:[0,.5,1],start:{x:0,y:.5},end:{x:1,y:.5}})]}]}),[m,x,d.pulse,g,S.shimmerBand,j,R]);return(0,_jsxRuntime.jsx)(_reactNative.View,{onLayout:e=>{const t=e.nativeEvent.layout.width;t!==g&&b(t)},accessible:!0,accessibilityLabel:"Loading",accessibilityRole:"progressbar",accessibilityState:{busy:!0},"aria-busy":!0,accessibilityLiveRegion:"polite",testID:l,style:[S.base,{width:_,height:v,borderRadius:y,..._corners.smoothCorners,backgroundColor:p},a],children:f})};exports.Skeleton=Skeleton,Skeleton.displayName="Skeleton";const SkeletonCircle=({size:e,style:t,...r})=>{const{responsive:s}=(0,_index2.useScreenDimensions)(),i=s.size(e);return(0,_jsxRuntime.jsx)(Skeleton,{...r,shape:"circle",width:i,height:e,style:t})};exports.SkeletonCircle=SkeletonCircle,SkeletonCircle.displayName="SkeletonCircle";const SkeletonText=({lines:e=3,lastLineWidth:t="60%",spacing:r,fontSize:s=14,variant:i,speed:n,radius:o="sm",width:a="100%",style:l,testID:u})=>{const c=(0,_index.useTheme)(),d=r??c.spacing.xs,h=Math.max(1,e);return(0,_jsxRuntime.jsx)(_reactNative.View,{style:l,testID:u,children:Array.from({length:h}).map((e,r)=>{const l=r===h-1&&h>1?t:a;return(0,_jsxRuntime.jsx)(Skeleton,{shape:"text",width:l,height:s,radius:o,variant:i,speed:n,style:r<h-1?{marginBottom:d}:void 0},r)})})};exports.SkeletonText=SkeletonText,SkeletonText.displayName="SkeletonText";const buildStyles=()=>_reactNative.StyleSheet.create({base:{overflow:"hidden"},shimmerBand:{position:"absolute",top:0,bottom:0,left:0}});var _default=exports.default=Skeleton;
|