pixelize-native-library 1.2.0 → 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 +23 -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 +83 -0
- package/lib/module/core/gradient/ShimmerGradientFill.js +79 -0
- package/lib/module/core/gradient/darkenHex.js +13 -0
- package/lib/module/core/gradient/gradientStops.js +27 -0
- package/lib/module/core/gradient/index.js +8 -0
- package/lib/module/core/gradient/withAlpha.js +19 -0
- package/lib/module/core/haptics/MODULE.md +8 -0
- package/lib/module/core/haptics/context.js +7 -0
- package/lib/module/core/haptics/haptics.js +17 -0
- package/lib/module/core/haptics/index.js +6 -0
- package/lib/module/core/haptics/useHaptics.js +73 -0
- package/lib/module/core/heading/MODULE.md +1 -1
- package/lib/module/core/icon/MODULE.md +22 -23
- 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/icon/icons/trending-up.js +10 -0
- package/lib/module/core/icon/resolve.js +2 -0
- package/lib/module/core/list/VirtualList.js +16 -3
- package/lib/module/core/media/expoImage.js +6 -0
- package/lib/module/core/motion/MODULE.md +25 -16
- package/lib/module/core/motion/animatedComponents.js +8 -0
- package/lib/module/core/motion/config.js +4 -1
- package/lib/module/core/motion/index.js +4 -1
- 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 +140 -0
- 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 +2 -1
- package/lib/module/core/style/radius.js +4 -0
- package/lib/module/index.js +24 -4
- package/lib/module/modules/accordion/Accordion.js +115 -153
- package/lib/module/modules/accordion/Accordion.variants.js +6 -7
- package/lib/module/modules/accordion/AccordionProps.js +4 -0
- package/lib/module/modules/accordion/MODULE.md +15 -23
- package/lib/module/modules/alert-dialog/AlertDialog.js +25 -7
- package/lib/module/modules/alert-dialog/AlertDialog.variants.js +4 -0
- 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 +27 -22
- package/lib/module/modules/app-bar/AppBar.variants.js +6 -2
- 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.js +7 -1
- package/lib/module/modules/avatar/Avatar.variants.js +3 -1
- package/lib/module/modules/avatar/AvatarProps.js +4 -0
- package/lib/module/modules/avatar/MODULE.md +3 -3
- package/lib/module/modules/avatar-group/AvatarGroup.js +10 -6
- package/lib/module/modules/avatar-group/AvatarGroup.variants.js +23 -0
- package/lib/module/modules/avatar-group/AvatarGroupProps.js +4 -0
- package/lib/module/modules/avatar-group/MODULE.md +17 -0
- 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/Badge.js +11 -5
- package/lib/module/modules/badge/Badge.variants.js +2 -1
- package/lib/module/modules/badge/BadgeProps.js +4 -0
- package/lib/module/modules/badge/MODULE.md +11 -9
- package/lib/module/modules/banner/Banner.js +106 -60
- package/lib/module/modules/banner/Banner.variants.js +5 -3
- package/lib/module/modules/banner/BannerProps.js +4 -0
- package/lib/module/modules/banner/MODULE.md +27 -33
- package/lib/module/modules/bottom-nav/BottomNav.js +6 -3
- package/lib/module/modules/bottom-nav/BottomNav.variants.js +11 -12
- package/lib/module/modules/bottom-nav/BottomNavIconWithBadge.js +18 -19
- package/lib/module/modules/bottom-nav/BottomNavOverflowSheet.js +35 -10
- package/lib/module/modules/bottom-nav/BottomNavProps.js +4 -0
- package/lib/module/modules/bottom-nav/BottomNavTab.js +38 -15
- package/lib/module/modules/bottom-nav/MODULE.md +14 -5
- package/lib/module/modules/bottom-sheet/BottomSheet.js +49 -13
- package/lib/module/modules/bottom-sheet/BottomSheet.variants.js +15 -5
- package/lib/module/modules/bottom-sheet/BottomSheetProps.js +4 -0
- package/lib/module/modules/bottom-sheet/MODULE.md +24 -3
- 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 +89 -101
- package/lib/module/modules/button/Button.variants.js +14 -17
- package/lib/module/modules/button/ButtonProps.js +4 -0
- package/lib/module/modules/button/MODULE.md +11 -10
- package/lib/module/modules/button-group/ButtonGroup.js +38 -38
- package/lib/module/modules/button-group/ButtonGroup.variants.js +23 -50
- package/lib/module/modules/button-group/ButtonGroupProps.js +4 -0
- package/lib/module/modules/button-group/MODULE.md +27 -32
- package/lib/module/modules/card/Card.js +140 -19
- package/lib/module/modules/card/Card.variants.js +1 -0
- package/lib/module/modules/card/CardProps.js +4 -0
- package/lib/module/modules/card/MODULE.md +17 -12
- package/lib/module/modules/charts/BarChart.js +35 -18
- package/lib/module/modules/charts/BarChartProps.js +4 -0
- package/lib/module/modules/charts/BarList.js +33 -19
- 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 +69 -3
- package/lib/module/modules/charts/DonutChart.js +12 -6
- package/lib/module/modules/charts/DonutChartProps.js +4 -0
- package/lib/module/modules/charts/LineChart.js +8 -5
- package/lib/module/modules/charts/LineChartProps.js +4 -0
- package/lib/module/modules/charts/MODULE.md +33 -20
- package/lib/module/modules/charts/PieChart.js +19 -8
- package/lib/module/modules/charts/PieChartProps.js +4 -0
- package/lib/module/modules/charts/Sparkline.js +4 -2
- package/lib/module/modules/charts/SparklineProps.js +4 -0
- package/lib/module/modules/checkbox/Checkbox.js +30 -28
- 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 +17 -6
- package/lib/module/modules/chip/Chip.js +116 -54
- package/lib/module/modules/chip/Chip.variants.js +18 -5
- 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 +8 -8
- package/lib/module/modules/combobox/Combobox.js +111 -78
- package/lib/module/modules/combobox/Combobox.variants.js +24 -10
- package/lib/module/modules/combobox/ComboboxProps.js +4 -0
- package/lib/module/modules/combobox/MODULE.md +14 -10
- package/lib/module/modules/composer/Composer.js +20 -11
- package/lib/module/modules/composer/Composer.variants.js +2 -0
- package/lib/module/modules/composer/ComposerProps.js +4 -0
- package/lib/module/modules/composer/MODULE.md +7 -2
- package/lib/module/modules/copy-button/CopyButton.js +35 -9
- package/lib/module/modules/copy-button/CopyButton.variants.js +7 -4
- package/lib/module/modules/copy-button/CopyButtonProps.js +4 -0
- package/lib/module/modules/copy-button/MODULE.md +11 -8
- package/lib/module/modules/data-table/DataTable.js +37 -14
- package/lib/module/modules/data-table/DataTable.variants.js +5 -4
- package/lib/module/modules/data-table/DataTableProps.js +4 -0
- package/lib/module/modules/data-table/MODULE.md +6 -10
- package/lib/module/modules/date-picker/Calendar.js +78 -29
- package/lib/module/modules/date-picker/CalendarProps.js +4 -0
- package/lib/module/modules/date-picker/DatePicker.variants.js +26 -10
- 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 +29 -11
- package/lib/module/modules/date-picker/PickerField.js +13 -4
- package/lib/module/modules/date-picker/PickerFieldProps.js +4 -0
- package/lib/module/modules/date-picker/PickerShell.js +23 -12
- package/lib/module/modules/date-picker/PickerShellProps.js +4 -0
- package/lib/module/modules/date-picker/TimePicker.js +15 -19
- 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/Divider.variants.js +6 -5
- package/lib/module/modules/divider/DividerProps.js +4 -0
- package/lib/module/modules/divider/MODULE.md +1 -6
- 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 +62 -45
- package/lib/module/modules/drawer/Drawer.variants.js +4 -4
- package/lib/module/modules/drawer/DrawerProps.js +4 -0
- package/lib/module/modules/drawer/MODULE.md +14 -21
- package/lib/module/modules/empty-state/EmptyState.js +19 -29
- package/lib/module/modules/empty-state/EmptyState.variants.js +7 -0
- package/lib/module/modules/empty-state/EmptyStateProps.js +4 -0
- package/lib/module/modules/empty-state/MODULE.md +5 -9
- package/lib/module/modules/fab/Fab.js +47 -69
- package/lib/module/modules/fab/Fab.variants.js +25 -5
- package/lib/module/modules/fab/FabGroup.js +113 -89
- 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 +17 -11
- 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 +31 -16
- package/lib/module/modules/file-grid/FileGrid.variants.js +2 -2
- package/lib/module/modules/file-grid/FileGridProps.js +4 -0
- package/lib/module/modules/file-grid/MODULE.md +29 -4
- package/lib/module/modules/file-upload/FileUpload.js +56 -15
- package/lib/module/modules/file-upload/FileUpload.variants.js +3 -1
- package/lib/module/modules/file-upload/FileUploadProps.js +4 -0
- package/lib/module/modules/file-upload/MODULE.md +10 -12
- 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 +13 -4
- 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 +39 -17
- package/lib/module/modules/filter-sheet/FilterSheetProps.js +2 -0
- package/lib/module/modules/filter-sheet/MODULE.md +4 -4
- package/lib/module/modules/folder-row/FolderRow.js +33 -19
- package/lib/module/modules/folder-row/FolderRow.variants.js +4 -2
- package/lib/module/modules/folder-row/FolderRowProps.js +4 -0
- package/lib/module/modules/folder-row/MODULE.md +6 -4
- 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 +52 -14
- package/lib/module/modules/gantt/Gantt.variants.js +47 -3
- package/lib/module/modules/gantt/GanttProps.js +4 -0
- package/lib/module/modules/gantt/MODULE.md +14 -4
- package/lib/module/modules/image-viewer/ImageViewer.js +37 -6
- package/lib/module/modules/image-viewer/ImageViewerProps.js +4 -0
- package/lib/module/modules/image-viewer/MODULE.md +7 -1
- package/lib/module/modules/input/Input.js +75 -27
- package/lib/module/modules/input/Input.variants.js +10 -10
- package/lib/module/modules/input/InputProps.js +4 -0
- package/lib/module/modules/input/MODULE.md +9 -14
- 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 +60 -27
- package/lib/module/modules/list-item/ListItem.variants.js +11 -2
- package/lib/module/modules/list-item/ListItemProps.js +4 -0
- package/lib/module/modules/list-item/MODULE.md +14 -10
- 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 +6 -5
- package/lib/module/modules/markdown/Markdown.js +57 -22
- package/lib/module/modules/markdown/Markdown.variants.js +2 -1
- package/lib/module/modules/markdown/MarkdownProps.js +4 -0
- package/lib/module/modules/menu/MODULE.md +11 -7
- package/lib/module/modules/menu/Menu.js +149 -76
- package/lib/module/modules/menu/Menu.variants.js +5 -5
- package/lib/module/modules/menu/MenuProps.js +4 -0
- package/lib/module/modules/message-bubble/MODULE.md +7 -3
- package/lib/module/modules/message-bubble/MessageBubble.js +4 -5
- package/lib/module/modules/message-bubble/MessageBubble.variants.js +5 -5
- package/lib/module/modules/message-bubble/MessageBubbleProps.js +4 -0
- package/lib/module/modules/modal/MODULE.md +63 -89
- package/lib/module/modules/modal/Modal.js +168 -47
- package/lib/module/modules/modal/Modal.variants.js +2 -2
- 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 +3 -0
- package/lib/module/modules/more-items/MoreItems.js +16 -7
- package/lib/module/modules/more-items/MoreItems.variants.js +6 -2
- package/lib/module/modules/more-items/MoreItemsProps.js +4 -0
- package/lib/module/modules/multi-select/MODULE.md +5 -6
- package/lib/module/modules/multi-select/MultiSelect.js +61 -24
- package/lib/module/modules/multi-select/MultiSelect.variants.js +8 -4
- 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 +10 -14
- package/lib/module/modules/number-input/NumberInput.js +100 -85
- package/lib/module/modules/number-input/NumberInput.variants.js +11 -10
- package/lib/module/modules/number-input/NumberInputProps.js +4 -0
- package/lib/module/modules/org-switcher/MODULE.md +13 -8
- package/lib/module/modules/org-switcher/OrgSwitcher.js +34 -21
- package/lib/module/modules/org-switcher/OrgSwitcher.variants.js +8 -4
- package/lib/module/modules/org-switcher/OrgSwitcherProps.js +4 -0
- package/lib/module/modules/pagination/MODULE.md +4 -7
- package/lib/module/modules/pagination/Pagination.js +97 -48
- package/lib/module/modules/pagination/Pagination.variants.js +6 -4
- package/lib/module/modules/pagination/PaginationControls.js +58 -36
- 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 +12 -19
- package/lib/module/modules/pin-input/PinInput.js +10 -3
- package/lib/module/modules/pin-input/PinInput.variants.js +4 -4
- 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 +7 -13
- package/lib/module/modules/radio-group/RadioGroup.js +125 -65
- package/lib/module/modules/radio-group/RadioGroup.variants.js +4 -4
- package/lib/module/modules/radio-group/RadioGroupProps.js +4 -0
- package/lib/module/modules/reorder/MODULE.md +7 -9
- package/lib/module/modules/reorder/Reorder.js +12 -6
- package/lib/module/modules/reorder/Reorder.variants.js +7 -6
- package/lib/module/modules/reorder/ReorderProps.js +4 -0
- package/lib/module/modules/rich-text/MODULE.md +5 -3
- package/lib/module/modules/rich-text/RichText.js +42 -22
- package/lib/module/modules/rich-text/RichTextProps.js +4 -0
- package/lib/module/modules/rich-text-editor/MODULE.md +8 -15
- package/lib/module/modules/rich-text-editor/RichTextEditor.js +13 -5
- package/lib/module/modules/rich-text-editor/RichTextEditor.variants.js +9 -6
- 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 +14 -5
- package/lib/module/modules/screen/Screen.js +109 -33
- package/lib/module/modules/screen/Screen.variants.js +18 -0
- package/lib/module/modules/screen/ScreenProps.js +4 -0
- package/lib/module/modules/search-bar/MODULE.md +9 -8
- package/lib/module/modules/search-bar/SearchBar.js +49 -27
- package/lib/module/modules/search-bar/SearchBar.variants.js +13 -12
- package/lib/module/modules/search-bar/SearchBarProps.js +4 -0
- package/lib/module/modules/section/MODULE.md +3 -1
- package/lib/module/modules/section/Section.js +14 -16
- package/lib/module/modules/section/Section.variants.js +1 -6
- 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 -26
- package/lib/module/modules/segmented-control/SegmentedControl.js +124 -70
- package/lib/module/modules/segmented-control/SegmentedControl.variants.js +11 -43
- package/lib/module/modules/segmented-control/SegmentedControlProps.js +4 -0
- package/lib/module/modules/select/MODULE.md +34 -10
- package/lib/module/modules/select/Select.js +74 -34
- package/lib/module/modules/select/Select.variants.js +39 -16
- 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 +25 -28
- package/lib/module/modules/skeleton/Skeleton.js +54 -53
- package/lib/module/modules/skeleton/Skeleton.variants.js +11 -74
- package/lib/module/modules/skeleton/SkeletonProps.js +4 -0
- package/lib/module/modules/slider/MODULE.md +4 -1
- package/lib/module/modules/slider/Slider.js +7 -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 +32 -14
- package/lib/module/modules/stage-progress/StageProgress.js +136 -59
- package/lib/module/modules/stage-progress/StageProgress.variants.js +57 -20
- 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 +14 -1
- package/lib/module/modules/stat-tile/StatTile.js +51 -21
- package/lib/module/modules/stat-tile/StatTile.variants.js +7 -0
- package/lib/module/modules/stat-tile/StatTileProps.js +4 -0
- package/lib/module/modules/state-block/MODULE.md +12 -3
- package/lib/module/modules/state-block/StateBlock.js +54 -41
- package/lib/module/modules/state-block/StateBlock.variants.js +7 -0
- 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 +57 -0
- package/lib/module/modules/surface/Surface.js +47 -0
- package/lib/module/modules/surface/Surface.variants.js +33 -0
- package/lib/module/modules/surface/SurfaceProps.js +4 -0
- package/lib/module/modules/surface/index.js +4 -0
- package/lib/module/modules/swipeable-row/MODULE.md +12 -2
- package/lib/module/modules/swipeable-row/SwipeableRow.js +57 -13
- package/lib/module/modules/swipeable-row/SwipeableRowProps.js +4 -0
- package/lib/module/modules/switch/MODULE.md +7 -2
- package/lib/module/modules/switch/Switch.js +49 -9
- 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 +11 -14
- package/lib/module/modules/tabs/Tabs.js +115 -51
- package/lib/module/modules/tabs/Tabs.variants.js +6 -6
- package/lib/module/modules/tabs/TabsProps.js +4 -0
- package/lib/module/modules/text/MODULE.md +25 -14
- package/lib/module/modules/text/Text.js +18 -6
- package/lib/module/modules/text/Text.variants.js +116 -44
- package/lib/module/modules/text/TextProps.js +4 -0
- package/lib/module/modules/textarea/MODULE.md +12 -16
- package/lib/module/modules/textarea/Textarea.js +15 -12
- package/lib/module/modules/textarea/Textarea.variants.js +6 -2
- 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 +15 -18
- package/lib/module/modules/toast/Toast.js +75 -55
- package/lib/module/modules/toast/Toast.variants.js +7 -5
- package/lib/module/modules/tooltip/MODULE.md +22 -22
- package/lib/module/modules/tooltip/Tooltip.js +77 -16
- package/lib/module/modules/tooltip/Tooltip.variants.js +8 -1
- 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 +5 -1
- package/lib/module/theme/platform/MODULE.md +16 -8
- package/lib/module/theme/platform/elevation.native.js +1 -51
- package/lib/module/theme/platform/floatingSurface.native.js +75 -0
- package/lib/module/theme/platform/highlight.native.js +59 -0
- package/lib/module/theme/platform/index.js +5 -0
- package/lib/module/theme/platform/motion.native.js +31 -11
- package/lib/module/theme/platform/stateLayer.native.js +14 -0
- package/lib/module/theme/platform/surfaces.native.js +11 -0
- package/lib/module/theme/provider/PixelizeProvider.js +18 -5
- package/lib/module/theme/tokens/MODULE.md +36 -28
- package/lib/module/theme/tokens/THEME-CONTRACT.md +187 -0
- package/lib/module/theme/tokens/assertPalette.js +29 -0
- package/lib/module/theme/tokens/brands/emerald/palette.light.js +12 -9
- package/lib/module/theme/tokens/brands/lavender/palette.light.js +7 -6
- package/lib/module/theme/tokens/brands/meadow/palette.light.js +9 -8
- package/lib/module/theme/tokens/brands/radiant/palette.light.js +10 -9
- package/lib/module/theme/tokens/brands/rosewood/palette.light.js +10 -9
- package/lib/module/theme/tokens/brands/skyline/palette.light.js +9 -8
- package/lib/module/theme/tokens/brands/slate/palette.light.js +11 -13
- package/lib/module/theme/tokens/brands/storefront/palette.light.js +7 -6
- package/lib/module/theme/tokens/brands/zinc/palette.dark.js +3 -2
- package/lib/module/theme/tokens/brands/zinc/palette.light.js +3 -2
- 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/buildDarkPalette.js +3 -2
- package/lib/module/theme/tokens/builders/finalizePalette.js +34 -0
- package/lib/module/theme/tokens/builders/gradientInk.js +23 -0
- package/lib/module/theme/tokens/builders/liftToContrast.js +44 -0
- package/lib/module/theme/tokens/builders/paletteFromAccent.js +30 -0
- package/lib/module/theme/tokens/builders/placeholderInk.js +22 -0
- package/lib/module/theme/tokens/builders/semanticText.js +14 -0
- package/lib/module/theme/tokens/builders/skeletonShimmer.js +22 -0
- package/lib/module/theme/tokens/builders/surfaceRungs.js +44 -0
- package/lib/module/theme/tokens/index.js +8 -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 +7 -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/AccentGradientFill.d.ts +7 -0
- package/lib/typescript/core/gradient/ShimmerGradientFill.d.ts +8 -0
- package/lib/typescript/core/gradient/darkenHex.d.ts +2 -0
- package/lib/typescript/core/gradient/gradientStops.d.ts +10 -0
- package/lib/typescript/core/gradient/index.d.ts +6 -0
- package/lib/typescript/core/gradient/withAlpha.d.ts +2 -0
- package/lib/typescript/core/haptics/context.d.ts +3 -0
- package/lib/typescript/core/haptics/haptics.d.ts +33 -0
- package/lib/typescript/core/haptics/index.d.ts +6 -0
- package/lib/typescript/core/haptics/useHaptics.d.ts +12 -0
- package/lib/typescript/core/icon/icons/trending-up.d.ts +3 -0
- package/lib/typescript/core/icon/names.d.ts +1 -1
- package/lib/typescript/core/list/VirtualList.d.ts +6 -1
- package/lib/typescript/core/media/expoImage.d.ts +15 -6
- package/lib/typescript/core/media/pickers.d.ts +5 -5
- package/lib/typescript/core/motion/animatedComponents.d.ts +4 -0
- package/lib/typescript/core/motion/config.d.ts +2 -1
- package/lib/typescript/core/motion/index.d.ts +5 -1
- 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 +20 -0
- 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 +2 -1
- package/lib/typescript/core/style/radius.d.ts +2 -0
- package/lib/typescript/index.d.ts +52 -12
- package/lib/typescript/modules/accordion/Accordion.d.ts +2 -37
- package/lib/typescript/modules/accordion/Accordion.variants.d.ts +4 -5
- 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/AlertDialog.variants.d.ts +1 -0
- 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 +3 -1
- 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 +5 -20
- package/lib/typescript/modules/avatar-group/AvatarGroup.variants.d.ts +19 -0
- 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 -20
- 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 +3 -4
- 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/BottomSheet.variants.d.ts +3 -1
- 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 -60
- 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 -36
- package/lib/typescript/modules/button-group/ButtonGroup.variants.d.ts +24 -59
- 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 +4 -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 +31 -1
- 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 -28
- package/lib/typescript/modules/chip/Chip.variants.d.ts +8 -3
- 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 +3 -3
- package/lib/typescript/modules/combobox/Combobox.d.ts +2 -45
- package/lib/typescript/modules/combobox/Combobox.variants.d.ts +20 -5
- 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 +3 -2
- 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 +17 -4
- 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 +2 -16
- 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/Divider.variants.d.ts +4 -4
- 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 -15
- package/lib/typescript/modules/empty-state/EmptyState.variants.d.ts +1 -0
- 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 +5 -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 -19
- 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 +29 -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 +8 -8
- 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 +3 -17
- package/lib/typescript/modules/list-item/ListItem.variants.d.ts +137 -1
- 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 +8 -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 +3 -11
- package/lib/typescript/modules/message-bubble/MessageBubble.variants.d.ts +1 -2
- 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 +9 -8
- 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/PaginationControls.d.ts +1 -4
- 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 +2 -14
- 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 +2 -31
- package/lib/typescript/modules/screen/Screen.variants.d.ts +4 -0
- 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 +8 -9
- 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/Section.variants.d.ts +0 -3
- 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 +5 -13
- package/lib/typescript/modules/select/Select.variants.d.ts +24 -10
- package/lib/typescript/modules/select/SelectProps.d.ts +25 -0
- package/lib/typescript/modules/select/index.d.ts +3 -2
- 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 +3 -28
- package/lib/typescript/modules/skeleton/Skeleton.variants.d.ts +8 -66
- 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 +31 -10
- 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 -28
- package/lib/typescript/modules/state-block/StateBlock.variants.d.ts +1 -0
- 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 +6 -0
- package/lib/typescript/modules/surface/Surface.variants.d.ts +15 -0
- package/lib/typescript/modules/surface/SurfaceProps.d.ts +17 -0
- package/lib/typescript/modules/surface/index.d.ts +4 -0
- 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 -20
- package/lib/typescript/modules/text/Text.variants.d.ts +14 -11
- 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 +4 -3
- package/lib/typescript/modules/tooltip/Tooltip.d.ts +1 -25
- package/lib/typescript/modules/tooltip/Tooltip.variants.d.ts +7 -0
- 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/index.d.ts +1 -1
- package/lib/typescript/theme/platform/elevation.native.d.ts +1 -31
- package/lib/typescript/theme/platform/floatingSurface.native.d.ts +10 -0
- package/lib/typescript/theme/platform/highlight.native.d.ts +17 -0
- package/lib/typescript/theme/platform/index.d.ts +9 -0
- package/lib/typescript/theme/platform/motion.native.d.ts +33 -13
- package/lib/typescript/theme/platform/stateLayer.native.d.ts +11 -0
- package/lib/typescript/theme/platform/surfaces.native.d.ts +8 -0
- package/lib/typescript/theme/provider/PixelizeProvider.d.ts +1 -1
- package/lib/typescript/theme/provider/types.d.ts +8 -0
- package/lib/typescript/theme/tokens/assertPalette.d.ts +10 -0
- package/lib/typescript/theme/tokens/brands/emerald/palette.light.d.ts +4 -3
- package/lib/typescript/theme/tokens/brands/lavender/palette.light.d.ts +4 -3
- package/lib/typescript/theme/tokens/brands/meadow/palette.light.d.ts +4 -3
- package/lib/typescript/theme/tokens/brands/radiant/palette.light.d.ts +4 -3
- package/lib/typescript/theme/tokens/brands/rosewood/palette.light.d.ts +4 -3
- package/lib/typescript/theme/tokens/brands/skyline/palette.light.d.ts +4 -3
- package/lib/typescript/theme/tokens/brands/slate/palette.light.d.ts +4 -3
- package/lib/typescript/theme/tokens/brands/storefront/palette.light.d.ts +4 -3
- package/lib/typescript/theme/tokens/brands/zinc/palette.light.d.ts +4 -3
- 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/finalizePalette.d.ts +4 -0
- package/lib/typescript/theme/tokens/builders/gradientInk.d.ts +9 -0
- package/lib/typescript/theme/tokens/builders/liftToContrast.d.ts +9 -0
- package/lib/typescript/theme/tokens/builders/paletteFromAccent.d.ts +3 -0
- package/lib/typescript/theme/tokens/builders/placeholderInk.d.ts +13 -0
- package/lib/typescript/theme/tokens/builders/semanticText.d.ts +4 -0
- package/lib/typescript/theme/tokens/builders/skeletonShimmer.d.ts +9 -0
- package/lib/typescript/theme/tokens/builders/surfaceRungs.d.ts +12 -0
- package/lib/typescript/theme/tokens/index.d.ts +8 -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 +3 -0
- package/lib/typescript/theme/tokens/types.d.ts +10 -9
- package/package.json +114 -5
- package/registry.json +114 -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
|
@@ -12,10 +12,13 @@
|
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
import { memo, useCallback, useEffect, useMemo, useRef } from "react";
|
|
15
|
-
import {
|
|
15
|
+
import { Text, View } from "react-native";
|
|
16
|
+
import Reanimated, { interpolate, useAnimatedStyle } from "react-native-reanimated";
|
|
16
17
|
import { Icon } from "../../core/icon/index.js";
|
|
17
18
|
import { VirtualList } from "../../core/list/index.js";
|
|
18
|
-
import {
|
|
19
|
+
import { Button } from "../button/index.js";
|
|
20
|
+
import { useMotion, useAnimatedValue } from "../../core/motion/index.js";
|
|
21
|
+
import { renderNodeSlot } from "../../core/slot/index.js";
|
|
19
22
|
import { useTheme } from "../../theme/hooks.js";
|
|
20
23
|
import { resolveTimelineColors, resolveTimelineItemAccessibility, timelineConnectorLineStructure, timelineConnectorStructure, timelineContentStructure, timelineMarkerStructure, timelineRowStructure, TIMELINE_MARKER } from "./Timeline.variants.js";
|
|
21
24
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -25,7 +28,9 @@ const TimelineRow = /*#__PURE__*/memo(function TimelineRow({
|
|
|
25
28
|
model,
|
|
26
29
|
theme,
|
|
27
30
|
colors,
|
|
28
|
-
testID
|
|
31
|
+
testID,
|
|
32
|
+
onEditNote,
|
|
33
|
+
onDeleteNote
|
|
29
34
|
}) {
|
|
30
35
|
const {
|
|
31
36
|
item,
|
|
@@ -35,6 +40,10 @@ const TimelineRow = /*#__PURE__*/memo(function TimelineRow({
|
|
|
35
40
|
const position = isLast ? "last" : "middle";
|
|
36
41
|
const rowTestID = testID === undefined ? undefined : `${testID}-item-${index}`;
|
|
37
42
|
const a11y = resolveTimelineItemAccessibility(item);
|
|
43
|
+
const leadingSlotStyle = useMemo(() => [theme.fontStyleForWeight(theme.fontWeights.regular), {
|
|
44
|
+
fontSize: theme.fontSizes.sm,
|
|
45
|
+
color: colors.title
|
|
46
|
+
}], [theme, colors.title]);
|
|
38
47
|
return /*#__PURE__*/_jsxs(View, {
|
|
39
48
|
testID: rowTestID,
|
|
40
49
|
style: timelineRowStructure(),
|
|
@@ -45,7 +54,7 @@ const TimelineRow = /*#__PURE__*/memo(function TimelineRow({
|
|
|
45
54
|
importantForAccessibility: "no-hide-descendants",
|
|
46
55
|
children: [item.leading !== undefined ? /*#__PURE__*/_jsx(View, {
|
|
47
56
|
testID: rowTestID === undefined ? undefined : `${rowTestID}-marker`,
|
|
48
|
-
children: item.leading
|
|
57
|
+
children: renderNodeSlot(item.leading, leadingSlotStyle)
|
|
49
58
|
}) : /*#__PURE__*/_jsx(View, {
|
|
50
59
|
testID: rowTestID === undefined ? undefined : `${rowTestID}-marker`,
|
|
51
60
|
style: [timelineMarkerStructure(theme, {
|
|
@@ -93,12 +102,51 @@ const TimelineRow = /*#__PURE__*/memo(function TimelineRow({
|
|
|
93
102
|
marginTop: theme.space[1]
|
|
94
103
|
}],
|
|
95
104
|
children: item.timestamp
|
|
96
|
-
})
|
|
105
|
+
}), item.notes !== undefined && item.notes.length > 0 ? /*#__PURE__*/_jsx(View, {
|
|
106
|
+
style: {
|
|
107
|
+
marginTop: theme.space[2],
|
|
108
|
+
gap: theme.space[1]
|
|
109
|
+
},
|
|
110
|
+
children: item.notes.map(note => /*#__PURE__*/_jsxs(View, {
|
|
111
|
+
testID: rowTestID === undefined ? undefined : `${rowTestID}-note-${note.id}`,
|
|
112
|
+
style: {
|
|
113
|
+
flexDirection: "row",
|
|
114
|
+
alignItems: "flex-start",
|
|
115
|
+
gap: theme.space[2]
|
|
116
|
+
},
|
|
117
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
118
|
+
style: [theme.fontStyleForWeight(theme.fontWeights.regular), {
|
|
119
|
+
flex: 1,
|
|
120
|
+
fontSize: theme.fontSizes.sm,
|
|
121
|
+
color: colors.description
|
|
122
|
+
}],
|
|
123
|
+
children: note.body
|
|
124
|
+
}), onEditNote !== undefined ? /*#__PURE__*/_jsx(Button, {
|
|
125
|
+
variant: "ghost",
|
|
126
|
+
size: "sm",
|
|
127
|
+
icon: "pencil",
|
|
128
|
+
accessibilityLabel: "Edit note",
|
|
129
|
+
onPress: () => onEditNote(note.id),
|
|
130
|
+
testID: rowTestID === undefined ? undefined : `${rowTestID}-edit-${note.id}`
|
|
131
|
+
}) : null, onDeleteNote !== undefined ? /*#__PURE__*/_jsx(Button, {
|
|
132
|
+
variant: "ghost",
|
|
133
|
+
size: "sm",
|
|
134
|
+
icon: "trash",
|
|
135
|
+
accessibilityLabel: "Delete note",
|
|
136
|
+
onPress: () => onDeleteNote(note.id),
|
|
137
|
+
testID: rowTestID === undefined ? undefined : `${rowTestID}-delete-${note.id}`
|
|
138
|
+
}) : null]
|
|
139
|
+
}, note.id))
|
|
140
|
+
}) : null]
|
|
97
141
|
})]
|
|
98
142
|
});
|
|
99
143
|
});
|
|
100
144
|
export const Timeline = /*#__PURE__*/memo(function Timeline({
|
|
101
145
|
items,
|
|
146
|
+
onAddNote,
|
|
147
|
+
onEditNote,
|
|
148
|
+
onDeleteNote,
|
|
149
|
+
notesLoading = false,
|
|
102
150
|
style,
|
|
103
151
|
testID
|
|
104
152
|
}) {
|
|
@@ -107,10 +155,11 @@ export const Timeline = /*#__PURE__*/memo(function Timeline({
|
|
|
107
155
|
const colors = useMemo(() => resolveTimelineColors(theme.colors), [theme.colors]);
|
|
108
156
|
const reveal = useAnimatedValue(motion.decorative ? 0 : 1);
|
|
109
157
|
const running = useRef(null);
|
|
158
|
+
const offsetY = motion.transform.offsetY;
|
|
110
159
|
useEffect(() => {
|
|
111
160
|
running.current?.stop();
|
|
112
161
|
if (!motion.decorative) {
|
|
113
|
-
reveal.
|
|
162
|
+
reveal.value = 1;
|
|
114
163
|
return;
|
|
115
164
|
}
|
|
116
165
|
running.current = motion.timing(reveal, 1, {
|
|
@@ -120,15 +169,12 @@ export const Timeline = /*#__PURE__*/memo(function Timeline({
|
|
|
120
169
|
return () => running.current?.stop();
|
|
121
170
|
}, [motion, reveal]);
|
|
122
171
|
useEffect(() => () => running.current?.stop(), []);
|
|
123
|
-
const revealStyle =
|
|
124
|
-
opacity: reveal,
|
|
172
|
+
const revealStyle = useAnimatedStyle(() => ({
|
|
173
|
+
opacity: reveal.value,
|
|
125
174
|
transform: [{
|
|
126
|
-
translateY: reveal.
|
|
127
|
-
inputRange: [0, 1],
|
|
128
|
-
outputRange: [motion.transform.offsetY, 0]
|
|
129
|
-
})
|
|
175
|
+
translateY: interpolate(reveal.value, [0, 1], [offsetY, 0])
|
|
130
176
|
}]
|
|
131
|
-
})
|
|
177
|
+
}));
|
|
132
178
|
const rootStyle = useMemo(() => [revealStyle, style], [revealStyle, style]);
|
|
133
179
|
const rows = useMemo(() => items.map((item, index) => ({
|
|
134
180
|
item,
|
|
@@ -142,28 +188,39 @@ export const Timeline = /*#__PURE__*/memo(function Timeline({
|
|
|
142
188
|
model: row,
|
|
143
189
|
theme: theme,
|
|
144
190
|
colors: colors,
|
|
145
|
-
testID: testID
|
|
146
|
-
|
|
191
|
+
testID: testID,
|
|
192
|
+
onEditNote: onEditNote,
|
|
193
|
+
onDeleteNote: onDeleteNote
|
|
194
|
+
}), [theme, colors, testID, onEditNote, onDeleteNote]);
|
|
195
|
+
const addNoteControl = onAddNote !== undefined ? /*#__PURE__*/_jsx(Button, {
|
|
196
|
+
variant: "outline",
|
|
197
|
+
label: "Add note",
|
|
198
|
+
onPress: onAddNote,
|
|
199
|
+
loading: notesLoading,
|
|
200
|
+
testID: testID ? `${testID}-add-note` : undefined
|
|
201
|
+
}) : null;
|
|
147
202
|
if (items.length >= VIRTUALIZE_THRESHOLD) {
|
|
148
|
-
return /*#__PURE__*/
|
|
203
|
+
return /*#__PURE__*/_jsxs(Reanimated.View, {
|
|
149
204
|
testID: testID,
|
|
150
205
|
style: rootStyle,
|
|
151
|
-
children: /*#__PURE__*/_jsx(VirtualList, {
|
|
206
|
+
children: [/*#__PURE__*/_jsx(VirtualList, {
|
|
152
207
|
data: rows,
|
|
153
208
|
keyExtractor: keyExtractor,
|
|
154
209
|
renderItem: renderItem
|
|
155
|
-
})
|
|
210
|
+
}), addNoteControl]
|
|
156
211
|
});
|
|
157
212
|
}
|
|
158
|
-
return /*#__PURE__*/
|
|
213
|
+
return /*#__PURE__*/_jsxs(Reanimated.View, {
|
|
159
214
|
testID: testID,
|
|
160
215
|
style: rootStyle,
|
|
161
|
-
children: rows.map(row => /*#__PURE__*/_jsx(TimelineRow, {
|
|
216
|
+
children: [rows.map(row => /*#__PURE__*/_jsx(TimelineRow, {
|
|
162
217
|
model: row,
|
|
163
218
|
theme: theme,
|
|
164
219
|
colors: colors,
|
|
165
|
-
testID: testID
|
|
166
|
-
|
|
220
|
+
testID: testID,
|
|
221
|
+
onEditNote: onEditNote,
|
|
222
|
+
onDeleteNote: onDeleteNote
|
|
223
|
+
}, keyExtractor(row))), addNoteControl]
|
|
167
224
|
});
|
|
168
225
|
});
|
|
169
226
|
//# sourceMappingURL=Timeline.js.map
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* (mocking only `react-native`'s `StyleSheet`, as `core/style` and every sibling module's tests do).
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
|
+
import { MIN_TOUCH_TARGET } from "../../core/a11y/touchTarget.js";
|
|
17
18
|
import { createThemedVariants, createVariants } from "../../core/style/index.js";
|
|
18
19
|
/**
|
|
19
20
|
* Timeline-specific dimensions. Kept a plain constant — no theme dependency — same as
|
|
@@ -33,6 +34,7 @@ export const TIMELINE_MARKER = {
|
|
|
33
34
|
* `tone`/`color` prop to widen: every event reads identically, so every colour Timeline can show is
|
|
34
35
|
* one of these role lookups, guaranteed legible in both modes.
|
|
35
36
|
*/
|
|
37
|
+
export { MIN_TOUCH_TARGET };
|
|
36
38
|
export function resolveTimelineColors(colors) {
|
|
37
39
|
return {
|
|
38
40
|
markerFill: colors.accent.solid,
|
|
@@ -43,11 +43,14 @@ safe no-op when nothing is showing.
|
|
|
43
43
|
## Motion
|
|
44
44
|
|
|
45
45
|
Entrance and exit go through **`useMotion()`** at the shared `fast` duration; the card's travel is
|
|
46
|
-
`MOTION_TRANSFORM.surfaceOffsetY
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
`
|
|
46
|
+
`MOTION_TRANSFORM.surfaceOffsetY`, so the device tier's `durationScale` and `MOTION_SCALE`/
|
|
47
|
+
`MOTION_ENABLED` all reach it. The unmount timer reads the SAME resolved `motion.duration("fast")`
|
|
48
|
+
as the tween, keeping the removal deterministic (see `Toast.tsx`'s note on why the timer, not the
|
|
49
|
+
animation callback, drives it). The card also carries `LinearTransition` (with
|
|
50
|
+
`ReduceMotion.System`) so a replacing toast reflows without a second fade/slide.
|
|
51
|
+
|
|
52
|
+
`show()` fires `useHaptics().notification("success")` for a `success` toast and
|
|
53
|
+
`notification("error")` for a `danger` one; other tones are silent.
|
|
51
54
|
|
|
52
55
|
## Auto-dismiss timing (WCAG 2.2.1 — Timing Adjustable)
|
|
53
56
|
|
|
@@ -74,10 +77,9 @@ place that decides whether a toast's timer gets armed. `Toast.tsx` branches on i
|
|
|
74
77
|
TalkBack to finish speaking a message, and there is no way to replay a toast that's gone — this is
|
|
75
78
|
the DEFAULT behaviour, not an opt-in prop, because a consumer has no way to know per-toast whether
|
|
76
79
|
a reader is running.
|
|
77
|
-
- **`tone: "danger"` with no explicit `duration` defaults to persistent**, unlike every other tone
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
toast is still honoured — only the *default* changed. Judgement call: a 3-second error message is
|
|
80
|
+
- **`tone: "danger"` with no explicit `duration` defaults to persistent**, unlike every other tone,
|
|
81
|
+
so `show({ message, tone: "danger" })` stays up until dismissed. An explicit `duration` on a
|
|
82
|
+
`danger` toast is still honoured. Judgement call: a 3-second error message is
|
|
81
83
|
the exact failure WCAG 2.2.1 exists to prevent, and this catalogue has no toast history a user
|
|
82
84
|
could scroll back to recover a missed one from. Every other tone keeps the ~3000ms default
|
|
83
85
|
unchanged — success/info/neutral/warning messages are lower-stakes and the existing default reads
|
|
@@ -145,10 +147,10 @@ change can't silently reintroduce the gap.
|
|
|
145
147
|
`core/a11y` and re-export, once that edit lands, rather than leaving two near-identical stores.
|
|
146
148
|
- **No stacking queue.** `show()` while visible replaces the current toast; there is no multi-toast
|
|
147
149
|
queue in v1. Flagging for a future version if a consumer needs concurrent toasts.
|
|
148
|
-
- **
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
150
|
+
- **Top position has no safe-area inset awareness.** `position: "bottom"` adds the same static
|
|
151
|
+
iOS home-indicator approximation Drawer/BottomSheet use (`resolveToastBottomInset`); `top`
|
|
152
|
+
reads a fixed `theme.space[4]` with no notch awareness — a consumer on a notched device may want
|
|
153
|
+
its own top padding via screen-level layout until `react-native-safe-area-context` is a real peer.
|
|
152
154
|
- Render tests need `@testing-library/react-native` + a react-native jest preset (same
|
|
153
155
|
dependency-pending note as `Button.render.test.tsx`).
|
|
154
156
|
|
|
@@ -156,8 +158,3 @@ change can't silently reintroduce the gap.
|
|
|
156
158
|
|
|
157
159
|
`ToastProvider` (exported) and `ToastCard` (internal, non-exported) are both wrapped in `React.memo` (repo-wide re-render audit, 2026-07-17 — see root `CLAUDE.md`) — mirrors the repo convention (e.g. `AccordionRow`) of memoizing library-internal child components too. No new `useCallback`/`useMemo` needed: the props handed to `ToastCard` (`toast`, `theme`, `position`, `progress`, `onDismiss={hide}`) were already stable — the file already used `useCallback`/`useMemo` throughout.
|
|
158
160
|
|
|
159
|
-
## Modernization (v1.0.7)
|
|
160
|
-
|
|
161
|
-
- Theme imports decoupled to `theme/hooks`; optional peers (reanimated, gesture-handler, flash-list) load at runtime.
|
|
162
|
-
- List-heavy surfaces use `VirtualList` with device-tier window sizing where applicable.
|
|
163
|
-
- `React.memo` + stable callbacks retained; render-item/key-extractor hoisted per ESLint perf rules.
|
|
@@ -23,11 +23,15 @@
|
|
|
23
23
|
*/
|
|
24
24
|
|
|
25
25
|
import { createContext, memo, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
26
|
-
import { AccessibilityInfo,
|
|
27
|
-
import {
|
|
26
|
+
import { AccessibilityInfo, Platform, Pressable, StyleSheet, Text, View } from "react-native";
|
|
27
|
+
import Reanimated, { interpolate, LinearTransition, ReduceMotion, useAnimatedStyle } from "react-native-reanimated";
|
|
28
|
+
import { useMotion, useAnimatedValue } from "../../core/motion/index.js";
|
|
29
|
+
import { useHaptics } from "../../core/haptics/index.js";
|
|
28
30
|
import { Icon } from "../../core/icon/index.js";
|
|
29
31
|
import { useTheme } from "../../theme/hooks.js";
|
|
30
|
-
import {
|
|
32
|
+
import { elevation, floatingSurfaceStyle, highlight } from "../../theme/platform/index.js";
|
|
33
|
+
import { elevation as elevationTokens } from "../../theme/tokens/primitives/index.js";
|
|
34
|
+
import { CLOSE_BUTTON_SIZE, CLOSE_HIT_SLOP, CLOSE_ICON_SIZE, resolveAutoDismissDelay, resolveToastBottomInset, resolveToastTone, toastAccentBarStructure, toastCardStructure, toastOverlayStructure } from "./Toast.variants.js";
|
|
31
35
|
import { useScreenReaderEnabled } from "./toastScreenReader.js";
|
|
32
36
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
33
37
|
const ToastContext = /*#__PURE__*/createContext(undefined);
|
|
@@ -37,6 +41,7 @@ export const ToastProvider = /*#__PURE__*/memo(function ToastProvider({
|
|
|
37
41
|
}) {
|
|
38
42
|
const theme = useTheme();
|
|
39
43
|
const motion = useMotion();
|
|
44
|
+
const haptics = useHaptics();
|
|
40
45
|
const screenReaderEnabled = useScreenReaderEnabled();
|
|
41
46
|
const [toast, setToast] = useState(null);
|
|
42
47
|
const progress = useAnimatedValue(0);
|
|
@@ -85,12 +90,17 @@ export const ToastProvider = /*#__PURE__*/memo(function ToastProvider({
|
|
|
85
90
|
// A replacement toast is a new event: whatever the pointer/focus did to the last one is spent.
|
|
86
91
|
hovered.current = false;
|
|
87
92
|
focused.current = false;
|
|
88
|
-
progress.
|
|
93
|
+
progress.value = 0;
|
|
89
94
|
const tone = options.tone ?? "neutral";
|
|
90
95
|
setToast({
|
|
91
96
|
message: options.message,
|
|
92
97
|
tone
|
|
93
98
|
});
|
|
99
|
+
if (tone === "success") {
|
|
100
|
+
haptics.notification("success");
|
|
101
|
+
} else if (tone === "danger") {
|
|
102
|
+
haptics.notification("error");
|
|
103
|
+
}
|
|
94
104
|
// The real cross-platform screen-reader announcement: `accessibilityLiveRegion` (see
|
|
95
105
|
// `ToastCard`'s Text) is Android-only, so it alone leaves iOS VoiceOver silent. This
|
|
96
106
|
// imperative call reaches both VoiceOver and TalkBack.
|
|
@@ -101,7 +111,7 @@ export const ToastProvider = /*#__PURE__*/memo(function ToastProvider({
|
|
|
101
111
|
}).start();
|
|
102
112
|
delay.current = resolveAutoDismissDelay(options.duration, tone, screenReaderEnabled);
|
|
103
113
|
armDismissTimer();
|
|
104
|
-
}, [armDismissTimer, clearTimers, progress, motion, screenReaderEnabled]);
|
|
114
|
+
}, [armDismissTimer, clearTimers, progress, motion, screenReaderEnabled, haptics]);
|
|
105
115
|
|
|
106
116
|
// Pause while the user is reading (WCAG 2.2.1): leaving re-arms the FULL delay rather than the
|
|
107
117
|
// remainder — the message effectively restarts, which is the generous direction.
|
|
@@ -128,13 +138,19 @@ export const ToastProvider = /*#__PURE__*/memo(function ToastProvider({
|
|
|
128
138
|
show,
|
|
129
139
|
dismiss: hide
|
|
130
140
|
}), [show, hide]);
|
|
141
|
+
const overlayStyle = useMemo(() => position === "bottom" ? [toastOverlayStructure(theme, {
|
|
142
|
+
position
|
|
143
|
+
}), {
|
|
144
|
+
bottom: resolveToastBottomInset(theme.space[4], Platform.OS)
|
|
145
|
+
}] : toastOverlayStructure(theme, {
|
|
146
|
+
position
|
|
147
|
+
}), [theme, position]);
|
|
131
148
|
return /*#__PURE__*/_jsxs(ToastContext.Provider, {
|
|
132
149
|
value: contextValue,
|
|
133
150
|
children: [children, /*#__PURE__*/_jsx(View, {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
}),
|
|
151
|
+
style: [overlayStyle, {
|
|
152
|
+
pointerEvents: 'box-none'
|
|
153
|
+
}],
|
|
138
154
|
children: toast !== null && /*#__PURE__*/_jsx(ToastCard, {
|
|
139
155
|
toast: toast,
|
|
140
156
|
theme: theme,
|
|
@@ -166,59 +182,63 @@ const ToastCard = /*#__PURE__*/memo(function ToastCard({
|
|
|
166
182
|
onFocusOut
|
|
167
183
|
}) {
|
|
168
184
|
const toneColors = resolveToastTone(theme.colors, toast.tone);
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
185
|
+
|
|
186
|
+
// Shadow/elevation only — `toneColors.background` is the one painted background.
|
|
187
|
+
const floatingStyle = useMemo(() => {
|
|
188
|
+
highlight("subtle", theme.mode);
|
|
189
|
+
elevation(elevationTokens.sm);
|
|
190
|
+
void theme.elevatedSurfaces;
|
|
191
|
+
return floatingSurfaceStyle(theme, "sm");
|
|
192
|
+
}, [theme]);
|
|
193
|
+
const cardMotion = useAnimatedStyle(() => ({
|
|
194
|
+
opacity: progress.value,
|
|
195
|
+
transform: [{
|
|
196
|
+
translateY: interpolate(progress.value, [0, 1], position === "top" ? [-offsetY, 0] : [offsetY, 0])
|
|
197
|
+
}]
|
|
198
|
+
}));
|
|
199
|
+
return /*#__PURE__*/_jsx(Reanimated.View, {
|
|
174
200
|
testID: "pixelize-toast",
|
|
175
|
-
accessibilityRole: "alert"
|
|
176
|
-
// W3C pointer events, not a `Pressable` wrapper: hovering to read must not turn the card into
|
|
177
|
-
// a touch responder that competes with the close button for the tap. `onFocus`/`onBlur` on a
|
|
178
|
-
// View catch focus BUBBLING out of the close button (react-native-web), which is the only
|
|
179
|
-
// focusable thing in here; the button repeats them for native, where focus does not bubble.
|
|
180
|
-
,
|
|
201
|
+
accessibilityRole: "alert",
|
|
181
202
|
onPointerEnter: onHoverIn,
|
|
182
203
|
onPointerLeave: onHoverOut,
|
|
183
204
|
onFocus: onFocusIn,
|
|
184
205
|
onBlur: onFocusOut,
|
|
185
|
-
|
|
206
|
+
layout: LinearTransition.reduceMotion(ReduceMotion.System),
|
|
207
|
+
style: [toastCardStructure(theme), floatingStyle, {
|
|
186
208
|
backgroundColor: toneColors.background
|
|
187
|
-
}, theme.elevation.lg, {
|
|
188
|
-
opacity: progress,
|
|
189
|
-
transform: [{
|
|
190
|
-
translateY
|
|
191
|
-
}]
|
|
192
209
|
}],
|
|
193
|
-
children:
|
|
194
|
-
style:
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
210
|
+
children: /*#__PURE__*/_jsxs(Reanimated.View, {
|
|
211
|
+
style: cardMotion,
|
|
212
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
213
|
+
style: [toastAccentBarStructure(theme), {
|
|
214
|
+
backgroundColor: toneColors.accent
|
|
215
|
+
}]
|
|
216
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
217
|
+
numberOfLines: 3,
|
|
218
|
+
style: [theme.fontStyleForWeight(theme.fontWeights.medium), styles.message, {
|
|
219
|
+
fontSize: theme.fontSizes.sm,
|
|
220
|
+
color: toneColors.text
|
|
221
|
+
}],
|
|
222
|
+
children: toast.message
|
|
223
|
+
}), /*#__PURE__*/_jsx(Pressable, {
|
|
224
|
+
testID: "pixelize-toast-close",
|
|
225
|
+
accessibilityRole: "button",
|
|
226
|
+
accessibilityLabel: "Dismiss notification",
|
|
227
|
+
hitSlop: CLOSE_HIT_SLOP,
|
|
228
|
+
onPress: onDismiss,
|
|
229
|
+
onHoverIn: onHoverIn,
|
|
230
|
+
onHoverOut: onHoverOut,
|
|
231
|
+
onFocus: onFocusIn,
|
|
232
|
+
onBlur: onFocusOut,
|
|
233
|
+
style: styles.closeButton,
|
|
234
|
+
children: /*#__PURE__*/_jsx(Icon, {
|
|
235
|
+
name: "x",
|
|
236
|
+
size: CLOSE_ICON_SIZE,
|
|
237
|
+
color: theme.colors.fg.muted,
|
|
238
|
+
strokeWidth: 2
|
|
239
|
+
})
|
|
240
|
+
})]
|
|
241
|
+
})
|
|
222
242
|
});
|
|
223
243
|
});
|
|
224
244
|
|
|
@@ -15,12 +15,9 @@
|
|
|
15
15
|
* `react-native`'s `StyleSheet`, as `core/style` does).
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
+
import { MIN_TOUCH_TARGET, slopFor } from "../../core/a11y/touchTarget.js";
|
|
18
19
|
import { createThemedVariants } from "../../core/style/index.js";
|
|
19
|
-
|
|
20
|
-
* stay isolated. */
|
|
21
|
-
export const MIN_TOUCH_TARGET = 44;
|
|
22
|
-
const slopFor = size => Math.max(0, Math.ceil((MIN_TOUCH_TARGET - size) / 2));
|
|
23
|
-
|
|
20
|
+
export { MIN_TOUCH_TARGET };
|
|
24
21
|
/** The close button's own visual box + glyph. Toast takes no `size` prop, so this is a fixed pair,
|
|
25
22
|
* not a scale — mirrors `BUTTON_SIZES`' shape for exactly one size. */
|
|
26
23
|
export const CLOSE_BUTTON_SIZE = 24;
|
|
@@ -29,6 +26,10 @@ export const CLOSE_HIT_SLOP = slopFor(CLOSE_BUTTON_SIZE);
|
|
|
29
26
|
|
|
30
27
|
/** `duration` on `ToastOptions` defaults to this when omitted — except for `danger` (see below). */
|
|
31
28
|
export const DEFAULT_TOAST_DURATION = 3000;
|
|
29
|
+
export const TOAST_IOS_HOME_INDICATOR_INSET = 20;
|
|
30
|
+
export function resolveToastBottomInset(basePadding, platformOS) {
|
|
31
|
+
return platformOS === "ios" ? basePadding + TOAST_IOS_HOME_INDICATOR_INSET : basePadding;
|
|
32
|
+
}
|
|
32
33
|
|
|
33
34
|
/**
|
|
34
35
|
* How long a toast stays up. `"persistent"` = until the user dismisses it (or a later `show()`
|
|
@@ -108,6 +109,7 @@ export const toastCardStructure = createThemedVariants(theme => ({
|
|
|
108
109
|
alignItems: "center",
|
|
109
110
|
columnGap: theme.space[3],
|
|
110
111
|
borderRadius: theme.radii.md,
|
|
112
|
+
borderCurve: "continuous",
|
|
111
113
|
paddingVertical: theme.space[3],
|
|
112
114
|
paddingRight: theme.space[3],
|
|
113
115
|
overflow: "hidden"
|
|
@@ -24,6 +24,7 @@ modules, it exposes no `style` prop.
|
|
|
24
24
|
| `label` | `string` | — | The tip's text. Also what gets merged into the trigger's `accessibilityHint`. |
|
|
25
25
|
| `children` | `ReactElement<TooltipTriggerProps>` | — | A single element accepting `onLongPress`/`onPressOut`/`onHoverIn`/`onHoverOut`/`onFocus`/`onBlur`/`accessibilityHint`/`aria-describedby` — `Button`, `Fab`, or a raw `Pressable`. A `Text` is **not** enough: react-native-web's `Text` handles only `onPress`, so every injected handler is dropped and the tip never opens on web. |
|
|
26
26
|
| `placement` | `top \| bottom` | `bottom` | Which side of the trigger the bubble opens toward. |
|
|
27
|
+
| `onlyShowWhenTruncated` | `boolean` | `false` | When true, the tip opens only if the trigger's text is ellipsized (web: `scrollWidth > clientWidth`; native: `numberOfLines` truncation probe). |
|
|
27
28
|
| `testID` | `string` | — | On the host `View`; also seeds `${testID}-bubble` on the visible bubble. |
|
|
28
29
|
|
|
29
30
|
No `style` prop (see the file-header note) and no `tone`/`variant`/`size` — the bubble always
|
|
@@ -31,11 +32,15 @@ reads `bg.raised` / `fg.default`, so there is nothing appearance-wise for a call
|
|
|
31
32
|
|
|
32
33
|
## Accessibility contract (WCAG)
|
|
33
34
|
|
|
34
|
-
- **1.4.13 Content on Hover or Focus —
|
|
35
|
+
- **1.4.13 Content on Hover or Focus — 3 of 3.** *Persistent* ✅ (no auto-dismiss on the hover/focus
|
|
35
36
|
path — only long-press arms `autoHideMs`). *Dismissible* ✅ (Escape hides the tip via
|
|
36
37
|
`useDismissOnEscape` from `core/a11y/keyboard`, without moving focus; web-only by construction —
|
|
37
|
-
the native file is a no-op, and native has no hover/keyboard-focus tip to dismiss). *Hoverable*
|
|
38
|
-
—
|
|
38
|
+
the native file is a no-op, and native has no hover/keyboard-focus tip to dismiss). *Hoverable* ✅
|
|
39
|
+
— the bubble accepts pointer events and carries its own `onPointerEnter`/`onPointerLeave` (the
|
|
40
|
+
same primitive `Toast`'s card uses for a non-`Pressable` hover target); a hover-out on the trigger
|
|
41
|
+
doesn't hide immediately, it arms `TOOLTIP_TIMING.hoverOutGraceMs` (200ms) so the pointer has time
|
|
42
|
+
to cross the `theme.space[1]` gap onto the bubble, which cancels the pending hide on entry and
|
|
43
|
+
re-arms its own grace window on exit.
|
|
39
44
|
- **1.3.1 / no gesture-only content** — the whole point of this module. On **native** the trigger's
|
|
40
45
|
`accessibilityHint` is set to `mergeAccessibilityHint(existingHint, label)`, so a screen-reader
|
|
41
46
|
user gets the tip's content with the trigger itself and no long-press. The existing hint is
|
|
@@ -53,8 +58,9 @@ reads `bg.raised` / `fg.default`, so there is nothing appearance-wise for a call
|
|
|
53
58
|
- **2.2.1 Timing Adjustable — not engaged on the hover/focus path.** `show(false)` never arms a
|
|
54
59
|
timer, so a pointer/keyboard tip has no time limit at all. The 2.5s `autoHideMs` is armed only by
|
|
55
60
|
`onLongPress` — see "Known gaps".
|
|
56
|
-
- **2.3.3** —
|
|
57
|
-
still appears immediately
|
|
61
|
+
- **2.3.3** — show/hide runs through `useEnterExit` + `useMotion()`; the tween collapses to
|
|
62
|
+
`duration: 0` when motion is off, so the bubble still appears immediately — reduced motion never
|
|
63
|
+
means "no tip."
|
|
58
64
|
- **Touch target** — Tooltip renders no interactive control of its own; the trigger child owns its
|
|
59
65
|
own touch target (e.g. an icon `Button` already enforces ≥ 44dp via `hitSlop`).
|
|
60
66
|
|
|
@@ -65,8 +71,8 @@ reads `bg.raised` / `fg.default`, so there is nothing appearance-wise for a call
|
|
|
65
71
|
2. **Pure, testable resolvers** in `Tooltip.variants.ts` — no React/lucide, so the WCAG measurement
|
|
66
72
|
and the hint-merge contract are unit-tested against real palettes, never eyeballed.
|
|
67
73
|
3. **No `{...rest}`** — composition is `React.cloneElement` on the single child (explicitly
|
|
68
|
-
sanctioned as composition, not a rest spread), injecting
|
|
69
|
-
4. **Reduced motion respected**, same `
|
|
74
|
+
sanctioned as composition, not a rest spread), injecting the eight named `TooltipTriggerProps`.
|
|
75
|
+
4. **Reduced motion respected**, same `useMotion()` seam as Button's press fade.
|
|
70
76
|
|
|
71
77
|
## Design decisions specific to this module
|
|
72
78
|
|
|
@@ -92,26 +98,25 @@ reads `bg.raised` / `fg.default`, so there is nothing appearance-wise for a call
|
|
|
92
98
|
- **Auto-hide fallback** (`TOOLTIP_TIMING.autoHideMs`, 2.5s) — guards against a long-press tip
|
|
93
99
|
staying open forever if `onPressOut` never fires (a cancelled gesture, or assistive tech invoking
|
|
94
100
|
`onLongPress` directly without a matching press-out).
|
|
101
|
+
- **The bubble's own hover pair uses `onPointerEnter`/`onPointerLeave`, not `Pressable`.** Same
|
|
102
|
+
reason as `Toast`'s card: turning the bubble into a touch responder would buy nothing and could
|
|
103
|
+
compete for gestures with whatever it's overlapping. A single `hideTimer` ref is shared between
|
|
104
|
+
the hover-out grace delay and the long-press `autoHideMs` fallback — safe because `show`/`hide`
|
|
105
|
+
always clear whichever one is pending before arming the other, so the two paths never collide.
|
|
95
106
|
|
|
96
107
|
## Known gaps
|
|
97
108
|
|
|
98
109
|
- **Requires a trigger that declares the injected props.** `cloneElement` sets them on the element,
|
|
99
110
|
but the repo's `{...rest}` ban means a component only receives what its own prop list names — so
|
|
100
111
|
a trigger that doesn't declare them drops the gesture, the hover/focus reveal and the hint merge
|
|
101
|
-
with no error. `
|
|
102
|
-
|
|
112
|
+
with no error. `Fab` declares all eight; `Button` declares seven — it has no `aria-describedby`,
|
|
113
|
+
so the web description link never reaches it. A raw RN `Pressable`/`TouchableOpacity` accepts
|
|
114
|
+
them by construction. **Every
|
|
103
115
|
other module still drops them** — `Chip`, `CopyButton`, `ListItem`, `Switch`, `Checkbox`, `Select`
|
|
104
116
|
and the rest are not usable as triggers yet. **A plain `Text` is a trap on web** (react-native-web's
|
|
105
117
|
`Text` handles only `onPress`) — this is the bug the example app hit.
|
|
106
118
|
- **`Menu` and `Tooltip` cannot nest either way.** `Menu` clones only `onPress` onto its trigger, and
|
|
107
119
|
`TooltipProps` has no `onPress`, so a Tooltip-wrapped Menu trigger never opens the menu.
|
|
108
|
-
- **1.4.13 *hoverable* is still unmet, and needs BOTH halves to land at once.** The bubble is
|
|
109
|
-
`pointerEvents="none"`, so a pointer can never reach the tip; and `handleHoverOut` hides
|
|
110
|
-
immediately, with no grace period for crossing the `theme.space[1]` gap between trigger and
|
|
111
|
-
bubble. Fixing only one half delivers nothing — enabling pointer events without a grace delay just
|
|
112
|
-
makes the tip vanish mid-gap. This is a behavioural redesign (a hover-tracked bubble with its own
|
|
113
|
-
hover handlers plus a close delay), deliberately not attempted as part of the flat-`aria-*`
|
|
114
|
-
migration.
|
|
115
120
|
- **2.2.1 on the long-press path** — `TOOLTIP_TIMING.autoHideMs` (2.5s) is a content-set time limit
|
|
116
121
|
with no turn-off/adjust/extend, and no WCAG exception covers it. It exists as a stuck-tip guard for
|
|
117
122
|
when `onPressOut` never fires (cancelled gesture, or AT invoking `onLongPress` directly), and in
|
|
@@ -127,10 +132,5 @@ reads `bg.raised` / `fg.default`, so there is nothing appearance-wise for a call
|
|
|
127
132
|
|
|
128
133
|
## Performance
|
|
129
134
|
|
|
130
|
-
Wrapped in `React.memo` (repo-wide re-render audit, 2026-07-17 — see root `CLAUDE.md`). `clearHideTimer`/`hide`/`show` are `useCallback`'d, and all six handlers `cloneElement` injects into the consumer-supplied `children` trigger are extracted to `handleLongPress`/`handlePressOut`/`handleHoverIn`/`handleHoverOut`/`handleFocus`/`handleBlur` (`useCallback`) instead of inline lambdas — same idiom `Menu.tsx` uses for its own trigger, since a fresh closure there would defeat a memoized trigger (e.g. this library's own `Button`).
|
|
135
|
+
Wrapped in `React.memo` (repo-wide re-render audit, 2026-07-17 — see root `CLAUDE.md`). `clearHideTimer`/`hide`/`show`/`scheduleHide` and the bubble's own `handleBubbleHoverIn`/`handleBubbleHoverOut` are all `useCallback`'d, and all six handlers `cloneElement` injects into the consumer-supplied `children` trigger are extracted to `handleLongPress`/`handlePressOut`/`handleHoverIn`/`handleHoverOut`/`handleFocus`/`handleBlur` (`useCallback`) instead of inline lambdas — same idiom `Menu.tsx` uses for its own trigger, since a fresh closure there would defeat a memoized trigger (e.g. this library's own `Button`).
|
|
131
136
|
|
|
132
|
-
## Modernization (v1.0.7)
|
|
133
|
-
|
|
134
|
-
- Theme imports decoupled to `theme/hooks`; optional peers (reanimated, gesture-handler, flash-list) load at runtime.
|
|
135
|
-
- List-heavy surfaces use `VirtualList` with device-tier window sizing where applicable.
|
|
136
|
-
- `React.memo` + stable callbacks retained; render-item/key-extractor hoisted per ESLint perf rules.
|