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
|
@@ -9,8 +9,8 @@ touch target, optional debounced reporting, and an optional "Cancel" text button
|
|
|
9
9
|
|
|
10
10
|
| File | Role |
|
|
11
11
|
|------|------|
|
|
12
|
-
| `SearchBar.tsx` | The component. Field composition, debounce timer, clear/cancel wiring, a11y wiring, focus ring. |
|
|
13
|
-
| `SearchBar.variants.ts` | Pure resolvers (`resolveSearchBarColors`, `resolveSearchBarBorderColor`, `resolveSearchBarAccessibility`, `shouldShowClear`, `resolveSearchBarFieldHitSlop`, `resolveSearchBarTrailingHitSlop`) + the themed structural resolvers (`searchBarRowStructure`, `searchBarFieldStructure`, `searchBarClearStructure`, `searchBarCancelStructure`). No React, no lucide. |
|
|
12
|
+
| `SearchBar.tsx` | The component. Field composition, debounce timer, clear/cancel wiring, a11y wiring, focus ring (`FOCUS_RING_*` from `core/style/focusRing`). |
|
|
13
|
+
| `SearchBar.variants.ts` | Pure resolvers (`resolveSearchBarColors`, `resolveSearchBarBorderColor`, `resolveSearchBarAccessibility`, `shouldShowClear`, `resolveSearchBarFieldHitSlop`, `resolveSearchBarTrailingHitSlop`) + the themed structural resolvers (`searchBarRowStructure`, `searchBarFieldStructure`, `searchBarClearStructure`, `searchBarCancelStructure`). `MIN_TOUCH_TARGET` / `slopFor` from `core/a11y/touchTarget`; `CLEAR_BUTTON_WIDTH` = that floor. No React, no lucide. |
|
|
14
14
|
| `index.ts` | Public surface: `SearchBar`, `SearchBarProps`, `SearchBarSize`. |
|
|
15
15
|
| `__tests__/SearchBar.test.ts` | Pure: WCAG contrast (all brands × modes) + per-edge touch target + visibility/a11y contracts. |
|
|
16
16
|
| `__tests__/SearchBar.render.test.tsx` | Render: value/placeholder, the field's `search` role, immediate vs debounced typing, clear isolation, `showCancel` lifecycle, submit flushing a pending debounce, focus ring, the rendered per-edge `hitSlop`. |
|
|
@@ -22,7 +22,7 @@ touch target, optional debounced reporting, and an optional "Cancel" text button
|
|
|
22
22
|
| `value` | `string` | — | Required — controlled. |
|
|
23
23
|
| `onChangeText` | `(text: string) => void` | — | Required. Debounced per `debounceMs`; the rendered text never lags. |
|
|
24
24
|
| `placeholder` | `string` | `"Search"` | Falls back into the field's `accessibilityLabel` — SearchBar renders no visible label. |
|
|
25
|
-
| `accessibilityLabel` | `string` | `placeholder` | Overrides the placeholder fallback — a placeholder that reads as a prompt ("Search…") rather than a name tells a screen-reader user nothing about WHAT is being searched.
|
|
25
|
+
| `accessibilityLabel` | `string` | `placeholder` | Overrides the placeholder fallback — a placeholder that reads as a prompt ("Search…") rather than a name tells a screen-reader user nothing about WHAT is being searched. |
|
|
26
26
|
| `onSubmit` | `() => void` | — | Fires on the keyboard's search key. Flushes a pending debounce first. |
|
|
27
27
|
| `onClear` | `() => void` | — | Fires after the clear button or "Cancel" empties the query. |
|
|
28
28
|
| `debounceMs` | `number` | `0` | `0` = report every keystroke. Above `0`, `onChangeText` is debounced while local state keeps the visible text instant. |
|
|
@@ -59,15 +59,15 @@ above-field caption; the placeholder carries the only name it has.
|
|
|
59
59
|
size — the resolver arithmetic in `SearchBar.test.ts` only reaches the user if the object lands on
|
|
60
60
|
the node.
|
|
61
61
|
- **1.4.3** — query text, placeholder, and the "Cancel" label are each measured ≥ 4.5:1 against
|
|
62
|
-
`bg.canvas` (the field renders no fill, like `Input`'s box) for all
|
|
62
|
+
`bg.canvas` (the field renders no fill, like `Input`'s box) for all 9 brands × both modes. The
|
|
63
63
|
pressed clear/cancel foreground is measured ≥ 4.5:1 against its own `pressedFill` too — not just
|
|
64
64
|
assumed from the resting canvas pairing.
|
|
65
65
|
- **1.4.11** — the field's resting and focused border, and the leading/clear glyphs, are measured
|
|
66
66
|
≥ 3:1 against the canvas.
|
|
67
|
-
- **2.4.7** — a `border.focus` ring appears offset outside the field on focus,
|
|
68
|
-
geometry/token
|
|
69
|
-
- **2.3.3** —
|
|
70
|
-
|
|
67
|
+
- **2.4.7** — a `border.focus` ring appears offset outside the field on focus, same
|
|
68
|
+
`core/style/focusRing` geometry/token as `Input`.
|
|
69
|
+
- **2.3.3** — the only motion is the clear/cancel press scale from `usePressState` and `loading`'s
|
|
70
|
+
`Spinner`; both honour reduced motion. The cancel button is a conditional render, not a transition.
|
|
71
71
|
|
|
72
72
|
## Patterns copied from Input / ButtonGroup / Menu
|
|
73
73
|
|
|
@@ -149,7 +149,6 @@ export const SearchBar = /*#__PURE__*/memo(function SearchBar({
|
|
|
149
149
|
borderColor: resolveSearchBarBorderColor(colors, focused)
|
|
150
150
|
}, disabled && styles.dimmed],
|
|
151
151
|
children: [focused && !disabled && /*#__PURE__*/_jsx(View, {
|
|
152
|
-
pointerEvents: "none",
|
|
153
152
|
testID: "search-bar-focus-ring",
|
|
154
153
|
style: {
|
|
155
154
|
position: "absolute",
|
|
@@ -160,7 +159,8 @@ export const SearchBar = /*#__PURE__*/memo(function SearchBar({
|
|
|
160
159
|
borderWidth: FOCUS_RING_WIDTH,
|
|
161
160
|
borderColor: colors.focusBorder,
|
|
162
161
|
borderRadius: theme.radii.md + FOCUS_RING_GAP + FOCUS_RING_WIDTH,
|
|
163
|
-
borderCurve: "continuous"
|
|
162
|
+
borderCurve: "continuous",
|
|
163
|
+
pointerEvents: "none"
|
|
164
164
|
}
|
|
165
165
|
}), loading ? /*#__PURE__*/_jsx(Spinner, {
|
|
166
166
|
size: "sm",
|
|
@@ -220,8 +220,9 @@ export const SearchBar = /*#__PURE__*/memo(function SearchBar({
|
|
|
220
220
|
overflow: "hidden"
|
|
221
221
|
}, clearPress.animatedStyle],
|
|
222
222
|
children: [/*#__PURE__*/_jsx(Animated.View, {
|
|
223
|
-
|
|
224
|
-
|
|
223
|
+
style: [StyleSheet.absoluteFill, overlayStaticStyle, clearPress.overlayStyle, {
|
|
224
|
+
pointerEvents: "none"
|
|
225
|
+
}]
|
|
225
226
|
}), /*#__PURE__*/_jsx(Icon, {
|
|
226
227
|
name: "x",
|
|
227
228
|
size: spec.iconSize,
|
|
@@ -246,8 +247,9 @@ export const SearchBar = /*#__PURE__*/memo(function SearchBar({
|
|
|
246
247
|
overflow: "hidden"
|
|
247
248
|
}, cancelPress.animatedStyle],
|
|
248
249
|
children: [/*#__PURE__*/_jsx(Animated.View, {
|
|
249
|
-
|
|
250
|
-
|
|
250
|
+
style: [StyleSheet.absoluteFill, overlayStaticStyle, cancelPress.overlayStyle, {
|
|
251
|
+
pointerEvents: "none"
|
|
252
|
+
}]
|
|
251
253
|
}), /*#__PURE__*/_jsx(Text, {
|
|
252
254
|
numberOfLines: 1,
|
|
253
255
|
style: [theme.fontStyleForWeight(theme.fontWeights.medium), {
|
|
@@ -14,11 +14,9 @@
|
|
|
14
14
|
* `react-native`'s `StyleSheet`, as `core/style` does).
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
+
import { MIN_TOUCH_TARGET, slopFor } from "../../core/a11y/touchTarget.js";
|
|
17
18
|
import { createThemedVariants } from "../../core/style/index.js";
|
|
18
|
-
|
|
19
|
-
* modules stay isolated. */
|
|
20
|
-
export const MIN_TOUCH_TARGET = 44;
|
|
21
|
-
const slopFor = height => Math.max(0, Math.ceil((MIN_TOUCH_TARGET - height) / 2));
|
|
19
|
+
export { MIN_TOUCH_TARGET };
|
|
22
20
|
/**
|
|
23
21
|
* Deliberately the same height/fontSize/iconSize numbers as `INPUT_SIZES` `sm`/`md`, so a SearchBar
|
|
24
22
|
* and an Input placed in the same form line up exactly.
|
|
@@ -7,7 +7,7 @@ the settings-section pattern re-declared across consumer apps.
|
|
|
7
7
|
|
|
8
8
|
| File | Role |
|
|
9
9
|
|------|------|
|
|
10
|
-
| `Section.tsx` |
|
|
10
|
+
| `Section.tsx` | Hairline + label + children (`renderNodeSlot` wraps string/number children); `style` last. |
|
|
11
11
|
| `Section.variants.ts` | Pure resolver (`resolveSectionColors`) + themed structural resolver. |
|
|
12
12
|
| `index.ts` | Public surface: `Section`, `SectionProps`. |
|
|
13
13
|
| `__tests__/Section.test.ts` | Pure: WCAG 1.4.3 on the label, colour mapping. |
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
import { memo, useMemo } from "react";
|
|
12
12
|
import Reanimated, { FadeInDown, ReduceMotion } from "react-native-reanimated";
|
|
13
|
+
import { renderNodeSlot } from "../../core/slot/index.js";
|
|
13
14
|
import { useTheme } from "../../theme/hooks.js";
|
|
14
15
|
import { Text } from "../text/index.js";
|
|
15
16
|
import { sectionContainerStructure } from "./Section.variants.js";
|
|
@@ -22,6 +23,10 @@ export const Section = /*#__PURE__*/memo(function Section({
|
|
|
22
23
|
}) {
|
|
23
24
|
const theme = useTheme();
|
|
24
25
|
const rootStyle = useMemo(() => [sectionContainerStructure(theme), style], [theme, style]);
|
|
26
|
+
const childrenSlotStyle = useMemo(() => [theme.fontStyleForWeight(theme.fontWeights.regular), {
|
|
27
|
+
color: theme.colors.fg.default,
|
|
28
|
+
fontSize: theme.fontSizes.md
|
|
29
|
+
}], [theme]);
|
|
25
30
|
return /*#__PURE__*/_jsxs(Reanimated.View, {
|
|
26
31
|
entering: FadeInDown.springify().reduceMotion(ReduceMotion.System),
|
|
27
32
|
testID: testID,
|
|
@@ -29,7 +34,7 @@ export const Section = /*#__PURE__*/memo(function Section({
|
|
|
29
34
|
children: [/*#__PURE__*/_jsx(Text, {
|
|
30
35
|
variant: "overline",
|
|
31
36
|
children: label
|
|
32
|
-
}), children]
|
|
37
|
+
}), renderNodeSlot(children, childrenSlotStyle)]
|
|
33
38
|
});
|
|
34
39
|
});
|
|
35
40
|
//# sourceMappingURL=Section.js.map
|
|
@@ -1,7 +1,26 @@
|
|
|
1
|
-
# section-list/
|
|
1
|
+
# section-list/ — a virtualized sectioned list
|
|
2
2
|
|
|
3
3
|
Virtualized sectioned list via `core/list/VirtualSectionList`.
|
|
4
4
|
|
|
5
|
+
## Files
|
|
6
|
+
|
|
7
|
+
| File | Role |
|
|
8
|
+
|------|------|
|
|
9
|
+
| `SectionList.tsx` | The component + `SectionListProps` / `SectionListSection`. Wraps `VirtualSectionList`; the header is a memoized `HeadingText`. |
|
|
10
|
+
| `SectionList.variants.ts` | Themed structural resolver (`sectionListHeaderStructure`). |
|
|
11
|
+
| `index.ts` | Public surface: `SectionList`, `SectionListProps`, `SectionListSection`. |
|
|
12
|
+
|
|
13
|
+
## Props
|
|
14
|
+
|
|
15
|
+
| Prop | Type | Default | Notes |
|
|
16
|
+
|------|------|---------|-------|
|
|
17
|
+
| `sections` | `readonly SectionListSection<T>[]` | — | Required. `{ title, data }` per section. |
|
|
18
|
+
| `renderItem` | `(info: { item: T; sectionIndex: number; index: number }) => ReactElement \| null` | — | Required. |
|
|
19
|
+
| `keyExtractor` | `(item: T, index: number) => string` | — | Required. |
|
|
20
|
+
| `itemHeight` | `number` | — | Forwarded to `VirtualSectionList` for fixed-height windowing. |
|
|
21
|
+
| `style` | `LayoutStyle` | — | Layout-only, outermost, applied exactly once, last. |
|
|
22
|
+
| `testID` | `string` | — | Forwarded to the outermost `View`. |
|
|
23
|
+
|
|
5
24
|
## Accessibility
|
|
6
25
|
|
|
7
26
|
- **1.3.1 / 2.4.6** — a section header carries `accessibilityRole="header"` and `aria-level={2}`
|
|
@@ -14,5 +33,6 @@ Virtualized sectioned list via `core/list/VirtualSectionList`.
|
|
|
14
33
|
|
|
15
34
|
| Test | Covers |
|
|
16
35
|
|------|--------|
|
|
36
|
+
| `__tests__/SectionList.test.ts` | Pure: the header structural resolver. |
|
|
17
37
|
| `__tests__/SectionList.render.test.tsx` | Render: section header + item, heading role + level. |
|
|
18
38
|
| `__tests__/SectionList.dom.test.tsx` | Real DOM (`jest.web.config.js`): the header renders a real `<h2>`. |
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
`SegmentedControl` switches between 2–5 mutually exclusive options (filters, view modes, date
|
|
4
4
|
ranges) inside one rounded track. The active segment is marked by a pill that slides to its
|
|
5
|
-
measured position — the same `onLayout` +
|
|
6
|
-
uses — but unlike `Tabs`/`ButtonGroup`, the pill is a **neutral raised surface**, not an
|
|
5
|
+
measured position — the same `onLayout` + shared-value mechanism `Tabs`' sliding indicator uses — but unlike `Tabs`/`ButtonGroup`, the pill is a **neutral raised surface**, not an
|
|
7
6
|
accent-coloured fill: elevation, not colour, is the selection cue here.
|
|
8
7
|
|
|
9
8
|
## Files
|
|
@@ -14,7 +13,7 @@ accent-coloured fill: elevation, not colour, is the selection cue here.
|
|
|
14
13
|
| `SegmentedControl.variants.ts` | Pure resolvers (`resolveSegmentedControlColors`, `resolveSegmentedControlSegmentAccessibility`, `resolveSegmentedControlSegmentHitSlop`) + the themed structural resolvers (`segmentedControlTrackStructure`, `segmentedControlPillStructure`, `segmentedControlSegmentStructure`). No React, no lucide. |
|
|
15
14
|
| `index.ts` | Public surface: `SegmentedControl`, `SegmentedControlProps`, `SegmentedControlOption`, `SegmentedControlSize`, `IconName` (re-exported from `core/icon`). |
|
|
16
15
|
| `__tests__/SegmentedControl.test.ts` | Pure: WCAG contrast (all brands × modes) + touch target + a11y contract. |
|
|
17
|
-
| `__tests__/SegmentedControl.render.test.tsx` | Render:
|
|
16
|
+
| `__tests__/SegmentedControl.render.test.tsx` | Render: track/segment roles, selection state, per-option and whole-group `disabled`, pill animation respects reduced motion. |
|
|
18
17
|
| `__tests__/SegmentedControl.motion.test.tsx` | Motion: reduce-motion snap, the real slide, and the device tier's `durationScale` reaching the pill. |
|
|
19
18
|
|
|
20
19
|
## Props
|
|
@@ -30,9 +29,10 @@ accent-coloured fill: elevation, not colour, is the selection cue here.
|
|
|
30
29
|
| `style` | `LayoutStyle` | — | Layout-only, outermost (the track `View`), applied exactly once, last. |
|
|
31
30
|
| `testID` | `string` | — | Seeds `${testID}-pill`, `${testID}-${option.value}` and, while focused, `${testID}-${option.value}-focus-ring`. |
|
|
32
31
|
|
|
33
|
-
No `tone`/`variant` union — the selected fill is always the neutral raised pill
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
No `tone`/`variant` union — the selected fill is always the neutral raised pill; there is nothing
|
|
33
|
+
for a closed union to resolve, the same reasoning `Tabs`/`RadioGroup` document for their own
|
|
34
|
+
single-purpose shape. Track and pill backgrounds are resolved live from `floatingBackground`, not
|
|
35
|
+
from `resolveSegmentedControlColors` (which only maps the two label colours) — see 1.4.11 below.
|
|
36
36
|
|
|
37
37
|
## Accessibility contract (WCAG)
|
|
38
38
|
|
|
@@ -49,32 +49,33 @@ always `bg.sunken`; there is nothing for a closed union to resolve, the same rea
|
|
|
49
49
|
tap. Rather than tune a per-edge exception, every segment's own rendered `minWidth: 44` carries
|
|
50
50
|
the width floor instead (the only axis this spec requires — `fullWidth` segments are already well
|
|
51
51
|
over 44dp in practice).
|
|
52
|
-
- **1.4.3** — the active label (`fg.default`, read on the pill
|
|
53
|
-
label (`fg.muted`, read on the track
|
|
54
|
-
both modes, including the inactive label against its own
|
|
55
|
-
|
|
56
|
-
- **1.4.11** — deliberately **not** satisfied by colour:
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
independently via `aria-selected`, never by colour
|
|
52
|
+
- **1.4.3** — the active label (`fg.default`, read on the pill — `floatingBackground(theme, 'md')`)
|
|
53
|
+
and the inactive label (`fg.muted`, read on the track — `floatingBackground(theme, 'sm')`) are
|
|
54
|
+
each measured ≥ 4.5:1 for all 9 brands × both modes, including the inactive label against its own
|
|
55
|
+
pressed overlay (`stateLayerScrim` at `STATE_LAYER_OPACITY.pressed`, composited onto the track).
|
|
56
|
+
- **1.4.11** — deliberately **not** satisfied by colour: the pill/track pairing measures ~1.1:1,
|
|
57
|
+
nowhere near 3:1, in dark mode. The pill is one `floatingBackground` level above the track
|
|
58
|
+
(`'md'` vs `'sm'`, the same step `Card`'s `elevated` variant uses), which guarantees it is
|
|
59
|
+
**lighter**, never darker — a real regression once shipped raw `bg.surface` under `theme.elevation.md`,
|
|
60
|
+
which measured pill *darker* than track (1.04–1.12:1 inverted) since that shadow token is
|
|
61
|
+
mode-unaware. Selection reaches assistive tech independently via `aria-selected`, never by colour.
|
|
62
62
|
- **2.4.7** — the focused segment draws a `border.focus` ring
|
|
63
63
|
(`${testID}-${option.value}-focus-ring`), the same treatment `BottomNavTab` uses. The pill is
|
|
64
64
|
**not** it: it marks selection and moves only on change. Drawn *inside* the segment's bounds —
|
|
65
65
|
segments render flush, so a gap-outside ring would spill over its neighbour.
|
|
66
|
-
- **2.3.3** — the pill's
|
|
67
|
-
own `onLayout` measurement
|
|
68
|
-
|
|
69
|
-
|
|
66
|
+
- **2.3.3** — only the pill's `translateX` animates: one Reanimated shared value driven off each
|
|
67
|
+
segment's own `onLayout` measurement (the pill's `width` is set straight from that measurement, not
|
|
68
|
+
tweened). Under reduced motion the value is assigned directly — an instant snap instead of a tween,
|
|
69
|
+
verified in the render and motion tests by asserting `withTiming` is not called.
|
|
70
70
|
|
|
71
71
|
## Motion
|
|
72
72
|
|
|
73
|
-
The slide goes through **`useMotion()`**,
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
73
|
+
The slide goes through **`useMotion()`**, never a direct `MOTION_DURATION` import — only
|
|
74
|
+
`motion.timing` applies `MOTION_TIER[tier].durationScale`, so a raw constant would ignore the device
|
|
75
|
+
tier. Reduce-motion is `motion.enabled` — no second `useReducedMotion()` call (`core/motion/MODULE.md`
|
|
76
|
+
rule 6). Segment presses use `usePressState` (scale + state-layer overlay), a bounded
|
|
77
|
+
`android_ripple` (gated off while the segment is disabled), and fire `haptics.selection()` on change.
|
|
78
|
+
The in-flight slide is stopped on effect cleanup and on unmount.
|
|
78
79
|
|
|
79
80
|
## Patterns copied from Tabs / ButtonGroup / Card
|
|
80
81
|
|
|
@@ -90,10 +91,13 @@ rule 6). Segment presses use `usePressState` (scale + state-layer overlay). The
|
|
|
90
91
|
|
|
91
92
|
## Design decisions specific to this module
|
|
92
93
|
|
|
93
|
-
- **The pill is neutral
|
|
94
|
+
- **The pill is a neutral raised surface, not accent-coloured.** This is what the spec this module
|
|
94
95
|
was built against calls for, and it is also the only choice that keeps every segment's label the
|
|
95
96
|
same colour whether or not it happens to be selected in a given render — no per-brand accent
|
|
96
97
|
contrast to chase the way `ButtonGroup`'s `accent.solid` fill required a whole edge-colour fix.
|
|
98
|
+
- **Nested radii stay concentric.** Pill, focus ring and segment all use `radii.base` (8) —
|
|
99
|
+
`radii.md` (12) minus the track's `space[1]` inset (4) — never `radii.sm`, which under-rounds
|
|
100
|
+
them by 4dp against the track's own corner.
|
|
97
101
|
- **Horizontal `hitSlop` is zero, full stop** — no per-edge "outer edge gets slop" exception like
|
|
98
102
|
`ButtonGroup`'s. Only the vertical target is spec-mandated here; adding the outer-edge case would
|
|
99
103
|
be unrequested surface area for a control whose segments (especially `fullWidth`) are already
|
|
@@ -122,5 +126,3 @@ Wrapped in `React.memo`. `handleSegmentLayout` is `useCallback`'d (mirroring `Ta
|
|
|
122
126
|
- Theme imports decoupled to `theme/hooks`; optional peers (reanimated, gesture-handler, flash-list) load at runtime.
|
|
123
127
|
- List-heavy surfaces use `VirtualList` with device-tier window sizing where applicable.
|
|
124
128
|
- `React.memo` + stable callbacks retained; render-item/key-extractor hoisted per ESLint perf rules.
|
|
125
|
-
- **Round 5 (Android parity)** — segments were missing `android_ripple` entirely; added, bounded
|
|
126
|
-
(`borderless: false`), gated off while a segment is disabled.
|
|
@@ -1,25 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
/**
|
|
4
|
-
* SegmentedControl — an inline, iOS-style single-choice control for switching between 2–5 mutually
|
|
5
|
-
* exclusive options (filters, view modes, date ranges). A rounded track (`bg.sunken`) holds every
|
|
6
|
-
* segment; the active one is marked by a raised pill (`bg.surface` + `Card`'s own elevation
|
|
7
|
-
* treatment) that slides to the selected segment's measured position — the identical
|
|
8
|
-
* measure-via-`onLayout` + `Animated.Value` mechanism `Tabs`' sliding indicator uses, keyed by
|
|
9
|
-
* `value` so reordering `options` can never apply a stale measurement to the wrong segment.
|
|
10
|
-
*
|
|
11
|
-
* Unlike `ButtonGroup`/`Tabs`, the active state is NOT accent-coloured: the pill is a neutral raised
|
|
12
|
-
* surface, and elevation — not colour — is what marks it, because `bg.surface` vs `bg.sunken` alone
|
|
13
|
-
* measures nowhere near WCAG 1.4.11's 3:1 (see `SegmentedControl.variants.ts`). Selection reaches
|
|
14
|
-
* assistive tech independently via `accessibilityState.selected`.
|
|
15
|
-
*
|
|
16
|
-
* The pill is a SELECTION marker, never a focus one — keyboard/AT focus draws its own inset ring on
|
|
17
|
-
* the focused segment (WCAG 2.4.7), the same treatment `BottomNavTab` uses.
|
|
18
|
-
*/
|
|
3
|
+
/** Inline single-choice control; see `MODULE.md` for the elevation/a11y contract. */
|
|
19
4
|
|
|
20
5
|
import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
21
|
-
import {
|
|
22
|
-
import Reanimated from "react-native-reanimated";
|
|
6
|
+
import { Platform, Pressable, StyleSheet, Text, View } from "react-native";
|
|
7
|
+
import Reanimated, { useAnimatedStyle } from "react-native-reanimated";
|
|
23
8
|
import { useAnimatedValue, useMotion } from "../../core/motion/index.js";
|
|
24
9
|
import { useHaptics } from "../../core/haptics/index.js";
|
|
25
10
|
import { usePressState } from "../../core/motion/usePressState.js";
|
|
@@ -90,13 +75,14 @@ const SegmentButton = /*#__PURE__*/memo(function SegmentButton({
|
|
|
90
75
|
overflow: "hidden"
|
|
91
76
|
}, press.animatedStyle, option.disabled === true && !segmentDisabled && styles.dimmed],
|
|
92
77
|
children: [/*#__PURE__*/_jsx(Reanimated.View, {
|
|
93
|
-
|
|
94
|
-
|
|
78
|
+
style: [StyleSheet.absoluteFill, overlayStaticStyle, press.overlayStyle, {
|
|
79
|
+
pointerEvents: "none"
|
|
80
|
+
}]
|
|
95
81
|
}), focused && /*#__PURE__*/_jsx(View, {
|
|
96
|
-
pointerEvents: "none",
|
|
97
82
|
testID: testID ? `${testID}-focus-ring` : undefined,
|
|
98
83
|
style: [segmentedControlFocusRingStructure(theme), {
|
|
99
|
-
borderColor: theme.colors.border.focus
|
|
84
|
+
borderColor: theme.colors.border.focus,
|
|
85
|
+
pointerEvents: "none"
|
|
100
86
|
}]
|
|
101
87
|
}), option.icon !== undefined && /*#__PURE__*/_jsx(Icon, {
|
|
102
88
|
name: option.icon,
|
|
@@ -134,6 +120,11 @@ function SegmentedControlImpl({
|
|
|
134
120
|
const [focusedValue, setFocusedValue] = useState(null);
|
|
135
121
|
const pillX = useAnimatedValue(0);
|
|
136
122
|
const running = useRef(null);
|
|
123
|
+
const pillMotionStyle = useAnimatedStyle(() => ({
|
|
124
|
+
transform: [{
|
|
125
|
+
translateX: pillX.value
|
|
126
|
+
}]
|
|
127
|
+
}));
|
|
137
128
|
const activeLayout = layouts[value];
|
|
138
129
|
const handleSegmentLayout = useCallback((optionValue, event) => {
|
|
139
130
|
const {
|
|
@@ -156,7 +147,7 @@ function SegmentedControlImpl({
|
|
|
156
147
|
if (activeLayout === undefined) return undefined;
|
|
157
148
|
running.current?.stop();
|
|
158
149
|
if (!motion.enabled) {
|
|
159
|
-
pillX.
|
|
150
|
+
pillX.value = activeLayout.x;
|
|
160
151
|
return undefined;
|
|
161
152
|
}
|
|
162
153
|
running.current = motion.timing(pillX, activeLayout.x, {
|
|
@@ -177,15 +168,14 @@ function SegmentedControlImpl({
|
|
|
177
168
|
backgroundColor: floatingBackground(theme, "sm"),
|
|
178
169
|
...floatingSurfaceStyle(theme, "sm")
|
|
179
170
|
}, disabled && styles.dimmed, style],
|
|
180
|
-
children: [/*#__PURE__*/_jsx(
|
|
181
|
-
pointerEvents: "none",
|
|
171
|
+
children: [/*#__PURE__*/_jsx(Reanimated.View, {
|
|
182
172
|
testID: testID ? `${testID}-pill` : undefined,
|
|
183
|
-
style: [segmentedControlPillStructure(theme),
|
|
184
|
-
backgroundColor:
|
|
173
|
+
style: [segmentedControlPillStructure(theme), {
|
|
174
|
+
backgroundColor: floatingBackground(theme, "md"),
|
|
185
175
|
width: activeLayout?.width ?? 0,
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
176
|
+
...floatingSurfaceStyle(theme, "md")
|
|
177
|
+
}, pillMotionStyle, {
|
|
178
|
+
pointerEvents: "none"
|
|
189
179
|
}]
|
|
190
180
|
}), options.map(option => {
|
|
191
181
|
const selected = option.value === value;
|
|
@@ -1,23 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
/**
|
|
4
|
-
* SegmentedControl's style + behaviour resolution — pure, React/lucide-free, same split as Tabs:
|
|
5
|
-
* - STRUCTURE (track padding/radius, segment height/padding, pill radius) lives in the
|
|
6
|
-
* `createThemedVariants` resolvers below, registered once per (theme, size) — never rebuilt per
|
|
7
|
-
* render.
|
|
8
|
-
* - COLOUR is resolved from the theme's ROLE colours (`resolveSegmentedControlColors`), never a raw
|
|
9
|
-
* hex: the track is always `bg.sunken`, the pill is always `bg.surface` (a neutral raised
|
|
10
|
-
* surface, NOT the accent role — unlike `ButtonGroup`/`Tabs`, selection here is conveyed by
|
|
11
|
-
* elevation + position, not by brand colour).
|
|
12
|
-
* - `resolveSegmentedControlSegmentAccessibility` derives the per-segment a11y surface purely, so
|
|
13
|
-
* the "selected"/"disabled" contract is unit-testable without rendering React Native.
|
|
14
|
-
*/
|
|
3
|
+
/** Pure style + a11y resolvers for SegmentedControl — no React, no lucide. */
|
|
15
4
|
|
|
5
|
+
import { MIN_TOUCH_TARGET, slopFor } from "../../core/a11y/touchTarget.js";
|
|
16
6
|
import { createThemedVariants } from "../../core/style/index.js";
|
|
17
|
-
|
|
18
|
-
* modules stay isolated. */
|
|
19
|
-
export const MIN_TOUCH_TARGET = 44;
|
|
20
|
-
const slopFor = height => Math.max(0, Math.ceil((MIN_TOUCH_TARGET - height) / 2));
|
|
7
|
+
export { MIN_TOUCH_TARGET };
|
|
21
8
|
export const SEGMENTED_CONTROL_SIZES = {
|
|
22
9
|
sm: {
|
|
23
10
|
height: 32,
|
|
@@ -32,24 +19,11 @@ export const SEGMENTED_CONTROL_SIZES = {
|
|
|
32
19
|
hitSlop: slopFor(40)
|
|
33
20
|
}
|
|
34
21
|
};
|
|
35
|
-
/**
|
|
36
|
-
* Maps the control's fixed visual roles onto ROLE colours — never a hardcoded hex. There is no
|
|
37
|
-
* per-segment `tone`: like `RadioGroup`/`Tabs`, this is pure indirection, not a union to resolve.
|
|
38
|
-
*
|
|
39
|
-
* The pill deliberately reads `bg.surface`, NOT an accent fill: `bg.surface` vs `bg.sunken` alone
|
|
40
|
-
* measures as low as 1.08:1 (nowhere near WCAG 1.4.11's 3:1 — see `SegmentedControl.test.ts`), so
|
|
41
|
-
* the boundary between the pill and the track is carried by elevation (`theme.elevation.md`, the
|
|
42
|
-
* same treatment `Card`'s `elevated` variant uses to differentiate itself with no border either),
|
|
43
|
-
* not by a colour contrast this pairing could never clear on its own. Selection is additionally
|
|
44
|
-
* conveyed to assistive tech via `accessibilityState.selected`, never by colour alone.
|
|
45
|
-
*/
|
|
22
|
+
/** Label colours only — track/pill/pressed backgrounds are resolved live in `SegmentedControl.tsx`. */
|
|
46
23
|
export function resolveSegmentedControlColors(colors) {
|
|
47
24
|
return {
|
|
48
|
-
track: colors.bg.sunken,
|
|
49
|
-
pill: colors.bg.surface,
|
|
50
25
|
activeLabel: colors.fg.default,
|
|
51
|
-
inactiveLabel: colors.fg.muted
|
|
52
|
-
pressedSegment: colors.bg.raised
|
|
26
|
+
inactiveLabel: colors.fg.muted
|
|
53
27
|
};
|
|
54
28
|
}
|
|
55
29
|
export function resolveSegmentedControlSegmentAccessibility(input) {
|
|
@@ -92,20 +66,13 @@ export const segmentedControlTrackStructure = createThemedVariants(theme => ({
|
|
|
92
66
|
}
|
|
93
67
|
}));
|
|
94
68
|
|
|
95
|
-
/**
|
|
96
|
-
* The pill. `theme.radii.sm` — one step down from the track's `theme.radii.md` — nests cleanly
|
|
97
|
-
* inside the track's own `space[1]` inset, the same "inner radius ≈ outer radius − inset" geometry
|
|
98
|
-
* a nested rounded rect needs to read as concentric rather than mismatched. `top`/`bottom` pin it to
|
|
99
|
-
* the row's own height (set by the segments, its flow siblings); `left`/`width` are driven by
|
|
100
|
-
* `Animated.Value`s in `SegmentedControl.tsx`, keyed off each segment's own `onLayout` measurement —
|
|
101
|
-
* same mechanism as `Tabs`' sliding indicator.
|
|
102
|
-
*/
|
|
69
|
+
/** `radii.base` (12 − the track's `space[1]` inset of 4) nests concentric inside `radii.md`. */
|
|
103
70
|
export const segmentedControlPillStructure = createThemedVariants(theme => ({
|
|
104
71
|
base: {
|
|
105
72
|
position: "absolute",
|
|
106
73
|
top: 0,
|
|
107
74
|
bottom: 0,
|
|
108
|
-
borderRadius: theme.radii.
|
|
75
|
+
borderRadius: theme.radii.base
|
|
109
76
|
}
|
|
110
77
|
}));
|
|
111
78
|
|
|
@@ -123,7 +90,7 @@ export const segmentedControlFocusRingStructure = createThemedVariants(theme =>
|
|
|
123
90
|
right: 0,
|
|
124
91
|
bottom: 0,
|
|
125
92
|
borderWidth: theme.borderWidths.thick,
|
|
126
|
-
borderRadius: theme.radii.
|
|
93
|
+
borderRadius: theme.radii.base
|
|
127
94
|
}
|
|
128
95
|
}));
|
|
129
96
|
|
|
@@ -139,7 +106,7 @@ export const segmentedControlSegmentStructure = createThemedVariants(theme => ({
|
|
|
139
106
|
alignItems: "center",
|
|
140
107
|
justifyContent: "center",
|
|
141
108
|
minWidth: MIN_TOUCH_TARGET,
|
|
142
|
-
borderRadius: theme.radii.
|
|
109
|
+
borderRadius: theme.radii.base,
|
|
143
110
|
columnGap: theme.space[1]
|
|
144
111
|
},
|
|
145
112
|
variants: {
|
|
@@ -17,11 +17,12 @@ context + a stateless helper with no React-tree footprint of its own, not a depe
|
|
|
17
17
|
|------|------|
|
|
18
18
|
| `Select.tsx` | The component. Trigger + `Modal` composition, open/close state, focus handling. Option list is `core/list`'s `VirtualList` (device-tier windowing over FlashList-or-FlatList), built only while `open`. |
|
|
19
19
|
| `Select.variants.ts` | Pure resolvers (`SELECT_SIZES`, `resolveSelectTriggerColors`, `resolveSelectRowColors`, `resolveSelectAccessibility`) + the themed structural resolvers (`selectTriggerStructure`, `selectOverlayStructure`, `selectSheetStructure`, `selectRowStructure`). No React, no lucide. |
|
|
20
|
-
| `index.ts` | Public surface: `Select`, `SelectProps`, `SelectOption`, `SelectSize`. |
|
|
20
|
+
| `index.ts` | Public surface: `Select`, `SelectProps`, `SelectOption`, `SelectOptionTone`, `SelectOptionCustomColors`, `SelectSize`. |
|
|
21
21
|
| `__tests__/Select.test.ts` | Pure: WCAG contrast (all brands × modes) + touch target + a11y contract. |
|
|
22
22
|
| `__tests__/Select.render.test.tsx` | Render: display, open/close, disabled gating, selection, backdrop dismiss, the row's resolved 44dp `minHeight`, and the web-portal opt-in branch (mocking `renderWebPortal`). |
|
|
23
23
|
| `__tests__/Select.keyboard.test.tsx` | Web keyboard: tab stop opens on the selected option, arrows/Home/End/typeahead, Space selection, Escape. |
|
|
24
|
-
| `__tests__/Select.motion.test.tsx` | Reduce-motion (WCAG 2.3.3): check-glyph and press feedback snap to their final values, and
|
|
24
|
+
| `__tests__/Select.motion.test.tsx` | Reduce-motion (WCAG 2.3.3): check-glyph and press feedback snap to their final values, and no Reanimated timing runs. |
|
|
25
|
+
| `__tests__/Select.dom.test.tsx` | Real DOM (`jest.web.config.js`): the trigger and sheet under `react-dom`. |
|
|
25
26
|
|
|
26
27
|
## Props
|
|
27
28
|
|
|
@@ -32,6 +33,8 @@ context + a stateless helper with no React-tree footprint of its own, not a depe
|
|
|
32
33
|
| `onValueChange` | `(value: string) => void` | — | Required. Fired on row press; the menu closes right after. |
|
|
33
34
|
| `placeholder` | `string` | — | Shown when `value` matches no option. |
|
|
34
35
|
| `label` | `string` | — | Field label above the trigger; also folded into its accessible name. |
|
|
36
|
+
| `status` | `InputStatus` | `"default"` | `"error"` paints the danger border and sets `aria-invalid`, same union as `Input`. |
|
|
37
|
+
| `errorText` | `string` | — | Rendered below the trigger, but only while `status="error"`. |
|
|
35
38
|
| `disabled` | `boolean` | `false` | Blocks opening the menu; dimmed like Button's disabled state. |
|
|
36
39
|
| `size` | `sm \| md \| lg` | `md` | 32 / 40 / 48 dp; short sizes reach 44 via `hitSlop`. |
|
|
37
40
|
| `containerStyle` | `LayoutStyle` | — | Layout-only, outermost, applied exactly once, last. |
|
|
@@ -120,9 +123,7 @@ widening is one audited cast in `Select.variants.ts` rather than a cast at the c
|
|
|
120
123
|
was built against. A future `Combobox`/`MultiSelect` would be a separate module, not a prop
|
|
121
124
|
added here (closed-prop-contract).
|
|
122
125
|
- The trigger's focus ring is a border-colour swap (`border.focus`), not Button's offset ring —
|
|
123
|
-
intentional: Select
|
|
124
|
-
`Input` module to confirm against yet (parallel build). Revisit if `Input` lands a different
|
|
125
|
-
convention and the two should be reconciled.
|
|
126
|
+
intentional: Select follows `input/`'s focus convention rather than Button's.
|
|
126
127
|
- No measured anchor position — the overlay always centers within its container, regardless of
|
|
127
128
|
where the trigger sits on screen, same as Menu's identical `justifyContent: "center"` overlay
|
|
128
129
|
(see `menu/MODULE.md`'s Known gaps). A real anchor would need `Button` to forward refs (it
|
|
@@ -177,3 +178,5 @@ Via `core/motion` only — `opacity`/`transform`, native driver, all reduce-moti
|
|
|
177
178
|
|
|
178
179
|
- Theme imports decoupled to `theme/hooks`; optional peers (reanimated, gesture-handler, flash-list) load at runtime.
|
|
179
180
|
- List-heavy surfaces use `VirtualList` with device-tier window sizing where applicable.
|
|
181
|
+
|
|
182
|
+
Backdrop scrim uses MOTION_TRANSFORM.scrimOpacity (aligned with Modal).
|