@webority/mobile-ui 0.0.39 → 0.1.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 +0 -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 +6 -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 +6 -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,893 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = exports.BottomNavigation = void 0;
|
|
7
|
-
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
-
var _reactNative = require("react-native");
|
|
9
|
-
var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
|
|
10
|
-
var _index = require("../../theme/index.js");
|
|
11
|
-
var _index2 = require("../../utils/index.js");
|
|
12
|
-
var _corners = require("../../utils/corners.js");
|
|
13
|
-
var _shadows = require("../../utils/shadows.js");
|
|
14
|
-
var _index3 = require("../AppIcon/index.js");
|
|
15
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
16
|
-
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
17
|
-
/**
|
|
18
|
-
* Visual style of the bar.
|
|
19
|
-
*
|
|
20
|
-
* - `pill`: a soft tinted pill slides behind the active icon (default).
|
|
21
|
-
* - `underline`: a line slides under (or over) the active tab cell.
|
|
22
|
-
* - `floating`: the bar is a detached capsule, lifted off the bottom as well
|
|
23
|
-
* as the sides; the pill slides inside it.
|
|
24
|
-
* - `bubble`: the active icon lifts into a filled circle that pokes above
|
|
25
|
-
* the bar; the circle slides between tabs.
|
|
26
|
-
* - `expand`: the active tab widens into a pill showing icon and label side
|
|
27
|
-
* by side; the other tabs collapse to icons.
|
|
28
|
-
* - `solid`: the whole bar is brand-coloured; the active tab sits in a light
|
|
29
|
-
* pill with inverted inks.
|
|
30
|
-
* - `tile`: a detached capsule like `floating`, but the tinted pill takes
|
|
31
|
-
* the whole active tab, icon and label together, up to 96 wide; inactive
|
|
32
|
-
* tabs keep the primary text ink instead of the muted one.
|
|
33
|
-
*/
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Corner radius of the bar surface in pixels, or `full`: half the surface's
|
|
37
|
-
* own height, so the bar's ends are round whatever the bar's height comes to.
|
|
38
|
-
*/
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Corner radius of the active tab's background: `auto` follows the bar's
|
|
42
|
-
* radius, a number sets its own in pixels. Every value is capped at half the
|
|
43
|
-
* background's own height, so a large number reads as fully round.
|
|
44
|
-
*/
|
|
45
|
-
|
|
46
|
-
/** Shadow under the bar surface: a theme shadow level, or `none`. */
|
|
47
|
-
|
|
48
|
-
/** What a tab knows about itself when it draws its icon. */
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* A tab icon speaks the library's slot language: an AppIcon name
|
|
52
|
-
* (`icon: 'home'`), `{ name, variant }`, a render function that gets
|
|
53
|
-
* `{ color, size, focused, disabled }`, or any node drawn as is. A bare name
|
|
54
|
-
* with no `activeIcon` is drawn in the `bold` style while the tab is active.
|
|
55
|
-
*/
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* A button in the middle of the bar that is not a tab: pressing it runs its
|
|
59
|
-
* own handler and leaves the active tab alone (a "new loan" or "scan" button).
|
|
60
|
-
* It takes one cell in the middle of the row, so the tabs split around it,
|
|
61
|
-
* the extra one going left when the count is odd.
|
|
62
|
-
*/
|
|
63
|
-
|
|
64
|
-
const DEFAULT_ICON_SIZE = 18;
|
|
65
|
-
/** Air the icon wrap adds around the icon, 2 a side. */
|
|
66
|
-
const ICON_WRAP_AIR = 4;
|
|
67
|
-
/** How much taller the active pill is than the icon wrap, 4 a side. */
|
|
68
|
-
const PILL_AIR = 8;
|
|
69
|
-
/**
|
|
70
|
-
* The icon pill never grows past this, however wide its cell: a two-tab bar
|
|
71
|
-
* keeps a pill the size of the icon it highlights (Material's indicator is
|
|
72
|
-
* 64 wide too). The theme's `pillMaxWidth` overrides it.
|
|
73
|
-
*/
|
|
74
|
-
const DEFAULT_PILL_MAX_WIDTH = 64;
|
|
75
|
-
/** The tile's background never grows past this either; room for icon and label, not half a bar. */
|
|
76
|
-
const TILE_MAX_WIDTH = 96;
|
|
77
|
-
const DEFAULT_PILL_INSET = 16;
|
|
78
|
-
const DEFAULT_UNDERLINE_HEIGHT = 3;
|
|
79
|
-
const DEFAULT_FLOATING_MARGIN = 16;
|
|
80
|
-
const DEFAULT_FLOATING_RADIUS = 28;
|
|
81
|
-
const DEFAULT_BUBBLE_SIZE = 48;
|
|
82
|
-
const DEFAULT_BUBBLE_LIFT = 14;
|
|
83
|
-
const DEFAULT_CENTER_SIZE = 48;
|
|
84
|
-
const DEFAULT_CENTER_ICON_SIZE = 24;
|
|
85
|
-
/** Key of the centre cell; a tab key cannot collide with it in practice. */
|
|
86
|
-
const CENTER_KEY = '__webority_center_action__';
|
|
87
|
-
const TAB_PADDING_VERTICAL = 6;
|
|
88
|
-
/** Air between the bar's edges and the tab row. The row is inset by it. */
|
|
89
|
-
const BAR_PADDING_HORIZONTAL = 4;
|
|
90
|
-
/** Bar padding above the tab row; the padding below matches it unless the safe-area inset is larger. */
|
|
91
|
-
const BAR_PADDING_TOP = 6;
|
|
92
|
-
const BAR_PADDING_TOP_BUBBLE = 8;
|
|
93
|
-
/** Air between the floating capsule's edges and the tab row, above and below. */
|
|
94
|
-
const FLOATING_BAR_PADDING_VERTICAL = 6;
|
|
95
|
-
/** Air between the floating capsule's edges and the tab row, at the sides. */
|
|
96
|
-
const FLOATING_BAR_PADDING_HORIZONTAL = 8;
|
|
97
|
-
/**
|
|
98
|
-
* How much wider the expanded tab is than a collapsed one (`expand` variant).
|
|
99
|
-
* The pill inside hugs its icon and label, so whatever the cell has beyond
|
|
100
|
-
* that shows as empty space beside the pill; 1.5 keeps that to about 13px a
|
|
101
|
-
* side on a four-tab phone bar while a label like "Settings" still fits.
|
|
102
|
-
*/
|
|
103
|
-
const EXPANDED_FLEX = 1.5;
|
|
104
|
-
/** Ink opacity of inactive tabs on the `solid` bar. */
|
|
105
|
-
const SOLID_INACTIVE_OPACITY = 0.7;
|
|
106
|
-
/** Air between a `tile` pill and the edges of its tab cell. */
|
|
107
|
-
const TILE_INSET = 2;
|
|
108
|
-
/** Gap between icon and label inside a `tile` pill, tighter than the default so the pair reads as one block. */
|
|
109
|
-
const TILE_LABEL_GAP = 2;
|
|
110
|
-
const formatBadge = value => {
|
|
111
|
-
if (value === null || value === undefined || value === false) {
|
|
112
|
-
return null;
|
|
113
|
-
}
|
|
114
|
-
if (value === true || value === '·') {
|
|
115
|
-
return {
|
|
116
|
-
text: '',
|
|
117
|
-
isDot: true
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
if (typeof value === 'number') {
|
|
121
|
-
if (value <= 0) {
|
|
122
|
-
return null;
|
|
123
|
-
}
|
|
124
|
-
return {
|
|
125
|
-
text: value > 99 ? '99+' : String(value),
|
|
126
|
-
isDot: false
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
if (typeof value === 'string') {
|
|
130
|
-
if (value.length === 0) {
|
|
131
|
-
return null;
|
|
132
|
-
}
|
|
133
|
-
return {
|
|
134
|
-
text: value,
|
|
135
|
-
isDot: false
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
return null;
|
|
139
|
-
};
|
|
140
|
-
const badgeAccessibilitySuffix = value => {
|
|
141
|
-
if (value === null || value === undefined || value === false) {
|
|
142
|
-
return '';
|
|
143
|
-
}
|
|
144
|
-
if (typeof value === 'number') {
|
|
145
|
-
return value > 0 ? `, ${value} unread` : '';
|
|
146
|
-
}
|
|
147
|
-
if (value === true || value === '·') {
|
|
148
|
-
return ', new updates';
|
|
149
|
-
}
|
|
150
|
-
if (typeof value === 'string' && value.length > 0) {
|
|
151
|
-
return `, ${value}`;
|
|
152
|
-
}
|
|
153
|
-
return '';
|
|
154
|
-
};
|
|
155
|
-
const BottomNavigation = exports.BottomNavigation = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
|
|
156
|
-
const {
|
|
157
|
-
tabs,
|
|
158
|
-
centerAction,
|
|
159
|
-
activeTab,
|
|
160
|
-
onChange,
|
|
161
|
-
haptic = 'selection',
|
|
162
|
-
showLabels = true,
|
|
163
|
-
variant = 'pill',
|
|
164
|
-
indicatorPosition = 'bottom',
|
|
165
|
-
radius,
|
|
166
|
-
indicatorRadius: indicatorRadiusProp = 'auto',
|
|
167
|
-
elevation,
|
|
168
|
-
iconSize: iconSizeProp,
|
|
169
|
-
marginHorizontal: marginHorizontalProp,
|
|
170
|
-
marginVertical: marginVerticalProp,
|
|
171
|
-
paddingHorizontal: paddingHorizontalProp,
|
|
172
|
-
paddingVertical: paddingVerticalProp,
|
|
173
|
-
border,
|
|
174
|
-
style,
|
|
175
|
-
indicatorStyle,
|
|
176
|
-
labelStyle,
|
|
177
|
-
testID
|
|
178
|
-
} = props;
|
|
179
|
-
const theme = (0, _index.useTheme)();
|
|
180
|
-
const insets = (0, _reactNativeSafeAreaContext.useSafeAreaInsets)();
|
|
181
|
-
const styles = (0, _react.useMemo)(() => buildStyles(theme), [theme]);
|
|
182
|
-
const tokens = theme.components.bottomNavigation;
|
|
183
|
-
const iconSize = iconSizeProp ?? tokens?.iconSize ?? DEFAULT_ICON_SIZE;
|
|
184
|
-
// The pill hugs the icon: 4px taller than the wrap on each side, so a
|
|
185
|
-
// smaller icon gets a smaller pill (30 at 18, 36 at 24).
|
|
186
|
-
const pillHeight = tokens?.pillHeight ?? iconSize + ICON_WRAP_AIR + PILL_AIR;
|
|
187
|
-
const pillMaxWidth = tokens?.pillMaxWidth ?? DEFAULT_PILL_MAX_WIDTH;
|
|
188
|
-
const pillInset = tokens?.pillInset ?? DEFAULT_PILL_INSET;
|
|
189
|
-
const sideMargin = tokens?.floatingMargin ?? DEFAULT_FLOATING_MARGIN;
|
|
190
|
-
const floatingRadius = tokens?.floatingRadius ?? DEFAULT_FLOATING_RADIUS;
|
|
191
|
-
const bubbleSize = tokens?.bubbleSize ?? DEFAULT_BUBBLE_SIZE;
|
|
192
|
-
const bubbleLift = tokens?.bubbleLift ?? DEFAULT_BUBBLE_LIFT;
|
|
193
|
-
const isTile = variant === 'tile';
|
|
194
|
-
// `tile` shares the floating capsule; only its pill and inks differ.
|
|
195
|
-
const isFloating = variant === 'floating' || isTile;
|
|
196
|
-
const isBubble = variant === 'bubble';
|
|
197
|
-
const isExpand = variant === 'expand';
|
|
198
|
-
const isSolid = variant === 'solid';
|
|
199
|
-
const drawsPill = variant === 'pill' || isFloating || isSolid;
|
|
200
|
-
const activeIndex = Math.max(0, tabs.findIndex(tab => tab.key === activeTab));
|
|
201
|
-
const [rowWidth, setRowWidth] = _react.default.useState(0);
|
|
202
|
-
const [rowHeight, setRowHeight] = _react.default.useState(0);
|
|
203
|
-
// Derived on every render, never stored: the row's onLayout fires only
|
|
204
|
-
// when the row's own size changes, and a change in the NUMBER of tabs
|
|
205
|
-
// leaves that size alone. A stored `width / tabs.length` therefore went
|
|
206
|
-
// stale the moment a tab was added or removed and the indicator sat
|
|
207
|
-
// under the wrong tab.
|
|
208
|
-
// A centre action takes a cell of its own, so the tabs split around it and
|
|
209
|
-
// tabs before `centerSplit` sit in their own cell and the rest one cell
|
|
210
|
-
// further right; the extra tab of an odd count goes left.
|
|
211
|
-
const centerSplit = centerAction ? Math.ceil(tabs.length / 2) : tabs.length;
|
|
212
|
-
const cellCount = tabs.length + (centerAction ? 1 : 0);
|
|
213
|
-
// With a `gap` the centre cell hugs the button, with the gap as a margin on
|
|
214
|
-
// each side, and the tabs share what is left; without one it is a cell as
|
|
215
|
-
// wide as a tab's. `centerStep` is how far the button pushes the tabs past
|
|
216
|
-
// it to the right.
|
|
217
|
-
const [centerBox, setCenterBox] = _react.default.useState({
|
|
218
|
-
width: 0,
|
|
219
|
-
height: 0
|
|
220
|
-
});
|
|
221
|
-
const centerSize = centerAction?.size ?? DEFAULT_CENTER_SIZE;
|
|
222
|
-
const hugsCenter = centerAction?.gap !== undefined;
|
|
223
|
-
const centerGap = Math.max(0, centerAction?.gap ?? 0);
|
|
224
|
-
const centerSpan = hugsCenter ? (centerBox.width || centerSize) + centerGap * 2 : 0;
|
|
225
|
-
const tabWidth = hugsCenter ? tabs.length > 0 ? Math.max(0, rowWidth - centerSpan) / tabs.length : 0 : cellCount > 0 ? rowWidth / cellCount : 0;
|
|
226
|
-
const centerStep = hugsCenter ? centerSpan : tabWidth;
|
|
227
|
-
|
|
228
|
-
// Single Animated.Value holds the active tab INDEX; the pixel offset is an
|
|
229
|
-
// interpolation over the measured tab width, rebuilt when the width changes.
|
|
230
|
-
// Keeping the value in index units means a width change (a variant switch
|
|
231
|
-
// re-lays the row out) is a plain re-render, never an animation on a view
|
|
232
|
-
// that was mounted a moment ago: Android left such a view at its mount-time
|
|
233
|
-
// transform, one cell short.
|
|
234
|
-
const indicatorIndex = (0, _react.useRef)((0, _index.createAnimatedValue)(activeIndex)).current;
|
|
235
|
-
const iconScales = (0, _react.useRef)({});
|
|
236
|
-
// Per-tab 0..1 "is active" progress: lifts the bubble icon and widens the
|
|
237
|
-
// expanded tab. JS-driven on purpose: flex is layout, which the native
|
|
238
|
-
// driver cannot animate, and a native value attached to views that remount
|
|
239
|
-
// when the variant switches (floating has a different root) throws from
|
|
240
|
-
// Animated's makeNative cascade.
|
|
241
|
-
const progressValues = (0, _react.useRef)({});
|
|
242
|
-
|
|
243
|
-
// Ensure each tab has persistent animated values
|
|
244
|
-
tabs.forEach(tab => {
|
|
245
|
-
if (!iconScales.current[tab.key]) {
|
|
246
|
-
iconScales.current[tab.key] = new _reactNative.Animated.Value(1);
|
|
247
|
-
}
|
|
248
|
-
if (!progressValues.current[tab.key]) {
|
|
249
|
-
progressValues.current[tab.key] = (0, _index.createAnimatedValue)(tab.key === activeTab ? 1 : 0);
|
|
250
|
-
}
|
|
251
|
-
});
|
|
252
|
-
|
|
253
|
-
// Pill width is intrinsic; we compute its rendered offset to keep it
|
|
254
|
-
// centered within each tab cell. The offset is applied to the pill itself
|
|
255
|
-
// (NOT folded into the shared indicatorTranslateX) so the underline indicator
|
|
256
|
-
// — which spans the full tab cell — stays aligned with the tab boundary
|
|
257
|
-
// instead of being shifted by the pill-centering math.
|
|
258
|
-
// Every highlight is capped and centred so a wide cell does not stretch it:
|
|
259
|
-
// the tile at 96 with room for icon and label, the icon pill at 64.
|
|
260
|
-
const pillWidth = tabWidth > 0 ? isTile ? Math.min(tabWidth - TILE_INSET * 2, TILE_MAX_WIDTH) : Math.min(tabWidth - pillInset, pillMaxWidth) : 0;
|
|
261
|
-
const pillOffset = tabWidth > 0 ? (tabWidth - pillWidth) / 2 : 0;
|
|
262
|
-
const bubbleOffset = tabWidth > 0 ? (tabWidth - bubbleSize) / 2 : 0;
|
|
263
|
-
const hasLabel = tab => showLabels && tab.showLabel !== false && tab.label.trim().length > 0;
|
|
264
|
-
|
|
265
|
-
// The bubble is centred on where the lifted icon lands. A labelled tab's
|
|
266
|
-
// icon wrap sits `tab.paddingVertical` below the row; an icon-only tab
|
|
267
|
-
// centres its icon in the row, so the row's measured height decides.
|
|
268
|
-
const activeTabConfig = tabs[activeIndex];
|
|
269
|
-
const activeIconCentre = activeTabConfig && !hasLabel(activeTabConfig) && rowHeight > 0 ? rowHeight / 2 : TAB_PADDING_VERTICAL + (iconSize + ICON_WRAP_AIR) / 2;
|
|
270
|
-
const bubbleTop = activeIconCentre - bubbleLift - bubbleSize / 2;
|
|
271
|
-
const tileHeight = Math.max(0, rowHeight - TILE_INSET * 2);
|
|
272
|
-
const pillTop = isTile ? TILE_INSET : activeIconCentre - pillHeight / 2;
|
|
273
|
-
|
|
274
|
-
// Slide the indicator to the active tab. Pill and bubble modes apply their
|
|
275
|
-
// centering offset via a static `left` style below; underline mode uses the
|
|
276
|
-
// offset directly. A width change swaps the interpolation, which the native
|
|
277
|
-
// driver re-attaches as a fresh node on the next render.
|
|
278
|
-
const settledIndex = (0, _react.useRef)(activeIndex);
|
|
279
|
-
(0, _react.useEffect)(() => {
|
|
280
|
-
if (settledIndex.current === activeIndex) {
|
|
281
|
-
return;
|
|
282
|
-
}
|
|
283
|
-
settledIndex.current = activeIndex;
|
|
284
|
-
// Native-driven: the value only feeds transforms, and the tree keeps one
|
|
285
|
-
// shape across variants, so nothing it is attached to remounts. Off the
|
|
286
|
-
// JS thread, the slide no longer competes with the tab-change render.
|
|
287
|
-
const anim = _reactNative.Animated.spring(indicatorIndex, {
|
|
288
|
-
toValue: activeIndex,
|
|
289
|
-
tension: 120,
|
|
290
|
-
friction: 14,
|
|
291
|
-
useNativeDriver: true
|
|
292
|
-
});
|
|
293
|
-
anim.start();
|
|
294
|
-
return () => anim.stop();
|
|
295
|
-
}, [activeIndex, indicatorIndex]);
|
|
296
|
-
|
|
297
|
-
// One stop per tab, at the left edge of the cell it sits in, so a slide
|
|
298
|
-
// across the centre action jumps its cell rather than landing on it.
|
|
299
|
-
const lastIndex = Math.max(1, tabs.length - 1);
|
|
300
|
-
const indicatorTranslateX = (0, _react.useMemo)(() => {
|
|
301
|
-
const inputRange = [];
|
|
302
|
-
const outputRange = [];
|
|
303
|
-
for (let i = 0; i <= lastIndex; i++) {
|
|
304
|
-
inputRange.push(i);
|
|
305
|
-
outputRange.push(i < centerSplit ? i * tabWidth : i * tabWidth + centerStep);
|
|
306
|
-
}
|
|
307
|
-
return indicatorIndex.interpolate({
|
|
308
|
-
inputRange,
|
|
309
|
-
outputRange
|
|
310
|
-
});
|
|
311
|
-
}, [indicatorIndex, lastIndex, centerSplit, tabWidth, centerStep]);
|
|
312
|
-
|
|
313
|
-
// Per-tab progress: the newly active tab springs to 1, the others to 0.
|
|
314
|
-
// Keyed on the tab keys, not the array, so a parent that rebuilds `tabs`
|
|
315
|
-
// every render does not restart the springs mid-flight. Only `bubble` and
|
|
316
|
-
// `expand` read these values; the other variants just keep them current so
|
|
317
|
-
// a runtime variant switch starts from the right place.
|
|
318
|
-
const tabKeys = tabs.map(tab => tab.key).join(' ');
|
|
319
|
-
const animatesProgress = isBubble || isExpand;
|
|
320
|
-
(0, _react.useEffect)(() => {
|
|
321
|
-
const anims = tabKeys.split(' ').flatMap(key => {
|
|
322
|
-
const to = key === activeTab ? 1 : 0;
|
|
323
|
-
const progress = progressValues.current[key];
|
|
324
|
-
if (!progress) {
|
|
325
|
-
return [];
|
|
326
|
-
}
|
|
327
|
-
if (!animatesProgress) {
|
|
328
|
-
progress.setValue(to);
|
|
329
|
-
return [];
|
|
330
|
-
}
|
|
331
|
-
return [_reactNative.Animated.spring(progress, {
|
|
332
|
-
toValue: to,
|
|
333
|
-
tension: 140,
|
|
334
|
-
friction: 13,
|
|
335
|
-
useNativeDriver: false
|
|
336
|
-
})];
|
|
337
|
-
});
|
|
338
|
-
if (anims.length === 0) {
|
|
339
|
-
return;
|
|
340
|
-
}
|
|
341
|
-
const group = _reactNative.Animated.parallel(anims);
|
|
342
|
-
group.start();
|
|
343
|
-
return () => group.stop();
|
|
344
|
-
}, [activeTab, tabKeys, animatesProgress]);
|
|
345
|
-
const handleLayout = e => {
|
|
346
|
-
const {
|
|
347
|
-
width,
|
|
348
|
-
height
|
|
349
|
-
} = e.nativeEvent.layout;
|
|
350
|
-
setRowWidth(width);
|
|
351
|
-
setRowHeight(height);
|
|
352
|
-
};
|
|
353
|
-
|
|
354
|
-
// The press pop every tab icon gets, and the centre action's icon too: a
|
|
355
|
-
// quick grow, then a spring back to rest.
|
|
356
|
-
const popIcon = scale => {
|
|
357
|
-
_reactNative.Animated.sequence([_reactNative.Animated.timing(scale, {
|
|
358
|
-
toValue: 1.15,
|
|
359
|
-
duration: 120,
|
|
360
|
-
useNativeDriver: true
|
|
361
|
-
}), _reactNative.Animated.spring(scale, {
|
|
362
|
-
toValue: 1,
|
|
363
|
-
tension: 200,
|
|
364
|
-
friction: 8,
|
|
365
|
-
useNativeDriver: true
|
|
366
|
-
})]).start();
|
|
367
|
-
};
|
|
368
|
-
const centerScale = (0, _react.useRef)(new _reactNative.Animated.Value(1)).current;
|
|
369
|
-
const handlePress = tab => {
|
|
370
|
-
if (tab.key !== activeTab && haptic !== false) {
|
|
371
|
-
(0, _index2.triggerHaptic)(haptic);
|
|
372
|
-
}
|
|
373
|
-
const scale = iconScales.current[tab.key];
|
|
374
|
-
if (scale) {
|
|
375
|
-
popIcon(scale);
|
|
376
|
-
}
|
|
377
|
-
onChange(tab.key);
|
|
378
|
-
};
|
|
379
|
-
const handleCenterPress = () => {
|
|
380
|
-
if (!centerAction) {
|
|
381
|
-
return;
|
|
382
|
-
}
|
|
383
|
-
const centerHaptic = centerAction.haptic ?? haptic;
|
|
384
|
-
if (centerHaptic !== false) {
|
|
385
|
-
(0, _index2.triggerHaptic)(centerHaptic);
|
|
386
|
-
}
|
|
387
|
-
popIcon(centerScale);
|
|
388
|
-
centerAction.onPress();
|
|
389
|
-
};
|
|
390
|
-
const {
|
|
391
|
-
colors
|
|
392
|
-
} = theme;
|
|
393
|
-
const barBackground = isSolid ? colors.primary : colors.background.elevated;
|
|
394
|
-
const activeInk = isSolid ? colors.onPrimary : colors.primary;
|
|
395
|
-
const inactiveInk = isSolid ? colors.onPrimary : isTile ? colors.text.primary : colors.text.tertiary;
|
|
396
|
-
const pillBackground = isSolid ? colors.onPrimary : colors.primaryMuted;
|
|
397
|
-
// The active icon sits on the pill (solid) or in the bubble, so it takes the
|
|
398
|
-
// ink that reads on that fill rather than on the bar.
|
|
399
|
-
const activeIconInk = isSolid ? colors.primary : isBubble ? colors.onPrimary : activeInk;
|
|
400
|
-
|
|
401
|
-
// Below the tabs: the same air as above them, unless the safe-area inset
|
|
402
|
-
// is larger (the labels then sit just above the home indicator). A bar
|
|
403
|
-
// lifted off the bottom by a margin puts the inset into that lift instead,
|
|
404
|
-
// the way the capsules always have.
|
|
405
|
-
const marginHorizontal = marginHorizontalProp ?? sideMargin;
|
|
406
|
-
const marginVertical = marginVerticalProp ?? (isFloating ? sideMargin : 0);
|
|
407
|
-
const lifted = marginVertical > 0;
|
|
408
|
-
const paddingTop = paddingVerticalProp ?? (isFloating ? FLOATING_BAR_PADDING_VERTICAL : isBubble ? BAR_PADDING_TOP_BUBBLE : BAR_PADDING_TOP);
|
|
409
|
-
const innerPaddingHorizontal = paddingHorizontalProp ?? (isFloating ? FLOATING_BAR_PADDING_HORIZONTAL : BAR_PADDING_HORIZONTAL);
|
|
410
|
-
const paddingBottom = lifted ? paddingTop : Math.max(paddingTop, insets.bottom);
|
|
411
|
-
const liftBottom = lifted ? Math.max(marginVertical, insets.bottom) : 0;
|
|
412
|
-
|
|
413
|
-
// One prop for "how round is the white surface", whichever view is holding
|
|
414
|
-
// it: the docked bar, or the floating variant's detached capsule.
|
|
415
|
-
// The tile capsule is round-ended so it stays concentric with its pill.
|
|
416
|
-
//
|
|
417
|
-
// `full` is half the surface's own height, never `theme.radius.full`: the
|
|
418
|
-
// bar pads itself by its radius (below), so 9999 would leave the row no
|
|
419
|
-
// width, and Android drops an oversized radius to square corners. The
|
|
420
|
-
// surface is the measured row plus the padding the bar itself puts around
|
|
421
|
-
// it; padding added through `style` is not counted. Until the row is
|
|
422
|
-
// measured the bar keeps its 4px padding and lets the platform clamp the
|
|
423
|
-
// full radius, so the first measured row is full width and the layout
|
|
424
|
-
// settles in one more pass.
|
|
425
|
-
const wantsFullRadius = radius === 'full';
|
|
426
|
-
const surfaceHeight = isFloating ? rowHeight + paddingTop * 2 + _reactNative.StyleSheet.hairlineWidth * 2 : rowHeight + paddingTop + paddingBottom;
|
|
427
|
-
const barRadius = wantsFullRadius ? rowHeight > 0 ? surfaceHeight / 2 : theme.radius.full : radius ?? tokens?.borderRadius ?? (isTile ? theme.radius.full : isFloating ? floatingRadius : 0);
|
|
428
|
-
// The active background's radius, never more than half its own height (a
|
|
429
|
-
// larger radius drops to square corners on Android). `auto` matches the bar
|
|
430
|
-
// once an app rounds it and otherwise stays fully round, the look it has
|
|
431
|
-
// always had; a number is the background's own.
|
|
432
|
-
// `round` is each background's own fully round value.
|
|
433
|
-
const barRadiusSet = radius !== undefined || tokens?.borderRadius !== undefined;
|
|
434
|
-
const activeBgRadius = (height, round) => {
|
|
435
|
-
if (typeof indicatorRadiusProp === 'number') {
|
|
436
|
-
return Math.max(0, Math.min(indicatorRadiusProp, height / 2));
|
|
437
|
-
}
|
|
438
|
-
if (indicatorRadiusProp === 'auto' && barRadiusSet) {
|
|
439
|
-
return Math.min(barRadius, height / 2);
|
|
440
|
-
}
|
|
441
|
-
return round;
|
|
442
|
-
};
|
|
443
|
-
// A rounded bar has no flat edge under its corners, and the underline sits on
|
|
444
|
-
// that edge: hold the tab row out of the corners entirely rather than cutting
|
|
445
|
-
// the line short on the two end tabs, which read as broken next to the others.
|
|
446
|
-
// Inset by the radius and the row's own span IS the bar's flat band, so every
|
|
447
|
-
// tab keeps a full-width line. Only the underline needs it: every other
|
|
448
|
-
// indicator lives inside its tab cell, so those variants keep the bar's own
|
|
449
|
-
// 4px and give the whole width to the tabs.
|
|
450
|
-
const barPaddingHorizontal = variant === 'underline' ? Math.max(innerPaddingHorizontal, wantsFullRadius && rowHeight === 0 ? 0 : barRadius) : innerPaddingHorizontal;
|
|
451
|
-
// Nothing is drawn around the surface unless asked: no shadow and no
|
|
452
|
-
// border by default on any variant, so what an app sees is what it set.
|
|
453
|
-
const elevationLevel = elevation ?? 'none';
|
|
454
|
-
// A `boxShadow` where the platform draws one, as the Card does: Android's
|
|
455
|
-
// `elevation` is a flat grey that cannot match iOS, and the legacy props
|
|
456
|
-
// are ignored there. Android below API 28 keeps the token's `elevation`.
|
|
457
|
-
const shadowToken = theme.shadows[elevationLevel];
|
|
458
|
-
const barShadow = elevationLevel === 'none' ? null : (0, _shadows.supportsBoxShadow)() ? {
|
|
459
|
-
boxShadow: (0, _shadows.toBoxShadow)(shadowToken)
|
|
460
|
-
} : shadowToken;
|
|
461
|
-
// A hairline outline on all four sides, on any variant, only when asked.
|
|
462
|
-
// Every edge of the docked bar is set by name, never through the
|
|
463
|
-
// `borderWidth` shorthand: Android resets a dropped `borderTopWidth` to
|
|
464
|
-
// zero instead of falling back to the shorthand, and the top line vanishes.
|
|
465
|
-
const hairline = border ? _reactNative.StyleSheet.hairlineWidth : 0;
|
|
466
|
-
const borderColor = isSolid ? colors.primary : colors.border.primary;
|
|
467
|
-
|
|
468
|
-
// The centre action is centred on the row and raised by `lift`. Whatever of
|
|
469
|
-
// it pokes above the bar surface is added to the root's top padding, so the
|
|
470
|
-
// raised part stays inside the component's own box: a touch outside a
|
|
471
|
-
// parent's bounds is not something to rely on across both platforms, and a
|
|
472
|
-
// screen laid out under the bar should not be covered by it either.
|
|
473
|
-
const centerLift = centerAction?.lift ?? 0;
|
|
474
|
-
const rowTopInSurface = paddingTop + hairline;
|
|
475
|
-
const centerOverhang = centerAction && rowHeight > 0 ? Math.max(0, (centerBox.height || centerSize) / 2 + centerLift - rowHeight / 2 - rowTopInSurface) : 0;
|
|
476
|
-
const centerNode = centerAction ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
477
|
-
style: [styles.centerCell, hugsCenter ? {
|
|
478
|
-
flex: 0,
|
|
479
|
-
marginHorizontal: centerGap
|
|
480
|
-
} : null],
|
|
481
|
-
pointerEvents: "box-none",
|
|
482
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
|
|
483
|
-
onPress: handleCenterPress,
|
|
484
|
-
onLayout: e => {
|
|
485
|
-
const {
|
|
486
|
-
width,
|
|
487
|
-
height
|
|
488
|
-
} = e.nativeEvent.layout;
|
|
489
|
-
setCenterBox(prev => prev.width === width && prev.height === height ? prev : {
|
|
490
|
-
width,
|
|
491
|
-
height
|
|
492
|
-
});
|
|
493
|
-
},
|
|
494
|
-
accessibilityRole: "button",
|
|
495
|
-
accessibilityLabel: centerAction.label,
|
|
496
|
-
hitSlop: {
|
|
497
|
-
top: 6,
|
|
498
|
-
bottom: 6,
|
|
499
|
-
left: 6,
|
|
500
|
-
right: 6
|
|
501
|
-
}
|
|
502
|
-
// A relative `top`, not a transform, like the bubble's lift: the box
|
|
503
|
-
// moves with it for layout and hit-testing alike.
|
|
504
|
-
,
|
|
505
|
-
style: ({
|
|
506
|
-
pressed
|
|
507
|
-
}) => [{
|
|
508
|
-
top: -centerLift
|
|
509
|
-
}, pressed ? {
|
|
510
|
-
opacity: 0.85
|
|
511
|
-
} : null],
|
|
512
|
-
testID: centerAction.testID ?? (testID ? `${testID}-center` : undefined),
|
|
513
|
-
children: centerAction.content ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
|
|
514
|
-
style: {
|
|
515
|
-
transform: [{
|
|
516
|
-
scale: centerScale
|
|
517
|
-
}]
|
|
518
|
-
},
|
|
519
|
-
children: centerAction.content
|
|
520
|
-
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
521
|
-
style: [styles.centerCircle, {
|
|
522
|
-
width: centerSize,
|
|
523
|
-
height: centerSize,
|
|
524
|
-
borderRadius: centerSize / 2,
|
|
525
|
-
..._corners.smoothCorners,
|
|
526
|
-
backgroundColor: centerAction.color ?? colors.primary
|
|
527
|
-
}],
|
|
528
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
|
|
529
|
-
style: {
|
|
530
|
-
transform: [{
|
|
531
|
-
scale: centerScale
|
|
532
|
-
}]
|
|
533
|
-
},
|
|
534
|
-
children: (0, _index3.renderSlotIcon)(centerAction.icon ?? 'add', {
|
|
535
|
-
color: centerAction.iconColor ?? colors.onPrimary,
|
|
536
|
-
size: centerAction.iconSize ?? DEFAULT_CENTER_ICON_SIZE,
|
|
537
|
-
disabled: false
|
|
538
|
-
})
|
|
539
|
-
})
|
|
540
|
-
})
|
|
541
|
-
})
|
|
542
|
-
}, CENTER_KEY) : null;
|
|
543
|
-
// The centre cell goes between the two halves of the tabs.
|
|
544
|
-
const withCenter = nodes => centerNode ? [...nodes.slice(0, centerSplit), centerNode, ...nodes.slice(centerSplit)] : nodes;
|
|
545
|
-
const tabRow = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
546
|
-
style: styles.tabRow,
|
|
547
|
-
onLayout: handleLayout,
|
|
548
|
-
children: [drawsPill && pillWidth > 0 && (!isTile || tileHeight > 0) ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
|
|
549
|
-
pointerEvents: "none",
|
|
550
|
-
style: [styles.pill, {
|
|
551
|
-
width: pillWidth,
|
|
552
|
-
height: isTile ? tileHeight : pillHeight,
|
|
553
|
-
left: pillOffset,
|
|
554
|
-
top: pillTop,
|
|
555
|
-
backgroundColor: pillBackground,
|
|
556
|
-
// Half the height, not `radius.full`, for the tile: its pill is
|
|
557
|
-
// tall, and an oversized radius drops to square corners on Android.
|
|
558
|
-
borderRadius: isTile ? activeBgRadius(tileHeight, tileHeight / 2) : activeBgRadius(pillHeight, theme.radius.full),
|
|
559
|
-
..._corners.smoothCorners,
|
|
560
|
-
transform: [{
|
|
561
|
-
translateX: indicatorTranslateX
|
|
562
|
-
}]
|
|
563
|
-
}, indicatorStyle]
|
|
564
|
-
}) : null, isBubble && tabWidth > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
|
|
565
|
-
pointerEvents: "none",
|
|
566
|
-
style: [styles.bubble, theme.shadows.md, {
|
|
567
|
-
width: bubbleSize,
|
|
568
|
-
height: bubbleSize,
|
|
569
|
-
borderRadius: bubbleSize / 2,
|
|
570
|
-
..._corners.smoothCorners,
|
|
571
|
-
left: bubbleOffset,
|
|
572
|
-
top: bubbleTop,
|
|
573
|
-
backgroundColor: colors.primary,
|
|
574
|
-
borderColor: colors.background.elevated,
|
|
575
|
-
transform: [{
|
|
576
|
-
translateX: indicatorTranslateX
|
|
577
|
-
}]
|
|
578
|
-
}, indicatorStyle]
|
|
579
|
-
}) : null, withCenter(tabs.map(tab => {
|
|
580
|
-
const isActive = tab.key === activeTab;
|
|
581
|
-
const color = isActive ? activeInk : inactiveInk;
|
|
582
|
-
const iconColor = isActive ? activeIconInk : inactiveInk;
|
|
583
|
-
const activeFallback = typeof tab.icon === 'string' ? {
|
|
584
|
-
name: tab.icon,
|
|
585
|
-
variant: 'bold'
|
|
586
|
-
} : tab.icon;
|
|
587
|
-
const tabIcon = isActive ? tab.activeIcon ?? activeFallback : tab.icon;
|
|
588
|
-
const scale = iconScales.current[tab.key];
|
|
589
|
-
const progress = progressValues.current[tab.key];
|
|
590
|
-
const badge = formatBadge(tab.badge ?? null);
|
|
591
|
-
const a11ySuffix = badgeAccessibilitySuffix(tab.badge ?? null);
|
|
592
|
-
const inkOpacity = isSolid && !isActive ? SOLID_INACTIVE_OPACITY : 1;
|
|
593
|
-
// The badge ring matches whatever the icon sits on.
|
|
594
|
-
const badgeBorder = isBubble && isActive || isSolid ? colors.primary : colors.background.elevated;
|
|
595
|
-
const labelled = hasLabel(tab);
|
|
596
|
-
const showLabel = labelled && (!isExpand || isActive);
|
|
597
|
-
const iconWrap = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Animated.View, {
|
|
598
|
-
style: [styles.iconWrap, {
|
|
599
|
-
width: iconSize + ICON_WRAP_AIR,
|
|
600
|
-
height: iconSize + ICON_WRAP_AIR,
|
|
601
|
-
opacity: inkOpacity,
|
|
602
|
-
transform: [{
|
|
603
|
-
scale
|
|
604
|
-
}]
|
|
605
|
-
}],
|
|
606
|
-
children: [(0, _index3.renderSlotIcon)(tabIcon, {
|
|
607
|
-
color: iconColor,
|
|
608
|
-
size: iconSize,
|
|
609
|
-
focused: isActive,
|
|
610
|
-
disabled: false
|
|
611
|
-
}), badge ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
612
|
-
style: [badge.isDot ? styles.badgeDot : styles.badgePill, {
|
|
613
|
-
backgroundColor: colors.error,
|
|
614
|
-
borderColor: badgeBorder
|
|
615
|
-
}],
|
|
616
|
-
children: badge.isDot ? null : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
617
|
-
style: [styles.badgeText, {
|
|
618
|
-
color: colors.text.inverse
|
|
619
|
-
}],
|
|
620
|
-
numberOfLines: 1,
|
|
621
|
-
children: badge.text
|
|
622
|
-
})
|
|
623
|
-
}) : null]
|
|
624
|
-
});
|
|
625
|
-
// The lift lives on its own node: `scale` runs on the native driver
|
|
626
|
-
// and `progress` on the JS driver, and one node cannot mix the two.
|
|
627
|
-
// It is a relative `top`, not a transform: on Android a transform on
|
|
628
|
-
// this wrapper was ignored for a tab whose label is empty.
|
|
629
|
-
const iconNode = isBubble ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
|
|
630
|
-
style: {
|
|
631
|
-
top: progress.interpolate({
|
|
632
|
-
inputRange: [0, 1],
|
|
633
|
-
outputRange: [0, -bubbleLift]
|
|
634
|
-
})
|
|
635
|
-
},
|
|
636
|
-
children: iconWrap
|
|
637
|
-
}) : iconWrap;
|
|
638
|
-
const labelNode = showLabel ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.Text, {
|
|
639
|
-
numberOfLines: 1,
|
|
640
|
-
style: [styles.label, isExpand ? styles.labelInline : null, {
|
|
641
|
-
color,
|
|
642
|
-
opacity: isExpand ? progress : inkOpacity,
|
|
643
|
-
fontWeight: isActive ? theme.typography.fontWeight.semibold : theme.typography.fontWeight.normal
|
|
644
|
-
}, labelStyle],
|
|
645
|
-
children: tab.label
|
|
646
|
-
}) : null;
|
|
647
|
-
const pressable = /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
|
|
648
|
-
onPress: () => handlePress(tab),
|
|
649
|
-
accessibilityRole: "tab",
|
|
650
|
-
accessibilityState: {
|
|
651
|
-
selected: isActive
|
|
652
|
-
},
|
|
653
|
-
accessibilityLabel: `${tab.label}${a11ySuffix}`,
|
|
654
|
-
accessibilityHint: `Switches to ${tab.label}`,
|
|
655
|
-
hitSlop: {
|
|
656
|
-
top: 6,
|
|
657
|
-
bottom: 6,
|
|
658
|
-
left: 6,
|
|
659
|
-
right: 6
|
|
660
|
-
},
|
|
661
|
-
style: ({
|
|
662
|
-
pressed
|
|
663
|
-
}) => [styles.tab, isTile ? styles.tabTile : null, pressed ? {
|
|
664
|
-
opacity: 0.85
|
|
665
|
-
} : null],
|
|
666
|
-
testID: testID ? `${testID}-tab-${tab.key}` : undefined,
|
|
667
|
-
children: isExpand ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
668
|
-
style: [styles.expandPill, {
|
|
669
|
-
height: pillHeight,
|
|
670
|
-
paddingHorizontal: isActive && labelled ? theme.spacing.md : Math.max(0, (pillHeight - (iconSize + ICON_WRAP_AIR)) / 2)
|
|
671
|
-
}],
|
|
672
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
673
|
-
pointerEvents: "none",
|
|
674
|
-
style: [styles.expandFill, {
|
|
675
|
-
// Half the height, not `radius.full`: Android drops an
|
|
676
|
-
// oversized radius to square corners while the cell's
|
|
677
|
-
// flex is being animated.
|
|
678
|
-
borderRadius: activeBgRadius(pillHeight, pillHeight / 2),
|
|
679
|
-
..._corners.smoothCorners,
|
|
680
|
-
backgroundColor: isActive ? colors.primaryMuted : 'transparent'
|
|
681
|
-
}, isActive ? indicatorStyle : null]
|
|
682
|
-
}), iconNode, labelNode]
|
|
683
|
-
}) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
684
|
-
children: [iconNode, labelNode]
|
|
685
|
-
})
|
|
686
|
-
}, tab.key);
|
|
687
|
-
if (!isExpand) {
|
|
688
|
-
return pressable;
|
|
689
|
-
}
|
|
690
|
-
// The active cell grows so the pill has room for its label; flex is
|
|
691
|
-
// layout, hence the JS-driven value.
|
|
692
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
|
|
693
|
-
style: {
|
|
694
|
-
// An icon-only tab has nothing to make room for, so it stays a plain cell.
|
|
695
|
-
flex: progress.interpolate({
|
|
696
|
-
inputRange: [0, 1],
|
|
697
|
-
outputRange: [1, labelled ? EXPANDED_FLEX : 1]
|
|
698
|
-
})
|
|
699
|
-
},
|
|
700
|
-
children: pressable
|
|
701
|
-
}, tab.key);
|
|
702
|
-
})), variant === 'underline' && tabWidth > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
|
|
703
|
-
pointerEvents: "none",
|
|
704
|
-
style: [styles.underline, indicatorPosition === 'top' ? styles.underlineTop : styles.underlineBottom,
|
|
705
|
-
// On the padding's outer edge, which is the bar's own edge.
|
|
706
|
-
indicatorPosition === 'top' ? {
|
|
707
|
-
top: -paddingTop
|
|
708
|
-
} : {
|
|
709
|
-
bottom: -paddingTop
|
|
710
|
-
}, {
|
|
711
|
-
width: tabWidth,
|
|
712
|
-
height: tokens?.underlineHeight ?? DEFAULT_UNDERLINE_HEIGHT,
|
|
713
|
-
backgroundColor: colors.primary,
|
|
714
|
-
transform: [{
|
|
715
|
-
translateX: indicatorTranslateX
|
|
716
|
-
}]
|
|
717
|
-
}, indicatorStyle]
|
|
718
|
-
}) : null]
|
|
719
|
-
});
|
|
720
|
-
|
|
721
|
-
// One tree shape for every variant: root → bar → row. React then keeps the
|
|
722
|
-
// row (and its onLayout) on a variant switch instead of re-purposing the
|
|
723
|
-
// capsule view as the row, which left `tabWidth` at the old width.
|
|
724
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
725
|
-
ref: ref,
|
|
726
|
-
testID: testID,
|
|
727
|
-
accessibilityRole: "tablist"
|
|
728
|
-
// Every variant keeps its margin at the sides, so a docked bar sits in
|
|
729
|
-
// from the screen edges like the capsules do; a vertical margin lifts
|
|
730
|
-
// it off the bottom the same way.
|
|
731
|
-
,
|
|
732
|
-
style: [styles.outer, {
|
|
733
|
-
paddingHorizontal: marginHorizontal,
|
|
734
|
-
paddingTop: Math.max(marginVertical, centerOverhang),
|
|
735
|
-
paddingBottom: liftBottom
|
|
736
|
-
}, style],
|
|
737
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
738
|
-
style: [isFloating ? styles.floatingBar : styles.dockedBar, barShadow, {
|
|
739
|
-
backgroundColor: barBackground,
|
|
740
|
-
borderColor,
|
|
741
|
-
borderRadius: barRadius,
|
|
742
|
-
..._corners.smoothCorners
|
|
743
|
-
}, isFloating ? {
|
|
744
|
-
borderWidth: hairline,
|
|
745
|
-
paddingHorizontal: innerPaddingHorizontal,
|
|
746
|
-
paddingVertical: paddingTop
|
|
747
|
-
} : {
|
|
748
|
-
// Named per edge, never the shorthand (see `hairline`).
|
|
749
|
-
borderTopWidth: hairline,
|
|
750
|
-
borderBottomWidth: hairline,
|
|
751
|
-
borderLeftWidth: hairline,
|
|
752
|
-
borderRightWidth: hairline,
|
|
753
|
-
paddingHorizontal: barPaddingHorizontal,
|
|
754
|
-
paddingTop,
|
|
755
|
-
paddingBottom
|
|
756
|
-
}],
|
|
757
|
-
children: tabRow
|
|
758
|
-
})
|
|
759
|
-
});
|
|
760
|
-
});
|
|
761
|
-
BottomNavigation.displayName = 'BottomNavigation';
|
|
762
|
-
const buildStyles = theme => _reactNative.StyleSheet.create({
|
|
763
|
-
outer: {
|
|
764
|
-
backgroundColor: 'transparent'
|
|
765
|
-
},
|
|
766
|
-
dockedBar: {
|
|
767
|
-
paddingHorizontal: BAR_PADDING_HORIZONTAL
|
|
768
|
-
},
|
|
769
|
-
floatingBar: {
|
|
770
|
-
paddingVertical: FLOATING_BAR_PADDING_VERTICAL,
|
|
771
|
-
paddingHorizontal: FLOATING_BAR_PADDING_HORIZONTAL
|
|
772
|
-
},
|
|
773
|
-
tabRow: {
|
|
774
|
-
flexDirection: 'row',
|
|
775
|
-
alignItems: 'stretch',
|
|
776
|
-
position: 'relative'
|
|
777
|
-
},
|
|
778
|
-
tab: {
|
|
779
|
-
flex: 1,
|
|
780
|
-
minHeight: 44,
|
|
781
|
-
alignItems: 'center',
|
|
782
|
-
justifyContent: 'center',
|
|
783
|
-
paddingVertical: TAB_PADDING_VERTICAL,
|
|
784
|
-
// The pill ends 4px under the icon wrap, so the label's box starts where
|
|
785
|
-
// the pill ends; the text's own leading is the air, tuned by eye on the
|
|
786
|
-
// phone with the 18px icon.
|
|
787
|
-
gap: 4
|
|
788
|
-
},
|
|
789
|
-
tabTile: {
|
|
790
|
-
paddingVertical: TAB_PADDING_VERTICAL + TILE_INSET,
|
|
791
|
-
gap: TILE_LABEL_GAP
|
|
792
|
-
},
|
|
793
|
-
centerCell: {
|
|
794
|
-
flex: 1,
|
|
795
|
-
minHeight: 44,
|
|
796
|
-
alignItems: 'center',
|
|
797
|
-
justifyContent: 'center'
|
|
798
|
-
},
|
|
799
|
-
centerCircle: {
|
|
800
|
-
alignItems: 'center',
|
|
801
|
-
justifyContent: 'center'
|
|
802
|
-
},
|
|
803
|
-
iconWrap: {
|
|
804
|
-
alignItems: 'center',
|
|
805
|
-
justifyContent: 'center',
|
|
806
|
-
position: 'relative'
|
|
807
|
-
},
|
|
808
|
-
label: {
|
|
809
|
-
fontSize: theme.typography.fontSize.xs,
|
|
810
|
-
lineHeight: theme.typography.fontSize.xs * theme.typography.lineHeight.tight,
|
|
811
|
-
textAlign: 'center',
|
|
812
|
-
// Android pads text above its ascenders by default, which reads as a
|
|
813
|
-
// wider gap under the icon than iOS shows.
|
|
814
|
-
includeFontPadding: false
|
|
815
|
-
},
|
|
816
|
-
labelInline: {
|
|
817
|
-
fontSize: theme.typography.fontSize.sm,
|
|
818
|
-
lineHeight: theme.typography.fontSize.sm * theme.typography.lineHeight.tight,
|
|
819
|
-
flexShrink: 1,
|
|
820
|
-
includeFontPadding: false
|
|
821
|
-
},
|
|
822
|
-
expandPill: {
|
|
823
|
-
flexDirection: 'row',
|
|
824
|
-
alignItems: 'center',
|
|
825
|
-
justifyContent: 'center',
|
|
826
|
-
gap: theme.spacing.xs
|
|
827
|
-
},
|
|
828
|
-
expandFill: {
|
|
829
|
-
position: 'absolute',
|
|
830
|
-
top: 0,
|
|
831
|
-
right: 0,
|
|
832
|
-
bottom: 0,
|
|
833
|
-
left: 0,
|
|
834
|
-
overflow: 'hidden'
|
|
835
|
-
},
|
|
836
|
-
pill: {
|
|
837
|
-
position: 'absolute',
|
|
838
|
-
left: 0
|
|
839
|
-
},
|
|
840
|
-
bubble: {
|
|
841
|
-
position: 'absolute',
|
|
842
|
-
left: 0,
|
|
843
|
-
borderWidth: 3
|
|
844
|
-
},
|
|
845
|
-
underline: {
|
|
846
|
-
position: 'absolute',
|
|
847
|
-
left: 0,
|
|
848
|
-
height: DEFAULT_UNDERLINE_HEIGHT
|
|
849
|
-
},
|
|
850
|
-
underlineBottom: {
|
|
851
|
-
borderTopLeftRadius: 2,
|
|
852
|
-
borderTopRightRadius: 2,
|
|
853
|
-
..._corners.smoothCorners
|
|
854
|
-
},
|
|
855
|
-
underlineTop: {
|
|
856
|
-
borderBottomLeftRadius: 2,
|
|
857
|
-
borderBottomRightRadius: 2,
|
|
858
|
-
..._corners.smoothCorners
|
|
859
|
-
},
|
|
860
|
-
badgePill: {
|
|
861
|
-
position: 'absolute',
|
|
862
|
-
top: -4,
|
|
863
|
-
right: -8,
|
|
864
|
-
minWidth: 18,
|
|
865
|
-
height: 18,
|
|
866
|
-
borderRadius: 9,
|
|
867
|
-
..._corners.smoothCorners,
|
|
868
|
-
paddingHorizontal: 4,
|
|
869
|
-
paddingVertical: 2,
|
|
870
|
-
alignItems: 'center',
|
|
871
|
-
justifyContent: 'center',
|
|
872
|
-
borderWidth: 1.5
|
|
873
|
-
},
|
|
874
|
-
badgeDot: {
|
|
875
|
-
position: 'absolute',
|
|
876
|
-
top: -2,
|
|
877
|
-
right: -2,
|
|
878
|
-
width: 10,
|
|
879
|
-
height: 10,
|
|
880
|
-
borderRadius: 5,
|
|
881
|
-
..._corners.smoothCorners,
|
|
882
|
-
borderWidth: 1.5
|
|
883
|
-
},
|
|
884
|
-
badgeText: {
|
|
885
|
-
fontSize: 10,
|
|
886
|
-
fontWeight: '700',
|
|
887
|
-
lineHeight: 12,
|
|
888
|
-
textAlign: 'center',
|
|
889
|
-
includeFontPadding: false
|
|
890
|
-
}
|
|
891
|
-
});
|
|
892
|
-
var _default = exports.default = BottomNavigation;
|
|
893
|
-
//# sourceMappingURL=BottomNavigation.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=exports.BottomNavigation=void 0;var _react=_interopRequireWildcard(require("react")),_reactNative=require("react-native"),_reactNativeSafeAreaContext=require("react-native-safe-area-context"),_index=require("../../theme/index.js"),_index2=require("../../utils/index.js"),_corners=require("../../utils/corners.js"),_shadows=require("../../utils/shadows.js"),_index3=require("../AppIcon/index.js"),_jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(e,t){if("function"==typeof WeakMap)var i=new WeakMap,r=new WeakMap;return(_interopRequireWildcard=function(e,t){if(!t&&e&&e.__esModule)return e;var n,a,o={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return o;if(n=t?r:i){if(n.has(e))return n.get(e);n.set(e,o)}for(const t in e)"default"!==t&&{}.hasOwnProperty.call(e,t)&&((a=(n=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,t))&&(a.get||a.set)?n(o,t,a):o[t]=e[t]);return o})(e,t)}const DEFAULT_ICON_SIZE=18,ICON_WRAP_AIR=4,PILL_AIR=8,DEFAULT_PILL_MAX_WIDTH=64,TILE_MAX_WIDTH=96,DEFAULT_PILL_INSET=16,DEFAULT_UNDERLINE_HEIGHT=3,DEFAULT_FLOATING_MARGIN=16,DEFAULT_FLOATING_RADIUS=28,DEFAULT_BUBBLE_SIZE=48,DEFAULT_BUBBLE_LIFT=14,DEFAULT_CENTER_SIZE=48,DEFAULT_CENTER_ICON_SIZE=24,CENTER_KEY="__webority_center_action__",TAB_PADDING_VERTICAL=6,BAR_PADDING_HORIZONTAL=4,BAR_PADDING_TOP=6,BAR_PADDING_TOP_BUBBLE=8,FLOATING_BAR_PADDING_VERTICAL=6,FLOATING_BAR_PADDING_HORIZONTAL=8,EXPANDED_FLEX=1.5,SOLID_INACTIVE_OPACITY=.7,TILE_INSET=2,TILE_LABEL_GAP=2,formatBadge=e=>null==e||!1===e?null:!0===e||"·"===e?{text:"",isDot:!0}:"number"==typeof e?e<=0?null:{text:e>99?"99+":String(e),isDot:!1}:"string"==typeof e?0===e.length?null:{text:e,isDot:!1}:null,badgeAccessibilitySuffix=e=>null==e||!1===e?"":"number"==typeof e?e>0?`, ${e} unread`:"":!0===e||"·"===e?", new updates":"string"==typeof e&&e.length>0?`, ${e}`:"",BottomNavigation=exports.BottomNavigation=(0,_react.forwardRef)((e,t)=>{const{tabs:i,centerAction:r,activeTab:n,onChange:a,haptic:o="selection",showLabels:l=!0,variant:s="pill",indicatorPosition:d="bottom",radius:c,indicatorRadius:u="auto",elevation:h,iconSize:p,marginHorizontal:_,marginVertical:g,paddingHorizontal:m,paddingVertical:b,border:f,style:y,indicatorStyle:x,labelStyle:v,testID:R}=e,N=(0,_index.useTheme)(),A=(0,_reactNativeSafeAreaContext.useSafeAreaInsets)(),I=(0,_react.useMemo)(()=>buildStyles(N),[N]),j=N.components.bottomNavigation,w=p??j?.iconSize??18,E=j?.pillHeight??w+4+8,T=j?.pillMaxWidth??64,D=j?.pillInset??16,L=j?.floatingMargin??16,S=j?.floatingRadius??28,C=j?.bubbleSize??48,B=j?.bubbleLift??14,P="tile"===s,V="floating"===s||P,k="bubble"===s,M="expand"===s,H="solid"===s,W="pill"===s||V||H,z=Math.max(0,i.findIndex(e=>e.key===n)),[F,O]=_react.default.useState(0),[U,q]=_react.default.useState(0),G=r?Math.ceil(i.length/2):i.length,$=i.length+(r?1:0),[X,Z]=_react.default.useState({width:0,height:0}),Y=r?.size??48,K=void 0!==r?.gap,J=Math.max(0,r?.gap??0),Q=K?(X.width||Y)+2*J:0,ee=K?i.length>0?Math.max(0,F-Q)/i.length:0:$>0?F/$:0,te=K?Q:ee,ie=(0,_react.useRef)((0,_index.createAnimatedValue)(z)).current,re=(0,_react.useRef)({}),ne=(0,_react.useRef)({});i.forEach(e=>{re.current[e.key]||(re.current[e.key]=new _reactNative.Animated.Value(1)),ne.current[e.key]||(ne.current[e.key]=(0,_index.createAnimatedValue)(e.key===n?1:0))});const ae=ee>0?P?Math.min(ee-4,96):Math.min(ee-D,T):0,oe=ee>0?(ee-ae)/2:0,le=ee>0?(ee-C)/2:0,hasLabel=e=>l&&!1!==e.showLabel&&e.label.trim().length>0,se=i[z],de=se&&!hasLabel(se)&&U>0?U/2:6+(w+4)/2,ce=de-B-C/2,ue=Math.max(0,U-4),he=P?2:de-E/2,pe=(0,_react.useRef)(z);(0,_react.useEffect)(()=>{if(pe.current===z)return;pe.current=z;const e=_reactNative.Animated.spring(ie,{toValue:z,tension:120,friction:14,useNativeDriver:!0});return e.start(),()=>e.stop()},[z,ie]);const _e=Math.max(1,i.length-1),ge=(0,_react.useMemo)(()=>{const e=[],t=[];for(let i=0;i<=_e;i++)e.push(i),t.push(i<G?i*ee:i*ee+te);return ie.interpolate({inputRange:e,outputRange:t})},[ie,_e,G,ee,te]),me=i.map(e=>e.key).join(" "),be=k||M;(0,_react.useEffect)(()=>{const e=me.split(" ").flatMap(e=>{const t=e===n?1:0,i=ne.current[e];return i?be?[_reactNative.Animated.spring(i,{toValue:t,tension:140,friction:13,useNativeDriver:!1})]:(i.setValue(t),[]):[]});if(0===e.length)return;const t=_reactNative.Animated.parallel(e);return t.start(),()=>t.stop()},[n,me,be]);const popIcon=e=>{_reactNative.Animated.sequence([_reactNative.Animated.timing(e,{toValue:1.15,duration:120,useNativeDriver:!0}),_reactNative.Animated.spring(e,{toValue:1,tension:200,friction:8,useNativeDriver:!0})]).start()},fe=(0,_react.useRef)(new _reactNative.Animated.Value(1)).current,{colors:ye}=N,xe=H?ye.primary:ye.background.elevated,ve=H?ye.onPrimary:ye.primary,Re=H?ye.onPrimary:P?ye.text.primary:ye.text.tertiary,Ne=H?ye.onPrimary:ye.primaryMuted,Ae=H?ye.primary:k?ye.onPrimary:ve,Ie=_??L,je=g??(V?L:0),we=je>0,Ee=b??(V?6:k?8:6),Te=m??(V?8:4),De=we?Ee:Math.max(Ee,A.bottom),Le=we?Math.max(je,A.bottom):0,Se="full"===c,Ce=V?U+2*Ee+2*_reactNative.StyleSheet.hairlineWidth:U+Ee+De,Be=Se?U>0?Ce/2:N.radius.full:c??j?.borderRadius??(P?N.radius.full:V?S:0),Pe=void 0!==c||void 0!==j?.borderRadius,activeBgRadius=(e,t)=>"number"==typeof u?Math.max(0,Math.min(u,e/2)):"auto"===u&&Pe?Math.min(Be,e/2):t,Ve="underline"===s?Math.max(Te,Se&&0===U?0:Be):Te,ke=h??"none",Me=N.shadows[ke],He="none"===ke?null:(0,_shadows.supportsBoxShadow)()?{boxShadow:(0,_shadows.toBoxShadow)(Me)}:Me,We=f?_reactNative.StyleSheet.hairlineWidth:0,ze=H?ye.primary:ye.border.primary,Fe=r?.lift??0,Oe=Ee+We,Ue=r&&U>0?Math.max(0,(X.height||Y)/2+Fe-U/2-Oe):0,qe=r?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[I.centerCell,K?{flex:0,marginHorizontal:J}:null],pointerEvents:"box-none",children:(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>{if(!r)return;const e=r.haptic??o;!1!==e&&(0,_index2.triggerHaptic)(e),popIcon(fe),r.onPress()},onLayout:e=>{const{width:t,height:i}=e.nativeEvent.layout;Z(e=>e.width===t&&e.height===i?e:{width:t,height:i})},accessibilityRole:"button",accessibilityLabel:r.label,hitSlop:{top:6,bottom:6,left:6,right:6},style:({pressed:e})=>[{top:-Fe},e?{opacity:.85}:null],testID:r.testID??(R?`${R}-center`:void 0),children:r.content?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{transform:[{scale:fe}]},children:r.content}):(0,_jsxRuntime.jsx)(_reactNative.View,{style:[I.centerCircle,{width:Y,height:Y,borderRadius:Y/2,..._corners.smoothCorners,backgroundColor:r.color??ye.primary}],children:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{transform:[{scale:fe}]},children:(0,_index3.renderSlotIcon)(r.icon??"add",{color:r.iconColor??ye.onPrimary,size:r.iconSize??24,disabled:!1})})})})},CENTER_KEY):null,Ge=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:I.tabRow,onLayout:e=>{const{width:t,height:i}=e.nativeEvent.layout;O(t),q(i)},children:[W&&ae>0&&(!P||ue>0)?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[I.pill,{width:ae,height:P?ue:E,left:oe,top:he,backgroundColor:Ne,borderRadius:P?activeBgRadius(ue,ue/2):activeBgRadius(E,N.radius.full),..._corners.smoothCorners,transform:[{translateX:ge}]},x]}):null,k&&ee>0?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[I.bubble,N.shadows.md,{width:C,height:C,borderRadius:C/2,..._corners.smoothCorners,left:le,top:ce,backgroundColor:ye.primary,borderColor:ye.background.elevated,transform:[{translateX:ge}]},x]}):null,($e=i.map(e=>{const t=e.key===n,i=t?ve:Re,r=t?Ae:Re,l="string"==typeof e.icon?{name:e.icon,variant:"bold"}:e.icon,s=t?e.activeIcon??l:e.icon,d=re.current[e.key],c=ne.current[e.key],u=formatBadge(e.badge??null),h=badgeAccessibilitySuffix(e.badge??null),p=H&&!t?.7:1,_=k&&t||H?ye.primary:ye.background.elevated,g=hasLabel(e),m=g&&(!M||t),b=(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[I.iconWrap,{width:w+4,height:w+4,opacity:p,transform:[{scale:d}]}],children:[(0,_index3.renderSlotIcon)(s,{color:r,size:w,focused:t,disabled:!1}),u?(0,_jsxRuntime.jsx)(_reactNative.View,{style:[u.isDot?I.badgeDot:I.badgePill,{backgroundColor:ye.error,borderColor:_}],children:u.isDot?null:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:[I.badgeText,{color:ye.onError}],numberOfLines:1,children:u.text})}):null]}),f=k?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{top:c.interpolate({inputRange:[0,1],outputRange:[0,-B]})},children:b}):b,y=m?(0,_jsxRuntime.jsx)(_reactNative.Animated.Text,{numberOfLines:1,style:[I.label,M?I.labelInline:null,{color:i,opacity:M?c:p,fontWeight:t?N.typography.fontWeight.semibold:N.typography.fontWeight.normal},v],children:e.label}):null,A=(0,_jsxRuntime.jsx)(_reactNative.Pressable,{onPress:()=>(e=>{e.key!==n&&!1!==o&&(0,_index2.triggerHaptic)(o);const t=re.current[e.key];t&&popIcon(t),a(e.key)})(e),accessibilityRole:"tab",accessibilityState:{selected:t},accessibilityLabel:`${e.label}${h}`,accessibilityHint:`Switches to ${e.label}`,hitSlop:{top:6,bottom:6,left:6,right:6},style:({pressed:e})=>[I.tab,P?I.tabTile:null,e?{opacity:.85}:null],testID:R?`${R}-tab-${e.key}`:void 0,children:M?(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[I.expandPill,{height:E,paddingHorizontal:t&&g?N.spacing.md:Math.max(0,(E-(w+4))/2)}],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"none",style:[I.expandFill,{borderRadius:activeBgRadius(E,E/2),..._corners.smoothCorners,backgroundColor:t?ye.primaryMuted:"transparent"},t?x:null]}),f,y]}):(0,_jsxRuntime.jsxs)(_jsxRuntime.Fragment,{children:[f,y]})},e.key);return M?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{style:{flex:c.interpolate({inputRange:[0,1],outputRange:[1,g?1.5:1]})},children:A},e.key):A}),qe?[...$e.slice(0,G),qe,...$e.slice(G)]:$e),"underline"===s&&ee>0?(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{pointerEvents:"none",style:[I.underline,"top"===d?I.underlineTop:I.underlineBottom,"top"===d?{top:-Ee}:{bottom:-Ee},{width:ee,height:j?.underlineHeight??3,backgroundColor:ye.primary,transform:[{translateX:ge}]},x]}):null]});var $e;return(0,_jsxRuntime.jsx)(_reactNative.View,{ref:t,testID:R,accessibilityRole:"tablist",style:[I.outer,{paddingHorizontal:Ie,paddingTop:Math.max(je,Ue),paddingBottom:Le},y],children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[V?I.floatingBar:I.dockedBar,He,{backgroundColor:xe,borderColor:ze,borderRadius:Be,..._corners.smoothCorners},V?{borderWidth:We,paddingHorizontal:Te,paddingVertical:Ee}:{borderTopWidth:We,borderBottomWidth:We,borderLeftWidth:We,borderRightWidth:We,paddingHorizontal:Ve,paddingTop:Ee,paddingBottom:De}],children:Ge})})});BottomNavigation.displayName="BottomNavigation";const buildStyles=e=>_reactNative.StyleSheet.create({outer:{backgroundColor:"transparent"},dockedBar:{paddingHorizontal:4},floatingBar:{paddingVertical:6,paddingHorizontal:8},tabRow:{flexDirection:"row",alignItems:"stretch",position:"relative"},tab:{flex:1,minHeight:44,alignItems:"center",justifyContent:"center",paddingVertical:6,gap:4},tabTile:{paddingVertical:8,gap:2},centerCell:{flex:1,minHeight:44,alignItems:"center",justifyContent:"center"},centerCircle:{alignItems:"center",justifyContent:"center"},iconWrap:{alignItems:"center",justifyContent:"center",position:"relative"},label:{fontSize:e.typography.fontSize.xs,lineHeight:e.typography.fontSize.xs*e.typography.lineHeight.tight,textAlign:"center",includeFontPadding:!1},labelInline:{fontSize:e.typography.fontSize.sm,lineHeight:e.typography.fontSize.sm*e.typography.lineHeight.tight,flexShrink:1,includeFontPadding:!1},expandPill:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:e.spacing.xs},expandFill:{position:"absolute",top:0,right:0,bottom:0,left:0,overflow:"hidden"},pill:{position:"absolute",left:0},bubble:{position:"absolute",left:0,borderWidth:3},underline:{position:"absolute",left:0,height:3},underlineBottom:{borderTopLeftRadius:2,borderTopRightRadius:2,..._corners.smoothCorners},underlineTop:{borderBottomLeftRadius:2,borderBottomRightRadius:2,..._corners.smoothCorners},badgePill:{position:"absolute",top:-4,right:-8,minWidth:18,height:18,borderRadius:9,..._corners.smoothCorners,paddingHorizontal:4,paddingVertical:2,alignItems:"center",justifyContent:"center",borderWidth:1.5},badgeDot:{position:"absolute",top:-2,right:-2,width:10,height:10,borderRadius:5,..._corners.smoothCorners,borderWidth:1.5},badgeText:{fontSize:10,fontWeight:"700",lineHeight:12,textAlign:"center",includeFontPadding:!1}});var _default=exports.default=BottomNavigation;
|