@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.
Files changed (262) hide show
  1. package/dist/cjs/Avatar/index.cjs +4 -0
  2. package/dist/cjs/Avatar/index.native.js +4 -0
  3. package/dist/cjs/Avatar/index.native.js.map +1 -1
  4. package/dist/cjs/Badge/index.cjs +3 -0
  5. package/dist/cjs/Badge/index.native.js +3 -0
  6. package/dist/cjs/Badge/index.native.js.map +1 -1
  7. package/dist/cjs/Carousel/index.cjs +28 -15
  8. package/dist/cjs/Carousel/index.native.js +34 -17
  9. package/dist/cjs/Carousel/index.native.js.map +1 -1
  10. package/dist/cjs/DotIndicator/index.cjs +92 -35
  11. package/dist/cjs/DotIndicator/index.native.js +93 -35
  12. package/dist/cjs/DotIndicator/index.native.js.map +1 -1
  13. package/dist/cjs/Pagination.cjs +112 -167
  14. package/dist/cjs/Pagination.native.js +125 -180
  15. package/dist/cjs/Pagination.native.js.map +1 -1
  16. package/dist/cjs/ProgressSteps/index.cjs +2 -1
  17. package/dist/cjs/ProgressSteps/index.native.js +2 -1
  18. package/dist/cjs/ProgressSteps/index.native.js.map +1 -1
  19. package/dist/cjs/charts/PieChart.cjs +1 -1
  20. package/dist/cjs/charts/PieChart.native.js +7 -2
  21. package/dist/cjs/charts/PieChart.native.js.map +1 -1
  22. package/dist/cjs/feedback/ConfirmDialog.cjs +1 -3
  23. package/dist/cjs/feedback/ConfirmDialog.native.js +1 -3
  24. package/dist/cjs/feedback/ConfirmDialog.native.js.map +1 -1
  25. package/dist/cjs/index.cjs +1 -0
  26. package/dist/cjs/index.native.js +1 -0
  27. package/dist/cjs/index.native.js.map +1 -1
  28. package/dist/cjs/layouts/ViewSwitcher.cjs +4 -5
  29. package/dist/cjs/layouts/ViewSwitcher.native.js +13 -7
  30. package/dist/cjs/layouts/ViewSwitcher.native.js.map +1 -1
  31. package/dist/cjs/layouts/attachments.cjs +4 -8
  32. package/dist/cjs/layouts/attachments.native.js +5 -8
  33. package/dist/cjs/layouts/attachments.native.js.map +1 -1
  34. package/dist/cjs/layouts/page.cjs +1 -0
  35. package/dist/cjs/layouts/page.native.js +4 -1
  36. package/dist/cjs/layouts/page.native.js.map +1 -1
  37. package/dist/cjs/layouts/tags.cjs +1 -0
  38. package/dist/cjs/layouts/tags.native.js +2 -0
  39. package/dist/cjs/layouts/tags.native.js.map +1 -1
  40. package/dist/cjs/layouts/timeline.cjs +0 -6
  41. package/dist/cjs/layouts/timeline.native.js +0 -6
  42. package/dist/cjs/layouts/timeline.native.js.map +1 -1
  43. package/dist/cjs/surfaces.cjs +21 -0
  44. package/dist/cjs/surfaces.native.js +22 -0
  45. package/dist/cjs/surfaces.native.js.map +1 -1
  46. package/dist/cjs/views/Calendar.cjs +2 -0
  47. package/dist/cjs/views/Calendar.native.js +8 -2
  48. package/dist/cjs/views/Calendar.native.js.map +1 -1
  49. package/dist/cjs/views/Kanban.cjs +22 -13
  50. package/dist/cjs/views/Kanban.native.js +1 -0
  51. package/dist/cjs/views/Kanban.native.js.map +1 -1
  52. package/dist/cjs/views/ReportBuilder.cjs +12 -2
  53. package/dist/cjs/views/ReportBuilder.native.js +12 -2
  54. package/dist/cjs/views/ReportBuilder.native.js.map +1 -1
  55. package/dist/esm/Avatar/index.mjs +5 -1
  56. package/dist/esm/Avatar/index.mjs.map +1 -1
  57. package/dist/esm/Avatar/index.native.js +5 -1
  58. package/dist/esm/Avatar/index.native.js.map +1 -1
  59. package/dist/esm/Badge/index.mjs +4 -1
  60. package/dist/esm/Badge/index.mjs.map +1 -1
  61. package/dist/esm/Badge/index.native.js +4 -1
  62. package/dist/esm/Badge/index.native.js.map +1 -1
  63. package/dist/esm/Carousel/index.mjs +28 -15
  64. package/dist/esm/Carousel/index.mjs.map +1 -1
  65. package/dist/esm/Carousel/index.native.js +34 -17
  66. package/dist/esm/Carousel/index.native.js.map +1 -1
  67. package/dist/esm/DotIndicator/index.mjs +93 -36
  68. package/dist/esm/DotIndicator/index.mjs.map +1 -1
  69. package/dist/esm/DotIndicator/index.native.js +94 -36
  70. package/dist/esm/DotIndicator/index.native.js.map +1 -1
  71. package/dist/esm/Pagination.mjs +113 -168
  72. package/dist/esm/Pagination.mjs.map +1 -1
  73. package/dist/esm/Pagination.native.js +126 -181
  74. package/dist/esm/Pagination.native.js.map +1 -1
  75. package/dist/esm/ProgressSteps/index.mjs +2 -1
  76. package/dist/esm/ProgressSteps/index.mjs.map +1 -1
  77. package/dist/esm/ProgressSteps/index.native.js +2 -1
  78. package/dist/esm/ProgressSteps/index.native.js.map +1 -1
  79. package/dist/esm/charts/PieChart.mjs +1 -1
  80. package/dist/esm/charts/PieChart.mjs.map +1 -1
  81. package/dist/esm/charts/PieChart.native.js +7 -2
  82. package/dist/esm/charts/PieChart.native.js.map +1 -1
  83. package/dist/esm/feedback/ConfirmDialog.mjs +2 -4
  84. package/dist/esm/feedback/ConfirmDialog.mjs.map +1 -1
  85. package/dist/esm/feedback/ConfirmDialog.native.js +2 -4
  86. package/dist/esm/feedback/ConfirmDialog.native.js.map +1 -1
  87. package/dist/esm/index.mjs +2 -2
  88. package/dist/esm/index.mjs.map +1 -1
  89. package/dist/esm/index.native.js +2 -2
  90. package/dist/esm/index.native.js.map +1 -1
  91. package/dist/esm/layouts/ViewSwitcher.mjs +4 -5
  92. package/dist/esm/layouts/ViewSwitcher.mjs.map +1 -1
  93. package/dist/esm/layouts/ViewSwitcher.native.js +13 -7
  94. package/dist/esm/layouts/ViewSwitcher.native.js.map +1 -1
  95. package/dist/esm/layouts/attachments.mjs +4 -8
  96. package/dist/esm/layouts/attachments.mjs.map +1 -1
  97. package/dist/esm/layouts/attachments.native.js +5 -8
  98. package/dist/esm/layouts/attachments.native.js.map +1 -1
  99. package/dist/esm/layouts/page.mjs +2 -1
  100. package/dist/esm/layouts/page.mjs.map +1 -1
  101. package/dist/esm/layouts/page.native.js +5 -2
  102. package/dist/esm/layouts/page.native.js.map +1 -1
  103. package/dist/esm/layouts/tags.mjs +1 -0
  104. package/dist/esm/layouts/tags.mjs.map +1 -1
  105. package/dist/esm/layouts/tags.native.js +2 -0
  106. package/dist/esm/layouts/tags.native.js.map +1 -1
  107. package/dist/esm/layouts/timeline.mjs +0 -6
  108. package/dist/esm/layouts/timeline.mjs.map +1 -1
  109. package/dist/esm/layouts/timeline.native.js +0 -6
  110. package/dist/esm/layouts/timeline.native.js.map +1 -1
  111. package/dist/esm/surfaces.mjs +21 -1
  112. package/dist/esm/surfaces.mjs.map +1 -1
  113. package/dist/esm/surfaces.native.js +22 -1
  114. package/dist/esm/surfaces.native.js.map +1 -1
  115. package/dist/esm/views/Calendar.mjs +3 -1
  116. package/dist/esm/views/Calendar.mjs.map +1 -1
  117. package/dist/esm/views/Calendar.native.js +9 -3
  118. package/dist/esm/views/Calendar.native.js.map +1 -1
  119. package/dist/esm/views/Kanban.mjs +23 -14
  120. package/dist/esm/views/Kanban.mjs.map +1 -1
  121. package/dist/esm/views/Kanban.native.js +2 -1
  122. package/dist/esm/views/Kanban.native.js.map +1 -1
  123. package/dist/esm/views/ReportBuilder.mjs +13 -3
  124. package/dist/esm/views/ReportBuilder.mjs.map +1 -1
  125. package/dist/esm/views/ReportBuilder.native.js +13 -3
  126. package/dist/esm/views/ReportBuilder.native.js.map +1 -1
  127. package/dist/jsx/Avatar/index.mjs +5 -1
  128. package/dist/jsx/Avatar/index.mjs.map +1 -1
  129. package/dist/jsx/Avatar/index.native.js +4 -0
  130. package/dist/jsx/Avatar/index.native.js.map +1 -1
  131. package/dist/jsx/Badge/index.mjs +4 -1
  132. package/dist/jsx/Badge/index.mjs.map +1 -1
  133. package/dist/jsx/Badge/index.native.js +3 -0
  134. package/dist/jsx/Badge/index.native.js.map +1 -1
  135. package/dist/jsx/Carousel/index.mjs +28 -15
  136. package/dist/jsx/Carousel/index.mjs.map +1 -1
  137. package/dist/jsx/Carousel/index.native.js +34 -17
  138. package/dist/jsx/Carousel/index.native.js.map +1 -1
  139. package/dist/jsx/DotIndicator/index.mjs +93 -36
  140. package/dist/jsx/DotIndicator/index.mjs.map +1 -1
  141. package/dist/jsx/DotIndicator/index.native.js +93 -35
  142. package/dist/jsx/DotIndicator/index.native.js.map +1 -1
  143. package/dist/jsx/Pagination.mjs +113 -168
  144. package/dist/jsx/Pagination.mjs.map +1 -1
  145. package/dist/jsx/Pagination.native.js +125 -180
  146. package/dist/jsx/Pagination.native.js.map +1 -1
  147. package/dist/jsx/ProgressSteps/index.mjs +2 -1
  148. package/dist/jsx/ProgressSteps/index.mjs.map +1 -1
  149. package/dist/jsx/ProgressSteps/index.native.js +2 -1
  150. package/dist/jsx/ProgressSteps/index.native.js.map +1 -1
  151. package/dist/jsx/charts/PieChart.mjs +1 -1
  152. package/dist/jsx/charts/PieChart.mjs.map +1 -1
  153. package/dist/jsx/charts/PieChart.native.js +7 -2
  154. package/dist/jsx/charts/PieChart.native.js.map +1 -1
  155. package/dist/jsx/feedback/ConfirmDialog.mjs +2 -4
  156. package/dist/jsx/feedback/ConfirmDialog.mjs.map +1 -1
  157. package/dist/jsx/feedback/ConfirmDialog.native.js +1 -3
  158. package/dist/jsx/feedback/ConfirmDialog.native.js.map +1 -1
  159. package/dist/jsx/index.js +2 -2
  160. package/dist/jsx/index.js.map +1 -1
  161. package/dist/jsx/index.mjs +2 -2
  162. package/dist/jsx/index.mjs.map +1 -1
  163. package/dist/jsx/index.native.js +1 -0
  164. package/dist/jsx/index.native.js.map +1 -1
  165. package/dist/jsx/layouts/ViewSwitcher.mjs +4 -5
  166. package/dist/jsx/layouts/ViewSwitcher.mjs.map +1 -1
  167. package/dist/jsx/layouts/ViewSwitcher.native.js +13 -7
  168. package/dist/jsx/layouts/ViewSwitcher.native.js.map +1 -1
  169. package/dist/jsx/layouts/attachments.mjs +4 -8
  170. package/dist/jsx/layouts/attachments.mjs.map +1 -1
  171. package/dist/jsx/layouts/attachments.native.js +5 -8
  172. package/dist/jsx/layouts/attachments.native.js.map +1 -1
  173. package/dist/jsx/layouts/page.mjs +2 -1
  174. package/dist/jsx/layouts/page.mjs.map +1 -1
  175. package/dist/jsx/layouts/page.native.js +4 -1
  176. package/dist/jsx/layouts/page.native.js.map +1 -1
  177. package/dist/jsx/layouts/tags.mjs +1 -0
  178. package/dist/jsx/layouts/tags.mjs.map +1 -1
  179. package/dist/jsx/layouts/tags.native.js +2 -0
  180. package/dist/jsx/layouts/tags.native.js.map +1 -1
  181. package/dist/jsx/layouts/timeline.mjs +0 -6
  182. package/dist/jsx/layouts/timeline.mjs.map +1 -1
  183. package/dist/jsx/layouts/timeline.native.js +0 -6
  184. package/dist/jsx/layouts/timeline.native.js.map +1 -1
  185. package/dist/jsx/surfaces.mjs +21 -1
  186. package/dist/jsx/surfaces.mjs.map +1 -1
  187. package/dist/jsx/surfaces.native.js +22 -0
  188. package/dist/jsx/surfaces.native.js.map +1 -1
  189. package/dist/jsx/views/Calendar.mjs +3 -1
  190. package/dist/jsx/views/Calendar.mjs.map +1 -1
  191. package/dist/jsx/views/Calendar.native.js +8 -2
  192. package/dist/jsx/views/Calendar.native.js.map +1 -1
  193. package/dist/jsx/views/Kanban.mjs +23 -14
  194. package/dist/jsx/views/Kanban.mjs.map +1 -1
  195. package/dist/jsx/views/Kanban.native.js +1 -0
  196. package/dist/jsx/views/Kanban.native.js.map +1 -1
  197. package/dist/jsx/views/ReportBuilder.mjs +13 -3
  198. package/dist/jsx/views/ReportBuilder.mjs.map +1 -1
  199. package/dist/jsx/views/ReportBuilder.native.js +12 -2
  200. package/dist/jsx/views/ReportBuilder.native.js.map +1 -1
  201. package/package.json +10 -10
  202. package/src/Accordion/Accordion.stories.tsx +7 -2
  203. package/src/Avatar/Avatar.spec.tsx +31 -0
  204. package/src/Avatar/index.tsx +19 -1
  205. package/src/Badge/Badge.stories.tsx +3 -1
  206. package/src/Badge/index.tsx +4 -1
  207. package/src/Carousel/Carousel.spec.tsx +271 -0
  208. package/src/Carousel/Carousel.stories.tsx +35 -0
  209. package/src/Carousel/index.tsx +45 -20
  210. package/src/DialogContent.stories.tsx +2 -2
  211. package/src/DotIndicator/dotIndicator.spec.tsx +43 -1
  212. package/src/DotIndicator/index.tsx +169 -35
  213. package/src/Pagination.api.spec.tsx +345 -0
  214. package/src/Pagination.tsx +138 -176
  215. package/src/Panel.stories.tsx +4 -4
  216. package/src/ProgressSteps/ProgressSteps.spec.tsx +40 -1
  217. package/src/ProgressSteps/ProgressSteps.stories.tsx +3 -1
  218. package/src/ProgressSteps/index.tsx +6 -1
  219. package/src/charts/PieChart.tsx +4 -1
  220. package/src/feedback/ConfirmDialog.tsx +2 -2
  221. package/src/index.ts +1 -0
  222. package/src/layouts/PageHeader.stories.tsx +21 -3
  223. package/src/layouts/ScreenToolbar.stories.tsx +12 -5
  224. package/src/layouts/ViewSwitcher.tsx +25 -6
  225. package/src/layouts/attachments.tsx +4 -1
  226. package/src/layouts/layouts.spec.tsx +77 -1
  227. package/src/layouts/page.tsx +5 -1
  228. package/src/layouts/pageTitleScale.spec.tsx +70 -0
  229. package/src/layouts/tags.tsx +2 -0
  230. package/src/layouts/timeline-radius.spec.tsx +21 -0
  231. package/src/layouts/timeline.tsx +7 -18
  232. package/src/shared/t.spec.ts +47 -0
  233. package/src/surfaces.tsx +33 -0
  234. package/src/views/Calendar.stories.tsx +4 -2
  235. package/src/views/Calendar.tsx +6 -1
  236. package/src/views/Gantt.stories.tsx +2 -2
  237. package/src/views/Kanban.native.tsx +8 -2
  238. package/src/views/Kanban.stories.tsx +3 -1
  239. package/src/views/Kanban.tsx +42 -13
  240. package/src/views/ReportBuilder.tsx +15 -2
  241. package/types/Avatar/index.d.ts.map +1 -1
  242. package/types/Badge/index.d.ts.map +1 -1
  243. package/types/Carousel/index.d.ts.map +1 -1
  244. package/types/DotIndicator/index.d.ts +44 -3
  245. package/types/DotIndicator/index.d.ts.map +1 -1
  246. package/types/Pagination.d.ts +6 -1
  247. package/types/Pagination.d.ts.map +1 -1
  248. package/types/ProgressSteps/index.d.ts.map +1 -1
  249. package/types/charts/PieChart.d.ts.map +1 -1
  250. package/types/index.d.ts +1 -1
  251. package/types/index.d.ts.map +1 -1
  252. package/types/layouts/ViewSwitcher.d.ts.map +1 -1
  253. package/types/layouts/attachments.d.ts.map +1 -1
  254. package/types/layouts/page.d.ts.map +1 -1
  255. package/types/layouts/tags.d.ts.map +1 -1
  256. package/types/layouts/timeline.d.ts.map +1 -1
  257. package/types/surfaces.d.ts +17 -0
  258. package/types/surfaces.d.ts.map +1 -1
  259. package/types/views/Calendar.d.ts.map +1 -1
  260. package/types/views/Kanban.d.ts +13 -1
  261. package/types/views/Kanban.d.ts.map +1 -1
  262. 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 arrowSize = (_ref = (_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 && _ref !== void 0 ? _ref : 40;
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 slideWidthRef = useRef(0);
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 * slideWidthRef.current;
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
- var width = slideWidthRef.current;
125
- if (!width) return;
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 (initialSlide > 0) {
146
- scrollToSlide(initialSlide);
147
- }
148
- }, [initialSlide, scrollToSlide]);
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
- slideWidthRef.current = e.nativeEvent.layout.width;
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: "100%",
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","borderRadius","shadowColor","shadowRadius","shadowOpacity","DotsWrapper","paddingVertical","Carousel","param","children","showArrows","showDots","autoPlay","loop","gap","gapProp","onSlideChange","initialSlide","_ref","_getTokens_size_knobProps_sizeToken","_getTokens_size","t","knobProps","control","arrowSize","size","sizeToken","val","arrowGlyphSize","Math","round","arrowTargetSize","max","arrowEdgeInset","activeIndex","setActiveIndex","trackRef","slideCount","count","slideWidthRef","autoPlayRef","scrollToSlide","index","current","offset","scrollTo","x","animated","goToSlide","targetIndex","min","goNext","goPrev","handleScroll","event","scrollX","nativeEvent","contentOffset","newIndex","setInterval","clearInterval","canGoPrev","canGoNext","isRTL","prevSide","nextSide","PrevGlyph","NextGlyph","containerRadius","ref","horizontal","showsHorizontalScrollIndicator","style","scrollSnapType","onScroll","scrollEventThrottle","onLayout","e","layout","map","child","scrollSnapAlign","height","transition","onPress","role","tabIndex","focusVisibleStyle","focusVisibleKnobProps","onKeyDown"],"sources":["../../../src/Carousel/index.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
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
- dots: {
64
- width: 8,
65
- height: 8
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 itemSize = variant === "bars" ? geometry.bar : geometry.dot;
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 dotWidth = isActive ? geometry.active : itemSize;
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(t("Go to item {{number}}"), {
167
+ "aria-label": withInterp(label, {
130
168
  number: index + 1
131
169
  }),
132
170
  ...(isActive ? {
133
- "aria-current": "true"
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
- activeVariant: isActive ? variant : void 0,
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","DotTarget","backgroundColor","focusVisibleStyle","outlineColor","outlineWidth","outlineStyle","outlineOffset","Dot","borderRadius","indicator","inactive","hoverStyle","hover","variants","true","selected","variant","dots","width","height","bars","pills","activeVariant","disabled","opacity","DotIndicator","total","activeIndex","onChange","gapProp","t","knobProps","space","geometry","sizeToken","itemSize","gapPx","val","slopX","Math","max","floor","outsetY","ceil","interactive","children","Array","from","length","map","_","index","isActive","dotWidth","minHeight","marginHorizontal","marginVertical","cursor","onPress","number","role","tabIndex","onKeyDown","e","key","preventDefault"],"sources":["../../../src/DotIndicator/index.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
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
- dots: {
64
- width: 8,
65
- height: 8
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 itemSize = variant === "bars" ? geometry.bar : geometry.dot;
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 dotWidth = isActive ? geometry.active : itemSize;
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(t("Go to item {{number}}"), {
173
+ "aria-label": withInterp(label, {
135
174
  number: index + 1
136
175
  }),
137
176
  ...(isActive ? {
138
- "aria-current": "true"
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
- activeVariant: isActive ? variant : void 0,
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
  })