pixelize-native-library 1.2.1 → 1.3.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/COMPONENT-GOTCHAS.md +309 -0
- package/DESIGN-GUIDE.md +215 -0
- package/README.md +44 -0
- package/lib/module/core/MODULE.md +22 -16
- package/lib/module/core/a11y/MODULE.md +7 -7
- package/lib/module/core/a11y/touchTarget.js +6 -0
- package/lib/module/core/blur/blur.js +17 -0
- package/lib/module/core/blur/index.js +4 -0
- package/lib/module/core/device/MODULE.md +5 -8
- package/lib/module/core/gradient/AccentGradientFill.js +9 -6
- package/lib/module/core/gradient/ShimmerGradientFill.js +79 -0
- package/lib/module/core/gradient/index.js +1 -0
- package/lib/module/core/haptics/MODULE.md +7 -3
- package/lib/module/core/heading/MODULE.md +1 -1
- package/lib/module/core/icon/MODULE.md +14 -22
- package/lib/module/core/icon/icons/building-2.js +1 -1
- package/lib/module/core/icon/icons/trash.js +1 -1
- package/lib/module/core/list/VirtualList.js +16 -3
- package/lib/module/core/motion/MODULE.md +18 -9
- package/lib/module/core/motion/animatedComponents.js +8 -0
- package/lib/module/core/motion/index.js +2 -0
- package/lib/module/core/motion/motionAnimation.js +87 -0
- package/lib/module/core/motion/presets.js +81 -81
- package/lib/module/core/motion/reanimatedEasing.js +19 -0
- package/lib/module/core/motion/useAnimatedValue.js +2 -14
- package/lib/module/core/motion/useMotion.js +19 -20
- package/lib/module/core/motion/usePressState.js +0 -5
- package/lib/module/core/overlay/MODULE.md +17 -0
- package/lib/module/core/overlay/ModalPortalContext.js +8 -0
- package/lib/module/core/overlay/index.js +5 -0
- package/lib/module/core/overlay/renderWebPortal.js +6 -0
- package/lib/module/core/overlay/renderWebPortal.web.js +8 -0
- package/lib/module/core/screen-scroll/ScreenScrollContext.js +9 -0
- package/lib/module/core/screen-scroll/index.js +4 -0
- package/lib/module/core/slot/MODULE.md +9 -0
- package/lib/module/core/slot/index.js +4 -0
- package/lib/module/core/slot/nodeSlot.js +21 -0
- package/lib/module/core/style/focusRing.js +37 -0
- package/lib/module/core/style/index.js +1 -1
- package/lib/module/index.js +23 -4
- package/lib/module/modules/accordion/Accordion.js +50 -108
- package/lib/module/modules/accordion/Accordion.variants.js +2 -4
- package/lib/module/modules/accordion/AccordionProps.js +4 -0
- package/lib/module/modules/accordion/MODULE.md +15 -24
- package/lib/module/modules/alert-dialog/AlertDialog.js +19 -2
- package/lib/module/modules/alert-dialog/AlertDialogProps.js +4 -0
- package/lib/module/modules/alert-dialog/MODULE.md +2 -1
- package/lib/module/modules/app-bar/AppBar.js +21 -18
- package/lib/module/modules/app-bar/AppBar.variants.js +5 -0
- package/lib/module/modules/app-bar/AppBarProps.js +4 -0
- package/lib/module/modules/app-bar/MODULE.md +1 -1
- package/lib/module/modules/app-switcher/AppSwitcher.js +30 -0
- package/lib/module/modules/app-switcher/AppSwitcherProps.js +4 -0
- package/lib/module/modules/app-switcher/MODULE.md +14 -0
- package/lib/module/modules/app-switcher/index.js +4 -0
- package/lib/module/modules/appearance-settings/AppearanceSettings.js +58 -0
- package/lib/module/modules/appearance-settings/AppearanceSettingsProps.js +4 -0
- package/lib/module/modules/appearance-settings/MODULE.md +9 -0
- package/lib/module/modules/appearance-settings/index.js +4 -0
- package/lib/module/modules/avatar/Avatar.variants.js +2 -0
- package/lib/module/modules/avatar/AvatarProps.js +4 -0
- package/lib/module/modules/avatar/MODULE.md +3 -3
- package/lib/module/modules/avatar-group/AvatarGroupProps.js +4 -0
- package/lib/module/modules/avatar-group/MODULE.md +2 -1
- package/lib/module/modules/backdrop/Backdrop.js +38 -0
- package/lib/module/modules/backdrop/BackdropProps.js +4 -0
- package/lib/module/modules/backdrop/MODULE.md +11 -0
- package/lib/module/modules/backdrop/index.js +4 -0
- package/lib/module/modules/badge/BadgeProps.js +4 -0
- package/lib/module/modules/badge/MODULE.md +6 -4
- package/lib/module/modules/banner/Banner.js +2 -2
- package/lib/module/modules/banner/Banner.variants.js +3 -1
- package/lib/module/modules/banner/BannerProps.js +4 -0
- package/lib/module/modules/banner/MODULE.md +20 -31
- package/lib/module/modules/bottom-nav/BottomNav.variants.js +2 -2
- package/lib/module/modules/bottom-nav/BottomNavIconWithBadge.js +18 -19
- package/lib/module/modules/bottom-nav/BottomNavOverflowSheet.js +8 -7
- package/lib/module/modules/bottom-nav/BottomNavProps.js +4 -0
- package/lib/module/modules/bottom-nav/BottomNavTab.js +15 -16
- package/lib/module/modules/bottom-nav/MODULE.md +13 -13
- package/lib/module/modules/bottom-sheet/BottomSheet.js +30 -7
- package/lib/module/modules/bottom-sheet/BottomSheetProps.js +4 -0
- package/lib/module/modules/bottom-sheet/MODULE.md +11 -1
- package/lib/module/modules/breadcrumbs/Breadcrumbs.js +54 -0
- package/lib/module/modules/breadcrumbs/Breadcrumbs.variants.js +28 -0
- package/lib/module/modules/breadcrumbs/BreadcrumbsProps.js +4 -0
- package/lib/module/modules/breadcrumbs/MODULE.md +13 -0
- package/lib/module/modules/breadcrumbs/index.js +4 -0
- package/lib/module/modules/button/Button.js +6 -4
- package/lib/module/modules/button/Button.variants.js +12 -16
- package/lib/module/modules/button/ButtonProps.js +4 -0
- package/lib/module/modules/button/MODULE.md +6 -11
- package/lib/module/modules/button-group/ButtonGroup.js +4 -3
- package/lib/module/modules/button-group/ButtonGroup.variants.js +2 -4
- package/lib/module/modules/button-group/ButtonGroupProps.js +4 -0
- package/lib/module/modules/button-group/MODULE.md +2 -2
- package/lib/module/modules/card/Card.js +30 -7
- package/lib/module/modules/card/CardProps.js +4 -0
- package/lib/module/modules/card/MODULE.md +4 -2
- package/lib/module/modules/charts/BarChart.js +6 -4
- package/lib/module/modules/charts/BarChartProps.js +4 -0
- package/lib/module/modules/charts/BarList.js +2 -1
- package/lib/module/modules/charts/BarListProps.js +4 -0
- package/lib/module/modules/charts/ChartLegendProps.js +4 -0
- package/lib/module/modules/charts/Charts.variants.js +3 -1
- package/lib/module/modules/charts/DonutChart.js +3 -2
- package/lib/module/modules/charts/DonutChartProps.js +4 -0
- package/lib/module/modules/charts/LineChart.js +3 -2
- package/lib/module/modules/charts/LineChartProps.js +4 -0
- package/lib/module/modules/charts/MODULE.md +14 -14
- package/lib/module/modules/charts/PieChart.js +6 -4
- package/lib/module/modules/charts/PieChartProps.js +4 -0
- package/lib/module/modules/charts/SparklineProps.js +4 -0
- package/lib/module/modules/checkbox/Checkbox.js +21 -27
- package/lib/module/modules/checkbox/Checkbox.variants.js +4 -2
- package/lib/module/modules/checkbox/CheckboxProps.js +4 -0
- package/lib/module/modules/checkbox/MODULE.md +12 -6
- package/lib/module/modules/chip/Chip.js +49 -32
- package/lib/module/modules/chip/Chip.variants.js +3 -2
- package/lib/module/modules/chip/ChipGroup.js +16 -5
- package/lib/module/modules/chip/ChipGroupProps.js +4 -0
- package/lib/module/modules/chip/ChipProps.js +4 -0
- package/lib/module/modules/chip/MODULE.md +5 -7
- package/lib/module/modules/combobox/Combobox.js +22 -25
- package/lib/module/modules/combobox/Combobox.variants.js +2 -3
- package/lib/module/modules/combobox/ComboboxProps.js +4 -0
- package/lib/module/modules/combobox/MODULE.md +6 -12
- package/lib/module/modules/composer/Composer.js +11 -9
- package/lib/module/modules/composer/ComposerProps.js +4 -0
- package/lib/module/modules/composer/MODULE.md +6 -6
- package/lib/module/modules/copy-button/CopyButton.js +14 -6
- package/lib/module/modules/copy-button/CopyButton.variants.js +3 -2
- package/lib/module/modules/copy-button/CopyButtonProps.js +4 -0
- package/lib/module/modules/copy-button/MODULE.md +10 -12
- package/lib/module/modules/data-table/DataTable.js +11 -7
- package/lib/module/modules/data-table/DataTable.variants.js +2 -2
- package/lib/module/modules/data-table/DataTableProps.js +4 -0
- package/lib/module/modules/data-table/MODULE.md +5 -10
- package/lib/module/modules/date-picker/Calendar.js +11 -8
- package/lib/module/modules/date-picker/CalendarProps.js +4 -0
- package/lib/module/modules/date-picker/DatePicker.variants.js +2 -1
- package/lib/module/modules/date-picker/DatePickerProps.js +4 -0
- package/lib/module/modules/date-picker/DateRangePickerProps.js +4 -0
- package/lib/module/modules/date-picker/MODULE.md +6 -9
- package/lib/module/modules/date-picker/PickerFieldProps.js +4 -0
- package/lib/module/modules/date-picker/PickerShell.js +21 -12
- package/lib/module/modules/date-picker/PickerShellProps.js +4 -0
- package/lib/module/modules/date-picker/TimePicker.js +3 -2
- package/lib/module/modules/date-picker/TimePickerProps.js +4 -0
- package/lib/module/modules/description-list/DescriptionList.js +90 -0
- package/lib/module/modules/description-list/DescriptionList.variants.js +63 -0
- package/lib/module/modules/description-list/DescriptionListProps.js +4 -0
- package/lib/module/modules/description-list/MODULE.md +15 -0
- package/lib/module/modules/description-list/index.js +4 -0
- package/lib/module/modules/divider/DividerProps.js +4 -0
- package/lib/module/modules/divider/MODULE.md +1 -8
- package/lib/module/modules/document-viewer/DocumentViewer.js +35 -0
- package/lib/module/modules/document-viewer/DocumentViewerProps.js +4 -0
- package/lib/module/modules/document-viewer/MODULE.md +12 -0
- package/lib/module/modules/document-viewer/index.js +4 -0
- package/lib/module/modules/drawer/Drawer.js +45 -40
- package/lib/module/modules/drawer/DrawerProps.js +4 -0
- package/lib/module/modules/drawer/MODULE.md +14 -24
- package/lib/module/modules/empty-state/EmptyState.js +2 -1
- package/lib/module/modules/empty-state/EmptyStateProps.js +4 -0
- package/lib/module/modules/empty-state/MODULE.md +4 -9
- package/lib/module/modules/fab/Fab.js +9 -11
- package/lib/module/modules/fab/Fab.variants.js +10 -4
- package/lib/module/modules/fab/FabGroup.js +40 -43
- package/lib/module/modules/fab/FabGroupProps.js +4 -0
- package/lib/module/modules/fab/FabProps.js +4 -0
- package/lib/module/modules/fab/MODULE.md +10 -17
- package/lib/module/modules/field-select-modal/FieldSelectModal.js +52 -0
- package/lib/module/modules/field-select-modal/FieldSelectModalProps.js +4 -0
- package/lib/module/modules/field-select-modal/MODULE.md +13 -0
- package/lib/module/modules/field-select-modal/index.js +4 -0
- package/lib/module/modules/file-grid/FileGrid.js +3 -2
- package/lib/module/modules/file-grid/FileGridProps.js +4 -0
- package/lib/module/modules/file-grid/MODULE.md +27 -4
- package/lib/module/modules/file-upload/FileUpload.js +56 -15
- package/lib/module/modules/file-upload/FileUploadProps.js +4 -0
- package/lib/module/modules/file-upload/MODULE.md +10 -14
- package/lib/module/modules/filter-bar/FilterBar.js +68 -0
- package/lib/module/modules/filter-bar/FilterBarProps.js +4 -0
- package/lib/module/modules/filter-bar/MODULE.md +16 -0
- package/lib/module/modules/filter-bar/index.js +4 -0
- package/lib/module/modules/filter-sheet/FilterChip.js +3 -2
- package/lib/module/modules/filter-sheet/FilterChipProps.js +4 -0
- package/lib/module/modules/filter-sheet/FilterSheet.js +19 -14
- package/lib/module/modules/filter-sheet/FilterSheet.variants.js +2 -3
- package/lib/module/modules/filter-sheet/FilterSheetBody.js +26 -16
- package/lib/module/modules/filter-sheet/FilterSheetProps.js +2 -0
- package/lib/module/modules/filter-sheet/MODULE.md +5 -14
- package/lib/module/modules/folder-row/FolderRow.js +6 -4
- package/lib/module/modules/folder-row/FolderRowProps.js +4 -0
- package/lib/module/modules/folder-row/MODULE.md +6 -5
- package/lib/module/modules/form-field/FormField.js +9 -4
- package/lib/module/modules/form-field/FormFieldProps.js +4 -0
- package/lib/module/modules/form-field/MODULE.md +2 -7
- package/lib/module/modules/gantt/Gantt.js +23 -6
- package/lib/module/modules/gantt/Gantt.variants.js +12 -4
- package/lib/module/modules/gantt/GanttProps.js +4 -0
- package/lib/module/modules/gantt/MODULE.md +3 -3
- package/lib/module/modules/image-viewer/ImageViewer.js +3 -2
- package/lib/module/modules/image-viewer/ImageViewerProps.js +4 -0
- package/lib/module/modules/image-viewer/MODULE.md +1 -1
- package/lib/module/modules/input/Input.js +55 -20
- package/lib/module/modules/input/Input.variants.js +2 -3
- package/lib/module/modules/input/InputProps.js +4 -0
- package/lib/module/modules/input/MODULE.md +9 -16
- package/lib/module/modules/key-value/KeyValue.js +36 -0
- package/lib/module/modules/key-value/KeyValueProps.js +4 -0
- package/lib/module/modules/key-value/MODULE.md +16 -0
- package/lib/module/modules/key-value/index.js +4 -0
- package/lib/module/modules/limit-reached-modal/LimitReachedModalProps.js +4 -0
- package/lib/module/modules/limit-reached-modal/MODULE.md +1 -6
- package/lib/module/modules/list-item/ListItem.js +17 -6
- package/lib/module/modules/list-item/ListItemProps.js +4 -0
- package/lib/module/modules/list-item/MODULE.md +14 -9
- package/lib/module/modules/list-screen/ListScreen.js +63 -0
- package/lib/module/modules/list-screen/ListScreenProps.js +4 -0
- package/lib/module/modules/list-screen/MODULE.md +12 -0
- package/lib/module/modules/list-screen/index.js +4 -0
- package/lib/module/modules/markdown/MODULE.md +0 -6
- package/lib/module/modules/markdown/MarkdownProps.js +4 -0
- package/lib/module/modules/menu/MODULE.md +10 -17
- package/lib/module/modules/menu/Menu.js +66 -52
- package/lib/module/modules/menu/Menu.variants.js +2 -2
- package/lib/module/modules/menu/MenuProps.js +4 -0
- package/lib/module/modules/message-bubble/MODULE.md +5 -4
- package/lib/module/modules/message-bubble/MessageBubbleProps.js +4 -0
- package/lib/module/modules/modal/MODULE.md +56 -93
- package/lib/module/modules/modal/Modal.js +99 -30
- package/lib/module/modules/modal/ModalPortalContext.js +1 -22
- package/lib/module/modules/modal/ModalPortalProvider.js +1 -1
- package/lib/module/modules/modal/ModalPortalProviderProps.js +4 -0
- package/lib/module/modules/modal/ModalProps.js +4 -0
- package/lib/module/modules/modal/renderWebPortal.js +1 -15
- package/lib/module/modules/modal/renderWebPortal.web.js +1 -21
- package/lib/module/modules/more-items/MODULE.md +0 -2
- package/lib/module/modules/more-items/MoreItems.js +10 -7
- package/lib/module/modules/more-items/MoreItems.variants.js +2 -1
- package/lib/module/modules/more-items/MoreItemsProps.js +4 -0
- package/lib/module/modules/multi-select/MODULE.md +5 -11
- package/lib/module/modules/multi-select/MultiSelect.js +38 -23
- package/lib/module/modules/multi-select/MultiSelect.variants.js +4 -2
- package/lib/module/modules/multi-select/MultiSelectProps.js +4 -0
- package/lib/module/modules/notification-bell/MODULE.md +8 -0
- package/lib/module/modules/notification-bell/NotificationBell.js +43 -0
- package/lib/module/modules/notification-bell/NotificationBellProps.js +4 -0
- package/lib/module/modules/notification-bell/index.js +4 -0
- package/lib/module/modules/number-input/MODULE.md +8 -13
- package/lib/module/modules/number-input/NumberInput.js +8 -6
- package/lib/module/modules/number-input/NumberInput.variants.js +2 -4
- package/lib/module/modules/number-input/NumberInputProps.js +4 -0
- package/lib/module/modules/org-switcher/MODULE.md +5 -12
- package/lib/module/modules/org-switcher/OrgSwitcher.js +21 -19
- package/lib/module/modules/org-switcher/OrgSwitcher.variants.js +4 -2
- package/lib/module/modules/org-switcher/OrgSwitcherProps.js +4 -0
- package/lib/module/modules/pagination/MODULE.md +2 -5
- package/lib/module/modules/pagination/Pagination.js +25 -15
- package/lib/module/modules/pagination/Pagination.variants.js +2 -2
- package/lib/module/modules/pagination/PaginationControls.js +7 -5
- package/lib/module/modules/pagination/PaginationProps.js +4 -0
- package/lib/module/modules/person-chip/MODULE.md +11 -0
- package/lib/module/modules/person-chip/PersonChip.js +65 -0
- package/lib/module/modules/person-chip/PersonChipProps.js +4 -0
- package/lib/module/modules/person-chip/index.js +4 -0
- package/lib/module/modules/pin-input/MODULE.md +9 -20
- package/lib/module/modules/pin-input/PinInput.js +2 -2
- package/lib/module/modules/pin-input/PinInput.variants.js +2 -3
- package/lib/module/modules/pin-input/PinInputProps.js +4 -0
- package/lib/module/modules/plan-badge/MODULE.md +4 -0
- package/lib/module/modules/plan-badge/PlanBadge.js +25 -0
- package/lib/module/modules/plan-badge/PlanBadgeProps.js +4 -0
- package/lib/module/modules/plan-badge/index.js +4 -0
- package/lib/module/modules/plan-pill/MODULE.md +4 -0
- package/lib/module/modules/plan-pill/PlanPill.js +24 -0
- package/lib/module/modules/plan-pill/PlanPillProps.js +4 -0
- package/lib/module/modules/plan-pill/index.js +4 -0
- package/lib/module/modules/progress-bar/MODULE.md +12 -14
- package/lib/module/modules/progress-bar/ProgressBar.js +28 -36
- package/lib/module/modules/progress-bar/ProgressBarProps.js +4 -0
- package/lib/module/modules/radio-group/MODULE.md +6 -12
- package/lib/module/modules/radio-group/RadioGroup.js +7 -6
- package/lib/module/modules/radio-group/RadioGroup.variants.js +2 -3
- package/lib/module/modules/radio-group/RadioGroupProps.js +4 -0
- package/lib/module/modules/reorder/MODULE.md +7 -11
- package/lib/module/modules/reorder/Reorder.js +8 -3
- package/lib/module/modules/reorder/Reorder.variants.js +3 -4
- package/lib/module/modules/reorder/ReorderProps.js +4 -0
- package/lib/module/modules/rich-text/MODULE.md +4 -4
- package/lib/module/modules/rich-text/RichTextProps.js +4 -0
- package/lib/module/modules/rich-text-editor/MODULE.md +6 -16
- package/lib/module/modules/rich-text-editor/RichTextEditor.js +5 -4
- package/lib/module/modules/rich-text-editor/RichTextEditorProps.js +4 -0
- package/lib/module/modules/save-bar/MODULE.md +3 -0
- package/lib/module/modules/save-bar/SaveBar.js +49 -0
- package/lib/module/modules/save-bar/SaveBarProps.js +4 -0
- package/lib/module/modules/save-bar/index.js +4 -0
- package/lib/module/modules/screen/MODULE.md +7 -5
- package/lib/module/modules/screen/Screen.js +65 -22
- package/lib/module/modules/screen/ScreenProps.js +4 -0
- package/lib/module/modules/search-bar/MODULE.md +8 -8
- package/lib/module/modules/search-bar/SearchBar.js +8 -6
- package/lib/module/modules/search-bar/SearchBar.variants.js +2 -4
- package/lib/module/modules/search-bar/SearchBarProps.js +4 -0
- package/lib/module/modules/section/MODULE.md +1 -1
- package/lib/module/modules/section/Section.js +6 -1
- package/lib/module/modules/section/SectionProps.js +4 -0
- package/lib/module/modules/section-list/MODULE.md +21 -1
- package/lib/module/modules/section-list/SectionListProps.js +4 -0
- package/lib/module/modules/segmented-control/MODULE.md +30 -28
- package/lib/module/modules/segmented-control/SegmentedControl.js +20 -30
- package/lib/module/modules/segmented-control/SegmentedControl.variants.js +9 -42
- package/lib/module/modules/segmented-control/SegmentedControlProps.js +4 -0
- package/lib/module/modules/select/MODULE.md +8 -5
- package/lib/module/modules/select/Select.js +38 -25
- package/lib/module/modules/select/Select.variants.js +4 -5
- package/lib/module/modules/select/SelectProps.js +4 -0
- package/lib/module/modules/setting-row/MODULE.md +8 -0
- package/lib/module/modules/setting-row/SettingRow.js +50 -0
- package/lib/module/modules/setting-row/SettingRowProps.js +4 -0
- package/lib/module/modules/setting-row/index.js +4 -0
- package/lib/module/modules/settings-section/MODULE.md +7 -0
- package/lib/module/modules/settings-section/SettingsSection.js +37 -0
- package/lib/module/modules/settings-section/SettingsSectionProps.js +4 -0
- package/lib/module/modules/settings-section/index.js +4 -0
- package/lib/module/modules/skeleton/MODULE.md +2 -1
- package/lib/module/modules/skeleton/Skeleton.js +14 -8
- package/lib/module/modules/skeleton/Skeleton.variants.js +4 -9
- package/lib/module/modules/skeleton/SkeletonProps.js +4 -0
- package/lib/module/modules/slider/MODULE.md +2 -1
- package/lib/module/modules/slider/Slider.js +6 -6
- package/lib/module/modules/slider/Slider.variants.js +4 -2
- package/lib/module/modules/slider/SliderProps.js +4 -0
- package/lib/module/modules/spinner/MODULE.md +3 -2
- package/lib/module/modules/spinner/SpinnerProps.js +4 -0
- package/lib/module/modules/stage-progress/MODULE.md +20 -6
- package/lib/module/modules/stage-progress/StageProgress.js +45 -15
- package/lib/module/modules/stage-progress/StageProgress.variants.js +40 -8
- package/lib/module/modules/stage-progress/StageProgressProps.js +4 -0
- package/lib/module/modules/stat-grid/MODULE.md +11 -0
- package/lib/module/modules/stat-grid/StatGrid.js +34 -0
- package/lib/module/modules/stat-grid/StatGridProps.js +4 -0
- package/lib/module/modules/stat-grid/index.js +4 -0
- package/lib/module/modules/stat-tile/MODULE.md +12 -1
- package/lib/module/modules/stat-tile/StatTile.js +40 -15
- package/lib/module/modules/stat-tile/StatTile.variants.js +5 -0
- package/lib/module/modules/stat-tile/StatTileProps.js +4 -0
- package/lib/module/modules/state-block/MODULE.md +9 -3
- package/lib/module/modules/state-block/StateBlock.js +46 -38
- package/lib/module/modules/state-block/StateBlockProps.js +4 -0
- package/lib/module/modules/stepper/MODULE.md +2 -0
- package/lib/module/modules/stepper/Stepper.js +22 -21
- package/lib/module/modules/stepper/Stepper.variants.js +2 -0
- package/lib/module/modules/stepper/StepperProps.js +4 -0
- package/lib/module/modules/surface/MODULE.md +6 -8
- package/lib/module/modules/surface/Surface.js +6 -1
- package/lib/module/modules/surface/SurfaceProps.js +4 -0
- package/lib/module/modules/swipeable-row/MODULE.md +3 -2
- package/lib/module/modules/swipeable-row/SwipeableRow.js +31 -8
- package/lib/module/modules/swipeable-row/SwipeableRowProps.js +4 -0
- package/lib/module/modules/switch/MODULE.md +6 -3
- package/lib/module/modules/switch/Switch.js +42 -8
- package/lib/module/modules/switch/Switch.variants.js +2 -3
- package/lib/module/modules/switch/SwitchProps.js +4 -0
- package/lib/module/modules/tabs/MODULE.md +10 -14
- package/lib/module/modules/tabs/Tabs.js +84 -39
- package/lib/module/modules/tabs/Tabs.variants.js +2 -4
- package/lib/module/modules/tabs/TabsProps.js +4 -0
- package/lib/module/modules/text/MODULE.md +25 -17
- package/lib/module/modules/text/Text.variants.js +9 -1
- package/lib/module/modules/text/TextProps.js +4 -0
- package/lib/module/modules/textarea/MODULE.md +12 -18
- package/lib/module/modules/textarea/Textarea.js +12 -10
- package/lib/module/modules/textarea/Textarea.variants.js +4 -1
- package/lib/module/modules/textarea/TextareaProps.js +4 -0
- package/lib/module/modules/timeline/MODULE.md +8 -17
- package/lib/module/modules/timeline/Timeline.js +79 -22
- package/lib/module/modules/timeline/Timeline.variants.js +2 -0
- package/lib/module/modules/timeline/TimelineProps.js +4 -0
- package/lib/module/modules/toast/MODULE.md +13 -20
- package/lib/module/modules/toast/Toast.js +53 -51
- package/lib/module/modules/toast/Toast.variants.js +2 -5
- package/lib/module/modules/tooltip/MODULE.md +9 -13
- package/lib/module/modules/tooltip/Tooltip.js +36 -7
- package/lib/module/modules/tooltip/TooltipProps.js +4 -0
- package/lib/module/modules/typing-indicator/MODULE.md +1 -1
- package/lib/module/modules/typing-indicator/TypingIndicator.js +78 -51
- package/lib/module/modules/typing-indicator/TypingIndicatorProps.js +4 -0
- package/lib/module/modules/upgrade-button/MODULE.md +3 -0
- package/lib/module/modules/upgrade-button/UpgradeButton.js +23 -0
- package/lib/module/modules/upgrade-button/UpgradeButtonProps.js +4 -0
- package/lib/module/modules/upgrade-button/index.js +4 -0
- package/lib/module/theme/MODULE.md +2 -0
- package/lib/module/theme/platform/MODULE.md +2 -6
- package/lib/module/theme/platform/elevation.native.js +1 -7
- package/lib/module/theme/provider/PixelizeProvider.js +6 -0
- package/lib/module/theme/tokens/MODULE.md +4 -0
- package/lib/module/theme/tokens/THEME-CONTRACT.md +53 -3
- package/lib/module/theme/tokens/brands/emerald/palette.light.js +5 -3
- package/lib/module/theme/tokens/brands/lavender/palette.light.js +4 -4
- package/lib/module/theme/tokens/brands/meadow/palette.light.js +2 -2
- package/lib/module/theme/tokens/brands/radiant/palette.light.js +3 -3
- package/lib/module/theme/tokens/brands/rosewood/palette.light.js +3 -3
- package/lib/module/theme/tokens/brands/skyline/palette.light.js +2 -2
- package/lib/module/theme/tokens/brands/slate/palette.light.js +3 -3
- package/lib/module/theme/tokens/builders/accentText.js +10 -1
- package/lib/module/theme/tokens/builders/buildBrandScale.js +42 -0
- package/lib/module/theme/tokens/builders/gradientInk.js +23 -0
- package/lib/module/theme/tokens/builders/paletteFromAccent.js +30 -0
- package/lib/module/theme/tokens/builders/skeletonShimmer.js +22 -0
- package/lib/module/theme/tokens/index.js +3 -0
- package/lib/module/theme/tokens/primitives/controlSizes.js +16 -0
- package/lib/module/theme/tokens/primitives/index.js +1 -0
- package/lib/module/theme/tokens/roles/index.js +2 -0
- package/lib/typescript/core/a11y/touchTarget.d.ts +4 -0
- package/lib/typescript/core/blur/blur.d.ts +14 -0
- package/lib/typescript/core/blur/index.d.ts +3 -0
- package/lib/typescript/core/gradient/ShimmerGradientFill.d.ts +8 -0
- package/lib/typescript/core/gradient/index.d.ts +1 -0
- package/lib/typescript/core/list/VirtualList.d.ts +6 -1
- package/lib/typescript/core/motion/animatedComponents.d.ts +4 -0
- package/lib/typescript/core/motion/index.d.ts +2 -0
- package/lib/typescript/core/motion/motionAnimation.d.ts +12 -0
- package/lib/typescript/core/motion/presets.d.ts +5 -36
- package/lib/typescript/core/motion/reanimatedEasing.d.ts +4 -0
- package/lib/typescript/core/motion/useAnimatedValue.d.ts +2 -10
- package/lib/typescript/core/motion/useMotion.d.ts +4 -13
- package/lib/typescript/core/motion/usePressState.d.ts +0 -1
- package/lib/typescript/core/overlay/ModalPortalContext.d.ts +2 -0
- package/lib/typescript/core/overlay/index.d.ts +3 -0
- package/lib/typescript/core/overlay/renderWebPortal.d.ts +3 -0
- package/lib/typescript/core/overlay/renderWebPortal.web.d.ts +3 -0
- package/lib/typescript/core/screen-scroll/ScreenScrollContext.d.ts +8 -0
- package/lib/typescript/core/screen-scroll/index.d.ts +3 -0
- package/lib/typescript/core/slot/index.d.ts +2 -0
- package/lib/typescript/core/slot/nodeSlot.d.ts +5 -0
- package/lib/typescript/core/style/focusRing.d.ts +10 -0
- package/lib/typescript/core/style/index.d.ts +1 -1
- package/lib/typescript/index.d.ts +49 -11
- package/lib/typescript/modules/accordion/Accordion.d.ts +2 -37
- package/lib/typescript/modules/accordion/Accordion.variants.d.ts +2 -3
- package/lib/typescript/modules/accordion/AccordionProps.d.ts +49 -0
- package/lib/typescript/modules/accordion/index.d.ts +1 -1
- package/lib/typescript/modules/alert-dialog/AlertDialog.d.ts +2 -15
- package/lib/typescript/modules/alert-dialog/AlertDialogProps.d.ts +20 -0
- package/lib/typescript/modules/alert-dialog/index.d.ts +1 -1
- package/lib/typescript/modules/app-bar/AppBar.d.ts +1 -20
- package/lib/typescript/modules/app-bar/AppBar.variants.d.ts +4 -0
- package/lib/typescript/modules/app-bar/AppBarProps.d.ts +25 -0
- package/lib/typescript/modules/app-bar/index.d.ts +1 -1
- package/lib/typescript/modules/app-switcher/AppSwitcher.d.ts +3 -0
- package/lib/typescript/modules/app-switcher/AppSwitcherProps.d.ts +17 -0
- package/lib/typescript/modules/app-switcher/index.d.ts +3 -0
- package/lib/typescript/modules/appearance-settings/AppearanceSettings.d.ts +3 -0
- package/lib/typescript/modules/appearance-settings/AppearanceSettingsProps.d.ts +15 -0
- package/lib/typescript/modules/appearance-settings/index.d.ts +3 -0
- package/lib/typescript/modules/avatar/Avatar.d.ts +2 -33
- package/lib/typescript/modules/avatar/Avatar.variants.d.ts +2 -0
- package/lib/typescript/modules/avatar/AvatarProps.d.ts +23 -0
- package/lib/typescript/modules/avatar/index.d.ts +1 -1
- package/lib/typescript/modules/avatar-group/AvatarGroup.d.ts +1 -18
- package/lib/typescript/modules/avatar-group/AvatarGroupProps.d.ts +27 -0
- package/lib/typescript/modules/avatar-group/index.d.ts +1 -1
- package/lib/typescript/modules/backdrop/Backdrop.d.ts +3 -0
- package/lib/typescript/modules/backdrop/BackdropProps.d.ts +11 -0
- package/lib/typescript/modules/backdrop/index.d.ts +3 -0
- package/lib/typescript/modules/badge/Badge.d.ts +2 -14
- package/lib/typescript/modules/badge/BadgeProps.d.ts +17 -0
- package/lib/typescript/modules/badge/index.d.ts +1 -1
- package/lib/typescript/modules/banner/Banner.d.ts +1 -22
- package/lib/typescript/modules/banner/Banner.variants.d.ts +2 -0
- package/lib/typescript/modules/banner/BannerProps.d.ts +29 -0
- package/lib/typescript/modules/banner/index.d.ts +2 -1
- package/lib/typescript/modules/bottom-nav/BottomNav.d.ts +1 -34
- package/lib/typescript/modules/bottom-nav/BottomNav.variants.d.ts +2 -1
- package/lib/typescript/modules/bottom-nav/BottomNavProps.d.ts +29 -0
- package/lib/typescript/modules/bottom-nav/index.d.ts +2 -1
- package/lib/typescript/modules/bottom-sheet/BottomSheet.d.ts +1 -13
- package/lib/typescript/modules/bottom-sheet/BottomSheetProps.d.ts +17 -0
- package/lib/typescript/modules/bottom-sheet/index.d.ts +1 -1
- package/lib/typescript/modules/breadcrumbs/Breadcrumbs.d.ts +3 -0
- package/lib/typescript/modules/breadcrumbs/Breadcrumbs.variants.d.ts +6 -0
- package/lib/typescript/modules/breadcrumbs/BreadcrumbsProps.d.ts +18 -0
- package/lib/typescript/modules/breadcrumbs/index.d.ts +3 -0
- package/lib/typescript/modules/button/Button.d.ts +1 -35
- package/lib/typescript/modules/button/Button.variants.d.ts +11 -15
- package/lib/typescript/modules/button/ButtonProps.d.ts +47 -0
- package/lib/typescript/modules/button/index.d.ts +1 -1
- package/lib/typescript/modules/button-group/ButtonGroup.d.ts +2 -17
- package/lib/typescript/modules/button-group/ButtonGroup.variants.d.ts +2 -3
- package/lib/typescript/modules/button-group/ButtonGroupProps.d.ts +21 -0
- package/lib/typescript/modules/button-group/index.d.ts +1 -1
- package/lib/typescript/modules/card/Card.d.ts +2 -15
- package/lib/typescript/modules/card/CardProps.d.ts +27 -0
- package/lib/typescript/modules/card/index.d.ts +1 -1
- package/lib/typescript/modules/charts/BarChart.d.ts +1 -24
- package/lib/typescript/modules/charts/BarChartProps.d.ts +36 -0
- package/lib/typescript/modules/charts/BarList.d.ts +1 -16
- package/lib/typescript/modules/charts/BarListProps.d.ts +22 -0
- package/lib/typescript/modules/charts/ChartLegend.d.ts +2 -14
- package/lib/typescript/modules/charts/ChartLegendProps.d.ts +19 -0
- package/lib/typescript/modules/charts/Charts.variants.d.ts +2 -0
- package/lib/typescript/modules/charts/DonutChart.d.ts +1 -19
- package/lib/typescript/modules/charts/DonutChartProps.d.ts +27 -0
- package/lib/typescript/modules/charts/LineChart.d.ts +1 -28
- package/lib/typescript/modules/charts/LineChartProps.d.ts +40 -0
- package/lib/typescript/modules/charts/PieChart.d.ts +1 -16
- package/lib/typescript/modules/charts/PieChartProps.d.ts +24 -0
- package/lib/typescript/modules/charts/Sparkline.d.ts +1 -11
- package/lib/typescript/modules/charts/SparklineProps.d.ts +17 -0
- package/lib/typescript/modules/charts/index.d.ts +6 -6
- package/lib/typescript/modules/checkbox/Checkbox.d.ts +1 -33
- package/lib/typescript/modules/checkbox/Checkbox.variants.d.ts +2 -1
- package/lib/typescript/modules/checkbox/CheckboxProps.d.ts +27 -0
- package/lib/typescript/modules/checkbox/index.d.ts +1 -1
- package/lib/typescript/modules/chip/Chip.d.ts +1 -30
- package/lib/typescript/modules/chip/Chip.variants.d.ts +2 -1
- package/lib/typescript/modules/chip/ChipGroup.d.ts +1 -14
- package/lib/typescript/modules/chip/ChipGroupProps.d.ts +16 -0
- package/lib/typescript/modules/chip/ChipProps.d.ts +27 -0
- package/lib/typescript/modules/chip/index.d.ts +2 -2
- package/lib/typescript/modules/combobox/Combobox.d.ts +2 -45
- package/lib/typescript/modules/combobox/Combobox.variants.d.ts +3 -1
- package/lib/typescript/modules/combobox/ComboboxProps.d.ts +40 -0
- package/lib/typescript/modules/combobox/index.d.ts +1 -1
- package/lib/typescript/modules/composer/Composer.d.ts +1 -18
- package/lib/typescript/modules/composer/ComposerProps.d.ts +20 -0
- package/lib/typescript/modules/composer/index.d.ts +1 -1
- package/lib/typescript/modules/copy-button/CopyButton.d.ts +1 -15
- package/lib/typescript/modules/copy-button/CopyButton.variants.d.ts +2 -1
- package/lib/typescript/modules/copy-button/CopyButtonProps.d.ts +18 -0
- package/lib/typescript/modules/copy-button/index.d.ts +1 -1
- package/lib/typescript/modules/data-table/DataTable.d.ts +2 -31
- package/lib/typescript/modules/data-table/DataTable.variants.d.ts +2 -1
- package/lib/typescript/modules/data-table/DataTableProps.d.ts +43 -0
- package/lib/typescript/modules/data-table/index.d.ts +1 -1
- package/lib/typescript/modules/date-picker/Calendar.d.ts +1 -23
- package/lib/typescript/modules/date-picker/CalendarProps.d.ts +31 -0
- package/lib/typescript/modules/date-picker/DatePicker.d.ts +1 -27
- package/lib/typescript/modules/date-picker/DatePicker.variants.d.ts +2 -1
- package/lib/typescript/modules/date-picker/DatePickerProps.d.ts +33 -0
- package/lib/typescript/modules/date-picker/DateRangePicker.d.ts +1 -23
- package/lib/typescript/modules/date-picker/DateRangePickerProps.d.ts +27 -0
- package/lib/typescript/modules/date-picker/PickerField.d.ts +1 -17
- package/lib/typescript/modules/date-picker/PickerFieldProps.d.ts +19 -0
- package/lib/typescript/modules/date-picker/PickerShell.d.ts +1 -12
- package/lib/typescript/modules/date-picker/PickerShellProps.d.ts +16 -0
- package/lib/typescript/modules/date-picker/TimePicker.d.ts +1 -9
- package/lib/typescript/modules/date-picker/TimePickerProps.d.ts +14 -0
- package/lib/typescript/modules/date-picker/index.d.ts +4 -4
- package/lib/typescript/modules/description-list/DescriptionList.d.ts +8 -0
- package/lib/typescript/modules/description-list/DescriptionList.variants.d.ts +29 -0
- package/lib/typescript/modules/description-list/DescriptionListProps.d.ts +23 -0
- package/lib/typescript/modules/description-list/index.d.ts +4 -0
- package/lib/typescript/modules/divider/Divider.d.ts +1 -8
- package/lib/typescript/modules/divider/DividerProps.d.ts +11 -0
- package/lib/typescript/modules/divider/index.d.ts +1 -1
- package/lib/typescript/modules/document-viewer/DocumentViewer.d.ts +3 -0
- package/lib/typescript/modules/document-viewer/DocumentViewerProps.d.ts +13 -0
- package/lib/typescript/modules/document-viewer/index.d.ts +3 -0
- package/lib/typescript/modules/drawer/Drawer.d.ts +2 -7
- package/lib/typescript/modules/drawer/DrawerProps.d.ts +9 -0
- package/lib/typescript/modules/drawer/index.d.ts +1 -1
- package/lib/typescript/modules/empty-state/EmptyState.d.ts +1 -17
- package/lib/typescript/modules/empty-state/EmptyStateProps.d.ts +24 -0
- package/lib/typescript/modules/empty-state/index.d.ts +1 -1
- package/lib/typescript/modules/fab/Fab.d.ts +1 -51
- package/lib/typescript/modules/fab/Fab.variants.d.ts +3 -2
- package/lib/typescript/modules/fab/FabGroup.d.ts +1 -34
- package/lib/typescript/modules/fab/FabGroupProps.d.ts +34 -0
- package/lib/typescript/modules/fab/FabProps.d.ts +50 -0
- package/lib/typescript/modules/fab/index.d.ts +2 -2
- package/lib/typescript/modules/field-select-modal/FieldSelectModal.d.ts +3 -0
- package/lib/typescript/modules/field-select-modal/FieldSelectModalProps.d.ts +20 -0
- package/lib/typescript/modules/field-select-modal/index.d.ts +3 -0
- package/lib/typescript/modules/file-grid/FileGrid.d.ts +1 -18
- package/lib/typescript/modules/file-grid/FileGridProps.d.ts +23 -0
- package/lib/typescript/modules/file-grid/index.d.ts +1 -1
- package/lib/typescript/modules/file-upload/FileUpload.d.ts +1 -27
- package/lib/typescript/modules/file-upload/FileUploadProps.d.ts +27 -0
- package/lib/typescript/modules/file-upload/index.d.ts +1 -1
- package/lib/typescript/modules/filter-bar/FilterBar.d.ts +3 -0
- package/lib/typescript/modules/filter-bar/FilterBarProps.d.ts +17 -0
- package/lib/typescript/modules/filter-bar/index.d.ts +3 -0
- package/lib/typescript/modules/filter-sheet/FilterChip.d.ts +1 -9
- package/lib/typescript/modules/filter-sheet/FilterChipProps.d.ts +11 -0
- package/lib/typescript/modules/filter-sheet/FilterSheet.d.ts +1 -32
- package/lib/typescript/modules/filter-sheet/FilterSheet.variants.d.ts +2 -1
- package/lib/typescript/modules/filter-sheet/FilterSheetBody.d.ts +1 -1
- package/lib/typescript/modules/filter-sheet/FilterSheetProps.d.ts +36 -0
- package/lib/typescript/modules/filter-sheet/filterSheet.helpers.d.ts +1 -1
- package/lib/typescript/modules/filter-sheet/index.d.ts +2 -2
- package/lib/typescript/modules/folder-row/FolderRow.d.ts +1 -11
- package/lib/typescript/modules/folder-row/FolderRowProps.d.ts +17 -0
- package/lib/typescript/modules/folder-row/index.d.ts +1 -1
- package/lib/typescript/modules/form-field/FormField.d.ts +2 -17
- package/lib/typescript/modules/form-field/FormFieldProps.d.ts +23 -0
- package/lib/typescript/modules/form-field/index.d.ts +1 -1
- package/lib/typescript/modules/gantt/Gantt.d.ts +2 -9
- package/lib/typescript/modules/gantt/Gantt.variants.d.ts +8 -2
- package/lib/typescript/modules/gantt/GanttProps.d.ts +13 -0
- package/lib/typescript/modules/gantt/index.d.ts +1 -1
- package/lib/typescript/modules/image-viewer/ImageViewer.d.ts +2 -15
- package/lib/typescript/modules/image-viewer/ImageViewerProps.d.ts +16 -0
- package/lib/typescript/modules/image-viewer/index.d.ts +2 -1
- package/lib/typescript/modules/input/Input.d.ts +2 -30
- package/lib/typescript/modules/input/Input.variants.d.ts +2 -2
- package/lib/typescript/modules/input/InputProps.d.ts +43 -0
- package/lib/typescript/modules/input/index.d.ts +1 -1
- package/lib/typescript/modules/key-value/KeyValue.d.ts +3 -0
- package/lib/typescript/modules/key-value/KeyValueProps.d.ts +11 -0
- package/lib/typescript/modules/key-value/index.d.ts +3 -0
- package/lib/typescript/modules/limit-reached-modal/LimitReachedModal.d.ts +1 -17
- package/lib/typescript/modules/limit-reached-modal/LimitReachedModalProps.d.ts +24 -0
- package/lib/typescript/modules/limit-reached-modal/index.d.ts +1 -1
- package/lib/typescript/modules/list-item/ListItem.d.ts +2 -12
- package/lib/typescript/modules/list-item/ListItemProps.d.ts +22 -0
- package/lib/typescript/modules/list-item/index.d.ts +1 -1
- package/lib/typescript/modules/list-screen/ListScreen.d.ts +5 -0
- package/lib/typescript/modules/list-screen/ListScreenProps.d.ts +17 -0
- package/lib/typescript/modules/list-screen/index.d.ts +3 -0
- package/lib/typescript/modules/markdown/Markdown.d.ts +1 -8
- package/lib/typescript/modules/markdown/MarkdownProps.d.ts +12 -0
- package/lib/typescript/modules/markdown/index.d.ts +1 -1
- package/lib/typescript/modules/menu/Menu.d.ts +2 -19
- package/lib/typescript/modules/menu/Menu.variants.d.ts +2 -1
- package/lib/typescript/modules/menu/MenuProps.d.ts +26 -0
- package/lib/typescript/modules/menu/index.d.ts +1 -1
- package/lib/typescript/modules/message-bubble/MessageBubble.d.ts +1 -9
- package/lib/typescript/modules/message-bubble/MessageBubbleProps.d.ts +12 -0
- package/lib/typescript/modules/message-bubble/index.d.ts +1 -1
- package/lib/typescript/modules/modal/Modal.d.ts +2 -10
- package/lib/typescript/modules/modal/ModalPortalContext.d.ts +1 -1
- package/lib/typescript/modules/modal/ModalPortalProvider.d.ts +2 -12
- package/lib/typescript/modules/modal/ModalPortalProviderProps.d.ts +8 -0
- package/lib/typescript/modules/modal/ModalProps.d.ts +22 -0
- package/lib/typescript/modules/modal/index.d.ts +2 -2
- package/lib/typescript/modules/modal/renderWebPortal.d.ts +1 -14
- package/lib/typescript/modules/modal/renderWebPortal.web.d.ts +1 -18
- package/lib/typescript/modules/more-items/MoreItems.d.ts +2 -10
- package/lib/typescript/modules/more-items/MoreItems.variants.d.ts +3 -1
- package/lib/typescript/modules/more-items/MoreItemsProps.d.ts +14 -0
- package/lib/typescript/modules/more-items/index.d.ts +1 -1
- package/lib/typescript/modules/multi-select/MultiSelect.d.ts +1 -19
- package/lib/typescript/modules/multi-select/MultiSelect.variants.d.ts +2 -1
- package/lib/typescript/modules/multi-select/MultiSelectProps.d.ts +29 -0
- package/lib/typescript/modules/multi-select/index.d.ts +1 -1
- package/lib/typescript/modules/notification-bell/NotificationBell.d.ts +3 -0
- package/lib/typescript/modules/notification-bell/NotificationBellProps.d.ts +10 -0
- package/lib/typescript/modules/notification-bell/index.d.ts +3 -0
- package/lib/typescript/modules/number-input/NumberInput.d.ts +1 -26
- package/lib/typescript/modules/number-input/NumberInput.variants.d.ts +2 -3
- package/lib/typescript/modules/number-input/NumberInputProps.d.ts +23 -0
- package/lib/typescript/modules/number-input/index.d.ts +1 -1
- package/lib/typescript/modules/org-switcher/OrgSwitcher.d.ts +1 -24
- package/lib/typescript/modules/org-switcher/OrgSwitcher.variants.d.ts +2 -1
- package/lib/typescript/modules/org-switcher/OrgSwitcherProps.d.ts +29 -0
- package/lib/typescript/modules/org-switcher/index.d.ts +1 -1
- package/lib/typescript/modules/pagination/Pagination.d.ts +1 -26
- package/lib/typescript/modules/pagination/Pagination.variants.d.ts +2 -1
- package/lib/typescript/modules/pagination/PaginationProps.d.ts +28 -0
- package/lib/typescript/modules/pagination/index.d.ts +1 -1
- package/lib/typescript/modules/person-chip/PersonChip.d.ts +3 -0
- package/lib/typescript/modules/person-chip/PersonChipProps.d.ts +17 -0
- package/lib/typescript/modules/person-chip/index.d.ts +3 -0
- package/lib/typescript/modules/pin-input/PinInput.d.ts +1 -32
- package/lib/typescript/modules/pin-input/PinInput.variants.d.ts +2 -2
- package/lib/typescript/modules/pin-input/PinInputProps.d.ts +26 -0
- package/lib/typescript/modules/pin-input/index.d.ts +1 -1
- package/lib/typescript/modules/plan-badge/PlanBadge.d.ts +3 -0
- package/lib/typescript/modules/plan-badge/PlanBadgeProps.d.ts +10 -0
- package/lib/typescript/modules/plan-badge/index.d.ts +3 -0
- package/lib/typescript/modules/plan-pill/PlanPill.d.ts +3 -0
- package/lib/typescript/modules/plan-pill/PlanPillProps.d.ts +10 -0
- package/lib/typescript/modules/plan-pill/index.d.ts +3 -0
- package/lib/typescript/modules/progress-bar/ProgressBar.d.ts +1 -13
- package/lib/typescript/modules/progress-bar/ProgressBarProps.d.ts +16 -0
- package/lib/typescript/modules/progress-bar/index.d.ts +1 -1
- package/lib/typescript/modules/radio-group/RadioGroup.d.ts +2 -22
- package/lib/typescript/modules/radio-group/RadioGroup.variants.d.ts +2 -2
- package/lib/typescript/modules/radio-group/RadioGroupProps.d.ts +21 -0
- package/lib/typescript/modules/radio-group/index.d.ts +1 -1
- package/lib/typescript/modules/reorder/Reorder.d.ts +1 -13
- package/lib/typescript/modules/reorder/Reorder.variants.d.ts +2 -2
- package/lib/typescript/modules/reorder/ReorderProps.d.ts +19 -0
- package/lib/typescript/modules/reorder/index.d.ts +1 -1
- package/lib/typescript/modules/rich-text/RichText.d.ts +2 -10
- package/lib/typescript/modules/rich-text/RichTextProps.d.ts +15 -0
- package/lib/typescript/modules/rich-text/index.d.ts +1 -1
- package/lib/typescript/modules/rich-text-editor/RichTextEditor.d.ts +1 -45
- package/lib/typescript/modules/rich-text-editor/RichTextEditorProps.d.ts +40 -0
- package/lib/typescript/modules/rich-text-editor/index.d.ts +1 -1
- package/lib/typescript/modules/save-bar/SaveBar.d.ts +3 -0
- package/lib/typescript/modules/save-bar/SaveBarProps.d.ts +18 -0
- package/lib/typescript/modules/save-bar/index.d.ts +3 -0
- package/lib/typescript/modules/screen/Screen.d.ts +1 -24
- package/lib/typescript/modules/screen/ScreenProps.d.ts +35 -0
- package/lib/typescript/modules/screen/index.d.ts +1 -1
- package/lib/typescript/modules/search-bar/SearchBar.d.ts +2 -28
- package/lib/typescript/modules/search-bar/SearchBar.variants.d.ts +2 -3
- package/lib/typescript/modules/search-bar/SearchBarProps.d.ts +30 -0
- package/lib/typescript/modules/search-bar/index.d.ts +1 -1
- package/lib/typescript/modules/section/Section.d.ts +1 -8
- package/lib/typescript/modules/section/SectionProps.d.ts +11 -0
- package/lib/typescript/modules/section/index.d.ts +1 -1
- package/lib/typescript/modules/section-list/SectionList.d.ts +1 -19
- package/lib/typescript/modules/section-list/SectionListProps.d.ts +24 -0
- package/lib/typescript/modules/section-list/index.d.ts +1 -1
- package/lib/typescript/modules/segmented-control/SegmentedControl.d.ts +2 -41
- package/lib/typescript/modules/segmented-control/SegmentedControl.variants.d.ts +5 -44
- package/lib/typescript/modules/segmented-control/SegmentedControlProps.d.ts +29 -0
- package/lib/typescript/modules/segmented-control/index.d.ts +1 -1
- package/lib/typescript/modules/select/Select.d.ts +2 -13
- package/lib/typescript/modules/select/Select.variants.d.ts +2 -2
- package/lib/typescript/modules/select/SelectProps.d.ts +25 -0
- package/lib/typescript/modules/select/index.d.ts +2 -1
- package/lib/typescript/modules/setting-row/SettingRow.d.ts +3 -0
- package/lib/typescript/modules/setting-row/SettingRowProps.d.ts +14 -0
- package/lib/typescript/modules/setting-row/index.d.ts +3 -0
- package/lib/typescript/modules/settings-section/SettingsSection.d.ts +3 -0
- package/lib/typescript/modules/settings-section/SettingsSectionProps.d.ts +11 -0
- package/lib/typescript/modules/settings-section/index.d.ts +3 -0
- package/lib/typescript/modules/skeleton/Skeleton.d.ts +2 -12
- package/lib/typescript/modules/skeleton/Skeleton.variants.d.ts +3 -5
- package/lib/typescript/modules/skeleton/SkeletonProps.d.ts +18 -0
- package/lib/typescript/modules/skeleton/index.d.ts +1 -1
- package/lib/typescript/modules/slider/Slider.d.ts +1 -24
- package/lib/typescript/modules/slider/Slider.variants.d.ts +2 -1
- package/lib/typescript/modules/slider/SliderProps.d.ts +27 -0
- package/lib/typescript/modules/slider/index.d.ts +1 -1
- package/lib/typescript/modules/spinner/Spinner.d.ts +1 -11
- package/lib/typescript/modules/spinner/SpinnerProps.d.ts +15 -0
- package/lib/typescript/modules/spinner/index.d.ts +1 -1
- package/lib/typescript/modules/stage-progress/StageProgress.d.ts +1 -12
- package/lib/typescript/modules/stage-progress/StageProgress.variants.d.ts +16 -4
- package/lib/typescript/modules/stage-progress/StageProgressProps.d.ts +22 -0
- package/lib/typescript/modules/stage-progress/index.d.ts +1 -1
- package/lib/typescript/modules/stat-grid/StatGrid.d.ts +3 -0
- package/lib/typescript/modules/stat-grid/StatGridProps.d.ts +15 -0
- package/lib/typescript/modules/stat-grid/index.d.ts +3 -0
- package/lib/typescript/modules/stat-tile/StatTile.d.ts +1 -14
- package/lib/typescript/modules/stat-tile/StatTile.variants.d.ts +3 -0
- package/lib/typescript/modules/stat-tile/StatTileProps.d.ts +25 -0
- package/lib/typescript/modules/stat-tile/index.d.ts +1 -1
- package/lib/typescript/modules/state-block/StateBlock.d.ts +1 -32
- package/lib/typescript/modules/state-block/StateBlockProps.d.ts +36 -0
- package/lib/typescript/modules/state-block/index.d.ts +1 -1
- package/lib/typescript/modules/stepper/Stepper.d.ts +3 -11
- package/lib/typescript/modules/stepper/Stepper.variants.d.ts +2 -0
- package/lib/typescript/modules/stepper/StepperProps.d.ts +12 -0
- package/lib/typescript/modules/stepper/index.d.ts +2 -1
- package/lib/typescript/modules/surface/Surface.d.ts +1 -14
- package/lib/typescript/modules/surface/SurfaceProps.d.ts +17 -0
- package/lib/typescript/modules/surface/index.d.ts +1 -1
- package/lib/typescript/modules/swipeable-row/SwipeableRow.d.ts +1 -19
- package/lib/typescript/modules/swipeable-row/SwipeableRowProps.d.ts +22 -0
- package/lib/typescript/modules/swipeable-row/index.d.ts +1 -1
- package/lib/typescript/modules/switch/Switch.d.ts +1 -14
- package/lib/typescript/modules/switch/Switch.variants.d.ts +2 -2
- package/lib/typescript/modules/switch/SwitchProps.d.ts +20 -0
- package/lib/typescript/modules/switch/index.d.ts +1 -1
- package/lib/typescript/modules/tabs/Tabs.d.ts +1 -17
- package/lib/typescript/modules/tabs/Tabs.variants.d.ts +2 -3
- package/lib/typescript/modules/tabs/TabsProps.d.ts +29 -0
- package/lib/typescript/modules/tabs/index.d.ts +1 -1
- package/lib/typescript/modules/text/Text.d.ts +1 -24
- package/lib/typescript/modules/text/TextProps.d.ts +35 -0
- package/lib/typescript/modules/text/index.d.ts +1 -1
- package/lib/typescript/modules/textarea/Textarea.d.ts +1 -19
- package/lib/typescript/modules/textarea/Textarea.variants.d.ts +2 -1
- package/lib/typescript/modules/textarea/TextareaProps.d.ts +23 -0
- package/lib/typescript/modules/textarea/index.d.ts +1 -1
- package/lib/typescript/modules/timeline/Timeline.d.ts +1 -16
- package/lib/typescript/modules/timeline/Timeline.variants.d.ts +2 -0
- package/lib/typescript/modules/timeline/TimelineProps.d.ts +37 -0
- package/lib/typescript/modules/timeline/index.d.ts +1 -1
- package/lib/typescript/modules/toast/Toast.variants.d.ts +2 -3
- package/lib/typescript/modules/tooltip/Tooltip.d.ts +1 -25
- package/lib/typescript/modules/tooltip/TooltipProps.d.ts +27 -0
- package/lib/typescript/modules/tooltip/index.d.ts +1 -1
- package/lib/typescript/modules/typing-indicator/TypingIndicator.d.ts +5 -14
- package/lib/typescript/modules/typing-indicator/TypingIndicatorProps.d.ts +11 -0
- package/lib/typescript/modules/typing-indicator/index.d.ts +1 -1
- package/lib/typescript/modules/upgrade-button/UpgradeButton.d.ts +3 -0
- package/lib/typescript/modules/upgrade-button/UpgradeButtonProps.d.ts +11 -0
- package/lib/typescript/modules/upgrade-button/index.d.ts +3 -0
- package/lib/typescript/test/motionJest.d.ts +12 -0
- package/lib/typescript/theme/platform/elevation.native.d.ts +1 -1
- package/lib/typescript/theme/tokens/builders/accentText.d.ts +3 -0
- package/lib/typescript/theme/tokens/builders/buildBrandScale.d.ts +4 -0
- package/lib/typescript/theme/tokens/builders/gradientInk.d.ts +9 -0
- package/lib/typescript/theme/tokens/builders/paletteFromAccent.d.ts +3 -0
- package/lib/typescript/theme/tokens/builders/skeletonShimmer.d.ts +9 -0
- package/lib/typescript/theme/tokens/index.d.ts +3 -0
- package/lib/typescript/theme/tokens/primitives/controlSizes.d.ts +6 -0
- package/lib/typescript/theme/tokens/primitives/index.d.ts +2 -0
- package/lib/typescript/theme/tokens/roles/index.d.ts +2 -0
- package/lib/typescript/theme/tokens/types.d.ts +2 -2
- package/package.json +106 -5
- package/registry.json +109 -14
- package/lib/module/core/style/useThemedStyles.js +0 -8
- package/lib/module/test/mocks/flashList.js +0 -5
- package/lib/module/test/perfHelpers.js +0 -18
- package/lib/typescript/core/style/useThemedStyles.d.ts +0 -5
- package/lib/typescript/test/mocks/flashList.d.ts +0 -3
|
@@ -14,6 +14,7 @@ persistent title/children dialog, centered) and imports nothing from it.
|
|
|
14
14
|
| `index.ts` | Public surface: `Drawer`, `DrawerProps`. |
|
|
15
15
|
| `__tests__/Drawer.test.ts` | Pure: reduced-motion contract, bottom-inset fallback, panel/grabber colour resolution (all brands × modes). |
|
|
16
16
|
| `__tests__/Drawer.render.test.tsx` | Render: visibility, mount-through-exit-animation, dismissal paths, modal semantics, grabber a11y, reduced motion, and the web-portal opt-in branch (mocking `renderWebPortal`). |
|
|
17
|
+
| `__tests__/Drawer.dom.test.tsx` | Real DOM: modal semantics and the portal branch on react-native-web. |
|
|
17
18
|
| `__tests__/Drawer.keyboard.test.tsx` | Keyboard avoidance: no listener while closed, subscribe/unsubscribe with `mounted`, the tween's duration source, and the reduce-motion snap. |
|
|
18
19
|
|
|
19
20
|
## Props
|
|
@@ -30,8 +31,8 @@ transient overlay whose position is fixed by the component, not something an app
|
|
|
30
31
|
|
|
31
32
|
## Animation
|
|
32
33
|
|
|
33
|
-
One
|
|
34
|
-
and the backdrop's `opacity` in lockstep — why RN `<Modal>` is always given `animationType="none"`:
|
|
34
|
+
One animated value (`progress`, 0 → 1, from `core/motion`'s `useAnimatedValue`) drives both the
|
|
35
|
+
panel's `translateY` (window height → `0`) and the backdrop's `opacity` in lockstep — why RN `<Modal>` is always given `animationType="none"`:
|
|
35
36
|
RN's native transition is one discrete enum for the whole surface and can't also fade a
|
|
36
37
|
separately-Animated backdrop in step with a custom slide.
|
|
37
38
|
|
|
@@ -40,8 +41,8 @@ an instant snap, never a frozen half-slid frame.
|
|
|
40
41
|
|
|
41
42
|
**Exit-animation lifecycle.** RN's `<Modal>` only hides children once native dismissal completes or
|
|
42
43
|
the component unmounts, so Drawer keeps its own `mounted` state distinct from `visible`: on close the
|
|
43
|
-
exit animation starts immediately and a `setTimeout` (matching `duration`, not the
|
|
44
|
-
callback, which
|
|
44
|
+
exit animation starts immediately and a `setTimeout` (matching `duration`, not the animation's own
|
|
45
|
+
completion callback, which won't resolve deterministically under fake timers)
|
|
45
46
|
unmounts the `<Modal>` once finished — same idiom as `Toast.tsx`'s `hide()`.
|
|
46
47
|
|
|
47
48
|
## Keyboard avoidance
|
|
@@ -60,18 +61,13 @@ closed, the effect seeds the height from `Keyboard.metrics()` when it re-subscri
|
|
|
60
61
|
web, since react-native-web's `Keyboard` stub doesn't implement `metrics()` (unlike the other
|
|
61
62
|
`Keyboard` calls here, which it stubs as no-ops).
|
|
62
63
|
|
|
63
|
-
**Reduce motion (WCAG 2.3.3) applies here too.**
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
drops the `Animated.timing` restriction wholesale, so nothing else catches a regression here;
|
|
68
|
-
`__tests__/Drawer.keyboard.test.tsx` does.
|
|
64
|
+
**Reduce motion (WCAG 2.3.3) applies here too.** Keyboard padding uses **`runTiming`** on a
|
|
65
|
+
`useAnimatedValue` (layout-driven, not `useMotion().timing`), with `!motion.enabled`
|
|
66
|
+
snapping via `.value` and event duration falling back to `motion.duration("normal")` — never a
|
|
67
|
+
hardcoded literal. `__tests__/Drawer.keyboard.test.tsx` pins both halves.
|
|
69
68
|
|
|
70
|
-
**Invariant:** that padding lives on its own inner `
|
|
71
|
-
node
|
|
72
|
-
`useNativeDriver: true` (the panel's `translateY`); a JS-driven prop (`paddingBottom`) on that same
|
|
73
|
-
node then throws "Attempting to run JS driven animation on animated node that has been moved to
|
|
74
|
-
'native'" on the next keyboard toggle.
|
|
69
|
+
**Invariant:** that padding lives on its own inner animated `View`, never the panel's transform
|
|
70
|
+
node, so the layout-driven padding and the panel's slide never contend for the same node.
|
|
75
71
|
|
|
76
72
|
## Web portal mechanism (opt-in)
|
|
77
73
|
|
|
@@ -124,13 +120,7 @@ still correct.
|
|
|
124
120
|
|
|
125
121
|
## Performance
|
|
126
122
|
|
|
127
|
-
Wrapped in `React.memo` (repo-wide re-render audit, 2026-07-17 — see root `CLAUDE.md`). Only renders host primitives (`Pressable`/`View`/`
|
|
123
|
+
Wrapped in `React.memo` (repo-wide re-render audit, 2026-07-17 — see root `CLAUDE.md`). Only renders host primitives (`Pressable`/`View`/`Reanimated.View`/RN's own `Modal`) — no library child component receives a derived callback/array, so no `useCallback`/`useMemo` was needed.
|
|
128
124
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
- Theme imports decoupled to `theme/hooks`; optional peers (reanimated, gesture-handler, flash-list) load at runtime.
|
|
132
|
-
- List-heavy surfaces use `VirtualList` with device-tier window sizing where applicable.
|
|
133
|
-
- `React.memo` + stable callbacks retained; render-item/key-extractor hoisted per ESLint perf rules.
|
|
134
|
-
|
|
135
|
-
- **Round 2 visual** — radii retarget (`radii.md`/`lg`/`xl`/`full`), `borderCurve: continuous` on md+ corners; floating surfaces wire platform elevation/highlight where applicable.
|
|
136
|
-
- **Round 5 motion** — dropped the ad hoc reanimated `FadeInDown` wrapper around the handle/children (entrance-only, no exit — purely redundant with `progress`, which already drives panel+backdrop together). `DRAWER_BACKDROP`'s opacity now comes from the shared `MOTION_TRANSFORM.scrimOpacity`.
|
|
125
|
+
`DRAWER_BACKDROP`'s opacity comes from the shared `MOTION_TRANSFORM.scrimOpacity`; the handle and
|
|
126
|
+
children carry no entrance animation of their own — `progress` already drives panel and backdrop together.
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
import { memo, useMemo } from "react";
|
|
20
20
|
import { View } from "react-native";
|
|
21
|
-
import Reanimated, { FadeInDown, FadeOut, ReduceMotion } from "react-native-reanimated";
|
|
21
|
+
import Reanimated, { FadeInDown, FadeOut, LinearTransition, ReduceMotion } from "react-native-reanimated";
|
|
22
22
|
import { useAnnounce } from "../../core/a11y/index.js";
|
|
23
23
|
import { Icon } from "../../core/icon/index.js";
|
|
24
24
|
import { useTheme } from "../../theme/hooks.js";
|
|
@@ -53,6 +53,7 @@ export const EmptyState = /*#__PURE__*/memo(function EmptyState({
|
|
|
53
53
|
testID: testID,
|
|
54
54
|
entering: FadeInDown.springify().reduceMotion(ReduceMotion.System),
|
|
55
55
|
exiting: FadeOut.reduceMotion(ReduceMotion.System),
|
|
56
|
+
layout: LinearTransition.reduceMotion(ReduceMotion.System),
|
|
56
57
|
style: rootStyle,
|
|
57
58
|
children: [icon !== undefined && /*#__PURE__*/_jsx(View, {
|
|
58
59
|
testID: testID === undefined ? undefined : `${testID}-icon`,
|
|
@@ -19,7 +19,7 @@ identity, same reasoning `Divider`/`Avatar` give for theirs.
|
|
|
19
19
|
|
|
20
20
|
| Prop | Type | Default | Notes |
|
|
21
21
|
|------|------|---------|-------|
|
|
22
|
-
| `icon` | `IconName` | — | A NAME from the closed
|
|
22
|
+
| `icon` | `IconName` | — | A NAME from the closed `core/icon` catalogue, never a `ReactNode`. Decorative — hidden from assistive tech. |
|
|
23
23
|
| `title` | `string` | — | Required. Rendered bold, `fg.default`, centred. |
|
|
24
24
|
| `description` | `string` | — | Optional. Rendered `fg.muted`, centred, below the title. |
|
|
25
25
|
| `action` | `{ label: string; onPress: () => void }` | — | Optional. Rendered via this library's own `Button` (`tone="accent" variant="solid"`) — a justified composition, same reasoning `AlertDialog` documents for its own footer buttons. |
|
|
@@ -66,8 +66,9 @@ composition and `Select`'s reuse of stable siblings.
|
|
|
66
66
|
(same reasoning `Divider.test.ts` documents for its own decorative colour). Its ≥ 3:1 floor
|
|
67
67
|
against `bg.canvas` is still measured anyway, so a future edit can't silently regress it to
|
|
68
68
|
something illegible for sighted users.
|
|
69
|
-
- **2.3.3 (reduced motion)** —
|
|
70
|
-
`
|
|
69
|
+
- **2.3.3 (reduced motion)** — the root is a `Reanimated.View` with `FadeInDown` entering, `FadeOut`
|
|
70
|
+
exiting and a `LinearTransition` layout, each `.reduceMotion(ReduceMotion.System)`, so the OS
|
|
71
|
+
setting collapses them. The composed `Button` handles its own press-fade suppression.
|
|
71
72
|
- **Touch target (2.5.x)** — N/A for `EmptyState` itself (not interactive); the composed `Button`
|
|
72
73
|
meets its own 44dp floor.
|
|
73
74
|
|
|
@@ -89,9 +90,3 @@ None — no new icon, no new theme token, no new core helper needed for this com
|
|
|
89
90
|
## Performance
|
|
90
91
|
|
|
91
92
|
Wrapped in `React.memo` (repo-wide re-render audit, 2026-07-17 — see root `CLAUDE.md`). Its one library child, `Button`, receives `action.label`/`action.onPress` straight from the consumer's own `action` object, not a freshly-derived closure — nothing to memoize.
|
|
92
|
-
|
|
93
|
-
## Modernization (v1.0.7)
|
|
94
|
-
|
|
95
|
-
- Theme imports decoupled to `theme/hooks`; optional peers (reanimated, gesture-handler, flash-list) load at runtime.
|
|
96
|
-
- List-heavy surfaces use `VirtualList` with device-tier window sizing where applicable.
|
|
97
|
-
- `React.memo` + stable callbacks retained; render-item/key-extractor hoisted per ESLint perf rules.
|
|
@@ -31,11 +31,6 @@ import { elevation as elevationTokens } from "../../theme/tokens/primitives/inde
|
|
|
31
31
|
import { rippleColor } from "../../theme/platform/stateLayer.native.js";
|
|
32
32
|
import { useTheme } from "../../theme/hooks.js";
|
|
33
33
|
import { fabCircleStructure, fabExtendedStructure, fabOverlayColor, FAB_SIZES, resolveFabAccessibility, resolveFabAnchorStyle, resolveFabBottomInset, resolveFabFocusRingStyle, resolveFabHorizontalInset, resolveFabTone } from "./Fab.variants.js";
|
|
34
|
-
|
|
35
|
-
/** A Fab with a visible text label — the EXTENDED variant (a pill, icon + text). */
|
|
36
|
-
|
|
37
|
-
/** An icon-only Fab. No visible text, so `accessibilityLabel` is REQUIRED at the type level — the
|
|
38
|
-
* same trap `Button`'s icon-only shape closes. `label?: never` keeps the two shapes exclusive. */
|
|
39
34
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
40
35
|
const AnimatedPressable = Animated.createAnimatedComponent(Pressable);
|
|
41
36
|
const ICON_STROKE = 2;
|
|
@@ -125,8 +120,9 @@ function FabImpl(props) {
|
|
|
125
120
|
strokeWidth: ICON_STROKE
|
|
126
121
|
});
|
|
127
122
|
return /*#__PURE__*/_jsx(View, {
|
|
128
|
-
style: [anchor, style
|
|
129
|
-
|
|
123
|
+
style: [anchor, style, {
|
|
124
|
+
pointerEvents: "box-none"
|
|
125
|
+
}],
|
|
130
126
|
children: /*#__PURE__*/_jsxs(AnimatedPressable, {
|
|
131
127
|
testID: testID,
|
|
132
128
|
accessibilityRole: a11y.accessibilityRole,
|
|
@@ -157,16 +153,18 @@ function FabImpl(props) {
|
|
|
157
153
|
children: [/*#__PURE__*/_jsx(AccentGradientFill, {
|
|
158
154
|
color: toneColors.fill
|
|
159
155
|
}), /*#__PURE__*/_jsx(Animated.View, {
|
|
160
|
-
pointerEvents: "none",
|
|
161
156
|
style: [StyleSheet.absoluteFill, {
|
|
162
157
|
backgroundColor: overlayColor,
|
|
163
158
|
borderRadius: theme.radii.full,
|
|
164
159
|
borderCurve: "continuous"
|
|
165
|
-
}, press.overlayStyle
|
|
160
|
+
}, press.overlayStyle, {
|
|
161
|
+
pointerEvents: "none"
|
|
162
|
+
}]
|
|
166
163
|
}), focused && /*#__PURE__*/_jsx(View, {
|
|
167
|
-
pointerEvents: "none",
|
|
168
164
|
testID: testID ? `${testID}-focus-ring` : undefined,
|
|
169
|
-
style: focusRingStyle
|
|
165
|
+
style: [focusRingStyle, {
|
|
166
|
+
pointerEvents: "none"
|
|
167
|
+
}]
|
|
170
168
|
}), content, extended && /*#__PURE__*/_jsx(Text, {
|
|
171
169
|
numberOfLines: 1,
|
|
172
170
|
style: [theme.fontStyleForWeight(theme.fontWeights.semibold), {
|
|
@@ -22,10 +22,16 @@
|
|
|
22
22
|
* directly (mocking only `react-native`'s `StyleSheet`, as `core/style` does).
|
|
23
23
|
*/
|
|
24
24
|
|
|
25
|
+
import { MIN_TOUCH_TARGET } from "../../core/a11y/touchTarget.js";
|
|
26
|
+
import { withAlpha } from "../../core/gradient/index.js";
|
|
27
|
+
import { MOTION_TRANSFORM } from "../../core/motion/index.js";
|
|
25
28
|
import { createThemedVariants } from "../../core/style/index.js";
|
|
29
|
+
import { FOCUS_RING_GAP, FOCUS_RING_WIDTH } from "../../core/style/focusRing.js";
|
|
30
|
+
export { MIN_TOUCH_TARGET };
|
|
31
|
+
|
|
26
32
|
/** Both sizes already clear this floor directly (48dp / 56dp) — no `hitSlop` needed, unlike Button's
|
|
27
33
|
* shorter sizes (WCAG 2.5.5 AAA / Apple HIG minimum). */
|
|
28
|
-
|
|
34
|
+
|
|
29
35
|
export const FAB_SIZES = {
|
|
30
36
|
md: {
|
|
31
37
|
diameter: 48,
|
|
@@ -227,8 +233,8 @@ export function resolveFabGroupActionWindow(index, count, staggered) {
|
|
|
227
233
|
|
|
228
234
|
/** The focus ring sits a small gap OUTSIDE the control, on the canvas, because `border.focus` is the
|
|
229
235
|
* role token proven ≥ 3:1 against the canvas (WCAG 2.4.11) — drawn over a solid fill it could fail. */
|
|
230
|
-
export const FAB_FOCUS_RING_WIDTH =
|
|
231
|
-
export const FAB_FOCUS_RING_GAP =
|
|
236
|
+
export const FAB_FOCUS_RING_WIDTH = FOCUS_RING_WIDTH;
|
|
237
|
+
export const FAB_FOCUS_RING_GAP = FOCUS_RING_GAP;
|
|
232
238
|
/** The offset ring `Fab` and `FabGroup`'s trigger both draw on focus — one definition, since the two
|
|
233
239
|
* are the same circular silhouette. Kept a pure function of the two role/scale values it needs, so
|
|
234
240
|
* the ring geometry is unit-testable without rendering React Native. */
|
|
@@ -248,7 +254,7 @@ export function resolveFabFocusRingStyle(borderColor, borderRadius) {
|
|
|
248
254
|
|
|
249
255
|
/** The dismiss scrim behind an expanded FabGroup — a design constant, not a role token: decorative,
|
|
250
256
|
* same status `BACKDROP_SCRIM` (Menu/Select) and `DRAWER_BACKDROP` already have. */
|
|
251
|
-
export const FAB_GROUP_SCRIM = "#
|
|
257
|
+
export const FAB_GROUP_SCRIM = withAlpha("#000000", MOTION_TRANSFORM.scrimOpacity);
|
|
252
258
|
|
|
253
259
|
/** Structural circle — the icon-only shape. Colour (fill) is tone-driven, applied inline over this. */
|
|
254
260
|
export const fabCircleStructure = createThemedVariants(theme => ({
|
|
@@ -30,11 +30,13 @@
|
|
|
30
30
|
*/
|
|
31
31
|
|
|
32
32
|
import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
33
|
-
import {
|
|
34
|
-
import Reanimated from "react-native-reanimated";
|
|
33
|
+
import { Platform, Pressable, StyleSheet, Text, View } from "react-native";
|
|
34
|
+
import Reanimated, { interpolate, useAnimatedStyle } from "react-native-reanimated";
|
|
35
|
+
import { useReducedMotion } from "../../core/a11y/index.js";
|
|
35
36
|
import { useDismissOnEscape, useFocusTrap } from "../../core/a11y/keyboard";
|
|
37
|
+
import { useHaptics } from "../../core/haptics/index.js";
|
|
36
38
|
import { Icon } from "../../core/icon/index.js";
|
|
37
|
-
import {
|
|
39
|
+
import { useMotion, useAnimatedValue } from "../../core/motion/index.js";
|
|
38
40
|
import { usePressState } from "../../core/motion/usePressState.js";
|
|
39
41
|
import { rippleColor } from "../../theme/platform/stateLayer.native.js";
|
|
40
42
|
import { useTheme } from "../../theme/hooks.js";
|
|
@@ -73,22 +75,13 @@ function FabGroupActionRowImpl({
|
|
|
73
75
|
const colors = resolveFabTone(theme.colors, action.tone ?? fallbackTone);
|
|
74
76
|
const handlePress = useCallback(() => onSelect(action), [onSelect, action]);
|
|
75
77
|
const [start, end] = window;
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
extrapolate: "clamp"
|
|
80
|
-
}), [progress, start, end]);
|
|
81
|
-
const translateY = useMemo(() => progress.interpolate({
|
|
82
|
-
inputRange: [start, end],
|
|
83
|
-
outputRange: [motion.transform.offsetY, 0],
|
|
84
|
-
extrapolate: "clamp"
|
|
85
|
-
}), [progress, start, end, motion.transform.offsetY]);
|
|
86
|
-
const revealStyle = useMemo(() => ({
|
|
87
|
-
opacity: revealOpacity,
|
|
78
|
+
const offsetY = motion.transform.offsetY;
|
|
79
|
+
const revealStyle = useAnimatedStyle(() => ({
|
|
80
|
+
opacity: interpolate(progress.value, [start, end], [0, 1], "clamp"),
|
|
88
81
|
transform: [{
|
|
89
|
-
translateY
|
|
82
|
+
translateY: interpolate(progress.value, [start, end], [offsetY, 0], "clamp")
|
|
90
83
|
}]
|
|
91
|
-
})
|
|
84
|
+
}));
|
|
92
85
|
const androidRipple = useMemo(() => {
|
|
93
86
|
if (Platform.OS !== "android") return undefined;
|
|
94
87
|
return {
|
|
@@ -96,9 +89,7 @@ function FabGroupActionRowImpl({
|
|
|
96
89
|
borderless: false
|
|
97
90
|
};
|
|
98
91
|
}, [theme.mode]);
|
|
99
|
-
|
|
100
|
-
// Reveal (classic Animated) nests press feedback (Reanimated `usePressState`) — fades compose.
|
|
101
|
-
return /*#__PURE__*/_jsx(Animated.View, {
|
|
92
|
+
return /*#__PURE__*/_jsx(Reanimated.View, {
|
|
102
93
|
style: revealStyle,
|
|
103
94
|
children: /*#__PURE__*/_jsxs(AnimatedPressable, {
|
|
104
95
|
testID: testID,
|
|
@@ -155,6 +146,8 @@ function FabGroupImpl({
|
|
|
155
146
|
}) {
|
|
156
147
|
const theme = useTheme();
|
|
157
148
|
const motion = useMotion();
|
|
149
|
+
const haptics = useHaptics();
|
|
150
|
+
const reducedMotion = useReducedMotion();
|
|
158
151
|
const [internalOpen, setInternalOpen] = useState(false);
|
|
159
152
|
const isControlled = open !== undefined;
|
|
160
153
|
const expanded = isControlled ? open : internalOpen;
|
|
@@ -180,7 +173,7 @@ function FabGroupImpl({
|
|
|
180
173
|
if (expanded) {
|
|
181
174
|
setMounted(true);
|
|
182
175
|
if (!motion.enabled || duration === 0) {
|
|
183
|
-
progress.
|
|
176
|
+
progress.value = 1;
|
|
184
177
|
return;
|
|
185
178
|
}
|
|
186
179
|
running.current = motion.timing(progress, 1, {
|
|
@@ -191,7 +184,7 @@ function FabGroupImpl({
|
|
|
191
184
|
}
|
|
192
185
|
if (!mountedRef.current) return;
|
|
193
186
|
if (!motion.enabled || duration === 0) {
|
|
194
|
-
progress.
|
|
187
|
+
progress.value = 0;
|
|
195
188
|
setMounted(false);
|
|
196
189
|
return;
|
|
197
190
|
}
|
|
@@ -210,9 +203,10 @@ function FabGroupImpl({
|
|
|
210
203
|
if (unmountTimer.current !== null) clearTimeout(unmountTimer.current);
|
|
211
204
|
}, []);
|
|
212
205
|
const requestExpandedChange = useCallback(next => {
|
|
206
|
+
if (next && !expanded && !reducedMotion) haptics.impact("light");
|
|
213
207
|
if (!isControlled) setInternalOpen(next);
|
|
214
208
|
onOpenChange?.(next);
|
|
215
|
-
}, [isControlled, onOpenChange]);
|
|
209
|
+
}, [isControlled, onOpenChange, expanded, reducedMotion, haptics]);
|
|
216
210
|
const toggle = useCallback(() => {
|
|
217
211
|
if (disabled) return;
|
|
218
212
|
requestExpandedChange(!expanded);
|
|
@@ -246,10 +240,14 @@ function FabGroupImpl({
|
|
|
246
240
|
});
|
|
247
241
|
const actionDirection = resolveFabGroupActionDirection(position);
|
|
248
242
|
const stackAlign = resolveFabGroupStackAlign(position);
|
|
249
|
-
const
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
243
|
+
const rotateStyle = useAnimatedStyle(() => ({
|
|
244
|
+
transform: [{
|
|
245
|
+
rotate: `${interpolate(progress.value, [0, 1], [0, 45])}deg`
|
|
246
|
+
}]
|
|
247
|
+
}));
|
|
248
|
+
const scrimStyle = useAnimatedStyle(() => ({
|
|
249
|
+
opacity: progress.value
|
|
250
|
+
}));
|
|
253
251
|
const triggerPress = usePressState(disabled);
|
|
254
252
|
const triggerOverlayColor = fabOverlayColor(triggerColors.onFill);
|
|
255
253
|
const triggerRipple = useMemo(() => {
|
|
@@ -277,17 +275,19 @@ function FabGroupImpl({
|
|
|
277
275
|
tabIndex: -1,
|
|
278
276
|
style: StyleSheet.absoluteFill,
|
|
279
277
|
onPress: closeGroup,
|
|
280
|
-
children: /*#__PURE__*/_jsx(
|
|
281
|
-
pointerEvents: "none",
|
|
278
|
+
children: /*#__PURE__*/_jsx(Reanimated.View, {
|
|
282
279
|
style: [StyleSheet.absoluteFill, {
|
|
283
|
-
backgroundColor: FAB_GROUP_SCRIM
|
|
284
|
-
|
|
280
|
+
backgroundColor: FAB_GROUP_SCRIM
|
|
281
|
+
}, scrimStyle, {
|
|
282
|
+
pointerEvents: 'none'
|
|
285
283
|
}]
|
|
286
284
|
})
|
|
287
285
|
}), /*#__PURE__*/_jsxs(View, {
|
|
288
286
|
ref: anchorRef,
|
|
289
287
|
testID: testID ? `${testID}-anchor` : undefined,
|
|
290
|
-
style: [anchor, styles.anchorFlow, style
|
|
288
|
+
style: [anchor, styles.anchorFlow, style, {
|
|
289
|
+
pointerEvents: "box-none"
|
|
290
|
+
}]
|
|
291
291
|
// Modal exactly while the scrim is mounted, and on the anchor rather than the action stack
|
|
292
292
|
// so the trigger — the close affordance — stays inside the modal view with the actions.
|
|
293
293
|
// Both spellings: RN's View has no `aria-modal`, react-native-web has no
|
|
@@ -296,7 +296,6 @@ function FabGroupImpl({
|
|
|
296
296
|
accessibilityViewIsModal: mounted,
|
|
297
297
|
"aria-modal": mounted,
|
|
298
298
|
onAccessibilityEscape: mounted ? closeGroup : undefined,
|
|
299
|
-
pointerEvents: "box-none",
|
|
300
299
|
children: [/*#__PURE__*/_jsxs(AnimatedPressable, {
|
|
301
300
|
testID: testID ? `${testID}-trigger` : undefined,
|
|
302
301
|
accessibilityRole: a11y.accessibilityRole,
|
|
@@ -317,22 +316,20 @@ function FabGroupImpl({
|
|
|
317
316
|
backgroundColor: triggerColors.fill
|
|
318
317
|
}, triggerPress.animatedStyle, disabled && styles.dimmed, theme.elevation.lg],
|
|
319
318
|
children: [/*#__PURE__*/_jsx(Reanimated.View, {
|
|
320
|
-
pointerEvents: "none",
|
|
321
319
|
style: [StyleSheet.absoluteFill, {
|
|
322
320
|
backgroundColor: triggerOverlayColor,
|
|
323
321
|
borderRadius: theme.radii.full,
|
|
324
322
|
borderCurve: "continuous"
|
|
325
|
-
}, triggerPress.overlayStyle
|
|
323
|
+
}, triggerPress.overlayStyle, {
|
|
324
|
+
pointerEvents: "none"
|
|
325
|
+
}]
|
|
326
326
|
}), focused && /*#__PURE__*/_jsx(View, {
|
|
327
|
-
pointerEvents: "none",
|
|
328
327
|
testID: testID ? `${testID}-trigger-focus-ring` : undefined,
|
|
329
|
-
style: focusRingStyle
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
}]
|
|
335
|
-
},
|
|
328
|
+
style: [focusRingStyle, {
|
|
329
|
+
pointerEvents: 'none'
|
|
330
|
+
}]
|
|
331
|
+
}), /*#__PURE__*/_jsx(Reanimated.View, {
|
|
332
|
+
style: rotateStyle,
|
|
336
333
|
children: /*#__PURE__*/_jsx(Icon, {
|
|
337
334
|
name: icon,
|
|
338
335
|
size: spec.iconSize,
|
|
@@ -126,8 +126,7 @@ its trigger is not a tooltip target.
|
|
|
126
126
|
## Known gaps
|
|
127
127
|
|
|
128
128
|
- **Fab's own focus ring can be clipped by its `overflow: "hidden"`** — the ring is drawn with
|
|
129
|
-
negative offsets outside the control's own bounds, and the Pressable clips to its own rect.
|
|
130
|
-
in the Round 5 Android-parity pass, not fixed here (unrelated to that pass's scope). FabGroup's
|
|
129
|
+
negative offsets outside the control's own bounds, and the Pressable clips to its own rect. FabGroup's
|
|
131
130
|
trigger avoids this: it carries no `overflow: "hidden"`, since its overlay self-clips via its own
|
|
132
131
|
`borderRadius`.
|
|
133
132
|
- **No safe-area inset awareness** beyond the static iOS home-indicator approximation (see pattern
|
|
@@ -154,22 +153,22 @@ its trigger is not a tooltip target.
|
|
|
154
153
|
|
|
155
154
|
## Motion
|
|
156
155
|
|
|
157
|
-
Nothing in this module owns a duration, easing or
|
|
156
|
+
Nothing in this module owns a duration, easing or timing config — all of it comes from
|
|
158
157
|
`useMotion()` / `usePressMotion()` in `core/motion`, so retuning `core/motion/config.ts` retunes the
|
|
159
158
|
Fab too. Everything animates `opacity`/`transform` only, always on the native driver.
|
|
160
159
|
|
|
161
160
|
- **Press feedback** — Fab, the FabGroup trigger, and each action row all use `usePressState`
|
|
162
161
|
(`core/motion/usePressState`), the same width-aware scale + state-layer overlay + spring settle
|
|
163
|
-
every other pressable in this library uses
|
|
162
|
+
every other pressable in this library uses.
|
|
164
163
|
- **FabGroup expand/collapse** — one classic `progress` value; the trigger glyph rotates 0→45°, the
|
|
165
164
|
scrim fades, and each action row reveals over its own slice of that same value.
|
|
166
165
|
- **The action stagger is decorative** (`motion.decorative`, high tier only). It is expressed as a
|
|
167
166
|
per-row interpolation *window* (`resolveFabGroupActionWindow`), not per-row animations: no extra
|
|
168
167
|
timers or `Animated.Value`s, and it reverses correctly on close. On low/mid tier every row shares
|
|
169
168
|
the full `[0, 1]` window and the rows reveal together.
|
|
170
|
-
- **Action rows nest two
|
|
171
|
-
|
|
172
|
-
|
|
169
|
+
- **Action rows nest two animations**: an outer `Reanimated.View` reveal (opacity + translateY, tied
|
|
170
|
+
to `progress`) wraps the inner `usePressState`-driven `AnimatedPressable` — the two fades compose
|
|
171
|
+
by nesting rather than being multiplied into one value.
|
|
173
172
|
- In-flight animations are stopped on effect cleanup and on unmount.
|
|
174
173
|
|
|
175
174
|
## Performance
|
|
@@ -181,14 +180,8 @@ every parent render. The reversed row list is `useMemo`'d. The action stack and
|
|
|
181
180
|
while `mounted` (never while the trigger alone is on screen), matching Menu/Select/Drawer's
|
|
182
181
|
identical "sheet content built only while open" convention.
|
|
183
182
|
|
|
184
|
-
##
|
|
183
|
+
## Android
|
|
185
184
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
- **Round 2 visual** — radii retarget (`radii.md`/`lg`/`xl`/`full`), `borderCurve: continuous` on md+ corners; floating surfaces wire platform elevation/highlight where applicable.
|
|
191
|
-
- **Round 5 (Android parity + press unification)** — Fab, the trigger, and action rows switched from
|
|
192
|
-
hand-rolled classic-`Animated` press timing to the shared `usePressState`; `android_ripple` added
|
|
193
|
-
everywhere it was missing (`borderless: true` on the two circular icon-only targets, `false`
|
|
194
|
-
elsewhere); the trigger gained a press-state overlay matching Fab's own.
|
|
185
|
+
`android_ripple` on every pressable target: `borderless: true` on the two circular icon-only
|
|
186
|
+
controls (Fab, the trigger), `false` elsewhere. FabGroup's dismiss scrim uses
|
|
187
|
+
`MOTION_TRANSFORM.scrimOpacity`.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo, useCallback } from "react";
|
|
4
|
+
import { View } from "react-native";
|
|
5
|
+
import { Checkbox } from "../checkbox/index.js";
|
|
6
|
+
import { ListItem } from "../list-item/index.js";
|
|
7
|
+
import { Modal } from "../modal/index.js";
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
export const FieldSelectModal = /*#__PURE__*/memo(function FieldSelectModal({
|
|
10
|
+
visible,
|
|
11
|
+
onRequestClose,
|
|
12
|
+
title,
|
|
13
|
+
options,
|
|
14
|
+
selectedIds,
|
|
15
|
+
onChange,
|
|
16
|
+
multiple = true,
|
|
17
|
+
style,
|
|
18
|
+
testID
|
|
19
|
+
}) {
|
|
20
|
+
const toggle = useCallback(id => {
|
|
21
|
+
if (!multiple) {
|
|
22
|
+
onChange([id]);
|
|
23
|
+
onRequestClose();
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const set = new Set(selectedIds);
|
|
27
|
+
if (set.has(id)) set.delete(id);else set.add(id);
|
|
28
|
+
onChange([...set]);
|
|
29
|
+
}, [multiple, onChange, onRequestClose, selectedIds]);
|
|
30
|
+
return /*#__PURE__*/_jsx(Modal, {
|
|
31
|
+
visible: visible,
|
|
32
|
+
onRequestClose: onRequestClose,
|
|
33
|
+
title: title,
|
|
34
|
+
testID: testID,
|
|
35
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
36
|
+
style: style,
|
|
37
|
+
children: options.map(option => {
|
|
38
|
+
const checked = selectedIds.includes(option.id);
|
|
39
|
+
return /*#__PURE__*/_jsx(ListItem, {
|
|
40
|
+
title: option.label,
|
|
41
|
+
onPress: () => toggle(option.id),
|
|
42
|
+
leading: multiple ? /*#__PURE__*/_jsx(Checkbox, {
|
|
43
|
+
checked: checked,
|
|
44
|
+
onCheckedChange: () => toggle(option.id),
|
|
45
|
+
accessibilityLabel: option.label
|
|
46
|
+
}) : undefined
|
|
47
|
+
}, option.id);
|
|
48
|
+
})
|
|
49
|
+
})
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=FieldSelectModal.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# field-select-modal/ — a column and field visibility picker in a Modal
|
|
2
|
+
|
|
3
|
+
A list of `ListItem` rows inside this library's own `Modal`. `multiple` (default `true`) gives each
|
|
4
|
+
row a leading `Checkbox` and toggles ids in place; `multiple={false}` drops the checkbox, replaces
|
|
5
|
+
the selection with the tapped id and closes the modal.
|
|
6
|
+
|
|
7
|
+
## Props
|
|
8
|
+
|
|
9
|
+
`visible`, `onRequestClose`, `title`, `options: readonly FieldSelectOption[]` (`{ id, label }`),
|
|
10
|
+
`selectedIds: readonly string[]`, `onChange(selectedIds)` — all required — plus `multiple?` (`true`),
|
|
11
|
+
`style?: LayoutStyle` (on the rows' wrapper `View`, not the modal) and `testID?`.
|
|
12
|
+
|
|
13
|
+
Exported from the package root as `FieldSelectModal` / `FieldSelectModalProps` / `FieldSelectOption`.
|
|
@@ -134,8 +134,9 @@ const FileGridCell = /*#__PURE__*/memo(function FileGridCell({
|
|
|
134
134
|
} : undefined,
|
|
135
135
|
style: pressableStyle,
|
|
136
136
|
children: [/*#__PURE__*/_jsx(Animated.View, {
|
|
137
|
-
|
|
138
|
-
|
|
137
|
+
style: [StyleSheet.absoluteFill, overlayStaticStyle, press.overlayStyle, {
|
|
138
|
+
pointerEvents: 'none'
|
|
139
|
+
}]
|
|
139
140
|
}), content]
|
|
140
141
|
});
|
|
141
142
|
});
|
|
@@ -1,14 +1,37 @@
|
|
|
1
|
-
# file-grid/
|
|
1
|
+
# file-grid/ — a 2/3/4-column grid of file and folder cells
|
|
2
2
|
|
|
3
3
|
Grid of file/folder cells with icon + label. `columns`: 2 | 3 | 4. Cells are a tonal `bg.raised`
|
|
4
4
|
fill, no hairline border — the same borderless-tile treatment `Card`'s `elevated` variant uses.
|
|
5
5
|
|
|
6
|
+
## Files
|
|
7
|
+
|
|
8
|
+
| File | Role |
|
|
9
|
+
|------|------|
|
|
10
|
+
| `FileGrid.tsx` | The component. |
|
|
11
|
+
| `FileGrid.variants.ts` | `FileGridColumns` + the pure resolvers (`resolveFileGridItemLabel`, cell structure). |
|
|
12
|
+
| `index.ts` | Public surface: `FileGrid`, `FileGridProps`, `FileGridItem`, `FileGridColumns`. |
|
|
13
|
+
| `__tests__/FileGrid.test.ts` | Pure: a placeholder suite — the resolvers are not actually asserted yet. |
|
|
14
|
+
| `__tests__/FileGrid.render.test.tsx` | Render: cells, press wiring, the read-only cell's name. |
|
|
15
|
+
|
|
16
|
+
## Props
|
|
17
|
+
|
|
18
|
+
| Prop | Type | Default | Notes |
|
|
19
|
+
|------|------|---------|-------|
|
|
20
|
+
| `items` | `readonly FileGridItem[]` | — | Required. `{ id, label, icon?: IconName, typeLabel? }`. |
|
|
21
|
+
| `columns` | `2 \| 3 \| 4` | `3` | |
|
|
22
|
+
| `onItemPress` | `(id: string) => void` | — | Absent = read-only cells, not `Pressable`. |
|
|
23
|
+
| `style` | `LayoutStyle` | — | Layout-only, outermost, applied exactly once, last. |
|
|
24
|
+
| `testID` | `string` | — | |
|
|
25
|
+
|
|
6
26
|
## Accessibility contract (WCAG)
|
|
7
27
|
|
|
8
28
|
- **1.3.1** — file **type** (folder vs. image vs. document) is conveyed only by the icon glyph, and a
|
|
9
29
|
glyph has no text equivalent. `FileGridItem.typeLabel` (optional) supplies it; a cell's accessible
|
|
10
30
|
name is `resolveFileGridItemLabel(label, typeLabel)` → `"<label>, <typeLabel>"`, falling back to
|
|
11
31
|
`label` alone when the consumer names no type. Applies to both a pressable cell
|
|
12
|
-
(`accessibilityLabel`) and a read-only one (
|
|
13
|
-
|
|
14
|
-
|
|
32
|
+
(`accessibilityLabel`) and a read-only one (a `View` with `accessible` + `accessibilityLabel`).
|
|
33
|
+
- **Press feedback** — cells take `usePressState` (scale + state-layer overlay), inert while
|
|
34
|
+
`onItemPress` is absent.
|
|
35
|
+
|
|
36
|
+
Rows are chunked to a fixed height and rendered through `core/list`'s `VirtualList`, so a long
|
|
37
|
+
folder listing windows instead of mounting every cell.
|