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
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { memo, useCallback, useMemo, useState } from "react";
|
|
4
|
-
import { Pressable, StyleSheet, View } from "react-native";
|
|
4
|
+
import { Platform, Pressable, StyleSheet, View } from "react-native";
|
|
5
5
|
import Svg, { Circle, Line, Path, Rect, Text as SvgText } from "react-native-svg";
|
|
6
|
+
import { useDeviceTier } from "../../core/device/index.js";
|
|
7
|
+
import { rippleColor } from "../../theme/platform/stateLayer.native.js";
|
|
6
8
|
import { useTheme } from "../../theme/hooks.js";
|
|
7
9
|
import { ChartLegend } from "./ChartLegend.js";
|
|
8
|
-
import { BAR_MARKER_MIN_SPAN, BAR_MARKER_RADIUS, categoricalColorAt, defaultNumberFormatter, describeMarker, finiteOrZero, hitSlopFor, niceScale, resolveBarChartDomain, resolveBarLayout, resolveBarX, resolveChartAxisColors, scaleValue, seriesShapeAt, summarizeBarChart } from "./Charts.variants.js";
|
|
10
|
+
import { BAR_MARKER_MIN_SPAN, BAR_MARKER_RADIUS, categoricalColorAt, decimateCategories, defaultNumberFormatter, describeMarker, finiteOrZero, hitSlopFor, maxRenderedCategories, niceScale, resolveBarChartDomain, resolveBarLayout, resolveBarX, resolveChartAxisColors, scaleValue, seriesShapeAt, summarizeBarChart } from "./Charts.variants.js";
|
|
9
11
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
12
|
const Y_AXIS_WIDTH = 40;
|
|
11
13
|
const X_AXIS_HEIGHT = 24;
|
|
@@ -22,7 +24,8 @@ const BarPressTarget = /*#__PURE__*/memo(function BarPressTarget({
|
|
|
22
24
|
height,
|
|
23
25
|
label,
|
|
24
26
|
testID,
|
|
25
|
-
onPress
|
|
27
|
+
onPress,
|
|
28
|
+
androidRipple
|
|
26
29
|
}) {
|
|
27
30
|
const press = useCallback(() => onPress(categoryIndex, seriesIndex), [onPress, categoryIndex, seriesIndex]);
|
|
28
31
|
const box = useMemo(() => ({
|
|
@@ -30,7 +33,8 @@ const BarPressTarget = /*#__PURE__*/memo(function BarPressTarget({
|
|
|
30
33
|
left: x,
|
|
31
34
|
top,
|
|
32
35
|
width,
|
|
33
|
-
height
|
|
36
|
+
height,
|
|
37
|
+
overflow: "hidden"
|
|
34
38
|
}), [x, top, width, height]);
|
|
35
39
|
return /*#__PURE__*/_jsx(Pressable, {
|
|
36
40
|
testID: testID,
|
|
@@ -38,6 +42,7 @@ const BarPressTarget = /*#__PURE__*/memo(function BarPressTarget({
|
|
|
38
42
|
accessibilityLabel: label,
|
|
39
43
|
hitSlop: hitSlopFor(width, height),
|
|
40
44
|
onPress: press,
|
|
45
|
+
android_ripple: androidRipple,
|
|
41
46
|
style: box
|
|
42
47
|
});
|
|
43
48
|
});
|
|
@@ -57,23 +62,28 @@ export const BarChart = /*#__PURE__*/memo(function BarChart({
|
|
|
57
62
|
const theme = useTheme();
|
|
58
63
|
const axisColors = useMemo(() => resolveChartAxisColors(theme.colors), [theme.colors]);
|
|
59
64
|
const [width, setWidth] = useState(0);
|
|
65
|
+
const tier = useDeviceTier();
|
|
60
66
|
const onLayout = event => {
|
|
61
67
|
setWidth(event.nativeEvent.layout.width);
|
|
62
68
|
};
|
|
63
69
|
const plotWidth = Math.max(0, width - Y_AXIS_WIDTH);
|
|
64
70
|
const plotHeight = Math.max(0, height - X_AXIS_HEIGHT - PLOT_TOP);
|
|
65
|
-
|
|
66
|
-
|
|
71
|
+
|
|
72
|
+
// An unbounded `data` array otherwise means unbounded svg nodes — one bar, one label and one
|
|
73
|
+
// press target per category. Below the cap this is the same array reference as `data` itself.
|
|
74
|
+
const renderedData = useMemo(() => decimateCategories(data, maxRenderedCategories(tier)), [data, tier]);
|
|
75
|
+
const summary = useMemo(() => summarizeBarChart(renderedData, yAxisFormatter), [renderedData, yAxisFormatter]);
|
|
76
|
+
const seriesCount = useMemo(() => Math.max(1, renderedData.reduce((max, datum) => Math.max(max, datum.values.length), 0)), [renderedData]);
|
|
67
77
|
const {
|
|
68
78
|
bars,
|
|
69
79
|
ticks,
|
|
70
80
|
categories
|
|
71
81
|
} = useMemo(() => {
|
|
72
|
-
const domain = resolveBarChartDomain(
|
|
82
|
+
const domain = resolveBarChartDomain(renderedData, stacked);
|
|
73
83
|
const scale = niceScale(domain.min, domain.max, TICK_COUNT);
|
|
74
|
-
const layout = resolveBarLayout(
|
|
84
|
+
const layout = resolveBarLayout(renderedData.length, seriesCount, plotWidth, stacked);
|
|
75
85
|
const zeroY = scaleValue(0, scale.min, scale.max, plotHeight, 0);
|
|
76
|
-
const resolvedBars =
|
|
86
|
+
const resolvedBars = renderedData.flatMap((datum, categoryIndex) => {
|
|
77
87
|
let stackTop = 0;
|
|
78
88
|
return datum.values.map((rawValue, seriesIndex) => {
|
|
79
89
|
const value = finiteOrZero(rawValue);
|
|
@@ -120,16 +130,16 @@ export const BarChart = /*#__PURE__*/memo(function BarChart({
|
|
|
120
130
|
y: PLOT_TOP + scaleValue(tick, scale.min, scale.max, plotHeight, 0),
|
|
121
131
|
text: yAxisFormatter(tick)
|
|
122
132
|
})),
|
|
123
|
-
categories:
|
|
133
|
+
categories: renderedData.map((datum, categoryIndex) => ({
|
|
124
134
|
x: Y_AXIS_WIDTH + categoryIndex * layout.bandWidth + layout.bandWidth / 2,
|
|
125
135
|
label: datum.label
|
|
126
136
|
}))
|
|
127
137
|
};
|
|
128
|
-
}, [
|
|
138
|
+
}, [renderedData, series, stacked, seriesCount, plotWidth, plotHeight, theme.colors, yAxisFormatter]);
|
|
129
139
|
const pressBar = useCallback((categoryIndex, seriesIndex) => {
|
|
130
|
-
const datum =
|
|
140
|
+
const datum = renderedData[categoryIndex];
|
|
131
141
|
if (datum !== undefined) onPressBar?.(datum, seriesIndex);
|
|
132
|
-
}, [
|
|
142
|
+
}, [renderedData, onPressBar]);
|
|
133
143
|
const legendEntries = useMemo(() => showLegend && seriesCount > 1 ? Array.from({
|
|
134
144
|
length: seriesCount
|
|
135
145
|
}, (_, index) => ({
|
|
@@ -140,6 +150,10 @@ export const BarChart = /*#__PURE__*/memo(function BarChart({
|
|
|
140
150
|
const plotStyle = useMemo(() => ({
|
|
141
151
|
height
|
|
142
152
|
}), [height]);
|
|
153
|
+
const androidRipple = useMemo(() => Platform.OS === "android" ? {
|
|
154
|
+
color: rippleColor(theme.mode),
|
|
155
|
+
borderless: false
|
|
156
|
+
} : undefined, [theme.mode]);
|
|
143
157
|
return /*#__PURE__*/_jsxs(View, {
|
|
144
158
|
testID: testID,
|
|
145
159
|
style: style,
|
|
@@ -151,8 +165,9 @@ export const BarChart = /*#__PURE__*/memo(function BarChart({
|
|
|
151
165
|
accessible: true,
|
|
152
166
|
accessibilityRole: "image",
|
|
153
167
|
accessibilityLabel: summary,
|
|
154
|
-
style: StyleSheet.absoluteFill,
|
|
155
|
-
|
|
168
|
+
style: [StyleSheet.absoluteFill, {
|
|
169
|
+
pointerEvents: 'none'
|
|
170
|
+
}]
|
|
156
171
|
}), /*#__PURE__*/_jsx(View, {
|
|
157
172
|
accessibilityElementsHidden: true,
|
|
158
173
|
importantForAccessibility: "no-hide-descendants",
|
|
@@ -218,8 +233,9 @@ export const BarChart = /*#__PURE__*/memo(function BarChart({
|
|
|
218
233
|
}, `value-${bar.categoryIndex}-${bar.seriesIndex}`))]
|
|
219
234
|
})
|
|
220
235
|
}), onPressBar !== undefined && /*#__PURE__*/_jsx(View, {
|
|
221
|
-
style: StyleSheet.absoluteFill,
|
|
222
|
-
|
|
236
|
+
style: [StyleSheet.absoluteFill, {
|
|
237
|
+
pointerEvents: 'box-none'
|
|
238
|
+
}],
|
|
223
239
|
children: bars.map(bar => /*#__PURE__*/_jsx(BarPressTarget, {
|
|
224
240
|
testID: testID ? `${testID}-bar-${bar.categoryIndex}-${bar.seriesIndex}-press` : undefined,
|
|
225
241
|
categoryIndex: bar.categoryIndex,
|
|
@@ -229,7 +245,8 @@ export const BarChart = /*#__PURE__*/memo(function BarChart({
|
|
|
229
245
|
width: bar.width,
|
|
230
246
|
height: bar.height,
|
|
231
247
|
label: bar.label,
|
|
232
|
-
onPress: pressBar
|
|
248
|
+
onPress: pressBar,
|
|
249
|
+
androidRipple: androidRipple
|
|
233
250
|
}, `press-${bar.categoryIndex}-${bar.seriesIndex}`))
|
|
234
251
|
})]
|
|
235
252
|
}), /*#__PURE__*/_jsx(ChartLegend, {
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
import { memo, useCallback, useMemo } from "react";
|
|
4
4
|
import { Pressable, StyleSheet, Text, View } from "react-native";
|
|
5
|
+
import { VirtualList } from "../../core/list/index.js";
|
|
6
|
+
import { renderNodeSlot } from "../../core/slot/index.js";
|
|
5
7
|
import { useTheme } from "../../theme/hooks.js";
|
|
6
|
-
import { barListHeaderStructure, barListRowStructure, barListStructure, barListTrackStructure, resolveBarListColors } from "./Charts.variants.js";
|
|
8
|
+
import { BAR_LIST_ROW_HEIGHT, barListHeaderStructure, barListRowStructure, barListStructure, barListTrackStructure, resolveBarListColors } from "./Charts.variants.js";
|
|
7
9
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
10
|
function barFraction(value, max) {
|
|
9
11
|
if (!Number.isFinite(value) || !Number.isFinite(max) || max <= 0) return 0;
|
|
@@ -36,7 +38,7 @@ const BarListRow = /*#__PURE__*/memo(function BarListRow({
|
|
|
36
38
|
style: rowStyle,
|
|
37
39
|
children: [/*#__PURE__*/_jsxs(View, {
|
|
38
40
|
style: headerStyle,
|
|
39
|
-
children: [icon, /*#__PURE__*/_jsx(Text, {
|
|
41
|
+
children: [renderNodeSlot(icon, labelTextStyle), /*#__PURE__*/_jsx(Text, {
|
|
40
42
|
numberOfLines: 1,
|
|
41
43
|
style: labelTextStyle,
|
|
42
44
|
children: label
|
|
@@ -97,25 +99,37 @@ export const BarList = /*#__PURE__*/memo(function BarList({
|
|
|
97
99
|
const item = items[index];
|
|
98
100
|
if (item !== undefined) onPressItem?.(item, index);
|
|
99
101
|
}, [items, onPressItem]);
|
|
102
|
+
const contentContainerStyle = useMemo(() => barListStructure(theme), [theme]);
|
|
103
|
+
const keyExtractor = useCallback(row => row.key, []);
|
|
104
|
+
const renderItem = useCallback(({
|
|
105
|
+
item,
|
|
106
|
+
index
|
|
107
|
+
}) => /*#__PURE__*/_jsx(BarListRow, {
|
|
108
|
+
testID: testID === undefined ? undefined : `${testID}-item-${index}`,
|
|
109
|
+
index: index,
|
|
110
|
+
label: item.label,
|
|
111
|
+
value: item.value,
|
|
112
|
+
icon: item.icon,
|
|
113
|
+
fillWidth: item.fillWidth,
|
|
114
|
+
fillColor: item.fillColor,
|
|
115
|
+
trackColor: colors.track,
|
|
116
|
+
rowStyle: rowStyle,
|
|
117
|
+
headerStyle: headerStyle,
|
|
118
|
+
trackStyle: trackStyle,
|
|
119
|
+
labelTextStyle: labelTextStyle,
|
|
120
|
+
valueTextStyle: valueTextStyle,
|
|
121
|
+
onPress: onPressItem === undefined ? undefined : pressItem
|
|
122
|
+
}), [testID, colors.track, rowStyle, headerStyle, trackStyle, labelTextStyle, valueTextStyle, onPressItem, pressItem]);
|
|
100
123
|
return /*#__PURE__*/_jsx(View, {
|
|
101
124
|
testID: testID,
|
|
102
|
-
style:
|
|
103
|
-
children:
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
fillColor: row.fillColor,
|
|
111
|
-
trackColor: colors.track,
|
|
112
|
-
rowStyle: rowStyle,
|
|
113
|
-
headerStyle: headerStyle,
|
|
114
|
-
trackStyle: trackStyle,
|
|
115
|
-
labelTextStyle: labelTextStyle,
|
|
116
|
-
valueTextStyle: valueTextStyle,
|
|
117
|
-
onPress: onPressItem === undefined ? undefined : pressItem
|
|
118
|
-
}, row.key))
|
|
125
|
+
style: style,
|
|
126
|
+
children: /*#__PURE__*/_jsx(VirtualList, {
|
|
127
|
+
data: rows,
|
|
128
|
+
renderItem: renderItem,
|
|
129
|
+
keyExtractor: keyExtractor,
|
|
130
|
+
itemHeight: BAR_LIST_ROW_HEIGHT,
|
|
131
|
+
contentContainerStyle: contentContainerStyle
|
|
132
|
+
})
|
|
119
133
|
});
|
|
120
134
|
});
|
|
121
135
|
const styles = StyleSheet.create({
|
|
@@ -5,8 +5,14 @@
|
|
|
5
5
|
* (mocking only `react-native`'s `StyleSheet`, as every sibling module's tests do).
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
+
import { MIN_TOUCH_TARGET } from "../../core/a11y/touchTarget.js";
|
|
8
9
|
import { createThemedVariants } from "../../core/style/index.js";
|
|
10
|
+
export { MIN_TOUCH_TARGET };
|
|
9
11
|
export const BAR_LIST_TRACK_HEIGHT = 6;
|
|
12
|
+
|
|
13
|
+
/** Header text (`fontSizes.sm` line height) + row gap (`space[1]`) + track — a floor, not a hard
|
|
14
|
+
* clip, so `VirtualList`'s `itemHeight` gets a real offset hint without constraining content. */
|
|
15
|
+
export const BAR_LIST_ROW_HEIGHT = 30;
|
|
10
16
|
export function resolveBarListColors(colors) {
|
|
11
17
|
return {
|
|
12
18
|
label: colors.fg.default,
|
|
@@ -39,7 +45,8 @@ export const barListStructure = createThemedVariants(theme => ({
|
|
|
39
45
|
}));
|
|
40
46
|
export const barListRowStructure = createThemedVariants(theme => ({
|
|
41
47
|
base: {
|
|
42
|
-
rowGap: theme.space[1]
|
|
48
|
+
rowGap: theme.space[1],
|
|
49
|
+
minHeight: BAR_LIST_ROW_HEIGHT
|
|
43
50
|
}
|
|
44
51
|
}));
|
|
45
52
|
export const barListHeaderStructure = createThemedVariants(theme => ({
|
|
@@ -63,7 +70,7 @@ export const barListTrackStructure = createThemedVariants(theme => ({
|
|
|
63
70
|
// ---------------------------------------------------------------------------------------------
|
|
64
71
|
|
|
65
72
|
/** Same touch-target floor as Select/Button (44dp — Apple HIG minimum, WCAG 2.5.5 AAA). */
|
|
66
|
-
export const CHART_MIN_TOUCH_TARGET =
|
|
73
|
+
export const CHART_MIN_TOUCH_TARGET = MIN_TOUCH_TARGET;
|
|
67
74
|
/** Symmetric hit-area expansion so a drawn mark smaller than 44dp still meets the touch-target
|
|
68
75
|
* floor, on whichever axis is short — a thin bar and a slim pie wedge fail on different axes. */
|
|
69
76
|
export function hitSlopFor(width, height, minTarget = CHART_MIN_TOUCH_TARGET) {
|
|
@@ -242,6 +249,46 @@ export function resolveBarChartDomain(data, stacked) {
|
|
|
242
249
|
max
|
|
243
250
|
};
|
|
244
251
|
}
|
|
252
|
+
|
|
253
|
+
/** Per-`useDeviceTier()` cap on rendered categories — scaled down from `MAX_RENDERED_POINTS` (200)
|
|
254
|
+
* since each `BarChart` category costs THREE svg nodes (bar, label, press target) against a line
|
|
255
|
+
* series' one-per-sample, so the same node budget affords fewer categories on the low tiers. */
|
|
256
|
+
export const MAX_RENDERED_CATEGORIES_LOW = 60;
|
|
257
|
+
export const MAX_RENDERED_CATEGORIES_MID = 120;
|
|
258
|
+
export const MAX_RENDERED_CATEGORIES_HIGH = 200;
|
|
259
|
+
export function maxRenderedCategories(tier) {
|
|
260
|
+
switch (tier) {
|
|
261
|
+
case "low":
|
|
262
|
+
return MAX_RENDERED_CATEGORIES_LOW;
|
|
263
|
+
case "high":
|
|
264
|
+
return MAX_RENDERED_CATEGORIES_HIGH;
|
|
265
|
+
default:
|
|
266
|
+
return MAX_RENDERED_CATEGORIES_MID;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Evenly-spaced stride sampling down to `maxCategories`, first and last category always kept.
|
|
272
|
+
* Unlike `decimateSeries`' min/max bucketing (built for a numeric y-value), a category has no
|
|
273
|
+
* "extreme" to preserve — only its label and position — so an even stride keeps the *shown*
|
|
274
|
+
* categories representative of the full range instead of clustering at one end. Below the cap the
|
|
275
|
+
* input array is returned as-is (same reference), so a typical chart is byte-identical to before.
|
|
276
|
+
*/
|
|
277
|
+
export function decimateCategories(data, maxCategories) {
|
|
278
|
+
if (data.length <= maxCategories) return data;
|
|
279
|
+
if (maxCategories <= 1) return data.length === 0 ? [] : [data[0]];
|
|
280
|
+
const lastIndex = data.length - 1;
|
|
281
|
+
const result = [];
|
|
282
|
+
let lastPushedIndex = -1;
|
|
283
|
+
for (let i = 0; i < maxCategories; i++) {
|
|
284
|
+
const index = Math.round(i * lastIndex / (maxCategories - 1));
|
|
285
|
+
if (index !== lastPushedIndex) {
|
|
286
|
+
result.push(data[index]);
|
|
287
|
+
lastPushedIndex = index;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return result;
|
|
291
|
+
}
|
|
245
292
|
/** "Bar chart, 4 categories, highest Revenue at 1,200" — the accessibility label IS the chart for
|
|
246
293
|
* a screen reader, so it names the count and the single tallest bar drawn, across every series. */
|
|
247
294
|
export function summarizeBarChart(data, formatter) {
|
|
@@ -285,9 +332,28 @@ export function resolveLineDomain(series) {
|
|
|
285
332
|
}
|
|
286
333
|
|
|
287
334
|
/** Above this sample count, line/sparkline series are decimated before any geometry is built —
|
|
288
|
-
* one svg node per sample is what makes a 5,000-point series unusable on a mid-tier phone.
|
|
335
|
+
* one svg node per sample is what makes a 5,000-point series unusable on a mid-tier phone. Equal
|
|
336
|
+
* to `maxRenderedPoints("high")` — kept as a named export since it's also `decimateSeries`'
|
|
337
|
+
* default `maxPoints`, for a caller that decimates without a device tier in hand. */
|
|
289
338
|
export const MAX_RENDERED_POINTS = 200;
|
|
290
339
|
|
|
340
|
+
/** Per-`useDeviceTier()` cap on rendered line/sparkline points. A point costs ONE svg node versus a
|
|
341
|
+
* `BarChart` category's three (bar, label, press target), so the same low/mid-tier node budget
|
|
342
|
+
* affords more points than `MAX_RENDERED_CATEGORIES` at the same tier. */
|
|
343
|
+
export const MAX_RENDERED_POINTS_LOW = 80;
|
|
344
|
+
export const MAX_RENDERED_POINTS_MID = 140;
|
|
345
|
+
export const MAX_RENDERED_POINTS_HIGH = MAX_RENDERED_POINTS;
|
|
346
|
+
export function maxRenderedPoints(tier) {
|
|
347
|
+
switch (tier) {
|
|
348
|
+
case "low":
|
|
349
|
+
return MAX_RENDERED_POINTS_LOW;
|
|
350
|
+
case "high":
|
|
351
|
+
return MAX_RENDERED_POINTS_HIGH;
|
|
352
|
+
default:
|
|
353
|
+
return MAX_RENDERED_POINTS_MID;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
|
|
291
357
|
/**
|
|
292
358
|
* Min/max bucket decimation down to ~`maxPoints`: both endpoints are kept, and the interior is
|
|
293
359
|
* split into equal buckets that each contribute their lowest and highest sample, in original
|
|
@@ -5,7 +5,7 @@ import { StyleSheet, Text, View } from "react-native";
|
|
|
5
5
|
import Svg, { Circle, G } from "react-native-svg";
|
|
6
6
|
import { useTheme } from "../../theme/hooks.js";
|
|
7
7
|
import { ChartLegend } from "./ChartLegend.js";
|
|
8
|
-
import { DONUT_SEGMENT_GAP_RATIO, resolveDonutChartColors } from "./Charts.variants.js";
|
|
8
|
+
import { DONUT_SEGMENT_GAP_RATIO, resolveDonutChartColors, seriesShapeAt } from "./Charts.variants.js";
|
|
9
9
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
10
|
export const DonutChart = /*#__PURE__*/memo(function DonutChart({
|
|
11
11
|
segments,
|
|
@@ -53,9 +53,14 @@ export const DonutChart = /*#__PURE__*/memo(function DonutChart({
|
|
|
53
53
|
dashoffset: -arc.start * circumference - gap / 2
|
|
54
54
|
};
|
|
55
55
|
}), [arcs, circumference]);
|
|
56
|
-
|
|
56
|
+
|
|
57
|
+
// Segment colour is consumer-supplied with no shared ramp to key off, but each segment's own
|
|
58
|
+
// position in `arcs` is stable index identity — the same thing `seriesShapeAt` already keys off
|
|
59
|
+
// for `PieChart`'s legend, reused here rather than reinvented.
|
|
60
|
+
const legendEntries = useMemo(() => showLegend && arcs.length > 1 ? arcs.map((arc, index) => ({
|
|
57
61
|
color: arc.color,
|
|
58
|
-
label: arc.label
|
|
62
|
+
label: arc.label,
|
|
63
|
+
shape: seriesShapeAt(index)
|
|
59
64
|
})) : [], [arcs, showLegend]);
|
|
60
65
|
const ringSize = useMemo(() => ({
|
|
61
66
|
width: size,
|
|
@@ -96,8 +101,9 @@ export const DonutChart = /*#__PURE__*/memo(function DonutChart({
|
|
|
96
101
|
})
|
|
97
102
|
})
|
|
98
103
|
}), (centerLabel !== undefined || centerSublabel !== undefined) && /*#__PURE__*/_jsxs(View, {
|
|
99
|
-
|
|
100
|
-
|
|
104
|
+
style: [StyleSheet.absoluteFill, styles.center, {
|
|
105
|
+
pointerEvents: 'none'
|
|
106
|
+
}],
|
|
101
107
|
children: [centerLabel !== undefined && /*#__PURE__*/_jsx(Text, {
|
|
102
108
|
numberOfLines: 1,
|
|
103
109
|
style: [theme.fontStyleForWeight(theme.fontWeights.semibold), {
|
|
@@ -116,7 +122,7 @@ export const DonutChart = /*#__PURE__*/memo(function DonutChart({
|
|
|
116
122
|
})]
|
|
117
123
|
}), /*#__PURE__*/_jsx(ChartLegend, {
|
|
118
124
|
entries: legendEntries,
|
|
119
|
-
glyph: "
|
|
125
|
+
glyph: "mark",
|
|
120
126
|
testID: testID ? `${testID}-legend` : undefined
|
|
121
127
|
})]
|
|
122
128
|
});
|
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
import { memo, useMemo, useState } from "react";
|
|
4
4
|
import { StyleSheet, View } from "react-native";
|
|
5
5
|
import Svg, { Circle, Line, Path, Text as SvgText } from "react-native-svg";
|
|
6
|
+
import { useDeviceTier } from "../../core/device/index.js";
|
|
6
7
|
import { useTheme } from "../../theme/hooks.js";
|
|
7
8
|
import { ChartLegend } from "./ChartLegend.js";
|
|
8
|
-
import { buildAreaPath, buildLinePath, categoricalColorAt, decimateSeries, defaultNumberFormatter, describeMarker, niceScale, resolveChartAxisColors, resolveLineDomain, resolveSeriesPoints, scaleValue, seriesDashAt, seriesShapeAt, summarizeLineChart } from "./Charts.variants.js";
|
|
9
|
+
import { buildAreaPath, buildLinePath, categoricalColorAt, decimateSeries, defaultNumberFormatter, describeMarker, maxRenderedPoints, niceScale, resolveChartAxisColors, resolveLineDomain, resolveSeriesPoints, scaleValue, seriesDashAt, seriesShapeAt, summarizeLineChart } from "./Charts.variants.js";
|
|
9
10
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
11
|
const Y_AXIS_WIDTH = 40;
|
|
11
12
|
const X_AXIS_HEIGHT = 24;
|
|
@@ -33,6 +34,7 @@ export const LineChart = /*#__PURE__*/memo(function LineChart({
|
|
|
33
34
|
const theme = useTheme();
|
|
34
35
|
const axisColors = useMemo(() => resolveChartAxisColors(theme.colors), [theme.colors]);
|
|
35
36
|
const [width, setWidth] = useState(0);
|
|
37
|
+
const tier = useDeviceTier();
|
|
36
38
|
const onLayout = event => {
|
|
37
39
|
setWidth(event.nativeEvent.layout.width);
|
|
38
40
|
};
|
|
@@ -40,8 +42,8 @@ export const LineChart = /*#__PURE__*/memo(function LineChart({
|
|
|
40
42
|
const plotHeight = Math.max(0, height - X_AXIS_HEIGHT - PLOT_TOP);
|
|
41
43
|
const decimatedSeries = useMemo(() => series.map(s => ({
|
|
42
44
|
...s,
|
|
43
|
-
data: decimateSeries(s.data, datumY)
|
|
44
|
-
})), [series]);
|
|
45
|
+
data: decimateSeries(s.data, datumY, maxRenderedPoints(tier))
|
|
46
|
+
})), [series, tier]);
|
|
45
47
|
const {
|
|
46
48
|
plotted,
|
|
47
49
|
paths,
|
|
@@ -108,8 +110,9 @@ export const LineChart = /*#__PURE__*/memo(function LineChart({
|
|
|
108
110
|
accessible: true,
|
|
109
111
|
accessibilityRole: "image",
|
|
110
112
|
accessibilityLabel: summary,
|
|
111
|
-
style: StyleSheet.absoluteFill,
|
|
112
|
-
|
|
113
|
+
style: [StyleSheet.absoluteFill, {
|
|
114
|
+
pointerEvents: 'none'
|
|
115
|
+
}]
|
|
113
116
|
}), /*#__PURE__*/_jsx(View, {
|
|
114
117
|
accessibilityElementsHidden: true,
|
|
115
118
|
importantForAccessibility: "no-hide-descendants",
|
|
@@ -16,7 +16,7 @@ importing this subpath requires the peer installed).
|
|
|
16
16
|
| `LineChart.tsx` | Svg multi-series line with axes/gridlines, optional area fill and curve smoothing. |
|
|
17
17
|
| `PieChart.tsx` | Svg filled wedges + legend — the "with a legend" sibling to `DonutChart`'s ring. |
|
|
18
18
|
| `ChartLegend.tsx` | Internal — the one text legend shared by `PieChart`/`DonutChart`/`LineChart`/`BarChart`. Not exported. |
|
|
19
|
-
| `Charts.variants.ts` | Pure resolvers: colors, scales, geometry, arc/path maths, a11y summaries, non-colour series channels. No React, no svg. |
|
|
19
|
+
| `Charts.variants.ts` | Pure resolvers: colors, scales, geometry, arc/path maths, a11y summaries, non-colour series channels. `CHART_MIN_TOUCH_TARGET` aliases `MIN_TOUCH_TARGET` from `core/a11y/touchTarget`; `hitSlopFor` expands marks below 44dp. No React, no svg. |
|
|
20
20
|
| `__tests__/Charts.test.ts` | Pure: WCAG contrast (all brands × modes), geometry, scale, path and summary logic. |
|
|
21
21
|
| `__tests__/Charts.render.test.tsx` | Render: rows/segments/paths/bars/lines, a11y, svg mocked. |
|
|
22
22
|
|
|
@@ -28,10 +28,11 @@ Bar fill defaults to `accent.solid`; per-item `color` exists for data-driven ser
|
|
|
28
28
|
breakdowns have no closed-union role) — a deliberate, documented exception to the closed-union rule.
|
|
29
29
|
|
|
30
30
|
**DonutChart** — `segments: { value, color, label? }[]`, `size?` (160), `thickness?` (20),
|
|
31
|
-
`centerLabel?`, `centerSublabel?`, `showLegend?` (true
|
|
31
|
+
`centerLabel?`, `centerSublabel?`, `showLegend?` (true), `style?`, `testID?`. Non-finite /
|
|
32
32
|
≤ 0 segment values are dropped; with no valid segments only the `bg.sunken` track ring renders.
|
|
33
|
-
`segment.label`
|
|
34
|
-
|
|
33
|
+
`segment.label` renders as a legend row, falling back to `"Segment N"` when omitted; the legend is
|
|
34
|
+
skipped for 0–1 valid segments. Each legend row also carries a knocked-out shape keyed off the
|
|
35
|
+
segment's own index in `segments[]`, same as `PieChart`.
|
|
35
36
|
|
|
36
37
|
**Sparkline** — `data: number[]`, `width?` (120), `height?` (32),
|
|
37
38
|
`tone?: accent | neutral | success | warning | danger | info` (accent), `style?`, `testID?`.
|
|
@@ -40,7 +41,7 @@ Unchanged by the WCAG 1.4.1 pass below — see "Design decisions" for why.
|
|
|
40
41
|
|
|
41
42
|
**BarChart** — `data: { label, values: number[] }[]` (`values.length === 1` = simple bars, `> 1` =
|
|
42
43
|
grouped/stacked), `series?: { name, color? }[]`, `height?` (200), `showGrid?` (true), `showValues?`
|
|
43
|
-
(false), `stacked?` (false), `showLegend?` (true
|
|
44
|
+
(false), `stacked?` (false), `showLegend?` (true), `yAxisFormatter?`,
|
|
44
45
|
`onPressBar?(datum, seriesIndex)`, `style?`, `testID?`. Width is measured via `onLayout` (no `width`
|
|
45
46
|
prop — the chart fills its container). Non-finite bar values render as height 0; the y-domain always
|
|
46
47
|
includes 0. 2+ series get a legend (falling back to `"Series N"` with no `series[i].name`) and a
|
|
@@ -48,12 +49,12 @@ knocked-out shape mark on each bar when it's ≥ 14dp on both axes (`BAR_MARKER_
|
|
|
48
49
|
|
|
49
50
|
**LineChart** — `series: { name, data: { x, y }[], color?, shape? }[]`, `height?` (200), `showGrid?`
|
|
50
51
|
(true), `showDots?` (true), `showArea?` (false), `curved?` (false — Catmull-Rom→bézier when true),
|
|
51
|
-
`showLegend?` (true
|
|
52
|
+
`showLegend?` (true), `yAxisFormatter?`, `xAxisFormatter?`, `style?`, `testID?`. Non-finite
|
|
52
53
|
`y` samples are dropped per series (same contract as `Sparkline`), then spaced evenly by index — x is
|
|
53
54
|
plotted by position, not proportionally by numeric value, so unevenly-spaced categories still read as
|
|
54
55
|
an even axis. Long series are decimated first (see Performance) — no prop, a module constant. 2+
|
|
55
56
|
series get a legend naming each one; every series also gets a `strokeDasharray` and a marker shape
|
|
56
|
-
(circle/square/triangle/diamond/cross) by index — `series[i].shape`
|
|
57
|
+
(circle/square/triangle/diamond/cross) by index — optional `series[i].shape` overrides it.
|
|
57
58
|
|
|
58
59
|
**PieChart** — `segments: { label, value, color? }[]`, `size?` (180), `showLegend?` (true),
|
|
59
60
|
`showPercentages?` (true — controls the legend row text, not on-wedge labels: a label drawn on a
|
|
@@ -61,8 +62,8 @@ consumer-picked wedge color can't have its contrast guaranteed), `onPressSegment
|
|
|
61
62
|
`style?`, `testID?`. `index` is into the rendered (filtered, positive-value) list, matching
|
|
62
63
|
`DonutChart`'s own `arcs`-index convention — never the raw `segments` indices. This is the filled
|
|
63
64
|
sibling of `DonutChart`; reach for `DonutChart` for a ring with a center label, `PieChart` for
|
|
64
|
-
filled wedges with a legend. Wedges
|
|
65
|
-
knocked-out shape
|
|
65
|
+
filled wedges with a legend. Wedges carry a `bg.surface` separator stroke, and each legend row a
|
|
66
|
+
knocked-out shape alongside its swatch+text (see "Design decisions").
|
|
66
67
|
|
|
67
68
|
All four multi-series charts default series/segment colors from a shared 5-hue role-derived ramp
|
|
68
69
|
(`resolveCategoricalRamp`) when no per-series/per-segment `color` is given; a 6th+ series wraps
|
|
@@ -83,7 +84,8 @@ shape/dash channels (`seriesShapeAt`/`seriesDashAt`) wrap the same way, by the s
|
|
|
83
84
|
`accessibilityRole="button"` + `"label, value"` label. BarList rows are `text` role, or `button`
|
|
84
85
|
when `onPressItem` is set.
|
|
85
86
|
- **2.5.8 / 2.5.5 (Target Size)** — every pressable bar/segment gets a ≥ 44dp touch target via
|
|
86
|
-
`hitSlop` (`hitSlopFor`), computed from
|
|
87
|
+
`hitSlop` (`hitSlopFor`, floor `CHART_MIN_TOUCH_TARGET` = `core/a11y/touchTarget`), computed from
|
|
88
|
+
its own drawn size; pie wedges use an angular
|
|
87
89
|
bounding-box (`resolveWedgeBoundingBox`) since a wedge isn't rectangular.
|
|
88
90
|
- **1.4.3 (Contrast Minimum, text)** — BarList label/value and axis labels (`fg.muted`) measure
|
|
89
91
|
≥ 4.5:1 against their canvas, for all 9 brands × both modes (`Charts.test.ts`).
|
|
@@ -134,8 +136,9 @@ shape/dash channels (`seriesShapeAt`/`seriesDashAt`) wrap the same way, by the s
|
|
|
134
136
|
- Segment/bar/series `color` values come from the consumer — contrast of consumer-picked colors
|
|
135
137
|
against the canvas is the consumer's to verify (documented exception to the closed-union rule).
|
|
136
138
|
`DonutChart.segments[].color` is required and consumer-supplied (unlike the other three charts'
|
|
137
|
-
ramp-defaulted `color`)
|
|
138
|
-
|
|
139
|
+
ramp-defaulted `color`); its ring separator stays a track-coloured gap (the ring segments are
|
|
140
|
+
strokes on one shared circle, not independent filled paths — see "Design decisions"); the
|
|
141
|
+
legend carries a shape per segment's own index in `segments[]`, same as `PieChart`.
|
|
139
142
|
- LineChart's x-axis labels are taken from the longest (decimated) series and positioned by raw
|
|
140
143
|
index; a series with dropped non-finite points can drift slightly out of alignment with the
|
|
141
144
|
shared x-axis, and a decimated series labels only the samples it kept.
|
|
@@ -159,18 +162,28 @@ shape/dash channels (`seriesShapeAt`/`seriesDashAt`) wrap the same way, by the s
|
|
|
159
162
|
styles hoisted out of the row loop; a per-row inline closure or a per-row `variants(theme)` call
|
|
160
163
|
would defeat their memo. `ChartLegend`'s entry array is built inside each chart's own `useMemo`
|
|
161
164
|
(keyed on `series`/`segments`/`showLegend`/`theme.colors`), never a fresh literal per render.
|
|
162
|
-
- **
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
- **Decimation** (`LineChart`, `Sparkline`): a series longer than `
|
|
165
|
+
- **Android ripple** — `BarPressTarget`/`WedgePressTarget` take `android_ripple` (`borderless: false`)
|
|
166
|
+
computed once per chart (`androidRipple`, `useMemo` on `theme.mode`, `Platform.OS === "android"`
|
|
167
|
+
gated) and passed down per target, rather than re-resolved per row. Each target's absolutely
|
|
168
|
+
positioned box also gained `overflow: "hidden"` so the ripple clips to it instead of spilling past
|
|
169
|
+
the invisible press area.
|
|
170
|
+
- **Decimation** (`LineChart`, `Sparkline`): a series longer than a `useDeviceTier()`-scaled
|
|
171
|
+
`maxRenderedPoints` (80/140/200, low/mid/high — `MAX_RENDERED_POINTS_HIGH` equals the pre-existing
|
|
172
|
+
fixed `MAX_RENDERED_POINTS`, still exported for a caller that decimates without a tier in hand) is
|
|
168
173
|
downsampled inside the same `useMemo`, before any geometry, so it costs nothing on re-render —
|
|
169
174
|
1,000 samples otherwise means 1,000 svg nodes. Min/max bucketing: both endpoints plus each
|
|
170
175
|
bucket's lowest and highest sample, in original order, so a one-sample spike survives (plain
|
|
171
176
|
stride sampling would drop it). Output is ≤ the threshold; below it the input array is returned
|
|
172
|
-
as-is.
|
|
173
|
-
|
|
177
|
+
as-is. A point costs one svg node against a `BarChart` category's three (bar, label, press
|
|
178
|
+
target), so the same per-tier node budget affords more points than categories at the same tier.
|
|
179
|
+
- **`BarChart` category cap:** an unbounded `data` array otherwise means unbounded svg nodes — one
|
|
180
|
+
bar, one label and one press target per category. Above a `useDeviceTier()`-scaled
|
|
181
|
+
`maxRenderedCategories` (60/120/200, low/mid/high — same worst-case scale as `MAX_RENDERED_POINTS`),
|
|
182
|
+
`decimateCategories` stride-samples down to the cap inside the same `useMemo`, first/last category
|
|
183
|
+
always kept, so the shown categories stay spread across the full range rather than clustered at one
|
|
184
|
+
end. Below the cap the input array is returned as-is (byte-identical to the pre-cap behavior).
|
|
185
|
+
- **`BarList` windowing:** rows render through `VirtualList` (`itemHeight={BAR_LIST_ROW_HEIGHT}`)
|
|
186
|
+
instead of a raw `.map()`, so an unbounded `items` array no longer mounts every row up front.
|
|
174
187
|
|
|
175
188
|
## Modernization (v1.0.7)
|
|
176
189
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { memo, useCallback, useMemo } from "react";
|
|
4
|
-
import { Pressable, StyleSheet, View } from "react-native";
|
|
4
|
+
import { Platform, Pressable, StyleSheet, View } from "react-native";
|
|
5
5
|
import Svg, { Circle, Path } from "react-native-svg";
|
|
6
|
+
import { rippleColor } from "../../theme/platform/stateLayer.native.js";
|
|
6
7
|
import { useTheme } from "../../theme/hooks.js";
|
|
7
8
|
import { ChartLegend } from "./ChartLegend.js";
|
|
8
9
|
import { SEGMENT_SEPARATOR_WIDTH, describeWedge, hitSlopFor, resolvePieWedges, resolveWedgeBoundingBox, seriesShapeAt, summarizePieChart } from "./Charts.variants.js";
|
|
@@ -12,7 +13,8 @@ const WedgePressTarget = /*#__PURE__*/memo(function WedgePressTarget({
|
|
|
12
13
|
box,
|
|
13
14
|
label,
|
|
14
15
|
testID,
|
|
15
|
-
onPress
|
|
16
|
+
onPress,
|
|
17
|
+
androidRipple
|
|
16
18
|
}) {
|
|
17
19
|
const press = useCallback(() => onPress(index), [onPress, index]);
|
|
18
20
|
const frame = useMemo(() => ({
|
|
@@ -20,7 +22,8 @@ const WedgePressTarget = /*#__PURE__*/memo(function WedgePressTarget({
|
|
|
20
22
|
left: box.x,
|
|
21
23
|
top: box.y,
|
|
22
24
|
width: box.width,
|
|
23
|
-
height: box.height
|
|
25
|
+
height: box.height,
|
|
26
|
+
overflow: "hidden"
|
|
24
27
|
}), [box]);
|
|
25
28
|
return /*#__PURE__*/_jsx(Pressable, {
|
|
26
29
|
testID: testID,
|
|
@@ -28,6 +31,7 @@ const WedgePressTarget = /*#__PURE__*/memo(function WedgePressTarget({
|
|
|
28
31
|
accessibilityLabel: label,
|
|
29
32
|
hitSlop: hitSlopFor(box.width, box.height),
|
|
30
33
|
onPress: press,
|
|
34
|
+
android_ripple: androidRipple,
|
|
31
35
|
style: frame
|
|
32
36
|
});
|
|
33
37
|
});
|
|
@@ -76,6 +80,10 @@ export const PieChart = /*#__PURE__*/memo(function PieChart({
|
|
|
76
80
|
width: size,
|
|
77
81
|
height: size
|
|
78
82
|
}), [size]);
|
|
83
|
+
const androidRipple = useMemo(() => Platform.OS === "android" ? {
|
|
84
|
+
color: rippleColor(theme.mode),
|
|
85
|
+
borderless: false
|
|
86
|
+
} : undefined, [theme.mode]);
|
|
79
87
|
return /*#__PURE__*/_jsxs(View, {
|
|
80
88
|
testID: testID,
|
|
81
89
|
style: [styles.container, style],
|
|
@@ -86,8 +94,9 @@ export const PieChart = /*#__PURE__*/memo(function PieChart({
|
|
|
86
94
|
accessible: true,
|
|
87
95
|
accessibilityRole: "image",
|
|
88
96
|
accessibilityLabel: summary,
|
|
89
|
-
style: StyleSheet.absoluteFill,
|
|
90
|
-
|
|
97
|
+
style: [StyleSheet.absoluteFill, {
|
|
98
|
+
pointerEvents: 'none'
|
|
99
|
+
}]
|
|
91
100
|
}), /*#__PURE__*/_jsx(View, {
|
|
92
101
|
accessibilityElementsHidden: true,
|
|
93
102
|
importantForAccessibility: "no-hide-descendants",
|
|
@@ -115,14 +124,16 @@ export const PieChart = /*#__PURE__*/memo(function PieChart({
|
|
|
115
124
|
}, index))]
|
|
116
125
|
})
|
|
117
126
|
}), pressTargets.length > 0 && /*#__PURE__*/_jsx(View, {
|
|
118
|
-
style: StyleSheet.absoluteFill,
|
|
119
|
-
|
|
127
|
+
style: [StyleSheet.absoluteFill, {
|
|
128
|
+
pointerEvents: 'box-none'
|
|
129
|
+
}],
|
|
120
130
|
children: pressTargets.map((target, index) => /*#__PURE__*/_jsx(WedgePressTarget, {
|
|
121
131
|
testID: testID ? `${testID}-segment-${index}-press` : undefined,
|
|
122
132
|
index: index,
|
|
123
133
|
box: target.box,
|
|
124
134
|
label: target.label,
|
|
125
|
-
onPress: pressSegment
|
|
135
|
+
onPress: pressSegment,
|
|
136
|
+
androidRipple: androidRipple
|
|
126
137
|
}, index))
|
|
127
138
|
})]
|
|
128
139
|
}), /*#__PURE__*/_jsx(ChartLegend, {
|