pixelize-native-library 1.0.7 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/module/core/MODULE.md +129 -36
- package/lib/module/core/a11y/MODULE.md +127 -4
- package/lib/module/core/a11y/announce.js +30 -0
- package/lib/module/core/a11y/announce.web.js +134 -0
- package/lib/module/core/a11y/index.js +81 -15
- package/lib/module/core/a11y/keyboard.js +42 -0
- package/lib/module/core/a11y/keyboard.web.js +229 -0
- package/lib/module/core/a11y/labels.js +24 -0
- package/lib/module/core/device/MODULE.md +47 -0
- package/lib/module/core/device/index.js +91 -0
- package/lib/module/core/heading/MODULE.md +38 -0
- package/lib/module/core/heading/index.js +45 -0
- package/lib/module/core/icon/Icon.js +37 -0
- package/lib/module/core/icon/MODULE.md +42 -8
- package/lib/module/core/icon/icons/arrow-down.js +10 -0
- package/lib/module/core/icon/icons/arrow-left.js +10 -0
- package/lib/module/core/icon/icons/arrow-right.js +10 -0
- package/lib/module/core/icon/icons/arrow-up.js +10 -0
- package/lib/module/core/icon/icons/at-sign.js +10 -0
- package/lib/module/core/icon/icons/bell.js +10 -0
- package/lib/module/core/icon/icons/bold.js +10 -0
- package/lib/module/core/icon/icons/building-2.js +10 -0
- package/lib/module/core/icon/icons/calendar.js +10 -0
- package/lib/module/core/icon/icons/chart-column.js +10 -0
- package/lib/module/core/icon/icons/check.js +10 -0
- package/lib/module/core/icon/icons/chevron-down.js +10 -0
- package/lib/module/core/icon/icons/chevron-left.js +10 -0
- package/lib/module/core/icon/icons/chevron-right.js +10 -0
- package/lib/module/core/icon/icons/chevron-up.js +10 -0
- package/lib/module/core/icon/icons/chevrons-left.js +10 -0
- package/lib/module/core/icon/icons/chevrons-right.js +10 -0
- package/lib/module/core/icon/icons/chevrons-up-down.js +10 -0
- package/lib/module/core/icon/icons/circle-alert.js +10 -0
- package/lib/module/core/icon/icons/circle-check.js +10 -0
- package/lib/module/core/icon/icons/clock.js +10 -0
- package/lib/module/core/icon/icons/code.js +10 -0
- package/lib/module/core/icon/icons/download.js +10 -0
- package/lib/module/core/icon/icons/external-link.js +10 -0
- package/lib/module/core/icon/icons/eye.js +10 -0
- package/lib/module/core/icon/icons/file-text.js +10 -0
- package/lib/module/core/icon/icons/filter.js +10 -0
- package/lib/module/core/icon/icons/flag.js +10 -0
- package/lib/module/core/icon/icons/folder.js +10 -0
- package/lib/module/core/icon/icons/heading-1.js +10 -0
- package/lib/module/core/icon/icons/heading-2.js +10 -0
- package/lib/module/core/icon/icons/heading-3.js +10 -0
- package/lib/module/core/icon/icons/image.js +10 -0
- package/lib/module/core/icon/icons/inbox.js +10 -0
- package/lib/module/core/icon/icons/info.js +10 -0
- package/lib/module/core/icon/icons/italic.js +10 -0
- package/lib/module/core/icon/icons/kanban.js +10 -0
- package/lib/module/core/icon/icons/layers.js +10 -0
- package/lib/module/core/icon/icons/layout-dashboard.js +10 -0
- package/lib/module/core/icon/icons/layout-template.js +10 -0
- package/lib/module/core/icon/icons/life-buoy.js +10 -0
- package/lib/module/core/icon/icons/link.js +10 -0
- package/lib/module/core/icon/icons/list-checks.js +10 -0
- package/lib/module/core/icon/icons/list-ordered.js +10 -0
- package/lib/module/core/icon/icons/list-todo.js +10 -0
- package/lib/module/core/icon/icons/list.js +10 -0
- package/lib/module/core/icon/icons/log-out.js +10 -0
- package/lib/module/core/icon/icons/map.js +10 -0
- package/lib/module/core/icon/icons/message-square.js +10 -0
- package/lib/module/core/icon/icons/milestone.js +10 -0
- package/lib/module/core/icon/icons/minus.js +10 -0
- package/lib/module/core/icon/icons/more-horizontal.js +10 -0
- package/lib/module/core/icon/icons/paperclip.js +10 -0
- package/lib/module/core/icon/icons/pencil.js +10 -0
- package/lib/module/core/icon/icons/plus.js +10 -0
- package/lib/module/core/icon/icons/quote.js +10 -0
- package/lib/module/core/icon/icons/refresh-cw.js +10 -0
- package/lib/module/core/icon/icons/save.js +10 -0
- package/lib/module/core/icon/icons/search.js +10 -0
- package/lib/module/core/icon/icons/send.js +10 -0
- package/lib/module/core/icon/icons/settings.js +10 -0
- package/lib/module/core/icon/icons/share.js +10 -0
- package/lib/module/core/icon/icons/square-code.js +10 -0
- package/lib/module/core/icon/icons/star.js +10 -0
- package/lib/module/core/icon/icons/strikethrough.js +10 -0
- package/lib/module/core/icon/icons/tag.js +10 -0
- package/lib/module/core/icon/icons/trash.js +10 -0
- package/lib/module/core/icon/icons/triangle-alert.js +10 -0
- package/lib/module/core/icon/icons/underline.js +10 -0
- package/lib/module/core/icon/icons/upload.js +10 -0
- package/lib/module/core/icon/icons/user.js +10 -0
- package/lib/module/core/icon/icons/users.js +10 -0
- package/lib/module/core/icon/icons/x.js +10 -0
- package/lib/module/core/icon/index.js +4 -153
- package/lib/module/core/icon/names.js +2 -0
- package/lib/module/core/icon/resolve.js +158 -0
- package/lib/module/core/icon/types.js +4 -0
- package/lib/module/core/list/VirtualList.js +226 -0
- package/lib/module/core/list/index.js +4 -0
- package/lib/module/core/media/MediaImage.js +51 -0
- package/lib/module/core/media/expoImage.js +20 -0
- package/lib/module/core/media/index.js +6 -0
- package/lib/module/core/media/pickers.js +23 -0
- package/lib/module/core/motion/MODULE.md +101 -0
- package/lib/module/core/motion/config.js +112 -0
- package/lib/module/core/motion/index.js +7 -0
- package/lib/module/core/motion/presets.js +192 -0
- package/lib/module/core/motion/useAnimatedValue.js +19 -0
- package/lib/module/core/motion/useMotion.js +46 -0
- package/lib/module/core/style/index.js +2 -0
- package/lib/module/core/style/sx.js +76 -0
- package/lib/module/core/style/useThemedStyles.js +8 -0
- package/lib/module/index.js +70 -2
- package/lib/module/modules/accordion/Accordion.js +256 -87
- package/lib/module/modules/accordion/Accordion.variants.js +2 -4
- package/lib/module/modules/accordion/MODULE.md +35 -11
- package/lib/module/modules/alert-dialog/AlertDialog.js +1 -1
- package/lib/module/modules/alert-dialog/MODULE.md +11 -2
- package/lib/module/modules/app-bar/AppBar.js +179 -0
- package/lib/module/modules/app-bar/AppBar.variants.js +72 -0
- package/lib/module/modules/app-bar/MODULE.md +68 -0
- package/lib/module/modules/app-bar/index.js +10 -0
- package/lib/module/modules/avatar/Avatar.js +38 -18
- package/lib/module/modules/avatar/Avatar.variants.js +44 -3
- package/lib/module/modules/avatar/MODULE.md +37 -15
- package/lib/module/modules/avatar-group/AvatarGroup.js +77 -0
- package/lib/module/modules/avatar-group/AvatarGroup.variants.js +109 -0
- package/lib/module/modules/avatar-group/MODULE.md +28 -0
- package/lib/module/modules/avatar-group/index.js +10 -0
- package/lib/module/modules/badge/Badge.js +3 -2
- package/lib/module/modules/badge/Badge.variants.js +12 -2
- package/lib/module/modules/badge/MODULE.md +6 -0
- package/lib/module/modules/banner/Banner.js +135 -0
- package/lib/module/modules/banner/Banner.variants.js +118 -0
- package/lib/module/modules/banner/MODULE.md +113 -0
- package/lib/module/modules/banner/index.js +4 -0
- package/lib/module/modules/bottom-nav/BottomNav.js +37 -126
- package/lib/module/modules/bottom-nav/BottomNav.variants.js +28 -9
- package/lib/module/modules/bottom-nav/BottomNavIconWithBadge.js +56 -8
- package/lib/module/modules/bottom-nav/BottomNavOverflowSheet.js +133 -114
- package/lib/module/modules/bottom-nav/BottomNavTab.js +138 -0
- package/lib/module/modules/bottom-nav/MODULE.md +21 -6
- package/lib/module/modules/bottom-sheet/BottomSheet.js +189 -0
- package/lib/module/modules/bottom-sheet/BottomSheet.variants.js +49 -0
- package/lib/module/modules/bottom-sheet/MODULE.md +53 -0
- package/lib/module/modules/bottom-sheet/index.js +4 -0
- package/lib/module/modules/button/Button.js +98 -47
- package/lib/module/modules/button/Button.variants.js +12 -7
- package/lib/module/modules/button/MODULE.md +25 -3
- package/lib/module/modules/button-group/ButtonGroup.js +163 -55
- package/lib/module/modules/button-group/ButtonGroup.variants.js +30 -4
- package/lib/module/modules/button-group/MODULE.md +33 -7
- package/lib/module/modules/card/Card.js +10 -7
- package/lib/module/modules/card/MODULE.md +6 -0
- package/lib/module/modules/charts/BarChart.js +242 -0
- package/lib/module/modules/charts/BarList.js +98 -48
- package/lib/module/modules/charts/ChartLegend.js +154 -0
- package/lib/module/modules/charts/Charts.variants.js +524 -1
- package/lib/module/modules/charts/DonutChart.js +100 -65
- package/lib/module/modules/charts/LineChart.js +179 -0
- package/lib/module/modules/charts/MODULE.md +148 -22
- package/lib/module/modules/charts/PieChart.js +140 -0
- package/lib/module/modules/charts/Sparkline.js +5 -4
- package/lib/module/modules/charts/index.js +3 -0
- package/lib/module/modules/checkbox/Checkbox.js +114 -44
- package/lib/module/modules/checkbox/Checkbox.variants.js +13 -8
- package/lib/module/modules/checkbox/MODULE.md +35 -8
- package/lib/module/modules/chip/Chip.js +155 -0
- package/lib/module/modules/chip/Chip.variants.js +278 -0
- package/lib/module/modules/chip/ChipGroup.js +48 -0
- package/lib/module/modules/chip/MODULE.md +156 -0
- package/lib/module/modules/chip/index.js +13 -0
- package/lib/module/modules/combobox/Combobox.js +587 -0
- package/lib/module/modules/combobox/Combobox.variants.js +280 -0
- package/lib/module/modules/combobox/MODULE.md +183 -0
- package/lib/module/modules/combobox/comboboxKeys.js +19 -0
- package/lib/module/modules/combobox/comboboxKeys.web.js +76 -0
- package/lib/module/modules/combobox/index.js +13 -0
- package/lib/module/modules/composer/Composer.js +156 -0
- package/lib/module/modules/composer/Composer.variants.js +42 -0
- package/lib/module/modules/composer/MODULE.md +70 -0
- package/lib/module/modules/composer/index.js +4 -0
- package/lib/module/modules/copy-button/CopyButton.js +156 -0
- package/lib/module/modules/copy-button/CopyButton.variants.js +86 -0
- package/lib/module/modules/copy-button/MODULE.md +73 -0
- package/lib/module/modules/copy-button/index.js +4 -0
- package/lib/module/modules/data-table/DataTable.js +513 -0
- package/lib/module/modules/data-table/DataTable.variants.js +188 -0
- package/lib/module/modules/data-table/MODULE.md +145 -0
- package/lib/module/modules/data-table/index.js +10 -0
- package/lib/module/modules/date-picker/Calendar.js +368 -0
- package/lib/module/modules/date-picker/Calendar.keys.js +23 -0
- package/lib/module/modules/date-picker/Calendar.keys.web.js +83 -0
- package/lib/module/modules/date-picker/DatePicker.js +162 -0
- package/lib/module/modules/date-picker/DatePicker.variants.js +686 -0
- package/lib/module/modules/date-picker/DateRangePicker.js +87 -0
- package/lib/module/modules/date-picker/MODULE.md +169 -0
- package/lib/module/modules/date-picker/PickerField.js +142 -0
- package/lib/module/modules/date-picker/PickerShell.js +132 -0
- package/lib/module/modules/date-picker/TimePicker.js +184 -0
- package/lib/module/modules/date-picker/index.js +14 -0
- package/lib/module/modules/divider/Divider.js +8 -7
- package/lib/module/modules/divider/MODULE.md +6 -0
- package/lib/module/modules/drawer/Drawer.js +140 -58
- package/lib/module/modules/drawer/Drawer.variants.js +3 -16
- package/lib/module/modules/drawer/MODULE.md +90 -118
- package/lib/module/modules/empty-state/EmptyState.js +32 -18
- package/lib/module/modules/empty-state/EmptyState.variants.js +9 -0
- package/lib/module/modules/empty-state/MODULE.md +25 -7
- package/lib/module/modules/fab/Fab.js +212 -0
- package/lib/module/modules/fab/Fab.variants.js +346 -0
- package/lib/module/modules/fab/FabGroup.js +334 -0
- package/lib/module/modules/fab/MODULE.md +181 -0
- package/lib/module/modules/fab/index.js +13 -0
- package/lib/module/modules/file-grid/FileGrid.js +149 -0
- package/lib/module/modules/file-grid/FileGrid.variants.js +51 -0
- package/lib/module/modules/file-grid/MODULE.md +12 -0
- package/lib/module/modules/file-grid/index.js +4 -0
- package/lib/module/modules/file-upload/FileUpload.js +124 -34
- package/lib/module/modules/file-upload/FileUpload.variants.js +50 -7
- package/lib/module/modules/file-upload/MODULE.md +22 -4
- package/lib/module/modules/filter-sheet/FilterChip.js +25 -19
- package/lib/module/modules/filter-sheet/FilterSheet.js +17 -11
- package/lib/module/modules/filter-sheet/FilterSheet.variants.js +24 -5
- package/lib/module/modules/filter-sheet/FilterSheetBody.js +168 -82
- package/lib/module/modules/filter-sheet/MODULE.md +22 -1
- package/lib/module/modules/folder-row/FolderRow.js +132 -0
- package/lib/module/modules/folder-row/FolderRow.variants.js +49 -0
- package/lib/module/modules/folder-row/MODULE.md +71 -0
- package/lib/module/modules/folder-row/index.js +4 -0
- package/lib/module/modules/form-field/FormField.js +104 -0
- package/lib/module/modules/form-field/FormField.variants.js +88 -0
- package/lib/module/modules/form-field/MODULE.md +103 -0
- package/lib/module/modules/form-field/index.js +4 -0
- package/lib/module/modules/gantt/Gantt.js +218 -0
- package/lib/module/modules/gantt/Gantt.variants.js +141 -0
- package/lib/module/modules/gantt/MODULE.md +71 -0
- package/lib/module/modules/gantt/index.js +5 -0
- package/lib/module/modules/image-viewer/ImageViewer.js +235 -0
- package/lib/module/modules/image-viewer/ImageViewer.variants.js +6 -0
- package/lib/module/modules/image-viewer/MODULE.md +57 -0
- package/lib/module/modules/image-viewer/index.js +4 -0
- package/lib/module/modules/input/Input.js +106 -48
- package/lib/module/modules/input/Input.variants.js +18 -4
- package/lib/module/modules/input/MODULE.md +36 -6
- package/lib/module/modules/limit-reached-modal/LimitReachedModal.js +90 -0
- package/lib/module/modules/limit-reached-modal/LimitReachedModal.variants.js +108 -0
- package/lib/module/modules/limit-reached-modal/MODULE.md +94 -0
- package/lib/module/modules/limit-reached-modal/index.js +11 -0
- package/lib/module/modules/list-item/ListItem.js +45 -28
- package/lib/module/modules/list-item/MODULE.md +6 -0
- package/lib/module/modules/markdown/MODULE.md +32 -5
- package/lib/module/modules/markdown/Markdown.js +54 -20
- package/lib/module/modules/markdown/Markdown.variants.js +6 -1
- package/lib/module/modules/markdown/parseMarkdown.js +3 -3
- package/lib/module/modules/menu/MODULE.md +45 -14
- package/lib/module/modules/menu/Menu.js +174 -65
- package/lib/module/modules/menu/Menu.variants.js +10 -0
- package/lib/module/modules/message-bubble/MODULE.md +38 -0
- package/lib/module/modules/message-bubble/MessageBubble.js +55 -0
- package/lib/module/modules/message-bubble/MessageBubble.variants.js +57 -0
- package/lib/module/modules/message-bubble/index.js +4 -0
- package/lib/module/modules/modal/MODULE.md +29 -3
- package/lib/module/modules/modal/Modal.js +72 -22
- package/lib/module/modules/more-items/MODULE.md +72 -0
- package/lib/module/modules/more-items/MoreItems.js +162 -0
- package/lib/module/modules/more-items/MoreItems.variants.js +80 -0
- package/lib/module/modules/more-items/index.js +4 -0
- package/lib/module/modules/multi-select/MODULE.md +84 -18
- package/lib/module/modules/multi-select/MultiSelect.js +217 -105
- package/lib/module/modules/multi-select/MultiSelect.variants.js +28 -5
- package/lib/module/modules/number-input/MODULE.md +39 -5
- package/lib/module/modules/number-input/NumberInput.js +41 -11
- package/lib/module/modules/number-input/NumberInput.variants.js +39 -5
- package/lib/module/modules/org-switcher/MODULE.md +121 -0
- package/lib/module/modules/org-switcher/OrgSwitcher.js +284 -0
- package/lib/module/modules/org-switcher/OrgSwitcher.variants.js +186 -0
- package/lib/module/modules/org-switcher/index.js +9 -0
- package/lib/module/modules/pagination/MODULE.md +163 -0
- package/lib/module/modules/pagination/Pagination.js +197 -0
- package/lib/module/modules/pagination/Pagination.variants.js +307 -0
- package/lib/module/modules/pagination/PaginationControls.js +193 -0
- package/lib/module/modules/pagination/index.js +15 -0
- package/lib/module/modules/pin-input/MODULE.md +29 -14
- package/lib/module/modules/pin-input/PinInput.js +111 -80
- package/lib/module/modules/pin-input/PinInput.variants.js +13 -5
- package/lib/module/modules/progress-bar/MODULE.md +17 -7
- package/lib/module/modules/progress-bar/ProgressBar.js +97 -56
- package/lib/module/modules/progress-bar/ProgressBar.variants.js +16 -18
- package/lib/module/modules/radio-group/MODULE.md +40 -14
- package/lib/module/modules/radio-group/RadioGroup.js +71 -7
- package/lib/module/modules/radio-group/RadioGroup.variants.js +46 -10
- package/lib/module/modules/reorder/MODULE.md +104 -97
- package/lib/module/modules/reorder/Reorder.js +233 -197
- package/lib/module/modules/reorder/Reorder.variants.js +35 -13
- package/lib/module/modules/rich-text/MODULE.md +52 -0
- package/lib/module/modules/rich-text/RichText.js +362 -0
- package/lib/module/modules/rich-text/RichText.variants.js +17 -0
- package/lib/module/modules/rich-text/index.js +5 -0
- package/lib/module/modules/rich-text/parseRichText.js +133 -0
- package/lib/module/modules/rich-text-editor/MODULE.md +225 -0
- package/lib/module/modules/rich-text-editor/RichTextEditor.js +413 -0
- package/lib/module/modules/rich-text-editor/RichTextEditor.variants.js +316 -0
- package/lib/module/modules/rich-text-editor/index.js +10 -0
- package/lib/module/modules/screen/MODULE.md +57 -0
- package/lib/module/modules/screen/Screen.js +106 -0
- package/lib/module/modules/screen/Screen.variants.js +43 -0
- package/lib/module/modules/screen/index.js +10 -0
- package/lib/module/modules/search-bar/MODULE.md +114 -0
- package/lib/module/modules/search-bar/SearchBar.js +256 -0
- package/lib/module/modules/search-bar/SearchBar.variants.js +205 -0
- package/lib/module/modules/search-bar/index.js +12 -0
- package/lib/module/modules/section/MODULE.md +39 -0
- package/lib/module/modules/section/Section.js +42 -0
- package/lib/module/modules/section/Section.variants.js +29 -0
- package/lib/module/modules/section/index.js +10 -0
- package/lib/module/modules/section-list/MODULE.md +18 -0
- package/lib/module/modules/section-list/SectionList.js +64 -0
- package/lib/module/modules/section-list/SectionList.variants.js +11 -0
- package/lib/module/modules/section-list/index.js +4 -0
- package/lib/module/modules/segmented-control/MODULE.md +124 -0
- package/lib/module/modules/segmented-control/SegmentedControl.js +158 -0
- package/lib/module/modules/segmented-control/SegmentedControl.variants.js +167 -0
- package/lib/module/modules/segmented-control/index.js +13 -0
- package/lib/module/modules/select/MODULE.md +81 -14
- package/lib/module/modules/select/Select.js +196 -94
- package/lib/module/modules/select/Select.variants.js +28 -5
- package/lib/module/modules/skeleton/MODULE.md +27 -7
- package/lib/module/modules/skeleton/Skeleton.js +52 -38
- package/lib/module/modules/skeleton/Skeleton.variants.js +9 -8
- package/lib/module/modules/slider/MODULE.md +31 -5
- package/lib/module/modules/slider/Slider.js +67 -10
- package/lib/module/modules/slider/Slider.variants.js +60 -13
- package/lib/module/modules/spinner/MODULE.md +16 -6
- package/lib/module/modules/spinner/Spinner.js +20 -16
- package/lib/module/modules/spinner/Spinner.variants.js +5 -3
- package/lib/module/modules/stage-progress/MODULE.md +64 -0
- package/lib/module/modules/stage-progress/StageProgress.js +174 -0
- package/lib/module/modules/stage-progress/StageProgress.variants.js +164 -0
- package/lib/module/modules/stage-progress/index.js +4 -0
- package/lib/module/modules/stat-tile/MODULE.md +9 -2
- package/lib/module/modules/stat-tile/StatTile.js +70 -33
- package/lib/module/modules/stat-tile/StatTile.variants.js +6 -4
- package/lib/module/modules/state-block/MODULE.md +52 -0
- package/lib/module/modules/state-block/StateBlock.js +131 -0
- package/lib/module/modules/state-block/StateBlock.variants.js +55 -0
- package/lib/module/modules/state-block/index.js +10 -0
- package/lib/module/modules/stepper/MODULE.md +33 -6
- package/lib/module/modules/stepper/Stepper.js +108 -39
- package/lib/module/modules/stepper/Stepper.variants.js +6 -6
- package/lib/module/modules/swipeable-row/MODULE.md +120 -0
- package/lib/module/modules/swipeable-row/SwipeableRow.js +244 -0
- package/lib/module/modules/swipeable-row/SwipeableRow.variants.js +80 -0
- package/lib/module/modules/swipeable-row/index.js +4 -0
- package/lib/module/modules/switch/MODULE.md +14 -0
- package/lib/module/modules/switch/Switch.js +1 -1
- package/lib/module/modules/switch/Switch.variants.js +8 -0
- package/lib/module/modules/tabs/MODULE.md +47 -13
- package/lib/module/modules/tabs/Tabs.js +121 -72
- package/lib/module/modules/tabs/Tabs.variants.js +30 -8
- package/lib/module/modules/text/MODULE.md +51 -0
- package/lib/module/modules/text/Text.js +47 -0
- package/lib/module/modules/text/Text.variants.js +98 -0
- package/lib/module/modules/text/index.js +4 -0
- package/lib/module/modules/textarea/MODULE.md +29 -13
- package/lib/module/modules/textarea/Textarea.js +90 -45
- package/lib/module/modules/textarea/Textarea.variants.js +14 -9
- package/lib/module/modules/timeline/MODULE.md +39 -7
- package/lib/module/modules/timeline/Timeline.js +151 -77
- package/lib/module/modules/timeline/Timeline.variants.js +13 -0
- package/lib/module/modules/toast/MODULE.md +66 -7
- package/lib/module/modules/toast/Toast.js +93 -27
- package/lib/module/modules/toast/Toast.variants.js +37 -1
- package/lib/module/modules/toast/toastScreenReader.js +69 -0
- package/lib/module/modules/tooltip/MODULE.md +78 -28
- package/lib/module/modules/tooltip/Tooltip.js +93 -43
- package/lib/module/modules/tooltip/Tooltip.variants.js +3 -4
- package/lib/module/modules/typing-indicator/MODULE.md +48 -0
- package/lib/module/modules/typing-indicator/TypingIndicator.js +98 -0
- package/lib/module/modules/typing-indicator/TypingIndicator.variants.js +55 -0
- package/lib/module/modules/typing-indicator/index.js +4 -0
- package/lib/module/modules/unread-badge/MODULE.md +20 -0
- package/lib/module/modules/unread-badge/UnreadBadge.js +45 -0
- package/lib/module/modules/unread-badge/UnreadBadge.variants.js +66 -0
- package/lib/module/modules/unread-badge/index.js +4 -0
- package/lib/module/test/mocks/flashList.js +5 -0
- package/lib/module/test/perfHelpers.js +18 -0
- package/lib/module/theme/MODULE.md +6 -0
- package/lib/module/theme/hooks.js +11 -0
- package/lib/module/theme/index.js +3 -6
- package/lib/module/theme/platform/MODULE.md +6 -0
- package/lib/module/theme/platform/motion.native.js +15 -0
- package/lib/module/theme/provider/PixelizeProvider.js +9 -47
- package/lib/module/theme/provider/ThemeContext.js +6 -0
- package/lib/module/theme/provider/colorModeStorage.js +2 -2
- package/lib/module/theme/provider/index.js +1 -0
- package/lib/module/theme/provider/loadPalette.js +75 -0
- package/lib/module/theme/provider/types.js +4 -0
- package/lib/module/theme/provider/useTheme.js +1 -2
- package/lib/module/theme/provider/useThemeMode.js +1 -1
- package/lib/module/theme/tokens/roles/index.js +9 -3
- package/lib/typescript/core/a11y/announce.d.ts +20 -0
- package/lib/typescript/core/a11y/announce.web.d.ts +27 -0
- package/lib/typescript/core/a11y/index.d.ts +21 -2
- package/lib/typescript/core/a11y/keyboard.d.ts +45 -0
- package/lib/typescript/core/a11y/keyboard.web.d.ts +69 -0
- package/lib/typescript/core/a11y/labels.d.ts +19 -0
- package/lib/typescript/core/device/index.d.ts +16 -0
- package/lib/typescript/core/heading/index.d.ts +45 -0
- package/lib/typescript/core/icon/Icon.d.ts +18 -0
- package/lib/typescript/core/icon/icons/arrow-down.d.ts +3 -0
- package/lib/typescript/core/icon/icons/arrow-left.d.ts +3 -0
- package/lib/typescript/core/icon/icons/arrow-right.d.ts +3 -0
- package/lib/typescript/core/icon/icons/arrow-up.d.ts +3 -0
- package/lib/typescript/core/icon/icons/at-sign.d.ts +3 -0
- package/lib/typescript/core/icon/icons/bell.d.ts +3 -0
- package/lib/typescript/core/icon/icons/bold.d.ts +3 -0
- package/lib/typescript/core/icon/icons/building-2.d.ts +3 -0
- package/lib/typescript/core/icon/icons/calendar.d.ts +3 -0
- package/lib/typescript/core/icon/icons/chart-column.d.ts +3 -0
- package/lib/typescript/core/icon/icons/check.d.ts +3 -0
- package/lib/typescript/core/icon/icons/chevron-down.d.ts +3 -0
- package/lib/typescript/core/icon/icons/chevron-left.d.ts +3 -0
- package/lib/typescript/core/icon/icons/chevron-right.d.ts +3 -0
- package/lib/typescript/core/icon/icons/chevron-up.d.ts +3 -0
- package/lib/typescript/core/icon/icons/chevrons-left.d.ts +3 -0
- package/lib/typescript/core/icon/icons/chevrons-right.d.ts +3 -0
- package/lib/typescript/core/icon/icons/chevrons-up-down.d.ts +3 -0
- package/lib/typescript/core/icon/icons/circle-alert.d.ts +3 -0
- package/lib/typescript/core/icon/icons/circle-check.d.ts +3 -0
- package/lib/typescript/core/icon/icons/clock.d.ts +3 -0
- package/lib/typescript/core/icon/icons/code.d.ts +3 -0
- package/lib/typescript/core/icon/icons/download.d.ts +3 -0
- package/lib/typescript/core/icon/icons/external-link.d.ts +3 -0
- package/lib/typescript/core/icon/icons/eye.d.ts +3 -0
- package/lib/typescript/core/icon/icons/file-text.d.ts +3 -0
- package/lib/typescript/core/icon/icons/filter.d.ts +3 -0
- package/lib/typescript/core/icon/icons/flag.d.ts +3 -0
- package/lib/typescript/core/icon/icons/folder.d.ts +3 -0
- package/lib/typescript/core/icon/icons/heading-1.d.ts +3 -0
- package/lib/typescript/core/icon/icons/heading-2.d.ts +3 -0
- package/lib/typescript/core/icon/icons/heading-3.d.ts +3 -0
- package/lib/typescript/core/icon/icons/image.d.ts +3 -0
- package/lib/typescript/core/icon/icons/inbox.d.ts +3 -0
- package/lib/typescript/core/icon/icons/info.d.ts +3 -0
- package/lib/typescript/core/icon/icons/italic.d.ts +3 -0
- package/lib/typescript/core/icon/icons/kanban.d.ts +3 -0
- package/lib/typescript/core/icon/icons/layers.d.ts +3 -0
- package/lib/typescript/core/icon/icons/layout-dashboard.d.ts +3 -0
- package/lib/typescript/core/icon/icons/layout-template.d.ts +3 -0
- package/lib/typescript/core/icon/icons/life-buoy.d.ts +3 -0
- package/lib/typescript/core/icon/icons/link.d.ts +3 -0
- package/lib/typescript/core/icon/icons/list-checks.d.ts +3 -0
- package/lib/typescript/core/icon/icons/list-ordered.d.ts +3 -0
- package/lib/typescript/core/icon/icons/list-todo.d.ts +3 -0
- package/lib/typescript/core/icon/icons/list.d.ts +3 -0
- package/lib/typescript/core/icon/icons/log-out.d.ts +3 -0
- package/lib/typescript/core/icon/icons/map.d.ts +3 -0
- package/lib/typescript/core/icon/icons/message-square.d.ts +3 -0
- package/lib/typescript/core/icon/icons/milestone.d.ts +3 -0
- package/lib/typescript/core/icon/icons/minus.d.ts +3 -0
- package/lib/typescript/core/icon/icons/more-horizontal.d.ts +3 -0
- package/lib/typescript/core/icon/icons/paperclip.d.ts +3 -0
- package/lib/typescript/core/icon/icons/pencil.d.ts +3 -0
- package/lib/typescript/core/icon/icons/plus.d.ts +3 -0
- package/lib/typescript/core/icon/icons/quote.d.ts +3 -0
- package/lib/typescript/core/icon/icons/refresh-cw.d.ts +3 -0
- package/lib/typescript/core/icon/icons/save.d.ts +3 -0
- package/lib/typescript/core/icon/icons/search.d.ts +3 -0
- package/lib/typescript/core/icon/icons/send.d.ts +3 -0
- package/lib/typescript/core/icon/icons/settings.d.ts +3 -0
- package/lib/typescript/core/icon/icons/share.d.ts +3 -0
- package/lib/typescript/core/icon/icons/square-code.d.ts +3 -0
- package/lib/typescript/core/icon/icons/star.d.ts +3 -0
- package/lib/typescript/core/icon/icons/strikethrough.d.ts +3 -0
- package/lib/typescript/core/icon/icons/tag.d.ts +3 -0
- package/lib/typescript/core/icon/icons/trash.d.ts +3 -0
- package/lib/typescript/core/icon/icons/triangle-alert.d.ts +3 -0
- package/lib/typescript/core/icon/icons/underline.d.ts +3 -0
- package/lib/typescript/core/icon/icons/upload.d.ts +3 -0
- package/lib/typescript/core/icon/icons/user.d.ts +3 -0
- package/lib/typescript/core/icon/icons/users.d.ts +3 -0
- package/lib/typescript/core/icon/icons/x.d.ts +3 -0
- package/lib/typescript/core/icon/index.d.ts +6 -94
- package/lib/typescript/core/icon/names.d.ts +2 -0
- package/lib/typescript/core/icon/resolve.d.ts +4 -0
- package/lib/typescript/core/icon/types.d.ts +13 -0
- package/lib/typescript/core/list/VirtualList.d.ts +55 -0
- package/lib/typescript/core/list/index.d.ts +3 -0
- package/lib/typescript/core/media/MediaImage.d.ts +28 -0
- package/lib/typescript/core/media/expoImage.d.ts +14 -0
- package/lib/typescript/core/media/index.d.ts +7 -0
- package/lib/typescript/core/media/pickers.d.ts +27 -0
- package/lib/typescript/core/motion/config.d.ts +56 -0
- package/lib/typescript/core/motion/index.d.ts +8 -0
- package/lib/typescript/core/motion/presets.d.ts +49 -0
- package/lib/typescript/core/motion/useAnimatedValue.d.ts +11 -0
- package/lib/typescript/core/motion/useMotion.d.ts +34 -0
- package/lib/typescript/core/style/index.d.ts +3 -0
- package/lib/typescript/core/style/sx.d.ts +86 -0
- package/lib/typescript/core/style/useThemedStyles.d.ts +5 -0
- package/lib/typescript/index.d.ts +134 -2
- package/lib/typescript/modules/accordion/Accordion.d.ts +12 -23
- package/lib/typescript/modules/accordion/Accordion.variants.d.ts +5 -5
- package/lib/typescript/modules/alert-dialog/AlertDialog.variants.d.ts +1 -1
- package/lib/typescript/modules/app-bar/AppBar.d.ts +37 -0
- package/lib/typescript/modules/app-bar/AppBar.variants.d.ts +35 -0
- package/lib/typescript/modules/app-bar/index.d.ts +9 -0
- package/lib/typescript/modules/avatar/Avatar.d.ts +23 -3
- package/lib/typescript/modules/avatar/Avatar.variants.d.ts +32 -1
- package/lib/typescript/modules/avatar/index.d.ts +1 -1
- package/lib/typescript/modules/avatar-group/AvatarGroup.d.ts +28 -0
- package/lib/typescript/modules/avatar-group/AvatarGroup.variants.d.ts +75 -0
- package/lib/typescript/modules/avatar-group/index.d.ts +9 -0
- package/lib/typescript/modules/badge/Badge.d.ts +3 -1
- package/lib/typescript/modules/badge/Badge.variants.d.ts +8 -4
- package/lib/typescript/modules/banner/Banner.d.ts +35 -0
- package/lib/typescript/modules/banner/Banner.variants.d.ts +49 -0
- package/lib/typescript/modules/banner/index.d.ts +5 -0
- package/lib/typescript/modules/bottom-nav/BottomNav.d.ts +9 -8
- package/lib/typescript/modules/bottom-nav/BottomNav.variants.d.ts +22 -9
- package/lib/typescript/modules/bottom-nav/BottomNavTab.d.ts +34 -0
- package/lib/typescript/modules/bottom-sheet/BottomSheet.d.ts +29 -0
- package/lib/typescript/modules/bottom-sheet/BottomSheet.variants.d.ts +13 -0
- package/lib/typescript/modules/bottom-sheet/index.d.ts +3 -0
- package/lib/typescript/modules/button/Button.d.ts +21 -0
- package/lib/typescript/modules/button/Button.variants.d.ts +22 -9
- package/lib/typescript/modules/button-group/ButtonGroup.d.ts +4 -2
- package/lib/typescript/modules/button-group/ButtonGroup.variants.d.ts +18 -5
- package/lib/typescript/modules/card/Card.variants.d.ts +2 -2
- package/lib/typescript/modules/charts/BarChart.d.ts +26 -0
- package/lib/typescript/modules/charts/ChartLegend.d.ts +16 -0
- package/lib/typescript/modules/charts/Charts.variants.d.ts +201 -2
- package/lib/typescript/modules/charts/DonutChart.d.ts +3 -0
- package/lib/typescript/modules/charts/LineChart.d.ts +30 -0
- package/lib/typescript/modules/charts/PieChart.d.ts +18 -0
- package/lib/typescript/modules/charts/index.d.ts +6 -0
- package/lib/typescript/modules/checkbox/Checkbox.d.ts +4 -1
- package/lib/typescript/modules/checkbox/Checkbox.variants.d.ts +14 -9
- package/lib/typescript/modules/chip/Chip.d.ts +38 -0
- package/lib/typescript/modules/chip/Chip.variants.d.ts +198 -0
- package/lib/typescript/modules/chip/ChipGroup.d.ts +22 -0
- package/lib/typescript/modules/chip/index.d.ts +12 -0
- package/lib/typescript/modules/combobox/Combobox.d.ts +81 -0
- package/lib/typescript/modules/combobox/Combobox.variants.d.ts +212 -0
- package/lib/typescript/modules/combobox/comboboxKeys.d.ts +25 -0
- package/lib/typescript/modules/combobox/comboboxKeys.web.d.ts +23 -0
- package/lib/typescript/modules/combobox/index.d.ts +11 -0
- package/lib/typescript/modules/composer/Composer.d.ts +28 -0
- package/lib/typescript/modules/composer/Composer.variants.d.ts +7 -0
- package/lib/typescript/modules/composer/index.d.ts +3 -0
- package/lib/typescript/modules/copy-button/CopyButton.d.ts +21 -0
- package/lib/typescript/modules/copy-button/CopyButton.variants.d.ts +42 -0
- package/lib/typescript/modules/copy-button/index.d.ts +4 -0
- package/lib/typescript/modules/data-table/DataTable.d.ts +44 -0
- package/lib/typescript/modules/data-table/DataTable.variants.d.ts +118 -0
- package/lib/typescript/modules/data-table/index.d.ts +9 -0
- package/lib/typescript/modules/date-picker/Calendar.d.ts +42 -0
- package/lib/typescript/modules/date-picker/Calendar.keys.d.ts +19 -0
- package/lib/typescript/modules/date-picker/Calendar.keys.web.d.ts +35 -0
- package/lib/typescript/modules/date-picker/DatePicker.d.ts +40 -0
- package/lib/typescript/modules/date-picker/DatePicker.variants.d.ts +322 -0
- package/lib/typescript/modules/date-picker/DateRangePicker.d.ts +32 -0
- package/lib/typescript/modules/date-picker/PickerField.d.ts +26 -0
- package/lib/typescript/modules/date-picker/PickerShell.d.ts +29 -0
- package/lib/typescript/modules/date-picker/TimePicker.d.ts +20 -0
- package/lib/typescript/modules/date-picker/index.d.ts +16 -0
- package/lib/typescript/modules/divider/Divider.variants.d.ts +2 -2
- package/lib/typescript/modules/drawer/Drawer.d.ts +2 -1
- package/lib/typescript/modules/drawer/Drawer.variants.d.ts +4 -13
- package/lib/typescript/modules/empty-state/EmptyState.d.ts +7 -4
- package/lib/typescript/modules/empty-state/EmptyState.variants.d.ts +7 -1
- package/lib/typescript/modules/fab/Fab.d.ts +74 -0
- package/lib/typescript/modules/fab/Fab.variants.d.ts +229 -0
- package/lib/typescript/modules/fab/FabGroup.d.ts +66 -0
- package/lib/typescript/modules/fab/index.d.ts +12 -0
- package/lib/typescript/modules/file-grid/FileGrid.d.ts +26 -0
- package/lib/typescript/modules/file-grid/FileGrid.variants.d.ts +26 -0
- package/lib/typescript/modules/file-grid/index.d.ts +4 -0
- package/lib/typescript/modules/file-upload/FileUpload.d.ts +3 -0
- package/lib/typescript/modules/file-upload/FileUpload.variants.d.ts +22 -5
- package/lib/typescript/modules/filter-sheet/FilterSheet.variants.d.ts +30 -5
- package/lib/typescript/modules/filter-sheet/FilterSheetBody.d.ts +13 -8
- package/lib/typescript/modules/folder-row/FolderRow.d.ts +24 -0
- package/lib/typescript/modules/folder-row/FolderRow.variants.d.ts +29 -0
- package/lib/typescript/modules/folder-row/index.d.ts +3 -0
- package/lib/typescript/modules/form-field/FormField.d.ts +29 -0
- package/lib/typescript/modules/form-field/FormField.variants.d.ts +93 -0
- package/lib/typescript/modules/form-field/index.d.ts +4 -0
- package/lib/typescript/modules/gantt/Gantt.d.ts +19 -0
- package/lib/typescript/modules/gantt/Gantt.variants.d.ts +82 -0
- package/lib/typescript/modules/gantt/index.d.ts +5 -0
- package/lib/typescript/modules/image-viewer/ImageViewer.d.ts +27 -0
- package/lib/typescript/modules/image-viewer/ImageViewer.variants.d.ts +3 -0
- package/lib/typescript/modules/image-viewer/index.d.ts +3 -0
- package/lib/typescript/modules/input/Input.d.ts +9 -1
- package/lib/typescript/modules/input/Input.variants.d.ts +26 -6
- package/lib/typescript/modules/limit-reached-modal/LimitReachedModal.d.ts +34 -0
- package/lib/typescript/modules/limit-reached-modal/LimitReachedModal.variants.d.ts +46 -0
- package/lib/typescript/modules/limit-reached-modal/index.d.ts +10 -0
- package/lib/typescript/modules/list-item/ListItem.d.ts +6 -0
- package/lib/typescript/modules/list-item/ListItem.variants.d.ts +1 -1
- package/lib/typescript/modules/markdown/Markdown.d.ts +6 -0
- package/lib/typescript/modules/markdown/Markdown.variants.d.ts +8 -2
- package/lib/typescript/modules/markdown/parseMarkdown.d.ts +3 -2
- package/lib/typescript/modules/menu/Menu.d.ts +8 -18
- package/lib/typescript/modules/menu/Menu.variants.d.ts +8 -1
- package/lib/typescript/modules/message-bubble/MessageBubble.d.ts +25 -0
- package/lib/typescript/modules/message-bubble/MessageBubble.variants.d.ts +31 -0
- package/lib/typescript/modules/message-bubble/index.d.ts +4 -0
- package/lib/typescript/modules/modal/Modal.d.ts +12 -0
- package/lib/typescript/modules/modal/Modal.variants.d.ts +1 -1
- package/lib/typescript/modules/more-items/MoreItems.d.ts +15 -0
- package/lib/typescript/modules/more-items/MoreItems.variants.d.ts +30 -0
- package/lib/typescript/modules/more-items/index.d.ts +4 -0
- package/lib/typescript/modules/multi-select/MultiSelect.d.ts +1 -16
- package/lib/typescript/modules/multi-select/MultiSelect.variants.d.ts +24 -5
- package/lib/typescript/modules/number-input/NumberInput.d.ts +6 -0
- package/lib/typescript/modules/number-input/NumberInput.variants.d.ts +57 -7
- package/lib/typescript/modules/org-switcher/OrgSwitcher.d.ts +44 -0
- package/lib/typescript/modules/org-switcher/OrgSwitcher.variants.d.ts +139 -0
- package/lib/typescript/modules/org-switcher/index.d.ts +8 -0
- package/lib/typescript/modules/pagination/Pagination.d.ts +45 -0
- package/lib/typescript/modules/pagination/Pagination.variants.d.ts +240 -0
- package/lib/typescript/modules/pagination/PaginationControls.d.ts +50 -0
- package/lib/typescript/modules/pagination/index.d.ts +14 -0
- package/lib/typescript/modules/pin-input/PinInput.d.ts +6 -0
- package/lib/typescript/modules/pin-input/PinInput.variants.d.ts +22 -5
- package/lib/typescript/modules/progress-bar/ProgressBar.d.ts +8 -4
- package/lib/typescript/modules/progress-bar/ProgressBar.variants.d.ts +13 -15
- package/lib/typescript/modules/radio-group/RadioGroup.d.ts +6 -0
- package/lib/typescript/modules/radio-group/RadioGroup.variants.d.ts +32 -11
- package/lib/typescript/modules/reorder/Reorder.d.ts +28 -23
- package/lib/typescript/modules/reorder/Reorder.variants.d.ts +25 -9
- package/lib/typescript/modules/rich-text/RichText.d.ts +15 -0
- package/lib/typescript/modules/rich-text/RichText.variants.d.ts +15 -0
- package/lib/typescript/modules/rich-text/index.d.ts +5 -0
- package/lib/typescript/modules/rich-text/parseRichText.d.ts +30 -0
- package/lib/typescript/modules/rich-text-editor/RichTextEditor.d.ts +62 -0
- package/lib/typescript/modules/rich-text-editor/RichTextEditor.variants.d.ts +139 -0
- package/lib/typescript/modules/rich-text-editor/index.d.ts +9 -0
- package/lib/typescript/modules/screen/Screen.d.ts +36 -0
- package/lib/typescript/modules/screen/Screen.variants.d.ts +21 -0
- package/lib/typescript/modules/screen/index.d.ts +9 -0
- package/lib/typescript/modules/search-bar/SearchBar.d.ts +47 -0
- package/lib/typescript/modules/search-bar/SearchBar.variants.d.ts +179 -0
- package/lib/typescript/modules/search-bar/index.d.ts +11 -0
- package/lib/typescript/modules/section/Section.d.ts +17 -0
- package/lib/typescript/modules/section/Section.variants.d.ts +12 -0
- package/lib/typescript/modules/section/index.d.ts +8 -0
- package/lib/typescript/modules/section-list/SectionList.d.ts +26 -0
- package/lib/typescript/modules/section-list/SectionList.variants.d.ts +3 -0
- package/lib/typescript/modules/section-list/index.d.ts +3 -0
- package/lib/typescript/modules/segmented-control/SegmentedControl.d.ts +45 -0
- package/lib/typescript/modules/segmented-control/SegmentedControl.variants.d.ts +143 -0
- package/lib/typescript/modules/segmented-control/index.d.ts +11 -0
- package/lib/typescript/modules/select/Select.d.ts +1 -14
- package/lib/typescript/modules/select/Select.variants.d.ts +24 -5
- package/lib/typescript/modules/skeleton/Skeleton.d.ts +5 -0
- package/lib/typescript/modules/skeleton/Skeleton.variants.d.ts +10 -9
- package/lib/typescript/modules/slider/Slider.variants.d.ts +35 -14
- package/lib/typescript/modules/spinner/Spinner.variants.d.ts +6 -4
- package/lib/typescript/modules/stage-progress/StageProgress.d.ts +18 -0
- package/lib/typescript/modules/stage-progress/StageProgress.variants.d.ts +98 -0
- package/lib/typescript/modules/stage-progress/index.d.ts +4 -0
- package/lib/typescript/modules/stat-tile/StatTile.d.ts +4 -0
- package/lib/typescript/modules/stat-tile/StatTile.variants.d.ts +7 -5
- package/lib/typescript/modules/state-block/StateBlock.d.ts +51 -0
- package/lib/typescript/modules/state-block/StateBlock.variants.d.ts +30 -0
- package/lib/typescript/modules/state-block/index.d.ts +10 -0
- package/lib/typescript/modules/stepper/Stepper.d.ts +4 -0
- package/lib/typescript/modules/stepper/Stepper.variants.d.ts +7 -7
- package/lib/typescript/modules/swipeable-row/SwipeableRow.d.ts +35 -0
- package/lib/typescript/modules/swipeable-row/SwipeableRow.variants.d.ts +27 -0
- package/lib/typescript/modules/swipeable-row/index.d.ts +4 -0
- package/lib/typescript/modules/switch/Switch.variants.d.ts +9 -1
- package/lib/typescript/modules/tabs/Tabs.d.ts +8 -6
- package/lib/typescript/modules/tabs/Tabs.variants.d.ts +20 -7
- package/lib/typescript/modules/text/Text.d.ts +23 -0
- package/lib/typescript/modules/text/Text.variants.d.ts +18 -0
- package/lib/typescript/modules/text/index.d.ts +4 -0
- package/lib/typescript/modules/textarea/Textarea.d.ts +5 -0
- package/lib/typescript/modules/textarea/Textarea.variants.d.ts +15 -8
- package/lib/typescript/modules/timeline/Timeline.d.ts +9 -13
- package/lib/typescript/modules/timeline/Timeline.variants.d.ts +17 -1
- package/lib/typescript/modules/toast/Toast.d.ts +13 -3
- package/lib/typescript/modules/toast/Toast.variants.d.ts +31 -3
- package/lib/typescript/modules/toast/index.d.ts +1 -1
- package/lib/typescript/modules/toast/toastScreenReader.d.ts +22 -0
- package/lib/typescript/modules/tooltip/Tooltip.d.ts +34 -11
- package/lib/typescript/modules/tooltip/Tooltip.variants.d.ts +4 -5
- package/lib/typescript/modules/typing-indicator/TypingIndicator.d.ts +28 -0
- package/lib/typescript/modules/typing-indicator/TypingIndicator.variants.d.ts +32 -0
- package/lib/typescript/modules/typing-indicator/index.d.ts +4 -0
- package/lib/typescript/modules/unread-badge/UnreadBadge.d.ts +15 -0
- package/lib/typescript/modules/unread-badge/UnreadBadge.variants.d.ts +56 -0
- package/lib/typescript/modules/unread-badge/index.d.ts +4 -0
- package/lib/typescript/test/mocks/flashList.d.ts +3 -0
- package/lib/typescript/test/perfHelpers.d.ts +9 -0
- package/lib/typescript/theme/hooks.d.ts +11 -0
- package/lib/typescript/theme/index.d.ts +3 -2
- package/lib/typescript/theme/platform/motion.native.d.ts +15 -0
- package/lib/typescript/theme/provider/PixelizeProvider.d.ts +3 -80
- package/lib/typescript/theme/provider/ThemeContext.d.ts +4 -0
- package/lib/typescript/theme/provider/index.d.ts +2 -1
- package/lib/typescript/theme/provider/loadPalette.d.ts +9 -0
- package/lib/typescript/theme/provider/types.d.ts +41 -0
- package/lib/typescript/theme/provider/useTheme.d.ts +1 -2
- package/lib/typescript/theme/provider/useThemeMode.d.ts +1 -1
- package/lib/typescript/theme/tokens/roles/index.d.ts +7 -0
- package/package.json +193 -19
- package/registry.json +172 -2
- package/lib/module/core/a11y/index.js.map +0 -1
- package/lib/module/core/icon/index.js.map +0 -1
- package/lib/module/core/style/index.js.map +0 -1
- package/lib/module/core/style/layoutStyle.js.map +0 -1
- package/lib/module/core/style/variants.js.map +0 -1
- package/lib/module/index.js.map +0 -1
- package/lib/module/modules/accordion/Accordion.js.map +0 -1
- package/lib/module/modules/accordion/Accordion.variants.js.map +0 -1
- package/lib/module/modules/accordion/index.js.map +0 -1
- package/lib/module/modules/alert-dialog/AlertDialog.js.map +0 -1
- package/lib/module/modules/alert-dialog/AlertDialog.variants.js.map +0 -1
- package/lib/module/modules/alert-dialog/index.js.map +0 -1
- package/lib/module/modules/avatar/Avatar.js.map +0 -1
- package/lib/module/modules/avatar/Avatar.variants.js.map +0 -1
- package/lib/module/modules/avatar/index.js.map +0 -1
- package/lib/module/modules/badge/Badge.js.map +0 -1
- package/lib/module/modules/badge/Badge.variants.js.map +0 -1
- package/lib/module/modules/badge/index.js.map +0 -1
- package/lib/module/modules/bottom-nav/BottomNav.js.map +0 -1
- package/lib/module/modules/bottom-nav/BottomNav.search.js.map +0 -1
- package/lib/module/modules/bottom-nav/BottomNav.variants.js.map +0 -1
- package/lib/module/modules/bottom-nav/BottomNavIconWithBadge.js.map +0 -1
- package/lib/module/modules/bottom-nav/BottomNavOverflowSheet.js.map +0 -1
- package/lib/module/modules/bottom-nav/index.js.map +0 -1
- package/lib/module/modules/button/Button.js.map +0 -1
- package/lib/module/modules/button/Button.variants.js.map +0 -1
- package/lib/module/modules/button/index.js.map +0 -1
- package/lib/module/modules/button-group/ButtonGroup.js.map +0 -1
- package/lib/module/modules/button-group/ButtonGroup.variants.js.map +0 -1
- package/lib/module/modules/button-group/index.js.map +0 -1
- package/lib/module/modules/card/Card.js.map +0 -1
- package/lib/module/modules/card/Card.variants.js.map +0 -1
- package/lib/module/modules/card/index.js.map +0 -1
- package/lib/module/modules/charts/BarList.js.map +0 -1
- package/lib/module/modules/charts/Charts.variants.js.map +0 -1
- package/lib/module/modules/charts/DonutChart.js.map +0 -1
- package/lib/module/modules/charts/Sparkline.js.map +0 -1
- package/lib/module/modules/charts/index.js.map +0 -1
- package/lib/module/modules/checkbox/Checkbox.js.map +0 -1
- package/lib/module/modules/checkbox/Checkbox.variants.js.map +0 -1
- package/lib/module/modules/checkbox/index.js.map +0 -1
- package/lib/module/modules/divider/Divider.js.map +0 -1
- package/lib/module/modules/divider/Divider.variants.js.map +0 -1
- package/lib/module/modules/divider/index.js.map +0 -1
- package/lib/module/modules/drawer/Drawer.js.map +0 -1
- package/lib/module/modules/drawer/Drawer.variants.js.map +0 -1
- package/lib/module/modules/drawer/index.js.map +0 -1
- package/lib/module/modules/empty-state/EmptyState.js.map +0 -1
- package/lib/module/modules/empty-state/EmptyState.variants.js.map +0 -1
- package/lib/module/modules/empty-state/index.js.map +0 -1
- package/lib/module/modules/file-upload/FileUpload.js.map +0 -1
- package/lib/module/modules/file-upload/FileUpload.variants.js.map +0 -1
- package/lib/module/modules/file-upload/index.js.map +0 -1
- package/lib/module/modules/filter-sheet/FilterChip.js.map +0 -1
- package/lib/module/modules/filter-sheet/FilterSheet.js.map +0 -1
- package/lib/module/modules/filter-sheet/FilterSheet.variants.js.map +0 -1
- package/lib/module/modules/filter-sheet/FilterSheetBody.js.map +0 -1
- package/lib/module/modules/filter-sheet/filterSheet.helpers.js.map +0 -1
- package/lib/module/modules/filter-sheet/index.js.map +0 -1
- package/lib/module/modules/input/Input.js.map +0 -1
- package/lib/module/modules/input/Input.variants.js.map +0 -1
- package/lib/module/modules/input/index.js.map +0 -1
- package/lib/module/modules/list-item/ListItem.js.map +0 -1
- package/lib/module/modules/list-item/ListItem.variants.js.map +0 -1
- package/lib/module/modules/list-item/index.js.map +0 -1
- package/lib/module/modules/markdown/Markdown.js.map +0 -1
- package/lib/module/modules/markdown/Markdown.variants.js.map +0 -1
- package/lib/module/modules/markdown/index.js.map +0 -1
- package/lib/module/modules/markdown/parseMarkdown.js.map +0 -1
- package/lib/module/modules/menu/Menu.js.map +0 -1
- package/lib/module/modules/menu/Menu.variants.js.map +0 -1
- package/lib/module/modules/menu/index.js.map +0 -1
- package/lib/module/modules/modal/Modal.js.map +0 -1
- package/lib/module/modules/modal/Modal.variants.js.map +0 -1
- package/lib/module/modules/modal/ModalPortalContext.js.map +0 -1
- package/lib/module/modules/modal/ModalPortalProvider.js.map +0 -1
- package/lib/module/modules/modal/index.js.map +0 -1
- package/lib/module/modules/modal/renderWebPortal.js.map +0 -1
- package/lib/module/modules/modal/renderWebPortal.web.js.map +0 -1
- package/lib/module/modules/multi-select/MultiSelect.js.map +0 -1
- package/lib/module/modules/multi-select/MultiSelect.variants.js.map +0 -1
- package/lib/module/modules/multi-select/index.js.map +0 -1
- package/lib/module/modules/number-input/NumberInput.js.map +0 -1
- package/lib/module/modules/number-input/NumberInput.variants.js.map +0 -1
- package/lib/module/modules/number-input/index.js.map +0 -1
- package/lib/module/modules/pin-input/PinInput.js.map +0 -1
- package/lib/module/modules/pin-input/PinInput.variants.js.map +0 -1
- package/lib/module/modules/pin-input/index.js.map +0 -1
- package/lib/module/modules/progress-bar/ProgressBar.js.map +0 -1
- package/lib/module/modules/progress-bar/ProgressBar.variants.js.map +0 -1
- package/lib/module/modules/progress-bar/index.js.map +0 -1
- package/lib/module/modules/radio-group/RadioGroup.js.map +0 -1
- package/lib/module/modules/radio-group/RadioGroup.variants.js.map +0 -1
- package/lib/module/modules/radio-group/index.js.map +0 -1
- package/lib/module/modules/reorder/Reorder.js.map +0 -1
- package/lib/module/modules/reorder/Reorder.variants.js.map +0 -1
- package/lib/module/modules/reorder/index.js.map +0 -1
- package/lib/module/modules/select/Select.js.map +0 -1
- package/lib/module/modules/select/Select.variants.js.map +0 -1
- package/lib/module/modules/select/index.js.map +0 -1
- package/lib/module/modules/skeleton/Skeleton.js.map +0 -1
- package/lib/module/modules/skeleton/Skeleton.variants.js.map +0 -1
- package/lib/module/modules/skeleton/index.js.map +0 -1
- package/lib/module/modules/slider/Slider.js.map +0 -1
- package/lib/module/modules/slider/Slider.variants.js.map +0 -1
- package/lib/module/modules/slider/index.js.map +0 -1
- package/lib/module/modules/spinner/Spinner.js.map +0 -1
- package/lib/module/modules/spinner/Spinner.variants.js.map +0 -1
- package/lib/module/modules/spinner/index.js.map +0 -1
- package/lib/module/modules/stat-tile/StatTile.js.map +0 -1
- package/lib/module/modules/stat-tile/StatTile.variants.js.map +0 -1
- package/lib/module/modules/stat-tile/index.js.map +0 -1
- package/lib/module/modules/stepper/Stepper.js.map +0 -1
- package/lib/module/modules/stepper/Stepper.variants.js.map +0 -1
- package/lib/module/modules/stepper/index.js.map +0 -1
- package/lib/module/modules/switch/Switch.js.map +0 -1
- package/lib/module/modules/switch/Switch.variants.js.map +0 -1
- package/lib/module/modules/switch/index.js.map +0 -1
- package/lib/module/modules/tabs/Tabs.js.map +0 -1
- package/lib/module/modules/tabs/Tabs.variants.js.map +0 -1
- package/lib/module/modules/tabs/index.js.map +0 -1
- package/lib/module/modules/textarea/Textarea.js.map +0 -1
- package/lib/module/modules/textarea/Textarea.variants.js.map +0 -1
- package/lib/module/modules/textarea/index.js.map +0 -1
- package/lib/module/modules/timeline/Timeline.js.map +0 -1
- package/lib/module/modules/timeline/Timeline.variants.js.map +0 -1
- package/lib/module/modules/timeline/index.js.map +0 -1
- package/lib/module/modules/toast/Toast.js.map +0 -1
- package/lib/module/modules/toast/Toast.variants.js.map +0 -1
- package/lib/module/modules/toast/index.js.map +0 -1
- package/lib/module/modules/tooltip/Tooltip.js.map +0 -1
- package/lib/module/modules/tooltip/Tooltip.variants.js.map +0 -1
- package/lib/module/modules/tooltip/index.js.map +0 -1
- package/lib/module/theme/index.js.map +0 -1
- package/lib/module/theme/platform/colorScheme.native.js.map +0 -1
- package/lib/module/theme/platform/elevation.native.js.map +0 -1
- package/lib/module/theme/platform/fonts.native.js.map +0 -1
- package/lib/module/theme/platform/index.js.map +0 -1
- package/lib/module/theme/platform/units.native.js.map +0 -1
- package/lib/module/theme/provider/PixelizeProvider.js.map +0 -1
- package/lib/module/theme/provider/colorModeStorage.js.map +0 -1
- package/lib/module/theme/provider/index.js.map +0 -1
- package/lib/module/theme/provider/useTheme.js.map +0 -1
- package/lib/module/theme/provider/useThemeColors.js.map +0 -1
- package/lib/module/theme/provider/useThemeMode.js.map +0 -1
- package/lib/module/theme/tokens/brands/emerald/palette.dark.js.map +0 -1
- package/lib/module/theme/tokens/brands/emerald/palette.light.js.map +0 -1
- package/lib/module/theme/tokens/brands/index.js.map +0 -1
- package/lib/module/theme/tokens/brands/lavender/palette.dark.js.map +0 -1
- package/lib/module/theme/tokens/brands/lavender/palette.light.js.map +0 -1
- package/lib/module/theme/tokens/brands/meadow/palette.dark.js.map +0 -1
- package/lib/module/theme/tokens/brands/meadow/palette.light.js.map +0 -1
- package/lib/module/theme/tokens/brands/radiant/palette.dark.js.map +0 -1
- package/lib/module/theme/tokens/brands/radiant/palette.light.js.map +0 -1
- package/lib/module/theme/tokens/brands/rosewood/palette.dark.js.map +0 -1
- package/lib/module/theme/tokens/brands/rosewood/palette.light.js.map +0 -1
- package/lib/module/theme/tokens/brands/skyline/palette.dark.js.map +0 -1
- package/lib/module/theme/tokens/brands/skyline/palette.light.js.map +0 -1
- package/lib/module/theme/tokens/brands/slate/palette.dark.js.map +0 -1
- package/lib/module/theme/tokens/brands/slate/palette.light.js.map +0 -1
- package/lib/module/theme/tokens/brands/storefront/palette.dark.js.map +0 -1
- package/lib/module/theme/tokens/brands/storefront/palette.light.js.map +0 -1
- package/lib/module/theme/tokens/brands/zinc/palette.dark.js.map +0 -1
- package/lib/module/theme/tokens/brands/zinc/palette.light.js.map +0 -1
- package/lib/module/theme/tokens/builders/accentText.js.map +0 -1
- package/lib/module/theme/tokens/builders/buildBrandTokens.js.map +0 -1
- package/lib/module/theme/tokens/builders/buildDarkPalette.js.map +0 -1
- package/lib/module/theme/tokens/builders/color.js.map +0 -1
- package/lib/module/theme/tokens/index.js.map +0 -1
- package/lib/module/theme/tokens/primitives/borderWidths.js.map +0 -1
- package/lib/module/theme/tokens/primitives/breakpoints.js.map +0 -1
- package/lib/module/theme/tokens/primitives/elevation.js.map +0 -1
- package/lib/module/theme/tokens/primitives/fontSizes.js.map +0 -1
- package/lib/module/theme/tokens/primitives/fontWeights.js.map +0 -1
- package/lib/module/theme/tokens/primitives/index.js.map +0 -1
- package/lib/module/theme/tokens/primitives/letterSpacings.js.map +0 -1
- package/lib/module/theme/tokens/primitives/lineHeights.js.map +0 -1
- package/lib/module/theme/tokens/primitives/radii.js.map +0 -1
- package/lib/module/theme/tokens/primitives/sizes.js.map +0 -1
- package/lib/module/theme/tokens/primitives/space.js.map +0 -1
- package/lib/module/theme/tokens/primitives/zIndices.js.map +0 -1
- package/lib/module/theme/tokens/roles/index.js.map +0 -1
- package/lib/module/theme/tokens/types.js.map +0 -1
- package/lib/typescript/core/a11y/index.d.ts.map +0 -1
- package/lib/typescript/core/icon/index.d.ts.map +0 -1
- package/lib/typescript/core/style/index.d.ts.map +0 -1
- package/lib/typescript/core/style/layoutStyle.d.ts.map +0 -1
- package/lib/typescript/core/style/variants.d.ts.map +0 -1
- package/lib/typescript/index.d.ts.map +0 -1
- package/lib/typescript/modules/accordion/Accordion.d.ts.map +0 -1
- package/lib/typescript/modules/accordion/Accordion.variants.d.ts.map +0 -1
- package/lib/typescript/modules/accordion/index.d.ts.map +0 -1
- package/lib/typescript/modules/alert-dialog/AlertDialog.d.ts.map +0 -1
- package/lib/typescript/modules/alert-dialog/AlertDialog.variants.d.ts.map +0 -1
- package/lib/typescript/modules/alert-dialog/index.d.ts.map +0 -1
- package/lib/typescript/modules/avatar/Avatar.d.ts.map +0 -1
- package/lib/typescript/modules/avatar/Avatar.variants.d.ts.map +0 -1
- package/lib/typescript/modules/avatar/index.d.ts.map +0 -1
- package/lib/typescript/modules/badge/Badge.d.ts.map +0 -1
- package/lib/typescript/modules/badge/Badge.variants.d.ts.map +0 -1
- package/lib/typescript/modules/badge/index.d.ts.map +0 -1
- package/lib/typescript/modules/bottom-nav/BottomNav.d.ts.map +0 -1
- package/lib/typescript/modules/bottom-nav/BottomNav.search.d.ts.map +0 -1
- package/lib/typescript/modules/bottom-nav/BottomNav.variants.d.ts.map +0 -1
- package/lib/typescript/modules/bottom-nav/BottomNavIconWithBadge.d.ts.map +0 -1
- package/lib/typescript/modules/bottom-nav/BottomNavOverflowSheet.d.ts.map +0 -1
- package/lib/typescript/modules/bottom-nav/index.d.ts.map +0 -1
- package/lib/typescript/modules/button/Button.d.ts.map +0 -1
- package/lib/typescript/modules/button/Button.variants.d.ts.map +0 -1
- package/lib/typescript/modules/button/index.d.ts.map +0 -1
- package/lib/typescript/modules/button-group/ButtonGroup.d.ts.map +0 -1
- package/lib/typescript/modules/button-group/ButtonGroup.variants.d.ts.map +0 -1
- package/lib/typescript/modules/button-group/index.d.ts.map +0 -1
- package/lib/typescript/modules/card/Card.d.ts.map +0 -1
- package/lib/typescript/modules/card/Card.variants.d.ts.map +0 -1
- package/lib/typescript/modules/card/index.d.ts.map +0 -1
- package/lib/typescript/modules/charts/BarList.d.ts.map +0 -1
- package/lib/typescript/modules/charts/Charts.variants.d.ts.map +0 -1
- package/lib/typescript/modules/charts/DonutChart.d.ts.map +0 -1
- package/lib/typescript/modules/charts/Sparkline.d.ts.map +0 -1
- package/lib/typescript/modules/charts/index.d.ts.map +0 -1
- package/lib/typescript/modules/checkbox/Checkbox.d.ts.map +0 -1
- package/lib/typescript/modules/checkbox/Checkbox.variants.d.ts.map +0 -1
- package/lib/typescript/modules/checkbox/index.d.ts.map +0 -1
- package/lib/typescript/modules/divider/Divider.d.ts.map +0 -1
- package/lib/typescript/modules/divider/Divider.variants.d.ts.map +0 -1
- package/lib/typescript/modules/divider/index.d.ts.map +0 -1
- package/lib/typescript/modules/drawer/Drawer.d.ts.map +0 -1
- package/lib/typescript/modules/drawer/Drawer.variants.d.ts.map +0 -1
- package/lib/typescript/modules/drawer/index.d.ts.map +0 -1
- package/lib/typescript/modules/empty-state/EmptyState.d.ts.map +0 -1
- package/lib/typescript/modules/empty-state/EmptyState.variants.d.ts.map +0 -1
- package/lib/typescript/modules/empty-state/index.d.ts.map +0 -1
- package/lib/typescript/modules/file-upload/FileUpload.d.ts.map +0 -1
- package/lib/typescript/modules/file-upload/FileUpload.variants.d.ts.map +0 -1
- package/lib/typescript/modules/file-upload/index.d.ts.map +0 -1
- package/lib/typescript/modules/filter-sheet/FilterChip.d.ts.map +0 -1
- package/lib/typescript/modules/filter-sheet/FilterSheet.d.ts.map +0 -1
- package/lib/typescript/modules/filter-sheet/FilterSheet.variants.d.ts.map +0 -1
- package/lib/typescript/modules/filter-sheet/FilterSheetBody.d.ts.map +0 -1
- package/lib/typescript/modules/filter-sheet/filterSheet.helpers.d.ts.map +0 -1
- package/lib/typescript/modules/filter-sheet/index.d.ts.map +0 -1
- package/lib/typescript/modules/input/Input.d.ts.map +0 -1
- package/lib/typescript/modules/input/Input.variants.d.ts.map +0 -1
- package/lib/typescript/modules/input/index.d.ts.map +0 -1
- package/lib/typescript/modules/list-item/ListItem.d.ts.map +0 -1
- package/lib/typescript/modules/list-item/ListItem.variants.d.ts.map +0 -1
- package/lib/typescript/modules/list-item/index.d.ts.map +0 -1
- package/lib/typescript/modules/markdown/Markdown.d.ts.map +0 -1
- package/lib/typescript/modules/markdown/Markdown.variants.d.ts.map +0 -1
- package/lib/typescript/modules/markdown/index.d.ts.map +0 -1
- package/lib/typescript/modules/markdown/parseMarkdown.d.ts.map +0 -1
- package/lib/typescript/modules/menu/Menu.d.ts.map +0 -1
- package/lib/typescript/modules/menu/Menu.variants.d.ts.map +0 -1
- package/lib/typescript/modules/menu/index.d.ts.map +0 -1
- package/lib/typescript/modules/modal/Modal.d.ts.map +0 -1
- package/lib/typescript/modules/modal/Modal.variants.d.ts.map +0 -1
- package/lib/typescript/modules/modal/ModalPortalContext.d.ts.map +0 -1
- package/lib/typescript/modules/modal/ModalPortalProvider.d.ts.map +0 -1
- package/lib/typescript/modules/modal/index.d.ts.map +0 -1
- package/lib/typescript/modules/modal/renderWebPortal.d.ts.map +0 -1
- package/lib/typescript/modules/modal/renderWebPortal.web.d.ts.map +0 -1
- package/lib/typescript/modules/multi-select/MultiSelect.d.ts.map +0 -1
- package/lib/typescript/modules/multi-select/MultiSelect.variants.d.ts.map +0 -1
- package/lib/typescript/modules/multi-select/index.d.ts.map +0 -1
- package/lib/typescript/modules/number-input/NumberInput.d.ts.map +0 -1
- package/lib/typescript/modules/number-input/NumberInput.variants.d.ts.map +0 -1
- package/lib/typescript/modules/number-input/index.d.ts.map +0 -1
- package/lib/typescript/modules/pin-input/PinInput.d.ts.map +0 -1
- package/lib/typescript/modules/pin-input/PinInput.variants.d.ts.map +0 -1
- package/lib/typescript/modules/pin-input/index.d.ts.map +0 -1
- package/lib/typescript/modules/progress-bar/ProgressBar.d.ts.map +0 -1
- package/lib/typescript/modules/progress-bar/ProgressBar.variants.d.ts.map +0 -1
- package/lib/typescript/modules/progress-bar/index.d.ts.map +0 -1
- package/lib/typescript/modules/radio-group/RadioGroup.d.ts.map +0 -1
- package/lib/typescript/modules/radio-group/RadioGroup.variants.d.ts.map +0 -1
- package/lib/typescript/modules/radio-group/index.d.ts.map +0 -1
- package/lib/typescript/modules/reorder/Reorder.d.ts.map +0 -1
- package/lib/typescript/modules/reorder/Reorder.variants.d.ts.map +0 -1
- package/lib/typescript/modules/reorder/index.d.ts.map +0 -1
- package/lib/typescript/modules/select/Select.d.ts.map +0 -1
- package/lib/typescript/modules/select/Select.variants.d.ts.map +0 -1
- package/lib/typescript/modules/select/index.d.ts.map +0 -1
- package/lib/typescript/modules/skeleton/Skeleton.d.ts.map +0 -1
- package/lib/typescript/modules/skeleton/Skeleton.variants.d.ts.map +0 -1
- package/lib/typescript/modules/skeleton/index.d.ts.map +0 -1
- package/lib/typescript/modules/slider/Slider.d.ts.map +0 -1
- package/lib/typescript/modules/slider/Slider.variants.d.ts.map +0 -1
- package/lib/typescript/modules/slider/index.d.ts.map +0 -1
- package/lib/typescript/modules/spinner/Spinner.d.ts.map +0 -1
- package/lib/typescript/modules/spinner/Spinner.variants.d.ts.map +0 -1
- package/lib/typescript/modules/spinner/index.d.ts.map +0 -1
- package/lib/typescript/modules/stat-tile/StatTile.d.ts.map +0 -1
- package/lib/typescript/modules/stat-tile/StatTile.variants.d.ts.map +0 -1
- package/lib/typescript/modules/stat-tile/index.d.ts.map +0 -1
- package/lib/typescript/modules/stepper/Stepper.d.ts.map +0 -1
- package/lib/typescript/modules/stepper/Stepper.variants.d.ts.map +0 -1
- package/lib/typescript/modules/stepper/index.d.ts.map +0 -1
- package/lib/typescript/modules/switch/Switch.d.ts.map +0 -1
- package/lib/typescript/modules/switch/Switch.variants.d.ts.map +0 -1
- package/lib/typescript/modules/switch/index.d.ts.map +0 -1
- package/lib/typescript/modules/tabs/Tabs.d.ts.map +0 -1
- package/lib/typescript/modules/tabs/Tabs.variants.d.ts.map +0 -1
- package/lib/typescript/modules/tabs/index.d.ts.map +0 -1
- package/lib/typescript/modules/textarea/Textarea.d.ts.map +0 -1
- package/lib/typescript/modules/textarea/Textarea.variants.d.ts.map +0 -1
- package/lib/typescript/modules/textarea/index.d.ts.map +0 -1
- package/lib/typescript/modules/timeline/Timeline.d.ts.map +0 -1
- package/lib/typescript/modules/timeline/Timeline.variants.d.ts.map +0 -1
- package/lib/typescript/modules/timeline/index.d.ts.map +0 -1
- package/lib/typescript/modules/toast/Toast.d.ts.map +0 -1
- package/lib/typescript/modules/toast/Toast.variants.d.ts.map +0 -1
- package/lib/typescript/modules/toast/index.d.ts.map +0 -1
- package/lib/typescript/modules/tooltip/Tooltip.d.ts.map +0 -1
- package/lib/typescript/modules/tooltip/Tooltip.variants.d.ts.map +0 -1
- package/lib/typescript/modules/tooltip/index.d.ts.map +0 -1
- package/lib/typescript/theme/index.d.ts.map +0 -1
- package/lib/typescript/theme/platform/colorScheme.native.d.ts.map +0 -1
- package/lib/typescript/theme/platform/elevation.native.d.ts.map +0 -1
- package/lib/typescript/theme/platform/fonts.native.d.ts.map +0 -1
- package/lib/typescript/theme/platform/index.d.ts.map +0 -1
- package/lib/typescript/theme/platform/units.native.d.ts.map +0 -1
- package/lib/typescript/theme/provider/PixelizeProvider.d.ts.map +0 -1
- package/lib/typescript/theme/provider/colorModeStorage.d.ts.map +0 -1
- package/lib/typescript/theme/provider/index.d.ts.map +0 -1
- package/lib/typescript/theme/provider/useTheme.d.ts.map +0 -1
- package/lib/typescript/theme/provider/useThemeColors.d.ts.map +0 -1
- package/lib/typescript/theme/provider/useThemeMode.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/brands/emerald/palette.dark.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/brands/emerald/palette.light.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/brands/index.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/brands/lavender/palette.dark.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/brands/lavender/palette.light.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/brands/meadow/palette.dark.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/brands/meadow/palette.light.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/brands/radiant/palette.dark.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/brands/radiant/palette.light.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/brands/rosewood/palette.dark.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/brands/rosewood/palette.light.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/brands/skyline/palette.dark.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/brands/skyline/palette.light.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/brands/slate/palette.dark.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/brands/slate/palette.light.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/brands/storefront/palette.dark.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/brands/storefront/palette.light.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/brands/zinc/palette.dark.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/brands/zinc/palette.light.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/builders/accentText.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/builders/buildBrandTokens.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/builders/buildDarkPalette.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/builders/color.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/index.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/primitives/borderWidths.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/primitives/breakpoints.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/primitives/elevation.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/primitives/fontSizes.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/primitives/fontWeights.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/primitives/index.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/primitives/letterSpacings.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/primitives/lineHeights.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/primitives/radii.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/primitives/sizes.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/primitives/space.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/primitives/zIndices.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/roles/index.d.ts.map +0 -1
- package/lib/typescript/theme/tokens/types.d.ts.map +0 -1
|
@@ -6,6 +6,12 @@
|
|
|
6
6
|
* backdrop scrim dismisses it on press; the panel sits on `bg.surface` with `theme.radii.lg` and
|
|
7
7
|
* `theme.elevation.lg`, capped to one of three closed widths (`size`).
|
|
8
8
|
*
|
|
9
|
+
* Motion split: RN's own `animationType` owns the SURFACE fade (in AND out, natively, with no JS
|
|
10
|
+
* timer), and the global motion system (`core/motion`) owns the panel's own entrance lift. The exit
|
|
11
|
+
* is deliberately left to the native transition — a JS-timed exit would have to keep the `<Modal>`
|
|
12
|
+
* mounted past `visible`, widening the window in which iOS drops a sibling `<Modal>` presented while
|
|
13
|
+
* this one is dismissing.
|
|
14
|
+
*
|
|
9
15
|
* Fully controlled: the caller owns `visible` and reacts to `onRequestClose`, which fires from the
|
|
10
16
|
* backdrop press, the Android hardware back button, and — via `onAccessibilityEscape` on the panel
|
|
11
17
|
* — iOS VoiceOver's two-finger-Z escape gesture. (RN's `<Modal>` only fires `onRequestClose` from a
|
|
@@ -19,12 +25,19 @@
|
|
|
19
25
|
* `renderWebPortal` instead — see `ModalPortalContext.ts` for why. Every other case (native, or web
|
|
20
26
|
* with no provider — the default `ModalPortalContext` value is `null`) renders through RN's own
|
|
21
27
|
* `<Modal>`, byte-identical to before this mechanism existed.
|
|
28
|
+
*
|
|
29
|
+
* Physical-keyboard support is scoped to exactly that portal branch. `react-native-web`'s own
|
|
30
|
+
* `<Modal>` already ships Escape, a Tab trap and focus restore (`ModalContent`/`ModalFocusTrap`),
|
|
31
|
+
* so the RNModal path below must stay untouched — wiring the hooks there too would give the page
|
|
32
|
+
* two Escape listeners and two competing traps. The portal branch renders no `<RNModal>` at all,
|
|
33
|
+
* which is where all three silently went missing.
|
|
22
34
|
*/
|
|
23
35
|
|
|
24
|
-
import { memo, useContext } from "react";
|
|
25
|
-
import { Modal as RNModal, Platform, Pressable, StyleSheet, Text, View } from "react-native";
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
36
|
+
import { memo, useContext, useEffect, useMemo, useRef } from "react";
|
|
37
|
+
import { Animated, Modal as RNModal, Platform, Pressable, StyleSheet, Text, View } from "react-native";
|
|
38
|
+
import { useDismissOnEscape, useFocusTrap } from "../../core/a11y/keyboard";
|
|
39
|
+
import { useAnimatedValue, useMotion } from "../../core/motion/index.js";
|
|
40
|
+
import { useTheme } from "../../theme/hooks.js";
|
|
28
41
|
import { ModalPortalContext } from "./ModalPortalContext.js";
|
|
29
42
|
import { renderWebPortal } from "./renderWebPortal";
|
|
30
43
|
import { modalOverlayStructure, modalPanelStructure, resolveModalAnimationType, resolveModalPanelColors } from "./Modal.variants.js";
|
|
@@ -42,42 +55,73 @@ export const Modal = /*#__PURE__*/memo(function Modal({
|
|
|
42
55
|
testID
|
|
43
56
|
}) {
|
|
44
57
|
const theme = useTheme();
|
|
45
|
-
const
|
|
46
|
-
const panelColors = resolveModalPanelColors(theme.colors);
|
|
58
|
+
const motion = useMotion();
|
|
59
|
+
const panelColors = useMemo(() => resolveModalPanelColors(theme.colors), [theme.colors]);
|
|
47
60
|
const portalContainer = useContext(ModalPortalContext);
|
|
61
|
+
const panelRef = useRef(null);
|
|
62
|
+
const portalled = Platform.OS === "web" && portalContainer != null;
|
|
63
|
+
useDismissOnEscape(portalled && visible, onRequestClose);
|
|
64
|
+
useFocusTrap(panelRef, portalled && visible);
|
|
65
|
+
const enter = useAnimatedValue(visible ? 1 : 0);
|
|
66
|
+
const entering = useRef(null);
|
|
67
|
+
useEffect(() => {
|
|
68
|
+
entering.current?.stop();
|
|
69
|
+
if (!visible) {
|
|
70
|
+
enter.setValue(0);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (!motion.enabled) {
|
|
74
|
+
enter.setValue(1);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
enter.setValue(0);
|
|
78
|
+
entering.current = motion.timing(enter, 1, {
|
|
79
|
+
easing: "decelerate"
|
|
80
|
+
});
|
|
81
|
+
entering.current.start();
|
|
82
|
+
}, [visible, motion, enter]);
|
|
83
|
+
useEffect(() => () => entering.current?.stop(), []);
|
|
84
|
+
const panelStyle = useMemo(() => [modalPanelStructure(theme, {
|
|
85
|
+
size
|
|
86
|
+
}), {
|
|
87
|
+
backgroundColor: panelColors.background,
|
|
88
|
+
transform: [{
|
|
89
|
+
translateY: enter.interpolate({
|
|
90
|
+
inputRange: [0, 1],
|
|
91
|
+
outputRange: [motion.transform.offsetY, 0]
|
|
92
|
+
})
|
|
93
|
+
}]
|
|
94
|
+
}], [theme, size, panelColors.background, enter, motion.transform.offsetY]);
|
|
95
|
+
const titleStyle = useMemo(() => [theme.fontStyleForWeight(theme.fontWeights.semibold), {
|
|
96
|
+
fontSize: theme.fontSizes.lg,
|
|
97
|
+
color: panelColors.title,
|
|
98
|
+
marginBottom: theme.space[3]
|
|
99
|
+
}], [theme, panelColors.title]);
|
|
48
100
|
const overlay = /*#__PURE__*/_jsxs(_Fragment, {
|
|
49
101
|
children: [/*#__PURE__*/_jsx(Pressable, {
|
|
50
102
|
testID: testID ? `${testID}-backdrop` : undefined,
|
|
51
103
|
accessible: false,
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}],
|
|
104
|
+
tabIndex: -1,
|
|
105
|
+
style: styles.backdrop,
|
|
55
106
|
onPress: onRequestClose
|
|
56
107
|
}), /*#__PURE__*/_jsx(View, {
|
|
57
108
|
style: modalOverlayStructure(theme),
|
|
58
109
|
pointerEvents: "box-none",
|
|
59
|
-
children: /*#__PURE__*/_jsxs(View, {
|
|
110
|
+
children: /*#__PURE__*/_jsxs(Animated.View, {
|
|
111
|
+
ref: panelRef,
|
|
60
112
|
testID: testID ? `${testID}-panel` : undefined,
|
|
61
113
|
accessibilityViewIsModal: true,
|
|
62
114
|
onAccessibilityEscape: onRequestClose,
|
|
63
|
-
style:
|
|
64
|
-
size
|
|
65
|
-
}), {
|
|
66
|
-
backgroundColor: panelColors.background
|
|
67
|
-
}],
|
|
115
|
+
style: panelStyle,
|
|
68
116
|
children: [title !== undefined && /*#__PURE__*/_jsx(Text, {
|
|
69
117
|
accessibilityRole: "header",
|
|
70
|
-
style:
|
|
71
|
-
fontSize: theme.fontSizes.lg,
|
|
72
|
-
color: panelColors.title,
|
|
73
|
-
marginBottom: theme.space[3]
|
|
74
|
-
}],
|
|
118
|
+
style: titleStyle,
|
|
75
119
|
children: title
|
|
76
120
|
}), children]
|
|
77
121
|
})
|
|
78
122
|
})]
|
|
79
123
|
});
|
|
80
|
-
if (
|
|
124
|
+
if (portalled) {
|
|
81
125
|
if (!visible) return null;
|
|
82
126
|
// RN's own <Modal> supplies a `position: fixed`/full-screen ancestor for `overlay`'s children
|
|
83
127
|
// to size against (see ModalPortalContext.ts) — reproduce just that sizing here (never touching
|
|
@@ -93,9 +137,15 @@ export const Modal = /*#__PURE__*/memo(function Modal({
|
|
|
93
137
|
return /*#__PURE__*/_jsx(RNModal, {
|
|
94
138
|
visible: visible,
|
|
95
139
|
transparent: true,
|
|
96
|
-
animationType: resolveModalAnimationType(
|
|
140
|
+
animationType: resolveModalAnimationType(!motion.enabled),
|
|
97
141
|
onRequestClose: onRequestClose,
|
|
98
142
|
children: overlay
|
|
99
143
|
});
|
|
100
144
|
});
|
|
145
|
+
const styles = StyleSheet.create({
|
|
146
|
+
backdrop: {
|
|
147
|
+
...StyleSheet.absoluteFill,
|
|
148
|
+
backgroundColor: MODAL_BACKDROP
|
|
149
|
+
}
|
|
150
|
+
});
|
|
101
151
|
//# sourceMappingURL=Modal.js.map
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# more-items/ — a "+N more" overflow affordance
|
|
2
|
+
|
|
3
|
+
`MoreItems` is a `Pressable` "+N more" badge (with optional leading text) that opens a `Modal` sheet
|
|
4
|
+
listing the hidden items, each with an optional tone dot. It is the overflow tail for any capped
|
|
5
|
+
row — assignees, tags, labels — so a caller renders the first few itself and hands the rest here.
|
|
6
|
+
|
|
7
|
+
Fully controlled and store-agnostic: `items` and `moreCount` come from the host, and the component
|
|
8
|
+
owns nothing but its open/closed state.
|
|
9
|
+
|
|
10
|
+
## Files
|
|
11
|
+
|
|
12
|
+
| File | Role |
|
|
13
|
+
|------|------|
|
|
14
|
+
| `MoreItems.tsx` | The component: trigger, `Modal` sheet, and the memo'd `MoreItemsRow`. |
|
|
15
|
+
| `MoreItems.variants.ts` | Pure `resolveMoreItemsCount` / `resolveMoreItemsDotColor` (tone reuses `Badge`'s tone table) + the themed structural resolvers. No React. |
|
|
16
|
+
| `index.ts` | Public surface: `MoreItems`, `MoreItemsProps`, `MoreItemsEntry`. |
|
|
17
|
+
| `__tests__/MoreItems.test.ts` | Pure: the count fallback (`moreCount` wins over `items.length`). |
|
|
18
|
+
| `__tests__/MoreItems.render.test.tsx` | Render: the trigger opens the sheet, the entries show, the real rendered touch-target size, label-in-name, modal semantics, and the hidden tone dot. |
|
|
19
|
+
|
|
20
|
+
## Props
|
|
21
|
+
|
|
22
|
+
| Prop | Type | Default | Notes |
|
|
23
|
+
|------|------|---------|-------|
|
|
24
|
+
| `items` | `readonly MoreItemsEntry[]` | — | `{ id, label, tone? }`; `tone` is a `BadgeTone`, defaulting to `accent`. |
|
|
25
|
+
| `moreCount` | `number` | `items.length` | The number on the badge when it differs from the list length. |
|
|
26
|
+
| `triggerText` | `string` | — | Optional text before the badge. Rendered alone when the count is ≤0. |
|
|
27
|
+
| `style` | `LayoutStyle` | — | Layout-only, outermost, applied exactly once, last. |
|
|
28
|
+
| `testID` | `string` | — | Trigger gets it directly. Also seeds `${testID}-sheet`, `${testID}-backdrop`, `${testID}-list` and `${testID}-row-${item.id}` (+ `-dot` under that). |
|
|
29
|
+
|
|
30
|
+
Renders `null` when the count is ≤0 and there is no `triggerText` — nothing to overflow.
|
|
31
|
+
|
|
32
|
+
## Accessibility
|
|
33
|
+
|
|
34
|
+
- **Touch target (WCAG 2.5.5 / 2.5.8)** — the trigger carries `minHeight: 44` (this library's
|
|
35
|
+
floor). It is a standalone node with no neighbouring target to overlap, so the floor is real
|
|
36
|
+
height via `minHeight`, not `hitSlop` expansion the way `Button`'s shorter sizes reach it.
|
|
37
|
+
- **Label in Name (WCAG 2.5.3)** — the accessible name is built to CONTAIN the visible text
|
|
38
|
+
(`"${triggerText} +${count} more"`, or just `"+${count} more"` with no leading text), not a
|
|
39
|
+
separately-worded `"${count} more items"`. Voice control says what it reads; the old name shared no
|
|
40
|
+
full word with what was on screen.
|
|
41
|
+
- **Modal semantics** — the sheet panel carries `accessibilityViewIsModal` + `onAccessibilityEscape`,
|
|
42
|
+
the same pair every other overlay in this library gives its panel, and an `accessibilityLabel`
|
|
43
|
+
matching the trigger's name. The scrim `Pressable` is `accessible={false}` + `tabIndex={-1}` so it
|
|
44
|
+
doesn't surface as an unlabelled full-screen button ahead of the sheet.
|
|
45
|
+
- **Colour as sole carrier (WCAG 1.4.1)** — a row's tone dot has no text equivalent for its colour, so
|
|
46
|
+
it is `accessibilityElementsHidden` + `importantForAccessibility="no-hide-descendants"`; the row
|
|
47
|
+
itself is one `accessible` node with `accessibilityRole="text"` reading only the label.
|
|
48
|
+
|
|
49
|
+
## Performance contract
|
|
50
|
+
|
|
51
|
+
- The sheet's list is `core/list`'s `VirtualList`, not a `ScrollView` + `.map()`: `items` is
|
|
52
|
+
caller-supplied and unbounded, so a long overflow list would otherwise mount every row at once.
|
|
53
|
+
**No `itemHeight`** is passed — a row's height is text-driven (it grows with the OS font scale),
|
|
54
|
+
so a fixed `getItemLayout` would mis-position the scroll offset.
|
|
55
|
+
- `MoreItemsRow` is extracted + `React.memo`'d; `renderItem`/`keyExtractor` are `useCallback`s.
|
|
56
|
+
- Every `*Structure(theme)` result, `resolveMoreItemsDotColor` call and style array literal is
|
|
57
|
+
`useMemo`'d on `[theme]` (plus `[item.tone]` in the row) — a fresh object per render defeats the
|
|
58
|
+
row's `memo`.
|
|
59
|
+
|
|
60
|
+
## Motion (`core/motion` only — never a local duration)
|
|
61
|
+
|
|
62
|
+
- **Press** — the trigger uses `usePressMotion`, applied to an inner `Animated.View` so the
|
|
63
|
+
consumer's `style` stays on the outermost node.
|
|
64
|
+
- **Sheet** — `useEnterExit(open)` on the panel; the `Modal` keeps `visible={open}` with
|
|
65
|
+
`animationType="none"` so the library owns the reveal and the sheet fully unmounts when closed.
|
|
66
|
+
- Rows carry no motion of their own: they are not interactive, and per-row animation must never run
|
|
67
|
+
during scroll.
|
|
68
|
+
|
|
69
|
+
## Known gaps
|
|
70
|
+
|
|
71
|
+
- Rows are display-only — no press/selection. A selectable overflow list would be a different
|
|
72
|
+
component (`Select`/`Menu`), not a prop added here.
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* MoreItems — "+N more" overflow affordance opening a sheet of hidden items (avatars, tags, etc.).
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { memo, useCallback, useMemo, useState } from "react";
|
|
8
|
+
import { Animated, Modal, Pressable, StyleSheet, Text, View } from "react-native";
|
|
9
|
+
import { VirtualList } from "../../core/list/index.js";
|
|
10
|
+
import { useEnterExit, usePressMotion } from "../../core/motion/index.js";
|
|
11
|
+
import { useTheme } from "../../theme/hooks.js";
|
|
12
|
+
import { moreItemsBadgeStructure, moreItemsDotStructure, moreItemsOverlayStructure, moreItemsRowStructure, moreItemsSheetStructure, moreItemsTriggerContentStructure, moreItemsTriggerStructure, resolveMoreItemsCount, resolveMoreItemsDotColor } from "./MoreItems.variants.js";
|
|
13
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
14
|
+
const BACKDROP = "#00000080";
|
|
15
|
+
const MoreItemsRow = /*#__PURE__*/memo(function MoreItemsRow({
|
|
16
|
+
item,
|
|
17
|
+
theme,
|
|
18
|
+
testID
|
|
19
|
+
}) {
|
|
20
|
+
const rowStructure = useMemo(() => moreItemsRowStructure(theme), [theme]);
|
|
21
|
+
const dotStyle = useMemo(() => [moreItemsDotStructure(theme), {
|
|
22
|
+
backgroundColor: resolveMoreItemsDotColor(theme.colors, item.tone)
|
|
23
|
+
}], [theme, item.tone]);
|
|
24
|
+
const labelStyle = useMemo(() => [theme.fontStyleForWeight(theme.fontWeights.regular), {
|
|
25
|
+
fontSize: theme.fontSizes.sm,
|
|
26
|
+
color: theme.colors.fg.muted,
|
|
27
|
+
flex: 1
|
|
28
|
+
}], [theme]);
|
|
29
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
30
|
+
testID: testID,
|
|
31
|
+
accessible: true,
|
|
32
|
+
accessibilityRole: "text",
|
|
33
|
+
style: rowStructure,
|
|
34
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
35
|
+
testID: testID === undefined ? undefined : `${testID}-dot`,
|
|
36
|
+
style: dotStyle,
|
|
37
|
+
accessibilityElementsHidden: true,
|
|
38
|
+
importantForAccessibility: "no-hide-descendants"
|
|
39
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
40
|
+
numberOfLines: 1,
|
|
41
|
+
style: labelStyle,
|
|
42
|
+
children: item.label
|
|
43
|
+
})]
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
export const MoreItems = /*#__PURE__*/memo(function MoreItems({
|
|
47
|
+
items,
|
|
48
|
+
moreCount,
|
|
49
|
+
triggerText,
|
|
50
|
+
style,
|
|
51
|
+
testID
|
|
52
|
+
}) {
|
|
53
|
+
const theme = useTheme();
|
|
54
|
+
const [open, setOpen] = useState(false);
|
|
55
|
+
const press = usePressMotion();
|
|
56
|
+
const sheetMotion = useEnterExit(open);
|
|
57
|
+
const count = resolveMoreItemsCount(moreCount, items.length);
|
|
58
|
+
const openSheet = useCallback(() => setOpen(true), []);
|
|
59
|
+
const closeSheet = useCallback(() => setOpen(false), []);
|
|
60
|
+
const emptyTextStyle = useMemo(() => [theme.fontStyleForWeight(theme.fontWeights.regular), {
|
|
61
|
+
color: theme.colors.fg.default
|
|
62
|
+
}], [theme]);
|
|
63
|
+
const triggerStyle = useMemo(() => [moreItemsTriggerStructure(theme), style], [theme, style]);
|
|
64
|
+
const triggerContentStructure = useMemo(() => moreItemsTriggerContentStructure(theme), [theme]);
|
|
65
|
+
const triggerTextStyle = useMemo(() => [theme.fontStyleForWeight(theme.fontWeights.regular), {
|
|
66
|
+
fontSize: theme.fontSizes.sm,
|
|
67
|
+
color: theme.colors.fg.default,
|
|
68
|
+
flexShrink: 1
|
|
69
|
+
}], [theme]);
|
|
70
|
+
const badgeStyle = useMemo(() => [theme.fontStyleForWeight(theme.fontWeights.semibold), moreItemsBadgeStructure(theme), {
|
|
71
|
+
color: theme.colors.accent.text,
|
|
72
|
+
backgroundColor: theme.colors.accent.subtle
|
|
73
|
+
}], [theme]);
|
|
74
|
+
const overlayStructure = useMemo(() => moreItemsOverlayStructure(theme), [theme]);
|
|
75
|
+
const sheetStyle = useMemo(() => [moreItemsSheetStructure(theme), {
|
|
76
|
+
backgroundColor: theme.colors.bg.surface
|
|
77
|
+
}], [theme]);
|
|
78
|
+
|
|
79
|
+
// WCAG 2.5.3: the accessible name must CONTAIN the visible text, or a voice-control user saying
|
|
80
|
+
// what they can read ("tap plus three more") never activates the trigger.
|
|
81
|
+
const accessibleName = triggerText === undefined ? `+${count} more` : `${triggerText} +${count} more`;
|
|
82
|
+
const keyExtractor = useCallback(item => item.id, []);
|
|
83
|
+
const renderItem = useCallback(({
|
|
84
|
+
item
|
|
85
|
+
}) => /*#__PURE__*/_jsx(MoreItemsRow, {
|
|
86
|
+
item: item,
|
|
87
|
+
theme: theme,
|
|
88
|
+
testID: testID === undefined ? undefined : `${testID}-row-${item.id}`
|
|
89
|
+
}), [theme, testID]);
|
|
90
|
+
if (count <= 0) {
|
|
91
|
+
return triggerText ? /*#__PURE__*/_jsx(Text, {
|
|
92
|
+
style: emptyTextStyle,
|
|
93
|
+
children: triggerText
|
|
94
|
+
}) : null;
|
|
95
|
+
}
|
|
96
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
97
|
+
children: [/*#__PURE__*/_jsx(Pressable, {
|
|
98
|
+
testID: testID,
|
|
99
|
+
accessibilityRole: "button",
|
|
100
|
+
accessibilityLabel: accessibleName,
|
|
101
|
+
accessibilityHint: "Opens the full list",
|
|
102
|
+
onPress: openSheet,
|
|
103
|
+
onPressIn: press.onPressIn,
|
|
104
|
+
onPressOut: press.onPressOut,
|
|
105
|
+
style: triggerStyle,
|
|
106
|
+
children: /*#__PURE__*/_jsxs(Animated.View, {
|
|
107
|
+
style: [triggerContentStructure, press.style],
|
|
108
|
+
children: [triggerText !== undefined && /*#__PURE__*/_jsx(Text, {
|
|
109
|
+
numberOfLines: 1,
|
|
110
|
+
style: triggerTextStyle,
|
|
111
|
+
children: triggerText
|
|
112
|
+
}), /*#__PURE__*/_jsxs(Text, {
|
|
113
|
+
style: badgeStyle,
|
|
114
|
+
children: ["+", count, " more"]
|
|
115
|
+
})]
|
|
116
|
+
})
|
|
117
|
+
}), /*#__PURE__*/_jsxs(Modal, {
|
|
118
|
+
visible: open,
|
|
119
|
+
transparent: true,
|
|
120
|
+
animationType: "none",
|
|
121
|
+
onRequestClose: closeSheet,
|
|
122
|
+
children: [/*#__PURE__*/_jsx(Pressable, {
|
|
123
|
+
testID: testID === undefined ? undefined : `${testID}-backdrop`
|
|
124
|
+
// Otherwise the scrim is an unlabelled full-screen button sitting ahead of the sheet.
|
|
125
|
+
,
|
|
126
|
+
accessible: false,
|
|
127
|
+
tabIndex: -1,
|
|
128
|
+
style: StyleSheet.absoluteFill,
|
|
129
|
+
onPress: closeSheet,
|
|
130
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
131
|
+
style: styles.backdrop
|
|
132
|
+
})
|
|
133
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
134
|
+
style: overlayStructure,
|
|
135
|
+
pointerEvents: "box-none",
|
|
136
|
+
children: /*#__PURE__*/_jsx(Animated.View, {
|
|
137
|
+
testID: testID ? `${testID}-sheet` : undefined
|
|
138
|
+
// The modal-semantics pair every other overlay in this library gives its panel, plus a
|
|
139
|
+
// name: the sheet had neither, so VoiceOver could wander into the row behind it.
|
|
140
|
+
,
|
|
141
|
+
accessibilityViewIsModal: true,
|
|
142
|
+
onAccessibilityEscape: closeSheet,
|
|
143
|
+
accessibilityLabel: accessibleName,
|
|
144
|
+
style: [sheetStyle, sheetMotion.style],
|
|
145
|
+
children: /*#__PURE__*/_jsx(VirtualList, {
|
|
146
|
+
data: items,
|
|
147
|
+
keyExtractor: keyExtractor,
|
|
148
|
+
renderItem: renderItem,
|
|
149
|
+
testID: testID === undefined ? undefined : `${testID}-list`
|
|
150
|
+
})
|
|
151
|
+
})
|
|
152
|
+
})]
|
|
153
|
+
})]
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
const styles = StyleSheet.create({
|
|
157
|
+
backdrop: {
|
|
158
|
+
...StyleSheet.absoluteFill,
|
|
159
|
+
backgroundColor: BACKDROP
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
//# sourceMappingURL=MoreItems.js.map
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { createThemedVariants } from "../../core/style/index.js";
|
|
4
|
+
import { resolveBadgeTone } from "../badge/Badge.variants.js";
|
|
5
|
+
export function resolveMoreItemsCount(moreCount, itemsLength) {
|
|
6
|
+
return moreCount ?? itemsLength;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/** Tone dot beside each overflow label. */
|
|
10
|
+
export const MORE_ITEMS_DOT_SIZE = 8;
|
|
11
|
+
|
|
12
|
+
/** The sheet never grows past this — the list inside it scrolls (and virtualizes). */
|
|
13
|
+
export const MORE_ITEMS_SHEET_MAX_HEIGHT = 280;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* 44dp is Apple's HIG minimum and WCAG 2.5.5 (AAA); it comfortably exceeds 2.5.8's 24×24 (AA). The
|
|
17
|
+
* trigger reaches it with `minHeight` rather than `hitSlop`: it is a standalone node with no
|
|
18
|
+
* neighbouring target to overlap, and a slop-expanded rectangle would still leave a ~22dp visual
|
|
19
|
+
* control that misses under an unsteady finger.
|
|
20
|
+
*/
|
|
21
|
+
export const MIN_TOUCH_TARGET = 44;
|
|
22
|
+
export const moreItemsTriggerStructure = createThemedVariants(_theme => ({
|
|
23
|
+
base: {
|
|
24
|
+
maxWidth: 250,
|
|
25
|
+
minHeight: MIN_TOUCH_TARGET,
|
|
26
|
+
justifyContent: "center"
|
|
27
|
+
}
|
|
28
|
+
}));
|
|
29
|
+
|
|
30
|
+
/** The trigger's animated layer: press motion moves the content, never the outer layout box. */
|
|
31
|
+
export const moreItemsTriggerContentStructure = createThemedVariants(_theme => ({
|
|
32
|
+
base: {
|
|
33
|
+
flexDirection: "row",
|
|
34
|
+
alignItems: "center"
|
|
35
|
+
}
|
|
36
|
+
}));
|
|
37
|
+
|
|
38
|
+
/** Overflow-list row. Height is text-driven (font scaling), so the list gets no fixed itemHeight. */
|
|
39
|
+
export const moreItemsRowStructure = createThemedVariants(theme => ({
|
|
40
|
+
base: {
|
|
41
|
+
flexDirection: "row",
|
|
42
|
+
alignItems: "center",
|
|
43
|
+
columnGap: theme.space[2],
|
|
44
|
+
paddingVertical: theme.space[1]
|
|
45
|
+
}
|
|
46
|
+
}));
|
|
47
|
+
export const moreItemsDotStructure = createThemedVariants(theme => ({
|
|
48
|
+
base: {
|
|
49
|
+
width: MORE_ITEMS_DOT_SIZE,
|
|
50
|
+
height: MORE_ITEMS_DOT_SIZE,
|
|
51
|
+
borderRadius: theme.radii.full
|
|
52
|
+
}
|
|
53
|
+
}));
|
|
54
|
+
export const moreItemsOverlayStructure = createThemedVariants(theme => ({
|
|
55
|
+
base: {
|
|
56
|
+
flex: 1,
|
|
57
|
+
justifyContent: "center",
|
|
58
|
+
padding: theme.space[4]
|
|
59
|
+
}
|
|
60
|
+
}));
|
|
61
|
+
export const moreItemsSheetStructure = createThemedVariants(theme => ({
|
|
62
|
+
base: {
|
|
63
|
+
borderRadius: theme.radii.lg,
|
|
64
|
+
padding: theme.space[3],
|
|
65
|
+
maxHeight: MORE_ITEMS_SHEET_MAX_HEIGHT
|
|
66
|
+
}
|
|
67
|
+
}));
|
|
68
|
+
export const moreItemsBadgeStructure = createThemedVariants(theme => ({
|
|
69
|
+
base: {
|
|
70
|
+
marginLeft: theme.space[1],
|
|
71
|
+
paddingHorizontal: theme.space[2],
|
|
72
|
+
paddingVertical: 2,
|
|
73
|
+
borderRadius: theme.radii.full,
|
|
74
|
+
fontSize: theme.fontSizes.xs
|
|
75
|
+
}
|
|
76
|
+
}));
|
|
77
|
+
export function resolveMoreItemsDotColor(colors, tone = "accent") {
|
|
78
|
+
return resolveBadgeTone(colors, tone).text;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=MoreItems.variants.js.map
|
|
@@ -18,11 +18,13 @@ context + a stateless helper with no React-tree footprint of its own, not a depe
|
|
|
18
18
|
|
|
19
19
|
| File | Role |
|
|
20
20
|
|------|------|
|
|
21
|
-
| `MultiSelect.tsx` | The component. Trigger + `Modal` composition, open/close state, immediate per-row toggling, focus handling. |
|
|
21
|
+
| `MultiSelect.tsx` | The component. Trigger + `Modal` composition, open/close state, immediate per-row toggling, focus handling. Option list is `core/list`'s `VirtualList` (device-tier windowing over FlashList-or-FlatList), built only while `open`. |
|
|
22
22
|
| `MultiSelect.variants.ts` | Pure resolvers (`MULTI_SELECT_SIZES`, `resolveMultiSelectTriggerColors`, `resolveMultiSelectRowColors`, `resolveMultiSelectAccessibility`) + the themed structural resolvers (`multiSelectTriggerStructure`, `multiSelectOverlayStructure`, `multiSelectSheetStructure`, `multiSelectHeaderStructure`, `multiSelectCloseButtonStructure`, `multiSelectRowStructure`, `multiSelectRowIndicatorStructure`). No React, no lucide. |
|
|
23
23
|
| `index.ts` | Public surface: `MultiSelect`, `MultiSelectProps`, `MultiSelectOption`, `MultiSelectSize`. |
|
|
24
24
|
| `__tests__/MultiSelect.test.ts` | Pure: WCAG contrast (all brands × modes) + touch target + a11y contract. |
|
|
25
|
-
| `__tests__/MultiSelect.render.test.tsx` | Render: trigger summary text, open/close, disabled gating, immediate toggling, per-row `checked` state, backdrop + close-button dismissal, and the web-portal opt-in branch (mocking `renderWebPortal`). |
|
|
25
|
+
| `__tests__/MultiSelect.render.test.tsx` | Render: trigger summary text, open/close, disabled gating, immediate toggling, per-row `checked` state, backdrop + close-button dismissal, the row's resolved 44dp `minHeight`, and the web-portal opt-in branch (mocking `renderWebPortal`). |
|
|
26
|
+
| `__tests__/MultiSelect.keyboard.test.tsx` | Web keyboard: roving tabindex, arrows/Home/End, Space toggling, Escape — plus that the identity-stable `toggleValue` still reads the latest `values`. |
|
|
27
|
+
| `__tests__/MultiSelect.motion.test.tsx` | Reduce-motion (WCAG 2.3.3): indicator check and press feedback snap to their final values, and `Animated.timing` is never called. |
|
|
26
28
|
|
|
27
29
|
## Props
|
|
28
30
|
|
|
@@ -36,7 +38,7 @@ context + a stateless helper with no React-tree footprint of its own, not a depe
|
|
|
36
38
|
| `disabled` | `boolean` | `false` | Blocks opening the sheet; dimmed like Select's disabled state. |
|
|
37
39
|
| `size` | `sm \| md \| lg` | `md` | 32 / 40 / 48 dp; short sizes reach 44 via `hitSlop`. |
|
|
38
40
|
| `containerStyle` | `LayoutStyle` | — | Layout-only, outermost, applied exactly once, last. |
|
|
39
|
-
| `testID` | `string` | — | Also seeds `${testID}-backdrop`, `${testID}-close`, and `${testID}-option-${value}
|
|
41
|
+
| `testID` | `string` | — | Also seeds `${testID}-backdrop`, `${testID}-close`, and `${testID}-option-${value}` (+ `-content` / `-check` on that row's animated nodes). |
|
|
40
42
|
|
|
41
43
|
No `icon` prop — the chevron/check/close glyphs are fixed to the component's own semantics, not
|
|
42
44
|
caller-configurable.
|
|
@@ -53,22 +55,25 @@ caller-configurable.
|
|
|
53
55
|
- **2.5.x target size** — the trigger reaches ≥ 44dp via `hitSlop` at every size; option rows have a
|
|
54
56
|
44dp `minHeight` directly (list items, not slop-expandable); the header close button reaches 44dp
|
|
55
57
|
via `hitSlop`.
|
|
56
|
-
- **4.1.2** — the trigger is `accessibilityRole="button"` with `
|
|
57
|
-
|
|
58
|
+
- **4.1.2** — the trigger is `accessibilityRole="button"` with flat `aria-expanded` tracking whether
|
|
59
|
+
the sheet is showing (never `accessibilityState={{…}}` — react-native-web discards the object
|
|
60
|
+
form, see `docs/PLATFORM-A11Y-PROPS.md`).
|
|
58
61
|
- **1.4.3** — trigger value/placeholder text, the field label, and option-row labels are measured
|
|
59
62
|
≥ 4.5:1 against their own fill (`bg.canvas` for the label, `bg.surface` for the trigger and every
|
|
60
63
|
row — row fill is constant across selection, see below).
|
|
61
64
|
- **1.4.11** — the trigger boundary (`border.interactive`, `border.focus` while focused/open), the
|
|
62
65
|
row indicator's unchecked outline, and its checked fill are each measured ≥ 3:1 against the sheet
|
|
63
66
|
fill.
|
|
64
|
-
- Each option row is `accessibilityRole="checkbox"` with `
|
|
65
|
-
|
|
66
|
-
|
|
67
|
+
- Each option row is `accessibilityRole="checkbox"` with flat `aria-checked`, toggled immediately on
|
|
68
|
+
press — the indicator box (outline when unchecked, `accent.solid` fill + "check" glyph when
|
|
69
|
+
checked) is the sighted echo of the same state, never the only signal.
|
|
67
70
|
- The header close button is `accessibilityRole="button"` with a fixed `accessibilityLabel="Close"`
|
|
68
71
|
(icon-only, hardcoded — not a caller-configurable slot); its icon shares the row label's colour
|
|
69
72
|
pairing, already measured ≥ 3:1 (in practice ≥ 4.5:1) on the sheet fill.
|
|
70
|
-
- **2.3.3** —
|
|
71
|
-
|
|
73
|
+
- **2.3.3** — RN's `Modal animationType` is always `"none"`; the reveal is `core/motion`'s
|
|
74
|
+
`useReveal`, which snaps to the final state (no tween) under reduce-motion. Row press feedback
|
|
75
|
+
and the indicator's check fade go through the same `motion.enabled` gate. Covered by
|
|
76
|
+
`__tests__/MultiSelect.motion.test.tsx`.
|
|
72
77
|
- Disabled is exempt from the contrast minimum (WCAG 1.4.3) — like Select, it's signalled by a
|
|
73
78
|
uniform `opacity: 0.5` dim rather than a separate, still-must-pass colour pair.
|
|
74
79
|
|
|
@@ -82,19 +87,80 @@ caller-configurable.
|
|
|
82
87
|
`accent.solid` / `accent.onSolid`) — duplicated locally, not imported: modules never import
|
|
83
88
|
across `src/modules/*`.
|
|
84
89
|
4. **Closed-ish surface** — `size` is a closed union; `options`/`values`/`onValuesChange` are the
|
|
85
|
-
data contract a multi-select inherently needs, not a colour escape hatch.
|
|
86
|
-
|
|
87
|
-
|
|
90
|
+
data contract a multi-select inherently needs, not a colour escape hatch. `containerStyle` is the
|
|
91
|
+
one `style` exception (a component wrapping a native primitive's outer box), not a second `style` prop.
|
|
92
|
+
|
|
93
|
+
## Keyboard (web)
|
|
94
|
+
|
|
95
|
+
Wired to `core/a11y/keyboard` (all no-ops on native). The option list is **one tab stop**: exactly one
|
|
96
|
+
row carries `tabIndex={0}` (`focusItemProps`) and the arrows / Home / End / typeahead move it
|
|
97
|
+
(`useRovingKeys` on the sheet, capture phase). Opening lands it on the **first **selected** option, not the
|
|
98
|
+
first (WCAG 2.4.3). Each row focuses itself when it becomes active — the tabindex alone only names
|
|
99
|
+
the tab stop, and `useFocusTrap` needs the focused node to still be tabbable or Tab escapes the
|
|
100
|
+
sheet. `useFocusTrap` also restores focus to the trigger on close; `useDismissOnEscape` closes on
|
|
101
|
+
Escape.
|
|
102
|
+
|
|
103
|
+
**`useRovingKeys` gets no `onActivate`.** RNW already presses a row on Enter, and Space is
|
|
104
|
+
supplied per row by `useSpaceActivation` (RNW's `isValidKeyPress` needs a `button` tag/role, which
|
|
105
|
+
`checkbox` deliberately is not) — passing `onActivate` too would toggle twice, i.e. not at all.
|
|
106
|
+
|
|
107
|
+
The list container is `MULTI_SELECT_LISTBOX_ROLE`: RN 0.86's role unions have no `listbox`, so the
|
|
108
|
+
widening is one audited cast in `MultiSelect.variants.ts` rather than a cast at the call site.
|
|
88
109
|
|
|
89
110
|
## Known gaps
|
|
90
111
|
|
|
91
|
-
- No search/filter — matches the spec this module was built against
|
|
92
|
-
separate module, not
|
|
93
|
-
- No per-option `disabled` — every row is togglable whenever the sheet is open; not requested by
|
|
94
|
-
this module's spec.
|
|
112
|
+
- No search/filter, no per-option `disabled` — matches the spec this module was built against; a
|
|
113
|
+
future `Combobox` would be a separate module, not props added here (closed-prop-contract).
|
|
95
114
|
- The trigger's focus ring is a border-colour swap (`border.focus`), same convention `Select`
|
|
96
115
|
documents as provisional pending a dedicated `Input` focus-ring reconciliation.
|
|
116
|
+
- The trigger summarises selection as text ("N selected"), not chips/tokens — so there is no
|
|
117
|
+
add/remove chip motion. A chip surface would be a new API, not a prop added here.
|
|
97
118
|
|
|
98
119
|
## Performance
|
|
99
120
|
|
|
100
|
-
Wrapped in `React.memo` (repo-wide re-render audit, 2026-07-17 — see root `CLAUDE.md`).
|
|
121
|
+
Wrapped in `React.memo` (repo-wide re-render audit, 2026-07-17 — see root `CLAUDE.md`). The option
|
|
122
|
+
list is a `VirtualList`, not a full `.map()` in a `ScrollView` — a large roster only mounts rows near the
|
|
123
|
+
viewport — and the sheet is built only while `open`. Rows get `bg.sunken` press feedback
|
|
124
|
+
(`pressedRow`, same non-`bg.hover` reasoning as `RadioGroup`/`Accordion`), measured in `MultiSelect.test.ts`.
|
|
125
|
+
|
|
126
|
+
### Re-render contract (what keeps `MultiSelectOptionRow`'s `memo` alive)
|
|
127
|
+
|
|
128
|
+
- **Membership is O(1)** — `values` becomes a `useMemo`'d `Set`, so `renderItem` no longer runs
|
|
129
|
+
`values.includes(...)` per row (O(n·m) across the list).
|
|
130
|
+
- `resolveMultiSelect*Colors` / `resolveMultiSelectAccessibility` and the `multiSelect*Structure(theme)`
|
|
131
|
+
resolvers are `useMemo`'d on their real inputs. `rowColors` is a row prop — unmemoized it
|
|
132
|
+
re-rendered every visible row on any parent render, making the row memo dead.
|
|
133
|
+
- The single-selection `options.find(...)` is `useMemo`'d; `renderItem`/`keyExtractor`/`toggleValue`
|
|
134
|
+
and the focus/blur handlers are `useCallback`'d.
|
|
135
|
+
- **`toggleValue` reads `values` through a ref, so its identity never changes.** As a dependency it
|
|
136
|
+
was re-created on every toggle (`values` necessarily changes), which defeated `React.memo` on
|
|
137
|
+
*every* mounted row rather than just the one whose `checked` flipped. Virtualization caps that at
|
|
138
|
+
~10-20 wasted row renders per tap, each re-running four `useMemo`s — small, but free to remove.
|
|
139
|
+
`renderItem`'s own dependency on `selectedValues` is correct and stays.
|
|
140
|
+
- **`MultiSelectOption.leading` is rendered into a fixed slot** (`multiSelectRowLeadingStructure`).
|
|
141
|
+
An unconstrained consumer node could make a row taller than 44dp and falsify the list's
|
|
142
|
+
`getItemLayout` offsets; the slot keeps the uniform fast path true by construction.
|
|
143
|
+
- Style arrays feeding hot nodes (root container, trigger, sheet, header, label/value text) are
|
|
144
|
+
`useMemo`'d; the backdrop is a static `StyleSheet` entry. Inside the row, the row and indicator
|
|
145
|
+
structures are memoized so the `Pressable` style callback doesn't rebuild them per press-state flip.
|
|
146
|
+
|
|
147
|
+
## Motion
|
|
148
|
+
|
|
149
|
+
Via `core/motion` only — `opacity`/`transform`, native driver, all reduce-motion aware.
|
|
150
|
+
|
|
151
|
+
- **Row press** — `usePressMotion()`; the row's content `Animated.View` (which carries
|
|
152
|
+
`multiSelectRowStructure`, including the 44dp `minHeight`) scales/dips, while the `Pressable` keeps
|
|
153
|
+
the `pressedRow` background. `scale` is a transform, so the row's hit area is unaffected.
|
|
154
|
+
- **Indicator check glyph** — fades on toggle, but a row that mounts already-checked (scrolled into
|
|
155
|
+
view) snaps: a `skipFirst` ref suppresses the first effect run, so nothing animates during
|
|
156
|
+
scrolling. The indicator's own border/fill colours still flip instantly (colour is never animated).
|
|
157
|
+
- **Sheet reveal** — `useReveal(open)` on the inner sheet panel, the no-state variant: the subtree is
|
|
158
|
+
gated on `open` — the same flag `<Modal visible>` uses — so there is no second source of truth to
|
|
159
|
+
disagree with it, and no extra render per open/close. See `select/MODULE.md`'s Motion section for
|
|
160
|
+
why `useEnterExit`'s `mounted` gate was dropped; `Select`/`Combobox` use the identical gate.
|
|
161
|
+
- No chip/token UI on the trigger, so there is nothing to animate there (see Known gaps).
|
|
162
|
+
|
|
163
|
+
## Modernization (v1.0.7)
|
|
164
|
+
|
|
165
|
+
- Theme imports decoupled to `theme/hooks`; optional peers (reanimated, gesture-handler, flash-list) load at runtime.
|
|
166
|
+
- List-heavy surfaces use `VirtualList` with device-tier window sizing where applicable.
|