@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
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MPO-154 — `textAccent` reaches SECONDARY text, not just body text.
|
|
3
|
+
*
|
|
4
|
+
* The `secondary` / `muted` keys on componentColors' text table were a static
|
|
5
|
+
* `$color11` read straight into the `color` prop, so every helper, caption and
|
|
6
|
+
* inactive label rendered the same ink at `low`, `medium` and `high`. The resolver
|
|
7
|
+
* already answers this: `knobProps.textAccentColor` is `$color11` at the two
|
|
8
|
+
* dim stops (the AA legibility floor) and `$color` at `high`.
|
|
9
|
+
*
|
|
10
|
+
* Measurement follows the Text.spec.tsx discipline: read the TEXT NODE's
|
|
11
|
+
* `_col-` atomic class, compare between knob stops by identity, never against
|
|
12
|
+
* a hashed literal. Meter publishes its resolved value ink on
|
|
13
|
+
* `data-meter-value-color`, so that surface asserts the token directly.
|
|
14
|
+
*
|
|
15
|
+
* Both schemes are covered because `textAccent` is scheme-independent by
|
|
16
|
+
* construction — the tokens are theme-relative — and a regression that
|
|
17
|
+
* re-pins one scheme would show up here.
|
|
18
|
+
*/
|
|
19
|
+
import { cleanup, screen } from "@testing-library/react";
|
|
20
|
+
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
21
|
+
import { Preset } from "@multiplatform.one/theme";
|
|
22
|
+
import type { ReactElement } from "react";
|
|
23
|
+
import { Theme } from "tamagui";
|
|
24
|
+
import { afterEach, describe, expect, it } from "vitest";
|
|
25
|
+
import { Accordion } from "./Accordion";
|
|
26
|
+
import { componentColors } from "./componentColors";
|
|
27
|
+
import { Meter } from "./Meter";
|
|
28
|
+
import { Quote } from "./Quote";
|
|
29
|
+
import { Tabs } from "./Tabs";
|
|
30
|
+
|
|
31
|
+
afterEach(cleanup);
|
|
32
|
+
|
|
33
|
+
type Accent = "low" | "medium" | "high";
|
|
34
|
+
type Scheme = "light" | "dark";
|
|
35
|
+
|
|
36
|
+
function inScheme(scheme: Scheme, node: ReactElement): ReactElement {
|
|
37
|
+
return scheme === "dark" ? <Theme name="dark">{node}</Theme> : node;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** The TEXT NODE's colour atom, by identity — hashed names never asserted. */
|
|
41
|
+
function inkAtoms(el: Element): string[] {
|
|
42
|
+
return String((el as HTMLElement).className || "")
|
|
43
|
+
.split(" ")
|
|
44
|
+
.filter((c) => c.startsWith("_col-"))
|
|
45
|
+
.sort();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function inkOf(scheme: Scheme, accent: Accent, label: string, node: ReactElement): string[] {
|
|
49
|
+
renderWithProviders(inScheme(scheme, <Preset overrides={{ textAccent: accent }}>{node}</Preset>));
|
|
50
|
+
const atoms = inkAtoms(screen.getByText(label));
|
|
51
|
+
cleanup();
|
|
52
|
+
return atoms;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const schemes: Scheme[] = ["light", "dark"];
|
|
56
|
+
|
|
57
|
+
describe("Tabs — textAccent reaches the inactive tab label (MPO-154)", () => {
|
|
58
|
+
const items = [
|
|
59
|
+
{ value: "address", label: "Address & Contact", content: <>address panel</> },
|
|
60
|
+
{ value: "settings", label: "Settings", content: <>settings panel</> },
|
|
61
|
+
];
|
|
62
|
+
const tabs = <Tabs items={items} defaultValue="address" />;
|
|
63
|
+
|
|
64
|
+
for (const scheme of schemes) {
|
|
65
|
+
it(`${scheme}: the inactive label moves between low and high`, () => {
|
|
66
|
+
const low = inkOf(scheme, "low", "Settings", tabs);
|
|
67
|
+
const high = inkOf(scheme, "high", "Settings", tabs);
|
|
68
|
+
expect(low).not.toHaveLength(0);
|
|
69
|
+
expect(high).not.toHaveLength(0);
|
|
70
|
+
expect(high).not.toEqual(low);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it(`${scheme}: the inactive label keeps the AA floor at low and medium`, () => {
|
|
74
|
+
expect(inkOf(scheme, "low", "Settings", tabs)).toEqual(
|
|
75
|
+
inkOf(scheme, "medium", "Settings", tabs),
|
|
76
|
+
);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
describe("Accordion — textAccent reaches the section description (MPO-154)", () => {
|
|
82
|
+
const description = "Where should we deliver the order?";
|
|
83
|
+
const accordion = (
|
|
84
|
+
<Accordion defaultValue="shipping">
|
|
85
|
+
<Accordion.Item value="shipping">
|
|
86
|
+
<Accordion.Trigger description={description}>Shipping details</Accordion.Trigger>
|
|
87
|
+
<Accordion.Content>ship</Accordion.Content>
|
|
88
|
+
</Accordion.Item>
|
|
89
|
+
</Accordion>
|
|
90
|
+
);
|
|
91
|
+
|
|
92
|
+
for (const scheme of schemes) {
|
|
93
|
+
it(`${scheme}: the description moves between low and high`, () => {
|
|
94
|
+
const low = inkOf(scheme, "low", description, accordion);
|
|
95
|
+
const high = inkOf(scheme, "high", description, accordion);
|
|
96
|
+
expect(low).not.toHaveLength(0);
|
|
97
|
+
expect(high).not.toHaveLength(0);
|
|
98
|
+
expect(high).not.toEqual(low);
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
it(`${scheme}: the description keeps the AA floor at low and medium`, () => {
|
|
102
|
+
expect(inkOf(scheme, "low", description, accordion)).toEqual(
|
|
103
|
+
inkOf(scheme, "medium", description, accordion),
|
|
104
|
+
);
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
describe("Quote — textAccent reaches the attribution (MPO-154)", () => {
|
|
110
|
+
const quote = <Quote cite="Alan Kay">The best way to predict the future.</Quote>;
|
|
111
|
+
|
|
112
|
+
// The attribution renders as `<cite>— {name}</cite>`, two text runs in one
|
|
113
|
+
// node, so getByText cannot reach it. Read the cite element itself.
|
|
114
|
+
function citeInk(scheme: Scheme, accent: Accent): string[] {
|
|
115
|
+
const { container } = renderWithProviders(
|
|
116
|
+
inScheme(scheme, <Preset overrides={{ textAccent: accent }}>{quote}</Preset>),
|
|
117
|
+
);
|
|
118
|
+
const cite = container.querySelector("cite");
|
|
119
|
+
expect(cite?.textContent).toContain("Alan Kay");
|
|
120
|
+
const atoms = inkAtoms(cite as Element);
|
|
121
|
+
cleanup();
|
|
122
|
+
return atoms;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
for (const scheme of schemes) {
|
|
126
|
+
it(`${scheme}: the attribution moves between low and high`, () => {
|
|
127
|
+
const low = citeInk(scheme, "low");
|
|
128
|
+
const high = citeInk(scheme, "high");
|
|
129
|
+
expect(low).not.toHaveLength(0);
|
|
130
|
+
expect(high).not.toHaveLength(0);
|
|
131
|
+
expect(high).not.toEqual(low);
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
it(`${scheme}: the attribution keeps the AA floor at low and medium`, () => {
|
|
135
|
+
expect(citeInk(scheme, "low")).toEqual(citeInk(scheme, "medium"));
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
describe("Meter — textAccent reaches the ok-zone value readout (MPO-154)", () => {
|
|
141
|
+
const meter = <Meter label="Disk usage" value={6.2} min={0} max={8} unit="GB" />;
|
|
142
|
+
|
|
143
|
+
function valueInk(scheme: Scheme, accent: Accent): string | null {
|
|
144
|
+
const { container } = renderWithProviders(
|
|
145
|
+
inScheme(scheme, <Preset overrides={{ textAccent: accent }}>{meter}</Preset>),
|
|
146
|
+
);
|
|
147
|
+
const token = container
|
|
148
|
+
.querySelector("[data-meter-value]")
|
|
149
|
+
?.getAttribute("data-meter-value-color");
|
|
150
|
+
cleanup();
|
|
151
|
+
return token ?? null;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
for (const scheme of schemes) {
|
|
155
|
+
it(`${scheme}: the ok value readout rides the resolver, not a static $color11`, () => {
|
|
156
|
+
expect(valueInk(scheme, "low")).toBe("$color11");
|
|
157
|
+
expect(valueInk(scheme, "medium")).toBe("$color11");
|
|
158
|
+
expect(valueInk(scheme, "high")).toBe("$color");
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
it("a verdict zone keeps its semantic ink at every stop", () => {
|
|
163
|
+
const warned = (accent: Accent) => {
|
|
164
|
+
const { container } = renderWithProviders(
|
|
165
|
+
<Preset overrides={{ textAccent: accent }}>
|
|
166
|
+
<Meter label="Disk usage" value={7.5} min={0} max={8} low={2} high={6} unit="GB" />
|
|
167
|
+
</Preset>,
|
|
168
|
+
);
|
|
169
|
+
const token = container
|
|
170
|
+
.querySelector("[data-meter-value]")
|
|
171
|
+
?.getAttribute("data-meter-value-color");
|
|
172
|
+
cleanup();
|
|
173
|
+
return token;
|
|
174
|
+
};
|
|
175
|
+
expect(warned("low")).toBe("$orange11");
|
|
176
|
+
expect(warned("high")).toBe("$orange11");
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
describe("componentColors keeps no second answer for secondary ink (MPO-154)", () => {
|
|
181
|
+
it("the text table exposes no static secondary or muted step", () => {
|
|
182
|
+
const text = componentColors.text as Record<string, string | undefined>;
|
|
183
|
+
expect(text.secondary).toBeUndefined();
|
|
184
|
+
expect(text.muted).toBeUndefined();
|
|
185
|
+
expect(text.primary).toBe("$color");
|
|
186
|
+
});
|
|
187
|
+
});
|
package/src/views/Calendar.tsx
CHANGED
|
@@ -434,6 +434,7 @@ function DayNumberDisc({
|
|
|
434
434
|
nestedBox: NestedControlBox;
|
|
435
435
|
label: NestedLabel;
|
|
436
436
|
}) {
|
|
437
|
+
const { knobProps } = useResolvedKnobs();
|
|
437
438
|
return (
|
|
438
439
|
<YStack
|
|
439
440
|
{...nestedBox}
|
|
@@ -455,7 +456,7 @@ function DayNumberDisc({
|
|
|
455
456
|
{...label}
|
|
456
457
|
fontWeight={today ? "700" : label.fontWeight}
|
|
457
458
|
color={
|
|
458
|
-
today ? (onAccent ?? "$accentColor") : inMonth ? "$color" :
|
|
459
|
+
today ? (onAccent ?? "$accentColor") : inMonth ? "$color" : knobProps.textAccentColor
|
|
459
460
|
}
|
|
460
461
|
textAlign="center"
|
|
461
462
|
>
|
|
@@ -1731,7 +1732,7 @@ export function Calendar({
|
|
|
1731
1732
|
role="columnheader"
|
|
1732
1733
|
{...{ backgroundColor: componentColors.surface.background }}
|
|
1733
1734
|
>
|
|
1734
|
-
<Text {...nestedKnobs.label} fontWeight="500" color={
|
|
1735
|
+
<Text {...nestedKnobs.label} fontWeight="500" color={knobProps.textAccentColor}>
|
|
1735
1736
|
{day}
|
|
1736
1737
|
</Text>
|
|
1737
1738
|
</YStack>
|
|
@@ -1851,7 +1852,7 @@ export function Calendar({
|
|
|
1851
1852
|
hoverStyle={{ opacity: 0.7 }}
|
|
1852
1853
|
{...{ "data-calendar-overflow": String(hiddenCount) }}
|
|
1853
1854
|
>
|
|
1854
|
-
<Text fontSize="$1" color={
|
|
1855
|
+
<Text fontSize="$1" color={knobProps.textAccentColor}>
|
|
1855
1856
|
{withInterp(t("+{{count}} more"), { count: hiddenCount })}
|
|
1856
1857
|
</Text>
|
|
1857
1858
|
</XStack>
|
|
@@ -2073,7 +2074,7 @@ export function Calendar({
|
|
|
2073
2074
|
onDateSelect?.(day);
|
|
2074
2075
|
}}
|
|
2075
2076
|
>
|
|
2076
|
-
<Text {...nestedKnobs.label} fontWeight="500" color={
|
|
2077
|
+
<Text {...nestedKnobs.label} fontWeight="500" color={knobProps.textAccentColor}>
|
|
2077
2078
|
{weekdayNames[day.getDay()]}
|
|
2078
2079
|
</Text>
|
|
2079
2080
|
<DayNumberDisc
|
|
@@ -2094,7 +2095,7 @@ export function Calendar({
|
|
|
2094
2095
|
{/* All-day / untimed strip (also the day-granularity drop row) */}
|
|
2095
2096
|
<XStack {...hairline.bottom} borderColor="$borderColor" minHeight={MIN_PRESS_TARGET}>
|
|
2096
2097
|
<YStack width={56} justifyContent="center" alignItems="flex-end" paddingInlineEnd="$2">
|
|
2097
|
-
<Text fontSize="$1" color={
|
|
2098
|
+
<Text fontSize="$1" color={knobProps.textAccentColor}>
|
|
2098
2099
|
{t("All day")}
|
|
2099
2100
|
</Text>
|
|
2100
2101
|
</YStack>
|
|
@@ -2135,7 +2136,7 @@ export function Calendar({
|
|
|
2135
2136
|
<YStack width={56}>
|
|
2136
2137
|
{hours.map((hour) => (
|
|
2137
2138
|
<YStack key={hour} height={hourHeight} alignItems="flex-end" paddingInlineEnd="$2">
|
|
2138
|
-
<Text fontSize="$1" color={
|
|
2139
|
+
<Text fontSize="$1" color={knobProps.textAccentColor}>
|
|
2139
2140
|
{formatHour(hour)}
|
|
2140
2141
|
</Text>
|
|
2141
2142
|
</YStack>
|
|
@@ -2305,13 +2306,13 @@ export function Calendar({
|
|
|
2305
2306
|
onChangeText={setDraftTitle}
|
|
2306
2307
|
inputProps={{ autoFocus: true } as any}
|
|
2307
2308
|
/>
|
|
2308
|
-
<Text fontSize="$2" color={
|
|
2309
|
+
<Text fontSize="$2" color={knobProps.textAccentColor}>
|
|
2309
2310
|
{`${formatDayLong(editorHere.start)}, ${formatTimeRangeLabel(
|
|
2310
2311
|
editorHere.start,
|
|
2311
2312
|
editorHere.end,
|
|
2312
2313
|
)}`}
|
|
2313
2314
|
</Text>
|
|
2314
|
-
<Text fontSize="$1" color={
|
|
2315
|
+
<Text fontSize="$1" color={knobProps.textAccentColor}>
|
|
2315
2316
|
{t("Changes apply when the editor closes")}
|
|
2316
2317
|
</Text>
|
|
2317
2318
|
</YStack>
|
|
@@ -8,7 +8,8 @@ import {
|
|
|
8
8
|
UsersIcon,
|
|
9
9
|
} from "@phosphor-icons/react";
|
|
10
10
|
import type { Meta } from "@storybook/react-native-web-vite";
|
|
11
|
-
import {
|
|
11
|
+
import { YStack } from "tamagui";
|
|
12
|
+
import { Dashboard, KPICard, type DashboardWidget } from "./Dashboard";
|
|
12
13
|
|
|
13
14
|
const iconSize = 16;
|
|
14
15
|
|
|
@@ -165,6 +166,42 @@ const meta: Meta = {
|
|
|
165
166
|
|
|
166
167
|
export default meta;
|
|
167
168
|
|
|
169
|
+
export const TrendSentiment = {
|
|
170
|
+
render: () => (
|
|
171
|
+
<YStack width="100%" maxWidth={360} gap="$3">
|
|
172
|
+
<KPICard
|
|
173
|
+
config={{
|
|
174
|
+
id: "improving",
|
|
175
|
+
title: "Improving revenue",
|
|
176
|
+
value: 120,
|
|
177
|
+
trend: "up",
|
|
178
|
+
trendValue: "+12%",
|
|
179
|
+
goodDirection: "up",
|
|
180
|
+
}}
|
|
181
|
+
/>
|
|
182
|
+
<KPICard
|
|
183
|
+
config={{
|
|
184
|
+
id: "worsening",
|
|
185
|
+
title: "Worsening revenue",
|
|
186
|
+
value: 96,
|
|
187
|
+
trend: "down",
|
|
188
|
+
trendValue: "-4%",
|
|
189
|
+
goodDirection: "up",
|
|
190
|
+
}}
|
|
191
|
+
/>
|
|
192
|
+
<KPICard
|
|
193
|
+
config={{
|
|
194
|
+
id: "undeclared",
|
|
195
|
+
title: "Undeclared sentiment",
|
|
196
|
+
value: 102,
|
|
197
|
+
trend: "up",
|
|
198
|
+
trendValue: "2%",
|
|
199
|
+
}}
|
|
200
|
+
/>
|
|
201
|
+
</YStack>
|
|
202
|
+
),
|
|
203
|
+
};
|
|
204
|
+
|
|
168
205
|
export const Default = {
|
|
169
206
|
name: "Main",
|
|
170
207
|
render: () => (
|
package/src/views/Dashboard.tsx
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Meter } from "../Meter";
|
|
2
|
+
import { ChartDataView } from "../charts/ChartDataView";
|
|
2
3
|
import { BarChart } from "../charts/BarChart";
|
|
3
4
|
import { LineChart } from "../charts/LineChart";
|
|
4
5
|
import { PieChart } from "../charts/PieChart";
|
|
@@ -12,7 +13,7 @@ import {
|
|
|
12
13
|
formatPercent,
|
|
13
14
|
useResolvedKnobs,
|
|
14
15
|
} from "@multiplatform.one/theme";
|
|
15
|
-
import React, { useCallback, useMemo, type ReactNode } from "react";
|
|
16
|
+
import React, { useCallback, useMemo, useState, type ReactNode } from "react";
|
|
16
17
|
import { useTranslation } from "../shared/i18n";
|
|
17
18
|
import {
|
|
18
19
|
ScrollView,
|
|
@@ -56,6 +57,13 @@ function trendFill(color: string): string {
|
|
|
56
57
|
return "$color4";
|
|
57
58
|
}
|
|
58
59
|
|
|
60
|
+
function trendInk(color: string): string {
|
|
61
|
+
// Step 11 clears the page, but falls below AA on the status pill's step 4 wash.
|
|
62
|
+
if (color === componentColors.semantic.success) return "$green12";
|
|
63
|
+
if (color === componentColors.semantic.error) return "$red12";
|
|
64
|
+
return color;
|
|
65
|
+
}
|
|
66
|
+
|
|
59
67
|
// ============================================================================
|
|
60
68
|
// Types
|
|
61
69
|
// ============================================================================
|
|
@@ -222,7 +230,7 @@ export interface DashboardProps extends Omit<YStackProps, "children"> {
|
|
|
222
230
|
// Shared card chrome
|
|
223
231
|
// ============================================================================
|
|
224
232
|
|
|
225
|
-
function useWidgetChrome(onPress?:
|
|
233
|
+
function useWidgetChrome(onPress?: YStackProps["onPress"]) {
|
|
226
234
|
const resolved = useResolvedKnobs();
|
|
227
235
|
const { knobProps, control } = resolved;
|
|
228
236
|
const nested = splitNestedControl(knobProps.nestedControl);
|
|
@@ -294,11 +302,11 @@ function TrendPill({
|
|
|
294
302
|
{...radius}
|
|
295
303
|
data-nested-px={px}
|
|
296
304
|
>
|
|
297
|
-
<Text {...label} color={color}>
|
|
305
|
+
<Text {...label} color={trendInk(color)}>
|
|
298
306
|
{symbol}
|
|
299
307
|
</Text>
|
|
300
308
|
{value != null && value !== "" && (
|
|
301
|
-
<Text {...label} color={color}>
|
|
309
|
+
<Text {...label} color={trendInk(color)}>
|
|
302
310
|
{value}
|
|
303
311
|
</Text>
|
|
304
312
|
)}
|
|
@@ -318,15 +326,20 @@ export interface KPICardProps extends Omit<YStackProps, "children"> {
|
|
|
318
326
|
* The one sentinel resolver for trend sentiment color (LC-36
|
|
319
327
|
* TREND-SENTIMENT): color encodes sentiment — `trend × goodDirection` —
|
|
320
328
|
* never direction alone. Undeclared or `"none"` sentiment renders the
|
|
321
|
-
* neutral
|
|
322
|
-
*
|
|
329
|
+
* neutral tier; a metric whose polarity the system doesn't know must not
|
|
330
|
+
* wear a verdict color.
|
|
331
|
+
*
|
|
332
|
+
* MPO-154: the neutral ink is passed in, not looked up. It is ordinary
|
|
333
|
+
* secondary text, so the caller hands over `knobProps.textAccentColor` —
|
|
334
|
+
* a static tier here could not see the `textAccent` knob.
|
|
323
335
|
*/
|
|
324
336
|
export function resolveTrendColor(
|
|
325
337
|
trend: TrendDirection | undefined,
|
|
326
338
|
goodDirection: KPICardConfig["goodDirection"],
|
|
339
|
+
neutral: string,
|
|
327
340
|
): string {
|
|
328
|
-
if (!trend || trend === "neutral") return
|
|
329
|
-
if (!goodDirection || goodDirection === "none") return
|
|
341
|
+
if (!trend || trend === "neutral") return neutral;
|
|
342
|
+
if (!goodDirection || goodDirection === "none") return neutral;
|
|
330
343
|
return trend === goodDirection
|
|
331
344
|
? componentColors.semantic.success
|
|
332
345
|
: componentColors.semantic.error;
|
|
@@ -339,8 +352,13 @@ export function resolveTrendColor(
|
|
|
339
352
|
*/
|
|
340
353
|
export function KPICard({ config, ...stackProps }: KPICardProps) {
|
|
341
354
|
const { t } = useTranslation();
|
|
342
|
-
const {
|
|
355
|
+
const { onPress: consumerOnPress, ...cardProps } = stackProps;
|
|
356
|
+
const onPress = Object.hasOwn(stackProps, "onPress") ? consumerOnPress : config.onClick;
|
|
357
|
+
const { knobProps, nested, interactive } = useWidgetChrome(onPress);
|
|
343
358
|
const { px, box } = nested;
|
|
359
|
+
const [dataActionSize, setDataActionSize] = useState({ width: 0, height: 44 });
|
|
360
|
+
const [dataHeaderHeight, setDataHeaderHeight] = useState(44);
|
|
361
|
+
const hasDataView = Boolean(config.sparkline?.length);
|
|
344
362
|
const formatMetric = useCallback(
|
|
345
363
|
(num: number) => {
|
|
346
364
|
if (config.format === "currency") {
|
|
@@ -360,8 +378,8 @@ export function KPICard({ config, ...stackProps }: KPICardProps) {
|
|
|
360
378
|
);
|
|
361
379
|
|
|
362
380
|
const trendColor = useMemo(
|
|
363
|
-
() => resolveTrendColor(config.trend, config.goodDirection),
|
|
364
|
-
[config.trend, config.goodDirection],
|
|
381
|
+
() => resolveTrendColor(config.trend, config.goodDirection, knobProps.textAccentColor),
|
|
382
|
+
[config.trend, config.goodDirection, knobProps.textAccentColor],
|
|
365
383
|
);
|
|
366
384
|
|
|
367
385
|
const trendSymbol = useMemo(() => {
|
|
@@ -370,15 +388,16 @@ export function KPICard({ config, ...stackProps }: KPICardProps) {
|
|
|
370
388
|
return "—";
|
|
371
389
|
}, [config.trend]);
|
|
372
390
|
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
391
|
+
const content = (
|
|
392
|
+
<>
|
|
393
|
+
<XStack
|
|
394
|
+
justifyContent="space-between"
|
|
395
|
+
alignItems="center"
|
|
396
|
+
{...knobProps.gap}
|
|
397
|
+
onLayout={
|
|
398
|
+
hasDataView ? (event) => setDataHeaderHeight(event.nativeEvent.layout.height) : undefined
|
|
399
|
+
}
|
|
400
|
+
>
|
|
382
401
|
<Text {...knobProps.label} color={knobProps.textAccentColor} flex={1}>
|
|
383
402
|
{config.title}
|
|
384
403
|
</Text>
|
|
@@ -387,6 +406,13 @@ export function KPICard({ config, ...stackProps }: KPICardProps) {
|
|
|
387
406
|
{config.icon}
|
|
388
407
|
</NestedIconWell>
|
|
389
408
|
) : null}
|
|
409
|
+
{hasDataView ? (
|
|
410
|
+
<YStack
|
|
411
|
+
width={dataActionSize.width}
|
|
412
|
+
height={dataActionSize.height}
|
|
413
|
+
pointerEvents="none"
|
|
414
|
+
/>
|
|
415
|
+
) : null}
|
|
390
416
|
</XStack>
|
|
391
417
|
|
|
392
418
|
<Text fontSize="$8" color="$color" {...knobProps.heading}>
|
|
@@ -394,7 +420,12 @@ export function KPICard({ config, ...stackProps }: KPICardProps) {
|
|
|
394
420
|
</Text>
|
|
395
421
|
|
|
396
422
|
{config.sparkline && config.sparkline.length > 0 ? (
|
|
397
|
-
<Sparkline
|
|
423
|
+
<Sparkline
|
|
424
|
+
data={config.sparkline}
|
|
425
|
+
height={px}
|
|
426
|
+
title={config.title}
|
|
427
|
+
valueFormatter={formatMetric}
|
|
428
|
+
/>
|
|
398
429
|
) : null}
|
|
399
430
|
|
|
400
431
|
{(config.trend || config.trendValue) && (
|
|
@@ -414,10 +445,70 @@ export function KPICard({ config, ...stackProps }: KPICardProps) {
|
|
|
414
445
|
)}
|
|
415
446
|
</XStack>
|
|
416
447
|
)}
|
|
417
|
-
|
|
448
|
+
</>
|
|
449
|
+
);
|
|
450
|
+
if (!hasDataView)
|
|
451
|
+
return (
|
|
452
|
+
<Card
|
|
453
|
+
width="100%"
|
|
454
|
+
elevation={knobProps.elevation}
|
|
455
|
+
{...knobProps.surface}
|
|
456
|
+
{...interactive}
|
|
457
|
+
{...stackProps}
|
|
458
|
+
>
|
|
459
|
+
{content}
|
|
460
|
+
</Card>
|
|
461
|
+
);
|
|
462
|
+
return (
|
|
463
|
+
<ChartDataView data={config.sparkline!} title={config.title} valueFormatter={formatMetric}>
|
|
464
|
+
{({ action }) => (
|
|
465
|
+
<Card width="100%" elevation={knobProps.elevation} {...knobProps.surface} {...cardProps}>
|
|
466
|
+
<YStack position="relative">
|
|
467
|
+
<YStack
|
|
468
|
+
{...knobProps.gap}
|
|
469
|
+
{...knobProps.containerRadius}
|
|
470
|
+
{...interactive}
|
|
471
|
+
focusable={Boolean(onPress)}
|
|
472
|
+
{...(isWeb
|
|
473
|
+
? {
|
|
474
|
+
"data-mpo-kpi-navigation": config.id,
|
|
475
|
+
tabIndex: onPress ? 0 : undefined,
|
|
476
|
+
onKeyDown: onPress
|
|
477
|
+
? (event: React.KeyboardEvent<HTMLElement>) => {
|
|
478
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
479
|
+
event.preventDefault();
|
|
480
|
+
if (!event.repeat) event.currentTarget.click();
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
: undefined,
|
|
484
|
+
}
|
|
485
|
+
: {})}
|
|
486
|
+
>
|
|
487
|
+
{content}
|
|
488
|
+
</YStack>
|
|
489
|
+
<YStack
|
|
490
|
+
position="absolute"
|
|
491
|
+
top={Math.max(0, (dataHeaderHeight - dataActionSize.height) / 2)}
|
|
492
|
+
right={0}
|
|
493
|
+
minHeight={44}
|
|
494
|
+
justifyContent="center"
|
|
495
|
+
onLayout={(event) => {
|
|
496
|
+
const { width, height } = event.nativeEvent.layout;
|
|
497
|
+
setDataActionSize((previous) =>
|
|
498
|
+
previous.width === width && previous.height === height
|
|
499
|
+
? previous
|
|
500
|
+
: { width, height },
|
|
501
|
+
);
|
|
502
|
+
}}
|
|
503
|
+
>
|
|
504
|
+
{action}
|
|
505
|
+
</YStack>
|
|
506
|
+
</YStack>
|
|
507
|
+
</Card>
|
|
508
|
+
)}
|
|
509
|
+
</ChartDataView>
|
|
418
510
|
);
|
|
419
511
|
}
|
|
420
|
-
|
|
421
512
|
// ============================================================================
|
|
422
513
|
// Chart Card Component
|
|
423
514
|
// ============================================================================
|
|
@@ -455,11 +546,14 @@ export function ChartCard({ config, colors, headingLevel = 2, ...stackProps }: C
|
|
|
455
546
|
const dataColors = config.colors ?? colors;
|
|
456
547
|
const showXAxis = config.showLabels !== false;
|
|
457
548
|
|
|
458
|
-
|
|
549
|
+
const renderCard = (action?: ReactNode) => (
|
|
459
550
|
<YStack {...knobProps.gap} width="100%" {...stackProps}>
|
|
460
|
-
<
|
|
461
|
-
{
|
|
462
|
-
|
|
551
|
+
<XStack alignItems="center" justifyContent="space-between" {...knobProps.gap}>
|
|
552
|
+
<HeadingTag flex={1} minWidth={0} margin={0} {...knobProps.heading} {...sectionHeading}>
|
|
553
|
+
{config.title}
|
|
554
|
+
</HeadingTag>
|
|
555
|
+
{action}
|
|
556
|
+
</XStack>
|
|
463
557
|
<Card elevation={knobProps.elevation} {...knobProps.surface}>
|
|
464
558
|
{config.type === "pie" ? (
|
|
465
559
|
<PieChart
|
|
@@ -473,6 +567,7 @@ export function ChartCard({ config, colors, headingLevel = 2, ...stackProps }: C
|
|
|
473
567
|
) : config.type === "line" ? (
|
|
474
568
|
<LineChart
|
|
475
569
|
data={config.data}
|
|
570
|
+
title={config.title}
|
|
476
571
|
height={config.height}
|
|
477
572
|
color={dataColors?.[0]}
|
|
478
573
|
showPoints
|
|
@@ -482,6 +577,7 @@ export function ChartCard({ config, colors, headingLevel = 2, ...stackProps }: C
|
|
|
482
577
|
) : (
|
|
483
578
|
<BarChart
|
|
484
579
|
data={config.data}
|
|
580
|
+
title={config.title}
|
|
485
581
|
height={config.height}
|
|
486
582
|
colors={dataColors}
|
|
487
583
|
showXAxis={showXAxis}
|
|
@@ -491,6 +587,13 @@ export function ChartCard({ config, colors, headingLevel = 2, ...stackProps }: C
|
|
|
491
587
|
</Card>
|
|
492
588
|
</YStack>
|
|
493
589
|
);
|
|
590
|
+
return config.type === "pie" && config.showLegend !== false ? (
|
|
591
|
+
renderCard()
|
|
592
|
+
) : (
|
|
593
|
+
<ChartDataView data={config.data} title={config.title}>
|
|
594
|
+
{({ action }) => renderCard(action)}
|
|
595
|
+
</ChartDataView>
|
|
596
|
+
);
|
|
494
597
|
}
|
|
495
598
|
|
|
496
599
|
// ============================================================================
|
|
@@ -562,7 +665,7 @@ export function ShortcutCard({ config, ...stackProps }: ShortcutCardProps) {
|
|
|
562
665
|
{...knobProps.borderRadius}
|
|
563
666
|
data-nested-px={px}
|
|
564
667
|
>
|
|
565
|
-
<Text {...knobProps.label} color={
|
|
668
|
+
<Text {...knobProps.label} color={knobProps.textAccentColor}>
|
|
566
669
|
{config.count}
|
|
567
670
|
</Text>
|
|
568
671
|
</XStack>
|
|
@@ -610,7 +713,7 @@ export function ListCard({ config, headingLevel = 2, ...stackProps }: ListCardPr
|
|
|
610
713
|
{item.label}
|
|
611
714
|
</Text>
|
|
612
715
|
{item.meta ? (
|
|
613
|
-
<Text {...knobProps.label} color={
|
|
716
|
+
<Text {...knobProps.label} color={knobProps.textAccentColor}>
|
|
614
717
|
{item.meta}
|
|
615
718
|
</Text>
|
|
616
719
|
) : null}
|