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
|
@@ -4,9 +4,13 @@ Cross-cutting mechanism every module imports. No feature logic, no components.
|
|
|
4
4
|
|
|
5
5
|
| Folder | Purpose | Docs |
|
|
6
6
|
|--------|---------|------|
|
|
7
|
-
| `style/` | `LayoutStyle` + the variant resolver (below) | this file |
|
|
8
|
-
| `icon/` | shared lucide icon registry (`IconName`, `Icon
|
|
7
|
+
| `style/` | `LayoutStyle` + the variant resolver (below) + `sx()` (spacing/flex shorthand, below) — published as `pixelize-native-library/style` | this file |
|
|
8
|
+
| `icon/` | shared lucide icon registry (`IconName`, `Icon`; 56 glyphs) — hoisted out of `modules/button/` so every one of the 39 shipped modules reuses one registry instead of re-declaring its own | `icon/MODULE.md` |
|
|
9
9
|
| `a11y/` | shared accessibility hooks (`useReducedMotion`) — hoisted out of `modules/button/` for the same reason | `a11y/MODULE.md` |
|
|
10
|
+
| `device/` | the `low \| mid \| high` device tier every motion and list-window decision reads | `device/MODULE.md` |
|
|
11
|
+
| `motion/` | the single global animation gate (`useMotion`, `config.ts`, the preset hooks) | `motion/MODULE.md` |
|
|
12
|
+
| `list/` | `VirtualList` / `VirtualSectionList` — the one windowed list every list-bearing module renders through (FlashList when the peer is installed, FlatList otherwise) | this file |
|
|
13
|
+
| `heading/` | `HeadingText`/`HeadingView` (typed `aria-level`) + `HEADING_LEVEL` — the fixed level every `accessibilityRole="header"` site needs so `react-native-web` doesn't render it as `<h1>` | `heading/MODULE.md` |
|
|
10
14
|
|
|
11
15
|
## Escape-hatch doctrine
|
|
12
16
|
|
|
@@ -15,12 +19,11 @@ size** a component without being able to **restyle** it — a component whose ap
|
|
|
15
19
|
override is a component we can never change.
|
|
16
20
|
|
|
17
21
|
The narrowness is measured, not assumed. Across 906 real library usages in 4 web apps: `style=` **0**,
|
|
18
|
-
`className=` **1** (
|
|
19
|
-
|
|
22
|
+
`className=` **1** (dead code), `sx=` **16** — a 1.9% escape hatch. Width/height was **13.9%**, and
|
|
23
|
+
every one of those was a *declared prop*. Consumers need sizing, not restyling.
|
|
20
24
|
|
|
21
25
|
So `style` is typed `LayoutStyle`: margin, width/height, flex, alignSelf. `Pick`, never `Omit` — an
|
|
22
|
-
`Omit` would silently admit each key React Native adds to `ViewStyle` on a version bump
|
|
23
|
-
guarantee with no change to our code.
|
|
26
|
+
`Omit` would silently admit each key React Native adds to `ViewStyle` on a version bump.
|
|
24
27
|
|
|
25
28
|
The escape hatch that actually matters on RN is **`useThemeColors()` returning resolved values** —
|
|
26
29
|
`placeholderTextColor`, `android_ripple`, SVG `fill`, and React Navigation chrome accept no token
|
|
@@ -28,20 +31,18 @@ object. Reach for that, never for a style prop.
|
|
|
28
31
|
|
|
29
32
|
## Containment invariants
|
|
30
33
|
|
|
31
|
-
1. **`style` appears exactly once** —
|
|
34
|
+
1. **`style` appears exactly once** — outermost node, **last** in the array, so layout wins.
|
|
32
35
|
2. **No `{...rest}`. Ever.** A rest spread re-opens every prop the allowlist just closed.
|
|
33
36
|
3. **Internals never receive consumer style** — no `labelStyle`, no `iconStyle`, no `slotProps`.
|
|
34
37
|
4. **Icons take a name, not a node** — `icon?: IconName`, so an app cannot inject arbitrary UI.
|
|
35
|
-
5. **Colour is never a prop; tone is** — `tone="danger"`, never `color="#a00"`.
|
|
36
|
-
closed union (`variant` / `size` / `tone`).
|
|
38
|
+
5. **Colour is never a prop; tone is** — `tone="danger"`, never `color="#a00"`.
|
|
37
39
|
|
|
38
40
|
**The one exception:** a component wrapping a native primitive (`TextInput`) may expose
|
|
39
|
-
`containerStyle?: LayoutStyle` for the outer box only
|
|
40
|
-
Never `inputStyle`.
|
|
41
|
+
`containerStyle?: LayoutStyle` for the outer box only. Never `inputStyle`.
|
|
41
42
|
|
|
42
43
|
## Variant resolver
|
|
43
44
|
|
|
44
|
-
In-house, zero dependency — this
|
|
45
|
+
In-house, zero dependency — this is why NativeWind / Unistyles / Tamagui were rejected.
|
|
45
46
|
|
|
46
47
|
```ts
|
|
47
48
|
const buttonVariants = createThemedVariants((theme: Theme) => ({
|
|
@@ -51,21 +52,15 @@ const buttonVariants = createThemedVariants((theme: Theme) => ({
|
|
|
51
52
|
size: { sm: { height: 32 }, md: { height: 40 } },
|
|
52
53
|
},
|
|
53
54
|
defaultVariants: { variant: "solid", size: "md" },
|
|
54
|
-
compoundVariants: [{ when: { variant: "outline", size: "sm" }, style: { borderWidth: 2 } }],
|
|
55
55
|
}));
|
|
56
56
|
|
|
57
57
|
// The prop type is DERIVED — adding a variant above widens it with no second declaration.
|
|
58
58
|
type ButtonProps = VariantProps<typeof buttonVariants> & { style?: LayoutStyle };
|
|
59
|
-
|
|
60
|
-
const Button = ({ variant, size, style }: ButtonProps) => {
|
|
61
|
-
const theme = useTheme();
|
|
62
|
-
return <Pressable style={[buttonVariants(theme, { variant, size }), style]} />;
|
|
63
|
-
};
|
|
64
59
|
```
|
|
65
60
|
|
|
66
|
-
Resolution order is `base` → variant groups **in config order** → matching compounds
|
|
67
|
-
|
|
68
|
-
|
|
61
|
+
Resolution order is `base` → variant groups **in config order** → matching compounds. Consumer
|
|
62
|
+
`style` is appended by the component (invariant 1) — the resolver never takes it, so it can never
|
|
63
|
+
leak to an internal node.
|
|
69
64
|
|
|
70
65
|
| Export | Output |
|
|
71
66
|
|--------|--------|
|
|
@@ -73,22 +68,120 @@ component (invariant 1) — the resolver never takes it, so it can never leak to
|
|
|
73
68
|
| `createTextVariants` / `createThemedTextVariants` | `StyleProp<TextStyle>` |
|
|
74
69
|
| `variantFactory<S>()` / `themedVariantFactory<S>()` | bind another style kind (e.g. `ImageStyle`) |
|
|
75
70
|
|
|
76
|
-
The factories are curried
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
`
|
|
71
|
+
The factories are curried (TS has no partial type-argument inference) — fixes `S`, leaves `V` inferred.
|
|
72
|
+
|
|
73
|
+
**Caching:** static configs (`createVariants`) flatten to one named sheet, registered in
|
|
74
|
+
`StyleSheet.create` **eagerly at module load**. Themed configs (`createThemedVariants`) can't do
|
|
75
|
+
that — theme-dependent values change with brand/mode — so the sheet compiles on **first use per
|
|
76
|
+
theme** and is cached in a `WeakMap` keyed by theme **identity**. This requires the provider to hand
|
|
77
|
+
out a stable theme object per (brand, mode); a theme rebuilt every render would recompile every sheet
|
|
78
|
+
every render.
|
|
80
79
|
|
|
81
|
-
|
|
80
|
+
## `sx()` — spacing/flex shorthand for app screens
|
|
82
81
|
|
|
83
|
-
|
|
82
|
+
Orthogonal to the escape-hatch doctrine above (which governs what a **consumer app can pass into a
|
|
83
|
+
library component**). `sx()` is the opposite direction: a plain function an app (or internal
|
|
84
|
+
component) calls to **build its own `ViewStyle`** without hand-writing padding/margin/gap numbers.
|
|
84
85
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
render, and a retired theme's sheet is garbage-collectable.
|
|
91
|
-
- **This requires the provider to hand out a stable theme object per (brand, mode).** A theme rebuilt
|
|
92
|
-
every render would recompile every sheet every render — correct output, silently terrible perf.
|
|
86
|
+
```ts
|
|
87
|
+
import { sx } from "pixelize-native-library/style";
|
|
88
|
+
|
|
89
|
+
<View style={sx({ row: true, gap: 2, px: 4, align: "center" })}>
|
|
90
|
+
```
|
|
93
91
|
|
|
94
|
-
|
|
92
|
+
Deliberately narrow — spacing (`p`/`m`/`gap` families) and flex (`row`, `wrap`, `align`, `justify`,
|
|
93
|
+
`center`, `flex`/`grow`/`shrink`/`self`) only. No color, no typography, no borders — those stay on
|
|
94
|
+
`useThemeColors()` and the variant resolver above.
|
|
95
|
+
|
|
96
|
+
`p`/`m`/`gap` (and directional variants) take an `SxSpaceToken`, an 8-step subset (0–32dp) of the
|
|
97
|
+
full 17-step `SpaceToken` scale, curated to real spacing use — sizing (avatar/icon dimensions) is a
|
|
98
|
+
different scale on purpose. Call it inline for a one-off, or hoist into `StyleSheet.create`/`useMemo`
|
|
99
|
+
for anything reused or passed to a `React.memo`'d child — a fresh `sx()` result every render defeats
|
|
100
|
+
that child's memoization.
|
|
101
|
+
|
|
102
|
+
**Frozen in dev** (`__DEV__` only, zero cost in prod): a hoisted `sx()` result is a *shared* object,
|
|
103
|
+
so `styles.header.gap = 4` would silently corrupt it for every caller — freezing catches that early.
|
|
104
|
+
Spreading (`{ ...sx({...}), extra: 1 }`) is unaffected — spread always produces a fresh object.
|
|
105
|
+
|
|
106
|
+
## `list/` — VirtualList
|
|
107
|
+
|
|
108
|
+
One windowed list for all 15 list-bearing modules. Device-tier window sizing (`core/device`),
|
|
109
|
+
FlashList when the optional peer resolves, FlatList otherwise. `resolveFlashList()` returns `null`
|
|
110
|
+
under Jest by design, so **only the FlatList branch is test-coverable** — the FlashList branch is
|
|
111
|
+
asserted by nothing except its tier→`drawDistance` mapping
|
|
112
|
+
(`__tests__/VirtualList.tuning.test.ts`).
|
|
113
|
+
|
|
114
|
+
**The two branches do not take the same props.** Verified against `@shopify/flash-list@2.3.2`:
|
|
115
|
+
`getItemLayout`, `initialNumToRender`, `maxToRenderPerBatch` and `updateCellsBatchingPeriod` have
|
|
116
|
+
**zero** occurrences in its dist — forwarding them (as this file did, behind a
|
|
117
|
+
`ComponentType<FlatListProps<T>>` cast) made every module's tier tuning and every hand-computed
|
|
118
|
+
`getItemLayout` inert for consumers who install the peer. v2's one windowing knob is
|
|
119
|
+
`drawDistance` (dp beyond the viewport; its own default is 250), so the tier maps to that instead,
|
|
120
|
+
and `getItemLayout` is not passed at all — it has no meaning there. The FlatList branch keeps the
|
|
121
|
+
five-prop tuning unchanged. FlashList also never passes `separators`, so `renderItem` goes through a
|
|
122
|
+
memoized adapter rather than a cast.
|
|
123
|
+
|
|
124
|
+
`resolveFlashList()` runs **once at module scope**. It used to `require()` inside a try/catch on
|
|
125
|
+
every render, constructing and catching a module-resolution error per render per mounted list
|
|
126
|
+
whenever the optional peer was absent.
|
|
127
|
+
|
|
128
|
+
**The prop surface is a curated allowlist, never `{...rest}`.** `core/list` is internal, so it is a
|
|
129
|
+
wider surface than a public module's — but the width is deliberate, and each entry is a prop a
|
|
130
|
+
module legitimately needs: `ListHeaderComponent` / `ListFooterComponent` / `ListEmptyComponent`,
|
|
131
|
+
`stickyHeaderIndices`, `contentContainerStyle`, `numColumns`, `keyboardShouldPersistTaps`,
|
|
132
|
+
`itemHeight` / `getItemLayout`, and `accessibilityRole` / `accessibilityLabel` / `accessibilityHint`.
|
|
133
|
+
|
|
134
|
+
A prop missing from this interface does not make a module do without it — it makes the module
|
|
135
|
+
re-express it locally, usually wrongly. `data-table` had no `ListHeaderComponent`, so "sticky" was
|
|
136
|
+
re-expressed as *position*: with `stickyHeader={false}` the column header rendered **after** every
|
|
137
|
+
row, and a screen reader read N rows before the labels naming them (WCAG 1.3.2). Widen this
|
|
138
|
+
interface rather than working around it in a module.
|
|
139
|
+
|
|
140
|
+
- **`accessibilityRole` defaults to `"list"`** so every consumer inherits it instead of each adding
|
|
141
|
+
its own — the role was previously absent library-wide. Consumers that are not lists override it
|
|
142
|
+
(a menu surface passes `"menu"`).
|
|
143
|
+
- **`keyboardShouldPersistTaps`** is required by any list under a focused text field, or the first
|
|
144
|
+
row tap is swallowed as a keyboard dismiss (WCAG 2.1.1). `"handled"` is right when dismissing on
|
|
145
|
+
a background tap is *wanted* (`combobox`, in a sheet); `"always"` when the list's own lifetime is
|
|
146
|
+
bound to the keyboard (`rich-text-editor`'s mention dropdown) — see each module's MODULE.md.
|
|
147
|
+
- **`itemHeight` is for uniform rows only.** It derives a `getItemLayout` whose offsets are exact
|
|
148
|
+
only if every row is that tall; variable rows must omit it (wrong offsets scroll to the wrong
|
|
149
|
+
place, and OS font scaling makes any guess worse — `timeline`, `markdown`, `more-items`). Pass
|
|
150
|
+
`getItemLayout` directly when the offsets are exact but not uniform — `data-table` does, to
|
|
151
|
+
account for the header cell sitting above row 0.
|
|
152
|
+
- **Prop memoization is mandatory**, not a style preference: FlashList memoizes on prop identity, so
|
|
153
|
+
the derived `getItemLayout` is `useMemo`'d here and every array/object/callback a module passes in
|
|
154
|
+
must be too, or the child's `React.memo` is silently defeated.
|
|
155
|
+
- **FlashList v2 removed `estimatedItemSize` / `estimatedListSize` / `estimatedFirstItemOffset` /
|
|
156
|
+
`onBlankArea` / `disableAutoLayout`** — it auto-sizes. Do not reintroduce them.
|
|
157
|
+
|
|
158
|
+
| Test | Covers |
|
|
159
|
+
|------|--------|
|
|
160
|
+
| `__tests__/VirtualList.props.test.tsx` | Header/footer/empty slots render in the right order; sticky/content-style/columns forwarding; the default `"list"` role and its override; `itemHeight` → `getItemLayout`, explicit `getItemLayout` winning, and its referential stability. |
|
|
161
|
+
| `__tests__/VirtualList.keyboard.test.tsx` | `keyboardShouldPersistTaps` forwarded verbatim, RN's own default when omitted. |
|
|
162
|
+
| `__tests__/VirtualList.tuning.test.ts` | The tier → `drawDistance` mapping — the only assertable part of the FlashList branch. |
|
|
163
|
+
| `__tests__/VirtualSectionList.sections.test.tsx` | The three flattening contracts below. |
|
|
164
|
+
| `__tests__/VirtualSectionList.perf.test.tsx` | Mounted rows stay bounded for a 10k dataset. |
|
|
165
|
+
|
|
166
|
+
### VirtualSectionList
|
|
167
|
+
|
|
168
|
+
Flattens `sections` into one windowed list. Three contracts, each of which was a bug found in audit
|
|
169
|
+
and is now covered by `__tests__/VirtualSectionList.sections.test.tsx`:
|
|
170
|
+
|
|
171
|
+
1. **An empty section keeps its header.** `sections.flatMap(s => s.data.map(…))` emitted nothing for
|
|
172
|
+
a section with no rows, so a titled section silently vanished. Empty sections now flatten to a
|
|
173
|
+
header-only row (`item === undefined`).
|
|
174
|
+
2. **One header per section, keyed on position, not identity.** The header used to also fire when an
|
|
175
|
+
item was *reference-equal* to its section's first item, so `[a, b, a]` emitted two headers. It is
|
|
176
|
+
`index === 0` and nothing else.
|
|
177
|
+
3. **Header-bearing rows are taller.** A single `itemHeight` described both kinds of row. Exact
|
|
178
|
+
offsets need `sectionHeaderHeight` too; given both, `getItemLayout` is a prefix sum over the
|
|
179
|
+
flattened rows. Given only `itemHeight`, **no** `getItemLayout` is passed — measuring is correct,
|
|
180
|
+
guessing is not. `modules/section-list` currently passes only `itemHeight` and so measures; it
|
|
181
|
+
can opt back into exact offsets by passing its header height.
|
|
182
|
+
|
|
183
|
+
## Modernization (v1.0.7)
|
|
184
|
+
|
|
185
|
+
- Theme imports decoupled to `theme/hooks`; optional peers (reanimated, gesture-handler, flash-list) load at runtime.
|
|
186
|
+
- List-heavy surfaces use `VirtualList` with device-tier window sizing where applicable.
|
|
187
|
+
- `React.memo` + stable callbacks retained; render-item/key-extractor hoisted per ESLint perf rules.
|
|
@@ -8,15 +8,138 @@ once instead of each re-implementing the same hook.
|
|
|
8
8
|
|
|
9
9
|
| File | Role |
|
|
10
10
|
|------|------|
|
|
11
|
-
| `index.ts` | `useReducedMotion()` — WCAG 2.3.3. |
|
|
11
|
+
| `index.ts` | `useReducedMotion()` — WCAG 2.3.3. `useAnnounce()` — WCAG 4.1.3. |
|
|
12
|
+
| `announce.ts` / `announce.web.ts` | `useAnnouncer()` — the platform's "say this now" primitive behind `useAnnounce`. |
|
|
13
|
+
| `keyboard.ts` / `keyboard.web.ts` | Physical-keyboard interaction — WCAG 2.1.1 / 2.4.3. Native file is all no-ops. |
|
|
14
|
+
| `labels.ts` | Accessibility-label phrasings that must read identically everywhere the same action appears (WCAG 3.2.4) — currently `removeAccessibilityLabel()`. |
|
|
12
15
|
|
|
13
|
-
|
|
16
|
+
**Internal only.** Nothing here is a package subpath export (`package.json` `exports` is generated
|
|
17
|
+
from `src/modules/` alone) — these are helpers modules import, never part of the public surface.
|
|
18
|
+
|
|
19
|
+
## Platform pairs (`announce`, `keyboard`)
|
|
20
|
+
|
|
21
|
+
**Why `.ts` / `.web.ts`, not `Platform.OS`.** Metro resolves the `.web.ts` file only for a web
|
|
22
|
+
bundle, so the DOM code never enters the native graph; a `Platform.OS` branch would ship it. Jest's
|
|
23
|
+
`react-native` preset has no `web` platform, so a bare `../keyboard` import always resolves the
|
|
24
|
+
native file — the web half is tested either by importing `../keyboard.web` explicitly
|
|
25
|
+
(`keyboard.web.test.ts`) or by the jsdom project, whose `moduleFileExtensions` put `web.ts` first
|
|
26
|
+
(`*.dom.test.tsx` under `jest.web.config.js`).
|
|
27
|
+
|
|
28
|
+
**DOM types are module-local.** `tsconfig` sets `"lib": ["ESNext"]`, so `document`/`HTMLElement`/
|
|
29
|
+
`KeyboardEvent` don't exist as types. Each `.web.ts` declares a small structural surface plus
|
|
30
|
+
`declare const document` — both erase at emit. **Never augment `react-native`'s types instead**: that
|
|
31
|
+
ships through `lib/typescript/**` and makes `onKeyDown` look valid on native for every consumer.
|
|
32
|
+
|
|
33
|
+
## Patterns
|
|
14
34
|
|
|
15
35
|
`useReducedMotion()` returns the live OS reduce-motion setting (initial async read +
|
|
16
36
|
`reduceMotionChanged` subscription). A module uses it to zero out an animation's duration, never to
|
|
17
37
|
skip the animation's *effect* (state must still change, just without the transition).
|
|
18
38
|
|
|
39
|
+
**One module-level store, read through `useSyncExternalStore`.** The probe and the native
|
|
40
|
+
`reduceMotionChanged` listener are opened by the *first* subscriber and closed when the last one
|
|
41
|
+
leaves — hook instances are store reads, not subscriptions of their own. It used to open both per
|
|
42
|
+
mount, so ten `<Button>`s cost 20 listeners and 20 async bridge round-trips. `useMotion()` therefore
|
|
43
|
+
costs one read: it resolves the tier through `resolveDeviceTier(reduced)` rather than calling
|
|
44
|
+
`useDeviceTier()`, which would read the same store a second time.
|
|
45
|
+
|
|
46
|
+
**It seeds `true`, not `false`.** `AccessibilityInfo.isReduceMotionEnabled()` resolves after the
|
|
47
|
+
first commit *and* after the first effect pass, so a `false` seed reports "motion is fine" for that
|
|
48
|
+
window and every correctly-written gate in the library runs anyway (WCAG 2.3.3). The last OS answer
|
|
49
|
+
is cached per process, so only the very first mount in an app run pays the pessimistic seed —
|
|
50
|
+
without that cache, every later mount would lose its enter animation for a user who never asked for
|
|
51
|
+
less motion. `resetReducedMotionCache()` is test-only; it also invalidates a probe still in flight,
|
|
52
|
+
so a promise from a previous suite cannot land in the next one.
|
|
53
|
+
|
|
54
|
+
`useAnnounce(message)` announces when `message` becomes present or changes — never on every render,
|
|
55
|
+
and never twice for the same string. `undefined` means "nothing to announce".
|
|
56
|
+
|
|
57
|
+
**Why it exists:** `accessibilityLiveRegion` is an **Android-only** RN prop, so a status message
|
|
58
|
+
relying on it alone is announced by nothing on iOS. The imperative call reaches VoiceOver and
|
|
59
|
+
TalkBack alike — the mechanism `Toast.show()` established.
|
|
60
|
+
|
|
61
|
+
**The rule that comes with it:** a caller must NOT also put `accessibilityLiveRegion` on the message
|
|
62
|
+
it renders, or Android announces twice. Either use this hook and drop the live region (`input`,
|
|
63
|
+
`form-field`, `file-upload`, `toast`), or keep the live region gated to
|
|
64
|
+
`Platform.OS === "android"` and don't call this hook (`combobox`'s empty state).
|
|
65
|
+
|
|
66
|
+
## Announcing (`announce.ts` / `announce.web.ts`)
|
|
67
|
+
|
|
68
|
+
The transition rule ("changed, and not `undefined`") stays in `useAnnounce` for **both** platforms;
|
|
69
|
+
`useAnnouncer()` supplies only the primitive that speaks, so the two cannot drift.
|
|
70
|
+
|
|
71
|
+
**`react-native-web@0.21.2` ships `announceForAccessibility` as an empty function body**
|
|
72
|
+
(`dist/exports/AccessibilityInfo/index.js`), so every WCAG 4.1.3 status message in the library was
|
|
73
|
+
silent on web. The web primitive is one shared ARIA live region; four details make it *speak*:
|
|
74
|
+
|
|
75
|
+
- **`aria-live="polite"`** (+ `role="status"`), never `assertive` — nothing here earns interrupting
|
|
76
|
+
the user mid-sentence.
|
|
77
|
+
- **In the document, empty, before the text lands** — the fill is deferred one task. A node inserted
|
|
78
|
+
with its text already in it gives the reader nothing to diff and is routinely never announced.
|
|
79
|
+
- **Two regions alternate.** Re-writing the identical string to one node is not a DOM mutation, so a
|
|
80
|
+
repeat would be silent — and `useAnnounce` re-announces a message that cleared and came back.
|
|
81
|
+
- **Visually hidden = the clip technique.** `display:none`/`visibility:hidden` drop the node out of
|
|
82
|
+
the accessibility tree, which is the whole point of the node.
|
|
83
|
+
|
|
84
|
+
One region per document, retained by the first `useAnnouncer()` and released by the last (the
|
|
85
|
+
`useReducedMotion` store's shape). **Teardown is deferred a task on purpose:** StrictMode runs
|
|
86
|
+
mount → unmount → mount, and removing the region on that middle cleanup would discard the fill the
|
|
87
|
+
first mount just queued, while the second mount (correctly) does not re-announce.
|
|
88
|
+
|
|
89
|
+
Tested in jsdom against real `react-native-web` (`__tests__/announce.dom.test.tsx`), which proves
|
|
90
|
+
the DOM is shaped right. **Only a real VoiceOver/NVDA/TalkBack pass proves it is spoken.**
|
|
91
|
+
|
|
92
|
+
## Keyboard (`keyboard.ts` / `keyboard.web.ts`)
|
|
93
|
+
|
|
94
|
+
Imported directly (`core/a11y/keyboard`), not through `index.ts`. Five exports:
|
|
95
|
+
|
|
96
|
+
| Export | What it does |
|
|
97
|
+
|--------|--------------|
|
|
98
|
+
| `useDismissOnEscape(active, onDismiss)` | Capture-phase `keydown` on `document`; Escape → `stopPropagation()` + dismiss. |
|
|
99
|
+
| `useFocusTrap(ref, active)` | Focuses the first tabbable, cycles Tab/Shift+Tab, **restores focus on deactivate**. |
|
|
100
|
+
| `useRovingKeys(ref, active, options)` | Capture-phase `keydown` on the container: arrows per `orientation`, Home/End, Enter/Space, optional typeahead. |
|
|
101
|
+
| `useSpaceActivation(ref, onActivate, active?)` | Makes **Space** activate a non-`button` role. |
|
|
102
|
+
| `focusItemProps(index, activeIndex)` | `{ tabIndex: 0 \| -1 }` — pure, real on both platforms. |
|
|
103
|
+
|
|
104
|
+
**Why `useSpaceActivation` is a ref hook, not a props object.** `onKeyDown` is in no RN type and
|
|
105
|
+
`{...rest}` is lint-banned, so a returned props bag cannot reach a `Pressable` at all. RNW's
|
|
106
|
+
`PressResponder.isValidKeyPress` is `Enter || (Space && isButtonish)`, and `isButtonish` needs a
|
|
107
|
+
`button` tag or `role="button"` — so `role="checkbox" | "radio" | "tab" | "menuitem"` render as a
|
|
108
|
+
`div` where Space scrolls the page instead of activating. **Do not "fix" that by changing the role.**
|
|
109
|
+
First consumer: `checkbox` (`Checkbox.tsx`, where Space is the primary key).
|
|
110
|
+
|
|
111
|
+
## Accessibility state props — flat, never object-shaped
|
|
112
|
+
|
|
113
|
+
See `docs/PLATFORM-A11Y-PROPS.md` for the full rationale. Summary: `accessibilityState={{…}}`,
|
|
114
|
+
`accessibilityValue={{…}}` and `accessibilityHint` are silently discarded by
|
|
115
|
+
`react-native-web@0.21.2`'s `createDOMProps` allowlist, which is flat (`aria-selected`,
|
|
116
|
+
`aria-expanded`, `aria-checked`, `aria-busy`, `aria-disabled`, …). React Native itself accepts the
|
|
117
|
+
flat form natively and merges it into `accessibilityState`, so every module's `resolve*Accessibility()`
|
|
118
|
+
in `*.variants.ts` returns flat `aria-*` keys, spread 1:1 onto the JSX. The two exceptions with no
|
|
119
|
+
native equivalent (`aria-current`, `aria-pressed`) emit BOTH the flat web prop and the nearest
|
|
120
|
+
native `accessibilityState` key.
|
|
121
|
+
|
|
19
122
|
## Known gaps
|
|
20
123
|
|
|
21
|
-
-
|
|
22
|
-
|
|
124
|
+
- **Still silent on web:** `toast/Toast.tsx` (`show()`) and `copy-button/CopyButton.tsx` call
|
|
125
|
+
`AccessibilityInfo.announceForAccessibility` directly. Both sit inside a component, so the fix is
|
|
126
|
+
`const announce = useAnnouncer()` + `announce(…)` — no new API, native unchanged.
|
|
127
|
+
- **Still silent on iOS:** the remaining `accessibilityLiveRegion` call sites (`date-picker/PickerField`).
|
|
128
|
+
RNW 0.21.2 forwards the prop to `aria-live` with its deprecation warning commented out, so web and
|
|
129
|
+
Android are fine. Converge on `useAnnounce` + dropping the prop; a props-bag helper can't work
|
|
130
|
+
(JSX spread is lint-banned). `pagination` and `combobox`'s error text converged in the
|
|
131
|
+
accessibility-props migration (2026-08); `combobox`'s empty state deliberately keeps its
|
|
132
|
+
`Platform.OS === "android"`-gated live region instead — iOS/VoiceOver announces a text-content
|
|
133
|
+
change in an already-visible node without it, so `useAnnounce` there would double-speak.
|
|
134
|
+
- No `useAccessibilityFocus` (programmatically moving reader focus) — nothing has needed it yet.
|
|
135
|
+
- Six modules besides `checkbox` need `useSpaceActivation` (radio, tab, menu item, …) — only
|
|
136
|
+
`checkbox` is wired so far.
|
|
137
|
+
- `useFocusTrap` does not pull focus back when it escapes the subtree by means other than Tab
|
|
138
|
+
(a click outside, or a programmatic `focus()`); it only cycles Tab at the ends.
|
|
139
|
+
- **A consumer that freezes the value at mount still reads the pre-probe seed.**
|
|
140
|
+
`message-bubble/MessageBubble.tsx:41` does `useRef(motion.decorative)`, so the very first bubble
|
|
141
|
+
mounted in a process keeps whatever the seed said. The cache makes that one mount, not every
|
|
142
|
+
mount; the real fix belongs in the module.
|
|
143
|
+
- A probe that settles after the last reader unmounts still writes the cache on purpose (the next
|
|
144
|
+
mount wants that answer). There is no per-instance `mounted` guard any more — the store simply has
|
|
145
|
+
no listeners to notify.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Native/default counterpart of `announce.web.ts`: the one imperative "say this now" primitive
|
|
5
|
+
* behind `useAnnounce`. On iOS/Android the OS owns the announcement queue, so this is a direct
|
|
6
|
+
* `AccessibilityInfo.announceForAccessibility` call and nothing else.
|
|
7
|
+
*
|
|
8
|
+
* The `.ts` / `.web.ts` pair (the `keyboard.ts` precedent) is what keeps the DOM code out of the
|
|
9
|
+
* native dependency graph entirely: Metro resolves `announce.web.ts` only for a web bundle, and
|
|
10
|
+
* Jest (whose `react-native` preset has no `web` platform) always resolves THIS file. A
|
|
11
|
+
* `Platform.OS` branch would instead ship the DOM code to native.
|
|
12
|
+
*
|
|
13
|
+
* The de-duplication that stops an unchanged message repeating lives one layer up in `useAnnounce`,
|
|
14
|
+
* deliberately: both platforms then share one set of semantics, and this primitive speaks every
|
|
15
|
+
* time it is called — exactly what `announceForAccessibility` does.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import { AccessibilityInfo } from "react-native";
|
|
19
|
+
function announce(message) {
|
|
20
|
+
AccessibilityInfo.announceForAccessibility(message);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Returns the process-wide announce function. A hook rather than a bare export so the web half can
|
|
25
|
+
* own a live region's lifetime without changing this signature; here there is nothing to set up.
|
|
26
|
+
*/
|
|
27
|
+
export function useAnnouncer() {
|
|
28
|
+
return announce;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=announce.js.map
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Web implementation of the library's screen-reader announcement primitive. Metro only resolves
|
|
5
|
+
* this file for a web bundle (see `announce.ts`), so it is the one place that may assume a DOM.
|
|
6
|
+
*
|
|
7
|
+
* **Why it exists at all.** `react-native-web@0.21.2` ships
|
|
8
|
+
* `AccessibilityInfo.announceForAccessibility` as an empty function body
|
|
9
|
+
* (`dist/exports/AccessibilityInfo/index.js`) — every WCAG 4.1.3 status message in the library is
|
|
10
|
+
* silent on web without this. The web equivalent is an ARIA live region, which the platform reads
|
|
11
|
+
* out when its text *changes*, so the whole job here is producing a change a screen reader can see.
|
|
12
|
+
*
|
|
13
|
+
* **Why the DOM types are hand-written.** `tsconfig.json` sets `"lib": ["ESNext"]` — `document` and
|
|
14
|
+
* `HTMLElement` do not exist as types in `src/`, `any` is lint-banned, and augmenting
|
|
15
|
+
* `react-native`'s types would ship DOM-only APIs to every consumer's native build through
|
|
16
|
+
* `lib/typescript/**`. A module-local structural surface plus `declare const document` erases
|
|
17
|
+
* completely at emit, the same contract `keyboard.web.ts` established at this boundary.
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
import { useEffect } from "react";
|
|
21
|
+
/** `typeof` rather than a null check: a bare `document` reference throws outside a browser. */
|
|
22
|
+
function getDocument() {
|
|
23
|
+
return typeof document === "undefined" ? undefined : document;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/** How the DOM tests find the region; changing it is a contract change, not a rename. */
|
|
27
|
+
const CONTAINER_ATTRIBUTE = "data-pixelize-announcer";
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The clip technique, and only the clip technique. `display:none` and `visibility:hidden` both drop
|
|
31
|
+
* the node out of the accessibility tree, which is the entire point of the node.
|
|
32
|
+
*/
|
|
33
|
+
const VISUALLY_HIDDEN = "position:absolute;width:1px;height:1px;margin:-1px;padding:0;" + "overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0;";
|
|
34
|
+
let container = null;
|
|
35
|
+
let regions = null;
|
|
36
|
+
/** Which of the pair receives the next message. */
|
|
37
|
+
let useSecond = false;
|
|
38
|
+
let mountCount = 0;
|
|
39
|
+
let teardownTimer = null;
|
|
40
|
+
/** Bumped on teardown so a fill still queued against a removed region cannot land. */
|
|
41
|
+
let generation = 0;
|
|
42
|
+
function createRegion(doc) {
|
|
43
|
+
const region = doc.createElement("div");
|
|
44
|
+
// `polite` waits for a pause; `assertive` cuts the user off mid-sentence, which no status message
|
|
45
|
+
// in this library warrants. `role="status"` carries the same politeness for readers that map it.
|
|
46
|
+
region.setAttribute("role", "status");
|
|
47
|
+
region.setAttribute("aria-live", "polite");
|
|
48
|
+
region.setAttribute("aria-atomic", "true");
|
|
49
|
+
return region;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/** Idempotent: one container with one region pair for the whole document, however many hooks mount. */
|
|
53
|
+
function mountRegions() {
|
|
54
|
+
if (container !== null) return;
|
|
55
|
+
const doc = getDocument();
|
|
56
|
+
const body = doc?.body;
|
|
57
|
+
if (doc === undefined || body == null) return;
|
|
58
|
+
const node = doc.createElement("div");
|
|
59
|
+
node.setAttribute(CONTAINER_ATTRIBUTE, "");
|
|
60
|
+
node.setAttribute("style", VISUALLY_HIDDEN);
|
|
61
|
+
const first = createRegion(doc);
|
|
62
|
+
const second = createRegion(doc);
|
|
63
|
+
node.appendChild(first);
|
|
64
|
+
node.appendChild(second);
|
|
65
|
+
body.appendChild(node);
|
|
66
|
+
container = node;
|
|
67
|
+
regions = [first, second];
|
|
68
|
+
useSecond = false;
|
|
69
|
+
}
|
|
70
|
+
function unmountRegions() {
|
|
71
|
+
generation += 1;
|
|
72
|
+
container?.remove();
|
|
73
|
+
container = null;
|
|
74
|
+
regions = null;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Puts `message` in front of the screen reader. Two things make this actually speak rather than
|
|
79
|
+
* merely look right in the DOM:
|
|
80
|
+
*
|
|
81
|
+
* 1. **The fill is deferred a task.** A live region that is inserted with its text already in it
|
|
82
|
+
* gives the reader nothing to diff and is routinely announced by nothing at all. The region is
|
|
83
|
+
* always in the document and empty first, and gains its text in a later task.
|
|
84
|
+
* 2. **The pair alternates.** Writing the identical string to the same node is not a DOM mutation,
|
|
85
|
+
* so a repeat would be silent — and `useAnnounce` re-announces a message that cleared and came
|
|
86
|
+
* back, matching `announceForAccessibility`, which speaks on every call. Alternating means every
|
|
87
|
+
* announcement is an empty-to-text change on a node, whatever the previous message was.
|
|
88
|
+
*/
|
|
89
|
+
function announce(message) {
|
|
90
|
+
const pair = regions;
|
|
91
|
+
if (pair === null) return;
|
|
92
|
+
const [first, second] = pair;
|
|
93
|
+
const target = useSecond ? second : first;
|
|
94
|
+
const previous = useSecond ? first : second;
|
|
95
|
+
useSecond = !useSecond;
|
|
96
|
+
|
|
97
|
+
// Drop the message the reader was last given so the two regions never both hold status text.
|
|
98
|
+
previous.textContent = "";
|
|
99
|
+
target.textContent = "";
|
|
100
|
+
const opened = generation;
|
|
101
|
+
setTimeout(() => {
|
|
102
|
+
if (opened === generation) target.textContent = message;
|
|
103
|
+
}, 0);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Retains the shared live region for the lifetime of the calling component, and returns the
|
|
108
|
+
* announce function. Same shape as `useReducedMotion`'s store: process-wide setup opened by the
|
|
109
|
+
* first consumer and closed by the last, never one per hook instance.
|
|
110
|
+
*
|
|
111
|
+
* Teardown is deferred a task because StrictMode (and any remount) runs mount → unmount → mount
|
|
112
|
+
* back to back: removing the region synchronously on that middle cleanup would invalidate the fill
|
|
113
|
+
* the first mount just queued, and the second mount does not re-announce.
|
|
114
|
+
*/
|
|
115
|
+
export function useAnnouncer() {
|
|
116
|
+
useEffect(() => {
|
|
117
|
+
mountCount += 1;
|
|
118
|
+
if (teardownTimer !== null) {
|
|
119
|
+
clearTimeout(teardownTimer);
|
|
120
|
+
teardownTimer = null;
|
|
121
|
+
}
|
|
122
|
+
mountRegions();
|
|
123
|
+
return () => {
|
|
124
|
+
mountCount -= 1;
|
|
125
|
+
if (mountCount > 0) return;
|
|
126
|
+
teardownTimer = setTimeout(() => {
|
|
127
|
+
teardownTimer = null;
|
|
128
|
+
if (mountCount === 0) unmountRegions();
|
|
129
|
+
}, 0);
|
|
130
|
+
};
|
|
131
|
+
}, []);
|
|
132
|
+
return announce;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=announce.web.js.map
|
|
@@ -1,26 +1,92 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { useEffect,
|
|
3
|
+
import { useEffect, useRef, useSyncExternalStore } from "react";
|
|
4
4
|
import { AccessibilityInfo } from "react-native";
|
|
5
|
+
import { useAnnouncer } from "./announce";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Last OS answer seen in this process. `isReduceMotionEnabled()` only resolves after the first
|
|
9
|
+
* commit, so without this every later mount would re-pay the pessimistic seed below and lose its
|
|
10
|
+
* enter animation for a user who never asked for less motion.
|
|
11
|
+
*/
|
|
12
|
+
let lastKnownReduceMotion = null;
|
|
13
|
+
let nativeSubscription = null;
|
|
14
|
+
/** Bumped by the test reset so a probe still in flight from a previous suite cannot land late. */
|
|
15
|
+
let generation = 0;
|
|
16
|
+
const listeners = new Set();
|
|
17
|
+
function publish(value) {
|
|
18
|
+
if (lastKnownReduceMotion === value) return;
|
|
19
|
+
lastKnownReduceMotion = value;
|
|
20
|
+
for (const listener of listeners) listener();
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** One probe and one native listener for the whole process, opened by the first subscriber. */
|
|
24
|
+
function openNativeSubscription() {
|
|
25
|
+
const opened = generation;
|
|
26
|
+
const apply = value => {
|
|
27
|
+
if (opened === generation) publish(value);
|
|
28
|
+
};
|
|
29
|
+
void AccessibilityInfo.isReduceMotionEnabled().then(apply);
|
|
30
|
+
nativeSubscription = AccessibilityInfo.addEventListener("reduceMotionChanged", apply);
|
|
31
|
+
}
|
|
32
|
+
function subscribe(onStoreChange) {
|
|
33
|
+
listeners.add(onStoreChange);
|
|
34
|
+
if (listeners.size === 1) openNativeSubscription();
|
|
35
|
+
return () => {
|
|
36
|
+
listeners.delete(onStoreChange);
|
|
37
|
+
if (listeners.size === 0) {
|
|
38
|
+
nativeSubscription?.remove();
|
|
39
|
+
nativeSubscription = null;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function getSnapshot() {
|
|
44
|
+
return lastKnownReduceMotion ?? true;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** Test-only: drops the process cache so a suite can assert the pre-probe seed. */
|
|
48
|
+
export function resetReducedMotionCache() {
|
|
49
|
+
generation += 1;
|
|
50
|
+
lastKnownReduceMotion = null;
|
|
51
|
+
nativeSubscription?.remove();
|
|
52
|
+
nativeSubscription = null;
|
|
53
|
+
if (listeners.size > 0) openNativeSubscription();
|
|
54
|
+
}
|
|
5
55
|
|
|
6
56
|
/**
|
|
7
57
|
* Tracks the OS reduce-motion setting (WCAG 2.3.3) so a press/transition animation can be
|
|
8
|
-
* suppressed for a user who has it on.
|
|
9
|
-
*
|
|
58
|
+
* suppressed for a user who has it on. Every animated module reads this one store: ten `<Button>`s
|
|
59
|
+
* cost one native listener and one bridge round-trip, not ten of each.
|
|
60
|
+
*
|
|
61
|
+
* Seeds `true` until the async probe answers: a `false` seed makes `motion.enabled` (and on a
|
|
62
|
+
* high-tier device `motion.decorative`) true for the first commit AND the first effect pass, which
|
|
63
|
+
* defeats every correctly-written reduce-motion gate in the library at once.
|
|
10
64
|
*/
|
|
11
65
|
export function useReducedMotion() {
|
|
12
|
-
|
|
66
|
+
return useSyncExternalStore(subscribe, getSnapshot);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Announces a status message to the screen reader when it becomes present, or changes (WCAG 4.1.3).
|
|
71
|
+
* `accessibilityLiveRegion` is Android-only, so it alone leaves iOS VoiceOver silent; this reaches
|
|
72
|
+
* VoiceOver, TalkBack and the browser alike.
|
|
73
|
+
*
|
|
74
|
+
* A caller must NOT also put `accessibilityLiveRegion` on the message it renders: on Android that
|
|
75
|
+
* announces twice. Pass `undefined` for "no message"; a message that stays the same is not repeated.
|
|
76
|
+
*
|
|
77
|
+
* The transition rule lives here, on both platforms: `useAnnouncer()` supplies only the platform's
|
|
78
|
+
* "say this now" primitive (`announceForAccessibility` on native, a shared ARIA live region on web,
|
|
79
|
+
* where that call is an empty function — see `announce.web.ts`).
|
|
80
|
+
*/
|
|
81
|
+
export function useAnnounce(message) {
|
|
82
|
+
const announce = useAnnouncer();
|
|
83
|
+
// Compared against, never rendered from: the effect must fire on a transition, not every render.
|
|
84
|
+
const announced = useRef(undefined);
|
|
13
85
|
useEffect(() => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
return () => {
|
|
20
|
-
mounted = false;
|
|
21
|
-
sub.remove();
|
|
22
|
-
};
|
|
23
|
-
}, []);
|
|
24
|
-
return reduced;
|
|
86
|
+
if (message !== undefined && message !== announced.current) {
|
|
87
|
+
announce(message);
|
|
88
|
+
}
|
|
89
|
+
announced.current = message;
|
|
90
|
+
}, [announce, message]);
|
|
25
91
|
}
|
|
26
92
|
//# sourceMappingURL=index.js.map
|