@webority/mobile-ui 0.0.39 → 0.2.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 -343
- package/lib/commonjs/components/Accordion/index.js +1 -26
- package/lib/commonjs/components/AmountSlider/AmountSlider.js +1 -209
- package/lib/commonjs/components/AmountSlider/index.js +1 -20
- package/lib/commonjs/components/AnimatePresence/AnimatePresence.js +1 -71
- package/lib/commonjs/components/AnimatePresence/index.js +1 -13
- package/lib/commonjs/components/AppBar/AppBar.js +1 -358
- package/lib/commonjs/components/AppBar/index.js +1 -20
- package/lib/commonjs/components/AppIcon/AppIcon.js +1 -155
- package/lib/commonjs/components/AppIcon/catalog/bold/a.g.js +1 -84
- package/lib/commonjs/components/AppIcon/catalog/bold/b.g.js +1 -89
- package/lib/commonjs/components/AppIcon/catalog/bold/c.g.js +1 -118
- package/lib/commonjs/components/AppIcon/catalog/bold/d.g.js +1 -68
- package/lib/commonjs/components/AppIcon/catalog/bold/e.g.js +1 -46
- package/lib/commonjs/components/AppIcon/catalog/bold/f.g.js +1 -52
- package/lib/commonjs/components/AppIcon/catalog/bold/g.g.js +1 -54
- package/lib/commonjs/components/AppIcon/catalog/bold/h.g.js +1 -52
- package/lib/commonjs/components/AppIcon/catalog/bold/i.g.js +1 -31
- package/lib/commonjs/components/AppIcon/catalog/bold/j.g.js +1 -18
- package/lib/commonjs/components/AppIcon/catalog/bold/k.g.js +1 -20
- package/lib/commonjs/components/AppIcon/catalog/bold/l.g.js +1 -52
- package/lib/commonjs/components/AppIcon/catalog/bold/m.g.js +1 -105
- package/lib/commonjs/components/AppIcon/catalog/bold/n.g.js +1 -34
- package/lib/commonjs/components/AppIcon/catalog/bold/o.g.js +1 -21
- package/lib/commonjs/components/AppIcon/catalog/bold/p.g.js +1 -60
- package/lib/commonjs/components/AppIcon/catalog/bold/q.g.js +1 -22
- package/lib/commonjs/components/AppIcon/catalog/bold/r.g.js +1 -59
- package/lib/commonjs/components/AppIcon/catalog/bold/s.g.js +1 -113
- package/lib/commonjs/components/AppIcon/catalog/bold/t.g.js +1 -74
- package/lib/commonjs/components/AppIcon/catalog/bold/u.g.js +1 -28
- package/lib/commonjs/components/AppIcon/catalog/bold/v.g.js +1 -40
- package/lib/commonjs/components/AppIcon/catalog/bold/w.g.js +1 -41
- package/lib/commonjs/components/AppIcon/catalog/bold/x.g.js +1 -18
- package/lib/commonjs/components/AppIcon/catalog/bold/y.g.js +1 -16
- package/lib/commonjs/components/AppIcon/catalog/bold/z.g.js +1 -17
- package/lib/commonjs/components/AppIcon/catalog/broken/a.g.js +1 -84
- package/lib/commonjs/components/AppIcon/catalog/broken/b.g.js +1 -89
- package/lib/commonjs/components/AppIcon/catalog/broken/c.g.js +1 -118
- package/lib/commonjs/components/AppIcon/catalog/broken/d.g.js +1 -68
- package/lib/commonjs/components/AppIcon/catalog/broken/e.g.js +1 -46
- package/lib/commonjs/components/AppIcon/catalog/broken/f.g.js +1 -52
- package/lib/commonjs/components/AppIcon/catalog/broken/g.g.js +1 -54
- package/lib/commonjs/components/AppIcon/catalog/broken/h.g.js +1 -52
- package/lib/commonjs/components/AppIcon/catalog/broken/i.g.js +1 -31
- package/lib/commonjs/components/AppIcon/catalog/broken/j.g.js +1 -18
- package/lib/commonjs/components/AppIcon/catalog/broken/k.g.js +1 -20
- package/lib/commonjs/components/AppIcon/catalog/broken/l.g.js +1 -52
- package/lib/commonjs/components/AppIcon/catalog/broken/m.g.js +1 -105
- package/lib/commonjs/components/AppIcon/catalog/broken/n.g.js +1 -34
- package/lib/commonjs/components/AppIcon/catalog/broken/o.g.js +1 -21
- package/lib/commonjs/components/AppIcon/catalog/broken/p.g.js +1 -60
- package/lib/commonjs/components/AppIcon/catalog/broken/q.g.js +1 -22
- package/lib/commonjs/components/AppIcon/catalog/broken/r.g.js +1 -59
- package/lib/commonjs/components/AppIcon/catalog/broken/s.g.js +1 -113
- package/lib/commonjs/components/AppIcon/catalog/broken/t.g.js +1 -74
- package/lib/commonjs/components/AppIcon/catalog/broken/u.g.js +1 -28
- package/lib/commonjs/components/AppIcon/catalog/broken/v.g.js +1 -40
- package/lib/commonjs/components/AppIcon/catalog/broken/w.g.js +1 -41
- package/lib/commonjs/components/AppIcon/catalog/broken/x.g.js +1 -18
- package/lib/commonjs/components/AppIcon/catalog/broken/y.g.js +1 -16
- package/lib/commonjs/components/AppIcon/catalog/broken/z.g.js +1 -17
- package/lib/commonjs/components/AppIcon/catalog/bulk/a.g.js +1 -84
- package/lib/commonjs/components/AppIcon/catalog/bulk/b.g.js +1 -89
- package/lib/commonjs/components/AppIcon/catalog/bulk/c.g.js +1 -118
- package/lib/commonjs/components/AppIcon/catalog/bulk/d.g.js +1 -68
- package/lib/commonjs/components/AppIcon/catalog/bulk/e.g.js +1 -46
- package/lib/commonjs/components/AppIcon/catalog/bulk/f.g.js +1 -52
- package/lib/commonjs/components/AppIcon/catalog/bulk/g.g.js +1 -54
- package/lib/commonjs/components/AppIcon/catalog/bulk/h.g.js +1 -52
- package/lib/commonjs/components/AppIcon/catalog/bulk/i.g.js +1 -31
- package/lib/commonjs/components/AppIcon/catalog/bulk/j.g.js +1 -18
- package/lib/commonjs/components/AppIcon/catalog/bulk/k.g.js +1 -20
- package/lib/commonjs/components/AppIcon/catalog/bulk/l.g.js +1 -52
- package/lib/commonjs/components/AppIcon/catalog/bulk/m.g.js +1 -105
- package/lib/commonjs/components/AppIcon/catalog/bulk/n.g.js +1 -34
- package/lib/commonjs/components/AppIcon/catalog/bulk/o.g.js +1 -21
- package/lib/commonjs/components/AppIcon/catalog/bulk/p.g.js +1 -60
- package/lib/commonjs/components/AppIcon/catalog/bulk/q.g.js +1 -22
- package/lib/commonjs/components/AppIcon/catalog/bulk/r.g.js +1 -59
- package/lib/commonjs/components/AppIcon/catalog/bulk/s.g.js +1 -113
- package/lib/commonjs/components/AppIcon/catalog/bulk/t.g.js +1 -74
- package/lib/commonjs/components/AppIcon/catalog/bulk/u.g.js +1 -28
- package/lib/commonjs/components/AppIcon/catalog/bulk/v.g.js +1 -40
- package/lib/commonjs/components/AppIcon/catalog/bulk/w.g.js +1 -41
- package/lib/commonjs/components/AppIcon/catalog/bulk/x.g.js +1 -18
- package/lib/commonjs/components/AppIcon/catalog/bulk/y.g.js +1 -16
- package/lib/commonjs/components/AppIcon/catalog/bulk/z.g.js +1 -17
- package/lib/commonjs/components/AppIcon/catalog/linear/a.g.js +1 -84
- package/lib/commonjs/components/AppIcon/catalog/linear/b.g.js +1 -89
- package/lib/commonjs/components/AppIcon/catalog/linear/c.g.js +1 -118
- package/lib/commonjs/components/AppIcon/catalog/linear/d.g.js +1 -68
- package/lib/commonjs/components/AppIcon/catalog/linear/e.g.js +1 -46
- package/lib/commonjs/components/AppIcon/catalog/linear/f.g.js +1 -52
- package/lib/commonjs/components/AppIcon/catalog/linear/g.g.js +1 -54
- package/lib/commonjs/components/AppIcon/catalog/linear/h.g.js +1 -52
- package/lib/commonjs/components/AppIcon/catalog/linear/i.g.js +1 -31
- package/lib/commonjs/components/AppIcon/catalog/linear/j.g.js +1 -18
- package/lib/commonjs/components/AppIcon/catalog/linear/k.g.js +1 -20
- package/lib/commonjs/components/AppIcon/catalog/linear/l.g.js +1 -52
- package/lib/commonjs/components/AppIcon/catalog/linear/m.g.js +1 -105
- package/lib/commonjs/components/AppIcon/catalog/linear/n.g.js +1 -34
- package/lib/commonjs/components/AppIcon/catalog/linear/o.g.js +1 -21
- package/lib/commonjs/components/AppIcon/catalog/linear/p.g.js +1 -60
- package/lib/commonjs/components/AppIcon/catalog/linear/q.g.js +1 -22
- package/lib/commonjs/components/AppIcon/catalog/linear/r.g.js +1 -59
- package/lib/commonjs/components/AppIcon/catalog/linear/s.g.js +1 -113
- package/lib/commonjs/components/AppIcon/catalog/linear/t.g.js +1 -74
- package/lib/commonjs/components/AppIcon/catalog/linear/u.g.js +1 -28
- package/lib/commonjs/components/AppIcon/catalog/linear/v.g.js +1 -40
- package/lib/commonjs/components/AppIcon/catalog/linear/w.g.js +1 -41
- package/lib/commonjs/components/AppIcon/catalog/linear/x.g.js +1 -18
- package/lib/commonjs/components/AppIcon/catalog/linear/y.g.js +1 -16
- package/lib/commonjs/components/AppIcon/catalog/linear/z.g.js +1 -17
- package/lib/commonjs/components/AppIcon/catalog/outline/a.g.js +1 -84
- package/lib/commonjs/components/AppIcon/catalog/outline/b.g.js +1 -89
- package/lib/commonjs/components/AppIcon/catalog/outline/c.g.js +1 -118
- package/lib/commonjs/components/AppIcon/catalog/outline/d.g.js +1 -68
- package/lib/commonjs/components/AppIcon/catalog/outline/e.g.js +1 -46
- package/lib/commonjs/components/AppIcon/catalog/outline/f.g.js +1 -52
- package/lib/commonjs/components/AppIcon/catalog/outline/g.g.js +1 -54
- package/lib/commonjs/components/AppIcon/catalog/outline/h.g.js +1 -52
- package/lib/commonjs/components/AppIcon/catalog/outline/i.g.js +1 -31
- package/lib/commonjs/components/AppIcon/catalog/outline/j.g.js +1 -18
- package/lib/commonjs/components/AppIcon/catalog/outline/k.g.js +1 -20
- package/lib/commonjs/components/AppIcon/catalog/outline/l.g.js +1 -52
- package/lib/commonjs/components/AppIcon/catalog/outline/m.g.js +1 -105
- package/lib/commonjs/components/AppIcon/catalog/outline/n.g.js +1 -34
- package/lib/commonjs/components/AppIcon/catalog/outline/o.g.js +1 -21
- package/lib/commonjs/components/AppIcon/catalog/outline/p.g.js +1 -60
- package/lib/commonjs/components/AppIcon/catalog/outline/q.g.js +1 -22
- package/lib/commonjs/components/AppIcon/catalog/outline/r.g.js +1 -59
- package/lib/commonjs/components/AppIcon/catalog/outline/s.g.js +1 -113
- package/lib/commonjs/components/AppIcon/catalog/outline/t.g.js +1 -74
- package/lib/commonjs/components/AppIcon/catalog/outline/u.g.js +1 -28
- package/lib/commonjs/components/AppIcon/catalog/outline/v.g.js +1 -40
- package/lib/commonjs/components/AppIcon/catalog/outline/w.g.js +1 -41
- package/lib/commonjs/components/AppIcon/catalog/outline/x.g.js +1 -18
- package/lib/commonjs/components/AppIcon/catalog/outline/y.g.js +1 -16
- package/lib/commonjs/components/AppIcon/catalog/outline/z.g.js +1 -17
- package/lib/commonjs/components/AppIcon/catalog/twotone/a.g.js +1 -84
- package/lib/commonjs/components/AppIcon/catalog/twotone/b.g.js +1 -89
- package/lib/commonjs/components/AppIcon/catalog/twotone/c.g.js +1 -118
- package/lib/commonjs/components/AppIcon/catalog/twotone/d.g.js +1 -68
- package/lib/commonjs/components/AppIcon/catalog/twotone/e.g.js +1 -46
- package/lib/commonjs/components/AppIcon/catalog/twotone/f.g.js +1 -52
- package/lib/commonjs/components/AppIcon/catalog/twotone/g.g.js +1 -54
- package/lib/commonjs/components/AppIcon/catalog/twotone/h.g.js +1 -52
- package/lib/commonjs/components/AppIcon/catalog/twotone/i.g.js +1 -31
- package/lib/commonjs/components/AppIcon/catalog/twotone/j.g.js +1 -18
- package/lib/commonjs/components/AppIcon/catalog/twotone/k.g.js +1 -20
- package/lib/commonjs/components/AppIcon/catalog/twotone/l.g.js +1 -52
- package/lib/commonjs/components/AppIcon/catalog/twotone/m.g.js +1 -105
- package/lib/commonjs/components/AppIcon/catalog/twotone/n.g.js +1 -34
- package/lib/commonjs/components/AppIcon/catalog/twotone/o.g.js +1 -21
- package/lib/commonjs/components/AppIcon/catalog/twotone/p.g.js +1 -60
- package/lib/commonjs/components/AppIcon/catalog/twotone/q.g.js +1 -22
- package/lib/commonjs/components/AppIcon/catalog/twotone/r.g.js +1 -59
- package/lib/commonjs/components/AppIcon/catalog/twotone/s.g.js +1 -113
- package/lib/commonjs/components/AppIcon/catalog/twotone/t.g.js +1 -74
- package/lib/commonjs/components/AppIcon/catalog/twotone/u.g.js +1 -28
- package/lib/commonjs/components/AppIcon/catalog/twotone/v.g.js +1 -40
- package/lib/commonjs/components/AppIcon/catalog/twotone/w.g.js +1 -41
- package/lib/commonjs/components/AppIcon/catalog/twotone/x.g.js +1 -18
- package/lib/commonjs/components/AppIcon/catalog/twotone/y.g.js +1 -16
- package/lib/commonjs/components/AppIcon/catalog/twotone/z.g.js +1 -17
- package/lib/commonjs/components/AppIcon/catalog.g.js +1 -187
- package/lib/commonjs/components/AppIcon/defaultIcons.js +1 -83
- package/lib/commonjs/components/AppIcon/glyphs.g.js +1 -160
- package/lib/commonjs/components/AppIcon/index.js +1 -64
- package/lib/commonjs/components/AppIcon/slotIcon.js +1 -67
- package/lib/commonjs/components/AppIcon/variants.g.js +1 -741
- package/lib/commonjs/components/AsyncBlock/AsyncBlock.js +1 -87
- package/lib/commonjs/components/AsyncBlock/index.js +1 -20
- package/lib/commonjs/components/AuthedImage/AuthedImage.js +1 -230
- package/lib/commonjs/components/AuthedImage/authedImageCache.js +1 -351
- package/lib/commonjs/components/AuthedImage/index.js +1 -45
- package/lib/commonjs/components/Autocomplete/Autocomplete.js +1 -227
- package/lib/commonjs/components/Autocomplete/index.js +1 -13
- package/lib/commonjs/components/Avatar/Avatar.js +1 -502
- package/lib/commonjs/components/Avatar/index.js +1 -32
- package/lib/commonjs/components/Badge/Badge.js +1 -298
- package/lib/commonjs/components/Badge/index.js +1 -20
- package/lib/commonjs/components/Banner/Banner.js +1 -401
- package/lib/commonjs/components/Banner/index.js +1 -20
- package/lib/commonjs/components/BottomNavigation/BottomNavigation.js +1 -893
- package/lib/commonjs/components/BottomNavigation/index.js +1 -20
- package/lib/commonjs/components/BottomSheet/BottomSheet.js +1 -732
- package/lib/commonjs/components/BottomSheet/index.js +1 -26
- package/lib/commonjs/components/Box/Box.js +1 -226
- package/lib/commonjs/components/Box/index.js +1 -37
- package/lib/commonjs/components/Button/Button.js +1 -561
- package/lib/commonjs/components/Button/index.js +1 -20
- package/lib/commonjs/components/Card/Card.js +1 -407
- package/lib/commonjs/components/Card/index.js +1 -20
- package/lib/commonjs/components/Carousel/Carousel.js +1 -587
- package/lib/commonjs/components/Carousel/index.js +1 -20
- package/lib/commonjs/components/Checkbox/Checkbox.js +1 -187
- package/lib/commonjs/components/Checkbox/index.js +1 -20
- package/lib/commonjs/components/Chip/Chip.js +1 -358
- package/lib/commonjs/components/Chip/index.js +1 -20
- package/lib/commonjs/components/ChoiceGroup/ChoiceGroup.js +1 -336
- package/lib/commonjs/components/ChoiceGroup/index.js +1 -20
- package/lib/commonjs/components/Confetti/Confetti.js +1 -382
- package/lib/commonjs/components/Confetti/index.js +1 -13
- package/lib/commonjs/components/DatePicker/DatePicker.js +1 -1054
- package/lib/commonjs/components/DatePicker/index.js +1 -20
- package/lib/commonjs/components/DateRangePicker/DateRangePicker.js +1 -794
- package/lib/commonjs/components/DateRangePicker/index.js +1 -20
- package/lib/commonjs/components/DecimalInput/DecimalInput.js +1 -0
- package/lib/commonjs/components/DecimalInput/index.js +1 -0
- package/lib/commonjs/components/Descriptions/Descriptions.js +1 -107
- package/lib/commonjs/components/Descriptions/index.js +1 -20
- package/lib/commonjs/components/Dialog/Dialog.js +1 -248
- package/lib/commonjs/components/Dialog/index.js +1 -20
- package/lib/commonjs/components/Divider/Divider.js +1 -117
- package/lib/commonjs/components/Divider/index.js +1 -20
- package/lib/commonjs/components/Drawer/Drawer.js +1 -382
- package/lib/commonjs/components/Drawer/index.js +1 -20
- package/lib/commonjs/components/EmptyState/EmptyState.js +1 -236
- package/lib/commonjs/components/EmptyState/index.js +1 -20
- package/lib/commonjs/components/ErrorBoundary/ErrorBoundary.js +1 -136
- package/lib/commonjs/components/ErrorBoundary/index.js +1 -27
- package/lib/commonjs/components/ErrorBoundary/useErrorHandler.js +1 -24
- package/lib/commonjs/components/ErrorBoundary/withErrorBoundary.js +1 -28
- package/lib/commonjs/components/FieldBase/Chevron.js +1 -75
- package/lib/commonjs/components/FieldBase/ChoiceText.js +1 -0
- package/lib/commonjs/components/FieldBase/FieldBase.js +1 -804
- package/lib/commonjs/components/FieldBase/index.js +1 -75
- package/lib/commonjs/components/FieldBase/useFloatingLabel.js +1 -181
- package/lib/commonjs/components/FilePicker/FilePicker.js +1 -797
- package/lib/commonjs/components/FilePicker/index.js +1 -26
- package/lib/commonjs/components/FileViewer/FileViewer.js +1 -259
- package/lib/commonjs/components/FileViewer/index.js +1 -13
- package/lib/commonjs/components/FloatingActionButton/FloatingActionButton.js +1 -696
- package/lib/commonjs/components/FloatingActionButton/index.js +1 -26
- package/lib/commonjs/components/ForceUpdateDialog/ForceUpdateDialog.js +1 -90
- package/lib/commonjs/components/ForceUpdateDialog/index.js +1 -20
- package/lib/commonjs/components/FormField/FormField.js +1 -170
- package/lib/commonjs/components/FormField/index.js +1 -20
- package/lib/commonjs/components/IconBadge/IconBadge.js +1 -0
- package/lib/commonjs/components/IconBadge/index.js +1 -0
- package/lib/commonjs/components/IconButton/IconButton.js +1 -198
- package/lib/commonjs/components/IconButton/index.js +1 -13
- package/lib/commonjs/components/ImageGallery/ImageGallery.js +1 -594
- package/lib/commonjs/components/ImageGallery/index.js +1 -20
- package/lib/commonjs/components/InlineSelect/InlineSelect.js +1 -190
- package/lib/commonjs/components/InlineSelect/index.js +1 -20
- package/lib/commonjs/components/Input/Input.js +1 -591
- package/lib/commonjs/components/Input/index.js +1 -20
- package/lib/commonjs/components/KeyboardAwareScrollView/KeyboardAwareScrollView.js +1 -168
- package/lib/commonjs/components/KeyboardAwareScrollView/index.js +1 -13
- package/lib/commonjs/components/KeyboardToolbar/KeyboardToolbar.js +1 -135
- package/lib/commonjs/components/KeyboardToolbar/index.js +1 -13
- package/lib/commonjs/components/ListItem/ListItem.js +1 -344
- package/lib/commonjs/components/ListItem/index.js +1 -20
- package/lib/commonjs/components/LoaderOverlay/LoaderOverlay.js +1 -203
- package/lib/commonjs/components/LoaderOverlay/index.js +1 -25
- package/lib/commonjs/components/Markdown/Markdown.js +1 -276
- package/lib/commonjs/components/Markdown/index.js +1 -13
- package/lib/commonjs/components/Markdown/parse.js +1 -229
- package/lib/commonjs/components/Modal/Modal.js +1 -376
- package/lib/commonjs/components/Modal/index.js +1 -26
- package/lib/commonjs/components/Notation/Notation.js +1 -0
- package/lib/commonjs/components/Notation/index.js +1 -0
- package/lib/commonjs/components/NumberInput/NumberInput.js +1 -386
- package/lib/commonjs/components/NumberInput/index.js +1 -20
- package/lib/commonjs/components/OTPInput/OTPInput.js +1 -448
- package/lib/commonjs/components/OTPInput/index.js +1 -20
- package/lib/commonjs/components/OptionSheet/OptionSheet.js +1 -718
- package/lib/commonjs/components/OptionSheet/index.js +1 -0
- package/lib/commonjs/components/PhoneNumberInput/PhoneNumberInput.js +1 -574
- package/lib/commonjs/components/PhoneNumberInput/index.js +1 -32
- package/lib/commonjs/components/PickerTrigger/PickerTrigger.js +1 -150
- package/lib/commonjs/components/PickerTrigger/index.js +1 -20
- package/lib/commonjs/components/ProfileCompletion/ProfileCompletion.js +1 -214
- package/lib/commonjs/components/ProfileCompletion/index.js +1 -20
- package/lib/commonjs/components/ProfilePicker/ProfilePicker.js +1 -531
- package/lib/commonjs/components/ProfilePicker/index.js +1 -20
- package/lib/commonjs/components/ProgressBar/ProgressBar.js +1 -202
- package/lib/commonjs/components/ProgressBar/index.js +1 -20
- package/lib/commonjs/components/ProgressRing/ProgressRing.js +1 -191
- package/lib/commonjs/components/ProgressRing/index.js +1 -20
- package/lib/commonjs/components/Radio/Radio.js +1 -127
- package/lib/commonjs/components/Radio/RadioDot.js +1 -108
- package/lib/commonjs/components/Radio/RadioGroup.js +1 -50
- package/lib/commonjs/components/Radio/index.js +1 -46
- package/lib/commonjs/components/Rating/Rating.js +1 -338
- package/lib/commonjs/components/Rating/index.js +1 -20
- package/lib/commonjs/components/Repeater/Repeater.js +1 -166
- package/lib/commonjs/components/Repeater/index.js +1 -20
- package/lib/commonjs/components/RichTextEditor/RichTextEditor.js +1 -314
- package/lib/commonjs/components/RichTextEditor/index.js +1 -20
- package/lib/commonjs/components/RichTextEditor/markdownActions.js +1 -213
- package/lib/commonjs/components/SearchBar/SearchBar.js +1 -244
- package/lib/commonjs/components/SearchBar/index.js +1 -20
- package/lib/commonjs/components/SectionHeader/SectionHeader.js +1 -0
- package/lib/commonjs/components/SectionHeader/index.js +1 -0
- package/lib/commonjs/components/SegmentedControl/SegmentedControl.js +1 -320
- package/lib/commonjs/components/SegmentedControl/index.js +1 -20
- package/lib/commonjs/components/Select/Select.js +1 -277
- package/lib/commonjs/components/Select/index.js +1 -20
- package/lib/commonjs/components/Skeleton/Skeleton.js +1 -285
- package/lib/commonjs/components/Skeleton/SkeletonClock.js +1 -118
- package/lib/commonjs/components/Skeleton/SkeletonContent.js +1 -309
- package/lib/commonjs/components/Skeleton/SkeletonList.js +1 -92
- package/lib/commonjs/components/Skeleton/SkeletonProvider.js +1 -114
- package/lib/commonjs/components/Skeleton/SkeletonSkip.js +1 -37
- package/lib/commonjs/components/Skeleton/index.js +1 -85
- package/lib/commonjs/components/SlideToConfirm/SlideToConfirm.js +1 -262
- package/lib/commonjs/components/SlideToConfirm/index.js +1 -13
- package/lib/commonjs/components/Slider/Slider.js +1 -809
- package/lib/commonjs/components/Slider/index.js +1 -20
- package/lib/commonjs/components/Slider/valueText.js +1 -266
- package/lib/commonjs/components/SliderField/SliderField.js +1 -360
- package/lib/commonjs/components/SliderField/index.js +1 -20
- package/lib/commonjs/components/Spinner/Spinner.js +1 -203
- package/lib/commonjs/components/Spinner/index.js +1 -20
- package/lib/commonjs/components/SquircleFill/SquircleFill.js +1 -116
- package/lib/commonjs/components/StatTile/StatTile.js +1 -0
- package/lib/commonjs/components/StatTile/index.js +1 -0
- package/lib/commonjs/components/StatusBadge/StatusBadge.js +1 -233
- package/lib/commonjs/components/StatusBadge/index.js +1 -20
- package/lib/commonjs/components/Stepper/Stepper.js +1 -779
- package/lib/commonjs/components/Stepper/index.js +1 -20
- package/lib/commonjs/components/Swipeable/Swipeable.js +1 -383
- package/lib/commonjs/components/Swipeable/index.js +1 -20
- package/lib/commonjs/components/Switch/Switch.js +1 -233
- package/lib/commonjs/components/Switch/index.js +1 -20
- package/lib/commonjs/components/Tabs/Tabs.js +1 -428
- package/lib/commonjs/components/Tabs/index.js +1 -20
- package/lib/commonjs/components/TagInput/TagInput.js +1 -185
- package/lib/commonjs/components/TagInput/index.js +1 -20
- package/lib/commonjs/components/Text/Text.js +1 -146
- package/lib/commonjs/components/Text/index.js +1 -13
- package/lib/commonjs/components/TimePicker/TimePicker.js +1 -732
- package/lib/commonjs/components/TimePicker/index.js +1 -20
- package/lib/commonjs/components/Timeline/Timeline.js +1 -263
- package/lib/commonjs/components/Timeline/index.js +1 -20
- package/lib/commonjs/components/Toast/Toast.js +1 -326
- package/lib/commonjs/components/Toast/ToastProvider.js +1 -200
- package/lib/commonjs/components/Toast/index.js +1 -39
- package/lib/commonjs/components/Tooltip/Tooltip.js +1 -412
- package/lib/commonjs/components/Tooltip/index.js +1 -20
- package/lib/commonjs/components/Tour/Tour.js +1 -342
- package/lib/commonjs/components/Tour/index.js +1 -20
- package/lib/commonjs/components/ZoomableImage/ZoomableImage.js +1 -204
- package/lib/commonjs/components/ZoomableImage/index.js +1 -13
- package/lib/commonjs/components/index.js +1 -748
- package/lib/commonjs/form/FormContext.js +1 -52
- package/lib/commonjs/form/HookFormField.js +1 -0
- package/lib/commonjs/form/equal.js +1 -56
- package/lib/commonjs/form/index.js +1 -81
- package/lib/commonjs/form/path.js +1 -91
- package/lib/commonjs/form/rules.js +1 -73
- package/lib/commonjs/form/types.js +1 -2
- package/lib/commonjs/form/useField.js +1 -66
- package/lib/commonjs/form/useForm.js +1 -379
- package/lib/commonjs/form/useFormCompletion.js +1 -73
- package/lib/commonjs/form/useHookFormField.js +1 -0
- package/lib/commonjs/hooks/index.js +1 -85
- package/lib/commonjs/hooks/useControllableState.js +1 -32
- package/lib/commonjs/hooks/useDebounce.js +1 -17
- package/lib/commonjs/hooks/useDragToDismiss.js +1 -142
- package/lib/commonjs/hooks/useFlickGuard.js +1 -60
- package/lib/commonjs/hooks/usePressAnimation.js +1 -130
- package/lib/commonjs/hooks/useReducedMotion.js +1 -33
- package/lib/commonjs/hooks/useToggle.js +1 -22
- package/lib/commonjs/index.js +1 -468
- package/lib/commonjs/initUI.js +1 -24
- package/lib/commonjs/network/NetworkStatusBanner.js +1 -89
- package/lib/commonjs/network/index.js +1 -13
- package/lib/commonjs/specs/NativePdfRasterizer.js +1 -9
- package/lib/commonjs/theme/Gradient.js +1 -59
- package/lib/commonjs/theme/ThemeContext.js +1 -101
- package/lib/commonjs/theme/animatedValue.js +1 -69
- package/lib/commonjs/theme/index.js +1 -149
- package/lib/commonjs/theme/merge.js +1 -30
- package/lib/commonjs/theme/textStyle.js +1 -39
- package/lib/commonjs/theme/tokens.js +1 -706
- package/lib/commonjs/theme/types.js +1 -6
- package/lib/commonjs/utils/color.js +1 -58
- package/lib/commonjs/utils/corners.js +1 -22
- package/lib/commonjs/utils/dimensions.js +1 -37
- package/lib/commonjs/utils/feedback.js +1 -76
- package/lib/commonjs/utils/hapticUtils.js +1 -94
- package/lib/commonjs/utils/hashString.js +1 -22
- package/lib/commonjs/utils/index.js +1 -178
- package/lib/commonjs/utils/mergeRefs.js +1 -24
- package/lib/commonjs/utils/responsive.js +1 -104
- package/lib/commonjs/utils/shadows.js +1 -61
- package/lib/commonjs/utils/spacing.js +1 -86
- package/lib/commonjs/utils/squircle.js +1 -158
- package/lib/commonjs/utils/warnUnknownProps.js +1 -46
- package/lib/module/components/Accordion/Accordion.js +1 -337
- package/lib/module/components/Accordion/index.js +1 -4
- package/lib/module/components/AmountSlider/AmountSlider.js +1 -205
- package/lib/module/components/AmountSlider/index.js +1 -4
- package/lib/module/components/AnimatePresence/AnimatePresence.js +1 -65
- package/lib/module/components/AnimatePresence/index.js +1 -4
- package/lib/module/components/AppBar/AppBar.js +1 -354
- package/lib/module/components/AppBar/index.js +1 -4
- package/lib/module/components/AppIcon/AppIcon.js +1 -136
- package/lib/module/components/AppIcon/catalog/bold/a.g.js +1 -80
- package/lib/module/components/AppIcon/catalog/bold/b.g.js +1 -85
- package/lib/module/components/AppIcon/catalog/bold/c.g.js +1 -114
- package/lib/module/components/AppIcon/catalog/bold/d.g.js +1 -64
- package/lib/module/components/AppIcon/catalog/bold/e.g.js +1 -42
- package/lib/module/components/AppIcon/catalog/bold/f.g.js +1 -48
- package/lib/module/components/AppIcon/catalog/bold/g.g.js +1 -50
- package/lib/module/components/AppIcon/catalog/bold/h.g.js +1 -48
- package/lib/module/components/AppIcon/catalog/bold/i.g.js +1 -27
- package/lib/module/components/AppIcon/catalog/bold/j.g.js +1 -14
- package/lib/module/components/AppIcon/catalog/bold/k.g.js +1 -16
- package/lib/module/components/AppIcon/catalog/bold/l.g.js +1 -48
- package/lib/module/components/AppIcon/catalog/bold/m.g.js +1 -101
- package/lib/module/components/AppIcon/catalog/bold/n.g.js +1 -30
- package/lib/module/components/AppIcon/catalog/bold/o.g.js +1 -17
- package/lib/module/components/AppIcon/catalog/bold/p.g.js +1 -56
- package/lib/module/components/AppIcon/catalog/bold/q.g.js +1 -18
- package/lib/module/components/AppIcon/catalog/bold/r.g.js +1 -55
- package/lib/module/components/AppIcon/catalog/bold/s.g.js +1 -109
- package/lib/module/components/AppIcon/catalog/bold/t.g.js +1 -70
- package/lib/module/components/AppIcon/catalog/bold/u.g.js +1 -24
- package/lib/module/components/AppIcon/catalog/bold/v.g.js +1 -36
- package/lib/module/components/AppIcon/catalog/bold/w.g.js +1 -37
- package/lib/module/components/AppIcon/catalog/bold/x.g.js +1 -14
- package/lib/module/components/AppIcon/catalog/bold/y.g.js +1 -12
- package/lib/module/components/AppIcon/catalog/bold/z.g.js +1 -13
- package/lib/module/components/AppIcon/catalog/broken/a.g.js +1 -80
- package/lib/module/components/AppIcon/catalog/broken/b.g.js +1 -85
- package/lib/module/components/AppIcon/catalog/broken/c.g.js +1 -114
- package/lib/module/components/AppIcon/catalog/broken/d.g.js +1 -64
- package/lib/module/components/AppIcon/catalog/broken/e.g.js +1 -42
- package/lib/module/components/AppIcon/catalog/broken/f.g.js +1 -48
- package/lib/module/components/AppIcon/catalog/broken/g.g.js +1 -50
- package/lib/module/components/AppIcon/catalog/broken/h.g.js +1 -48
- package/lib/module/components/AppIcon/catalog/broken/i.g.js +1 -27
- package/lib/module/components/AppIcon/catalog/broken/j.g.js +1 -14
- package/lib/module/components/AppIcon/catalog/broken/k.g.js +1 -16
- package/lib/module/components/AppIcon/catalog/broken/l.g.js +1 -48
- package/lib/module/components/AppIcon/catalog/broken/m.g.js +1 -101
- package/lib/module/components/AppIcon/catalog/broken/n.g.js +1 -30
- package/lib/module/components/AppIcon/catalog/broken/o.g.js +1 -17
- package/lib/module/components/AppIcon/catalog/broken/p.g.js +1 -56
- package/lib/module/components/AppIcon/catalog/broken/q.g.js +1 -18
- package/lib/module/components/AppIcon/catalog/broken/r.g.js +1 -55
- package/lib/module/components/AppIcon/catalog/broken/s.g.js +1 -109
- package/lib/module/components/AppIcon/catalog/broken/t.g.js +1 -70
- package/lib/module/components/AppIcon/catalog/broken/u.g.js +1 -24
- package/lib/module/components/AppIcon/catalog/broken/v.g.js +1 -36
- package/lib/module/components/AppIcon/catalog/broken/w.g.js +1 -37
- package/lib/module/components/AppIcon/catalog/broken/x.g.js +1 -14
- package/lib/module/components/AppIcon/catalog/broken/y.g.js +1 -12
- package/lib/module/components/AppIcon/catalog/broken/z.g.js +1 -13
- package/lib/module/components/AppIcon/catalog/bulk/a.g.js +1 -80
- package/lib/module/components/AppIcon/catalog/bulk/b.g.js +1 -85
- package/lib/module/components/AppIcon/catalog/bulk/c.g.js +1 -114
- package/lib/module/components/AppIcon/catalog/bulk/d.g.js +1 -64
- package/lib/module/components/AppIcon/catalog/bulk/e.g.js +1 -42
- package/lib/module/components/AppIcon/catalog/bulk/f.g.js +1 -48
- package/lib/module/components/AppIcon/catalog/bulk/g.g.js +1 -50
- package/lib/module/components/AppIcon/catalog/bulk/h.g.js +1 -48
- package/lib/module/components/AppIcon/catalog/bulk/i.g.js +1 -27
- package/lib/module/components/AppIcon/catalog/bulk/j.g.js +1 -14
- package/lib/module/components/AppIcon/catalog/bulk/k.g.js +1 -16
- package/lib/module/components/AppIcon/catalog/bulk/l.g.js +1 -48
- package/lib/module/components/AppIcon/catalog/bulk/m.g.js +1 -101
- package/lib/module/components/AppIcon/catalog/bulk/n.g.js +1 -30
- package/lib/module/components/AppIcon/catalog/bulk/o.g.js +1 -17
- package/lib/module/components/AppIcon/catalog/bulk/p.g.js +1 -56
- package/lib/module/components/AppIcon/catalog/bulk/q.g.js +1 -18
- package/lib/module/components/AppIcon/catalog/bulk/r.g.js +1 -55
- package/lib/module/components/AppIcon/catalog/bulk/s.g.js +1 -109
- package/lib/module/components/AppIcon/catalog/bulk/t.g.js +1 -70
- package/lib/module/components/AppIcon/catalog/bulk/u.g.js +1 -24
- package/lib/module/components/AppIcon/catalog/bulk/v.g.js +1 -36
- package/lib/module/components/AppIcon/catalog/bulk/w.g.js +1 -37
- package/lib/module/components/AppIcon/catalog/bulk/x.g.js +1 -14
- package/lib/module/components/AppIcon/catalog/bulk/y.g.js +1 -12
- package/lib/module/components/AppIcon/catalog/bulk/z.g.js +1 -13
- package/lib/module/components/AppIcon/catalog/linear/a.g.js +1 -80
- package/lib/module/components/AppIcon/catalog/linear/b.g.js +1 -85
- package/lib/module/components/AppIcon/catalog/linear/c.g.js +1 -114
- package/lib/module/components/AppIcon/catalog/linear/d.g.js +1 -64
- package/lib/module/components/AppIcon/catalog/linear/e.g.js +1 -42
- package/lib/module/components/AppIcon/catalog/linear/f.g.js +1 -48
- package/lib/module/components/AppIcon/catalog/linear/g.g.js +1 -50
- package/lib/module/components/AppIcon/catalog/linear/h.g.js +1 -48
- package/lib/module/components/AppIcon/catalog/linear/i.g.js +1 -27
- package/lib/module/components/AppIcon/catalog/linear/j.g.js +1 -14
- package/lib/module/components/AppIcon/catalog/linear/k.g.js +1 -16
- package/lib/module/components/AppIcon/catalog/linear/l.g.js +1 -48
- package/lib/module/components/AppIcon/catalog/linear/m.g.js +1 -101
- package/lib/module/components/AppIcon/catalog/linear/n.g.js +1 -30
- package/lib/module/components/AppIcon/catalog/linear/o.g.js +1 -17
- package/lib/module/components/AppIcon/catalog/linear/p.g.js +1 -56
- package/lib/module/components/AppIcon/catalog/linear/q.g.js +1 -18
- package/lib/module/components/AppIcon/catalog/linear/r.g.js +1 -55
- package/lib/module/components/AppIcon/catalog/linear/s.g.js +1 -109
- package/lib/module/components/AppIcon/catalog/linear/t.g.js +1 -70
- package/lib/module/components/AppIcon/catalog/linear/u.g.js +1 -24
- package/lib/module/components/AppIcon/catalog/linear/v.g.js +1 -36
- package/lib/module/components/AppIcon/catalog/linear/w.g.js +1 -37
- package/lib/module/components/AppIcon/catalog/linear/x.g.js +1 -14
- package/lib/module/components/AppIcon/catalog/linear/y.g.js +1 -12
- package/lib/module/components/AppIcon/catalog/linear/z.g.js +1 -13
- package/lib/module/components/AppIcon/catalog/outline/a.g.js +1 -80
- package/lib/module/components/AppIcon/catalog/outline/b.g.js +1 -85
- package/lib/module/components/AppIcon/catalog/outline/c.g.js +1 -114
- package/lib/module/components/AppIcon/catalog/outline/d.g.js +1 -64
- package/lib/module/components/AppIcon/catalog/outline/e.g.js +1 -42
- package/lib/module/components/AppIcon/catalog/outline/f.g.js +1 -48
- package/lib/module/components/AppIcon/catalog/outline/g.g.js +1 -50
- package/lib/module/components/AppIcon/catalog/outline/h.g.js +1 -48
- package/lib/module/components/AppIcon/catalog/outline/i.g.js +1 -27
- package/lib/module/components/AppIcon/catalog/outline/j.g.js +1 -14
- package/lib/module/components/AppIcon/catalog/outline/k.g.js +1 -16
- package/lib/module/components/AppIcon/catalog/outline/l.g.js +1 -48
- package/lib/module/components/AppIcon/catalog/outline/m.g.js +1 -101
- package/lib/module/components/AppIcon/catalog/outline/n.g.js +1 -30
- package/lib/module/components/AppIcon/catalog/outline/o.g.js +1 -17
- package/lib/module/components/AppIcon/catalog/outline/p.g.js +1 -56
- package/lib/module/components/AppIcon/catalog/outline/q.g.js +1 -18
- package/lib/module/components/AppIcon/catalog/outline/r.g.js +1 -55
- package/lib/module/components/AppIcon/catalog/outline/s.g.js +1 -109
- package/lib/module/components/AppIcon/catalog/outline/t.g.js +1 -70
- package/lib/module/components/AppIcon/catalog/outline/u.g.js +1 -24
- package/lib/module/components/AppIcon/catalog/outline/v.g.js +1 -36
- package/lib/module/components/AppIcon/catalog/outline/w.g.js +1 -37
- package/lib/module/components/AppIcon/catalog/outline/x.g.js +1 -14
- package/lib/module/components/AppIcon/catalog/outline/y.g.js +1 -12
- package/lib/module/components/AppIcon/catalog/outline/z.g.js +1 -13
- package/lib/module/components/AppIcon/catalog/twotone/a.g.js +1 -80
- package/lib/module/components/AppIcon/catalog/twotone/b.g.js +1 -85
- package/lib/module/components/AppIcon/catalog/twotone/c.g.js +1 -114
- package/lib/module/components/AppIcon/catalog/twotone/d.g.js +1 -64
- package/lib/module/components/AppIcon/catalog/twotone/e.g.js +1 -42
- package/lib/module/components/AppIcon/catalog/twotone/f.g.js +1 -48
- package/lib/module/components/AppIcon/catalog/twotone/g.g.js +1 -50
- package/lib/module/components/AppIcon/catalog/twotone/h.g.js +1 -48
- package/lib/module/components/AppIcon/catalog/twotone/i.g.js +1 -27
- package/lib/module/components/AppIcon/catalog/twotone/j.g.js +1 -14
- package/lib/module/components/AppIcon/catalog/twotone/k.g.js +1 -16
- package/lib/module/components/AppIcon/catalog/twotone/l.g.js +1 -48
- package/lib/module/components/AppIcon/catalog/twotone/m.g.js +1 -101
- package/lib/module/components/AppIcon/catalog/twotone/n.g.js +1 -30
- package/lib/module/components/AppIcon/catalog/twotone/o.g.js +1 -17
- package/lib/module/components/AppIcon/catalog/twotone/p.g.js +1 -56
- package/lib/module/components/AppIcon/catalog/twotone/q.g.js +1 -18
- package/lib/module/components/AppIcon/catalog/twotone/r.g.js +1 -55
- package/lib/module/components/AppIcon/catalog/twotone/s.g.js +1 -109
- package/lib/module/components/AppIcon/catalog/twotone/t.g.js +1 -70
- package/lib/module/components/AppIcon/catalog/twotone/u.g.js +1 -24
- package/lib/module/components/AppIcon/catalog/twotone/v.g.js +1 -36
- package/lib/module/components/AppIcon/catalog/twotone/w.g.js +1 -37
- package/lib/module/components/AppIcon/catalog/twotone/x.g.js +1 -14
- package/lib/module/components/AppIcon/catalog/twotone/y.g.js +1 -12
- package/lib/module/components/AppIcon/catalog/twotone/z.g.js +1 -13
- package/lib/module/components/AppIcon/catalog.g.js +1 -183
- package/lib/module/components/AppIcon/defaultIcons.js +1 -79
- package/lib/module/components/AppIcon/glyphs.g.js +1 -156
- package/lib/module/components/AppIcon/index.js +1 -6
- package/lib/module/components/AppIcon/slotIcon.js +1 -62
- package/lib/module/components/AppIcon/variants.g.js +1 -737
- package/lib/module/components/AsyncBlock/AsyncBlock.js +1 -81
- package/lib/module/components/AsyncBlock/index.js +1 -4
- package/lib/module/components/AuthedImage/AuthedImage.js +1 -226
- package/lib/module/components/AuthedImage/authedImageCache.js +1 -337
- package/lib/module/components/AuthedImage/index.js +1 -5
- package/lib/module/components/Autocomplete/Autocomplete.js +1 -222
- package/lib/module/components/Autocomplete/index.js +1 -4
- package/lib/module/components/Avatar/Avatar.js +1 -496
- package/lib/module/components/Avatar/index.js +1 -4
- package/lib/module/components/Badge/Badge.js +1 -294
- package/lib/module/components/Badge/index.js +1 -4
- package/lib/module/components/Banner/Banner.js +1 -397
- package/lib/module/components/Banner/index.js +1 -4
- package/lib/module/components/BottomNavigation/BottomNavigation.js +1 -889
- package/lib/module/components/BottomNavigation/index.js +1 -4
- package/lib/module/components/BottomSheet/BottomSheet.js +1 -727
- package/lib/module/components/BottomSheet/index.js +1 -4
- package/lib/module/components/Box/Box.js +1 -220
- package/lib/module/components/Box/index.js +1 -4
- package/lib/module/components/Button/Button.js +1 -557
- package/lib/module/components/Button/index.js +1 -4
- package/lib/module/components/Card/Card.js +1 -403
- package/lib/module/components/Card/index.js +1 -4
- package/lib/module/components/Carousel/Carousel.js +1 -583
- package/lib/module/components/Carousel/index.js +1 -4
- package/lib/module/components/Checkbox/Checkbox.js +1 -184
- package/lib/module/components/Checkbox/index.js +1 -4
- package/lib/module/components/Chip/Chip.js +1 -354
- package/lib/module/components/Chip/index.js +1 -4
- package/lib/module/components/ChoiceGroup/ChoiceGroup.js +1 -332
- package/lib/module/components/ChoiceGroup/index.js +1 -4
- package/lib/module/components/Confetti/Confetti.js +1 -377
- package/lib/module/components/Confetti/index.js +1 -4
- package/lib/module/components/DatePicker/DatePicker.js +1 -1049
- package/lib/module/components/DatePicker/index.js +1 -4
- package/lib/module/components/DateRangePicker/DateRangePicker.js +1 -791
- package/lib/module/components/DateRangePicker/index.js +1 -4
- package/lib/module/components/DecimalInput/DecimalInput.js +1 -0
- package/lib/module/components/DecimalInput/index.js +1 -0
- package/lib/module/components/Descriptions/Descriptions.js +1 -101
- package/lib/module/components/Descriptions/index.js +1 -4
- package/lib/module/components/Dialog/Dialog.js +1 -243
- package/lib/module/components/Dialog/index.js +1 -4
- package/lib/module/components/Divider/Divider.js +1 -114
- package/lib/module/components/Divider/index.js +1 -4
- package/lib/module/components/Drawer/Drawer.js +1 -378
- package/lib/module/components/Drawer/index.js +1 -4
- package/lib/module/components/EmptyState/EmptyState.js +1 -232
- package/lib/module/components/EmptyState/index.js +1 -4
- package/lib/module/components/ErrorBoundary/ErrorBoundary.js +1 -130
- package/lib/module/components/ErrorBoundary/index.js +1 -6
- package/lib/module/components/ErrorBoundary/useErrorHandler.js +1 -20
- package/lib/module/components/ErrorBoundary/withErrorBoundary.js +1 -23
- package/lib/module/components/FieldBase/Chevron.js +1 -69
- package/lib/module/components/FieldBase/ChoiceText.js +1 -0
- package/lib/module/components/FieldBase/FieldBase.js +1 -790
- package/lib/module/components/FieldBase/index.js +1 -5
- package/lib/module/components/FieldBase/useFloatingLabel.js +1 -177
- package/lib/module/components/FilePicker/FilePicker.js +1 -791
- package/lib/module/components/FilePicker/index.js +1 -4
- package/lib/module/components/FileViewer/FileViewer.js +1 -253
- package/lib/module/components/FileViewer/index.js +1 -4
- package/lib/module/components/FloatingActionButton/FloatingActionButton.js +1 -691
- package/lib/module/components/FloatingActionButton/index.js +1 -4
- package/lib/module/components/ForceUpdateDialog/ForceUpdateDialog.js +1 -84
- package/lib/module/components/ForceUpdateDialog/index.js +1 -4
- package/lib/module/components/FormField/FormField.js +1 -166
- package/lib/module/components/FormField/index.js +1 -4
- package/lib/module/components/IconBadge/IconBadge.js +1 -0
- package/lib/module/components/IconBadge/index.js +1 -0
- package/lib/module/components/IconButton/IconButton.js +1 -194
- package/lib/module/components/IconButton/index.js +1 -4
- package/lib/module/components/ImageGallery/ImageGallery.js +1 -589
- package/lib/module/components/ImageGallery/index.js +1 -4
- package/lib/module/components/InlineSelect/InlineSelect.js +1 -186
- package/lib/module/components/InlineSelect/index.js +1 -4
- package/lib/module/components/Input/Input.js +1 -587
- package/lib/module/components/Input/index.js +1 -4
- package/lib/module/components/KeyboardAwareScrollView/KeyboardAwareScrollView.js +1 -164
- package/lib/module/components/KeyboardAwareScrollView/index.js +1 -4
- package/lib/module/components/KeyboardToolbar/KeyboardToolbar.js +1 -130
- package/lib/module/components/KeyboardToolbar/index.js +1 -4
- package/lib/module/components/ListItem/ListItem.js +1 -340
- package/lib/module/components/ListItem/index.js +1 -4
- package/lib/module/components/LoaderOverlay/LoaderOverlay.js +1 -196
- package/lib/module/components/LoaderOverlay/index.js +1 -4
- package/lib/module/components/Markdown/Markdown.js +1 -270
- package/lib/module/components/Markdown/index.js +1 -4
- package/lib/module/components/Markdown/parse.js +1 -223
- package/lib/module/components/Modal/Modal.js +1 -372
- package/lib/module/components/Modal/index.js +1 -4
- package/lib/module/components/Notation/Notation.js +1 -0
- package/lib/module/components/Notation/index.js +1 -0
- package/lib/module/components/NumberInput/NumberInput.js +1 -382
- package/lib/module/components/NumberInput/index.js +1 -4
- package/lib/module/components/OTPInput/OTPInput.js +1 -445
- package/lib/module/components/OTPInput/index.js +1 -4
- package/lib/module/components/OptionSheet/OptionSheet.js +1 -714
- package/lib/module/components/OptionSheet/index.js +1 -0
- package/lib/module/components/PhoneNumberInput/PhoneNumberInput.js +1 -569
- package/lib/module/components/PhoneNumberInput/index.js +1 -4
- package/lib/module/components/PickerTrigger/PickerTrigger.js +1 -146
- package/lib/module/components/PickerTrigger/index.js +1 -4
- package/lib/module/components/ProfileCompletion/ProfileCompletion.js +1 -211
- package/lib/module/components/ProfileCompletion/index.js +1 -4
- package/lib/module/components/ProfilePicker/ProfilePicker.js +1 -526
- package/lib/module/components/ProfilePicker/index.js +1 -4
- package/lib/module/components/ProgressBar/ProgressBar.js +1 -199
- package/lib/module/components/ProgressBar/index.js +1 -4
- package/lib/module/components/ProgressRing/ProgressRing.js +1 -187
- package/lib/module/components/ProgressRing/index.js +1 -4
- package/lib/module/components/Radio/Radio.js +1 -123
- package/lib/module/components/Radio/RadioDot.js +1 -102
- package/lib/module/components/Radio/RadioGroup.js +1 -45
- package/lib/module/components/Radio/index.js +1 -6
- package/lib/module/components/Rating/Rating.js +1 -334
- package/lib/module/components/Rating/index.js +1 -4
- package/lib/module/components/Repeater/Repeater.js +1 -162
- package/lib/module/components/Repeater/index.js +1 -4
- package/lib/module/components/RichTextEditor/RichTextEditor.js +1 -309
- package/lib/module/components/RichTextEditor/index.js +1 -5
- package/lib/module/components/RichTextEditor/markdownActions.js +1 -207
- package/lib/module/components/SearchBar/SearchBar.js +1 -241
- package/lib/module/components/SearchBar/index.js +1 -4
- package/lib/module/components/SectionHeader/SectionHeader.js +1 -0
- package/lib/module/components/SectionHeader/index.js +1 -0
- package/lib/module/components/SegmentedControl/SegmentedControl.js +1 -317
- package/lib/module/components/SegmentedControl/index.js +1 -4
- package/lib/module/components/Select/Select.js +1 -273
- package/lib/module/components/Select/index.js +1 -4
- package/lib/module/components/Skeleton/Skeleton.js +1 -278
- package/lib/module/components/Skeleton/SkeletonClock.js +1 -111
- package/lib/module/components/Skeleton/SkeletonContent.js +1 -304
- package/lib/module/components/Skeleton/SkeletonList.js +1 -87
- package/lib/module/components/Skeleton/SkeletonProvider.js +1 -106
- package/lib/module/components/Skeleton/SkeletonSkip.js +1 -31
- package/lib/module/components/Skeleton/index.js +1 -9
- package/lib/module/components/SlideToConfirm/SlideToConfirm.js +1 -258
- package/lib/module/components/SlideToConfirm/index.js +1 -4
- package/lib/module/components/Slider/Slider.js +1 -805
- package/lib/module/components/Slider/index.js +1 -4
- package/lib/module/components/Slider/valueText.js +1 -258
- package/lib/module/components/SliderField/SliderField.js +1 -357
- package/lib/module/components/SliderField/index.js +1 -4
- package/lib/module/components/Spinner/Spinner.js +1 -199
- package/lib/module/components/Spinner/index.js +1 -4
- package/lib/module/components/SquircleFill/SquircleFill.js +1 -110
- package/lib/module/components/StatTile/StatTile.js +1 -0
- package/lib/module/components/StatTile/index.js +1 -0
- package/lib/module/components/StatusBadge/StatusBadge.js +1 -229
- package/lib/module/components/StatusBadge/index.js +1 -4
- package/lib/module/components/Stepper/Stepper.js +1 -775
- package/lib/module/components/Stepper/index.js +1 -4
- package/lib/module/components/Swipeable/Swipeable.js +1 -378
- package/lib/module/components/Swipeable/index.js +1 -4
- package/lib/module/components/Switch/Switch.js +1 -230
- package/lib/module/components/Switch/index.js +1 -4
- package/lib/module/components/Tabs/Tabs.js +1 -425
- package/lib/module/components/Tabs/index.js +1 -4
- package/lib/module/components/TagInput/TagInput.js +1 -181
- package/lib/module/components/TagInput/index.js +1 -4
- package/lib/module/components/Text/Text.js +1 -142
- package/lib/module/components/Text/index.js +1 -4
- package/lib/module/components/TimePicker/TimePicker.js +1 -726
- package/lib/module/components/TimePicker/index.js +1 -4
- package/lib/module/components/Timeline/Timeline.js +1 -257
- package/lib/module/components/Timeline/index.js +1 -4
- package/lib/module/components/Toast/Toast.js +1 -321
- package/lib/module/components/Toast/ToastProvider.js +1 -192
- package/lib/module/components/Toast/index.js +1 -5
- package/lib/module/components/Tooltip/Tooltip.js +1 -407
- package/lib/module/components/Tooltip/index.js +1 -4
- package/lib/module/components/Tour/Tour.js +1 -338
- package/lib/module/components/Tour/index.js +1 -4
- package/lib/module/components/ZoomableImage/ZoomableImage.js +1 -198
- package/lib/module/components/ZoomableImage/index.js +1 -4
- package/lib/module/components/index.js +1 -79
- package/lib/module/form/FormContext.js +1 -44
- package/lib/module/form/HookFormField.js +1 -0
- package/lib/module/form/equal.js +1 -51
- package/lib/module/form/index.js +1 -17
- package/lib/module/form/path.js +1 -84
- package/lib/module/form/rules.js +1 -59
- package/lib/module/form/types.js +1 -2
- package/lib/module/form/useField.js +1 -61
- package/lib/module/form/useForm.js +1 -375
- package/lib/module/form/useFormCompletion.js +1 -67
- package/lib/module/form/useHookFormField.js +1 -0
- package/lib/module/hooks/index.js +1 -10
- package/lib/module/hooks/useControllableState.js +1 -28
- package/lib/module/hooks/useDebounce.js +1 -12
- package/lib/module/hooks/useDragToDismiss.js +1 -137
- package/lib/module/hooks/useFlickGuard.js +1 -55
- package/lib/module/hooks/usePressAnimation.js +1 -126
- package/lib/module/hooks/useReducedMotion.js +1 -29
- package/lib/module/hooks/useToggle.js +1 -17
- package/lib/module/index.js +1 -18
- package/lib/module/initUI.js +1 -19
- package/lib/module/network/NetworkStatusBanner.js +1 -83
- package/lib/module/network/index.js +1 -4
- package/lib/module/specs/NativePdfRasterizer.js +1 -5
- package/lib/module/theme/Gradient.js +1 -52
- package/lib/module/theme/ThemeContext.js +1 -93
- package/lib/module/theme/animatedValue.js +1 -64
- package/lib/module/theme/index.js +1 -67
- package/lib/module/theme/merge.js +1 -25
- package/lib/module/theme/textStyle.js +1 -34
- package/lib/module/theme/tokens.js +1 -702
- package/lib/module/theme/types.js +1 -4
- package/lib/module/utils/color.js +1 -52
- package/lib/module/utils/corners.js +1 -18
- package/lib/module/utils/dimensions.js +1 -4
- package/lib/module/utils/feedback.js +1 -70
- package/lib/module/utils/hapticUtils.js +1 -86
- package/lib/module/utils/hashString.js +1 -17
- package/lib/module/utils/index.js +1 -13
- package/lib/module/utils/mergeRefs.js +1 -19
- package/lib/module/utils/responsive.js +1 -97
- package/lib/module/utils/shadows.js +1 -54
- package/lib/module/utils/spacing.js +1 -82
- package/lib/module/utils/squircle.js +1 -151
- package/lib/module/utils/warnUnknownProps.js +1 -42
- package/lib/typescript/commonjs/components/AppBar/AppBar.d.ts +42 -1
- package/lib/typescript/commonjs/components/AppIcon/AppIcon.d.ts +15 -2
- package/lib/typescript/commonjs/components/AppIcon/catalog.g.d.ts +1 -1
- package/lib/typescript/commonjs/components/AppIcon/glyphs.g.d.ts +62 -0
- package/lib/typescript/commonjs/components/AppIcon/index.d.ts +2 -2
- package/lib/typescript/commonjs/components/AppIcon/slotIcon.d.ts +9 -5
- package/lib/typescript/commonjs/components/AsyncBlock/AsyncBlock.d.ts +17 -1
- package/lib/typescript/commonjs/components/AsyncBlock/index.d.ts +1 -1
- package/lib/typescript/commonjs/components/AuthedImage/AuthedImage.d.ts +17 -2
- package/lib/typescript/commonjs/components/AuthedImage/authedImageCache.d.ts +12 -0
- package/lib/typescript/commonjs/components/Avatar/Avatar.d.ts +8 -5
- package/lib/typescript/commonjs/components/Banner/Banner.d.ts +28 -1
- package/lib/typescript/commonjs/components/Banner/index.d.ts +1 -1
- package/lib/typescript/commonjs/components/BottomSheet/BottomSheet.d.ts +44 -2
- package/lib/typescript/commonjs/components/BottomSheet/index.d.ts +1 -1
- package/lib/typescript/commonjs/components/Button/Button.d.ts +11 -0
- package/lib/typescript/commonjs/components/Card/Card.d.ts +31 -1
- package/lib/typescript/commonjs/components/Card/index.d.ts +1 -1
- package/lib/typescript/commonjs/components/Checkbox/Checkbox.d.ts +22 -4
- package/lib/typescript/commonjs/components/Chip/Chip.d.ts +19 -1
- package/lib/typescript/commonjs/components/Chip/index.d.ts +1 -1
- package/lib/typescript/commonjs/components/ChoiceGroup/ChoiceGroup.d.ts +31 -7
- package/lib/typescript/commonjs/components/ChoiceGroup/index.d.ts +1 -1
- package/lib/typescript/commonjs/components/DecimalInput/DecimalInput.d.ts +56 -0
- package/lib/typescript/commonjs/components/DecimalInput/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Descriptions/Descriptions.d.ts +15 -2
- package/lib/typescript/commonjs/components/Descriptions/index.d.ts +1 -1
- package/lib/typescript/commonjs/components/Dialog/Dialog.d.ts +6 -2
- package/lib/typescript/commonjs/components/EmptyState/EmptyState.d.ts +6 -0
- package/lib/typescript/commonjs/components/FieldBase/ChoiceText.d.ts +24 -0
- package/lib/typescript/commonjs/components/FieldBase/FieldBase.d.ts +24 -4
- package/lib/typescript/commonjs/components/FieldBase/index.d.ts +1 -1
- package/lib/typescript/commonjs/components/FieldBase/useFloatingLabel.d.ts +3 -1
- package/lib/typescript/commonjs/components/FormField/FormField.d.ts +15 -5
- package/lib/typescript/commonjs/components/IconBadge/IconBadge.d.ts +30 -0
- package/lib/typescript/commonjs/components/IconBadge/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/IconButton/IconButton.d.ts +15 -8
- package/lib/typescript/commonjs/components/Input/Input.d.ts +33 -3
- package/lib/typescript/commonjs/components/KeyboardAwareScrollView/KeyboardAwareScrollView.d.ts +19 -22
- package/lib/typescript/commonjs/components/KeyboardAwareScrollView/index.d.ts +1 -1
- package/lib/typescript/commonjs/components/KeyboardToolbar/KeyboardToolbar.d.ts +15 -10
- package/lib/typescript/commonjs/components/ListItem/ListItem.d.ts +39 -2
- package/lib/typescript/commonjs/components/ListItem/index.d.ts +1 -1
- package/lib/typescript/commonjs/components/Notation/Notation.d.ts +27 -0
- package/lib/typescript/commonjs/components/Notation/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/NumberInput/NumberInput.d.ts +11 -3
- package/lib/typescript/commonjs/components/OTPInput/OTPInput.d.ts +6 -0
- package/lib/typescript/commonjs/components/OptionSheet/OptionSheet.d.ts +11 -1
- package/lib/typescript/commonjs/components/OptionSheet/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/PhoneNumberInput/PhoneNumberInput.d.ts +43 -7
- package/lib/typescript/commonjs/components/PhoneNumberInput/index.d.ts +2 -2
- package/lib/typescript/commonjs/components/PickerTrigger/PickerTrigger.d.ts +8 -6
- package/lib/typescript/commonjs/components/ProfilePicker/ProfilePicker.d.ts +3 -3
- package/lib/typescript/commonjs/components/ProgressBar/ProgressBar.d.ts +5 -0
- package/lib/typescript/commonjs/components/Radio/Radio.d.ts +4 -0
- package/lib/typescript/commonjs/components/Repeater/Repeater.d.ts +15 -1
- package/lib/typescript/commonjs/components/SearchBar/SearchBar.d.ts +2 -0
- package/lib/typescript/commonjs/components/SectionHeader/SectionHeader.d.ts +18 -0
- package/lib/typescript/commonjs/components/SectionHeader/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/SegmentedControl/SegmentedControl.d.ts +7 -0
- package/lib/typescript/commonjs/components/Select/Select.d.ts +32 -2
- package/lib/typescript/commonjs/components/Slider/valueText.d.ts +3 -0
- package/lib/typescript/commonjs/components/StatTile/StatTile.d.ts +31 -0
- package/lib/typescript/commonjs/components/StatTile/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Stepper/Stepper.d.ts +7 -0
- package/lib/typescript/commonjs/components/Switch/Switch.d.ts +19 -0
- package/lib/typescript/commonjs/components/Switch/index.d.ts +1 -1
- package/lib/typescript/commonjs/components/Text/Text.d.ts +8 -3
- package/lib/typescript/commonjs/components/Toast/Toast.d.ts +6 -0
- package/lib/typescript/commonjs/components/Toast/ToastProvider.d.ts +24 -1
- package/lib/typescript/commonjs/components/Toast/index.d.ts +2 -2
- package/lib/typescript/commonjs/components/index.d.ts +26 -14
- package/lib/typescript/commonjs/form/FormContext.d.ts +10 -1
- package/lib/typescript/commonjs/form/HookFormField.d.ts +44 -0
- package/lib/typescript/commonjs/form/index.d.ts +4 -0
- package/lib/typescript/commonjs/form/useField.d.ts +6 -0
- package/lib/typescript/commonjs/form/useForm.d.ts +4 -0
- package/lib/typescript/commonjs/form/useHookFormField.d.ts +32 -0
- package/lib/typescript/commonjs/index.d.ts +5 -5
- package/lib/typescript/commonjs/network/NetworkStatusBanner.d.ts +6 -0
- package/lib/typescript/commonjs/theme/ThemeContext.d.ts +8 -0
- package/lib/typescript/commonjs/theme/index.d.ts +1 -1
- package/lib/typescript/commonjs/theme/types.d.ts +40 -1
- package/lib/typescript/module/components/AppBar/AppBar.d.ts +42 -1
- package/lib/typescript/module/components/AppIcon/AppIcon.d.ts +15 -2
- package/lib/typescript/module/components/AppIcon/catalog.g.d.ts +1 -1
- package/lib/typescript/module/components/AppIcon/glyphs.g.d.ts +62 -0
- package/lib/typescript/module/components/AppIcon/index.d.ts +2 -2
- package/lib/typescript/module/components/AppIcon/slotIcon.d.ts +9 -5
- package/lib/typescript/module/components/AsyncBlock/AsyncBlock.d.ts +17 -1
- package/lib/typescript/module/components/AsyncBlock/index.d.ts +1 -1
- package/lib/typescript/module/components/AuthedImage/AuthedImage.d.ts +17 -2
- package/lib/typescript/module/components/AuthedImage/authedImageCache.d.ts +12 -0
- package/lib/typescript/module/components/Avatar/Avatar.d.ts +8 -5
- package/lib/typescript/module/components/Banner/Banner.d.ts +28 -1
- package/lib/typescript/module/components/Banner/index.d.ts +1 -1
- package/lib/typescript/module/components/BottomSheet/BottomSheet.d.ts +44 -2
- package/lib/typescript/module/components/BottomSheet/index.d.ts +1 -1
- package/lib/typescript/module/components/Button/Button.d.ts +11 -0
- package/lib/typescript/module/components/Card/Card.d.ts +31 -1
- package/lib/typescript/module/components/Card/index.d.ts +1 -1
- package/lib/typescript/module/components/Checkbox/Checkbox.d.ts +22 -4
- package/lib/typescript/module/components/Chip/Chip.d.ts +19 -1
- package/lib/typescript/module/components/Chip/index.d.ts +1 -1
- package/lib/typescript/module/components/ChoiceGroup/ChoiceGroup.d.ts +31 -7
- package/lib/typescript/module/components/ChoiceGroup/index.d.ts +1 -1
- package/lib/typescript/module/components/DecimalInput/DecimalInput.d.ts +56 -0
- package/lib/typescript/module/components/DecimalInput/index.d.ts +3 -0
- package/lib/typescript/module/components/Descriptions/Descriptions.d.ts +15 -2
- package/lib/typescript/module/components/Descriptions/index.d.ts +1 -1
- package/lib/typescript/module/components/Dialog/Dialog.d.ts +6 -2
- package/lib/typescript/module/components/EmptyState/EmptyState.d.ts +6 -0
- package/lib/typescript/module/components/FieldBase/ChoiceText.d.ts +24 -0
- package/lib/typescript/module/components/FieldBase/FieldBase.d.ts +24 -4
- package/lib/typescript/module/components/FieldBase/index.d.ts +1 -1
- package/lib/typescript/module/components/FieldBase/useFloatingLabel.d.ts +3 -1
- package/lib/typescript/module/components/FormField/FormField.d.ts +15 -5
- package/lib/typescript/module/components/IconBadge/IconBadge.d.ts +30 -0
- package/lib/typescript/module/components/IconBadge/index.d.ts +3 -0
- package/lib/typescript/module/components/IconButton/IconButton.d.ts +15 -8
- package/lib/typescript/module/components/Input/Input.d.ts +33 -3
- package/lib/typescript/module/components/KeyboardAwareScrollView/KeyboardAwareScrollView.d.ts +19 -22
- package/lib/typescript/module/components/KeyboardAwareScrollView/index.d.ts +1 -1
- package/lib/typescript/module/components/KeyboardToolbar/KeyboardToolbar.d.ts +15 -10
- package/lib/typescript/module/components/ListItem/ListItem.d.ts +39 -2
- package/lib/typescript/module/components/ListItem/index.d.ts +1 -1
- package/lib/typescript/module/components/Notation/Notation.d.ts +27 -0
- package/lib/typescript/module/components/Notation/index.d.ts +3 -0
- package/lib/typescript/module/components/NumberInput/NumberInput.d.ts +11 -3
- package/lib/typescript/module/components/OTPInput/OTPInput.d.ts +6 -0
- package/lib/typescript/module/components/OptionSheet/OptionSheet.d.ts +11 -1
- package/lib/typescript/module/components/OptionSheet/index.d.ts +3 -0
- package/lib/typescript/module/components/PhoneNumberInput/PhoneNumberInput.d.ts +43 -7
- package/lib/typescript/module/components/PhoneNumberInput/index.d.ts +2 -2
- package/lib/typescript/module/components/PickerTrigger/PickerTrigger.d.ts +8 -6
- package/lib/typescript/module/components/ProfilePicker/ProfilePicker.d.ts +3 -3
- package/lib/typescript/module/components/ProgressBar/ProgressBar.d.ts +5 -0
- package/lib/typescript/module/components/Radio/Radio.d.ts +4 -0
- package/lib/typescript/module/components/Repeater/Repeater.d.ts +15 -1
- package/lib/typescript/module/components/SearchBar/SearchBar.d.ts +2 -0
- package/lib/typescript/module/components/SectionHeader/SectionHeader.d.ts +18 -0
- package/lib/typescript/module/components/SectionHeader/index.d.ts +3 -0
- package/lib/typescript/module/components/SegmentedControl/SegmentedControl.d.ts +7 -0
- package/lib/typescript/module/components/Select/Select.d.ts +32 -2
- package/lib/typescript/module/components/Slider/valueText.d.ts +3 -0
- package/lib/typescript/module/components/StatTile/StatTile.d.ts +31 -0
- package/lib/typescript/module/components/StatTile/index.d.ts +3 -0
- package/lib/typescript/module/components/Stepper/Stepper.d.ts +7 -0
- package/lib/typescript/module/components/Switch/Switch.d.ts +19 -0
- package/lib/typescript/module/components/Switch/index.d.ts +1 -1
- package/lib/typescript/module/components/Text/Text.d.ts +8 -3
- package/lib/typescript/module/components/Toast/Toast.d.ts +6 -0
- package/lib/typescript/module/components/Toast/ToastProvider.d.ts +24 -1
- package/lib/typescript/module/components/Toast/index.d.ts +2 -2
- package/lib/typescript/module/components/index.d.ts +26 -14
- package/lib/typescript/module/form/FormContext.d.ts +10 -1
- package/lib/typescript/module/form/HookFormField.d.ts +44 -0
- package/lib/typescript/module/form/index.d.ts +4 -0
- package/lib/typescript/module/form/useField.d.ts +6 -0
- package/lib/typescript/module/form/useForm.d.ts +4 -0
- package/lib/typescript/module/form/useHookFormField.d.ts +32 -0
- package/lib/typescript/module/index.d.ts +5 -5
- package/lib/typescript/module/network/NetworkStatusBanner.d.ts +6 -0
- package/lib/typescript/module/theme/ThemeContext.d.ts +8 -0
- package/lib/typescript/module/theme/index.d.ts +1 -1
- package/lib/typescript/module/theme/types.d.ts +40 -1
- package/package.json +14 -5
|
@@ -1,727 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* BottomSheet — Reanimated 3 + Gesture Handler 2 implementation.
|
|
5
|
-
*
|
|
6
|
-
* A polished, theme-aware bottom sheet with multi-snap-point support,
|
|
7
|
-
* UI-thread driven pan gestures, and native-driver spring animations.
|
|
8
|
-
*
|
|
9
|
-
* USAGE:
|
|
10
|
-
*
|
|
11
|
-
* const ref = useRef<BottomSheetRef>(null);
|
|
12
|
-
* <BottomSheet ref={ref} snapPoints={[200, '50%', '90%']}>
|
|
13
|
-
* <YourContent />
|
|
14
|
-
* </BottomSheet>
|
|
15
|
-
*
|
|
16
|
-
* ref.current?.expand(); // open at first snap point (or `index` prop)
|
|
17
|
-
* ref.current?.expand(2); // open at specific index
|
|
18
|
-
* ref.current?.collapse(); // animate to smallest snap point
|
|
19
|
-
* ref.current?.close(); // dismiss
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
import React, { createContext, forwardRef, useCallback, useContext, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
|
|
23
|
-
import { Dimensions, Keyboard, Modal, Platform, ScrollView, StyleSheet, View } from 'react-native';
|
|
24
|
-
import { Gesture, GestureDetector, GestureHandlerRootView } from 'react-native-gesture-handler';
|
|
25
|
-
import Animated, { Easing, runOnJS, useAnimatedStyle, useSharedValue, withSpring, withTiming } from 'react-native-reanimated';
|
|
26
|
-
import { SafeAreaProvider, useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
27
|
-
import { useTheme } from "../../theme/index.js";
|
|
28
|
-
import { triggerHaptic } from "../../utils/index.js";
|
|
29
|
-
import { smoothCorners } from "../../utils/corners.js";
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* State + actions exposed to anything rendered inside a `<BottomSheet>` —
|
|
33
|
-
* including the `header` and `footer` slots. Read via `useBottomSheet()`.
|
|
34
|
-
*
|
|
35
|
-
* `snapIndex` is the JS-thread mirror of the current snap point. -1 means the
|
|
36
|
-
* sheet is closed (mid-close-animation included). Use it to drive footer
|
|
37
|
-
* button enable state, conditional headers, etc. If you need per-frame
|
|
38
|
-
* progress (e.g. fade a header in as the sheet expands), reach for the
|
|
39
|
-
* animated value via a future enhancement — not exposed today to keep the
|
|
40
|
-
* surface minimal.
|
|
41
|
-
*/
|
|
42
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
43
|
-
const BottomSheetContext = /*#__PURE__*/createContext(null);
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Access the enclosing `<BottomSheet>`'s state and imperative actions.
|
|
47
|
-
* Must be called from a component rendered inside a `<BottomSheet>` (as
|
|
48
|
-
* `children`, `header`, or `footer`).
|
|
49
|
-
*/
|
|
50
|
-
export const useBottomSheet = () => {
|
|
51
|
-
const ctx = useContext(BottomSheetContext);
|
|
52
|
-
if (!ctx) {
|
|
53
|
-
throw new Error('useBottomSheet must be used inside a <BottomSheet>.');
|
|
54
|
-
}
|
|
55
|
-
return ctx;
|
|
56
|
-
};
|
|
57
|
-
const SPRING_CONFIG = {
|
|
58
|
-
damping: 20,
|
|
59
|
-
stiffness: 240,
|
|
60
|
-
mass: 1
|
|
61
|
-
};
|
|
62
|
-
const CLOSE_VELOCITY_THRESHOLD = 1000;
|
|
63
|
-
const DRAG_ACTIVATION_OFFSET = 10;
|
|
64
|
-
const BottomSheet = /*#__PURE__*/forwardRef((props, ref) => {
|
|
65
|
-
const {
|
|
66
|
-
snapPoints,
|
|
67
|
-
index: controlledIndex,
|
|
68
|
-
onChange,
|
|
69
|
-
onAnimate,
|
|
70
|
-
enablePanDownToClose = true,
|
|
71
|
-
enableBackdropPress = true,
|
|
72
|
-
scrollable = false,
|
|
73
|
-
keyboardBehavior = 'shift',
|
|
74
|
-
mode = 'modal',
|
|
75
|
-
handleIndicatorStyle,
|
|
76
|
-
containerStyle,
|
|
77
|
-
header,
|
|
78
|
-
footer,
|
|
79
|
-
headerStyle,
|
|
80
|
-
footerStyle,
|
|
81
|
-
children,
|
|
82
|
-
accessibilityLabel,
|
|
83
|
-
accessibilityViewIsModal,
|
|
84
|
-
testID
|
|
85
|
-
} = props;
|
|
86
|
-
const theme = useTheme();
|
|
87
|
-
const insets = useSafeAreaInsets();
|
|
88
|
-
// Height of the host the sheet is positioned in: the Modal's root in modal
|
|
89
|
-
// mode, the parent overlay in inline mode. Measured with onLayout; the
|
|
90
|
-
// window size is only the guess before the first layout lands. It cannot
|
|
91
|
-
// be the reference itself: on Android `Dimensions.get('window')` excludes
|
|
92
|
-
// the status and navigation bars while the translucent Modal spans both, so
|
|
93
|
-
// a sheet positioned from the window height stopped one bar short of the
|
|
94
|
-
// screen edge (54 dp of backdrop under the sheet on a OnePlus, Android 14).
|
|
95
|
-
// Rotation re-lays out the host, so onLayout covers that case too.
|
|
96
|
-
const [hostHeight, setHostHeight] = useState(() => Dimensions.get('window').height);
|
|
97
|
-
const handleHostLayout = useCallback(e => {
|
|
98
|
-
const next = e.nativeEvent.layout.height;
|
|
99
|
-
if (next > 0) {
|
|
100
|
-
setHostHeight(prev => prev === next ? prev : next);
|
|
101
|
-
}
|
|
102
|
-
}, []);
|
|
103
|
-
|
|
104
|
-
// Resolve snap points (px values), sorted ascending so larger height = smaller translateY.
|
|
105
|
-
const resolvedSnapPoints = useMemo(() => resolveSnapPoints(snapPoints, hostHeight), [snapPoints, hostHeight]);
|
|
106
|
-
const closedY = hostHeight; // fully off-screen
|
|
107
|
-
const maxSnapPoint = resolvedSnapPoints[resolvedSnapPoints.length - 1] ?? 0;
|
|
108
|
-
|
|
109
|
-
// translateY: 0 = top of the host, hostHeight = fully closed.
|
|
110
|
-
const translateY = useSharedValue(closedY);
|
|
111
|
-
// Captures the translateY at gesture start so onUpdate can be additive.
|
|
112
|
-
const dragStartY = useSharedValue(closedY);
|
|
113
|
-
// Tracks current snap index on the JS thread (mirrored to a shared value for worklets).
|
|
114
|
-
const currentIndexShared = useSharedValue(-1);
|
|
115
|
-
const [currentIndex, setCurrentIndex] = useState(-1);
|
|
116
|
-
const isAnimatingRef = useRef(false);
|
|
117
|
-
// Drives the native <Modal>'s visible prop in modal mode. We mount the modal
|
|
118
|
-
// synchronously on open and unmount only after the close animation finishes
|
|
119
|
-
// so the slide-down stays visible.
|
|
120
|
-
const [modalVisible, setModalVisible] = useState(false);
|
|
121
|
-
// Inline-mode mirror of modalVisible: gates the absoluteFill backdrop +
|
|
122
|
-
// sheet tree so a closed inline sheet doesn't sit over the parent dimming
|
|
123
|
-
// it and swallowing touches. Set true on expand, cleared in
|
|
124
|
-
// markAnimationDone once the close animation completes.
|
|
125
|
-
const [inlineMounted, setInlineMounted] = useState(false);
|
|
126
|
-
|
|
127
|
-
// Convert a snap-point index → translateY position. -1 = closed.
|
|
128
|
-
const yForIndex = useCallback(idx => {
|
|
129
|
-
// NOT dead code, despite every ordinary call site clamping first.
|
|
130
|
-
// `expand()` has no empty-snapPoints guard (unlike `collapse`), so with
|
|
131
|
-
// snapPoints={[]} it arrives here out of range — and without this,
|
|
132
|
-
// `hostHeight - resolvedSnapPoints[idx]` is `hostHeight - undefined`,
|
|
133
|
-
// i.e. NaN into the sheet position, which breaks layout silently rather
|
|
134
|
-
// than degrading. Covered by the "degenerate snapPoints" tests.
|
|
135
|
-
if (idx < 0 || idx >= resolvedSnapPoints.length) {
|
|
136
|
-
return closedY;
|
|
137
|
-
}
|
|
138
|
-
const sheetHeight = resolvedSnapPoints[idx];
|
|
139
|
-
return hostHeight - sheetHeight;
|
|
140
|
-
}, [resolvedSnapPoints, hostHeight, closedY]);
|
|
141
|
-
const setIndexJS = useCallback(next => {
|
|
142
|
-
const previous = currentIndex;
|
|
143
|
-
if (previous === next) {
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
setCurrentIndex(next);
|
|
147
|
-
currentIndexShared.value = next;
|
|
148
|
-
onChange?.(next);
|
|
149
|
-
}, [currentIndex, currentIndexShared, onChange]);
|
|
150
|
-
const markAnimationDone = useCallback(() => {
|
|
151
|
-
isAnimatingRef.current = false;
|
|
152
|
-
// If we just finished a close animation, unmount the sheet wrapper.
|
|
153
|
-
if (currentIndexShared.value < 0) {
|
|
154
|
-
if (mode === 'modal') {
|
|
155
|
-
setModalVisible(false);
|
|
156
|
-
} else {
|
|
157
|
-
setInlineMounted(false);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
}, [mode, currentIndexShared]);
|
|
161
|
-
const animateTo = useCallback((to, fromIndex, toIndex) => {
|
|
162
|
-
isAnimatingRef.current = true;
|
|
163
|
-
onAnimate?.(fromIndex, toIndex);
|
|
164
|
-
translateY.value = withSpring(to, SPRING_CONFIG, finished => {
|
|
165
|
-
'worklet';
|
|
166
|
-
|
|
167
|
-
if (finished) {
|
|
168
|
-
runOnJS(markAnimationDone)();
|
|
169
|
-
}
|
|
170
|
-
});
|
|
171
|
-
}, [onAnimate, translateY, markAnimationDone]);
|
|
172
|
-
const expand = useCallback(idx => {
|
|
173
|
-
const target = typeof idx === 'number' ? clamp(idx, 0, resolvedSnapPoints.length - 1) : currentIndex >= 0 ? currentIndex : 0;
|
|
174
|
-
const fromIndex = currentIndexShared.value;
|
|
175
|
-
const to = yForIndex(target);
|
|
176
|
-
// Mount the host (Modal in modal mode, inline overlay in inline mode)
|
|
177
|
-
// before kicking off the spring so the sheet has somewhere to animate
|
|
178
|
-
// into. Inline mode also gates the backdrop on this so a closed sheet
|
|
179
|
-
// doesn't dim the parent.
|
|
180
|
-
if (mode === 'modal') {
|
|
181
|
-
setModalVisible(true);
|
|
182
|
-
} else {
|
|
183
|
-
setInlineMounted(true);
|
|
184
|
-
}
|
|
185
|
-
// Reset translateY to the closed position so the first open animates
|
|
186
|
-
// up from off-screen rather than snapping in place.
|
|
187
|
-
if (fromIndex < 0) {
|
|
188
|
-
translateY.value = closedY;
|
|
189
|
-
}
|
|
190
|
-
setIndexJS(target);
|
|
191
|
-
animateTo(to, fromIndex, target);
|
|
192
|
-
}, [animateTo, closedY, currentIndex, currentIndexShared, mode, resolvedSnapPoints.length, setIndexJS, translateY, yForIndex]);
|
|
193
|
-
const collapse = useCallback(() => {
|
|
194
|
-
if (resolvedSnapPoints.length === 0) {
|
|
195
|
-
return;
|
|
196
|
-
}
|
|
197
|
-
const fromIndex = currentIndexShared.value;
|
|
198
|
-
const to = yForIndex(0);
|
|
199
|
-
setIndexJS(0);
|
|
200
|
-
animateTo(to, fromIndex, 0);
|
|
201
|
-
}, [animateTo, currentIndexShared, resolvedSnapPoints.length, setIndexJS, yForIndex]);
|
|
202
|
-
const close = useCallback(() => {
|
|
203
|
-
const fromIndex = currentIndexShared.value;
|
|
204
|
-
setIndexJS(-1);
|
|
205
|
-
isAnimatingRef.current = true;
|
|
206
|
-
onAnimate?.(fromIndex, -1);
|
|
207
|
-
translateY.value = withTiming(closedY, {
|
|
208
|
-
duration: theme.motion.duration.fast,
|
|
209
|
-
easing: Easing.bezier(...theme.motion.easing.accelerate)
|
|
210
|
-
}, finished => {
|
|
211
|
-
'worklet';
|
|
212
|
-
|
|
213
|
-
if (finished) {
|
|
214
|
-
runOnJS(markAnimationDone)();
|
|
215
|
-
}
|
|
216
|
-
});
|
|
217
|
-
}, [closedY, currentIndexShared, markAnimationDone, onAnimate, setIndexJS, translateY, theme.motion.duration.fast, theme.motion.easing.accelerate]);
|
|
218
|
-
useImperativeHandle(ref, () => ({
|
|
219
|
-
expand,
|
|
220
|
-
collapse,
|
|
221
|
-
close
|
|
222
|
-
}), [expand, collapse, close]);
|
|
223
|
-
|
|
224
|
-
// Drive the controlled `index` prop.
|
|
225
|
-
// biome-ignore lint/correctness/useExhaustiveDependencies: controlled-prop driver: adding `currentIndex` would fight the user's drag by re-snapping to the controlled index
|
|
226
|
-
useEffect(() => {
|
|
227
|
-
if (typeof controlledIndex !== 'number') {
|
|
228
|
-
return;
|
|
229
|
-
}
|
|
230
|
-
if (controlledIndex === currentIndex) {
|
|
231
|
-
return;
|
|
232
|
-
}
|
|
233
|
-
if (controlledIndex === -1) {
|
|
234
|
-
close();
|
|
235
|
-
} else {
|
|
236
|
-
expand(controlledIndex);
|
|
237
|
-
}
|
|
238
|
-
}, [controlledIndex]);
|
|
239
|
-
|
|
240
|
-
// A re-measured host moves every snap target: the first layout lands a
|
|
241
|
-
// frame after expand() mounted the Modal, and rotation brings another.
|
|
242
|
-
// Re-aim the sheet at its current target so it does not stay parked at the
|
|
243
|
-
// offset computed from the old height. A closed sheet re-aims at the new
|
|
244
|
-
// closedY, which is still fully off-screen.
|
|
245
|
-
const lastHostHeight = useRef(hostHeight);
|
|
246
|
-
// biome-ignore lint/correctness/useExhaustiveDependencies: runs only when the host is re-measured; the target is read fresh at that moment, and listing yForIndex would re-spring on every render that passes a new snapPoints array
|
|
247
|
-
useEffect(() => {
|
|
248
|
-
if (lastHostHeight.current === hostHeight) {
|
|
249
|
-
return;
|
|
250
|
-
}
|
|
251
|
-
lastHostHeight.current = hostHeight;
|
|
252
|
-
translateY.value = withSpring(yForIndex(currentIndexShared.value), SPRING_CONFIG);
|
|
253
|
-
}, [hostHeight]);
|
|
254
|
-
|
|
255
|
-
// ───────── Gesture (UI thread) ─────────
|
|
256
|
-
// Worklet helpers must be declared inline so they capture shared values correctly.
|
|
257
|
-
const minTopY = hostHeight - maxSnapPoint; // smallest translateY (sheet fully expanded)
|
|
258
|
-
const snapTargets = useMemo(() => resolvedSnapPoints.map(h => hostHeight - h), [resolvedSnapPoints, hostHeight]);
|
|
259
|
-
const handleSnapEnd = useCallback((toIndex, toY) => {
|
|
260
|
-
const fromIndex = currentIndexShared.value;
|
|
261
|
-
if (toIndex === -1) {
|
|
262
|
-
triggerHaptic('selection');
|
|
263
|
-
setIndexJS(-1);
|
|
264
|
-
isAnimatingRef.current = true;
|
|
265
|
-
onAnimate?.(fromIndex, -1);
|
|
266
|
-
translateY.value = withTiming(closedY, {
|
|
267
|
-
duration: theme.motion.duration.fast,
|
|
268
|
-
easing: Easing.bezier(...theme.motion.easing.accelerate)
|
|
269
|
-
}, finished => {
|
|
270
|
-
'worklet';
|
|
271
|
-
|
|
272
|
-
if (finished) {
|
|
273
|
-
runOnJS(markAnimationDone)();
|
|
274
|
-
}
|
|
275
|
-
});
|
|
276
|
-
return;
|
|
277
|
-
}
|
|
278
|
-
setIndexJS(toIndex);
|
|
279
|
-
animateTo(toY, fromIndex, toIndex);
|
|
280
|
-
}, [animateTo, closedY, currentIndexShared, markAnimationDone, onAnimate, setIndexJS, translateY, theme.motion.duration.fast, theme.motion.easing.accelerate]);
|
|
281
|
-
|
|
282
|
-
// The drag lives on the handle row only (spec: a drag on the content never
|
|
283
|
-
// moves or closes the sheet; the handle drags it, the backdrop tap closes
|
|
284
|
-
// it). Because the pan is not an ancestor of the content, a ScrollView or
|
|
285
|
-
// any other gesture inside `children` works natively with no yielding.
|
|
286
|
-
// Native gesture for the scrollable content (see the ScrollView below). It
|
|
287
|
-
// does not take part in the sheet's drag: the pan lives on the handle only.
|
|
288
|
-
const contentGesture = useMemo(() => Gesture.Native().withTestId(testID ? `${testID}-content-gesture` : 'bottom-sheet-content-gesture'), [testID]);
|
|
289
|
-
const panGesture = useMemo(() => {
|
|
290
|
-
const targets = snapTargets;
|
|
291
|
-
const closed = closedY;
|
|
292
|
-
const top = minTopY;
|
|
293
|
-
const canPanDownToClose = enablePanDownToClose;
|
|
294
|
-
return Gesture.Pan().withTestId(testID ? `${testID}-pan-gesture` : 'bottom-sheet-pan-gesture').activeOffsetY([-DRAG_ACTIVATION_OFFSET, DRAG_ACTIVATION_OFFSET]).failOffsetX([-15, 15])
|
|
295
|
-
// No hitSlop here on purpose. With a hitSlop set, gesture-handler on
|
|
296
|
-
// iOS tests the touch against the detector view's own bounds, and the
|
|
297
|
-
// detector (display: contents) reports bounds far larger than the
|
|
298
|
-
// handle row, so a flick on the content activated the pan and closed
|
|
299
|
-
// the sheet. The grab area is the 40 px handle row itself instead.
|
|
300
|
-
.onStart(() => {
|
|
301
|
-
'worklet';
|
|
302
|
-
|
|
303
|
-
dragStartY.value = translateY.value;
|
|
304
|
-
}).onUpdate(event => {
|
|
305
|
-
'worklet';
|
|
306
|
-
|
|
307
|
-
const next = dragStartY.value + event.translationY;
|
|
308
|
-
// Clamp at the top (most-expanded) snap point with a touch of rubber-banding.
|
|
309
|
-
if (next < top) {
|
|
310
|
-
translateY.value = top + (next - top) * 0.25;
|
|
311
|
-
} else {
|
|
312
|
-
translateY.value = next;
|
|
313
|
-
}
|
|
314
|
-
}).onEnd(event => {
|
|
315
|
-
'worklet';
|
|
316
|
-
|
|
317
|
-
const releaseY = translateY.value;
|
|
318
|
-
const velocity = event.velocityY;
|
|
319
|
-
|
|
320
|
-
// Fast downward swipe → close (if allowed) or snap to smallest.
|
|
321
|
-
if (velocity > CLOSE_VELOCITY_THRESHOLD) {
|
|
322
|
-
if (canPanDownToClose) {
|
|
323
|
-
runOnJS(handleSnapEnd)(-1, closed);
|
|
324
|
-
return;
|
|
325
|
-
}
|
|
326
|
-
runOnJS(handleSnapEnd)(0, targets[0]);
|
|
327
|
-
return;
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
// Find nearest snap target by distance.
|
|
331
|
-
let nearestIdx = 0;
|
|
332
|
-
let nearestDist = Math.abs(releaseY - targets[0]);
|
|
333
|
-
for (let i = 1; i < targets.length; i++) {
|
|
334
|
-
const d = Math.abs(releaseY - targets[i]);
|
|
335
|
-
if (d < nearestDist) {
|
|
336
|
-
nearestDist = d;
|
|
337
|
-
nearestIdx = i;
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
// If user dragged below smallest snap point past threshold and pan-to-close is on, dismiss.
|
|
342
|
-
const smallest = targets[0];
|
|
343
|
-
const overshoot = releaseY - smallest;
|
|
344
|
-
if (canPanDownToClose && overshoot > 80) {
|
|
345
|
-
runOnJS(handleSnapEnd)(-1, closed);
|
|
346
|
-
return;
|
|
347
|
-
}
|
|
348
|
-
runOnJS(handleSnapEnd)(nearestIdx, targets[nearestIdx]);
|
|
349
|
-
});
|
|
350
|
-
}, [closedY, dragStartY, enablePanDownToClose, handleSnapEnd, minTopY, snapTargets, testID, translateY]);
|
|
351
|
-
|
|
352
|
-
// ───────── Keyboard tracking ─────────
|
|
353
|
-
// keyboardOffset is minus the part of the host the keyboard covers. It is
|
|
354
|
-
// added to translateY in sheetStyle (so snap-point math is untouched) and
|
|
355
|
-
// taken off the body height in bodyStyle (so nothing sits behind the
|
|
356
|
-
// keyboard). iOS gets keyboardWillShow/Hide (smoother), Android only emits
|
|
357
|
-
// keyboardDidShow/Hide.
|
|
358
|
-
const keyboardOffset = useSharedValue(0);
|
|
359
|
-
useEffect(() => {
|
|
360
|
-
if (keyboardBehavior === 'none') {
|
|
361
|
-
return;
|
|
362
|
-
}
|
|
363
|
-
const showEvt = Platform.OS === 'ios' ? 'keyboardWillShow' : 'keyboardDidShow';
|
|
364
|
-
const hideEvt = Platform.OS === 'ios' ? 'keyboardWillHide' : 'keyboardDidHide';
|
|
365
|
-
const onShow = e => {
|
|
366
|
-
const height = e.endCoordinates?.height ?? 0;
|
|
367
|
-
const screenY = e.endCoordinates?.screenY;
|
|
368
|
-
// The keyboard's top edge in host coordinates. In modal mode the host
|
|
369
|
-
// spans the whole screen, so the event's screen coordinate is directly
|
|
370
|
-
// usable and stays right when the reported height leaves out Android's
|
|
371
|
-
// navigation bar. Inline hosts are not screen-aligned, so fall back to
|
|
372
|
-
// the height there.
|
|
373
|
-
const keyboardTop = mode === 'modal' && typeof screenY === 'number' && screenY > 0 ? screenY : hostHeight - height;
|
|
374
|
-
const overlap = Math.max(0, hostHeight - keyboardTop);
|
|
375
|
-
keyboardOffset.value = withTiming(-overlap, {
|
|
376
|
-
duration: theme.motion.duration.normal
|
|
377
|
-
});
|
|
378
|
-
};
|
|
379
|
-
const onHide = () => {
|
|
380
|
-
keyboardOffset.value = withTiming(0, {
|
|
381
|
-
duration: theme.motion.duration.normal
|
|
382
|
-
});
|
|
383
|
-
};
|
|
384
|
-
const showSub = Keyboard.addListener(showEvt, onShow);
|
|
385
|
-
const hideSub = Keyboard.addListener(hideEvt, onHide);
|
|
386
|
-
return () => {
|
|
387
|
-
showSub.remove();
|
|
388
|
-
hideSub.remove();
|
|
389
|
-
};
|
|
390
|
-
}, [hostHeight, keyboardBehavior, keyboardOffset, mode, theme.motion.duration.normal]);
|
|
391
|
-
|
|
392
|
-
// ───────── Animated styles ─────────
|
|
393
|
-
// The top clamp (how high the sheet may ride with the keyboard up) must
|
|
394
|
-
// come from the window the sheet is drawn in. In modal mode that is the
|
|
395
|
-
// translucent Modal, which spans the status bar; the app window's provider
|
|
396
|
-
// reports a top inset of 0 there on Android (the app is not edge to edge),
|
|
397
|
-
// which put the handle under the status bar clock. A probe inside the
|
|
398
|
-
// Modal's own provider reports the right value; inline mode keeps the
|
|
399
|
-
// app-level inset.
|
|
400
|
-
const [modalTopInset, setModalTopInset] = useState(insets.top);
|
|
401
|
-
const safeAreaTop = mode === 'modal' ? modalTopInset : insets.top;
|
|
402
|
-
const sheetStyle = useAnimatedStyle(() => {
|
|
403
|
-
const yWithKb = translateY.value + keyboardOffset.value;
|
|
404
|
-
// When the keyboard is up, allow the sheet to slide above its natural
|
|
405
|
-
// max-snap-point top (`minTopY`) so the input area stays visible. We still
|
|
406
|
-
// clamp to the safe-area top so the sheet doesn't disappear under the
|
|
407
|
-
// status bar / notch.
|
|
408
|
-
const lowerBound = keyboardOffset.value < 0 ? safeAreaTop : minTopY;
|
|
409
|
-
const clamped = yWithKb < lowerBound ? lowerBound : yWithKb;
|
|
410
|
-
// Animate `top` (layout prop) instead of `transform: translateY`
|
|
411
|
-
// (visual only). Layout-prop animation under Reanimated still runs on
|
|
412
|
-
// the UI thread, but crucially the sheet's *hit-test box* moves with
|
|
413
|
-
// its visual position. With translateY the layout box stayed parked
|
|
414
|
-
// at top:0..maxSnap regardless of visual offset, so:
|
|
415
|
-
// (a) the empty top half intercepted backdrop taps (worked around
|
|
416
|
-
// previously via pointerEvents="box-none"), and
|
|
417
|
-
// (b) drag gestures on the handle could be claimed by sibling
|
|
418
|
-
// gesture handlers because the actual sheet view was effectively
|
|
419
|
-
// hidden from the responder chain.
|
|
420
|
-
// Animating `top` collapses both problems into nothing — visible area
|
|
421
|
-
// == hit area — so we can drop the box-none hack too.
|
|
422
|
-
return {
|
|
423
|
-
top: clamped
|
|
424
|
-
};
|
|
425
|
-
});
|
|
426
|
-
|
|
427
|
-
// The sheet box is always maxSnapPoint tall (so a drag up reveals content
|
|
428
|
-
// that is already laid out), which means at a lower snap point its bottom
|
|
429
|
-
// part hangs below the host's edge. The body is therefore sized to the
|
|
430
|
-
// VISIBLE part of the sheet: from the sheet's actual (clamped) top down to
|
|
431
|
-
// the host's bottom, or to the keyboard's top edge while the keyboard is
|
|
432
|
-
// up. So the footer pins to the visible bottom at every snap, during a
|
|
433
|
-
// drag, and above the keyboard, and the content area is exactly what the
|
|
434
|
-
// user can see. Nothing is laid out behind the keyboard.
|
|
435
|
-
const bodyStyle = useAnimatedStyle(() => {
|
|
436
|
-
const kb = keyboardOffset.value;
|
|
437
|
-
const lowerBound = kb < 0 ? safeAreaTop : minTopY;
|
|
438
|
-
const y = translateY.value + kb;
|
|
439
|
-
const top = y < lowerBound ? lowerBound : y;
|
|
440
|
-
const visible = hostHeight + kb - top;
|
|
441
|
-
return {
|
|
442
|
-
height: visible < 0 ? 0 : visible > maxSnapPoint ? maxSnapPoint : visible
|
|
443
|
-
};
|
|
444
|
-
});
|
|
445
|
-
const isExpanded = currentIndex >= 0;
|
|
446
|
-
const styles = useMemo(() => buildStyles(theme), [theme]);
|
|
447
|
-
const handleBackdropPress = useCallback(() => {
|
|
448
|
-
if (!enableBackdropPress) {
|
|
449
|
-
return;
|
|
450
|
-
}
|
|
451
|
-
triggerHaptic('selection');
|
|
452
|
-
close();
|
|
453
|
-
}, [enableBackdropPress, close]);
|
|
454
|
-
|
|
455
|
-
// RNGH Tap gesture for the backdrop. Plain RN Pressable on a sibling of a
|
|
456
|
-
// gesture-handler/reanimated sheet doesn't fire reliably on RN 0.85 / Fabric
|
|
457
|
-
// (the gesture system swallows the touch sequence). gorhom/bottom-sheet uses
|
|
458
|
-
// the same Gesture.Tap() pattern for the same reason.
|
|
459
|
-
const backdropTapGesture = useMemo(() => Gesture.Tap().withTestId(testID ? `${testID}-backdrop-gesture` : 'bottom-sheet-backdrop-gesture').maxDuration(250).onEnd((_e, success) => {
|
|
460
|
-
'worklet';
|
|
461
|
-
|
|
462
|
-
if (!success) {
|
|
463
|
-
return;
|
|
464
|
-
}
|
|
465
|
-
runOnJS(handleBackdropPress)();
|
|
466
|
-
}), [handleBackdropPress, testID]);
|
|
467
|
-
const contextValue = useMemo(() => ({
|
|
468
|
-
snapIndex: currentIndex,
|
|
469
|
-
snapPoints: resolvedSnapPoints,
|
|
470
|
-
expand,
|
|
471
|
-
collapse,
|
|
472
|
-
close
|
|
473
|
-
}), [currentIndex, resolvedSnapPoints, expand, collapse, close]);
|
|
474
|
-
|
|
475
|
-
// Don't render the backdrop / sheet tree when the sheet is fully closed.
|
|
476
|
-
// Inline: gated by `inlineMounted` (set in expand, cleared in
|
|
477
|
-
// markAnimationDone after close animation) — keeps an idle inline sheet
|
|
478
|
-
// from sitting over the parent and swallowing touches.
|
|
479
|
-
// Modal: gated by `modalVisible` for the same reason.
|
|
480
|
-
if (mode === 'inline' && !inlineMounted) {
|
|
481
|
-
return null;
|
|
482
|
-
}
|
|
483
|
-
if (mode === 'modal' && !modalVisible) {
|
|
484
|
-
return null;
|
|
485
|
-
}
|
|
486
|
-
const sheetTree = /*#__PURE__*/_jsxs(View, {
|
|
487
|
-
collapsable: false
|
|
488
|
-
// Modal mode: the backdrop is the modal's root, so it fills via flex.
|
|
489
|
-
// Inline mode: the backdrop overlays the parent, so it positions absolute.
|
|
490
|
-
// Either way it is exactly the box the sheet is positioned in, which is
|
|
491
|
-
// why the host height is measured here (see hostHeight).
|
|
492
|
-
,
|
|
493
|
-
style: [mode === 'modal' ? styles.backdropModal : styles.backdropInline, {
|
|
494
|
-
backgroundColor: theme.colors.background.overlay
|
|
495
|
-
}],
|
|
496
|
-
onLayout: handleHostLayout,
|
|
497
|
-
testID: testID,
|
|
498
|
-
accessibilityViewIsModal: accessibilityViewIsModal ?? isExpanded,
|
|
499
|
-
children: [/*#__PURE__*/_jsx(GestureDetector, {
|
|
500
|
-
gesture: backdropTapGesture,
|
|
501
|
-
children: /*#__PURE__*/_jsx(Animated.View, {
|
|
502
|
-
style: StyleSheet.absoluteFill,
|
|
503
|
-
accessibilityRole: "button",
|
|
504
|
-
accessibilityLabel: "Close bottom sheet"
|
|
505
|
-
})
|
|
506
|
-
}), /*#__PURE__*/_jsx(Animated.View, {
|
|
507
|
-
// 'dialog' is a valid platform role on web/iOS; RN's typings list it as a string union
|
|
508
|
-
// that varies by platform — cast keeps strict-mode happy.
|
|
509
|
-
accessibilityRole: "alert",
|
|
510
|
-
accessibilityLabel: accessibilityLabel,
|
|
511
|
-
accessibilityViewIsModal: accessibilityViewIsModal ?? isExpanded,
|
|
512
|
-
style: [styles.sheet, {
|
|
513
|
-
height: maxSnapPoint,
|
|
514
|
-
backgroundColor: theme.colors.background.elevated,
|
|
515
|
-
borderTopLeftRadius: theme.radius['2xl'],
|
|
516
|
-
borderTopRightRadius: theme.radius['2xl'],
|
|
517
|
-
...smoothCorners,
|
|
518
|
-
...theme.shadows.xl
|
|
519
|
-
}, containerStyle, sheetStyle],
|
|
520
|
-
children: /*#__PURE__*/_jsxs(SheetBody, {
|
|
521
|
-
style: [styles.body, bodyStyle],
|
|
522
|
-
keyboardOffset: keyboardOffset,
|
|
523
|
-
children: [/*#__PURE__*/_jsx(GestureDetector, {
|
|
524
|
-
gesture: panGesture,
|
|
525
|
-
children: /*#__PURE__*/_jsx(View, {
|
|
526
|
-
style: styles.handleRow,
|
|
527
|
-
accessible: true,
|
|
528
|
-
accessibilityLabel: "Drag handle",
|
|
529
|
-
accessibilityHint: "Drag up or down to resize the sheet, or swipe down to close it",
|
|
530
|
-
testID: testID ? `${testID}-handle` : 'bottom-sheet-handle',
|
|
531
|
-
children: /*#__PURE__*/_jsx(View, {
|
|
532
|
-
style: [styles.handle, {
|
|
533
|
-
backgroundColor: theme.components.bottomSheet?.handleColor ?? theme.colors.border.primary
|
|
534
|
-
}, handleIndicatorStyle]
|
|
535
|
-
})
|
|
536
|
-
})
|
|
537
|
-
}), header != null && /*#__PURE__*/_jsx(View, {
|
|
538
|
-
style: [styles.header, headerStyle],
|
|
539
|
-
children: header
|
|
540
|
-
}), scrollable ?
|
|
541
|
-
/*#__PURE__*/
|
|
542
|
-
// The ScrollView is registered as a native gesture so that, once
|
|
543
|
-
// it starts scrolling, gesture-handler cancels the React Native
|
|
544
|
-
// touch under the finger. Without it a fast flick that starts on
|
|
545
|
-
// a button inside the content released before the scroll had
|
|
546
|
-
// cancelled the press on iOS, and the button fired (a "Send" that
|
|
547
|
-
// closes the sheet looked like the flick closing it).
|
|
548
|
-
_jsx(GestureDetector, {
|
|
549
|
-
gesture: contentGesture,
|
|
550
|
-
children: /*#__PURE__*/_jsx(ScrollView, {
|
|
551
|
-
style: styles.content
|
|
552
|
-
// "always", not "handled": with "handled" the scroll responder
|
|
553
|
-
// blurs the focused input on release unless it has already seen
|
|
554
|
-
// a scroll event, and on iOS a fast flick releases before the
|
|
555
|
-
// first scroll event reaches JS, so the flick closed the
|
|
556
|
-
// keyboard. Taps on blank content therefore keep the keyboard;
|
|
557
|
-
// its own key, a backdrop tap or a handle drag still dismiss it.
|
|
558
|
-
,
|
|
559
|
-
keyboardShouldPersistTaps: "always",
|
|
560
|
-
keyboardDismissMode: "none",
|
|
561
|
-
children: children
|
|
562
|
-
})
|
|
563
|
-
}) : /*#__PURE__*/_jsx(View, {
|
|
564
|
-
style: styles.content,
|
|
565
|
-
children: children
|
|
566
|
-
}), footer != null && /*#__PURE__*/_jsx(View, {
|
|
567
|
-
style: [styles.footer, footerStyle],
|
|
568
|
-
children: footer
|
|
569
|
-
})]
|
|
570
|
-
})
|
|
571
|
-
})]
|
|
572
|
-
});
|
|
573
|
-
const wrappedTree = /*#__PURE__*/_jsx(BottomSheetContext.Provider, {
|
|
574
|
-
value: contextValue,
|
|
575
|
-
children: sheetTree
|
|
576
|
-
});
|
|
577
|
-
if (mode === 'modal') {
|
|
578
|
-
return /*#__PURE__*/_jsx(Modal, {
|
|
579
|
-
transparent: true,
|
|
580
|
-
visible: modalVisible,
|
|
581
|
-
onRequestClose: close,
|
|
582
|
-
statusBarTranslucent: true,
|
|
583
|
-
navigationBarTranslucent: true,
|
|
584
|
-
animationType: "none",
|
|
585
|
-
supportedOrientations: ['portrait', 'landscape'],
|
|
586
|
-
children: /*#__PURE__*/_jsxs(SafeAreaProvider, {
|
|
587
|
-
style: styles.modalRoot,
|
|
588
|
-
children: [/*#__PURE__*/_jsx(TopInsetProbe, {
|
|
589
|
-
onChange: setModalTopInset
|
|
590
|
-
}), Platform.OS === 'android' ? /*#__PURE__*/_jsx(GestureHandlerRootView, {
|
|
591
|
-
style: styles.modalRoot,
|
|
592
|
-
children: wrappedTree
|
|
593
|
-
}) : wrappedTree]
|
|
594
|
-
})
|
|
595
|
-
});
|
|
596
|
-
}
|
|
597
|
-
return wrappedTree;
|
|
598
|
-
});
|
|
599
|
-
|
|
600
|
-
/**
|
|
601
|
-
* The sheet's inner column: handle, header, content, footer. Pads its bottom
|
|
602
|
-
* by the safe-area inset of the nearest provider, which in modal mode is the
|
|
603
|
-
* one inside the Modal (see there) and in inline mode the app's.
|
|
604
|
-
*/
|
|
605
|
-
/**
|
|
606
|
-
* Reads the top inset of the nearest safe-area provider and reports it up.
|
|
607
|
-
* Rendered inside the Modal's own provider so the sheet's top clamp follows
|
|
608
|
-
* the Modal window (status bar included on Android), not the app window.
|
|
609
|
-
*/
|
|
610
|
-
const TopInsetProbe = ({
|
|
611
|
-
onChange
|
|
612
|
-
}) => {
|
|
613
|
-
const {
|
|
614
|
-
top
|
|
615
|
-
} = useSafeAreaInsets();
|
|
616
|
-
useEffect(() => {
|
|
617
|
-
onChange(top);
|
|
618
|
-
}, [top, onChange]);
|
|
619
|
-
return null;
|
|
620
|
-
};
|
|
621
|
-
const SheetBody = ({
|
|
622
|
-
style,
|
|
623
|
-
keyboardOffset,
|
|
624
|
-
children
|
|
625
|
-
}) => {
|
|
626
|
-
const insets = useSafeAreaInsets();
|
|
627
|
-
const bottom = insets.bottom;
|
|
628
|
-
// The bottom safe-area padding keeps the footer clear of the gesture bar or
|
|
629
|
-
// home indicator. With the keyboard up that bar sits under the keyboard, so
|
|
630
|
-
// the padding would only be a blank strip above the keys: it shrinks by the
|
|
631
|
-
// covered height, to 0 once the keyboard covers the whole inset. Apps that
|
|
632
|
-
// want a gap above the keyboard add their own.
|
|
633
|
-
const paddingStyle = useAnimatedStyle(() => {
|
|
634
|
-
const remaining = bottom + keyboardOffset.value;
|
|
635
|
-
return {
|
|
636
|
-
paddingBottom: remaining > 0 ? remaining : 0
|
|
637
|
-
};
|
|
638
|
-
});
|
|
639
|
-
return /*#__PURE__*/_jsx(Animated.View, {
|
|
640
|
-
style: [style, paddingStyle],
|
|
641
|
-
children: children
|
|
642
|
-
});
|
|
643
|
-
};
|
|
644
|
-
BottomSheet.displayName = 'BottomSheet';
|
|
645
|
-
|
|
646
|
-
// ───────── Helpers ─────────
|
|
647
|
-
|
|
648
|
-
const resolveSnapPoints = (points, screenH) => {
|
|
649
|
-
const resolved = points.map(p => {
|
|
650
|
-
if (typeof p === 'number') {
|
|
651
|
-
return p;
|
|
652
|
-
}
|
|
653
|
-
const pct = parseFloat(p);
|
|
654
|
-
if (Number.isNaN(pct)) {
|
|
655
|
-
return 0;
|
|
656
|
-
}
|
|
657
|
-
return pct / 100 * screenH;
|
|
658
|
-
});
|
|
659
|
-
return [...resolved].sort((a, b) => a - b);
|
|
660
|
-
};
|
|
661
|
-
const clamp = (value, min, max) => Math.min(Math.max(value, min), max);
|
|
662
|
-
const buildStyles = _theme => StyleSheet.create({
|
|
663
|
-
backdropModal: {
|
|
664
|
-
// The backdrop is the modal's root View. On Fabric, an absolute-
|
|
665
|
-
// positioned root inside RNModal has no positioned ancestor and
|
|
666
|
-
// collapses to zero size, taking the scrim with it. `flex: 1` fills
|
|
667
|
-
// the modal content area reliably.
|
|
668
|
-
flex: 1
|
|
669
|
-
},
|
|
670
|
-
backdropInline: {
|
|
671
|
-
// Inline mode: overlay the parent. Parent must be positioned for this
|
|
672
|
-
// to take effect (the consumer is expected to render BottomSheet inside
|
|
673
|
-
// a relatively-positioned container).
|
|
674
|
-
...StyleSheet.absoluteFill
|
|
675
|
-
},
|
|
676
|
-
sheet: {
|
|
677
|
-
position: 'absolute',
|
|
678
|
-
left: 0,
|
|
679
|
-
right: 0,
|
|
680
|
-
// `top` is driven by the animated style (see sheetStyle). Omitted
|
|
681
|
-
// here so the static `0` doesn't fight the animated value during
|
|
682
|
-
// initial paint.
|
|
683
|
-
overflow: 'hidden'
|
|
684
|
-
},
|
|
685
|
-
body: {
|
|
686
|
-
// Height is animated to the visible part of the sheet (see bodyStyle);
|
|
687
|
-
// width follows the sheet.
|
|
688
|
-
overflow: 'hidden'
|
|
689
|
-
},
|
|
690
|
-
handleRow: {
|
|
691
|
-
// 40 px tall: the whole row is the drag target, not just the 4 px pill.
|
|
692
|
-
// The row, not a gesture hitSlop, sets the grab area (see panGesture).
|
|
693
|
-
alignItems: 'center',
|
|
694
|
-
justifyContent: 'center',
|
|
695
|
-
alignSelf: 'stretch',
|
|
696
|
-
paddingTop: 12,
|
|
697
|
-
paddingBottom: 24
|
|
698
|
-
},
|
|
699
|
-
header: {
|
|
700
|
-
// No opinionated padding — slot owns its own styling. Sits between the
|
|
701
|
-
// drag handle and the scrollable content; does not flex.
|
|
702
|
-
},
|
|
703
|
-
footer: {
|
|
704
|
-
// Pinned to the bottom of the sheet (above the safe-area inset, which
|
|
705
|
-
// lives on SheetBody's paddingBottom). Does not flex, does not scroll
|
|
706
|
-
// with content. Rides with the keyboard via the sheet's `top` animation.
|
|
707
|
-
},
|
|
708
|
-
handle: {
|
|
709
|
-
width: 36,
|
|
710
|
-
height: 4,
|
|
711
|
-
borderRadius: 2,
|
|
712
|
-
...smoothCorners
|
|
713
|
-
},
|
|
714
|
-
content: {
|
|
715
|
-
flex: 1,
|
|
716
|
-
// Content taller than the area between header and footer is clipped
|
|
717
|
-
// here instead of drawing under the footer and the safe-area padding.
|
|
718
|
-
// Scrolling is the consumer's choice (wrap children in a ScrollView).
|
|
719
|
-
overflow: 'hidden'
|
|
720
|
-
},
|
|
721
|
-
modalRoot: {
|
|
722
|
-
flex: 1
|
|
723
|
-
}
|
|
724
|
-
});
|
|
725
|
-
export { BottomSheet };
|
|
726
|
-
export default BottomSheet;
|
|
727
|
-
//# sourceMappingURL=BottomSheet.js.map
|
|
1
|
+
"use strict";import React,{createContext,forwardRef,useCallback,useContext,useEffect,useImperativeHandle,useMemo,useRef,useState}from"react";import{Dimensions,Modal,Platform,ScrollView,StyleSheet,useWindowDimensions,View}from"react-native";import{Gesture,GestureDetector,GestureHandlerRootView}from"react-native-gesture-handler";import{useReanimatedKeyboardAnimation}from"react-native-keyboard-controller";import Animated,{Easing,runOnJS,useAnimatedStyle,useDerivedValue,useSharedValue,withSpring,withTiming}from"react-native-reanimated";import{SafeAreaProvider,useSafeAreaInsets}from"react-native-safe-area-context";import{useTheme}from"../../theme/index.js";import{triggerHaptic}from"../../utils/index.js";import{smoothCorners}from"../../utils/corners.js";import{ToastHost}from"../Toast/ToastProvider.js";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";const TABLET_MIN_SHORT_SIDE=600,DIALOG_MAX_WIDTH=560,BottomSheetContext=createContext(null);export const useBottomSheet=()=>{const e=useContext(BottomSheetContext);if(!e)throw new Error("useBottomSheet must be used inside a <BottomSheet>.");return e};const SPRING_CONFIG={damping:20,stiffness:240,mass:1},CLOSE_VELOCITY_THRESHOLD=1e3,DRAG_ACTIVATION_OFFSET=10,BottomSheet=forwardRef((e,t)=>{const{snapPoints:o,index:s,onChange:n,onAnimate:a,onAfterClose:r,enablePanDownToClose:i=!0,enableBackdropPress:l=!0,scrollable:u=!1,scrollRef:c,onScroll:d,onContentSizeChange:h,onScrollLayout:m,scrollEventThrottle:b,keyboardBehavior:f="shift",mode:S="modal",presentation:g="sheet",handleIndicatorStyle:p,containerStyle:v,header:y,footer:w,headerStyle:x,footerStyle:C,children:k,accessibilityLabel:_,accessibilityViewIsModal:I,testID:R}=e,j=useTheme(),T=useSafeAreaInsets(),[M,O]=useState(()=>Dimensions.get("window").height),[V,D]=useState(()=>Dimensions.get("window").width),A=useCallback(e=>{const{height:t,width:o}=e.nativeEvent.layout;t>0&&O(e=>e===t?e:t),o>0&&D(e=>e===o?e:o)},[]),H=useWindowDimensions(),B="dialog"===g||"auto"===g&&Math.min(H.width,H.height)>=600,E=Math.min(560,V-2*j.spacing.xl),[P,G]=useState({top:T.top,bottom:T.bottom}),L="modal"===S?P.top:T.top,N="modal"===S?P.bottom:T.bottom,J=o.includes("content"),[F,z]=useMeasuredHeight(),[Y,$]=useMeasuredHeight(),[W,K,X]=useMeasuredHeight(),[q,U]=useMeasuredHeight(),Q=B?j.spacing.md:F,Z=J?Math.min(Q+(null!=y?Y:0)+W+(null!=w?q:0)+N,M-L):0,ee=useCallback((e,t)=>{J&&X(t),h?.(e,t)},[J,h,X]),te=useMemo(()=>resolveSnapPoints(o,M,Z),[o,M,Z]),oe=M,se=te[te.length-1]??0,ne=useSharedValue(oe),ae=useSharedValue(oe),re=useSharedValue(-1),[ie,le]=useState(-1),ue=useRef(!1),[ce,de]=useState(!1),[he,me]=useState(!1),be=useRef(!1),fe=useRef(r);fe.current=r;const[Se,ge]=useState(!1),pe=useCallback(e=>{if(e<0||e>=te.length)return oe;const t=te[e];return B?(M-t)/2:M-t},[te,M,oe,B]),ve=useCallback(e=>{ie!==e&&(le(e),re.value=e,n?.(e))},[ie,re,n]),ye=useCallback(()=>{ue.current=!1,re.value<0&&(be.current=!0,"modal"===S?(de(!1),"ios"!==Platform.OS&&me(!1)):ge(!1))},[S,re]),we=useCallback(()=>{be.current&&me(!1)},[]);useEffect(()=>{("modal"===S?!he:!Se)&&be.current&&(be.current=!1,fe.current?.())},[S,he,Se]);const xe=useCallback((e,t,o)=>{ue.current=!0,a?.(t,o),ne.value=withSpring(e,SPRING_CONFIG,e=>{"worklet";e&&runOnJS(ye)()})},[a,ne,ye]),Ce=useCallback(e=>{const t="number"==typeof e?clamp(e,0,te.length-1):ie>=0?ie:0,o=re.value,s=pe(t);be.current=!1,"modal"===S?(me(!0),de(!0)):ge(!0),o<0&&(ne.value=oe),ve(t),xe(s,o,t)},[xe,oe,ie,re,S,te.length,ve,ne,pe]),ke=useCallback(()=>{if(0===te.length)return;const e=re.value,t=pe(0);ve(0),xe(t,e,0)},[xe,re,te.length,ve,pe]),_e=useCallback(()=>{const e=re.value;ve(-1),ue.current=!0,a?.(e,-1),ne.value=withTiming(oe,{duration:j.motion.duration.fast,easing:Easing.bezier(...j.motion.easing.accelerate)},e=>{"worklet";e&&runOnJS(ye)()})},[oe,re,ye,a,ve,ne,j.motion.duration.fast,j.motion.easing.accelerate]);useImperativeHandle(t,()=>({expand:Ce,collapse:ke,close:_e}),[Ce,ke,_e]),useEffect(()=>{"number"==typeof s&&s!==ie&&(-1===s?_e():Ce(s))},[s]);const Ie=useRef({hostHeight:M,contentSnap:Z});useEffect(()=>{const e=Ie.current;e.hostHeight===M&&e.contentSnap===Z||(Ie.current={hostHeight:M,contentSnap:Z},e.hostHeight===M&&re.value<0||(ne.value=withSpring(pe(re.value),SPRING_CONFIG)))},[M,Z]);const Re=M-se,je=useMemo(()=>te.map(e=>M-e),[te,M]),Te=useCallback((e,t)=>{const o=re.value;if(-1===e)return triggerHaptic("selection"),ve(-1),ue.current=!0,a?.(o,-1),void(ne.value=withTiming(oe,{duration:j.motion.duration.fast,easing:Easing.bezier(...j.motion.easing.accelerate)},e=>{"worklet";e&&runOnJS(ye)()}));ve(e),xe(t,o,e)},[xe,oe,re,ye,a,ve,ne,j.motion.duration.fast,j.motion.easing.accelerate]),Me=useMemo(()=>Gesture.Native().withTestId(R?`${R}-content-gesture`:"bottom-sheet-content-gesture"),[R]),Oe=useMemo(()=>{const e=je,t=oe,o=Re,s=i;return Gesture.Pan().withTestId(R?`${R}-pan-gesture`:"bottom-sheet-pan-gesture").activeOffsetY([-10,10]).failOffsetX([-15,15]).onStart(()=>{"worklet";ae.value=ne.value}).onUpdate(e=>{"worklet";const t=ae.value+e.translationY;ne.value=t<o?o+.25*(t-o):t}).onEnd(o=>{"worklet";const n=ne.value;if(o.velocityY>1e3)return s?void runOnJS(Te)(-1,t):void runOnJS(Te)(0,e[0]);let a=0,r=Math.abs(n-e[0]);for(let t=1;t<e.length;t++){const o=Math.abs(n-e[t]);o<r&&(r=o,a=t)}const i=e[0];s&&n-i>80?runOnJS(Te)(-1,t):runOnJS(Te)(a,e[a])})},[oe,ae,i,Te,Re,je,R,ne]),{height:Ve}=useReanimatedKeyboardAnimation(),De="shift"===f,Ae=useDerivedValue(()=>De?Ve.value:0),He=te[ie>=0?ie:0]??se,Be=j.spacing.md,Ee=useAnimatedStyle(()=>{if(B){const e=Ae.value,t=M+e-He-Be,o=e<0&&ne.value>t?t:ne.value;return{top:o<L?L:o}}const e=ne.value+Ae.value,t=Ae.value<0?L:Re;return{top:e<t?t:e}}),Pe=useAnimatedStyle(()=>{const e=Ae.value;if(B){const t=M+e-He-Be,o=e<0&&ne.value>t?t:ne.value,s=M+e-Be-(o<L?L:o);return{height:s<0?0:s>He?He:s}}const t=e<0?L:Re,o=ne.value+e,s=M+e-(o<t?t:o);return{height:s<0?0:s>se?se:s}}),Ge=ie>=0,Le=useMemo(()=>buildStyles(j),[j]),Ne=useCallback(()=>{l&&(triggerHaptic("selection"),_e())},[l,_e]),Je=useMemo(()=>Gesture.Tap().withTestId(R?`${R}-backdrop-gesture`:"bottom-sheet-backdrop-gesture").maxDuration(250).onEnd((e,t)=>{"worklet";t&&runOnJS(Ne)()}),[Ne,R]),Fe=useMemo(()=>({snapIndex:ie,snapPoints:te,expand:Ce,collapse:ke,close:_e}),[ie,te,Ce,ke,_e]);if("inline"===S&&!Se)return null;if("modal"===S&&!he)return null;const ze=_jsxs(View,{collapsable:!1,style:["modal"===S?Le.backdropModal:Le.backdropInline,{backgroundColor:j.colors.background.overlay}],onLayout:A,testID:R,accessibilityViewIsModal:I??Ge,children:[_jsx(GestureDetector,{gesture:Je,children:_jsx(Animated.View,{style:StyleSheet.absoluteFill,accessibilityRole:"button",accessibilityLabel:"Close bottom sheet"})}),_jsx(Animated.View,{accessibilityRole:"alert",accessibilityLabel:_,accessibilityViewIsModal:I??Ge,style:[Le.sheet,{height:se,backgroundColor:j.colors.background.elevated,borderTopLeftRadius:j.radius["2xl"],borderTopRightRadius:j.radius["2xl"],...smoothCorners,...j.shadows.xl},B?{height:He,left:(V-E)/2,right:void 0,width:E,borderBottomLeftRadius:j.radius["2xl"],borderBottomRightRadius:j.radius["2xl"]}:null,v,Ee],children:_jsxs(SheetBody,{style:[Le.body,Pe],keyboardOffset:Ae,children:[B?_jsx(View,{style:{height:j.spacing.md}}):_jsx(GestureDetector,{gesture:Oe,children:_jsx(View,{style:Le.handleRow,onLayout:J?z:void 0,accessible:!0,accessibilityLabel:"Drag handle",accessibilityHint:"Drag up or down to resize the sheet, or swipe down to close it",testID:R?`${R}-handle`:"bottom-sheet-handle",children:_jsx(View,{style:[Le.handle,{backgroundColor:j.components.bottomSheet?.handleColor??j.colors.border.primary},p]})})}),null!=y&&_jsx(View,{style:[Le.header,x],onLayout:J?$:void 0,children:y}),u?_jsx(GestureDetector,{gesture:Me,children:_jsx(ScrollView,{ref:c,style:Le.content,onScroll:d,onContentSizeChange:ee,onLayout:m,scrollEventThrottle:b,keyboardShouldPersistTaps:"always",keyboardDismissMode:"none",children:k})}):_jsx(View,{style:Le.content,children:J?_jsx(View,{onLayout:K,children:k}):k}),null!=w&&_jsx(View,{style:[Le.footer,C],onLayout:J?U:void 0,children:w})]})})]}),Ye=_jsx(BottomSheetContext.Provider,{value:Fe,children:ze});return"modal"===S?_jsx(Modal,{transparent:!0,visible:ce,onRequestClose:_e,onDismiss:"ios"===Platform.OS?we:void 0,statusBarTranslucent:!0,navigationBarTranslucent:!0,animationType:"none",supportedOrientations:["portrait","landscape"],children:_jsxs(SafeAreaProvider,{style:Le.modalRoot,children:[_jsx(InsetsProbe,{onChange:G}),"android"===Platform.OS?_jsx(GestureHandlerRootView,{style:Le.modalRoot,children:Ye}):Ye,_jsx(ToastHost,{})]})}):Ye}),InsetsProbe=({onChange:e})=>{const{top:t,bottom:o}=useSafeAreaInsets();return useEffect(()=>{e(e=>e.top===t&&e.bottom===o?e:{top:t,bottom:o})},[t,o,e]),null},SheetBody=({style:e,keyboardOffset:t,children:o})=>{const s=useSafeAreaInsets().bottom,n=useAnimatedStyle(()=>{const e=s+t.value;return{paddingBottom:e>0?e:0}});return _jsx(Animated.View,{style:[e,n],children:o})};BottomSheet.displayName="BottomSheet";const useMeasuredHeight=()=>{const[e,t]=useState(0),o=useCallback(e=>{t(t=>t===e?t:e)},[]);return[e,useCallback(e=>o(e.nativeEvent.layout.height),[o]),o]},resolveSnapPoints=(e,t,o)=>[...e.map(e=>{if("number"==typeof e)return e;if("content"===e)return o;const s=parseFloat(e);return Number.isNaN(s)?0:s/100*t})].sort((e,t)=>e-t),clamp=(e,t,o)=>Math.min(Math.max(e,t),o),buildStyles=e=>StyleSheet.create({backdropModal:{flex:1},backdropInline:{...StyleSheet.absoluteFill},sheet:{position:"absolute",left:0,right:0,overflow:"hidden"},body:{overflow:"hidden"},handleRow:{alignItems:"center",justifyContent:"center",alignSelf:"stretch",paddingTop:12,paddingBottom:24},header:{},footer:{},handle:{width:36,height:4,borderRadius:2,...smoothCorners},content:{flex:1,overflow:"hidden"},modalRoot:{flex:1}});export{BottomSheet};export default BottomSheet;
|