@multiplatform.one/components 6.0.4 → 6.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -0
- package/dist/cjs/Accordion/index.cjs +332 -0
- package/dist/cjs/Accordion/index.native.js +353 -0
- package/dist/cjs/Accordion/index.native.js.map +1 -0
- package/dist/cjs/Alert/index.cjs +207 -0
- package/dist/cjs/Alert/index.native.js +223 -0
- package/dist/cjs/Alert/index.native.js.map +1 -0
- package/dist/cjs/Avatar/getInitials.cjs +38 -0
- package/dist/cjs/Avatar/getInitials.native.js +42 -0
- package/dist/cjs/Avatar/getInitials.native.js.map +1 -0
- package/dist/cjs/Avatar/index.cjs +119 -0
- package/dist/cjs/Avatar/index.native.js +129 -0
- package/dist/cjs/Avatar/index.native.js.map +1 -0
- package/dist/cjs/Badge/index.cjs +42 -9
- package/dist/cjs/Badge/index.native.js +45 -10
- package/dist/cjs/Badge/index.native.js.map +1 -1
- package/dist/cjs/Carousel/index.cjs +61 -13
- package/dist/cjs/Carousel/index.native.js +65 -13
- package/dist/cjs/Carousel/index.native.js.map +1 -1
- package/dist/cjs/Chip/index.cjs +4 -1
- package/dist/cjs/Chip/index.native.js +4 -1
- package/dist/cjs/Chip/index.native.js.map +1 -1
- package/dist/cjs/DotIndicator/index.cjs +61 -6
- package/dist/cjs/DotIndicator/index.native.js +64 -8
- package/dist/cjs/DotIndicator/index.native.js.map +1 -1
- package/dist/cjs/DropdownMenu/index.cjs +507 -0
- package/dist/cjs/DropdownMenu/index.native.js +537 -0
- package/dist/cjs/DropdownMenu/index.native.js.map +1 -0
- package/dist/cjs/ErrorBoundary/index.cjs +20 -9
- package/dist/cjs/ErrorBoundary/index.native.js +23 -11
- package/dist/cjs/ErrorBoundary/index.native.js.map +1 -1
- package/dist/cjs/Pagination.cjs +198 -18
- package/dist/cjs/Pagination.native.js +220 -18
- package/dist/cjs/Pagination.native.js.map +1 -1
- package/dist/cjs/ProgressSteps/index.cjs +239 -0
- package/dist/cjs/ProgressSteps/index.native.js +249 -0
- package/dist/cjs/ProgressSteps/index.native.js.map +1 -0
- package/dist/cjs/Quote/index.cjs +90 -0
- package/dist/cjs/Quote/index.native.js +100 -0
- package/dist/cjs/Quote/index.native.js.map +1 -0
- package/dist/cjs/SheetModal/index.cjs +67 -0
- package/dist/cjs/SheetModal/index.native.js +143 -0
- package/dist/cjs/SheetModal/index.native.js.map +1 -0
- package/dist/cjs/SkipLink/index.cjs +134 -0
- package/dist/cjs/SkipLink/index.native.js +156 -0
- package/dist/cjs/SkipLink/index.native.js.map +1 -0
- package/dist/cjs/Tabs/index.cjs +401 -0
- package/dist/cjs/Tabs/index.native.js +432 -0
- package/dist/cjs/Tabs/index.native.js.map +1 -0
- package/dist/cjs/Toast/index.cjs +422 -0
- package/dist/cjs/Toast/index.native.js +447 -0
- package/dist/cjs/Toast/index.native.js.map +1 -0
- package/dist/cjs/Toast/store.cjs +106 -0
- package/dist/cjs/Toast/store.native.js +179 -0
- package/dist/cjs/Toast/store.native.js.map +1 -0
- package/dist/cjs/Tooltip/index.cjs +58 -1
- package/dist/cjs/Tooltip/index.native.js +51 -2
- package/dist/cjs/Tooltip/index.native.js.map +1 -1
- package/dist/cjs/Video/VideoFrame.cjs +46 -0
- package/dist/cjs/Video/VideoFrame.native.js +50 -0
- package/dist/cjs/Video/VideoFrame.native.js.map +1 -0
- package/dist/cjs/Video/index.cjs +72 -0
- package/dist/cjs/Video/index.native.js +172 -0
- package/dist/cjs/Video/index.native.js.map +1 -0
- package/dist/cjs/Video/types.cjs +18 -0
- package/dist/cjs/Video/types.native.js +21 -0
- package/dist/cjs/Video/types.native.js.map +1 -0
- package/dist/cjs/Wheel/index.cjs +603 -2
- package/dist/cjs/Wheel/index.native.js +626 -2
- package/dist/cjs/Wheel/index.native.js.map +1 -1
- package/dist/cjs/actions/ActionBar.cjs +148 -0
- package/dist/cjs/actions/ActionBar.native.js +154 -0
- package/dist/cjs/actions/ActionBar.native.js.map +1 -0
- package/dist/cjs/actions/DestructiveAction.cjs +216 -0
- package/dist/cjs/actions/DestructiveAction.native.js +227 -0
- package/dist/cjs/actions/DestructiveAction.native.js.map +1 -0
- package/dist/cjs/actions/devWarn.cjs +38 -0
- package/dist/cjs/actions/devWarn.native.js +42 -0
- package/dist/cjs/actions/devWarn.native.js.map +1 -0
- package/dist/cjs/actions/index.cjs +39 -0
- package/dist/cjs/actions/index.native.js +42 -0
- package/dist/cjs/actions/index.native.js.map +1 -0
- package/dist/cjs/actions/severity.cjs +42 -0
- package/dist/cjs/actions/severity.native.js +46 -0
- package/dist/cjs/actions/severity.native.js.map +1 -0
- package/dist/cjs/charts/Axis.cjs +152 -0
- package/dist/cjs/charts/Axis.native.js +159 -0
- package/dist/cjs/charts/Axis.native.js.map +1 -0
- package/dist/cjs/charts/BarChart.cjs +132 -0
- package/dist/cjs/charts/BarChart.native.js +150 -0
- package/dist/cjs/charts/BarChart.native.js.map +1 -0
- package/dist/cjs/charts/ChartSurface.cjs +73 -0
- package/dist/cjs/charts/ChartSurface.native.js +79 -0
- package/dist/cjs/charts/ChartSurface.native.js.map +1 -0
- package/dist/cjs/charts/LineChart.cjs +152 -0
- package/dist/cjs/charts/LineChart.native.js +173 -0
- package/dist/cjs/charts/LineChart.native.js.map +1 -0
- package/dist/cjs/charts/PieChart.cjs +152 -0
- package/dist/cjs/charts/PieChart.native.js +166 -0
- package/dist/cjs/charts/PieChart.native.js.map +1 -0
- package/dist/cjs/charts/Sparkline.cjs +103 -0
- package/dist/cjs/charts/Sparkline.native.js +116 -0
- package/dist/cjs/charts/Sparkline.native.js.map +1 -0
- package/dist/cjs/charts/accessibility.cjs +62 -0
- package/dist/cjs/charts/accessibility.native.js +86 -0
- package/dist/cjs/charts/accessibility.native.js.map +1 -0
- package/dist/cjs/charts/composeChart.cjs +69 -0
- package/dist/cjs/charts/composeChart.native.js +79 -0
- package/dist/cjs/charts/composeChart.native.js.map +1 -0
- package/dist/cjs/charts/index.cjs +66 -0
- package/dist/cjs/charts/index.native.js +69 -0
- package/dist/cjs/charts/index.native.js.map +1 -0
- package/dist/cjs/charts/math.cjs +145 -0
- package/dist/cjs/charts/math.native.js +170 -0
- package/dist/cjs/charts/math.native.js.map +1 -0
- package/dist/cjs/charts/series.cjs +180 -0
- package/dist/cjs/charts/series.native.js +199 -0
- package/dist/cjs/charts/series.native.js.map +1 -0
- package/dist/cjs/charts/svg.cjs +94 -0
- package/dist/cjs/charts/svg.native.js +97 -0
- package/dist/cjs/charts/svg.native.js.map +1 -0
- package/dist/cjs/charts/types.cjs +18 -0
- package/dist/cjs/charts/types.native.js +21 -0
- package/dist/cjs/charts/types.native.js.map +1 -0
- package/dist/cjs/charts/useChartTheme.cjs +97 -0
- package/dist/cjs/charts/useChartTheme.native.js +106 -0
- package/dist/cjs/charts/useChartTheme.native.js.map +1 -0
- package/dist/cjs/code/Code/index.cjs +22 -4
- package/dist/cjs/code/Code/index.native.js +22 -4
- package/dist/cjs/code/Code/index.native.js.map +1 -1
- package/dist/cjs/code/CodeBlock/index.cjs +14 -7
- package/dist/cjs/code/CodeBlock/index.native.js +14 -7
- package/dist/cjs/code/CodeBlock/index.native.js.map +1 -1
- package/dist/cjs/code/HighlightedCode/index.cjs +9 -8
- package/dist/cjs/code/HighlightedCode/index.native.js +12 -8
- package/dist/cjs/code/HighlightedCode/index.native.js.map +1 -1
- package/dist/cjs/code/Highlighter/index.cjs +24 -7
- package/dist/cjs/code/Highlighter/index.native.js +27 -7
- package/dist/cjs/code/Highlighter/index.native.js.map +1 -1
- package/dist/cjs/componentColors.cjs +25 -13
- package/dist/cjs/componentColors.native.js +25 -13
- package/dist/cjs/componentColors.native.js.map +1 -1
- package/dist/cjs/feedback/ConfirmDialog.cjs +140 -0
- package/dist/cjs/feedback/ConfirmDialog.native.js +154 -0
- package/dist/cjs/feedback/ConfirmDialog.native.js.map +1 -0
- package/dist/cjs/feedback/NotifyHost.cjs +134 -0
- package/dist/cjs/feedback/NotifyHost.native.js +166 -0
- package/dist/cjs/feedback/NotifyHost.native.js.map +1 -0
- package/dist/cjs/feedback/index.cjs +42 -0
- package/dist/cjs/feedback/index.native.js +45 -0
- package/dist/cjs/feedback/index.native.js.map +1 -0
- package/dist/cjs/feedback/notify.cjs +69 -0
- package/dist/cjs/feedback/notify.native.js +72 -0
- package/dist/cjs/feedback/notify.native.js.map +1 -0
- package/dist/cjs/feedback/route.cjs +92 -0
- package/dist/cjs/feedback/route.native.js +97 -0
- package/dist/cjs/feedback/route.native.js.map +1 -0
- package/dist/cjs/feedback/store.cjs +76 -0
- package/dist/cjs/feedback/store.native.js +107 -0
- package/dist/cjs/feedback/store.native.js.map +1 -0
- package/dist/cjs/hooks/index.cjs +3 -1
- package/dist/cjs/hooks/index.native.js +2 -0
- package/dist/cjs/hooks/index.native.js.map +1 -1
- package/dist/cjs/hooks/useClipboard.cjs +10 -5
- package/dist/cjs/hooks/useClipboard.native.js +12 -5
- package/dist/cjs/hooks/useClipboard.native.js.map +1 -1
- package/dist/cjs/hooks/useDirection.cjs +53 -0
- package/dist/cjs/hooks/useDirection.native.js +34 -0
- package/dist/cjs/hooks/useDirection.native.js.map +1 -0
- package/dist/cjs/hooks/useDocumentTitle.cjs +49 -0
- package/dist/cjs/hooks/useDocumentTitle.native.js +61 -0
- package/dist/cjs/hooks/useDocumentTitle.native.js.map +1 -0
- package/dist/cjs/icons/index.cjs +2 -1
- package/dist/cjs/icons/index.native.js +1 -0
- package/dist/cjs/icons/index.native.js.map +1 -1
- package/dist/cjs/icons/lucide.cjs +34 -0
- package/dist/cjs/icons/lucide.native.js +37 -0
- package/dist/cjs/icons/lucide.native.js.map +1 -0
- package/dist/cjs/images/Image/index.cjs +10 -0
- package/dist/cjs/index.cjs +40 -2
- package/dist/cjs/index.native.js +40 -2
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/layouts/AsyncBoundary.cjs +347 -0
- package/dist/cjs/layouts/AsyncBoundary.native.js +374 -0
- package/dist/cjs/layouts/AsyncBoundary.native.js.map +1 -0
- package/dist/cjs/layouts/PageTemplates.cjs +141 -0
- package/dist/cjs/layouts/PageTemplates.native.js +148 -0
- package/dist/cjs/layouts/PageTemplates.native.js.map +1 -0
- package/dist/cjs/layouts/PaneScaffold.cjs +157 -0
- package/dist/cjs/layouts/PaneScaffold.native.js +167 -0
- package/dist/cjs/layouts/PaneScaffold.native.js.map +1 -0
- package/dist/cjs/layouts/ViewSwitcher.cjs +68 -11
- package/dist/cjs/layouts/ViewSwitcher.native.js +81 -11
- package/dist/cjs/layouts/ViewSwitcher.native.js.map +1 -1
- package/dist/cjs/layouts/attachments.cjs +130 -33
- package/dist/cjs/layouts/attachments.native.js +147 -34
- package/dist/cjs/layouts/attachments.native.js.map +1 -1
- package/dist/cjs/layouts/breadcrumbs.cjs +62 -29
- package/dist/cjs/layouts/breadcrumbs.native.js +70 -32
- package/dist/cjs/layouts/breadcrumbs.native.js.map +1 -1
- package/dist/cjs/layouts/index.cjs +19 -1
- package/dist/cjs/layouts/index.native.js +18 -0
- package/dist/cjs/layouts/index.native.js.map +1 -1
- package/dist/cjs/layouts/page.cjs +132 -27
- package/dist/cjs/layouts/page.native.js +150 -28
- package/dist/cjs/layouts/page.native.js.map +1 -1
- package/dist/cjs/layouts/pageHeadingScope.cjs +74 -0
- package/dist/cjs/layouts/pageHeadingScope.native.js +80 -0
- package/dist/cjs/layouts/pageHeadingScope.native.js.map +1 -0
- package/dist/cjs/layouts/sidebar.cjs +48 -10
- package/dist/cjs/layouts/sidebar.native.js +70 -10
- package/dist/cjs/layouts/sidebar.native.js.map +1 -1
- package/dist/cjs/layouts/tags.cjs +77 -87
- package/dist/cjs/layouts/tags.native.js +90 -89
- package/dist/cjs/layouts/tags.native.js.map +1 -1
- package/dist/cjs/layouts/timeline.cjs +500 -183
- package/dist/cjs/layouts/timeline.native.js +602 -186
- package/dist/cjs/layouts/timeline.native.js.map +1 -1
- package/dist/cjs/layouts/toolbar.cjs +111 -35
- package/dist/cjs/layouts/toolbar.native.js +172 -38
- package/dist/cjs/layouts/toolbar.native.js.map +1 -1
- package/dist/cjs/shared/actionScan.cjs +53 -0
- package/dist/cjs/shared/actionScan.native.js +56 -0
- package/dist/cjs/shared/actionScan.native.js.map +1 -0
- package/dist/cjs/shared/t.cjs +36 -0
- package/dist/cjs/shared/t.native.js +41 -0
- package/dist/cjs/shared/t.native.js.map +1 -0
- package/dist/cjs/shared/useReturnFocusOnClose.cjs +56 -0
- package/dist/cjs/shared/useReturnFocusOnClose.native.js +63 -0
- package/dist/cjs/shared/useReturnFocusOnClose.native.js.map +1 -0
- package/dist/cjs/surfaces.cjs +68 -27
- package/dist/cjs/surfaces.native.js +67 -26
- package/dist/cjs/surfaces.native.js.map +1 -1
- package/dist/cjs/tamagui.cjs +94 -0
- package/dist/cjs/tamagui.native.js +97 -0
- package/dist/cjs/tamagui.native.js.map +1 -0
- package/dist/cjs/views/Calendar.cjs +1547 -155
- package/dist/cjs/views/Calendar.native.js +1713 -180
- package/dist/cjs/views/Calendar.native.js.map +1 -1
- package/dist/cjs/views/Dashboard.cjs +108 -303
- package/dist/cjs/views/Dashboard.native.js +113 -327
- package/dist/cjs/views/Dashboard.native.js.map +1 -1
- package/dist/cjs/views/Gantt.cjs +876 -0
- package/dist/cjs/views/Gantt.native.js +970 -0
- package/dist/cjs/views/Gantt.native.js.map +1 -0
- package/dist/cjs/views/ImageGrid.cjs +131 -64
- package/dist/cjs/views/ImageGrid.native.js +143 -65
- package/dist/cjs/views/ImageGrid.native.js.map +1 -1
- package/dist/cjs/views/Kanban.cjs +840 -41
- package/dist/cjs/views/Kanban.native.js +688 -58
- package/dist/cjs/views/Kanban.native.js.map +1 -1
- package/dist/cjs/views/List.cjs +33 -26
- package/dist/cjs/views/List.native.js +39 -26
- package/dist/cjs/views/List.native.js.map +1 -1
- package/dist/cjs/views/ReportBuilder.cjs +60 -59
- package/dist/cjs/views/ReportBuilder.native.js +66 -63
- package/dist/cjs/views/ReportBuilder.native.js.map +1 -1
- package/dist/cjs/views/TreeView.cjs +830 -80
- package/dist/cjs/views/TreeView.native.js +912 -91
- package/dist/cjs/views/TreeView.native.js.map +1 -1
- package/dist/cjs/views/calendarMath.cjs +154 -0
- package/dist/cjs/views/calendarMath.native.js +203 -0
- package/dist/cjs/views/calendarMath.native.js.map +1 -0
- package/dist/cjs/views/ganttMath.cjs +239 -0
- package/dist/cjs/views/ganttMath.native.js +266 -0
- package/dist/cjs/views/ganttMath.native.js.map +1 -0
- package/dist/cjs/views/index.cjs +30 -2
- package/dist/cjs/views/index.native.js +29 -1
- package/dist/cjs/views/index.native.js.map +1 -1
- package/dist/cjs/views/kanbanDnd.cjs +200 -0
- package/dist/cjs/views/kanbanDnd.native.js +242 -0
- package/dist/cjs/views/kanbanDnd.native.js.map +1 -0
- package/dist/cjs/views/treeViewDnd.cjs +376 -0
- package/dist/cjs/views/treeViewDnd.native.js +453 -0
- package/dist/cjs/views/treeViewDnd.native.js.map +1 -0
- package/dist/cjs/views/treeViewMotion.cjs +70 -0
- package/dist/cjs/views/treeViewMotion.native.js +130 -0
- package/dist/cjs/views/treeViewMotion.native.js.map +1 -0
- package/dist/esm/Accordion/index.mjs +307 -0
- package/dist/esm/Accordion/index.mjs.map +1 -0
- package/dist/esm/Accordion/index.native.js +325 -0
- package/dist/esm/Accordion/index.native.js.map +1 -0
- package/dist/esm/Alert/index.mjs +182 -0
- package/dist/esm/Alert/index.mjs.map +1 -0
- package/dist/esm/Alert/index.native.js +195 -0
- package/dist/esm/Alert/index.native.js.map +1 -0
- package/dist/esm/Avatar/getInitials.mjs +13 -0
- package/dist/esm/Avatar/getInitials.mjs.map +1 -0
- package/dist/esm/Avatar/getInitials.native.js +14 -0
- package/dist/esm/Avatar/getInitials.native.js.map +1 -0
- package/dist/esm/Avatar/index.mjs +93 -0
- package/dist/esm/Avatar/index.mjs.map +1 -0
- package/dist/esm/Avatar/index.native.js +100 -0
- package/dist/esm/Avatar/index.native.js.map +1 -0
- package/dist/esm/Badge/index.mjs +42 -9
- package/dist/esm/Badge/index.mjs.map +1 -1
- package/dist/esm/Badge/index.native.js +45 -10
- package/dist/esm/Badge/index.native.js.map +1 -1
- package/dist/esm/Carousel/index.mjs +62 -14
- package/dist/esm/Carousel/index.mjs.map +1 -1
- package/dist/esm/Carousel/index.native.js +66 -14
- package/dist/esm/Carousel/index.native.js.map +1 -1
- package/dist/esm/Chip/index.mjs +2 -2
- package/dist/esm/Chip/index.mjs.map +1 -1
- package/dist/esm/Chip/index.native.js +2 -2
- package/dist/esm/Chip/index.native.js.map +1 -1
- package/dist/esm/DotIndicator/index.mjs +61 -6
- package/dist/esm/DotIndicator/index.mjs.map +1 -1
- package/dist/esm/DotIndicator/index.native.js +64 -8
- package/dist/esm/DotIndicator/index.native.js.map +1 -1
- package/dist/esm/DropdownMenu/index.mjs +482 -0
- package/dist/esm/DropdownMenu/index.mjs.map +1 -0
- package/dist/esm/DropdownMenu/index.native.js +509 -0
- package/dist/esm/DropdownMenu/index.native.js.map +1 -0
- package/dist/esm/ErrorBoundary/index.mjs +20 -9
- package/dist/esm/ErrorBoundary/index.mjs.map +1 -1
- package/dist/esm/ErrorBoundary/index.native.js +23 -11
- package/dist/esm/ErrorBoundary/index.native.js.map +1 -1
- package/dist/esm/Pagination.mjs +200 -21
- package/dist/esm/Pagination.mjs.map +1 -1
- package/dist/esm/Pagination.native.js +222 -21
- package/dist/esm/Pagination.native.js.map +1 -1
- package/dist/esm/ProgressSteps/index.mjs +214 -0
- package/dist/esm/ProgressSteps/index.mjs.map +1 -0
- package/dist/esm/ProgressSteps/index.native.js +221 -0
- package/dist/esm/ProgressSteps/index.native.js.map +1 -0
- package/dist/esm/Quote/index.mjs +65 -0
- package/dist/esm/Quote/index.mjs.map +1 -0
- package/dist/esm/Quote/index.native.js +72 -0
- package/dist/esm/Quote/index.native.js.map +1 -0
- package/dist/esm/SheetModal/index.mjs +42 -0
- package/dist/esm/SheetModal/index.mjs.map +1 -0
- package/dist/esm/SheetModal/index.native.js +115 -0
- package/dist/esm/SheetModal/index.native.js.map +1 -0
- package/dist/esm/SkipLink/index.mjs +109 -0
- package/dist/esm/SkipLink/index.mjs.map +1 -0
- package/dist/esm/SkipLink/index.native.js +128 -0
- package/dist/esm/SkipLink/index.native.js.map +1 -0
- package/dist/esm/Tabs/index.mjs +365 -0
- package/dist/esm/Tabs/index.mjs.map +1 -0
- package/dist/esm/Tabs/index.native.js +393 -0
- package/dist/esm/Tabs/index.native.js.map +1 -0
- package/dist/esm/Toast/index.mjs +391 -0
- package/dist/esm/Toast/index.mjs.map +1 -0
- package/dist/esm/Toast/index.native.js +413 -0
- package/dist/esm/Toast/index.native.js.map +1 -0
- package/dist/esm/Toast/store.mjs +74 -0
- package/dist/esm/Toast/store.mjs.map +1 -0
- package/dist/esm/Toast/store.native.js +144 -0
- package/dist/esm/Toast/store.native.js.map +1 -0
- package/dist/esm/Tooltip/index.mjs +48 -2
- package/dist/esm/Tooltip/index.mjs.map +1 -1
- package/dist/esm/Tooltip/index.native.js +52 -3
- package/dist/esm/Tooltip/index.native.js.map +1 -1
- package/dist/esm/Video/VideoFrame.mjs +20 -0
- package/dist/esm/Video/VideoFrame.mjs.map +1 -0
- package/dist/esm/Video/VideoFrame.native.js +21 -0
- package/dist/esm/Video/VideoFrame.native.js.map +1 -0
- package/dist/esm/Video/index.mjs +47 -0
- package/dist/esm/Video/index.mjs.map +1 -0
- package/dist/esm/Video/index.native.js +144 -0
- package/dist/esm/Video/index.native.js.map +1 -0
- package/dist/esm/Video/types.mjs +2 -0
- package/dist/esm/Video/types.mjs.map +1 -0
- package/dist/esm/Video/types.native.js +2 -0
- package/dist/esm/Video/types.native.js.map +1 -0
- package/dist/esm/Wheel/index.mjs +602 -1
- package/dist/esm/Wheel/index.mjs.map +1 -1
- package/dist/esm/Wheel/index.native.js +625 -1
- package/dist/esm/Wheel/index.native.js.map +1 -1
- package/dist/esm/actions/ActionBar.mjs +123 -0
- package/dist/esm/actions/ActionBar.mjs.map +1 -0
- package/dist/esm/actions/ActionBar.native.js +126 -0
- package/dist/esm/actions/ActionBar.native.js.map +1 -0
- package/dist/esm/actions/DestructiveAction.mjs +191 -0
- package/dist/esm/actions/DestructiveAction.mjs.map +1 -0
- package/dist/esm/actions/DestructiveAction.native.js +199 -0
- package/dist/esm/actions/DestructiveAction.native.js.map +1 -0
- package/dist/esm/actions/devWarn.mjs +10 -0
- package/dist/esm/actions/devWarn.mjs.map +1 -0
- package/dist/esm/actions/devWarn.native.js +11 -0
- package/dist/esm/actions/devWarn.native.js.map +1 -0
- package/dist/esm/actions/index.mjs +7 -0
- package/dist/esm/actions/index.mjs.map +1 -0
- package/dist/esm/actions/index.native.js +7 -0
- package/dist/esm/actions/index.native.js.map +1 -0
- package/dist/esm/actions/severity.mjs +15 -0
- package/dist/esm/actions/severity.mjs.map +1 -0
- package/dist/esm/actions/severity.native.js +16 -0
- package/dist/esm/actions/severity.native.js.map +1 -0
- package/dist/esm/charts/Axis.mjs +124 -0
- package/dist/esm/charts/Axis.mjs.map +1 -0
- package/dist/esm/charts/Axis.native.js +128 -0
- package/dist/esm/charts/Axis.native.js.map +1 -0
- package/dist/esm/charts/BarChart.mjs +107 -0
- package/dist/esm/charts/BarChart.mjs.map +1 -0
- package/dist/esm/charts/BarChart.native.js +122 -0
- package/dist/esm/charts/BarChart.native.js.map +1 -0
- package/dist/esm/charts/ChartSurface.mjs +48 -0
- package/dist/esm/charts/ChartSurface.mjs.map +1 -0
- package/dist/esm/charts/ChartSurface.native.js +51 -0
- package/dist/esm/charts/ChartSurface.native.js.map +1 -0
- package/dist/esm/charts/LineChart.mjs +126 -0
- package/dist/esm/charts/LineChart.mjs.map +1 -0
- package/dist/esm/charts/LineChart.native.js +144 -0
- package/dist/esm/charts/LineChart.native.js.map +1 -0
- package/dist/esm/charts/PieChart.mjs +127 -0
- package/dist/esm/charts/PieChart.mjs.map +1 -0
- package/dist/esm/charts/PieChart.native.js +138 -0
- package/dist/esm/charts/PieChart.native.js.map +1 -0
- package/dist/esm/charts/Sparkline.mjs +78 -0
- package/dist/esm/charts/Sparkline.mjs.map +1 -0
- package/dist/esm/charts/Sparkline.native.js +88 -0
- package/dist/esm/charts/Sparkline.native.js.map +1 -0
- package/dist/esm/charts/accessibility.mjs +36 -0
- package/dist/esm/charts/accessibility.mjs.map +1 -0
- package/dist/esm/charts/accessibility.native.js +57 -0
- package/dist/esm/charts/accessibility.native.js.map +1 -0
- package/dist/esm/charts/composeChart.mjs +42 -0
- package/dist/esm/charts/composeChart.mjs.map +1 -0
- package/dist/esm/charts/composeChart.native.js +49 -0
- package/dist/esm/charts/composeChart.native.js.map +1 -0
- package/dist/esm/charts/index.mjs +12 -0
- package/dist/esm/charts/index.mjs.map +1 -0
- package/dist/esm/charts/index.native.js +12 -0
- package/dist/esm/charts/index.native.js.map +1 -0
- package/dist/esm/charts/math.mjs +106 -0
- package/dist/esm/charts/math.mjs.map +1 -0
- package/dist/esm/charts/math.native.js +128 -0
- package/dist/esm/charts/math.native.js.map +1 -0
- package/dist/esm/charts/series.mjs +152 -0
- package/dist/esm/charts/series.mjs.map +1 -0
- package/dist/esm/charts/series.native.js +168 -0
- package/dist/esm/charts/series.native.js.map +1 -0
- package/dist/esm/charts/svg.mjs +61 -0
- package/dist/esm/charts/svg.mjs.map +1 -0
- package/dist/esm/charts/svg.native.js +61 -0
- package/dist/esm/charts/svg.native.js.map +1 -0
- package/dist/esm/charts/types.mjs +2 -0
- package/dist/esm/charts/types.mjs.map +1 -0
- package/dist/esm/charts/types.native.js +2 -0
- package/dist/esm/charts/types.native.js.map +1 -0
- package/dist/esm/charts/useChartTheme.mjs +61 -0
- package/dist/esm/charts/useChartTheme.mjs.map +1 -0
- package/dist/esm/charts/useChartTheme.native.js +67 -0
- package/dist/esm/charts/useChartTheme.native.js.map +1 -0
- package/dist/esm/code/Code/index.mjs +22 -4
- package/dist/esm/code/Code/index.mjs.map +1 -1
- package/dist/esm/code/Code/index.native.js +22 -4
- package/dist/esm/code/Code/index.native.js.map +1 -1
- package/dist/esm/code/CodeBlock/index.mjs +15 -8
- package/dist/esm/code/CodeBlock/index.mjs.map +1 -1
- package/dist/esm/code/CodeBlock/index.native.js +15 -8
- package/dist/esm/code/CodeBlock/index.native.js.map +1 -1
- package/dist/esm/code/HighlightedCode/index.mjs +10 -9
- package/dist/esm/code/HighlightedCode/index.mjs.map +1 -1
- package/dist/esm/code/HighlightedCode/index.native.js +13 -9
- package/dist/esm/code/HighlightedCode/index.native.js.map +1 -1
- package/dist/esm/code/Highlighter/index.mjs +24 -7
- package/dist/esm/code/Highlighter/index.mjs.map +1 -1
- package/dist/esm/code/Highlighter/index.native.js +27 -7
- package/dist/esm/code/Highlighter/index.native.js.map +1 -1
- package/dist/esm/componentColors.mjs +24 -13
- package/dist/esm/componentColors.mjs.map +1 -1
- package/dist/esm/componentColors.native.js +24 -13
- package/dist/esm/componentColors.native.js.map +1 -1
- package/dist/esm/feedback/ConfirmDialog.mjs +115 -0
- package/dist/esm/feedback/ConfirmDialog.mjs.map +1 -0
- package/dist/esm/feedback/ConfirmDialog.native.js +126 -0
- package/dist/esm/feedback/ConfirmDialog.native.js.map +1 -0
- package/dist/esm/feedback/NotifyHost.mjs +108 -0
- package/dist/esm/feedback/NotifyHost.mjs.map +1 -0
- package/dist/esm/feedback/NotifyHost.native.js +137 -0
- package/dist/esm/feedback/NotifyHost.native.js.map +1 -0
- package/dist/esm/feedback/index.mjs +7 -0
- package/dist/esm/feedback/index.mjs.map +1 -0
- package/dist/esm/feedback/index.native.js +7 -0
- package/dist/esm/feedback/index.native.js.map +1 -0
- package/dist/esm/feedback/notify.mjs +44 -0
- package/dist/esm/feedback/notify.mjs.map +1 -0
- package/dist/esm/feedback/notify.native.js +44 -0
- package/dist/esm/feedback/notify.native.js.map +1 -0
- package/dist/esm/feedback/route.mjs +67 -0
- package/dist/esm/feedback/route.mjs.map +1 -0
- package/dist/esm/feedback/route.native.js +69 -0
- package/dist/esm/feedback/route.native.js.map +1 -0
- package/dist/esm/feedback/store.mjs +46 -0
- package/dist/esm/feedback/store.mjs.map +1 -0
- package/dist/esm/feedback/store.native.js +74 -0
- package/dist/esm/feedback/store.native.js.map +1 -0
- package/dist/esm/hooks/index.mjs +2 -0
- package/dist/esm/hooks/index.mjs.map +1 -1
- package/dist/esm/hooks/index.native.js +2 -0
- package/dist/esm/hooks/index.native.js.map +1 -1
- package/dist/esm/hooks/useClipboard.mjs +10 -5
- package/dist/esm/hooks/useClipboard.mjs.map +1 -1
- package/dist/esm/hooks/useClipboard.native.js +12 -5
- package/dist/esm/hooks/useClipboard.native.js.map +1 -1
- package/dist/esm/hooks/useDirection.mjs +28 -0
- package/dist/esm/hooks/useDirection.mjs.map +1 -0
- package/dist/esm/hooks/useDirection.native.js +6 -0
- package/dist/esm/hooks/useDirection.native.js.map +1 -0
- package/dist/esm/hooks/useDocumentTitle.mjs +22 -0
- package/dist/esm/hooks/useDocumentTitle.mjs.map +1 -0
- package/dist/esm/hooks/useDocumentTitle.native.js +31 -0
- package/dist/esm/hooks/useDocumentTitle.native.js.map +1 -0
- package/dist/esm/icons/index.mjs +1 -0
- package/dist/esm/icons/index.mjs.map +1 -1
- package/dist/esm/icons/index.native.js +1 -0
- package/dist/esm/icons/index.native.js.map +1 -1
- package/dist/esm/icons/lucide.mjs +4 -0
- package/dist/esm/icons/lucide.mjs.map +1 -0
- package/dist/esm/icons/lucide.native.js +4 -0
- package/dist/esm/icons/lucide.native.js.map +1 -0
- package/dist/esm/images/Image/index.mjs +10 -0
- package/dist/esm/images/Image/index.mjs.map +1 -1
- package/dist/esm/index.mjs +20 -3
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +20 -3
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/layouts/AsyncBoundary.mjs +317 -0
- package/dist/esm/layouts/AsyncBoundary.mjs.map +1 -0
- package/dist/esm/layouts/AsyncBoundary.native.js +341 -0
- package/dist/esm/layouts/AsyncBoundary.native.js.map +1 -0
- package/dist/esm/layouts/PageTemplates.mjs +114 -0
- package/dist/esm/layouts/PageTemplates.mjs.map +1 -0
- package/dist/esm/layouts/PageTemplates.native.js +118 -0
- package/dist/esm/layouts/PageTemplates.native.js.map +1 -0
- package/dist/esm/layouts/PaneScaffold.mjs +128 -0
- package/dist/esm/layouts/PaneScaffold.mjs.map +1 -0
- package/dist/esm/layouts/PaneScaffold.native.js +135 -0
- package/dist/esm/layouts/PaneScaffold.native.js.map +1 -0
- package/dist/esm/layouts/ViewSwitcher.mjs +70 -13
- package/dist/esm/layouts/ViewSwitcher.mjs.map +1 -1
- package/dist/esm/layouts/ViewSwitcher.native.js +83 -13
- package/dist/esm/layouts/ViewSwitcher.native.js.map +1 -1
- package/dist/esm/layouts/attachments.mjs +133 -36
- package/dist/esm/layouts/attachments.mjs.map +1 -1
- package/dist/esm/layouts/attachments.native.js +150 -37
- package/dist/esm/layouts/attachments.native.js.map +1 -1
- package/dist/esm/layouts/breadcrumbs.mjs +64 -31
- package/dist/esm/layouts/breadcrumbs.mjs.map +1 -1
- package/dist/esm/layouts/breadcrumbs.native.js +72 -34
- package/dist/esm/layouts/breadcrumbs.native.js.map +1 -1
- package/dist/esm/layouts/index.mjs +5 -0
- package/dist/esm/layouts/index.mjs.map +1 -1
- package/dist/esm/layouts/index.native.js +5 -0
- package/dist/esm/layouts/index.native.js.map +1 -1
- package/dist/esm/layouts/page.mjs +135 -31
- package/dist/esm/layouts/page.mjs.map +1 -1
- package/dist/esm/layouts/page.native.js +153 -32
- package/dist/esm/layouts/page.native.js.map +1 -1
- package/dist/esm/layouts/pageHeadingScope.mjs +48 -0
- package/dist/esm/layouts/pageHeadingScope.mjs.map +1 -0
- package/dist/esm/layouts/pageHeadingScope.native.js +51 -0
- package/dist/esm/layouts/pageHeadingScope.native.js.map +1 -0
- package/dist/esm/layouts/sidebar.mjs +50 -12
- package/dist/esm/layouts/sidebar.mjs.map +1 -1
- package/dist/esm/layouts/sidebar.native.js +72 -12
- package/dist/esm/layouts/sidebar.native.js.map +1 -1
- package/dist/esm/layouts/tags.mjs +78 -88
- package/dist/esm/layouts/tags.mjs.map +1 -1
- package/dist/esm/layouts/tags.native.js +91 -90
- package/dist/esm/layouts/tags.native.js.map +1 -1
- package/dist/esm/layouts/timeline.mjs +500 -187
- package/dist/esm/layouts/timeline.mjs.map +1 -1
- package/dist/esm/layouts/timeline.native.js +603 -191
- package/dist/esm/layouts/timeline.native.js.map +1 -1
- package/dist/esm/layouts/toolbar.mjs +114 -38
- package/dist/esm/layouts/toolbar.mjs.map +1 -1
- package/dist/esm/layouts/toolbar.native.js +175 -41
- package/dist/esm/layouts/toolbar.native.js.map +1 -1
- package/dist/esm/shared/actionScan.mjs +27 -0
- package/dist/esm/shared/actionScan.mjs.map +1 -0
- package/dist/esm/shared/actionScan.native.js +27 -0
- package/dist/esm/shared/actionScan.native.js.map +1 -0
- package/dist/esm/shared/t.mjs +10 -0
- package/dist/esm/shared/t.mjs.map +1 -0
- package/dist/esm/shared/t.native.js +12 -0
- package/dist/esm/shared/t.native.js.map +1 -0
- package/dist/esm/shared/useReturnFocusOnClose.mjs +31 -0
- package/dist/esm/shared/useReturnFocusOnClose.mjs.map +1 -0
- package/dist/esm/shared/useReturnFocusOnClose.native.js +35 -0
- package/dist/esm/shared/useReturnFocusOnClose.native.js.map +1 -0
- package/dist/esm/surfaces.mjs +61 -31
- package/dist/esm/surfaces.mjs.map +1 -1
- package/dist/esm/surfaces.native.js +61 -31
- package/dist/esm/surfaces.native.js.map +1 -1
- package/dist/esm/tamagui.mjs +10 -0
- package/dist/esm/tamagui.mjs.map +1 -0
- package/dist/esm/tamagui.native.js +10 -0
- package/dist/esm/tamagui.native.js.map +1 -0
- package/dist/esm/views/Calendar.mjs +1538 -160
- package/dist/esm/views/Calendar.mjs.map +1 -1
- package/dist/esm/views/Calendar.native.js +1716 -186
- package/dist/esm/views/Calendar.native.js.map +1 -1
- package/dist/esm/views/Dashboard.mjs +110 -306
- package/dist/esm/views/Dashboard.mjs.map +1 -1
- package/dist/esm/views/Dashboard.native.js +115 -330
- package/dist/esm/views/Dashboard.native.js.map +1 -1
- package/dist/esm/views/Gantt.mjs +851 -0
- package/dist/esm/views/Gantt.mjs.map +1 -0
- package/dist/esm/views/Gantt.native.js +931 -0
- package/dist/esm/views/Gantt.native.js.map +1 -0
- package/dist/esm/views/ImageGrid.mjs +134 -67
- package/dist/esm/views/ImageGrid.mjs.map +1 -1
- package/dist/esm/views/ImageGrid.native.js +146 -68
- package/dist/esm/views/ImageGrid.native.js.map +1 -1
- package/dist/esm/views/Kanban.mjs +841 -42
- package/dist/esm/views/Kanban.mjs.map +1 -1
- package/dist/esm/views/Kanban.native.js +690 -60
- package/dist/esm/views/Kanban.native.js.map +1 -1
- package/dist/esm/views/List.mjs +33 -26
- package/dist/esm/views/List.mjs.map +1 -1
- package/dist/esm/views/List.native.js +39 -26
- package/dist/esm/views/List.native.js.map +1 -1
- package/dist/esm/views/ReportBuilder.mjs +60 -59
- package/dist/esm/views/ReportBuilder.mjs.map +1 -1
- package/dist/esm/views/ReportBuilder.native.js +66 -63
- package/dist/esm/views/ReportBuilder.native.js.map +1 -1
- package/dist/esm/views/TreeView.mjs +834 -84
- package/dist/esm/views/TreeView.mjs.map +1 -1
- package/dist/esm/views/TreeView.native.js +916 -95
- package/dist/esm/views/TreeView.native.js.map +1 -1
- package/dist/esm/views/calendarMath.mjs +116 -0
- package/dist/esm/views/calendarMath.mjs.map +1 -0
- package/dist/esm/views/calendarMath.native.js +162 -0
- package/dist/esm/views/calendarMath.native.js.map +1 -0
- package/dist/esm/views/ganttMath.mjs +195 -0
- package/dist/esm/views/ganttMath.mjs.map +1 -0
- package/dist/esm/views/ganttMath.native.js +219 -0
- package/dist/esm/views/ganttMath.native.js.map +1 -0
- package/dist/esm/views/index.mjs +7 -3
- package/dist/esm/views/index.mjs.map +1 -1
- package/dist/esm/views/index.native.js +7 -3
- package/dist/esm/views/index.native.js.map +1 -1
- package/dist/esm/views/kanbanDnd.mjs +165 -0
- package/dist/esm/views/kanbanDnd.mjs.map +1 -0
- package/dist/esm/views/kanbanDnd.native.js +204 -0
- package/dist/esm/views/kanbanDnd.native.js.map +1 -0
- package/dist/esm/views/treeViewDnd.mjs +336 -0
- package/dist/esm/views/treeViewDnd.mjs.map +1 -0
- package/dist/esm/views/treeViewDnd.native.js +410 -0
- package/dist/esm/views/treeViewDnd.native.js.map +1 -0
- package/dist/esm/views/treeViewMotion.mjs +43 -0
- package/dist/esm/views/treeViewMotion.mjs.map +1 -0
- package/dist/esm/views/treeViewMotion.native.js +100 -0
- package/dist/esm/views/treeViewMotion.native.js.map +1 -0
- package/dist/jsx/Accordion/index.mjs +307 -0
- package/dist/jsx/Accordion/index.mjs.map +1 -0
- package/dist/jsx/Accordion/index.native.js +353 -0
- package/dist/jsx/Accordion/index.native.js.map +1 -0
- package/dist/jsx/Alert/index.mjs +182 -0
- package/dist/jsx/Alert/index.mjs.map +1 -0
- package/dist/jsx/Alert/index.native.js +223 -0
- package/dist/jsx/Alert/index.native.js.map +1 -0
- package/dist/jsx/Avatar/getInitials.mjs +13 -0
- package/dist/jsx/Avatar/getInitials.mjs.map +1 -0
- package/dist/jsx/Avatar/getInitials.native.js +42 -0
- package/dist/jsx/Avatar/getInitials.native.js.map +1 -0
- package/dist/jsx/Avatar/index.mjs +93 -0
- package/dist/jsx/Avatar/index.mjs.map +1 -0
- package/dist/jsx/Avatar/index.native.js +129 -0
- package/dist/jsx/Avatar/index.native.js.map +1 -0
- package/dist/jsx/Badge/index.mjs +42 -9
- package/dist/jsx/Badge/index.mjs.map +1 -1
- package/dist/jsx/Badge/index.native.js +45 -10
- package/dist/jsx/Badge/index.native.js.map +1 -1
- package/dist/jsx/Carousel/index.mjs +62 -14
- package/dist/jsx/Carousel/index.mjs.map +1 -1
- package/dist/jsx/Carousel/index.native.js +65 -13
- package/dist/jsx/Carousel/index.native.js.map +1 -1
- package/dist/jsx/Chip/index.mjs +2 -2
- package/dist/jsx/Chip/index.mjs.map +1 -1
- package/dist/jsx/Chip/index.native.js +4 -1
- package/dist/jsx/Chip/index.native.js.map +1 -1
- package/dist/jsx/DotIndicator/index.mjs +61 -6
- package/dist/jsx/DotIndicator/index.mjs.map +1 -1
- package/dist/jsx/DotIndicator/index.native.js +64 -8
- package/dist/jsx/DotIndicator/index.native.js.map +1 -1
- package/dist/jsx/DropdownMenu/index.mjs +482 -0
- package/dist/jsx/DropdownMenu/index.mjs.map +1 -0
- package/dist/jsx/DropdownMenu/index.native.js +537 -0
- package/dist/jsx/DropdownMenu/index.native.js.map +1 -0
- package/dist/jsx/ErrorBoundary/index.mjs +20 -9
- package/dist/jsx/ErrorBoundary/index.mjs.map +1 -1
- package/dist/jsx/ErrorBoundary/index.native.js +23 -11
- package/dist/jsx/ErrorBoundary/index.native.js.map +1 -1
- package/dist/jsx/Pagination.mjs +200 -21
- package/dist/jsx/Pagination.mjs.map +1 -1
- package/dist/jsx/Pagination.native.js +220 -18
- package/dist/jsx/Pagination.native.js.map +1 -1
- package/dist/jsx/ProgressSteps/index.mjs +214 -0
- package/dist/jsx/ProgressSteps/index.mjs.map +1 -0
- package/dist/jsx/ProgressSteps/index.native.js +249 -0
- package/dist/jsx/ProgressSteps/index.native.js.map +1 -0
- package/dist/jsx/Quote/index.mjs +65 -0
- package/dist/jsx/Quote/index.mjs.map +1 -0
- package/dist/jsx/Quote/index.native.js +100 -0
- package/dist/jsx/Quote/index.native.js.map +1 -0
- package/dist/jsx/SheetModal/index.mjs +42 -0
- package/dist/jsx/SheetModal/index.mjs.map +1 -0
- package/dist/jsx/SheetModal/index.native.js +143 -0
- package/dist/jsx/SheetModal/index.native.js.map +1 -0
- package/dist/jsx/SkipLink/index.mjs +109 -0
- package/dist/jsx/SkipLink/index.mjs.map +1 -0
- package/dist/jsx/SkipLink/index.native.js +156 -0
- package/dist/jsx/SkipLink/index.native.js.map +1 -0
- package/dist/jsx/Tabs/index.mjs +365 -0
- package/dist/jsx/Tabs/index.mjs.map +1 -0
- package/dist/jsx/Tabs/index.native.js +432 -0
- package/dist/jsx/Tabs/index.native.js.map +1 -0
- package/dist/jsx/Toast/index.mjs +391 -0
- package/dist/jsx/Toast/index.mjs.map +1 -0
- package/dist/jsx/Toast/index.native.js +447 -0
- package/dist/jsx/Toast/index.native.js.map +1 -0
- package/dist/jsx/Toast/store.mjs +74 -0
- package/dist/jsx/Toast/store.mjs.map +1 -0
- package/dist/jsx/Toast/store.native.js +179 -0
- package/dist/jsx/Toast/store.native.js.map +1 -0
- package/dist/jsx/Tooltip/index.mjs +48 -2
- package/dist/jsx/Tooltip/index.mjs.map +1 -1
- package/dist/jsx/Tooltip/index.native.js +51 -2
- package/dist/jsx/Tooltip/index.native.js.map +1 -1
- package/dist/jsx/Video/VideoFrame.mjs +20 -0
- package/dist/jsx/Video/VideoFrame.mjs.map +1 -0
- package/dist/jsx/Video/VideoFrame.native.js +50 -0
- package/dist/jsx/Video/VideoFrame.native.js.map +1 -0
- package/dist/jsx/Video/index.mjs +47 -0
- package/dist/jsx/Video/index.mjs.map +1 -0
- package/dist/jsx/Video/index.native.js +172 -0
- package/dist/jsx/Video/index.native.js.map +1 -0
- package/dist/jsx/Video/types.mjs +2 -0
- package/dist/jsx/Video/types.mjs.map +1 -0
- package/dist/jsx/Video/types.native.js +21 -0
- package/dist/jsx/Video/types.native.js.map +1 -0
- package/dist/jsx/Wheel/index.mjs +602 -1
- package/dist/jsx/Wheel/index.mjs.map +1 -1
- package/dist/jsx/Wheel/index.native.js +626 -2
- package/dist/jsx/Wheel/index.native.js.map +1 -1
- package/dist/jsx/actions/ActionBar.mjs +123 -0
- package/dist/jsx/actions/ActionBar.mjs.map +1 -0
- package/dist/jsx/actions/ActionBar.native.js +154 -0
- package/dist/jsx/actions/ActionBar.native.js.map +1 -0
- package/dist/jsx/actions/DestructiveAction.mjs +191 -0
- package/dist/jsx/actions/DestructiveAction.mjs.map +1 -0
- package/dist/jsx/actions/DestructiveAction.native.js +227 -0
- package/dist/jsx/actions/DestructiveAction.native.js.map +1 -0
- package/dist/jsx/actions/devWarn.mjs +10 -0
- package/dist/jsx/actions/devWarn.mjs.map +1 -0
- package/dist/jsx/actions/devWarn.native.js +42 -0
- package/dist/jsx/actions/devWarn.native.js.map +1 -0
- package/dist/jsx/actions/index.mjs +7 -0
- package/dist/jsx/actions/index.mjs.map +1 -0
- package/dist/jsx/actions/index.native.js +42 -0
- package/dist/jsx/actions/index.native.js.map +1 -0
- package/dist/jsx/actions/severity.mjs +15 -0
- package/dist/jsx/actions/severity.mjs.map +1 -0
- package/dist/jsx/actions/severity.native.js +46 -0
- package/dist/jsx/actions/severity.native.js.map +1 -0
- package/dist/jsx/charts/Axis.mjs +124 -0
- package/dist/jsx/charts/Axis.mjs.map +1 -0
- package/dist/jsx/charts/Axis.native.js +159 -0
- package/dist/jsx/charts/Axis.native.js.map +1 -0
- package/dist/jsx/charts/BarChart.mjs +107 -0
- package/dist/jsx/charts/BarChart.mjs.map +1 -0
- package/dist/jsx/charts/BarChart.native.js +150 -0
- package/dist/jsx/charts/BarChart.native.js.map +1 -0
- package/dist/jsx/charts/ChartSurface.mjs +48 -0
- package/dist/jsx/charts/ChartSurface.mjs.map +1 -0
- package/dist/jsx/charts/ChartSurface.native.js +79 -0
- package/dist/jsx/charts/ChartSurface.native.js.map +1 -0
- package/dist/jsx/charts/LineChart.mjs +126 -0
- package/dist/jsx/charts/LineChart.mjs.map +1 -0
- package/dist/jsx/charts/LineChart.native.js +173 -0
- package/dist/jsx/charts/LineChart.native.js.map +1 -0
- package/dist/jsx/charts/PieChart.mjs +127 -0
- package/dist/jsx/charts/PieChart.mjs.map +1 -0
- package/dist/jsx/charts/PieChart.native.js +166 -0
- package/dist/jsx/charts/PieChart.native.js.map +1 -0
- package/dist/jsx/charts/Sparkline.mjs +78 -0
- package/dist/jsx/charts/Sparkline.mjs.map +1 -0
- package/dist/jsx/charts/Sparkline.native.js +116 -0
- package/dist/jsx/charts/Sparkline.native.js.map +1 -0
- package/dist/jsx/charts/accessibility.mjs +36 -0
- package/dist/jsx/charts/accessibility.mjs.map +1 -0
- package/dist/jsx/charts/accessibility.native.js +86 -0
- package/dist/jsx/charts/accessibility.native.js.map +1 -0
- package/dist/jsx/charts/composeChart.mjs +42 -0
- package/dist/jsx/charts/composeChart.mjs.map +1 -0
- package/dist/jsx/charts/composeChart.native.js +79 -0
- package/dist/jsx/charts/composeChart.native.js.map +1 -0
- package/dist/jsx/charts/index.mjs +12 -0
- package/dist/jsx/charts/index.mjs.map +1 -0
- package/dist/jsx/charts/index.native.js +69 -0
- package/dist/jsx/charts/index.native.js.map +1 -0
- package/dist/jsx/charts/math.mjs +106 -0
- package/dist/jsx/charts/math.mjs.map +1 -0
- package/dist/jsx/charts/math.native.js +170 -0
- package/dist/jsx/charts/math.native.js.map +1 -0
- package/dist/jsx/charts/series.mjs +152 -0
- package/dist/jsx/charts/series.mjs.map +1 -0
- package/dist/jsx/charts/series.native.js +199 -0
- package/dist/jsx/charts/series.native.js.map +1 -0
- package/dist/jsx/charts/svg.mjs +61 -0
- package/dist/jsx/charts/svg.mjs.map +1 -0
- package/dist/jsx/charts/svg.native.js +97 -0
- package/dist/jsx/charts/svg.native.js.map +1 -0
- package/dist/jsx/charts/types.mjs +2 -0
- package/dist/jsx/charts/types.mjs.map +1 -0
- package/dist/jsx/charts/types.native.js +21 -0
- package/dist/jsx/charts/types.native.js.map +1 -0
- package/dist/jsx/charts/useChartTheme.mjs +61 -0
- package/dist/jsx/charts/useChartTheme.mjs.map +1 -0
- package/dist/jsx/charts/useChartTheme.native.js +106 -0
- package/dist/jsx/charts/useChartTheme.native.js.map +1 -0
- package/dist/jsx/code/Code/index.mjs +22 -4
- package/dist/jsx/code/Code/index.mjs.map +1 -1
- package/dist/jsx/code/Code/index.native.js +22 -4
- package/dist/jsx/code/Code/index.native.js.map +1 -1
- package/dist/jsx/code/CodeBlock/index.mjs +15 -8
- package/dist/jsx/code/CodeBlock/index.mjs.map +1 -1
- package/dist/jsx/code/CodeBlock/index.native.js +14 -7
- package/dist/jsx/code/CodeBlock/index.native.js.map +1 -1
- package/dist/jsx/code/HighlightedCode/index.mjs +10 -9
- package/dist/jsx/code/HighlightedCode/index.mjs.map +1 -1
- package/dist/jsx/code/HighlightedCode/index.native.js +12 -8
- package/dist/jsx/code/HighlightedCode/index.native.js.map +1 -1
- package/dist/jsx/code/Highlighter/index.mjs +24 -7
- package/dist/jsx/code/Highlighter/index.mjs.map +1 -1
- package/dist/jsx/code/Highlighter/index.native.js +27 -7
- package/dist/jsx/code/Highlighter/index.native.js.map +1 -1
- package/dist/jsx/componentColors.mjs +24 -13
- package/dist/jsx/componentColors.mjs.map +1 -1
- package/dist/jsx/componentColors.native.js +25 -13
- package/dist/jsx/componentColors.native.js.map +1 -1
- package/dist/jsx/feedback/ConfirmDialog.mjs +115 -0
- package/dist/jsx/feedback/ConfirmDialog.mjs.map +1 -0
- package/dist/jsx/feedback/ConfirmDialog.native.js +154 -0
- package/dist/jsx/feedback/ConfirmDialog.native.js.map +1 -0
- package/dist/jsx/feedback/NotifyHost.mjs +108 -0
- package/dist/jsx/feedback/NotifyHost.mjs.map +1 -0
- package/dist/jsx/feedback/NotifyHost.native.js +166 -0
- package/dist/jsx/feedback/NotifyHost.native.js.map +1 -0
- package/dist/jsx/feedback/index.mjs +7 -0
- package/dist/jsx/feedback/index.mjs.map +1 -0
- package/dist/jsx/feedback/index.native.js +45 -0
- package/dist/jsx/feedback/index.native.js.map +1 -0
- package/dist/jsx/feedback/notify.mjs +44 -0
- package/dist/jsx/feedback/notify.mjs.map +1 -0
- package/dist/jsx/feedback/notify.native.js +72 -0
- package/dist/jsx/feedback/notify.native.js.map +1 -0
- package/dist/jsx/feedback/route.mjs +67 -0
- package/dist/jsx/feedback/route.mjs.map +1 -0
- package/dist/jsx/feedback/route.native.js +97 -0
- package/dist/jsx/feedback/route.native.js.map +1 -0
- package/dist/jsx/feedback/store.mjs +46 -0
- package/dist/jsx/feedback/store.mjs.map +1 -0
- package/dist/jsx/feedback/store.native.js +107 -0
- package/dist/jsx/feedback/store.native.js.map +1 -0
- package/dist/jsx/hooks/index.mjs +2 -0
- package/dist/jsx/hooks/index.mjs.map +1 -1
- package/dist/jsx/hooks/index.native.js +2 -0
- package/dist/jsx/hooks/index.native.js.map +1 -1
- package/dist/jsx/hooks/useClipboard.mjs +10 -5
- package/dist/jsx/hooks/useClipboard.mjs.map +1 -1
- package/dist/jsx/hooks/useClipboard.native.js +12 -5
- package/dist/jsx/hooks/useClipboard.native.js.map +1 -1
- package/dist/jsx/hooks/useDirection.mjs +28 -0
- package/dist/jsx/hooks/useDirection.mjs.map +1 -0
- package/dist/jsx/hooks/useDirection.native.js +34 -0
- package/dist/jsx/hooks/useDirection.native.js.map +1 -0
- package/dist/jsx/hooks/useDocumentTitle.mjs +22 -0
- package/dist/jsx/hooks/useDocumentTitle.mjs.map +1 -0
- package/dist/jsx/hooks/useDocumentTitle.native.js +61 -0
- package/dist/jsx/hooks/useDocumentTitle.native.js.map +1 -0
- package/dist/jsx/icons/index.mjs +1 -0
- package/dist/jsx/icons/index.mjs.map +1 -1
- package/dist/jsx/icons/index.native.js +1 -0
- package/dist/jsx/icons/index.native.js.map +1 -1
- package/dist/jsx/icons/lucide.mjs +4 -0
- package/dist/jsx/icons/lucide.mjs.map +1 -0
- package/dist/jsx/icons/lucide.native.js +37 -0
- package/dist/jsx/icons/lucide.native.js.map +1 -0
- package/dist/jsx/images/Image/index.mjs +10 -0
- package/dist/jsx/images/Image/index.mjs.map +1 -1
- package/dist/jsx/index.js +20 -3
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +20 -3
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +40 -2
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/layouts/AsyncBoundary.mjs +317 -0
- package/dist/jsx/layouts/AsyncBoundary.mjs.map +1 -0
- package/dist/jsx/layouts/AsyncBoundary.native.js +374 -0
- package/dist/jsx/layouts/AsyncBoundary.native.js.map +1 -0
- package/dist/jsx/layouts/PageTemplates.mjs +114 -0
- package/dist/jsx/layouts/PageTemplates.mjs.map +1 -0
- package/dist/jsx/layouts/PageTemplates.native.js +148 -0
- package/dist/jsx/layouts/PageTemplates.native.js.map +1 -0
- package/dist/jsx/layouts/PaneScaffold.mjs +128 -0
- package/dist/jsx/layouts/PaneScaffold.mjs.map +1 -0
- package/dist/jsx/layouts/PaneScaffold.native.js +167 -0
- package/dist/jsx/layouts/PaneScaffold.native.js.map +1 -0
- package/dist/jsx/layouts/ViewSwitcher.mjs +70 -13
- package/dist/jsx/layouts/ViewSwitcher.mjs.map +1 -1
- package/dist/jsx/layouts/ViewSwitcher.native.js +81 -11
- package/dist/jsx/layouts/ViewSwitcher.native.js.map +1 -1
- package/dist/jsx/layouts/attachments.mjs +133 -36
- package/dist/jsx/layouts/attachments.mjs.map +1 -1
- package/dist/jsx/layouts/attachments.native.js +147 -34
- package/dist/jsx/layouts/attachments.native.js.map +1 -1
- package/dist/jsx/layouts/breadcrumbs.mjs +64 -31
- package/dist/jsx/layouts/breadcrumbs.mjs.map +1 -1
- package/dist/jsx/layouts/breadcrumbs.native.js +70 -32
- package/dist/jsx/layouts/breadcrumbs.native.js.map +1 -1
- package/dist/jsx/layouts/index.mjs +5 -0
- package/dist/jsx/layouts/index.mjs.map +1 -1
- package/dist/jsx/layouts/index.native.js +18 -0
- package/dist/jsx/layouts/index.native.js.map +1 -1
- package/dist/jsx/layouts/page.mjs +135 -31
- package/dist/jsx/layouts/page.mjs.map +1 -1
- package/dist/jsx/layouts/page.native.js +150 -28
- package/dist/jsx/layouts/page.native.js.map +1 -1
- package/dist/jsx/layouts/pageHeadingScope.mjs +48 -0
- package/dist/jsx/layouts/pageHeadingScope.mjs.map +1 -0
- package/dist/jsx/layouts/pageHeadingScope.native.js +80 -0
- package/dist/jsx/layouts/pageHeadingScope.native.js.map +1 -0
- package/dist/jsx/layouts/sidebar.mjs +50 -12
- package/dist/jsx/layouts/sidebar.mjs.map +1 -1
- package/dist/jsx/layouts/sidebar.native.js +70 -10
- package/dist/jsx/layouts/sidebar.native.js.map +1 -1
- package/dist/jsx/layouts/tags.mjs +78 -88
- package/dist/jsx/layouts/tags.mjs.map +1 -1
- package/dist/jsx/layouts/tags.native.js +90 -89
- package/dist/jsx/layouts/tags.native.js.map +1 -1
- package/dist/jsx/layouts/timeline.mjs +500 -187
- package/dist/jsx/layouts/timeline.mjs.map +1 -1
- package/dist/jsx/layouts/timeline.native.js +602 -186
- package/dist/jsx/layouts/timeline.native.js.map +1 -1
- package/dist/jsx/layouts/toolbar.mjs +114 -38
- package/dist/jsx/layouts/toolbar.mjs.map +1 -1
- package/dist/jsx/layouts/toolbar.native.js +172 -38
- package/dist/jsx/layouts/toolbar.native.js.map +1 -1
- package/dist/jsx/shared/actionScan.mjs +27 -0
- package/dist/jsx/shared/actionScan.mjs.map +1 -0
- package/dist/jsx/shared/actionScan.native.js +56 -0
- package/dist/jsx/shared/actionScan.native.js.map +1 -0
- package/dist/jsx/shared/t.mjs +10 -0
- package/dist/jsx/shared/t.mjs.map +1 -0
- package/dist/jsx/shared/t.native.js +41 -0
- package/dist/jsx/shared/t.native.js.map +1 -0
- package/dist/jsx/shared/useReturnFocusOnClose.mjs +31 -0
- package/dist/jsx/shared/useReturnFocusOnClose.mjs.map +1 -0
- package/dist/jsx/shared/useReturnFocusOnClose.native.js +63 -0
- package/dist/jsx/shared/useReturnFocusOnClose.native.js.map +1 -0
- package/dist/jsx/surfaces.mjs +61 -31
- package/dist/jsx/surfaces.mjs.map +1 -1
- package/dist/jsx/surfaces.native.js +67 -26
- package/dist/jsx/surfaces.native.js.map +1 -1
- package/dist/jsx/tamagui.mjs +10 -0
- package/dist/jsx/tamagui.mjs.map +1 -0
- package/dist/jsx/tamagui.native.js +97 -0
- package/dist/jsx/tamagui.native.js.map +1 -0
- package/dist/jsx/views/Calendar.mjs +1538 -160
- package/dist/jsx/views/Calendar.mjs.map +1 -1
- package/dist/jsx/views/Calendar.native.js +1713 -180
- package/dist/jsx/views/Calendar.native.js.map +1 -1
- package/dist/jsx/views/Dashboard.mjs +110 -306
- package/dist/jsx/views/Dashboard.mjs.map +1 -1
- package/dist/jsx/views/Dashboard.native.js +113 -327
- package/dist/jsx/views/Dashboard.native.js.map +1 -1
- package/dist/jsx/views/Gantt.mjs +851 -0
- package/dist/jsx/views/Gantt.mjs.map +1 -0
- package/dist/jsx/views/Gantt.native.js +970 -0
- package/dist/jsx/views/Gantt.native.js.map +1 -0
- package/dist/jsx/views/ImageGrid.mjs +134 -67
- package/dist/jsx/views/ImageGrid.mjs.map +1 -1
- package/dist/jsx/views/ImageGrid.native.js +143 -65
- package/dist/jsx/views/ImageGrid.native.js.map +1 -1
- package/dist/jsx/views/Kanban.mjs +841 -42
- package/dist/jsx/views/Kanban.mjs.map +1 -1
- package/dist/jsx/views/Kanban.native.js +688 -58
- package/dist/jsx/views/Kanban.native.js.map +1 -1
- package/dist/jsx/views/List.mjs +33 -26
- package/dist/jsx/views/List.mjs.map +1 -1
- package/dist/jsx/views/List.native.js +39 -26
- package/dist/jsx/views/List.native.js.map +1 -1
- package/dist/jsx/views/ReportBuilder.mjs +60 -59
- package/dist/jsx/views/ReportBuilder.mjs.map +1 -1
- package/dist/jsx/views/ReportBuilder.native.js +66 -63
- package/dist/jsx/views/ReportBuilder.native.js.map +1 -1
- package/dist/jsx/views/TreeView.mjs +834 -84
- package/dist/jsx/views/TreeView.mjs.map +1 -1
- package/dist/jsx/views/TreeView.native.js +912 -91
- package/dist/jsx/views/TreeView.native.js.map +1 -1
- package/dist/jsx/views/calendarMath.mjs +116 -0
- package/dist/jsx/views/calendarMath.mjs.map +1 -0
- package/dist/jsx/views/calendarMath.native.js +203 -0
- package/dist/jsx/views/calendarMath.native.js.map +1 -0
- package/dist/jsx/views/ganttMath.mjs +195 -0
- package/dist/jsx/views/ganttMath.mjs.map +1 -0
- package/dist/jsx/views/ganttMath.native.js +266 -0
- package/dist/jsx/views/ganttMath.native.js.map +1 -0
- package/dist/jsx/views/index.mjs +7 -3
- package/dist/jsx/views/index.mjs.map +1 -1
- package/dist/jsx/views/index.native.js +29 -1
- package/dist/jsx/views/index.native.js.map +1 -1
- package/dist/jsx/views/kanbanDnd.mjs +165 -0
- package/dist/jsx/views/kanbanDnd.mjs.map +1 -0
- package/dist/jsx/views/kanbanDnd.native.js +242 -0
- package/dist/jsx/views/kanbanDnd.native.js.map +1 -0
- package/dist/jsx/views/treeViewDnd.mjs +336 -0
- package/dist/jsx/views/treeViewDnd.mjs.map +1 -0
- package/dist/jsx/views/treeViewDnd.native.js +453 -0
- package/dist/jsx/views/treeViewDnd.native.js.map +1 -0
- package/dist/jsx/views/treeViewMotion.mjs +43 -0
- package/dist/jsx/views/treeViewMotion.mjs.map +1 -0
- package/dist/jsx/views/treeViewMotion.native.js +130 -0
- package/dist/jsx/views/treeViewMotion.native.js.map +1 -0
- package/package.json +51 -15
- package/src/Accordion/Accordion.spec.tsx +114 -0
- package/src/Accordion/Accordion.stories.tsx +187 -0
- package/src/Accordion/index.tsx +419 -0
- package/src/Alert/Alert.spec.tsx +83 -0
- package/src/Alert/Alert.stories.tsx +207 -0
- package/src/Alert/index.tsx +256 -0
- package/src/Avatar/Avatar.spec.tsx +45 -0
- package/src/Avatar/Avatar.stories.tsx +79 -0
- package/src/Avatar/getInitials.ts +15 -0
- package/src/Avatar/index.tsx +158 -0
- package/src/Badge/Badge.stories.tsx +37 -2
- package/src/Badge/index.tsx +39 -9
- package/src/Card.stories.tsx +96 -0
- package/src/CardFooter.stories.tsx +69 -0
- package/src/CardHeader.stories.tsx +67 -0
- package/src/Carousel/Carousel.stories.tsx +15 -16
- package/src/Carousel/index.tsx +65 -12
- package/src/Chip/index.tsx +3 -0
- package/src/DialogContent.stories.tsx +76 -0
- package/src/DotIndicator/DotIndicator.stories.tsx +12 -0
- package/src/DotIndicator/dotIndicator.spec.tsx +75 -0
- package/src/DotIndicator/index.tsx +59 -6
- package/src/DropdownMenu/DropdownMenu.spec.tsx +222 -0
- package/src/DropdownMenu/DropdownMenu.stories.tsx +198 -0
- package/src/DropdownMenu/index.tsx +696 -0
- package/src/ErrorBoundary/index.tsx +12 -6
- package/src/Pagination.spec.tsx +158 -0
- package/src/Pagination.stories.tsx +120 -4
- package/src/Pagination.tsx +309 -29
- package/src/Panel.stories.tsx +72 -0
- package/src/PopoverContent.stories.tsx +67 -0
- package/src/ProgressSteps/ProgressSteps.spec.tsx +31 -0
- package/src/ProgressSteps/ProgressSteps.stories.tsx +87 -0
- package/src/ProgressSteps/index.tsx +291 -0
- package/src/Quote/Quote.spec.tsx +17 -0
- package/src/Quote/Quote.stories.tsx +50 -0
- package/src/Quote/index.tsx +100 -0
- package/src/SheetFrame.stories.tsx +78 -0
- package/src/SheetModal/index.native.tsx +140 -0
- package/src/SheetModal/index.tsx +66 -0
- package/src/Skeleton/SkeletonCircle.stories.tsx +55 -0
- package/src/Skeleton/SkeletonText.stories.tsx +107 -0
- package/src/SkipLink/SkipLink.spec.tsx +45 -0
- package/src/SkipLink/SkipLink.stories.tsx +89 -0
- package/src/SkipLink/index.tsx +147 -0
- package/src/Tabs/Tabs.spec.tsx +70 -0
- package/src/Tabs/Tabs.stories.tsx +249 -0
- package/src/Tabs/index.tsx +524 -0
- package/src/Toast/Toast.spec.tsx +223 -0
- package/src/Toast/Toast.stories.tsx +210 -0
- package/src/Toast/index.tsx +478 -0
- package/src/Toast/store.ts +142 -0
- package/src/Tooltip/Tooltip.devWarn.spec.tsx +43 -0
- package/src/Tooltip/index.tsx +68 -6
- package/src/Video/Video.spec.tsx +78 -0
- package/src/Video/Video.stories.tsx +75 -0
- package/src/Video/VideoFrame.tsx +15 -0
- package/src/Video/index.native.tsx +181 -0
- package/src/Video/index.tsx +50 -0
- package/src/Video/types.ts +17 -0
- package/src/Wheel/Wheel.spec.tsx +30 -0
- package/src/Wheel/Wheel.stories.tsx +1 -1
- package/src/Wheel/index.tsx +862 -7
- package/src/actions/ActionBar.spec.tsx +166 -0
- package/src/actions/ActionBar.tsx +207 -0
- package/src/actions/DestructiveAction.spec.tsx +254 -0
- package/src/actions/DestructiveAction.stories.tsx +113 -0
- package/src/actions/DestructiveAction.tsx +281 -0
- package/src/actions/devWarn.ts +33 -0
- package/src/actions/index.ts +24 -0
- package/src/actions/severity.ts +40 -0
- package/src/charts/Axis.tsx +180 -0
- package/src/charts/BarChart.tsx +138 -0
- package/src/charts/ChartSurface.tsx +70 -0
- package/src/charts/Charts.stories.tsx +187 -0
- package/src/charts/LineChart.tsx +172 -0
- package/src/charts/PieChart.tsx +153 -0
- package/src/charts/Sparkline.tsx +98 -0
- package/src/charts/accessibility.ts +75 -0
- package/src/charts/charts.spec.tsx +321 -0
- package/src/charts/composeChart.ts +86 -0
- package/src/charts/index.ts +69 -0
- package/src/charts/math.spec.ts +184 -0
- package/src/charts/math.ts +275 -0
- package/src/charts/series.tsx +245 -0
- package/src/charts/svg.ts +84 -0
- package/src/charts/types.ts +54 -0
- package/src/charts/useChartTheme.ts +128 -0
- package/src/code/Code/index.tsx +38 -4
- package/src/code/CodeBlock/index.tsx +25 -9
- package/src/code/CodeInline.stories.tsx +74 -0
- package/src/code/HighlightedCode/HighlightedCode.stories.tsx +36 -5
- package/src/code/HighlightedCode/index.tsx +15 -10
- package/src/code/Highlighter/Highlighter.spec.ts +35 -0
- package/src/code/Highlighter/index.ts +40 -11
- package/src/code/highlightedCode.spec.tsx +97 -0
- package/src/componentColors.ts +40 -12
- package/src/feedback/ConfirmDialog.spec.tsx +331 -0
- package/src/feedback/ConfirmDialog.stories.tsx +160 -0
- package/src/feedback/ConfirmDialog.tsx +186 -0
- package/src/feedback/Notify.stories.tsx +175 -0
- package/src/feedback/NotifyHost.tsx +139 -0
- package/src/feedback/index.ts +22 -0
- package/src/feedback/notify.spec.ts +180 -0
- package/src/feedback/notify.ts +54 -0
- package/src/feedback/route.ts +118 -0
- package/src/feedback/store.ts +71 -0
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useClipboard.spec.tsx +26 -0
- package/src/hooks/useClipboard.ts +16 -9
- package/src/hooks/useDirection.native.ts +16 -0
- package/src/hooks/useDirection.spec.tsx +89 -0
- package/src/hooks/useDirection.ts +67 -0
- package/src/hooks/useDocumentTitle.spec.tsx +88 -0
- package/src/hooks/useDocumentTitle.ts +76 -0
- package/src/icons/CheckRegular.stories.tsx +75 -0
- package/src/icons/MinusRegular.stories.tsx +84 -0
- package/src/icons/index.ts +1 -0
- package/src/icons/lucide.ts +5 -0
- package/src/images/Image/index.tsx +15 -0
- package/src/images/SvgUri/SvgUri.stories.tsx +22 -7
- package/src/index.ts +65 -3
- package/src/layouts/AsyncBoundary.spec.tsx +142 -0
- package/src/layouts/AsyncBoundary.stories.tsx +147 -0
- package/src/layouts/AsyncBoundary.tsx +400 -0
- package/src/layouts/Attachments.stories.tsx +29 -0
- package/src/layouts/Debug/debug.spec.tsx +58 -3
- package/src/layouts/EmptyState.stories.tsx +96 -0
- package/src/layouts/PageHeader.stories.tsx +90 -0
- package/src/layouts/PageSection.stories.tsx +85 -0
- package/src/layouts/PageTemplates.spec.tsx +136 -0
- package/src/layouts/PageTemplates.stories.tsx +107 -0
- package/src/layouts/PageTemplates.tsx +203 -0
- package/src/layouts/PaneScaffold.spec.tsx +139 -0
- package/src/layouts/PaneScaffold.stories.tsx +132 -0
- package/src/layouts/PaneScaffold.tsx +249 -0
- package/src/layouts/Screen.stories.tsx +104 -0
- package/src/layouts/ScreenToolbar.stories.tsx +81 -0
- package/src/layouts/Sidebar.stories.tsx +40 -34
- package/src/layouts/Timeline.stories.tsx +123 -0
- package/src/layouts/Toolbar.stories.tsx +31 -2
- package/src/layouts/ViewSwitcher.stories.tsx +42 -4
- package/src/layouts/ViewSwitcher.tsx +98 -6
- package/src/layouts/attachments.tsx +186 -48
- package/src/layouts/breadcrumbs.tsx +64 -13
- package/src/layouts/index.tsx +15 -0
- package/src/layouts/layouts.spec.tsx +164 -1
- package/src/layouts/page.tsx +257 -41
- package/src/layouts/pageHeadingScope.tsx +87 -0
- package/src/layouts/pageHeadings.spec.tsx +151 -0
- package/src/layouts/sidebar.tsx +95 -20
- package/src/layouts/tags-trigger.spec.tsx +73 -0
- package/src/layouts/tags.tsx +132 -89
- package/src/layouts/timeline-comments.spec.tsx +243 -0
- package/src/layouts/timeline-radius.spec.tsx +57 -0
- package/src/layouts/timeline.tsx +661 -232
- package/src/layouts/toolbar.tsx +161 -38
- package/src/shared/actionScan.ts +40 -0
- package/src/shared/t.ts +29 -0
- package/src/shared/useReturnFocusOnClose.ts +51 -0
- package/src/surfaces.spec.tsx +51 -0
- package/src/surfaces.tsx +152 -58
- package/src/tamagui.spec.ts +182 -0
- package/src/tamagui.ts +126 -0
- package/src/views/Calendar.motion.spec.tsx +204 -0
- package/src/views/Calendar.stories.tsx +252 -4
- package/src/views/Calendar.tsx +2156 -156
- package/src/views/Dashboard.stories.tsx +52 -3
- package/src/views/Dashboard.tsx +200 -359
- package/src/views/Gantt.spec.tsx +611 -0
- package/src/views/Gantt.stories.tsx +209 -0
- package/src/views/Gantt.tsx +1183 -0
- package/src/views/ImageGrid.stories.tsx +56 -2
- package/src/views/ImageGrid.tsx +172 -43
- package/src/views/Kanban.native.tsx +801 -72
- package/src/views/Kanban.stories.tsx +187 -1
- package/src/views/Kanban.tsx +1188 -69
- package/src/views/List.stories.tsx +54 -2
- package/src/views/List.tsx +118 -78
- package/src/views/ReportBuilder.stories.tsx +38 -2
- package/src/views/ReportBuilder.tsx +98 -80
- package/src/views/TreeView.stories.tsx +98 -5
- package/src/views/TreeView.tsx +1099 -93
- package/src/views/calendarMath.spec.ts +197 -0
- package/src/views/calendarMath.ts +229 -0
- package/src/views/ganttMath.ts +333 -0
- package/src/views/index.ts +48 -1
- package/src/views/kanbanDnd.spec.ts +259 -0
- package/src/views/kanbanDnd.ts +323 -0
- package/src/views/treeViewDnd.spec.ts +353 -0
- package/src/views/treeViewDnd.ts +503 -0
- package/src/views/treeViewMotion.spec.ts +108 -0
- package/src/views/treeViewMotion.ts +100 -0
- package/src/views/tz-verify.spec.tsx +81 -0
- package/src/views/views.spec.tsx +602 -25
- package/types/Accordion/index.d.ts +59 -0
- package/types/Accordion/index.d.ts.map +1 -0
- package/types/Alert/index.d.ts +43 -0
- package/types/Alert/index.d.ts.map +1 -0
- package/types/Avatar/getInitials.d.ts +6 -0
- package/types/Avatar/getInitials.d.ts.map +1 -0
- package/types/Avatar/index.d.ts +55 -0
- package/types/Avatar/index.d.ts.map +1 -0
- package/types/Badge/index.d.ts +34 -0
- package/types/Badge/index.d.ts.map +1 -0
- package/types/Carousel/index.d.ts +29 -0
- package/types/Carousel/index.d.ts.map +1 -0
- package/types/Chip/index.d.ts +2 -0
- package/types/Chip/index.d.ts.map +1 -0
- package/types/DotIndicator/index.d.ts +31 -0
- package/types/DotIndicator/index.d.ts.map +1 -0
- package/types/DropdownMenu/index.d.ts +115 -0
- package/types/DropdownMenu/index.d.ts.map +1 -0
- package/types/ErrorBoundary/index.d.ts +18 -0
- package/types/ErrorBoundary/index.d.ts.map +1 -0
- package/types/Pagination.d.ts +48 -0
- package/types/Pagination.d.ts.map +1 -0
- package/types/ProgressSteps/index.d.ts +40 -0
- package/types/ProgressSteps/index.d.ts.map +1 -0
- package/types/Quote/index.d.ts +21 -0
- package/types/Quote/index.d.ts.map +1 -0
- package/types/SheetModal/index.d.ts +27 -0
- package/types/SheetModal/index.d.ts.map +1 -0
- package/types/SheetModal/index.native.d.ts +22 -0
- package/types/SheetModal/index.native.d.ts.map +1 -0
- package/types/Skeleton/index.d.ts +2 -0
- package/types/Skeleton/index.d.ts.map +1 -0
- package/types/SkipLink/index.d.ts +30 -0
- package/types/SkipLink/index.d.ts.map +1 -0
- package/types/Tabs/index.d.ts +394 -0
- package/types/Tabs/index.d.ts.map +1 -0
- package/types/Toast/index.d.ts +75 -0
- package/types/Toast/index.d.ts.map +1 -0
- package/types/Toast/store.d.ts +61 -0
- package/types/Toast/store.d.ts.map +1 -0
- package/types/Tooltip/index.d.ts +62 -0
- package/types/Tooltip/index.d.ts.map +1 -0
- package/types/Video/VideoFrame.d.ts +9 -0
- package/types/Video/VideoFrame.d.ts.map +1 -0
- package/types/Video/index.d.ts +9 -0
- package/types/Video/index.d.ts.map +1 -0
- package/types/Video/index.native.d.ts +8 -0
- package/types/Video/index.native.d.ts.map +1 -0
- package/types/Video/types.d.ts +17 -0
- package/types/Video/types.d.ts.map +1 -0
- package/types/Wheel/index.d.ts +41 -0
- package/types/Wheel/index.d.ts.map +1 -0
- package/types/actions/ActionBar.d.ts +34 -0
- package/types/actions/ActionBar.d.ts.map +1 -0
- package/types/actions/DestructiveAction.d.ts +49 -0
- package/types/actions/DestructiveAction.d.ts.map +1 -0
- package/types/actions/devWarn.d.ts +12 -0
- package/types/actions/devWarn.d.ts.map +1 -0
- package/types/actions/index.d.ts +6 -0
- package/types/actions/index.d.ts.map +1 -0
- package/types/actions/severity.d.ts +24 -0
- package/types/actions/severity.d.ts.map +1 -0
- package/types/charts/Axis.d.ts +43 -0
- package/types/charts/Axis.d.ts.map +1 -0
- package/types/charts/BarChart.d.ts +35 -0
- package/types/charts/BarChart.d.ts.map +1 -0
- package/types/charts/ChartSurface.d.ts +34 -0
- package/types/charts/ChartSurface.d.ts.map +1 -0
- package/types/charts/LineChart.d.ts +39 -0
- package/types/charts/LineChart.d.ts.map +1 -0
- package/types/charts/PieChart.d.ts +37 -0
- package/types/charts/PieChart.d.ts.map +1 -0
- package/types/charts/Sparkline.d.ts +27 -0
- package/types/charts/Sparkline.d.ts.map +1 -0
- package/types/charts/accessibility.d.ts +39 -0
- package/types/charts/accessibility.d.ts.map +1 -0
- package/types/charts/composeChart.d.ts +41 -0
- package/types/charts/composeChart.d.ts.map +1 -0
- package/types/charts/index.d.ts +12 -0
- package/types/charts/index.d.ts.map +1 -0
- package/types/charts/math.d.ts +115 -0
- package/types/charts/math.d.ts.map +1 -0
- package/types/charts/series.d.ts +85 -0
- package/types/charts/series.d.ts.map +1 -0
- package/types/charts/svg.d.ts +42 -0
- package/types/charts/svg.d.ts.map +1 -0
- package/types/charts/types.d.ts +49 -0
- package/types/charts/types.d.ts.map +1 -0
- package/types/charts/useChartTheme.d.ts +44 -0
- package/types/charts/useChartTheme.d.ts.map +1 -0
- package/types/code/Code/index.d.ts +30 -0
- package/types/code/Code/index.d.ts.map +1 -0
- package/types/code/CodeBlock/index.d.ts +25 -0
- package/types/code/CodeBlock/index.d.ts.map +1 -0
- package/types/code/HighlightedCode/index.d.ts +24 -0
- package/types/code/HighlightedCode/index.d.ts.map +1 -0
- package/types/code/Highlighter/index.d.ts +33 -0
- package/types/code/Highlighter/index.d.ts.map +1 -0
- package/types/code/Pre/index.d.ts +8 -0
- package/types/code/Pre/index.d.ts.map +1 -0
- package/types/code/index.d.ts +6 -0
- package/types/code/index.d.ts.map +1 -0
- package/types/componentColors.d.ts +98 -0
- package/types/componentColors.d.ts.map +1 -0
- package/types/feedback/ConfirmDialog.d.ts +62 -0
- package/types/feedback/ConfirmDialog.d.ts.map +1 -0
- package/types/feedback/NotifyHost.d.ts +26 -0
- package/types/feedback/NotifyHost.d.ts.map +1 -0
- package/types/feedback/index.d.ts +6 -0
- package/types/feedback/index.d.ts.map +1 -0
- package/types/feedback/notify.d.ts +16 -0
- package/types/feedback/notify.d.ts.map +1 -0
- package/types/feedback/route.d.ts +67 -0
- package/types/feedback/route.d.ts.map +1 -0
- package/types/feedback/store.d.ts +25 -0
- package/types/feedback/store.d.ts.map +1 -0
- package/types/hooks/index.d.ts +5 -0
- package/types/hooks/index.d.ts.map +1 -0
- package/types/hooks/useAssets/index.d.ts +3 -0
- package/types/hooks/useAssets/index.d.ts.map +1 -0
- package/types/hooks/useAssets/index.native.d.ts +4 -0
- package/types/hooks/useAssets/index.native.d.ts.map +1 -0
- package/types/hooks/useClipboard.d.ts +23 -0
- package/types/hooks/useClipboard.d.ts.map +1 -0
- package/types/hooks/useDirection.d.ts +29 -0
- package/types/hooks/useDirection.d.ts.map +1 -0
- package/types/hooks/useDirection.native.d.ts +11 -0
- package/types/hooks/useDirection.native.d.ts.map +1 -0
- package/types/hooks/useDocumentTitle.d.ts +41 -0
- package/types/hooks/useDocumentTitle.d.ts.map +1 -0
- package/types/icons/CheckRegular.d.ts +11 -0
- package/types/icons/CheckRegular.d.ts.map +1 -0
- package/types/icons/MinusRegular.d.ts +11 -0
- package/types/icons/MinusRegular.d.ts.map +1 -0
- package/types/icons/index.d.ts +4 -0
- package/types/icons/index.d.ts.map +1 -0
- package/types/icons/lucide.d.ts +4 -0
- package/types/icons/lucide.d.ts.map +1 -0
- package/types/icons/themed.d.ts +3 -0
- package/types/icons/themed.d.ts.map +1 -0
- package/types/images/Image/index.d.ts +4 -0
- package/types/images/Image/index.d.ts.map +1 -0
- package/types/images/Image/index.native.d.ts +4 -0
- package/types/images/Image/index.native.d.ts.map +1 -0
- package/types/images/Image/types.d.ts +8 -0
- package/types/images/Image/types.d.ts.map +1 -0
- package/types/images/Svg/index.d.ts +5 -0
- package/types/images/Svg/index.d.ts.map +1 -0
- package/types/images/Svg/index.native.d.ts +4 -0
- package/types/images/Svg/index.native.d.ts.map +1 -0
- package/types/images/SvgUri/index.d.ts +12 -0
- package/types/images/SvgUri/index.d.ts.map +1 -0
- package/types/images/SvgUri/index.native.d.ts +5 -0
- package/types/images/SvgUri/index.native.d.ts.map +1 -0
- package/types/images/index.d.ts +4 -0
- package/types/images/index.d.ts.map +1 -0
- package/types/index.d.ts +52 -0
- package/types/index.d.ts.map +1 -0
- package/types/layouts/AsyncBoundary.d.ts +94 -0
- package/types/layouts/AsyncBoundary.d.ts.map +1 -0
- package/types/layouts/Debug/index.d.ts +17 -0
- package/types/layouts/Debug/index.d.ts.map +1 -0
- package/types/layouts/KeyboardAvoidingWrapper/index.d.ts +29 -0
- package/types/layouts/KeyboardAvoidingWrapper/index.d.ts.map +1 -0
- package/types/layouts/KeyboardAvoidingWrapper/index.native.d.ts +29 -0
- package/types/layouts/KeyboardAvoidingWrapper/index.native.d.ts.map +1 -0
- package/types/layouts/PageTemplates.d.ts +94 -0
- package/types/layouts/PageTemplates.d.ts.map +1 -0
- package/types/layouts/PaneScaffold.d.ts +83 -0
- package/types/layouts/PaneScaffold.d.ts.map +1 -0
- package/types/layouts/SafeAreaWrapper/index.d.ts +24 -0
- package/types/layouts/SafeAreaWrapper/index.d.ts.map +1 -0
- package/types/layouts/SafeAreaWrapper/index.native.d.ts +25 -0
- package/types/layouts/SafeAreaWrapper/index.native.d.ts.map +1 -0
- package/types/layouts/ViewSwitcher.d.ts +27 -0
- package/types/layouts/ViewSwitcher.d.ts.map +1 -0
- package/types/layouts/attachments.d.ts +91 -0
- package/types/layouts/attachments.d.ts.map +1 -0
- package/types/layouts/breadcrumbs.d.ts +17 -0
- package/types/layouts/breadcrumbs.d.ts.map +1 -0
- package/types/layouts/index.d.ts +16 -0
- package/types/layouts/index.d.ts.map +1 -0
- package/types/layouts/page.d.ts +138 -0
- package/types/layouts/page.d.ts.map +1 -0
- package/types/layouts/pageHeadingScope.d.ts +43 -0
- package/types/layouts/pageHeadingScope.d.ts.map +1 -0
- package/types/layouts/sidebar.d.ts +25 -0
- package/types/layouts/sidebar.d.ts.map +1 -0
- package/types/layouts/tags.d.ts +72 -0
- package/types/layouts/tags.d.ts.map +1 -0
- package/types/layouts/timeline.d.ts +148 -0
- package/types/layouts/timeline.d.ts.map +1 -0
- package/types/layouts/toolbar.d.ts +33 -0
- package/types/layouts/toolbar.d.ts.map +1 -0
- package/types/shared/actionScan.d.ts +16 -0
- package/types/shared/actionScan.d.ts.map +1 -0
- package/types/shared/t.d.ts +18 -0
- package/types/shared/t.d.ts.map +1 -0
- package/types/shared/useReturnFocusOnClose.d.ts +18 -0
- package/types/shared/useReturnFocusOnClose.d.ts.map +1 -0
- package/types/surfaces.d.ts +294 -0
- package/types/surfaces.d.ts.map +1 -0
- package/types/tamagui.d.ts +10 -0
- package/types/tamagui.d.ts.map +1 -0
- package/types/testSetup.d.ts +2 -0
- package/types/testSetup.d.ts.map +1 -0
- package/types/utils/setTinted.d.ts +5 -0
- package/types/utils/setTinted.d.ts.map +1 -0
- package/types/utils/unwrapText.d.ts +3 -0
- package/types/utils/unwrapText.d.ts.map +1 -0
- package/types/views/Calendar.d.ts +135 -0
- package/types/views/Calendar.d.ts.map +1 -0
- package/types/views/Dashboard.d.ts +175 -0
- package/types/views/Dashboard.d.ts.map +1 -0
- package/types/views/Gantt.d.ts +121 -0
- package/types/views/Gantt.d.ts.map +1 -0
- package/types/views/ImageGrid.d.ts +82 -0
- package/types/views/ImageGrid.d.ts.map +1 -0
- package/types/views/Kanban.d.ts +123 -0
- package/types/views/Kanban.d.ts.map +1 -0
- package/types/views/Kanban.native.d.ts +102 -0
- package/types/views/Kanban.native.d.ts.map +1 -0
- package/types/views/List.d.ts +82 -0
- package/types/views/List.d.ts.map +1 -0
- package/types/views/ReportBuilder.d.ts +83 -0
- package/types/views/ReportBuilder.d.ts.map +1 -0
- package/types/views/TreeView.d.ts +110 -0
- package/types/views/TreeView.d.ts.map +1 -0
- package/types/views/calendarMath.d.ts +95 -0
- package/types/views/calendarMath.d.ts.map +1 -0
- package/types/views/ganttMath.d.ts +122 -0
- package/types/views/ganttMath.d.ts.map +1 -0
- package/types/views/index.d.ts +12 -0
- package/types/views/index.d.ts.map +1 -0
- package/types/views/kanbanDnd.d.ts +170 -0
- package/types/views/kanbanDnd.d.ts.map +1 -0
- package/types/views/treeViewDnd.d.ts +164 -0
- package/types/views/treeViewDnd.d.ts.map +1 -0
- package/types/views/treeViewMotion.d.ts +51 -0
- package/types/views/treeViewMotion.d.ts.map +1 -0
- package/dist/cjs/Badge/Badge.stories.cjs +0 -495
- package/dist/cjs/Badge/Badge.stories.native.js +0 -525
- package/dist/cjs/Badge/Badge.stories.native.js.map +0 -1
- package/dist/cjs/Carousel/Carousel.stories.cjs +0 -336
- package/dist/cjs/Carousel/Carousel.stories.native.js +0 -396
- package/dist/cjs/Carousel/Carousel.stories.native.js.map +0 -1
- package/dist/cjs/Chip/Chip.stories.cjs +0 -257
- package/dist/cjs/Chip/Chip.stories.native.js +0 -286
- package/dist/cjs/Chip/Chip.stories.native.js.map +0 -1
- package/dist/cjs/DotIndicator/DotIndicator.stories.cjs +0 -284
- package/dist/cjs/DotIndicator/DotIndicator.stories.native.js +0 -308
- package/dist/cjs/DotIndicator/DotIndicator.stories.native.js.map +0 -1
- package/dist/cjs/ErrorBoundary/ErrorBoundary.spec.cjs +0 -48
- package/dist/cjs/ErrorBoundary/ErrorBoundary.spec.native.js +0 -51
- package/dist/cjs/ErrorBoundary/ErrorBoundary.spec.native.js.map +0 -1
- package/dist/cjs/ErrorBoundary/ErrorBoundary.stories.cjs +0 -164
- package/dist/cjs/ErrorBoundary/ErrorBoundary.stories.native.js +0 -181
- package/dist/cjs/ErrorBoundary/ErrorBoundary.stories.native.js.map +0 -1
- package/dist/cjs/Pagination.stories.cjs +0 -178
- package/dist/cjs/Pagination.stories.native.js +0 -197
- package/dist/cjs/Pagination.stories.native.js.map +0 -1
- package/dist/cjs/Skeleton/Skeleton.stories.cjs +0 -434
- package/dist/cjs/Skeleton/Skeleton.stories.native.js +0 -465
- package/dist/cjs/Skeleton/Skeleton.stories.native.js.map +0 -1
- package/dist/cjs/Tooltip/Tooltip.stories.cjs +0 -105
- package/dist/cjs/Tooltip/Tooltip.stories.native.js +0 -114
- package/dist/cjs/Tooltip/Tooltip.stories.native.js.map +0 -1
- package/dist/cjs/Wheel/Wheel.stories.cjs +0 -353
- package/dist/cjs/Wheel/Wheel.stories.native.js +0 -382
- package/dist/cjs/Wheel/Wheel.stories.native.js.map +0 -1
- package/dist/cjs/code/Code/Code.stories.cjs +0 -46
- package/dist/cjs/code/Code/Code.stories.native.js +0 -49
- package/dist/cjs/code/Code/Code.stories.native.js.map +0 -1
- package/dist/cjs/code/Code/code.spec.cjs +0 -65
- package/dist/cjs/code/Code/code.spec.native.js +0 -68
- package/dist/cjs/code/Code/code.spec.native.js.map +0 -1
- package/dist/cjs/code/CodeBlock/CodeBlock.spec.cjs +0 -73
- package/dist/cjs/code/CodeBlock/CodeBlock.spec.native.js +0 -76
- package/dist/cjs/code/CodeBlock/CodeBlock.spec.native.js.map +0 -1
- package/dist/cjs/code/CodeBlock/codeBlock.stories.cjs +0 -57
- package/dist/cjs/code/CodeBlock/codeBlock.stories.native.js +0 -60
- package/dist/cjs/code/CodeBlock/codeBlock.stories.native.js.map +0 -1
- package/dist/cjs/code/HighlightedCode/HighlightedCode.stories.cjs +0 -123
- package/dist/cjs/code/HighlightedCode/HighlightedCode.stories.native.js +0 -134
- package/dist/cjs/code/HighlightedCode/HighlightedCode.stories.native.js.map +0 -1
- package/dist/cjs/code/Pre/Pre.stories.cjs +0 -135
- package/dist/cjs/code/Pre/Pre.stories.native.js +0 -148
- package/dist/cjs/code/Pre/Pre.stories.native.js.map +0 -1
- package/dist/cjs/code/Pre/pre.spec.cjs +0 -139
- package/dist/cjs/code/Pre/pre.spec.native.js +0 -145
- package/dist/cjs/code/Pre/pre.spec.native.js.map +0 -1
- package/dist/cjs/code/code.spec.cjs +0 -46
- package/dist/cjs/code/code.spec.native.js +0 -49
- package/dist/cjs/code/code.spec.native.js.map +0 -1
- package/dist/cjs/hooks/useAssets/useAssets.spec.cjs +0 -200
- package/dist/cjs/hooks/useAssets/useAssets.spec.native.js +0 -249
- package/dist/cjs/hooks/useAssets/useAssets.spec.native.js.map +0 -1
- package/dist/cjs/hooks/useClipboard.spec.cjs +0 -165
- package/dist/cjs/hooks/useClipboard.spec.native.js +0 -184
- package/dist/cjs/hooks/useClipboard.spec.native.js.map +0 -1
- package/dist/cjs/icons/icons.spec.cjs +0 -33
- package/dist/cjs/icons/icons.spec.native.js +0 -36
- package/dist/cjs/icons/icons.spec.native.js.map +0 -1
- package/dist/cjs/images/Image/Image.spec.cjs +0 -238
- package/dist/cjs/images/Image/Image.spec.native.js +0 -241
- package/dist/cjs/images/Image/Image.spec.native.js.map +0 -1
- package/dist/cjs/images/Image/Image.stories.cjs +0 -184
- package/dist/cjs/images/Image/Image.stories.native.js +0 -191
- package/dist/cjs/images/Image/Image.stories.native.js.map +0 -1
- package/dist/cjs/images/Svg/Svg.stories.cjs +0 -54
- package/dist/cjs/images/Svg/Svg.stories.native.js +0 -59
- package/dist/cjs/images/Svg/Svg.stories.native.js.map +0 -1
- package/dist/cjs/images/Svg/svg.spec.cjs +0 -186
- package/dist/cjs/images/Svg/svg.spec.native.js +0 -189
- package/dist/cjs/images/Svg/svg.spec.native.js.map +0 -1
- package/dist/cjs/images/SvgUri/SvgUri.spec.cjs +0 -160
- package/dist/cjs/images/SvgUri/SvgUri.spec.native.js +0 -168
- package/dist/cjs/images/SvgUri/SvgUri.spec.native.js.map +0 -1
- package/dist/cjs/images/SvgUri/SvgUri.stories.cjs +0 -123
- package/dist/cjs/images/SvgUri/SvgUri.stories.native.js +0 -136
- package/dist/cjs/images/SvgUri/SvgUri.stories.native.js.map +0 -1
- package/dist/cjs/images/images.spec.cjs +0 -104
- package/dist/cjs/images/images.spec.native.js +0 -107
- package/dist/cjs/images/images.spec.native.js.map +0 -1
- package/dist/cjs/layouts/Attachments.stories.cjs +0 -192
- package/dist/cjs/layouts/Attachments.stories.native.js +0 -217
- package/dist/cjs/layouts/Attachments.stories.native.js.map +0 -1
- package/dist/cjs/layouts/Breadcrumbs.stories.cjs +0 -67
- package/dist/cjs/layouts/Breadcrumbs.stories.native.js +0 -76
- package/dist/cjs/layouts/Breadcrumbs.stories.native.js.map +0 -1
- package/dist/cjs/layouts/Debug/DebugLayout.stories.cjs +0 -48
- package/dist/cjs/layouts/Debug/DebugLayout.stories.native.js +0 -55
- package/dist/cjs/layouts/Debug/DebugLayout.stories.native.js.map +0 -1
- package/dist/cjs/layouts/Debug/debug.spec.cjs +0 -198
- package/dist/cjs/layouts/Debug/debug.spec.native.js +0 -233
- package/dist/cjs/layouts/Debug/debug.spec.native.js.map +0 -1
- package/dist/cjs/layouts/KeyboardAvoidingWrapper/KeyboardAvoidingWrapper.stories.cjs +0 -62
- package/dist/cjs/layouts/KeyboardAvoidingWrapper/KeyboardAvoidingWrapper.stories.native.js +0 -67
- package/dist/cjs/layouts/KeyboardAvoidingWrapper/KeyboardAvoidingWrapper.stories.native.js.map +0 -1
- package/dist/cjs/layouts/SafeAreaWrapper/SafeAreaWrapper.stories.cjs +0 -58
- package/dist/cjs/layouts/SafeAreaWrapper/SafeAreaWrapper.stories.native.js +0 -63
- package/dist/cjs/layouts/SafeAreaWrapper/SafeAreaWrapper.stories.native.js.map +0 -1
- package/dist/cjs/layouts/Sidebar.stories.cjs +0 -98
- package/dist/cjs/layouts/Sidebar.stories.native.js +0 -103
- package/dist/cjs/layouts/Sidebar.stories.native.js.map +0 -1
- package/dist/cjs/layouts/Tags.stories.cjs +0 -205
- package/dist/cjs/layouts/Tags.stories.native.js +0 -232
- package/dist/cjs/layouts/Tags.stories.native.js.map +0 -1
- package/dist/cjs/layouts/Timeline.stories.cjs +0 -212
- package/dist/cjs/layouts/Timeline.stories.native.js +0 -241
- package/dist/cjs/layouts/Timeline.stories.native.js.map +0 -1
- package/dist/cjs/layouts/Toolbar.stories.cjs +0 -90
- package/dist/cjs/layouts/Toolbar.stories.native.js +0 -97
- package/dist/cjs/layouts/Toolbar.stories.native.js.map +0 -1
- package/dist/cjs/layouts/ViewSwitcher.stories.cjs +0 -70
- package/dist/cjs/layouts/ViewSwitcher.stories.native.js +0 -75
- package/dist/cjs/layouts/ViewSwitcher.stories.native.js.map +0 -1
- package/dist/cjs/layouts/layouts.spec.cjs +0 -249
- package/dist/cjs/layouts/layouts.spec.native.js +0 -272
- package/dist/cjs/layouts/layouts.spec.native.js.map +0 -1
- package/dist/cjs/src.spec.cjs +0 -6
- package/dist/cjs/src.spec.native.js +0 -9
- package/dist/cjs/src.spec.native.js.map +0 -1
- package/dist/cjs/utils/utils.spec.cjs +0 -58
- package/dist/cjs/utils/utils.spec.native.js +0 -61
- package/dist/cjs/utils/utils.spec.native.js.map +0 -1
- package/dist/cjs/views/Calendar.stories.cjs +0 -66
- package/dist/cjs/views/Calendar.stories.native.js +0 -73
- package/dist/cjs/views/Calendar.stories.native.js.map +0 -1
- package/dist/cjs/views/Dashboard.stories.cjs +0 -95
- package/dist/cjs/views/Dashboard.stories.native.js +0 -100
- package/dist/cjs/views/Dashboard.stories.native.js.map +0 -1
- package/dist/cjs/views/ImageGrid.stories.cjs +0 -68
- package/dist/cjs/views/ImageGrid.stories.native.js +0 -79
- package/dist/cjs/views/ImageGrid.stories.native.js.map +0 -1
- package/dist/cjs/views/Kanban.stories.cjs +0 -82
- package/dist/cjs/views/Kanban.stories.native.js +0 -91
- package/dist/cjs/views/Kanban.stories.native.js.map +0 -1
- package/dist/cjs/views/List.stories.cjs +0 -74
- package/dist/cjs/views/List.stories.native.js +0 -85
- package/dist/cjs/views/List.stories.native.js.map +0 -1
- package/dist/cjs/views/ReportBuilder.stories.cjs +0 -89
- package/dist/cjs/views/ReportBuilder.stories.native.js +0 -96
- package/dist/cjs/views/ReportBuilder.stories.native.js.map +0 -1
- package/dist/cjs/views/TreeView.stories.cjs +0 -94
- package/dist/cjs/views/TreeView.stories.native.js +0 -101
- package/dist/cjs/views/TreeView.stories.native.js.map +0 -1
- package/dist/cjs/views/hotkeys.spec.cjs +0 -210
- package/dist/cjs/views/hotkeys.spec.native.js +0 -253
- package/dist/cjs/views/hotkeys.spec.native.js.map +0 -1
- package/dist/cjs/views/views.spec.cjs +0 -313
- package/dist/cjs/views/views.spec.native.js +0 -344
- package/dist/cjs/views/views.spec.native.js.map +0 -1
- package/dist/esm/Badge/Badge.stories.mjs +0 -459
- package/dist/esm/Badge/Badge.stories.mjs.map +0 -1
- package/dist/esm/Badge/Badge.stories.native.js +0 -486
- package/dist/esm/Badge/Badge.stories.native.js.map +0 -1
- package/dist/esm/Carousel/Carousel.stories.mjs +0 -299
- package/dist/esm/Carousel/Carousel.stories.mjs.map +0 -1
- package/dist/esm/Carousel/Carousel.stories.native.js +0 -356
- package/dist/esm/Carousel/Carousel.stories.native.js.map +0 -1
- package/dist/esm/Chip/Chip.stories.mjs +0 -225
- package/dist/esm/Chip/Chip.stories.mjs.map +0 -1
- package/dist/esm/Chip/Chip.stories.native.js +0 -251
- package/dist/esm/Chip/Chip.stories.native.js.map +0 -1
- package/dist/esm/DotIndicator/DotIndicator.stories.mjs +0 -252
- package/dist/esm/DotIndicator/DotIndicator.stories.mjs.map +0 -1
- package/dist/esm/DotIndicator/DotIndicator.stories.native.js +0 -273
- package/dist/esm/DotIndicator/DotIndicator.stories.native.js.map +0 -1
- package/dist/esm/ErrorBoundary/ErrorBoundary.spec.mjs +0 -49
- package/dist/esm/ErrorBoundary/ErrorBoundary.spec.mjs.map +0 -1
- package/dist/esm/ErrorBoundary/ErrorBoundary.spec.native.js +0 -49
- package/dist/esm/ErrorBoundary/ErrorBoundary.spec.native.js.map +0 -1
- package/dist/esm/ErrorBoundary/ErrorBoundary.stories.mjs +0 -134
- package/dist/esm/ErrorBoundary/ErrorBoundary.stories.mjs.map +0 -1
- package/dist/esm/ErrorBoundary/ErrorBoundary.stories.native.js +0 -148
- package/dist/esm/ErrorBoundary/ErrorBoundary.stories.native.js.map +0 -1
- package/dist/esm/Pagination.stories.mjs +0 -145
- package/dist/esm/Pagination.stories.mjs.map +0 -1
- package/dist/esm/Pagination.stories.native.js +0 -161
- package/dist/esm/Pagination.stories.native.js.map +0 -1
- package/dist/esm/Skeleton/Skeleton.stories.mjs +0 -398
- package/dist/esm/Skeleton/Skeleton.stories.mjs.map +0 -1
- package/dist/esm/Skeleton/Skeleton.stories.native.js +0 -426
- package/dist/esm/Skeleton/Skeleton.stories.native.js.map +0 -1
- package/dist/esm/Tooltip/Tooltip.stories.mjs +0 -77
- package/dist/esm/Tooltip/Tooltip.stories.mjs.map +0 -1
- package/dist/esm/Tooltip/Tooltip.stories.native.js +0 -83
- package/dist/esm/Tooltip/Tooltip.stories.native.js.map +0 -1
- package/dist/esm/Wheel/Wheel.stories.mjs +0 -319
- package/dist/esm/Wheel/Wheel.stories.mjs.map +0 -1
- package/dist/esm/Wheel/Wheel.stories.native.js +0 -345
- package/dist/esm/Wheel/Wheel.stories.native.js.map +0 -1
- package/dist/esm/code/Code/Code.stories.mjs +0 -20
- package/dist/esm/code/Code/Code.stories.mjs.map +0 -1
- package/dist/esm/code/Code/Code.stories.native.js +0 -20
- package/dist/esm/code/Code/Code.stories.native.js.map +0 -1
- package/dist/esm/code/Code/code.spec.mjs +0 -66
- package/dist/esm/code/Code/code.spec.mjs.map +0 -1
- package/dist/esm/code/Code/code.spec.native.js +0 -66
- package/dist/esm/code/Code/code.spec.native.js.map +0 -1
- package/dist/esm/code/CodeBlock/CodeBlock.spec.mjs +0 -74
- package/dist/esm/code/CodeBlock/CodeBlock.spec.mjs.map +0 -1
- package/dist/esm/code/CodeBlock/CodeBlock.spec.native.js +0 -74
- package/dist/esm/code/CodeBlock/CodeBlock.spec.native.js.map +0 -1
- package/dist/esm/code/CodeBlock/codeBlock.stories.mjs +0 -31
- package/dist/esm/code/CodeBlock/codeBlock.stories.mjs.map +0 -1
- package/dist/esm/code/CodeBlock/codeBlock.stories.native.js +0 -31
- package/dist/esm/code/CodeBlock/codeBlock.stories.native.js.map +0 -1
- package/dist/esm/code/HighlightedCode/HighlightedCode.stories.mjs +0 -94
- package/dist/esm/code/HighlightedCode/HighlightedCode.stories.mjs.map +0 -1
- package/dist/esm/code/HighlightedCode/HighlightedCode.stories.native.js +0 -102
- package/dist/esm/code/HighlightedCode/HighlightedCode.stories.native.js.map +0 -1
- package/dist/esm/code/Pre/Pre.stories.mjs +0 -105
- package/dist/esm/code/Pre/Pre.stories.mjs.map +0 -1
- package/dist/esm/code/Pre/Pre.stories.native.js +0 -115
- package/dist/esm/code/Pre/Pre.stories.native.js.map +0 -1
- package/dist/esm/code/Pre/pre.spec.mjs +0 -140
- package/dist/esm/code/Pre/pre.spec.mjs.map +0 -1
- package/dist/esm/code/Pre/pre.spec.native.js +0 -143
- package/dist/esm/code/Pre/pre.spec.native.js.map +0 -1
- package/dist/esm/code/code.spec.mjs +0 -47
- package/dist/esm/code/code.spec.mjs.map +0 -1
- package/dist/esm/code/code.spec.native.js +0 -47
- package/dist/esm/code/code.spec.native.js.map +0 -1
- package/dist/esm/hooks/useAssets/useAssets.spec.mjs +0 -177
- package/dist/esm/hooks/useAssets/useAssets.spec.mjs.map +0 -1
- package/dist/esm/hooks/useAssets/useAssets.spec.native.js +0 -223
- package/dist/esm/hooks/useAssets/useAssets.spec.native.js.map +0 -1
- package/dist/esm/hooks/useClipboard.spec.mjs +0 -166
- package/dist/esm/hooks/useClipboard.spec.mjs.map +0 -1
- package/dist/esm/hooks/useClipboard.spec.native.js +0 -182
- package/dist/esm/hooks/useClipboard.spec.native.js.map +0 -1
- package/dist/esm/icons/icons.spec.mjs +0 -34
- package/dist/esm/icons/icons.spec.mjs.map +0 -1
- package/dist/esm/icons/icons.spec.native.js +0 -34
- package/dist/esm/icons/icons.spec.native.js.map +0 -1
- package/dist/esm/images/Image/Image.spec.mjs +0 -239
- package/dist/esm/images/Image/Image.spec.mjs.map +0 -1
- package/dist/esm/images/Image/Image.spec.native.js +0 -239
- package/dist/esm/images/Image/Image.spec.native.js.map +0 -1
- package/dist/esm/images/Image/Image.stories.mjs +0 -147
- package/dist/esm/images/Image/Image.stories.mjs.map +0 -1
- package/dist/esm/images/Image/Image.stories.native.js +0 -151
- package/dist/esm/images/Image/Image.stories.native.js.map +0 -1
- package/dist/esm/images/Svg/Svg.stories.mjs +0 -28
- package/dist/esm/images/Svg/Svg.stories.mjs.map +0 -1
- package/dist/esm/images/Svg/Svg.stories.native.js +0 -30
- package/dist/esm/images/Svg/Svg.stories.native.js.map +0 -1
- package/dist/esm/images/Svg/svg.spec.mjs +0 -187
- package/dist/esm/images/Svg/svg.spec.mjs.map +0 -1
- package/dist/esm/images/Svg/svg.spec.native.js +0 -187
- package/dist/esm/images/Svg/svg.spec.native.js.map +0 -1
- package/dist/esm/images/SvgUri/SvgUri.spec.mjs +0 -161
- package/dist/esm/images/SvgUri/SvgUri.spec.mjs.map +0 -1
- package/dist/esm/images/SvgUri/SvgUri.spec.native.js +0 -166
- package/dist/esm/images/SvgUri/SvgUri.spec.native.js.map +0 -1
- package/dist/esm/images/SvgUri/SvgUri.stories.mjs +0 -93
- package/dist/esm/images/SvgUri/SvgUri.stories.mjs.map +0 -1
- package/dist/esm/images/SvgUri/SvgUri.stories.native.js +0 -103
- package/dist/esm/images/SvgUri/SvgUri.stories.native.js.map +0 -1
- package/dist/esm/images/images.spec.mjs +0 -81
- package/dist/esm/images/images.spec.mjs.map +0 -1
- package/dist/esm/images/images.spec.native.js +0 -81
- package/dist/esm/images/images.spec.native.js.map +0 -1
- package/dist/esm/layouts/Attachments.stories.mjs +0 -162
- package/dist/esm/layouts/Attachments.stories.mjs.map +0 -1
- package/dist/esm/layouts/Attachments.stories.native.js +0 -184
- package/dist/esm/layouts/Attachments.stories.native.js.map +0 -1
- package/dist/esm/layouts/Breadcrumbs.stories.mjs +0 -41
- package/dist/esm/layouts/Breadcrumbs.stories.mjs.map +0 -1
- package/dist/esm/layouts/Breadcrumbs.stories.native.js +0 -47
- package/dist/esm/layouts/Breadcrumbs.stories.native.js.map +0 -1
- package/dist/esm/layouts/Debug/DebugLayout.stories.mjs +0 -22
- package/dist/esm/layouts/Debug/DebugLayout.stories.mjs.map +0 -1
- package/dist/esm/layouts/Debug/DebugLayout.stories.native.js +0 -26
- package/dist/esm/layouts/Debug/DebugLayout.stories.native.js.map +0 -1
- package/dist/esm/layouts/Debug/debug.spec.mjs +0 -199
- package/dist/esm/layouts/Debug/debug.spec.mjs.map +0 -1
- package/dist/esm/layouts/Debug/debug.spec.native.js +0 -231
- package/dist/esm/layouts/Debug/debug.spec.native.js.map +0 -1
- package/dist/esm/layouts/KeyboardAvoidingWrapper/KeyboardAvoidingWrapper.stories.mjs +0 -36
- package/dist/esm/layouts/KeyboardAvoidingWrapper/KeyboardAvoidingWrapper.stories.mjs.map +0 -1
- package/dist/esm/layouts/KeyboardAvoidingWrapper/KeyboardAvoidingWrapper.stories.native.js +0 -38
- package/dist/esm/layouts/KeyboardAvoidingWrapper/KeyboardAvoidingWrapper.stories.native.js.map +0 -1
- package/dist/esm/layouts/SafeAreaWrapper/SafeAreaWrapper.stories.mjs +0 -32
- package/dist/esm/layouts/SafeAreaWrapper/SafeAreaWrapper.stories.mjs.map +0 -1
- package/dist/esm/layouts/SafeAreaWrapper/SafeAreaWrapper.stories.native.js +0 -34
- package/dist/esm/layouts/SafeAreaWrapper/SafeAreaWrapper.stories.native.js.map +0 -1
- package/dist/esm/layouts/Sidebar.stories.mjs +0 -72
- package/dist/esm/layouts/Sidebar.stories.mjs.map +0 -1
- package/dist/esm/layouts/Sidebar.stories.native.js +0 -74
- package/dist/esm/layouts/Sidebar.stories.native.js.map +0 -1
- package/dist/esm/layouts/Tags.stories.mjs +0 -175
- package/dist/esm/layouts/Tags.stories.mjs.map +0 -1
- package/dist/esm/layouts/Tags.stories.native.js +0 -199
- package/dist/esm/layouts/Tags.stories.native.js.map +0 -1
- package/dist/esm/layouts/Timeline.stories.mjs +0 -181
- package/dist/esm/layouts/Timeline.stories.mjs.map +0 -1
- package/dist/esm/layouts/Timeline.stories.native.js +0 -207
- package/dist/esm/layouts/Timeline.stories.native.js.map +0 -1
- package/dist/esm/layouts/Toolbar.stories.mjs +0 -63
- package/dist/esm/layouts/Toolbar.stories.mjs.map +0 -1
- package/dist/esm/layouts/Toolbar.stories.native.js +0 -67
- package/dist/esm/layouts/Toolbar.stories.native.js.map +0 -1
- package/dist/esm/layouts/ViewSwitcher.stories.mjs +0 -44
- package/dist/esm/layouts/ViewSwitcher.stories.mjs.map +0 -1
- package/dist/esm/layouts/ViewSwitcher.stories.native.js +0 -46
- package/dist/esm/layouts/ViewSwitcher.stories.native.js.map +0 -1
- package/dist/esm/layouts/layouts.spec.mjs +0 -226
- package/dist/esm/layouts/layouts.spec.mjs.map +0 -1
- package/dist/esm/layouts/layouts.spec.native.js +0 -246
- package/dist/esm/layouts/layouts.spec.native.js.map +0 -1
- package/dist/esm/src.spec.mjs +0 -7
- package/dist/esm/src.spec.mjs.map +0 -1
- package/dist/esm/src.spec.native.js +0 -7
- package/dist/esm/src.spec.native.js.map +0 -1
- package/dist/esm/utils/utils.spec.mjs +0 -59
- package/dist/esm/utils/utils.spec.mjs.map +0 -1
- package/dist/esm/utils/utils.spec.native.js +0 -59
- package/dist/esm/utils/utils.spec.native.js.map +0 -1
- package/dist/esm/views/Calendar.stories.mjs +0 -40
- package/dist/esm/views/Calendar.stories.mjs.map +0 -1
- package/dist/esm/views/Calendar.stories.native.js +0 -44
- package/dist/esm/views/Calendar.stories.native.js.map +0 -1
- package/dist/esm/views/Dashboard.stories.mjs +0 -69
- package/dist/esm/views/Dashboard.stories.mjs.map +0 -1
- package/dist/esm/views/Dashboard.stories.native.js +0 -71
- package/dist/esm/views/Dashboard.stories.native.js.map +0 -1
- package/dist/esm/views/ImageGrid.stories.mjs +0 -42
- package/dist/esm/views/ImageGrid.stories.mjs.map +0 -1
- package/dist/esm/views/ImageGrid.stories.native.js +0 -50
- package/dist/esm/views/ImageGrid.stories.native.js.map +0 -1
- package/dist/esm/views/Kanban.stories.mjs +0 -56
- package/dist/esm/views/Kanban.stories.mjs.map +0 -1
- package/dist/esm/views/Kanban.stories.native.js +0 -62
- package/dist/esm/views/Kanban.stories.native.js.map +0 -1
- package/dist/esm/views/List.stories.mjs +0 -48
- package/dist/esm/views/List.stories.mjs.map +0 -1
- package/dist/esm/views/List.stories.native.js +0 -56
- package/dist/esm/views/List.stories.native.js.map +0 -1
- package/dist/esm/views/ReportBuilder.stories.mjs +0 -63
- package/dist/esm/views/ReportBuilder.stories.mjs.map +0 -1
- package/dist/esm/views/ReportBuilder.stories.native.js +0 -67
- package/dist/esm/views/ReportBuilder.stories.native.js.map +0 -1
- package/dist/esm/views/TreeView.stories.mjs +0 -68
- package/dist/esm/views/TreeView.stories.mjs.map +0 -1
- package/dist/esm/views/TreeView.stories.native.js +0 -72
- package/dist/esm/views/TreeView.stories.native.js.map +0 -1
- package/dist/esm/views/hotkeys.spec.mjs +0 -211
- package/dist/esm/views/hotkeys.spec.mjs.map +0 -1
- package/dist/esm/views/hotkeys.spec.native.js +0 -227
- package/dist/esm/views/hotkeys.spec.native.js.map +0 -1
- package/dist/esm/views/views.spec.mjs +0 -290
- package/dist/esm/views/views.spec.mjs.map +0 -1
- package/dist/esm/views/views.spec.native.js +0 -318
- package/dist/esm/views/views.spec.native.js.map +0 -1
- package/dist/jsx/Badge/Badge.stories.mjs +0 -459
- package/dist/jsx/Badge/Badge.stories.mjs.map +0 -1
- package/dist/jsx/Badge/Badge.stories.native.js +0 -525
- package/dist/jsx/Badge/Badge.stories.native.js.map +0 -1
- package/dist/jsx/Carousel/Carousel.stories.mjs +0 -299
- package/dist/jsx/Carousel/Carousel.stories.mjs.map +0 -1
- package/dist/jsx/Carousel/Carousel.stories.native.js +0 -396
- package/dist/jsx/Carousel/Carousel.stories.native.js.map +0 -1
- package/dist/jsx/Chip/Chip.stories.mjs +0 -225
- package/dist/jsx/Chip/Chip.stories.mjs.map +0 -1
- package/dist/jsx/Chip/Chip.stories.native.js +0 -286
- package/dist/jsx/Chip/Chip.stories.native.js.map +0 -1
- package/dist/jsx/DotIndicator/DotIndicator.stories.mjs +0 -252
- package/dist/jsx/DotIndicator/DotIndicator.stories.mjs.map +0 -1
- package/dist/jsx/DotIndicator/DotIndicator.stories.native.js +0 -308
- package/dist/jsx/DotIndicator/DotIndicator.stories.native.js.map +0 -1
- package/dist/jsx/ErrorBoundary/ErrorBoundary.spec.mjs +0 -49
- package/dist/jsx/ErrorBoundary/ErrorBoundary.spec.mjs.map +0 -1
- package/dist/jsx/ErrorBoundary/ErrorBoundary.spec.native.js +0 -51
- package/dist/jsx/ErrorBoundary/ErrorBoundary.spec.native.js.map +0 -1
- package/dist/jsx/ErrorBoundary/ErrorBoundary.stories.mjs +0 -134
- package/dist/jsx/ErrorBoundary/ErrorBoundary.stories.mjs.map +0 -1
- package/dist/jsx/ErrorBoundary/ErrorBoundary.stories.native.js +0 -181
- package/dist/jsx/ErrorBoundary/ErrorBoundary.stories.native.js.map +0 -1
- package/dist/jsx/Pagination.stories.mjs +0 -145
- package/dist/jsx/Pagination.stories.mjs.map +0 -1
- package/dist/jsx/Pagination.stories.native.js +0 -197
- package/dist/jsx/Pagination.stories.native.js.map +0 -1
- package/dist/jsx/Skeleton/Skeleton.stories.mjs +0 -398
- package/dist/jsx/Skeleton/Skeleton.stories.mjs.map +0 -1
- package/dist/jsx/Skeleton/Skeleton.stories.native.js +0 -465
- package/dist/jsx/Skeleton/Skeleton.stories.native.js.map +0 -1
- package/dist/jsx/Tooltip/Tooltip.stories.mjs +0 -77
- package/dist/jsx/Tooltip/Tooltip.stories.mjs.map +0 -1
- package/dist/jsx/Tooltip/Tooltip.stories.native.js +0 -114
- package/dist/jsx/Tooltip/Tooltip.stories.native.js.map +0 -1
- package/dist/jsx/Wheel/Wheel.stories.mjs +0 -319
- package/dist/jsx/Wheel/Wheel.stories.mjs.map +0 -1
- package/dist/jsx/Wheel/Wheel.stories.native.js +0 -382
- package/dist/jsx/Wheel/Wheel.stories.native.js.map +0 -1
- package/dist/jsx/code/Code/Code.stories.mjs +0 -20
- package/dist/jsx/code/Code/Code.stories.mjs.map +0 -1
- package/dist/jsx/code/Code/Code.stories.native.js +0 -49
- package/dist/jsx/code/Code/Code.stories.native.js.map +0 -1
- package/dist/jsx/code/Code/code.spec.mjs +0 -66
- package/dist/jsx/code/Code/code.spec.mjs.map +0 -1
- package/dist/jsx/code/Code/code.spec.native.js +0 -68
- package/dist/jsx/code/Code/code.spec.native.js.map +0 -1
- package/dist/jsx/code/CodeBlock/CodeBlock.spec.mjs +0 -74
- package/dist/jsx/code/CodeBlock/CodeBlock.spec.mjs.map +0 -1
- package/dist/jsx/code/CodeBlock/CodeBlock.spec.native.js +0 -76
- package/dist/jsx/code/CodeBlock/CodeBlock.spec.native.js.map +0 -1
- package/dist/jsx/code/CodeBlock/codeBlock.stories.mjs +0 -31
- package/dist/jsx/code/CodeBlock/codeBlock.stories.mjs.map +0 -1
- package/dist/jsx/code/CodeBlock/codeBlock.stories.native.js +0 -60
- package/dist/jsx/code/CodeBlock/codeBlock.stories.native.js.map +0 -1
- package/dist/jsx/code/HighlightedCode/HighlightedCode.stories.mjs +0 -94
- package/dist/jsx/code/HighlightedCode/HighlightedCode.stories.mjs.map +0 -1
- package/dist/jsx/code/HighlightedCode/HighlightedCode.stories.native.js +0 -134
- package/dist/jsx/code/HighlightedCode/HighlightedCode.stories.native.js.map +0 -1
- package/dist/jsx/code/Pre/Pre.stories.mjs +0 -105
- package/dist/jsx/code/Pre/Pre.stories.mjs.map +0 -1
- package/dist/jsx/code/Pre/Pre.stories.native.js +0 -148
- package/dist/jsx/code/Pre/Pre.stories.native.js.map +0 -1
- package/dist/jsx/code/Pre/pre.spec.mjs +0 -140
- package/dist/jsx/code/Pre/pre.spec.mjs.map +0 -1
- package/dist/jsx/code/Pre/pre.spec.native.js +0 -145
- package/dist/jsx/code/Pre/pre.spec.native.js.map +0 -1
- package/dist/jsx/code/code.spec.mjs +0 -47
- package/dist/jsx/code/code.spec.mjs.map +0 -1
- package/dist/jsx/code/code.spec.native.js +0 -49
- package/dist/jsx/code/code.spec.native.js.map +0 -1
- package/dist/jsx/hooks/useAssets/useAssets.spec.mjs +0 -177
- package/dist/jsx/hooks/useAssets/useAssets.spec.mjs.map +0 -1
- package/dist/jsx/hooks/useAssets/useAssets.spec.native.js +0 -249
- package/dist/jsx/hooks/useAssets/useAssets.spec.native.js.map +0 -1
- package/dist/jsx/hooks/useClipboard.spec.mjs +0 -166
- package/dist/jsx/hooks/useClipboard.spec.mjs.map +0 -1
- package/dist/jsx/hooks/useClipboard.spec.native.js +0 -184
- package/dist/jsx/hooks/useClipboard.spec.native.js.map +0 -1
- package/dist/jsx/icons/icons.spec.mjs +0 -34
- package/dist/jsx/icons/icons.spec.mjs.map +0 -1
- package/dist/jsx/icons/icons.spec.native.js +0 -36
- package/dist/jsx/icons/icons.spec.native.js.map +0 -1
- package/dist/jsx/images/Image/Image.spec.mjs +0 -239
- package/dist/jsx/images/Image/Image.spec.mjs.map +0 -1
- package/dist/jsx/images/Image/Image.spec.native.js +0 -241
- package/dist/jsx/images/Image/Image.spec.native.js.map +0 -1
- package/dist/jsx/images/Image/Image.stories.mjs +0 -147
- package/dist/jsx/images/Image/Image.stories.mjs.map +0 -1
- package/dist/jsx/images/Image/Image.stories.native.js +0 -191
- package/dist/jsx/images/Image/Image.stories.native.js.map +0 -1
- package/dist/jsx/images/Svg/Svg.stories.mjs +0 -28
- package/dist/jsx/images/Svg/Svg.stories.mjs.map +0 -1
- package/dist/jsx/images/Svg/Svg.stories.native.js +0 -59
- package/dist/jsx/images/Svg/Svg.stories.native.js.map +0 -1
- package/dist/jsx/images/Svg/svg.spec.mjs +0 -187
- package/dist/jsx/images/Svg/svg.spec.mjs.map +0 -1
- package/dist/jsx/images/Svg/svg.spec.native.js +0 -189
- package/dist/jsx/images/Svg/svg.spec.native.js.map +0 -1
- package/dist/jsx/images/SvgUri/SvgUri.spec.mjs +0 -161
- package/dist/jsx/images/SvgUri/SvgUri.spec.mjs.map +0 -1
- package/dist/jsx/images/SvgUri/SvgUri.spec.native.js +0 -168
- package/dist/jsx/images/SvgUri/SvgUri.spec.native.js.map +0 -1
- package/dist/jsx/images/SvgUri/SvgUri.stories.mjs +0 -93
- package/dist/jsx/images/SvgUri/SvgUri.stories.mjs.map +0 -1
- package/dist/jsx/images/SvgUri/SvgUri.stories.native.js +0 -136
- package/dist/jsx/images/SvgUri/SvgUri.stories.native.js.map +0 -1
- package/dist/jsx/images/images.spec.mjs +0 -81
- package/dist/jsx/images/images.spec.mjs.map +0 -1
- package/dist/jsx/images/images.spec.native.js +0 -107
- package/dist/jsx/images/images.spec.native.js.map +0 -1
- package/dist/jsx/layouts/Attachments.stories.mjs +0 -162
- package/dist/jsx/layouts/Attachments.stories.mjs.map +0 -1
- package/dist/jsx/layouts/Attachments.stories.native.js +0 -217
- package/dist/jsx/layouts/Attachments.stories.native.js.map +0 -1
- package/dist/jsx/layouts/Breadcrumbs.stories.mjs +0 -41
- package/dist/jsx/layouts/Breadcrumbs.stories.mjs.map +0 -1
- package/dist/jsx/layouts/Breadcrumbs.stories.native.js +0 -76
- package/dist/jsx/layouts/Breadcrumbs.stories.native.js.map +0 -1
- package/dist/jsx/layouts/Debug/DebugLayout.stories.mjs +0 -22
- package/dist/jsx/layouts/Debug/DebugLayout.stories.mjs.map +0 -1
- package/dist/jsx/layouts/Debug/DebugLayout.stories.native.js +0 -55
- package/dist/jsx/layouts/Debug/DebugLayout.stories.native.js.map +0 -1
- package/dist/jsx/layouts/Debug/debug.spec.mjs +0 -199
- package/dist/jsx/layouts/Debug/debug.spec.mjs.map +0 -1
- package/dist/jsx/layouts/Debug/debug.spec.native.js +0 -233
- package/dist/jsx/layouts/Debug/debug.spec.native.js.map +0 -1
- package/dist/jsx/layouts/KeyboardAvoidingWrapper/KeyboardAvoidingWrapper.stories.mjs +0 -36
- package/dist/jsx/layouts/KeyboardAvoidingWrapper/KeyboardAvoidingWrapper.stories.mjs.map +0 -1
- package/dist/jsx/layouts/KeyboardAvoidingWrapper/KeyboardAvoidingWrapper.stories.native.js +0 -67
- package/dist/jsx/layouts/KeyboardAvoidingWrapper/KeyboardAvoidingWrapper.stories.native.js.map +0 -1
- package/dist/jsx/layouts/SafeAreaWrapper/SafeAreaWrapper.stories.mjs +0 -32
- package/dist/jsx/layouts/SafeAreaWrapper/SafeAreaWrapper.stories.mjs.map +0 -1
- package/dist/jsx/layouts/SafeAreaWrapper/SafeAreaWrapper.stories.native.js +0 -63
- package/dist/jsx/layouts/SafeAreaWrapper/SafeAreaWrapper.stories.native.js.map +0 -1
- package/dist/jsx/layouts/Sidebar.stories.mjs +0 -72
- package/dist/jsx/layouts/Sidebar.stories.mjs.map +0 -1
- package/dist/jsx/layouts/Sidebar.stories.native.js +0 -103
- package/dist/jsx/layouts/Sidebar.stories.native.js.map +0 -1
- package/dist/jsx/layouts/Tags.stories.mjs +0 -175
- package/dist/jsx/layouts/Tags.stories.mjs.map +0 -1
- package/dist/jsx/layouts/Tags.stories.native.js +0 -232
- package/dist/jsx/layouts/Tags.stories.native.js.map +0 -1
- package/dist/jsx/layouts/Timeline.stories.mjs +0 -181
- package/dist/jsx/layouts/Timeline.stories.mjs.map +0 -1
- package/dist/jsx/layouts/Timeline.stories.native.js +0 -241
- package/dist/jsx/layouts/Timeline.stories.native.js.map +0 -1
- package/dist/jsx/layouts/Toolbar.stories.mjs +0 -63
- package/dist/jsx/layouts/Toolbar.stories.mjs.map +0 -1
- package/dist/jsx/layouts/Toolbar.stories.native.js +0 -97
- package/dist/jsx/layouts/Toolbar.stories.native.js.map +0 -1
- package/dist/jsx/layouts/ViewSwitcher.stories.mjs +0 -44
- package/dist/jsx/layouts/ViewSwitcher.stories.mjs.map +0 -1
- package/dist/jsx/layouts/ViewSwitcher.stories.native.js +0 -75
- package/dist/jsx/layouts/ViewSwitcher.stories.native.js.map +0 -1
- package/dist/jsx/layouts/layouts.spec.mjs +0 -226
- package/dist/jsx/layouts/layouts.spec.mjs.map +0 -1
- package/dist/jsx/layouts/layouts.spec.native.js +0 -272
- package/dist/jsx/layouts/layouts.spec.native.js.map +0 -1
- package/dist/jsx/src.spec.mjs +0 -7
- package/dist/jsx/src.spec.mjs.map +0 -1
- package/dist/jsx/src.spec.native.js +0 -9
- package/dist/jsx/src.spec.native.js.map +0 -1
- package/dist/jsx/utils/utils.spec.mjs +0 -59
- package/dist/jsx/utils/utils.spec.mjs.map +0 -1
- package/dist/jsx/utils/utils.spec.native.js +0 -61
- package/dist/jsx/utils/utils.spec.native.js.map +0 -1
- package/dist/jsx/views/Calendar.stories.mjs +0 -40
- package/dist/jsx/views/Calendar.stories.mjs.map +0 -1
- package/dist/jsx/views/Calendar.stories.native.js +0 -73
- package/dist/jsx/views/Calendar.stories.native.js.map +0 -1
- package/dist/jsx/views/Dashboard.stories.mjs +0 -69
- package/dist/jsx/views/Dashboard.stories.mjs.map +0 -1
- package/dist/jsx/views/Dashboard.stories.native.js +0 -100
- package/dist/jsx/views/Dashboard.stories.native.js.map +0 -1
- package/dist/jsx/views/ImageGrid.stories.mjs +0 -42
- package/dist/jsx/views/ImageGrid.stories.mjs.map +0 -1
- package/dist/jsx/views/ImageGrid.stories.native.js +0 -79
- package/dist/jsx/views/ImageGrid.stories.native.js.map +0 -1
- package/dist/jsx/views/Kanban.stories.mjs +0 -56
- package/dist/jsx/views/Kanban.stories.mjs.map +0 -1
- package/dist/jsx/views/Kanban.stories.native.js +0 -91
- package/dist/jsx/views/Kanban.stories.native.js.map +0 -1
- package/dist/jsx/views/List.stories.mjs +0 -48
- package/dist/jsx/views/List.stories.mjs.map +0 -1
- package/dist/jsx/views/List.stories.native.js +0 -85
- package/dist/jsx/views/List.stories.native.js.map +0 -1
- package/dist/jsx/views/ReportBuilder.stories.mjs +0 -63
- package/dist/jsx/views/ReportBuilder.stories.mjs.map +0 -1
- package/dist/jsx/views/ReportBuilder.stories.native.js +0 -96
- package/dist/jsx/views/ReportBuilder.stories.native.js.map +0 -1
- package/dist/jsx/views/TreeView.stories.mjs +0 -68
- package/dist/jsx/views/TreeView.stories.mjs.map +0 -1
- package/dist/jsx/views/TreeView.stories.native.js +0 -101
- package/dist/jsx/views/TreeView.stories.native.js.map +0 -1
- package/dist/jsx/views/hotkeys.spec.mjs +0 -211
- package/dist/jsx/views/hotkeys.spec.mjs.map +0 -1
- package/dist/jsx/views/hotkeys.spec.native.js +0 -253
- package/dist/jsx/views/hotkeys.spec.native.js.map +0 -1
- package/dist/jsx/views/views.spec.mjs +0 -290
- package/dist/jsx/views/views.spec.mjs.map +0 -1
- package/dist/jsx/views/views.spec.native.js +0 -344
- package/dist/jsx/views/views.spec.native.js.map +0 -1
package/src/views/TreeView.tsx
CHANGED
|
@@ -1,17 +1,55 @@
|
|
|
1
1
|
import { componentColors } from "../componentColors";
|
|
2
|
+
import { EmptyState } from "../layouts/page";
|
|
2
3
|
import { FlashList, type FlashListRef } from "@shopify/flash-list";
|
|
3
|
-
import { useResolvedKnobs } from "@multiplatform.one/theme";
|
|
4
4
|
import {
|
|
5
|
-
|
|
5
|
+
MIN_PRESS_TARGET,
|
|
6
|
+
ensureKeyboardModalityTracking,
|
|
7
|
+
pressTargetHitSlop,
|
|
8
|
+
useReadableTextOn,
|
|
9
|
+
useResolvedKnobs,
|
|
10
|
+
wasKeyboardFocus,
|
|
11
|
+
} from "@multiplatform.one/theme";
|
|
12
|
+
import {
|
|
13
|
+
CaretLeftIcon,
|
|
6
14
|
CaretRightIcon,
|
|
15
|
+
DotsSixVerticalIcon,
|
|
7
16
|
FileIcon,
|
|
8
17
|
FolderIcon,
|
|
9
18
|
FolderOpenIcon,
|
|
10
19
|
} from "@phosphor-icons/react";
|
|
20
|
+
import { useDirection } from "../hooks/useDirection";
|
|
11
21
|
import { useHotkey } from "@tanstack/react-hotkeys";
|
|
12
22
|
import type { RegisterableHotkey } from "@tanstack/react-hotkeys";
|
|
13
|
-
import React, {
|
|
14
|
-
|
|
23
|
+
import React, {
|
|
24
|
+
useCallback,
|
|
25
|
+
useEffect,
|
|
26
|
+
useId,
|
|
27
|
+
useLayoutEffect,
|
|
28
|
+
useMemo,
|
|
29
|
+
useRef,
|
|
30
|
+
useState,
|
|
31
|
+
type ReactNode,
|
|
32
|
+
} from "react";
|
|
33
|
+
import { useTranslation } from "react-i18next";
|
|
34
|
+
import { Text, View, XStack, YStack, type YStackProps } from "tamagui";
|
|
35
|
+
import { autoScrollVelocity } from "./kanbanDnd";
|
|
36
|
+
import {
|
|
37
|
+
applyTreeMove,
|
|
38
|
+
describeTreeCancel,
|
|
39
|
+
describeTreeDragState,
|
|
40
|
+
flattenDndRows,
|
|
41
|
+
indicatorForTarget,
|
|
42
|
+
resolveTreeDrop,
|
|
43
|
+
subtreeIds,
|
|
44
|
+
treeDropTargetForY,
|
|
45
|
+
treeKeyboardLift,
|
|
46
|
+
treeKeyboardMove,
|
|
47
|
+
type TreeDragAnnouncement,
|
|
48
|
+
type TreeDragSession,
|
|
49
|
+
type TreeDropIndicator,
|
|
50
|
+
type TreeDropTarget,
|
|
51
|
+
} from "./treeViewDnd";
|
|
52
|
+
import { diffVisibleRows, flattenVisibleIds, isEmptyDiff } from "./treeViewMotion";
|
|
15
53
|
|
|
16
54
|
/**
|
|
17
55
|
* A node in a tree structure.
|
|
@@ -27,6 +65,10 @@ export interface TreeNode<T = unknown> {
|
|
|
27
65
|
children?: TreeNode<T>[];
|
|
28
66
|
/** Additional data */
|
|
29
67
|
data?: T;
|
|
68
|
+
/** Optional leading icon (closed / leaf state) */
|
|
69
|
+
icon?: ReactNode;
|
|
70
|
+
/** Optional leading icon when the branch is expanded */
|
|
71
|
+
iconWhenExpanded?: ReactNode;
|
|
30
72
|
}
|
|
31
73
|
|
|
32
74
|
/**
|
|
@@ -41,16 +83,24 @@ export interface TreeViewHotkeys {
|
|
|
41
83
|
expand?: RegisterableHotkey;
|
|
42
84
|
/** Collapse focused node (default: ArrowLeft) */
|
|
43
85
|
collapse?: RegisterableHotkey;
|
|
86
|
+
/** Toggle expand/collapse on focused branch (default: Space) */
|
|
87
|
+
toggle?: RegisterableHotkey;
|
|
44
88
|
/** Select the focused node (default: Enter) */
|
|
45
89
|
select?: RegisterableHotkey;
|
|
90
|
+
/** Move focus to first visible node (default: Home) */
|
|
91
|
+
first?: RegisterableHotkey;
|
|
92
|
+
/** Move focus to last visible node (default: End) */
|
|
93
|
+
last?: RegisterableHotkey;
|
|
46
94
|
}
|
|
47
95
|
|
|
96
|
+
export type TreeViewDisplay = "default" | "compressed";
|
|
97
|
+
|
|
48
98
|
/**
|
|
49
99
|
* Props for the generic TreeView component.
|
|
50
100
|
*
|
|
51
101
|
* @typeParam T - Additional data type stored on the nodes
|
|
52
102
|
*/
|
|
53
|
-
export interface TreeViewProps<T = unknown> extends Omit<YStackProps, "children"> {
|
|
103
|
+
export interface TreeViewProps<T = unknown> extends Omit<YStackProps, "children" | "display"> {
|
|
54
104
|
/** Tree nodes to render */
|
|
55
105
|
nodes: TreeNode<T>[];
|
|
56
106
|
/** Render function for each node (defaults to rendering node.label) */
|
|
@@ -59,16 +109,34 @@ export interface TreeViewProps<T = unknown> extends Omit<YStackProps, "children"
|
|
|
59
109
|
onNodeToggle?: (node: TreeNode<T>) => void;
|
|
60
110
|
/** Called when a node is selected/clicked */
|
|
61
111
|
onNodeSelect?: (node: TreeNode<T>) => void;
|
|
62
|
-
/**
|
|
112
|
+
/**
|
|
113
|
+
* Called when a node is reordered by drag or keyboard. `target.index` is
|
|
114
|
+
* the insertion position among the destination parent's children with the
|
|
115
|
+
* moved node removed (0-based), so consumers can apply the move directly
|
|
116
|
+
* with `applyTreeMove(nodes, nodeId, target)`. Opt-in: without this prop no
|
|
117
|
+
* drag affordance renders and Space keeps its expand/collapse binding.
|
|
118
|
+
*/
|
|
119
|
+
onNodeMove?: (nodeId: string, target: TreeDropTarget) => void;
|
|
120
|
+
/** Estimated size of each row in pixels */
|
|
63
121
|
estimateSize?: number;
|
|
64
122
|
/** Number of items to render outside visible area (default: 10) */
|
|
65
123
|
overscan?: number;
|
|
66
|
-
/** Height of the scrollable container in pixels
|
|
124
|
+
/** Height of the scrollable container in pixels */
|
|
67
125
|
height?: number;
|
|
68
126
|
/** Message shown when there are no nodes */
|
|
69
127
|
emptyMessage?: string;
|
|
70
|
-
/** Initially expanded node IDs */
|
|
128
|
+
/** Initially expanded node IDs (wins over expandByDefault when provided) */
|
|
71
129
|
defaultExpandedIds?: string[];
|
|
130
|
+
/** Expand every branch on initial load */
|
|
131
|
+
expandByDefault?: boolean;
|
|
132
|
+
/** Density — compressed uses smaller row/icon/type sizes (EUI-style) */
|
|
133
|
+
display?: TreeViewDisplay;
|
|
134
|
+
/** Show caret arrows next to branches (default: true) */
|
|
135
|
+
showExpansionArrows?: boolean;
|
|
136
|
+
/** Sticky selected node id (separate from keyboard focus) */
|
|
137
|
+
selectedId?: string;
|
|
138
|
+
/** Accessible name for the tree (also accepts aria-label via stack props) */
|
|
139
|
+
ariaLabel?: string;
|
|
72
140
|
/** Configurable keyboard shortcut overrides */
|
|
73
141
|
hotkeys?: TreeViewHotkeys;
|
|
74
142
|
}
|
|
@@ -85,67 +153,233 @@ interface FlatNode<T> {
|
|
|
85
153
|
}
|
|
86
154
|
|
|
87
155
|
/**
|
|
88
|
-
*
|
|
156
|
+
* One toggle's worth of row motion. `armed` renders rows at their previous
|
|
157
|
+
* position (FLIP invert) / hidden (enter) with the tween suppressed; one
|
|
158
|
+
* frame later `play` releases everyone to identity with
|
|
159
|
+
* `knobProps.transition` so the whole toggle tweens (Axiom 4 / LC-25).
|
|
160
|
+
*/
|
|
161
|
+
interface TreeMotion {
|
|
162
|
+
phase: "armed" | "play";
|
|
163
|
+
entering: Set<string>;
|
|
164
|
+
deltas: Map<string, number>;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/** Entering rows rise this many px into their slot (subtle, from the parent). */
|
|
168
|
+
const ENTER_RISE_PX = -4;
|
|
169
|
+
|
|
170
|
+
// ── Reorder interaction constants (gesture recognition, not animation
|
|
171
|
+
// timing — LC-43's documented exemption; values mirror Kanban) ──────────
|
|
172
|
+
|
|
173
|
+
/** Pixels of pointer travel before a press becomes a drag (clicks stay clicks below this). */
|
|
174
|
+
const DRAG_THRESHOLD_PX = 4;
|
|
175
|
+
/** Touch/pen hold before lift so vertical swipes still scroll the list. */
|
|
176
|
+
const TOUCH_LONG_PRESS_MS = 200;
|
|
177
|
+
/** Distance from a scroll edge where auto-scroll engages. */
|
|
178
|
+
const AUTO_SCROLL_EDGE_PX = 48;
|
|
179
|
+
/** Auto-scroll speed cap in px per frame; ramps with edge proximity. */
|
|
180
|
+
const AUTO_SCROLL_MAX_SPEED = 16;
|
|
181
|
+
|
|
182
|
+
// Raised drag shadow: the house $4 elevation tier (single light source,
|
|
183
|
+
// blur = 2 × y-offset — Axiom 14 OPTICS). Explicit props because the lift is
|
|
184
|
+
// a gesture state, not the tree's resting elevation knob; mirrors Kanban.
|
|
185
|
+
const LIFT_SHADOW = {
|
|
186
|
+
shadowColor: "#000",
|
|
187
|
+
shadowOffset: { width: 0, height: 10 },
|
|
188
|
+
shadowOpacity: 0.15,
|
|
189
|
+
shadowRadius: 20,
|
|
190
|
+
} as const;
|
|
191
|
+
|
|
192
|
+
/** Active drag session UI state (pointer ghost or keyboard insertion point). */
|
|
193
|
+
interface TreeDragUi<T> {
|
|
194
|
+
mode: "pointer" | "keyboard";
|
|
195
|
+
node: TreeNode<T>;
|
|
196
|
+
session: TreeDragSession;
|
|
197
|
+
/** Dragged node + descendants (dimmed; invalid as drop targets). */
|
|
198
|
+
subtree: Set<string>;
|
|
199
|
+
sourceDepth: number;
|
|
200
|
+
/**
|
|
201
|
+
* Container-relative x of the row box at lift (rows span edge-to-edge —
|
|
202
|
+
* SP-EDGE — so every settle destination shares this left edge).
|
|
203
|
+
*/
|
|
204
|
+
homeX: number;
|
|
205
|
+
/** Ghost clone chrome size (pointer mode). */
|
|
206
|
+
width: number;
|
|
207
|
+
height: number;
|
|
208
|
+
indicator: TreeDropIndicator | null;
|
|
209
|
+
/** Ghost position in list-container coordinates (pointer mode, 1:1). */
|
|
210
|
+
ghost?: { x: number; y: number };
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/** Overlay settle leap after a pointer drop/cancel (LC-42 FLIP settle). */
|
|
214
|
+
interface TreeSettle<T> {
|
|
215
|
+
node: TreeNode<T>;
|
|
216
|
+
width: number;
|
|
217
|
+
height: number;
|
|
218
|
+
to: { x: number; y: number };
|
|
219
|
+
/** Row hidden while the overlay is its visual (committed drops only). */
|
|
220
|
+
hideId?: string;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
function collectBranchIds<T>(items: TreeNode<T>[], into: Set<string> = new Set()): Set<string> {
|
|
224
|
+
for (const node of items) {
|
|
225
|
+
if ((node.children?.length ?? 0) > 0) {
|
|
226
|
+
into.add(node.id);
|
|
227
|
+
collectBranchIds(node.children!, into);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
return into;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
function defaultNodeIcon(hasChildren: boolean, isExpanded: boolean, iconSize: number): ReactNode {
|
|
234
|
+
if (hasChildren) {
|
|
235
|
+
return isExpanded ? (
|
|
236
|
+
<FolderOpenIcon size={iconSize} weight="duotone" />
|
|
237
|
+
) : (
|
|
238
|
+
<FolderIcon size={iconSize} weight="duotone" />
|
|
239
|
+
);
|
|
240
|
+
}
|
|
241
|
+
return <FileIcon size={iconSize} weight="duotone" />;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Generic virtualized tree view (EUI-inspired flat directory chrome).
|
|
89
246
|
*
|
|
90
247
|
* Flattens the tree for virtualization using `@shopify/flash-list`
|
|
91
248
|
* and uses `@tanstack/react-hotkeys` for keyboard navigation.
|
|
92
|
-
*
|
|
93
|
-
* expand/collapse disclosure.
|
|
249
|
+
* Rows are compact XStacks: optional expansion caret, node icon, label.
|
|
94
250
|
*
|
|
95
|
-
*
|
|
251
|
+
* Motion (Axiom 4): expanding/collapsing a branch FLIPs the surviving rows
|
|
252
|
+
* from their previous offsets and fades the revealed children in, while the
|
|
253
|
+
* caret rotates — all tweened with `knobProps.transition`, transform/opacity
|
|
254
|
+
* only (native-safe). Initial mount renders settled (no wiggle) and
|
|
255
|
+
* `animation: none` / reduced motion renders every toggle instantly.
|
|
96
256
|
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
* renderNode={(node, depth) => <Text>{node.label}</Text>}
|
|
102
|
-
* onNodeSelect={(node) => console.log(node)}
|
|
103
|
-
* />
|
|
104
|
-
* ```
|
|
257
|
+
* Pressing a branch row toggles it (EUI/VS Code semantics), so the expand
|
|
258
|
+
* target is the full row — the caret itself is a non-interactive indicator.
|
|
259
|
+
*
|
|
260
|
+
* @typeParam T - Additional data type stored on the nodes
|
|
105
261
|
*/
|
|
106
262
|
export function TreeView<T = unknown>({
|
|
107
263
|
nodes,
|
|
108
|
-
renderNode
|
|
264
|
+
renderNode,
|
|
109
265
|
onNodeToggle,
|
|
110
266
|
onNodeSelect,
|
|
267
|
+
onNodeMove,
|
|
111
268
|
estimateSize: estimateSizeProp,
|
|
112
269
|
overscan = 10,
|
|
113
270
|
height: heightProp,
|
|
114
|
-
emptyMessage
|
|
271
|
+
emptyMessage: emptyMessageProp,
|
|
115
272
|
defaultExpandedIds,
|
|
273
|
+
expandByDefault = false,
|
|
274
|
+
display = "default",
|
|
275
|
+
showExpansionArrows = true,
|
|
276
|
+
selectedId,
|
|
277
|
+
ariaLabel,
|
|
116
278
|
hotkeys: hotkeyOverrides,
|
|
117
279
|
...stackProps
|
|
118
280
|
}: TreeViewProps<T>) {
|
|
119
|
-
const {
|
|
281
|
+
const { t } = useTranslation();
|
|
282
|
+
const emptyMessage = emptyMessageProp ?? t("No items found");
|
|
283
|
+
const { knobProps, control } = useResolvedKnobs();
|
|
284
|
+
// UX-P02 / Axiom 15: the selected row paints `$accentBackground`; its label
|
|
285
|
+
// must sit on the accent fill with a luminance-computed foreground (the
|
|
286
|
+
// scheme `$color` ink measured 2.59:1 on the accent).
|
|
287
|
+
const onAccentLabel = useReadableTextOn("$accentBackground");
|
|
288
|
+
const transition = knobProps.transition;
|
|
289
|
+
const compressed = display === "compressed";
|
|
120
290
|
const sz = knobProps.sizeToken;
|
|
121
|
-
|
|
291
|
+
|
|
292
|
+
const estimateSize =
|
|
293
|
+
estimateSizeProp ??
|
|
294
|
+
(compressed ? (sz === "$5" ? 32 : 28) : sz === "$3" ? 30 : sz === "$5" ? 40 : 36);
|
|
122
295
|
const height = heightProp ?? (sz === "$3" ? 320 : sz === "$5" ? 480 : 400);
|
|
123
|
-
const expandIconSize = sz === "$3" ? 16 : sz === "$5" ?
|
|
296
|
+
const expandIconSize = compressed ? 14 : sz === "$3" ? 16 : sz === "$5" ? 20 : 18;
|
|
297
|
+
const nodeIconSize = compressed ? 14 : 18;
|
|
298
|
+
const caretSize = compressed ? 12 : 14;
|
|
299
|
+
// Collapsed caret encodes the expansion direction (inline-end), so it
|
|
300
|
+
// mirrors in RTL via glyph swap (useDirection, Axiom 15); the rotation
|
|
301
|
+
// sign flips with it so the expanded state still points down.
|
|
302
|
+
const isRTL = useDirection() === "rtl";
|
|
303
|
+
const CollapsedCaretIcon = isRTL ? CaretLeftIcon : CaretRightIcon;
|
|
304
|
+
const expandedCaretRotation = isRTL ? "-90deg" : "90deg";
|
|
305
|
+
const indentStep = compressed ? 12 : 16;
|
|
306
|
+
const labelFontSize = compressed ? 12 : 14;
|
|
307
|
+
// SP-EDGE row density (spec TreeView rows): the space knob steps the row
|
|
308
|
+
// padding — never an outer tree inset (LC-02). House space-map pattern
|
|
309
|
+
// (getTableCellPadding precedent); medium keeps the previous 6/8
|
|
310
|
+
// (4/6 compressed) geometry so default density is unchanged.
|
|
311
|
+
const rowPad =
|
|
312
|
+
(compressed
|
|
313
|
+
? { small: { y: 3, x: 4 }, medium: { y: 4, x: 6 }, large: { y: 6, x: 10 } }
|
|
314
|
+
: { small: { y: 4, x: 6 }, medium: { y: 6, x: 8 }, large: { y: 10, x: 13 } })[
|
|
315
|
+
knobProps.space
|
|
316
|
+
] ?? (compressed ? { y: 4, x: 6 } : { y: 6, x: 8 });
|
|
317
|
+
const rowPadY = rowPad.y;
|
|
318
|
+
const rowPadX = rowPad.x;
|
|
319
|
+
|
|
124
320
|
const treeId = useId();
|
|
125
321
|
const containerRef = useRef<HTMLDivElement>(null);
|
|
126
322
|
const flashListRef = useRef<FlashListRef<FlatNode<T>>>(null);
|
|
127
323
|
const [focusedIndex, setFocusedIndex] = useState(-1);
|
|
128
|
-
|
|
129
|
-
|
|
324
|
+
// Axiom 12: the tree is one tab stop (aria-activedescendant pattern) — but
|
|
325
|
+
// Tab-in with no active row painted NOTHING (ring suppressed on the
|
|
326
|
+
// container, no row highlighted until an arrow was pressed). On
|
|
327
|
+
// keyboard-origin focus, light up the first row so position is visible.
|
|
328
|
+
if (typeof document !== "undefined") ensureKeyboardModalityTracking();
|
|
329
|
+
const handleContainerFocus = useCallback(() => {
|
|
330
|
+
if (!wasKeyboardFocus()) return;
|
|
331
|
+
setFocusedIndex((prev) => (prev < 0 ? 0 : prev));
|
|
332
|
+
}, []);
|
|
333
|
+
const [expandedIds, setExpandedIds] = useState<Set<string>>(() => {
|
|
334
|
+
if (defaultExpandedIds) return new Set(defaultExpandedIds);
|
|
335
|
+
if (expandByDefault) return collectBranchIds(nodes);
|
|
336
|
+
return new Set();
|
|
337
|
+
});
|
|
338
|
+
|
|
339
|
+
// ── Expand/collapse motion (FLIP + enter fade; Axiom 4) ────────────────
|
|
340
|
+
const [motion, setMotion] = useState<TreeMotion | null>(null);
|
|
341
|
+
const rowHeights = useRef(new Map<string, number>());
|
|
342
|
+
const getRowHeight = useCallback(
|
|
343
|
+
(id: string) => rowHeights.current.get(id) ?? estimateSize,
|
|
344
|
+
[estimateSize],
|
|
130
345
|
);
|
|
131
346
|
|
|
132
347
|
const toggleNode = useCallback(
|
|
133
348
|
(node: TreeNode<T>) => {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
349
|
+
const next = new Set(expandedIds);
|
|
350
|
+
if (next.has(node.id)) {
|
|
351
|
+
next.delete(node.id);
|
|
352
|
+
} else {
|
|
353
|
+
next.add(node.id);
|
|
354
|
+
}
|
|
355
|
+
// Mount never animates and `animation: none` / reduced motion skips
|
|
356
|
+
// the machine entirely — the toggle then renders in one jump.
|
|
357
|
+
if (transition) {
|
|
358
|
+
const diff = diffVisibleRows(
|
|
359
|
+
flattenVisibleIds(nodes, expandedIds),
|
|
360
|
+
flattenVisibleIds(nodes, next),
|
|
361
|
+
getRowHeight,
|
|
362
|
+
);
|
|
363
|
+
setMotion(isEmptyDiff(diff) ? null : { phase: "armed", ...diff });
|
|
364
|
+
} else {
|
|
365
|
+
setMotion(null);
|
|
366
|
+
}
|
|
367
|
+
setExpandedIds(next);
|
|
143
368
|
onNodeToggle?.(node);
|
|
144
369
|
},
|
|
145
|
-
[onNodeToggle],
|
|
370
|
+
[expandedIds, nodes, transition, getRowHeight, onNodeToggle],
|
|
146
371
|
);
|
|
147
372
|
|
|
148
|
-
//
|
|
373
|
+
// Release the FLIP one frame after the armed styles paint so the tween
|
|
374
|
+
// runs from the previous layout to the new one.
|
|
375
|
+
useLayoutEffect(() => {
|
|
376
|
+
if (motion?.phase !== "armed") return;
|
|
377
|
+
const raf = requestAnimationFrame(() => {
|
|
378
|
+
setMotion((m) => (m && m.phase === "armed" ? { ...m, phase: "play" } : m));
|
|
379
|
+
});
|
|
380
|
+
return () => cancelAnimationFrame(raf);
|
|
381
|
+
}, [motion]);
|
|
382
|
+
|
|
149
383
|
const flatNodes = useMemo(() => {
|
|
150
384
|
const result: FlatNode<T>[] = [];
|
|
151
385
|
|
|
@@ -164,7 +398,6 @@ export function TreeView<T = unknown>({
|
|
|
164
398
|
return result;
|
|
165
399
|
}, [nodes, expandedIds]);
|
|
166
400
|
|
|
167
|
-
// Scroll to focused item
|
|
168
401
|
const scrollToIndex = useCallback(
|
|
169
402
|
(index: number) => {
|
|
170
403
|
if (index >= 0 && index < flatNodes.length) {
|
|
@@ -174,7 +407,491 @@ export function TreeView<T = unknown>({
|
|
|
174
407
|
[flatNodes.length],
|
|
175
408
|
);
|
|
176
409
|
|
|
177
|
-
//
|
|
410
|
+
// ── Drag-reorder (LC-42 DRAG-ANATOMY / LC-43 DND-A11Y) ─────────────────
|
|
411
|
+
// Opt-in via `onNodeMove`. The ghost is an overlay clone outside the
|
|
412
|
+
// FlashList (virtualization-safe); hit-testing is pure math over the
|
|
413
|
+
// flattened rows + measured heights, so no DOM traversal of virtual cells.
|
|
414
|
+
const canReorder = Boolean(onNodeMove);
|
|
415
|
+
|
|
416
|
+
const [dragUi, setDragUi] = useState<TreeDragUi<T> | null>(null);
|
|
417
|
+
const [settle, setSettle] = useState<TreeSettle<T> | null>(null);
|
|
418
|
+
const [announcement, setAnnouncement] = useState("");
|
|
419
|
+
// Scroll offset snapshot that re-renders the drop indicator while the list
|
|
420
|
+
// scrolls mid-drag (the ref below is the always-current value).
|
|
421
|
+
const [dragScrollY, setDragScrollY] = useState(0);
|
|
422
|
+
const dragUiRef = useRef<TreeDragUi<T> | null>(null);
|
|
423
|
+
dragUiRef.current = dragUi;
|
|
424
|
+
const scrollOffsetRef = useRef(0);
|
|
425
|
+
const pointerPosRef = useRef({ x: 0, y: 0 });
|
|
426
|
+
const grabOffsetRef = useRef({ x: 0, y: 0 });
|
|
427
|
+
const suppressClickRef = useRef(false);
|
|
428
|
+
const sessionCleanupRef = useRef<(() => void) | null>(null);
|
|
429
|
+
const autoScrollRafRef = useRef<number | null>(null);
|
|
430
|
+
// A committed move's FLIP arms only once the consumer applies the move
|
|
431
|
+
// (guarded by the expected visible order — a lie is worse than a jump).
|
|
432
|
+
const pendingMoveFlipRef = useRef<{ prevIds: string[]; expectedIds: string[] } | null>(null);
|
|
433
|
+
|
|
434
|
+
useEffect(() => () => sessionCleanupRef.current?.(), []);
|
|
435
|
+
|
|
436
|
+
const dndRows = useMemo(() => flattenDndRows(nodes, expandedIds), [nodes, expandedIds]);
|
|
437
|
+
|
|
438
|
+
/** Content-coordinate top of the visible row / insertion line at a flat index. */
|
|
439
|
+
const topOfFlatIndex = useCallback(
|
|
440
|
+
(flatIndex: number): number => {
|
|
441
|
+
let top = 0;
|
|
442
|
+
for (let i = 0; i < flatIndex && i < flatNodes.length; i++) {
|
|
443
|
+
top += getRowHeight(flatNodes[i].node.id);
|
|
444
|
+
}
|
|
445
|
+
return top;
|
|
446
|
+
},
|
|
447
|
+
[flatNodes, getRowHeight],
|
|
448
|
+
);
|
|
449
|
+
|
|
450
|
+
const announce = useCallback(
|
|
451
|
+
(a: TreeDragAnnouncement) => {
|
|
452
|
+
const parent = a.parent ?? t("top level");
|
|
453
|
+
const text =
|
|
454
|
+
a.type === "lift"
|
|
455
|
+
? t(
|
|
456
|
+
"Lifted {{node}} in {{parent}}, position {{position}} of {{count}}. Use arrow keys to move, space to drop, escape to cancel.",
|
|
457
|
+
{ ...a, parent },
|
|
458
|
+
)
|
|
459
|
+
: a.type === "move"
|
|
460
|
+
? t("Moved {{node}} to {{parent}}, position {{position}} of {{count}}.", {
|
|
461
|
+
...a,
|
|
462
|
+
parent,
|
|
463
|
+
})
|
|
464
|
+
: a.type === "drop"
|
|
465
|
+
? t("Dropped {{node}} in {{parent}}, position {{position}} of {{count}}.", {
|
|
466
|
+
...a,
|
|
467
|
+
parent,
|
|
468
|
+
})
|
|
469
|
+
: t("Movement cancelled. {{node}} returned to {{parent}}.", { ...a, parent });
|
|
470
|
+
setAnnouncement(text);
|
|
471
|
+
},
|
|
472
|
+
[t],
|
|
473
|
+
);
|
|
474
|
+
|
|
475
|
+
/** Pointer y (client coords) → drop target + indicator, or null over the dragged subtree. */
|
|
476
|
+
const hitTest = useCallback(
|
|
477
|
+
(
|
|
478
|
+
clientY: number,
|
|
479
|
+
ui: TreeDragUi<T>,
|
|
480
|
+
): { target: TreeDropTarget; indicator: TreeDropIndicator } | null => {
|
|
481
|
+
const rect = (containerRef.current as HTMLElement | null)?.getBoundingClientRect?.();
|
|
482
|
+
if (!rect) return null;
|
|
483
|
+
return treeDropTargetForY({
|
|
484
|
+
localY: clientY - rect.top + scrollOffsetRef.current,
|
|
485
|
+
rows: dndRows,
|
|
486
|
+
getHeight: getRowHeight,
|
|
487
|
+
session: ui.session,
|
|
488
|
+
draggedSubtree: ui.subtree,
|
|
489
|
+
});
|
|
490
|
+
},
|
|
491
|
+
[dndRows, getRowHeight],
|
|
492
|
+
);
|
|
493
|
+
|
|
494
|
+
// ── Auto-scroll near list edges (velocity ramps with proximity) ────────
|
|
495
|
+
|
|
496
|
+
const stopAutoScroll = useCallback(() => {
|
|
497
|
+
if (autoScrollRafRef.current !== null) cancelAnimationFrame(autoScrollRafRef.current);
|
|
498
|
+
autoScrollRafRef.current = null;
|
|
499
|
+
}, []);
|
|
500
|
+
|
|
501
|
+
const startAutoScroll = useCallback(() => {
|
|
502
|
+
stopAutoScroll();
|
|
503
|
+
const tick = () => {
|
|
504
|
+
const ui = dragUiRef.current;
|
|
505
|
+
if (!ui || ui.mode !== "pointer") {
|
|
506
|
+
autoScrollRafRef.current = null;
|
|
507
|
+
return;
|
|
508
|
+
}
|
|
509
|
+
const rect = (containerRef.current as HTMLElement | null)?.getBoundingClientRect?.();
|
|
510
|
+
if (rect) {
|
|
511
|
+
const vy = autoScrollVelocity({
|
|
512
|
+
pos: pointerPosRef.current.y,
|
|
513
|
+
start: rect.top,
|
|
514
|
+
end: rect.bottom,
|
|
515
|
+
edge: AUTO_SCROLL_EDGE_PX,
|
|
516
|
+
maxSpeed: AUTO_SCROLL_MAX_SPEED,
|
|
517
|
+
});
|
|
518
|
+
if (vy !== 0) {
|
|
519
|
+
const max = Math.max(0, topOfFlatIndex(flatNodes.length) - rect.height);
|
|
520
|
+
const next = Math.min(max, Math.max(0, scrollOffsetRef.current + vy));
|
|
521
|
+
if (next !== scrollOffsetRef.current) {
|
|
522
|
+
scrollOffsetRef.current = next;
|
|
523
|
+
flashListRef.current?.scrollToOffset({ offset: next, animated: false });
|
|
524
|
+
setDragScrollY(next);
|
|
525
|
+
const hit = hitTest(pointerPosRef.current.y, ui);
|
|
526
|
+
if (hit) {
|
|
527
|
+
setDragUi((prev) =>
|
|
528
|
+
prev
|
|
529
|
+
? {
|
|
530
|
+
...prev,
|
|
531
|
+
session: { ...prev.session, target: hit.target },
|
|
532
|
+
indicator: hit.indicator,
|
|
533
|
+
}
|
|
534
|
+
: prev,
|
|
535
|
+
);
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
autoScrollRafRef.current = requestAnimationFrame(tick);
|
|
541
|
+
};
|
|
542
|
+
autoScrollRafRef.current = requestAnimationFrame(tick);
|
|
543
|
+
}, [flatNodes.length, hitTest, stopAutoScroll, topOfFlatIndex]);
|
|
544
|
+
|
|
545
|
+
// ── Drop / cancel ──────────────────────────────────────────────────────
|
|
546
|
+
|
|
547
|
+
const endDrag = useCallback(
|
|
548
|
+
(commit: boolean) => {
|
|
549
|
+
const ui = dragUiRef.current;
|
|
550
|
+
if (!ui) return;
|
|
551
|
+
stopAutoScroll();
|
|
552
|
+
sessionCleanupRef.current?.();
|
|
553
|
+
sessionCleanupRef.current = null;
|
|
554
|
+
|
|
555
|
+
const resolved = resolveTreeDrop(ui.session);
|
|
556
|
+
const canCommit = commit && resolved.commit && Boolean(onNodeMove);
|
|
557
|
+
|
|
558
|
+
// Destination geometry from the post-move layout so the overlay
|
|
559
|
+
// settles exactly onto the row's final slot.
|
|
560
|
+
let dest: { x: number; y: number } | null = null;
|
|
561
|
+
let expectedIds: string[] | null = null;
|
|
562
|
+
if (canCommit) {
|
|
563
|
+
const nextNodes = applyTreeMove(nodes, ui.session.nodeId, resolved.to);
|
|
564
|
+
expectedIds = flattenVisibleIds(nextNodes, expandedIds);
|
|
565
|
+
const destFlat = expectedIds.indexOf(ui.session.nodeId);
|
|
566
|
+
const parentRow =
|
|
567
|
+
resolved.to.parentId === null
|
|
568
|
+
? null
|
|
569
|
+
: (dndRows.find((r) => r.id === resolved.to.parentId) ?? null);
|
|
570
|
+
let top = 0;
|
|
571
|
+
if (destFlat >= 0) {
|
|
572
|
+
for (let i = 0; i < destFlat; i++) top += getRowHeight(expectedIds[i]);
|
|
573
|
+
} else if (parentRow) {
|
|
574
|
+
// Moved into a collapsed parent: the row will not be visible —
|
|
575
|
+
// settle the ghost onto the parent row instead.
|
|
576
|
+
top = topOfFlatIndex(dndRows.indexOf(parentRow));
|
|
577
|
+
}
|
|
578
|
+
dest = { x: ui.homeX, y: top - scrollOffsetRef.current };
|
|
579
|
+
} else {
|
|
580
|
+
const originFlat = flatNodes.findIndex((f) => f.node.id === ui.session.nodeId);
|
|
581
|
+
dest = {
|
|
582
|
+
x: ui.homeX,
|
|
583
|
+
y: (originFlat >= 0 ? topOfFlatIndex(originFlat) : 0) - scrollOffsetRef.current,
|
|
584
|
+
};
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
setDragUi(null);
|
|
588
|
+
dragUiRef.current = null;
|
|
589
|
+
|
|
590
|
+
if (ui.mode === "pointer" && dest) {
|
|
591
|
+
setSettle({
|
|
592
|
+
node: ui.node,
|
|
593
|
+
width: ui.width,
|
|
594
|
+
height: ui.height,
|
|
595
|
+
to: dest,
|
|
596
|
+
hideId: canCommit ? ui.session.nodeId : undefined,
|
|
597
|
+
});
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
if (canCommit && expectedIds) {
|
|
601
|
+
if (transition) {
|
|
602
|
+
pendingMoveFlipRef.current = {
|
|
603
|
+
prevIds: flattenVisibleIds(nodes, expandedIds),
|
|
604
|
+
expectedIds,
|
|
605
|
+
};
|
|
606
|
+
}
|
|
607
|
+
announce(describeTreeDragState("drop", ui.session, nodes, ui.node.label));
|
|
608
|
+
onNodeMove?.(ui.session.nodeId, resolved.to);
|
|
609
|
+
} else {
|
|
610
|
+
announce(describeTreeCancel(ui.session, nodes, ui.node.label));
|
|
611
|
+
}
|
|
612
|
+
},
|
|
613
|
+
[
|
|
614
|
+
announce,
|
|
615
|
+
dndRows,
|
|
616
|
+
expandedIds,
|
|
617
|
+
flatNodes,
|
|
618
|
+
getRowHeight,
|
|
619
|
+
nodes,
|
|
620
|
+
onNodeMove,
|
|
621
|
+
stopAutoScroll,
|
|
622
|
+
topOfFlatIndex,
|
|
623
|
+
transition,
|
|
624
|
+
],
|
|
625
|
+
);
|
|
626
|
+
|
|
627
|
+
// Arm the move FLIP once the consumer applies the move: surviving rows
|
|
628
|
+
// tween from their pre-move offsets (transform-only, LC-42). If the
|
|
629
|
+
// consumer renders anything other than the expected order, drop the FLIP.
|
|
630
|
+
useLayoutEffect(() => {
|
|
631
|
+
const pending = pendingMoveFlipRef.current;
|
|
632
|
+
if (!pending) return;
|
|
633
|
+
const currentIds = flatNodes.map((f) => f.node.id);
|
|
634
|
+
const same = (a: readonly string[], b: readonly string[]) =>
|
|
635
|
+
a.length === b.length && a.every((v, i) => v === b[i]);
|
|
636
|
+
if (same(currentIds, pending.prevIds)) return; // move not applied yet
|
|
637
|
+
pendingMoveFlipRef.current = null;
|
|
638
|
+
if (!same(currentIds, pending.expectedIds)) return;
|
|
639
|
+
const diff = diffVisibleRows(pending.prevIds, pending.expectedIds, getRowHeight);
|
|
640
|
+
if (!isEmptyDiff(diff)) setMotion({ phase: "armed", ...diff });
|
|
641
|
+
}, [flatNodes, getRowHeight]);
|
|
642
|
+
|
|
643
|
+
// Settle completion: watch the overlay transform until it stops changing
|
|
644
|
+
// (mechanical spring-rest detection — no timing constants). With
|
|
645
|
+
// animation=none the position lands in one frame and this exits instantly.
|
|
646
|
+
useEffect(() => {
|
|
647
|
+
if (!settle) return;
|
|
648
|
+
const el = (containerRef.current as HTMLElement | null)?.querySelector?.(
|
|
649
|
+
"[data-treeview-overlay]",
|
|
650
|
+
) as HTMLElement | null;
|
|
651
|
+
if (!el || typeof requestAnimationFrame === "undefined") {
|
|
652
|
+
setSettle(null);
|
|
653
|
+
return;
|
|
654
|
+
}
|
|
655
|
+
let last: string | null = null;
|
|
656
|
+
let stableFrames = 0;
|
|
657
|
+
let raf = 0;
|
|
658
|
+
const check = () => {
|
|
659
|
+
const current = getComputedStyle(el).transform;
|
|
660
|
+
if (current === last) stableFrames += 1;
|
|
661
|
+
else {
|
|
662
|
+
stableFrames = 0;
|
|
663
|
+
last = current;
|
|
664
|
+
}
|
|
665
|
+
if (stableFrames >= 3) {
|
|
666
|
+
setSettle(null);
|
|
667
|
+
return;
|
|
668
|
+
}
|
|
669
|
+
raf = requestAnimationFrame(check);
|
|
670
|
+
};
|
|
671
|
+
raf = requestAnimationFrame(check);
|
|
672
|
+
return () => cancelAnimationFrame(raf);
|
|
673
|
+
}, [settle]);
|
|
674
|
+
|
|
675
|
+
// ── Pointer drag session (drag handle → window listeners) ──────────────
|
|
676
|
+
|
|
677
|
+
const beginPointerDrag = useCallback(
|
|
678
|
+
(flat: FlatNode<T>, rowEl: HTMLElement, clientX: number, clientY: number): boolean => {
|
|
679
|
+
const container = containerRef.current as HTMLElement | null;
|
|
680
|
+
if (!container?.getBoundingClientRect) return false;
|
|
681
|
+
const session = treeKeyboardLift(nodes, flat.node.id);
|
|
682
|
+
if (!session) return false;
|
|
683
|
+
const rowRect = rowEl.getBoundingClientRect();
|
|
684
|
+
const containerRect = container.getBoundingClientRect();
|
|
685
|
+
grabOffsetRef.current = { x: clientX - rowRect.left, y: clientY - rowRect.top };
|
|
686
|
+
pointerPosRef.current = { x: clientX, y: clientY };
|
|
687
|
+
const ui: TreeDragUi<T> = {
|
|
688
|
+
mode: "pointer",
|
|
689
|
+
node: flat.node,
|
|
690
|
+
session,
|
|
691
|
+
subtree: subtreeIds(nodes, flat.node.id),
|
|
692
|
+
sourceDepth: flat.depth,
|
|
693
|
+
homeX: rowRect.left - containerRect.left,
|
|
694
|
+
width: rowRect.width,
|
|
695
|
+
height: rowRect.height,
|
|
696
|
+
indicator: null,
|
|
697
|
+
ghost: {
|
|
698
|
+
x: rowRect.left - containerRect.left,
|
|
699
|
+
y: rowRect.top - containerRect.top,
|
|
700
|
+
},
|
|
701
|
+
};
|
|
702
|
+
setSettle(null);
|
|
703
|
+
setDragScrollY(scrollOffsetRef.current);
|
|
704
|
+
setDragUi(ui);
|
|
705
|
+
dragUiRef.current = ui;
|
|
706
|
+
announce(describeTreeDragState("lift", session, nodes, flat.node.label));
|
|
707
|
+
startAutoScroll();
|
|
708
|
+
return true;
|
|
709
|
+
},
|
|
710
|
+
[announce, nodes, startAutoScroll],
|
|
711
|
+
);
|
|
712
|
+
|
|
713
|
+
const handleDragHandlePointerDown = useCallback(
|
|
714
|
+
(flat: FlatNode<T>, e: any) => {
|
|
715
|
+
if (!canReorder || typeof window === "undefined") return;
|
|
716
|
+
if (e.button !== undefined && e.button !== 0) return;
|
|
717
|
+
if (dragUiRef.current) return;
|
|
718
|
+
sessionCleanupRef.current?.();
|
|
719
|
+
e.stopPropagation?.();
|
|
720
|
+
|
|
721
|
+
const handleEl = e.currentTarget as HTMLElement;
|
|
722
|
+
const rowEl = (handleEl.closest?.("[data-treeview-row]") ?? handleEl) as HTMLElement;
|
|
723
|
+
const startX = e.clientX as number;
|
|
724
|
+
const startY = e.clientY as number;
|
|
725
|
+
const pointerType: string = e.pointerType ?? "mouse";
|
|
726
|
+
let lifted = false;
|
|
727
|
+
let longPressTimer: ReturnType<typeof setTimeout> | null = null;
|
|
728
|
+
let prevUserSelect = "";
|
|
729
|
+
let prevCursor = "";
|
|
730
|
+
|
|
731
|
+
const lift = (x: number, y: number) => {
|
|
732
|
+
if (lifted) return;
|
|
733
|
+
lifted = beginPointerDrag(flat, rowEl, x, y);
|
|
734
|
+
if (!lifted) return;
|
|
735
|
+
prevUserSelect = document.body.style.userSelect;
|
|
736
|
+
document.body.style.userSelect = "none";
|
|
737
|
+
prevCursor = document.documentElement.style.cursor;
|
|
738
|
+
document.documentElement.style.cursor = "grabbing";
|
|
739
|
+
};
|
|
740
|
+
|
|
741
|
+
const teardown = () => {
|
|
742
|
+
if (longPressTimer !== null) clearTimeout(longPressTimer);
|
|
743
|
+
window.removeEventListener("pointermove", onMove);
|
|
744
|
+
window.removeEventListener("pointerup", onUp);
|
|
745
|
+
window.removeEventListener("pointercancel", onCancel);
|
|
746
|
+
window.removeEventListener("keydown", onKey, true);
|
|
747
|
+
window.removeEventListener("touchmove", onTouchMove);
|
|
748
|
+
window.removeEventListener("contextmenu", onContextMenu, true);
|
|
749
|
+
sessionCleanupRef.current = null;
|
|
750
|
+
if (lifted) {
|
|
751
|
+
document.body.style.userSelect = prevUserSelect;
|
|
752
|
+
document.documentElement.style.cursor = prevCursor;
|
|
753
|
+
suppressClickRef.current = true;
|
|
754
|
+
setTimeout(() => {
|
|
755
|
+
suppressClickRef.current = false;
|
|
756
|
+
}, 0);
|
|
757
|
+
}
|
|
758
|
+
};
|
|
759
|
+
|
|
760
|
+
const onMove = (me: PointerEvent) => {
|
|
761
|
+
pointerPosRef.current = { x: me.clientX, y: me.clientY };
|
|
762
|
+
if (!lifted) {
|
|
763
|
+
const travelled = Math.hypot(me.clientX - startX, me.clientY - startY);
|
|
764
|
+
if (pointerType === "mouse") {
|
|
765
|
+
if (travelled >= DRAG_THRESHOLD_PX) lift(me.clientX, me.clientY);
|
|
766
|
+
} else if (travelled >= DRAG_THRESHOLD_PX) {
|
|
767
|
+
// Finger moved before the hold elapsed — this is a scroll, not a drag.
|
|
768
|
+
teardown();
|
|
769
|
+
}
|
|
770
|
+
if (!lifted) return;
|
|
771
|
+
}
|
|
772
|
+
const containerRect = (
|
|
773
|
+
containerRef.current as HTMLElement | null
|
|
774
|
+
)?.getBoundingClientRect?.();
|
|
775
|
+
const ghost = {
|
|
776
|
+
x: me.clientX - (containerRect?.left ?? 0) - grabOffsetRef.current.x,
|
|
777
|
+
y: me.clientY - (containerRect?.top ?? 0) - grabOffsetRef.current.y,
|
|
778
|
+
};
|
|
779
|
+
const ui = dragUiRef.current;
|
|
780
|
+
if (!ui) return;
|
|
781
|
+
const hit = hitTest(me.clientY, ui);
|
|
782
|
+
setDragUi((prev) =>
|
|
783
|
+
prev
|
|
784
|
+
? {
|
|
785
|
+
...prev,
|
|
786
|
+
ghost,
|
|
787
|
+
...(hit && {
|
|
788
|
+
session: { ...prev.session, target: hit.target },
|
|
789
|
+
indicator: hit.indicator,
|
|
790
|
+
}),
|
|
791
|
+
}
|
|
792
|
+
: prev,
|
|
793
|
+
);
|
|
794
|
+
};
|
|
795
|
+
|
|
796
|
+
const onUp = () => {
|
|
797
|
+
const wasLifted = lifted;
|
|
798
|
+
teardown();
|
|
799
|
+
if (wasLifted) endDrag(true);
|
|
800
|
+
};
|
|
801
|
+
|
|
802
|
+
const onCancel = () => {
|
|
803
|
+
const wasLifted = lifted;
|
|
804
|
+
teardown();
|
|
805
|
+
if (wasLifted) endDrag(false);
|
|
806
|
+
};
|
|
807
|
+
|
|
808
|
+
const onKey = (ke: KeyboardEvent) => {
|
|
809
|
+
if (ke.key !== "Escape") return;
|
|
810
|
+
ke.stopPropagation();
|
|
811
|
+
const wasLifted = lifted;
|
|
812
|
+
teardown();
|
|
813
|
+
if (wasLifted) endDrag(false);
|
|
814
|
+
};
|
|
815
|
+
|
|
816
|
+
// While lifted, claim touch moves so the page/list does not scroll out
|
|
817
|
+
// from under the drag (registered non-passive on purpose).
|
|
818
|
+
const onTouchMove = (te: TouchEvent) => {
|
|
819
|
+
if (lifted) te.preventDefault();
|
|
820
|
+
};
|
|
821
|
+
const onContextMenu = (ce: Event) => {
|
|
822
|
+
if (lifted || longPressTimer !== null) ce.preventDefault();
|
|
823
|
+
};
|
|
824
|
+
|
|
825
|
+
window.addEventListener("pointermove", onMove);
|
|
826
|
+
window.addEventListener("pointerup", onUp);
|
|
827
|
+
window.addEventListener("pointercancel", onCancel);
|
|
828
|
+
window.addEventListener("keydown", onKey, true);
|
|
829
|
+
window.addEventListener("touchmove", onTouchMove, { passive: false });
|
|
830
|
+
window.addEventListener("contextmenu", onContextMenu, true);
|
|
831
|
+
sessionCleanupRef.current = () => {
|
|
832
|
+
const wasLifted = lifted;
|
|
833
|
+
teardown();
|
|
834
|
+
if (wasLifted) endDrag(false);
|
|
835
|
+
};
|
|
836
|
+
|
|
837
|
+
if (pointerType !== "mouse") {
|
|
838
|
+
longPressTimer = setTimeout(() => {
|
|
839
|
+
longPressTimer = null;
|
|
840
|
+
const p = pointerPosRef.current;
|
|
841
|
+
lift(p.x || startX, p.y || startY);
|
|
842
|
+
}, TOUCH_LONG_PRESS_MS);
|
|
843
|
+
pointerPosRef.current = { x: startX, y: startY };
|
|
844
|
+
}
|
|
845
|
+
},
|
|
846
|
+
[beginPointerDrag, canReorder, endDrag, hitTest],
|
|
847
|
+
);
|
|
848
|
+
|
|
849
|
+
// ── Keyboard drag (kanban grammar mapped onto the tree — LC-43) ────────
|
|
850
|
+
|
|
851
|
+
const liftFocusedNode = useCallback((): boolean => {
|
|
852
|
+
if (!canReorder || dragUiRef.current) return false;
|
|
853
|
+
const flat = flatNodes[focusedIndex];
|
|
854
|
+
if (!flat) return false;
|
|
855
|
+
const session = treeKeyboardLift(nodes, flat.node.id);
|
|
856
|
+
if (!session) return false;
|
|
857
|
+
const ui: TreeDragUi<T> = {
|
|
858
|
+
mode: "keyboard",
|
|
859
|
+
node: flat.node,
|
|
860
|
+
session,
|
|
861
|
+
subtree: subtreeIds(nodes, flat.node.id),
|
|
862
|
+
sourceDepth: flat.depth,
|
|
863
|
+
homeX: 0,
|
|
864
|
+
width: 0,
|
|
865
|
+
height: getRowHeight(flat.node.id),
|
|
866
|
+
indicator: indicatorForTarget(dndRows, session, session.target),
|
|
867
|
+
};
|
|
868
|
+
setSettle(null);
|
|
869
|
+
setDragScrollY(scrollOffsetRef.current);
|
|
870
|
+
setDragUi(ui);
|
|
871
|
+
dragUiRef.current = ui;
|
|
872
|
+
announce(describeTreeDragState("lift", session, nodes, flat.node.label));
|
|
873
|
+
return true;
|
|
874
|
+
}, [announce, canReorder, dndRows, flatNodes, focusedIndex, getRowHeight, nodes]);
|
|
875
|
+
|
|
876
|
+
const moveKeyboardDrag = useCallback(
|
|
877
|
+
(direction: "up" | "down" | "left" | "right"): boolean => {
|
|
878
|
+
const ui = dragUiRef.current;
|
|
879
|
+
if (!ui || ui.mode !== "keyboard") return false;
|
|
880
|
+
const next = treeKeyboardMove(ui.session, nodes, direction);
|
|
881
|
+
if (next === ui.session) return true; // boundary no-op still swallows the key
|
|
882
|
+
const indicator = indicatorForTarget(dndRows, next, next.target);
|
|
883
|
+
const updated: TreeDragUi<T> = { ...ui, session: next, indicator };
|
|
884
|
+
setDragUi(updated);
|
|
885
|
+
dragUiRef.current = updated;
|
|
886
|
+
if (indicator.kind === "line" && flatNodes.length > 0) {
|
|
887
|
+
scrollToIndex(Math.min(indicator.flatIndex, flatNodes.length - 1));
|
|
888
|
+
}
|
|
889
|
+
announce(describeTreeDragState("move", next, nodes, ui.node.label));
|
|
890
|
+
return true;
|
|
891
|
+
},
|
|
892
|
+
[announce, dndRows, flatNodes.length, nodes, scrollToIndex],
|
|
893
|
+
);
|
|
894
|
+
|
|
178
895
|
const hotkeyOpts = {
|
|
179
896
|
target: containerRef as React.RefObject<HTMLElement | null>,
|
|
180
897
|
};
|
|
@@ -182,6 +899,7 @@ export function TreeView<T = unknown>({
|
|
|
182
899
|
useHotkey(
|
|
183
900
|
hotkeyOverrides?.next ?? "ArrowDown",
|
|
184
901
|
() => {
|
|
902
|
+
if (moveKeyboardDrag("down")) return;
|
|
185
903
|
setFocusedIndex((prev) => {
|
|
186
904
|
const next = prev < 0 ? 0 : Math.min(prev + 1, flatNodes.length - 1);
|
|
187
905
|
scrollToIndex(next);
|
|
@@ -194,6 +912,7 @@ export function TreeView<T = unknown>({
|
|
|
194
912
|
useHotkey(
|
|
195
913
|
hotkeyOverrides?.prev ?? "ArrowUp",
|
|
196
914
|
() => {
|
|
915
|
+
if (moveKeyboardDrag("up")) return;
|
|
197
916
|
setFocusedIndex((prev) => {
|
|
198
917
|
const next = prev < 0 ? flatNodes.length - 1 : Math.max(prev - 1, 0);
|
|
199
918
|
scrollToIndex(next);
|
|
@@ -206,6 +925,8 @@ export function TreeView<T = unknown>({
|
|
|
206
925
|
useHotkey(
|
|
207
926
|
hotkeyOverrides?.expand ?? "ArrowRight",
|
|
208
927
|
() => {
|
|
928
|
+
// While lifted: nest into the previous sibling (kanban grammar).
|
|
929
|
+
if (moveKeyboardDrag("right")) return;
|
|
209
930
|
if (focusedIndex >= 0 && focusedIndex < flatNodes.length) {
|
|
210
931
|
const { node, hasChildren, isExpanded } = flatNodes[focusedIndex];
|
|
211
932
|
if (hasChildren && !isExpanded) {
|
|
@@ -219,6 +940,8 @@ export function TreeView<T = unknown>({
|
|
|
219
940
|
useHotkey(
|
|
220
941
|
hotkeyOverrides?.collapse ?? "ArrowLeft",
|
|
221
942
|
() => {
|
|
943
|
+
// While lifted: un-nest to after the current parent.
|
|
944
|
+
if (moveKeyboardDrag("left")) return;
|
|
222
945
|
if (focusedIndex >= 0 && focusedIndex < flatNodes.length) {
|
|
223
946
|
const { node, hasChildren, isExpanded } = flatNodes[focusedIndex];
|
|
224
947
|
if (hasChildren && isExpanded) {
|
|
@@ -229,9 +952,36 @@ export function TreeView<T = unknown>({
|
|
|
229
952
|
hotkeyOpts,
|
|
230
953
|
);
|
|
231
954
|
|
|
955
|
+
useHotkey(
|
|
956
|
+
hotkeyOverrides?.toggle ?? "Space",
|
|
957
|
+
() => {
|
|
958
|
+
// With reorder enabled, Space follows the WAI-ARIA drag grammar
|
|
959
|
+
// (lift/drop); expand/collapse stays on ArrowRight/ArrowLeft + press.
|
|
960
|
+
if (dragUiRef.current?.mode === "keyboard") {
|
|
961
|
+
endDrag(true);
|
|
962
|
+
return;
|
|
963
|
+
}
|
|
964
|
+
if (canReorder) {
|
|
965
|
+
liftFocusedNode();
|
|
966
|
+
return;
|
|
967
|
+
}
|
|
968
|
+
if (focusedIndex >= 0 && focusedIndex < flatNodes.length) {
|
|
969
|
+
const { node, hasChildren } = flatNodes[focusedIndex];
|
|
970
|
+
if (hasChildren) {
|
|
971
|
+
toggleNode(node);
|
|
972
|
+
}
|
|
973
|
+
}
|
|
974
|
+
},
|
|
975
|
+
hotkeyOpts,
|
|
976
|
+
);
|
|
977
|
+
|
|
232
978
|
useHotkey(
|
|
233
979
|
hotkeyOverrides?.select ?? "Enter",
|
|
234
980
|
() => {
|
|
981
|
+
if (dragUiRef.current?.mode === "keyboard") {
|
|
982
|
+
endDrag(true);
|
|
983
|
+
return;
|
|
984
|
+
}
|
|
235
985
|
if (focusedIndex >= 0 && focusedIndex < flatNodes.length) {
|
|
236
986
|
onNodeSelect?.(flatNodes[focusedIndex].node);
|
|
237
987
|
}
|
|
@@ -239,27 +989,70 @@ export function TreeView<T = unknown>({
|
|
|
239
989
|
hotkeyOpts,
|
|
240
990
|
);
|
|
241
991
|
|
|
992
|
+
useHotkey(
|
|
993
|
+
"Escape",
|
|
994
|
+
() => {
|
|
995
|
+
if (dragUiRef.current?.mode === "keyboard") endDrag(false);
|
|
996
|
+
},
|
|
997
|
+
hotkeyOpts,
|
|
998
|
+
);
|
|
999
|
+
|
|
1000
|
+
useHotkey(
|
|
1001
|
+
hotkeyOverrides?.first ?? "Home",
|
|
1002
|
+
() => {
|
|
1003
|
+
if (flatNodes.length > 0) {
|
|
1004
|
+
setFocusedIndex(0);
|
|
1005
|
+
scrollToIndex(0);
|
|
1006
|
+
}
|
|
1007
|
+
},
|
|
1008
|
+
hotkeyOpts,
|
|
1009
|
+
);
|
|
1010
|
+
|
|
1011
|
+
useHotkey(
|
|
1012
|
+
hotkeyOverrides?.last ?? "End",
|
|
1013
|
+
() => {
|
|
1014
|
+
if (flatNodes.length > 0) {
|
|
1015
|
+
const last = flatNodes.length - 1;
|
|
1016
|
+
setFocusedIndex(last);
|
|
1017
|
+
scrollToIndex(last);
|
|
1018
|
+
}
|
|
1019
|
+
},
|
|
1020
|
+
hotkeyOpts,
|
|
1021
|
+
);
|
|
1022
|
+
|
|
242
1023
|
if (nodes.length === 0) {
|
|
243
|
-
return
|
|
244
|
-
<YStack {...knobProps.panelPadding} alignItems="center" {...stackProps}>
|
|
245
|
-
<Text color={componentColors.text.muted}>{emptyMessage}</Text>
|
|
246
|
-
</YStack>
|
|
247
|
-
);
|
|
1024
|
+
return <EmptyState compact title={emptyMessage} {...stackProps} />;
|
|
248
1025
|
}
|
|
249
1026
|
|
|
250
|
-
// Clamp focused index if flat list shrunk
|
|
251
1027
|
const effectiveFocused = focusedIndex >= flatNodes.length ? -1 : focusedIndex;
|
|
1028
|
+
const resolvedAriaLabel =
|
|
1029
|
+
ariaLabel ??
|
|
1030
|
+
(typeof (stackProps as { "aria-label"?: string })["aria-label"] === "string"
|
|
1031
|
+
? (stackProps as { "aria-label"?: string })["aria-label"]
|
|
1032
|
+
: undefined);
|
|
252
1033
|
|
|
1034
|
+
const overlayNode = dragUi?.mode === "pointer" ? dragUi.node : settle?.node;
|
|
1035
|
+
const overlayHasChildren = ((overlayNode?.children?.length ?? 0) as number) > 0;
|
|
1036
|
+
// Handle glyphs stay small; the hit target reaches the 44px floor via
|
|
1037
|
+
// negative outset + hitSlop (DG-LAY-04 pattern shared with Chip/Button).
|
|
1038
|
+
const handleOutset = Math.max(0, (MIN_PRESS_TARGET - estimateSize) / 2);
|
|
1039
|
+
|
|
1040
|
+
// Rows span edge-to-edge inside the frame (SP-EDGE / LC-01): the container
|
|
1041
|
+
// owns only its border; rows own their inset, so hover/selection fills and
|
|
1042
|
+
// hit targets reach both edges.
|
|
253
1043
|
return (
|
|
254
|
-
<YStack {...knobProps.borderRadius} {...stackProps}>
|
|
1044
|
+
<YStack {...knobProps.borderRadius} overflow="hidden" {...stackProps}>
|
|
255
1045
|
<View
|
|
256
1046
|
ref={containerRef as any}
|
|
257
1047
|
role="tree"
|
|
1048
|
+
aria-label={resolvedAriaLabel}
|
|
258
1049
|
aria-activedescendant={
|
|
259
1050
|
effectiveFocused >= 0 ? `${treeId}-node-${effectiveFocused}` : undefined
|
|
260
1051
|
}
|
|
261
1052
|
tabIndex={0}
|
|
262
1053
|
outlineWidth={0}
|
|
1054
|
+
onFocus={handleContainerFocus}
|
|
1055
|
+
position="relative"
|
|
263
1056
|
style={{
|
|
264
1057
|
height,
|
|
265
1058
|
}}
|
|
@@ -269,67 +1062,280 @@ export function TreeView<T = unknown>({
|
|
|
269
1062
|
data={flatNodes}
|
|
270
1063
|
drawDistance={overscan * estimateSize}
|
|
271
1064
|
keyExtractor={(item) => item.node.id}
|
|
272
|
-
extraData={effectiveFocused}
|
|
1065
|
+
extraData={{ focused: effectiveFocused, selectedId, expandedIds, motion, dragUi, settle }}
|
|
1066
|
+
{...(canReorder && {
|
|
1067
|
+
onScroll: (e: any) => {
|
|
1068
|
+
const y = e?.nativeEvent?.contentOffset?.y;
|
|
1069
|
+
if (typeof y === "number") {
|
|
1070
|
+
scrollOffsetRef.current = y;
|
|
1071
|
+
if (dragUiRef.current) setDragScrollY(y);
|
|
1072
|
+
}
|
|
1073
|
+
},
|
|
1074
|
+
scrollEventThrottle: 16,
|
|
1075
|
+
})}
|
|
273
1076
|
renderItem={({ item, index }) => {
|
|
274
1077
|
const { node, depth, hasChildren, isExpanded } = item;
|
|
275
1078
|
const isFocused = effectiveFocused === index;
|
|
1079
|
+
const isSelected = selectedId !== undefined && selectedId === node.id;
|
|
1080
|
+
const leadingIcon =
|
|
1081
|
+
hasChildren && isExpanded && node.iconWhenExpanded
|
|
1082
|
+
? node.iconWhenExpanded
|
|
1083
|
+
: node.icon
|
|
1084
|
+
? node.icon
|
|
1085
|
+
: defaultNodeIcon(hasChildren, isExpanded, nodeIconSize);
|
|
1086
|
+
|
|
1087
|
+
const labelContent = renderNode ? (
|
|
1088
|
+
renderNode(node, depth)
|
|
1089
|
+
) : (
|
|
1090
|
+
<Text
|
|
1091
|
+
fontSize={labelFontSize}
|
|
1092
|
+
color={isSelected && onAccentLabel ? onAccentLabel : "$color"}
|
|
1093
|
+
numberOfLines={1}
|
|
1094
|
+
flexShrink={1}
|
|
1095
|
+
>
|
|
1096
|
+
{node.label}
|
|
1097
|
+
</Text>
|
|
1098
|
+
);
|
|
1099
|
+
|
|
1100
|
+
// FLIP/enter styles for this toggle (identity when idle).
|
|
1101
|
+
const armed = motion?.phase === "armed";
|
|
1102
|
+
const entering = motion?.entering.has(node.id) ?? false;
|
|
1103
|
+
const delta = motion?.deltas.get(node.id) ?? 0;
|
|
1104
|
+
const rowY = armed ? (entering ? ENTER_RISE_PX : delta) : 0;
|
|
1105
|
+
// Drag states: the lifted subtree dims in place (the ghost is the
|
|
1106
|
+
// carried visual); the moved row hides while the overlay settles
|
|
1107
|
+
// onto its final slot.
|
|
1108
|
+
const inDraggedSubtree = dragUi?.subtree.has(node.id) ?? false;
|
|
1109
|
+
const isSettleHidden = settle?.hideId === node.id;
|
|
1110
|
+
const isDropParent =
|
|
1111
|
+
dragUi?.indicator?.kind === "into" && dragUi.indicator.parentId === node.id;
|
|
1112
|
+
const rowOpacity = isSettleHidden
|
|
1113
|
+
? 0
|
|
1114
|
+
: armed && entering
|
|
1115
|
+
? 0
|
|
1116
|
+
: inDraggedSubtree
|
|
1117
|
+
? 0.4
|
|
1118
|
+
: 1;
|
|
1119
|
+
// Armed rows apply their inverted offset instantly; everyone else
|
|
1120
|
+
// keeps the knob tween (also covers hover/press fills — A-STATE).
|
|
1121
|
+
const rowTransition = armed && (entering || delta !== 0) ? "none" : transition;
|
|
1122
|
+
|
|
276
1123
|
return (
|
|
277
|
-
<
|
|
1124
|
+
<XStack
|
|
1125
|
+
// Remount when a recycled cell switches nodes so state fills
|
|
1126
|
+
// and the caret never tween across two different rows.
|
|
1127
|
+
key={node.id}
|
|
278
1128
|
id={`${treeId}-node-${index}`}
|
|
1129
|
+
{...{ "data-treeview-row": node.id }}
|
|
1130
|
+
{...(isDropParent && { "data-treeview-drop-parent": "true" })}
|
|
279
1131
|
role="treeitem"
|
|
280
1132
|
aria-expanded={hasChildren ? isExpanded : undefined}
|
|
281
|
-
aria-selected={
|
|
1133
|
+
aria-selected={isSelected}
|
|
282
1134
|
aria-level={depth + 1}
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
1135
|
+
alignItems="center"
|
|
1136
|
+
minHeight={estimateSize}
|
|
1137
|
+
paddingVertical={rowPadY}
|
|
1138
|
+
paddingInlineEnd={rowPadX}
|
|
1139
|
+
paddingInlineStart={rowPadX + depth * indentStep}
|
|
1140
|
+
gap="$2"
|
|
1141
|
+
cursor="pointer"
|
|
1142
|
+
y={rowY}
|
|
1143
|
+
opacity={rowOpacity}
|
|
1144
|
+
transition={rowTransition as any}
|
|
1145
|
+
onLayout={(e: any) => {
|
|
1146
|
+
const h = e?.nativeEvent?.layout?.height;
|
|
1147
|
+
if (typeof h === "number" && h > 0) rowHeights.current.set(node.id, h);
|
|
1148
|
+
}}
|
|
1149
|
+
backgroundColor={
|
|
1150
|
+
// Nest-into parent highlight wins while a drag is active
|
|
1151
|
+
// (LC-42 drop-target affordance).
|
|
1152
|
+
isDropParent
|
|
1153
|
+
? componentColors.interactive.background
|
|
1154
|
+
: isSelected
|
|
1155
|
+
? "$accentBackground"
|
|
1156
|
+
: isFocused
|
|
1157
|
+
? componentColors.interactive.background
|
|
1158
|
+
: "transparent"
|
|
1159
|
+
}
|
|
1160
|
+
// Row hover/press come from the knob state recipes (A-STATE);
|
|
1161
|
+
// selection tint stays sticky underneath them.
|
|
1162
|
+
hoverStyle={{
|
|
1163
|
+
...(control.hoverKnobProps as any),
|
|
1164
|
+
...(isSelected && { backgroundColor: "$accentBackground" }),
|
|
1165
|
+
}}
|
|
1166
|
+
pressStyle={{
|
|
1167
|
+
...(control.pressKnobProps as any),
|
|
1168
|
+
...(isSelected && { backgroundColor: "$accentBackground" }),
|
|
1169
|
+
}}
|
|
1170
|
+
// Focus ring (Axiom 12): ≥2px, non-removable — also visible on
|
|
1171
|
+
// selected rows; inset so the virtualized viewport can't clip it.
|
|
1172
|
+
outlineWidth={isFocused ? 2 : 0}
|
|
1173
|
+
outlineStyle="solid"
|
|
1174
|
+
outlineColor="$outlineColor"
|
|
1175
|
+
outlineOffset={-2}
|
|
1176
|
+
onPress={() => {
|
|
1177
|
+
// A completed drag's terminating click is not a selection.
|
|
1178
|
+
if (suppressClickRef.current) return;
|
|
1179
|
+
setFocusedIndex(index);
|
|
1180
|
+
// Branch rows toggle on press (EUI/VS Code semantics): the
|
|
1181
|
+
// whole row is the expand target, not a sub-44px caret.
|
|
1182
|
+
if (hasChildren) toggleNode(node);
|
|
1183
|
+
onNodeSelect?.(node);
|
|
1184
|
+
}}
|
|
1185
|
+
>
|
|
1186
|
+
{showExpansionArrows ? (
|
|
286
1187
|
hasChildren ? (
|
|
287
|
-
<View
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
)}
|
|
301
|
-
</View>
|
|
302
|
-
{isExpanded ? (
|
|
303
|
-
<FolderOpenIcon size={18} weight="duotone" />
|
|
304
|
-
) : (
|
|
305
|
-
<FolderIcon size={18} weight="duotone" />
|
|
306
|
-
)}
|
|
1188
|
+
<View
|
|
1189
|
+
width={expandIconSize}
|
|
1190
|
+
height={expandIconSize}
|
|
1191
|
+
alignItems="center"
|
|
1192
|
+
justifyContent="center"
|
|
1193
|
+
pointerEvents="none"
|
|
1194
|
+
// Indicator only — the row is the toggle target. One
|
|
1195
|
+
// caret that rotates (transform, knob tween) instead of
|
|
1196
|
+
// an icon swap, so the state change is continuous.
|
|
1197
|
+
rotate={isExpanded ? expandedCaretRotation : "0deg"}
|
|
1198
|
+
transition={transition as any}
|
|
1199
|
+
>
|
|
1200
|
+
<CollapsedCaretIcon size={caretSize} weight="bold" />
|
|
307
1201
|
</View>
|
|
308
1202
|
) : (
|
|
309
|
-
<View
|
|
310
|
-
<View style={{ width: expandIconSize }} />
|
|
311
|
-
<FileIcon size={18} weight="duotone" />
|
|
312
|
-
</View>
|
|
1203
|
+
<View width={expandIconSize} height={expandIconSize} />
|
|
313
1204
|
)
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
{
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
1205
|
+
) : null}
|
|
1206
|
+
|
|
1207
|
+
<View
|
|
1208
|
+
width={nodeIconSize + 2}
|
|
1209
|
+
height={nodeIconSize + 2}
|
|
1210
|
+
alignItems="center"
|
|
1211
|
+
justifyContent="center"
|
|
1212
|
+
flexShrink={0}
|
|
1213
|
+
>
|
|
1214
|
+
{leadingIcon}
|
|
1215
|
+
</View>
|
|
1216
|
+
|
|
1217
|
+
<View flex={1} minWidth={0} justifyContent="center">
|
|
1218
|
+
{labelContent}
|
|
1219
|
+
</View>
|
|
1220
|
+
|
|
1221
|
+
{canReorder ? (
|
|
1222
|
+
<View
|
|
1223
|
+
{...{ "data-treeview-handle": node.id }}
|
|
1224
|
+
role="button"
|
|
1225
|
+
aria-label={t("Drag {{label}} to reorder", { label: node.label })}
|
|
1226
|
+
tabIndex={-1}
|
|
1227
|
+
alignItems="center"
|
|
1228
|
+
justifyContent="center"
|
|
1229
|
+
flexShrink={0}
|
|
1230
|
+
minWidth={MIN_PRESS_TARGET}
|
|
1231
|
+
minHeight={MIN_PRESS_TARGET}
|
|
1232
|
+
marginVertical={-handleOutset}
|
|
1233
|
+
hitSlop={pressTargetHitSlop(caretSize)}
|
|
1234
|
+
cursor="grab"
|
|
1235
|
+
opacity={0.45}
|
|
1236
|
+
transition={transition as any}
|
|
1237
|
+
hoverStyle={{ opacity: 1 }}
|
|
1238
|
+
onPress={(e: any) => e?.stopPropagation?.()}
|
|
1239
|
+
{...{
|
|
1240
|
+
onPointerDown: (e: any) => handleDragHandlePointerDown(item, e),
|
|
1241
|
+
}}
|
|
1242
|
+
>
|
|
1243
|
+
<DotsSixVerticalIcon size={caretSize} weight="bold" />
|
|
1244
|
+
</View>
|
|
1245
|
+
) : null}
|
|
1246
|
+
</XStack>
|
|
330
1247
|
);
|
|
331
1248
|
}}
|
|
332
1249
|
/>
|
|
1250
|
+
|
|
1251
|
+
{/* Drop-target line between rows, indented to the destination depth
|
|
1252
|
+
(LC-42). Logical padding keeps it RTL-correct. */}
|
|
1253
|
+
{dragUi?.indicator?.kind === "line" && (
|
|
1254
|
+
<XStack
|
|
1255
|
+
{...{ "data-treeview-drop-indicator": "line" }}
|
|
1256
|
+
position="absolute"
|
|
1257
|
+
top={0}
|
|
1258
|
+
left={0}
|
|
1259
|
+
right={0}
|
|
1260
|
+
y={topOfFlatIndex(dragUi.indicator.flatIndex) - dragScrollY - 1}
|
|
1261
|
+
height={2}
|
|
1262
|
+
paddingInlineStart={rowPadX + dragUi.indicator.depth * indentStep}
|
|
1263
|
+
paddingInlineEnd={rowPadX}
|
|
1264
|
+
pointerEvents="none"
|
|
1265
|
+
zIndex={999}
|
|
1266
|
+
transition={dragUi.mode === "keyboard" ? (transition as any) : ("none" as any)}
|
|
1267
|
+
>
|
|
1268
|
+
<View flex={1} height={2} borderRadius={1} backgroundColor="$accentBackground" />
|
|
1269
|
+
</XStack>
|
|
1270
|
+
)}
|
|
1271
|
+
|
|
1272
|
+
{/* Ghost overlay: clone of the dragged row outside the virtualized
|
|
1273
|
+
list. Pointer mode tracks 1:1 with no tween; the drop/cancel
|
|
1274
|
+
settle leap tweens with the animation knob (LC-42). */}
|
|
1275
|
+
{overlayNode !== undefined && (
|
|
1276
|
+
<View
|
|
1277
|
+
{...{
|
|
1278
|
+
"data-treeview-overlay": "true",
|
|
1279
|
+
"data-treeview-overlay-phase": dragUi ? "pointer" : "settling",
|
|
1280
|
+
}}
|
|
1281
|
+
position="absolute"
|
|
1282
|
+
top={0}
|
|
1283
|
+
left={0}
|
|
1284
|
+
x={(dragUi?.mode === "pointer" ? dragUi.ghost?.x : settle?.to.x) ?? 0}
|
|
1285
|
+
y={(dragUi?.mode === "pointer" ? dragUi.ghost?.y : settle?.to.y) ?? 0}
|
|
1286
|
+
width={dragUi?.width ?? settle?.width}
|
|
1287
|
+
height={dragUi?.height ?? settle?.height}
|
|
1288
|
+
pointerEvents="none"
|
|
1289
|
+
zIndex={1000}
|
|
1290
|
+
transition={dragUi ? ("none" as any) : (transition as any)}
|
|
1291
|
+
>
|
|
1292
|
+
<XStack
|
|
1293
|
+
alignItems="center"
|
|
1294
|
+
height="100%"
|
|
1295
|
+
paddingHorizontal={rowPadX}
|
|
1296
|
+
gap="$2"
|
|
1297
|
+
{...knobProps.borderRadius}
|
|
1298
|
+
backgroundColor="$background"
|
|
1299
|
+
borderWidth={1}
|
|
1300
|
+
borderColor="$borderColor"
|
|
1301
|
+
overflow="hidden"
|
|
1302
|
+
transition={transition as any}
|
|
1303
|
+
enterStyle={{ scale: 1 }}
|
|
1304
|
+
scale={dragUi ? 1.03 : 1}
|
|
1305
|
+
{...(dragUi ? LIFT_SHADOW : undefined)}
|
|
1306
|
+
>
|
|
1307
|
+
<View
|
|
1308
|
+
width={nodeIconSize + 2}
|
|
1309
|
+
height={nodeIconSize + 2}
|
|
1310
|
+
alignItems="center"
|
|
1311
|
+
justifyContent="center"
|
|
1312
|
+
flexShrink={0}
|
|
1313
|
+
>
|
|
1314
|
+
{overlayNode.icon ?? defaultNodeIcon(overlayHasChildren, false, nodeIconSize)}
|
|
1315
|
+
</View>
|
|
1316
|
+
<Text fontSize={labelFontSize} color="$color" numberOfLines={1} flexShrink={1}>
|
|
1317
|
+
{overlayNode.label}
|
|
1318
|
+
</Text>
|
|
1319
|
+
</XStack>
|
|
1320
|
+
</View>
|
|
1321
|
+
)}
|
|
1322
|
+
|
|
1323
|
+
{/* Screen-reader drag announcements (WAI-ARIA drag pattern, LC-43). */}
|
|
1324
|
+
{canReorder && (
|
|
1325
|
+
<View
|
|
1326
|
+
aria-live="assertive"
|
|
1327
|
+
aria-atomic
|
|
1328
|
+
{...{ "data-treeview-announcer": "true" }}
|
|
1329
|
+
position="absolute"
|
|
1330
|
+
width={1}
|
|
1331
|
+
height={1}
|
|
1332
|
+
overflow="hidden"
|
|
1333
|
+
opacity={0}
|
|
1334
|
+
pointerEvents="none"
|
|
1335
|
+
>
|
|
1336
|
+
<Text>{announcement}</Text>
|
|
1337
|
+
</View>
|
|
1338
|
+
)}
|
|
333
1339
|
</View>
|
|
334
1340
|
</YStack>
|
|
335
1341
|
);
|