@multiplatform.one/components 7.11.0 → 7.16.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 +2 -2
- package/dist/cjs/Accordion/index.cjs +2 -6
- package/dist/cjs/Accordion/index.native.js +3 -7
- package/dist/cjs/Accordion/index.native.js.map +1 -1
- package/dist/cjs/Alert/index.native.js.map +1 -1
- package/dist/cjs/AnimateHeight/index.cjs +1 -3
- package/dist/cjs/AnimateHeight/index.native.js +1 -3
- package/dist/cjs/AnimateHeight/index.native.js.map +1 -1
- package/dist/cjs/Avatar/getInitials.native.js.map +1 -1
- package/dist/cjs/Avatar/index.native.js.map +1 -1
- package/dist/cjs/Badge/index.native.js.map +1 -1
- package/dist/cjs/Button.native.js.map +1 -1
- package/dist/cjs/Card.native.js.map +1 -1
- package/dist/cjs/CardFooter.native.js.map +1 -1
- package/dist/cjs/CardHeader.native.js.map +1 -1
- package/dist/cjs/Carousel/index.cjs +2 -1
- package/dist/cjs/Carousel/index.native.js +3 -2
- package/dist/cjs/Carousel/index.native.js.map +1 -1
- package/dist/cjs/Chip/index.cjs +13 -3
- package/dist/cjs/Chip/index.native.js +13 -3
- package/dist/cjs/Chip/index.native.js.map +1 -1
- package/dist/cjs/Collapsible.native.js.map +1 -1
- package/dist/cjs/ContextMenu/index.native.js.map +1 -1
- package/dist/cjs/CopyField/index.native.js.map +1 -1
- package/dist/cjs/DotIndicator/index.native.js.map +1 -1
- package/dist/cjs/DropdownMenu/index.native.js.map +1 -1
- package/dist/cjs/ErrorBoundary/index.native.js.map +1 -1
- package/dist/cjs/Heading.native.js.map +1 -1
- package/dist/cjs/Meter/index.native.js +1 -1
- package/dist/cjs/Meter/index.native.js.map +1 -1
- package/dist/cjs/Meter/meter.native.js.map +1 -1
- package/dist/cjs/Pagination.native.js +1 -1
- package/dist/cjs/Pagination.native.js.map +1 -1
- package/dist/cjs/ProgressSteps/index.native.js.map +1 -1
- package/dist/cjs/Quote/index.native.js.map +1 -1
- package/dist/cjs/ScrollView/index.cjs +28 -0
- package/dist/cjs/ScrollView/index.native.js +72 -0
- package/dist/cjs/ScrollView/index.native.js.map +1 -0
- package/dist/cjs/Separator/index.native.js.map +1 -1
- package/dist/cjs/SheetModal/detents.native.js.map +1 -1
- package/dist/cjs/SheetModal/index.native.js +70 -22
- package/dist/cjs/SheetModal/index.native.js.map +1 -1
- package/dist/cjs/Skeleton/index.cjs +1 -13
- package/dist/cjs/Skeleton/index.native.js +1 -13
- package/dist/cjs/Skeleton/index.native.js.map +1 -1
- package/dist/cjs/SkipLink/index.native.js.map +1 -1
- package/dist/cjs/SortableList/SortableHandle.native.js.map +1 -1
- package/dist/cjs/SortableList/index.native.js.map +1 -1
- package/dist/cjs/SortableList/useSortableRows.native.js.map +1 -1
- package/dist/cjs/Tabs/index.cjs +4 -7
- package/dist/cjs/Tabs/index.native.js +4 -7
- package/dist/cjs/Tabs/index.native.js.map +1 -1
- package/dist/cjs/Text.cjs +2 -0
- package/dist/cjs/Text.native.js +2 -0
- package/dist/cjs/Text.native.js.map +1 -1
- package/dist/cjs/Toast/index.native.js.map +1 -1
- package/dist/cjs/Toast/store.native.js.map +1 -1
- package/dist/cjs/Tooltip/nativePress.native.js.map +1 -1
- package/dist/cjs/Tooltip/tooltipShared.native.js.map +1 -1
- package/dist/cjs/TreeSelect/index.cjs +55 -52
- package/dist/cjs/TreeSelect/index.native.js +56 -53
- package/dist/cjs/TreeSelect/index.native.js.map +1 -1
- package/dist/cjs/TreeSelect/treeSelectModel.native.js.map +1 -1
- package/dist/cjs/Video/PlayerChrome.cjs +3 -9
- package/dist/cjs/Video/PlayerChrome.native.js +3 -9
- package/dist/cjs/Video/PlayerChrome.native.js.map +1 -1
- package/dist/cjs/Video/VideoFrame.native.js.map +1 -1
- package/dist/cjs/Video/types.native.js.map +1 -1
- package/dist/cjs/Wheel/index.native.js.map +1 -1
- package/dist/cjs/Wizard/index.native.js +2 -2
- package/dist/cjs/Wizard/index.native.js.map +1 -1
- package/dist/cjs/actions/ActionBar.native.js.map +1 -1
- package/dist/cjs/actions/DestructiveAction.native.js.map +1 -1
- package/dist/cjs/actions/devWarn.native.js.map +1 -1
- package/dist/cjs/actions/index.native.js.map +1 -1
- package/dist/cjs/actions/severity.native.js.map +1 -1
- package/dist/cjs/charts/Axis.native.js.map +1 -1
- package/dist/cjs/charts/BarChart.native.js.map +1 -1
- package/dist/cjs/charts/ChartDataView.native.js.map +1 -1
- package/dist/cjs/charts/ChartSurface.native.js.map +1 -1
- package/dist/cjs/charts/LineChart.native.js.map +1 -1
- package/dist/cjs/charts/PieChart.native.js.map +1 -1
- package/dist/cjs/charts/Sparkline.native.js.map +1 -1
- package/dist/cjs/charts/accessibility.native.js.map +1 -1
- package/dist/cjs/charts/composeChart.native.js.map +1 -1
- package/dist/cjs/charts/index.native.js.map +1 -1
- package/dist/cjs/charts/math.cjs +18 -0
- package/dist/cjs/charts/math.native.js +18 -0
- package/dist/cjs/charts/math.native.js.map +1 -1
- package/dist/cjs/charts/series.cjs +17 -8
- package/dist/cjs/charts/series.native.js +17 -8
- package/dist/cjs/charts/series.native.js.map +1 -1
- package/dist/cjs/charts/svg.cjs +6 -0
- package/dist/cjs/charts/svg.native.js +6 -0
- package/dist/cjs/charts/svg.native.js.map +1 -1
- package/dist/cjs/charts/types.native.js.map +1 -1
- package/dist/cjs/charts/useChartTheme.cjs +3 -9
- package/dist/cjs/charts/useChartTheme.native.js +4 -10
- package/dist/cjs/charts/useChartTheme.native.js.map +1 -1
- package/dist/cjs/code/Code/index.cjs +6 -0
- package/dist/cjs/code/Code/index.native.js +7 -4
- package/dist/cjs/code/Code/index.native.js.map +1 -1
- package/dist/cjs/code/CodeBlock/index.cjs +4 -5
- package/dist/cjs/code/CodeBlock/index.native.js +10 -11
- package/dist/cjs/code/CodeBlock/index.native.js.map +1 -1
- package/dist/cjs/code/HighlightedCode/index.native.js.map +1 -1
- package/dist/cjs/code/Highlighter/index.native.js.map +1 -1
- package/dist/cjs/code/Pre/index.native.js.map +1 -1
- package/dist/cjs/code/index.native.js +5 -5
- package/dist/cjs/code/index.native.js.map +1 -1
- package/dist/cjs/componentColors.native.js.map +1 -1
- package/dist/cjs/feedback/ConfirmDialog.native.js.map +1 -1
- package/dist/cjs/feedback/NotifyHost.native.js +2 -2
- package/dist/cjs/feedback/NotifyHost.native.js.map +1 -1
- package/dist/cjs/feedback/copy.native.js.map +1 -1
- package/dist/cjs/feedback/index.native.js.map +1 -1
- package/dist/cjs/feedback/notify.native.js.map +1 -1
- package/dist/cjs/feedback/route.native.js.map +1 -1
- package/dist/cjs/feedback/store.native.js.map +1 -1
- package/dist/cjs/hooks/index.native.js +1 -1
- package/dist/cjs/hooks/index.native.js.map +1 -1
- package/dist/cjs/hooks/useClipboard.native.js.map +1 -1
- package/dist/cjs/hooks/useDocumentTitle.native.js.map +1 -1
- package/dist/cjs/icons/CheckRegular.native.js.map +1 -1
- package/dist/cjs/icons/MinusRegular.native.js.map +1 -1
- package/dist/cjs/icons/index.native.js.map +1 -1
- package/dist/cjs/icons/lucide.native.js.map +1 -1
- package/dist/cjs/icons/themed.cjs +2 -1
- package/dist/cjs/icons/themed.native.js +2 -1
- package/dist/cjs/icons/themed.native.js.map +1 -1
- package/dist/cjs/images/Image/ImageFrame.native.js +1 -1
- package/dist/cjs/images/Image/ImageFrame.native.js.map +1 -1
- package/dist/cjs/images/Image/index.native.js +1 -1
- package/dist/cjs/images/Image/shared.native.js +1 -1
- package/dist/cjs/images/Image/shared.native.js.map +1 -1
- package/dist/cjs/images/Image/types.native.js.map +1 -1
- package/dist/cjs/images/index.native.js.map +1 -1
- package/dist/cjs/index.native.js +29 -29
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/knobImmuneExports.cjs +3 -3
- package/dist/cjs/knobImmuneExports.native.js +3 -3
- package/dist/cjs/knobImmuneExports.native.js.map +1 -1
- package/dist/cjs/layouts/AsyncBoundary.native.js +2 -2
- package/dist/cjs/layouts/AsyncBoundary.native.js.map +1 -1
- package/dist/cjs/layouts/Debug/index.native.js.map +1 -1
- package/dist/cjs/layouts/EmptyState.native.js.map +1 -1
- package/dist/cjs/layouts/KeyboardAvoidingWrapper/behavior.native.js.map +1 -1
- package/dist/cjs/layouts/PageTemplates.native.js.map +1 -1
- package/dist/cjs/layouts/PaneScaffold.cjs +70 -42
- package/dist/cjs/layouts/PaneScaffold.native.js +75 -48
- package/dist/cjs/layouts/PaneScaffold.native.js.map +1 -1
- package/dist/cjs/layouts/SafeAreaWrapper/insets.native.js.map +1 -1
- package/dist/cjs/layouts/ViewSwitcher.native.js.map +1 -1
- package/dist/cjs/layouts/attachments.cjs +2 -1
- package/dist/cjs/layouts/attachments.native.js +3 -2
- package/dist/cjs/layouts/attachments.native.js.map +1 -1
- package/dist/cjs/layouts/breadcrumbs.native.js.map +1 -1
- package/dist/cjs/layouts/index.native.js +3 -3
- package/dist/cjs/layouts/index.native.js.map +1 -1
- package/dist/cjs/layouts/page.cjs +2 -1
- package/dist/cjs/layouts/page.native.js +2 -1
- package/dist/cjs/layouts/page.native.js.map +1 -1
- package/dist/cjs/layouts/pageHeadingScope.native.js.map +1 -1
- package/dist/cjs/layouts/sidebar.cjs +1 -3
- package/dist/cjs/layouts/sidebar.native.js +1 -3
- package/dist/cjs/layouts/sidebar.native.js.map +1 -1
- package/dist/cjs/layouts/tags.native.js +1 -1
- package/dist/cjs/layouts/tags.native.js.map +1 -1
- package/dist/cjs/layouts/timeline.cjs +9 -1
- package/dist/cjs/layouts/timeline.native.js +11 -3
- package/dist/cjs/layouts/timeline.native.js.map +1 -1
- package/dist/cjs/layouts/toolbar.native.js.map +1 -1
- package/dist/cjs/shared/actionScan.native.js.map +1 -1
- package/dist/cjs/shared/i18n.native.js.map +1 -1
- package/dist/cjs/shared/t.native.js.map +1 -1
- package/dist/cjs/shared/textRidesText.native.js.map +1 -1
- package/dist/cjs/shared/useReturnFocusOnClose.native.js.map +1 -1
- package/dist/cjs/surfaces.cjs +0 -32
- package/dist/cjs/surfaces.native.js +1 -33
- package/dist/cjs/surfaces.native.js.map +1 -1
- package/dist/cjs/tamagui.cjs +2 -1
- package/dist/cjs/tamagui.native.js +2 -1
- package/dist/cjs/tamagui.native.js.map +1 -1
- package/dist/cjs/testSetup.native.js.map +1 -1
- package/dist/cjs/utils/setTinted.native.js.map +1 -1
- package/dist/cjs/utils/unwrapText.native.js.map +1 -1
- package/dist/cjs/views/Calendar.native.js.map +1 -1
- package/dist/cjs/views/Dashboard.native.js +1 -1
- package/dist/cjs/views/Dashboard.native.js.map +1 -1
- package/dist/cjs/views/Gantt.native.js +1 -1
- package/dist/cjs/views/Gantt.native.js.map +1 -1
- package/dist/cjs/views/ImageGrid.native.js +1 -1
- package/dist/cjs/views/ImageGrid.native.js.map +1 -1
- package/dist/cjs/views/Kanban.cjs +1 -0
- package/dist/cjs/views/Kanban.native.js +3 -1
- package/dist/cjs/views/Kanban.native.js.map +1 -1
- package/dist/cjs/views/List.cjs +4 -4
- package/dist/cjs/views/List.native.js +7 -7
- package/dist/cjs/views/List.native.js.map +1 -1
- package/dist/cjs/views/Matrix.cjs +568 -0
- package/dist/cjs/views/Matrix.native.js +612 -0
- package/dist/cjs/views/Matrix.native.js.map +1 -0
- package/dist/cjs/views/ReportBuilder.native.js +1 -1
- package/dist/cjs/views/ReportBuilder.native.js.map +1 -1
- package/dist/cjs/views/TreeView.native.js.map +1 -1
- package/dist/cjs/views/calendarMath.native.js.map +1 -1
- package/dist/cjs/views/ganttMath.cjs +2 -0
- package/dist/cjs/views/ganttMath.native.js +2 -0
- package/dist/cjs/views/ganttMath.native.js.map +1 -1
- package/dist/cjs/views/index.cjs +16 -0
- package/dist/cjs/views/index.native.js +17 -1
- package/dist/cjs/views/index.native.js.map +1 -1
- package/dist/cjs/views/kanbanDnd.native.js.map +1 -1
- package/dist/cjs/views/matrixMath.cjs +157 -0
- package/dist/cjs/views/matrixMath.native.js +229 -0
- package/dist/cjs/views/matrixMath.native.js.map +1 -0
- package/dist/cjs/views/treeViewDnd.native.js.map +1 -1
- package/dist/cjs/views/treeViewLayout.native.js.map +1 -1
- package/dist/cjs/views/treeViewMotion.native.js.map +1 -1
- package/dist/cjs/views/treeViewReveal.native.js.map +1 -1
- package/dist/esm/Accordion/index.mjs +3 -7
- package/dist/esm/Accordion/index.mjs.map +1 -1
- package/dist/esm/Accordion/index.native.js +3 -7
- package/dist/esm/Accordion/index.native.js.map +1 -1
- package/dist/esm/AnimateHeight/index.mjs +2 -4
- package/dist/esm/AnimateHeight/index.mjs.map +1 -1
- package/dist/esm/AnimateHeight/index.native.js +2 -4
- package/dist/esm/AnimateHeight/index.native.js.map +1 -1
- package/dist/esm/Avatar/getInitials.native.js.map +1 -1
- package/dist/esm/Avatar/index.native.js.map +1 -1
- package/dist/esm/Badge/index.native.js.map +1 -1
- package/dist/esm/Button.native.js.map +1 -1
- package/dist/esm/Carousel/index.mjs +2 -1
- package/dist/esm/Carousel/index.mjs.map +1 -1
- package/dist/esm/Carousel/index.native.js +2 -1
- package/dist/esm/Carousel/index.native.js.map +1 -1
- package/dist/esm/Chip/index.mjs +15 -5
- package/dist/esm/Chip/index.mjs.map +1 -1
- package/dist/esm/Chip/index.native.js +15 -5
- package/dist/esm/Chip/index.native.js.map +1 -1
- package/dist/esm/Collapsible.native.js.map +1 -1
- package/dist/esm/ContextMenu/index.native.js.map +1 -1
- package/dist/esm/CopyField/index.native.js.map +1 -1
- package/dist/esm/DotIndicator/index.native.js.map +1 -1
- package/dist/esm/DropdownMenu/index.native.js.map +1 -1
- package/dist/esm/ErrorBoundary/index.native.js.map +1 -1
- package/dist/esm/Heading.native.js.map +1 -1
- package/dist/esm/Meter/index.native.js.map +1 -1
- package/dist/esm/Meter/meter.native.js.map +1 -1
- package/dist/esm/Pagination.native.js.map +1 -1
- package/dist/esm/ProgressSteps/index.native.js.map +1 -1
- package/dist/esm/Quote/index.native.js.map +1 -1
- package/dist/esm/ScrollView/index.mjs +3 -0
- package/dist/esm/ScrollView/index.mjs.map +1 -0
- package/dist/esm/ScrollView/index.native.js +44 -0
- package/dist/esm/ScrollView/index.native.js.map +1 -0
- package/dist/esm/Separator/index.native.js.map +1 -1
- package/dist/esm/SheetModal/detents.native.js.map +1 -1
- package/dist/esm/SheetModal/index.native.js +71 -23
- package/dist/esm/SheetModal/index.native.js.map +1 -1
- package/dist/esm/Skeleton/index.mjs +1 -13
- package/dist/esm/Skeleton/index.mjs.map +1 -1
- package/dist/esm/Skeleton/index.native.js +1 -13
- package/dist/esm/Skeleton/index.native.js.map +1 -1
- package/dist/esm/SkipLink/index.native.js.map +1 -1
- package/dist/esm/SortableList/SortableHandle.native.js.map +1 -1
- package/dist/esm/SortableList/index.native.js.map +1 -1
- package/dist/esm/SortableList/useSortableRows.native.js.map +1 -1
- package/dist/esm/Tabs/index.mjs +5 -8
- package/dist/esm/Tabs/index.mjs.map +1 -1
- package/dist/esm/Tabs/index.native.js +5 -8
- package/dist/esm/Tabs/index.native.js.map +1 -1
- package/dist/esm/Text.mjs +3 -1
- package/dist/esm/Text.mjs.map +1 -1
- package/dist/esm/Text.native.js +3 -1
- package/dist/esm/Text.native.js.map +1 -1
- package/dist/esm/Toast/index.native.js.map +1 -1
- package/dist/esm/Toast/store.native.js.map +1 -1
- package/dist/esm/Tooltip/nativePress.native.js.map +1 -1
- package/dist/esm/Tooltip/tooltipShared.native.js.map +1 -1
- package/dist/esm/TreeSelect/index.mjs +56 -53
- package/dist/esm/TreeSelect/index.mjs.map +1 -1
- package/dist/esm/TreeSelect/index.native.js +56 -53
- package/dist/esm/TreeSelect/index.native.js.map +1 -1
- package/dist/esm/TreeSelect/treeSelectModel.native.js.map +1 -1
- package/dist/esm/Video/PlayerChrome.mjs +4 -10
- package/dist/esm/Video/PlayerChrome.mjs.map +1 -1
- package/dist/esm/Video/PlayerChrome.native.js +4 -10
- package/dist/esm/Video/PlayerChrome.native.js.map +1 -1
- package/dist/esm/Video/VideoFrame.native.js.map +1 -1
- package/dist/esm/Video/types.native.js.map +1 -1
- package/dist/esm/Wheel/index.native.js.map +1 -1
- package/dist/esm/Wizard/index.native.js.map +1 -1
- package/dist/esm/actions/ActionBar.native.js.map +1 -1
- package/dist/esm/actions/DestructiveAction.native.js.map +1 -1
- package/dist/esm/actions/devWarn.native.js.map +1 -1
- package/dist/esm/actions/index.native.js.map +1 -1
- package/dist/esm/actions/severity.native.js.map +1 -1
- package/dist/esm/charts/Axis.native.js.map +1 -1
- package/dist/esm/charts/BarChart.native.js.map +1 -1
- package/dist/esm/charts/ChartDataView.native.js.map +1 -1
- package/dist/esm/charts/ChartSurface.native.js.map +1 -1
- package/dist/esm/charts/LineChart.native.js.map +1 -1
- package/dist/esm/charts/PieChart.native.js.map +1 -1
- package/dist/esm/charts/Sparkline.native.js.map +1 -1
- package/dist/esm/charts/accessibility.native.js.map +1 -1
- package/dist/esm/charts/composeChart.native.js.map +1 -1
- package/dist/esm/charts/index.native.js.map +1 -1
- package/dist/esm/charts/math.mjs +18 -1
- package/dist/esm/charts/math.mjs.map +1 -1
- package/dist/esm/charts/math.native.js +18 -1
- package/dist/esm/charts/math.native.js.map +1 -1
- package/dist/esm/charts/series.mjs +19 -10
- package/dist/esm/charts/series.mjs.map +1 -1
- package/dist/esm/charts/series.native.js +19 -10
- package/dist/esm/charts/series.native.js.map +1 -1
- package/dist/esm/charts/svg.mjs +6 -1
- package/dist/esm/charts/svg.mjs.map +1 -1
- package/dist/esm/charts/svg.native.js +6 -1
- package/dist/esm/charts/svg.native.js.map +1 -1
- package/dist/esm/charts/types.native.js.map +1 -1
- package/dist/esm/charts/useChartTheme.mjs +4 -10
- package/dist/esm/charts/useChartTheme.mjs.map +1 -1
- package/dist/esm/charts/useChartTheme.native.js +5 -11
- package/dist/esm/charts/useChartTheme.native.js.map +1 -1
- package/dist/esm/code/Code/index.mjs +6 -0
- package/dist/esm/code/Code/index.mjs.map +1 -1
- package/dist/esm/code/Code/index.native.js +10 -7
- package/dist/esm/code/Code/index.native.js.map +1 -1
- package/dist/esm/code/CodeBlock/index.mjs +5 -6
- package/dist/esm/code/CodeBlock/index.mjs.map +1 -1
- package/dist/esm/code/CodeBlock/index.native.js +5 -6
- package/dist/esm/code/CodeBlock/index.native.js.map +1 -1
- package/dist/esm/code/HighlightedCode/index.native.js.map +1 -1
- package/dist/esm/code/Highlighter/index.native.js.map +1 -1
- package/dist/esm/code/Pre/index.native.js.map +1 -1
- package/dist/esm/code/index.native.js.map +1 -1
- package/dist/esm/componentColors.native.js.map +1 -1
- package/dist/esm/feedback/ConfirmDialog.native.js.map +1 -1
- package/dist/esm/feedback/NotifyHost.native.js.map +1 -1
- package/dist/esm/feedback/copy.native.js.map +1 -1
- package/dist/esm/feedback/index.native.js.map +1 -1
- package/dist/esm/feedback/notify.native.js.map +1 -1
- package/dist/esm/feedback/route.native.js.map +1 -1
- package/dist/esm/feedback/store.native.js.map +1 -1
- package/dist/esm/hooks/index.native.js.map +1 -1
- package/dist/esm/hooks/useClipboard.native.js.map +1 -1
- package/dist/esm/hooks/useDocumentTitle.native.js.map +1 -1
- package/dist/esm/icons/CheckRegular.native.js.map +1 -1
- package/dist/esm/icons/MinusRegular.native.js.map +1 -1
- package/dist/esm/icons/index.native.js.map +1 -1
- package/dist/esm/icons/lucide.native.js.map +1 -1
- package/dist/esm/icons/themed.mjs +3 -2
- package/dist/esm/icons/themed.mjs.map +1 -1
- package/dist/esm/icons/themed.native.js +3 -2
- package/dist/esm/icons/themed.native.js.map +1 -1
- package/dist/esm/images/Image/ImageFrame.native.js.map +1 -1
- package/dist/esm/images/Image/shared.native.js.map +1 -1
- package/dist/esm/images/Image/types.native.js.map +1 -1
- package/dist/esm/images/index.native.js.map +1 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/knobImmuneExports.mjs +3 -3
- package/dist/esm/knobImmuneExports.native.js +3 -3
- package/dist/esm/knobImmuneExports.native.js.map +1 -1
- package/dist/esm/layouts/AsyncBoundary.native.js.map +1 -1
- package/dist/esm/layouts/Debug/index.native.js.map +1 -1
- package/dist/esm/layouts/EmptyState.native.js.map +1 -1
- package/dist/esm/layouts/KeyboardAvoidingWrapper/behavior.native.js.map +1 -1
- package/dist/esm/layouts/PageTemplates.native.js.map +1 -1
- package/dist/esm/layouts/PaneScaffold.mjs +70 -42
- package/dist/esm/layouts/PaneScaffold.mjs.map +1 -1
- package/dist/esm/layouts/PaneScaffold.native.js +75 -48
- package/dist/esm/layouts/PaneScaffold.native.js.map +1 -1
- package/dist/esm/layouts/SafeAreaWrapper/insets.native.js.map +1 -1
- package/dist/esm/layouts/ViewSwitcher.native.js.map +1 -1
- package/dist/esm/layouts/attachments.mjs +3 -2
- package/dist/esm/layouts/attachments.mjs.map +1 -1
- package/dist/esm/layouts/attachments.native.js +3 -2
- package/dist/esm/layouts/attachments.native.js.map +1 -1
- package/dist/esm/layouts/breadcrumbs.native.js.map +1 -1
- package/dist/esm/layouts/index.native.js.map +1 -1
- package/dist/esm/layouts/page.mjs +3 -2
- package/dist/esm/layouts/page.mjs.map +1 -1
- package/dist/esm/layouts/page.native.js +3 -2
- package/dist/esm/layouts/page.native.js.map +1 -1
- package/dist/esm/layouts/pageHeadingScope.native.js.map +1 -1
- package/dist/esm/layouts/sidebar.mjs +2 -4
- package/dist/esm/layouts/sidebar.mjs.map +1 -1
- package/dist/esm/layouts/sidebar.native.js +2 -4
- package/dist/esm/layouts/sidebar.native.js.map +1 -1
- package/dist/esm/layouts/tags.native.js.map +1 -1
- package/dist/esm/layouts/timeline.mjs +11 -3
- package/dist/esm/layouts/timeline.mjs.map +1 -1
- package/dist/esm/layouts/timeline.native.js +11 -3
- package/dist/esm/layouts/timeline.native.js.map +1 -1
- package/dist/esm/layouts/toolbar.native.js.map +1 -1
- package/dist/esm/shared/actionScan.native.js.map +1 -1
- package/dist/esm/shared/i18n.native.js.map +1 -1
- package/dist/esm/shared/t.native.js.map +1 -1
- package/dist/esm/shared/textRidesText.native.js.map +1 -1
- package/dist/esm/shared/useReturnFocusOnClose.native.js.map +1 -1
- package/dist/esm/surfaces.mjs +1 -33
- package/dist/esm/surfaces.mjs.map +1 -1
- package/dist/esm/surfaces.native.js +1 -33
- package/dist/esm/surfaces.native.js.map +1 -1
- package/dist/esm/tamagui.mjs +2 -1
- package/dist/esm/tamagui.mjs.map +1 -1
- package/dist/esm/tamagui.native.js +2 -1
- package/dist/esm/tamagui.native.js.map +1 -1
- package/dist/esm/testSetup.native.js.map +1 -1
- package/dist/esm/utils/setTinted.native.js.map +1 -1
- package/dist/esm/utils/unwrapText.native.js.map +1 -1
- package/dist/esm/views/Calendar.native.js.map +1 -1
- package/dist/esm/views/Dashboard.native.js.map +1 -1
- package/dist/esm/views/Gantt.native.js.map +1 -1
- package/dist/esm/views/ImageGrid.native.js.map +1 -1
- package/dist/esm/views/Kanban.mjs +1 -0
- package/dist/esm/views/Kanban.mjs.map +1 -1
- package/dist/esm/views/Kanban.native.js +3 -1
- package/dist/esm/views/Kanban.native.js.map +1 -1
- package/dist/esm/views/List.mjs +5 -5
- package/dist/esm/views/List.mjs.map +1 -1
- package/dist/esm/views/List.native.js +8 -8
- package/dist/esm/views/List.native.js.map +1 -1
- package/dist/esm/views/Matrix.mjs +543 -0
- package/dist/esm/views/Matrix.mjs.map +1 -0
- package/dist/esm/views/Matrix.native.js +573 -0
- package/dist/esm/views/Matrix.native.js.map +1 -0
- package/dist/esm/views/ReportBuilder.native.js.map +1 -1
- package/dist/esm/views/TreeView.native.js.map +1 -1
- package/dist/esm/views/calendarMath.native.js.map +1 -1
- package/dist/esm/views/ganttMath.mjs +1 -1
- package/dist/esm/views/ganttMath.mjs.map +1 -1
- package/dist/esm/views/ganttMath.native.js +1 -1
- package/dist/esm/views/ganttMath.native.js.map +1 -1
- package/dist/esm/views/index.mjs +4 -2
- package/dist/esm/views/index.mjs.map +1 -1
- package/dist/esm/views/index.native.js +4 -2
- package/dist/esm/views/index.native.js.map +1 -1
- package/dist/esm/views/kanbanDnd.native.js.map +1 -1
- package/dist/esm/views/matrixMath.mjs +122 -0
- package/dist/esm/views/matrixMath.mjs.map +1 -0
- package/dist/esm/views/matrixMath.native.js +191 -0
- package/dist/esm/views/matrixMath.native.js.map +1 -0
- package/dist/esm/views/treeViewDnd.native.js.map +1 -1
- package/dist/esm/views/treeViewLayout.native.js.map +1 -1
- package/dist/esm/views/treeViewMotion.native.js.map +1 -1
- package/dist/esm/views/treeViewReveal.native.js.map +1 -1
- package/dist/jsx/Accordion/index.mjs +3 -7
- package/dist/jsx/Accordion/index.mjs.map +1 -1
- package/dist/jsx/Accordion/index.native.js +2 -6
- package/dist/jsx/Accordion/index.native.js.map +1 -1
- package/dist/jsx/AnimateHeight/index.mjs +2 -4
- package/dist/jsx/AnimateHeight/index.mjs.map +1 -1
- package/dist/jsx/AnimateHeight/index.native.js +1 -3
- package/dist/jsx/AnimateHeight/index.native.js.map +1 -1
- package/dist/jsx/Carousel/index.mjs +2 -1
- package/dist/jsx/Carousel/index.mjs.map +1 -1
- package/dist/jsx/Carousel/index.native.js +2 -1
- package/dist/jsx/Carousel/index.native.js.map +1 -1
- package/dist/jsx/Chip/index.mjs +15 -5
- package/dist/jsx/Chip/index.mjs.map +1 -1
- package/dist/jsx/Chip/index.native.js +13 -3
- package/dist/jsx/Chip/index.native.js.map +1 -1
- package/dist/jsx/ScrollView/index.mjs +3 -0
- package/dist/jsx/ScrollView/index.mjs.map +1 -0
- package/dist/jsx/ScrollView/index.native.js +72 -0
- package/dist/jsx/ScrollView/index.native.js.map +1 -0
- package/dist/jsx/SheetModal/index.native.js +70 -22
- package/dist/jsx/SheetModal/index.native.js.map +1 -1
- package/dist/jsx/Skeleton/index.mjs +1 -13
- package/dist/jsx/Skeleton/index.mjs.map +1 -1
- package/dist/jsx/Skeleton/index.native.js +1 -13
- package/dist/jsx/Skeleton/index.native.js.map +1 -1
- package/dist/jsx/Tabs/index.mjs +5 -8
- package/dist/jsx/Tabs/index.mjs.map +1 -1
- package/dist/jsx/Tabs/index.native.js +4 -7
- package/dist/jsx/Tabs/index.native.js.map +1 -1
- package/dist/jsx/Text.mjs +3 -1
- package/dist/jsx/Text.mjs.map +1 -1
- package/dist/jsx/Text.native.js +2 -0
- package/dist/jsx/Text.native.js.map +1 -1
- package/dist/jsx/TreeSelect/index.mjs +56 -53
- package/dist/jsx/TreeSelect/index.mjs.map +1 -1
- package/dist/jsx/TreeSelect/index.native.js +55 -52
- package/dist/jsx/TreeSelect/index.native.js.map +1 -1
- package/dist/jsx/Video/PlayerChrome.mjs +4 -10
- package/dist/jsx/Video/PlayerChrome.mjs.map +1 -1
- package/dist/jsx/Video/PlayerChrome.native.js +3 -9
- package/dist/jsx/Video/PlayerChrome.native.js.map +1 -1
- package/dist/jsx/charts/math.mjs +18 -1
- package/dist/jsx/charts/math.mjs.map +1 -1
- package/dist/jsx/charts/math.native.js +18 -0
- package/dist/jsx/charts/math.native.js.map +1 -1
- package/dist/jsx/charts/series.mjs +19 -10
- package/dist/jsx/charts/series.mjs.map +1 -1
- package/dist/jsx/charts/series.native.js +17 -8
- package/dist/jsx/charts/series.native.js.map +1 -1
- package/dist/jsx/charts/svg.mjs +6 -1
- package/dist/jsx/charts/svg.mjs.map +1 -1
- package/dist/jsx/charts/svg.native.js +6 -0
- package/dist/jsx/charts/svg.native.js.map +1 -1
- package/dist/jsx/charts/useChartTheme.mjs +4 -10
- package/dist/jsx/charts/useChartTheme.mjs.map +1 -1
- package/dist/jsx/charts/useChartTheme.native.js +4 -10
- package/dist/jsx/charts/useChartTheme.native.js.map +1 -1
- package/dist/jsx/code/Code/index.mjs +6 -0
- package/dist/jsx/code/Code/index.mjs.map +1 -1
- package/dist/jsx/code/Code/index.native.js +7 -4
- package/dist/jsx/code/Code/index.native.js.map +1 -1
- package/dist/jsx/code/CodeBlock/index.mjs +5 -6
- package/dist/jsx/code/CodeBlock/index.mjs.map +1 -1
- package/dist/jsx/code/CodeBlock/index.native.js +4 -5
- package/dist/jsx/code/CodeBlock/index.native.js.map +1 -1
- package/dist/jsx/icons/themed.mjs +3 -2
- package/dist/jsx/icons/themed.mjs.map +1 -1
- package/dist/jsx/icons/themed.native.js +2 -1
- package/dist/jsx/icons/themed.native.js.map +1 -1
- package/dist/jsx/knobImmuneExports.mjs +3 -3
- package/dist/jsx/knobImmuneExports.native.js +3 -3
- package/dist/jsx/layouts/PaneScaffold.mjs +70 -42
- package/dist/jsx/layouts/PaneScaffold.mjs.map +1 -1
- package/dist/jsx/layouts/PaneScaffold.native.js +75 -48
- package/dist/jsx/layouts/PaneScaffold.native.js.map +1 -1
- package/dist/jsx/layouts/attachments.mjs +3 -2
- package/dist/jsx/layouts/attachments.mjs.map +1 -1
- package/dist/jsx/layouts/attachments.native.js +2 -1
- package/dist/jsx/layouts/attachments.native.js.map +1 -1
- package/dist/jsx/layouts/page.mjs +3 -2
- package/dist/jsx/layouts/page.mjs.map +1 -1
- package/dist/jsx/layouts/page.native.js +2 -1
- package/dist/jsx/layouts/page.native.js.map +1 -1
- package/dist/jsx/layouts/sidebar.mjs +2 -4
- package/dist/jsx/layouts/sidebar.mjs.map +1 -1
- package/dist/jsx/layouts/sidebar.native.js +1 -3
- package/dist/jsx/layouts/sidebar.native.js.map +1 -1
- package/dist/jsx/layouts/timeline.mjs +11 -3
- package/dist/jsx/layouts/timeline.mjs.map +1 -1
- package/dist/jsx/layouts/timeline.native.js +9 -1
- package/dist/jsx/layouts/timeline.native.js.map +1 -1
- package/dist/jsx/surfaces.mjs +1 -33
- package/dist/jsx/surfaces.mjs.map +1 -1
- package/dist/jsx/surfaces.native.js +0 -32
- package/dist/jsx/surfaces.native.js.map +1 -1
- package/dist/jsx/tamagui.mjs +2 -1
- package/dist/jsx/tamagui.mjs.map +1 -1
- package/dist/jsx/tamagui.native.js +2 -1
- package/dist/jsx/tamagui.native.js.map +1 -1
- package/dist/jsx/views/Kanban.mjs +1 -0
- package/dist/jsx/views/Kanban.mjs.map +1 -1
- package/dist/jsx/views/Kanban.native.js +3 -1
- package/dist/jsx/views/Kanban.native.js.map +1 -1
- package/dist/jsx/views/List.mjs +5 -5
- package/dist/jsx/views/List.mjs.map +1 -1
- package/dist/jsx/views/List.native.js +7 -7
- package/dist/jsx/views/List.native.js.map +1 -1
- package/dist/jsx/views/Matrix.mjs +543 -0
- package/dist/jsx/views/Matrix.mjs.map +1 -0
- package/dist/jsx/views/Matrix.native.js +612 -0
- package/dist/jsx/views/Matrix.native.js.map +1 -0
- package/dist/jsx/views/ganttMath.mjs +1 -1
- package/dist/jsx/views/ganttMath.mjs.map +1 -1
- package/dist/jsx/views/ganttMath.native.js +2 -0
- package/dist/jsx/views/ganttMath.native.js.map +1 -1
- package/dist/jsx/views/index.mjs +4 -2
- package/dist/jsx/views/index.mjs.map +1 -1
- package/dist/jsx/views/index.native.js +16 -0
- package/dist/jsx/views/index.native.js.map +1 -1
- package/dist/jsx/views/matrixMath.mjs +122 -0
- package/dist/jsx/views/matrixMath.mjs.map +1 -0
- package/dist/jsx/views/matrixMath.native.js +229 -0
- package/dist/jsx/views/matrixMath.native.js.map +1 -0
- package/package.json +10 -10
- package/src/Accordion/Accordion.spec.tsx +20 -0
- package/src/Accordion/index.tsx +7 -3
- package/src/AnimateHeight/index.tsx +143 -142
- package/src/Carousel/index.tsx +2 -1
- package/src/Chip/Chip.borderLadder.spec.tsx +54 -0
- package/src/Chip/Chip.pressSlop.spec.tsx +57 -0
- package/src/Chip/Chip.spec.tsx +21 -16
- package/src/Chip/index.tsx +25 -3
- package/src/Heading.native.spec.tsx +1 -1
- package/src/ScrollView/ScrollView.native.spec.tsx +157 -0
- package/src/ScrollView/index.native.tsx +45 -0
- package/src/ScrollView/index.tsx +2 -0
- package/src/Separator/index.tsx +3 -3
- package/src/SheetModal/SheetModal.detentLayout.spec.tsx +173 -0
- package/src/SheetModal/SheetModal.touch.spec.tsx +63 -0
- package/src/SheetModal/index.native.tsx +95 -17
- package/src/Skeleton/Skeleton.spec.tsx +3 -3
- package/src/Skeleton/index.tsx +2 -15
- package/src/Tabs/Tabs.hydration.spec.tsx +123 -0
- package/src/Tabs/index.tsx +4 -3
- package/src/Text.spec.tsx +32 -2
- package/src/Text.tsx +7 -6
- package/src/Toast/Toast.spec.tsx +50 -0
- package/src/Tooltip/Tooltip.spec.tsx +55 -2
- package/src/TreeSelect/TreeSelect.spec.tsx +15 -15
- package/src/TreeSelect/index.tsx +53 -50
- package/src/Video/PlayerChrome.tsx +4 -3
- package/src/Wheel/Wheel.spec.tsx +4 -4
- package/src/adjacency.l1.spec.tsx +175 -0
- package/src/charts/charts.spec.tsx +49 -6
- package/src/charts/math.spec.ts +30 -0
- package/src/charts/math.ts +36 -0
- package/src/charts/series.tsx +14 -9
- package/src/charts/svg.ts +13 -0
- package/src/charts/useChartTheme.ts +14 -15
- package/src/code/Code/code.spec.tsx +2 -19
- package/src/code/Code/index.tsx +0 -6
- package/src/code/CodeBlock/index.tsx +5 -3
- package/src/code/highlightedCode.spec.tsx +2 -2
- package/src/code/hostProps.spec.tsx +55 -0
- package/src/icons/themed.hydration.spec.tsx +60 -0
- package/src/icons/themed.tsx +3 -6
- package/src/knobImmuneExports.ts +3 -3
- package/src/layouts/PaneScaffold.spec.tsx +148 -2
- package/src/layouts/PaneScaffold.stories.tsx +33 -1
- package/src/layouts/PaneScaffold.tsx +101 -48
- package/src/layouts/attachments.radius.spec.tsx +74 -0
- package/src/layouts/attachments.tsx +3 -1
- package/src/layouts/page.designLaw.spec.tsx +20 -0
- package/src/layouts/page.tsx +2 -0
- package/src/layouts/sidebar.tsx +2 -3
- package/src/layouts/timeline-radius.spec.tsx +38 -0
- package/src/layouts/timeline.tsx +16 -1
- package/src/overlayElevation.spec.tsx +39 -51
- package/src/surfaces.spec.tsx +13 -10
- package/src/surfaces.tsx +4 -33
- package/src/tamagui.spec.ts +4 -3
- package/src/tamagui.ts +4 -1
- package/src/textAccentSecondary.spec.tsx +100 -2
- package/src/views/Kanban.native.tsx +3 -1
- package/src/views/Kanban.spec.tsx +15 -0
- package/src/views/Kanban.tsx +1 -0
- package/src/views/List.spec.tsx +50 -0
- package/src/views/List.tsx +13 -5
- package/src/views/Matrix.spec.tsx +339 -0
- package/src/views/Matrix.stories.spec.tsx +68 -0
- package/src/views/Matrix.stories.tsx +153 -0
- package/src/views/Matrix.tsx +738 -0
- package/src/views/ganttMath.ts +4 -2
- package/src/views/index.ts +30 -0
- package/src/views/matrixMath.spec.ts +237 -0
- package/src/views/matrixMath.ts +251 -0
- package/src/views/views.spec.tsx +3 -1
- package/types/Accordion/index.d.ts.map +1 -1
- package/types/AnimateHeight/index.d.ts.map +1 -1
- package/types/Carousel/index.d.ts.map +1 -1
- package/types/Chip/index.d.ts.map +1 -1
- package/types/ScrollView/index.d.ts +3 -0
- package/types/ScrollView/index.d.ts.map +1 -0
- package/types/ScrollView/index.native.d.ts +4 -0
- package/types/ScrollView/index.native.d.ts.map +1 -0
- package/types/Separator/index.d.ts +3 -3
- package/types/SheetModal/index.native.d.ts.map +1 -1
- package/types/Skeleton/index.d.ts.map +1 -1
- package/types/Tabs/index.d.ts.map +1 -1
- package/types/Text.d.ts.map +1 -1
- package/types/TreeSelect/index.d.ts.map +1 -1
- package/types/Video/PlayerChrome.d.ts.map +1 -1
- package/types/charts/math.d.ts +18 -0
- package/types/charts/math.d.ts.map +1 -1
- package/types/charts/series.d.ts +2 -1
- package/types/charts/series.d.ts.map +1 -1
- package/types/charts/svg.d.ts +8 -0
- package/types/charts/svg.d.ts.map +1 -1
- package/types/charts/useChartTheme.d.ts +4 -3
- package/types/charts/useChartTheme.d.ts.map +1 -1
- package/types/code/Code/index.d.ts.map +1 -1
- package/types/code/CodeBlock/index.d.ts.map +1 -1
- package/types/icons/themed.d.ts.map +1 -1
- package/types/layouts/PaneScaffold.d.ts +14 -1
- package/types/layouts/PaneScaffold.d.ts.map +1 -1
- package/types/layouts/attachments.d.ts.map +1 -1
- package/types/layouts/page.d.ts.map +1 -1
- package/types/layouts/sidebar.d.ts.map +1 -1
- package/types/layouts/timeline.d.ts.map +1 -1
- package/types/surfaces.d.ts.map +1 -1
- package/types/tamagui.d.ts +2 -1
- package/types/tamagui.d.ts.map +1 -1
- package/types/views/Kanban.native.d.ts.map +1 -1
- package/types/views/List.d.ts.map +1 -1
- package/types/views/Matrix.d.ts +102 -0
- package/types/views/Matrix.d.ts.map +1 -0
- package/types/views/ganttMath.d.ts +4 -0
- package/types/views/ganttMath.d.ts.map +1 -1
- package/types/views/index.d.ts +3 -1
- package/types/views/index.d.ts.map +1 -1
- package/types/views/matrixMath.d.ts +114 -0
- package/types/views/matrixMath.d.ts.map +1 -0
|
@@ -28,14 +28,16 @@ afterEach(cleanup);
|
|
|
28
28
|
// same hole MPO-40 / MPO-44 / MPO-48 all fell through, one layer further in:
|
|
29
29
|
// the fragment reaches the frame and still never reaches the pixel.
|
|
30
30
|
|
|
31
|
-
/** Reference §8
|
|
32
|
-
const
|
|
31
|
+
/** Reference §8 dialog shadow: the overlay ladder's `$5` stop (MPO-99). */
|
|
32
|
+
const dialogStopPaint = "0 12px 24px rgba(0,0,0,0.12)";
|
|
33
33
|
/** Same §8 geometry and alpha, hue inverted — LC-85 forbids a dark umbra. */
|
|
34
|
-
const
|
|
35
|
-
/**
|
|
36
|
-
const
|
|
37
|
-
/** `webShadowLight.$2` —
|
|
38
|
-
const
|
|
34
|
+
const dialogStopPaintDark = "0 12px 24px rgba(255,255,255,0.12)";
|
|
35
|
+
/** Reference §8 popper shadow: the overlay ladder's `$3` stop (MPO-99). */
|
|
36
|
+
const popperStopPaint = "0 4px 8px rgba(0,0,0,0.10), 0 12px 32px rgba(0,0,0,0.08)";
|
|
37
|
+
/** `webShadowLight.$2` — the overlay ladder's default `small` stop. */
|
|
38
|
+
const overlaySmallPaint = "0 3px 6px rgba(0,0,0,0.15), 0 2px 4px rgba(0,0,0,0.10)";
|
|
39
|
+
/** `webShadowLight.$4` — the control stop at elevation large. */
|
|
40
|
+
const controlLargePaint = "0 10px 20px rgba(0,0,0,0.15), 0 3px 6px rgba(0,0,0,0.10)";
|
|
39
41
|
|
|
40
42
|
function frame(id: string): HTMLElement {
|
|
41
43
|
const el = document.querySelector(`[data-testid="${id}"]`);
|
|
@@ -61,9 +63,9 @@ function bgAtoms(id: string): string[] {
|
|
|
61
63
|
.filter((c) => c.startsWith("_bg-"));
|
|
62
64
|
}
|
|
63
65
|
|
|
64
|
-
function renderDialogsBesideAButton() {
|
|
66
|
+
function renderDialogsBesideAButton(elevation?: "small" | "medium" | "large") {
|
|
65
67
|
renderWithProviders(
|
|
66
|
-
<Preset>
|
|
68
|
+
<Preset overrides={elevation ? { elevation } : undefined}>
|
|
67
69
|
<Button testID="control">Save</Button>
|
|
68
70
|
<Dialog modal open>
|
|
69
71
|
<Dialog.Portal>
|
|
@@ -79,61 +81,49 @@ function renderDialogsBesideAButton() {
|
|
|
79
81
|
);
|
|
80
82
|
}
|
|
81
83
|
|
|
82
|
-
describe("overlay elevation is a different distance off the surface (MPO-49)", () => {
|
|
83
|
-
it("DialogContent
|
|
84
|
-
renderDialogsBesideAButton();
|
|
85
|
-
expect(paintedShadow("dialog")).toBe(
|
|
86
|
-
expect(paintedShadow("dialog")).not.toBe(
|
|
87
|
-
expect(paintedShadow("
|
|
84
|
+
describe("overlay elevation is a different distance off the surface (MPO-49, MPO-96, MPO-99)", () => {
|
|
85
|
+
it("DialogContent paints the overlay ladder, reaching the reference §8 dialog shadow at large", () => {
|
|
86
|
+
renderDialogsBesideAButton("large");
|
|
87
|
+
expect(paintedShadow("dialog")).toBe(dialogStopPaint);
|
|
88
|
+
expect(paintedShadow("dialog")).not.toBe(paintedShadow("control"));
|
|
89
|
+
expect(paintedShadow("control")).toBe(controlLargePaint);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
it("at medium the overlay paints the §8 popper stop, not the control's $2", () => {
|
|
93
|
+
renderDialogsBesideAButton("medium");
|
|
94
|
+
expect(paintedShadow("dialog")).toBe(popperStopPaint);
|
|
95
|
+
expect(paintedShadow("dialog")).not.toBe(paintedShadow("control"));
|
|
88
96
|
});
|
|
89
97
|
|
|
90
|
-
it("the
|
|
98
|
+
it("at the default stop the control is flat and the overlay still lifts", () => {
|
|
91
99
|
renderDialogsBesideAButton();
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
100
|
+
expect(paintedShadow("control")).toBe("");
|
|
101
|
+
expect(paintedShadow("dialog")).toBe(overlaySmallPaint);
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
it("the atom and the inline style agree — no dead class under a different live paint", () => {
|
|
105
|
+
renderDialogsBesideAButton("large");
|
|
106
|
+
// The atom half alone does not discriminate (a class can name one shadow
|
|
107
|
+
// while the inline style paints another), so pair it with the painted value.
|
|
95
108
|
expect(shadowAtoms("dialog")).toHaveLength(1);
|
|
96
109
|
expect(shadowAtoms("dialog")[0]).toMatch(/^_bxsh-0px12px24px/);
|
|
97
110
|
expect(paintedShadow("dialog")).toContain("12px 24px");
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
it("the dialog shadow differs from the Button shadow, and the Button keeps the $1 stop", () => {
|
|
101
|
-
renderDialogsBesideAButton();
|
|
102
|
-
// "differs" alone does not discriminate: with the defect present the
|
|
103
|
-
// dialog paints `$2` and the Button `$1`, which also differ. The §8 value
|
|
104
|
-
// itself is pinned by the first case in this file; here the control side
|
|
105
|
-
// is pinned to `$1` so a Button regression cannot fake this one either.
|
|
106
|
-
expect(paintedShadow("control")).toBe(controlStopPaint);
|
|
107
|
-
expect(paintedShadow("dialog")).not.toBe(paintedShadow("control"));
|
|
108
111
|
expect(shadowAtoms("dialog")).not.toEqual(shadowAtoms("control"));
|
|
109
112
|
});
|
|
110
113
|
|
|
111
|
-
it("AlertDialogContent wears the same
|
|
114
|
+
it("AlertDialogContent wears the same ladder stop as DialogContent — one dialog row, one distance", () => {
|
|
112
115
|
// Tamagui's AlertDialog.Content IS Dialog.Content, and reference §8
|
|
113
116
|
// carries a single dialog row. confirm-dialog-{destructive,gated,warning}
|
|
114
117
|
// render through this frame.
|
|
115
|
-
renderDialogsBesideAButton();
|
|
116
|
-
expect(paintedShadow("alertdialog")).toBe(
|
|
118
|
+
renderDialogsBesideAButton("large");
|
|
119
|
+
expect(paintedShadow("alertdialog")).toBe(dialogStopPaint);
|
|
117
120
|
expect(paintedShadow("alertdialog")).toBe(paintedShadow("dialog"));
|
|
118
121
|
});
|
|
119
122
|
|
|
120
123
|
it("dark inverts the hue and keeps the §8 geometry; the ground steps up the ramp (LC-85)", () => {
|
|
121
|
-
renderWithProviders(
|
|
122
|
-
<Preset>
|
|
123
|
-
<Dialog modal open>
|
|
124
|
-
<Dialog.Portal>
|
|
125
|
-
<DialogContent testID="dialog">dialog</DialogContent>
|
|
126
|
-
</Dialog.Portal>
|
|
127
|
-
</Dialog>
|
|
128
|
-
</Preset>,
|
|
129
|
-
);
|
|
130
|
-
expect(paintedShadow("dialog")).toBe(referenceOverlayShadow);
|
|
131
|
-
expect(bgAtoms("dialog")).toEqual(["_bg-background"]);
|
|
132
|
-
cleanup();
|
|
133
|
-
|
|
134
124
|
renderWithProviders(
|
|
135
125
|
<Theme name="dark">
|
|
136
|
-
<Preset>
|
|
126
|
+
<Preset overrides={{ elevation: "large" }}>
|
|
137
127
|
<Dialog modal open>
|
|
138
128
|
<Dialog.Portal>
|
|
139
129
|
<DialogContent testID="dialog">dialog</DialogContent>
|
|
@@ -143,12 +133,10 @@ describe("overlay elevation is a different distance off the surface (MPO-49)", (
|
|
|
143
133
|
</Theme>,
|
|
144
134
|
);
|
|
145
135
|
// LC-85 DARK-ELEVATION-TINT: light-coloured shadow, never a black umbra.
|
|
146
|
-
expect(paintedShadow("dialog")).toBe(
|
|
147
|
-
expect(paintedShadow("dialog")).not.toBe(referenceOverlayShadow);
|
|
136
|
+
expect(paintedShadow("dialog")).toBe(dialogStopPaintDark);
|
|
148
137
|
expect(paintedShadow("dialog")).not.toMatch(/rgba\(0,\s*0,\s*0/);
|
|
149
138
|
// resolveKnobs owns the dark ground: `overlayFill` steps the filled rest
|
|
150
|
-
// fill up the ramp under dark + elevation (LC-85).
|
|
151
|
-
|
|
152
|
-
expect(bgAtoms("dialog")).toEqual(["_bg-color2"]);
|
|
139
|
+
// fill up the ramp under dark + elevation (LC-85).
|
|
140
|
+
expect(bgAtoms("dialog")).toEqual(["_bg-color4"]);
|
|
153
141
|
});
|
|
154
142
|
});
|
package/src/surfaces.spec.tsx
CHANGED
|
@@ -88,14 +88,14 @@ describe("SheetFrame overlay chrome", () => {
|
|
|
88
88
|
});
|
|
89
89
|
|
|
90
90
|
describe("DialogContent overlay elevation (MPO-49)", () => {
|
|
91
|
-
it("binds
|
|
91
|
+
it("binds the overlay ladder through elevatedSurface with elevate=false, and hardcodes no shadow (MPO-99)", () => {
|
|
92
92
|
const src = readFileSync(join(dirname(fileURLToPath(import.meta.url)), "surfaces.tsx"), "utf8");
|
|
93
93
|
const start = src.indexOf("// ── DialogContent");
|
|
94
94
|
const end = src.indexOf("// ── DialogOverlay");
|
|
95
95
|
const dialog = src.slice(start, end);
|
|
96
96
|
expect(dialog).toContain("elevate={false}");
|
|
97
|
-
expect(dialog).toContain("overlayElevationShadow");
|
|
98
|
-
expect(dialog).toContain("rgba(0,0,0,0.12)");
|
|
97
|
+
expect(dialog).not.toContain("overlayElevationShadow");
|
|
98
|
+
expect(dialog).not.toContain("rgba(0,0,0,0.12)");
|
|
99
99
|
expect(dialog).toContain("elevatedSurface");
|
|
100
100
|
expect(dialog).toContain("containerRadius");
|
|
101
101
|
expect(dialog).toContain("panelPadding");
|
|
@@ -122,9 +122,12 @@ describe("DialogContent overlay elevation (MPO-49)", () => {
|
|
|
122
122
|
// dialog elevation defect Button/control `$1` -> `_bxsh-0px1px2px…`
|
|
123
123
|
// fixed reference §8 -> `_bxsh-0px12px24px…`
|
|
124
124
|
//
|
|
125
|
+
// Since MPO-99 the §8 value is the overlay ladder's `$5` stop, which the
|
|
126
|
+
// dialog reaches at elevation large; the control paints `$4` there.
|
|
127
|
+
//
|
|
125
128
|
// A "differs from the Button" assertion does NOT discriminate: the Button
|
|
126
129
|
// paints `0 6px 12px` from its own source in both states, so that comparison
|
|
127
|
-
// passes with the defect present. Assert against the
|
|
130
|
+
// passes with the defect present. Assert against the CONTROL stop.
|
|
128
131
|
|
|
129
132
|
function atomsWithPrefix(el: Element | null, prefix: string): string[] {
|
|
130
133
|
if (!el) return [];
|
|
@@ -134,9 +137,9 @@ function atomsWithPrefix(el: Element | null, prefix: string): string[] {
|
|
|
134
137
|
.sort();
|
|
135
138
|
}
|
|
136
139
|
|
|
137
|
-
/** The `$
|
|
138
|
-
const controlStopShadowAtom = /^_bxsh-
|
|
139
|
-
/**
|
|
140
|
+
/** The `$4` control paint at elevation large — `webShadowLight.$4`, "0 10px 20px …". */
|
|
141
|
+
const controlStopShadowAtom = /^_bxsh-0px10px20px/;
|
|
142
|
+
/** The `$5` overlay stop at elevation large — reference §8 dialog shadow, "0 12px 24px …". */
|
|
140
143
|
const overlayStopShadowAtom = /^_bxsh-0px12px24px/;
|
|
141
144
|
|
|
142
145
|
describe("surfaces address $background at the FRAME (MPO-19 X5/X6)", () => {
|
|
@@ -164,9 +167,9 @@ describe("surfaces address $background at the FRAME (MPO-19 X5/X6)", () => {
|
|
|
164
167
|
});
|
|
165
168
|
|
|
166
169
|
describe("DialogContent paints the OVERLAY elevation stop, not the control one (MPO-49)", () => {
|
|
167
|
-
it("renders the reference §8 shadow and not the Button $
|
|
170
|
+
it("renders the reference §8 shadow at elevation large and not the Button $4 stop (MPO-99)", () => {
|
|
168
171
|
renderWithProviders(
|
|
169
|
-
<Preset>
|
|
172
|
+
<Preset overrides={{ elevation: "large" }}>
|
|
170
173
|
<Button testID="mpo-button-control">Save</Button>
|
|
171
174
|
<Dialog modal open>
|
|
172
175
|
<Dialog.Portal>
|
|
@@ -184,7 +187,7 @@ describe("DialogContent paints the OVERLAY elevation stop, not the control one (
|
|
|
184
187
|
const dialogShadow = atomsWithPrefix(dialog, "_bxsh-");
|
|
185
188
|
expect(dialogShadow, "DialogContent paints exactly one shadow atom").toHaveLength(1);
|
|
186
189
|
expect(dialogShadow[0], "dialog wears the §8 overlay shadow").toMatch(overlayStopShadowAtom);
|
|
187
|
-
expect(dialogShadow[0], "dialog must not wear the $
|
|
190
|
+
expect(dialogShadow[0], "dialog must not wear the $4 control stop").not.toMatch(
|
|
188
191
|
controlStopShadowAtom,
|
|
189
192
|
);
|
|
190
193
|
expect(dialogShadow, "dialog and control are different distances off the surface").not.toEqual(
|
package/src/surfaces.tsx
CHANGED
|
@@ -7,7 +7,6 @@ import {
|
|
|
7
7
|
Popover,
|
|
8
8
|
Sheet,
|
|
9
9
|
View,
|
|
10
|
-
isWeb,
|
|
11
10
|
type DialogContentProps as TamaguiDialogContentProps,
|
|
12
11
|
type DialogOverlayProps as TamaguiDialogOverlayProps,
|
|
13
12
|
type TamaguiElement,
|
|
@@ -103,42 +102,16 @@ export const DialogContent = forwardRef<
|
|
|
103
102
|
);
|
|
104
103
|
});
|
|
105
104
|
|
|
106
|
-
/**
|
|
107
|
-
* Reference §8 overlay shadow — rgba(0,0,0,0.12) 0 12px 24px. Not Button $1,
|
|
108
|
-
* and not the `$2` fragment `elevatedSurface` carries either: that fragment's
|
|
109
|
-
* web paint arrives as an INLINE style (`elevationPaint` emits
|
|
110
|
-
* `style.boxShadow`, and Tamagui stamps `!important` only on pseudo atoms),
|
|
111
|
-
* so a shadow expressed only as `shadow*` props is a dead class atom under a
|
|
112
|
-
* live `$2` paint. The §8 value must land on the `style` prop too, replacing
|
|
113
|
-
* the fragment's. Dark inverts the hue and keeps the geometry — LC-85
|
|
114
|
-
* DARK-ELEVATION-TINT forbids a black umbra on a dark ground.
|
|
115
|
-
*/
|
|
116
|
-
const overlayElevationShadow = {
|
|
117
|
-
light: {
|
|
118
|
-
shadowColor: "rgba(0,0,0,0.12)",
|
|
119
|
-
shadowOffset: { width: 0, height: 12 },
|
|
120
|
-
shadowOpacity: 1,
|
|
121
|
-
shadowRadius: 24,
|
|
122
|
-
...(isWeb ? { style: { boxShadow: "0px 12px 24px rgba(0,0,0,0.12)" } } : null),
|
|
123
|
-
},
|
|
124
|
-
dark: {
|
|
125
|
-
shadowColor: "rgba(255,255,255,0.12)",
|
|
126
|
-
shadowOffset: { width: 0, height: 12 },
|
|
127
|
-
shadowOpacity: 1,
|
|
128
|
-
shadowRadius: 24,
|
|
129
|
-
...(isWeb ? { style: { boxShadow: "0px 12px 24px rgba(255,255,255,0.12)" } } : null),
|
|
130
|
-
},
|
|
131
|
-
} as const;
|
|
132
|
-
|
|
133
105
|
const DialogContentInner = forwardRef<
|
|
134
106
|
TamaguiElement,
|
|
135
107
|
TamaguiDialogContentProps & { children?: ReactNode }
|
|
136
108
|
>(function DialogContentInner({ children, ...props }, ref) {
|
|
137
109
|
const { knobProps } = useResolvedKnobs({ component: "DialogContent" });
|
|
138
110
|
// ThemeableStack unstyled:false defaults `elevate: true`, which paints
|
|
139
|
-
// getElevation(size) — `$true` is
|
|
140
|
-
//
|
|
141
|
-
// containerRadius 9, border 1px) stays on the
|
|
111
|
+
// getElevation(size) — `$true` is a control stop. `elevate={false}` leaves
|
|
112
|
+
// the overlay ladder in `elevatedSurface` as the only shadow (MPO-99).
|
|
113
|
+
// Geometry (panelPadding 18, containerRadius 9, border 1px) stays on the
|
|
114
|
+
// recipe fragments below.
|
|
142
115
|
return (
|
|
143
116
|
<Dialog.Content
|
|
144
117
|
ref={ref}
|
|
@@ -147,7 +120,6 @@ const DialogContentInner = forwardRef<
|
|
|
147
120
|
{...knobProps.panelPadding}
|
|
148
121
|
{...knobProps.gap}
|
|
149
122
|
elevate={false}
|
|
150
|
-
{...overlayElevationShadow[knobProps.scheme]}
|
|
151
123
|
transition={knobProps.transition}
|
|
152
124
|
enterStyle={overlayEnterExit}
|
|
153
125
|
exitStyle={overlayEnterExit}
|
|
@@ -227,7 +199,6 @@ const AlertDialogContentInner = forwardRef<
|
|
|
227
199
|
{...knobProps.panelPadding}
|
|
228
200
|
{...knobProps.gap}
|
|
229
201
|
elevate={false}
|
|
230
|
-
{...overlayElevationShadow[knobProps.scheme]}
|
|
231
202
|
transition={knobProps.transition}
|
|
232
203
|
enterStyle={overlayEnterExit}
|
|
233
204
|
exitStyle={overlayEnterExit}
|
package/src/tamagui.spec.ts
CHANGED
|
@@ -48,11 +48,11 @@ const ALLOWLIST_VALUE_NAMES = [
|
|
|
48
48
|
// barrel and had been red ever since. MPO-78: CI runs `turbo run build`
|
|
49
49
|
// only, so nothing caught it.)
|
|
50
50
|
"Circle",
|
|
51
|
-
// MPO-21
|
|
51
|
+
// MPO-21 G3 / G4. Restored by MPO-148; MPO-169 locks them here so a
|
|
52
52
|
// later Adapt-style rewrite cannot drop them without this spec going red.
|
|
53
53
|
// LinearGradient (G2) is not on the main tamagui barrel — see the dedicated
|
|
54
|
-
// assertion below rather than this identity check.
|
|
55
|
-
"
|
|
54
|
+
// assertion below rather than this identity check. Collapsible (G1) is a
|
|
55
|
+
// house shadow since MPO-265: its Trigger defaults to type="button".
|
|
56
56
|
"Group",
|
|
57
57
|
"ListItem",
|
|
58
58
|
"ScrollView",
|
|
@@ -138,6 +138,7 @@ const HOUSE_SHADOWS = [
|
|
|
138
138
|
"Avatar",
|
|
139
139
|
"Button",
|
|
140
140
|
"Card",
|
|
141
|
+
"Collapsible",
|
|
141
142
|
"Fieldset",
|
|
142
143
|
"H1",
|
|
143
144
|
"H2",
|
package/src/tamagui.ts
CHANGED
|
@@ -32,7 +32,6 @@ export {
|
|
|
32
32
|
Circle,
|
|
33
33
|
Group,
|
|
34
34
|
ListItem,
|
|
35
|
-
ScrollView,
|
|
36
35
|
Spacer,
|
|
37
36
|
Square,
|
|
38
37
|
Unspaced,
|
|
@@ -44,6 +43,10 @@ export {
|
|
|
44
43
|
YStack,
|
|
45
44
|
} from "tamagui";
|
|
46
45
|
|
|
46
|
+
// Raw tamagui on web. On native ./ScrollView/index.native.tsx hands onScroll
|
|
47
|
+
// to the RN ScrollView, which tamagui's own styled scroller drops (MPO-368).
|
|
48
|
+
export { ScrollView } from "./ScrollView";
|
|
49
|
+
|
|
47
50
|
// MPO-21 G2: LinearGradient is NOT on the main tamagui barrel — it lives
|
|
48
51
|
// on the `tamagui/linear-gradient` subpath.
|
|
49
52
|
export { LinearGradient } from "tamagui/linear-gradient";
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import { cleanup, screen } from "@testing-library/react";
|
|
20
20
|
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
21
|
-
import { Preset } from "@multiplatform.one/theme";
|
|
21
|
+
import { Preset, useResolvedKnobs } from "@multiplatform.one/theme";
|
|
22
22
|
import type { ReactElement } from "react";
|
|
23
|
-
import { Theme } from "tamagui";
|
|
23
|
+
import { SizableText, Theme } from "tamagui";
|
|
24
24
|
import { afterEach, describe, expect, it } from "vitest";
|
|
25
25
|
import { Accordion } from "./Accordion";
|
|
26
26
|
import { componentColors } from "./componentColors";
|
|
@@ -177,6 +177,104 @@ describe("Meter — textAccent reaches the ok-zone value readout (MPO-154)", ()
|
|
|
177
177
|
});
|
|
178
178
|
});
|
|
179
179
|
|
|
180
|
+
/**
|
|
181
|
+
* low == medium alone also passes a surface pinned to a static step, so the
|
|
182
|
+
* dim stops are checked against a probe painting the resolver's own colour.
|
|
183
|
+
*/
|
|
184
|
+
function restInk(el: Element): string | undefined {
|
|
185
|
+
for (const cls of Array.from(el.classList)) {
|
|
186
|
+
if (!cls.startsWith("_col-")) continue;
|
|
187
|
+
const value = cls.slice("_col-".length);
|
|
188
|
+
if (/^\d*(hover|active|focus|press|disabled)/.test(value)) continue;
|
|
189
|
+
return value;
|
|
190
|
+
}
|
|
191
|
+
return undefined;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
function ResolverInk() {
|
|
195
|
+
const { knobProps } = useResolvedKnobs();
|
|
196
|
+
return (
|
|
197
|
+
<SizableText data-resolver-ink={knobProps.textAccentColor} color={knobProps.textAccentColor}>
|
|
198
|
+
resolver ink
|
|
199
|
+
</SizableText>
|
|
200
|
+
);
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
function againstResolver(
|
|
204
|
+
scheme: Scheme,
|
|
205
|
+
accent: Accent,
|
|
206
|
+
node: ReactElement,
|
|
207
|
+
pick: (container: HTMLElement) => Element | null,
|
|
208
|
+
) {
|
|
209
|
+
const { container } = renderWithProviders(
|
|
210
|
+
inScheme(
|
|
211
|
+
scheme,
|
|
212
|
+
<Preset overrides={{ textAccent: accent }}>
|
|
213
|
+
{node}
|
|
214
|
+
<ResolverInk />
|
|
215
|
+
</Preset>,
|
|
216
|
+
),
|
|
217
|
+
);
|
|
218
|
+
const surface = pick(container);
|
|
219
|
+
const probe = container.querySelector("[data-resolver-ink]");
|
|
220
|
+
const result = {
|
|
221
|
+
surface: surface ? restInk(surface) : undefined,
|
|
222
|
+
resolver: probe ? restInk(probe) : undefined,
|
|
223
|
+
token: probe?.getAttribute("data-resolver-ink") ?? null,
|
|
224
|
+
};
|
|
225
|
+
cleanup();
|
|
226
|
+
return result;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
describe("the dim stops paint the resolver's AA floor, not a pinned step (MPO-154)", () => {
|
|
230
|
+
const surfaces: Array<[string, ReactElement, (container: HTMLElement) => Element | null]> = [
|
|
231
|
+
[
|
|
232
|
+
"Tabs inactive label",
|
|
233
|
+
<Tabs
|
|
234
|
+
key="tabs"
|
|
235
|
+
items={[
|
|
236
|
+
{ value: "address", label: "Address & Contact", content: <>address panel</> },
|
|
237
|
+
{ value: "settings", label: "Settings", content: <>settings panel</> },
|
|
238
|
+
]}
|
|
239
|
+
defaultValue="address"
|
|
240
|
+
/>,
|
|
241
|
+
() => screen.getByText("Settings"),
|
|
242
|
+
],
|
|
243
|
+
[
|
|
244
|
+
"Accordion description",
|
|
245
|
+
<Accordion key="accordion" defaultValue="shipping">
|
|
246
|
+
<Accordion.Item value="shipping">
|
|
247
|
+
<Accordion.Trigger description="Where should we deliver the order?">
|
|
248
|
+
Shipping details
|
|
249
|
+
</Accordion.Trigger>
|
|
250
|
+
<Accordion.Content>ship</Accordion.Content>
|
|
251
|
+
</Accordion.Item>
|
|
252
|
+
</Accordion>,
|
|
253
|
+
() => screen.getByText("Where should we deliver the order?"),
|
|
254
|
+
],
|
|
255
|
+
[
|
|
256
|
+
"Quote attribution",
|
|
257
|
+
<Quote key="quote" cite="Alan Kay">
|
|
258
|
+
The best way to predict the future.
|
|
259
|
+
</Quote>,
|
|
260
|
+
(container) => container.querySelector("cite"),
|
|
261
|
+
],
|
|
262
|
+
];
|
|
263
|
+
|
|
264
|
+
for (const scheme of schemes) {
|
|
265
|
+
for (const [name, node, pick] of surfaces) {
|
|
266
|
+
for (const accent of ["low", "medium"] as const) {
|
|
267
|
+
it(`${scheme}: ${name} at ${accent} equals the resolver's textAccentColor`, () => {
|
|
268
|
+
const { surface, resolver, token } = againstResolver(scheme, accent, node, pick);
|
|
269
|
+
expect(token).toBe("$color11");
|
|
270
|
+
expect(resolver).toBeDefined();
|
|
271
|
+
expect(surface).toBe(resolver);
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
|
|
180
278
|
describe("componentColors keeps no second answer for secondary ink (MPO-154)", () => {
|
|
181
279
|
it("the text table exposes no static secondary or muted step", () => {
|
|
182
280
|
const text = componentColors.text as Record<string, string | undefined>;
|
|
@@ -17,8 +17,9 @@ import React, {
|
|
|
17
17
|
type ReactNode,
|
|
18
18
|
} from "react";
|
|
19
19
|
import { AccessibilityInfo, Animated } from "react-native";
|
|
20
|
-
import { ListItem,
|
|
20
|
+
import { ListItem, Text, View, XStack, YStack, type YStackProps } from "tamagui";
|
|
21
21
|
import { componentColors } from "../componentColors";
|
|
22
|
+
import { ScrollView } from "../ScrollView";
|
|
22
23
|
import { AsyncBoundary, useAsyncCount } from "../layouts/AsyncBoundary";
|
|
23
24
|
import { EmptyState } from "../layouts/page";
|
|
24
25
|
import { Card } from "../surfaces";
|
|
@@ -838,6 +839,7 @@ function KanbanColumnView<T>({
|
|
|
838
839
|
overflow="hidden"
|
|
839
840
|
transition={knobProps.transition}
|
|
840
841
|
{...knobProps.borderRadius}
|
|
842
|
+
{...knobProps.containerRadius}
|
|
841
843
|
{...knobProps.panelPadding}
|
|
842
844
|
backgroundColor={isDropTarget ? componentColors.interactive.background : "transparent"}
|
|
843
845
|
data-kanban-column={column.id}
|
|
@@ -112,6 +112,21 @@ describe("Kanban design law (SB-M-302 / LC-60)", () => {
|
|
|
112
112
|
expect(fullColumn).not.toBe(noneColumn);
|
|
113
113
|
});
|
|
114
114
|
|
|
115
|
+
it("caps the padded column frame at its own padding (DG-RAD-04 CONTAINER-CAP)", () => {
|
|
116
|
+
const columnRadius = (overrides: Parameters<typeof Preset>[0]["overrides"]) => {
|
|
117
|
+
renderWithProviders(
|
|
118
|
+
<Preset overrides={overrides}>
|
|
119
|
+
<Kanban columns={columns} renderCard={(item) => <span>{item.title}</span>} />
|
|
120
|
+
</Preset>,
|
|
121
|
+
);
|
|
122
|
+
const found = radiusClassOn(document.querySelector("[data-kanban-column='todo']"));
|
|
123
|
+
cleanup();
|
|
124
|
+
return found;
|
|
125
|
+
};
|
|
126
|
+
expect(columnRadius({ borderRadius: "full", space: "medium" })).toBe("_btlr-18px");
|
|
127
|
+
expect(columnRadius({ borderRadius: "large", space: "small" })).toBe("_btlr-13px");
|
|
128
|
+
});
|
|
129
|
+
|
|
115
130
|
it("does not paint raw input-surface borders on the column frame", () => {
|
|
116
131
|
renderWithProviders(
|
|
117
132
|
<Kanban columns={columns} renderCard={(item) => <span>{item.title}</span>} />,
|
package/src/views/Kanban.tsx
CHANGED
|
@@ -1336,6 +1336,7 @@ function KanbanColumnView<T>({
|
|
|
1336
1336
|
overflow="hidden"
|
|
1337
1337
|
transition={knobProps.transition}
|
|
1338
1338
|
{...knobProps.borderRadius}
|
|
1339
|
+
{...knobProps.containerRadius}
|
|
1339
1340
|
{...knobProps.panelPadding}
|
|
1340
1341
|
backgroundColor={
|
|
1341
1342
|
isDropTarget || isActiveColumn ? componentColors.interactive.background : "transparent"
|
package/src/views/List.spec.tsx
CHANGED
|
@@ -132,3 +132,53 @@ describe("ListRow ink — textAccent reaches the TEXT NODE (F11 / data-chrome ho
|
|
|
132
132
|
expect(high).not.toEqual(low);
|
|
133
133
|
});
|
|
134
134
|
});
|
|
135
|
+
|
|
136
|
+
describe("List rows are a CONTAINER-CAP stack (DG-RAD-04, MPO-56)", () => {
|
|
137
|
+
const rows = (overrides: {
|
|
138
|
+
borderRadius: "none" | "large" | "full";
|
|
139
|
+
space: "small" | "medium";
|
|
140
|
+
}) => {
|
|
141
|
+
renderWithProviders(
|
|
142
|
+
<Preset overrides={overrides}>
|
|
143
|
+
<List
|
|
144
|
+
items={documents}
|
|
145
|
+
aria-label="Documents"
|
|
146
|
+
renderItem={(item) => <ListRow title={item.title} />}
|
|
147
|
+
height={300}
|
|
148
|
+
estimateSize={50}
|
|
149
|
+
/>
|
|
150
|
+
</Preset>,
|
|
151
|
+
);
|
|
152
|
+
const found = screen.getAllByRole("listitem").map((row) => ({
|
|
153
|
+
corners: atoms(row, ["_borderStartStartRadius-", "_borderEndEndRadius-"]).filter((a) =>
|
|
154
|
+
/Radius-\d+px$/.test(a),
|
|
155
|
+
),
|
|
156
|
+
container: row.getAttribute("data-constraint-container"),
|
|
157
|
+
position: row.getAttribute("data-stack-position"),
|
|
158
|
+
}));
|
|
159
|
+
cleanup();
|
|
160
|
+
return found;
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
it("caps the outer corners at the row padding at full, square inside", () => {
|
|
164
|
+
const [first, middle, last] = rows({ borderRadius: "full", space: "medium" });
|
|
165
|
+
expect(first.corners).toEqual(["_borderEndEndRadius-0px", "_borderStartStartRadius-18px"]);
|
|
166
|
+
expect(middle.corners).toEqual(["_borderEndEndRadius-0px", "_borderStartStartRadius-0px"]);
|
|
167
|
+
expect(last.corners).toEqual(["_borderEndEndRadius-18px", "_borderStartStartRadius-0px"]);
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
it("caps large at 13 under space small", () => {
|
|
171
|
+
const [first] = rows({ borderRadius: "large", space: "small" });
|
|
172
|
+
expect(first.corners).toContain("_borderStartStartRadius-13px");
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
it("declares each row a StackedRow with its position", () => {
|
|
176
|
+
expect(
|
|
177
|
+
rows({ borderRadius: "large", space: "small" }).map((r) => [r.container, r.position]),
|
|
178
|
+
).toEqual([
|
|
179
|
+
["StackedRow", "first"],
|
|
180
|
+
["StackedRow", "middle"],
|
|
181
|
+
["StackedRow", "last"],
|
|
182
|
+
]);
|
|
183
|
+
});
|
|
184
|
+
});
|
package/src/views/List.tsx
CHANGED
|
@@ -4,6 +4,7 @@ import { Spinner } from "@multiplatform.one/forms";
|
|
|
4
4
|
import { FlashList, type FlashListRef } from "@shopify/flash-list";
|
|
5
5
|
import {
|
|
6
6
|
MIN_PRESS_TARGET,
|
|
7
|
+
containerCapProps,
|
|
7
8
|
ensureKeyboardModalityTracking,
|
|
8
9
|
getGroupPosition,
|
|
9
10
|
hairline,
|
|
@@ -13,6 +14,7 @@ import {
|
|
|
13
14
|
useReadableTextOn,
|
|
14
15
|
useResolvedKnobs,
|
|
15
16
|
wasKeyboardFocus,
|
|
17
|
+
transitionProps,
|
|
16
18
|
} from "@multiplatform.one/theme";
|
|
17
19
|
import { useHotkey } from "@tanstack/react-hotkeys";
|
|
18
20
|
import type { RegisterableHotkey } from "@tanstack/react-hotkeys";
|
|
@@ -280,7 +282,7 @@ export function List<T>({
|
|
|
280
282
|
const estimateSize = estimateSizeProp ?? Math.max(MIN_PRESS_TARGET, knobProps.control.height);
|
|
281
283
|
const rowPad = knobProps.panelPadding.padding;
|
|
282
284
|
const onAccent = useReadableTextOn("$accentBackground");
|
|
283
|
-
const cornersRadius = knobProps.
|
|
285
|
+
const cornersRadius = knobProps.containerRadius.borderRadius;
|
|
284
286
|
// No explicit height: hug content when the list is complete (page scrolls,
|
|
285
287
|
// no dead space / nested scrollbar); cap + scroll internally only while
|
|
286
288
|
// more pages can stream in (FlashList needs a bounded viewport to
|
|
@@ -475,6 +477,12 @@ export function List<T>({
|
|
|
475
477
|
{index > 0 ? <View {...hairline.line} /> : null}
|
|
476
478
|
<XStack
|
|
477
479
|
id={`${listId}-item-${index}`}
|
|
480
|
+
data-stack-position={position}
|
|
481
|
+
{...containerCapProps(
|
|
482
|
+
"StackedRow",
|
|
483
|
+
knobProps.borderRadius.borderRadius,
|
|
484
|
+
knobProps.space,
|
|
485
|
+
)}
|
|
478
486
|
{...({
|
|
479
487
|
"data-list-row": true,
|
|
480
488
|
...(isSelected ? { "data-selected": true } : {}),
|
|
@@ -486,9 +494,9 @@ export function List<T>({
|
|
|
486
494
|
alignItems="center"
|
|
487
495
|
overflow="hidden"
|
|
488
496
|
// Rows form ONE stacked group: the hover/focus/selection
|
|
489
|
-
// surface rounds
|
|
490
|
-
//
|
|
491
|
-
// sit BETWEEN rows only
|
|
497
|
+
// surface rounds only at the group's outer corners, capped
|
|
498
|
+
// at the row padding (DG-RAD-04); interiors stay square
|
|
499
|
+
// (LC-72). Hairlines sit BETWEEN rows only, never after the last.
|
|
492
500
|
{...corners}
|
|
493
501
|
role="listitem"
|
|
494
502
|
aria-selected={isSelected}
|
|
@@ -513,7 +521,7 @@ export function List<T>({
|
|
|
513
521
|
...corners,
|
|
514
522
|
}}
|
|
515
523
|
cursor="pointer"
|
|
516
|
-
{...(knobProps.transition
|
|
524
|
+
{...transitionProps(knobProps.transition)}
|
|
517
525
|
onPress={() => {
|
|
518
526
|
commitSelection(index);
|
|
519
527
|
onItemClick?.(item);
|