@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/layouts/page.tsx
CHANGED
|
@@ -17,6 +17,8 @@
|
|
|
17
17
|
|
|
18
18
|
import {
|
|
19
19
|
MIN_PRESS_TARGET,
|
|
20
|
+
Preset,
|
|
21
|
+
Surface,
|
|
20
22
|
hairline,
|
|
21
23
|
layoutBreakpoints,
|
|
22
24
|
resolvePageTitleScale,
|
|
@@ -55,6 +57,17 @@ function negateSpaceToken(token: string): `$-${string}` {
|
|
|
55
57
|
return `$-${token.startsWith("$") ? token.slice(1) : token}`;
|
|
56
58
|
}
|
|
57
59
|
|
|
60
|
+
function knobsFor(component: string, compact: boolean | undefined) {
|
|
61
|
+
// LC-76: an omitted override must leave density under the preset's control.
|
|
62
|
+
return compact === undefined ? { component } : { component, compact };
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** Nested surfaces step density only; hue remains inherited (LC-73 / R12). */
|
|
66
|
+
function NestedScale({ density, children }: { density: string; children: ReactNode }) {
|
|
67
|
+
if (density === "compact") return children;
|
|
68
|
+
return <Preset overrides={{ density: "compact" }}>{children}</Preset>;
|
|
69
|
+
}
|
|
70
|
+
|
|
58
71
|
// ---------------------------------------------------------------------------
|
|
59
72
|
// Screen — page outer shell (scroll, max-width, padding, theme background)
|
|
60
73
|
// ---------------------------------------------------------------------------
|
|
@@ -76,6 +89,8 @@ export interface ScreenProps extends YStackProps {
|
|
|
76
89
|
noPadding?: boolean;
|
|
77
90
|
/** Props forwarded to the inner ScrollView when scroll=true. */
|
|
78
91
|
scrollViewProps?: TamaguiScrollViewProps;
|
|
92
|
+
/** Density override inherited by the subtree. Omitted follows the preset. */
|
|
93
|
+
compact?: boolean;
|
|
79
94
|
}
|
|
80
95
|
|
|
81
96
|
/**
|
|
@@ -83,8 +98,7 @@ export interface ScreenProps extends YStackProps {
|
|
|
83
98
|
* compose-only screens.
|
|
84
99
|
*
|
|
85
100
|
* SF-TRANSPARENT + SP-PAD/SP-GAP: panelPadding and gapLg restyle with the
|
|
86
|
-
* density/space knobs (LC-76).
|
|
87
|
-
* — that ceiling pinned page inset and made the density knob a no-op.
|
|
101
|
+
* density/space knobs (LC-76). Only an explicit compact prop overrides density.
|
|
88
102
|
*
|
|
89
103
|
* @example
|
|
90
104
|
* <Screen>
|
|
@@ -92,16 +106,26 @@ export interface ScreenProps extends YStackProps {
|
|
|
92
106
|
* <FrappeImageView doctype="Pokemon" />
|
|
93
107
|
* </Screen>
|
|
94
108
|
*/
|
|
95
|
-
export function Screen({
|
|
109
|
+
export function Screen({ compact, ...props }: ScreenProps) {
|
|
110
|
+
const density = compact === undefined ? undefined : compact ? "compact" : "comfortable";
|
|
111
|
+
return (
|
|
112
|
+
<Surface density={density}>
|
|
113
|
+
<ScreenInner compact={compact} {...props} />
|
|
114
|
+
</Surface>
|
|
115
|
+
);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
function ScreenInner({
|
|
96
119
|
children,
|
|
97
120
|
scroll = true,
|
|
98
121
|
maxWidth = CONTENT_MAX_WIDTH,
|
|
99
122
|
bleed = false,
|
|
100
123
|
noPadding = false,
|
|
101
124
|
scrollViewProps,
|
|
125
|
+
compact,
|
|
102
126
|
...rest
|
|
103
127
|
}: ScreenProps) {
|
|
104
|
-
const { knobProps } = useResolvedKnobs(
|
|
128
|
+
const { knobProps } = useResolvedKnobs(knobsFor("Screen", compact));
|
|
105
129
|
|
|
106
130
|
const inner = (
|
|
107
131
|
<YStack
|
|
@@ -180,6 +204,8 @@ export interface PageHeaderProps extends YStackProps {
|
|
|
180
204
|
* surface. Semantics (headingLevel) are unchanged either way.
|
|
181
205
|
*/
|
|
182
206
|
titleScale?: PageTitleScale;
|
|
207
|
+
/** Density override. Omitted follows the preset or parent Surface. */
|
|
208
|
+
compact?: boolean;
|
|
183
209
|
}
|
|
184
210
|
|
|
185
211
|
/**
|
|
@@ -200,10 +226,11 @@ export function PageHeader({
|
|
|
200
226
|
divider = true,
|
|
201
227
|
headingLevel = 1,
|
|
202
228
|
titleScale,
|
|
229
|
+
compact,
|
|
203
230
|
children,
|
|
204
231
|
...rest
|
|
205
232
|
}: PageHeaderProps) {
|
|
206
|
-
const { knobProps } = useResolvedKnobs();
|
|
233
|
+
const { knobProps } = useResolvedKnobs(knobsFor("PageHeader", compact));
|
|
207
234
|
const insetToken = usePageChromeInset();
|
|
208
235
|
// DG-A11Y-02: count the built-in title toward the Screen's h1 budget.
|
|
209
236
|
// Custom `heading` nodes have an unknown level and are not registered.
|
|
@@ -230,9 +257,10 @@ export function PageHeader({
|
|
|
230
257
|
(title ? (
|
|
231
258
|
<TitleTag
|
|
232
259
|
margin={0}
|
|
233
|
-
fontWeight={knobProps.heading.fontWeight}
|
|
234
260
|
{...titleSize}
|
|
261
|
+
fontWeight={knobProps.heading.fontWeight}
|
|
235
262
|
{...headingFamily}
|
|
263
|
+
data-font-weight-knob={knobProps.heading.fontWeight === "700" ? "bold" : "regular"}
|
|
236
264
|
>
|
|
237
265
|
{title}
|
|
238
266
|
</TitleTag>
|
|
@@ -247,6 +275,7 @@ export function PageHeader({
|
|
|
247
275
|
return (
|
|
248
276
|
<YStack
|
|
249
277
|
data-testid="page-header"
|
|
278
|
+
data-density={knobProps.density}
|
|
250
279
|
overflow="visible"
|
|
251
280
|
{...bleed}
|
|
252
281
|
{...(showHairline ? { ...hairline.bottom, borderColor: componentColors.divider } : null)}
|
|
@@ -269,7 +298,7 @@ export function PageHeader({
|
|
|
269
298
|
{titleNode}
|
|
270
299
|
{subtitle ? (
|
|
271
300
|
// T-HELPER on the shared body fragment — not a local size map.
|
|
272
|
-
<Paragraph margin={0} {...knobProps.body} color={
|
|
301
|
+
<Paragraph margin={0} {...knobProps.body} color={knobProps.textAccentColor}>
|
|
273
302
|
{subtitle}
|
|
274
303
|
</Paragraph>
|
|
275
304
|
) : null}
|
|
@@ -327,6 +356,8 @@ export interface PageSectionProps extends YStackProps {
|
|
|
327
356
|
* without skips. Visuals are pinned by the shared sectionHeading scale.
|
|
328
357
|
*/
|
|
329
358
|
headingLevel?: Exclude<PageHeadingLevel, 1>;
|
|
359
|
+
/** Density override. Omitted follows the preset or parent Surface. */
|
|
360
|
+
compact?: boolean;
|
|
330
361
|
}
|
|
331
362
|
|
|
332
363
|
/**
|
|
@@ -340,10 +371,11 @@ export function PageSection({
|
|
|
340
371
|
divider = true,
|
|
341
372
|
surface = false,
|
|
342
373
|
headingLevel = 2,
|
|
374
|
+
compact,
|
|
343
375
|
children,
|
|
344
376
|
...rest
|
|
345
377
|
}: PageSectionProps) {
|
|
346
|
-
const { knobProps } = useResolvedKnobs();
|
|
378
|
+
const { knobProps } = useResolvedKnobs(knobsFor("PageSection", compact));
|
|
347
379
|
// See PageHeader: native-only heading family from the headingFont knob.
|
|
348
380
|
const headingFamily = isWeb ? null : { fontFamily: knobProps.heading.fontFamily };
|
|
349
381
|
// The sectionHeading spread pins the visual scale, so stepped levels only
|
|
@@ -372,7 +404,7 @@ export function PageSection({
|
|
|
372
404
|
<YStack gap="$2">
|
|
373
405
|
{headingNode}
|
|
374
406
|
{description ? (
|
|
375
|
-
<Paragraph margin={0} {...knobProps.body} color={
|
|
407
|
+
<Paragraph margin={0} {...knobProps.body} color={knobProps.textAccentColor}>
|
|
376
408
|
{description}
|
|
377
409
|
</Paragraph>
|
|
378
410
|
) : null}
|
|
@@ -387,11 +419,16 @@ export function PageSection({
|
|
|
387
419
|
// a sibling flips `surface` — only the section CONTENT earns the card's
|
|
388
420
|
// panelPadding inset (the painted surface owns it, per LC-39's converse).
|
|
389
421
|
return (
|
|
390
|
-
<YStack
|
|
422
|
+
<YStack
|
|
423
|
+
data-testid="page-section"
|
|
424
|
+
data-density={knobProps.density}
|
|
425
|
+
{...knobProps.gap}
|
|
426
|
+
{...rest}
|
|
427
|
+
>
|
|
391
428
|
{headerBlock}
|
|
392
429
|
{surface ? (
|
|
393
430
|
<YStack {...knobProps.gap} {...surfaceProps}>
|
|
394
|
-
{children}
|
|
431
|
+
<NestedScale density={knobProps.density}>{children}</NestedScale>
|
|
395
432
|
</YStack>
|
|
396
433
|
) : (
|
|
397
434
|
children
|
package/src/layouts/sidebar.tsx
CHANGED
|
@@ -103,7 +103,7 @@ export function Sidebar({
|
|
|
103
103
|
fontSize="$2"
|
|
104
104
|
fontWeight="400"
|
|
105
105
|
textTransform="uppercase"
|
|
106
|
-
color={
|
|
106
|
+
color={knobProps.textAccentColor}
|
|
107
107
|
// Align with row text (LC-02): the inset rides as MARGIN so
|
|
108
108
|
// the caption's box starts at the shared row text edge —
|
|
109
109
|
// padding-based insets left the box at the panel edge, which
|
|
@@ -125,7 +125,7 @@ export function Sidebar({
|
|
|
125
125
|
const corners = stackRadiusProps(position, knobProps.borderRadius.borderRadius);
|
|
126
126
|
const itemKey = `${sectionIdx}:${String(item.value ?? item.label)}`;
|
|
127
127
|
const ink = item.active && onAccent ? onAccent : componentColors.text.primary;
|
|
128
|
-
const metaInk = item.active && onAccent ? onAccent :
|
|
128
|
+
const metaInk = item.active && onAccent ? onAccent : knobProps.textAccentColor;
|
|
129
129
|
const kbFocused = kbFocusKey === itemKey;
|
|
130
130
|
const pressable = Boolean(item.onPress);
|
|
131
131
|
const kbRing = kbFocused
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
// asserts on the atomic classes (same approach as timeline-radius.spec.tsx).
|
|
11
11
|
import { cleanup, fireEvent, screen, waitFor } from "@testing-library/react";
|
|
12
12
|
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
13
|
+
import { Preset } from "@multiplatform.one/theme";
|
|
13
14
|
import * as React from "react";
|
|
14
15
|
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
15
16
|
import { Tags } from "./tags";
|
|
@@ -72,6 +73,37 @@ describe("Tags Add Tag trigger (chip-scale)", () => {
|
|
|
72
73
|
expect(classesByPrefix(pill, borderPrefixes).length).toBeGreaterThan(0);
|
|
73
74
|
});
|
|
74
75
|
|
|
76
|
+
/**
|
|
77
|
+
* DG-BOR-01 (MPO-106 D3): the RESOLVER owns the outlined hairline floor —
|
|
78
|
+
* `outlined` + `none` draws the enumerated `small` stop, 0.5 — and a
|
|
79
|
+
* component adds no second `Math.max(..., 1)` on top. A local floor made
|
|
80
|
+
* `small` measure the same as `medium` here and nowhere else, so the Tags
|
|
81
|
+
* row was the one outlined control the borderWidth knob could not thin.
|
|
82
|
+
*/
|
|
83
|
+
it.each([
|
|
84
|
+
["none", "0--5px"],
|
|
85
|
+
["small", "0--5px"],
|
|
86
|
+
["medium", "1px"],
|
|
87
|
+
["large", "2px"],
|
|
88
|
+
] as const)(
|
|
89
|
+
"outlined borderWidth %s resolves to %s, floored only by the resolver",
|
|
90
|
+
(borderWidth, px) => {
|
|
91
|
+
renderWithProviders(
|
|
92
|
+
<Preset overrides={{ borderWidth, fillStyle: "outlined" }}>
|
|
93
|
+
<Tags tags={tags} onAdd={vi.fn()} onRemove={vi.fn()} />
|
|
94
|
+
</Preset>,
|
|
95
|
+
);
|
|
96
|
+
const pill = triggerPillOf(screen.getByLabelText("Add Tag"));
|
|
97
|
+
const chip = chipFrameOf(screen.getByText("urgent"));
|
|
98
|
+
const edges = ["_btw-", "_bbw-", "_blw-", "_brw-"];
|
|
99
|
+
const expected = edges.map((edge) => `${edge}${px}`).sort();
|
|
100
|
+
expect(classesByPrefix(pill, edges)).toEqual(expected);
|
|
101
|
+
// The trigger and the chips it sits beside share one box at every stop;
|
|
102
|
+
// a floor on only one of them is what pulled their heights apart.
|
|
103
|
+
expect(classesByPrefix(chip, edges)).toEqual(expected);
|
|
104
|
+
},
|
|
105
|
+
);
|
|
106
|
+
|
|
75
107
|
it("trigger wrapper carries the D-02 44px press-floor (minHeight class)", () => {
|
|
76
108
|
renderTags();
|
|
77
109
|
const trigger = screen.getByLabelText("Add Tag");
|
package/src/layouts/tags.tsx
CHANGED
|
@@ -331,7 +331,7 @@ export function Tags({
|
|
|
331
331
|
) : (
|
|
332
332
|
<XStack alignItems="center" gap="$2" opacity={0.5}>
|
|
333
333
|
<TagIcon size={compact ? 14 : 16} />
|
|
334
|
-
<Text color={
|
|
334
|
+
<Text color={knobProps.textAccentColor} fontSize={compact ? "$1" : "$2"} {...knobProps.body}>
|
|
335
335
|
{noTagsLabel}
|
|
336
336
|
</Text>
|
|
337
337
|
</XStack>
|
|
@@ -473,7 +473,7 @@ export function Tags({
|
|
|
473
473
|
{suggestionOptions.length > 0 && (
|
|
474
474
|
<Text
|
|
475
475
|
fontSize="$1"
|
|
476
|
-
color={
|
|
476
|
+
color={knobProps.textAccentColor}
|
|
477
477
|
paddingHorizontal="$3"
|
|
478
478
|
paddingVertical="$1.5"
|
|
479
479
|
>
|
|
@@ -484,7 +484,7 @@ export function Tags({
|
|
|
484
484
|
{showEmptyMessage && (
|
|
485
485
|
<Text
|
|
486
486
|
fontSize="$2"
|
|
487
|
-
color={
|
|
487
|
+
color={knobProps.textAccentColor}
|
|
488
488
|
textAlign="center"
|
|
489
489
|
padding="$3"
|
|
490
490
|
{...knobProps.body}
|
|
@@ -580,9 +580,6 @@ export function Tags({
|
|
|
580
580
|
variant="outline"
|
|
581
581
|
backgroundColor="transparent"
|
|
582
582
|
{...knobProps.borderRadius}
|
|
583
|
-
// Same border width the Chip paints for every tone, so the
|
|
584
|
-
// trigger's box matches the tag chips it sits beside.
|
|
585
|
-
borderWidth={Math.max(knobProps.borderRadius.borderWidth, 1)}
|
|
586
583
|
borderColor={componentColors.interactive.border}
|
|
587
584
|
gap={compact ? 0 : "$1"}
|
|
588
585
|
hoverStyle={{ backgroundColor: componentColors.interactive.hover }}
|
|
@@ -590,7 +587,7 @@ export function Tags({
|
|
|
590
587
|
{...(addKbFocus ? ensureFocusVisibleRing() : { outlineWidth: 0 })}
|
|
591
588
|
>
|
|
592
589
|
<PlusIcon size={chipIconSize(chipSize)} />
|
|
593
|
-
<ChipText size={chipSize} color={
|
|
590
|
+
<ChipText size={chipSize} color={knobProps.textAccentColor}>
|
|
594
591
|
{compact ? "\u200B" : addTagLabel}
|
|
595
592
|
</ChipText>
|
|
596
593
|
</ChipFrame>
|
|
@@ -625,7 +622,7 @@ export function Tags({
|
|
|
625
622
|
// sat off the chips' optical line.
|
|
626
623
|
fontSize={chipTextSize(chipSize)}
|
|
627
624
|
color={componentColors.text.primary}
|
|
628
|
-
placeholderTextColor={
|
|
625
|
+
placeholderTextColor={knobProps.textAccentColor as any}
|
|
629
626
|
autoComplete="off"
|
|
630
627
|
role="combobox"
|
|
631
628
|
aria-autocomplete="list"
|
|
@@ -644,7 +641,7 @@ export function Tags({
|
|
|
644
641
|
<Label {...knobProps.label} fontWeight="400">
|
|
645
642
|
{label}
|
|
646
643
|
{maxTags > 0 && (
|
|
647
|
-
<Text color={
|
|
644
|
+
<Text color={knobProps.textAccentColor} fontSize="$2">
|
|
648
645
|
{" "}
|
|
649
646
|
({tags.length}/{maxTags})
|
|
650
647
|
</Text>
|
package/src/layouts/timeline.tsx
CHANGED
|
@@ -578,7 +578,7 @@ export function Timeline({
|
|
|
578
578
|
opacity={0.5}
|
|
579
579
|
>
|
|
580
580
|
<ClockIcon size={emptyIconSize} />
|
|
581
|
-
<Text color={
|
|
581
|
+
<Text color={knobProps.textAccentColor} fontSize={compact ? "$2" : sz} marginTop="$2">
|
|
582
582
|
{noActivityLabel}
|
|
583
583
|
</Text>
|
|
584
584
|
</YStack>
|
|
@@ -626,7 +626,7 @@ export function Timeline({
|
|
|
626
626
|
<YStack gap="$1" marginTop="$1">
|
|
627
627
|
{changes.slice(0, 5).map((change) => (
|
|
628
628
|
<XStack key={change.field} gap="$2" flexWrap="wrap">
|
|
629
|
-
<Text fontSize="$1" color={
|
|
629
|
+
<Text fontSize="$1" color={knobProps.textAccentColor} fontWeight="400">
|
|
630
630
|
{change.fieldLabel || change.field}:
|
|
631
631
|
</Text>
|
|
632
632
|
{change.old !== undefined && (
|
|
@@ -639,7 +639,7 @@ export function Timeline({
|
|
|
639
639
|
</Text>
|
|
640
640
|
)}
|
|
641
641
|
{change.old !== undefined && change.new !== undefined && (
|
|
642
|
-
<Text fontSize="$1" color={
|
|
642
|
+
<Text fontSize="$1" color={knobProps.textAccentColor}>
|
|
643
643
|
{"→"}
|
|
644
644
|
</Text>
|
|
645
645
|
)}
|
|
@@ -651,7 +651,7 @@ export function Timeline({
|
|
|
651
651
|
</XStack>
|
|
652
652
|
))}
|
|
653
653
|
{changes.length > 5 && (
|
|
654
|
-
<Text fontSize="$1" color={
|
|
654
|
+
<Text fontSize="$1" color={knobProps.textAccentColor} fontStyle="italic">
|
|
655
655
|
+{changes.length - 5} more changes
|
|
656
656
|
</Text>
|
|
657
657
|
)}
|
|
@@ -996,7 +996,7 @@ export function Timeline({
|
|
|
996
996
|
{/* Entry count hides on error so the badge can't lie (DG-ST-04).
|
|
997
997
|
Bidi-isolated so RTL contexts keep "7 entries" in one run. */}
|
|
998
998
|
{entries.length > 0 && !hasError && (
|
|
999
|
-
<Text fontSize="$2" color={
|
|
999
|
+
<Text fontSize="$2" color={knobProps.textAccentColor}>
|
|
1000
1000
|
{bidiIsolate(`${entries.length} ${entries.length === 1 ? entryLabel : entriesLabel}`)}
|
|
1001
1001
|
</Text>
|
|
1002
1002
|
)}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How many points of the native screen the software keyboard currently covers.
|
|
3
|
+
*
|
|
4
|
+
* A sheet that ignores this draws its frame UNDER the keyboard: the last row
|
|
5
|
+
* is sliced mid-glyph, the rounded top edge lands on top of the autocomplete
|
|
6
|
+
* suggestion strip, and the field being typed into can be occluded by it
|
|
7
|
+
* (MPO-64). KeyboardAvoidingView is not enough inside a `Modal` — it pads the
|
|
8
|
+
* container but the sheet keeps whatever fixed height it was given, so it
|
|
9
|
+
* simply overflows off the top instead of shrinking.
|
|
10
|
+
*
|
|
11
|
+
* The number comes from the platform, never from a constant: the suggestion
|
|
12
|
+
* strip is exactly the band that overlapped, and its height varies with the
|
|
13
|
+
* field, the language and whether QuickType is on.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import { useEffect, useState } from "react";
|
|
17
|
+
import { Dimensions, Keyboard, Platform } from "react-native";
|
|
18
|
+
|
|
19
|
+
export function useKeyboardInset(): number {
|
|
20
|
+
const [inset, setInset] = useState(0);
|
|
21
|
+
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
// iOS fires the *Will* pair one frame before the animation, so the sheet
|
|
24
|
+
// resizes with the keyboard rather than after it. Android has no *Will*.
|
|
25
|
+
const showEvent = Platform.OS === "ios" ? "keyboardWillChangeFrame" : "keyboardDidShow";
|
|
26
|
+
const hideEvent = Platform.OS === "ios" ? "keyboardWillHide" : "keyboardDidHide";
|
|
27
|
+
|
|
28
|
+
const show = Keyboard.addListener(showEvent, (event) => {
|
|
29
|
+
const screen = event?.endCoordinates;
|
|
30
|
+
if (!screen) return;
|
|
31
|
+
const windowHeight = Dimensions.get("window").height;
|
|
32
|
+
setInset(Math.max(0, Math.round(windowHeight - screen.screenY)));
|
|
33
|
+
});
|
|
34
|
+
const hide = Keyboard.addListener(hideEvent, () => setInset(0));
|
|
35
|
+
|
|
36
|
+
return () => {
|
|
37
|
+
show.remove();
|
|
38
|
+
hide.remove();
|
|
39
|
+
};
|
|
40
|
+
}, []);
|
|
41
|
+
|
|
42
|
+
return inset;
|
|
43
|
+
}
|
|
@@ -1,43 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* How many points of the screen the software keyboard currently covers.
|
|
3
|
-
*
|
|
4
|
-
* A sheet that ignores this draws its frame UNDER the keyboard: the last row
|
|
5
|
-
* is sliced mid-glyph, the rounded top edge lands on top of the autocomplete
|
|
6
|
-
* suggestion strip, and the field being typed into can be occluded by it
|
|
7
|
-
* (MPO-64). KeyboardAvoidingView is not enough inside a `Modal` — it pads the
|
|
8
|
-
* container but the sheet keeps whatever fixed height it was given, so it
|
|
9
|
-
* simply overflows off the top instead of shrinking.
|
|
10
|
-
*
|
|
11
|
-
* The number comes from the platform, never from a constant: the suggestion
|
|
12
|
-
* strip is exactly the band that overlapped, and its height varies with the
|
|
13
|
-
* field, the language and whether QuickType is on.
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
import { useEffect, useState } from "react";
|
|
17
|
-
import { Dimensions, Keyboard, Platform } from "react-native";
|
|
18
|
-
|
|
1
|
+
/** Web overlays use the browser viewport; native overlays measure the keyboard band. */
|
|
19
2
|
export function useKeyboardInset(): number {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
useEffect(() => {
|
|
23
|
-
// iOS fires the *Will* pair one frame before the animation, so the sheet
|
|
24
|
-
// resizes with the keyboard rather than after it. Android has no *Will*.
|
|
25
|
-
const showEvent = Platform.OS === "ios" ? "keyboardWillChangeFrame" : "keyboardDidShow";
|
|
26
|
-
const hideEvent = Platform.OS === "ios" ? "keyboardWillHide" : "keyboardDidHide";
|
|
27
|
-
|
|
28
|
-
const show = Keyboard.addListener(showEvent, (event) => {
|
|
29
|
-
const screen = event?.endCoordinates;
|
|
30
|
-
if (!screen) return;
|
|
31
|
-
const windowHeight = Dimensions.get("window").height;
|
|
32
|
-
setInset(Math.max(0, Math.round(windowHeight - screen.screenY)));
|
|
33
|
-
});
|
|
34
|
-
const hide = Keyboard.addListener(hideEvent, () => setInset(0));
|
|
35
|
-
|
|
36
|
-
return () => {
|
|
37
|
-
show.remove();
|
|
38
|
-
hide.remove();
|
|
39
|
-
};
|
|
40
|
-
}, []);
|
|
41
|
-
|
|
42
|
-
return inset;
|
|
3
|
+
return 0;
|
|
43
4
|
}
|
package/src/surfaces.spec.tsx
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
2
|
-
import { Preset } from "@multiplatform.one/theme";
|
|
3
|
-
import {
|
|
2
|
+
import { Preset, type Knobs } from "@multiplatform.one/theme";
|
|
3
|
+
import { defaultConfig } from "@tamagui/config/v5";
|
|
4
|
+
import { cleanup, render } from "@testing-library/react";
|
|
4
5
|
import { readFileSync } from "node:fs";
|
|
5
6
|
import { dirname, join } from "node:path";
|
|
6
7
|
import { fileURLToPath } from "node:url";
|
|
7
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
AlertDialog,
|
|
10
|
+
Card as TamaguiCard,
|
|
11
|
+
createTamagui,
|
|
12
|
+
Dialog,
|
|
13
|
+
Popover,
|
|
14
|
+
Sheet,
|
|
15
|
+
TamaguiProvider,
|
|
16
|
+
} from "tamagui";
|
|
8
17
|
import { afterEach, describe, expect, it } from "vitest";
|
|
9
18
|
import { Button } from "./Button";
|
|
10
19
|
import * as pkg from "./index";
|
|
@@ -183,3 +192,88 @@ describe("DialogContent paints the OVERLAY elevation stop, not the control one (
|
|
|
183
192
|
);
|
|
184
193
|
});
|
|
185
194
|
});
|
|
195
|
+
|
|
196
|
+
// ── Overlay child-clip cap (MPO-150) ─────────────────────────────────────
|
|
197
|
+
//
|
|
198
|
+
// Axiom 1 CLIP files "children positioned toward the corners (Card, Panel,
|
|
199
|
+
// Dialog)" under R-SCALE + clip cap: radius rides the scale, capped by the
|
|
200
|
+
// container's own padding. R-SCALE is the immunity axis, CONTAINER-CAP the
|
|
201
|
+
// resolution axis (Part 2 § Radius) — the Part 3 row naming only R-SCALE is
|
|
202
|
+
// not a second ruling. `elevatedSurface` carries the UNCAPPED scale token,
|
|
203
|
+
// so each padded overlay must spread `containerRadius` AFTER it; four did
|
|
204
|
+
// and PopoverContent did not, rendering a 50px corner on an 18px inset.
|
|
205
|
+
|
|
206
|
+
const overlayCapConfig = createTamagui(defaultConfig);
|
|
207
|
+
|
|
208
|
+
const overlayCapCorners = [
|
|
209
|
+
"borderTopLeftRadius",
|
|
210
|
+
"borderTopRightRadius",
|
|
211
|
+
"borderBottomRightRadius",
|
|
212
|
+
"borderBottomLeftRadius",
|
|
213
|
+
] as const;
|
|
214
|
+
|
|
215
|
+
describe("overlay containers take the Axiom 1 child-clip cap (MPO-150)", () => {
|
|
216
|
+
afterEach(cleanup);
|
|
217
|
+
|
|
218
|
+
it("PopoverContent spreads containerRadius after elevatedSurface, as its four siblings do", () => {
|
|
219
|
+
const src = readFileSync(join(dirname(fileURLToPath(import.meta.url)), "surfaces.tsx"), "utf8");
|
|
220
|
+
const popover = src.slice(src.indexOf("// ── PopoverContent"), src.indexOf("// ── SheetFrame"));
|
|
221
|
+
const elevated = popover.indexOf("knobProps.elevatedSurface");
|
|
222
|
+
const capped = popover.indexOf("knobProps.containerRadius");
|
|
223
|
+
expect(elevated, "PopoverContent binds elevatedSurface").toBeGreaterThan(-1);
|
|
224
|
+
expect(capped, "PopoverContent binds containerRadius").toBeGreaterThan(-1);
|
|
225
|
+
expect(capped, "the cap must spread AFTER the uncapped scale token").toBeGreaterThan(elevated);
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
for (const [borderRadius, stop] of Object.entries({ medium: 9, large: 16, full: 50 })) {
|
|
229
|
+
for (const [space, inset] of Object.entries({ small: 13, medium: 18, large: 32 })) {
|
|
230
|
+
const capped = Math.min(stop, inset);
|
|
231
|
+
it(`caps every overlay frame at ${capped}px for borderRadius=${borderRadius}/space=${space}`, () => {
|
|
232
|
+
render(
|
|
233
|
+
<TamaguiProvider config={overlayCapConfig} defaultTheme="light">
|
|
234
|
+
<Preset
|
|
235
|
+
overrides={{
|
|
236
|
+
borderRadius: borderRadius as Knobs["borderRadius"],
|
|
237
|
+
space: space as Knobs["space"],
|
|
238
|
+
density: "comfortable",
|
|
239
|
+
}}
|
|
240
|
+
>
|
|
241
|
+
<Dialog modal open>
|
|
242
|
+
<Dialog.Portal>
|
|
243
|
+
<DialogContent testID="cap-dialog">dialog</DialogContent>
|
|
244
|
+
</Dialog.Portal>
|
|
245
|
+
</Dialog>
|
|
246
|
+
<AlertDialog modal open>
|
|
247
|
+
<AlertDialog.Portal>
|
|
248
|
+
<AlertDialogContent testID="cap-alertdialog">alert</AlertDialogContent>
|
|
249
|
+
</AlertDialog.Portal>
|
|
250
|
+
</AlertDialog>
|
|
251
|
+
<Popover open>
|
|
252
|
+
<PopoverContent testID="cap-popover">popover</PopoverContent>
|
|
253
|
+
</Popover>
|
|
254
|
+
<Sheet open>
|
|
255
|
+
<SheetFrame testID="cap-sheet">sheet</SheetFrame>
|
|
256
|
+
</Sheet>
|
|
257
|
+
<Panel testID="cap-panel">panel</Panel>
|
|
258
|
+
</Preset>
|
|
259
|
+
</TamaguiProvider>,
|
|
260
|
+
);
|
|
261
|
+
|
|
262
|
+
for (const id of [
|
|
263
|
+
"cap-dialog",
|
|
264
|
+
"cap-alertdialog",
|
|
265
|
+
"cap-popover",
|
|
266
|
+
"cap-sheet",
|
|
267
|
+
"cap-panel",
|
|
268
|
+
]) {
|
|
269
|
+
const frame = document.querySelector(`[data-testid="${id}"]`);
|
|
270
|
+
expect(frame, `${id} frame`).toBeTruthy();
|
|
271
|
+
const style = getComputedStyle(frame as Element);
|
|
272
|
+
for (const corner of overlayCapCorners) {
|
|
273
|
+
expect(style[corner], `${id} ${corner}`).toBe(`${capped}px`);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
});
|
package/src/surfaces.tsx
CHANGED
|
@@ -267,8 +267,9 @@ export const AlertDialogOverlay = forwardRef<
|
|
|
267
267
|
// content, start-aligned to their anchor with the shared gap (the caller's
|
|
268
268
|
// tamagui <Popover offset={OVERLAY_ANCHOR_GAP}>), flipping/shifting at
|
|
269
269
|
// viewport edges. This frame is the overlay's single surface owner —
|
|
270
|
-
// border
|
|
271
|
-
// must not draw their own
|
|
270
|
+
// border comes from the elevatedSurface recipe and radius from the
|
|
271
|
+
// containerRadius cap spread over it; children must not draw their own
|
|
272
|
+
// outer border.
|
|
272
273
|
|
|
273
274
|
export const PopoverContent = forwardRef<TamaguiElement, ViewProps & { children?: ReactNode }>(
|
|
274
275
|
function PopoverContent({ children, ...props }, ref) {
|
|
@@ -277,6 +278,7 @@ export const PopoverContent = forwardRef<TamaguiElement, ViewProps & { children?
|
|
|
277
278
|
<Popover.Content
|
|
278
279
|
ref={ref}
|
|
279
280
|
{...knobProps.elevatedSurface}
|
|
281
|
+
{...knobProps.containerRadius}
|
|
280
282
|
transition={knobProps.transition}
|
|
281
283
|
enterStyle={overlayEnterExit}
|
|
282
284
|
exitStyle={overlayEnterExit}
|
package/src/tamagui.spec.ts
CHANGED
|
@@ -16,9 +16,13 @@
|
|
|
16
16
|
* 4. House shadows (Tabs, Tooltip, Card, Toast, …) must stay the house
|
|
17
17
|
* versions, not the tamagui primitives.
|
|
18
18
|
*/
|
|
19
|
+
import { readdirSync, readFileSync } from "node:fs";
|
|
20
|
+
import { join } from "node:path";
|
|
19
21
|
import * as tamagui from "tamagui";
|
|
22
|
+
import * as tamaguiLinearGradient from "tamagui/linear-gradient";
|
|
20
23
|
import { describe, expect, it } from "vitest";
|
|
21
24
|
import * as pkg from "./index";
|
|
25
|
+
import * as houseTamagui from "./tamagui";
|
|
22
26
|
|
|
23
27
|
const EXCLUDED_BARE_NAMES = [
|
|
24
28
|
"Checkbox",
|
|
@@ -44,12 +48,19 @@ const ALLOWLIST_VALUE_NAMES = [
|
|
|
44
48
|
// barrel and had been red ever since. MPO-78: CI runs `turbo run build`
|
|
45
49
|
// only, so nothing caught it.)
|
|
46
50
|
"Circle",
|
|
51
|
+
// MPO-21 G1 / G3 / G4. Restored by MPO-148; MPO-169 locks them here so a
|
|
52
|
+
// later Adapt-style rewrite cannot drop them without this spec going red.
|
|
53
|
+
// LinearGradient (G2) is not on the main tamagui barrel — see the dedicated
|
|
54
|
+
// assertion below rather than this identity check.
|
|
55
|
+
"Collapsible",
|
|
47
56
|
"Group",
|
|
48
57
|
"ListItem",
|
|
49
58
|
"ScrollView",
|
|
50
59
|
"Spacer",
|
|
51
60
|
"Square",
|
|
61
|
+
"Unspaced",
|
|
52
62
|
"View",
|
|
63
|
+
"VisuallyHidden",
|
|
53
64
|
"XGroup",
|
|
54
65
|
"XStack",
|
|
55
66
|
"YGroup",
|
|
@@ -205,8 +216,60 @@ describe("curated tamagui surface", () => {
|
|
|
205
216
|
).toBe((tamagui as Record<string, unknown>)[name]);
|
|
206
217
|
}
|
|
207
218
|
});
|
|
219
|
+
|
|
220
|
+
it("exports LinearGradient from tamagui/linear-gradient, not the main tamagui barrel", () => {
|
|
221
|
+
expect((tamagui as Record<string, unknown>).LinearGradient).toBeUndefined();
|
|
222
|
+
expect(houseTamagui.LinearGradient).toBe(tamaguiLinearGradient.LinearGradient);
|
|
223
|
+
expect(pkg.LinearGradient).toBe(tamaguiLinearGradient.LinearGradient);
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
it("every Components story import from ./tamagui is a live barrel export (MPO-169)", () => {
|
|
227
|
+
const exported = new Set(Object.keys(houseTamagui));
|
|
228
|
+
const missing: string[] = [];
|
|
229
|
+
for (const file of walkStoryFiles(import.meta.dirname)) {
|
|
230
|
+
for (const name of namedValueImportsFromHouseTamagui(readFileSync(file, "utf8"))) {
|
|
231
|
+
if (!exported.has(name)) {
|
|
232
|
+
missing.push(`${file.slice(import.meta.dirname.length + 1)}:${name}`);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
expect(
|
|
237
|
+
missing,
|
|
238
|
+
`stories import names ./tamagui.ts does not export: ${missing.join(", ")}`,
|
|
239
|
+
).toEqual([]);
|
|
240
|
+
});
|
|
208
241
|
});
|
|
209
242
|
|
|
243
|
+
function walkStoryFiles(dir: string): string[] {
|
|
244
|
+
const out: string[] = [];
|
|
245
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
246
|
+
const path = join(dir, entry.name);
|
|
247
|
+
if (entry.isDirectory()) out.push(...walkStoryFiles(path));
|
|
248
|
+
else if (/\.stories\.tsx?$/.test(entry.name)) out.push(path);
|
|
249
|
+
}
|
|
250
|
+
return out;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
function namedValueImportsFromHouseTamagui(src: string): string[] {
|
|
254
|
+
const names: string[] = [];
|
|
255
|
+
const re = /import\s+(type\s+)?\{([^}]+)\}\s+from\s+["']\.\/tamagui["']/g;
|
|
256
|
+
for (const match of src.matchAll(re)) {
|
|
257
|
+
const wholeClauseIsType = Boolean(match[1]);
|
|
258
|
+
for (const raw of match[2].split(",")) {
|
|
259
|
+
const part = raw.trim();
|
|
260
|
+
if (!part) continue;
|
|
261
|
+
if (wholeClauseIsType || /^type\s/.test(part)) continue;
|
|
262
|
+
names.push(
|
|
263
|
+
part
|
|
264
|
+
.replace(/^type\s+/, "")
|
|
265
|
+
.split(/\s+as\s+/)[0]
|
|
266
|
+
.trim(),
|
|
267
|
+
);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return names;
|
|
271
|
+
}
|
|
272
|
+
|
|
210
273
|
// ---------------------------------------------------------------------------
|
|
211
274
|
// Type-level locks (checked by `tsc --noEmit`, not vitest): excluded Props
|
|
212
275
|
// types must not be re-exported either, and allowlisted types must exist.
|