@multiplatform.one/components 7.7.6 → 7.10.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 +3 -3
- package/dist/cjs/Accordion/index.native.js +4 -4
- package/dist/cjs/Accordion/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/Chip/index.cjs +1 -1
- package/dist/cjs/Chip/index.native.js +1 -1
- package/dist/cjs/Chip/index.native.js.map +1 -1
- package/dist/cjs/ContextMenu/index.cjs +3 -3
- package/dist/cjs/ContextMenu/index.native.js +3 -3
- 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/DropdownMenu/index.cjs +34 -4
- package/dist/cjs/DropdownMenu/index.native.js +34 -4
- package/dist/cjs/DropdownMenu/index.native.js.map +1 -1
- package/dist/cjs/Meter/index.cjs +15 -7
- package/dist/cjs/Meter/index.native.js +15 -7
- package/dist/cjs/Meter/index.native.js.map +1 -1
- package/dist/cjs/Meter/meter.cjs +1 -2
- package/dist/cjs/Meter/meter.native.js +1 -2
- package/dist/cjs/Meter/meter.native.js.map +1 -1
- package/dist/cjs/Pagination.cjs +2 -2
- package/dist/cjs/Pagination.native.js +2 -2
- package/dist/cjs/Pagination.native.js.map +1 -1
- package/dist/cjs/ProgressSteps/index.cjs +3 -3
- package/dist/cjs/ProgressSteps/index.native.js +3 -3
- package/dist/cjs/ProgressSteps/index.native.js.map +1 -1
- package/dist/cjs/Quote/index.cjs +1 -2
- package/dist/cjs/Quote/index.native.js +1 -2
- package/dist/cjs/Quote/index.native.js.map +1 -1
- package/dist/cjs/Tabs/index.cjs +8 -7
- package/dist/cjs/Tabs/index.native.js +9 -8
- package/dist/cjs/Tabs/index.native.js.map +1 -1
- package/dist/cjs/Toast/index.cjs +57 -7
- package/dist/cjs/Toast/index.native.js +59 -7
- package/dist/cjs/Toast/index.native.js.map +1 -1
- package/dist/cjs/TreeSelect/index.cjs +46 -7
- package/dist/cjs/TreeSelect/index.native.js +58 -7
- package/dist/cjs/TreeSelect/index.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/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 -74
- package/dist/cjs/charts/PieChart.native.js +109 -85
- 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/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/code/CodeBlock/index.cjs +6 -1
- package/dist/cjs/code/CodeBlock/index.native.js +6 -1
- package/dist/cjs/code/CodeBlock/index.native.js.map +1 -1
- package/dist/cjs/code/HighlightedCode/index.cjs +1 -1
- package/dist/cjs/code/HighlightedCode/index.native.js +1 -1
- package/dist/cjs/code/HighlightedCode/index.native.js.map +1 -1
- package/dist/cjs/componentColors.cjs +6 -4
- package/dist/cjs/componentColors.native.js +6 -4
- 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 +3 -2
- 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/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/images/Image/ImageFrame.cjs +4 -2
- package/dist/cjs/images/Image/ImageFrame.native.js +4 -2
- package/dist/cjs/images/Image/ImageFrame.native.js.map +1 -1
- package/dist/cjs/layouts/AsyncBoundary.cjs +1 -2
- package/dist/cjs/layouts/AsyncBoundary.native.js +1 -2
- package/dist/cjs/layouts/AsyncBoundary.native.js.map +1 -1
- package/dist/cjs/layouts/EmptyState.cjs +6 -2
- package/dist/cjs/layouts/EmptyState.native.js +10 -6
- package/dist/cjs/layouts/EmptyState.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/attachments.cjs +4 -4
- package/dist/cjs/layouts/attachments.native.js +4 -4
- package/dist/cjs/layouts/attachments.native.js.map +1 -1
- package/dist/cjs/layouts/breadcrumbs.cjs +1 -2
- package/dist/cjs/layouts/breadcrumbs.native.js +1 -2
- 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 +2 -0
- package/dist/cjs/layouts/index.native.js.map +1 -1
- package/dist/cjs/layouts/page.cjs +50 -9
- package/dist/cjs/layouts/page.native.js +52 -9
- package/dist/cjs/layouts/page.native.js.map +1 -1
- package/dist/cjs/layouts/sidebar.cjs +2 -2
- package/dist/cjs/layouts/sidebar.native.js +2 -2
- package/dist/cjs/layouts/sidebar.native.js.map +1 -1
- package/dist/cjs/layouts/tags.cjs +6 -7
- package/dist/cjs/layouts/tags.native.js +6 -9
- package/dist/cjs/layouts/tags.native.js.map +1 -1
- package/dist/cjs/layouts/timeline.cjs +5 -5
- package/dist/cjs/layouts/timeline.native.js +5 -5
- package/dist/cjs/layouts/timeline.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/surfaces.cjs +1 -0
- package/dist/cjs/surfaces.native.js +1 -0
- package/dist/cjs/surfaces.native.js.map +1 -1
- package/dist/cjs/views/Calendar.cjs +11 -8
- package/dist/cjs/views/Calendar.native.js +11 -8
- package/dist/cjs/views/Calendar.native.js.map +1 -1
- package/dist/cjs/views/Dashboard.cjs +116 -23
- package/dist/cjs/views/Dashboard.native.js +158 -52
- package/dist/cjs/views/Dashboard.native.js.map +1 -1
- package/dist/cjs/views/Gantt.cjs +377 -94
- package/dist/cjs/views/Gantt.native.js +446 -97
- package/dist/cjs/views/Gantt.native.js.map +1 -1
- package/dist/cjs/views/Kanban.cjs +2 -2
- package/dist/cjs/views/Kanban.native.js +2 -2
- package/dist/cjs/views/Kanban.native.js.map +1 -1
- package/dist/cjs/views/ReportBuilder.cjs +4 -4
- package/dist/cjs/views/ReportBuilder.native.js +4 -4
- package/dist/cjs/views/ReportBuilder.native.js.map +1 -1
- package/dist/cjs/views/TreeView.cjs +103 -6
- package/dist/cjs/views/TreeView.native.js +115 -6
- package/dist/cjs/views/TreeView.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 +20 -1
- package/dist/cjs/views/index.native.js.map +1 -1
- package/dist/cjs/views/treeViewReveal.cjs +55 -0
- package/dist/cjs/views/treeViewReveal.native.js +80 -0
- package/dist/cjs/views/treeViewReveal.native.js.map +1 -0
- package/dist/esm/Accordion/index.mjs +3 -3
- package/dist/esm/Accordion/index.mjs.map +1 -1
- package/dist/esm/Accordion/index.native.js +4 -4
- package/dist/esm/Accordion/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/Chip/index.mjs +1 -1
- package/dist/esm/Chip/index.mjs.map +1 -1
- package/dist/esm/Chip/index.native.js +1 -1
- package/dist/esm/Chip/index.native.js.map +1 -1
- package/dist/esm/ContextMenu/index.mjs +3 -3
- package/dist/esm/ContextMenu/index.mjs.map +1 -1
- package/dist/esm/ContextMenu/index.native.js +3 -3
- 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/DropdownMenu/index.mjs +35 -5
- package/dist/esm/DropdownMenu/index.mjs.map +1 -1
- package/dist/esm/DropdownMenu/index.native.js +35 -5
- package/dist/esm/DropdownMenu/index.native.js.map +1 -1
- package/dist/esm/Meter/index.mjs +15 -7
- package/dist/esm/Meter/index.mjs.map +1 -1
- package/dist/esm/Meter/index.native.js +15 -7
- package/dist/esm/Meter/index.native.js.map +1 -1
- package/dist/esm/Meter/meter.mjs +1 -2
- package/dist/esm/Meter/meter.mjs.map +1 -1
- package/dist/esm/Meter/meter.native.js +1 -2
- package/dist/esm/Meter/meter.native.js.map +1 -1
- package/dist/esm/Pagination.mjs +2 -2
- package/dist/esm/Pagination.mjs.map +1 -1
- package/dist/esm/Pagination.native.js +2 -2
- package/dist/esm/Pagination.native.js.map +1 -1
- package/dist/esm/ProgressSteps/index.mjs +3 -3
- package/dist/esm/ProgressSteps/index.mjs.map +1 -1
- package/dist/esm/ProgressSteps/index.native.js +3 -3
- package/dist/esm/ProgressSteps/index.native.js.map +1 -1
- package/dist/esm/Quote/index.mjs +1 -2
- package/dist/esm/Quote/index.mjs.map +1 -1
- package/dist/esm/Quote/index.native.js +1 -2
- package/dist/esm/Quote/index.native.js.map +1 -1
- package/dist/esm/Tabs/index.mjs +8 -7
- package/dist/esm/Tabs/index.mjs.map +1 -1
- package/dist/esm/Tabs/index.native.js +9 -8
- package/dist/esm/Tabs/index.native.js.map +1 -1
- package/dist/esm/Toast/index.mjs +56 -8
- package/dist/esm/Toast/index.mjs.map +1 -1
- package/dist/esm/Toast/index.native.js +58 -8
- package/dist/esm/Toast/index.native.js.map +1 -1
- package/dist/esm/TreeSelect/index.mjs +46 -7
- package/dist/esm/TreeSelect/index.mjs.map +1 -1
- package/dist/esm/TreeSelect/index.native.js +58 -7
- package/dist/esm/TreeSelect/index.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/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 -76
- package/dist/esm/charts/PieChart.mjs.map +1 -1
- package/dist/esm/charts/PieChart.native.js +111 -87
- 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/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/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.mjs +1 -1
- package/dist/esm/code/HighlightedCode/index.mjs.map +1 -1
- package/dist/esm/code/HighlightedCode/index.native.js +1 -1
- package/dist/esm/code/HighlightedCode/index.native.js.map +1 -1
- package/dist/esm/componentColors.mjs +6 -4
- package/dist/esm/componentColors.mjs.map +1 -1
- package/dist/esm/componentColors.native.js +6 -4
- 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/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/images/Image/ImageFrame.mjs +4 -2
- package/dist/esm/images/Image/ImageFrame.mjs.map +1 -1
- package/dist/esm/images/Image/ImageFrame.native.js +4 -2
- package/dist/esm/images/Image/ImageFrame.native.js.map +1 -1
- package/dist/esm/layouts/AsyncBoundary.mjs +1 -2
- package/dist/esm/layouts/AsyncBoundary.mjs.map +1 -1
- package/dist/esm/layouts/AsyncBoundary.native.js +1 -2
- package/dist/esm/layouts/AsyncBoundary.native.js.map +1 -1
- package/dist/esm/layouts/EmptyState.mjs +7 -3
- package/dist/esm/layouts/EmptyState.mjs.map +1 -1
- package/dist/esm/layouts/EmptyState.native.js +11 -7
- package/dist/esm/layouts/EmptyState.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/attachments.mjs +4 -4
- package/dist/esm/layouts/attachments.mjs.map +1 -1
- package/dist/esm/layouts/attachments.native.js +4 -4
- package/dist/esm/layouts/attachments.native.js.map +1 -1
- package/dist/esm/layouts/breadcrumbs.mjs +1 -2
- package/dist/esm/layouts/breadcrumbs.mjs.map +1 -1
- package/dist/esm/layouts/breadcrumbs.native.js +1 -2
- 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 +51 -10
- package/dist/esm/layouts/page.mjs.map +1 -1
- package/dist/esm/layouts/page.native.js +53 -10
- package/dist/esm/layouts/page.native.js.map +1 -1
- package/dist/esm/layouts/sidebar.mjs +2 -2
- package/dist/esm/layouts/sidebar.mjs.map +1 -1
- package/dist/esm/layouts/sidebar.native.js +2 -2
- package/dist/esm/layouts/sidebar.native.js.map +1 -1
- package/dist/esm/layouts/tags.mjs +6 -7
- package/dist/esm/layouts/tags.mjs.map +1 -1
- package/dist/esm/layouts/tags.native.js +6 -9
- package/dist/esm/layouts/tags.native.js.map +1 -1
- package/dist/esm/layouts/timeline.mjs +5 -5
- package/dist/esm/layouts/timeline.mjs.map +1 -1
- package/dist/esm/layouts/timeline.native.js +5 -5
- package/dist/esm/layouts/timeline.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/surfaces.mjs +1 -0
- package/dist/esm/surfaces.mjs.map +1 -1
- package/dist/esm/surfaces.native.js +1 -0
- package/dist/esm/surfaces.native.js.map +1 -1
- package/dist/esm/views/Calendar.mjs +11 -8
- package/dist/esm/views/Calendar.mjs.map +1 -1
- package/dist/esm/views/Calendar.native.js +11 -8
- package/dist/esm/views/Calendar.native.js.map +1 -1
- package/dist/esm/views/Dashboard.mjs +118 -25
- package/dist/esm/views/Dashboard.mjs.map +1 -1
- package/dist/esm/views/Dashboard.native.js +160 -54
- package/dist/esm/views/Dashboard.native.js.map +1 -1
- package/dist/esm/views/Gantt.mjs +379 -96
- package/dist/esm/views/Gantt.mjs.map +1 -1
- package/dist/esm/views/Gantt.native.js +448 -99
- package/dist/esm/views/Gantt.native.js.map +1 -1
- package/dist/esm/views/Kanban.mjs +2 -2
- package/dist/esm/views/Kanban.mjs.map +1 -1
- package/dist/esm/views/Kanban.native.js +2 -2
- package/dist/esm/views/Kanban.native.js.map +1 -1
- package/dist/esm/views/ReportBuilder.mjs +4 -4
- package/dist/esm/views/ReportBuilder.mjs.map +1 -1
- package/dist/esm/views/ReportBuilder.native.js +4 -4
- package/dist/esm/views/ReportBuilder.native.js.map +1 -1
- package/dist/esm/views/TreeView.mjs +104 -7
- package/dist/esm/views/TreeView.mjs.map +1 -1
- package/dist/esm/views/TreeView.native.js +116 -7
- package/dist/esm/views/TreeView.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/treeViewReveal.mjs +29 -0
- package/dist/esm/views/treeViewReveal.mjs.map +1 -0
- package/dist/esm/views/treeViewReveal.native.js +51 -0
- package/dist/esm/views/treeViewReveal.native.js.map +1 -0
- package/dist/jsx/Accordion/index.mjs +3 -3
- package/dist/jsx/Accordion/index.mjs.map +1 -1
- package/dist/jsx/Accordion/index.native.js +4 -4
- package/dist/jsx/Accordion/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/Chip/index.mjs +1 -1
- package/dist/jsx/Chip/index.mjs.map +1 -1
- package/dist/jsx/Chip/index.native.js +1 -1
- package/dist/jsx/Chip/index.native.js.map +1 -1
- package/dist/jsx/ContextMenu/index.mjs +3 -3
- package/dist/jsx/ContextMenu/index.mjs.map +1 -1
- package/dist/jsx/ContextMenu/index.native.js +3 -3
- package/dist/jsx/ContextMenu/index.native.js.map +1 -1
- 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 +35 -5
- package/dist/jsx/DropdownMenu/index.mjs.map +1 -1
- package/dist/jsx/DropdownMenu/index.native.js +34 -4
- package/dist/jsx/DropdownMenu/index.native.js.map +1 -1
- package/dist/jsx/Meter/index.mjs +15 -7
- package/dist/jsx/Meter/index.mjs.map +1 -1
- package/dist/jsx/Meter/index.native.js +15 -7
- package/dist/jsx/Meter/index.native.js.map +1 -1
- package/dist/jsx/Meter/meter.mjs +1 -2
- package/dist/jsx/Meter/meter.mjs.map +1 -1
- package/dist/jsx/Meter/meter.native.js +1 -2
- package/dist/jsx/Meter/meter.native.js.map +1 -1
- package/dist/jsx/Pagination.mjs +2 -2
- package/dist/jsx/Pagination.mjs.map +1 -1
- package/dist/jsx/Pagination.native.js +2 -2
- package/dist/jsx/Pagination.native.js.map +1 -1
- package/dist/jsx/ProgressSteps/index.mjs +3 -3
- package/dist/jsx/ProgressSteps/index.mjs.map +1 -1
- package/dist/jsx/ProgressSteps/index.native.js +3 -3
- package/dist/jsx/ProgressSteps/index.native.js.map +1 -1
- package/dist/jsx/Quote/index.mjs +1 -2
- package/dist/jsx/Quote/index.mjs.map +1 -1
- package/dist/jsx/Quote/index.native.js +1 -2
- package/dist/jsx/Quote/index.native.js.map +1 -1
- package/dist/jsx/Tabs/index.mjs +8 -7
- package/dist/jsx/Tabs/index.mjs.map +1 -1
- package/dist/jsx/Tabs/index.native.js +9 -8
- package/dist/jsx/Tabs/index.native.js.map +1 -1
- package/dist/jsx/Toast/index.mjs +56 -8
- package/dist/jsx/Toast/index.mjs.map +1 -1
- package/dist/jsx/Toast/index.native.js +59 -7
- package/dist/jsx/Toast/index.native.js.map +1 -1
- package/dist/jsx/TreeSelect/index.mjs +46 -7
- package/dist/jsx/TreeSelect/index.mjs.map +1 -1
- package/dist/jsx/TreeSelect/index.native.js +58 -7
- package/dist/jsx/TreeSelect/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 -76
- package/dist/jsx/charts/PieChart.mjs.map +1 -1
- package/dist/jsx/charts/PieChart.native.js +109 -85
- 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/code/HighlightedCode/index.mjs +1 -1
- package/dist/jsx/code/HighlightedCode/index.mjs.map +1 -1
- package/dist/jsx/code/HighlightedCode/index.native.js +1 -1
- package/dist/jsx/code/HighlightedCode/index.native.js.map +1 -1
- package/dist/jsx/componentColors.mjs +6 -4
- package/dist/jsx/componentColors.mjs.map +1 -1
- package/dist/jsx/componentColors.native.js +6 -4
- package/dist/jsx/componentColors.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/images/Image/ImageFrame.mjs +4 -2
- package/dist/jsx/images/Image/ImageFrame.mjs.map +1 -1
- package/dist/jsx/images/Image/ImageFrame.native.js +4 -2
- package/dist/jsx/images/Image/ImageFrame.native.js.map +1 -1
- package/dist/jsx/layouts/AsyncBoundary.mjs +1 -2
- package/dist/jsx/layouts/AsyncBoundary.mjs.map +1 -1
- package/dist/jsx/layouts/AsyncBoundary.native.js +1 -2
- package/dist/jsx/layouts/AsyncBoundary.native.js.map +1 -1
- package/dist/jsx/layouts/EmptyState.mjs +7 -3
- package/dist/jsx/layouts/EmptyState.mjs.map +1 -1
- package/dist/jsx/layouts/EmptyState.native.js +10 -6
- package/dist/jsx/layouts/EmptyState.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/attachments.mjs +4 -4
- package/dist/jsx/layouts/attachments.mjs.map +1 -1
- package/dist/jsx/layouts/attachments.native.js +4 -4
- package/dist/jsx/layouts/attachments.native.js.map +1 -1
- package/dist/jsx/layouts/breadcrumbs.mjs +1 -2
- package/dist/jsx/layouts/breadcrumbs.mjs.map +1 -1
- package/dist/jsx/layouts/breadcrumbs.native.js +1 -2
- package/dist/jsx/layouts/breadcrumbs.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 +51 -10
- package/dist/jsx/layouts/page.mjs.map +1 -1
- package/dist/jsx/layouts/page.native.js +52 -9
- package/dist/jsx/layouts/page.native.js.map +1 -1
- package/dist/jsx/layouts/sidebar.mjs +2 -2
- package/dist/jsx/layouts/sidebar.mjs.map +1 -1
- package/dist/jsx/layouts/sidebar.native.js +2 -2
- package/dist/jsx/layouts/sidebar.native.js.map +1 -1
- package/dist/jsx/layouts/tags.mjs +6 -7
- package/dist/jsx/layouts/tags.mjs.map +1 -1
- package/dist/jsx/layouts/tags.native.js +6 -9
- package/dist/jsx/layouts/tags.native.js.map +1 -1
- package/dist/jsx/layouts/timeline.mjs +5 -5
- package/dist/jsx/layouts/timeline.mjs.map +1 -1
- package/dist/jsx/layouts/timeline.native.js +5 -5
- package/dist/jsx/layouts/timeline.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/surfaces.mjs +1 -0
- package/dist/jsx/surfaces.mjs.map +1 -1
- package/dist/jsx/surfaces.native.js +1 -0
- package/dist/jsx/surfaces.native.js.map +1 -1
- package/dist/jsx/views/Calendar.mjs +11 -8
- package/dist/jsx/views/Calendar.mjs.map +1 -1
- package/dist/jsx/views/Calendar.native.js +11 -8
- package/dist/jsx/views/Calendar.native.js.map +1 -1
- package/dist/jsx/views/Dashboard.mjs +118 -25
- package/dist/jsx/views/Dashboard.mjs.map +1 -1
- package/dist/jsx/views/Dashboard.native.js +158 -52
- package/dist/jsx/views/Dashboard.native.js.map +1 -1
- package/dist/jsx/views/Gantt.mjs +379 -96
- package/dist/jsx/views/Gantt.mjs.map +1 -1
- package/dist/jsx/views/Gantt.native.js +446 -97
- package/dist/jsx/views/Gantt.native.js.map +1 -1
- package/dist/jsx/views/Kanban.mjs +2 -2
- package/dist/jsx/views/Kanban.mjs.map +1 -1
- package/dist/jsx/views/Kanban.native.js +2 -2
- package/dist/jsx/views/Kanban.native.js.map +1 -1
- package/dist/jsx/views/ReportBuilder.mjs +4 -4
- package/dist/jsx/views/ReportBuilder.mjs.map +1 -1
- package/dist/jsx/views/ReportBuilder.native.js +4 -4
- package/dist/jsx/views/ReportBuilder.native.js.map +1 -1
- package/dist/jsx/views/TreeView.mjs +104 -7
- package/dist/jsx/views/TreeView.mjs.map +1 -1
- package/dist/jsx/views/TreeView.native.js +115 -6
- package/dist/jsx/views/TreeView.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/dist/jsx/views/treeViewReveal.mjs +29 -0
- package/dist/jsx/views/treeViewReveal.mjs.map +1 -0
- package/dist/jsx/views/treeViewReveal.native.js +80 -0
- package/dist/jsx/views/treeViewReveal.native.js.map +1 -0
- package/package.json +11 -9
- package/src/Accordion/index.tsx +4 -6
- 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/Chip/index.tsx +1 -1
- package/src/Collapsible.stories.tsx +2 -2
- package/src/ContextMenu/index.tsx +3 -3
- 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 +70 -9
- package/src/LinearGradient.stories.tsx +2 -2
- package/src/Meter/Meter.spec.tsx +71 -6
- package/src/Meter/Meter.stories.tsx +38 -0
- package/src/Meter/index.tsx +12 -6
- package/src/Meter/meter.ts +6 -1
- package/src/Pagination.tsx +2 -2
- package/src/Panel.stories.tsx +1 -1
- package/src/ProgressSteps/index.tsx +3 -3
- package/src/Quote/index.tsx +1 -3
- package/src/SortableList/SortableList.spec.tsx +3 -3
- package/src/Tabs/Tabs.spec.tsx +43 -3
- package/src/Tabs/Tabs.stories.tsx +10 -1
- package/src/Tabs/index.tsx +21 -15
- package/src/Toast/Toast.spec.tsx +176 -49
- package/src/Toast/index.tsx +73 -6
- package/src/TreeSelect/index.tsx +61 -1
- 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 -10
- 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/code/HighlightedCode/index.tsx +1 -1
- package/src/componentColors.ts +6 -4
- 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/Image/ImageFrame.tsx +2 -2
- package/src/images/SvgUri/index.native.ts +11 -3
- package/src/layouts/AsyncBoundary.tsx +1 -2
- package/src/layouts/EmptyState.spec.tsx +58 -1
- package/src/layouts/EmptyState.stories.tsx +2 -2
- package/src/layouts/EmptyState.tsx +11 -7
- package/src/layouts/KeyboardAvoidingWrapper/KeyboardAvoidingWrapper.stories.tsx +3 -3
- 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 +61 -10
- package/src/layouts/PaneScaffold.tsx +156 -58
- package/src/layouts/SafeAreaWrapper/SafeAreaWrapper.stories.tsx +3 -3
- package/src/layouts/ScreenToolbar.stories.tsx +6 -23
- package/src/layouts/attachments.tsx +4 -4
- package/src/layouts/breadcrumbs.tsx +1 -2
- 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 +48 -11
- package/src/layouts/sidebar.tsx +2 -2
- package/src/layouts/tags-trigger.spec.tsx +32 -0
- package/src/layouts/tags.tsx +6 -9
- package/src/layouts/timeline.tsx +5 -5
- package/src/shared/useKeyboardInset.native.ts +43 -0
- package/src/shared/useKeyboardInset.ts +2 -41
- package/src/surfaces.spec.tsx +97 -3
- package/src/surfaces.tsx +4 -2
- package/src/tamagui.spec.ts +63 -0
- package/src/textAccentSecondary.spec.tsx +187 -0
- package/src/views/Calendar.tsx +9 -8
- package/src/views/Dashboard.stories.tsx +38 -1
- package/src/views/Dashboard.tsx +132 -29
- 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 +567 -99
- package/src/views/Kanban.native.tsx +2 -2
- package/src/views/Kanban.spec.tsx +11 -0
- package/src/views/Kanban.tsx +2 -2
- package/src/views/ReportBuilder.tsx +4 -4
- package/src/views/TreeView.reveal.spec.tsx +167 -0
- package/src/views/TreeView.reveal.stories.tsx +115 -0
- package/src/views/TreeView.scroll.spec.tsx +196 -0
- package/src/views/TreeView.spec.tsx +1 -1
- package/src/views/TreeView.tsx +159 -16
- package/src/views/ganttMath.ts +142 -4
- package/src/views/index.ts +44 -1
- package/src/views/treeViewReveal.spec.ts +83 -0
- package/src/views/treeViewReveal.ts +45 -0
- package/src/views/views.spec.tsx +52 -12
- package/types/Accordion/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/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/Meter/meter.d.ts +5 -1
- package/types/Meter/meter.d.ts.map +1 -1
- package/types/Quote/index.d.ts.map +1 -1
- package/types/Tabs/index.d.ts +1 -1
- 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/TreeSelect/index.d.ts +9 -1
- package/types/TreeSelect/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/componentColors.d.ts +1 -4
- package/types/componentColors.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/Image/ImageFrame.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/layouts/AsyncBoundary.d.ts.map +1 -1
- package/types/layouts/EmptyState.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/breadcrumbs.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/layouts/tags.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/surfaces.d.ts.map +1 -1
- package/types/views/Calendar.d.ts.map +1 -1
- package/types/views/Dashboard.d.ts +7 -3
- 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/TreeView.d.ts +10 -1
- package/types/views/TreeView.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/types/views/treeViewReveal.d.ts +11 -0
- package/types/views/treeViewReveal.d.ts.map +1 -0
package/src/charts/LineChart.tsx
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { useTranslation } from "../shared/i18n";
|
|
2
2
|
import type { YStackProps } from "tamagui";
|
|
3
3
|
import { XAxis, YAxis } from "./Axis";
|
|
4
|
+
import { ChartDataFrame } from "./ChartDataView";
|
|
4
5
|
import { ChartSurface } from "./ChartSurface";
|
|
5
|
-
import { describeChart, describeDatum } from "./accessibility";
|
|
6
|
+
import { chartDatumText, describeChart, describeDatum } from "./accessibility";
|
|
6
7
|
import { computeCartesianPlot, thinCategories } from "./composeChart";
|
|
7
8
|
import {
|
|
8
9
|
createLinearScale,
|
|
@@ -89,84 +90,98 @@ export function LineChart({
|
|
|
89
90
|
const interactive = Boolean(onDatumPress || onDatumHoverIn || onDatumHoverOut);
|
|
90
91
|
|
|
91
92
|
return (
|
|
92
|
-
<
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
93
|
+
<ChartDataFrame data={data} title={title} valueFormatter={valueFormatter} width={width}>
|
|
94
|
+
<ChartSurface
|
|
95
|
+
label={ariaLabel}
|
|
96
|
+
proof={{
|
|
97
|
+
kind: showArea ? "area" : "line",
|
|
98
|
+
separated: false,
|
|
99
|
+
datumText: false,
|
|
100
|
+
datumValues: chartDatumText(data, valueFormatter),
|
|
101
|
+
datumCount: data.length,
|
|
102
|
+
}}
|
|
103
|
+
height={height}
|
|
104
|
+
width={width}
|
|
105
|
+
{...stackProps}
|
|
106
|
+
>
|
|
107
|
+
{(size) => {
|
|
108
|
+
const domain = valueDomain(data.map((datum) => datum.value));
|
|
109
|
+
const marginScale = createLinearScale({ domain, range: [0, 1] });
|
|
110
|
+
const tickValues = getLinearTicks(marginScale, yTicks);
|
|
111
|
+
const plot = computeCartesianPlot(size, {
|
|
112
|
+
showXAxis,
|
|
113
|
+
showYAxis,
|
|
114
|
+
yTickLabels: tickValues.map((value) => format(value)),
|
|
115
|
+
fontSize: labelFontSize,
|
|
116
|
+
});
|
|
117
|
+
if (plot.width <= 0 || plot.height <= 0 || data.length === 0) return null;
|
|
118
|
+
const xScale = createPointScale({
|
|
119
|
+
domain: data.map((datum) => datum.label),
|
|
120
|
+
range: [plot.x, plot.x + plot.width],
|
|
121
|
+
padding: 0.5,
|
|
122
|
+
});
|
|
123
|
+
const yScale = createLinearScale({
|
|
124
|
+
domain,
|
|
125
|
+
range: [plot.y + plot.height, plot.y],
|
|
126
|
+
});
|
|
127
|
+
const points = data.map((datum) => ({
|
|
128
|
+
x: xScale(datum.label) ?? plot.x,
|
|
129
|
+
y: yScale(datum.value),
|
|
130
|
+
}));
|
|
131
|
+
return (
|
|
132
|
+
<>
|
|
133
|
+
{showYAxis || showGrid ? (
|
|
134
|
+
<YAxis
|
|
135
|
+
plot={plot}
|
|
136
|
+
scale={yScale}
|
|
137
|
+
ticks={yTicks}
|
|
138
|
+
tickFormat={(value) => format(value)}
|
|
139
|
+
showLabels={showYAxis}
|
|
140
|
+
showGrid={showGrid}
|
|
141
|
+
/>
|
|
142
|
+
) : null}
|
|
143
|
+
{showArea ? (
|
|
144
|
+
<AreaSeries
|
|
145
|
+
points={points}
|
|
146
|
+
baseline={plot.y + plot.height}
|
|
147
|
+
color={stroke}
|
|
148
|
+
opacity={areaOpacity}
|
|
149
|
+
curve={curve}
|
|
150
|
+
/>
|
|
151
|
+
) : null}
|
|
152
|
+
<LineSeries
|
|
153
|
+
data={data}
|
|
131
154
|
points={points}
|
|
132
|
-
baseline={plot.y + plot.height}
|
|
133
155
|
color={stroke}
|
|
134
|
-
|
|
156
|
+
strokeWidth={strokeWidth}
|
|
135
157
|
curve={curve}
|
|
158
|
+
showPoints={showPoints}
|
|
159
|
+
bounds={size}
|
|
160
|
+
onDatumPress={onDatumPress}
|
|
161
|
+
onDatumHoverIn={onDatumHoverIn}
|
|
162
|
+
onDatumHoverOut={onDatumHoverOut}
|
|
163
|
+
datumLabel={
|
|
164
|
+
interactive
|
|
165
|
+
? (datum) => describeDatum({ datum, formatValue: valueFormatter })
|
|
166
|
+
: undefined
|
|
167
|
+
}
|
|
136
168
|
/>
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
}
|
|
154
|
-
/>
|
|
155
|
-
{showXAxis ? (
|
|
156
|
-
<XAxis
|
|
157
|
-
plot={plot}
|
|
158
|
-
scale={xScale}
|
|
159
|
-
tickValues={thinCategories(
|
|
160
|
-
data.map((datum) => datum.label),
|
|
161
|
-
plot.width,
|
|
162
|
-
labelFontSize,
|
|
163
|
-
)}
|
|
164
|
-
/>
|
|
165
|
-
) : null}
|
|
166
|
-
</>
|
|
167
|
-
);
|
|
168
|
-
}}
|
|
169
|
-
</ChartSurface>
|
|
169
|
+
{showXAxis ? (
|
|
170
|
+
<XAxis
|
|
171
|
+
plot={plot}
|
|
172
|
+
scale={xScale}
|
|
173
|
+
tickValues={thinCategories(
|
|
174
|
+
data.map((datum) => datum.label),
|
|
175
|
+
plot.width,
|
|
176
|
+
labelFontSize,
|
|
177
|
+
)}
|
|
178
|
+
/>
|
|
179
|
+
) : null}
|
|
180
|
+
</>
|
|
181
|
+
);
|
|
182
|
+
}}
|
|
183
|
+
</ChartSurface>
|
|
184
|
+
</ChartDataFrame>
|
|
170
185
|
);
|
|
171
186
|
}
|
|
172
187
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Preset } from "@multiplatform.one/theme";
|
|
2
|
+
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
3
|
+
import { cleanup } from "@testing-library/react";
|
|
4
|
+
import { afterEach, expect, it } from "vitest";
|
|
5
|
+
import { PieChart } from "./PieChart";
|
|
6
|
+
|
|
7
|
+
afterEach(cleanup);
|
|
8
|
+
|
|
9
|
+
it.each(["regular", "bold"] as const)(
|
|
10
|
+
"propagates %s body weight to legend labels and values",
|
|
11
|
+
(fontWeight) => {
|
|
12
|
+
const { container } = renderWithProviders(
|
|
13
|
+
<Preset overrides={{ fontWeight, bodyFont: "mono" }}>
|
|
14
|
+
<PieChart data={[{ label: "Enterprise", value: 55 }]} />
|
|
15
|
+
</Preset>,
|
|
16
|
+
);
|
|
17
|
+
const label = container.querySelector("[data-mpo-chart-datum-label]")!;
|
|
18
|
+
const value = container.querySelector("[data-mpo-chart-datum-value]")!;
|
|
19
|
+
expect(label.textContent).toBe("Enterprise");
|
|
20
|
+
expect(value.textContent).toBe("55");
|
|
21
|
+
for (const node of [label, value]) {
|
|
22
|
+
expect(getComputedStyle(node).fontWeight).toBe(fontWeight === "bold" ? "700" : "400");
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
);
|
package/src/charts/PieChart.tsx
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { useResolvedKnobs } from "@multiplatform.one/theme";
|
|
2
2
|
import { useTranslation } from "../shared/i18n";
|
|
3
3
|
import { Text, XStack, YStack, type YStackProps } from "tamagui";
|
|
4
|
-
import {
|
|
4
|
+
import { ChartDataFrame } from "./ChartDataView";
|
|
5
5
|
import { ChartSurface } from "./ChartSurface";
|
|
6
|
-
import { describeChart, describeDatum } from "./accessibility";
|
|
6
|
+
import { chartDatumText, describeChart, describeDatum } from "./accessibility";
|
|
7
7
|
import { resolveSeriesFills } from "./composeChart";
|
|
8
|
-
import { formatChartValue } from "./math";
|
|
8
|
+
import { formatChartValue, pieSlices, canMaskPieSlices } from "./math";
|
|
9
9
|
import { PieSeries } from "./series";
|
|
10
|
+
import { chartDatumTextProps, chartWebProps } from "./svg";
|
|
10
11
|
import type { ChartDatum, ChartDatumEvents } from "./types";
|
|
11
12
|
import { useChartTheme } from "./useChartTheme";
|
|
12
13
|
|
|
@@ -21,7 +22,7 @@ export interface PieChartProps
|
|
|
21
22
|
* innerRadius) — the card surface shows through on every platform.
|
|
22
23
|
*/
|
|
23
24
|
donut?: boolean | number;
|
|
24
|
-
/**
|
|
25
|
+
/** Explicit radians between slices. Omit for the default boundary mask. */
|
|
25
26
|
padAngle?: number;
|
|
26
27
|
/** Explicit slice colors (data values — pass through untouched). */
|
|
27
28
|
colors?: string[];
|
|
@@ -51,7 +52,7 @@ export function PieChart({
|
|
|
51
52
|
data,
|
|
52
53
|
height = 200,
|
|
53
54
|
donut = false,
|
|
54
|
-
padAngle
|
|
55
|
+
padAngle,
|
|
55
56
|
colors,
|
|
56
57
|
showLegend = true,
|
|
57
58
|
valueFormatter,
|
|
@@ -81,7 +82,7 @@ export function PieChart({
|
|
|
81
82
|
const innerRatio =
|
|
82
83
|
donut === false ? 0 : donut === true ? DEFAULT_DONUT_RATIO : Math.min(Math.max(donut, 0), 0.9);
|
|
83
84
|
|
|
84
|
-
|
|
85
|
+
const chart = (
|
|
85
86
|
// LC-10: `flexShrink` + `minWidth 0` let a row parent (e.g. Card.Footer)
|
|
86
87
|
// constrain the chart below its intrinsic width — the wrap then stacks
|
|
87
88
|
// the legend under the pie instead of painting past the frame.
|
|
@@ -91,10 +92,25 @@ export function PieChart({
|
|
|
91
92
|
flexShrink={1}
|
|
92
93
|
minWidth={0}
|
|
93
94
|
{...knobProps.gap}
|
|
95
|
+
{...chartWebProps({ "data-mpo-chart-owner": "true" })}
|
|
94
96
|
{...stackProps}
|
|
95
97
|
>
|
|
96
98
|
<YStack width={height} height={height}>
|
|
97
|
-
<ChartSurface
|
|
99
|
+
<ChartSurface
|
|
100
|
+
label={ariaLabel}
|
|
101
|
+
proof={{
|
|
102
|
+
kind: innerRatio > 0 ? "donut" : "pie",
|
|
103
|
+
separated:
|
|
104
|
+
padAngle === undefined
|
|
105
|
+
? canMaskPieSlices(pieSlices(data), (height / 2) * innerRatio, height / 2)
|
|
106
|
+
: padAngle > 0,
|
|
107
|
+
datumText: showLegend,
|
|
108
|
+
datumValues: chartDatumText(data, valueFormatter),
|
|
109
|
+
datumCount: data.length,
|
|
110
|
+
}}
|
|
111
|
+
height={height}
|
|
112
|
+
width={height}
|
|
113
|
+
>
|
|
98
114
|
{(size) => {
|
|
99
115
|
const outerRadius = Math.min(size.width, size.height) / 2;
|
|
100
116
|
return (
|
|
@@ -129,7 +145,13 @@ export function PieChart({
|
|
|
129
145
|
{...{ "data-pie-legend": "true" }}
|
|
130
146
|
>
|
|
131
147
|
{data.map((datum, index) => (
|
|
132
|
-
<XStack
|
|
148
|
+
<XStack
|
|
149
|
+
key={`${datum.label}-${index}`}
|
|
150
|
+
{...chartDatumTextProps(index)}
|
|
151
|
+
gap="$2"
|
|
152
|
+
alignItems="center"
|
|
153
|
+
minWidth={0}
|
|
154
|
+
>
|
|
133
155
|
{/* Legend keys are chart CHROME, not marks: the swatch follows
|
|
134
156
|
the radius knob and goes square in the `none` world (Axiom 3
|
|
135
157
|
NULL). The pinned $2 arc was knob-dead (D-09 / LC-60). */}
|
|
@@ -142,10 +164,22 @@ export function PieChart({
|
|
|
142
164
|
/>
|
|
143
165
|
{/* The label yields (truncates) before the value — values are
|
|
144
166
|
data and never truncate (Axiom 11). */}
|
|
145
|
-
<Text
|
|
167
|
+
<Text
|
|
168
|
+
{...chartWebProps({ "data-mpo-chart-datum-label": "true" })}
|
|
169
|
+
{...knobProps.body}
|
|
170
|
+
fontSize="$2"
|
|
171
|
+
color={knobProps.textAccentColor}
|
|
172
|
+
flex={1}
|
|
173
|
+
numberOfLines={1}
|
|
174
|
+
>
|
|
146
175
|
{datum.label}
|
|
147
176
|
</Text>
|
|
148
|
-
<Text
|
|
177
|
+
<Text
|
|
178
|
+
{...chartWebProps({ "data-mpo-chart-datum-value": "true" })}
|
|
179
|
+
{...knobProps.body}
|
|
180
|
+
fontSize="$2"
|
|
181
|
+
flexShrink={0}
|
|
182
|
+
>
|
|
149
183
|
{format(datum.value)}
|
|
150
184
|
</Text>
|
|
151
185
|
</XStack>
|
|
@@ -154,4 +188,11 @@ export function PieChart({
|
|
|
154
188
|
) : null}
|
|
155
189
|
</XStack>
|
|
156
190
|
);
|
|
191
|
+
return showLegend ? (
|
|
192
|
+
chart
|
|
193
|
+
) : (
|
|
194
|
+
<ChartDataFrame data={data} title={title} valueFormatter={valueFormatter}>
|
|
195
|
+
{chart}
|
|
196
|
+
</ChartDataFrame>
|
|
197
|
+
);
|
|
157
198
|
}
|
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;
|