@multiplatform.one/components 7.7.4 → 7.8.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/dist/cjs/Accordion/index.cjs +4 -0
- package/dist/cjs/Accordion/index.native.js +5 -1
- package/dist/cjs/Accordion/index.native.js.map +1 -1
- package/dist/cjs/Alert/index.native.js.map +1 -1
- package/dist/cjs/AnimateHeight/index.cjs +29 -2
- package/dist/cjs/AnimateHeight/index.native.js +30 -2
- package/dist/cjs/AnimateHeight/index.native.js.map +1 -1
- package/dist/cjs/Avatar/getInitials.native.js.map +1 -1
- package/dist/cjs/Avatar/index.native.js.map +1 -1
- package/dist/cjs/Badge/index.native.js.map +1 -1
- package/dist/cjs/Button.native.js.map +1 -1
- package/dist/cjs/Card.cjs +7 -1
- package/dist/cjs/Card.native.js +11 -1
- package/dist/cjs/Card.native.js.map +1 -1
- package/dist/cjs/CardFooter.cjs +1 -0
- package/dist/cjs/CardFooter.native.js +1 -0
- package/dist/cjs/CardFooter.native.js.map +1 -1
- package/dist/cjs/CardHeader.native.js.map +1 -1
- package/dist/cjs/Carousel/index.native.js +1 -1
- package/dist/cjs/Carousel/index.native.js.map +1 -1
- package/dist/cjs/Chip/index.native.js.map +1 -1
- package/dist/cjs/Collapsible.cjs +48 -0
- package/dist/cjs/Collapsible.native.js +56 -0
- package/dist/cjs/Collapsible.native.js.map +1 -0
- package/dist/cjs/ContextMenu/index.native.js.map +1 -1
- package/dist/cjs/CopyField/index.cjs +6 -1
- package/dist/cjs/CopyField/index.native.js +6 -1
- package/dist/cjs/CopyField/index.native.js.map +1 -1
- package/dist/cjs/DotIndicator/index.native.js.map +1 -1
- package/dist/cjs/DropdownMenu/index.cjs +31 -1
- package/dist/cjs/DropdownMenu/index.native.js +31 -1
- package/dist/cjs/DropdownMenu/index.native.js.map +1 -1
- package/dist/cjs/ErrorBoundary/index.native.js.map +1 -1
- package/dist/cjs/Heading.native.js.map +1 -1
- package/dist/cjs/Meter/index.cjs +12 -5
- package/dist/cjs/Meter/index.native.js +13 -6
- package/dist/cjs/Meter/index.native.js.map +1 -1
- package/dist/cjs/Meter/meter.native.js.map +1 -1
- package/dist/cjs/Pagination.cjs +28 -9
- package/dist/cjs/Pagination.native.js +29 -10
- package/dist/cjs/Pagination.native.js.map +1 -1
- package/dist/cjs/ProgressSteps/index.native.js.map +1 -1
- package/dist/cjs/Quote/index.native.js.map +1 -1
- package/dist/cjs/Separator/index.native.js.map +1 -1
- package/dist/cjs/SheetModal/detents.native.js.map +1 -1
- package/dist/cjs/Skeleton/index.native.js.map +1 -1
- package/dist/cjs/SkipLink/index.native.js.map +1 -1
- package/dist/cjs/SortableList/SortableHandle.native.js.map +1 -1
- package/dist/cjs/SortableList/index.native.js.map +1 -1
- package/dist/cjs/SortableList/useSortableRows.native.js.map +1 -1
- package/dist/cjs/Tabs/index.cjs +145 -91
- package/dist/cjs/Tabs/index.native.js +187 -123
- package/dist/cjs/Tabs/index.native.js.map +1 -1
- package/dist/cjs/Text.native.js.map +1 -1
- package/dist/cjs/Toast/index.cjs +53 -2
- package/dist/cjs/Toast/index.native.js +55 -2
- package/dist/cjs/Toast/index.native.js.map +1 -1
- package/dist/cjs/Toast/store.native.js.map +1 -1
- package/dist/cjs/Tooltip/nativePress.native.js.map +1 -1
- package/dist/cjs/Tooltip/tooltipShared.native.js.map +1 -1
- package/dist/cjs/TreeSelect/index.native.js +1 -1
- package/dist/cjs/TreeSelect/index.native.js.map +1 -1
- package/dist/cjs/TreeSelect/treeSelectModel.native.js.map +1 -1
- package/dist/cjs/Video/PlayerChrome.native.js.map +1 -1
- package/dist/cjs/Video/VideoFrame.native.js.map +1 -1
- package/dist/cjs/Video/types.native.js.map +1 -1
- package/dist/cjs/Wheel/index.native.js.map +1 -1
- package/dist/cjs/Wizard/index.native.js +2 -2
- package/dist/cjs/Wizard/index.native.js.map +1 -1
- package/dist/cjs/actions/ActionBar.native.js.map +1 -1
- package/dist/cjs/actions/DestructiveAction.cjs +7 -13
- package/dist/cjs/actions/DestructiveAction.native.js +7 -15
- package/dist/cjs/actions/DestructiveAction.native.js.map +1 -1
- package/dist/cjs/actions/devWarn.native.js.map +1 -1
- package/dist/cjs/actions/index.native.js.map +1 -1
- package/dist/cjs/actions/severity.native.js.map +1 -1
- package/dist/cjs/charts/Axis.cjs +5 -0
- package/dist/cjs/charts/Axis.native.js +5 -0
- package/dist/cjs/charts/Axis.native.js.map +1 -1
- package/dist/cjs/charts/BarChart.cjs +71 -57
- package/dist/cjs/charts/BarChart.native.js +81 -67
- package/dist/cjs/charts/BarChart.native.js.map +1 -1
- package/dist/cjs/charts/ChartDataView.cjs +212 -0
- package/dist/cjs/charts/ChartDataView.native.js +224 -0
- package/dist/cjs/charts/ChartDataView.native.js.map +1 -0
- package/dist/cjs/charts/ChartSurface.cjs +5 -1
- package/dist/cjs/charts/ChartSurface.native.js +5 -1
- package/dist/cjs/charts/ChartSurface.native.js.map +1 -1
- package/dist/cjs/charts/LineChart.cjs +81 -67
- package/dist/cjs/charts/LineChart.native.js +94 -80
- package/dist/cjs/charts/LineChart.native.js.map +1 -1
- package/dist/cjs/charts/PieChart.cjs +98 -73
- package/dist/cjs/charts/PieChart.native.js +109 -84
- package/dist/cjs/charts/PieChart.native.js.map +1 -1
- package/dist/cjs/charts/Sparkline.cjs +10 -1
- package/dist/cjs/charts/Sparkline.native.js +10 -1
- package/dist/cjs/charts/Sparkline.native.js.map +1 -1
- package/dist/cjs/charts/accessibility.cjs +4 -0
- package/dist/cjs/charts/accessibility.native.js +7 -0
- package/dist/cjs/charts/accessibility.native.js.map +1 -1
- package/dist/cjs/charts/composeChart.native.js.map +1 -1
- package/dist/cjs/charts/index.cjs +3 -1
- package/dist/cjs/charts/index.native.js +2 -0
- package/dist/cjs/charts/index.native.js.map +1 -1
- package/dist/cjs/charts/math.cjs +16 -0
- package/dist/cjs/charts/math.native.js +18 -0
- package/dist/cjs/charts/math.native.js.map +1 -1
- package/dist/cjs/charts/series.cjs +49 -7
- package/dist/cjs/charts/series.native.js +53 -11
- package/dist/cjs/charts/series.native.js.map +1 -1
- package/dist/cjs/charts/svg.cjs +46 -3
- package/dist/cjs/charts/svg.native.js +46 -3
- package/dist/cjs/charts/svg.native.js.map +1 -1
- package/dist/cjs/charts/types.native.js.map +1 -1
- package/dist/cjs/charts/useChartTheme.native.js.map +1 -1
- package/dist/cjs/code/Code/index.native.js.map +1 -1
- package/dist/cjs/code/CodeBlock/index.cjs +6 -1
- package/dist/cjs/code/CodeBlock/index.native.js +12 -7
- package/dist/cjs/code/CodeBlock/index.native.js.map +1 -1
- package/dist/cjs/code/HighlightedCode/index.native.js.map +1 -1
- package/dist/cjs/code/Highlighter/index.native.js.map +1 -1
- package/dist/cjs/code/Pre/index.native.js.map +1 -1
- package/dist/cjs/code/index.native.js +5 -5
- package/dist/cjs/code/index.native.js.map +1 -1
- package/dist/cjs/componentColors.native.js.map +1 -1
- package/dist/cjs/feedback/ConfirmDialog.cjs +7 -21
- package/dist/cjs/feedback/ConfirmDialog.native.js +7 -22
- package/dist/cjs/feedback/ConfirmDialog.native.js.map +1 -1
- package/dist/cjs/feedback/NotifyHost.cjs +2 -1
- package/dist/cjs/feedback/NotifyHost.native.js +5 -4
- package/dist/cjs/feedback/NotifyHost.native.js.map +1 -1
- package/dist/cjs/feedback/copy.cjs +36 -4
- package/dist/cjs/feedback/copy.native.js +38 -4
- package/dist/cjs/feedback/copy.native.js.map +1 -1
- package/dist/cjs/feedback/index.cjs +1 -0
- package/dist/cjs/feedback/index.native.js +1 -0
- package/dist/cjs/feedback/index.native.js.map +1 -1
- package/dist/cjs/feedback/notify.cjs +1 -0
- package/dist/cjs/feedback/notify.native.js +1 -0
- package/dist/cjs/feedback/notify.native.js.map +1 -1
- package/dist/cjs/feedback/route.cjs +3 -0
- package/dist/cjs/feedback/route.native.js +3 -0
- package/dist/cjs/feedback/route.native.js.map +1 -1
- package/dist/cjs/feedback/store.cjs +6 -0
- package/dist/cjs/feedback/store.native.js +8 -0
- package/dist/cjs/feedback/store.native.js.map +1 -1
- package/dist/cjs/hooks/index.native.js +1 -1
- package/dist/cjs/hooks/index.native.js.map +1 -1
- package/dist/cjs/hooks/useClipboard.native.js.map +1 -1
- package/dist/cjs/hooks/useDocumentTitle.native.js.map +1 -1
- package/dist/cjs/icons/CheckRegular.native.js.map +1 -1
- package/dist/cjs/icons/MinusRegular.native.js.map +1 -1
- package/dist/cjs/icons/index.native.js.map +1 -1
- package/dist/cjs/icons/lucide.cjs +2 -1
- package/dist/cjs/icons/lucide.native.js +2 -1
- package/dist/cjs/icons/lucide.native.js.map +1 -1
- package/dist/cjs/icons/themed.native.js.map +1 -1
- package/dist/cjs/images/Image/ImageFrame.native.js +1 -1
- package/dist/cjs/images/Image/ImageFrame.native.js.map +1 -1
- package/dist/cjs/images/Image/index.native.js +1 -1
- package/dist/cjs/images/Image/shared.native.js +1 -1
- package/dist/cjs/images/Image/shared.native.js.map +1 -1
- package/dist/cjs/images/Image/types.native.js.map +1 -1
- package/dist/cjs/images/index.native.js.map +1 -1
- package/dist/cjs/index.native.js +29 -29
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/knobImmuneExports.cjs +0 -1
- package/dist/cjs/knobImmuneExports.native.js +0 -1
- package/dist/cjs/knobImmuneExports.native.js.map +1 -1
- package/dist/cjs/layouts/AsyncBoundary.native.js +2 -2
- package/dist/cjs/layouts/AsyncBoundary.native.js.map +1 -1
- package/dist/cjs/layouts/Debug/index.native.js.map +1 -1
- package/dist/cjs/layouts/EmptyState.native.js.map +1 -1
- package/dist/cjs/layouts/KeyboardAvoidingWrapper/behavior.native.js.map +1 -1
- package/dist/cjs/layouts/PageTemplates.native.js.map +1 -1
- package/dist/cjs/layouts/PaneScaffold.cjs +96 -41
- package/dist/cjs/layouts/PaneScaffold.native.js +97 -41
- package/dist/cjs/layouts/PaneScaffold.native.js.map +1 -1
- package/dist/cjs/layouts/SafeAreaWrapper/insets.native.js.map +1 -1
- package/dist/cjs/layouts/ViewSwitcher.native.js.map +1 -1
- package/dist/cjs/layouts/attachments.native.js +1 -1
- package/dist/cjs/layouts/attachments.native.js.map +1 -1
- package/dist/cjs/layouts/breadcrumbs.native.js.map +1 -1
- package/dist/cjs/layouts/index.cjs +2 -0
- package/dist/cjs/layouts/index.native.js +5 -3
- package/dist/cjs/layouts/index.native.js.map +1 -1
- package/dist/cjs/layouts/page.cjs +48 -7
- package/dist/cjs/layouts/page.native.js +50 -7
- package/dist/cjs/layouts/page.native.js.map +1 -1
- package/dist/cjs/layouts/pageHeadingScope.native.js.map +1 -1
- package/dist/cjs/layouts/sidebar.native.js.map +1 -1
- package/dist/cjs/layouts/tags.native.js +1 -1
- package/dist/cjs/layouts/tags.native.js.map +1 -1
- package/dist/cjs/layouts/timeline.native.js +2 -2
- package/dist/cjs/layouts/timeline.native.js.map +1 -1
- package/dist/cjs/layouts/toolbar.native.js.map +1 -1
- package/dist/cjs/shared/actionScan.native.js.map +1 -1
- package/dist/cjs/shared/i18n.native.js.map +1 -1
- package/dist/cjs/shared/t.native.js.map +1 -1
- package/dist/cjs/shared/textRidesText.native.js.map +1 -1
- package/dist/cjs/shared/useKeyboardInset.cjs +1 -19
- package/dist/cjs/shared/useKeyboardInset.native.js +3 -3
- package/dist/cjs/shared/useKeyboardInset.native.js.map +1 -1
- package/dist/cjs/shared/useReturnFocusOnClose.native.js.map +1 -1
- package/dist/cjs/surfaces.native.js +1 -1
- package/dist/cjs/surfaces.native.js.map +1 -1
- package/dist/cjs/tamagui.cjs +3 -2
- package/dist/cjs/tamagui.native.js +2 -1
- package/dist/cjs/tamagui.native.js.map +1 -1
- package/dist/cjs/testSetup.native.js.map +1 -1
- package/dist/cjs/utils/setTinted.native.js.map +1 -1
- package/dist/cjs/utils/unwrapText.native.js.map +1 -1
- package/dist/cjs/views/Calendar.native.js.map +1 -1
- package/dist/cjs/views/Dashboard.cjs +110 -17
- package/dist/cjs/views/Dashboard.native.js +152 -46
- package/dist/cjs/views/Dashboard.native.js.map +1 -1
- package/dist/cjs/views/Gantt.cjs +374 -91
- package/dist/cjs/views/Gantt.native.js +444 -95
- package/dist/cjs/views/Gantt.native.js.map +1 -1
- package/dist/cjs/views/ImageGrid.native.js +1 -1
- package/dist/cjs/views/ImageGrid.native.js.map +1 -1
- package/dist/cjs/views/List.native.js.map +1 -1
- package/dist/cjs/views/ReportBuilder.native.js +1 -1
- package/dist/cjs/views/ReportBuilder.native.js.map +1 -1
- package/dist/cjs/views/TreeView.native.js.map +1 -1
- package/dist/cjs/views/calendarMath.native.js.map +1 -1
- package/dist/cjs/views/ganttMath.cjs +91 -2
- package/dist/cjs/views/ganttMath.native.js +113 -3
- package/dist/cjs/views/ganttMath.native.js.map +1 -1
- package/dist/cjs/views/index.cjs +20 -1
- package/dist/cjs/views/index.native.js +21 -2
- package/dist/cjs/views/index.native.js.map +1 -1
- package/dist/cjs/views/kanbanDnd.native.js.map +1 -1
- package/dist/cjs/views/treeViewDnd.native.js.map +1 -1
- package/dist/cjs/views/treeViewLayout.native.js.map +1 -1
- package/dist/cjs/views/treeViewMotion.native.js.map +1 -1
- package/dist/esm/Accordion/index.mjs +4 -0
- package/dist/esm/Accordion/index.mjs.map +1 -1
- package/dist/esm/Accordion/index.native.js +4 -0
- package/dist/esm/Accordion/index.native.js.map +1 -1
- package/dist/esm/AnimateHeight/index.mjs +29 -2
- package/dist/esm/AnimateHeight/index.mjs.map +1 -1
- package/dist/esm/AnimateHeight/index.native.js +30 -2
- package/dist/esm/AnimateHeight/index.native.js.map +1 -1
- package/dist/esm/Avatar/getInitials.native.js.map +1 -1
- package/dist/esm/Avatar/index.native.js.map +1 -1
- package/dist/esm/Badge/index.native.js.map +1 -1
- package/dist/esm/Button.mjs.map +1 -1
- package/dist/esm/Button.native.js.map +1 -1
- package/dist/esm/Card.mjs +8 -2
- package/dist/esm/Card.mjs.map +1 -1
- package/dist/esm/Card.native.js +12 -2
- package/dist/esm/Card.native.js.map +1 -1
- package/dist/esm/CardFooter.mjs +1 -0
- package/dist/esm/CardFooter.mjs.map +1 -1
- package/dist/esm/CardFooter.native.js +1 -0
- package/dist/esm/CardFooter.native.js.map +1 -1
- package/dist/esm/Carousel/index.native.js.map +1 -1
- package/dist/esm/Chip/index.native.js.map +1 -1
- package/dist/esm/Collapsible.mjs +23 -0
- package/dist/esm/Collapsible.mjs.map +1 -0
- package/dist/esm/Collapsible.native.js +28 -0
- package/dist/esm/Collapsible.native.js.map +1 -0
- package/dist/esm/ContextMenu/index.native.js.map +1 -1
- package/dist/esm/CopyField/index.mjs +7 -2
- package/dist/esm/CopyField/index.mjs.map +1 -1
- package/dist/esm/CopyField/index.native.js +7 -2
- package/dist/esm/CopyField/index.native.js.map +1 -1
- package/dist/esm/DotIndicator/index.native.js.map +1 -1
- package/dist/esm/DropdownMenu/index.mjs +32 -2
- package/dist/esm/DropdownMenu/index.mjs.map +1 -1
- package/dist/esm/DropdownMenu/index.native.js +32 -2
- package/dist/esm/DropdownMenu/index.native.js.map +1 -1
- package/dist/esm/ErrorBoundary/index.native.js.map +1 -1
- package/dist/esm/Heading.native.js.map +1 -1
- package/dist/esm/Meter/index.mjs +12 -5
- package/dist/esm/Meter/index.mjs.map +1 -1
- package/dist/esm/Meter/index.native.js +12 -5
- package/dist/esm/Meter/index.native.js.map +1 -1
- package/dist/esm/Meter/meter.native.js.map +1 -1
- package/dist/esm/Pagination.mjs +28 -9
- package/dist/esm/Pagination.mjs.map +1 -1
- package/dist/esm/Pagination.native.js +28 -9
- package/dist/esm/Pagination.native.js.map +1 -1
- package/dist/esm/ProgressSteps/index.native.js.map +1 -1
- package/dist/esm/Quote/index.native.js.map +1 -1
- package/dist/esm/Separator/index.native.js.map +1 -1
- package/dist/esm/SheetModal/detents.native.js.map +1 -1
- package/dist/esm/Skeleton/index.native.js.map +1 -1
- package/dist/esm/SkipLink/index.native.js.map +1 -1
- package/dist/esm/SortableList/SortableHandle.native.js.map +1 -1
- package/dist/esm/SortableList/index.native.js.map +1 -1
- package/dist/esm/SortableList/useSortableRows.native.js.map +1 -1
- package/dist/esm/Tabs/index.mjs +145 -91
- package/dist/esm/Tabs/index.mjs.map +1 -1
- package/dist/esm/Tabs/index.native.js +187 -123
- package/dist/esm/Tabs/index.native.js.map +1 -1
- package/dist/esm/Text.native.js.map +1 -1
- package/dist/esm/Toast/index.mjs +52 -3
- package/dist/esm/Toast/index.mjs.map +1 -1
- package/dist/esm/Toast/index.native.js +54 -3
- package/dist/esm/Toast/index.native.js.map +1 -1
- package/dist/esm/Toast/store.native.js.map +1 -1
- package/dist/esm/Tooltip/nativePress.native.js.map +1 -1
- package/dist/esm/Tooltip/tooltipShared.native.js.map +1 -1
- package/dist/esm/TreeSelect/index.native.js.map +1 -1
- package/dist/esm/TreeSelect/treeSelectModel.native.js.map +1 -1
- package/dist/esm/Video/PlayerChrome.native.js.map +1 -1
- package/dist/esm/Video/VideoFrame.native.js.map +1 -1
- package/dist/esm/Video/types.native.js.map +1 -1
- package/dist/esm/Wheel/index.native.js.map +1 -1
- package/dist/esm/Wizard/index.native.js.map +1 -1
- package/dist/esm/actions/ActionBar.native.js.map +1 -1
- package/dist/esm/actions/DestructiveAction.mjs +8 -14
- package/dist/esm/actions/DestructiveAction.mjs.map +1 -1
- package/dist/esm/actions/DestructiveAction.native.js +8 -16
- package/dist/esm/actions/DestructiveAction.native.js.map +1 -1
- package/dist/esm/actions/devWarn.native.js.map +1 -1
- package/dist/esm/actions/index.native.js.map +1 -1
- package/dist/esm/actions/severity.native.js.map +1 -1
- package/dist/esm/charts/Axis.mjs +6 -1
- package/dist/esm/charts/Axis.mjs.map +1 -1
- package/dist/esm/charts/Axis.native.js +6 -1
- package/dist/esm/charts/Axis.native.js.map +1 -1
- package/dist/esm/charts/BarChart.mjs +72 -58
- package/dist/esm/charts/BarChart.mjs.map +1 -1
- package/dist/esm/charts/BarChart.native.js +82 -68
- package/dist/esm/charts/BarChart.native.js.map +1 -1
- package/dist/esm/charts/ChartDataView.mjs +185 -0
- package/dist/esm/charts/ChartDataView.mjs.map +1 -0
- package/dist/esm/charts/ChartDataView.native.js +194 -0
- package/dist/esm/charts/ChartDataView.native.js.map +1 -0
- package/dist/esm/charts/ChartSurface.mjs +5 -1
- package/dist/esm/charts/ChartSurface.mjs.map +1 -1
- package/dist/esm/charts/ChartSurface.native.js +5 -1
- package/dist/esm/charts/ChartSurface.native.js.map +1 -1
- package/dist/esm/charts/LineChart.mjs +82 -68
- package/dist/esm/charts/LineChart.mjs.map +1 -1
- package/dist/esm/charts/LineChart.native.js +95 -81
- package/dist/esm/charts/LineChart.native.js.map +1 -1
- package/dist/esm/charts/PieChart.mjs +100 -75
- package/dist/esm/charts/PieChart.mjs.map +1 -1
- package/dist/esm/charts/PieChart.native.js +111 -86
- package/dist/esm/charts/PieChart.native.js.map +1 -1
- package/dist/esm/charts/Sparkline.mjs +11 -2
- package/dist/esm/charts/Sparkline.mjs.map +1 -1
- package/dist/esm/charts/Sparkline.native.js +11 -2
- package/dist/esm/charts/Sparkline.native.js.map +1 -1
- package/dist/esm/charts/accessibility.mjs +4 -1
- package/dist/esm/charts/accessibility.mjs.map +1 -1
- package/dist/esm/charts/accessibility.native.js +7 -1
- package/dist/esm/charts/accessibility.native.js.map +1 -1
- package/dist/esm/charts/composeChart.native.js.map +1 -1
- package/dist/esm/charts/index.mjs +2 -1
- package/dist/esm/charts/index.mjs.map +1 -1
- package/dist/esm/charts/index.native.js +2 -1
- package/dist/esm/charts/index.native.js.map +1 -1
- package/dist/esm/charts/math.mjs +16 -1
- package/dist/esm/charts/math.mjs.map +1 -1
- package/dist/esm/charts/math.native.js +18 -1
- package/dist/esm/charts/math.native.js.map +1 -1
- package/dist/esm/charts/series.mjs +51 -9
- package/dist/esm/charts/series.mjs.map +1 -1
- package/dist/esm/charts/series.native.js +55 -13
- package/dist/esm/charts/series.native.js.map +1 -1
- package/dist/esm/charts/svg.mjs +40 -4
- package/dist/esm/charts/svg.mjs.map +1 -1
- package/dist/esm/charts/svg.native.js +40 -4
- package/dist/esm/charts/svg.native.js.map +1 -1
- package/dist/esm/charts/types.native.js.map +1 -1
- package/dist/esm/charts/useChartTheme.native.js.map +1 -1
- package/dist/esm/code/CodeBlock/index.mjs +7 -2
- package/dist/esm/code/CodeBlock/index.mjs.map +1 -1
- package/dist/esm/code/CodeBlock/index.native.js +7 -2
- package/dist/esm/code/CodeBlock/index.native.js.map +1 -1
- package/dist/esm/code/HighlightedCode/index.native.js.map +1 -1
- package/dist/esm/code/Highlighter/index.native.js.map +1 -1
- package/dist/esm/code/Pre/index.native.js.map +1 -1
- package/dist/esm/code/index.native.js.map +1 -1
- package/dist/esm/componentColors.native.js.map +1 -1
- package/dist/esm/feedback/ConfirmDialog.mjs +8 -22
- package/dist/esm/feedback/ConfirmDialog.mjs.map +1 -1
- package/dist/esm/feedback/ConfirmDialog.native.js +8 -23
- package/dist/esm/feedback/ConfirmDialog.native.js.map +1 -1
- package/dist/esm/feedback/NotifyHost.mjs +2 -1
- package/dist/esm/feedback/NotifyHost.mjs.map +1 -1
- package/dist/esm/feedback/NotifyHost.native.js +3 -2
- package/dist/esm/feedback/NotifyHost.native.js.map +1 -1
- package/dist/esm/feedback/copy.mjs +35 -4
- package/dist/esm/feedback/copy.mjs.map +1 -1
- package/dist/esm/feedback/copy.native.js +37 -4
- package/dist/esm/feedback/copy.native.js.map +1 -1
- package/dist/esm/feedback/index.mjs +2 -2
- package/dist/esm/feedback/index.mjs.map +1 -1
- package/dist/esm/feedback/index.native.js +2 -2
- package/dist/esm/feedback/index.native.js.map +1 -1
- package/dist/esm/feedback/notify.mjs +1 -0
- package/dist/esm/feedback/notify.mjs.map +1 -1
- package/dist/esm/feedback/notify.native.js +1 -0
- package/dist/esm/feedback/notify.native.js.map +1 -1
- package/dist/esm/feedback/route.mjs +3 -0
- package/dist/esm/feedback/route.mjs.map +1 -1
- package/dist/esm/feedback/route.native.js +3 -0
- package/dist/esm/feedback/route.native.js.map +1 -1
- package/dist/esm/feedback/store.mjs +6 -1
- package/dist/esm/feedback/store.mjs.map +1 -1
- package/dist/esm/feedback/store.native.js +8 -1
- package/dist/esm/feedback/store.native.js.map +1 -1
- package/dist/esm/hooks/index.native.js.map +1 -1
- package/dist/esm/hooks/useClipboard.native.js.map +1 -1
- package/dist/esm/hooks/useDocumentTitle.native.js.map +1 -1
- package/dist/esm/icons/CheckRegular.native.js.map +1 -1
- package/dist/esm/icons/MinusRegular.native.js.map +1 -1
- package/dist/esm/icons/index.native.js.map +1 -1
- package/dist/esm/icons/lucide.mjs +2 -2
- package/dist/esm/icons/lucide.mjs.map +1 -1
- package/dist/esm/icons/lucide.native.js +2 -2
- package/dist/esm/icons/lucide.native.js.map +1 -1
- package/dist/esm/icons/themed.native.js.map +1 -1
- package/dist/esm/images/Image/ImageFrame.native.js.map +1 -1
- package/dist/esm/images/Image/shared.native.js.map +1 -1
- package/dist/esm/images/Image/types.native.js.map +1 -1
- package/dist/esm/images/index.native.js.map +1 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/knobImmuneExports.mjs +0 -1
- package/dist/esm/knobImmuneExports.mjs.map +1 -1
- package/dist/esm/knobImmuneExports.native.js +0 -1
- package/dist/esm/knobImmuneExports.native.js.map +1 -1
- package/dist/esm/layouts/AsyncBoundary.native.js.map +1 -1
- package/dist/esm/layouts/Debug/index.native.js.map +1 -1
- package/dist/esm/layouts/EmptyState.native.js.map +1 -1
- package/dist/esm/layouts/KeyboardAvoidingWrapper/behavior.native.js.map +1 -1
- package/dist/esm/layouts/PageTemplates.native.js.map +1 -1
- package/dist/esm/layouts/PaneScaffold.mjs +97 -42
- package/dist/esm/layouts/PaneScaffold.mjs.map +1 -1
- package/dist/esm/layouts/PaneScaffold.native.js +98 -42
- package/dist/esm/layouts/PaneScaffold.native.js.map +1 -1
- package/dist/esm/layouts/SafeAreaWrapper/insets.native.js.map +1 -1
- package/dist/esm/layouts/ViewSwitcher.native.js.map +1 -1
- package/dist/esm/layouts/attachments.native.js.map +1 -1
- package/dist/esm/layouts/breadcrumbs.native.js.map +1 -1
- package/dist/esm/layouts/index.mjs +2 -1
- package/dist/esm/layouts/index.mjs.map +1 -1
- package/dist/esm/layouts/index.native.js +2 -1
- package/dist/esm/layouts/index.native.js.map +1 -1
- package/dist/esm/layouts/page.mjs +49 -8
- package/dist/esm/layouts/page.mjs.map +1 -1
- package/dist/esm/layouts/page.native.js +51 -8
- package/dist/esm/layouts/page.native.js.map +1 -1
- package/dist/esm/layouts/pageHeadingScope.native.js.map +1 -1
- package/dist/esm/layouts/sidebar.native.js.map +1 -1
- package/dist/esm/layouts/tags.native.js.map +1 -1
- package/dist/esm/layouts/timeline.native.js.map +1 -1
- package/dist/esm/layouts/toolbar.native.js.map +1 -1
- package/dist/esm/shared/actionScan.native.js.map +1 -1
- package/dist/esm/shared/i18n.native.js.map +1 -1
- package/dist/esm/shared/t.native.js.map +1 -1
- package/dist/esm/shared/textRidesText.native.js.map +1 -1
- package/dist/esm/shared/useKeyboardInset.mjs +1 -19
- package/dist/esm/shared/useKeyboardInset.mjs.map +1 -1
- package/dist/esm/shared/useKeyboardInset.native.js.map +1 -1
- package/dist/esm/shared/useReturnFocusOnClose.native.js.map +1 -1
- package/dist/esm/surfaces.native.js.map +1 -1
- package/dist/esm/tamagui.mjs +2 -1
- package/dist/esm/tamagui.mjs.map +1 -1
- package/dist/esm/tamagui.native.js +2 -1
- package/dist/esm/tamagui.native.js.map +1 -1
- package/dist/esm/testSetup.native.js.map +1 -1
- package/dist/esm/utils/setTinted.native.js.map +1 -1
- package/dist/esm/utils/unwrapText.native.js.map +1 -1
- package/dist/esm/views/Calendar.native.js.map +1 -1
- package/dist/esm/views/Dashboard.mjs +112 -19
- package/dist/esm/views/Dashboard.mjs.map +1 -1
- package/dist/esm/views/Dashboard.native.js +153 -47
- package/dist/esm/views/Dashboard.native.js.map +1 -1
- package/dist/esm/views/Gantt.mjs +376 -93
- package/dist/esm/views/Gantt.mjs.map +1 -1
- package/dist/esm/views/Gantt.native.js +445 -96
- package/dist/esm/views/Gantt.native.js.map +1 -1
- package/dist/esm/views/ImageGrid.native.js.map +1 -1
- package/dist/esm/views/List.native.js.map +1 -1
- package/dist/esm/views/ReportBuilder.native.js.map +1 -1
- package/dist/esm/views/TreeView.native.js.map +1 -1
- package/dist/esm/views/calendarMath.native.js.map +1 -1
- package/dist/esm/views/ganttMath.mjs +84 -3
- package/dist/esm/views/ganttMath.mjs.map +1 -1
- package/dist/esm/views/ganttMath.native.js +106 -4
- package/dist/esm/views/ganttMath.native.js.map +1 -1
- package/dist/esm/views/index.mjs +2 -2
- package/dist/esm/views/index.mjs.map +1 -1
- package/dist/esm/views/index.native.js +2 -2
- package/dist/esm/views/index.native.js.map +1 -1
- package/dist/esm/views/kanbanDnd.native.js.map +1 -1
- package/dist/esm/views/treeViewDnd.native.js.map +1 -1
- package/dist/esm/views/treeViewLayout.native.js.map +1 -1
- package/dist/esm/views/treeViewMotion.native.js.map +1 -1
- package/dist/jsx/Accordion/index.mjs +4 -0
- package/dist/jsx/Accordion/index.mjs.map +1 -1
- package/dist/jsx/Accordion/index.native.js +4 -0
- package/dist/jsx/Accordion/index.native.js.map +1 -1
- package/dist/jsx/AnimateHeight/index.mjs +29 -2
- package/dist/jsx/AnimateHeight/index.mjs.map +1 -1
- package/dist/jsx/AnimateHeight/index.native.js +30 -2
- package/dist/jsx/AnimateHeight/index.native.js.map +1 -1
- package/dist/jsx/Button.mjs.map +1 -1
- package/dist/jsx/Button.native.js.map +1 -1
- package/dist/jsx/Card.mjs +8 -2
- package/dist/jsx/Card.mjs.map +1 -1
- package/dist/jsx/Card.native.js +11 -1
- package/dist/jsx/Card.native.js.map +1 -1
- package/dist/jsx/CardFooter.mjs +1 -0
- package/dist/jsx/CardFooter.mjs.map +1 -1
- package/dist/jsx/CardFooter.native.js +1 -0
- package/dist/jsx/CardFooter.native.js.map +1 -1
- package/dist/jsx/Collapsible.mjs +23 -0
- package/dist/jsx/Collapsible.mjs.map +1 -0
- package/dist/jsx/Collapsible.native.js +56 -0
- package/dist/jsx/Collapsible.native.js.map +1 -0
- package/dist/jsx/CopyField/index.mjs +7 -2
- package/dist/jsx/CopyField/index.mjs.map +1 -1
- package/dist/jsx/CopyField/index.native.js +6 -1
- package/dist/jsx/CopyField/index.native.js.map +1 -1
- package/dist/jsx/DropdownMenu/index.mjs +32 -2
- package/dist/jsx/DropdownMenu/index.mjs.map +1 -1
- package/dist/jsx/DropdownMenu/index.native.js +31 -1
- package/dist/jsx/DropdownMenu/index.native.js.map +1 -1
- package/dist/jsx/Meter/index.mjs +12 -5
- package/dist/jsx/Meter/index.mjs.map +1 -1
- package/dist/jsx/Meter/index.native.js +12 -5
- package/dist/jsx/Meter/index.native.js.map +1 -1
- package/dist/jsx/Pagination.mjs +28 -9
- package/dist/jsx/Pagination.mjs.map +1 -1
- package/dist/jsx/Pagination.native.js +28 -9
- package/dist/jsx/Pagination.native.js.map +1 -1
- package/dist/jsx/Tabs/index.mjs +145 -91
- package/dist/jsx/Tabs/index.mjs.map +1 -1
- package/dist/jsx/Tabs/index.native.js +187 -123
- package/dist/jsx/Tabs/index.native.js.map +1 -1
- package/dist/jsx/Toast/index.mjs +52 -3
- package/dist/jsx/Toast/index.mjs.map +1 -1
- package/dist/jsx/Toast/index.native.js +55 -2
- package/dist/jsx/Toast/index.native.js.map +1 -1
- package/dist/jsx/actions/DestructiveAction.mjs +8 -14
- package/dist/jsx/actions/DestructiveAction.mjs.map +1 -1
- package/dist/jsx/actions/DestructiveAction.native.js +7 -15
- package/dist/jsx/actions/DestructiveAction.native.js.map +1 -1
- package/dist/jsx/charts/Axis.mjs +6 -1
- package/dist/jsx/charts/Axis.mjs.map +1 -1
- package/dist/jsx/charts/Axis.native.js +5 -0
- package/dist/jsx/charts/Axis.native.js.map +1 -1
- package/dist/jsx/charts/BarChart.mjs +72 -58
- package/dist/jsx/charts/BarChart.mjs.map +1 -1
- package/dist/jsx/charts/BarChart.native.js +81 -67
- package/dist/jsx/charts/BarChart.native.js.map +1 -1
- package/dist/jsx/charts/ChartDataView.mjs +185 -0
- package/dist/jsx/charts/ChartDataView.mjs.map +1 -0
- package/dist/jsx/charts/ChartDataView.native.js +224 -0
- package/dist/jsx/charts/ChartDataView.native.js.map +1 -0
- package/dist/jsx/charts/ChartSurface.mjs +5 -1
- package/dist/jsx/charts/ChartSurface.mjs.map +1 -1
- package/dist/jsx/charts/ChartSurface.native.js +5 -1
- package/dist/jsx/charts/ChartSurface.native.js.map +1 -1
- package/dist/jsx/charts/LineChart.mjs +82 -68
- package/dist/jsx/charts/LineChart.mjs.map +1 -1
- package/dist/jsx/charts/LineChart.native.js +94 -80
- package/dist/jsx/charts/LineChart.native.js.map +1 -1
- package/dist/jsx/charts/PieChart.mjs +100 -75
- package/dist/jsx/charts/PieChart.mjs.map +1 -1
- package/dist/jsx/charts/PieChart.native.js +109 -84
- package/dist/jsx/charts/PieChart.native.js.map +1 -1
- package/dist/jsx/charts/Sparkline.mjs +11 -2
- package/dist/jsx/charts/Sparkline.mjs.map +1 -1
- package/dist/jsx/charts/Sparkline.native.js +10 -1
- package/dist/jsx/charts/Sparkline.native.js.map +1 -1
- package/dist/jsx/charts/accessibility.mjs +4 -1
- package/dist/jsx/charts/accessibility.mjs.map +1 -1
- package/dist/jsx/charts/accessibility.native.js +7 -0
- package/dist/jsx/charts/accessibility.native.js.map +1 -1
- package/dist/jsx/charts/index.mjs +2 -1
- package/dist/jsx/charts/index.mjs.map +1 -1
- package/dist/jsx/charts/index.native.js +2 -0
- package/dist/jsx/charts/index.native.js.map +1 -1
- package/dist/jsx/charts/math.mjs +16 -1
- package/dist/jsx/charts/math.mjs.map +1 -1
- package/dist/jsx/charts/math.native.js +18 -0
- package/dist/jsx/charts/math.native.js.map +1 -1
- package/dist/jsx/charts/series.mjs +51 -9
- package/dist/jsx/charts/series.mjs.map +1 -1
- package/dist/jsx/charts/series.native.js +53 -11
- package/dist/jsx/charts/series.native.js.map +1 -1
- package/dist/jsx/charts/svg.mjs +40 -4
- package/dist/jsx/charts/svg.mjs.map +1 -1
- package/dist/jsx/charts/svg.native.js +46 -3
- package/dist/jsx/charts/svg.native.js.map +1 -1
- package/dist/jsx/code/CodeBlock/index.mjs +7 -2
- package/dist/jsx/code/CodeBlock/index.mjs.map +1 -1
- package/dist/jsx/code/CodeBlock/index.native.js +6 -1
- package/dist/jsx/code/CodeBlock/index.native.js.map +1 -1
- package/dist/jsx/feedback/ConfirmDialog.mjs +8 -22
- package/dist/jsx/feedback/ConfirmDialog.mjs.map +1 -1
- package/dist/jsx/feedback/ConfirmDialog.native.js +7 -22
- package/dist/jsx/feedback/ConfirmDialog.native.js.map +1 -1
- package/dist/jsx/feedback/NotifyHost.mjs +2 -1
- package/dist/jsx/feedback/NotifyHost.mjs.map +1 -1
- package/dist/jsx/feedback/NotifyHost.native.js +3 -2
- package/dist/jsx/feedback/NotifyHost.native.js.map +1 -1
- package/dist/jsx/feedback/copy.mjs +35 -4
- package/dist/jsx/feedback/copy.mjs.map +1 -1
- package/dist/jsx/feedback/copy.native.js +38 -4
- package/dist/jsx/feedback/copy.native.js.map +1 -1
- package/dist/jsx/feedback/index.mjs +2 -2
- package/dist/jsx/feedback/index.mjs.map +1 -1
- package/dist/jsx/feedback/index.native.js +1 -0
- package/dist/jsx/feedback/index.native.js.map +1 -1
- package/dist/jsx/feedback/notify.mjs +1 -0
- package/dist/jsx/feedback/notify.mjs.map +1 -1
- package/dist/jsx/feedback/notify.native.js +1 -0
- package/dist/jsx/feedback/notify.native.js.map +1 -1
- package/dist/jsx/feedback/route.mjs +3 -0
- package/dist/jsx/feedback/route.mjs.map +1 -1
- package/dist/jsx/feedback/route.native.js +3 -0
- package/dist/jsx/feedback/route.native.js.map +1 -1
- package/dist/jsx/feedback/store.mjs +6 -1
- package/dist/jsx/feedback/store.mjs.map +1 -1
- package/dist/jsx/feedback/store.native.js +8 -0
- package/dist/jsx/feedback/store.native.js.map +1 -1
- package/dist/jsx/icons/lucide.mjs +2 -2
- package/dist/jsx/icons/lucide.mjs.map +1 -1
- package/dist/jsx/icons/lucide.native.js +2 -1
- package/dist/jsx/knobImmuneExports.mjs +0 -1
- package/dist/jsx/knobImmuneExports.mjs.map +1 -1
- package/dist/jsx/knobImmuneExports.native.js +0 -1
- package/dist/jsx/knobImmuneExports.native.js.map +1 -1
- package/dist/jsx/layouts/PaneScaffold.mjs +97 -42
- package/dist/jsx/layouts/PaneScaffold.mjs.map +1 -1
- package/dist/jsx/layouts/PaneScaffold.native.js +97 -41
- package/dist/jsx/layouts/PaneScaffold.native.js.map +1 -1
- package/dist/jsx/layouts/index.mjs +2 -1
- package/dist/jsx/layouts/index.mjs.map +1 -1
- package/dist/jsx/layouts/index.native.js +2 -0
- package/dist/jsx/layouts/index.native.js.map +1 -1
- package/dist/jsx/layouts/page.mjs +49 -8
- package/dist/jsx/layouts/page.mjs.map +1 -1
- package/dist/jsx/layouts/page.native.js +50 -7
- package/dist/jsx/layouts/page.native.js.map +1 -1
- package/dist/jsx/shared/useKeyboardInset.mjs +1 -19
- package/dist/jsx/shared/useKeyboardInset.mjs.map +1 -1
- package/dist/jsx/shared/useKeyboardInset.native.js +3 -3
- package/dist/jsx/shared/useKeyboardInset.native.js.map +1 -1
- package/dist/jsx/tamagui.mjs +2 -1
- package/dist/jsx/tamagui.mjs.map +1 -1
- package/dist/jsx/tamagui.native.js +2 -1
- package/dist/jsx/tamagui.native.js.map +1 -1
- package/dist/jsx/views/Dashboard.mjs +112 -19
- package/dist/jsx/views/Dashboard.mjs.map +1 -1
- package/dist/jsx/views/Dashboard.native.js +151 -45
- package/dist/jsx/views/Dashboard.native.js.map +1 -1
- package/dist/jsx/views/Gantt.mjs +376 -93
- package/dist/jsx/views/Gantt.mjs.map +1 -1
- package/dist/jsx/views/Gantt.native.js +443 -94
- package/dist/jsx/views/Gantt.native.js.map +1 -1
- package/dist/jsx/views/ganttMath.mjs +84 -3
- package/dist/jsx/views/ganttMath.mjs.map +1 -1
- package/dist/jsx/views/ganttMath.native.js +113 -3
- package/dist/jsx/views/ganttMath.native.js.map +1 -1
- package/dist/jsx/views/index.mjs +2 -2
- package/dist/jsx/views/index.mjs.map +1 -1
- package/dist/jsx/views/index.native.js +20 -1
- package/dist/jsx/views/index.native.js.map +1 -1
- package/package.json +11 -9
- package/src/Accordion/index.tsx +7 -1
- package/src/AnimateHeight/AnimateHeight.native.spec.tsx +51 -0
- package/src/AnimateHeight/index.tsx +30 -5
- package/src/Button.tsx +10 -2
- package/src/Card.spec.tsx +76 -3
- package/src/Card.stories.tsx +1 -1
- package/src/Card.tsx +13 -1
- package/src/CardFooter.stories.tsx +3 -7
- package/src/CardFooter.tsx +3 -1
- package/src/CardHeader.stories.tsx +1 -3
- package/src/Collapsible.stories.tsx +2 -2
- package/src/Collapsible.tsx +23 -0
- package/src/CopyField/CopyField.spec.tsx +66 -1
- package/src/CopyField/index.tsx +4 -3
- package/src/DropdownMenu/DropdownMenu.spec.tsx +112 -1
- package/src/DropdownMenu/DropdownMenu.stories.tsx +1 -3
- package/src/DropdownMenu/index.tsx +67 -6
- package/src/LinearGradient.stories.tsx +2 -2
- package/src/Meter/Meter.spec.tsx +59 -2
- package/src/Meter/Meter.stories.tsx +38 -0
- package/src/Meter/index.tsx +9 -4
- package/src/Pagination.simple.spec.tsx +23 -0
- package/src/Pagination.stories.tsx +8 -0
- package/src/Pagination.tsx +27 -10
- package/src/Panel.stories.tsx +1 -1
- package/src/SortableList/SortableList.spec.tsx +3 -3
- package/src/Tabs/Tabs.bandColor.spec.tsx +23 -0
- package/src/Tabs/Tabs.native.spec.tsx +35 -0
- package/src/Tabs/Tabs.spec.tsx +91 -1
- package/src/Tabs/Tabs.stories.tsx +36 -1
- package/src/Tabs/index.tsx +272 -187
- package/src/Toast/Toast.spec.tsx +56 -1
- package/src/Toast/index.tsx +68 -3
- package/src/Unspaced.stories.tsx +2 -2
- package/src/VisuallyHidden.stories.tsx +2 -2
- package/src/actions/DestructiveAction.spec.tsx +19 -3
- package/src/actions/DestructiveAction.tsx +9 -14
- package/src/charts/Axis.tsx +6 -1
- package/src/charts/BarChart.tsx +82 -67
- package/src/charts/ChartDataView.spec.tsx +104 -0
- package/src/charts/ChartDataView.tsx +158 -0
- package/src/charts/ChartSurface.tsx +7 -2
- package/src/charts/Charts.stories.tsx +213 -9
- package/src/charts/LineChart.tsx +90 -75
- package/src/charts/PieChart.knobs.spec.tsx +25 -0
- package/src/charts/PieChart.tsx +51 -9
- package/src/charts/Sparkline.tsx +25 -3
- package/src/charts/accessibility.ts +8 -0
- package/src/charts/charts.spec.tsx +77 -3
- package/src/charts/index.ts +2 -0
- package/src/charts/math.spec.ts +19 -0
- package/src/charts/math.ts +36 -0
- package/src/charts/series.tsx +101 -21
- package/src/charts/svg.spec.ts +28 -0
- package/src/charts/svg.ts +56 -2
- package/src/code/CodeBlock/CodeBlock.copy.spec.tsx +23 -0
- package/src/code/CodeBlock/index.tsx +4 -3
- package/src/disclosureForm.spec.tsx +57 -0
- package/src/disclosureNativeProps.spec.tsx +35 -0
- package/src/feedback/ConfirmDialog.nativeFocus.spec.tsx +52 -0
- package/src/feedback/ConfirmDialog.spec.tsx +20 -0
- package/src/feedback/ConfirmDialog.tsx +9 -15
- package/src/feedback/NotifyHost.tsx +11 -2
- package/src/feedback/copy.ts +36 -4
- package/src/feedback/index.ts +1 -0
- package/src/feedback/notify.spec.ts +15 -1
- package/src/feedback/notify.ts +1 -0
- package/src/feedback/route.ts +4 -0
- package/src/feedback/store.ts +7 -0
- package/src/icons/lucide.ts +1 -1
- package/src/images/SvgUri/index.native.ts +11 -3
- package/src/knobImmuneExports.ts +0 -2
- package/src/layouts/EmptyState.stories.tsx +2 -2
- package/src/layouts/Page.weight.spec.tsx +75 -0
- package/src/layouts/PageHeader.stories.tsx +4 -4
- package/src/layouts/PageTemplates.stories.tsx +2 -2
- package/src/layouts/PaneScaffold.spec.tsx +144 -4
- package/src/layouts/PaneScaffold.stories.tsx +58 -2
- package/src/layouts/PaneScaffold.tsx +156 -58
- package/src/layouts/ScreenToolbar.stories.tsx +6 -23
- package/src/layouts/index.tsx +11 -0
- package/src/layouts/layouts.spec.tsx +51 -0
- package/src/layouts/page.designLaw.spec.tsx +25 -0
- package/src/layouts/page.tsx +46 -9
- package/src/primitives.spec.tsx +19 -4
- package/src/shared/useKeyboardInset.native.ts +43 -0
- package/src/shared/useKeyboardInset.ts +2 -41
- package/src/tamagui.spec.ts +63 -0
- package/src/tamagui.ts +3 -1
- package/src/views/Dashboard.stories.tsx +38 -1
- package/src/views/Dashboard.tsx +119 -21
- package/src/views/Gantt.scroll.spec.tsx +120 -0
- package/src/views/Gantt.spec.tsx +376 -0
- package/src/views/Gantt.stories.tsx +75 -2
- package/src/views/Gantt.tsx +564 -96
- package/src/views/Kanban.spec.tsx +11 -0
- package/src/views/ganttMath.ts +142 -4
- package/src/views/index.ts +44 -1
- package/src/views/views.spec.tsx +39 -0
- package/types/Accordion/index.d.ts +2 -0
- package/types/Accordion/index.d.ts.map +1 -1
- package/types/AnimateHeight/index.d.ts +3 -4
- package/types/AnimateHeight/index.d.ts.map +1 -1
- package/types/Button.d.ts +12 -2
- package/types/Button.d.ts.map +1 -1
- package/types/Card.d.ts.map +1 -1
- package/types/CardFooter.d.ts +2 -1
- package/types/CardFooter.d.ts.map +1 -1
- package/types/Collapsible.d.ts +19 -0
- package/types/Collapsible.d.ts.map +1 -0
- package/types/CopyField/index.d.ts.map +1 -1
- package/types/DropdownMenu/index.d.ts +22 -0
- package/types/DropdownMenu/index.d.ts.map +1 -1
- package/types/Meter/index.d.ts.map +1 -1
- package/types/Pagination.d.ts +1 -1
- package/types/Pagination.d.ts.map +1 -1
- package/types/Tabs/index.d.ts +7 -3
- package/types/Tabs/index.d.ts.map +1 -1
- package/types/Toast/index.d.ts +16 -0
- package/types/Toast/index.d.ts.map +1 -1
- package/types/actions/DestructiveAction.d.ts.map +1 -1
- package/types/charts/Axis.d.ts.map +1 -1
- package/types/charts/BarChart.d.ts.map +1 -1
- package/types/charts/ChartDataView.d.ts +22 -0
- package/types/charts/ChartDataView.d.ts.map +1 -0
- package/types/charts/ChartSurface.d.ts +4 -1
- package/types/charts/ChartSurface.d.ts.map +1 -1
- package/types/charts/LineChart.d.ts.map +1 -1
- package/types/charts/PieChart.d.ts +1 -1
- package/types/charts/PieChart.d.ts.map +1 -1
- package/types/charts/Sparkline.d.ts +3 -1
- package/types/charts/Sparkline.d.ts.map +1 -1
- package/types/charts/accessibility.d.ts +3 -0
- package/types/charts/accessibility.d.ts.map +1 -1
- package/types/charts/index.d.ts +1 -0
- package/types/charts/index.d.ts.map +1 -1
- package/types/charts/math.d.ts +12 -0
- package/types/charts/math.d.ts.map +1 -1
- package/types/charts/series.d.ts +1 -1
- package/types/charts/series.d.ts.map +1 -1
- package/types/charts/svg.d.ts +18 -2
- package/types/charts/svg.d.ts.map +1 -1
- package/types/code/CodeBlock/index.d.ts.map +1 -1
- package/types/feedback/ConfirmDialog.d.ts.map +1 -1
- package/types/feedback/NotifyHost.d.ts +3 -1
- package/types/feedback/NotifyHost.d.ts.map +1 -1
- package/types/feedback/copy.d.ts +12 -2
- package/types/feedback/copy.d.ts.map +1 -1
- package/types/feedback/index.d.ts +1 -1
- package/types/feedback/index.d.ts.map +1 -1
- package/types/feedback/notify.d.ts.map +1 -1
- package/types/feedback/route.d.ts +3 -0
- package/types/feedback/route.d.ts.map +1 -1
- package/types/feedback/store.d.ts +2 -0
- package/types/feedback/store.d.ts.map +1 -1
- package/types/icons/lucide.d.ts +1 -1
- package/types/icons/lucide.d.ts.map +1 -1
- package/types/images/SvgUri/index.native.d.ts +4 -3
- package/types/images/SvgUri/index.native.d.ts.map +1 -1
- package/types/knobImmuneExports.d.ts.map +1 -1
- package/types/layouts/PaneScaffold.d.ts +27 -5
- package/types/layouts/PaneScaffold.d.ts.map +1 -1
- package/types/layouts/index.d.ts +1 -0
- package/types/layouts/index.d.ts.map +1 -1
- package/types/layouts/page.d.ts +10 -5
- package/types/layouts/page.d.ts.map +1 -1
- package/types/shared/useKeyboardInset.d.ts +1 -14
- package/types/shared/useKeyboardInset.d.ts.map +1 -1
- package/types/shared/useKeyboardInset.native.d.ts +16 -0
- package/types/shared/useKeyboardInset.native.d.ts.map +1 -0
- package/types/tamagui.d.ts +2 -1
- package/types/tamagui.d.ts.map +1 -1
- package/types/views/Dashboard.d.ts.map +1 -1
- package/types/views/Gantt.d.ts +132 -13
- package/types/views/Gantt.d.ts.map +1 -1
- package/types/views/ganttMath.d.ts +73 -0
- package/types/views/ganttMath.d.ts.map +1 -1
- package/types/views/index.d.ts +2 -2
- package/types/views/index.d.ts.map +1 -1
package/src/charts/PieChart.tsx
CHANGED
|
@@ -2,11 +2,13 @@ import { useResolvedKnobs } from "@multiplatform.one/theme";
|
|
|
2
2
|
import { useTranslation } from "../shared/i18n";
|
|
3
3
|
import { Text, XStack, YStack, type YStackProps } from "tamagui";
|
|
4
4
|
import { componentColors } from "../componentColors";
|
|
5
|
+
import { ChartDataFrame } from "./ChartDataView";
|
|
5
6
|
import { ChartSurface } from "./ChartSurface";
|
|
6
|
-
import { describeChart, describeDatum } from "./accessibility";
|
|
7
|
+
import { chartDatumText, describeChart, describeDatum } from "./accessibility";
|
|
7
8
|
import { resolveSeriesFills } from "./composeChart";
|
|
8
|
-
import { formatChartValue } from "./math";
|
|
9
|
+
import { formatChartValue, pieSlices, canMaskPieSlices } from "./math";
|
|
9
10
|
import { PieSeries } from "./series";
|
|
11
|
+
import { chartDatumTextProps, chartWebProps } from "./svg";
|
|
10
12
|
import type { ChartDatum, ChartDatumEvents } from "./types";
|
|
11
13
|
import { useChartTheme } from "./useChartTheme";
|
|
12
14
|
|
|
@@ -21,7 +23,7 @@ export interface PieChartProps
|
|
|
21
23
|
* innerRadius) — the card surface shows through on every platform.
|
|
22
24
|
*/
|
|
23
25
|
donut?: boolean | number;
|
|
24
|
-
/**
|
|
26
|
+
/** Explicit radians between slices. Omit for the default boundary mask. */
|
|
25
27
|
padAngle?: number;
|
|
26
28
|
/** Explicit slice colors (data values — pass through untouched). */
|
|
27
29
|
colors?: string[];
|
|
@@ -51,7 +53,7 @@ export function PieChart({
|
|
|
51
53
|
data,
|
|
52
54
|
height = 200,
|
|
53
55
|
donut = false,
|
|
54
|
-
padAngle
|
|
56
|
+
padAngle,
|
|
55
57
|
colors,
|
|
56
58
|
showLegend = true,
|
|
57
59
|
valueFormatter,
|
|
@@ -81,7 +83,7 @@ export function PieChart({
|
|
|
81
83
|
const innerRatio =
|
|
82
84
|
donut === false ? 0 : donut === true ? DEFAULT_DONUT_RATIO : Math.min(Math.max(donut, 0), 0.9);
|
|
83
85
|
|
|
84
|
-
|
|
86
|
+
const chart = (
|
|
85
87
|
// LC-10: `flexShrink` + `minWidth 0` let a row parent (e.g. Card.Footer)
|
|
86
88
|
// constrain the chart below its intrinsic width — the wrap then stacks
|
|
87
89
|
// the legend under the pie instead of painting past the frame.
|
|
@@ -91,10 +93,25 @@ export function PieChart({
|
|
|
91
93
|
flexShrink={1}
|
|
92
94
|
minWidth={0}
|
|
93
95
|
{...knobProps.gap}
|
|
96
|
+
{...chartWebProps({ "data-mpo-chart-owner": "true" })}
|
|
94
97
|
{...stackProps}
|
|
95
98
|
>
|
|
96
99
|
<YStack width={height} height={height}>
|
|
97
|
-
<ChartSurface
|
|
100
|
+
<ChartSurface
|
|
101
|
+
label={ariaLabel}
|
|
102
|
+
proof={{
|
|
103
|
+
kind: innerRatio > 0 ? "donut" : "pie",
|
|
104
|
+
separated:
|
|
105
|
+
padAngle === undefined
|
|
106
|
+
? canMaskPieSlices(pieSlices(data), (height / 2) * innerRatio, height / 2)
|
|
107
|
+
: padAngle > 0,
|
|
108
|
+
datumText: showLegend,
|
|
109
|
+
datumValues: chartDatumText(data, valueFormatter),
|
|
110
|
+
datumCount: data.length,
|
|
111
|
+
}}
|
|
112
|
+
height={height}
|
|
113
|
+
width={height}
|
|
114
|
+
>
|
|
98
115
|
{(size) => {
|
|
99
116
|
const outerRadius = Math.min(size.width, size.height) / 2;
|
|
100
117
|
return (
|
|
@@ -129,7 +146,13 @@ export function PieChart({
|
|
|
129
146
|
{...{ "data-pie-legend": "true" }}
|
|
130
147
|
>
|
|
131
148
|
{data.map((datum, index) => (
|
|
132
|
-
<XStack
|
|
149
|
+
<XStack
|
|
150
|
+
key={`${datum.label}-${index}`}
|
|
151
|
+
{...chartDatumTextProps(index)}
|
|
152
|
+
gap="$2"
|
|
153
|
+
alignItems="center"
|
|
154
|
+
minWidth={0}
|
|
155
|
+
>
|
|
133
156
|
{/* Legend keys are chart CHROME, not marks: the swatch follows
|
|
134
157
|
the radius knob and goes square in the `none` world (Axiom 3
|
|
135
158
|
NULL). The pinned $2 arc was knob-dead (D-09 / LC-60). */}
|
|
@@ -142,10 +165,22 @@ export function PieChart({
|
|
|
142
165
|
/>
|
|
143
166
|
{/* The label yields (truncates) before the value — values are
|
|
144
167
|
data and never truncate (Axiom 11). */}
|
|
145
|
-
<Text
|
|
168
|
+
<Text
|
|
169
|
+
{...chartWebProps({ "data-mpo-chart-datum-label": "true" })}
|
|
170
|
+
{...knobProps.body}
|
|
171
|
+
fontSize="$2"
|
|
172
|
+
color={componentColors.text.muted}
|
|
173
|
+
flex={1}
|
|
174
|
+
numberOfLines={1}
|
|
175
|
+
>
|
|
146
176
|
{datum.label}
|
|
147
177
|
</Text>
|
|
148
|
-
<Text
|
|
178
|
+
<Text
|
|
179
|
+
{...chartWebProps({ "data-mpo-chart-datum-value": "true" })}
|
|
180
|
+
{...knobProps.body}
|
|
181
|
+
fontSize="$2"
|
|
182
|
+
flexShrink={0}
|
|
183
|
+
>
|
|
149
184
|
{format(datum.value)}
|
|
150
185
|
</Text>
|
|
151
186
|
</XStack>
|
|
@@ -154,4 +189,11 @@ export function PieChart({
|
|
|
154
189
|
) : null}
|
|
155
190
|
</XStack>
|
|
156
191
|
);
|
|
192
|
+
return showLegend ? (
|
|
193
|
+
chart
|
|
194
|
+
) : (
|
|
195
|
+
<ChartDataFrame data={data} title={title} valueFormatter={valueFormatter}>
|
|
196
|
+
{chart}
|
|
197
|
+
</ChartDataFrame>
|
|
198
|
+
);
|
|
157
199
|
}
|
package/src/charts/Sparkline.tsx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useTranslation } from "../shared/i18n";
|
|
2
2
|
import type { YStackProps } from "tamagui";
|
|
3
3
|
import { ChartSurface } from "./ChartSurface";
|
|
4
|
-
import { describeChart } from "./accessibility";
|
|
4
|
+
import { chartDatumText, describeChart } from "./accessibility";
|
|
5
5
|
import { createLinearScale, createPointScale, valueDomain } from "./math";
|
|
6
6
|
import { AreaSeries, LineSeries } from "./series";
|
|
7
7
|
import type { ChartCurve, ChartDatum } from "./types";
|
|
@@ -24,6 +24,8 @@ export interface SparklineProps extends Omit<YStackProps, "children" | "width" |
|
|
|
24
24
|
title?: string;
|
|
25
25
|
/** Override the generated accessible summary. */
|
|
26
26
|
label?: string;
|
|
27
|
+
/** Format spoken and complete data-view values consistently. */
|
|
28
|
+
valueFormatter?: (value: number) => string;
|
|
27
29
|
}
|
|
28
30
|
|
|
29
31
|
/**
|
|
@@ -41,6 +43,7 @@ export function Sparkline({
|
|
|
41
43
|
strokeWidth = 1.5,
|
|
42
44
|
title,
|
|
43
45
|
label,
|
|
46
|
+
valueFormatter,
|
|
44
47
|
...stackProps
|
|
45
48
|
}: SparklineProps) {
|
|
46
49
|
const { t } = useTranslation();
|
|
@@ -49,10 +52,29 @@ export function Sparkline({
|
|
|
49
52
|
const normalized: ChartDatum[] = data.map((entry, index) =>
|
|
50
53
|
typeof entry === "number" ? { label: String(index + 1), value: entry } : entry,
|
|
51
54
|
);
|
|
52
|
-
const ariaLabel =
|
|
55
|
+
const ariaLabel =
|
|
56
|
+
label ??
|
|
57
|
+
describeChart({
|
|
58
|
+
typeLabel: t("Sparkline"),
|
|
59
|
+
title,
|
|
60
|
+
data: normalized,
|
|
61
|
+
formatValue: valueFormatter,
|
|
62
|
+
});
|
|
53
63
|
|
|
54
64
|
return (
|
|
55
|
-
<ChartSurface
|
|
65
|
+
<ChartSurface
|
|
66
|
+
label={ariaLabel}
|
|
67
|
+
proof={{
|
|
68
|
+
kind: showArea ? "area" : "line",
|
|
69
|
+
separated: false,
|
|
70
|
+
datumText: false,
|
|
71
|
+
datumValues: chartDatumText(normalized, valueFormatter),
|
|
72
|
+
datumCount: normalized.length,
|
|
73
|
+
}}
|
|
74
|
+
height={height}
|
|
75
|
+
width={width}
|
|
76
|
+
{...stackProps}
|
|
77
|
+
>
|
|
56
78
|
{(size) => {
|
|
57
79
|
if (normalized.length === 0) return null;
|
|
58
80
|
const inset = strokeWidth + 1;
|
|
@@ -74,3 +74,11 @@ export function describeDatum(input: DescribeDatumInput): string {
|
|
|
74
74
|
}
|
|
75
75
|
return base;
|
|
76
76
|
}
|
|
77
|
+
|
|
78
|
+
/** Exact datum text for the independently opened data view, separate from the image name. */
|
|
79
|
+
export function chartDatumText(
|
|
80
|
+
data: ChartDatum[],
|
|
81
|
+
formatValue = formatChartValue,
|
|
82
|
+
): Array<[string, string]> {
|
|
83
|
+
return data.map((datum) => [datum.label.trim(), formatValue(datum.value).trim()]);
|
|
84
|
+
}
|
|
@@ -46,7 +46,26 @@ function targetRects(): Element[] {
|
|
|
46
46
|
// In happy-dom onLayout never fires, so every chart passes an explicit width.
|
|
47
47
|
const WIDTH = 400;
|
|
48
48
|
|
|
49
|
+
it("routes stock Sparkline as a declared area or line with its complete data count", () => {
|
|
50
|
+
const { rerender } = renderWithProviders(<Sparkline data={[1, 2, 3]} width={WIDTH} />);
|
|
51
|
+
expect(document.querySelector("svg")?.getAttribute("data-mpo-chart")).toBe("area");
|
|
52
|
+
expect(document.querySelector("svg")?.getAttribute("data-mpo-chart-datum-count")).toBe("3");
|
|
53
|
+
expect(document.querySelector("svg")?.getAttribute("data-mpo-chart-datum-text")).toBe("false");
|
|
54
|
+
rerender(<Sparkline data={[1, 2, 3]} width={WIDTH} showArea={false} />);
|
|
55
|
+
expect(document.querySelector("svg")?.getAttribute("data-mpo-chart")).toBe("line");
|
|
56
|
+
});
|
|
57
|
+
|
|
49
58
|
describe("BarChart", () => {
|
|
59
|
+
it("declares chart kind and marks without claiming a complete datum alternative", () => {
|
|
60
|
+
renderWithProviders(<BarChart data={data} width={WIDTH} onDatumPress={vi.fn()} />);
|
|
61
|
+
const root = document.querySelector("svg")!;
|
|
62
|
+
expect(root.getAttribute("data-mpo-chart")).toBe("bar");
|
|
63
|
+
expect(root.getAttribute("data-mpo-chart-datum-count")).toBe(String(data.length));
|
|
64
|
+
expect(root.getAttribute("data-mpo-chart-datum-text")).toBe("false");
|
|
65
|
+
expect(root.querySelectorAll("[data-mpo-chart-mark]").length).toBe(data.length);
|
|
66
|
+
expect(targetRects().every((target) => !target.hasAttribute("data-mpo-chart-mark"))).toBe(true);
|
|
67
|
+
});
|
|
68
|
+
|
|
50
69
|
it("renders one identity-colored bar per datum (single series, LC-27)", () => {
|
|
51
70
|
const palette: { current?: ChartPalette } = {};
|
|
52
71
|
renderWithProviders(
|
|
@@ -167,6 +186,12 @@ describe("BarChart", () => {
|
|
|
167
186
|
});
|
|
168
187
|
|
|
169
188
|
describe("LineChart / AreaChart", () => {
|
|
189
|
+
it("distinguishes area composition from a plain line", () => {
|
|
190
|
+
const { rerender } = renderWithProviders(<LineChart data={data} width={WIDTH} />);
|
|
191
|
+
expect(document.querySelector("svg")?.getAttribute("data-mpo-chart")).toBe("line");
|
|
192
|
+
rerender(<AreaChart data={data} width={WIDTH} />);
|
|
193
|
+
expect(document.querySelector("svg")?.getAttribute("data-mpo-chart")).toBe("area");
|
|
194
|
+
});
|
|
170
195
|
it("strokes the line and dots with the palette identity", () => {
|
|
171
196
|
const palette: { current?: ChartPalette } = {};
|
|
172
197
|
renderWithProviders(
|
|
@@ -201,7 +226,7 @@ describe("LineChart / AreaChart", () => {
|
|
|
201
226
|
<AreaChart data={data} width={WIDTH} />
|
|
202
227
|
</>,
|
|
203
228
|
);
|
|
204
|
-
const area = Array.from(document.querySelectorAll("svg
|
|
229
|
+
const area = Array.from(document.querySelectorAll("svg [data-mpo-chart-mark]")).find(
|
|
205
230
|
(p) => p.getAttribute("fill") !== "none" && p.getAttribute("opacity"),
|
|
206
231
|
);
|
|
207
232
|
expect(area).toBeDefined();
|
|
@@ -210,12 +235,61 @@ describe("LineChart / AreaChart", () => {
|
|
|
210
235
|
});
|
|
211
236
|
|
|
212
237
|
describe("PieChart", () => {
|
|
238
|
+
it("exposes every datum alternative without a twelve-item cap", () => {
|
|
239
|
+
const many = Array.from({ length: 13 }, (_, index) => ({
|
|
240
|
+
label: `Region ${index}`,
|
|
241
|
+
value: index + 1,
|
|
242
|
+
}));
|
|
243
|
+
renderWithProviders(<PieChart data={many} donut />);
|
|
244
|
+
const root = document.querySelector("svg")!;
|
|
245
|
+
expect(root.getAttribute("data-mpo-chart")).toBe("donut");
|
|
246
|
+
expect(root.getAttribute("data-mpo-chart-datum-count")).toBe("13");
|
|
247
|
+
expect(root.getAttribute("data-mpo-chart-separated")).toBe("true");
|
|
248
|
+
expect(document.querySelectorAll("[data-mpo-chart-datum-label]").length).toBe(13);
|
|
249
|
+
expect(document.querySelectorAll("[data-mpo-chart-datum-value]").length).toBe(13);
|
|
250
|
+
expect(root.querySelectorAll("[data-mpo-chart-mark]").length).toBe(13);
|
|
251
|
+
});
|
|
252
|
+
|
|
213
253
|
const pieData: ChartDatum[] = [
|
|
214
254
|
{ label: "A", value: 4 },
|
|
215
255
|
{ label: "B", value: 3 },
|
|
216
256
|
{ label: "C", value: 2 },
|
|
217
257
|
];
|
|
218
258
|
|
|
259
|
+
it("keeps mask IDs unique across mounted charts and preserves the actual slice path", () => {
|
|
260
|
+
renderWithProviders(
|
|
261
|
+
<>
|
|
262
|
+
<PieChart data={pieData} />
|
|
263
|
+
<PieChart data={pieData} donut />
|
|
264
|
+
</>,
|
|
265
|
+
);
|
|
266
|
+
const masks = Array.from(document.querySelectorAll("mask"));
|
|
267
|
+
expect(masks).toHaveLength(6);
|
|
268
|
+
expect(new Set(masks.map((mask) => mask.id)).size).toBe(6);
|
|
269
|
+
for (const mark of document.querySelectorAll("[data-mpo-chart-mark]")) {
|
|
270
|
+
const id = mark.getAttribute("mask")!.slice(5, -1);
|
|
271
|
+
const mask = document.getElementById(id)!;
|
|
272
|
+
expect(mask.getAttribute("mask-type")).toBe("luminance");
|
|
273
|
+
expect(mask.children[0].getAttribute("d")).toBe(mark.getAttribute("d"));
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
it.each([
|
|
278
|
+
{ data: pieData, padAngle: 0 },
|
|
279
|
+
{
|
|
280
|
+
data: [
|
|
281
|
+
{ label: "Large", value: 9999 },
|
|
282
|
+
{ label: "Small", value: 1 },
|
|
283
|
+
],
|
|
284
|
+
},
|
|
285
|
+
{ data: [{ label: "Only", value: 1 }] },
|
|
286
|
+
])("preserves explicit zero, thin positives and single-datum geometry: %j", (props) => {
|
|
287
|
+
renderWithProviders(<PieChart {...props} />);
|
|
288
|
+
expect(document.querySelectorAll("mask")).toHaveLength(0);
|
|
289
|
+
expect(document.querySelectorAll("[data-mpo-chart-mark]")).toHaveLength(props.data.length);
|
|
290
|
+
expect(document.querySelector("svg")?.getAttribute("data-mpo-chart-separated")).toBe("false");
|
|
291
|
+
});
|
|
292
|
+
|
|
219
293
|
it("slices take the categorical palette in data order", () => {
|
|
220
294
|
const palette: { current?: ChartPalette } = {};
|
|
221
295
|
renderWithProviders(
|
|
@@ -224,7 +298,7 @@ describe("PieChart", () => {
|
|
|
224
298
|
<PieChart data={pieData} showLegend={false} />
|
|
225
299
|
</>,
|
|
226
300
|
);
|
|
227
|
-
const fills = Array.from(document.querySelectorAll("svg
|
|
301
|
+
const fills = Array.from(document.querySelectorAll("svg [data-mpo-chart-mark]")).map((p) =>
|
|
228
302
|
p.getAttribute("fill"),
|
|
229
303
|
);
|
|
230
304
|
expect(fills).toEqual(palette.current?.categorical.slice(0, pieData.length));
|
|
@@ -239,7 +313,7 @@ describe("PieChart", () => {
|
|
|
239
313
|
it("per-slice press targets carry share-aware names", () => {
|
|
240
314
|
const onDatumPress = vi.fn();
|
|
241
315
|
renderWithProviders(<PieChart data={pieData} showLegend={false} onDatumPress={onDatumPress} />);
|
|
242
|
-
const slices = Array.from(document.querySelectorAll("svg
|
|
316
|
+
const slices = Array.from(document.querySelectorAll("svg [data-mpo-chart-mark]"));
|
|
243
317
|
expect(slices[0].getAttribute("aria-label")).toBe("A: 4 (44%)");
|
|
244
318
|
fireEvent.click(slices[1]);
|
|
245
319
|
expect(onDatumPress).toHaveBeenCalledWith(pieData[1], 1);
|
package/src/charts/index.ts
CHANGED
|
@@ -77,3 +77,5 @@ export { BarChart, type BarChartProps } from "./BarChart";
|
|
|
77
77
|
export { AreaChart, LineChart, type AreaChartProps, type LineChartProps } from "./LineChart";
|
|
78
78
|
export { PieChart, type PieChartProps } from "./PieChart";
|
|
79
79
|
export { Sparkline, type SparklineProps } from "./Sparkline";
|
|
80
|
+
|
|
81
|
+
export { ChartDataView, type ChartDataViewProps } from "./ChartDataView";
|
package/src/charts/math.spec.ts
CHANGED
|
@@ -13,10 +13,29 @@ import {
|
|
|
13
13
|
getTimeTicks,
|
|
14
14
|
linePath,
|
|
15
15
|
pieSlices,
|
|
16
|
+
canMaskPieSlices,
|
|
16
17
|
truncateLabel,
|
|
17
18
|
valueDomain,
|
|
18
19
|
} from "./math";
|
|
19
20
|
|
|
21
|
+
describe("pie mask preserves a positive interior", () => {
|
|
22
|
+
const slices = (values: number[]) => pieSlices(values.map((value) => ({ value })));
|
|
23
|
+
it("accepts ordinary pie and donut slices including a wedge larger than pi", () => {
|
|
24
|
+
expect(canMaskPieSlices(slices([70, 20, 10]), 0, 100)).toBe(true);
|
|
25
|
+
expect(canMaskPieSlices(slices([70, 20, 10]), 55, 100)).toBe(true);
|
|
26
|
+
});
|
|
27
|
+
it("keeps the whole original chart when one positive slice is too thin", () => {
|
|
28
|
+
expect(canMaskPieSlices(slices([9999, 1]), 0, 100)).toBe(false);
|
|
29
|
+
expect(canMaskPieSlices(slices([9999, 1]), 55, 100)).toBe(false);
|
|
30
|
+
expect(canMaskPieSlices(slices([50, 50]), 99, 100)).toBe(false);
|
|
31
|
+
});
|
|
32
|
+
it("does not erode a single positive full circle or invalid geometry", () => {
|
|
33
|
+
expect(canMaskPieSlices(slices([100]), 0, 100)).toBe(false);
|
|
34
|
+
expect(canMaskPieSlices(slices([0, 100]), 55, 100)).toBe(false);
|
|
35
|
+
expect(canMaskPieSlices(slices([50, 50]), 0, NaN)).toBe(false);
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
|
|
20
39
|
describe("charts/math scales", () => {
|
|
21
40
|
it("band scale maps categories into the pixel range with padding", () => {
|
|
22
41
|
const scale = createBandScale({ domain: ["a", "b", "c"], range: [0, 300] });
|
package/src/charts/math.ts
CHANGED
|
@@ -234,6 +234,42 @@ export function pieSlices<T extends { value: number }>(
|
|
|
234
234
|
}));
|
|
235
235
|
}
|
|
236
236
|
|
|
237
|
+
/**
|
|
238
|
+
* Sufficient interior witness for a two-unit boundary erosion. The bisector
|
|
239
|
+
* at the annulus midpoint must stay more than one unit from every boundary.
|
|
240
|
+
* Distance to a radial segment uses clamped projection, including its inner
|
|
241
|
+
* endpoint for wedges larger than pi. A small margin covers SVG's three-digit
|
|
242
|
+
* path rounding. One thin positive slice keeps the whole chart unmasked.
|
|
243
|
+
*/
|
|
244
|
+
export function canMaskPieSlices(
|
|
245
|
+
slices: ReadonlyArray<{ value: number; startAngle: number; endAngle: number }>,
|
|
246
|
+
innerRadius: number,
|
|
247
|
+
outerRadius: number,
|
|
248
|
+
): boolean {
|
|
249
|
+
const positive = slices.filter((slice) => slice.value > 0);
|
|
250
|
+
if (
|
|
251
|
+
positive.length < 2 ||
|
|
252
|
+
!Number.isFinite(innerRadius) ||
|
|
253
|
+
!Number.isFinite(outerRadius) ||
|
|
254
|
+
innerRadius < 0 ||
|
|
255
|
+
outerRadius <= innerRadius
|
|
256
|
+
)
|
|
257
|
+
return false;
|
|
258
|
+
const radius = (innerRadius + outerRadius) / 2;
|
|
259
|
+
const clearance = 1.002;
|
|
260
|
+
if (outerRadius - radius <= clearance || radius - innerRadius <= clearance) return false;
|
|
261
|
+
return positive.every((slice) => {
|
|
262
|
+
const span = slice.endAngle - slice.startAngle;
|
|
263
|
+
if (!Number.isFinite(span) || span <= 0 || span >= Math.PI * 2) return false;
|
|
264
|
+
const cosine = Math.cos(span / 2);
|
|
265
|
+
const projection = Math.min(outerRadius, Math.max(innerRadius, radius * cosine));
|
|
266
|
+
const radialDistance = Math.sqrt(
|
|
267
|
+
Math.max(0, radius ** 2 + projection ** 2 - 2 * radius * projection * cosine),
|
|
268
|
+
);
|
|
269
|
+
return radialDistance > clearance;
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
|
|
237
273
|
export interface ArcPathInput {
|
|
238
274
|
startAngle: number;
|
|
239
275
|
endAngle: number;
|
package/src/charts/series.tsx
CHANGED
|
@@ -1,7 +1,19 @@
|
|
|
1
1
|
import { MIN_PRESS_TARGET } from "@multiplatform.one/theme";
|
|
2
2
|
import type { ScaleBand, ScaleLinear } from "d3-scale";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { useId } from "react";
|
|
4
|
+
import { areaPath, arcPath, linePath, pieSlices, canMaskPieSlices } from "./math";
|
|
5
|
+
import {
|
|
6
|
+
Circle,
|
|
7
|
+
Defs,
|
|
8
|
+
Mask,
|
|
9
|
+
G,
|
|
10
|
+
Path,
|
|
11
|
+
Rect,
|
|
12
|
+
datumTargetProps,
|
|
13
|
+
chartMarkProps,
|
|
14
|
+
chartWebProps,
|
|
15
|
+
luminanceMaskProps,
|
|
16
|
+
} from "./svg";
|
|
5
17
|
import type {
|
|
6
18
|
ChartCurve,
|
|
7
19
|
ChartDatum,
|
|
@@ -79,6 +91,7 @@ export function BarSeries({ data, xScale, yScale, plot, fills, ...callbacks }: B
|
|
|
79
91
|
return (
|
|
80
92
|
<G key={`${datum.label}-${index}`}>
|
|
81
93
|
<Rect
|
|
94
|
+
{...chartMarkProps(datum.label)}
|
|
82
95
|
x={x}
|
|
83
96
|
y={y}
|
|
84
97
|
width={bandwidth}
|
|
@@ -147,10 +160,23 @@ export function LineSeries({
|
|
|
147
160
|
const targetRadius = MIN_PRESS_TARGET / 2;
|
|
148
161
|
return (
|
|
149
162
|
<G>
|
|
150
|
-
<Path
|
|
163
|
+
<Path
|
|
164
|
+
{...chartMarkProps("series line")}
|
|
165
|
+
d={linePath(points, { curve })}
|
|
166
|
+
fill="none"
|
|
167
|
+
stroke={color}
|
|
168
|
+
strokeWidth={strokeWidth}
|
|
169
|
+
/>
|
|
151
170
|
{showPoints
|
|
152
171
|
? points.map((point, index) => (
|
|
153
|
-
<Circle
|
|
172
|
+
<Circle
|
|
173
|
+
key={`point-${index}`}
|
|
174
|
+
{...chartMarkProps(data[index]?.label ?? `point ${index + 1}`)}
|
|
175
|
+
cx={point.x}
|
|
176
|
+
cy={point.y}
|
|
177
|
+
r={pointRadius}
|
|
178
|
+
fill={color}
|
|
179
|
+
/>
|
|
154
180
|
))
|
|
155
181
|
: null}
|
|
156
182
|
{interactive
|
|
@@ -187,7 +213,14 @@ export interface AreaSeriesProps {
|
|
|
187
213
|
* LineSeries on top, which owns points and hit targets.
|
|
188
214
|
*/
|
|
189
215
|
export function AreaSeries({ points, baseline, color, opacity = 0.18, curve }: AreaSeriesProps) {
|
|
190
|
-
return
|
|
216
|
+
return (
|
|
217
|
+
<Path
|
|
218
|
+
{...chartMarkProps("series area")}
|
|
219
|
+
d={areaPath(points, { baseline, curve })}
|
|
220
|
+
fill={color}
|
|
221
|
+
opacity={opacity}
|
|
222
|
+
/>
|
|
223
|
+
);
|
|
191
224
|
}
|
|
192
225
|
|
|
193
226
|
// ── Pie / Donut ───────────────────────────────────────────────
|
|
@@ -200,7 +233,7 @@ export interface PieSeriesProps extends DatumTargetCallbacks {
|
|
|
200
233
|
outerRadius: number;
|
|
201
234
|
/** > 0 renders a donut with a true transparent hole. */
|
|
202
235
|
innerRadius?: number;
|
|
203
|
-
/**
|
|
236
|
+
/** Explicit radians between slices. Omit for the default boundary mask. */
|
|
204
237
|
padAngle?: number;
|
|
205
238
|
/** Resolved fill per datum index. */
|
|
206
239
|
fills: string[];
|
|
@@ -218,28 +251,75 @@ export function PieSeries({
|
|
|
218
251
|
cy,
|
|
219
252
|
outerRadius,
|
|
220
253
|
innerRadius = 0,
|
|
221
|
-
padAngle
|
|
254
|
+
padAngle,
|
|
222
255
|
fills,
|
|
223
256
|
...callbacks
|
|
224
257
|
}: PieSeriesProps) {
|
|
258
|
+
const instanceId = useId().replace(/[^a-zA-Z0-9_-]/g, "_");
|
|
225
259
|
const slices = pieSlices(data, { padAngle });
|
|
260
|
+
const maskGaps = padAngle === undefined && canMaskPieSlices(slices, innerRadius, outerRadius);
|
|
226
261
|
const interactive = hasTargets(callbacks);
|
|
227
262
|
return (
|
|
228
263
|
<G transform={`translate(${cx}, ${cy})`}>
|
|
229
|
-
{slices.map((slice) =>
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
{
|
|
241
|
-
|
|
242
|
-
|
|
264
|
+
{slices.map((slice) => {
|
|
265
|
+
const path = arcPath({
|
|
266
|
+
startAngle: slice.startAngle,
|
|
267
|
+
endAngle: slice.endAngle,
|
|
268
|
+
padAngle: slice.padAngle,
|
|
269
|
+
innerRadius,
|
|
270
|
+
outerRadius,
|
|
271
|
+
});
|
|
272
|
+
const masked = maskGaps && slice.value > 0;
|
|
273
|
+
const maskId = `mpo-pie-${instanceId}-${slice.index}`;
|
|
274
|
+
return (
|
|
275
|
+
<G key={`${slice.datum.label}-${slice.index}`}>
|
|
276
|
+
{masked ? (
|
|
277
|
+
<Defs>
|
|
278
|
+
<Mask
|
|
279
|
+
id={maskId}
|
|
280
|
+
x={-outerRadius - 2}
|
|
281
|
+
y={-outerRadius - 2}
|
|
282
|
+
width={(outerRadius + 2) * 2}
|
|
283
|
+
height={(outerRadius + 2) * 2}
|
|
284
|
+
maskUnits="userSpaceOnUse"
|
|
285
|
+
maskContentUnits="userSpaceOnUse"
|
|
286
|
+
{...luminanceMaskProps()}
|
|
287
|
+
>
|
|
288
|
+
<Path
|
|
289
|
+
d={path}
|
|
290
|
+
fill="#ffffff"
|
|
291
|
+
stroke="#000000"
|
|
292
|
+
strokeWidth={2}
|
|
293
|
+
strokeLinejoin="round"
|
|
294
|
+
strokeLinecap="round"
|
|
295
|
+
opacity={1}
|
|
296
|
+
fillOpacity={1}
|
|
297
|
+
strokeOpacity={1}
|
|
298
|
+
/>
|
|
299
|
+
</Mask>
|
|
300
|
+
</Defs>
|
|
301
|
+
) : null}
|
|
302
|
+
<Path
|
|
303
|
+
{...chartMarkProps(slice.datum.label)}
|
|
304
|
+
{...(masked
|
|
305
|
+
? chartWebProps({
|
|
306
|
+
"data-mpo-chart-mask": "eroded-arc-v1",
|
|
307
|
+
"data-mpo-chart-slice": [
|
|
308
|
+
slice.startAngle,
|
|
309
|
+
slice.endAngle,
|
|
310
|
+
innerRadius,
|
|
311
|
+
outerRadius,
|
|
312
|
+
].join(","),
|
|
313
|
+
})
|
|
314
|
+
: {})}
|
|
315
|
+
d={path}
|
|
316
|
+
mask={masked ? `url(#${maskId})` : undefined}
|
|
317
|
+
fill={fills[slice.index]}
|
|
318
|
+
{...(interactive ? targetPropsFor(callbacks, slice.datum, slice.index) : {})}
|
|
319
|
+
/>
|
|
320
|
+
</G>
|
|
321
|
+
);
|
|
322
|
+
})}
|
|
243
323
|
</G>
|
|
244
324
|
);
|
|
245
325
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { expect, it, vi } from "vitest";
|
|
2
|
+
|
|
3
|
+
vi.mock("@multiplatform.one/platform", () => ({ isWeb: false }));
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
chartChromeProps,
|
|
7
|
+
chartDatumTextProps,
|
|
8
|
+
chartMarkProps,
|
|
9
|
+
chartRootA11yProps,
|
|
10
|
+
chartWebProps,
|
|
11
|
+
luminanceMaskProps,
|
|
12
|
+
} from "./svg";
|
|
13
|
+
|
|
14
|
+
it("keeps browser audit attributes off native SVG props", () => {
|
|
15
|
+
expect(
|
|
16
|
+
chartRootA11yProps("Revenue", {
|
|
17
|
+
kind: "bar",
|
|
18
|
+
separated: true,
|
|
19
|
+
datumText: false,
|
|
20
|
+
datumCount: 13,
|
|
21
|
+
}),
|
|
22
|
+
).toEqual({ accessible: true, accessibilityRole: "image", accessibilityLabel: "Revenue" });
|
|
23
|
+
expect(luminanceMaskProps()).toEqual({ maskType: "luminance" });
|
|
24
|
+
expect(chartMarkProps("North")).toEqual({});
|
|
25
|
+
expect(chartChromeProps("grid")).toEqual({});
|
|
26
|
+
expect(chartDatumTextProps(12)).toEqual({});
|
|
27
|
+
expect(chartWebProps({ "data-mpo-chart-owner": "true" })).toEqual({});
|
|
28
|
+
});
|