@multiplatform.one/components 6.4.3 → 6.7.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/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 +28 -15
- package/dist/cjs/Carousel/index.native.js +34 -17
- package/dist/cjs/Carousel/index.native.js.map +1 -1
- package/dist/cjs/DotIndicator/index.cjs +92 -35
- package/dist/cjs/DotIndicator/index.native.js +93 -35
- package/dist/cjs/DotIndicator/index.native.js.map +1 -1
- package/dist/cjs/Pagination.cjs +112 -167
- package/dist/cjs/Pagination.native.js +125 -180
- package/dist/cjs/Pagination.native.js.map +1 -1
- package/dist/cjs/ProgressSteps/index.cjs +2 -1
- package/dist/cjs/ProgressSteps/index.native.js +2 -1
- package/dist/cjs/ProgressSteps/index.native.js.map +1 -1
- package/dist/cjs/charts/PieChart.cjs +1 -1
- package/dist/cjs/charts/PieChart.native.js +7 -2
- package/dist/cjs/charts/PieChart.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 +4 -5
- package/dist/cjs/layouts/ViewSwitcher.native.js +13 -7
- 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 +1 -0
- package/dist/cjs/layouts/page.native.js +4 -1
- 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 +2 -0
- package/dist/cjs/views/Calendar.native.js +8 -2
- package/dist/cjs/views/Calendar.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 +12 -2
- package/dist/cjs/views/ReportBuilder.native.js +12 -2
- package/dist/cjs/views/ReportBuilder.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 +28 -15
- package/dist/esm/Carousel/index.mjs.map +1 -1
- package/dist/esm/Carousel/index.native.js +34 -17
- package/dist/esm/Carousel/index.native.js.map +1 -1
- package/dist/esm/DotIndicator/index.mjs +93 -36
- package/dist/esm/DotIndicator/index.mjs.map +1 -1
- package/dist/esm/DotIndicator/index.native.js +94 -36
- package/dist/esm/DotIndicator/index.native.js.map +1 -1
- package/dist/esm/Pagination.mjs +113 -168
- package/dist/esm/Pagination.mjs.map +1 -1
- package/dist/esm/Pagination.native.js +126 -181
- package/dist/esm/Pagination.native.js.map +1 -1
- package/dist/esm/ProgressSteps/index.mjs +2 -1
- package/dist/esm/ProgressSteps/index.mjs.map +1 -1
- package/dist/esm/ProgressSteps/index.native.js +2 -1
- package/dist/esm/ProgressSteps/index.native.js.map +1 -1
- package/dist/esm/charts/PieChart.mjs +1 -1
- package/dist/esm/charts/PieChart.mjs.map +1 -1
- package/dist/esm/charts/PieChart.native.js +7 -2
- package/dist/esm/charts/PieChart.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 +4 -5
- package/dist/esm/layouts/ViewSwitcher.mjs.map +1 -1
- package/dist/esm/layouts/ViewSwitcher.native.js +13 -7
- 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 +2 -1
- package/dist/esm/layouts/page.mjs.map +1 -1
- package/dist/esm/layouts/page.native.js +5 -2
- 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 +3 -1
- package/dist/esm/views/Calendar.mjs.map +1 -1
- package/dist/esm/views/Calendar.native.js +9 -3
- package/dist/esm/views/Calendar.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 +13 -3
- package/dist/esm/views/ReportBuilder.mjs.map +1 -1
- package/dist/esm/views/ReportBuilder.native.js +13 -3
- package/dist/esm/views/ReportBuilder.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 +28 -15
- package/dist/jsx/Carousel/index.mjs.map +1 -1
- package/dist/jsx/Carousel/index.native.js +34 -17
- package/dist/jsx/Carousel/index.native.js.map +1 -1
- package/dist/jsx/DotIndicator/index.mjs +93 -36
- package/dist/jsx/DotIndicator/index.mjs.map +1 -1
- package/dist/jsx/DotIndicator/index.native.js +93 -35
- package/dist/jsx/DotIndicator/index.native.js.map +1 -1
- package/dist/jsx/Pagination.mjs +113 -168
- package/dist/jsx/Pagination.mjs.map +1 -1
- package/dist/jsx/Pagination.native.js +125 -180
- package/dist/jsx/Pagination.native.js.map +1 -1
- package/dist/jsx/ProgressSteps/index.mjs +2 -1
- package/dist/jsx/ProgressSteps/index.mjs.map +1 -1
- package/dist/jsx/ProgressSteps/index.native.js +2 -1
- package/dist/jsx/ProgressSteps/index.native.js.map +1 -1
- package/dist/jsx/charts/PieChart.mjs +1 -1
- package/dist/jsx/charts/PieChart.mjs.map +1 -1
- package/dist/jsx/charts/PieChart.native.js +7 -2
- package/dist/jsx/charts/PieChart.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 +4 -5
- package/dist/jsx/layouts/ViewSwitcher.mjs.map +1 -1
- package/dist/jsx/layouts/ViewSwitcher.native.js +13 -7
- 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 +2 -1
- package/dist/jsx/layouts/page.mjs.map +1 -1
- package/dist/jsx/layouts/page.native.js +4 -1
- 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 +3 -1
- package/dist/jsx/views/Calendar.mjs.map +1 -1
- package/dist/jsx/views/Calendar.native.js +8 -2
- package/dist/jsx/views/Calendar.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 +13 -3
- package/dist/jsx/views/ReportBuilder.mjs.map +1 -1
- package/dist/jsx/views/ReportBuilder.native.js +12 -2
- package/dist/jsx/views/ReportBuilder.native.js.map +1 -1
- package/package.json +10 -10
- package/src/Accordion/Accordion.stories.tsx +7 -2
- 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 +169 -35
- 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/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/PieChart.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.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/Kanban.d.ts +13 -1
- package/types/views/Kanban.d.ts.map +1 -1
- package/types/views/ReportBuilder.d.ts.map +1 -1
|
@@ -49,7 +49,6 @@ var ArrowButton = styled(View, {
|
|
|
49
49
|
});
|
|
50
50
|
var ArrowVisual = styled(View, {
|
|
51
51
|
name: "CarouselArrowVisual",
|
|
52
|
-
borderRadius: 1e3,
|
|
53
52
|
backgroundColor: "$background",
|
|
54
53
|
alignItems: "center",
|
|
55
54
|
justifyContent: "center",
|
|
@@ -73,8 +72,8 @@ function Carousel(param) {
|
|
|
73
72
|
onSlideChange,
|
|
74
73
|
initialSlide = 0
|
|
75
74
|
} = param;
|
|
76
|
-
var _ref;
|
|
77
|
-
var _getTokens_size_knobProps_sizeToken, _getTokens_size;
|
|
75
|
+
var _ref, _ref1;
|
|
76
|
+
var _getTokens_space_gap, _getTokens_space, _getTokens_size_knobProps_sizeToken, _getTokens_size;
|
|
78
77
|
var {
|
|
79
78
|
t
|
|
80
79
|
} = useTranslation();
|
|
@@ -83,24 +82,26 @@ function Carousel(param) {
|
|
|
83
82
|
control
|
|
84
83
|
} = useResolvedKnobs();
|
|
85
84
|
var gap = gapProp !== null && gapProp !== void 0 ? gapProp : knobProps.gap.gap;
|
|
86
|
-
var
|
|
85
|
+
var gapPx = typeof gap === "number" ? gap : (_ref = (_getTokens_space = getTokens().space) === null || _getTokens_space === void 0 ? void 0 : (_getTokens_space_gap = _getTokens_space[gap]) === null || _getTokens_space_gap === void 0 ? void 0 : _getTokens_space_gap.val) !== null && _ref !== void 0 ? _ref : 0;
|
|
86
|
+
var arrowSize = (_ref1 = (_getTokens_size = getTokens().size) === null || _getTokens_size === void 0 ? void 0 : (_getTokens_size_knobProps_sizeToken = _getTokens_size[knobProps.sizeToken]) === null || _getTokens_size_knobProps_sizeToken === void 0 ? void 0 : _getTokens_size_knobProps_sizeToken.val) !== null && _ref1 !== void 0 ? _ref1 : 40;
|
|
87
87
|
var arrowGlyphSize = Math.round(arrowSize / 2);
|
|
88
|
+
var arrowRadius = knobProps.pointy ? 0 : 1e3;
|
|
88
89
|
var arrowTargetSize = Math.max(arrowSize, MIN_PRESS_TARGET);
|
|
89
90
|
var arrowEdgeInset = Math.max(0, 8 - Math.round((arrowTargetSize - arrowSize) / 2));
|
|
90
91
|
var [activeIndex, setActiveIndex] = useState(initialSlide);
|
|
91
92
|
var trackRef = useRef(null);
|
|
92
93
|
var slideCount = Children.count(children);
|
|
93
|
-
var
|
|
94
|
+
var [slideWidth, setSlideWidth] = useState(0);
|
|
94
95
|
var autoPlayRef = useRef(null);
|
|
95
96
|
var scrollToSlide = useCallback(function (index) {
|
|
96
97
|
if (!trackRef.current) return;
|
|
97
98
|
if (index < 0 || index >= slideCount) return;
|
|
98
|
-
var offset = index *
|
|
99
|
+
var offset = index * (slideWidth + gapPx);
|
|
99
100
|
trackRef.current.scrollTo({
|
|
100
101
|
x: offset,
|
|
101
102
|
animated: true
|
|
102
103
|
});
|
|
103
|
-
}, [slideCount]);
|
|
104
|
+
}, [slideCount, slideWidth, gapPx]);
|
|
104
105
|
var goToSlide = useCallback(function (index) {
|
|
105
106
|
var targetIndex = index;
|
|
106
107
|
if (loop) {
|
|
@@ -121,14 +122,13 @@ function Carousel(param) {
|
|
|
121
122
|
}, [activeIndex, goToSlide]);
|
|
122
123
|
var handleScroll = useCallback(function (event) {
|
|
123
124
|
var scrollX = event.nativeEvent.contentOffset.x;
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
var newIndex = Math.round(scrollX / width);
|
|
125
|
+
if (!slideWidth) return;
|
|
126
|
+
var newIndex = Math.round(scrollX / (slideWidth + gapPx));
|
|
127
127
|
if (newIndex !== activeIndex && newIndex >= 0 && newIndex < slideCount) {
|
|
128
128
|
setActiveIndex(newIndex);
|
|
129
129
|
onSlideChange === null || onSlideChange === void 0 ? void 0 : onSlideChange(newIndex);
|
|
130
130
|
}
|
|
131
|
-
}, [activeIndex, slideCount, onSlideChange]);
|
|
131
|
+
}, [activeIndex, slideCount, onSlideChange, slideWidth, gapPx]);
|
|
132
132
|
useEffect(function () {
|
|
133
133
|
if (autoPlay > 0) {
|
|
134
134
|
autoPlayRef.current = setInterval(function () {
|
|
@@ -141,11 +141,16 @@ function Carousel(param) {
|
|
|
141
141
|
};
|
|
142
142
|
}
|
|
143
143
|
}, [autoPlay, goNext]);
|
|
144
|
+
var activeIndexRef = useRef(activeIndex);
|
|
145
|
+
activeIndexRef.current = activeIndex;
|
|
144
146
|
useEffect(function () {
|
|
145
|
-
if (
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
147
|
+
if (!slideWidth || slideCount === 0 || !trackRef.current) return;
|
|
148
|
+
var index = Math.max(0, Math.min(activeIndexRef.current, slideCount - 1));
|
|
149
|
+
trackRef.current.scrollTo({
|
|
150
|
+
x: index * (slideWidth + gapPx),
|
|
151
|
+
animated: false
|
|
152
|
+
});
|
|
153
|
+
}, [slideWidth, gapPx, slideCount]);
|
|
149
154
|
var canGoPrev = loop || activeIndex > 0;
|
|
150
155
|
var canGoNext = loop || activeIndex < slideCount - 1;
|
|
151
156
|
var isRTL = useDirection() === "rtl";
|
|
@@ -166,16 +171,26 @@ function Carousel(param) {
|
|
|
166
171
|
onScroll: handleScroll,
|
|
167
172
|
scrollEventThrottle: 16,
|
|
168
173
|
onLayout: function onLayout(e) {
|
|
169
|
-
|
|
174
|
+
return setSlideWidth(e.nativeEvent.layout.width);
|
|
175
|
+
},
|
|
176
|
+
...{
|
|
177
|
+
dataSet: {
|
|
178
|
+
carouselTrack: "true"
|
|
179
|
+
}
|
|
170
180
|
},
|
|
171
181
|
children: /* @__PURE__ */_jsx(XStack, {
|
|
172
182
|
gap,
|
|
173
183
|
children: Children.map(children, function (child, index) {
|
|
174
184
|
return /* @__PURE__ */_jsx(CarouselSlide, {
|
|
175
|
-
width
|
|
185
|
+
// Measured-viewport width (LC-62), never a percentage; slides
|
|
186
|
+
// stay content-sized only for the pre-measure frame.
|
|
187
|
+
width: slideWidth > 0 ? slideWidth : void 0,
|
|
176
188
|
style: {
|
|
177
189
|
scrollSnapAlign: "start"
|
|
178
190
|
},
|
|
191
|
+
...{
|
|
192
|
+
"data-carousel-slide": index
|
|
193
|
+
},
|
|
179
194
|
children: child
|
|
180
195
|
}, index);
|
|
181
196
|
})
|
|
@@ -208,6 +223,7 @@ function Carousel(param) {
|
|
|
208
223
|
children: /* @__PURE__ */_jsx(ArrowVisual, {
|
|
209
224
|
width: arrowSize,
|
|
210
225
|
height: arrowSize,
|
|
226
|
+
borderRadius: arrowRadius,
|
|
211
227
|
children: /* @__PURE__ */_jsx(PrevGlyph, {
|
|
212
228
|
size: arrowGlyphSize
|
|
213
229
|
})
|
|
@@ -237,6 +253,7 @@ function Carousel(param) {
|
|
|
237
253
|
children: /* @__PURE__ */_jsx(ArrowVisual, {
|
|
238
254
|
width: arrowSize,
|
|
239
255
|
height: arrowSize,
|
|
256
|
+
borderRadius: arrowRadius,
|
|
240
257
|
children: /* @__PURE__ */_jsx(NextGlyph, {
|
|
241
258
|
size: arrowGlyphSize
|
|
242
259
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","useState","useRef","useCallback","useEffect","Children","useTranslation","CaretLeftIcon","CaretRightIcon","zIndex","MIN_PRESS_TARGET","useResolvedKnobs","View","XStack","ScrollView","getTokens","styled","DotIndicator","useDirection","CarouselContainer","name","position","width","overflow","CarouselSlide","flexShrink","ArrowButton","top","transform","translateY","localTop","alignItems","justifyContent","backgroundColor","cursor","opacity","hoverStyle","scale","pressStyle","variants","disabled","true","ArrowVisual","
|
|
1
|
+
{"version":3,"names":["jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","useState","useRef","useCallback","useEffect","Children","useTranslation","CaretLeftIcon","CaretRightIcon","zIndex","MIN_PRESS_TARGET","useResolvedKnobs","View","XStack","ScrollView","getTokens","styled","DotIndicator","useDirection","CarouselContainer","name","position","width","overflow","CarouselSlide","flexShrink","ArrowButton","top","transform","translateY","localTop","alignItems","justifyContent","backgroundColor","cursor","opacity","hoverStyle","scale","pressStyle","variants","disabled","true","ArrowVisual","shadowColor","shadowRadius","shadowOpacity","DotsWrapper","paddingVertical","Carousel","param","children","showArrows","showDots","autoPlay","loop","gap","gapProp","onSlideChange","initialSlide","_ref","_ref1","_getTokens_space_gap","_getTokens_space","_getTokens_size_knobProps_sizeToken","_getTokens_size","t","knobProps","control","gapPx","space","val","arrowSize","size","sizeToken","arrowGlyphSize","Math","round","arrowRadius","pointy","arrowTargetSize","max","arrowEdgeInset","activeIndex","setActiveIndex","trackRef","slideCount","count","slideWidth","setSlideWidth","autoPlayRef","scrollToSlide","index","current","offset","scrollTo","x","animated","goToSlide","targetIndex","min","goNext","goPrev","handleScroll","event","scrollX","nativeEvent","contentOffset","newIndex","setInterval","clearInterval","activeIndexRef","canGoPrev","canGoNext","isRTL","prevSide","nextSide","PrevGlyph","NextGlyph","containerRadius","ref","horizontal","showsHorizontalScrollIndicator","style","scrollSnapType","onScroll","scrollEventThrottle","onLayout","e","layout","dataSet","carouselTrack","map","child","scrollSnapAlign","height","transition","onPress"],"sources":["../../../src/Carousel/index.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { MIN_PRESS_TARGET, useResolvedKnobs } from "@multiplatform.one/theme";
|
|
1
|
+
import { MIN_PRESS_TARGET, radiusClassProps, useResolvedKnobs } from "@multiplatform.one/theme";
|
|
2
|
+
import { CheckIcon } from "@phosphor-icons/react";
|
|
2
3
|
import { useTranslation } from "react-i18next";
|
|
3
4
|
import { View, XStack, getTokens, styled } from "tamagui";
|
|
4
5
|
import { componentColors } from "../componentColors.mjs";
|
|
@@ -26,11 +27,36 @@ const dotGeometryMap = {
|
|
|
26
27
|
active: 30
|
|
27
28
|
}
|
|
28
29
|
};
|
|
30
|
+
const CHECK_MIN_DOT = 8;
|
|
31
|
+
function sizePx(value, fallback) {
|
|
32
|
+
if (typeof value === "number") return value;
|
|
33
|
+
if (typeof value === "string") {
|
|
34
|
+
const token = getTokens().size?.[value]?.val;
|
|
35
|
+
if (typeof token === "number") return token;
|
|
36
|
+
}
|
|
37
|
+
return fallback;
|
|
38
|
+
}
|
|
29
39
|
const DotsContainer = styled(XStack, {
|
|
30
40
|
name: "DotIndicator",
|
|
31
41
|
alignItems: "center",
|
|
32
42
|
justifyContent: "center",
|
|
33
|
-
gap: "$2"
|
|
43
|
+
gap: "$2",
|
|
44
|
+
variants: {
|
|
45
|
+
// A rail seats the strip on a filled capsule instead of the page. It is a
|
|
46
|
+
// variant of the strip rather than host chrome because the rail and the
|
|
47
|
+
// idle dot color are ONE decision: idle dots have to step up the ramp to
|
|
48
|
+
// stay visible on the rail's fill, and split across two files that pairing
|
|
49
|
+
// drifts (LC-16).
|
|
50
|
+
rail: {
|
|
51
|
+
true: {
|
|
52
|
+
backgroundColor: componentColors.interactive.background,
|
|
53
|
+
// R-PILL (D-09 / LC-60): the rail is a capsule at every radius value,
|
|
54
|
+
// like the dots it holds.
|
|
55
|
+
...radiusClassProps("R-PILL", "DotIndicator rail"),
|
|
56
|
+
borderRadius: "$10"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
34
60
|
});
|
|
35
61
|
const DotTarget = styled(View, {
|
|
36
62
|
name: "DotTarget",
|
|
@@ -46,6 +72,13 @@ const DotTarget = styled(View, {
|
|
|
46
72
|
});
|
|
47
73
|
const Dot = styled(View, {
|
|
48
74
|
name: "Dot",
|
|
75
|
+
// R-PILL (D-09 / LC-60): an ornamental dot is a circle at every radius
|
|
76
|
+
// value — the knob moves its size, never its shape — so it declares the
|
|
77
|
+
// class the `radius:none` sweep licenses it under.
|
|
78
|
+
...radiusClassProps("R-PILL", "DotIndicator dot"),
|
|
79
|
+
// Centers the completion checkmark; inert for the empty dots.
|
|
80
|
+
alignItems: "center",
|
|
81
|
+
justifyContent: "center",
|
|
49
82
|
borderRadius: 1e3,
|
|
50
83
|
backgroundColor: componentColors.indicator.inactive,
|
|
51
84
|
hoverStyle: {
|
|
@@ -59,31 +92,11 @@ const Dot = styled(View, {
|
|
|
59
92
|
backgroundColor: componentColors.indicator.selected
|
|
60
93
|
}
|
|
61
94
|
},
|
|
62
|
-
variant:
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
bars: {
|
|
68
|
-
width: 6,
|
|
69
|
-
height: 6
|
|
70
|
-
},
|
|
71
|
-
pills: {
|
|
72
|
-
width: 8,
|
|
73
|
-
height: 8
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
activeVariant: {
|
|
77
|
-
dots: {
|
|
78
|
-
width: 24
|
|
79
|
-
},
|
|
80
|
-
bars: {
|
|
81
|
-
width: 24
|
|
82
|
-
},
|
|
83
|
-
pills: {
|
|
84
|
-
width: 24
|
|
85
|
-
}
|
|
86
|
-
},
|
|
95
|
+
// No `variant` geometry here: the mark's width/height are always passed
|
|
96
|
+
// explicitly from the one size channel below, so a per-variant pixel table
|
|
97
|
+
// on the styled component could only ever be a second, silently-losing
|
|
98
|
+
// definition of the same thing (it already disagreed with the scale at
|
|
99
|
+
// size knob `$3`, where a tick is 5px, not 6).
|
|
87
100
|
disabled: {
|
|
88
101
|
true: {
|
|
89
102
|
opacity: 0.5
|
|
@@ -97,7 +110,14 @@ function DotIndicator({
|
|
|
97
110
|
onChange,
|
|
98
111
|
variant = "dots",
|
|
99
112
|
gap: gapProp,
|
|
100
|
-
disabled = false
|
|
113
|
+
disabled = false,
|
|
114
|
+
completedSteps,
|
|
115
|
+
idiom = "item",
|
|
116
|
+
rail = false,
|
|
117
|
+
dotSize,
|
|
118
|
+
activeDotSize,
|
|
119
|
+
transition,
|
|
120
|
+
dotStateAttribute = "data-dot-state"
|
|
101
121
|
}) {
|
|
102
122
|
const {
|
|
103
123
|
t
|
|
@@ -107,18 +127,36 @@ function DotIndicator({
|
|
|
107
127
|
} = useResolvedKnobs();
|
|
108
128
|
const gap = gapProp ?? dotGapMap[knobProps.space] ?? "$2";
|
|
109
129
|
const geometry = dotGeometryMap[knobProps.sizeToken] ?? dotGeometryMap.$4;
|
|
110
|
-
const
|
|
130
|
+
const isTick = variant === "bars";
|
|
131
|
+
const itemSize = sizePx(dotSize, isTick ? geometry.bar : geometry.dot);
|
|
132
|
+
const activeSize = sizePx(activeDotSize, geometry.active);
|
|
111
133
|
const gapPx = typeof gap === "number" ? gap : getTokens().space?.[gap]?.val ?? 7;
|
|
112
134
|
const slopX = Math.max(0, Math.floor((gapPx - 1) / 2));
|
|
113
|
-
const outsetY = Math.ceil((MIN_PRESS_TARGET - itemSize) / 2);
|
|
135
|
+
const outsetY = Math.max(0, Math.ceil((MIN_PRESS_TARGET - itemSize) / 2));
|
|
114
136
|
const interactive = !disabled && !!onChange;
|
|
137
|
+
const isStep = idiom === "step";
|
|
138
|
+
const label = isStep ? t("Go to step {{number}}") : t("Go to item {{number}}");
|
|
139
|
+
const currentValue = isStep ? "step" : "true";
|
|
140
|
+
const motionStyle = transition ? {
|
|
141
|
+
transition: "width var(--mp-transition, 100ms) ease, height var(--mp-transition, 100ms) ease, background-color var(--mp-transition, 100ms) ease"
|
|
142
|
+
} : void 0;
|
|
115
143
|
return /* @__PURE__ */jsx(DotsContainer, {
|
|
116
144
|
gap,
|
|
145
|
+
rail,
|
|
146
|
+
...(rail ? {
|
|
147
|
+
paddingHorizontal: knobProps.panelPadding.padding,
|
|
148
|
+
height: knobProps.sizeToken
|
|
149
|
+
} : void 0),
|
|
117
150
|
children: Array.from({
|
|
118
151
|
length: total
|
|
119
152
|
}).map((_, index) => {
|
|
120
153
|
const isActive = index === activeIndex;
|
|
121
|
-
const
|
|
154
|
+
const isCompleted = !isActive && !!completedSteps?.has(index);
|
|
155
|
+
const dotWidth = isActive ? activeSize : itemSize;
|
|
156
|
+
const restingFill = isCompleted ? componentColors.indicator.completed : rail ?
|
|
157
|
+
// Idle chrome steps up the ramp on a rail so the dot still
|
|
158
|
+
// separates from the capsule fill it sits on.
|
|
159
|
+
componentColors.indicator.track : componentColors.indicator.inactive;
|
|
122
160
|
return /* @__PURE__ */jsx(DotTarget, {
|
|
123
161
|
width: dotWidth + slopX * 2,
|
|
124
162
|
minHeight: MIN_PRESS_TARGET,
|
|
@@ -126,11 +164,11 @@ function DotIndicator({
|
|
|
126
164
|
marginVertical: -outsetY,
|
|
127
165
|
cursor: interactive ? "pointer" : disabled ? "not-allowed" : "default",
|
|
128
166
|
onPress: interactive ? () => onChange?.(index) : void 0,
|
|
129
|
-
"aria-label": withInterp(
|
|
167
|
+
"aria-label": withInterp(label, {
|
|
130
168
|
number: index + 1
|
|
131
169
|
}),
|
|
132
170
|
...(isActive ? {
|
|
133
|
-
"aria-current":
|
|
171
|
+
"aria-current": currentValue
|
|
134
172
|
} : void 0),
|
|
135
173
|
...(interactive ? {
|
|
136
174
|
role: "button",
|
|
@@ -145,12 +183,31 @@ function DotIndicator({
|
|
|
145
183
|
role: "button"
|
|
146
184
|
} : void 0),
|
|
147
185
|
children: /* @__PURE__ */jsx(Dot, {
|
|
148
|
-
variant,
|
|
149
186
|
active: isActive,
|
|
150
|
-
|
|
187
|
+
...(isActive ? void 0 : {
|
|
188
|
+
backgroundColor: restingFill,
|
|
189
|
+
// A completed dot and a rail dot both hold their fill on
|
|
190
|
+
// hover: the neutral hover step is PALER than either, so
|
|
191
|
+
// the page-level hover would read as a dim.
|
|
192
|
+
...(isCompleted || rail ? {
|
|
193
|
+
hoverStyle: {
|
|
194
|
+
backgroundColor: restingFill
|
|
195
|
+
}
|
|
196
|
+
} : void 0)
|
|
197
|
+
}),
|
|
151
198
|
width: dotWidth,
|
|
152
199
|
height: itemSize,
|
|
153
|
-
disabled
|
|
200
|
+
disabled,
|
|
201
|
+
transition,
|
|
202
|
+
style: motionStyle,
|
|
203
|
+
...{
|
|
204
|
+
[dotStateAttribute]: isActive ? "active" : "idle"
|
|
205
|
+
},
|
|
206
|
+
children: isCompleted && !isTick && itemSize >= CHECK_MIN_DOT && /* @__PURE__ */jsx(CheckIcon, {
|
|
207
|
+
size: 8,
|
|
208
|
+
color: "white",
|
|
209
|
+
weight: "bold"
|
|
210
|
+
})
|
|
154
211
|
})
|
|
155
212
|
}, index);
|
|
156
213
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MIN_PRESS_TARGET","useResolvedKnobs","useTranslation","View","XStack","getTokens","styled","componentColors","withInterp","jsx","dotGapMap","small","medium","large","dotGeometryMap","$3","dot","bar","active","$4","$5","DotsContainer","name","alignItems","justifyContent","gap","
|
|
1
|
+
{"version":3,"names":["MIN_PRESS_TARGET","radiusClassProps","useResolvedKnobs","CheckIcon","useTranslation","View","XStack","getTokens","styled","componentColors","withInterp","jsx","dotGapMap","small","medium","large","dotGeometryMap","$3","dot","bar","active","$4","$5","CHECK_MIN_DOT","sizePx","value","fallback","token","size","val","DotsContainer","name","alignItems","justifyContent","gap","variants","rail","true","backgroundColor","interactive","background","borderRadius","DotTarget","focusVisibleStyle","outlineColor","outlineWidth","outlineStyle","outlineOffset","Dot","indicator","inactive","hoverStyle","hover","selected","disabled","opacity","DotIndicator","total","activeIndex","onChange","variant","gapProp","completedSteps","idiom","dotSize","activeDotSize","transition","dotStateAttribute","t","knobProps","space","geometry","sizeToken","isTick","itemSize","activeSize","gapPx","slopX","Math","max","floor","outsetY","ceil","isStep","label","currentValue","motionStyle","paddingHorizontal","panelPadding","padding","height","children","Array","from","length","map","_","index","isActive","isCompleted","has","dotWidth","restingFill","completed","track","width","minHeight","marginHorizontal","marginVertical","cursor","onPress","number","role","tabIndex","onKeyDown","e","key","preventDefault","style","color","weight"],"sources":["../../../src/DotIndicator/index.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { MIN_PRESS_TARGET, useResolvedKnobs } from "@multiplatform.one/theme";
|
|
2
|
+
import { MIN_PRESS_TARGET, radiusClassProps, useResolvedKnobs } from "@multiplatform.one/theme";
|
|
3
|
+
import { CheckIcon } from "@phosphor-icons/react";
|
|
3
4
|
import { useTranslation } from "react-i18next";
|
|
4
5
|
import { View, XStack, getTokens, styled } from "tamagui";
|
|
5
6
|
import { componentColors } from "../componentColors.native.js";
|
|
@@ -26,11 +27,37 @@ var dotGeometryMap = {
|
|
|
26
27
|
active: 30
|
|
27
28
|
}
|
|
28
29
|
};
|
|
30
|
+
var CHECK_MIN_DOT = 8;
|
|
31
|
+
function sizePx(value, fallback) {
|
|
32
|
+
if (typeof value === "number") return value;
|
|
33
|
+
if (typeof value === "string") {
|
|
34
|
+
var _getTokens_size_value, _getTokens_size;
|
|
35
|
+
var token = (_getTokens_size = getTokens().size) === null || _getTokens_size === void 0 ? void 0 : (_getTokens_size_value = _getTokens_size[value]) === null || _getTokens_size_value === void 0 ? void 0 : _getTokens_size_value.val;
|
|
36
|
+
if (typeof token === "number") return token;
|
|
37
|
+
}
|
|
38
|
+
return fallback;
|
|
39
|
+
}
|
|
29
40
|
var DotsContainer = styled(XStack, {
|
|
30
41
|
name: "DotIndicator",
|
|
31
42
|
alignItems: "center",
|
|
32
43
|
justifyContent: "center",
|
|
33
|
-
gap: "$2"
|
|
44
|
+
gap: "$2",
|
|
45
|
+
variants: {
|
|
46
|
+
// A rail seats the strip on a filled capsule instead of the page. It is a
|
|
47
|
+
// variant of the strip rather than host chrome because the rail and the
|
|
48
|
+
// idle dot color are ONE decision: idle dots have to step up the ramp to
|
|
49
|
+
// stay visible on the rail's fill, and split across two files that pairing
|
|
50
|
+
// drifts (LC-16).
|
|
51
|
+
rail: {
|
|
52
|
+
true: {
|
|
53
|
+
backgroundColor: componentColors.interactive.background,
|
|
54
|
+
// R-PILL (D-09 / LC-60): the rail is a capsule at every radius value,
|
|
55
|
+
// like the dots it holds.
|
|
56
|
+
...radiusClassProps("R-PILL", "DotIndicator rail"),
|
|
57
|
+
borderRadius: "$10"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
34
61
|
});
|
|
35
62
|
var DotTarget = styled(View, {
|
|
36
63
|
name: "DotTarget",
|
|
@@ -46,6 +73,13 @@ var DotTarget = styled(View, {
|
|
|
46
73
|
});
|
|
47
74
|
var Dot = styled(View, {
|
|
48
75
|
name: "Dot",
|
|
76
|
+
// R-PILL (D-09 / LC-60): an ornamental dot is a circle at every radius
|
|
77
|
+
// value — the knob moves its size, never its shape — so it declares the
|
|
78
|
+
// class the `radius:none` sweep licenses it under.
|
|
79
|
+
...radiusClassProps("R-PILL", "DotIndicator dot"),
|
|
80
|
+
// Centers the completion checkmark; inert for the empty dots.
|
|
81
|
+
alignItems: "center",
|
|
82
|
+
justifyContent: "center",
|
|
49
83
|
borderRadius: 1e3,
|
|
50
84
|
backgroundColor: componentColors.indicator.inactive,
|
|
51
85
|
hoverStyle: {
|
|
@@ -59,31 +93,11 @@ var Dot = styled(View, {
|
|
|
59
93
|
backgroundColor: componentColors.indicator.selected
|
|
60
94
|
}
|
|
61
95
|
},
|
|
62
|
-
variant:
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
bars: {
|
|
68
|
-
width: 6,
|
|
69
|
-
height: 6
|
|
70
|
-
},
|
|
71
|
-
pills: {
|
|
72
|
-
width: 8,
|
|
73
|
-
height: 8
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
activeVariant: {
|
|
77
|
-
dots: {
|
|
78
|
-
width: 24
|
|
79
|
-
},
|
|
80
|
-
bars: {
|
|
81
|
-
width: 24
|
|
82
|
-
},
|
|
83
|
-
pills: {
|
|
84
|
-
width: 24
|
|
85
|
-
}
|
|
86
|
-
},
|
|
96
|
+
// No `variant` geometry here: the mark's width/height are always passed
|
|
97
|
+
// explicitly from the one size channel below, so a per-variant pixel table
|
|
98
|
+
// on the styled component could only ever be a second, silently-losing
|
|
99
|
+
// definition of the same thing (it already disagreed with the scale at
|
|
100
|
+
// size knob `$3`, where a tick is 5px, not 6).
|
|
87
101
|
disabled: {
|
|
88
102
|
true: {
|
|
89
103
|
opacity: 0.5
|
|
@@ -98,7 +112,14 @@ function DotIndicator(param) {
|
|
|
98
112
|
onChange,
|
|
99
113
|
variant = "dots",
|
|
100
114
|
gap: gapProp,
|
|
101
|
-
disabled = false
|
|
115
|
+
disabled = false,
|
|
116
|
+
completedSteps,
|
|
117
|
+
idiom = "item",
|
|
118
|
+
rail = false,
|
|
119
|
+
dotSize,
|
|
120
|
+
activeDotSize,
|
|
121
|
+
transition,
|
|
122
|
+
dotStateAttribute = "data-dot-state"
|
|
102
123
|
} = param;
|
|
103
124
|
var _ref, _dotGeometryMap_knobProps_sizeToken, _ref1;
|
|
104
125
|
var _getTokens_space_gap, _getTokens_space;
|
|
@@ -110,18 +131,36 @@ function DotIndicator(param) {
|
|
|
110
131
|
} = useResolvedKnobs();
|
|
111
132
|
var gap = (_ref = gapProp !== null && gapProp !== void 0 ? gapProp : dotGapMap[knobProps.space]) !== null && _ref !== void 0 ? _ref : "$2";
|
|
112
133
|
var geometry = (_dotGeometryMap_knobProps_sizeToken = dotGeometryMap[knobProps.sizeToken]) !== null && _dotGeometryMap_knobProps_sizeToken !== void 0 ? _dotGeometryMap_knobProps_sizeToken : dotGeometryMap.$4;
|
|
113
|
-
var
|
|
134
|
+
var isTick = variant === "bars";
|
|
135
|
+
var itemSize = sizePx(dotSize, isTick ? geometry.bar : geometry.dot);
|
|
136
|
+
var activeSize = sizePx(activeDotSize, geometry.active);
|
|
114
137
|
var gapPx = typeof gap === "number" ? gap : (_ref1 = (_getTokens_space = getTokens().space) === null || _getTokens_space === void 0 ? void 0 : (_getTokens_space_gap = _getTokens_space[gap]) === null || _getTokens_space_gap === void 0 ? void 0 : _getTokens_space_gap.val) !== null && _ref1 !== void 0 ? _ref1 : 7;
|
|
115
138
|
var slopX = Math.max(0, Math.floor((gapPx - 1) / 2));
|
|
116
|
-
var outsetY = Math.ceil((MIN_PRESS_TARGET - itemSize) / 2);
|
|
139
|
+
var outsetY = Math.max(0, Math.ceil((MIN_PRESS_TARGET - itemSize) / 2));
|
|
117
140
|
var interactive = !disabled && !!onChange;
|
|
141
|
+
var isStep = idiom === "step";
|
|
142
|
+
var label = isStep ? t("Go to step {{number}}") : t("Go to item {{number}}");
|
|
143
|
+
var currentValue = isStep ? "step" : "true";
|
|
144
|
+
var motionStyle = transition ? {
|
|
145
|
+
transition: "width var(--mp-transition, 100ms) ease, height var(--mp-transition, 100ms) ease, background-color var(--mp-transition, 100ms) ease"
|
|
146
|
+
} : void 0;
|
|
118
147
|
return /* @__PURE__ */_jsx(DotsContainer, {
|
|
119
148
|
gap,
|
|
149
|
+
rail,
|
|
150
|
+
...(rail ? {
|
|
151
|
+
paddingHorizontal: knobProps.panelPadding.padding,
|
|
152
|
+
height: knobProps.sizeToken
|
|
153
|
+
} : void 0),
|
|
120
154
|
children: Array.from({
|
|
121
155
|
length: total
|
|
122
156
|
}).map(function (_, index) {
|
|
123
157
|
var isActive = index === activeIndex;
|
|
124
|
-
var
|
|
158
|
+
var isCompleted = !isActive && !!(completedSteps === null || completedSteps === void 0 ? void 0 : completedSteps.has(index));
|
|
159
|
+
var dotWidth = isActive ? activeSize : itemSize;
|
|
160
|
+
var restingFill = isCompleted ? componentColors.indicator.completed : rail ?
|
|
161
|
+
// Idle chrome steps up the ramp on a rail so the dot still
|
|
162
|
+
// separates from the capsule fill it sits on.
|
|
163
|
+
componentColors.indicator.track : componentColors.indicator.inactive;
|
|
125
164
|
return /* @__PURE__ */_jsx(DotTarget, {
|
|
126
165
|
width: dotWidth + slopX * 2,
|
|
127
166
|
minHeight: MIN_PRESS_TARGET,
|
|
@@ -131,11 +170,11 @@ function DotIndicator(param) {
|
|
|
131
170
|
onPress: interactive ? function () {
|
|
132
171
|
return onChange === null || onChange === void 0 ? void 0 : onChange(index);
|
|
133
172
|
} : void 0,
|
|
134
|
-
"aria-label": withInterp(
|
|
173
|
+
"aria-label": withInterp(label, {
|
|
135
174
|
number: index + 1
|
|
136
175
|
}),
|
|
137
176
|
...(isActive ? {
|
|
138
|
-
"aria-current":
|
|
177
|
+
"aria-current": currentValue
|
|
139
178
|
} : void 0),
|
|
140
179
|
...(interactive ? {
|
|
141
180
|
role: "button",
|
|
@@ -150,12 +189,31 @@ function DotIndicator(param) {
|
|
|
150
189
|
role: "button"
|
|
151
190
|
} : void 0),
|
|
152
191
|
children: /* @__PURE__ */_jsx(Dot, {
|
|
153
|
-
variant,
|
|
154
192
|
active: isActive,
|
|
155
|
-
|
|
193
|
+
...(isActive ? void 0 : {
|
|
194
|
+
backgroundColor: restingFill,
|
|
195
|
+
// A completed dot and a rail dot both hold their fill on
|
|
196
|
+
// hover: the neutral hover step is PALER than either, so
|
|
197
|
+
// the page-level hover would read as a dim.
|
|
198
|
+
...(isCompleted || rail ? {
|
|
199
|
+
hoverStyle: {
|
|
200
|
+
backgroundColor: restingFill
|
|
201
|
+
}
|
|
202
|
+
} : void 0)
|
|
203
|
+
}),
|
|
156
204
|
width: dotWidth,
|
|
157
205
|
height: itemSize,
|
|
158
|
-
disabled
|
|
206
|
+
disabled,
|
|
207
|
+
transition,
|
|
208
|
+
style: motionStyle,
|
|
209
|
+
...{
|
|
210
|
+
[dotStateAttribute]: isActive ? "active" : "idle"
|
|
211
|
+
},
|
|
212
|
+
children: isCompleted && !isTick && itemSize >= CHECK_MIN_DOT && /* @__PURE__ */_jsx(CheckIcon, {
|
|
213
|
+
size: 8,
|
|
214
|
+
color: "white",
|
|
215
|
+
weight: "bold"
|
|
216
|
+
})
|
|
159
217
|
})
|
|
160
218
|
}, index);
|
|
161
219
|
})
|