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
|
@@ -10,17 +10,14 @@ VoiceOver's escape gesture via `onAccessibilityEscape`).
|
|
|
10
10
|
|
|
11
11
|
| File | Role |
|
|
12
12
|
|------|------|
|
|
13
|
-
| `Modal.tsx` | The component. RN `<Modal>` composition, backdrop, overlay, panel, title. Falls back to the web portal mechanism below when opted in. |
|
|
13
|
+
| `Modal.tsx` | The component. RN `<Modal>` composition, backdrop, overlay, panel, title. Panel lift/scrim opacity use `useMotion` + `useAnimatedValue` (Reanimated). Falls back to the web portal mechanism below when opted in. |
|
|
14
14
|
| `Modal.variants.ts` | Pure resolvers (`MODAL_SIZES`, `resolveModalPanelColors`, `resolveModalAnimationType`) + the themed structural resolvers (`modalOverlayStructure`, `modalPanelStructure`). No React, no lucide. Untouched by the web portal mechanism — see below. |
|
|
15
15
|
| `ModalPortalContext.ts` | The web-only portal-container `React.Context<unknown>`, default `null`. Read by `Modal`, `Select`, `MultiSelect`, and `Menu`. |
|
|
16
16
|
| `ModalPortalProvider.tsx` | Public provider wrapping `ModalPortalContext.Provider`. A consumer's opt-in API. |
|
|
17
17
|
| `renderWebPortal.ts` / `renderWebPortal.web.ts` | The platform-split portal renderer — see "Web portal mechanism" below. |
|
|
18
18
|
| `index.ts` | Public surface: `Modal`, `ModalProps`, `ModalSize`, `ModalPortalProvider`, `ModalPortalProviderProps`. |
|
|
19
|
-
| `__tests__/Modal.test.ts` | Pure
|
|
20
|
-
| `__tests__/Modal.
|
|
21
|
-
| `__tests__/ModalPortalProvider.test.tsx` | The provider forwards `container` onto `ModalPortalContext`; an unwrapped tree reads the `null` default. |
|
|
22
|
-
| `__tests__/renderWebPortal.test.ts` / `renderWebPortal.web.test.ts` | Each platform file in isolation — the native file is always a no-op; the web file calls `ReactDOM.createPortal` with the exact children/container (mocked — no real DOM under Jest). |
|
|
23
|
-
| `__tests__/Modal.keyboard.web.test.tsx` | Escape / Tab trap / focus restore on the portal branch, and their deliberate ABSENCE on the RNModal branch. |
|
|
19
|
+
| `__tests__/Modal.test.ts` / `Modal.render.test.tsx` | Pure (WCAG contrast, size caps, reduced motion) + render (visibility, title semantics, backdrop dismissal, portal branch). |
|
|
20
|
+
| `__tests__/ModalPortalProvider.test.tsx`, `renderWebPortal*.test.ts`, `Modal.keyboard.web.test.tsx` | Provider context default; each platform portal file in isolation; Escape/Tab-trap/focus-restore on the portal branch and their deliberate absence on the RNModal branch. |
|
|
24
21
|
|
|
25
22
|
## Props
|
|
26
23
|
|
|
@@ -29,7 +26,11 @@ VoiceOver's escape gesture via `onAccessibilityEscape`).
|
|
|
29
26
|
| `visible` | `boolean` | — | Required. Fully controlled — no internal open state. |
|
|
30
27
|
| `onRequestClose` | `() => void` | — | Required. Fired by the backdrop press, Android hardware back, and iOS VoiceOver's escape gesture (`onAccessibilityEscape` on the panel). |
|
|
31
28
|
| `title` | `string` | — | Optional heading, rendered `accessibilityRole="header"`. |
|
|
29
|
+
| `subtitle` | `string` | — | Optional muted line under the title (`fg.muted`). |
|
|
32
30
|
| `children` | `ReactNode` | — | Required. Panel content. |
|
|
31
|
+
| `footer` | `ReactNode` | — | Actions row below body (e.g. Cancel / Save). |
|
|
32
|
+
| `isLoading` | `boolean` | `false` | Scrim + centered `Spinner` over the panel; swallows taps, so footer and body cannot be activated while it is up. |
|
|
33
|
+
| `hideCloseButton` | `boolean` | `true` | When `false`, renders an explicit header close control wired to `onRequestClose`. |
|
|
33
34
|
| `size` | `sm \| md \| lg` | `md` | Closed union — panel max width, reusing the shared `sizes` primitive (384/448/512dp). |
|
|
34
35
|
| `testID` | `string` | — | Also seeds `${testID}-backdrop` and `${testID}-panel`. |
|
|
35
36
|
|
|
@@ -44,16 +45,12 @@ No `style`/`containerStyle` — see "Why no `style`" below.
|
|
|
44
45
|
- **2.3.3** — `resolveModalAnimationType(reducedMotion)` returns `"none"` instead of `"fade"` when
|
|
45
46
|
the OS reduce-motion setting is on.
|
|
46
47
|
- The title is `accessibilityRole="header"`, giving it heading semantics for screen readers.
|
|
47
|
-
- The backdrop is `accessible={false}` — a decorative dismiss target,
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
`overFullScreen`, which has no native iOS swipe-to-dismiss gesture at all; `onAccessibilityEscape`
|
|
54
|
-
is the real, working native hook here, not a swipe.)
|
|
55
|
-
- No touch-target sizing needed: the only interactive surface is the full-screen backdrop, already
|
|
56
|
-
far larger than the 44dp floor.
|
|
48
|
+
- The backdrop is `accessible={false}` — a decorative dismiss target, never the *only* way to
|
|
49
|
+
close: Android hardware back fires `onRequestClose`, and `onAccessibilityEscape` on the panel
|
|
50
|
+
gives VoiceOver a real two-finger-Z dismiss. There is no iOS swipe-to-dismiss here —
|
|
51
|
+
`transparent` with no `presentationStyle` forces `overFullScreen`, which has no such gesture.
|
|
52
|
+
- Touch targets need no local sizing: the backdrop is full-screen, and the optional header close
|
|
53
|
+
control is a library `Button`, which already enforces the 44dp floor.
|
|
57
54
|
|
|
58
55
|
## Why no `style`
|
|
59
56
|
|
|
@@ -64,101 +61,78 @@ component spec omits `style` rather than including it as an unused escape hatch.
|
|
|
64
61
|
|
|
65
62
|
## Web portal mechanism (opt-in)
|
|
66
63
|
|
|
67
|
-
`react-native-web`'s
|
|
68
|
-
|
|
69
|
-
`
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
their own RN `<Modal>` directly (never this module's `Modal` component) and read the identical
|
|
75
|
-
mechanism below.
|
|
76
|
-
|
|
77
|
-
- **`ModalPortalContext`** — a `React.Context<unknown>`, default `null`. `unknown` because this
|
|
78
|
-
package has no `"dom"` lib entry (native has no DOM) — a `HTMLElement` type here wouldn't
|
|
79
|
-
compile. Internal; a consumer never reads it directly.
|
|
64
|
+
`react-native-web`'s `<Modal>` portals to `document.body` unconditionally with no `container` prop
|
|
65
|
+
to override it, which breaks containment inside a fixed-size preview frame
|
|
66
|
+
(`example/DeviceFrame.tsx`). `Select`, `MultiSelect` and `Menu` render their own RN `<Modal>`
|
|
67
|
+
directly (never this component) and read the identical mechanism.
|
|
68
|
+
|
|
69
|
+
- **`ModalPortalContext`** — `React.Context<unknown>`, default `null`. `unknown` because the
|
|
70
|
+
package has no `"dom"` lib entry, so `HTMLElement` would not compile. Internal.
|
|
80
71
|
- **`ModalPortalProvider`** — the public opt-in. `<ModalPortalProvider container={node}>` makes
|
|
81
|
-
every `Modal` / `AlertDialog` / `Select` / `MultiSelect` / `Menu` underneath portal into `node
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
`react-dom`) is what an actual web bundle resolves to instead. Metro never resolves
|
|
89
|
-
`react-dom` for a native bundle, so it's never part of that dependency graph — verified via
|
|
90
|
-
`expo export --platform ios` vs `--platform web`, grepping each bundle for a marker string
|
|
91
|
-
unique to each file. Jest's `react-native` preset has no `web` haste platform either, so every
|
|
92
|
-
test also resolves the base file by default — this is why `Modal.render.test.tsx` /
|
|
93
|
-
`Select.render.test.tsx` / `MultiSelect.render.test.tsx` / `Menu.render.test.tsx` mock
|
|
94
|
-
`renderWebPortal` directly to exercise the opt-in branch, and `renderWebPortal.web.test.ts` is the
|
|
95
|
-
one place the real `ReactDOM.createPortal` call is verified (mocking `react-dom` itself — no real
|
|
96
|
-
DOM under Jest).
|
|
72
|
+
every `Modal` / `AlertDialog` / `Select` / `MultiSelect` / `Menu` underneath portal into `node`.
|
|
73
|
+
Safe to mount on every platform; off web, `container` is never read.
|
|
74
|
+
- **`renderWebPortal.ts` / `.web.ts`** — a Metro platform-extension pair where the BASE file is the
|
|
75
|
+
no-op default and only the `.web` file imports `react-dom`, so `react-dom` never enters a native
|
|
76
|
+
bundle. Jest has no `web` haste platform either, so render tests mock `renderWebPortal` to reach
|
|
77
|
+
the opt-in branch; `renderWebPortal.web.test.ts` is the only place the real `createPortal` is
|
|
78
|
+
verified.
|
|
97
79
|
- **Backward compatibility (the hard bar):** `Platform.OS === "web" && portalContainer != null`
|
|
98
|
-
gates the whole mechanism
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
- **Known simplification:** the portal path skips RN `<Modal>`'s open/close animation entirely
|
|
105
|
-
(mounts/unmounts on `visible`/`open` directly) — `resolveModalAnimationType`/reduced-motion only
|
|
106
|
-
apply to the RNModal path. Acceptable: the goal is containment, not animation fidelity, and this
|
|
107
|
-
only affects a consumer that has opted in.
|
|
80
|
+
gates the whole mechanism, so native and provider-less web take the untouched RN `<Modal>` path.
|
|
81
|
+
No shared structural resolver was changed — the portal path only reproduces the sizing RN's
|
|
82
|
+
`<Modal>` otherwise supplies around the same backdrop+panel tree.
|
|
83
|
+
- **The portal path runs its own motion**, not RN `<Modal>`'s: the shared `enter` value drives the
|
|
84
|
+
panel and scrim, and `mounted` holds the tree through a timed exit rather than unmounting on
|
|
85
|
+
`visible`. `resolveModalAnimationType` applies only to the RNModal branch.
|
|
108
86
|
- `react-dom` is an **optional peer dependency** (`peerDependenciesMeta.react-dom.optional`) —
|
|
109
87
|
only needed by an app that actually renders for web; native-only consumers never install it.
|
|
110
88
|
|
|
111
89
|
### Keyboard — the portal branch has to supply its own
|
|
112
90
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
91
|
+
Escape, Tab cycling and focus restore all come from `react-native-web`'s own `ModalContent` /
|
|
92
|
+
`ModalFocusTrap`, which the portal branch never renders. `Modal.tsx` therefore calls
|
|
93
|
+
`useDismissOnEscape` + `useFocusTrap` (`core/a11y/keyboard`, imported directly) gated on
|
|
94
|
+
`portalled && visible`. **The RNModal path must stay unwired** — two Escape listeners and two
|
|
95
|
+
competing traps is a worse bug than the one being fixed. Both hooks are native no-ops by file
|
|
96
|
+
resolution. `AlertDialog`, `LimitReachedModal` and `ImageViewer` compose this and inherit all of
|
|
97
|
+
it, each with a test asserting the inheritance.
|
|
117
98
|
|
|
118
|
-
|
|
119
|
-
directly — not through the `core/a11y` barrel) gated on `portalled && visible`. **The RNModal path
|
|
120
|
-
must stay unwired**: two Escape listeners and two competing traps on one dialog is a worse bug than
|
|
121
|
-
the one being fixed. Both hooks are no-ops on native by file resolution, so nothing changes there.
|
|
99
|
+
## Patterns copied from Button / Select (the reference modules)
|
|
122
100
|
|
|
123
|
-
|
|
124
|
-
|
|
101
|
+
Structure vs colour split (`createThemedVariants` for sizing, `RoleColors` inline); pure resolvers
|
|
102
|
+
in `Modal.variants.ts` unit-tested against real palettes; RN's own `<Modal>` rather than a
|
|
103
|
+
hand-rolled portal; a closed `size` union reusing the shared `sizes` primitive.
|
|
125
104
|
|
|
126
|
-
##
|
|
105
|
+
## Android edge-to-edge
|
|
127
106
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
`pointerEvents="box-none"` overlay, the same shape `Select`'s option list uses (converged on
|
|
134
|
-
independently — this module owns none of that code, built in parallel).
|
|
135
|
-
4. **Closed `size` union** reusing the shared `sizes` primitive (384/448/512dp) instead of
|
|
136
|
-
Modal-local numbers — `theme/tokens/primitives/sizes.ts` is documented for exactly this case.
|
|
107
|
+
Every RN `<Modal transparent>` in this library (`Modal`, `Select`, `MultiSelect`, `Combobox`,
|
|
108
|
+
`Menu`, `OrgSwitcher`, `PickerShell`, `Drawer`) also sets `statusBarTranslucent` and
|
|
109
|
+
`navigationBarTranslucent`, both `true`. Without them, Android edge-to-edge (Expo default since
|
|
110
|
+
SDK 53) paints the modal's backing window opaque instead of transparent — the whole screen goes
|
|
111
|
+
solid white on open. Add both any time a new module renders its own RN `<Modal transparent>`.
|
|
137
112
|
|
|
138
113
|
## Known gaps
|
|
139
114
|
|
|
140
|
-
- **No full SCREEN-READER trap.** iOS gets `accessibilityViewIsModal
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
to the element it's set on, not to arbitrary siblings elsewhere in the tree) — a full Android
|
|
144
|
-
reader trap needs the app root to cooperate. Out of scope for v1. (The web *keyboard* trap above
|
|
145
|
-
is a separate mechanism and is wired.)
|
|
115
|
+
- **No full SCREEN-READER trap on Android.** iOS gets `accessibilityViewIsModal`; Android has no
|
|
116
|
+
JS-level way to mark background siblings hidden from inside this component, so a reader trap
|
|
117
|
+
there needs the app root to cooperate. The web *keyboard* trap above is separate, and is wired.
|
|
146
118
|
- **The web keyboard trap only cycles Tab.** It does not pull focus back if focus leaves the panel
|
|
147
119
|
by a click outside or a programmatic `focus()` — that needs sentinel nodes at the panel's edges,
|
|
148
120
|
a component-level change nobody has needed yet. Inherited from `core/a11y/keyboard`.
|
|
149
121
|
- **No built-in scrolling.** The panel caps at `maxHeight: "92%"` but does not wrap `children` in a
|
|
150
122
|
`ScrollView` — forcing one risks nested-`VirtualizedList` warnings if a consumer's content is
|
|
151
123
|
already scrollable. Tall content is the consumer's own `ScrollView`/`FlatList` to add.
|
|
152
|
-
-
|
|
153
|
-
|
|
154
|
-
|
|
124
|
+
- **`isLoading` was visual-only before this release** — the spinner scrim rendered with
|
|
125
|
+
`pointerEvents: "none"`, so taps reached the footer underneath and a consumer could fire a submit
|
|
126
|
+
twice. A consumer pinned to an older version must still disable its own footer buttons.
|
|
155
127
|
|
|
156
128
|
## Performance
|
|
157
129
|
|
|
158
|
-
Both `Modal` and `ModalPortalProvider` are wrapped in `React.memo
|
|
130
|
+
Both `Modal` and `ModalPortalProvider` are wrapped in `React.memo`. Neither has a `.map()` list or
|
|
131
|
+
a memoizable child — `ModalPortalProvider` only passes `container`/`children` into a provider.
|
|
159
132
|
|
|
160
|
-
##
|
|
133
|
+
## Motion
|
|
161
134
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
135
|
+
One `enter` shared value drives panel slide+fade and scrim opacity together on both branches, so
|
|
136
|
+
they are a single gesture; `MODAL_BACKDROP` takes its alpha from `MOTION_TRANSFORM.scrimOpacity`.
|
|
137
|
+
The inner content layer additionally carries `FadeInDown`/`FadeOut`/`LinearTransition`, each with
|
|
138
|
+
`ReduceMotion.System`.
|
|
@@ -33,110 +33,231 @@
|
|
|
33
33
|
* which is where all three silently went missing.
|
|
34
34
|
*/
|
|
35
35
|
|
|
36
|
-
import { memo, useContext, useEffect, useMemo, useRef } from "react";
|
|
37
|
-
import {
|
|
36
|
+
import { memo, useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
37
|
+
import { Modal as RNModal, Platform, Pressable, StyleSheet, View } from "react-native";
|
|
38
|
+
import Reanimated, { FadeInDown, FadeOut, interpolate, LinearTransition, ReduceMotion, useAnimatedStyle } from "react-native-reanimated";
|
|
38
39
|
import { useDismissOnEscape, useFocusTrap } from "../../core/a11y/keyboard";
|
|
39
|
-
import {
|
|
40
|
+
import { renderNodeSlot } from "../../core/slot/index.js";
|
|
41
|
+
import { MOTION_TRANSFORM, useMotion, useAnimatedValue } from "../../core/motion/index.js";
|
|
42
|
+
import { withAlpha } from "../../core/gradient/index.js";
|
|
43
|
+
import { elevation, floatingBackground, floatingSurfaceStyle, highlight } from "../../theme/platform/index.js";
|
|
44
|
+
import { elevation as elevationTokens } from "../../theme/tokens/primitives/index.js";
|
|
40
45
|
import { useTheme } from "../../theme/hooks.js";
|
|
46
|
+
import { Button } from "../button/index.js";
|
|
47
|
+
import { Spinner } from "../spinner/index.js";
|
|
48
|
+
import { Heading, Text } from "../text/index.js";
|
|
41
49
|
import { ModalPortalContext } from "./ModalPortalContext.js";
|
|
42
50
|
import { renderWebPortal } from "./renderWebPortal";
|
|
43
|
-
import { modalOverlayStructure, modalPanelStructure, resolveModalAnimationType
|
|
51
|
+
import { modalOverlayStructure, modalPanelStructure, resolveModalAnimationType } from "./Modal.variants.js";
|
|
44
52
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
45
|
-
// Decorative dismiss scrim
|
|
46
|
-
//
|
|
47
|
-
|
|
48
|
-
const MODAL_BACKDROP = "#00000080";
|
|
53
|
+
// Decorative dismiss scrim, not a role token — same reasoning Button's PRESS_SCRIM and Select's
|
|
54
|
+
// BACKDROP_SCRIM record. Opacity is the shared `scrimOpacity` knob, not a locally-guessed hex.
|
|
55
|
+
const MODAL_BACKDROP = withAlpha("#000000", MOTION_TRANSFORM.scrimOpacity);
|
|
49
56
|
export const Modal = /*#__PURE__*/memo(function Modal({
|
|
50
57
|
visible,
|
|
51
58
|
onRequestClose,
|
|
52
59
|
title,
|
|
60
|
+
subtitle,
|
|
53
61
|
children,
|
|
62
|
+
footer,
|
|
63
|
+
isLoading = false,
|
|
64
|
+
hideCloseButton = true,
|
|
54
65
|
size = "md",
|
|
55
66
|
testID
|
|
56
67
|
}) {
|
|
57
68
|
const theme = useTheme();
|
|
58
69
|
const motion = useMotion();
|
|
59
|
-
const panelColors = useMemo(() => resolveModalPanelColors(theme.colors), [theme.colors]);
|
|
60
70
|
const portalContainer = useContext(ModalPortalContext);
|
|
61
71
|
const panelRef = useRef(null);
|
|
62
72
|
const portalled = Platform.OS === "web" && portalContainer != null;
|
|
63
73
|
useDismissOnEscape(portalled && visible, onRequestClose);
|
|
64
74
|
useFocusTrap(panelRef, portalled && visible);
|
|
75
|
+
|
|
76
|
+
// `mounted` only gates the web-portal render below — the RNModal branch keeps handing `visible`
|
|
77
|
+
// straight to RN's own <Modal>, which still owns that surface's native fade in and out.
|
|
78
|
+
const [mounted, setMounted] = useState(visible);
|
|
79
|
+
const mountedRef = useRef(mounted);
|
|
80
|
+
mountedRef.current = mounted;
|
|
65
81
|
const enter = useAnimatedValue(visible ? 1 : 0);
|
|
66
|
-
const
|
|
82
|
+
const running = useRef(null);
|
|
83
|
+
const offsetY = motion.transform.offsetY;
|
|
84
|
+
const unmountTimer = useRef(null);
|
|
67
85
|
useEffect(() => {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
86
|
+
const clearUnmount = () => {
|
|
87
|
+
if (unmountTimer.current !== null) {
|
|
88
|
+
clearTimeout(unmountTimer.current);
|
|
89
|
+
unmountTimer.current = null;
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
running.current?.stop();
|
|
93
|
+
clearUnmount();
|
|
94
|
+
if (visible) {
|
|
95
|
+
setMounted(true);
|
|
96
|
+
if (!motion.enabled) {
|
|
97
|
+
enter.value = 1;
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
enter.value = 0;
|
|
101
|
+
running.current = motion.timing(enter, 1, {
|
|
102
|
+
easing: "decelerate"
|
|
103
|
+
});
|
|
104
|
+
running.current.start();
|
|
71
105
|
return;
|
|
72
106
|
}
|
|
73
|
-
if (!
|
|
74
|
-
|
|
107
|
+
if (!mountedRef.current) return;
|
|
108
|
+
const exitMs = motion.duration("fast");
|
|
109
|
+
if (!motion.enabled || exitMs === 0) {
|
|
110
|
+
enter.value = 0;
|
|
111
|
+
setMounted(false);
|
|
75
112
|
return;
|
|
76
113
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
easing: "
|
|
114
|
+
running.current = motion.timing(enter, 0, {
|
|
115
|
+
duration: "fast",
|
|
116
|
+
easing: "accelerate"
|
|
80
117
|
});
|
|
81
|
-
|
|
118
|
+
running.current.start();
|
|
119
|
+
unmountTimer.current = setTimeout(() => {
|
|
120
|
+
unmountTimer.current = null;
|
|
121
|
+
setMounted(false);
|
|
122
|
+
}, exitMs);
|
|
123
|
+
return clearUnmount;
|
|
82
124
|
}, [visible, motion, enter]);
|
|
83
|
-
useEffect(() => () =>
|
|
84
|
-
|
|
125
|
+
useEffect(() => () => {
|
|
126
|
+
running.current?.stop();
|
|
127
|
+
if (unmountTimer.current !== null) clearTimeout(unmountTimer.current);
|
|
128
|
+
}, []);
|
|
129
|
+
const floatingStyle = useMemo(() => {
|
|
130
|
+
highlight("subtle", theme.mode);
|
|
131
|
+
elevation(elevationTokens.lg);
|
|
132
|
+
void theme.elevatedSurfaces;
|
|
133
|
+
return {
|
|
134
|
+
backgroundColor: floatingBackground(theme, "lg"),
|
|
135
|
+
...floatingSurfaceStyle(theme, "lg")
|
|
136
|
+
};
|
|
137
|
+
}, [theme]);
|
|
138
|
+
const panelStaticStyle = useMemo(() => [modalPanelStructure(theme, {
|
|
85
139
|
size
|
|
86
|
-
}),
|
|
87
|
-
|
|
140
|
+
}), floatingStyle], [theme, size, floatingStyle]);
|
|
141
|
+
const panelAnimatedStyle = useAnimatedStyle(() => ({
|
|
142
|
+
opacity: enter.value,
|
|
88
143
|
transform: [{
|
|
89
|
-
translateY: enter.
|
|
90
|
-
inputRange: [0, 1],
|
|
91
|
-
outputRange: [motion.transform.offsetY, 0]
|
|
92
|
-
})
|
|
144
|
+
translateY: interpolate(enter.value, [0, 1], [offsetY, 0])
|
|
93
145
|
}]
|
|
94
|
-
}
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
146
|
+
}));
|
|
147
|
+
const backdropAnimatedStyle = useAnimatedStyle(() => ({
|
|
148
|
+
opacity: enter.value
|
|
149
|
+
}));
|
|
150
|
+
const panelSlotTextStyle = useMemo(() => [theme.fontStyleForWeight(theme.fontWeights.regular), {
|
|
151
|
+
color: theme.colors.fg.default,
|
|
152
|
+
fontSize: theme.fontSizes.md
|
|
153
|
+
}], [theme]);
|
|
154
|
+
const titleBlock = title !== undefined || !hideCloseButton ? /*#__PURE__*/_jsxs(View, {
|
|
155
|
+
style: {
|
|
156
|
+
flexDirection: "row",
|
|
157
|
+
alignItems: "flex-start",
|
|
158
|
+
justifyContent: "space-between",
|
|
159
|
+
gap: theme.space[2],
|
|
160
|
+
marginBottom: theme.space[3]
|
|
161
|
+
},
|
|
162
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
163
|
+
style: {
|
|
164
|
+
flex: 1,
|
|
165
|
+
gap: theme.space[1]
|
|
166
|
+
},
|
|
167
|
+
children: [title !== undefined ? /*#__PURE__*/_jsx(Heading, {
|
|
168
|
+
variant: "h3",
|
|
169
|
+
children: title
|
|
170
|
+
}) : null, subtitle !== undefined ? /*#__PURE__*/_jsx(Text, {
|
|
171
|
+
variant: "body-sm",
|
|
172
|
+
color: "muted",
|
|
173
|
+
children: subtitle
|
|
174
|
+
}) : null]
|
|
175
|
+
}), !hideCloseButton ? /*#__PURE__*/_jsx(Button, {
|
|
176
|
+
variant: "ghost",
|
|
177
|
+
icon: "x",
|
|
178
|
+
accessibilityLabel: "Close",
|
|
179
|
+
onPress: onRequestClose,
|
|
180
|
+
testID: testID ? `${testID}-close` : undefined
|
|
181
|
+
}) : null]
|
|
182
|
+
}) : subtitle !== undefined ? /*#__PURE__*/_jsx(Text, {
|
|
183
|
+
variant: "body-sm",
|
|
184
|
+
color: "muted",
|
|
185
|
+
style: {
|
|
186
|
+
marginBottom: theme.space[3]
|
|
187
|
+
},
|
|
188
|
+
children: subtitle
|
|
189
|
+
}) : null;
|
|
100
190
|
const overlay = /*#__PURE__*/_jsxs(_Fragment, {
|
|
101
191
|
children: [/*#__PURE__*/_jsx(Pressable, {
|
|
102
192
|
testID: testID ? `${testID}-backdrop` : undefined,
|
|
103
193
|
accessible: false,
|
|
104
194
|
tabIndex: -1,
|
|
105
|
-
style:
|
|
106
|
-
onPress: onRequestClose
|
|
195
|
+
style: StyleSheet.absoluteFill,
|
|
196
|
+
onPress: onRequestClose,
|
|
197
|
+
children: /*#__PURE__*/_jsx(Reanimated.View, {
|
|
198
|
+
style: [styles.backdrop, backdropAnimatedStyle, {
|
|
199
|
+
pointerEvents: 'none'
|
|
200
|
+
}]
|
|
201
|
+
})
|
|
107
202
|
}), /*#__PURE__*/_jsx(View, {
|
|
108
|
-
style: modalOverlayStructure(theme),
|
|
109
|
-
|
|
110
|
-
|
|
203
|
+
style: [modalOverlayStructure(theme), {
|
|
204
|
+
pointerEvents: 'box-none'
|
|
205
|
+
}],
|
|
206
|
+
children: /*#__PURE__*/_jsx(Reanimated.View, {
|
|
111
207
|
ref: panelRef,
|
|
112
208
|
testID: testID ? `${testID}-panel` : undefined,
|
|
113
209
|
accessibilityViewIsModal: true,
|
|
114
210
|
onAccessibilityEscape: onRequestClose,
|
|
115
|
-
style:
|
|
116
|
-
children:
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
211
|
+
style: [panelStaticStyle, panelAnimatedStyle],
|
|
212
|
+
children: /*#__PURE__*/_jsxs(Reanimated.View, {
|
|
213
|
+
entering: FadeInDown.springify().reduceMotion(ReduceMotion.System),
|
|
214
|
+
exiting: FadeOut.reduceMotion(ReduceMotion.System),
|
|
215
|
+
layout: LinearTransition.reduceMotion(ReduceMotion.System),
|
|
216
|
+
style: {
|
|
217
|
+
position: "relative"
|
|
218
|
+
},
|
|
219
|
+
children: [titleBlock, renderNodeSlot(children, panelSlotTextStyle), footer !== undefined ? /*#__PURE__*/_jsx(View, {
|
|
220
|
+
style: {
|
|
221
|
+
marginTop: theme.space[4],
|
|
222
|
+
gap: theme.space[2]
|
|
223
|
+
},
|
|
224
|
+
children: renderNodeSlot(footer, panelSlotTextStyle)
|
|
225
|
+
}) : null, isLoading ? /*#__PURE__*/_jsx(View, {
|
|
226
|
+
testID: testID ? `${testID}-loading-overlay` : undefined,
|
|
227
|
+
style: {
|
|
228
|
+
...StyleSheet.absoluteFill,
|
|
229
|
+
alignItems: "center",
|
|
230
|
+
justifyContent: "center",
|
|
231
|
+
backgroundColor: withAlpha(theme.colors.bg.surface, 0.72),
|
|
232
|
+
pointerEvents: 'auto'
|
|
233
|
+
},
|
|
234
|
+
children: /*#__PURE__*/_jsx(Spinner, {
|
|
235
|
+
testID: testID ? `${testID}-loading` : undefined
|
|
236
|
+
})
|
|
237
|
+
}) : null]
|
|
238
|
+
})
|
|
121
239
|
})
|
|
122
240
|
})]
|
|
123
241
|
});
|
|
124
242
|
if (portalled) {
|
|
125
|
-
if (!
|
|
243
|
+
if (!mounted) return null;
|
|
126
244
|
// RN's own <Modal> supplies a `position: fixed`/full-screen ancestor for `overlay`'s children
|
|
127
245
|
// to size against (see ModalPortalContext.ts) — reproduce just that sizing here (never touching
|
|
128
246
|
// the shared `modalOverlayStructure`/`modalPanelStructure` resolvers the RNModal path below
|
|
129
247
|
// still uses untouched) so the same tree fills `portalContainer`'s bounds instead of the
|
|
130
248
|
// viewport.
|
|
131
249
|
return renderWebPortal(/*#__PURE__*/_jsx(View, {
|
|
132
|
-
style: StyleSheet.absoluteFill,
|
|
133
|
-
|
|
250
|
+
style: [StyleSheet.absoluteFill, {
|
|
251
|
+
pointerEvents: 'box-none'
|
|
252
|
+
}],
|
|
134
253
|
children: overlay
|
|
135
254
|
}), portalContainer);
|
|
136
255
|
}
|
|
137
256
|
return /*#__PURE__*/_jsx(RNModal, {
|
|
138
257
|
visible: visible,
|
|
139
258
|
transparent: true,
|
|
259
|
+
statusBarTranslucent: true,
|
|
260
|
+
navigationBarTranslucent: true,
|
|
140
261
|
animationType: resolveModalAnimationType(!motion.enabled),
|
|
141
262
|
onRequestClose: onRequestClose,
|
|
142
263
|
children: overlay
|
|
@@ -69,8 +69,8 @@ export const modalPanelStructure = createThemedVariants(theme => ({
|
|
|
69
69
|
width: "100%",
|
|
70
70
|
maxHeight: "92%",
|
|
71
71
|
borderRadius: theme.radii.lg,
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
borderCurve: "continuous",
|
|
73
|
+
padding: theme.space[5]
|
|
74
74
|
},
|
|
75
75
|
variants: {
|
|
76
76
|
size: {
|
|
@@ -1,25 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
* Web-only escape hatch for where Modal (and, via this same context, Select/Menu's option/action
|
|
5
|
-
* sheets) portal their overlay content on `react-native-web`.
|
|
6
|
-
*
|
|
7
|
-
* `react-native-web`'s own `<Modal>` unconditionally portals to `document.body`
|
|
8
|
-
* (`react-native-web/src/exports/Modal/ModalPortal.js` — `document.body.appendChild(...)`, then
|
|
9
|
-
* `createPortal(children, elementRef.current)`; no `container`/`portalHost` prop exists to
|
|
10
|
-
* override it, verified against the installed 0.21.2 source). That is correct for a full app, but
|
|
11
|
-
* breaks visual containment inside a fixed-size preview frame (see `example/DeviceFrame.tsx`): the
|
|
12
|
-
* overlay renders full-browser-viewport instead of clipped to the frame.
|
|
13
|
-
*
|
|
14
|
-
* Defaults to `null` — every existing consumer, native or web, reads `null` here and keeps
|
|
15
|
-
* rendering through RN's own `<Modal>` exactly as before this context existed. A consumer opts in
|
|
16
|
-
* via `ModalPortalProvider` (`./ModalPortalProvider`).
|
|
17
|
-
*
|
|
18
|
-
* Typed `unknown`, not a DOM type: this package has no `"dom"` lib entry (native has no DOM), so a
|
|
19
|
-
* `HTMLElement`/`Element` annotation here would fail to compile. On web the value must be a real
|
|
20
|
-
* DOM node capable of receiving `ReactDOM.createPortal` — `renderWebPortal.web.ts` is the one place
|
|
21
|
-
* that actually dereferences it, and does the environment-appropriate cast there.
|
|
22
|
-
*/
|
|
23
|
-
import { createContext } from "react";
|
|
24
|
-
export const ModalPortalContext = /*#__PURE__*/createContext(null);
|
|
3
|
+
export { ModalPortalContext } from "../../core/overlay/ModalPortalContext.js";
|
|
25
4
|
//# sourceMappingURL=ModalPortalContext.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { memo } from "react";
|
|
4
|
-
import { ModalPortalContext } from "
|
|
4
|
+
import { ModalPortalContext } from "../../core/overlay/ModalPortalContext.js";
|
|
5
5
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
6
|
/**
|
|
7
7
|
* Opts a subtree into containing its Modal / AlertDialog / Select / Menu overlays inside
|
|
@@ -1,18 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
* Native/default counterpart of `renderWebPortal.web.ts`. There is no DOM to portal into outside a
|
|
5
|
-
* web environment, so this always returns `null` — the caller (Modal/Select/Menu) then falls back
|
|
6
|
-
* to rendering through RN's own `<Modal>`, exactly as it did before this mechanism existed.
|
|
7
|
-
*
|
|
8
|
-
* Exists so the bare specifier `import { renderWebPortal } from "./renderWebPortal"` has a
|
|
9
|
-
* same-shaped default to resolve to on every platform except an actual web bundle: Metro's
|
|
10
|
-
* platform-extension resolution picks `renderWebPortal.web.ts` only when bundling for web, and
|
|
11
|
-
* falls back to THIS file everywhere else (iOS, Android, and Jest — Jest's `react-native` preset
|
|
12
|
-
* haste config has no `web` platform, so it also always resolves here). `react-dom` therefore never
|
|
13
|
-
* enters a native dependency graph.
|
|
14
|
-
*/
|
|
15
|
-
export function renderWebPortal(_children, _container) {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
3
|
+
export { renderWebPortal } from "../../core/overlay/renderWebPortal";
|
|
18
4
|
//# sourceMappingURL=renderWebPortal.js.map
|
|
@@ -1,24 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Web implementation: portals `children` into `container` via `ReactDOM.createPortal`, bypassing
|
|
6
|
-
* `react-native-web`'s own `<Modal>` (which always portals to `document.body` — see
|
|
7
|
-
* `ModalPortalContext.ts`). Returns `null` when `container` is nullish so the caller falls back to
|
|
8
|
-
* the default `<Modal>` path.
|
|
9
|
-
*
|
|
10
|
-
* `container` is cast from `unknown` to `Element` here — the one place this mechanism's `unknown`
|
|
11
|
-
* portal-container contract gets a concrete DOM type, since only this file (Metro only ever
|
|
12
|
-
* resolves it for an actual web bundle — see `renderWebPortal.ts`) has a real DOM environment to
|
|
13
|
-
* assume. A caller that passes something that isn't really a DOM node fails at `createPortal`'s own
|
|
14
|
-
* runtime, same as any other incorrect `ReactDOM.createPortal` call would.
|
|
15
|
-
*
|
|
16
|
-
* This module's exported signature stays identical to `renderWebPortal.ts`'s (`ReactNode`,
|
|
17
|
-
* `unknown` — never a `react-dom` type), so a consumer never needs `@types/react-dom` just because
|
|
18
|
-
* they import `pixelize-native-library/modal`; that type dependency stays internal to this one file.
|
|
19
|
-
*/
|
|
20
|
-
export function renderWebPortal(children, container) {
|
|
21
|
-
if (container == null) return null;
|
|
22
|
-
return /*#__PURE__*/createPortal(children, container);
|
|
23
|
-
}
|
|
3
|
+
export { renderWebPortal } from "../../core/overlay/renderWebPortal.web.js";
|
|
24
4
|
//# sourceMappingURL=renderWebPortal.web.js.map
|
|
@@ -34,6 +34,9 @@ Renders `null` when the count is ≤0 and there is no `triggerText` — nothing
|
|
|
34
34
|
- **Touch target (WCAG 2.5.5 / 2.5.8)** — the trigger carries `minHeight: 44` (this library's
|
|
35
35
|
floor). It is a standalone node with no neighbouring target to overlap, so the floor is real
|
|
36
36
|
height via `minHeight`, not `hitSlop` expansion the way `Button`'s shorter sizes reach it.
|
|
37
|
+
- **Android touch feedback** — the trigger carries `android_ripple` (`rippleColor(theme.mode)`,
|
|
38
|
+
`borderless: false`), gated on `Platform.OS === "android"`. The scrim `Pressable` gets none — it is
|
|
39
|
+
the same `accessible={false}` decoy described under Modal semantics below, not a real press target.
|
|
37
40
|
- **Label in Name (WCAG 2.5.3)** — the accessible name is built to CONTAIN the visible text
|
|
38
41
|
(`"${triggerText} +${count} more"`, or just `"+${count} more"` with no leading text), not a
|
|
39
42
|
separately-worded `"${count} more items"`. Voice control says what it reads; the old name shared no
|