@multiplatform.one/components 6.4.2 → 6.6.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/Alert/index.native.js.map +1 -1
- package/dist/cjs/Avatar/index.cjs +4 -0
- package/dist/cjs/Avatar/index.native.js +4 -0
- package/dist/cjs/Avatar/index.native.js.map +1 -1
- package/dist/cjs/Badge/index.cjs +3 -0
- package/dist/cjs/Badge/index.native.js +3 -0
- package/dist/cjs/Badge/index.native.js.map +1 -1
- package/dist/cjs/Carousel/index.cjs +29 -16
- package/dist/cjs/Carousel/index.native.js +35 -18
- package/dist/cjs/Carousel/index.native.js.map +1 -1
- package/dist/cjs/DotIndicator/index.cjs +95 -36
- package/dist/cjs/DotIndicator/index.native.js +96 -36
- package/dist/cjs/DotIndicator/index.native.js.map +1 -1
- package/dist/cjs/Pagination.cjs +112 -163
- package/dist/cjs/Pagination.native.js +125 -176
- package/dist/cjs/Pagination.native.js.map +1 -1
- package/dist/cjs/ProgressSteps/index.cjs +5 -3
- package/dist/cjs/ProgressSteps/index.native.js +5 -3
- package/dist/cjs/ProgressSteps/index.native.js.map +1 -1
- package/dist/cjs/Wheel/index.cjs +1 -1
- package/dist/cjs/Wheel/index.native.js +1 -1
- package/dist/cjs/Wheel/index.native.js.map +1 -1
- package/dist/cjs/charts/Axis.cjs +1 -1
- package/dist/cjs/charts/Axis.native.js +1 -1
- package/dist/cjs/charts/Axis.native.js.map +1 -1
- package/dist/cjs/charts/BarChart.cjs +1 -1
- package/dist/cjs/charts/BarChart.native.js +1 -3
- package/dist/cjs/charts/BarChart.native.js.map +1 -1
- package/dist/cjs/charts/LineChart.cjs +1 -1
- package/dist/cjs/charts/LineChart.native.js +1 -3
- package/dist/cjs/charts/LineChart.native.js.map +1 -1
- package/dist/cjs/charts/PieChart.cjs +3 -2
- package/dist/cjs/charts/PieChart.native.js +9 -5
- package/dist/cjs/charts/PieChart.native.js.map +1 -1
- package/dist/cjs/charts/accessibility.native.js.map +1 -1
- package/dist/cjs/charts/index.cjs +1 -0
- package/dist/cjs/charts/index.native.js +1 -0
- package/dist/cjs/charts/index.native.js.map +1 -1
- package/dist/cjs/charts/math.cjs +6 -1
- package/dist/cjs/charts/math.native.js +6 -1
- package/dist/cjs/charts/math.native.js.map +1 -1
- package/dist/cjs/componentColors.cjs +11 -3
- package/dist/cjs/componentColors.native.js +11 -3
- package/dist/cjs/componentColors.native.js.map +1 -1
- package/dist/cjs/feedback/ConfirmDialog.cjs +1 -3
- package/dist/cjs/feedback/ConfirmDialog.native.js +1 -3
- package/dist/cjs/feedback/ConfirmDialog.native.js.map +1 -1
- package/dist/cjs/index.cjs +1 -0
- package/dist/cjs/index.native.js +1 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/layouts/ViewSwitcher.cjs +19 -0
- package/dist/cjs/layouts/ViewSwitcher.native.js +33 -0
- package/dist/cjs/layouts/ViewSwitcher.native.js.map +1 -1
- package/dist/cjs/layouts/attachments.cjs +4 -8
- package/dist/cjs/layouts/attachments.native.js +5 -8
- package/dist/cjs/layouts/attachments.native.js.map +1 -1
- package/dist/cjs/layouts/page.cjs +3 -4
- package/dist/cjs/layouts/page.native.js +6 -5
- package/dist/cjs/layouts/page.native.js.map +1 -1
- package/dist/cjs/layouts/tags.cjs +1 -0
- package/dist/cjs/layouts/tags.native.js +2 -0
- package/dist/cjs/layouts/tags.native.js.map +1 -1
- package/dist/cjs/layouts/timeline.cjs +0 -6
- package/dist/cjs/layouts/timeline.native.js +0 -6
- package/dist/cjs/layouts/timeline.native.js.map +1 -1
- package/dist/cjs/surfaces.cjs +21 -0
- package/dist/cjs/surfaces.native.js +22 -0
- package/dist/cjs/surfaces.native.js.map +1 -1
- package/dist/cjs/views/Calendar.cjs +15 -38
- package/dist/cjs/views/Calendar.native.js +21 -44
- package/dist/cjs/views/Calendar.native.js.map +1 -1
- package/dist/cjs/views/Dashboard.cjs +10 -10
- package/dist/cjs/views/Dashboard.native.js +12 -10
- package/dist/cjs/views/Dashboard.native.js.map +1 -1
- package/dist/cjs/views/Kanban.cjs +22 -13
- package/dist/cjs/views/Kanban.native.js +1 -0
- package/dist/cjs/views/Kanban.native.js.map +1 -1
- package/dist/cjs/views/ReportBuilder.cjs +29 -11
- package/dist/cjs/views/ReportBuilder.native.js +29 -11
- package/dist/cjs/views/ReportBuilder.native.js.map +1 -1
- package/dist/cjs/views/TreeView.cjs +1 -1
- package/dist/cjs/views/TreeView.native.js +1 -1
- package/dist/cjs/views/TreeView.native.js.map +1 -1
- package/dist/cjs/views/calendarMath.cjs +3 -9
- package/dist/cjs/views/calendarMath.native.js +3 -9
- package/dist/cjs/views/calendarMath.native.js.map +1 -1
- package/dist/cjs/views/ganttMath.cjs +14 -19
- package/dist/cjs/views/ganttMath.native.js +21 -20
- package/dist/cjs/views/ganttMath.native.js.map +1 -1
- package/dist/esm/Accordion/index.mjs.map +1 -1
- package/dist/esm/Alert/index.mjs.map +1 -1
- package/dist/esm/Alert/index.native.js.map +1 -1
- package/dist/esm/Avatar/index.mjs +5 -1
- package/dist/esm/Avatar/index.mjs.map +1 -1
- package/dist/esm/Avatar/index.native.js +5 -1
- package/dist/esm/Avatar/index.native.js.map +1 -1
- package/dist/esm/Badge/index.mjs +4 -1
- package/dist/esm/Badge/index.mjs.map +1 -1
- package/dist/esm/Badge/index.native.js +4 -1
- package/dist/esm/Badge/index.native.js.map +1 -1
- package/dist/esm/Carousel/index.mjs +29 -16
- package/dist/esm/Carousel/index.mjs.map +1 -1
- package/dist/esm/Carousel/index.native.js +35 -18
- package/dist/esm/Carousel/index.native.js.map +1 -1
- package/dist/esm/DotIndicator/index.mjs +96 -37
- package/dist/esm/DotIndicator/index.mjs.map +1 -1
- package/dist/esm/DotIndicator/index.native.js +97 -37
- package/dist/esm/DotIndicator/index.native.js.map +1 -1
- package/dist/esm/DropdownMenu/index.mjs.map +1 -1
- package/dist/esm/DropdownMenu/index.native.js.map +1 -1
- package/dist/esm/Pagination.mjs +113 -164
- package/dist/esm/Pagination.mjs.map +1 -1
- package/dist/esm/Pagination.native.js +126 -177
- package/dist/esm/Pagination.native.js.map +1 -1
- package/dist/esm/ProgressSteps/index.mjs +6 -4
- package/dist/esm/ProgressSteps/index.mjs.map +1 -1
- package/dist/esm/ProgressSteps/index.native.js +6 -4
- package/dist/esm/ProgressSteps/index.native.js.map +1 -1
- package/dist/esm/Wheel/index.mjs +1 -1
- package/dist/esm/Wheel/index.mjs.map +1 -1
- package/dist/esm/Wheel/index.native.js +1 -1
- package/dist/esm/Wheel/index.native.js.map +1 -1
- package/dist/esm/charts/Axis.mjs +2 -2
- package/dist/esm/charts/Axis.mjs.map +1 -1
- package/dist/esm/charts/Axis.native.js +2 -2
- package/dist/esm/charts/Axis.native.js.map +1 -1
- package/dist/esm/charts/BarChart.mjs +2 -2
- package/dist/esm/charts/BarChart.mjs.map +1 -1
- package/dist/esm/charts/BarChart.native.js +2 -4
- package/dist/esm/charts/BarChart.native.js.map +1 -1
- package/dist/esm/charts/LineChart.mjs +2 -2
- package/dist/esm/charts/LineChart.mjs.map +1 -1
- package/dist/esm/charts/LineChart.native.js +2 -4
- package/dist/esm/charts/LineChart.native.js.map +1 -1
- package/dist/esm/charts/PieChart.mjs +3 -2
- package/dist/esm/charts/PieChart.mjs.map +1 -1
- package/dist/esm/charts/PieChart.native.js +9 -5
- package/dist/esm/charts/PieChart.native.js.map +1 -1
- package/dist/esm/charts/accessibility.mjs.map +1 -1
- package/dist/esm/charts/accessibility.native.js.map +1 -1
- package/dist/esm/charts/index.mjs +2 -2
- package/dist/esm/charts/index.mjs.map +1 -1
- package/dist/esm/charts/index.native.js +2 -2
- package/dist/esm/charts/index.native.js.map +1 -1
- package/dist/esm/charts/math.mjs +6 -2
- package/dist/esm/charts/math.mjs.map +1 -1
- package/dist/esm/charts/math.native.js +6 -2
- package/dist/esm/charts/math.native.js.map +1 -1
- package/dist/esm/componentColors.mjs +11 -3
- package/dist/esm/componentColors.mjs.map +1 -1
- package/dist/esm/componentColors.native.js +11 -3
- package/dist/esm/componentColors.native.js.map +1 -1
- package/dist/esm/feedback/ConfirmDialog.mjs +2 -4
- package/dist/esm/feedback/ConfirmDialog.mjs.map +1 -1
- package/dist/esm/feedback/ConfirmDialog.native.js +2 -4
- package/dist/esm/feedback/ConfirmDialog.native.js.map +1 -1
- package/dist/esm/index.mjs +2 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +2 -2
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/layouts/ViewSwitcher.mjs +20 -1
- package/dist/esm/layouts/ViewSwitcher.mjs.map +1 -1
- package/dist/esm/layouts/ViewSwitcher.native.js +34 -1
- package/dist/esm/layouts/ViewSwitcher.native.js.map +1 -1
- package/dist/esm/layouts/attachments.mjs +4 -8
- package/dist/esm/layouts/attachments.mjs.map +1 -1
- package/dist/esm/layouts/attachments.native.js +5 -8
- package/dist/esm/layouts/attachments.native.js.map +1 -1
- package/dist/esm/layouts/page.mjs +4 -5
- package/dist/esm/layouts/page.mjs.map +1 -1
- package/dist/esm/layouts/page.native.js +7 -6
- package/dist/esm/layouts/page.native.js.map +1 -1
- package/dist/esm/layouts/tags.mjs +1 -0
- package/dist/esm/layouts/tags.mjs.map +1 -1
- package/dist/esm/layouts/tags.native.js +2 -0
- package/dist/esm/layouts/tags.native.js.map +1 -1
- package/dist/esm/layouts/timeline.mjs +0 -6
- package/dist/esm/layouts/timeline.mjs.map +1 -1
- package/dist/esm/layouts/timeline.native.js +0 -6
- package/dist/esm/layouts/timeline.native.js.map +1 -1
- package/dist/esm/surfaces.mjs +21 -1
- package/dist/esm/surfaces.mjs.map +1 -1
- package/dist/esm/surfaces.native.js +22 -1
- package/dist/esm/surfaces.native.js.map +1 -1
- package/dist/esm/views/Calendar.mjs +6 -29
- package/dist/esm/views/Calendar.mjs.map +1 -1
- package/dist/esm/views/Calendar.native.js +12 -35
- package/dist/esm/views/Calendar.native.js.map +1 -1
- package/dist/esm/views/Dashboard.mjs +12 -12
- package/dist/esm/views/Dashboard.mjs.map +1 -1
- package/dist/esm/views/Dashboard.native.js +14 -12
- package/dist/esm/views/Dashboard.native.js.map +1 -1
- package/dist/esm/views/Kanban.mjs +23 -14
- package/dist/esm/views/Kanban.mjs.map +1 -1
- package/dist/esm/views/Kanban.native.js +2 -1
- package/dist/esm/views/Kanban.native.js.map +1 -1
- package/dist/esm/views/ReportBuilder.mjs +30 -12
- package/dist/esm/views/ReportBuilder.mjs.map +1 -1
- package/dist/esm/views/ReportBuilder.native.js +30 -12
- package/dist/esm/views/ReportBuilder.native.js.map +1 -1
- package/dist/esm/views/TreeView.mjs +1 -1
- package/dist/esm/views/TreeView.mjs.map +1 -1
- package/dist/esm/views/TreeView.native.js +1 -1
- package/dist/esm/views/TreeView.native.js.map +1 -1
- package/dist/esm/views/calendarMath.mjs +3 -9
- package/dist/esm/views/calendarMath.mjs.map +1 -1
- package/dist/esm/views/calendarMath.native.js +3 -9
- package/dist/esm/views/calendarMath.native.js.map +1 -1
- package/dist/esm/views/ganttMath.mjs +14 -19
- package/dist/esm/views/ganttMath.mjs.map +1 -1
- package/dist/esm/views/ganttMath.native.js +21 -20
- package/dist/esm/views/ganttMath.native.js.map +1 -1
- package/dist/esm/views/kanbanDnd.mjs.map +1 -1
- package/dist/jsx/Accordion/index.mjs.map +1 -1
- package/dist/jsx/Alert/index.mjs.map +1 -1
- package/dist/jsx/Alert/index.native.js.map +1 -1
- package/dist/jsx/Avatar/index.mjs +5 -1
- package/dist/jsx/Avatar/index.mjs.map +1 -1
- package/dist/jsx/Avatar/index.native.js +4 -0
- package/dist/jsx/Avatar/index.native.js.map +1 -1
- package/dist/jsx/Badge/index.mjs +4 -1
- package/dist/jsx/Badge/index.mjs.map +1 -1
- package/dist/jsx/Badge/index.native.js +3 -0
- package/dist/jsx/Badge/index.native.js.map +1 -1
- package/dist/jsx/Carousel/index.mjs +29 -16
- package/dist/jsx/Carousel/index.mjs.map +1 -1
- package/dist/jsx/Carousel/index.native.js +35 -18
- package/dist/jsx/Carousel/index.native.js.map +1 -1
- package/dist/jsx/DotIndicator/index.mjs +96 -37
- package/dist/jsx/DotIndicator/index.mjs.map +1 -1
- package/dist/jsx/DotIndicator/index.native.js +96 -36
- package/dist/jsx/DotIndicator/index.native.js.map +1 -1
- package/dist/jsx/DropdownMenu/index.mjs.map +1 -1
- package/dist/jsx/Pagination.mjs +113 -164
- package/dist/jsx/Pagination.mjs.map +1 -1
- package/dist/jsx/Pagination.native.js +125 -176
- package/dist/jsx/Pagination.native.js.map +1 -1
- package/dist/jsx/ProgressSteps/index.mjs +6 -4
- package/dist/jsx/ProgressSteps/index.mjs.map +1 -1
- package/dist/jsx/ProgressSteps/index.native.js +5 -3
- package/dist/jsx/ProgressSteps/index.native.js.map +1 -1
- package/dist/jsx/Wheel/index.mjs +1 -1
- package/dist/jsx/Wheel/index.mjs.map +1 -1
- package/dist/jsx/Wheel/index.native.js +1 -1
- package/dist/jsx/Wheel/index.native.js.map +1 -1
- package/dist/jsx/charts/Axis.mjs +2 -2
- package/dist/jsx/charts/Axis.mjs.map +1 -1
- package/dist/jsx/charts/Axis.native.js +1 -1
- package/dist/jsx/charts/Axis.native.js.map +1 -1
- package/dist/jsx/charts/BarChart.mjs +2 -2
- package/dist/jsx/charts/BarChart.mjs.map +1 -1
- package/dist/jsx/charts/BarChart.native.js +1 -3
- package/dist/jsx/charts/BarChart.native.js.map +1 -1
- package/dist/jsx/charts/LineChart.mjs +2 -2
- package/dist/jsx/charts/LineChart.mjs.map +1 -1
- package/dist/jsx/charts/LineChart.native.js +1 -3
- package/dist/jsx/charts/LineChart.native.js.map +1 -1
- package/dist/jsx/charts/PieChart.mjs +3 -2
- package/dist/jsx/charts/PieChart.mjs.map +1 -1
- package/dist/jsx/charts/PieChart.native.js +9 -5
- package/dist/jsx/charts/PieChart.native.js.map +1 -1
- package/dist/jsx/charts/accessibility.mjs.map +1 -1
- package/dist/jsx/charts/accessibility.native.js.map +1 -1
- package/dist/jsx/charts/index.mjs +2 -2
- package/dist/jsx/charts/index.mjs.map +1 -1
- package/dist/jsx/charts/index.native.js +1 -0
- package/dist/jsx/charts/index.native.js.map +1 -1
- package/dist/jsx/charts/math.mjs +6 -2
- package/dist/jsx/charts/math.mjs.map +1 -1
- package/dist/jsx/charts/math.native.js +6 -1
- package/dist/jsx/charts/math.native.js.map +1 -1
- package/dist/jsx/componentColors.mjs +11 -3
- package/dist/jsx/componentColors.mjs.map +1 -1
- package/dist/jsx/componentColors.native.js +11 -3
- package/dist/jsx/componentColors.native.js.map +1 -1
- package/dist/jsx/feedback/ConfirmDialog.mjs +2 -4
- package/dist/jsx/feedback/ConfirmDialog.mjs.map +1 -1
- package/dist/jsx/feedback/ConfirmDialog.native.js +1 -3
- package/dist/jsx/feedback/ConfirmDialog.native.js.map +1 -1
- package/dist/jsx/index.js +2 -2
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +2 -2
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +1 -0
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/layouts/ViewSwitcher.mjs +20 -1
- package/dist/jsx/layouts/ViewSwitcher.mjs.map +1 -1
- package/dist/jsx/layouts/ViewSwitcher.native.js +33 -0
- package/dist/jsx/layouts/ViewSwitcher.native.js.map +1 -1
- package/dist/jsx/layouts/attachments.mjs +4 -8
- package/dist/jsx/layouts/attachments.mjs.map +1 -1
- package/dist/jsx/layouts/attachments.native.js +5 -8
- package/dist/jsx/layouts/attachments.native.js.map +1 -1
- package/dist/jsx/layouts/page.mjs +4 -5
- package/dist/jsx/layouts/page.mjs.map +1 -1
- package/dist/jsx/layouts/page.native.js +6 -5
- package/dist/jsx/layouts/page.native.js.map +1 -1
- package/dist/jsx/layouts/tags.mjs +1 -0
- package/dist/jsx/layouts/tags.mjs.map +1 -1
- package/dist/jsx/layouts/tags.native.js +2 -0
- package/dist/jsx/layouts/tags.native.js.map +1 -1
- package/dist/jsx/layouts/timeline.mjs +0 -6
- package/dist/jsx/layouts/timeline.mjs.map +1 -1
- package/dist/jsx/layouts/timeline.native.js +0 -6
- package/dist/jsx/layouts/timeline.native.js.map +1 -1
- package/dist/jsx/surfaces.mjs +21 -1
- package/dist/jsx/surfaces.mjs.map +1 -1
- package/dist/jsx/surfaces.native.js +22 -0
- package/dist/jsx/surfaces.native.js.map +1 -1
- package/dist/jsx/views/Calendar.mjs +6 -29
- package/dist/jsx/views/Calendar.mjs.map +1 -1
- package/dist/jsx/views/Calendar.native.js +21 -44
- package/dist/jsx/views/Calendar.native.js.map +1 -1
- package/dist/jsx/views/Dashboard.mjs +12 -12
- package/dist/jsx/views/Dashboard.mjs.map +1 -1
- package/dist/jsx/views/Dashboard.native.js +12 -10
- package/dist/jsx/views/Dashboard.native.js.map +1 -1
- package/dist/jsx/views/Kanban.mjs +23 -14
- package/dist/jsx/views/Kanban.mjs.map +1 -1
- package/dist/jsx/views/Kanban.native.js +1 -0
- package/dist/jsx/views/Kanban.native.js.map +1 -1
- package/dist/jsx/views/ReportBuilder.mjs +30 -12
- package/dist/jsx/views/ReportBuilder.mjs.map +1 -1
- package/dist/jsx/views/ReportBuilder.native.js +29 -11
- package/dist/jsx/views/ReportBuilder.native.js.map +1 -1
- package/dist/jsx/views/TreeView.mjs +1 -1
- package/dist/jsx/views/TreeView.mjs.map +1 -1
- package/dist/jsx/views/TreeView.native.js +1 -1
- package/dist/jsx/views/TreeView.native.js.map +1 -1
- package/dist/jsx/views/calendarMath.mjs +3 -9
- package/dist/jsx/views/calendarMath.mjs.map +1 -1
- package/dist/jsx/views/calendarMath.native.js +3 -9
- package/dist/jsx/views/calendarMath.native.js.map +1 -1
- package/dist/jsx/views/ganttMath.mjs +14 -19
- package/dist/jsx/views/ganttMath.mjs.map +1 -1
- package/dist/jsx/views/ganttMath.native.js +21 -20
- package/dist/jsx/views/ganttMath.native.js.map +1 -1
- package/dist/jsx/views/kanbanDnd.mjs.map +1 -1
- package/package.json +12 -12
- package/src/Accordion/Accordion.stories.tsx +7 -2
- package/src/Alert/index.tsx +1 -3
- package/src/Avatar/Avatar.spec.tsx +31 -0
- package/src/Avatar/index.tsx +19 -1
- package/src/Badge/Badge.stories.tsx +3 -1
- package/src/Badge/index.tsx +4 -1
- package/src/Carousel/Carousel.spec.tsx +271 -0
- package/src/Carousel/Carousel.stories.tsx +35 -0
- package/src/Carousel/index.tsx +45 -20
- package/src/DialogContent.stories.tsx +2 -2
- package/src/DotIndicator/dotIndicator.spec.tsx +43 -1
- package/src/DotIndicator/index.tsx +170 -37
- package/src/Pagination.api.spec.tsx +345 -0
- package/src/Pagination.tsx +138 -176
- package/src/Panel.stories.tsx +4 -4
- package/src/ProgressSteps/ProgressSteps.spec.tsx +40 -1
- package/src/ProgressSteps/ProgressSteps.stories.tsx +3 -1
- package/src/ProgressSteps/index.tsx +6 -1
- package/src/charts/PieChart.tsx +4 -1
- package/src/feedback/ConfirmDialog.tsx +2 -2
- package/src/index.ts +1 -0
- package/src/layouts/PageHeader.stories.tsx +21 -3
- package/src/layouts/ScreenToolbar.stories.tsx +12 -5
- package/src/layouts/ViewSwitcher.tsx +25 -6
- package/src/layouts/attachments.tsx +4 -1
- package/src/layouts/layouts.spec.tsx +77 -1
- package/src/layouts/page.tsx +5 -1
- package/src/layouts/pageTitleScale.spec.tsx +70 -0
- package/src/layouts/tags.tsx +2 -0
- package/src/layouts/timeline-radius.spec.tsx +21 -0
- package/src/layouts/timeline.tsx +7 -18
- package/src/shared/t.spec.ts +47 -0
- package/src/surfaces.tsx +33 -0
- package/src/views/Calendar.stories.tsx +4 -2
- package/src/views/Calendar.tsx +6 -1
- package/src/views/Gantt.stories.tsx +2 -2
- package/src/views/Kanban.native.tsx +8 -2
- package/src/views/Kanban.stories.tsx +3 -1
- package/src/views/Kanban.tsx +42 -13
- package/src/views/ReportBuilder.tsx +15 -2
- package/src/views/ganttMath.ts +2 -6
- package/types/Alert/index.d.ts.map +1 -1
- package/types/Avatar/index.d.ts.map +1 -1
- package/types/Badge/index.d.ts.map +1 -1
- package/types/Carousel/index.d.ts.map +1 -1
- package/types/DotIndicator/index.d.ts +44 -3
- package/types/DotIndicator/index.d.ts.map +1 -1
- package/types/Pagination.d.ts +6 -1
- package/types/Pagination.d.ts.map +1 -1
- package/types/ProgressSteps/index.d.ts.map +1 -1
- package/types/charts/Axis.d.ts.map +1 -1
- package/types/charts/BarChart.d.ts.map +1 -1
- package/types/charts/LineChart.d.ts.map +1 -1
- package/types/charts/PieChart.d.ts.map +1 -1
- package/types/charts/accessibility.d.ts +3 -2
- package/types/charts/accessibility.d.ts.map +1 -1
- package/types/charts/index.d.ts +1 -1
- package/types/charts/index.d.ts.map +1 -1
- package/types/charts/math.d.ts +16 -1
- package/types/charts/math.d.ts.map +1 -1
- package/types/componentColors.d.ts +11 -3
- package/types/componentColors.d.ts.map +1 -1
- package/types/index.d.ts +1 -1
- package/types/index.d.ts.map +1 -1
- package/types/layouts/ViewSwitcher.d.ts.map +1 -1
- package/types/layouts/attachments.d.ts.map +1 -1
- package/types/layouts/page.d.ts +8 -6
- package/types/layouts/page.d.ts.map +1 -1
- package/types/layouts/tags.d.ts.map +1 -1
- package/types/layouts/timeline.d.ts.map +1 -1
- package/types/surfaces.d.ts +17 -0
- package/types/surfaces.d.ts.map +1 -1
- package/types/views/Calendar.d.ts.map +1 -1
- package/types/views/Dashboard.d.ts.map +1 -1
- package/types/views/Kanban.d.ts +13 -1
- package/types/views/Kanban.d.ts.map +1 -1
- package/types/views/ReportBuilder.d.ts.map +1 -1
- package/types/views/TreeView.d.ts.map +1 -1
- package/types/views/calendarMath.d.ts +5 -1
- package/types/views/calendarMath.d.ts.map +1 -1
- package/types/views/ganttMath.d.ts +3 -0
- package/types/views/ganttMath.d.ts.map +1 -1
package/src/Pagination.tsx
CHANGED
|
@@ -12,7 +12,8 @@ import type React from "react";
|
|
|
12
12
|
import { useCallback, useState } from "react";
|
|
13
13
|
import { useTranslation } from "react-i18next";
|
|
14
14
|
import { Button } from "@multiplatform.one/forms";
|
|
15
|
-
import { Text,
|
|
15
|
+
import { Text, XStack, type XStackProps } from "tamagui";
|
|
16
|
+
import { DotIndicator } from "./DotIndicator";
|
|
16
17
|
import { componentColors } from "./componentColors";
|
|
17
18
|
import { useDirection } from "./hooks/useDirection";
|
|
18
19
|
import { bidiIsolate, withInterp } from "./shared/t";
|
|
@@ -62,6 +63,21 @@ export function getPaginationItems(
|
|
|
62
63
|
return items;
|
|
63
64
|
}
|
|
64
65
|
|
|
66
|
+
/**
|
|
67
|
+
* The size the pager pins its strip at, as steps on the size-token scale.
|
|
68
|
+
*
|
|
69
|
+
* The strip itself is `DotIndicator` (LC-16: one dot-strip implementation in
|
|
70
|
+
* the catalog), and `DotVariant` documents the one channel a mark's size may
|
|
71
|
+
* come from: a host pin, else the size knob's scale. This host pins, because
|
|
72
|
+
* its strip is seated on a rail between 44px controls and a bare strip's knob
|
|
73
|
+
* geometry reads lost there. Selecting a STEP keeps the pager on that channel
|
|
74
|
+
* instead of authoring a second geometry under a variant name.
|
|
75
|
+
*/
|
|
76
|
+
const stripSteps = {
|
|
77
|
+
base: { mark: "$0.75", active: "$2" },
|
|
78
|
+
large: { mark: "$1.5", active: "$3" },
|
|
79
|
+
} as const;
|
|
80
|
+
|
|
65
81
|
export interface PaginationProps extends Omit<XStackProps, "children" | "onChange"> {
|
|
66
82
|
/** Total number of pages/steps */
|
|
67
83
|
total: number;
|
|
@@ -85,7 +101,12 @@ export interface PaginationProps extends Omit<XStackProps, "children" | "onChang
|
|
|
85
101
|
onSubmit?: () => void;
|
|
86
102
|
/** Disable all navigation */
|
|
87
103
|
disabled?: boolean;
|
|
88
|
-
/**
|
|
104
|
+
/**
|
|
105
|
+
* Visual variant: dots/bars = carousel & wizard idiom, numbered = table &
|
|
106
|
+
* data idiom. `bars` is the progress-tick idiom (never badges a completed
|
|
107
|
+
* step) at the pager's large step — see `DotVariant` for the one rule that
|
|
108
|
+
* governs a strip mark's size.
|
|
109
|
+
*/
|
|
89
110
|
variant?: "dots" | "bars" | "numbered";
|
|
90
111
|
/** Total number of items across all pages (numbered summary slot) */
|
|
91
112
|
totalItems?: number;
|
|
@@ -176,55 +197,78 @@ export function Pagination({
|
|
|
176
197
|
}
|
|
177
198
|
}) as unknown as () => void;
|
|
178
199
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
200
|
+
const isNumbered = variant === "numbered";
|
|
201
|
+
|
|
202
|
+
// The two idioms differ in which glyphs the controls take, whether the
|
|
203
|
+
// control is circular, and whether the last step submits — not in structure.
|
|
204
|
+
const canPrev = !disabled && index > 0;
|
|
205
|
+
const canNext = isNumbered
|
|
206
|
+
? !disabled && currentPage < total
|
|
207
|
+
: // dots/bars: an onSubmit makes the last step actionable, so the forward
|
|
208
|
+
// control is not dead there.
|
|
209
|
+
!(disabled || (!isLastStep && index >= total - 1 && !onSubmit));
|
|
210
|
+
const submits = !isNumbered && isLastStep;
|
|
211
|
+
|
|
212
|
+
const items = isNumbered
|
|
213
|
+
? getPaginationItems(total, currentPage, siblingCount, boundaryCount)
|
|
214
|
+
: [];
|
|
215
|
+
|
|
216
|
+
// Bidi-isolate the whole formatted range so an RTL paragraph can't
|
|
217
|
+
// reorder the latin/numeric runs ("1–5 of 5" ⇏ "of 5 5–1").
|
|
218
|
+
const summary =
|
|
219
|
+
isNumbered && showSummary && totalItems != null && pageSize != null
|
|
220
|
+
? bidiIsolate(
|
|
221
|
+
totalItems === 0
|
|
222
|
+
? t("0 of 0")
|
|
223
|
+
: withInterp(t("{{start}}–{{end}} of {{total}}"), {
|
|
224
|
+
start: (currentPage - 1) * pageSize + 1,
|
|
225
|
+
end: Math.min(currentPage * pageSize, totalItems),
|
|
226
|
+
total: totalItems,
|
|
227
|
+
}),
|
|
228
|
+
)
|
|
229
|
+
: undefined;
|
|
197
230
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
aria-label={t("Go to first page")}
|
|
215
|
-
onKeyDown={activateOnEnterSpace(() => goTo(0), canPrev)}
|
|
216
|
-
/>
|
|
217
|
-
)}
|
|
231
|
+
// LC-15 dial, resolved: `bars` names the progress-TICK idiom (no completion
|
|
232
|
+
// badge), never a geometry. The pager pins the large step for it — that pin,
|
|
233
|
+
// and nothing about the name, is why this strip is chunkier than a bare
|
|
234
|
+
// `<DotIndicator variant="bars">`.
|
|
235
|
+
const step = variant === "bars" ? stripSteps.large : stripSteps.base;
|
|
236
|
+
|
|
237
|
+
return (
|
|
238
|
+
<XStack
|
|
239
|
+
alignItems="center"
|
|
240
|
+
justifyContent="center"
|
|
241
|
+
role="navigation"
|
|
242
|
+
aria-label={t("Pagination")}
|
|
243
|
+
{...knobProps.gap}
|
|
244
|
+
{...stackProps}
|
|
245
|
+
>
|
|
246
|
+
{isNumbered && showFirstLast && (
|
|
218
247
|
<Button
|
|
219
248
|
size={knobProps.sizeToken}
|
|
220
249
|
variant="outlined"
|
|
221
|
-
icon={
|
|
222
|
-
onPress={
|
|
250
|
+
icon={FirstIcon}
|
|
251
|
+
onPress={() => goTo(0)}
|
|
223
252
|
disabled={!canPrev}
|
|
224
|
-
aria-label={t("Go to
|
|
225
|
-
onKeyDown={activateOnEnterSpace(
|
|
253
|
+
aria-label={t("Go to first page")}
|
|
254
|
+
onKeyDown={activateOnEnterSpace(() => goTo(0), canPrev)}
|
|
226
255
|
/>
|
|
256
|
+
)}
|
|
227
257
|
|
|
258
|
+
<Button
|
|
259
|
+
size={knobProps.sizeToken}
|
|
260
|
+
circular={!isNumbered}
|
|
261
|
+
variant="outlined"
|
|
262
|
+
icon={isNumbered ? PrevIcon : PrevArrowIcon}
|
|
263
|
+
onPress={handlePrev}
|
|
264
|
+
disabled={!canPrev}
|
|
265
|
+
// LC-40: the Button's own disabled wash owns the treatment — the
|
|
266
|
+
// legacy opacity 0.3 dim stacked on top of it (double-dim).
|
|
267
|
+
aria-label={isNumbered ? t("Go to previous page") : t("Previous page")}
|
|
268
|
+
onKeyDown={activateOnEnterSpace(handlePrev, canPrev)}
|
|
269
|
+
/>
|
|
270
|
+
|
|
271
|
+
{isNumbered ? (
|
|
228
272
|
<XStack alignItems="center" gap="$1">
|
|
229
273
|
{items.map((item) => {
|
|
230
274
|
if (typeof item !== "number") {
|
|
@@ -262,145 +306,63 @@ export function Pagination({
|
|
|
262
306
|
);
|
|
263
307
|
})}
|
|
264
308
|
</XStack>
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
309
|
+
) : (
|
|
310
|
+
// LC-16: the dot strip IS `DotIndicator` — this component owns the
|
|
311
|
+
// pager frame around it, not a second strip. `completedSteps`, the
|
|
312
|
+
// wizard a11y idiom and the rail all ride the primitive, so the two
|
|
313
|
+
// strips in the catalog cannot drift apart again.
|
|
314
|
+
<DotIndicator
|
|
315
|
+
total={total}
|
|
316
|
+
activeIndex={index}
|
|
317
|
+
variant={variant}
|
|
318
|
+
idiom="step"
|
|
319
|
+
rail
|
|
320
|
+
completedSteps={completedSteps}
|
|
321
|
+
dotSize={step.mark}
|
|
322
|
+
activeDotSize={step.active}
|
|
323
|
+
transition={motionTransition}
|
|
324
|
+
dotStateAttribute="data-pagination-dot"
|
|
325
|
+
onChange={allowJumpTo && !disabled ? goTo : undefined}
|
|
326
|
+
// A strip nobody can press has no disabled state — only a jumpable
|
|
327
|
+
// one is "interactive but blocked".
|
|
328
|
+
disabled={allowJumpTo && disabled}
|
|
274
329
|
/>
|
|
275
|
-
|
|
276
|
-
<Button
|
|
277
|
-
size={knobProps.sizeToken}
|
|
278
|
-
variant="outlined"
|
|
279
|
-
icon={LastIcon}
|
|
280
|
-
onPress={() => goTo(total - 1)}
|
|
281
|
-
disabled={!canNext}
|
|
282
|
-
aria-label={t("Go to last page")}
|
|
283
|
-
onKeyDown={activateOnEnterSpace(() => goTo(total - 1), canNext)}
|
|
284
|
-
/>
|
|
285
|
-
)}
|
|
330
|
+
)}
|
|
286
331
|
|
|
287
|
-
{summary && (
|
|
288
|
-
<Text
|
|
289
|
-
{...knobProps.body}
|
|
290
|
-
color={componentColors.text.muted}
|
|
291
|
-
aria-live="polite"
|
|
292
|
-
userSelect="none"
|
|
293
|
-
>
|
|
294
|
-
{summary}
|
|
295
|
-
</Text>
|
|
296
|
-
)}
|
|
297
|
-
</XStack>
|
|
298
|
-
);
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
const dotSize = variant === "bars" ? "$1.5" : "$0.75";
|
|
302
|
-
const activeDotSize = variant === "bars" ? "$3" : "$2";
|
|
303
|
-
|
|
304
|
-
return (
|
|
305
|
-
<XStack alignItems="center" justifyContent="center" {...knobProps.gap} {...stackProps}>
|
|
306
332
|
<Button
|
|
307
333
|
size={knobProps.sizeToken}
|
|
308
|
-
circular
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
onKeyDown={activateOnEnterSpace(handlePrev, !(disabled || index === 0))}
|
|
334
|
+
circular={!isNumbered}
|
|
335
|
+
variant={submits ? undefined : "outlined"}
|
|
336
|
+
theme={submits ? "active" : undefined}
|
|
337
|
+
icon={isNumbered ? NextIcon : submits ? CheckIcon : NextArrowIcon}
|
|
338
|
+
onPress={handleNext}
|
|
339
|
+
disabled={!canNext}
|
|
340
|
+
aria-label={isNumbered ? t("Go to next page") : submits ? t("Submit") : t("Next page")}
|
|
341
|
+
onKeyDown={activateOnEnterSpace(handleNext, canNext)}
|
|
317
342
|
/>
|
|
318
343
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
const isCompleted = completedSteps?.has(dotIndex);
|
|
331
|
-
const canJump = allowJumpTo && !disabled;
|
|
332
|
-
|
|
333
|
-
const dotProps: any = {
|
|
334
|
-
width: isActive ? activeDotSize : dotSize,
|
|
335
|
-
height: dotSize,
|
|
336
|
-
borderRadius: "$10",
|
|
337
|
-
// LC-05 / D-01 rider (a): the current dot speaks the SAME selected
|
|
338
|
-
// language as this component's numbered body (accent) — it used to
|
|
339
|
-
// paint ink while the numbered page button painted accent, so one
|
|
340
|
-
// component taught two meanings for "current".
|
|
341
|
-
backgroundColor:
|
|
342
|
-
isCompleted && !isActive
|
|
343
|
-
? componentColors.indicator.completed
|
|
344
|
-
: isActive
|
|
345
|
-
? componentColors.indicator.selected
|
|
346
|
-
: componentColors.indicator.track,
|
|
347
|
-
transition: motionTransition,
|
|
348
|
-
cursor: canJump ? "pointer" : undefined,
|
|
349
|
-
alignItems: "center",
|
|
350
|
-
justifyContent: "center",
|
|
351
|
-
"aria-current": isActive ? "step" : undefined,
|
|
352
|
-
"data-pagination-dot": isActive ? "active" : "idle",
|
|
353
|
-
// Belt-and-suspenders for the CSS driver: named `transition` covers
|
|
354
|
-
// Tamagui layout props; explicit width/bg ensures measurable intermediates.
|
|
355
|
-
style: {
|
|
356
|
-
transition: `width var(--mp-transition, 100ms) ease, height var(--mp-transition, 100ms) ease, background-color var(--mp-transition, 100ms) ease`,
|
|
357
|
-
},
|
|
358
|
-
...(canJump
|
|
359
|
-
? {
|
|
360
|
-
onPress: () => goTo(dotIndex),
|
|
361
|
-
role: "button",
|
|
362
|
-
"aria-label": withInterp(t("Go to step {{number}}"), { number: dotIndex + 1 }),
|
|
363
|
-
tabIndex: 0,
|
|
364
|
-
focusVisibleStyle: {
|
|
365
|
-
outlineColor: "$outlineColor",
|
|
366
|
-
outlineWidth: 2,
|
|
367
|
-
outlineStyle: "solid",
|
|
368
|
-
outlineOffset: 1,
|
|
369
|
-
},
|
|
370
|
-
onKeyDown: (e: React.KeyboardEvent) => {
|
|
371
|
-
if (e.key === "Enter" || e.key === " ") {
|
|
372
|
-
e.preventDefault();
|
|
373
|
-
goTo(dotIndex);
|
|
374
|
-
}
|
|
375
|
-
},
|
|
376
|
-
}
|
|
377
|
-
: {}),
|
|
378
|
-
};
|
|
379
|
-
|
|
380
|
-
return (
|
|
381
|
-
<View key={dotIndex} {...dotProps}>
|
|
382
|
-
{isCompleted && !isActive && variant === "dots" && (
|
|
383
|
-
<CheckIcon size={8} color="white" weight="bold" />
|
|
384
|
-
)}
|
|
385
|
-
</View>
|
|
386
|
-
);
|
|
387
|
-
})}
|
|
388
|
-
</XStack>
|
|
344
|
+
{isNumbered && showFirstLast && (
|
|
345
|
+
<Button
|
|
346
|
+
size={knobProps.sizeToken}
|
|
347
|
+
variant="outlined"
|
|
348
|
+
icon={LastIcon}
|
|
349
|
+
onPress={() => goTo(total - 1)}
|
|
350
|
+
disabled={!canNext}
|
|
351
|
+
aria-label={t("Go to last page")}
|
|
352
|
+
onKeyDown={activateOnEnterSpace(() => goTo(total - 1), canNext)}
|
|
353
|
+
/>
|
|
354
|
+
)}
|
|
389
355
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
handleNext,
|
|
401
|
-
!(disabled || (!isLastStep && index >= total - 1 && !onSubmit)),
|
|
402
|
-
)}
|
|
403
|
-
/>
|
|
356
|
+
{summary && (
|
|
357
|
+
<Text
|
|
358
|
+
{...knobProps.body}
|
|
359
|
+
color={componentColors.text.muted}
|
|
360
|
+
aria-live="polite"
|
|
361
|
+
userSelect="none"
|
|
362
|
+
>
|
|
363
|
+
{summary}
|
|
364
|
+
</Text>
|
|
365
|
+
)}
|
|
404
366
|
</XStack>
|
|
405
367
|
);
|
|
406
368
|
}
|
package/src/Panel.stories.tsx
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Meta, StoryObj } from "@storybook/react-native-web-vite";
|
|
2
|
-
// Catalog Button (G-15 story honesty / LC-
|
|
3
|
-
import { Button } from "@multiplatform.one/forms";
|
|
4
|
-
import {
|
|
2
|
+
// Catalog Button + Input (G-15 story honesty / LC-56, UX-P06).
|
|
3
|
+
import { Button, Input } from "@multiplatform.one/forms";
|
|
4
|
+
import { Paragraph, SizableText, XStack, YStack } from "tamagui";
|
|
5
5
|
import { Panel } from "./surfaces";
|
|
6
6
|
|
|
7
7
|
const meta: Meta<typeof Panel> = {
|
|
@@ -50,7 +50,7 @@ export const InteractiveContent: Story = {
|
|
|
50
50
|
render: () => (
|
|
51
51
|
<Panel maxWidth={420}>
|
|
52
52
|
<SizableText fontWeight="600">Interactive content</SizableText>
|
|
53
|
-
<Input placeholder="Focus me" />
|
|
53
|
+
<Input placeholder="Focus me" inputProps={{ "aria-label": "Focus demo" }} />
|
|
54
54
|
<XStack gap="$2">
|
|
55
55
|
<Button variant="outlined">Cancel</Button>
|
|
56
56
|
<Button>Submit</Button>
|
|
@@ -1,10 +1,34 @@
|
|
|
1
1
|
import { renderWithProviders } from "@multiplatform.one/test-utils";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
createThemesBuilder,
|
|
4
|
+
defaultAccentTheme,
|
|
5
|
+
defaultBaseTheme,
|
|
6
|
+
defaultBuilderOptions,
|
|
7
|
+
} from "@multiplatform.one/theme";
|
|
8
|
+
import { configWithoutAnimations } from "@tamagui/config";
|
|
9
|
+
import { animationsCSS } from "@tamagui/config/v5-css";
|
|
10
|
+
import { fireEvent, render } from "@testing-library/react";
|
|
11
|
+
import { TamaguiProvider, createTamagui } from "tamagui";
|
|
3
12
|
import { describe, expect, it, vi } from "vitest";
|
|
4
13
|
import { ProgressSteps } from "./index";
|
|
5
14
|
|
|
6
15
|
const steps = [{ label: "One" }, { label: "Two" }, { label: "Three" }];
|
|
7
16
|
|
|
17
|
+
// House builder themes for the LC-05 mark assertion — created at MODULE
|
|
18
|
+
// scope: tamagui registers a config's theme variables globally at
|
|
19
|
+
// createTamagui time, and a config created after the first render (inside a
|
|
20
|
+
// test body) never resolves its tokens (forms Progress.spec pattern).
|
|
21
|
+
const houseThemes = createThemesBuilder(
|
|
22
|
+
defaultBaseTheme,
|
|
23
|
+
defaultAccentTheme,
|
|
24
|
+
defaultBuilderOptions,
|
|
25
|
+
).themes() as Record<string, Record<string, string>>;
|
|
26
|
+
const houseConfig = createTamagui({
|
|
27
|
+
...configWithoutAnimations,
|
|
28
|
+
animations: animationsCSS,
|
|
29
|
+
themes: houseThemes as any,
|
|
30
|
+
});
|
|
31
|
+
|
|
8
32
|
describe("ProgressSteps", () => {
|
|
9
33
|
it("marks the current step with aria-current=step", () => {
|
|
10
34
|
const { container } = renderWithProviders(<ProgressSteps steps={steps} current={1} />);
|
|
@@ -13,6 +37,21 @@ describe("ProgressSteps", () => {
|
|
|
13
37
|
expect(container.textContent).toContain("Two");
|
|
14
38
|
});
|
|
15
39
|
|
|
40
|
+
// LC-05 ONE-EMPHASIS / D-01 (census addition): the current step marker is a
|
|
41
|
+
// selection mark, so it fills with the accent channel (indicator.selected),
|
|
42
|
+
// never the ink tier it used to take. House themes mounted because the
|
|
43
|
+
// stock test themes carry no $accentBackground.
|
|
44
|
+
it("paints the current marker with the accent mark", () => {
|
|
45
|
+
const { container } = render(
|
|
46
|
+
<TamaguiProvider config={houseConfig} defaultTheme="light" disableInjectCSS>
|
|
47
|
+
<ProgressSteps steps={steps} current={1} />
|
|
48
|
+
</TamaguiProvider>,
|
|
49
|
+
);
|
|
50
|
+
const current = container.querySelector('[aria-current="step"]') as HTMLElement;
|
|
51
|
+
expect(current).toBeTruthy();
|
|
52
|
+
expect(current.className).toContain("_bg-accentBackg");
|
|
53
|
+
});
|
|
54
|
+
|
|
16
55
|
it("calls onStepChange when jumping to another step", () => {
|
|
17
56
|
const onStepChange = vi.fn();
|
|
18
57
|
const { container } = renderWithProviders(
|
|
@@ -44,7 +44,9 @@ export const Default: Story = {
|
|
|
44
44
|
|
|
45
45
|
export const Interactive: Story = {
|
|
46
46
|
render: () => {
|
|
47
|
-
|
|
47
|
+
// Rest mid-range: at step 0 the Back button is bare-disabled at rest
|
|
48
|
+
// (UX-P19 / DG-ST-03) and demos nothing; step 0 stays one click away.
|
|
49
|
+
const [current, setCurrent] = useState(1);
|
|
48
50
|
return (
|
|
49
51
|
<YStack gap="$4" maxWidth={720}>
|
|
50
52
|
<ProgressSteps steps={demoSteps} current={current} onStepChange={setCurrent} />
|
|
@@ -69,7 +69,6 @@ const Marker = styled(View, {
|
|
|
69
69
|
name: "ProgressStepMarker",
|
|
70
70
|
alignItems: "center",
|
|
71
71
|
justifyContent: "center",
|
|
72
|
-
borderRadius: 1000,
|
|
73
72
|
borderWidth: 2,
|
|
74
73
|
flexShrink: 0,
|
|
75
74
|
});
|
|
@@ -108,6 +107,11 @@ export function ProgressSteps({
|
|
|
108
107
|
const markerTextSize = markerTextSizeMap[knobProps.sizeToken] ?? "$2";
|
|
109
108
|
const labelSize = labelSizeMap[knobProps.sizeToken] ?? "$3";
|
|
110
109
|
const gaps = stepGapMap[knobProps.space] ?? stepGapMap.medium;
|
|
110
|
+
// R-BINARY (Axiom 3 NULL): the step marker is a round mode-mark like a radio
|
|
111
|
+
// dot — square in the `none` world, a full circle at every other value. The
|
|
112
|
+
// fixed 1000 arc was knob-dead, an undeclared knob-immune shape the old
|
|
113
|
+
// geometric sweep read as an identity circle (D-09 / LC-60).
|
|
114
|
+
const markerRadius = knobProps.pointy ? 0 : 1000;
|
|
111
115
|
const connectorThickness = 2;
|
|
112
116
|
const interactive = !!onStepChange && allowJump;
|
|
113
117
|
const horizontal = orientation === "horizontal";
|
|
@@ -137,6 +141,7 @@ export function ProgressSteps({
|
|
|
137
141
|
<Marker
|
|
138
142
|
width={markerSize}
|
|
139
143
|
height={markerSize}
|
|
144
|
+
borderRadius={markerRadius}
|
|
140
145
|
backgroundColor={markerBg}
|
|
141
146
|
borderColor={markerBorder}
|
|
142
147
|
{...(state === "current"
|
package/src/charts/PieChart.tsx
CHANGED
|
@@ -130,10 +130,13 @@ export function PieChart({
|
|
|
130
130
|
>
|
|
131
131
|
{data.map((datum, index) => (
|
|
132
132
|
<XStack key={`${datum.label}-${index}`} gap="$2" alignItems="center" minWidth={0}>
|
|
133
|
+
{/* Legend keys are chart CHROME, not marks: the swatch follows
|
|
134
|
+
the radius knob and goes square in the `none` world (Axiom 3
|
|
135
|
+
NULL). The pinned $2 arc was knob-dead (D-09 / LC-60). */}
|
|
133
136
|
<YStack
|
|
134
137
|
width={12}
|
|
135
138
|
height={12}
|
|
136
|
-
borderRadius=
|
|
139
|
+
borderRadius={knobProps.borderRadius.borderRadius}
|
|
137
140
|
flexShrink={0}
|
|
138
141
|
backgroundColor={fills[index] as never}
|
|
139
142
|
/>
|
|
@@ -18,7 +18,7 @@ import { useTranslation } from "react-i18next";
|
|
|
18
18
|
import { Dialog, Paragraph, XStack, YStack } from "tamagui";
|
|
19
19
|
import { countActionsInTree } from "../shared/actionScan";
|
|
20
20
|
import { useReturnFocusOnClose } from "../shared/useReturnFocusOnClose";
|
|
21
|
-
import { DialogContent } from "../surfaces";
|
|
21
|
+
import { DialogContent, DialogOverlay } from "../surfaces";
|
|
22
22
|
|
|
23
23
|
export interface ConfirmDialogProps {
|
|
24
24
|
open: boolean;
|
|
@@ -126,7 +126,7 @@ export function ConfirmDialog({
|
|
|
126
126
|
return (
|
|
127
127
|
<Dialog modal open={open} onOpenChange={handleOpenChange}>
|
|
128
128
|
<Dialog.Portal>
|
|
129
|
-
<
|
|
129
|
+
<DialogOverlay key="overlay" />
|
|
130
130
|
<DialogContent
|
|
131
131
|
key="content"
|
|
132
132
|
maxWidth={440}
|
package/src/index.ts
CHANGED
|
@@ -2,6 +2,7 @@ import type { Meta, StoryObj } from "@storybook/react-native-web-vite";
|
|
|
2
2
|
// Catalog Button (G-15 story honesty / LC-18): raw tamagui buttons ignored
|
|
3
3
|
// the knobs and pinned a non-house radius (UX-P06).
|
|
4
4
|
import { Button } from "@multiplatform.one/forms";
|
|
5
|
+
import { Preset } from "@multiplatform.one/theme";
|
|
5
6
|
import { YStack } from "tamagui";
|
|
6
7
|
import { PageHeader } from "./page";
|
|
7
8
|
|
|
@@ -56,12 +57,29 @@ export const TitleOnly: Story = {
|
|
|
56
57
|
render: (args) => <PageHeader {...args} />,
|
|
57
58
|
};
|
|
58
59
|
|
|
59
|
-
/**
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
/**
|
|
61
|
+
* D-11 page-title dial: the default is the moderate step ($8 = 32px) because a
|
|
62
|
+
* page title is wayfinding, not content. `titleScale="display"` is the
|
|
63
|
+
* per-instance eject back to the 64px hero scale for one marketing header.
|
|
64
|
+
*/
|
|
65
|
+
export const DisplayScale: Story = {
|
|
66
|
+
args: { titleScale: "display", subtitle: undefined, divider: false },
|
|
62
67
|
render: (args) => <PageHeader {...args} />,
|
|
63
68
|
};
|
|
64
69
|
|
|
70
|
+
/**
|
|
71
|
+
* D-11 surface-level opt-in: the `hero` preset re-scales every page title
|
|
72
|
+
* inside it, so a marketing surface asks once instead of per header.
|
|
73
|
+
*/
|
|
74
|
+
export const HeroPresetSurface: Story = {
|
|
75
|
+
args: { subtitle: undefined, divider: false },
|
|
76
|
+
render: (args) => (
|
|
77
|
+
<Preset preset="hero">
|
|
78
|
+
<PageHeader {...args} />
|
|
79
|
+
</Preset>
|
|
80
|
+
),
|
|
81
|
+
};
|
|
82
|
+
|
|
65
83
|
export const NoTitle: Story = {
|
|
66
84
|
args: { title: undefined, subtitle: undefined },
|
|
67
85
|
render: (args) => <PageHeader {...args} actions={<Button>Only action</Button>} />,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Meta, StoryObj } from "@storybook/react-native-web-vite";
|
|
2
2
|
// Catalog Button (G-15 story honesty / LC-18): raw tamagui buttons pinned a
|
|
3
3
|
// non-house radius and ignored every knob, poisoning the knob probes.
|
|
4
|
-
import { Button
|
|
4
|
+
import { Button } from "@multiplatform.one/forms";
|
|
5
5
|
import { YStack } from "tamagui";
|
|
6
6
|
import { ScreenToolbar } from "./page";
|
|
7
7
|
|
|
@@ -49,14 +49,21 @@ export const DisabledAndLoading: Story = {
|
|
|
49
49
|
render: () => (
|
|
50
50
|
<ScreenToolbar
|
|
51
51
|
leading={
|
|
52
|
-
|
|
52
|
+
// DG-ST-03: a disabled control explains itself; inline placement keeps
|
|
53
|
+
// the toolbar row's shared control height.
|
|
54
|
+
<Button
|
|
55
|
+
variant="outlined"
|
|
56
|
+
disabled
|
|
57
|
+
disabledReason="No screen to go back to"
|
|
58
|
+
disabledReasonPlacement="inline"
|
|
59
|
+
>
|
|
53
60
|
Back
|
|
54
61
|
</Button>
|
|
55
62
|
}
|
|
56
63
|
trailing={
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
</Button>
|
|
64
|
+
// The house loading state: `loading` renders the spinner and is a
|
|
65
|
+
// derived (never bare) disable.
|
|
66
|
+
<Button loading>Saving</Button>
|
|
60
67
|
}
|
|
61
68
|
/>
|
|
62
69
|
),
|
|
@@ -56,9 +56,15 @@ export function ViewSwitcher({ views, currentView, onViewChange }: ViewSwitcherP
|
|
|
56
56
|
// its label/icon take the luminance-computed anchor for the actual tint.
|
|
57
57
|
const selectedTint = useAccentTintedSurface();
|
|
58
58
|
const onSelectedTint = useReadableTextOn(selectedTint);
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
// Fill only — NO `color` here. `color` is a key of tamagui's Toggle styled
|
|
60
|
+
// context, so supplying it on selection alone makes createComponent wrap the
|
|
61
|
+
// segment in a context Provider; the <button> then sits at a different tree
|
|
62
|
+
// depth in the two states and React DESTROYS and recreates it (measured: 4
|
|
63
|
+
// childList mutations, 0 attribute mutations). CSS cannot transition a node
|
|
64
|
+
// that did not exist in the previous frame, so LC-25 is unreachable until
|
|
65
|
+
// the segment keeps its identity. The on-tint anchor the label and icon need
|
|
66
|
+
// is applied on the row below, which is not a context host.
|
|
67
|
+
const selectedChip = selectedTint ? { backgroundColor: selectedTint } : undefined;
|
|
62
68
|
const sz = knobProps.sizeToken;
|
|
63
69
|
// Segment inset ~$3 at medium; size knob steps it (small→$2, large→$4).
|
|
64
70
|
// Vertical pad is floored so the segment hits DG-LAY-04 (≥44) even at small.
|
|
@@ -133,11 +139,24 @@ export function ViewSwitcher({ views, currentView, onViewChange }: ViewSwitcherP
|
|
|
133
139
|
flexGrow={0}
|
|
134
140
|
alignItems="center"
|
|
135
141
|
justifyContent="center"
|
|
136
|
-
//
|
|
142
|
+
// LC-25: selecting a segment is a discrete jump, so the fill
|
|
143
|
+
// tweens instead of snapping (undefined at animation=none).
|
|
144
|
+
transition={knobProps.transition}
|
|
145
|
+
// The selected fill is re-applied through hover/press/focus so the
|
|
137
146
|
// neutral state layer never paints over the accent chip (the
|
|
138
|
-
// LC-05 rule the checked Switch track already follows).
|
|
147
|
+
// LC-05 rule the checked Switch track already follows). `focus` is
|
|
148
|
+
// not optional: selecting a segment focuses it, and ToggleFrame's
|
|
149
|
+
// own active recipe carries a neutral `$backgroundActive` focus
|
|
150
|
+
// fill that would otherwise grey out the chip the moment it is
|
|
151
|
+
// chosen. The remount used to hide that by discarding the node's
|
|
152
|
+
// focus state along with the node.
|
|
139
153
|
{...(isSelected && selectedChip
|
|
140
|
-
? {
|
|
154
|
+
? {
|
|
155
|
+
...selectedChip,
|
|
156
|
+
hoverStyle: selectedChip,
|
|
157
|
+
pressStyle: selectedChip,
|
|
158
|
+
focusStyle: selectedChip,
|
|
159
|
+
}
|
|
141
160
|
: undefined)}
|
|
142
161
|
{...(isWeb
|
|
143
162
|
? {
|