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,13 +9,13 @@
|
|
|
9
9
|
* accessible node per lane, holding the whole relationship, is what a screen reader can act on.
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
import { memo, useCallback, useMemo, useState } from "react";
|
|
12
|
+
import { memo, useCallback, useLayoutEffect, useMemo, useRef, useState } from "react";
|
|
13
13
|
import { Platform, Pressable, ScrollView, StyleSheet, Text, useWindowDimensions, View } from "react-native";
|
|
14
14
|
import { useDeviceTier } from "../../core/device/index.js";
|
|
15
15
|
import { useTheme } from "../../theme/hooks.js";
|
|
16
16
|
import { rippleColor } from "../../theme/platform/stateLayer.native.js";
|
|
17
17
|
import { Button } from "../button/Button.js";
|
|
18
|
-
import { computeGanttModel, resolveGanttColors, resolveVisibleGanttLanes, GANTT_BAR_H, GANTT_BAR_HIT_SLOP, GANTT_LABEL_W, GANTT_ROW_H, MAX_RENDERED_LANES } from "./Gantt.variants.js";
|
|
18
|
+
import { computeGanttModel, resolveGanttColors, resolveGanttInitialScrollX, resolveVisibleGanttLanes, GANTT_BAR_H, GANTT_BAR_HIT_SLOP, GANTT_LABEL_W, GANTT_ROW_H, MAX_RENDERED_LANES } from "./Gantt.variants.js";
|
|
19
19
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
20
20
|
const BAR_TOP = (GANTT_ROW_H - GANTT_BAR_H) / 2;
|
|
21
21
|
const BAR_RADIUS = 5;
|
|
@@ -84,8 +84,9 @@ const GanttLaneBar = /*#__PURE__*/memo(function GanttLaneBar({
|
|
|
84
84
|
android_ripple: androidRipple,
|
|
85
85
|
style: barStyle,
|
|
86
86
|
children: !isMarker ? /*#__PURE__*/_jsx(View, {
|
|
87
|
-
|
|
88
|
-
|
|
87
|
+
style: [fillStyle, {
|
|
88
|
+
pointerEvents: 'none'
|
|
89
|
+
}]
|
|
89
90
|
}) : null
|
|
90
91
|
})
|
|
91
92
|
});
|
|
@@ -103,11 +104,24 @@ export const Gantt = /*#__PURE__*/memo(function Gantt({
|
|
|
103
104
|
const [now] = useState(() => Date.now());
|
|
104
105
|
const tier = useDeviceTier();
|
|
105
106
|
const [expanded, setExpanded] = useState(false);
|
|
107
|
+
const scrollRef = useRef(null);
|
|
108
|
+
const [chartViewportWidth, setChartViewportWidth] = useState(0);
|
|
106
109
|
const model = useMemo(() => computeGanttModel(lanes, winW, now), [lanes, winW, now]);
|
|
110
|
+
const initialScrollX = useMemo(() => resolveGanttInitialScrollX(model, chartViewportWidth), [model, chartViewportWidth]);
|
|
107
111
|
const colors = useMemo(() => resolveGanttColors(theme.colors), [theme.colors]);
|
|
108
112
|
const maxLanes = MAX_RENDERED_LANES[tier];
|
|
109
113
|
const visible = useMemo(() => resolveVisibleGanttLanes(model, maxLanes, expanded), [model, maxLanes, expanded]);
|
|
110
114
|
const handleShowAll = useCallback(() => setExpanded(true), []);
|
|
115
|
+
const handleChartLayout = useCallback(event => {
|
|
116
|
+
setChartViewportWidth(event.nativeEvent.layout.width);
|
|
117
|
+
}, []);
|
|
118
|
+
useLayoutEffect(() => {
|
|
119
|
+
if (chartViewportWidth <= 0) return;
|
|
120
|
+
scrollRef.current?.scrollTo({
|
|
121
|
+
x: initialScrollX,
|
|
122
|
+
animated: false
|
|
123
|
+
});
|
|
124
|
+
}, [initialScrollX, chartViewportWidth, lanes]);
|
|
111
125
|
const rootStyle = useMemo(() => [{
|
|
112
126
|
gap: theme.space[2]
|
|
113
127
|
}, style], [theme, style]);
|
|
@@ -175,9 +189,11 @@ export const Gantt = /*#__PURE__*/memo(function Gantt({
|
|
|
175
189
|
sublabelStyle: sublabelStyle
|
|
176
190
|
}, lane.id))
|
|
177
191
|
}), /*#__PURE__*/_jsx(ScrollView, {
|
|
192
|
+
ref: scrollRef,
|
|
178
193
|
horizontal: true,
|
|
179
194
|
showsHorizontalScrollIndicator: true,
|
|
180
195
|
style: styles.chart,
|
|
196
|
+
onLayout: handleChartLayout,
|
|
181
197
|
children: /*#__PURE__*/_jsxs(View, {
|
|
182
198
|
style: chartBodyStyle,
|
|
183
199
|
children: [visible.lanes.map(lane => /*#__PURE__*/_jsx(GanttLaneBar, {
|
|
@@ -192,8 +208,9 @@ export const Gantt = /*#__PURE__*/memo(function Gantt({
|
|
|
192
208
|
mode: theme.mode,
|
|
193
209
|
onPress: onLanePress
|
|
194
210
|
}, lane.id)), model.showToday ? /*#__PURE__*/_jsx(View, {
|
|
195
|
-
|
|
196
|
-
|
|
211
|
+
style: [styles.todayLine, todayStyle, {
|
|
212
|
+
pointerEvents: 'none'
|
|
213
|
+
}]
|
|
197
214
|
}) : null]
|
|
198
215
|
})
|
|
199
216
|
})]
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Gantt layout math — ported from tickets/mobile EpicTimeline. Pure, testable.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
import { MIN_TOUCH_TARGET, slopFor } from "../../core/a11y/touchTarget.js";
|
|
7
8
|
export const MS_PER_DAY = 86_400_000;
|
|
8
9
|
export const GANTT_LABEL_W = 108;
|
|
9
10
|
export const GANTT_ROW_H = 46;
|
|
@@ -14,9 +15,6 @@ export const GANTT_BASE_PX_PER_DAY = 4;
|
|
|
14
15
|
export const GANTT_MIN_SPAN_MS = 14 * MS_PER_DAY;
|
|
15
16
|
export const GANTT_PAD_MS = 2 * MS_PER_DAY;
|
|
16
17
|
|
|
17
|
-
/** WCAG 2.5.5 target size, the library-wide floor (`Tabs`/`Pagination`/`Reorder` all pin the same 44). */
|
|
18
|
-
export const MIN_TOUCH_TARGET = 44;
|
|
19
|
-
|
|
20
18
|
/**
|
|
21
19
|
* Lanes rendered before the "show all" affordance takes over — the same worst-case safety valve as
|
|
22
20
|
* `MAX_RENDERED_POINTS` in `Charts.variants.ts`, tier-scaled because a lane count this large comes
|
|
@@ -28,7 +26,6 @@ export const MAX_RENDERED_LANES = {
|
|
|
28
26
|
mid: 80,
|
|
29
27
|
high: 150
|
|
30
28
|
};
|
|
31
|
-
const slopFor = dimension => Math.max(0, Math.ceil((MIN_TOUCH_TARGET - dimension) / 2));
|
|
32
29
|
|
|
33
30
|
/**
|
|
34
31
|
* A bar is a *data mark* — its 18dp height encodes nothing but the chart's row rhythm, and its width
|
|
@@ -56,6 +53,7 @@ export const GANTT_BAR_HIT_SLOP = {
|
|
|
56
53
|
* `fg.subtle` (a flat `gray[500]`) falls to 3.19:1 on emerald light. Same defect as `Text`'s
|
|
57
54
|
* `overline` and `Timeline`'s timestamp.
|
|
58
55
|
*/
|
|
56
|
+
export { MIN_TOUCH_TARGET };
|
|
59
57
|
export function resolveGanttColors(colors) {
|
|
60
58
|
return {
|
|
61
59
|
bar: colors.accent.solid,
|
|
@@ -156,6 +154,16 @@ export function computeGanttModel(lanes, windowWidth, nowMs) {
|
|
|
156
154
|
* from its position in the array, so dropping trailing lanes never shifts the ones kept. `bodyHeight`
|
|
157
155
|
* is recomputed for the slice so the chart body and the "today" line never overshoot the rendered rows.
|
|
158
156
|
*/
|
|
157
|
+
/**
|
|
158
|
+
* Horizontal scroll offset so the earliest lane (or today, when shown) is inside the viewport.
|
|
159
|
+
* `viewportWidth` is the chart `ScrollView` width, not the full window.
|
|
160
|
+
*/
|
|
161
|
+
export function resolveGanttInitialScrollX(model, viewportWidth, paddingPx = 8) {
|
|
162
|
+
if (model.empty || model.chartWidth <= viewportWidth) return 0;
|
|
163
|
+
const minLeft = model.lanes.reduce((m, lane) => Math.min(m, lane.leftPx), Number.POSITIVE_INFINITY);
|
|
164
|
+
const maxScroll = model.chartWidth - viewportWidth;
|
|
165
|
+
return Math.max(0, Math.min(minLeft - paddingPx, maxScroll));
|
|
166
|
+
}
|
|
159
167
|
export function resolveVisibleGanttLanes(model, maxLanes, expanded) {
|
|
160
168
|
const total = model.lanes.length;
|
|
161
169
|
if (expanded || total <= maxLanes) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# gantt/
|
|
1
|
+
# gantt/ — a horizontal Gantt chart of time-ranged lanes
|
|
2
2
|
|
|
3
3
|
Horizontal Gantt chart — ported from tickets/mobile `EpicTimeline`. Pure layout in `Gantt.variants.ts`.
|
|
4
4
|
|
|
@@ -11,7 +11,7 @@ Horizontal Gantt chart — ported from tickets/mobile `EpicTimeline`. Pure layou
|
|
|
11
11
|
|
|
12
12
|
## Props
|
|
13
13
|
|
|
14
|
-
`lanes` (`GanttLaneInput[]`: id, label, sublabel, startMs, endMs, progress) · `onLanePress(id)` ·
|
|
14
|
+
`lanes` (`GanttLaneInput[]`: id, label, sublabel, startMs, endMs, `progress` 0–100 like `ProgressBar`) · `onLanePress(id)` ·
|
|
15
15
|
`style` (layout-only, outermost, once, last) · `testID`. A lane shorter than a day renders as a marker.
|
|
16
16
|
|
|
17
17
|
## Colour & accessibility
|
|
@@ -41,7 +41,7 @@ observed ratio is in brackets.
|
|
|
41
41
|
**Touch targets.** A bar is a data mark: its 18dp height is the row rhythm and its width is the lane's
|
|
42
42
|
duration, so growing it to 44dp would lie about the data. `GANTT_BAR_HIT_SLOP` widens the press target
|
|
43
43
|
instead — sized off the narrowest bar the layout can produce (`GANTT_MARKER_W`, 12dp), so every bar
|
|
44
|
-
clears `MIN_TOUCH_TARGET
|
|
44
|
+
clears `MIN_TOUCH_TARGET` (`core/a11y/touchTarget`, re-exported from `Gantt.variants.ts`). Vertical slop is capped so `GANTT_BAR_H + 2×top ≤ GANTT_ROW_H` and adjacent
|
|
45
45
|
rows' targets never overlap. On Android the bar's `Pressable` also carries `android_ripple`
|
|
46
46
|
(`rippleColor(theme.mode)`, `borderless: false`) — `GanttLaneBar` takes a `mode: ColorScheme` prop
|
|
47
47
|
from `Gantt` to resolve it. This is unrelated to the bar's decorative hairline (see above), which is
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
8
|
import { memo, useCallback, useMemo, useRef, useState } from "react";
|
|
9
|
-
import {
|
|
9
|
+
import { FlatList, Platform, Pressable, Share, StyleSheet, useWindowDimensions, View } from "react-native";
|
|
10
|
+
import Reanimated from "react-native-reanimated";
|
|
10
11
|
import { MediaImage } from "../../core/media/index.js";
|
|
11
12
|
import { useEnterExit, useMotion } from "../../core/motion/index.js";
|
|
12
13
|
import { useTheme } from "../../theme/hooks.js";
|
|
@@ -132,7 +133,7 @@ export const ImageViewer = /*#__PURE__*/memo(function ImageViewer({
|
|
|
132
133
|
title: current.label ?? "Image",
|
|
133
134
|
size: "lg",
|
|
134
135
|
testID: testID,
|
|
135
|
-
children: /*#__PURE__*/_jsxs(
|
|
136
|
+
children: /*#__PURE__*/_jsxs(Reanimated.View, {
|
|
136
137
|
testID: testID ? `${testID}-body` : undefined,
|
|
137
138
|
style: [bodyStyle, enterExit.style, style],
|
|
138
139
|
children: [/*#__PURE__*/_jsx(FlatList, {
|
|
@@ -11,16 +11,16 @@
|
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
import { memo, useCallback, useEffect, useId, useMemo, useRef, useState } from "react";
|
|
14
|
-
import {
|
|
14
|
+
import { Platform, Pressable, StyleSheet, Text, TextInput, View } from "react-native";
|
|
15
|
+
import Reanimated, { useAnimatedStyle } from "react-native-reanimated";
|
|
15
16
|
import { useAnnounce } from "../../core/a11y/index.js";
|
|
16
17
|
import { withAlpha } from "../../core/gradient/index.js";
|
|
17
18
|
import { Icon } from "../../core/icon/index.js";
|
|
18
|
-
import { useAnimatedValue, useEnterExit, useMotion } from "../../core/motion/index.js";
|
|
19
|
+
import { AnimatedText, useAnimatedValue, useEnterExit, useMotion } from "../../core/motion/index.js";
|
|
20
|
+
import { FOCUS_RING_GAP, FOCUS_RING_WIDTH } from "../../core/style/focusRing.js";
|
|
19
21
|
import { useTheme } from "../../theme/hooks.js";
|
|
20
22
|
import { INPUT_SIZES, inputStructure, resolveInputAccessibility, resolveInputStatus } from "./Input.variants.js";
|
|
21
23
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
22
|
-
const FOCUS_RING_WIDTH = 2;
|
|
23
|
-
const FOCUS_RING_GAP = 2;
|
|
24
24
|
export const Input = /*#__PURE__*/memo(function Input(props) {
|
|
25
25
|
const {
|
|
26
26
|
value,
|
|
@@ -34,12 +34,19 @@ export const Input = /*#__PURE__*/memo(function Input(props) {
|
|
|
34
34
|
errorText,
|
|
35
35
|
leadingIcon,
|
|
36
36
|
trailingIcon,
|
|
37
|
-
|
|
37
|
+
onLeadingIconPress,
|
|
38
|
+
onTrailingIconPress,
|
|
39
|
+
isClearable = false,
|
|
40
|
+
showCharacterCount = false,
|
|
41
|
+
maxLength,
|
|
42
|
+
secureTextEntry: secureTextEntryProp,
|
|
38
43
|
accessibilityLabel,
|
|
39
44
|
containerStyle,
|
|
40
45
|
testID,
|
|
41
46
|
autoComplete
|
|
42
47
|
} = props;
|
|
48
|
+
const [passwordVisible, setPasswordVisible] = useState(false);
|
|
49
|
+
const secureTextEntry = secureTextEntryProp === true && !passwordVisible;
|
|
43
50
|
const theme = useTheme();
|
|
44
51
|
const motion = useMotion();
|
|
45
52
|
const [focused, setFocused] = useState(false);
|
|
@@ -66,11 +73,14 @@ export const Input = /*#__PURE__*/memo(function Input(props) {
|
|
|
66
73
|
if (message !== undefined) lastMessage.current = message;
|
|
67
74
|
const ringOpacity = useAnimatedValue(0);
|
|
68
75
|
const ringAnimation = useRef(null);
|
|
76
|
+
const ringAnimatedStyle = useAnimatedStyle(() => ({
|
|
77
|
+
opacity: ringOpacity.value
|
|
78
|
+
}));
|
|
69
79
|
const setRingVisible = useCallback(visible => {
|
|
70
80
|
ringAnimation.current?.stop();
|
|
71
81
|
const to = visible ? 1 : 0;
|
|
72
82
|
if (!motion.enabled) {
|
|
73
|
-
ringOpacity.
|
|
83
|
+
ringOpacity.value = to;
|
|
74
84
|
return;
|
|
75
85
|
}
|
|
76
86
|
ringAnimation.current = motion.timing(ringOpacity, to, {
|
|
@@ -126,12 +136,31 @@ export const Input = /*#__PURE__*/memo(function Input(props) {
|
|
|
126
136
|
color: statusColors.message,
|
|
127
137
|
marginTop: theme.space[1]
|
|
128
138
|
}], [theme, statusColors.message]);
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
});
|
|
139
|
+
const handleClear = useCallback(() => {
|
|
140
|
+
if (!disabled && value.length > 0) onChangeText("");
|
|
141
|
+
}, [disabled, onChangeText, value.length]);
|
|
142
|
+
const togglePassword = useCallback(() => {
|
|
143
|
+
setPasswordVisible(v => !v);
|
|
144
|
+
}, []);
|
|
145
|
+
const showClear = isClearable && value.length > 0 && !disabled;
|
|
146
|
+
const resolvedTrailing = secureTextEntryProp === true ? "eye" : trailingIcon;
|
|
147
|
+
const trailingPress = secureTextEntryProp === true ? togglePassword : onTrailingIconPress;
|
|
148
|
+
const glyph = (name, onPress) => {
|
|
149
|
+
const icon = /*#__PURE__*/_jsx(Icon, {
|
|
150
|
+
name: name,
|
|
151
|
+
size: spec.iconSize,
|
|
152
|
+
color: theme.colors.fg.muted,
|
|
153
|
+
strokeWidth: 2
|
|
154
|
+
});
|
|
155
|
+
if (onPress === undefined) return icon;
|
|
156
|
+
return /*#__PURE__*/_jsx(Pressable, {
|
|
157
|
+
accessibilityRole: "button",
|
|
158
|
+
onPress: onPress,
|
|
159
|
+
hitSlop: spec.hitSlop,
|
|
160
|
+
testID: testID ? `${testID}-icon-${name}` : undefined,
|
|
161
|
+
children: icon
|
|
162
|
+
});
|
|
163
|
+
};
|
|
135
164
|
return /*#__PURE__*/_jsxs(View, {
|
|
136
165
|
style: containerStyle,
|
|
137
166
|
children: [label !== undefined &&
|
|
@@ -145,19 +174,19 @@ export const Input = /*#__PURE__*/memo(function Input(props) {
|
|
|
145
174
|
children: label
|
|
146
175
|
}), /*#__PURE__*/_jsxs(View, {
|
|
147
176
|
style: fieldStyle,
|
|
148
|
-
children: [/*#__PURE__*/_jsx(
|
|
149
|
-
pointerEvents: "none",
|
|
177
|
+
children: [/*#__PURE__*/_jsx(Reanimated.View, {
|
|
150
178
|
testID: "input-focus-ring",
|
|
151
|
-
style: [focusRingStyle, {
|
|
152
|
-
|
|
179
|
+
style: [focusRingStyle, ringAnimatedStyle, {
|
|
180
|
+
pointerEvents: 'none'
|
|
153
181
|
}]
|
|
154
|
-
}), leadingIcon
|
|
182
|
+
}), leadingIcon ? glyph(leadingIcon, onLeadingIconPress) : null, /*#__PURE__*/_jsx(TextInput, {
|
|
155
183
|
testID: testID,
|
|
156
184
|
value: value,
|
|
157
185
|
onChangeText: onChangeText,
|
|
158
186
|
placeholder: placeholder,
|
|
159
187
|
placeholderTextColor: theme.colors.fg.placeholder,
|
|
160
188
|
secureTextEntry: secureTextEntry,
|
|
189
|
+
maxLength: maxLength,
|
|
161
190
|
autoComplete: autoComplete,
|
|
162
191
|
importantForAutofill: autoComplete === "off" ? "no" : undefined,
|
|
163
192
|
editable: a11y.editable,
|
|
@@ -170,14 +199,20 @@ export const Input = /*#__PURE__*/memo(function Input(props) {
|
|
|
170
199
|
onFocus: handleFocus,
|
|
171
200
|
onBlur: handleBlur,
|
|
172
201
|
style: inputTextStyle
|
|
173
|
-
}),
|
|
174
|
-
}),
|
|
202
|
+
}), showClear ? glyph("x", handleClear) : null, resolvedTrailing ? glyph(resolvedTrailing, trailingPress) : null]
|
|
203
|
+
}), showCharacterCount && maxLength !== undefined ? /*#__PURE__*/_jsx(Text, {
|
|
204
|
+
style: [messageStyle, {
|
|
205
|
+
textAlign: "right",
|
|
206
|
+
marginTop: theme.space[1]
|
|
207
|
+
}],
|
|
208
|
+
children: `${value.length}/${maxLength}`
|
|
209
|
+
}) : null, messageMotion.mounted && lastMessage.current !== undefined &&
|
|
175
210
|
/*#__PURE__*/
|
|
176
211
|
// No `accessibilityLiveRegion` (deliberate): it's Android-only, and `useAnnounce` above
|
|
177
212
|
// already announces on both platforms — keeping both would double-announce on Android.
|
|
178
213
|
// Hidden only once the message is gone: `lastMessage` outlives it for the exit tween, and a
|
|
179
214
|
// stale error must not sit in the a11y tree while it fades.
|
|
180
|
-
_jsx(
|
|
215
|
+
_jsx(AnimatedText, {
|
|
181
216
|
nativeID: hintId,
|
|
182
217
|
accessibilityElementsHidden: message === undefined,
|
|
183
218
|
importantForAccessibility: message === undefined ? "no-hide-descendants" : undefined,
|
|
@@ -14,13 +14,12 @@
|
|
|
14
14
|
* (mocking only `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";
|
|
19
|
+
export { MIN_TOUCH_TARGET };
|
|
18
20
|
|
|
19
21
|
/** A state, not a brand tone — an input's colour reports validity, so it is never called `tone`. */
|
|
20
22
|
|
|
21
|
-
/** Same floor as Button — 44dp (WCAG 2.5.5 / HIG). Duplicated, not imported: modules stay isolated. */
|
|
22
|
-
export const MIN_TOUCH_TARGET = 44;
|
|
23
|
-
const slopFor = height => Math.max(0, Math.ceil((MIN_TOUCH_TARGET - height) / 2));
|
|
24
23
|
/**
|
|
25
24
|
* Input-specific dimensions. Height/iconSize/slop are the component's own design constants;
|
|
26
25
|
* `fontSize` sits on the theme's `fontSizes` scale (14/16/18) — same numbers as Button's sizes, so
|
|
@@ -27,8 +27,12 @@ pure/testable resolvers, closed unions, no `{...rest}`.
|
|
|
27
27
|
| `label` | `string` | — | Rendered above the field; falls back into `accessibilityLabel`. |
|
|
28
28
|
| `helperText` | `string` | — | Shown below the field when `status` is `default`. |
|
|
29
29
|
| `errorText` | `string` | — | Shown below the field (replacing `helperText`) and announced, when `status` is `error`. Joins the field's accessible NAME and sets `aria-invalid` — **not** `accessibilityHint` (see below; this used to contradict `FormField`'s own stated rule, fixed to match it). |
|
|
30
|
-
| `leadingIcon` / `trailingIcon` | `IconName` | — | A NAME, never a `ReactNode`. Decorative
|
|
31
|
-
| `
|
|
30
|
+
| `leadingIcon` / `trailingIcon` | `IconName` | — | A NAME, never a `ReactNode`. Decorative unless the matching press handler is given. |
|
|
31
|
+
| `onLeadingIconPress` / `onTrailingIconPress` | `() => void` | — | Makes that glyph a press target. A `secureTextEntry` field overrides the trailing pair with its own toggle. |
|
|
32
|
+
| `isClearable` | `boolean` | `false` | Renders a clear affordance while `value` is non-empty and the field is enabled. |
|
|
33
|
+
| `showCharacterCount` | `boolean` | `false` | Renders `"<length>/<maxLength>"` below the field — needs `maxLength` to show anything. |
|
|
34
|
+
| `maxLength` | `number` | — | Forwarded to the `TextInput`; also the denominator of the character count. |
|
|
35
|
+
| `secureTextEntry` | `boolean` | `false` | Masks the value and replaces `trailingIcon` with an `"eye"` toggle that reveals it. |
|
|
32
36
|
| `accessibilityLabel` | `string` | `label` | Overrides the label fallback. |
|
|
33
37
|
| `containerStyle` | `LayoutStyle` | — | The documented exception for a native-primitive wrapper. Outermost, last, once. Never `inputStyle`. |
|
|
34
38
|
| `testID` | `string` | — | Forwarded to the underlying `TextInput`. |
|
|
@@ -43,7 +47,7 @@ pure/testable resolvers, closed unions, no `{...rest}`.
|
|
|
43
47
|
`Pressable` that receives its `hitSlop`. `Input.render.test.tsx` asserts the rendered node, not
|
|
44
48
|
just the `height + 2·hitSlop` arithmetic.
|
|
45
49
|
- **1.4.3** — label/value text (`fg.default`), placeholder/helper text (`fg.muted`), and the error
|
|
46
|
-
message (`status.danger.text`) are all measured ≥ 4.5:1 against the canvas, for all
|
|
50
|
+
message (`status.danger.text`) are all measured ≥ 4.5:1 against the canvas, for all 9 brands ×
|
|
47
51
|
both modes (`Input.test.ts`). The field renders no explicit background (transparent, like Button's
|
|
48
52
|
outline/ghost/link variants), so the canvas is what every colour is actually read against.
|
|
49
53
|
- **1.4.11** — the resting/focus border (`border.interactive` / `border.focus`) and the error border
|
|
@@ -110,20 +114,9 @@ identity — so it is never called `tone`.
|
|
|
110
114
|
|
|
111
115
|
## Known gaps
|
|
112
116
|
|
|
113
|
-
-
|
|
114
|
-
|
|
115
|
-
- `leadingIcon`/`trailingIcon` are decorative-only in v1 (no `onClear` callback was in scope) — a
|
|
116
|
-
trailing `"x"` renders but doesn't clear the field; a future version could add an explicit
|
|
117
|
-
`onClear` prop if a consuming app needs it.
|
|
117
|
+
- A `secureTextEntry` field owns its trailing slot outright: `trailingIcon`/`onTrailingIconPress`
|
|
118
|
+
are both replaced by the reveal toggle, so the two cannot be combined.
|
|
118
119
|
|
|
119
120
|
## Performance
|
|
120
121
|
|
|
121
122
|
Wrapped in `React.memo` (repo-wide re-render audit, 2026-07-17 — see root `CLAUDE.md`). Its one library child, `Icon`, only ever receives primitives — nothing to memoize; `TextInput`/`View` are host elements, outside this pass's scope.
|
|
122
|
-
|
|
123
|
-
## Modernization (v1.0.7)
|
|
124
|
-
|
|
125
|
-
- Theme imports decoupled to `theme/hooks`; optional peers (reanimated, gesture-handler, flash-list) load at runtime.
|
|
126
|
-
- List-heavy surfaces use `VirtualList` with device-tier window sizing where applicable.
|
|
127
|
-
- `React.memo` + stable callbacks retained; render-item/key-extractor hoisted per ESLint perf rules.
|
|
128
|
-
|
|
129
|
-
- **Round 2 visual** — radii retarget (`radii.md`/`lg`/`xl`/`full`), `borderCurve: continuous` on md+ corners; floating surfaces wire platform elevation/highlight where applicable.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { memo, useMemo } from "react";
|
|
4
|
+
import { View } from "react-native";
|
|
5
|
+
import { useTheme } from "../../theme/hooks.js";
|
|
6
|
+
import { Text } from "../text/index.js";
|
|
7
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
export const KeyValue = /*#__PURE__*/memo(function KeyValue({
|
|
9
|
+
label,
|
|
10
|
+
value,
|
|
11
|
+
stacked = true,
|
|
12
|
+
style,
|
|
13
|
+
testID
|
|
14
|
+
}) {
|
|
15
|
+
const theme = useTheme();
|
|
16
|
+
const rowStyle = useMemo(() => ({
|
|
17
|
+
flexDirection: stacked ? "column" : "row",
|
|
18
|
+
justifyContent: stacked ? "flex-start" : "space-between",
|
|
19
|
+
alignItems: stacked ? "flex-start" : "center",
|
|
20
|
+
gap: theme.space[1],
|
|
21
|
+
paddingVertical: theme.space[2]
|
|
22
|
+
}), [stacked, theme]);
|
|
23
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
24
|
+
testID: testID,
|
|
25
|
+
style: [rowStyle, style],
|
|
26
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
27
|
+
variant: "label-sm",
|
|
28
|
+
color: "muted",
|
|
29
|
+
children: label
|
|
30
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
31
|
+
variant: "body-sm",
|
|
32
|
+
children: value
|
|
33
|
+
})]
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=KeyValue.js.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# key-value/ — a single read-only label/value row
|
|
2
|
+
|
|
3
|
+
Single read-only label/value row. Use `description-list` for grids.
|
|
4
|
+
|
|
5
|
+
## Props
|
|
6
|
+
|
|
7
|
+
| Prop | Type | Default |
|
|
8
|
+
|------|------|---------|
|
|
9
|
+
| `label` | `string` | — |
|
|
10
|
+
| `value` | `string` | — |
|
|
11
|
+
| `stacked` | `boolean` | `true` |
|
|
12
|
+
| `style` | `LayoutStyle` | — |
|
|
13
|
+
| `testID` | `string` | — |
|
|
14
|
+
|
|
15
|
+
`stacked` (the default) puts the value under the label; `false` lays them out as a
|
|
16
|
+
space-between row.
|
|
@@ -16,6 +16,7 @@ optional usage line, and which action(s) appear.
|
|
|
16
16
|
| `LimitReachedModal.variants.ts` | Pure resolvers: the `LimitKind` copy table (`resolveLimitReachedCopy`, ported verbatim from web), `formatLimitUsage`, and the themed icon-badge/action-row layout + colour (`resolveLimitReachedModalColors`). No React, no lucide. |
|
|
17
17
|
| `index.ts` | Public surface: `LimitReachedModal`, `LimitReachedModalProps`, `LimitKind`. |
|
|
18
18
|
| `__tests__/LimitReachedModal.test.ts` | Pure: the copy resolver for all six kinds × both admin/member paths, the usage formatter, and WCAG contrast for this module's own colour choices (icon badge, message, usage) — measured for all 9 brands × both modes. |
|
|
19
|
+
| `__tests__/LimitReachedModal.keyboard.web.test.tsx` | Web keyboard: the Escape/Tab-trap/focus-restore contract inherited from `Modal`. |
|
|
19
20
|
| `__tests__/LimitReachedModal.render.test.tsx` | Render: hidden when `visible=false`, the upgrade CTA absent when `canManageBilling=false`, `onUpgrade`/`onRequestClose` wiring, and the usage line appearing only when both `limit` and `used` are given. |
|
|
20
21
|
|
|
21
22
|
## Props
|
|
@@ -86,9 +87,3 @@ full-screen dialog within.
|
|
|
86
87
|
Wrapped in `React.memo` (repo-wide re-render audit, 2026-07-17 — see root `CLAUDE.md`). The inline
|
|
87
88
|
`() => onUpgrade?.()` is a fresh closure per render, same as `EmptyState`'s action Button — cheap
|
|
88
89
|
because it forwards straight to a leaf `Pressable`, never a memoized child list item.
|
|
89
|
-
|
|
90
|
-
## Modernization (v1.0.7)
|
|
91
|
-
|
|
92
|
-
- Theme imports decoupled to `theme/hooks`; optional peers (reanimated, gesture-handler, flash-list) load at runtime.
|
|
93
|
-
- List-heavy surfaces use `VirtualList` with device-tier window sizing where applicable.
|
|
94
|
-
- `React.memo` + stable callbacks retained; render-item/key-extractor hoisted per ESLint perf rules.
|
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
|
|
7
7
|
import { memo, useMemo } from "react";
|
|
8
8
|
import { Platform, Pressable, StyleSheet, View } from "react-native";
|
|
9
|
-
import Animated, { FadeInDown, ReduceMotion } from "react-native-reanimated";
|
|
9
|
+
import Animated, { FadeInDown, FadeOut, LinearTransition, ReduceMotion } from "react-native-reanimated";
|
|
10
10
|
import { usePressState } from "../../core/motion/usePressState.js";
|
|
11
|
+
import { renderNodeSlot } from "../../core/slot/index.js";
|
|
11
12
|
import { concentric } from "../../core/style/index.js";
|
|
12
13
|
import { rippleColor as androidRippleColor, stateLayerScrim } from "../../theme/platform/stateLayer.native.js";
|
|
13
14
|
import { useTheme } from "../../theme/hooks.js";
|
|
@@ -22,6 +23,8 @@ export const ListItem = /*#__PURE__*/memo(function ListItem({
|
|
|
22
23
|
trailing,
|
|
23
24
|
unread = false,
|
|
24
25
|
onPress,
|
|
26
|
+
accessibilityLabel,
|
|
27
|
+
accessibilityState,
|
|
25
28
|
style,
|
|
26
29
|
testID
|
|
27
30
|
}) {
|
|
@@ -58,6 +61,10 @@ export const ListItem = /*#__PURE__*/memo(function ListItem({
|
|
|
58
61
|
backgroundColor: colors.dot
|
|
59
62
|
}], [theme, colors]);
|
|
60
63
|
const bodyStyle = useMemo(() => listItemBodyStructure(theme), [theme]);
|
|
64
|
+
const slotTextStyle = useMemo(() => [theme.fontStyleForWeight(theme.fontWeights.regular), {
|
|
65
|
+
fontSize: theme.fontSizes.sm,
|
|
66
|
+
color: theme.colors.fg.muted
|
|
67
|
+
}], [theme]);
|
|
61
68
|
const body = /*#__PURE__*/_jsxs(_Fragment, {
|
|
62
69
|
children: [unread && /*#__PURE__*/_jsx(View, {
|
|
63
70
|
testID: testID === undefined ? undefined : `${testID}-dot`,
|
|
@@ -70,7 +77,7 @@ export const ListItem = /*#__PURE__*/memo(function ListItem({
|
|
|
70
77
|
borderCurve: "continuous",
|
|
71
78
|
overflow: "hidden"
|
|
72
79
|
},
|
|
73
|
-
children: leading
|
|
80
|
+
children: renderNodeSlot(leading, slotTextStyle)
|
|
74
81
|
}), /*#__PURE__*/_jsxs(View, {
|
|
75
82
|
style: bodyStyle,
|
|
76
83
|
children: [/*#__PURE__*/_jsx(Text, {
|
|
@@ -84,11 +91,13 @@ export const ListItem = /*#__PURE__*/memo(function ListItem({
|
|
|
84
91
|
numberOfLines: 2,
|
|
85
92
|
children: subtitle
|
|
86
93
|
})]
|
|
87
|
-
}), trailing]
|
|
94
|
+
}), renderNodeSlot(trailing, slotTextStyle)]
|
|
88
95
|
});
|
|
89
96
|
if (!pressable) {
|
|
90
97
|
return /*#__PURE__*/_jsx(Animated.View, {
|
|
91
98
|
entering: FadeInDown.springify().reduceMotion(ReduceMotion.System),
|
|
99
|
+
exiting: FadeOut.reduceMotion(ReduceMotion.System),
|
|
100
|
+
layout: LinearTransition.reduceMotion(ReduceMotion.System),
|
|
92
101
|
testID: testID,
|
|
93
102
|
style: baseStyle,
|
|
94
103
|
children: body
|
|
@@ -97,7 +106,8 @@ export const ListItem = /*#__PURE__*/memo(function ListItem({
|
|
|
97
106
|
return /*#__PURE__*/_jsxs(AnimatedPressable, {
|
|
98
107
|
testID: testID,
|
|
99
108
|
accessibilityRole: "button",
|
|
100
|
-
accessibilityLabel: a11y.accessibilityLabel,
|
|
109
|
+
accessibilityLabel: accessibilityLabel ?? a11y.accessibilityLabel,
|
|
110
|
+
accessibilityState: accessibilityState,
|
|
101
111
|
onPress: onPress,
|
|
102
112
|
onPressIn: press.handlers.onPressIn,
|
|
103
113
|
onPressOut: press.handlers.onPressOut,
|
|
@@ -105,9 +115,10 @@ export const ListItem = /*#__PURE__*/memo(function ListItem({
|
|
|
105
115
|
android_ripple: androidRipple,
|
|
106
116
|
style: pressableStyle,
|
|
107
117
|
children: [/*#__PURE__*/_jsx(Animated.View, {
|
|
108
|
-
pointerEvents: "none",
|
|
109
118
|
testID: testID === undefined ? undefined : `${testID}-press-overlay`,
|
|
110
|
-
style: [StyleSheet.absoluteFill, overlayStaticStyle, press.overlayStyle
|
|
119
|
+
style: [StyleSheet.absoluteFill, overlayStaticStyle, press.overlayStyle, {
|
|
120
|
+
pointerEvents: 'none'
|
|
121
|
+
}]
|
|
111
122
|
}), body]
|
|
112
123
|
});
|
|
113
124
|
});
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
`ListItem` renders one row for notification lists, inboxes, and settings screens: optional
|
|
4
4
|
`leading`/`trailing` nodes around a title + subtitle column. `unread` adds an `accent.solid` dot
|
|
5
5
|
and a `bg.surface` row emphasis (plus a semibold title) — `bg.surface`, not `bg.selected`, because
|
|
6
|
-
`fg.muted` is only measured AA against surface/hover.
|
|
7
|
-
`
|
|
6
|
+
`fg.muted` is only measured AA against surface/hover. With `onPress` the root is a
|
|
7
|
+
`Pressable`; without it, an `Animated.View` (see Motion).
|
|
8
8
|
|
|
9
9
|
## Files
|
|
10
10
|
|
|
@@ -15,6 +15,7 @@ and a `bg.surface` row emphasis (plus a semibold title) — `bg.surface`, not `b
|
|
|
15
15
|
| `index.ts` | Public surface: `ListItem`, `ListItemProps`. |
|
|
16
16
|
| `__tests__/ListItem.test.ts` | Pure: WCAG contrast (all brands × modes) + a11y label contract. |
|
|
17
17
|
| `__tests__/ListItem.render.test.tsx` | Render: unread dot/bg, press, leading/trailing slots. |
|
|
18
|
+
| `__tests__/ListItem.dom.test.tsx` | Real DOM (`jest.web.config.js`). |
|
|
18
19
|
|
|
19
20
|
## Props
|
|
20
21
|
|
|
@@ -26,6 +27,8 @@ and a `bg.surface` row emphasis (plus a semibold title) — `bg.surface`, not `b
|
|
|
26
27
|
| `trailing` | `ReactNode` | — | E.g. a timestamp `Text` or `Badge`. |
|
|
27
28
|
| `unread` | `boolean` | `false` | Accent dot (decorative, hidden from AT — "unread" is announced in the label instead) + `bg.surface` fill. |
|
|
28
29
|
| `onPress` | `() => void` | — | Row becomes a `button`-role Pressable, min 44dp tall. |
|
|
30
|
+
| `accessibilityLabel` | `string` | — | Overrides the default `"title, subtitle, unread?"` label on pressable rows. |
|
|
31
|
+
| `accessibilityState` | `{ disabled?, selected? }` | — | Merged into the pressable row (e.g. `selected` for inbox selection). |
|
|
29
32
|
| `style` | `LayoutStyle` | — | Layout-only, outermost, applied exactly once, last. |
|
|
30
33
|
| `testID` | `string` | — | Also derives the `-dot` sub-id. |
|
|
31
34
|
|
|
@@ -34,19 +37,21 @@ and a `bg.surface` row emphasis (plus a semibold title) — `bg.surface`, not `b
|
|
|
34
37
|
- Pressable rows carry `accessibilityLabel = "title, subtitle, unread?"` so the dot never has to
|
|
35
38
|
speak for itself; non-pressable rows leave the text nodes in the normal tree.
|
|
36
39
|
- Title/subtitle are measured ≥ 4.5:1 against the canvas, the `bg.surface` unread fill, and the
|
|
37
|
-
`bg.sunken` pressed fill for all
|
|
40
|
+
`bg.sunken` pressed fill for all 9 brands × both modes (`ListItem.test.ts`).
|
|
38
41
|
|
|
39
42
|
## Known gaps
|
|
40
43
|
|
|
41
44
|
- `leading`/`trailing` are `ReactNode` slots (per the generic-row spec) — the nodes' own contrast
|
|
42
45
|
and touch-target concerns belong to the consumer.
|
|
43
46
|
|
|
44
|
-
##
|
|
47
|
+
## Motion
|
|
45
48
|
|
|
46
|
-
|
|
49
|
+
The non-pressable branch is an `Animated.View` with `FadeInDown.springify()` / `FadeOut` and a
|
|
50
|
+
`LinearTransition` layout preset, all `reduceMotion(ReduceMotion.System)`. The pressable branch
|
|
51
|
+
mounts with no entrance — it is the one a `FlatList` recycles mid-scroll — and animates only its
|
|
52
|
+
press feedback (`usePressState`: scale + a `stateLayerScrim` overlay on the native driver).
|
|
47
53
|
|
|
48
|
-
##
|
|
54
|
+
## Performance
|
|
49
55
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
- `React.memo` + stable callbacks retained; render-item/key-extractor hoisted per ESLint perf rules.
|
|
56
|
+
Wrapped in `React.memo`; the colours, accessibility name and both root style arrays are `useMemo`'d,
|
|
57
|
+
so nothing is reallocated per render.
|