@multiplatform.one/components 6.7.0 → 7.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Accordion/index.cjs +213 -70
- package/dist/cjs/Accordion/index.native.js +254 -75
- package/dist/cjs/Accordion/index.native.js.map +1 -1
- package/dist/cjs/Alert/index.cjs +204 -56
- package/dist/cjs/Alert/index.native.js +211 -60
- package/dist/cjs/Alert/index.native.js.map +1 -1
- package/dist/cjs/AnimateHeight/index.cjs +166 -0
- package/dist/cjs/AnimateHeight/index.native.js +176 -0
- package/dist/cjs/AnimateHeight/index.native.js.map +1 -0
- package/dist/cjs/Avatar/getInitials.cjs +34 -0
- package/dist/cjs/Avatar/getInitials.native.js +34 -0
- package/dist/cjs/Avatar/getInitials.native.js.map +1 -1
- package/dist/cjs/Avatar/index.cjs +246 -62
- package/dist/cjs/Avatar/index.native.js +252 -68
- package/dist/cjs/Avatar/index.native.js.map +1 -1
- package/dist/cjs/Badge/index.cjs +109 -75
- package/dist/cjs/Badge/index.native.js +110 -76
- package/dist/cjs/Badge/index.native.js.map +1 -1
- package/dist/cjs/Button.cjs +41 -0
- package/dist/cjs/Button.native.js +45 -0
- package/dist/cjs/Button.native.js.map +1 -0
- package/dist/cjs/Carousel/index.cjs +184 -105
- package/dist/cjs/Carousel/index.native.js +212 -107
- package/dist/cjs/Carousel/index.native.js.map +1 -1
- package/dist/cjs/Chip/index.cjs +360 -5
- package/dist/cjs/Chip/index.native.js +374 -5
- package/dist/cjs/Chip/index.native.js.map +1 -1
- package/dist/cjs/DotIndicator/index.cjs +129 -13
- package/dist/cjs/DotIndicator/index.native.js +133 -13
- package/dist/cjs/DotIndicator/index.native.js.map +1 -1
- package/dist/cjs/DropdownMenu/index.cjs +110 -44
- package/dist/cjs/DropdownMenu/index.native.js +113 -46
- package/dist/cjs/DropdownMenu/index.native.js.map +1 -1
- package/dist/cjs/ErrorBoundary/index.cjs +2 -2
- package/dist/cjs/ErrorBoundary/index.native.js +2 -2
- package/dist/cjs/ErrorBoundary/index.native.js.map +1 -1
- package/dist/cjs/Pagination.cjs +40 -11
- package/dist/cjs/Pagination.native.js +44 -11
- package/dist/cjs/Pagination.native.js.map +1 -1
- package/dist/cjs/ProgressSteps/index.cjs +163 -107
- package/dist/cjs/ProgressSteps/index.native.js +171 -115
- package/dist/cjs/ProgressSteps/index.native.js.map +1 -1
- package/dist/cjs/Quote/index.cjs +58 -39
- package/dist/cjs/Quote/index.native.js +69 -45
- package/dist/cjs/Quote/index.native.js.map +1 -1
- package/dist/cjs/SheetModal/index.cjs +141 -4
- package/dist/cjs/SheetModal/index.native.js +42 -29
- package/dist/cjs/SheetModal/index.native.js.map +1 -1
- package/dist/cjs/Skeleton/index.cjs +216 -4
- package/dist/cjs/Skeleton/index.native.js +223 -4
- package/dist/cjs/Skeleton/index.native.js.map +1 -1
- package/dist/cjs/SkipLink/index.cjs +91 -57
- package/dist/cjs/SkipLink/index.native.js +92 -66
- package/dist/cjs/SkipLink/index.native.js.map +1 -1
- package/dist/cjs/Tabs/index.cjs +136 -95
- package/dist/cjs/Tabs/index.native.js +161 -108
- package/dist/cjs/Tabs/index.native.js.map +1 -1
- package/dist/cjs/Toast/index.cjs +229 -67
- package/dist/cjs/Toast/index.native.js +232 -67
- package/dist/cjs/Toast/index.native.js.map +1 -1
- package/dist/cjs/Toast/store.cjs +83 -10
- package/dist/cjs/Toast/store.native.js +108 -10
- package/dist/cjs/Toast/store.native.js.map +1 -1
- package/dist/cjs/Tooltip/index.cjs +159 -42
- package/dist/cjs/Tooltip/index.native.js +195 -43
- package/dist/cjs/Tooltip/index.native.js.map +1 -1
- package/dist/cjs/Video/PlayerChrome.cjs +403 -0
- package/dist/cjs/Video/PlayerChrome.native.js +436 -0
- package/dist/cjs/Video/PlayerChrome.native.js.map +1 -0
- package/dist/cjs/Video/VideoFrame.cjs +14 -5
- package/dist/cjs/Video/VideoFrame.native.js +16 -5
- package/dist/cjs/Video/VideoFrame.native.js.map +1 -1
- package/dist/cjs/Video/index.cjs +227 -11
- package/dist/cjs/Video/index.native.js +28 -13
- package/dist/cjs/Video/index.native.js.map +1 -1
- package/dist/cjs/Wheel/index.cjs +144 -93
- package/dist/cjs/Wheel/index.native.js +149 -96
- package/dist/cjs/Wheel/index.native.js.map +1 -1
- package/dist/cjs/actions/DestructiveAction.cjs +2 -2
- package/dist/cjs/actions/DestructiveAction.native.js +2 -2
- package/dist/cjs/actions/DestructiveAction.native.js.map +1 -1
- package/dist/cjs/charts/BarChart.cjs +9 -5
- package/dist/cjs/charts/BarChart.native.js +9 -5
- package/dist/cjs/charts/BarChart.native.js.map +1 -1
- package/dist/cjs/charts/LineChart.cjs +2 -2
- package/dist/cjs/charts/LineChart.native.js +2 -2
- package/dist/cjs/charts/LineChart.native.js.map +1 -1
- package/dist/cjs/charts/PieChart.cjs +2 -2
- package/dist/cjs/charts/PieChart.native.js +2 -2
- package/dist/cjs/charts/PieChart.native.js.map +1 -1
- package/dist/cjs/charts/Sparkline.cjs +2 -2
- package/dist/cjs/charts/Sparkline.native.js +2 -2
- package/dist/cjs/charts/Sparkline.native.js.map +1 -1
- package/dist/cjs/charts/index.cjs +4 -0
- package/dist/cjs/charts/index.native.js +4 -0
- package/dist/cjs/charts/index.native.js.map +1 -1
- package/dist/cjs/code/CodeBlock/index.cjs +34 -7
- package/dist/cjs/code/CodeBlock/index.native.js +36 -9
- package/dist/cjs/code/CodeBlock/index.native.js.map +1 -1
- package/dist/cjs/feedback/ConfirmDialog.cjs +92 -5
- package/dist/cjs/feedback/ConfirmDialog.native.js +123 -5
- package/dist/cjs/feedback/ConfirmDialog.native.js.map +1 -1
- package/dist/cjs/feedback/NotifyHost.cjs +2 -2
- package/dist/cjs/feedback/NotifyHost.native.js +2 -2
- package/dist/cjs/feedback/NotifyHost.native.js.map +1 -1
- package/dist/cjs/icons/themed.cjs +4 -1
- package/dist/cjs/icons/themed.native.js +4 -1
- package/dist/cjs/icons/themed.native.js.map +1 -1
- package/dist/cjs/images/Image/ImageFrame.cjs +242 -0
- package/dist/cjs/images/Image/ImageFrame.native.js +248 -0
- package/dist/cjs/images/Image/ImageFrame.native.js.map +1 -0
- package/dist/cjs/images/Image/index.cjs +93 -40
- package/dist/cjs/images/Image/index.native.js +146 -108
- package/dist/cjs/images/Image/index.native.js.map +1 -1
- package/dist/cjs/images/Image/shared.cjs +106 -0
- package/dist/cjs/images/Image/shared.native.js +109 -0
- package/dist/cjs/images/Image/shared.native.js.map +1 -0
- package/dist/cjs/index.cjs +7 -0
- package/dist/cjs/index.native.js +7 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/knobImmuneExports.cjs +95 -0
- package/dist/cjs/knobImmuneExports.native.js +98 -0
- package/dist/cjs/knobImmuneExports.native.js.map +1 -0
- package/dist/cjs/layouts/AsyncBoundary.cjs +163 -36
- package/dist/cjs/layouts/AsyncBoundary.native.js +166 -37
- package/dist/cjs/layouts/AsyncBoundary.native.js.map +1 -1
- package/dist/cjs/layouts/EmptyState.cjs +157 -0
- package/dist/cjs/layouts/EmptyState.native.js +165 -0
- package/dist/cjs/layouts/EmptyState.native.js.map +1 -0
- package/dist/cjs/layouts/PageTemplates.cjs +13 -5
- package/dist/cjs/layouts/PageTemplates.native.js +13 -5
- package/dist/cjs/layouts/PageTemplates.native.js.map +1 -1
- package/dist/cjs/layouts/PaneScaffold.cjs +273 -13
- package/dist/cjs/layouts/PaneScaffold.native.js +294 -13
- package/dist/cjs/layouts/PaneScaffold.native.js.map +1 -1
- package/dist/cjs/layouts/ViewSwitcher.cjs +65 -23
- package/dist/cjs/layouts/ViewSwitcher.native.js +78 -30
- package/dist/cjs/layouts/ViewSwitcher.native.js.map +1 -1
- package/dist/cjs/layouts/attachments.cjs +350 -185
- package/dist/cjs/layouts/attachments.native.js +370 -186
- package/dist/cjs/layouts/attachments.native.js.map +1 -1
- package/dist/cjs/layouts/breadcrumbs.cjs +161 -62
- package/dist/cjs/layouts/breadcrumbs.native.js +184 -65
- package/dist/cjs/layouts/breadcrumbs.native.js.map +1 -1
- package/dist/cjs/layouts/page.cjs +71 -111
- package/dist/cjs/layouts/page.native.js +82 -130
- package/dist/cjs/layouts/page.native.js.map +1 -1
- package/dist/cjs/layouts/pageHeadingScope.cjs +8 -2
- package/dist/cjs/layouts/pageHeadingScope.native.js +10 -2
- package/dist/cjs/layouts/pageHeadingScope.native.js.map +1 -1
- package/dist/cjs/layouts/sidebar.cjs +150 -66
- package/dist/cjs/layouts/sidebar.native.js +118 -47
- package/dist/cjs/layouts/sidebar.native.js.map +1 -1
- package/dist/cjs/layouts/tags.cjs +321 -138
- package/dist/cjs/layouts/tags.native.js +355 -158
- package/dist/cjs/layouts/tags.native.js.map +1 -1
- package/dist/cjs/layouts/timeline.cjs +129 -56
- package/dist/cjs/layouts/timeline.native.js +179 -55
- package/dist/cjs/layouts/timeline.native.js.map +1 -1
- package/dist/cjs/layouts/toolbar.cjs +56 -20
- package/dist/cjs/layouts/toolbar.native.js +62 -25
- package/dist/cjs/layouts/toolbar.native.js.map +1 -1
- package/dist/cjs/shared/i18n.cjs +46 -0
- package/dist/cjs/shared/i18n.native.js +52 -0
- package/dist/cjs/shared/i18n.native.js.map +1 -0
- package/dist/cjs/shared/textRidesText.cjs +57 -0
- package/dist/cjs/shared/textRidesText.native.js +81 -0
- package/dist/cjs/shared/textRidesText.native.js.map +1 -0
- package/dist/cjs/shared/useReturnFocusOnClose.cjs +7 -1
- package/dist/cjs/shared/useReturnFocusOnClose.native.js +7 -1
- package/dist/cjs/shared/useReturnFocusOnClose.native.js.map +1 -1
- package/dist/cjs/surfaces.cjs +93 -16
- package/dist/cjs/surfaces.native.js +95 -16
- package/dist/cjs/surfaces.native.js.map +1 -1
- package/dist/cjs/tamagui.cjs +38 -39
- package/dist/cjs/tamagui.native.js +37 -38
- package/dist/cjs/tamagui.native.js.map +1 -1
- package/dist/cjs/views/Calendar.cjs +101 -64
- package/dist/cjs/views/Calendar.native.js +105 -70
- package/dist/cjs/views/Calendar.native.js.map +1 -1
- package/dist/cjs/views/Dashboard.cjs +399 -107
- package/dist/cjs/views/Dashboard.native.js +408 -110
- package/dist/cjs/views/Dashboard.native.js.map +1 -1
- package/dist/cjs/views/Gantt.cjs +256 -59
- package/dist/cjs/views/Gantt.native.js +264 -39
- package/dist/cjs/views/Gantt.native.js.map +1 -1
- package/dist/cjs/views/ImageGrid.cjs +138 -73
- package/dist/cjs/views/ImageGrid.native.js +155 -71
- package/dist/cjs/views/ImageGrid.native.js.map +1 -1
- package/dist/cjs/views/Kanban.cjs +53 -31
- package/dist/cjs/views/Kanban.native.js +55 -41
- package/dist/cjs/views/Kanban.native.js.map +1 -1
- package/dist/cjs/views/List.cjs +280 -93
- package/dist/cjs/views/List.native.js +280 -101
- package/dist/cjs/views/List.native.js.map +1 -1
- package/dist/cjs/views/ReportBuilder.cjs +539 -172
- package/dist/cjs/views/ReportBuilder.native.js +592 -169
- package/dist/cjs/views/ReportBuilder.native.js.map +1 -1
- package/dist/cjs/views/TreeView.cjs +142 -52
- package/dist/cjs/views/TreeView.native.js +170 -55
- package/dist/cjs/views/TreeView.native.js.map +1 -1
- package/dist/esm/Accordion/index.mjs +216 -73
- package/dist/esm/Accordion/index.mjs.map +1 -1
- package/dist/esm/Accordion/index.native.js +257 -78
- package/dist/esm/Accordion/index.native.js.map +1 -1
- package/dist/esm/Alert/index.mjs +206 -58
- package/dist/esm/Alert/index.mjs.map +1 -1
- package/dist/esm/Alert/index.native.js +213 -62
- package/dist/esm/Alert/index.native.js.map +1 -1
- package/dist/esm/AnimateHeight/index.mjs +140 -0
- package/dist/esm/AnimateHeight/index.mjs.map +1 -0
- package/dist/esm/AnimateHeight/index.native.js +147 -0
- package/dist/esm/AnimateHeight/index.native.js.map +1 -0
- package/dist/esm/Avatar/getInitials.mjs +32 -1
- package/dist/esm/Avatar/getInitials.mjs.map +1 -1
- package/dist/esm/Avatar/getInitials.native.js +32 -1
- package/dist/esm/Avatar/getInitials.native.js.map +1 -1
- package/dist/esm/Avatar/index.mjs +249 -68
- package/dist/esm/Avatar/index.mjs.map +1 -1
- package/dist/esm/Avatar/index.native.js +255 -74
- package/dist/esm/Avatar/index.native.js.map +1 -1
- package/dist/esm/Badge/index.mjs +110 -76
- package/dist/esm/Badge/index.mjs.map +1 -1
- package/dist/esm/Badge/index.native.js +111 -77
- package/dist/esm/Badge/index.native.js.map +1 -1
- package/dist/esm/Button.mjs +16 -0
- package/dist/esm/Button.mjs.map +1 -0
- package/dist/esm/Button.native.js +17 -0
- package/dist/esm/Button.native.js.map +1 -0
- package/dist/esm/Carousel/index.mjs +185 -106
- package/dist/esm/Carousel/index.mjs.map +1 -1
- package/dist/esm/Carousel/index.native.js +213 -108
- package/dist/esm/Carousel/index.native.js.map +1 -1
- package/dist/esm/Chip/index.mjs +356 -2
- package/dist/esm/Chip/index.mjs.map +1 -1
- package/dist/esm/Chip/index.native.js +370 -2
- package/dist/esm/Chip/index.native.js.map +1 -1
- package/dist/esm/DotIndicator/index.mjs +130 -14
- package/dist/esm/DotIndicator/index.mjs.map +1 -1
- package/dist/esm/DotIndicator/index.native.js +134 -14
- package/dist/esm/DotIndicator/index.native.js.map +1 -1
- package/dist/esm/DropdownMenu/index.mjs +112 -46
- package/dist/esm/DropdownMenu/index.mjs.map +1 -1
- package/dist/esm/DropdownMenu/index.native.js +115 -48
- package/dist/esm/DropdownMenu/index.native.js.map +1 -1
- package/dist/esm/ErrorBoundary/index.mjs +1 -1
- package/dist/esm/ErrorBoundary/index.native.js +1 -1
- package/dist/esm/Pagination.mjs +41 -12
- package/dist/esm/Pagination.mjs.map +1 -1
- package/dist/esm/Pagination.native.js +45 -12
- package/dist/esm/Pagination.native.js.map +1 -1
- package/dist/esm/ProgressSteps/index.mjs +165 -109
- package/dist/esm/ProgressSteps/index.mjs.map +1 -1
- package/dist/esm/ProgressSteps/index.native.js +173 -117
- package/dist/esm/ProgressSteps/index.native.js.map +1 -1
- package/dist/esm/Quote/index.mjs +59 -40
- package/dist/esm/Quote/index.mjs.map +1 -1
- package/dist/esm/Quote/index.native.js +70 -46
- package/dist/esm/Quote/index.native.js.map +1 -1
- package/dist/esm/SheetModal/index.mjs +144 -7
- package/dist/esm/SheetModal/index.mjs.map +1 -1
- package/dist/esm/SheetModal/index.native.js +41 -28
- package/dist/esm/SheetModal/index.native.js.map +1 -1
- package/dist/esm/Skeleton/index.mjs +213 -2
- package/dist/esm/Skeleton/index.mjs.map +1 -1
- package/dist/esm/Skeleton/index.native.js +220 -2
- package/dist/esm/Skeleton/index.native.js.map +1 -1
- package/dist/esm/SkipLink/index.mjs +93 -59
- package/dist/esm/SkipLink/index.mjs.map +1 -1
- package/dist/esm/SkipLink/index.native.js +94 -68
- package/dist/esm/SkipLink/index.native.js.map +1 -1
- package/dist/esm/Tabs/index.mjs +137 -96
- package/dist/esm/Tabs/index.mjs.map +1 -1
- package/dist/esm/Tabs/index.native.js +162 -109
- package/dist/esm/Tabs/index.native.js.map +1 -1
- package/dist/esm/Toast/index.mjs +227 -68
- package/dist/esm/Toast/index.mjs.map +1 -1
- package/dist/esm/Toast/index.native.js +230 -68
- package/dist/esm/Toast/index.native.js.map +1 -1
- package/dist/esm/Toast/store.mjs +75 -11
- package/dist/esm/Toast/store.mjs.map +1 -1
- package/dist/esm/Toast/store.native.js +100 -11
- package/dist/esm/Toast/store.native.js.map +1 -1
- package/dist/esm/Tooltip/index.mjs +147 -42
- package/dist/esm/Tooltip/index.mjs.map +1 -1
- package/dist/esm/Tooltip/index.native.js +184 -44
- package/dist/esm/Tooltip/index.native.js.map +1 -1
- package/dist/esm/Video/PlayerChrome.mjs +377 -0
- package/dist/esm/Video/PlayerChrome.mjs.map +1 -0
- package/dist/esm/Video/PlayerChrome.native.js +407 -0
- package/dist/esm/Video/PlayerChrome.native.js.map +1 -0
- package/dist/esm/Video/VideoFrame.mjs +14 -5
- package/dist/esm/Video/VideoFrame.mjs.map +1 -1
- package/dist/esm/Video/VideoFrame.native.js +16 -5
- package/dist/esm/Video/VideoFrame.native.js.map +1 -1
- package/dist/esm/Video/index.mjs +227 -11
- package/dist/esm/Video/index.mjs.map +1 -1
- package/dist/esm/Video/index.native.js +28 -13
- package/dist/esm/Video/index.native.js.map +1 -1
- package/dist/esm/Wheel/index.mjs +143 -92
- package/dist/esm/Wheel/index.mjs.map +1 -1
- package/dist/esm/Wheel/index.native.js +148 -95
- package/dist/esm/Wheel/index.native.js.map +1 -1
- package/dist/esm/actions/DestructiveAction.mjs +1 -1
- package/dist/esm/actions/DestructiveAction.native.js +1 -1
- package/dist/esm/actions/DestructiveAction.native.js.map +1 -1
- package/dist/esm/charts/BarChart.mjs +8 -4
- package/dist/esm/charts/BarChart.mjs.map +1 -1
- package/dist/esm/charts/BarChart.native.js +8 -4
- package/dist/esm/charts/BarChart.native.js.map +1 -1
- package/dist/esm/charts/LineChart.mjs +1 -1
- package/dist/esm/charts/LineChart.native.js +1 -1
- package/dist/esm/charts/PieChart.mjs +1 -1
- package/dist/esm/charts/PieChart.native.js +1 -1
- package/dist/esm/charts/PieChart.native.js.map +1 -1
- package/dist/esm/charts/Sparkline.mjs +1 -1
- package/dist/esm/charts/Sparkline.native.js +1 -1
- package/dist/esm/charts/index.mjs +2 -1
- package/dist/esm/charts/index.mjs.map +1 -1
- package/dist/esm/charts/index.native.js +2 -1
- package/dist/esm/charts/index.native.js.map +1 -1
- package/dist/esm/code/CodeBlock/index.mjs +34 -7
- package/dist/esm/code/CodeBlock/index.mjs.map +1 -1
- package/dist/esm/code/CodeBlock/index.native.js +36 -9
- package/dist/esm/code/CodeBlock/index.native.js.map +1 -1
- package/dist/esm/feedback/ConfirmDialog.mjs +93 -6
- package/dist/esm/feedback/ConfirmDialog.mjs.map +1 -1
- package/dist/esm/feedback/ConfirmDialog.native.js +124 -6
- package/dist/esm/feedback/ConfirmDialog.native.js.map +1 -1
- package/dist/esm/feedback/NotifyHost.mjs +1 -1
- package/dist/esm/feedback/NotifyHost.native.js +1 -1
- package/dist/esm/icons/themed.mjs +5 -2
- package/dist/esm/icons/themed.mjs.map +1 -1
- package/dist/esm/icons/themed.native.js +5 -2
- package/dist/esm/icons/themed.native.js.map +1 -1
- package/dist/esm/images/Image/ImageFrame.mjs +216 -0
- package/dist/esm/images/Image/ImageFrame.mjs.map +1 -0
- package/dist/esm/images/Image/ImageFrame.native.js +219 -0
- package/dist/esm/images/Image/ImageFrame.native.js.map +1 -0
- package/dist/esm/images/Image/index.mjs +94 -41
- package/dist/esm/images/Image/index.mjs.map +1 -1
- package/dist/esm/images/Image/index.native.js +148 -110
- package/dist/esm/images/Image/index.native.js.map +1 -1
- package/dist/esm/images/Image/shared.mjs +76 -0
- package/dist/esm/images/Image/shared.mjs.map +1 -0
- package/dist/esm/images/Image/shared.native.js +76 -0
- package/dist/esm/images/Image/shared.native.js.map +1 -0
- package/dist/esm/index.mjs +4 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +4 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/knobImmuneExports.mjs +70 -0
- package/dist/esm/knobImmuneExports.mjs.map +1 -0
- package/dist/esm/knobImmuneExports.native.js +70 -0
- package/dist/esm/knobImmuneExports.native.js.map +1 -0
- package/dist/esm/layouts/AsyncBoundary.mjs +165 -38
- package/dist/esm/layouts/AsyncBoundary.mjs.map +1 -1
- package/dist/esm/layouts/AsyncBoundary.native.js +168 -39
- package/dist/esm/layouts/AsyncBoundary.native.js.map +1 -1
- package/dist/esm/layouts/EmptyState.mjs +132 -0
- package/dist/esm/layouts/EmptyState.mjs.map +1 -0
- package/dist/esm/layouts/EmptyState.native.js +137 -0
- package/dist/esm/layouts/EmptyState.native.js.map +1 -0
- package/dist/esm/layouts/PageTemplates.mjs +13 -5
- package/dist/esm/layouts/PageTemplates.mjs.map +1 -1
- package/dist/esm/layouts/PageTemplates.native.js +13 -5
- package/dist/esm/layouts/PageTemplates.native.js.map +1 -1
- package/dist/esm/layouts/PaneScaffold.mjs +277 -17
- package/dist/esm/layouts/PaneScaffold.mjs.map +1 -1
- package/dist/esm/layouts/PaneScaffold.native.js +298 -17
- package/dist/esm/layouts/PaneScaffold.native.js.map +1 -1
- package/dist/esm/layouts/ViewSwitcher.mjs +66 -24
- package/dist/esm/layouts/ViewSwitcher.mjs.map +1 -1
- package/dist/esm/layouts/ViewSwitcher.native.js +79 -31
- package/dist/esm/layouts/ViewSwitcher.native.js.map +1 -1
- package/dist/esm/layouts/attachments.mjs +351 -175
- package/dist/esm/layouts/attachments.mjs.map +1 -1
- package/dist/esm/layouts/attachments.native.js +371 -187
- package/dist/esm/layouts/attachments.native.js.map +1 -1
- package/dist/esm/layouts/breadcrumbs.mjs +163 -53
- package/dist/esm/layouts/breadcrumbs.mjs.map +1 -1
- package/dist/esm/layouts/breadcrumbs.native.js +187 -68
- package/dist/esm/layouts/breadcrumbs.native.js.map +1 -1
- package/dist/esm/layouts/page.mjs +72 -112
- package/dist/esm/layouts/page.mjs.map +1 -1
- package/dist/esm/layouts/page.native.js +83 -131
- package/dist/esm/layouts/page.native.js.map +1 -1
- package/dist/esm/layouts/pageHeadingScope.mjs +8 -3
- package/dist/esm/layouts/pageHeadingScope.mjs.map +1 -1
- package/dist/esm/layouts/pageHeadingScope.native.js +10 -3
- package/dist/esm/layouts/pageHeadingScope.native.js.map +1 -1
- package/dist/esm/layouts/sidebar.mjs +152 -68
- package/dist/esm/layouts/sidebar.mjs.map +1 -1
- package/dist/esm/layouts/sidebar.native.js +120 -49
- package/dist/esm/layouts/sidebar.native.js.map +1 -1
- package/dist/esm/layouts/tags.mjs +323 -140
- package/dist/esm/layouts/tags.mjs.map +1 -1
- package/dist/esm/layouts/tags.native.js +357 -160
- package/dist/esm/layouts/tags.native.js.map +1 -1
- package/dist/esm/layouts/timeline.mjs +129 -45
- package/dist/esm/layouts/timeline.mjs.map +1 -1
- package/dist/esm/layouts/timeline.native.js +179 -55
- package/dist/esm/layouts/timeline.native.js.map +1 -1
- package/dist/esm/layouts/toolbar.mjs +57 -21
- package/dist/esm/layouts/toolbar.mjs.map +1 -1
- package/dist/esm/layouts/toolbar.native.js +63 -26
- package/dist/esm/layouts/toolbar.native.js.map +1 -1
- package/dist/esm/shared/i18n.mjs +10 -0
- package/dist/esm/shared/i18n.mjs.map +1 -0
- package/dist/esm/shared/i18n.native.js +13 -0
- package/dist/esm/shared/i18n.native.js.map +1 -0
- package/dist/esm/shared/textRidesText.mjs +31 -0
- package/dist/esm/shared/textRidesText.mjs.map +1 -0
- package/dist/esm/shared/textRidesText.native.js +52 -0
- package/dist/esm/shared/textRidesText.native.js.map +1 -0
- package/dist/esm/shared/useReturnFocusOnClose.mjs +7 -1
- package/dist/esm/shared/useReturnFocusOnClose.mjs.map +1 -1
- package/dist/esm/shared/useReturnFocusOnClose.native.js +7 -1
- package/dist/esm/shared/useReturnFocusOnClose.native.js.map +1 -1
- package/dist/esm/surfaces.mjs +94 -17
- package/dist/esm/surfaces.mjs.map +1 -1
- package/dist/esm/surfaces.native.js +96 -17
- package/dist/esm/surfaces.native.js.map +1 -1
- package/dist/esm/tamagui.mjs +2 -3
- package/dist/esm/tamagui.mjs.map +1 -1
- package/dist/esm/tamagui.native.js +2 -3
- package/dist/esm/tamagui.native.js.map +1 -1
- package/dist/esm/views/Calendar.mjs +101 -64
- package/dist/esm/views/Calendar.mjs.map +1 -1
- package/dist/esm/views/Calendar.native.js +105 -70
- package/dist/esm/views/Calendar.native.js.map +1 -1
- package/dist/esm/views/Dashboard.mjs +396 -107
- package/dist/esm/views/Dashboard.mjs.map +1 -1
- package/dist/esm/views/Dashboard.native.js +405 -110
- package/dist/esm/views/Dashboard.native.js.map +1 -1
- package/dist/esm/views/Gantt.mjs +256 -59
- package/dist/esm/views/Gantt.mjs.map +1 -1
- package/dist/esm/views/Gantt.native.js +264 -39
- package/dist/esm/views/Gantt.native.js.map +1 -1
- package/dist/esm/views/ImageGrid.mjs +138 -73
- package/dist/esm/views/ImageGrid.mjs.map +1 -1
- package/dist/esm/views/ImageGrid.native.js +155 -71
- package/dist/esm/views/ImageGrid.native.js.map +1 -1
- package/dist/esm/views/Kanban.mjs +52 -30
- package/dist/esm/views/Kanban.mjs.map +1 -1
- package/dist/esm/views/Kanban.native.js +54 -40
- package/dist/esm/views/Kanban.native.js.map +1 -1
- package/dist/esm/views/List.mjs +268 -95
- package/dist/esm/views/List.mjs.map +1 -1
- package/dist/esm/views/List.native.js +280 -104
- package/dist/esm/views/List.native.js.map +1 -1
- package/dist/esm/views/ReportBuilder.mjs +533 -166
- package/dist/esm/views/ReportBuilder.mjs.map +1 -1
- package/dist/esm/views/ReportBuilder.native.js +585 -162
- package/dist/esm/views/ReportBuilder.native.js.map +1 -1
- package/dist/esm/views/TreeView.mjs +142 -52
- package/dist/esm/views/TreeView.mjs.map +1 -1
- package/dist/esm/views/TreeView.native.js +170 -55
- package/dist/esm/views/TreeView.native.js.map +1 -1
- package/dist/jsx/Accordion/index.mjs +216 -73
- package/dist/jsx/Accordion/index.mjs.map +1 -1
- package/dist/jsx/Accordion/index.native.js +254 -75
- package/dist/jsx/Accordion/index.native.js.map +1 -1
- package/dist/jsx/Alert/index.mjs +206 -58
- package/dist/jsx/Alert/index.mjs.map +1 -1
- package/dist/jsx/Alert/index.native.js +211 -60
- package/dist/jsx/Alert/index.native.js.map +1 -1
- package/dist/jsx/AnimateHeight/index.mjs +140 -0
- package/dist/jsx/AnimateHeight/index.mjs.map +1 -0
- package/dist/jsx/AnimateHeight/index.native.js +176 -0
- package/dist/jsx/AnimateHeight/index.native.js.map +1 -0
- package/dist/jsx/Avatar/getInitials.mjs +32 -1
- package/dist/jsx/Avatar/getInitials.mjs.map +1 -1
- package/dist/jsx/Avatar/getInitials.native.js +34 -0
- package/dist/jsx/Avatar/getInitials.native.js.map +1 -1
- package/dist/jsx/Avatar/index.mjs +249 -68
- package/dist/jsx/Avatar/index.mjs.map +1 -1
- package/dist/jsx/Avatar/index.native.js +252 -68
- package/dist/jsx/Avatar/index.native.js.map +1 -1
- package/dist/jsx/Badge/index.mjs +110 -76
- package/dist/jsx/Badge/index.mjs.map +1 -1
- package/dist/jsx/Badge/index.native.js +110 -76
- package/dist/jsx/Badge/index.native.js.map +1 -1
- package/dist/jsx/Button.mjs +16 -0
- package/dist/jsx/Button.mjs.map +1 -0
- package/dist/jsx/Button.native.js +45 -0
- package/dist/jsx/Button.native.js.map +1 -0
- package/dist/jsx/Carousel/index.mjs +185 -106
- package/dist/jsx/Carousel/index.mjs.map +1 -1
- package/dist/jsx/Carousel/index.native.js +212 -107
- package/dist/jsx/Carousel/index.native.js.map +1 -1
- package/dist/jsx/Chip/index.mjs +356 -2
- package/dist/jsx/Chip/index.mjs.map +1 -1
- package/dist/jsx/Chip/index.native.js +374 -5
- package/dist/jsx/Chip/index.native.js.map +1 -1
- package/dist/jsx/DotIndicator/index.mjs +130 -14
- package/dist/jsx/DotIndicator/index.mjs.map +1 -1
- package/dist/jsx/DotIndicator/index.native.js +133 -13
- package/dist/jsx/DotIndicator/index.native.js.map +1 -1
- package/dist/jsx/DropdownMenu/index.mjs +112 -46
- package/dist/jsx/DropdownMenu/index.mjs.map +1 -1
- package/dist/jsx/DropdownMenu/index.native.js +113 -46
- package/dist/jsx/DropdownMenu/index.native.js.map +1 -1
- package/dist/jsx/ErrorBoundary/index.mjs +1 -1
- package/dist/jsx/ErrorBoundary/index.native.js +2 -2
- package/dist/jsx/ErrorBoundary/index.native.js.map +1 -1
- package/dist/jsx/Pagination.mjs +41 -12
- package/dist/jsx/Pagination.mjs.map +1 -1
- package/dist/jsx/Pagination.native.js +44 -11
- package/dist/jsx/Pagination.native.js.map +1 -1
- package/dist/jsx/ProgressSteps/index.mjs +165 -109
- package/dist/jsx/ProgressSteps/index.mjs.map +1 -1
- package/dist/jsx/ProgressSteps/index.native.js +171 -115
- package/dist/jsx/ProgressSteps/index.native.js.map +1 -1
- package/dist/jsx/Quote/index.mjs +59 -40
- package/dist/jsx/Quote/index.mjs.map +1 -1
- package/dist/jsx/Quote/index.native.js +69 -45
- package/dist/jsx/Quote/index.native.js.map +1 -1
- package/dist/jsx/SheetModal/index.mjs +144 -7
- package/dist/jsx/SheetModal/index.mjs.map +1 -1
- package/dist/jsx/SheetModal/index.native.js +42 -29
- package/dist/jsx/SheetModal/index.native.js.map +1 -1
- package/dist/jsx/Skeleton/index.mjs +213 -2
- package/dist/jsx/Skeleton/index.mjs.map +1 -1
- package/dist/jsx/Skeleton/index.native.js +223 -4
- package/dist/jsx/Skeleton/index.native.js.map +1 -1
- package/dist/jsx/SkipLink/index.mjs +93 -59
- package/dist/jsx/SkipLink/index.mjs.map +1 -1
- package/dist/jsx/SkipLink/index.native.js +92 -66
- package/dist/jsx/SkipLink/index.native.js.map +1 -1
- package/dist/jsx/Tabs/index.mjs +137 -96
- package/dist/jsx/Tabs/index.mjs.map +1 -1
- package/dist/jsx/Tabs/index.native.js +161 -108
- package/dist/jsx/Tabs/index.native.js.map +1 -1
- package/dist/jsx/Toast/index.mjs +227 -68
- package/dist/jsx/Toast/index.mjs.map +1 -1
- package/dist/jsx/Toast/index.native.js +232 -67
- package/dist/jsx/Toast/index.native.js.map +1 -1
- package/dist/jsx/Toast/store.mjs +75 -11
- package/dist/jsx/Toast/store.mjs.map +1 -1
- package/dist/jsx/Toast/store.native.js +108 -10
- package/dist/jsx/Toast/store.native.js.map +1 -1
- package/dist/jsx/Tooltip/index.mjs +147 -42
- package/dist/jsx/Tooltip/index.mjs.map +1 -1
- package/dist/jsx/Tooltip/index.native.js +195 -43
- package/dist/jsx/Tooltip/index.native.js.map +1 -1
- package/dist/jsx/Video/PlayerChrome.mjs +377 -0
- package/dist/jsx/Video/PlayerChrome.mjs.map +1 -0
- package/dist/jsx/Video/PlayerChrome.native.js +436 -0
- package/dist/jsx/Video/PlayerChrome.native.js.map +1 -0
- package/dist/jsx/Video/VideoFrame.mjs +14 -5
- package/dist/jsx/Video/VideoFrame.mjs.map +1 -1
- package/dist/jsx/Video/VideoFrame.native.js +16 -5
- package/dist/jsx/Video/VideoFrame.native.js.map +1 -1
- package/dist/jsx/Video/index.mjs +227 -11
- package/dist/jsx/Video/index.mjs.map +1 -1
- package/dist/jsx/Video/index.native.js +28 -13
- package/dist/jsx/Video/index.native.js.map +1 -1
- package/dist/jsx/Wheel/index.mjs +143 -92
- package/dist/jsx/Wheel/index.mjs.map +1 -1
- package/dist/jsx/Wheel/index.native.js +149 -96
- package/dist/jsx/Wheel/index.native.js.map +1 -1
- package/dist/jsx/actions/DestructiveAction.mjs +1 -1
- package/dist/jsx/actions/DestructiveAction.native.js +2 -2
- package/dist/jsx/actions/DestructiveAction.native.js.map +1 -1
- package/dist/jsx/charts/BarChart.mjs +8 -4
- package/dist/jsx/charts/BarChart.mjs.map +1 -1
- package/dist/jsx/charts/BarChart.native.js +9 -5
- package/dist/jsx/charts/BarChart.native.js.map +1 -1
- package/dist/jsx/charts/LineChart.mjs +1 -1
- package/dist/jsx/charts/LineChart.native.js +2 -2
- package/dist/jsx/charts/LineChart.native.js.map +1 -1
- package/dist/jsx/charts/PieChart.mjs +1 -1
- package/dist/jsx/charts/PieChart.native.js +2 -2
- package/dist/jsx/charts/PieChart.native.js.map +1 -1
- package/dist/jsx/charts/Sparkline.mjs +1 -1
- package/dist/jsx/charts/Sparkline.native.js +2 -2
- package/dist/jsx/charts/Sparkline.native.js.map +1 -1
- package/dist/jsx/charts/index.mjs +2 -1
- package/dist/jsx/charts/index.mjs.map +1 -1
- package/dist/jsx/charts/index.native.js +4 -0
- package/dist/jsx/charts/index.native.js.map +1 -1
- package/dist/jsx/code/CodeBlock/index.mjs +34 -7
- package/dist/jsx/code/CodeBlock/index.mjs.map +1 -1
- package/dist/jsx/code/CodeBlock/index.native.js +36 -9
- package/dist/jsx/code/CodeBlock/index.native.js.map +1 -1
- package/dist/jsx/feedback/ConfirmDialog.mjs +93 -6
- package/dist/jsx/feedback/ConfirmDialog.mjs.map +1 -1
- package/dist/jsx/feedback/ConfirmDialog.native.js +123 -5
- package/dist/jsx/feedback/ConfirmDialog.native.js.map +1 -1
- package/dist/jsx/feedback/NotifyHost.mjs +1 -1
- package/dist/jsx/feedback/NotifyHost.native.js +2 -2
- package/dist/jsx/feedback/NotifyHost.native.js.map +1 -1
- package/dist/jsx/icons/themed.mjs +5 -2
- package/dist/jsx/icons/themed.mjs.map +1 -1
- package/dist/jsx/icons/themed.native.js +4 -1
- package/dist/jsx/icons/themed.native.js.map +1 -1
- package/dist/jsx/images/Image/ImageFrame.mjs +216 -0
- package/dist/jsx/images/Image/ImageFrame.mjs.map +1 -0
- package/dist/jsx/images/Image/ImageFrame.native.js +248 -0
- package/dist/jsx/images/Image/ImageFrame.native.js.map +1 -0
- package/dist/jsx/images/Image/index.mjs +94 -41
- package/dist/jsx/images/Image/index.mjs.map +1 -1
- package/dist/jsx/images/Image/index.native.js +146 -108
- package/dist/jsx/images/Image/index.native.js.map +1 -1
- package/dist/jsx/images/Image/shared.mjs +76 -0
- package/dist/jsx/images/Image/shared.mjs.map +1 -0
- package/dist/jsx/images/Image/shared.native.js +109 -0
- package/dist/jsx/images/Image/shared.native.js.map +1 -0
- package/dist/jsx/index.js +4 -1
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +4 -1
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +7 -0
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/knobImmuneExports.mjs +70 -0
- package/dist/jsx/knobImmuneExports.mjs.map +1 -0
- package/dist/jsx/knobImmuneExports.native.js +98 -0
- package/dist/jsx/knobImmuneExports.native.js.map +1 -0
- package/dist/jsx/layouts/AsyncBoundary.mjs +165 -38
- package/dist/jsx/layouts/AsyncBoundary.mjs.map +1 -1
- package/dist/jsx/layouts/AsyncBoundary.native.js +166 -37
- package/dist/jsx/layouts/AsyncBoundary.native.js.map +1 -1
- package/dist/jsx/layouts/EmptyState.mjs +132 -0
- package/dist/jsx/layouts/EmptyState.mjs.map +1 -0
- package/dist/jsx/layouts/EmptyState.native.js +165 -0
- package/dist/jsx/layouts/EmptyState.native.js.map +1 -0
- package/dist/jsx/layouts/PageTemplates.mjs +13 -5
- package/dist/jsx/layouts/PageTemplates.mjs.map +1 -1
- package/dist/jsx/layouts/PageTemplates.native.js +13 -5
- package/dist/jsx/layouts/PageTemplates.native.js.map +1 -1
- package/dist/jsx/layouts/PaneScaffold.mjs +277 -17
- package/dist/jsx/layouts/PaneScaffold.mjs.map +1 -1
- package/dist/jsx/layouts/PaneScaffold.native.js +294 -13
- package/dist/jsx/layouts/PaneScaffold.native.js.map +1 -1
- package/dist/jsx/layouts/ViewSwitcher.mjs +66 -24
- package/dist/jsx/layouts/ViewSwitcher.mjs.map +1 -1
- package/dist/jsx/layouts/ViewSwitcher.native.js +78 -30
- package/dist/jsx/layouts/ViewSwitcher.native.js.map +1 -1
- package/dist/jsx/layouts/attachments.mjs +351 -175
- package/dist/jsx/layouts/attachments.mjs.map +1 -1
- package/dist/jsx/layouts/attachments.native.js +370 -186
- package/dist/jsx/layouts/attachments.native.js.map +1 -1
- package/dist/jsx/layouts/breadcrumbs.mjs +163 -53
- package/dist/jsx/layouts/breadcrumbs.mjs.map +1 -1
- package/dist/jsx/layouts/breadcrumbs.native.js +184 -65
- package/dist/jsx/layouts/breadcrumbs.native.js.map +1 -1
- package/dist/jsx/layouts/page.mjs +72 -112
- package/dist/jsx/layouts/page.mjs.map +1 -1
- package/dist/jsx/layouts/page.native.js +82 -130
- package/dist/jsx/layouts/page.native.js.map +1 -1
- package/dist/jsx/layouts/pageHeadingScope.mjs +8 -3
- package/dist/jsx/layouts/pageHeadingScope.mjs.map +1 -1
- package/dist/jsx/layouts/pageHeadingScope.native.js +10 -2
- package/dist/jsx/layouts/pageHeadingScope.native.js.map +1 -1
- package/dist/jsx/layouts/sidebar.mjs +152 -68
- package/dist/jsx/layouts/sidebar.mjs.map +1 -1
- package/dist/jsx/layouts/sidebar.native.js +118 -47
- package/dist/jsx/layouts/sidebar.native.js.map +1 -1
- package/dist/jsx/layouts/tags.mjs +323 -140
- package/dist/jsx/layouts/tags.mjs.map +1 -1
- package/dist/jsx/layouts/tags.native.js +355 -158
- package/dist/jsx/layouts/tags.native.js.map +1 -1
- package/dist/jsx/layouts/timeline.mjs +129 -45
- package/dist/jsx/layouts/timeline.mjs.map +1 -1
- package/dist/jsx/layouts/timeline.native.js +179 -55
- package/dist/jsx/layouts/timeline.native.js.map +1 -1
- package/dist/jsx/layouts/toolbar.mjs +57 -21
- package/dist/jsx/layouts/toolbar.mjs.map +1 -1
- package/dist/jsx/layouts/toolbar.native.js +62 -25
- package/dist/jsx/layouts/toolbar.native.js.map +1 -1
- package/dist/jsx/shared/i18n.mjs +10 -0
- package/dist/jsx/shared/i18n.mjs.map +1 -0
- package/dist/jsx/shared/i18n.native.js +52 -0
- package/dist/jsx/shared/i18n.native.js.map +1 -0
- package/dist/jsx/shared/textRidesText.mjs +31 -0
- package/dist/jsx/shared/textRidesText.mjs.map +1 -0
- package/dist/jsx/shared/textRidesText.native.js +81 -0
- package/dist/jsx/shared/textRidesText.native.js.map +1 -0
- package/dist/jsx/shared/useReturnFocusOnClose.mjs +7 -1
- package/dist/jsx/shared/useReturnFocusOnClose.mjs.map +1 -1
- package/dist/jsx/shared/useReturnFocusOnClose.native.js +7 -1
- package/dist/jsx/shared/useReturnFocusOnClose.native.js.map +1 -1
- package/dist/jsx/surfaces.mjs +94 -17
- package/dist/jsx/surfaces.mjs.map +1 -1
- package/dist/jsx/surfaces.native.js +95 -16
- package/dist/jsx/surfaces.native.js.map +1 -1
- package/dist/jsx/tamagui.mjs +2 -3
- package/dist/jsx/tamagui.mjs.map +1 -1
- package/dist/jsx/tamagui.native.js +37 -38
- package/dist/jsx/tamagui.native.js.map +1 -1
- package/dist/jsx/views/Calendar.mjs +101 -64
- package/dist/jsx/views/Calendar.mjs.map +1 -1
- package/dist/jsx/views/Calendar.native.js +105 -70
- package/dist/jsx/views/Calendar.native.js.map +1 -1
- package/dist/jsx/views/Dashboard.mjs +396 -107
- package/dist/jsx/views/Dashboard.mjs.map +1 -1
- package/dist/jsx/views/Dashboard.native.js +408 -110
- package/dist/jsx/views/Dashboard.native.js.map +1 -1
- package/dist/jsx/views/Gantt.mjs +256 -59
- package/dist/jsx/views/Gantt.mjs.map +1 -1
- package/dist/jsx/views/Gantt.native.js +264 -39
- package/dist/jsx/views/Gantt.native.js.map +1 -1
- package/dist/jsx/views/ImageGrid.mjs +138 -73
- package/dist/jsx/views/ImageGrid.mjs.map +1 -1
- package/dist/jsx/views/ImageGrid.native.js +155 -71
- package/dist/jsx/views/ImageGrid.native.js.map +1 -1
- package/dist/jsx/views/Kanban.mjs +52 -30
- package/dist/jsx/views/Kanban.mjs.map +1 -1
- package/dist/jsx/views/Kanban.native.js +55 -41
- package/dist/jsx/views/Kanban.native.js.map +1 -1
- package/dist/jsx/views/List.mjs +268 -95
- package/dist/jsx/views/List.mjs.map +1 -1
- package/dist/jsx/views/List.native.js +280 -101
- package/dist/jsx/views/List.native.js.map +1 -1
- package/dist/jsx/views/ReportBuilder.mjs +533 -166
- package/dist/jsx/views/ReportBuilder.mjs.map +1 -1
- package/dist/jsx/views/ReportBuilder.native.js +592 -169
- package/dist/jsx/views/ReportBuilder.native.js.map +1 -1
- package/dist/jsx/views/TreeView.mjs +142 -52
- package/dist/jsx/views/TreeView.mjs.map +1 -1
- package/dist/jsx/views/TreeView.native.js +170 -55
- package/dist/jsx/views/TreeView.native.js.map +1 -1
- package/package.json +18 -18
- package/src/Accordion/Accordion.lc50.spec.tsx +69 -0
- package/src/Accordion/Accordion.spec.tsx +36 -0
- package/src/Accordion/Accordion.stories.tsx +82 -36
- package/src/Accordion/index.tsx +296 -75
- package/src/Alert/Alert.spec.tsx +137 -1
- package/src/Alert/Alert.stories.tsx +10 -11
- package/src/Alert/index.tsx +244 -62
- package/src/AnimateHeight/AnimateHeight.spec.tsx +152 -0
- package/src/AnimateHeight/index.tsx +237 -0
- package/src/Avatar/Avatar.spec.tsx +73 -2
- package/src/Avatar/Avatar.stories.tsx +106 -4
- package/src/Avatar/getInitials.ts +29 -0
- package/src/Avatar/index.tsx +323 -105
- package/src/Badge/Badge.spec.tsx +83 -0
- package/src/Badge/Badge.stories.tsx +15 -1
- package/src/Badge/index.tsx +138 -84
- package/src/Button.spec.tsx +181 -0
- package/src/Button.stories.tsx +92 -0
- package/src/Button.tsx +43 -0
- package/src/Carousel/Carousel.spec.tsx +152 -0
- package/src/Carousel/index.tsx +239 -102
- package/src/Chip/Chip.spec.tsx +141 -0
- package/src/Chip/Chip.stories.tsx +163 -10
- package/src/Chip/index.tsx +452 -11
- package/src/DialogContent.stories.tsx +8 -6
- package/src/DotIndicator/DotIndicator.stories.tsx +18 -0
- package/src/DotIndicator/dotIndicator.spec.tsx +57 -2
- package/src/DotIndicator/index.tsx +159 -24
- package/src/DropdownMenu/DropdownMenu.spec.tsx +172 -0
- package/src/DropdownMenu/DropdownMenu.stories.tsx +35 -0
- package/src/DropdownMenu/index.tsx +172 -46
- package/src/ErrorBoundary/index.tsx +1 -1
- package/src/Pagination.api.spec.tsx +41 -0
- package/src/Pagination.tsx +49 -8
- package/src/PopoverContent.stories.tsx +4 -2
- package/src/ProgressSteps/ProgressSteps.spec.tsx +48 -1
- package/src/ProgressSteps/ProgressSteps.stories.tsx +48 -0
- package/src/ProgressSteps/index.tsx +224 -133
- package/src/Quote/Quote.lc50.spec.tsx +53 -0
- package/src/Quote/Quote.spec.tsx +9 -2
- package/src/Quote/Quote.stories.tsx +1 -1
- package/src/Quote/index.tsx +77 -60
- package/src/SheetModal/index.native.tsx +41 -39
- package/src/SheetModal/index.tsx +149 -18
- package/src/Skeleton/Skeleton.stories.tsx +109 -93
- package/src/Skeleton/SkeletonText.stories.tsx +11 -0
- package/src/Skeleton/index.tsx +257 -8
- package/src/SkipLink/SkipLink.spec.tsx +35 -0
- package/src/SkipLink/SkipLink.stories.tsx +1 -1
- package/src/SkipLink/index.tsx +120 -71
- package/src/Tabs/Tabs.spec.tsx +65 -0
- package/src/Tabs/Tabs.stories.tsx +32 -0
- package/src/Tabs/index.tsx +188 -133
- package/src/Toast/Toast.spec.tsx +208 -8
- package/src/Toast/Toast.stories.tsx +97 -16
- package/src/Toast/index.tsx +322 -78
- package/src/Toast/store.ts +150 -16
- package/src/Tooltip/Tooltip.lc50.spec.tsx +52 -0
- package/src/Tooltip/Tooltip.spec.tsx +99 -0
- package/src/Tooltip/Tooltip.stories.tsx +23 -0
- package/src/Tooltip/index.tsx +200 -44
- package/src/Video/PlayerChrome.tsx +412 -0
- package/src/Video/Video.spec.tsx +47 -4
- package/src/Video/Video.stories.tsx +2 -1
- package/src/Video/VideoFrame.tsx +15 -3
- package/src/Video/index.native.tsx +20 -12
- package/src/Video/index.tsx +285 -21
- package/src/Video/types.ts +7 -1
- package/src/Wheel/Wheel.spec.tsx +217 -2
- package/src/Wheel/Wheel.stories.tsx +39 -13
- package/src/Wheel/index.tsx +205 -134
- package/src/actions/DestructiveAction.tsx +1 -1
- package/src/charts/BarChart.tsx +14 -3
- package/src/charts/LineChart.tsx +1 -1
- package/src/charts/PieChart.tsx +1 -1
- package/src/charts/Sparkline.tsx +1 -1
- package/src/charts/charts.spec.tsx +25 -0
- package/src/charts/index.ts +9 -0
- package/src/code/CodeBlock/index.tsx +43 -7
- package/src/export-surface.spec.tsx +137 -0
- package/src/feedback/ConfirmDialog.spec.tsx +36 -0
- package/src/feedback/ConfirmDialog.stories.tsx +20 -1
- package/src/feedback/ConfirmDialog.tsx +121 -9
- package/src/feedback/NotifyHost.tsx +1 -1
- package/src/icons/themed.tsx +7 -2
- package/src/images/Image/Image.spec.tsx +136 -73
- package/src/images/Image/Image.stories.tsx +113 -9
- package/src/images/Image/ImageFrame.tsx +288 -0
- package/src/images/Image/index.native.tsx +177 -144
- package/src/images/Image/index.tsx +103 -51
- package/src/images/Image/shared.ts +88 -0
- package/src/images/Image/types.ts +32 -1
- package/src/index.ts +18 -0
- package/src/knobImmuneExports.ts +97 -0
- package/src/layouts/AsyncBoundary.spec.tsx +77 -0
- package/src/layouts/AsyncBoundary.stories.tsx +33 -1
- package/src/layouts/AsyncBoundary.tsx +183 -46
- package/src/layouts/Attachments.stories.tsx +28 -14
- package/src/layouts/Breadcrumbs.stories.tsx +22 -1
- package/src/layouts/EmptyState.stories.tsx +94 -26
- package/src/layouts/EmptyState.tsx +169 -0
- package/src/layouts/PageHeader.stories.tsx +68 -15
- package/src/layouts/PageTemplates.tsx +11 -6
- package/src/layouts/PaneScaffold.stories.tsx +132 -37
- package/src/layouts/PaneScaffold.tsx +354 -18
- package/src/layouts/ScreenToolbar.stories.tsx +36 -11
- package/src/layouts/Sidebar.stories.tsx +30 -7
- package/src/layouts/Tags.stories.tsx +31 -32
- package/src/layouts/Timeline.stories.tsx +2 -2
- package/src/layouts/Toolbar.stories.tsx +19 -0
- package/src/layouts/ViewSwitcher.stories.tsx +11 -3
- package/src/layouts/ViewSwitcher.tsx +101 -48
- package/src/layouts/attachments.tsx +394 -186
- package/src/layouts/breadcrumbs.tsx +213 -75
- package/src/layouts/layouts.spec.tsx +32 -0
- package/src/layouts/page.tsx +103 -164
- package/src/layouts/pageHeadingScope.tsx +28 -2
- package/src/layouts/sidebar.tsx +184 -91
- package/src/layouts/tags-trigger.spec.tsx +8 -8
- package/src/layouts/tags.tsx +356 -159
- package/src/layouts/timeline-comments.spec.tsx +17 -0
- package/src/layouts/timeline.tsx +179 -65
- package/src/layouts/toolbar.tsx +78 -27
- package/src/shared/i18n.ts +26 -0
- package/src/shared/textRidesText.ts +57 -0
- package/src/shared/useReturnFocusOnClose.ts +7 -1
- package/src/surfaces.tsx +83 -22
- package/src/tamagui.spec.ts +19 -4
- package/src/tamagui.ts +14 -6
- package/src/views/Calendar.stories.tsx +2 -1
- package/src/views/Calendar.tsx +129 -81
- package/src/views/Dashboard.stories.tsx +132 -1
- package/src/views/Dashboard.tsx +440 -127
- package/src/views/Gantt.stories.tsx +6 -5
- package/src/views/Gantt.tsx +330 -61
- package/src/views/ImageGrid.stories.tsx +81 -17
- package/src/views/ImageGrid.tsx +176 -96
- package/src/views/Kanban.native.tsx +73 -42
- package/src/views/Kanban.stories.tsx +42 -26
- package/src/views/Kanban.tsx +68 -40
- package/src/views/List.stories.tsx +107 -29
- package/src/views/List.tsx +335 -109
- package/src/views/ReportBuilder.stories.tsx +28 -1
- package/src/views/ReportBuilder.tsx +647 -275
- package/src/views/TreeView.stories.tsx +19 -0
- package/src/views/TreeView.tsx +194 -59
- package/types/Accordion/index.d.ts +10 -2
- package/types/Accordion/index.d.ts.map +1 -1
- package/types/Alert/index.d.ts +8 -2
- package/types/Alert/index.d.ts.map +1 -1
- package/types/AnimateHeight/index.d.ts +48 -0
- package/types/AnimateHeight/index.d.ts.map +1 -0
- package/types/Avatar/getInitials.d.ts +26 -0
- package/types/Avatar/getInitials.d.ts.map +1 -1
- package/types/Avatar/index.d.ts +34 -11
- package/types/Avatar/index.d.ts.map +1 -1
- package/types/Badge/index.d.ts +17 -12
- package/types/Badge/index.d.ts.map +1 -1
- package/types/Button.d.ts +42 -0
- package/types/Button.d.ts.map +1 -0
- package/types/Carousel/index.d.ts.map +1 -1
- package/types/Chip/index.d.ts +41 -1
- package/types/Chip/index.d.ts.map +1 -1
- package/types/DotIndicator/index.d.ts +4 -3
- package/types/DotIndicator/index.d.ts.map +1 -1
- package/types/DropdownMenu/index.d.ts +39 -5
- package/types/DropdownMenu/index.d.ts.map +1 -1
- package/types/ErrorBoundary/index.d.ts +1 -1
- package/types/Pagination.d.ts.map +1 -1
- package/types/ProgressSteps/index.d.ts +20 -5
- package/types/ProgressSteps/index.d.ts.map +1 -1
- package/types/Quote/index.d.ts +4 -3
- package/types/Quote/index.d.ts.map +1 -1
- package/types/SheetModal/index.d.ts +7 -10
- package/types/SheetModal/index.d.ts.map +1 -1
- package/types/SheetModal/index.native.d.ts +6 -13
- package/types/SheetModal/index.native.d.ts.map +1 -1
- package/types/Skeleton/index.d.ts +40 -1
- package/types/Skeleton/index.d.ts.map +1 -1
- package/types/SkipLink/index.d.ts +5 -6
- package/types/SkipLink/index.d.ts.map +1 -1
- package/types/Tabs/index.d.ts +12 -10
- package/types/Tabs/index.d.ts.map +1 -1
- package/types/Toast/index.d.ts +32 -9
- package/types/Toast/index.d.ts.map +1 -1
- package/types/Toast/store.d.ts +59 -4
- package/types/Toast/store.d.ts.map +1 -1
- package/types/Tooltip/index.d.ts +50 -5
- package/types/Tooltip/index.d.ts.map +1 -1
- package/types/Video/PlayerChrome.d.ts +24 -0
- package/types/Video/PlayerChrome.d.ts.map +1 -0
- package/types/Video/VideoFrame.d.ts.map +1 -1
- package/types/Video/index.d.ts +3 -2
- package/types/Video/index.d.ts.map +1 -1
- package/types/Video/index.native.d.ts +3 -2
- package/types/Video/index.native.d.ts.map +1 -1
- package/types/Video/types.d.ts +7 -1
- package/types/Video/types.d.ts.map +1 -1
- package/types/Wheel/index.d.ts +10 -1
- package/types/Wheel/index.d.ts.map +1 -1
- package/types/charts/BarChart.d.ts +7 -1
- package/types/charts/BarChart.d.ts.map +1 -1
- package/types/charts/index.d.ts +1 -0
- package/types/charts/index.d.ts.map +1 -1
- package/types/code/CodeBlock/index.d.ts.map +1 -1
- package/types/feedback/ConfirmDialog.d.ts +6 -0
- package/types/feedback/ConfirmDialog.d.ts.map +1 -1
- package/types/icons/themed.d.ts.map +1 -1
- package/types/images/Image/ImageFrame.d.ts +40 -0
- package/types/images/Image/ImageFrame.d.ts.map +1 -0
- package/types/images/Image/index.d.ts +1 -1
- package/types/images/Image/index.d.ts.map +1 -1
- package/types/images/Image/index.native.d.ts +1 -1
- package/types/images/Image/index.native.d.ts.map +1 -1
- package/types/images/Image/shared.d.ts +13 -0
- package/types/images/Image/shared.d.ts.map +1 -0
- package/types/images/Image/types.d.ts +27 -1
- package/types/images/Image/types.d.ts.map +1 -1
- package/types/index.d.ts +6 -0
- package/types/index.d.ts.map +1 -1
- package/types/knobImmuneExports.d.ts +21 -0
- package/types/knobImmuneExports.d.ts.map +1 -0
- package/types/layouts/AsyncBoundary.d.ts +20 -2
- package/types/layouts/AsyncBoundary.d.ts.map +1 -1
- package/types/layouts/EmptyState.d.ts +26 -0
- package/types/layouts/EmptyState.d.ts.map +1 -0
- package/types/layouts/PageTemplates.d.ts +5 -3
- package/types/layouts/PageTemplates.d.ts.map +1 -1
- package/types/layouts/PaneScaffold.d.ts +27 -5
- package/types/layouts/PaneScaffold.d.ts.map +1 -1
- package/types/layouts/ViewSwitcher.d.ts +7 -4
- package/types/layouts/ViewSwitcher.d.ts.map +1 -1
- package/types/layouts/attachments.d.ts +4 -2
- package/types/layouts/attachments.d.ts.map +1 -1
- package/types/layouts/breadcrumbs.d.ts +13 -5
- package/types/layouts/breadcrumbs.d.ts.map +1 -1
- package/types/layouts/page.d.ts +16 -27
- package/types/layouts/page.d.ts.map +1 -1
- package/types/layouts/pageHeadingScope.d.ts +14 -1
- package/types/layouts/pageHeadingScope.d.ts.map +1 -1
- package/types/layouts/sidebar.d.ts +3 -1
- package/types/layouts/sidebar.d.ts.map +1 -1
- package/types/layouts/tags.d.ts +4 -1
- package/types/layouts/tags.d.ts.map +1 -1
- package/types/layouts/timeline.d.ts +7 -5
- package/types/layouts/timeline.d.ts.map +1 -1
- package/types/layouts/toolbar.d.ts +1 -1
- package/types/layouts/toolbar.d.ts.map +1 -1
- package/types/shared/i18n.d.ts +14 -0
- package/types/shared/i18n.d.ts.map +1 -0
- package/types/shared/textRidesText.d.ts +20 -0
- package/types/shared/textRidesText.d.ts.map +1 -0
- package/types/shared/useReturnFocusOnClose.d.ts.map +1 -1
- package/types/surfaces.d.ts +0 -14
- package/types/surfaces.d.ts.map +1 -1
- package/types/tamagui.d.ts +2 -3
- package/types/tamagui.d.ts.map +1 -1
- package/types/views/Calendar.d.ts.map +1 -1
- package/types/views/Dashboard.d.ts +68 -6
- package/types/views/Dashboard.d.ts.map +1 -1
- package/types/views/Gantt.d.ts +5 -0
- package/types/views/Gantt.d.ts.map +1 -1
- package/types/views/ImageGrid.d.ts +4 -0
- package/types/views/ImageGrid.d.ts.map +1 -1
- package/types/views/Kanban.d.ts.map +1 -1
- package/types/views/Kanban.native.d.ts +12 -1
- package/types/views/Kanban.native.d.ts.map +1 -1
- package/types/views/List.d.ts +45 -6
- package/types/views/List.d.ts.map +1 -1
- package/types/views/ReportBuilder.d.ts +8 -54
- package/types/views/ReportBuilder.d.ts.map +1 -1
- package/types/views/TreeView.d.ts +13 -11
- package/types/views/TreeView.d.ts.map +1 -1
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
FOCUS_VISIBLE_RING,
|
|
3
|
+
MIN_PRESS_TARGET,
|
|
4
|
+
ensureKeyboardModalityTracking,
|
|
5
|
+
radiusClassProps,
|
|
6
|
+
useResolvedKnobs,
|
|
7
|
+
wasKeyboardFocus,
|
|
8
|
+
} from "@multiplatform.one/theme";
|
|
2
9
|
import { CheckIcon } from "@phosphor-icons/react";
|
|
3
|
-
import type
|
|
4
|
-
import { useTranslation } from "
|
|
10
|
+
import { useRef, useState, type KeyboardEvent } from "react";
|
|
11
|
+
import { useTranslation } from "../shared/i18n";
|
|
5
12
|
import type { GetProps } from "tamagui";
|
|
6
|
-
import { View, XStack, getTokens, styled } from "tamagui";
|
|
13
|
+
import { View, XStack, getTokens, isWeb, styled } from "tamagui";
|
|
7
14
|
import { componentColors } from "../componentColors";
|
|
8
15
|
import { withInterp } from "../shared/t";
|
|
9
16
|
|
|
@@ -12,9 +19,10 @@ import { withInterp } from "../shared/t";
|
|
|
12
19
|
/**
|
|
13
20
|
* Which IDIOM the strip paints — never a size of its own (LC-15 / Axiom 5).
|
|
14
21
|
*
|
|
15
|
-
* - `dots`
|
|
16
|
-
*
|
|
17
|
-
* - `
|
|
22
|
+
* - `dots` — carousel page control: idle circles, active a short capsule
|
|
23
|
+
* (iOS UIPageControl + Linear/Stripe worm, not a 3× caterpillar).
|
|
24
|
+
* - `pills` — always capsules; idle is a short pill, active a longer one.
|
|
25
|
+
* - `bars` — progress-TICK idiom: the mark takes the scale's `bar` metric
|
|
18
26
|
* and never carries a completion badge (a tick is not a badge).
|
|
19
27
|
*
|
|
20
28
|
* **The mark's size resolves through exactly one channel**, in this order:
|
|
@@ -99,6 +107,12 @@ const dotGeometryMap: Record<string, { dot: number; bar: number; active: number
|
|
|
99
107
|
*/
|
|
100
108
|
const CHECK_MIN_DOT = 8;
|
|
101
109
|
|
|
110
|
+
/**
|
|
111
|
+
* Instagram / Swiper `dynamicBullets` window: five marks, distance scale,
|
|
112
|
+
* the rest collapse. Long carousels stay compact instead of a 10-dot ruler.
|
|
113
|
+
*/
|
|
114
|
+
const WINDOW = 5;
|
|
115
|
+
|
|
102
116
|
/** Resolve a size token (`$0.75`) or raw px to the number the press-target math needs. */
|
|
103
117
|
function sizePx(value: number | string | undefined, fallback: number): number {
|
|
104
118
|
if (typeof value === "number") return value;
|
|
@@ -109,6 +123,60 @@ function sizePx(value: number | string | undefined, fallback: number): number {
|
|
|
109
123
|
return fallback;
|
|
110
124
|
}
|
|
111
125
|
|
|
126
|
+
function idleMarkWidth(variant: DotVariant, itemSize: number, activeSize: number): number {
|
|
127
|
+
if (variant === "pills") return Math.round(itemSize * 2.25);
|
|
128
|
+
// Tick: wider than tall when unpinned; Pagination's 24×24 pin is unchanged
|
|
129
|
+
// because `max(itemSize, 0.55×active)` keeps the pin when itemSize is chunky.
|
|
130
|
+
if (variant === "bars") return Math.max(itemSize, Math.round(activeSize * 0.55));
|
|
131
|
+
return itemSize;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
function activeMarkWidth(variant: DotVariant, itemSize: number, geometryActive: number): number {
|
|
135
|
+
// Unpinned carousel dots: a short capsule (~2×), not a 3× worm. Host pins
|
|
136
|
+
// (Pagination 28×8 / 36×24) still win via `sizePx(activeDotSize, …)`.
|
|
137
|
+
if (variant === "dots") return Math.round(itemSize * 2);
|
|
138
|
+
if (variant === "pills") return Math.round(itemSize * 3);
|
|
139
|
+
return geometryActive;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
function windowRange(active: number, total: number): [number, number] {
|
|
143
|
+
if (total <= WINDOW) return [0, Math.max(0, total - 1)];
|
|
144
|
+
const half = Math.floor(WINDOW / 2);
|
|
145
|
+
let start = active - half;
|
|
146
|
+
let end = active + half;
|
|
147
|
+
if (start < 0) {
|
|
148
|
+
end -= start;
|
|
149
|
+
start = 0;
|
|
150
|
+
}
|
|
151
|
+
if (end > total - 1) {
|
|
152
|
+
start -= end - (total - 1);
|
|
153
|
+
end = total - 1;
|
|
154
|
+
}
|
|
155
|
+
return [Math.max(0, start), end];
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
function windowScale(
|
|
159
|
+
index: number,
|
|
160
|
+
active: number,
|
|
161
|
+
start: number,
|
|
162
|
+
end: number,
|
|
163
|
+
total: number,
|
|
164
|
+
): number {
|
|
165
|
+
if (total <= WINDOW) return 1;
|
|
166
|
+
if (index < start || index > end) return 0;
|
|
167
|
+
const dist = Math.abs(index - active);
|
|
168
|
+
if (dist === 0) return 1;
|
|
169
|
+
if (dist === 1) return 0.72;
|
|
170
|
+
return 0.48;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
function isRtl(node: HTMLElement | null): boolean {
|
|
174
|
+
if (typeof document === "undefined") return false;
|
|
175
|
+
const fromNode = node?.closest("[dir]")?.getAttribute("dir");
|
|
176
|
+
const dir = fromNode || document.documentElement.dir;
|
|
177
|
+
return dir === "rtl";
|
|
178
|
+
}
|
|
179
|
+
|
|
112
180
|
// ── Styled components ─────────────────────────────────────────
|
|
113
181
|
|
|
114
182
|
const DotsContainer = styled(XStack, {
|
|
@@ -116,6 +184,8 @@ const DotsContainer = styled(XStack, {
|
|
|
116
184
|
alignItems: "center",
|
|
117
185
|
justifyContent: "center",
|
|
118
186
|
gap: "$2",
|
|
187
|
+
// Outer +2px LC-71 ring on the painted mark must not clip at the strip edge.
|
|
188
|
+
overflow: "visible",
|
|
119
189
|
variants: {
|
|
120
190
|
// A rail seats the strip on a filled capsule instead of the page. It is a
|
|
121
191
|
// variant of the strip rather than host chrome because the rail and the
|
|
@@ -145,12 +215,15 @@ const DotTarget = styled(View, {
|
|
|
145
215
|
alignItems: "center",
|
|
146
216
|
justifyContent: "center",
|
|
147
217
|
backgroundColor: "transparent",
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
218
|
+
overflow: "visible",
|
|
219
|
+
borderRadius: 1000,
|
|
220
|
+
// LC-71: the 44px hit box is not the perceived control (Chip ✕ rule). Rest,
|
|
221
|
+
// mouse-focus, and :focus-visible paint no ring here — the ring rides the
|
|
222
|
+
// painted mark via FOCUS_VISIBLE_RING when wasKeyboardFocus().
|
|
223
|
+
outlineWidth: 0,
|
|
224
|
+
outlineStyle: "none" as any,
|
|
225
|
+
focusStyle: { outlineWidth: 0, outlineStyle: "none" as any },
|
|
226
|
+
focusVisibleStyle: { outlineWidth: 0, outlineStyle: "none" as any },
|
|
154
227
|
});
|
|
155
228
|
|
|
156
229
|
const Dot = styled(View, {
|
|
@@ -207,6 +280,9 @@ export function DotIndicator({
|
|
|
207
280
|
}: DotIndicatorProps) {
|
|
208
281
|
const { t } = useTranslation();
|
|
209
282
|
const { knobProps } = useResolvedKnobs();
|
|
283
|
+
const rootRef = useRef<HTMLElement | null>(null);
|
|
284
|
+
const [kbFocusIndex, setKbFocusIndex] = useState<number | null>(null);
|
|
285
|
+
if (isWeb) ensureKeyboardModalityTracking();
|
|
210
286
|
// Consumer gap ejects; otherwise the space knob drives the inter-item gap.
|
|
211
287
|
const gap = gapProp ?? dotGapMap[knobProps.space] ?? "$2";
|
|
212
288
|
const geometry = dotGeometryMap[knobProps.sizeToken] ?? dotGeometryMap.$4;
|
|
@@ -217,7 +293,8 @@ export function DotIndicator({
|
|
|
217
293
|
// A host may pin the painted geometry (Pagination's token sizes); otherwise
|
|
218
294
|
// the size knob drives it. Pin first, scale second — one channel.
|
|
219
295
|
const itemSize = sizePx(dotSize, isTick ? geometry.bar : geometry.dot);
|
|
220
|
-
const activeSize = sizePx(activeDotSize, geometry.active);
|
|
296
|
+
const activeSize = sizePx(activeDotSize, activeMarkWidth(variant, itemSize, geometry.active));
|
|
297
|
+
const idleWidth = idleMarkWidth(variant, itemSize, activeSize);
|
|
221
298
|
|
|
222
299
|
// Horizontal slop is capped at just under half the resolved gap so two
|
|
223
300
|
// enlarged targets keep ≥1px of dead space between them.
|
|
@@ -231,20 +308,44 @@ export function DotIndicator({
|
|
|
231
308
|
const isStep = idiom === "step";
|
|
232
309
|
const label = isStep ? t("Go to step {{number}}") : t("Go to item {{number}}");
|
|
233
310
|
const currentValue = isStep ? "step" : "true";
|
|
311
|
+
// LC-68: motion gates on the resolved animation knob (undefined at "none"
|
|
312
|
+
// / prefers-reduced-motion). Host `transition` may name the tween but cannot
|
|
313
|
+
// re-enable motion the knob turned off.
|
|
314
|
+
const motion = knobProps.transition ? (transition ?? knobProps.transition) : undefined;
|
|
234
315
|
// LC-25: discrete jumps tween the indicator; the explicit CSS shorthand is
|
|
235
316
|
// the belt-and-suspenders arm for the web driver, which only picks up
|
|
236
317
|
// Tamagui's named transition on some props.
|
|
237
|
-
const motionStyle =
|
|
318
|
+
const motionStyle = motion
|
|
238
319
|
? {
|
|
239
320
|
transition:
|
|
240
|
-
"width var(--mp-transition,
|
|
321
|
+
"width var(--mp-transition, 200ms) ease, height var(--mp-transition, 200ms) ease, background-color var(--mp-transition, 200ms) ease, transform var(--mp-transition, 200ms) ease",
|
|
241
322
|
}
|
|
242
323
|
: undefined;
|
|
243
324
|
|
|
325
|
+
const clampedActive = Math.min(Math.max(0, activeIndex), Math.max(0, total - 1));
|
|
326
|
+
const [winStart, winEnd] = windowRange(clampedActive, total);
|
|
327
|
+
|
|
328
|
+
const focusMark = (index: number) => {
|
|
329
|
+
requestAnimationFrame(() => {
|
|
330
|
+
const el = rootRef.current?.querySelector?.(
|
|
331
|
+
`[data-dot-index="${index}"]`,
|
|
332
|
+
) as HTMLElement | null;
|
|
333
|
+
el?.focus?.();
|
|
334
|
+
});
|
|
335
|
+
};
|
|
336
|
+
|
|
337
|
+
const moveTo = (index: number) => {
|
|
338
|
+
const next = Math.min(Math.max(0, index), total - 1);
|
|
339
|
+
onChange?.(next);
|
|
340
|
+
focusMark(next);
|
|
341
|
+
};
|
|
342
|
+
|
|
244
343
|
return (
|
|
245
344
|
<DotsContainer
|
|
345
|
+
ref={rootRef as any}
|
|
246
346
|
gap={gap}
|
|
247
347
|
rail={rail}
|
|
348
|
+
{...(interactive ? ({ role: "group" } as const) : undefined)}
|
|
248
349
|
{...(rail
|
|
249
350
|
? { paddingHorizontal: knobProps.panelPadding.padding, height: knobProps.sizeToken }
|
|
250
351
|
: undefined)}
|
|
@@ -253,7 +354,11 @@ export function DotIndicator({
|
|
|
253
354
|
const isActive = index === activeIndex;
|
|
254
355
|
// Completion is what a step ALREADY did; the current step outranks it.
|
|
255
356
|
const isCompleted = !isActive && !!completedSteps?.has(index);
|
|
256
|
-
const
|
|
357
|
+
const scale = windowScale(index, clampedActive, winStart, winEnd, total);
|
|
358
|
+
const hidden = scale === 0;
|
|
359
|
+
const baseWidth = isActive ? activeSize : idleWidth;
|
|
360
|
+
const dotWidth = Math.max(1, Math.round(baseWidth * scale));
|
|
361
|
+
const dotHeight = Math.max(1, Math.round(itemSize * scale));
|
|
257
362
|
// Only the NON-selected fills are computed here. The selected mark
|
|
258
363
|
// stays on the `active` variant so no later prop can paint over the
|
|
259
364
|
// accent — the D-01 failure mode this component was fixed for.
|
|
@@ -264,16 +369,21 @@ export function DotIndicator({
|
|
|
264
369
|
// separates from the capsule fill it sits on.
|
|
265
370
|
componentColors.indicator.track
|
|
266
371
|
: componentColors.indicator.inactive;
|
|
372
|
+
const kbRing = kbFocusIndex === index;
|
|
267
373
|
return (
|
|
268
374
|
<DotTarget
|
|
269
375
|
key={index}
|
|
376
|
+
display={hidden ? "none" : "flex"}
|
|
270
377
|
width={dotWidth + slopX * 2}
|
|
271
378
|
minHeight={MIN_PRESS_TARGET}
|
|
272
379
|
marginHorizontal={-slopX}
|
|
273
380
|
marginVertical={-outsetY}
|
|
381
|
+
zIndex={kbRing ? 1 : undefined}
|
|
274
382
|
cursor={interactive ? "pointer" : disabled ? "not-allowed" : "default"}
|
|
275
383
|
onPress={interactive ? () => onChange?.(index) : undefined}
|
|
276
384
|
aria-label={withInterp(label, { number: index + 1 })}
|
|
385
|
+
{...({ "data-dot-index": String(index) } as Record<string, unknown>)}
|
|
386
|
+
{...(hidden ? ({ "data-dot-hidden": "true" } as Record<string, unknown>) : undefined)}
|
|
277
387
|
{...(isActive
|
|
278
388
|
? ({ "aria-current": currentValue } as Record<string, unknown>)
|
|
279
389
|
: undefined)}
|
|
@@ -281,10 +391,32 @@ export function DotIndicator({
|
|
|
281
391
|
? {
|
|
282
392
|
role: "button" as const,
|
|
283
393
|
tabIndex: 0,
|
|
284
|
-
|
|
394
|
+
onFocus: () => {
|
|
395
|
+
// Native has no pointer-vs-keyboard split; any focus rings.
|
|
396
|
+
if (!isWeb || wasKeyboardFocus()) setKbFocusIndex(index);
|
|
397
|
+
},
|
|
398
|
+
onBlur: () => {
|
|
399
|
+
setKbFocusIndex((prev) => (prev === index ? null : prev));
|
|
400
|
+
},
|
|
401
|
+
onKeyDown: ((e: KeyboardEvent) => {
|
|
285
402
|
if (e.key === "Enter" || e.key === " ") {
|
|
286
403
|
e.preventDefault();
|
|
287
404
|
onChange?.(index);
|
|
405
|
+
return;
|
|
406
|
+
}
|
|
407
|
+
const rtl = isRtl(e.currentTarget as unknown as HTMLElement);
|
|
408
|
+
if (e.key === "ArrowRight") {
|
|
409
|
+
e.preventDefault();
|
|
410
|
+
moveTo(index + (rtl ? -1 : 1));
|
|
411
|
+
} else if (e.key === "ArrowLeft") {
|
|
412
|
+
e.preventDefault();
|
|
413
|
+
moveTo(index + (rtl ? 1 : -1));
|
|
414
|
+
} else if (e.key === "Home") {
|
|
415
|
+
e.preventDefault();
|
|
416
|
+
moveTo(0);
|
|
417
|
+
} else if (e.key === "End") {
|
|
418
|
+
e.preventDefault();
|
|
419
|
+
moveTo(total - 1);
|
|
288
420
|
}
|
|
289
421
|
}) as unknown as () => void,
|
|
290
422
|
}
|
|
@@ -306,14 +438,17 @@ export function DotIndicator({
|
|
|
306
438
|
: undefined),
|
|
307
439
|
})}
|
|
308
440
|
width={dotWidth}
|
|
309
|
-
height={
|
|
441
|
+
height={dotHeight}
|
|
310
442
|
disabled={disabled}
|
|
311
|
-
transition={
|
|
443
|
+
transition={motion}
|
|
312
444
|
style={motionStyle}
|
|
313
|
-
{...(
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
445
|
+
{...(kbRing ? FOCUS_VISIBLE_RING : { outlineWidth: 0 })}
|
|
446
|
+
{...({
|
|
447
|
+
[dotStateAttribute]: isActive ? "active" : "idle",
|
|
448
|
+
"data-mark-width": String(dotWidth),
|
|
449
|
+
"data-mark-height": String(dotHeight),
|
|
450
|
+
} as Record<string, unknown>)}
|
|
451
|
+
{...(kbRing ? ({ "data-dot-ring": "true" } as Record<string, unknown>) : undefined)}
|
|
317
452
|
>
|
|
318
453
|
{isCompleted && !isTick && itemSize >= CHECK_MIN_DOT && (
|
|
319
454
|
<CheckIcon size={8} color="white" weight="bold" />
|
|
@@ -152,6 +152,128 @@ describe("DropdownMenu", () => {
|
|
|
152
152
|
});
|
|
153
153
|
});
|
|
154
154
|
|
|
155
|
+
describe("DropdownMenu items path — checked entries", () => {
|
|
156
|
+
// Would have caught the original defect: the convenience items=[] path
|
|
157
|
+
// routed entries carrying `checked` to CheckboxItem and silently dropped
|
|
158
|
+
// their `onSelect` (only `onCheckedChange` was wired), and forwarded no
|
|
159
|
+
// `closeOnSelect` — checked navigation menus stayed open and dead.
|
|
160
|
+
it("fires BOTH onSelect and onCheckedChange for a checked entry", async () => {
|
|
161
|
+
const onSelect = vi.fn();
|
|
162
|
+
const onCheckedChange = vi.fn();
|
|
163
|
+
renderWithProviders(
|
|
164
|
+
<DropdownMenu
|
|
165
|
+
defaultOpen
|
|
166
|
+
items={[{ key: "list", label: "List", checked: false, onSelect, onCheckedChange }]}
|
|
167
|
+
>
|
|
168
|
+
<Button>Views</Button>
|
|
169
|
+
</DropdownMenu>,
|
|
170
|
+
);
|
|
171
|
+
await waitFor(() => {
|
|
172
|
+
expect(document.querySelector('[role="menuitemcheckbox"]')).toBeTruthy();
|
|
173
|
+
});
|
|
174
|
+
const item = document.querySelector('[role="menuitemcheckbox"]') as HTMLElement;
|
|
175
|
+
expect(item.getAttribute("aria-checked")).toBe("false");
|
|
176
|
+
fireEvent.click(item);
|
|
177
|
+
expect(onCheckedChange).toHaveBeenCalledWith(true);
|
|
178
|
+
expect(onSelect).toHaveBeenCalledTimes(1);
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
it("closes the menu when a checked entry sets closeOnSelect", async () => {
|
|
182
|
+
const onSelect = vi.fn();
|
|
183
|
+
renderWithProviders(
|
|
184
|
+
<DropdownMenu
|
|
185
|
+
defaultOpen
|
|
186
|
+
items={[{ key: "kanban", label: "Kanban", checked: false, closeOnSelect: true, onSelect }]}
|
|
187
|
+
>
|
|
188
|
+
<Button>Views</Button>
|
|
189
|
+
</DropdownMenu>,
|
|
190
|
+
);
|
|
191
|
+
await waitFor(() => {
|
|
192
|
+
expect(document.querySelector('[role="menuitemcheckbox"]')).toBeTruthy();
|
|
193
|
+
});
|
|
194
|
+
fireEvent.click(document.querySelector('[role="menuitemcheckbox"]') as HTMLElement);
|
|
195
|
+
expect(onSelect).toHaveBeenCalledTimes(1);
|
|
196
|
+
await waitFor(() => {
|
|
197
|
+
expect(document.querySelector('[role="menu"]')).toBeFalsy();
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
it("menu-level closeOnSelect closes a checked pick (radio-style navigation)", async () => {
|
|
202
|
+
// The exact consumer shape (ViewHeader switcher / KanbanBoardPicker /
|
|
203
|
+
// SortControl): every entry is a checkbox item (single-select radio
|
|
204
|
+
// semantics, shared check gutter), the pick navigates AND closes.
|
|
205
|
+
const navigate = vi.fn();
|
|
206
|
+
renderWithProviders(
|
|
207
|
+
<DropdownMenu
|
|
208
|
+
defaultOpen
|
|
209
|
+
closeOnSelect
|
|
210
|
+
items={["List", "Kanban"].map((view) => ({
|
|
211
|
+
key: view,
|
|
212
|
+
label: view,
|
|
213
|
+
checked: view === "List",
|
|
214
|
+
onSelect: () => navigate(view),
|
|
215
|
+
}))}
|
|
216
|
+
>
|
|
217
|
+
<Button>List</Button>
|
|
218
|
+
</DropdownMenu>,
|
|
219
|
+
);
|
|
220
|
+
await waitFor(() => {
|
|
221
|
+
expect(document.querySelectorAll('[role="menuitemcheckbox"]').length).toBe(2);
|
|
222
|
+
});
|
|
223
|
+
const rows = Array.from(document.querySelectorAll<HTMLElement>('[role="menuitemcheckbox"]'));
|
|
224
|
+
// CheckboxItem semantics stay intact: aria-checked marks the current view.
|
|
225
|
+
expect(rows[0].getAttribute("aria-checked")).toBe("true");
|
|
226
|
+
expect(rows[1].getAttribute("aria-checked")).toBe("false");
|
|
227
|
+
fireEvent.click(rows[1]);
|
|
228
|
+
expect(navigate).toHaveBeenCalledWith("Kanban");
|
|
229
|
+
await waitFor(() => {
|
|
230
|
+
expect(document.querySelector('[role="menu"]')).toBeFalsy();
|
|
231
|
+
});
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
it("keeps the menu open for checked entries by default (LC-21 COMPOSE)", async () => {
|
|
235
|
+
// Positive control for the close assertions above: without closeOnSelect
|
|
236
|
+
// a checkable toggle composes, so the menu MUST stay open.
|
|
237
|
+
const onCheckedChange = vi.fn();
|
|
238
|
+
renderWithProviders(
|
|
239
|
+
<DropdownMenu
|
|
240
|
+
defaultOpen
|
|
241
|
+
items={[{ key: "grid", label: "Show grid", checked: true, onCheckedChange }]}
|
|
242
|
+
>
|
|
243
|
+
<Button>View options</Button>
|
|
244
|
+
</DropdownMenu>,
|
|
245
|
+
);
|
|
246
|
+
await waitFor(() => {
|
|
247
|
+
expect(document.querySelector('[role="menuitemcheckbox"]')).toBeTruthy();
|
|
248
|
+
});
|
|
249
|
+
fireEvent.click(document.querySelector('[role="menuitemcheckbox"]') as HTMLElement);
|
|
250
|
+
expect(onCheckedChange).toHaveBeenCalledWith(false);
|
|
251
|
+
// Unmount-on-close is async — settle past it so "still open" can fail
|
|
252
|
+
// (the closing specs above are the positive control for this detector).
|
|
253
|
+
await new Promise((resolve) => setTimeout(resolve, 400));
|
|
254
|
+
expect(document.querySelector('[role="menu"]')).toBeTruthy();
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
it("forwards entry-level closeOnSelect=false on plain items", async () => {
|
|
258
|
+
const onSelect = vi.fn();
|
|
259
|
+
renderWithProviders(
|
|
260
|
+
<DropdownMenu
|
|
261
|
+
defaultOpen
|
|
262
|
+
items={[{ key: "apply", label: "Apply", closeOnSelect: false, onSelect }]}
|
|
263
|
+
>
|
|
264
|
+
<Button>Actions</Button>
|
|
265
|
+
</DropdownMenu>,
|
|
266
|
+
);
|
|
267
|
+
await waitFor(() => {
|
|
268
|
+
expect(document.querySelector('[role="menuitem"]')).toBeTruthy();
|
|
269
|
+
});
|
|
270
|
+
fireEvent.click(document.querySelector('[role="menuitem"]') as HTMLElement);
|
|
271
|
+
expect(onSelect).toHaveBeenCalledTimes(1);
|
|
272
|
+
await new Promise((resolve) => setTimeout(resolve, 400));
|
|
273
|
+
expect(document.querySelector('[role="menu"]')).toBeTruthy();
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
|
+
|
|
155
277
|
describe("DropdownMenu disabledReason (DG-ST-03)", () => {
|
|
156
278
|
let warnSpy: ReturnType<typeof vi.spyOn>;
|
|
157
279
|
|
|
@@ -220,3 +342,53 @@ describe("DropdownMenu disabledReason (DG-ST-03)", () => {
|
|
|
220
342
|
expect(document.querySelector("[data-mp-disabled-reason]")).toBeNull();
|
|
221
343
|
});
|
|
222
344
|
});
|
|
345
|
+
|
|
346
|
+
describe("DropdownMenu LC-71 keyboard ring", () => {
|
|
347
|
+
it("highlights the focused row and keeps CONTAINER-CLIP square corners", async () => {
|
|
348
|
+
renderMenu();
|
|
349
|
+
await waitFor(() => {
|
|
350
|
+
expect(document.querySelector('[role="menu"]')).toBeTruthy();
|
|
351
|
+
});
|
|
352
|
+
const items = Array.from(
|
|
353
|
+
document.querySelectorAll<HTMLElement>('[role="menuitem"]:not([aria-disabled="true"])'),
|
|
354
|
+
);
|
|
355
|
+
fireEvent.focus(items[1]);
|
|
356
|
+
expect(items[1].getAttribute("data-highlighted")).toBe("true");
|
|
357
|
+
// LC-72 CONTAINER-CLIP: the overlay clips; rows stay square.
|
|
358
|
+
expect(items[1].className).toMatch(/_btlr-0px/);
|
|
359
|
+
expect(items[1].className).toMatch(/_bbrr-0px/);
|
|
360
|
+
// LC-71 kb-only: Tamagui focus/focusVisible styles carry no ring; the
|
|
361
|
+
// keyboard ring is painted via keyboardFocusRingProps on kb-origin focus.
|
|
362
|
+
expect(items[1].className).toMatch(/_outlineWidth-0focus-visible-0px/);
|
|
363
|
+
});
|
|
364
|
+
|
|
365
|
+
it("keeps destructive rows square and highlighted (no error-intent border)", async () => {
|
|
366
|
+
renderMenu();
|
|
367
|
+
await waitFor(() => {
|
|
368
|
+
expect(document.querySelector('[role="menu"]')).toBeTruthy();
|
|
369
|
+
});
|
|
370
|
+
const del = Array.from(document.querySelectorAll<HTMLElement>('[role="menuitem"]')).find((el) =>
|
|
371
|
+
el.textContent?.includes("Delete"),
|
|
372
|
+
) as HTMLElement;
|
|
373
|
+
fireEvent.focus(del);
|
|
374
|
+
expect(del.getAttribute("data-highlighted")).toBe("true");
|
|
375
|
+
expect(del.className).toMatch(/_btlr-0px/);
|
|
376
|
+
expect(del.className).toMatch(/_outlineWidth-0focus-visible-0px/);
|
|
377
|
+
});
|
|
378
|
+
|
|
379
|
+
it("ArrowUp on a closed trigger opens onto the last item", async () => {
|
|
380
|
+
renderWithProviders(
|
|
381
|
+
<DropdownMenu items={[{ label: "One" }, { label: "Two" }, { label: "Three" }]}>
|
|
382
|
+
<Button>Actions</Button>
|
|
383
|
+
</DropdownMenu>,
|
|
384
|
+
);
|
|
385
|
+
const trigger = document.querySelector('[aria-haspopup="menu"]') as HTMLElement;
|
|
386
|
+
trigger.focus();
|
|
387
|
+
fireEvent.keyDown(trigger, { key: "ArrowUp" });
|
|
388
|
+
await waitFor(() => {
|
|
389
|
+
const items = document.querySelectorAll('[role="menuitem"]');
|
|
390
|
+
expect(items.length).toBe(3);
|
|
391
|
+
expect(document.activeElement).toBe(items[2]);
|
|
392
|
+
});
|
|
393
|
+
});
|
|
394
|
+
});
|
|
@@ -2,6 +2,7 @@ import type { Meta, StoryObj } from "@storybook/react-native-web-vite";
|
|
|
2
2
|
import { useState } from "react";
|
|
3
3
|
import {
|
|
4
4
|
ArrowSquareOutIcon,
|
|
5
|
+
CaretDownIcon,
|
|
5
6
|
CopyIcon,
|
|
6
7
|
DotsThreeVerticalIcon,
|
|
7
8
|
DownloadSimpleIcon,
|
|
@@ -168,6 +169,40 @@ export const LongListScroll: Story = {
|
|
|
168
169
|
),
|
|
169
170
|
};
|
|
170
171
|
|
|
172
|
+
/**
|
|
173
|
+
* Single-select "radio-style" navigation menu — the exact backoffice
|
|
174
|
+
* consumer shape (ViewHeader view switcher, KanbanBoardPicker, SortControl):
|
|
175
|
+
* every entry is a checkable item (shared 18px check gutter, aria-checked on
|
|
176
|
+
* the current pick), each entry carries `onSelect` for the navigation, and
|
|
177
|
+
* the menu-level `closeOnSelect` opts the COMPOSE-class checkbox rows into
|
|
178
|
+
* commit-and-close (LC-21). Selecting a view updates the trigger label AND
|
|
179
|
+
* closes the menu — no controlled-open wiring in the consumer.
|
|
180
|
+
*/
|
|
181
|
+
export const RadioStyleNavigation: Story = {
|
|
182
|
+
render: () => {
|
|
183
|
+
const views = ["List", "Report", "Kanban", "Calendar"];
|
|
184
|
+
const [view, setView] = useState("List");
|
|
185
|
+
return (
|
|
186
|
+
<YStack minHeight={340} paddingTop="$4" alignItems="center" gap="$3">
|
|
187
|
+
<DropdownMenu
|
|
188
|
+
closeOnSelect
|
|
189
|
+
items={views.map((candidate) => ({
|
|
190
|
+
key: candidate,
|
|
191
|
+
label: candidate,
|
|
192
|
+
checked: candidate === view,
|
|
193
|
+
onSelect: () => setView(candidate),
|
|
194
|
+
}))}
|
|
195
|
+
>
|
|
196
|
+
<Button iconAfter={<CaretDownIcon size={14} />}>{view}</Button>
|
|
197
|
+
</DropdownMenu>
|
|
198
|
+
<Text color="$color11" fontSize="$2" data-testid="current-view">
|
|
199
|
+
Current view: {view}
|
|
200
|
+
</Text>
|
|
201
|
+
</YStack>
|
|
202
|
+
);
|
|
203
|
+
},
|
|
204
|
+
};
|
|
205
|
+
|
|
171
206
|
export const Controlled: Story = {
|
|
172
207
|
render: () => {
|
|
173
208
|
const [open, setOpen] = useState(false);
|