@multiplatform.one/components 6.1.0 → 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/Kanban.tsx
CHANGED
|
@@ -1,20 +1,47 @@
|
|
|
1
1
|
import { componentColors } from "../componentColors";
|
|
2
|
+
import { AsyncBoundary, useAsyncCount } from "../layouts/AsyncBoundary";
|
|
3
|
+
import { EmptyState } from "../layouts/page";
|
|
4
|
+
import { Spinner } from "@multiplatform.one/forms";
|
|
2
5
|
import { useResolvedKnobs } from "@multiplatform.one/theme";
|
|
3
6
|
import { useHotkey } from "@tanstack/react-hotkeys";
|
|
4
7
|
import type { RegisterableHotkey } from "@tanstack/react-hotkeys";
|
|
5
8
|
import { useVirtualizer } from "@tanstack/react-virtual";
|
|
6
|
-
import React, {
|
|
9
|
+
import React, {
|
|
10
|
+
useCallback,
|
|
11
|
+
useRef,
|
|
12
|
+
useEffect,
|
|
13
|
+
useId,
|
|
14
|
+
useMemo,
|
|
15
|
+
useState,
|
|
16
|
+
type ReactNode,
|
|
17
|
+
} from "react";
|
|
18
|
+
import { useTranslation } from "react-i18next";
|
|
7
19
|
import {
|
|
20
|
+
AnimatePresence,
|
|
8
21
|
Card,
|
|
9
22
|
ListItem,
|
|
10
23
|
ScrollView,
|
|
11
|
-
Spinner,
|
|
12
24
|
Text,
|
|
13
25
|
View,
|
|
14
26
|
XStack,
|
|
15
27
|
YStack,
|
|
16
28
|
type YStackProps,
|
|
17
29
|
} from "tamagui";
|
|
30
|
+
import {
|
|
31
|
+
autoScrollVelocity,
|
|
32
|
+
describeCancel,
|
|
33
|
+
describeDragState,
|
|
34
|
+
gapPosition,
|
|
35
|
+
insertionIndexForY,
|
|
36
|
+
keyboardLift,
|
|
37
|
+
keyboardMove,
|
|
38
|
+
resolveDrop,
|
|
39
|
+
siblingOffset,
|
|
40
|
+
type KanbanAnnouncement,
|
|
41
|
+
type KanbanBoardColumnSnapshot,
|
|
42
|
+
type KanbanDropTarget,
|
|
43
|
+
type RenderedCardMeasurement,
|
|
44
|
+
} from "./kanbanDnd";
|
|
18
45
|
|
|
19
46
|
/**
|
|
20
47
|
* A column definition for the Kanban board.
|
|
@@ -46,6 +73,10 @@ export interface KanbanHotkeys {
|
|
|
46
73
|
prevCard?: RegisterableHotkey;
|
|
47
74
|
/** Select the focused card (default: Enter) */
|
|
48
75
|
select?: RegisterableHotkey;
|
|
76
|
+
/** Lift / drop the focused card for keyboard drag-and-drop (default: Space) */
|
|
77
|
+
lift?: RegisterableHotkey;
|
|
78
|
+
/** Cancel an active keyboard drag (default: Escape) */
|
|
79
|
+
cancel?: RegisterableHotkey;
|
|
49
80
|
}
|
|
50
81
|
|
|
51
82
|
/**
|
|
@@ -58,16 +89,35 @@ export interface KanbanProps<T> extends Omit<YStackProps, "children"> {
|
|
|
58
89
|
columns: KanbanColumn<T>[];
|
|
59
90
|
/** Render function for each card */
|
|
60
91
|
renderCard: (item: T) => React.ReactNode;
|
|
61
|
-
/**
|
|
62
|
-
|
|
92
|
+
/**
|
|
93
|
+
* Called when a card is moved between columns. `toIndex` is the insertion
|
|
94
|
+
* position inside the destination column (0-based).
|
|
95
|
+
*/
|
|
96
|
+
onCardMove?: (item: T, fromColumn: string, toColumn: string, toIndex?: number) => void;
|
|
97
|
+
/**
|
|
98
|
+
* Called when a card is reordered inside its own column. Without this
|
|
99
|
+
* handler, same-column drops settle back to their origin.
|
|
100
|
+
*/
|
|
101
|
+
onCardReorder?: (item: T, columnId: string, fromIndex: number, toIndex: number) => void;
|
|
63
102
|
/** Called when a card is selected via keyboard or click */
|
|
64
103
|
onCardSelect?: (item: T, columnId: string) => void;
|
|
65
104
|
/** Called when user scrolls near the bottom (infinite scroll) */
|
|
66
105
|
onLoadMore?: () => void;
|
|
106
|
+
/** Stable key extractor for virtualized cards (defaults to the item index) */
|
|
107
|
+
getItemKey?: (item: T, index: number) => string | number;
|
|
108
|
+
/** Human label for a card, used in screen-reader drag announcements */
|
|
109
|
+
getItemLabel?: (item: T) => string;
|
|
67
110
|
/** Whether more items are available */
|
|
68
111
|
hasMore?: boolean;
|
|
69
112
|
/** Whether data is loading */
|
|
70
113
|
isLoading?: boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Failed board load (DG-ST-01 / W9). Wins over empty columns — never shows
|
|
116
|
+
* empty chrome; column count badges are suppressed (DG-ST-04).
|
|
117
|
+
*/
|
|
118
|
+
error?: boolean | string | Error | ReactNode | null;
|
|
119
|
+
/** Retry handler for the default error UI. */
|
|
120
|
+
onRetry?: () => void;
|
|
71
121
|
/** Column width in pixels (default: 280) */
|
|
72
122
|
columnWidth?: number;
|
|
73
123
|
/** Minimum column height in pixels (default: 400) */
|
|
@@ -82,14 +132,100 @@ export interface KanbanProps<T> extends Omit<YStackProps, "children"> {
|
|
|
82
132
|
hotkeys?: KanbanHotkeys;
|
|
83
133
|
}
|
|
84
134
|
|
|
135
|
+
// ── Interaction constants (gesture recognition, not animation timing) ──
|
|
136
|
+
|
|
137
|
+
/** Pixels of pointer travel before a press becomes a drag (clicks stay clicks below this). */
|
|
138
|
+
const DRAG_THRESHOLD_PX = 4;
|
|
139
|
+
/** Touch/pen hold before lift so vertical swipes still scroll the column. */
|
|
140
|
+
const TOUCH_LONG_PRESS_MS = 200;
|
|
141
|
+
/** Distance from a scroll edge where auto-scroll engages. */
|
|
142
|
+
const AUTO_SCROLL_EDGE_PX = 48;
|
|
143
|
+
/** Auto-scroll speed cap in px per frame; ramps with edge proximity. */
|
|
144
|
+
const AUTO_SCROLL_MAX_SPEED = 16;
|
|
145
|
+
/** Inset between the virtualized slot and the card chrome (wrapper padding). */
|
|
146
|
+
const CARD_INSET_PX = 4;
|
|
147
|
+
|
|
148
|
+
// Raised drag shadow: the house $4 elevation tier (single light source,
|
|
149
|
+
// blur = 2 x y-offset — Axiom 14 OPTICS). Explicit props because the lift is
|
|
150
|
+
// a gesture state, not the board's resting elevation knob; values mirror
|
|
151
|
+
// forms/InputParts + Accordion's cardElevationShadow.
|
|
152
|
+
const LIFT_SHADOW = {
|
|
153
|
+
shadowColor: "#000",
|
|
154
|
+
shadowOffset: { width: 0, height: 10 },
|
|
155
|
+
shadowOpacity: 0.15,
|
|
156
|
+
shadowRadius: 20,
|
|
157
|
+
} as const;
|
|
158
|
+
|
|
159
|
+
// ── Internal drag plumbing types ──────────────────────────────
|
|
160
|
+
|
|
161
|
+
interface ColumnHandle {
|
|
162
|
+
scrollEl: HTMLElement | null;
|
|
163
|
+
getVirtualState: () => {
|
|
164
|
+
items: RenderedCardMeasurement[];
|
|
165
|
+
totalSize: number;
|
|
166
|
+
count: number;
|
|
167
|
+
};
|
|
168
|
+
scrollToIndex: (index: number) => void;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
interface DragSession<T> {
|
|
172
|
+
mode: "pointer" | "keyboard";
|
|
173
|
+
item: T;
|
|
174
|
+
/** Stable key when getItemKey is provided (used to hide the real card while settling). */
|
|
175
|
+
itemKey?: string | number;
|
|
176
|
+
itemLabel: string;
|
|
177
|
+
sourceColumnId: string;
|
|
178
|
+
sourceIndex: number;
|
|
179
|
+
/** Dragged slot size in px (wrapper height including gap padding). */
|
|
180
|
+
size: number;
|
|
181
|
+
/** Card chrome width/height for the overlay. */
|
|
182
|
+
width: number;
|
|
183
|
+
height: number;
|
|
184
|
+
target: KanbanDropTarget;
|
|
185
|
+
/** Board-relative overlay position for keyboard mode. */
|
|
186
|
+
keyboardPos?: { x: number; y: number };
|
|
187
|
+
/** Board-relative card position at lift time (first overlay paint). */
|
|
188
|
+
initialPos?: { x: number; y: number };
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
interface SettleSession<T> {
|
|
192
|
+
item: T;
|
|
193
|
+
itemKey?: string | number;
|
|
194
|
+
width: number;
|
|
195
|
+
height: number;
|
|
196
|
+
to: { x: number; y: number };
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/** Shared render context handed to each column while a drag is active. */
|
|
200
|
+
interface KanbanDragRenderContext {
|
|
201
|
+
sourceColumnId: string;
|
|
202
|
+
sourceIndex: number;
|
|
203
|
+
size: number;
|
|
204
|
+
target: KanbanDropTarget;
|
|
205
|
+
keyboard: boolean;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
interface OverlayApi {
|
|
209
|
+
setPointer: (x: number, y: number) => void;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
type ResolvedKnobProps = ReturnType<typeof useResolvedKnobs>["knobProps"];
|
|
213
|
+
|
|
85
214
|
/**
|
|
86
|
-
* Generic Kanban board component with column-level virtualization
|
|
87
|
-
* and
|
|
215
|
+
* Generic Kanban board component with column-level virtualization,
|
|
216
|
+
* keyboard navigation, and Trello-class drag-and-drop motion.
|
|
88
217
|
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
218
|
+
* Drag anatomy (A-GESTURE / Axiom 4):
|
|
219
|
+
* - The lifted card renders as a board-level overlay that tracks the pointer
|
|
220
|
+
* 1:1 (no tween while tracking); lift scale/rotate/shadow tween in with
|
|
221
|
+
* `knobProps.transition`.
|
|
222
|
+
* - Siblings make room with transform-only FLIP displacement driven by the
|
|
223
|
+
* same transition token, so the identical math is native-driver safe.
|
|
224
|
+
* - Drops and cancels settle with a tween — nothing teleports (LC-25);
|
|
225
|
+
* `animation=none` collapses every decorative tween while 1:1 tracking
|
|
226
|
+
* keeps working (Axiom 3 NULL).
|
|
227
|
+
* - Keyboard drag follows the WAI-ARIA pattern: Space lifts, arrows move,
|
|
228
|
+
* Space/Enter drops, Escape cancels, with aria-live announcements.
|
|
93
229
|
*
|
|
94
230
|
* @typeParam T - The card item type
|
|
95
231
|
*
|
|
@@ -102,24 +238,34 @@ export interface KanbanProps<T> extends Omit<YStackProps, "children"> {
|
|
|
102
238
|
* { id: 'done', title: 'Done', items: doneItems },
|
|
103
239
|
* ]}
|
|
104
240
|
* renderCard={(item) => <Text>{item.title}</Text>}
|
|
241
|
+
* onCardMove={(item, from, to, toIndex) => moveCard(item, to, toIndex)}
|
|
242
|
+
* onCardReorder={(item, column, from, to) => reorderCard(item, column, to)}
|
|
105
243
|
* />
|
|
106
244
|
* ```
|
|
107
245
|
*/
|
|
108
246
|
export function Kanban<T>({
|
|
109
247
|
columns,
|
|
110
248
|
renderCard,
|
|
249
|
+
onCardMove,
|
|
250
|
+
onCardReorder,
|
|
111
251
|
onCardSelect,
|
|
112
252
|
onLoadMore,
|
|
253
|
+
getItemKey,
|
|
254
|
+
getItemLabel,
|
|
113
255
|
hasMore = false,
|
|
114
256
|
isLoading = false,
|
|
257
|
+
error = null,
|
|
258
|
+
onRetry,
|
|
115
259
|
columnWidth: columnWidthProp,
|
|
116
260
|
minColumnHeight: minColumnHeightProp,
|
|
117
261
|
estimateSize: estimateSizeProp,
|
|
118
262
|
overscan = 5,
|
|
119
|
-
emptyColumnMessage
|
|
263
|
+
emptyColumnMessage: emptyColumnMessageProp,
|
|
120
264
|
hotkeys: hotkeyOverrides,
|
|
121
265
|
...stackProps
|
|
122
266
|
}: KanbanProps<T>) {
|
|
267
|
+
const { t } = useTranslation();
|
|
268
|
+
const emptyColumnMessage = emptyColumnMessageProp ?? t("No items");
|
|
123
269
|
const { knobProps } = useResolvedKnobs();
|
|
124
270
|
const sz = knobProps.sizeToken;
|
|
125
271
|
const columnWidth = columnWidthProp ?? (sz === "$3" ? 240 : sz === "$5" ? 320 : 280);
|
|
@@ -127,10 +273,533 @@ export function Kanban<T>({
|
|
|
127
273
|
const estimateSize = estimateSizeProp ?? (sz === "$3" ? 64 : sz === "$5" ? 96 : 80);
|
|
128
274
|
const kanbanId = useId();
|
|
129
275
|
const containerRef = useRef<HTMLDivElement>(null);
|
|
276
|
+
const boardScrollRef = useRef<any>(null);
|
|
130
277
|
const [focusedCol, setFocusedCol] = useState(-1);
|
|
131
278
|
const [focusedCard, setFocusedCard] = useState(-1);
|
|
132
279
|
|
|
133
|
-
|
|
280
|
+
const canDrag = Boolean(onCardMove || onCardReorder);
|
|
281
|
+
|
|
282
|
+
// ── Drag state ──────────────────────────────────────────────
|
|
283
|
+
const [drag, setDrag] = useState<DragSession<T> | null>(null);
|
|
284
|
+
const [settle, setSettle] = useState<SettleSession<T> | null>(null);
|
|
285
|
+
const [announcement, setAnnouncement] = useState("");
|
|
286
|
+
const dragRef = useRef<DragSession<T> | null>(null);
|
|
287
|
+
dragRef.current = drag;
|
|
288
|
+
const columnHandles = useRef(new Map<string, ColumnHandle>());
|
|
289
|
+
const overlayApiRef = useRef<OverlayApi | null>(null);
|
|
290
|
+
const pointerRef = useRef({ x: 0, y: 0 });
|
|
291
|
+
const grabOffsetRef = useRef({ x: 0, y: 0 });
|
|
292
|
+
const hoverColumnRef = useRef<string | null>(null);
|
|
293
|
+
const suppressClickRef = useRef(false);
|
|
294
|
+
const sessionCleanupRef = useRef<(() => void) | null>(null);
|
|
295
|
+
const autoScrollRafRef = useRef<number | null>(null);
|
|
296
|
+
|
|
297
|
+
useEffect(() => () => sessionCleanupRef.current?.(), []);
|
|
298
|
+
|
|
299
|
+
const registerColumn = useCallback((id: string, handle: ColumnHandle | null) => {
|
|
300
|
+
if (handle) columnHandles.current.set(id, handle);
|
|
301
|
+
else columnHandles.current.delete(id);
|
|
302
|
+
}, []);
|
|
303
|
+
|
|
304
|
+
const board = useMemo(
|
|
305
|
+
(): KanbanBoardColumnSnapshot[] =>
|
|
306
|
+
columns.map((c) => ({ id: c.id, title: c.title, count: c.items.length })),
|
|
307
|
+
[columns],
|
|
308
|
+
);
|
|
309
|
+
|
|
310
|
+
const announce = useCallback(
|
|
311
|
+
(a: KanbanAnnouncement) => {
|
|
312
|
+
const text =
|
|
313
|
+
a.type === "lift"
|
|
314
|
+
? t(
|
|
315
|
+
"Lifted {{card}} in {{column}}, position {{position}} of {{count}}. Use arrow keys to move, space to drop, escape to cancel.",
|
|
316
|
+
a,
|
|
317
|
+
)
|
|
318
|
+
: a.type === "move"
|
|
319
|
+
? t("Moved {{card}} to {{column}}, position {{position}} of {{count}}.", a)
|
|
320
|
+
: a.type === "drop"
|
|
321
|
+
? t("Dropped {{card}} in {{column}}, position {{position}} of {{count}}.", a)
|
|
322
|
+
: t("Movement cancelled. {{card}} returned to {{column}}.", a);
|
|
323
|
+
setAnnouncement(text);
|
|
324
|
+
},
|
|
325
|
+
[t],
|
|
326
|
+
);
|
|
327
|
+
|
|
328
|
+
// ── Geometry helpers ────────────────────────────────────────
|
|
329
|
+
|
|
330
|
+
const getColumnStart = useCallback(
|
|
331
|
+
(handle: ColumnHandle, index: number): number => {
|
|
332
|
+
const state = handle.getVirtualState();
|
|
333
|
+
const found = state.items.find((it) => it.index === index);
|
|
334
|
+
return found ? found.start : index * estimateSize;
|
|
335
|
+
},
|
|
336
|
+
[estimateSize],
|
|
337
|
+
);
|
|
338
|
+
|
|
339
|
+
/** Board-relative rect of the card chrome for an insertion gap. */
|
|
340
|
+
const gapRectInBoard = useCallback(
|
|
341
|
+
(
|
|
342
|
+
columnId: string,
|
|
343
|
+
gapIndex: number,
|
|
344
|
+
session: Pick<DragSession<T>, "sourceColumnId" | "sourceIndex" | "size">,
|
|
345
|
+
): { x: number; y: number } | null => {
|
|
346
|
+
const handle = columnHandles.current.get(columnId);
|
|
347
|
+
const container = containerRef.current;
|
|
348
|
+
if (!handle?.scrollEl || !container) return null;
|
|
349
|
+
const state = handle.getVirtualState();
|
|
350
|
+
const gapY = gapPosition({
|
|
351
|
+
gapIndex,
|
|
352
|
+
sourceIndex: columnId === session.sourceColumnId ? session.sourceIndex : null,
|
|
353
|
+
count: state.count,
|
|
354
|
+
size: session.size,
|
|
355
|
+
totalSize: state.totalSize,
|
|
356
|
+
getStart: (index) => getColumnStart(handle, index),
|
|
357
|
+
});
|
|
358
|
+
const scrollRect = handle.scrollEl.getBoundingClientRect();
|
|
359
|
+
const containerRect = container.getBoundingClientRect();
|
|
360
|
+
return {
|
|
361
|
+
x: scrollRect.left - containerRect.left + CARD_INSET_PX,
|
|
362
|
+
y: scrollRect.top - containerRect.top + gapY - handle.scrollEl.scrollTop + CARD_INSET_PX,
|
|
363
|
+
};
|
|
364
|
+
},
|
|
365
|
+
[getColumnStart],
|
|
366
|
+
);
|
|
367
|
+
|
|
368
|
+
/** Pointer position → drop target. Falls back to the origin slot so drops outside cancel. */
|
|
369
|
+
const hitTest = useCallback(
|
|
370
|
+
(clientX: number, clientY: number, session: DragSession<T>): KanbanDropTarget => {
|
|
371
|
+
const el =
|
|
372
|
+
typeof document !== "undefined" ? document.elementFromPoint(clientX, clientY) : null;
|
|
373
|
+
const columnEl = el?.closest?.("[data-kanban-column]") as HTMLElement | null;
|
|
374
|
+
const columnId = columnEl?.getAttribute("data-kanban-column") ?? null;
|
|
375
|
+
hoverColumnRef.current = columnId;
|
|
376
|
+
if (!columnId) {
|
|
377
|
+
return { columnId: session.sourceColumnId, index: session.sourceIndex };
|
|
378
|
+
}
|
|
379
|
+
const handle = columnHandles.current.get(columnId);
|
|
380
|
+
if (!handle?.scrollEl) return { columnId, index: 0 };
|
|
381
|
+
const rect = handle.scrollEl.getBoundingClientRect();
|
|
382
|
+
const localY = clientY - rect.top + handle.scrollEl.scrollTop;
|
|
383
|
+
const state = handle.getVirtualState();
|
|
384
|
+
const index = insertionIndexForY({
|
|
385
|
+
localY,
|
|
386
|
+
items: state.items,
|
|
387
|
+
sourceIndex: columnId === session.sourceColumnId ? session.sourceIndex : null,
|
|
388
|
+
count: state.count,
|
|
389
|
+
size: session.size,
|
|
390
|
+
});
|
|
391
|
+
return { columnId, index };
|
|
392
|
+
},
|
|
393
|
+
[],
|
|
394
|
+
);
|
|
395
|
+
|
|
396
|
+
const getBoardScrollEl = useCallback((): HTMLElement | null => {
|
|
397
|
+
const node = boardScrollRef.current;
|
|
398
|
+
return (node?.getScrollableNode?.() ?? node) as HTMLElement | null;
|
|
399
|
+
}, []);
|
|
400
|
+
|
|
401
|
+
// ── Auto-scroll (velocity ramps with edge proximity) ────────
|
|
402
|
+
|
|
403
|
+
const stopAutoScroll = useCallback(() => {
|
|
404
|
+
if (autoScrollRafRef.current != null) cancelAnimationFrame(autoScrollRafRef.current);
|
|
405
|
+
autoScrollRafRef.current = null;
|
|
406
|
+
}, []);
|
|
407
|
+
|
|
408
|
+
const startAutoScroll = useCallback(() => {
|
|
409
|
+
stopAutoScroll();
|
|
410
|
+
const tick = () => {
|
|
411
|
+
const session = dragRef.current;
|
|
412
|
+
if (!session || session.mode !== "pointer") {
|
|
413
|
+
autoScrollRafRef.current = null;
|
|
414
|
+
return;
|
|
415
|
+
}
|
|
416
|
+
const { x, y } = pointerRef.current;
|
|
417
|
+
let scrolled = false;
|
|
418
|
+
const hoverId = hoverColumnRef.current;
|
|
419
|
+
const handle = hoverId ? columnHandles.current.get(hoverId) : null;
|
|
420
|
+
if (handle?.scrollEl) {
|
|
421
|
+
const rect = handle.scrollEl.getBoundingClientRect();
|
|
422
|
+
const vy = autoScrollVelocity({
|
|
423
|
+
pos: y,
|
|
424
|
+
start: rect.top,
|
|
425
|
+
end: rect.bottom,
|
|
426
|
+
edge: AUTO_SCROLL_EDGE_PX,
|
|
427
|
+
maxSpeed: AUTO_SCROLL_MAX_SPEED,
|
|
428
|
+
});
|
|
429
|
+
if (vy !== 0) {
|
|
430
|
+
handle.scrollEl.scrollTop += vy;
|
|
431
|
+
scrolled = true;
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
const boardEl = getBoardScrollEl();
|
|
435
|
+
if (boardEl) {
|
|
436
|
+
const rect = boardEl.getBoundingClientRect();
|
|
437
|
+
const vx = autoScrollVelocity({
|
|
438
|
+
pos: x,
|
|
439
|
+
start: rect.left,
|
|
440
|
+
end: rect.right,
|
|
441
|
+
edge: AUTO_SCROLL_EDGE_PX,
|
|
442
|
+
maxSpeed: AUTO_SCROLL_MAX_SPEED,
|
|
443
|
+
});
|
|
444
|
+
if (vx !== 0) {
|
|
445
|
+
boardEl.scrollLeft += vx;
|
|
446
|
+
scrolled = true;
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
if (scrolled) {
|
|
450
|
+
const target = hitTest(x, y, session);
|
|
451
|
+
setDrag((prev) =>
|
|
452
|
+
prev && (prev.target.columnId !== target.columnId || prev.target.index !== target.index)
|
|
453
|
+
? { ...prev, target }
|
|
454
|
+
: prev,
|
|
455
|
+
);
|
|
456
|
+
}
|
|
457
|
+
autoScrollRafRef.current = requestAnimationFrame(tick);
|
|
458
|
+
};
|
|
459
|
+
autoScrollRafRef.current = requestAnimationFrame(tick);
|
|
460
|
+
}, [getBoardScrollEl, hitTest, stopAutoScroll]);
|
|
461
|
+
|
|
462
|
+
// ── Drop / cancel ───────────────────────────────────────────
|
|
463
|
+
|
|
464
|
+
const endDrag = useCallback(
|
|
465
|
+
(commit: boolean) => {
|
|
466
|
+
const session = dragRef.current;
|
|
467
|
+
if (!session) return;
|
|
468
|
+
stopAutoScroll();
|
|
469
|
+
sessionCleanupRef.current?.();
|
|
470
|
+
sessionCleanupRef.current = null;
|
|
471
|
+
|
|
472
|
+
const resolved = resolveDrop(session);
|
|
473
|
+
const crossColumn = resolved.to.columnId !== resolved.from.columnId;
|
|
474
|
+
const canCommit =
|
|
475
|
+
commit && resolved.commit && (crossColumn ? Boolean(onCardMove) : Boolean(onCardReorder));
|
|
476
|
+
|
|
477
|
+
const dest = canCommit
|
|
478
|
+
? gapRectInBoard(resolved.to.columnId, resolved.to.index, session)
|
|
479
|
+
: gapRectInBoard(resolved.from.columnId, resolved.from.index, session);
|
|
480
|
+
|
|
481
|
+
setDrag(null);
|
|
482
|
+
if (dest) {
|
|
483
|
+
setSettle({
|
|
484
|
+
item: session.item,
|
|
485
|
+
itemKey: session.itemKey,
|
|
486
|
+
width: session.width,
|
|
487
|
+
height: session.height,
|
|
488
|
+
to: dest,
|
|
489
|
+
});
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
if (canCommit) {
|
|
493
|
+
announce(describeDragState("drop", session, board, session.itemLabel));
|
|
494
|
+
if (crossColumn) {
|
|
495
|
+
onCardMove?.(
|
|
496
|
+
session.item,
|
|
497
|
+
resolved.from.columnId,
|
|
498
|
+
resolved.to.columnId,
|
|
499
|
+
resolved.to.index,
|
|
500
|
+
);
|
|
501
|
+
} else {
|
|
502
|
+
onCardReorder?.(
|
|
503
|
+
session.item,
|
|
504
|
+
resolved.from.columnId,
|
|
505
|
+
resolved.from.index,
|
|
506
|
+
resolved.to.index,
|
|
507
|
+
);
|
|
508
|
+
}
|
|
509
|
+
} else {
|
|
510
|
+
announce(describeCancel(session, board, session.itemLabel));
|
|
511
|
+
}
|
|
512
|
+
},
|
|
513
|
+
[announce, board, gapRectInBoard, onCardMove, onCardReorder, stopAutoScroll],
|
|
514
|
+
);
|
|
515
|
+
|
|
516
|
+
// Settle completion: watch the overlay transform until it stops changing
|
|
517
|
+
// (mechanical spring-rest detection — no timing constants). With
|
|
518
|
+
// animation=none the position lands in one frame and this exits immediately.
|
|
519
|
+
useEffect(() => {
|
|
520
|
+
if (!settle) return;
|
|
521
|
+
const el = containerRef.current?.querySelector("[data-kanban-overlay]") as HTMLElement | null;
|
|
522
|
+
if (!el || typeof requestAnimationFrame === "undefined") {
|
|
523
|
+
setSettle(null);
|
|
524
|
+
return;
|
|
525
|
+
}
|
|
526
|
+
let last: string | null = null;
|
|
527
|
+
let stableFrames = 0;
|
|
528
|
+
let raf = 0;
|
|
529
|
+
const check = () => {
|
|
530
|
+
const current = getComputedStyle(el).transform;
|
|
531
|
+
if (current === last) stableFrames += 1;
|
|
532
|
+
else {
|
|
533
|
+
stableFrames = 0;
|
|
534
|
+
last = current;
|
|
535
|
+
}
|
|
536
|
+
if (stableFrames >= 3) {
|
|
537
|
+
setSettle(null);
|
|
538
|
+
return;
|
|
539
|
+
}
|
|
540
|
+
raf = requestAnimationFrame(check);
|
|
541
|
+
};
|
|
542
|
+
raf = requestAnimationFrame(check);
|
|
543
|
+
return () => cancelAnimationFrame(raf);
|
|
544
|
+
}, [settle]);
|
|
545
|
+
|
|
546
|
+
// ── Pointer drag session ────────────────────────────────────
|
|
547
|
+
|
|
548
|
+
const beginDrag = useCallback(
|
|
549
|
+
(
|
|
550
|
+
item: T,
|
|
551
|
+
columnId: string,
|
|
552
|
+
index: number,
|
|
553
|
+
cardEl: HTMLElement,
|
|
554
|
+
clientX: number,
|
|
555
|
+
clientY: number,
|
|
556
|
+
): boolean => {
|
|
557
|
+
const wrapper = cardEl.closest("[data-index]") as HTMLElement | null;
|
|
558
|
+
const container = containerRef.current;
|
|
559
|
+
if (!wrapper || !container) return false;
|
|
560
|
+
const wrapperRect = wrapper.getBoundingClientRect();
|
|
561
|
+
const cardRect = cardEl.getBoundingClientRect();
|
|
562
|
+
const containerRect = container.getBoundingClientRect();
|
|
563
|
+
grabOffsetRef.current = { x: clientX - cardRect.left, y: clientY - cardRect.top };
|
|
564
|
+
pointerRef.current = { x: clientX, y: clientY };
|
|
565
|
+
hoverColumnRef.current = columnId;
|
|
566
|
+
const session: DragSession<T> = {
|
|
567
|
+
mode: "pointer",
|
|
568
|
+
item,
|
|
569
|
+
itemKey: getItemKey ? getItemKey(item, index) : undefined,
|
|
570
|
+
itemLabel: getItemLabel?.(item) ?? t("Card"),
|
|
571
|
+
sourceColumnId: columnId,
|
|
572
|
+
sourceIndex: index,
|
|
573
|
+
size: wrapperRect.height,
|
|
574
|
+
width: cardRect.width,
|
|
575
|
+
height: cardRect.height,
|
|
576
|
+
target: { columnId, index },
|
|
577
|
+
initialPos: {
|
|
578
|
+
x: cardRect.left - containerRect.left,
|
|
579
|
+
y: cardRect.top - containerRect.top,
|
|
580
|
+
},
|
|
581
|
+
};
|
|
582
|
+
setSettle(null);
|
|
583
|
+
setDrag(session);
|
|
584
|
+
dragRef.current = session;
|
|
585
|
+
announce(describeDragState("lift", session, board, session.itemLabel));
|
|
586
|
+
startAutoScroll();
|
|
587
|
+
return true;
|
|
588
|
+
},
|
|
589
|
+
[announce, board, getItemKey, getItemLabel, startAutoScroll, t],
|
|
590
|
+
);
|
|
591
|
+
|
|
592
|
+
const handleCardPointerDown = useCallback(
|
|
593
|
+
(item: T, columnId: string, index: number, e: any) => {
|
|
594
|
+
if (!canDrag || typeof window === "undefined") return;
|
|
595
|
+
if (e.button != null && e.button !== 0) return;
|
|
596
|
+
if (dragRef.current) return;
|
|
597
|
+
sessionCleanupRef.current?.();
|
|
598
|
+
|
|
599
|
+
const cardEl = e.currentTarget as HTMLElement;
|
|
600
|
+
const startX = e.clientX as number;
|
|
601
|
+
const startY = e.clientY as number;
|
|
602
|
+
const pointerType: string = e.pointerType ?? "mouse";
|
|
603
|
+
let lifted = false;
|
|
604
|
+
let longPressTimer: ReturnType<typeof setTimeout> | null = null;
|
|
605
|
+
let prevUserSelect = "";
|
|
606
|
+
let prevCursor = "";
|
|
607
|
+
|
|
608
|
+
const lift = (x: number, y: number) => {
|
|
609
|
+
if (lifted) return;
|
|
610
|
+
lifted = beginDrag(item, columnId, index, cardEl, x, y);
|
|
611
|
+
if (!lifted) return;
|
|
612
|
+
prevUserSelect = document.body.style.userSelect;
|
|
613
|
+
document.body.style.userSelect = "none";
|
|
614
|
+
prevCursor = document.documentElement.style.cursor;
|
|
615
|
+
document.documentElement.style.cursor = "grabbing";
|
|
616
|
+
};
|
|
617
|
+
|
|
618
|
+
const teardown = () => {
|
|
619
|
+
if (longPressTimer != null) clearTimeout(longPressTimer);
|
|
620
|
+
window.removeEventListener("pointermove", onMove);
|
|
621
|
+
window.removeEventListener("pointerup", onUp);
|
|
622
|
+
window.removeEventListener("pointercancel", onCancel);
|
|
623
|
+
window.removeEventListener("keydown", onKey, true);
|
|
624
|
+
window.removeEventListener("touchmove", onTouchMove);
|
|
625
|
+
window.removeEventListener("contextmenu", onContextMenu, true);
|
|
626
|
+
sessionCleanupRef.current = null;
|
|
627
|
+
if (lifted) {
|
|
628
|
+
document.body.style.userSelect = prevUserSelect;
|
|
629
|
+
document.documentElement.style.cursor = prevCursor;
|
|
630
|
+
suppressClickRef.current = true;
|
|
631
|
+
setTimeout(() => {
|
|
632
|
+
suppressClickRef.current = false;
|
|
633
|
+
}, 0);
|
|
634
|
+
}
|
|
635
|
+
};
|
|
636
|
+
|
|
637
|
+
const onMove = (me: PointerEvent) => {
|
|
638
|
+
pointerRef.current = { x: me.clientX, y: me.clientY };
|
|
639
|
+
if (!lifted) {
|
|
640
|
+
const travelled = Math.hypot(me.clientX - startX, me.clientY - startY);
|
|
641
|
+
if (pointerType === "mouse") {
|
|
642
|
+
if (travelled >= DRAG_THRESHOLD_PX) lift(me.clientX, me.clientY);
|
|
643
|
+
} else if (travelled >= DRAG_THRESHOLD_PX) {
|
|
644
|
+
// Finger moved before the hold elapsed — this is a scroll, not a drag.
|
|
645
|
+
teardown();
|
|
646
|
+
}
|
|
647
|
+
if (!lifted) return;
|
|
648
|
+
}
|
|
649
|
+
const containerRect = containerRef.current?.getBoundingClientRect();
|
|
650
|
+
overlayApiRef.current?.setPointer(
|
|
651
|
+
me.clientX - (containerRect?.left ?? 0) - grabOffsetRef.current.x,
|
|
652
|
+
me.clientY - (containerRect?.top ?? 0) - grabOffsetRef.current.y,
|
|
653
|
+
);
|
|
654
|
+
const session = dragRef.current;
|
|
655
|
+
if (!session) return;
|
|
656
|
+
const target = hitTest(me.clientX, me.clientY, session);
|
|
657
|
+
setDrag((prev) =>
|
|
658
|
+
prev && (prev.target.columnId !== target.columnId || prev.target.index !== target.index)
|
|
659
|
+
? { ...prev, target }
|
|
660
|
+
: prev,
|
|
661
|
+
);
|
|
662
|
+
};
|
|
663
|
+
|
|
664
|
+
const onUp = () => {
|
|
665
|
+
const wasLifted = lifted;
|
|
666
|
+
teardown();
|
|
667
|
+
if (wasLifted) endDrag(true);
|
|
668
|
+
};
|
|
669
|
+
|
|
670
|
+
const onCancel = () => {
|
|
671
|
+
const wasLifted = lifted;
|
|
672
|
+
teardown();
|
|
673
|
+
if (wasLifted) endDrag(false);
|
|
674
|
+
};
|
|
675
|
+
|
|
676
|
+
const onKey = (ke: KeyboardEvent) => {
|
|
677
|
+
if (ke.key !== "Escape") return;
|
|
678
|
+
ke.stopPropagation();
|
|
679
|
+
const wasLifted = lifted;
|
|
680
|
+
teardown();
|
|
681
|
+
if (wasLifted) endDrag(false);
|
|
682
|
+
};
|
|
683
|
+
|
|
684
|
+
// While lifted, claim touch moves so the page/column does not scroll
|
|
685
|
+
// out from under the drag (registered non-passive on purpose).
|
|
686
|
+
const onTouchMove = (te: TouchEvent) => {
|
|
687
|
+
if (lifted) te.preventDefault();
|
|
688
|
+
};
|
|
689
|
+
const onContextMenu = (ce: Event) => {
|
|
690
|
+
if (lifted || longPressTimer != null) ce.preventDefault();
|
|
691
|
+
};
|
|
692
|
+
|
|
693
|
+
window.addEventListener("pointermove", onMove);
|
|
694
|
+
window.addEventListener("pointerup", onUp);
|
|
695
|
+
window.addEventListener("pointercancel", onCancel);
|
|
696
|
+
window.addEventListener("keydown", onKey, true);
|
|
697
|
+
window.addEventListener("touchmove", onTouchMove, { passive: false });
|
|
698
|
+
window.addEventListener("contextmenu", onContextMenu, true);
|
|
699
|
+
sessionCleanupRef.current = () => {
|
|
700
|
+
const wasLifted = lifted;
|
|
701
|
+
teardown();
|
|
702
|
+
if (wasLifted) endDrag(false);
|
|
703
|
+
};
|
|
704
|
+
|
|
705
|
+
if (pointerType !== "mouse") {
|
|
706
|
+
longPressTimer = setTimeout(() => {
|
|
707
|
+
longPressTimer = null;
|
|
708
|
+
const p = pointerRef.current;
|
|
709
|
+
lift(p.x || startX, p.y || startY);
|
|
710
|
+
}, TOUCH_LONG_PRESS_MS);
|
|
711
|
+
pointerRef.current = { x: startX, y: startY };
|
|
712
|
+
}
|
|
713
|
+
},
|
|
714
|
+
[beginDrag, canDrag, endDrag, hitTest],
|
|
715
|
+
);
|
|
716
|
+
|
|
717
|
+
// ── Keyboard drag (WAI-ARIA pattern) ────────────────────────
|
|
718
|
+
|
|
719
|
+
const keyboardOverlayPos = useCallback(
|
|
720
|
+
(session: DragSession<T>): { x: number; y: number } | undefined =>
|
|
721
|
+
gapRectInBoard(session.target.columnId, session.target.index, session) ?? undefined,
|
|
722
|
+
[gapRectInBoard],
|
|
723
|
+
);
|
|
724
|
+
|
|
725
|
+
const liftFocusedCard = useCallback(() => {
|
|
726
|
+
if (!canDrag || dragRef.current) return false;
|
|
727
|
+
const column = columns[focusedCol];
|
|
728
|
+
const item = column?.items[focusedCard];
|
|
729
|
+
if (!column || item == null) return false;
|
|
730
|
+
const kb = keyboardLift(board, column.id, focusedCard);
|
|
731
|
+
if (!kb) return false;
|
|
732
|
+
const handle = columnHandles.current.get(column.id);
|
|
733
|
+
const wrapper = handle?.scrollEl?.querySelector(
|
|
734
|
+
`[data-index="${focusedCard}"]`,
|
|
735
|
+
) as HTMLElement | null;
|
|
736
|
+
const cardEl = (wrapper?.firstElementChild as HTMLElement | null) ?? wrapper;
|
|
737
|
+
if (!wrapper || !cardEl) return false;
|
|
738
|
+
const wrapperRect = wrapper.getBoundingClientRect();
|
|
739
|
+
const cardRect = cardEl.getBoundingClientRect();
|
|
740
|
+
const session: DragSession<T> = {
|
|
741
|
+
mode: "keyboard",
|
|
742
|
+
item,
|
|
743
|
+
itemKey: getItemKey ? getItemKey(item, focusedCard) : undefined,
|
|
744
|
+
itemLabel: getItemLabel?.(item) ?? t("Card"),
|
|
745
|
+
sourceColumnId: column.id,
|
|
746
|
+
sourceIndex: focusedCard,
|
|
747
|
+
size: wrapperRect.height,
|
|
748
|
+
width: cardRect.width,
|
|
749
|
+
height: cardRect.height,
|
|
750
|
+
target: kb.target,
|
|
751
|
+
};
|
|
752
|
+
session.keyboardPos = keyboardOverlayPos(session);
|
|
753
|
+
setSettle(null);
|
|
754
|
+
setDrag(session);
|
|
755
|
+
dragRef.current = session;
|
|
756
|
+
announce(describeDragState("lift", session, board, session.itemLabel));
|
|
757
|
+
return true;
|
|
758
|
+
}, [
|
|
759
|
+
announce,
|
|
760
|
+
board,
|
|
761
|
+
canDrag,
|
|
762
|
+
columns,
|
|
763
|
+
focusedCard,
|
|
764
|
+
focusedCol,
|
|
765
|
+
getItemKey,
|
|
766
|
+
getItemLabel,
|
|
767
|
+
keyboardOverlayPos,
|
|
768
|
+
t,
|
|
769
|
+
]);
|
|
770
|
+
|
|
771
|
+
const moveKeyboardDrag = useCallback(
|
|
772
|
+
(direction: "up" | "down" | "left" | "right") => {
|
|
773
|
+
const session = dragRef.current;
|
|
774
|
+
if (!session || session.mode !== "keyboard") return false;
|
|
775
|
+
const next = keyboardMove(session, board, direction);
|
|
776
|
+
if (next === session) return true; // boundary no-op still swallows the key
|
|
777
|
+
const updated: DragSession<T> = { ...session, target: next.target };
|
|
778
|
+
const handle = columnHandles.current.get(next.target.columnId);
|
|
779
|
+
handle?.scrollToIndex(next.target.index);
|
|
780
|
+
updated.keyboardPos = keyboardOverlayPos(updated);
|
|
781
|
+
setDrag(updated);
|
|
782
|
+
dragRef.current = updated;
|
|
783
|
+
announce(describeDragState("move", updated, board, updated.itemLabel));
|
|
784
|
+
// Recompute after the virtualizer applies the scroll so the overlay
|
|
785
|
+
// lands on the final gap rect.
|
|
786
|
+
requestAnimationFrame(() => {
|
|
787
|
+
const current = dragRef.current;
|
|
788
|
+
if (!current || current.mode !== "keyboard") return;
|
|
789
|
+
const pos = keyboardOverlayPos(current);
|
|
790
|
+
if (pos) {
|
|
791
|
+
const moved = { ...current, keyboardPos: pos };
|
|
792
|
+
setDrag(moved);
|
|
793
|
+
dragRef.current = moved;
|
|
794
|
+
}
|
|
795
|
+
});
|
|
796
|
+
return true;
|
|
797
|
+
},
|
|
798
|
+
[announce, board, keyboardOverlayPos],
|
|
799
|
+
);
|
|
800
|
+
|
|
801
|
+
// ── Hotkeys ─────────────────────────────────────────────────
|
|
802
|
+
|
|
134
803
|
const hotkeyOpts = {
|
|
135
804
|
target: containerRef as React.RefObject<HTMLElement | null>,
|
|
136
805
|
};
|
|
@@ -138,6 +807,7 @@ export function Kanban<T>({
|
|
|
138
807
|
useHotkey(
|
|
139
808
|
hotkeyOverrides?.nextColumn ?? "ArrowRight",
|
|
140
809
|
() => {
|
|
810
|
+
if (moveKeyboardDrag("right")) return;
|
|
141
811
|
setFocusedCol((prev) => {
|
|
142
812
|
const next = prev < 0 ? 0 : Math.min(prev + 1, columns.length - 1);
|
|
143
813
|
const colItems = columns[next]?.items ?? [];
|
|
@@ -151,6 +821,7 @@ export function Kanban<T>({
|
|
|
151
821
|
useHotkey(
|
|
152
822
|
hotkeyOverrides?.prevColumn ?? "ArrowLeft",
|
|
153
823
|
() => {
|
|
824
|
+
if (moveKeyboardDrag("left")) return;
|
|
154
825
|
setFocusedCol((prev) => {
|
|
155
826
|
const next = prev < 0 ? columns.length - 1 : Math.max(prev - 1, 0);
|
|
156
827
|
const colItems = columns[next]?.items ?? [];
|
|
@@ -164,6 +835,7 @@ export function Kanban<T>({
|
|
|
164
835
|
useHotkey(
|
|
165
836
|
hotkeyOverrides?.nextCard ?? "ArrowDown",
|
|
166
837
|
() => {
|
|
838
|
+
if (moveKeyboardDrag("down")) return;
|
|
167
839
|
if (focusedCol < 0) {
|
|
168
840
|
setFocusedCol(0);
|
|
169
841
|
setFocusedCard(0);
|
|
@@ -178,6 +850,7 @@ export function Kanban<T>({
|
|
|
178
850
|
useHotkey(
|
|
179
851
|
hotkeyOverrides?.prevCard ?? "ArrowUp",
|
|
180
852
|
() => {
|
|
853
|
+
if (moveKeyboardDrag("up")) return;
|
|
181
854
|
if (focusedCol < 0) {
|
|
182
855
|
setFocusedCol(0);
|
|
183
856
|
setFocusedCard(0);
|
|
@@ -192,6 +865,10 @@ export function Kanban<T>({
|
|
|
192
865
|
useHotkey(
|
|
193
866
|
hotkeyOverrides?.select ?? "Enter",
|
|
194
867
|
() => {
|
|
868
|
+
if (dragRef.current?.mode === "keyboard") {
|
|
869
|
+
endDrag(true);
|
|
870
|
+
return;
|
|
871
|
+
}
|
|
195
872
|
if (focusedCol >= 0 && focusedCard >= 0) {
|
|
196
873
|
const col = columns[focusedCol];
|
|
197
874
|
const item = col?.items[focusedCard];
|
|
@@ -203,16 +880,60 @@ export function Kanban<T>({
|
|
|
203
880
|
hotkeyOpts,
|
|
204
881
|
);
|
|
205
882
|
|
|
883
|
+
useHotkey(
|
|
884
|
+
hotkeyOverrides?.lift ?? "Space",
|
|
885
|
+
() => {
|
|
886
|
+
if (dragRef.current?.mode === "keyboard") {
|
|
887
|
+
endDrag(true);
|
|
888
|
+
return;
|
|
889
|
+
}
|
|
890
|
+
liftFocusedCard();
|
|
891
|
+
},
|
|
892
|
+
hotkeyOpts,
|
|
893
|
+
);
|
|
894
|
+
|
|
895
|
+
useHotkey(
|
|
896
|
+
hotkeyOverrides?.cancel ?? "Escape",
|
|
897
|
+
() => {
|
|
898
|
+
if (dragRef.current?.mode === "keyboard") endDrag(false);
|
|
899
|
+
},
|
|
900
|
+
hotkeyOpts,
|
|
901
|
+
);
|
|
902
|
+
|
|
903
|
+
const boardLoading = !error && isLoading && columns.every((c) => c.items.length === 0);
|
|
904
|
+
const boardEmpty = !error && columns.length === 0;
|
|
905
|
+
|
|
906
|
+
const dragContext: KanbanDragRenderContext | null = drag
|
|
907
|
+
? {
|
|
908
|
+
sourceColumnId: drag.sourceColumnId,
|
|
909
|
+
sourceIndex: drag.sourceIndex,
|
|
910
|
+
size: drag.size,
|
|
911
|
+
target: drag.target,
|
|
912
|
+
keyboard: drag.mode === "keyboard",
|
|
913
|
+
}
|
|
914
|
+
: null;
|
|
915
|
+
|
|
916
|
+
const overlaySession = drag ?? settle;
|
|
917
|
+
|
|
206
918
|
return (
|
|
207
|
-
<
|
|
919
|
+
<AsyncBoundary
|
|
920
|
+
loading={boardLoading}
|
|
921
|
+
empty={boardEmpty}
|
|
922
|
+
error={error}
|
|
923
|
+
onRetry={onRetry}
|
|
924
|
+
layout="kanban"
|
|
925
|
+
emptyTitle="No columns"
|
|
926
|
+
{...stackProps}
|
|
927
|
+
>
|
|
208
928
|
<View
|
|
209
929
|
ref={containerRef as any}
|
|
210
930
|
tabIndex={0}
|
|
211
931
|
role="grid"
|
|
212
|
-
aria-label="Kanban board"
|
|
932
|
+
aria-label={t("Kanban board")}
|
|
213
933
|
outlineWidth={0}
|
|
934
|
+
position="relative"
|
|
214
935
|
>
|
|
215
|
-
<ScrollView horizontal showsHorizontalScrollIndicator={false}>
|
|
936
|
+
<ScrollView ref={boardScrollRef} horizontal showsHorizontalScrollIndicator={false}>
|
|
216
937
|
<XStack {...knobProps.gap}>
|
|
217
938
|
{columns.map((column, colIndex) => (
|
|
218
939
|
<KanbanColumnView
|
|
@@ -229,18 +950,148 @@ export function Kanban<T>({
|
|
|
229
950
|
overscan={overscan}
|
|
230
951
|
emptyColumnMessage={emptyColumnMessage}
|
|
231
952
|
onCardSelect={onCardSelect}
|
|
953
|
+
onCardPointerDown={canDrag ? handleCardPointerDown : undefined}
|
|
954
|
+
suppressClickRef={suppressClickRef}
|
|
955
|
+
registerColumn={registerColumn}
|
|
956
|
+
drag={dragContext}
|
|
957
|
+
settlingKey={settle?.itemKey}
|
|
232
958
|
onLoadMore={onLoadMore}
|
|
959
|
+
getItemKey={getItemKey}
|
|
233
960
|
hasMore={hasMore}
|
|
234
961
|
isLoading={isLoading}
|
|
235
962
|
/>
|
|
236
963
|
))}
|
|
237
964
|
</XStack>
|
|
238
965
|
</ScrollView>
|
|
966
|
+
|
|
967
|
+
{overlaySession && (
|
|
968
|
+
<KanbanDragOverlay
|
|
969
|
+
phase={drag ? drag.mode : "settling"}
|
|
970
|
+
width={overlaySession.width}
|
|
971
|
+
height={overlaySession.height}
|
|
972
|
+
initialPos={drag?.initialPos}
|
|
973
|
+
keyboardPos={drag?.keyboardPos}
|
|
974
|
+
settleTo={settle?.to}
|
|
975
|
+
transition={knobProps.transition}
|
|
976
|
+
registerApi={(api) => {
|
|
977
|
+
overlayApiRef.current = api;
|
|
978
|
+
}}
|
|
979
|
+
knobRadius={knobProps.borderRadius}
|
|
980
|
+
sizeToken={knobProps.sizeToken}
|
|
981
|
+
>
|
|
982
|
+
{renderCard(overlaySession.item)}
|
|
983
|
+
</KanbanDragOverlay>
|
|
984
|
+
)}
|
|
985
|
+
|
|
986
|
+
{/* Screen-reader drag announcements (WAI-ARIA drag pattern) */}
|
|
987
|
+
<View
|
|
988
|
+
aria-live="assertive"
|
|
989
|
+
aria-atomic
|
|
990
|
+
data-kanban-announcer
|
|
991
|
+
position="absolute"
|
|
992
|
+
width={1}
|
|
993
|
+
height={1}
|
|
994
|
+
overflow="hidden"
|
|
995
|
+
opacity={0}
|
|
996
|
+
pointerEvents="none"
|
|
997
|
+
>
|
|
998
|
+
<Text>{announcement}</Text>
|
|
999
|
+
</View>
|
|
1000
|
+
</View>
|
|
1001
|
+
</AsyncBoundary>
|
|
1002
|
+
);
|
|
1003
|
+
}
|
|
1004
|
+
|
|
1005
|
+
// ── Drag overlay ──────────────────────────────────────────────
|
|
1006
|
+
|
|
1007
|
+
interface KanbanDragOverlayProps {
|
|
1008
|
+
phase: "pointer" | "keyboard" | "settling";
|
|
1009
|
+
width: number;
|
|
1010
|
+
height: number;
|
|
1011
|
+
initialPos?: { x: number; y: number };
|
|
1012
|
+
keyboardPos?: { x: number; y: number };
|
|
1013
|
+
settleTo?: { x: number; y: number };
|
|
1014
|
+
transition: any;
|
|
1015
|
+
registerApi: (api: OverlayApi) => void;
|
|
1016
|
+
knobRadius: ResolvedKnobProps["borderRadius"];
|
|
1017
|
+
sizeToken: any;
|
|
1018
|
+
children: React.ReactNode;
|
|
1019
|
+
}
|
|
1020
|
+
|
|
1021
|
+
/**
|
|
1022
|
+
* Board-level clone of the dragged card. Pointer mode tracks 1:1 with no
|
|
1023
|
+
* tween (A-GESTURE); keyboard steps and the drop/cancel settle tween with the
|
|
1024
|
+
* animation knob (Axiom 4: leaps tween, carried values track).
|
|
1025
|
+
*/
|
|
1026
|
+
function KanbanDragOverlay({
|
|
1027
|
+
phase,
|
|
1028
|
+
width,
|
|
1029
|
+
height,
|
|
1030
|
+
initialPos,
|
|
1031
|
+
keyboardPos,
|
|
1032
|
+
settleTo,
|
|
1033
|
+
transition,
|
|
1034
|
+
registerApi,
|
|
1035
|
+
knobRadius,
|
|
1036
|
+
sizeToken,
|
|
1037
|
+
children,
|
|
1038
|
+
}: KanbanDragOverlayProps) {
|
|
1039
|
+
const [pointerPos, setPointerPos] = useState<{ x: number; y: number } | null>(initialPos ?? null);
|
|
1040
|
+
|
|
1041
|
+
useEffect(() => {
|
|
1042
|
+
registerApi({
|
|
1043
|
+
setPointer: (x: number, y: number) => setPointerPos({ x, y }),
|
|
1044
|
+
});
|
|
1045
|
+
}, [registerApi]);
|
|
1046
|
+
|
|
1047
|
+
const pos =
|
|
1048
|
+
phase === "settling" && settleTo
|
|
1049
|
+
? settleTo
|
|
1050
|
+
: phase === "keyboard" && keyboardPos
|
|
1051
|
+
? keyboardPos
|
|
1052
|
+
: (pointerPos ?? initialPos ?? keyboardPos ?? settleTo ?? null);
|
|
1053
|
+
if (!pos) return null;
|
|
1054
|
+
|
|
1055
|
+
const lifted = phase !== "settling";
|
|
1056
|
+
|
|
1057
|
+
return (
|
|
1058
|
+
<View
|
|
1059
|
+
data-kanban-overlay
|
|
1060
|
+
data-kanban-overlay-phase={phase}
|
|
1061
|
+
position="absolute"
|
|
1062
|
+
top={0}
|
|
1063
|
+
left={0}
|
|
1064
|
+
x={pos.x}
|
|
1065
|
+
y={pos.y}
|
|
1066
|
+
width={width}
|
|
1067
|
+
height={height}
|
|
1068
|
+
pointerEvents="none"
|
|
1069
|
+
zIndex={1000}
|
|
1070
|
+
// 1:1 while the pointer carries the card; tween only for the discrete
|
|
1071
|
+
// keyboard steps and the settle leap (LC-25).
|
|
1072
|
+
transition={phase === "pointer" ? "none" : transition}
|
|
1073
|
+
>
|
|
1074
|
+
<View
|
|
1075
|
+
transition={transition}
|
|
1076
|
+
enterStyle={{ scale: 1, rotate: "0deg" }}
|
|
1077
|
+
scale={lifted ? 1.03 : 1}
|
|
1078
|
+
rotate={lifted ? "2.5deg" : "0deg"}
|
|
1079
|
+
{...(lifted ? LIFT_SHADOW : undefined)}
|
|
1080
|
+
{...knobRadius}
|
|
1081
|
+
backgroundColor="$background"
|
|
1082
|
+
overflow="hidden"
|
|
1083
|
+
height="100%"
|
|
1084
|
+
>
|
|
1085
|
+
<Card size={sizeToken} borderWidth={0} backgroundColor="transparent" height="100%">
|
|
1086
|
+
{children}
|
|
1087
|
+
</Card>
|
|
239
1088
|
</View>
|
|
240
|
-
</
|
|
1089
|
+
</View>
|
|
241
1090
|
);
|
|
242
1091
|
}
|
|
243
1092
|
|
|
1093
|
+
// ── Column ────────────────────────────────────────────────────
|
|
1094
|
+
|
|
244
1095
|
interface KanbanColumnViewProps<T> {
|
|
245
1096
|
kanbanId: string;
|
|
246
1097
|
column: KanbanColumn<T>;
|
|
@@ -254,7 +1105,13 @@ interface KanbanColumnViewProps<T> {
|
|
|
254
1105
|
overscan: number;
|
|
255
1106
|
emptyColumnMessage: string;
|
|
256
1107
|
onCardSelect?: (item: T, columnId: string) => void;
|
|
1108
|
+
onCardPointerDown?: (item: T, columnId: string, index: number, e: any) => void;
|
|
1109
|
+
suppressClickRef: React.MutableRefObject<boolean>;
|
|
1110
|
+
registerColumn: (id: string, handle: ColumnHandle | null) => void;
|
|
1111
|
+
drag: KanbanDragRenderContext | null;
|
|
1112
|
+
settlingKey?: string | number;
|
|
257
1113
|
onLoadMore?: () => void;
|
|
1114
|
+
getItemKey?: (item: T, index: number) => string | number;
|
|
258
1115
|
hasMore?: boolean;
|
|
259
1116
|
isLoading?: boolean;
|
|
260
1117
|
}
|
|
@@ -272,21 +1129,70 @@ function KanbanColumnView<T>({
|
|
|
272
1129
|
overscan,
|
|
273
1130
|
emptyColumnMessage,
|
|
274
1131
|
onCardSelect,
|
|
1132
|
+
onCardPointerDown,
|
|
1133
|
+
suppressClickRef,
|
|
1134
|
+
registerColumn,
|
|
1135
|
+
drag,
|
|
1136
|
+
settlingKey,
|
|
275
1137
|
onLoadMore,
|
|
1138
|
+
getItemKey,
|
|
276
1139
|
hasMore,
|
|
277
1140
|
isLoading,
|
|
278
1141
|
}: KanbanColumnViewProps<T>) {
|
|
1142
|
+
const { t } = useTranslation();
|
|
279
1143
|
const { knobProps } = useResolvedKnobs();
|
|
280
1144
|
const parentRef = useRef<HTMLDivElement>(null);
|
|
1145
|
+
// DG-ST-04: hide column counts when a parent AsyncBoundary is in error.
|
|
1146
|
+
const itemCount = useAsyncCount(column.items.length);
|
|
281
1147
|
|
|
282
1148
|
const virtualizer = useVirtualizer({
|
|
283
1149
|
count: column.items.length,
|
|
284
1150
|
getScrollElement: () => parentRef.current,
|
|
285
1151
|
estimateSize: () => estimateSize,
|
|
286
1152
|
overscan,
|
|
1153
|
+
...(getItemKey && {
|
|
1154
|
+
getItemKey: (index: number) => getItemKey(column.items[index], index),
|
|
1155
|
+
}),
|
|
287
1156
|
});
|
|
288
1157
|
|
|
289
1158
|
const isActiveColumn = columnIndex === focusedColumnIndex;
|
|
1159
|
+
const isSource = drag?.sourceColumnId === column.id;
|
|
1160
|
+
const gapIndex = drag?.target.columnId === column.id ? drag.target.index : null;
|
|
1161
|
+
const isDropTarget = gapIndex != null;
|
|
1162
|
+
|
|
1163
|
+
// FLIP readiness gate: first paint (and the virtualizer's initial
|
|
1164
|
+
// measurement corrections) must not wiggle into place (Axiom 4 mount rule).
|
|
1165
|
+
const [flipReady, setFlipReady] = useState(false);
|
|
1166
|
+
useEffect(() => {
|
|
1167
|
+
let raf2 = 0;
|
|
1168
|
+
const raf1 = requestAnimationFrame(() => {
|
|
1169
|
+
raf2 = requestAnimationFrame(() => setFlipReady(true));
|
|
1170
|
+
});
|
|
1171
|
+
return () => {
|
|
1172
|
+
cancelAnimationFrame(raf1);
|
|
1173
|
+
cancelAnimationFrame(raf2);
|
|
1174
|
+
};
|
|
1175
|
+
}, []);
|
|
1176
|
+
|
|
1177
|
+
// Register geometry accessors for hit-testing / auto-scroll / settle math.
|
|
1178
|
+
useEffect(() => {
|
|
1179
|
+
registerColumn(column.id, {
|
|
1180
|
+
scrollEl: parentRef.current,
|
|
1181
|
+
getVirtualState: () => ({
|
|
1182
|
+
items: virtualizer
|
|
1183
|
+
.getVirtualItems()
|
|
1184
|
+
.map((v) => ({ index: v.index, start: v.start, size: v.size })),
|
|
1185
|
+
totalSize: virtualizer.getTotalSize(),
|
|
1186
|
+
count: column.items.length,
|
|
1187
|
+
}),
|
|
1188
|
+
scrollToIndex: (index: number) => {
|
|
1189
|
+
if (column.items.length > 0) {
|
|
1190
|
+
virtualizer.scrollToIndex(Math.min(index, column.items.length - 1), { align: "auto" });
|
|
1191
|
+
}
|
|
1192
|
+
},
|
|
1193
|
+
});
|
|
1194
|
+
return () => registerColumn(column.id, null);
|
|
1195
|
+
}, [registerColumn, column.id, column.items.length, virtualizer]);
|
|
290
1196
|
|
|
291
1197
|
// Scroll to focused card within active column
|
|
292
1198
|
useEffect(() => {
|
|
@@ -313,15 +1219,108 @@ function KanbanColumnView<T>({
|
|
|
313
1219
|
return () => el.removeEventListener("scroll", handleScroll);
|
|
314
1220
|
}, [handleScroll]);
|
|
315
1221
|
|
|
1222
|
+
// Enter animations only for keys never seen on this board instance —
|
|
1223
|
+
// virtualization remounts on scroll must not replay them (Axiom 4).
|
|
1224
|
+
const seenKeysRef = useRef(new Set<string | number>());
|
|
1225
|
+
|
|
1226
|
+
// Exit layer: cards removed from the data get a paired fade-out at their
|
|
1227
|
+
// last known slot (LC-24 enter/exit pairing). Scroll-driven unmounts are
|
|
1228
|
+
// not data removals and are skipped.
|
|
1229
|
+
const lastRenderedRef = useRef(new Map<string | number, { item: T; y: number; size: number }>());
|
|
1230
|
+
const prevKeysRef = useRef<Set<string | number> | null>(null);
|
|
1231
|
+
const [leaving, setLeaving] = useState<
|
|
1232
|
+
{ key: string | number; item: T; y: number; size: number }[]
|
|
1233
|
+
>([]);
|
|
1234
|
+
|
|
1235
|
+
const currentKeys = useMemo(() => {
|
|
1236
|
+
const keys = new Set<string | number>();
|
|
1237
|
+
column.items.forEach((item, index) => keys.add(getItemKey ? getItemKey(item, index) : index));
|
|
1238
|
+
return keys;
|
|
1239
|
+
}, [column.items, getItemKey]);
|
|
1240
|
+
|
|
1241
|
+
useEffect(() => {
|
|
1242
|
+
const prev = prevKeysRef.current;
|
|
1243
|
+
prevKeysRef.current = currentKeys;
|
|
1244
|
+
if (!prev || !getItemKey) return;
|
|
1245
|
+
const gone: { key: string | number; item: T; y: number; size: number }[] = [];
|
|
1246
|
+
for (const key of prev) {
|
|
1247
|
+
if (currentKeys.has(key) || key === settlingKey) continue;
|
|
1248
|
+
const snapshot = lastRenderedRef.current.get(key);
|
|
1249
|
+
if (snapshot) gone.push({ key, ...snapshot });
|
|
1250
|
+
}
|
|
1251
|
+
if (gone.length > 0) {
|
|
1252
|
+
setLeaving((existing) => {
|
|
1253
|
+
const seen = new Set(existing.map((l) => l.key));
|
|
1254
|
+
return [...existing, ...gone.filter((g) => !seen.has(g.key))];
|
|
1255
|
+
});
|
|
1256
|
+
}
|
|
1257
|
+
}, [currentKeys, getItemKey, settlingKey]);
|
|
1258
|
+
|
|
1259
|
+
useEffect(() => {
|
|
1260
|
+
if (leaving.length === 0) return;
|
|
1261
|
+
const raf = requestAnimationFrame(() => setLeaving([]));
|
|
1262
|
+
return () => cancelAnimationFrame(raf);
|
|
1263
|
+
}, [leaving]);
|
|
1264
|
+
|
|
1265
|
+
const virtualItems = virtualizer.getVirtualItems();
|
|
1266
|
+
const totalSize = virtualizer.getTotalSize();
|
|
1267
|
+
const gapOpensColumn = isDropTarget && !isSource;
|
|
1268
|
+
const contentHeight = totalSize + (gapOpensColumn ? (drag?.size ?? 0) : 0);
|
|
1269
|
+
|
|
1270
|
+
const getStart = useCallback(
|
|
1271
|
+
(index: number): number => {
|
|
1272
|
+
const found = virtualItems.find((v) => v.index === index);
|
|
1273
|
+
return found ? found.start : index * estimateSize;
|
|
1274
|
+
},
|
|
1275
|
+
[virtualItems, estimateSize],
|
|
1276
|
+
);
|
|
1277
|
+
|
|
1278
|
+
const gapY =
|
|
1279
|
+
gapIndex != null && drag
|
|
1280
|
+
? gapPosition({
|
|
1281
|
+
gapIndex,
|
|
1282
|
+
sourceIndex: isSource ? drag.sourceIndex : null,
|
|
1283
|
+
count: column.items.length,
|
|
1284
|
+
size: drag.size,
|
|
1285
|
+
totalSize,
|
|
1286
|
+
getStart,
|
|
1287
|
+
})
|
|
1288
|
+
: null;
|
|
1289
|
+
|
|
1290
|
+
const isEmpty = column.items.length === 0;
|
|
1291
|
+
// Wrapper transitions: FLIP displacement + data-change jumps tween; raw
|
|
1292
|
+
// scrolling measurement corrections and first paint stay instant. During an
|
|
1293
|
+
// active drag the transition stays on so displacement tweens even while
|
|
1294
|
+
// auto-scroll runs.
|
|
1295
|
+
const wrapperTransition =
|
|
1296
|
+
drag != null
|
|
1297
|
+
? knobProps.transition
|
|
1298
|
+
: flipReady && !virtualizer.isScrolling
|
|
1299
|
+
? knobProps.transition
|
|
1300
|
+
: undefined;
|
|
1301
|
+
|
|
316
1302
|
return (
|
|
317
1303
|
<Card
|
|
318
1304
|
size={knobProps.sizeToken}
|
|
319
|
-
{...
|
|
1305
|
+
{...knobProps.borderRadius}
|
|
1306
|
+
{...{
|
|
1307
|
+
backgroundColor: isDropTarget
|
|
1308
|
+
? componentColors.interactive.background
|
|
1309
|
+
: componentColors.surface.background,
|
|
1310
|
+
}}
|
|
1311
|
+
transition={knobProps.transition}
|
|
320
1312
|
width={columnWidth}
|
|
321
1313
|
minHeight={minColumnHeight}
|
|
322
1314
|
borderWidth={isActiveColumn ? 2 : 1}
|
|
323
|
-
borderColor={
|
|
1315
|
+
borderColor={
|
|
1316
|
+
isDropTarget
|
|
1317
|
+
? componentColors.interactive.border
|
|
1318
|
+
: isActiveColumn
|
|
1319
|
+
? "$accentBackground"
|
|
1320
|
+
: "$borderColor"
|
|
1321
|
+
}
|
|
324
1322
|
overflow="hidden"
|
|
1323
|
+
data-kanban-column={column.id}
|
|
325
1324
|
>
|
|
326
1325
|
{/* Column Header */}
|
|
327
1326
|
<ListItem
|
|
@@ -332,90 +1331,210 @@ function KanbanColumnView<T>({
|
|
|
332
1331
|
) : undefined
|
|
333
1332
|
}
|
|
334
1333
|
iconAfter={
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
1334
|
+
itemCount !== undefined ? (
|
|
1335
|
+
<Text
|
|
1336
|
+
color={componentColors.text.muted}
|
|
1337
|
+
fontSize={knobProps.sizeToken}
|
|
1338
|
+
{...{ backgroundColor: componentColors.surface.background }}
|
|
1339
|
+
paddingHorizontal="$2"
|
|
1340
|
+
borderRadius={knobProps.borderRadius.borderRadius}
|
|
1341
|
+
data-async-count
|
|
1342
|
+
>
|
|
1343
|
+
{itemCount}
|
|
1344
|
+
</Text>
|
|
1345
|
+
) : undefined
|
|
344
1346
|
}
|
|
345
1347
|
size={knobProps.sizeToken}
|
|
346
1348
|
borderBottomWidth={1}
|
|
347
1349
|
borderBottomColor="$borderColor"
|
|
348
1350
|
/>
|
|
349
1351
|
|
|
350
|
-
{/* Cards
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
<View
|
|
365
|
-
ref={parentRef as any}
|
|
366
|
-
style={{
|
|
367
|
-
flex: 1,
|
|
368
|
-
overflow: "auto",
|
|
369
|
-
minHeight: minColumnHeight - 60,
|
|
370
|
-
}}
|
|
371
|
-
>
|
|
1352
|
+
{/* Cards container — always rendered so empty columns stay drop targets. */}
|
|
1353
|
+
<View
|
|
1354
|
+
ref={parentRef as any}
|
|
1355
|
+
data-kanban-column-scroll={column.id}
|
|
1356
|
+
style={{
|
|
1357
|
+
flex: 1,
|
|
1358
|
+
overflow: "auto",
|
|
1359
|
+
minHeight: minColumnHeight - 60,
|
|
1360
|
+
}}
|
|
1361
|
+
pointerEvents={drag ? ("none" as any) : undefined}
|
|
1362
|
+
>
|
|
1363
|
+
{isEmpty ? (
|
|
1364
|
+
!isDropTarget && <EmptyState compact title={emptyColumnMessage} opacity={0.5} flex={1} />
|
|
1365
|
+
) : (
|
|
372
1366
|
<View
|
|
373
1367
|
style={{
|
|
374
|
-
height:
|
|
1368
|
+
height: contentHeight,
|
|
375
1369
|
width: "100%",
|
|
376
1370
|
position: "relative",
|
|
377
1371
|
}}
|
|
378
1372
|
>
|
|
379
|
-
{
|
|
1373
|
+
{virtualItems.map((virtualItem) => {
|
|
380
1374
|
const item = column.items[virtualItem.index];
|
|
1375
|
+
const itemKey = getItemKey ? getItemKey(item, virtualItem.index) : virtualItem.index;
|
|
381
1376
|
const isFocused = isActiveColumn && focusedCardIndex === virtualItem.index;
|
|
1377
|
+
const isDragged = isSource && drag != null && virtualItem.index === drag.sourceIndex;
|
|
1378
|
+
|
|
1379
|
+
let y = virtualItem.start;
|
|
1380
|
+
let ghost = false;
|
|
1381
|
+
let hidden = false;
|
|
1382
|
+
if (drag) {
|
|
1383
|
+
if (isDragged) {
|
|
1384
|
+
if (gapIndex != null && gapY != null) {
|
|
1385
|
+
// In-column silhouette: the origin card *is* the moving gap.
|
|
1386
|
+
y = gapY;
|
|
1387
|
+
ghost = true;
|
|
1388
|
+
} else {
|
|
1389
|
+
// Target moved to another column — the origin gap closes.
|
|
1390
|
+
hidden = true;
|
|
1391
|
+
}
|
|
1392
|
+
} else {
|
|
1393
|
+
y +=
|
|
1394
|
+
siblingOffset({
|
|
1395
|
+
index: virtualItem.index,
|
|
1396
|
+
sourceIndex: isSource && drag ? drag.sourceIndex : null,
|
|
1397
|
+
gapIndex,
|
|
1398
|
+
size: drag.size,
|
|
1399
|
+
}) || 0;
|
|
1400
|
+
}
|
|
1401
|
+
}
|
|
1402
|
+
if (getItemKey && settlingKey != null && itemKey === settlingKey) {
|
|
1403
|
+
// The overlay is this card's visual while it settles into place.
|
|
1404
|
+
hidden = true;
|
|
1405
|
+
}
|
|
1406
|
+
|
|
1407
|
+
if (getItemKey) {
|
|
1408
|
+
lastRenderedRef.current.set(itemKey, {
|
|
1409
|
+
item,
|
|
1410
|
+
y: virtualItem.start,
|
|
1411
|
+
size: virtualItem.size,
|
|
1412
|
+
});
|
|
1413
|
+
}
|
|
1414
|
+
const isNew = flipReady && getItemKey != null && !seenKeysRef.current.has(itemKey);
|
|
1415
|
+
seenKeysRef.current.add(itemKey);
|
|
1416
|
+
|
|
382
1417
|
return (
|
|
383
1418
|
<View
|
|
384
1419
|
key={virtualItem.key}
|
|
385
1420
|
ref={virtualizer.measureElement as any}
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
}
|
|
1421
|
+
{...{ "data-index": virtualItem.index }}
|
|
1422
|
+
position="absolute"
|
|
1423
|
+
top={0}
|
|
1424
|
+
left={0}
|
|
1425
|
+
width="100%"
|
|
1426
|
+
y={y}
|
|
1427
|
+
padding={CARD_INSET_PX}
|
|
1428
|
+
transition={wrapperTransition}
|
|
1429
|
+
opacity={hidden ? 0 : ghost ? 0.4 : 1}
|
|
1430
|
+
pointerEvents={hidden ? ("none" as any) : undefined}
|
|
394
1431
|
>
|
|
395
1432
|
<Card
|
|
396
1433
|
id={`${kanbanId}-col-${columnIndex}-card-${virtualItem.index}`}
|
|
397
1434
|
size={knobProps.sizeToken}
|
|
1435
|
+
{...knobProps.borderRadius}
|
|
398
1436
|
elevation={knobProps.elevation}
|
|
1437
|
+
transition={knobProps.transition}
|
|
1438
|
+
{...(isNew && {
|
|
1439
|
+
enterStyle: { opacity: 0, scale: 0.97 },
|
|
1440
|
+
})}
|
|
399
1441
|
borderWidth={1}
|
|
400
|
-
borderColor="$borderColor"
|
|
1442
|
+
borderColor={ghost ? componentColors.interactive.border : "$borderColor"}
|
|
1443
|
+
borderStyle={ghost ? ("dashed" as any) : undefined}
|
|
401
1444
|
backgroundColor={isFocused ? "$accentBackground" : undefined}
|
|
402
|
-
hoverStyle={{
|
|
403
|
-
|
|
404
|
-
borderColor: "$accentBackground",
|
|
405
|
-
}}
|
|
406
|
-
pressStyle={{ scale: 0.97 }}
|
|
1445
|
+
hoverStyle={{ borderColor: "$accentBackground" }}
|
|
1446
|
+
pressStyle={{ scale: 0.98 }}
|
|
407
1447
|
overflow="hidden"
|
|
408
|
-
|
|
409
|
-
|
|
1448
|
+
data-kanban-card={String(itemKey)}
|
|
1449
|
+
{...(onCardPointerDown && { "data-kanban-draggable": "true" })}
|
|
1450
|
+
onPress={
|
|
1451
|
+
onCardSelect
|
|
1452
|
+
? () => {
|
|
1453
|
+
if (suppressClickRef.current) return;
|
|
1454
|
+
onCardSelect(item, column.id);
|
|
1455
|
+
}
|
|
1456
|
+
: undefined
|
|
1457
|
+
}
|
|
1458
|
+
cursor={onCardPointerDown ? "grab" : onCardSelect ? "pointer" : undefined}
|
|
1459
|
+
{...(onCardPointerDown && {
|
|
1460
|
+
onPointerDown: (e: any) =>
|
|
1461
|
+
onCardPointerDown(item, column.id, virtualItem.index, e),
|
|
1462
|
+
})}
|
|
410
1463
|
>
|
|
411
1464
|
{renderCard(item)}
|
|
412
1465
|
</Card>
|
|
413
1466
|
</View>
|
|
414
1467
|
);
|
|
415
1468
|
})}
|
|
1469
|
+
|
|
1470
|
+
{/* Exit layer: paired fade-out for removed cards (LC-24). */}
|
|
1471
|
+
<AnimatePresence>
|
|
1472
|
+
{leaving.map((l) => (
|
|
1473
|
+
<View
|
|
1474
|
+
key={`leaving-${String(l.key)}`}
|
|
1475
|
+
position="absolute"
|
|
1476
|
+
top={0}
|
|
1477
|
+
left={0}
|
|
1478
|
+
width="100%"
|
|
1479
|
+
y={l.y}
|
|
1480
|
+
padding={CARD_INSET_PX}
|
|
1481
|
+
pointerEvents="none"
|
|
1482
|
+
transition={knobProps.transition}
|
|
1483
|
+
exitStyle={{ opacity: 0, scale: 0.97 }}
|
|
1484
|
+
>
|
|
1485
|
+
<Card
|
|
1486
|
+
size={knobProps.sizeToken}
|
|
1487
|
+
{...knobProps.borderRadius}
|
|
1488
|
+
borderWidth={1}
|
|
1489
|
+
borderColor="$borderColor"
|
|
1490
|
+
overflow="hidden"
|
|
1491
|
+
>
|
|
1492
|
+
{renderCard(l.item)}
|
|
1493
|
+
</Card>
|
|
1494
|
+
</View>
|
|
1495
|
+
))}
|
|
1496
|
+
</AnimatePresence>
|
|
416
1497
|
</View>
|
|
417
|
-
|
|
418
|
-
|
|
1498
|
+
)}
|
|
1499
|
+
|
|
1500
|
+
{/* Insertion slot outline for cross-column targets and empty columns. */}
|
|
1501
|
+
<AnimatePresence>
|
|
1502
|
+
{drag && gapIndex != null && !isSource && (
|
|
1503
|
+
<View
|
|
1504
|
+
key="kanban-slot"
|
|
1505
|
+
data-kanban-slot={column.id}
|
|
1506
|
+
position="absolute"
|
|
1507
|
+
top={0}
|
|
1508
|
+
left={0}
|
|
1509
|
+
width="100%"
|
|
1510
|
+
y={gapY ?? 0}
|
|
1511
|
+
height={drag.size}
|
|
1512
|
+
padding={CARD_INSET_PX}
|
|
1513
|
+
pointerEvents="none"
|
|
1514
|
+
transition={knobProps.transition}
|
|
1515
|
+
enterStyle={{ opacity: 0 }}
|
|
1516
|
+
exitStyle={{ opacity: 0 }}
|
|
1517
|
+
>
|
|
1518
|
+
<View
|
|
1519
|
+
flex={1}
|
|
1520
|
+
{...knobProps.borderRadius}
|
|
1521
|
+
borderStyle="dashed"
|
|
1522
|
+
borderColor={componentColors.interactive.border}
|
|
1523
|
+
backgroundColor={componentColors.interactive.background}
|
|
1524
|
+
opacity={0.8}
|
|
1525
|
+
alignItems="center"
|
|
1526
|
+
justifyContent="center"
|
|
1527
|
+
>
|
|
1528
|
+
{isEmpty && (
|
|
1529
|
+
<Text color={componentColors.text.muted} fontSize="$2">
|
|
1530
|
+
{t("Drop here")}
|
|
1531
|
+
</Text>
|
|
1532
|
+
)}
|
|
1533
|
+
</View>
|
|
1534
|
+
</View>
|
|
1535
|
+
)}
|
|
1536
|
+
</AnimatePresence>
|
|
1537
|
+
</View>
|
|
419
1538
|
|
|
420
1539
|
{isLoading && (
|
|
421
1540
|
<YStack padding="$2" alignItems="center">
|