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
|
@@ -34,13 +34,13 @@
|
|
|
34
34
|
*/
|
|
35
35
|
|
|
36
36
|
import { memo, useCallback, useContext, useEffect, useId, useMemo, useRef, useState } from "react";
|
|
37
|
-
import {
|
|
38
|
-
import Reanimated, { FadeInDown, ReduceMotion } from "react-native-reanimated";
|
|
37
|
+
import { Modal, Platform, Pressable, StyleSheet, Text, TextInput, View } from "react-native";
|
|
38
|
+
import Reanimated, { FadeInDown, ReduceMotion, useAnimatedStyle } from "react-native-reanimated";
|
|
39
39
|
import { useAnnounce } from "../../core/a11y/index.js";
|
|
40
40
|
import { useDismissOnEscape, useFocusTrap, useSpaceActivation } from "../../core/a11y/keyboard";
|
|
41
41
|
import { Icon } from "../../core/icon/index.js";
|
|
42
42
|
import { VirtualList } from "../../core/list/index.js";
|
|
43
|
-
import { useMotion, usePressMotion, useReveal } from "../../core/motion/index.js";
|
|
43
|
+
import { useAnimatedValue, useMotion, usePressMotion, useReveal } from "../../core/motion/index.js";
|
|
44
44
|
import { elevation, floatingBackground, floatingSurfaceStyle, highlight, rippleColor } from "../../theme/platform/index.js";
|
|
45
45
|
import { elevation as elevationTokens } from "../../theme/tokens/primitives/index.js";
|
|
46
46
|
import { useTheme } from "../../theme/hooks.js";
|
|
@@ -49,12 +49,6 @@ import { renderWebPortal } from "../modal/renderWebPortal";
|
|
|
49
49
|
import { Spinner } from "../spinner/index.js";
|
|
50
50
|
import { useComboboxKeys } from "./comboboxKeys";
|
|
51
51
|
import { COMBOBOX_CLEAR_BUTTON_HIT_SLOP, COMBOBOX_FIELD_FONT_SIZE, COMBOBOX_FIELD_HIT_SLOP, COMBOBOX_FIELD_ICON_SIZE, COMBOBOX_LISTBOX_ROLE, COMBOBOX_ROW_ICON_SIZE, comboboxOptionNativeId, DEFAULT_EMPTY_MESSAGE, DEFAULT_MAX_HEIGHT, DEFAULT_PLACEHOLDER, DEFAULT_SEARCH_PLACEHOLDER, FILTER_DEBOUNCE_MS, SEARCH_DEBOUNCE_MS, comboboxClearButtonStructure, comboboxFieldStructure, comboboxFieldValueStructure, comboboxListStateStructure, comboboxOverlayStructure, comboboxRowStructure, comboboxRowTextStructure, comboboxSearchRowStructure, comboboxSheetStructure, COMBOBOX_ROW_MIN_HEIGHT, normalizeForSearch, resolveComboboxAccessibility, resolveComboboxErrorTextColor, resolveComboboxRowAccessibility, resolveComboboxRowColors, resolveComboboxSummary, resolveComboboxTriggerColors } from "./Combobox.variants.js";
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* A discriminated union, not one flat interface with every field optional: `multiple: true` requires
|
|
55
|
-
* `values`/`onValuesChange`, the default (`multiple` absent/`false`) requires `value`/`onChange` — a
|
|
56
|
-
* caller can never wire the wrong pair for the active mode and have it silently do nothing.
|
|
57
|
-
*/
|
|
58
52
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
59
53
|
const ICON_STROKE = 2;
|
|
60
54
|
const FOCUS_RING_WIDTH = 2;
|
|
@@ -75,7 +69,7 @@ const ComboboxOptionRow = /*#__PURE__*/memo(function ComboboxOptionRow({
|
|
|
75
69
|
const rowDisabled = option.disabled === true;
|
|
76
70
|
const motion = useMotion();
|
|
77
71
|
const press = usePressMotion(rowDisabled);
|
|
78
|
-
const checkOpacity =
|
|
72
|
+
const checkOpacity = useAnimatedValue(selected ? 1 : 0);
|
|
79
73
|
const skipFirst = useRef(true);
|
|
80
74
|
const running = useRef(null);
|
|
81
75
|
|
|
@@ -84,11 +78,11 @@ const ComboboxOptionRow = /*#__PURE__*/memo(function ComboboxOptionRow({
|
|
|
84
78
|
running.current?.stop();
|
|
85
79
|
if (skipFirst.current) {
|
|
86
80
|
skipFirst.current = false;
|
|
87
|
-
checkOpacity.
|
|
81
|
+
checkOpacity.value = selected ? 1 : 0;
|
|
88
82
|
return;
|
|
89
83
|
}
|
|
90
84
|
if (!motion.enabled) {
|
|
91
|
-
checkOpacity.
|
|
85
|
+
checkOpacity.value = selected ? 1 : 0;
|
|
92
86
|
return;
|
|
93
87
|
}
|
|
94
88
|
running.current = motion.timing(checkOpacity, selected ? 1 : 0, {
|
|
@@ -98,6 +92,9 @@ const ComboboxOptionRow = /*#__PURE__*/memo(function ComboboxOptionRow({
|
|
|
98
92
|
return () => running.current?.stop();
|
|
99
93
|
}, [selected, motion, checkOpacity]);
|
|
100
94
|
useEffect(() => () => running.current?.stop(), []);
|
|
95
|
+
const checkStyle = useAnimatedStyle(() => ({
|
|
96
|
+
opacity: checkOpacity.value
|
|
97
|
+
}));
|
|
101
98
|
const rowA11y = useMemo(() => resolveComboboxRowAccessibility({
|
|
102
99
|
selected,
|
|
103
100
|
disabled: rowDisabled
|
|
@@ -125,9 +122,6 @@ const ComboboxOptionRow = /*#__PURE__*/memo(function ComboboxOptionRow({
|
|
|
125
122
|
fontSize: theme.fontSizes.xs,
|
|
126
123
|
color: rowColors.muted
|
|
127
124
|
}], [theme, rowColors.muted]);
|
|
128
|
-
const checkStyle = useMemo(() => ({
|
|
129
|
-
opacity: checkOpacity
|
|
130
|
-
}), [checkOpacity]);
|
|
131
125
|
return /*#__PURE__*/_jsx(Pressable, {
|
|
132
126
|
testID: testID ? `${testID}-option-${option.value}` : undefined,
|
|
133
127
|
nativeID: nativeID,
|
|
@@ -143,7 +137,7 @@ const ComboboxOptionRow = /*#__PURE__*/memo(function ComboboxOptionRow({
|
|
|
143
137
|
onPressOut: press.onPressOut,
|
|
144
138
|
android_ripple: androidRipple,
|
|
145
139
|
style: pressableStyle,
|
|
146
|
-
children: /*#__PURE__*/_jsxs(
|
|
140
|
+
children: /*#__PURE__*/_jsxs(Reanimated.View, {
|
|
147
141
|
testID: testID ? `${testID}-option-${option.value}-content` : undefined,
|
|
148
142
|
style: contentStyle,
|
|
149
143
|
children: [option.icon !== undefined && /*#__PURE__*/_jsx(Icon, {
|
|
@@ -162,7 +156,7 @@ const ComboboxOptionRow = /*#__PURE__*/memo(function ComboboxOptionRow({
|
|
|
162
156
|
style: descriptionStyle,
|
|
163
157
|
children: option.description
|
|
164
158
|
})]
|
|
165
|
-
}), selected && /*#__PURE__*/_jsx(
|
|
159
|
+
}), selected && /*#__PURE__*/_jsx(Reanimated.View, {
|
|
166
160
|
testID: testID ? `${testID}-option-${option.value}-check` : undefined,
|
|
167
161
|
style: checkStyle,
|
|
168
162
|
children: /*#__PURE__*/_jsx(Icon, {
|
|
@@ -459,12 +453,13 @@ export const Combobox = /*#__PURE__*/memo(function Combobox(props) {
|
|
|
459
453
|
style: backdropStyle,
|
|
460
454
|
onPress: closeSheet
|
|
461
455
|
}), /*#__PURE__*/_jsx(View, {
|
|
462
|
-
style: overlayStyle,
|
|
463
|
-
|
|
456
|
+
style: [overlayStyle, {
|
|
457
|
+
pointerEvents: "box-none"
|
|
458
|
+
}],
|
|
464
459
|
children: /*#__PURE__*/_jsx(Reanimated.View, {
|
|
460
|
+
ref: sheetRef,
|
|
465
461
|
entering: FadeInDown.springify().reduceMotion(ReduceMotion.System),
|
|
466
|
-
children: /*#__PURE__*/_jsxs(
|
|
467
|
-
ref: sheetRef,
|
|
462
|
+
children: /*#__PURE__*/_jsxs(Reanimated.View, {
|
|
468
463
|
style: sheetStyle,
|
|
469
464
|
children: [/*#__PURE__*/_jsxs(View, {
|
|
470
465
|
style: searchRowStyle,
|
|
@@ -525,8 +520,9 @@ export const Combobox = /*#__PURE__*/memo(function Combobox(props) {
|
|
|
525
520
|
// Web portal opt-in — see Modal.tsx's/Select.tsx's identical branch + ModalPortalContext.ts. Every
|
|
526
521
|
// other case (native, or web with no ModalPortalProvider) renders through RN's own <Modal> below.
|
|
527
522
|
const menu = Platform.OS === "web" && portalContainer != null ? open ? renderWebPortal(/*#__PURE__*/_jsx(View, {
|
|
528
|
-
style: StyleSheet.absoluteFill,
|
|
529
|
-
|
|
523
|
+
style: [StyleSheet.absoluteFill, {
|
|
524
|
+
pointerEvents: "box-none"
|
|
525
|
+
}],
|
|
530
526
|
children: sheet
|
|
531
527
|
}), portalContainer) : null : /*#__PURE__*/_jsx(Modal, {
|
|
532
528
|
visible: open,
|
|
@@ -562,9 +558,10 @@ export const Combobox = /*#__PURE__*/memo(function Combobox(props) {
|
|
|
562
558
|
android_ripple: triggerRipple,
|
|
563
559
|
style: fieldStyle,
|
|
564
560
|
children: [showFocusRing && /*#__PURE__*/_jsx(View, {
|
|
565
|
-
pointerEvents: "none",
|
|
566
561
|
testID: testID ? `${testID}-focus-ring` : undefined,
|
|
567
|
-
style: focusRingStyle
|
|
562
|
+
style: [focusRingStyle, {
|
|
563
|
+
pointerEvents: "none"
|
|
564
|
+
}]
|
|
568
565
|
}), /*#__PURE__*/_jsxs(View, {
|
|
569
566
|
style: fieldValueStyle,
|
|
570
567
|
children: [singleSelectedOption?.icon !== undefined && /*#__PURE__*/_jsx(Icon, {
|
|
@@ -25,11 +25,9 @@
|
|
|
25
25
|
* this directly (mocking only `react-native`'s `StyleSheet`, as `core/style` does).
|
|
26
26
|
*/
|
|
27
27
|
|
|
28
|
+
import { MIN_TOUCH_TARGET, slopFor } from "../../core/a11y/touchTarget.js";
|
|
28
29
|
import { createThemedVariants } from "../../core/style/index.js";
|
|
29
30
|
/** Same touch-target floor as Button/Select/Input (44dp — Apple HIG minimum, WCAG 2.5.5 AAA). */
|
|
30
|
-
export const MIN_TOUCH_TARGET = 44;
|
|
31
|
-
const slopFor = dimension => Math.max(0, Math.ceil((MIN_TOUCH_TARGET - dimension) / 2));
|
|
32
|
-
|
|
33
31
|
/** No `size` prop (unlike Select/MultiSelect) — not part of this module's spec, and a search sheet's
|
|
34
32
|
* proportions don't benefit from the sm/lg range those triggers offer. One fixed box, sized exactly
|
|
35
33
|
* like Input's/Select's `md`, so a Combobox lines up with either in the same form. */
|
|
@@ -65,6 +63,7 @@ export const FILTER_DEBOUNCE_MS = 140;
|
|
|
65
63
|
* Strips combining diacritical marks after Unicode NFD decomposition, so "José" and "jose" match the
|
|
66
64
|
* same query. Lowercased last so the comparison is also case-insensitive.
|
|
67
65
|
*/
|
|
66
|
+
export { MIN_TOUCH_TARGET };
|
|
68
67
|
export function normalizeForSearch(value) {
|
|
69
68
|
return value.normalize("NFD").replace(/\p{Diacritic}/gu, "").toLowerCase();
|
|
70
69
|
}
|
|
@@ -25,7 +25,7 @@ reuses directly, e.g. from `SearchBar`).
|
|
|
25
25
|
| `__tests__/Combobox.keyboard.test.tsx` | Web keyboard: `aria-activedescendant` tracks the arrows, Enter selects, Space stays with the search field, Escape closes, trigger opens on Space. |
|
|
26
26
|
| `__tests__/Combobox.filter.test.tsx` | The memoized filter matches `defaultComboboxFilter` exactly across diacritics/mixed case; a `filterFn` still runs per option. |
|
|
27
27
|
| `__tests__/Combobox.layout.test.tsx` | `getItemLayout` is derived for uniform rows and absent as soon as one option has a `description`. |
|
|
28
|
-
| `__tests__/Combobox.motion.test.tsx` | Reduce-motion (WCAG 2.3.3): check-glyph and press feedback snap to their final values,
|
|
28
|
+
| `__tests__/Combobox.motion.test.tsx` | Reduce-motion (WCAG 2.3.3): check-glyph and press feedback snap to their final values, with no tween scheduled. |
|
|
29
29
|
|
|
30
30
|
## Props
|
|
31
31
|
|
|
@@ -171,7 +171,7 @@ handler.
|
|
|
171
171
|
|
|
172
172
|
Via `core/motion` only — `opacity`/`transform`, native driver, all reduce-motion aware.
|
|
173
173
|
|
|
174
|
-
- **Row press** — `usePressMotion(rowDisabled)`; the row's content `
|
|
174
|
+
- **Row press** — `usePressMotion(rowDisabled)`; the row's content `Reanimated.View` (which carries
|
|
175
175
|
`comboboxRowStructure`, including the 44dp `minHeight`) scales/dips, while the `Pressable` keeps
|
|
176
176
|
the `pressedRow` background. `scale` is a transform, so the row's hit area is unaffected.
|
|
177
177
|
- **Check glyph** — fades in/out on selection change, but a row that mounts already-selected
|
|
@@ -180,14 +180,8 @@ Via `core/motion` only — `opacity`/`transform`, native driver, all reduce-moti
|
|
|
180
180
|
(the same flag `<Modal visible>` uses), so there is no second source of truth and no extra render
|
|
181
181
|
per open/close. See `Select`/`MultiSelect` — all three pickers use this one gate.
|
|
182
182
|
|
|
183
|
-
##
|
|
183
|
+
## Android
|
|
184
184
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
- **Round 2 visual** — radii retarget (`radii.md`/`lg`/`xl`/`full`), `borderCurve: continuous` on md+ corners; floating surfaces wire platform elevation/highlight where applicable.
|
|
190
|
-
- **Round 5 (Android parity)** — `android_ripple` (`borderless: false`) added to the trigger field
|
|
191
|
-
(gated `!disabled`), the clear button, and each option row (gated `!rowDisabled`). The trigger
|
|
192
|
-
field and clear button also gained `overflow: "hidden"` so their ripple clips to the field/button
|
|
193
|
-
shape instead of escaping it.
|
|
185
|
+
`android_ripple` (`borderless: false`) on the trigger field (gated `!disabled`), the clear button and
|
|
186
|
+
each option row (gated `!rowDisabled`); the field and clear button set `overflow: "hidden"` so the
|
|
187
|
+
ripple clips to their shape. The backdrop scrim uses `MOTION_TRANSFORM.scrimOpacity`, aligned with `Modal`.
|
|
@@ -10,17 +10,17 @@
|
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
12
|
import { memo, useCallback, useEffect, useMemo, useRef } from "react";
|
|
13
|
-
import { ActivityIndicator,
|
|
13
|
+
import { ActivityIndicator, Platform, Pressable, StyleSheet, TextInput, View } from "react-native";
|
|
14
|
+
import Reanimated, { useAnimatedStyle } from "react-native-reanimated";
|
|
14
15
|
import { Icon } from "../../core/icon/index.js";
|
|
15
|
-
import {
|
|
16
|
+
import { useMotion, useAnimatedValue } from "../../core/motion/index.js";
|
|
17
|
+
import { FOCUS_RING_GAP, FOCUS_RING_WIDTH } from "../../core/style/focusRing.js";
|
|
16
18
|
import { rippleColor } from "../../theme/platform/stateLayer.native.js";
|
|
17
19
|
import { useTheme } from "../../theme/hooks.js";
|
|
18
20
|
import { composerFieldStructure, composerInputStructure, composerSendStructure, composerStructure } from "./Composer.variants.js";
|
|
19
21
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
20
22
|
const ICON_STROKE = 2;
|
|
21
23
|
const ICON_SIZE = 18;
|
|
22
|
-
const FOCUS_RING_WIDTH = 2;
|
|
23
|
-
const FOCUS_RING_GAP = 2;
|
|
24
24
|
const FIELD_STYLE = composerFieldStructure();
|
|
25
25
|
/** Split out so the icon/spinner subtree survives the parent's per-keystroke `value` re-render. */
|
|
26
26
|
const ComposerSend = /*#__PURE__*/memo(function ComposerSend({
|
|
@@ -77,11 +77,14 @@ export const Composer = /*#__PURE__*/memo(function Composer({
|
|
|
77
77
|
}, [canSend, onSend]);
|
|
78
78
|
const ringOpacity = useAnimatedValue(0);
|
|
79
79
|
const ringAnimation = useRef(null);
|
|
80
|
+
const ringAnimatedStyle = useAnimatedStyle(() => ({
|
|
81
|
+
opacity: ringOpacity.value
|
|
82
|
+
}));
|
|
80
83
|
const setRingVisible = useCallback(visible => {
|
|
81
84
|
ringAnimation.current?.stop();
|
|
82
85
|
const to = visible ? 1 : 0;
|
|
83
86
|
if (!motion.enabled) {
|
|
84
|
-
ringOpacity.
|
|
87
|
+
ringOpacity.value = to;
|
|
85
88
|
return;
|
|
86
89
|
}
|
|
87
90
|
ringAnimation.current = motion.timing(ringOpacity, to, {
|
|
@@ -124,11 +127,10 @@ export const Composer = /*#__PURE__*/memo(function Composer({
|
|
|
124
127
|
style: rootStyle,
|
|
125
128
|
children: [/*#__PURE__*/_jsxs(View, {
|
|
126
129
|
style: FIELD_STYLE,
|
|
127
|
-
children: [/*#__PURE__*/_jsx(
|
|
128
|
-
pointerEvents: "none",
|
|
130
|
+
children: [/*#__PURE__*/_jsx(Reanimated.View, {
|
|
129
131
|
testID: "composer-focus-ring",
|
|
130
|
-
style: [focusRingStyle, {
|
|
131
|
-
|
|
132
|
+
style: [focusRingStyle, ringAnimatedStyle, {
|
|
133
|
+
pointerEvents: 'none'
|
|
132
134
|
}]
|
|
133
135
|
}), /*#__PURE__*/_jsx(TextInput, {
|
|
134
136
|
testID: testID ? `${testID}-input` : undefined,
|
|
@@ -11,6 +11,7 @@ whitespace-only.
|
|
|
11
11
|
| `Composer.tsx` | The component, plus the internal memo'd `ComposerSend` child. |
|
|
12
12
|
| `Composer.variants.ts` | Structural resolvers (root row, field wrapper, input, send circle). No colour resolver — every colour here is a single non-branching role lookup, read at the component. |
|
|
13
13
|
| `index.ts` | Public surface: `Composer`, `ComposerProps`. |
|
|
14
|
+
| `__tests__/Composer.test.ts` | Pure: the structural resolvers and the send-enabled predicate. |
|
|
14
15
|
| `__tests__/Composer.render.test.tsx` | Send fires with text present, stays inert when empty; focus-ring opacity on focus/blur/disabled/sending; web outline reset. |
|
|
15
16
|
|
|
16
17
|
## Props
|
|
@@ -21,7 +22,7 @@ whitespace-only.
|
|
|
21
22
|
| `onChangeText` | `(text: string) => void` | — | Required. |
|
|
22
23
|
| `onSend` | `() => void` | — | Required. Never fires while send is disabled. |
|
|
23
24
|
| `placeholder` | `string` | `"Message"` | Falls back into the field's `accessibilityLabel`. |
|
|
24
|
-
| `accessibilityLabel` | `string` | `placeholder` | Names the field.
|
|
25
|
+
| `accessibilityLabel` | `string` | `placeholder` | Names the field. A placeholder disappears once there is a value, so a screen with more than one composer needs this to tell them apart. |
|
|
25
26
|
| `disabled` | `boolean` | `false` | Blocks typing and sending. |
|
|
26
27
|
| `sending` | `boolean` | `false` | Blocks typing and sending; shows the spinner. |
|
|
27
28
|
| `style` | `LayoutStyle` | — | Layout-only, outermost, applied exactly once, last. |
|
|
@@ -31,7 +32,7 @@ whitespace-only.
|
|
|
31
32
|
|
|
32
33
|
- **Focus ring (WCAG 2.4.7 / 2.4.11).** Same offset-ring pattern as Input: a `border.focus` ring
|
|
33
34
|
2px wide, 2px outside the field, crossfaded on the field's `onFocus`/`onBlur` through
|
|
34
|
-
`useMotion()
|
|
35
|
+
`useMotion()` on a Reanimated node. It is always mounted at opacity 0 (`testID="composer-focus-ring"`,
|
|
35
36
|
`pointerEvents="none"`) and never raised while `disabled` or `sending`. The ring is an absolutely
|
|
36
37
|
positioned sibling of the `TextInput` inside a `composerFieldStructure` wrapper — that wrapper
|
|
37
38
|
carries the row's `flex: 1`.
|
|
@@ -69,7 +70,6 @@ controlled), so:
|
|
|
69
70
|
not an object, so it needs no memo of its own.
|
|
70
71
|
- `ComposerSend` reads `useTheme()` itself rather than taking a `theme` prop.
|
|
71
72
|
|
|
72
|
-
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
button shows no ripple.
|
|
73
|
+
- The round send button takes `android_ripple` (`borderless: true`, matching its circular shape),
|
|
74
|
+
gated on `Platform.OS === "android" && canSend`, so a disabled send button shows no ripple.
|
|
75
|
+
|
|
@@ -6,9 +6,13 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
9
|
-
import { AccessibilityInfo,
|
|
9
|
+
import { AccessibilityInfo, Platform, Pressable, Text, View } from "react-native";
|
|
10
|
+
import Reanimated from "react-native-reanimated";
|
|
11
|
+
import { useReducedMotion } from "../../core/a11y/index.js";
|
|
12
|
+
import { useHaptics } from "../../core/haptics/index.js";
|
|
10
13
|
import { Icon } from "../../core/icon/index.js";
|
|
11
14
|
import { usePressMotion } from "../../core/motion/index.js";
|
|
15
|
+
import { FOCUS_RING_GAP, FOCUS_RING_WIDTH } from "../../core/style/focusRing.js";
|
|
12
16
|
import { rippleColor } from "../../theme/platform/stateLayer.native.js";
|
|
13
17
|
import { useTheme } from "../../theme/hooks.js";
|
|
14
18
|
import { COPY_BUTTON_SIZES, copyButtonMenuRowStructure, copyButtonOutlineStructure, COPY_FEEDBACK_MS, resolveCopyButtonColors, writeClipboard } from "./CopyButton.variants.js";
|
|
@@ -16,8 +20,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
16
20
|
const ICON_STROKE = 2;
|
|
17
21
|
// The focus ring sits a small gap OUTSIDE the control, on the canvas, because `border.focus` is the
|
|
18
22
|
// role token proven ≥ 3:1 against the canvas (WCAG 2.4.11) — drawn over a fill it could fail.
|
|
19
|
-
|
|
20
|
-
const FOCUS_RING_GAP = 2;
|
|
23
|
+
|
|
21
24
|
export const CopyButton = /*#__PURE__*/memo(function CopyButton({
|
|
22
25
|
value,
|
|
23
26
|
variant = "icon",
|
|
@@ -31,6 +34,8 @@ export const CopyButton = /*#__PURE__*/memo(function CopyButton({
|
|
|
31
34
|
}) {
|
|
32
35
|
const theme = useTheme();
|
|
33
36
|
const press = usePressMotion();
|
|
37
|
+
const haptics = useHaptics();
|
|
38
|
+
const reducedMotion = useReducedMotion();
|
|
34
39
|
const colors = resolveCopyButtonColors(theme.colors);
|
|
35
40
|
const [status, setStatus] = useState("idle");
|
|
36
41
|
// Keyboard / external-keyboard / assistive-tech focus (no-op on pure touch, correct everywhere else).
|
|
@@ -47,14 +52,17 @@ export const CopyButton = /*#__PURE__*/memo(function CopyButton({
|
|
|
47
52
|
// The label swap lands on a control nothing is focused on, so no reader would ever read it —
|
|
48
53
|
// this imperative call reaches VoiceOver and TalkBack (same reason as `Toast`'s `show()`).
|
|
49
54
|
AccessibilityInfo.announceForAccessibility(ok ? copiedLabel : failedLabel);
|
|
50
|
-
if (ok)
|
|
55
|
+
if (ok) {
|
|
56
|
+
if (!reducedMotion) haptics.notification("success");
|
|
57
|
+
onCopy?.(value);
|
|
58
|
+
}
|
|
51
59
|
if (timer.current !== null) clearTimeout(timer.current);
|
|
52
60
|
timer.current = null;
|
|
53
61
|
// WCAG 2.2.1: only the SUCCESS state self-clears. A failure is an error the user has to act on,
|
|
54
62
|
// and reverting the label 1.5s later took the only notice of it off the screen — so the failed
|
|
55
63
|
// state now stays until the next press (which re-runs this and re-decides).
|
|
56
64
|
if (ok) timer.current = setTimeout(() => setStatus("idle"), COPY_FEEDBACK_MS);
|
|
57
|
-
}, [value, onCopy, copiedLabel, failedLabel]);
|
|
65
|
+
}, [value, onCopy, copiedLabel, failedLabel, reducedMotion, haptics]);
|
|
58
66
|
const onFocus = useCallback(() => setFocused(true), []);
|
|
59
67
|
const onBlur = useCallback(() => setFocused(false), []);
|
|
60
68
|
const focusRingStyle = useMemo(() => ({
|
|
@@ -159,7 +167,7 @@ export const CopyButton = /*#__PURE__*/memo(function CopyButton({
|
|
|
159
167
|
borderless: true
|
|
160
168
|
} : undefined,
|
|
161
169
|
style: style,
|
|
162
|
-
children: [focusRing, /*#__PURE__*/_jsx(
|
|
170
|
+
children: [focusRing, /*#__PURE__*/_jsx(Reanimated.View, {
|
|
163
171
|
testID: "copy-button-glyph",
|
|
164
172
|
style: press.style,
|
|
165
173
|
children: /*#__PURE__*/_jsx(Icon, {
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { MIN_TOUCH_TARGET, slopFor } from "../../core/a11y/touchTarget.js";
|
|
3
4
|
import { createThemedVariants } from "../../core/style/index.js";
|
|
5
|
+
export { MIN_TOUCH_TARGET };
|
|
4
6
|
export const COPY_FEEDBACK_MS = 1500;
|
|
5
7
|
|
|
6
8
|
/**
|
|
7
9
|
* Same touch-target floor as `Button`/`Checkbox` (44dp — Apple HIG minimum, WCAG 2.5.5 AAA).
|
|
8
10
|
* Duplicated rather than imported — modules never import across `src/modules/*`.
|
|
9
11
|
*/
|
|
10
|
-
|
|
11
|
-
const slopFor = dimension => Math.max(0, Math.ceil((MIN_TOUCH_TARGET - dimension) / 2));
|
|
12
|
+
|
|
12
13
|
/**
|
|
13
14
|
* CopyButton-specific dimensions. Kept a plain constant — no theme dependency — so the hit-target
|
|
14
15
|
* test can assert `iconSize + 2·hitSlop ≥ 44` without a provider, same as `BUTTON_SIZES`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# copy-button/
|
|
1
|
+
# copy-button/ — a copy-to-clipboard control in icon, button or menu-item form
|
|
2
2
|
|
|
3
3
|
Copies `value` to the clipboard. Variants: `icon`, `button`, `menu-item`. Brief copied state with check icon.
|
|
4
4
|
|
|
@@ -23,7 +23,9 @@ Copies `value` to the clipboard. Variants: `icon`, `button`, `menu-item`. Brief
|
|
|
23
23
|
| `copiedLabel` | `string` | `Copied!` |
|
|
24
24
|
| `failedLabel` | `string` | `Copy failed` |
|
|
25
25
|
| `size` | `sm \| md` | `sm` |
|
|
26
|
-
| `onCopy` | `(value) => void` | — |
|
|
26
|
+
| `onCopy` | `(value: string) => void` | — |
|
|
27
|
+
| `style` | `LayoutStyle` | — |
|
|
28
|
+
| `testID` | `string` | — |
|
|
27
29
|
|
|
28
30
|
Native clipboard uses optional `@react-native-clipboard/clipboard`; web uses `navigator.clipboard`.
|
|
29
31
|
A failed write is **not** silent: the control switches to `failedLabel` with the `triangle-alert`
|
|
@@ -31,17 +33,14 @@ glyph in `status.danger.text` and announces it. `onCopy` fires only on success.
|
|
|
31
33
|
|
|
32
34
|
**WCAG 2.2.1 — only a successful copy self-clears.** `COPY_FEEDBACK_MS` (1500ms) times out the
|
|
33
35
|
`copied` state back to idle; a `failed` state does not arm that timer at all and stays up until the
|
|
34
|
-
next press re-decides it
|
|
35
|
-
|
|
36
|
-
**Consumer-visible change:** a failed copy no longer reverts to the idle label on its own; the
|
|
37
|
-
control now visibly stays in the failed state (icon + label + `border.danger` on the `button`
|
|
38
|
-
variant) until the user retries.
|
|
36
|
+
next press re-decides it: a failed copy never reverts to the idle label on its own, it stays in the
|
|
37
|
+
failed state (icon + label + `border.danger` on the `button` variant) until the user retries.
|
|
39
38
|
|
|
40
39
|
## Accessibility contract (WCAG)
|
|
41
40
|
|
|
42
41
|
- `accessibilityRole="button"`; the accessible name is the current label (`label` → `copiedLabel` /
|
|
43
42
|
`failedLabel` while the feedback state is showing).
|
|
44
|
-
- **2.2.1 (timing adjustable)** — see "Props" above: a failed copy
|
|
43
|
+
- **2.2.1 (timing adjustable)** — see "Props" above: a failed copy never times out.
|
|
45
44
|
- **4.1.3 (status messages)** — the copy result is announced with
|
|
46
45
|
`AccessibilityInfo.announceForAccessibility`, the cross-platform imperative API (VoiceOver +
|
|
47
46
|
TalkBack), same call site pattern as `Toast`'s `show()`. The label swap alone announces nothing:
|
|
@@ -72,7 +71,6 @@ variant) until the user retries.
|
|
|
72
71
|
|
|
73
72
|
Wrapped in `React.memo` (repo-wide re-render audit, 2026-07-17 — see root `CLAUDE.md`).
|
|
74
73
|
|
|
75
|
-
|
|
76
|
-
-
|
|
77
|
-
|
|
78
|
-
`overflow: "hidden"` so the ripple clips to the row/outline shape.
|
|
74
|
+
All three variants take `android_ripple`: `icon` (round, icon-only) is `borderless: true`; `button`
|
|
75
|
+
and `menu-item` are `borderless: false` with `overflow: "hidden"` so the ripple clips to their shape.
|
|
76
|
+
A successful copy fires `haptics.notification("success")`, skipped while reduce-motion is on.
|
|
@@ -18,6 +18,7 @@ import { HEADING_LEVEL, HeadingView } from "../../core/heading/index.js";
|
|
|
18
18
|
import { Icon } from "../../core/icon/index.js";
|
|
19
19
|
import { usePressState } from "../../core/motion/usePressState.js";
|
|
20
20
|
import { VirtualList } from "../../core/list/index.js";
|
|
21
|
+
import { renderNodeSlot } from "../../core/slot/index.js";
|
|
21
22
|
import { rippleColor, stateLayerScrim } from "../../theme/platform/stateLayer.native.js";
|
|
22
23
|
import { useTheme } from "../../theme/hooks.js";
|
|
23
24
|
import { Checkbox } from "../checkbox/index.js";
|
|
@@ -313,9 +314,10 @@ const DataTableHeaderCell = /*#__PURE__*/memo(function DataTableHeaderCell({
|
|
|
313
314
|
onBlur: handleBlur,
|
|
314
315
|
style: spec.cellStyle,
|
|
315
316
|
children: [focused && /*#__PURE__*/_jsx(View, {
|
|
316
|
-
pointerEvents: "none",
|
|
317
317
|
testID: spec.testID === undefined ? undefined : `${spec.testID}-focus-ring`,
|
|
318
|
-
style: focusRingStyle
|
|
318
|
+
style: [focusRingStyle, {
|
|
319
|
+
pointerEvents: "none"
|
|
320
|
+
}]
|
|
319
321
|
}), label, /*#__PURE__*/_jsx(Icon, {
|
|
320
322
|
name: resolveSortIcon(spec.key, sortBy, sortDirection),
|
|
321
323
|
size: DATA_TABLE_SORT_ICON_SIZE,
|
|
@@ -373,7 +375,7 @@ function DataTableCellInner({
|
|
|
373
375
|
if (spec.render) {
|
|
374
376
|
return /*#__PURE__*/_jsx(View, {
|
|
375
377
|
style: spec.cellStyle,
|
|
376
|
-
children: spec.render(row, index)
|
|
378
|
+
children: renderNodeSlot(spec.render(row, index), textStyle)
|
|
377
379
|
});
|
|
378
380
|
}
|
|
379
381
|
|
|
@@ -469,12 +471,14 @@ function DataTableRowInner({
|
|
|
469
471
|
} : undefined,
|
|
470
472
|
style: pressableStyle,
|
|
471
473
|
children: [/*#__PURE__*/_jsx(Animated.View, {
|
|
472
|
-
|
|
473
|
-
|
|
474
|
+
style: [StyleSheet.absoluteFill, overlayStaticStyle, press.overlayStyle, {
|
|
475
|
+
pointerEvents: "none"
|
|
476
|
+
}]
|
|
474
477
|
}), focused && /*#__PURE__*/_jsx(View, {
|
|
475
|
-
pointerEvents: "none",
|
|
476
478
|
testID: testID === undefined ? undefined : `${testID}-focus-ring`,
|
|
477
|
-
style: focusRingStyle
|
|
479
|
+
style: [focusRingStyle, {
|
|
480
|
+
pointerEvents: "none"
|
|
481
|
+
}]
|
|
478
482
|
}), cells]
|
|
479
483
|
});
|
|
480
484
|
}
|
|
@@ -16,15 +16,15 @@ import { StyleSheet } from "react-native";
|
|
|
16
16
|
* directly (mocking only `react-native`'s `StyleSheet`, as `core/style` does).
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
|
+
import { MIN_TOUCH_TARGET } from "../../core/a11y/touchTarget.js";
|
|
19
20
|
import { createThemedVariants, createVariants } from "../../core/style/index.js";
|
|
21
|
+
export { MIN_TOUCH_TARGET };
|
|
20
22
|
|
|
21
23
|
/** The three glyphs a header can show. A literal union rather than an `IconName` import, so this
|
|
22
24
|
* file stays free of the icon registry (which pulls `lucide` at runtime); `Icon`'s own `name` prop
|
|
23
25
|
* still type-checks these against the closed `IconName` set at the call site. */
|
|
24
26
|
|
|
25
27
|
/** Same touch-target floor as Button/Select (44dp — Apple HIG minimum, WCAG 2.5.5 AAA). */
|
|
26
|
-
export const MIN_TOUCH_TARGET = 44;
|
|
27
|
-
|
|
28
28
|
/** Header cells are sortable buttons, so the header is a direct 44dp target — never slop-expanded. */
|
|
29
29
|
export const DATA_TABLE_HEADER_HEIGHT = MIN_TOUCH_TARGET;
|
|
30
30
|
export const DATA_TABLE_DEFAULT_ROW_HEIGHT = 48;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# data-table/ — a horizontally-scrollable, column-configured table
|
|
2
2
|
|
|
3
3
|
`DataTable` renders column headers + rows for tabular data on a phone screen. Header and body live
|
|
4
|
-
in ONE vertical `
|
|
4
|
+
in ONE vertical `VirtualList` (header as `ListHeaderComponent`, `stickyHeaderIndices={[0]}` for the
|
|
5
5
|
pin) nested inside a single horizontal `ScrollView` — header and rows are always the same width and
|
|
6
6
|
scroll sideways together with no hand-rolled scroll-offset syncing between two separate lists.
|
|
7
7
|
|
|
@@ -13,7 +13,7 @@ never sorts `data` itself and never owns `selectedKeys` — it reports the next
|
|
|
13
13
|
|
|
14
14
|
| File | Role |
|
|
15
15
|
|------|------|
|
|
16
|
-
| `DataTable.tsx` | The component. Header/row/skeleton/empty JSX built inline per render (Select's precedent), one `
|
|
16
|
+
| `DataTable.tsx` | The component. Header/row/skeleton/empty JSX built inline per render (Select's precedent), one `core/list` `VirtualList` wired with `stickyHeaderIndices`. |
|
|
17
17
|
| `DataTable.variants.ts` | Pure resolvers (`resolveDataTableColors`, `nextSortDirection`, `resolveSortIcon`, `resolveSortAccessibilityLabel`, `toggleSelectionKey`, `resolveSelectAllState`, `resolveSelectAllSelection`, `resolveDefaultCellText`, `resolveRowBackground`, `resolveTotalWidth`) + themed structural resolvers. No React, no lucide. |
|
|
18
18
|
| `index.ts` | Public surface: `DataTable`, `DataTableProps`, `DataTableColumn`, `DataTableAlign`, `DataTableSortDirection`. |
|
|
19
19
|
| `__tests__/DataTable.test.ts` | Pure: WCAG contrast (all brands × modes) + sort/selection/formatting contracts. |
|
|
@@ -93,7 +93,7 @@ never sorts `data` itself and never owns `selectedKeys` — it reports the next
|
|
|
93
93
|
|
|
94
94
|
## Design decisions specific to this module
|
|
95
95
|
|
|
96
|
-
- **One
|
|
96
|
+
- **One list, not two scroll views kept in sync.** The header is that `VirtualList`'s own
|
|
97
97
|
`ListHeaderComponent`, pinned via `stickyHeaderIndices={[0]}` — RN's built-in mechanism for
|
|
98
98
|
exactly this, so there is no manual `onScroll`/`scrollTo` offset-mirroring between a header list
|
|
99
99
|
and a body list.
|
|
@@ -137,10 +137,5 @@ never sorts `data` itself and never owns `selectedKeys` — it reports the next
|
|
|
137
137
|
Wrapped in `React.memo`; since the component itself is generic (`<T>`), `memo`'s erased type is
|
|
138
138
|
restored with a documented `as typeof DataTableInner` cast. Header/row/skeleton/empty JSX are built
|
|
139
139
|
inline per render, matching `Select`'s own precedent (its `renderItem` isn't extracted or memoized
|
|
140
|
-
either) — real windowing for large datasets
|
|
141
|
-
|
|
142
|
-
## Modernization (v1.0.7)
|
|
143
|
-
|
|
144
|
-
- Theme imports decoupled to `theme/hooks`; optional peers (reanimated, gesture-handler, flash-list) load at runtime.
|
|
145
|
-
- List-heavy surfaces use `VirtualList` with device-tier window sizing where applicable.
|
|
146
|
-
- `React.memo` + stable callbacks retained; render-item/key-extractor hoisted per ESLint perf rules.
|
|
140
|
+
either) — real windowing for large datasets comes from `core/list`'s `VirtualList` (FlashList when
|
|
141
|
+
the app injected it, `FlatList` otherwise) with device-tier window sizing.
|
|
@@ -84,7 +84,7 @@ const CalendarDayCell = /*#__PURE__*/memo(function CalendarDayCell({
|
|
|
84
84
|
backgroundColor: stateLayerScrim(theme.mode),
|
|
85
85
|
borderRadius: concentric(theme.radii.md, theme.space[1]),
|
|
86
86
|
borderCurve: "continuous"
|
|
87
|
-
}), [theme.mode, theme.radii.md]);
|
|
87
|
+
}), [theme.mode, theme.radii.md, theme.space]);
|
|
88
88
|
const cellStyle = useMemo(() => [cellStructure, {
|
|
89
89
|
backgroundColor: resting.background,
|
|
90
90
|
borderColor: resting.ring,
|
|
@@ -107,8 +107,9 @@ const CalendarDayCell = /*#__PURE__*/memo(function CalendarDayCell({
|
|
|
107
107
|
onLayout: press.onLayout,
|
|
108
108
|
style: cellStyle,
|
|
109
109
|
children: [/*#__PURE__*/_jsx(Animated.View, {
|
|
110
|
-
|
|
111
|
-
|
|
110
|
+
style: [StyleSheet.absoluteFill, overlayStaticStyle, press.overlayStyle, {
|
|
111
|
+
pointerEvents: 'none'
|
|
112
|
+
}]
|
|
112
113
|
}), /*#__PURE__*/_jsx(Text, {
|
|
113
114
|
style: labelStyle,
|
|
114
115
|
children: dayOfMonth
|
|
@@ -154,7 +155,7 @@ const QuickJumpCell = /*#__PURE__*/memo(function QuickJumpCell({
|
|
|
154
155
|
backgroundColor: stateLayerScrim(theme.mode),
|
|
155
156
|
borderRadius: concentric(theme.radii.md, theme.space[1]),
|
|
156
157
|
borderCurve: "continuous"
|
|
157
|
-
}), [theme.mode, theme.radii.md]);
|
|
158
|
+
}), [theme.mode, theme.radii.md, theme.space]);
|
|
158
159
|
const cellStyle = useMemo(() => [cellStructure, {
|
|
159
160
|
backgroundColor: resting.background,
|
|
160
161
|
overflow: "hidden"
|
|
@@ -175,8 +176,9 @@ const QuickJumpCell = /*#__PURE__*/memo(function QuickJumpCell({
|
|
|
175
176
|
onLayout: press.onLayout,
|
|
176
177
|
style: cellStyle,
|
|
177
178
|
children: [/*#__PURE__*/_jsx(Animated.View, {
|
|
178
|
-
|
|
179
|
-
|
|
179
|
+
style: [StyleSheet.absoluteFill, overlayStaticStyle, press.overlayStyle, {
|
|
180
|
+
pointerEvents: 'none'
|
|
181
|
+
}]
|
|
180
182
|
}), /*#__PURE__*/_jsx(Text, {
|
|
181
183
|
style: labelStyle,
|
|
182
184
|
children: name
|
|
@@ -341,8 +343,9 @@ export const Calendar = /*#__PURE__*/memo(function Calendar({
|
|
|
341
343
|
backgroundColor: chrome.headerPressed
|
|
342
344
|
}],
|
|
343
345
|
children: [/*#__PURE__*/_jsx(Animated.View, {
|
|
344
|
-
|
|
345
|
-
|
|
346
|
+
style: [StyleSheet.absoluteFill, headerOverlayStyle, headerPress.overlayStyle, {
|
|
347
|
+
pointerEvents: 'none'
|
|
348
|
+
}]
|
|
346
349
|
}), /*#__PURE__*/_jsx(Text, {
|
|
347
350
|
numberOfLines: 1,
|
|
348
351
|
style: headerLabelStyle,
|
|
@@ -18,14 +18,15 @@
|
|
|
18
18
|
* Asia/Beirut) — the single most common calendar bug class there is.
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
|
+
import { MIN_TOUCH_TARGET } from "../../core/a11y/touchTarget.js";
|
|
21
22
|
import { createThemedVariants } from "../../core/style/index.js";
|
|
23
|
+
export { MIN_TOUCH_TARGET };
|
|
22
24
|
|
|
23
25
|
/** `1` = Monday (the library default — the team and its consumer apps are India-based, where the
|
|
24
26
|
* week starts on Monday), `0` = Sunday. */
|
|
25
27
|
|
|
26
28
|
/** Same floor as Button/Select — 44dp (WCAG 2.5.5 / HIG). Duplicated, not imported: modules stay
|
|
27
29
|
* isolated. */
|
|
28
|
-
export const MIN_TOUCH_TARGET = 44;
|
|
29
30
|
export const DAY_CELL_MIN_HEIGHT = MIN_TOUCH_TARGET;
|
|
30
31
|
export const QUICK_JUMP_CELL_MIN_HEIGHT = MIN_TOUCH_TARGET;
|
|
31
32
|
export const TIME_OPTION_HEIGHT = MIN_TOUCH_TARGET;
|