@multiplatform.one/components 6.4.3 → 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.
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 +9 -9
  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
@@ -26,6 +26,7 @@ __export(DotIndicator_exports, {
26
26
  });
27
27
  module.exports = __toCommonJS(DotIndicator_exports);
28
28
  var import_theme = require("@multiplatform.one/theme");
29
+ var import_react = require("@phosphor-icons/react");
29
30
  var import_react_i18next = require("react-i18next");
30
31
  var import_tamagui = require("tamagui");
31
32
  var import_componentColors = require("../componentColors.cjs");
@@ -53,11 +54,36 @@ const dotGeometryMap = {
53
54
  active: 30
54
55
  }
55
56
  };
57
+ const CHECK_MIN_DOT = 8;
58
+ function sizePx(value, fallback) {
59
+ if (typeof value === "number") return value;
60
+ if (typeof value === "string") {
61
+ const token = (0, import_tamagui.getTokens)().size?.[value]?.val;
62
+ if (typeof token === "number") return token;
63
+ }
64
+ return fallback;
65
+ }
56
66
  const DotsContainer = (0, import_tamagui.styled)(import_tamagui.XStack, {
57
67
  name: "DotIndicator",
58
68
  alignItems: "center",
59
69
  justifyContent: "center",
60
- gap: "$2"
70
+ gap: "$2",
71
+ variants: {
72
+ // A rail seats the strip on a filled capsule instead of the page. It is a
73
+ // variant of the strip rather than host chrome because the rail and the
74
+ // idle dot color are ONE decision: idle dots have to step up the ramp to
75
+ // stay visible on the rail's fill, and split across two files that pairing
76
+ // drifts (LC-16).
77
+ rail: {
78
+ true: {
79
+ backgroundColor: import_componentColors.componentColors.interactive.background,
80
+ // R-PILL (D-09 / LC-60): the rail is a capsule at every radius value,
81
+ // like the dots it holds.
82
+ ...(0, import_theme.radiusClassProps)("R-PILL", "DotIndicator rail"),
83
+ borderRadius: "$10"
84
+ }
85
+ }
86
+ }
61
87
  });
62
88
  const DotTarget = (0, import_tamagui.styled)(import_tamagui.View, {
63
89
  name: "DotTarget",
@@ -73,6 +99,13 @@ const DotTarget = (0, import_tamagui.styled)(import_tamagui.View, {
73
99
  });
74
100
  const Dot = (0, import_tamagui.styled)(import_tamagui.View, {
75
101
  name: "Dot",
102
+ // R-PILL (D-09 / LC-60): an ornamental dot is a circle at every radius
103
+ // value — the knob moves its size, never its shape — so it declares the
104
+ // class the `radius:none` sweep licenses it under.
105
+ ...(0, import_theme.radiusClassProps)("R-PILL", "DotIndicator dot"),
106
+ // Centers the completion checkmark; inert for the empty dots.
107
+ alignItems: "center",
108
+ justifyContent: "center",
76
109
  borderRadius: 1e3,
77
110
  backgroundColor: import_componentColors.componentColors.indicator.inactive,
78
111
  hoverStyle: {
@@ -86,31 +119,11 @@ const Dot = (0, import_tamagui.styled)(import_tamagui.View, {
86
119
  backgroundColor: import_componentColors.componentColors.indicator.selected
87
120
  }
88
121
  },
89
- variant: {
90
- dots: {
91
- width: 8,
92
- height: 8
93
- },
94
- bars: {
95
- width: 6,
96
- height: 6
97
- },
98
- pills: {
99
- width: 8,
100
- height: 8
101
- }
102
- },
103
- activeVariant: {
104
- dots: {
105
- width: 24
106
- },
107
- bars: {
108
- width: 24
109
- },
110
- pills: {
111
- width: 24
112
- }
113
- },
122
+ // No `variant` geometry here: the mark's width/height are always passed
123
+ // explicitly from the one size channel below, so a per-variant pixel table
124
+ // on the styled component could only ever be a second, silently-losing
125
+ // definition of the same thing (it already disagreed with the scale at
126
+ // size knob `$3`, where a tick is 5px, not 6).
114
127
  disabled: {
115
128
  true: {
116
129
  opacity: 0.5
@@ -124,7 +137,14 @@ function DotIndicator({
124
137
  onChange,
125
138
  variant = "dots",
126
139
  gap: gapProp,
127
- disabled = false
140
+ disabled = false,
141
+ completedSteps,
142
+ idiom = "item",
143
+ rail = false,
144
+ dotSize,
145
+ activeDotSize,
146
+ transition,
147
+ dotStateAttribute = "data-dot-state"
128
148
  }) {
129
149
  const {
130
150
  t
@@ -134,18 +154,36 @@ function DotIndicator({
134
154
  } = (0, import_theme.useResolvedKnobs)();
135
155
  const gap = gapProp ?? dotGapMap[knobProps.space] ?? "$2";
136
156
  const geometry = dotGeometryMap[knobProps.sizeToken] ?? dotGeometryMap.$4;
137
- const itemSize = variant === "bars" ? geometry.bar : geometry.dot;
157
+ const isTick = variant === "bars";
158
+ const itemSize = sizePx(dotSize, isTick ? geometry.bar : geometry.dot);
159
+ const activeSize = sizePx(activeDotSize, geometry.active);
138
160
  const gapPx = typeof gap === "number" ? gap : (0, import_tamagui.getTokens)().space?.[gap]?.val ?? 7;
139
161
  const slopX = Math.max(0, Math.floor((gapPx - 1) / 2));
140
- const outsetY = Math.ceil((import_theme.MIN_PRESS_TARGET - itemSize) / 2);
162
+ const outsetY = Math.max(0, Math.ceil((import_theme.MIN_PRESS_TARGET - itemSize) / 2));
141
163
  const interactive = !disabled && !!onChange;
164
+ const isStep = idiom === "step";
165
+ const label = isStep ? t("Go to step {{number}}") : t("Go to item {{number}}");
166
+ const currentValue = isStep ? "step" : "true";
167
+ const motionStyle = transition ? {
168
+ transition: "width var(--mp-transition, 100ms) ease, height var(--mp-transition, 100ms) ease, background-color var(--mp-transition, 100ms) ease"
169
+ } : void 0;
142
170
  return /* @__PURE__ */(0, import_jsx_runtime.jsx)(DotsContainer, {
143
171
  gap,
172
+ rail,
173
+ ...(rail ? {
174
+ paddingHorizontal: knobProps.panelPadding.padding,
175
+ height: knobProps.sizeToken
176
+ } : void 0),
144
177
  children: Array.from({
145
178
  length: total
146
179
  }).map((_, index) => {
147
180
  const isActive = index === activeIndex;
148
- const dotWidth = isActive ? geometry.active : itemSize;
181
+ const isCompleted = !isActive && !!completedSteps?.has(index);
182
+ const dotWidth = isActive ? activeSize : itemSize;
183
+ const restingFill = isCompleted ? import_componentColors.componentColors.indicator.completed : rail ?
184
+ // Idle chrome steps up the ramp on a rail so the dot still
185
+ // separates from the capsule fill it sits on.
186
+ import_componentColors.componentColors.indicator.track : import_componentColors.componentColors.indicator.inactive;
149
187
  return /* @__PURE__ */(0, import_jsx_runtime.jsx)(DotTarget, {
150
188
  width: dotWidth + slopX * 2,
151
189
  minHeight: import_theme.MIN_PRESS_TARGET,
@@ -153,11 +191,11 @@ function DotIndicator({
153
191
  marginVertical: -outsetY,
154
192
  cursor: interactive ? "pointer" : disabled ? "not-allowed" : "default",
155
193
  onPress: interactive ? () => onChange?.(index) : void 0,
156
- "aria-label": (0, import_t.withInterp)(t("Go to item {{number}}"), {
194
+ "aria-label": (0, import_t.withInterp)(label, {
157
195
  number: index + 1
158
196
  }),
159
197
  ...(isActive ? {
160
- "aria-current": "true"
198
+ "aria-current": currentValue
161
199
  } : void 0),
162
200
  ...(interactive ? {
163
201
  role: "button",
@@ -172,12 +210,31 @@ function DotIndicator({
172
210
  role: "button"
173
211
  } : void 0),
174
212
  children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(Dot, {
175
- variant,
176
213
  active: isActive,
177
- activeVariant: isActive ? variant : void 0,
214
+ ...(isActive ? void 0 : {
215
+ backgroundColor: restingFill,
216
+ // A completed dot and a rail dot both hold their fill on
217
+ // hover: the neutral hover step is PALER than either, so
218
+ // the page-level hover would read as a dim.
219
+ ...(isCompleted || rail ? {
220
+ hoverStyle: {
221
+ backgroundColor: restingFill
222
+ }
223
+ } : void 0)
224
+ }),
178
225
  width: dotWidth,
179
226
  height: itemSize,
180
- disabled
227
+ disabled,
228
+ transition,
229
+ style: motionStyle,
230
+ ...{
231
+ [dotStateAttribute]: isActive ? "active" : "idle"
232
+ },
233
+ children: isCompleted && !isTick && itemSize >= CHECK_MIN_DOT && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.CheckIcon, {
234
+ size: 8,
235
+ color: "white",
236
+ weight: "bold"
237
+ })
181
238
  })
182
239
  }, index);
183
240
  })
@@ -29,6 +29,7 @@ __export(DotIndicator_exports, {
29
29
  module.exports = __toCommonJS(DotIndicator_exports);
30
30
  var import_jsx_runtime = require("react/jsx-runtime");
31
31
  var import_theme = require("@multiplatform.one/theme");
32
+ var import_react = require("@phosphor-icons/react");
32
33
  var import_react_i18next = require("react-i18next");
33
34
  var import_tamagui = require("tamagui");
34
35
  var import_componentColors = require("../componentColors.native.js");
@@ -55,11 +56,37 @@ var dotGeometryMap = {
55
56
  active: 30
56
57
  }
57
58
  };
59
+ var CHECK_MIN_DOT = 8;
60
+ function sizePx(value, fallback) {
61
+ if (typeof value === "number") return value;
62
+ if (typeof value === "string") {
63
+ var _getTokens_size_value, _getTokens_size;
64
+ var token = (_getTokens_size = (0, import_tamagui.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;
65
+ if (typeof token === "number") return token;
66
+ }
67
+ return fallback;
68
+ }
58
69
  var DotsContainer = (0, import_tamagui.styled)(import_tamagui.XStack, {
59
70
  name: "DotIndicator",
60
71
  alignItems: "center",
61
72
  justifyContent: "center",
62
- gap: "$2"
73
+ gap: "$2",
74
+ variants: {
75
+ // A rail seats the strip on a filled capsule instead of the page. It is a
76
+ // variant of the strip rather than host chrome because the rail and the
77
+ // idle dot color are ONE decision: idle dots have to step up the ramp to
78
+ // stay visible on the rail's fill, and split across two files that pairing
79
+ // drifts (LC-16).
80
+ rail: {
81
+ true: {
82
+ backgroundColor: import_componentColors.componentColors.interactive.background,
83
+ // R-PILL (D-09 / LC-60): the rail is a capsule at every radius value,
84
+ // like the dots it holds.
85
+ ...(0, import_theme.radiusClassProps)("R-PILL", "DotIndicator rail"),
86
+ borderRadius: "$10"
87
+ }
88
+ }
89
+ }
63
90
  });
64
91
  var DotTarget = (0, import_tamagui.styled)(import_tamagui.View, {
65
92
  name: "DotTarget",
@@ -75,6 +102,13 @@ var DotTarget = (0, import_tamagui.styled)(import_tamagui.View, {
75
102
  });
76
103
  var Dot = (0, import_tamagui.styled)(import_tamagui.View, {
77
104
  name: "Dot",
105
+ // R-PILL (D-09 / LC-60): an ornamental dot is a circle at every radius
106
+ // value — the knob moves its size, never its shape — so it declares the
107
+ // class the `radius:none` sweep licenses it under.
108
+ ...(0, import_theme.radiusClassProps)("R-PILL", "DotIndicator dot"),
109
+ // Centers the completion checkmark; inert for the empty dots.
110
+ alignItems: "center",
111
+ justifyContent: "center",
78
112
  borderRadius: 1e3,
79
113
  backgroundColor: import_componentColors.componentColors.indicator.inactive,
80
114
  hoverStyle: {
@@ -88,31 +122,11 @@ var Dot = (0, import_tamagui.styled)(import_tamagui.View, {
88
122
  backgroundColor: import_componentColors.componentColors.indicator.selected
89
123
  }
90
124
  },
91
- variant: {
92
- dots: {
93
- width: 8,
94
- height: 8
95
- },
96
- bars: {
97
- width: 6,
98
- height: 6
99
- },
100
- pills: {
101
- width: 8,
102
- height: 8
103
- }
104
- },
105
- activeVariant: {
106
- dots: {
107
- width: 24
108
- },
109
- bars: {
110
- width: 24
111
- },
112
- pills: {
113
- width: 24
114
- }
115
- },
125
+ // No `variant` geometry here: the mark's width/height are always passed
126
+ // explicitly from the one size channel below, so a per-variant pixel table
127
+ // on the styled component could only ever be a second, silently-losing
128
+ // definition of the same thing (it already disagreed with the scale at
129
+ // size knob `$3`, where a tick is 5px, not 6).
116
130
  disabled: {
117
131
  true: {
118
132
  opacity: 0.5
@@ -127,7 +141,14 @@ function DotIndicator(param) {
127
141
  onChange,
128
142
  variant = "dots",
129
143
  gap: gapProp,
130
- disabled = false
144
+ disabled = false,
145
+ completedSteps,
146
+ idiom = "item",
147
+ rail = false,
148
+ dotSize,
149
+ activeDotSize,
150
+ transition,
151
+ dotStateAttribute = "data-dot-state"
131
152
  } = param;
132
153
  var _ref, _dotGeometryMap_knobProps_sizeToken, _ref1;
133
154
  var _getTokens_space_gap, _getTokens_space;
@@ -139,18 +160,36 @@ function DotIndicator(param) {
139
160
  } = (0, import_theme.useResolvedKnobs)();
140
161
  var gap = (_ref = gapProp !== null && gapProp !== void 0 ? gapProp : dotGapMap[knobProps.space]) !== null && _ref !== void 0 ? _ref : "$2";
141
162
  var geometry = (_dotGeometryMap_knobProps_sizeToken = dotGeometryMap[knobProps.sizeToken]) !== null && _dotGeometryMap_knobProps_sizeToken !== void 0 ? _dotGeometryMap_knobProps_sizeToken : dotGeometryMap.$4;
142
- var itemSize = variant === "bars" ? geometry.bar : geometry.dot;
163
+ var isTick = variant === "bars";
164
+ var itemSize = sizePx(dotSize, isTick ? geometry.bar : geometry.dot);
165
+ var activeSize = sizePx(activeDotSize, geometry.active);
143
166
  var gapPx = typeof gap === "number" ? gap : (_ref1 = (_getTokens_space = (0, import_tamagui.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;
144
167
  var slopX = Math.max(0, Math.floor((gapPx - 1) / 2));
145
- var outsetY = Math.ceil((import_theme.MIN_PRESS_TARGET - itemSize) / 2);
168
+ var outsetY = Math.max(0, Math.ceil((import_theme.MIN_PRESS_TARGET - itemSize) / 2));
146
169
  var interactive = !disabled && !!onChange;
170
+ var isStep = idiom === "step";
171
+ var label = isStep ? t("Go to step {{number}}") : t("Go to item {{number}}");
172
+ var currentValue = isStep ? "step" : "true";
173
+ var motionStyle = transition ? {
174
+ transition: "width var(--mp-transition, 100ms) ease, height var(--mp-transition, 100ms) ease, background-color var(--mp-transition, 100ms) ease"
175
+ } : void 0;
147
176
  return /* @__PURE__ */(0, import_jsx_runtime.jsx)(DotsContainer, {
148
177
  gap,
178
+ rail,
179
+ ...(rail ? {
180
+ paddingHorizontal: knobProps.panelPadding.padding,
181
+ height: knobProps.sizeToken
182
+ } : void 0),
149
183
  children: Array.from({
150
184
  length: total
151
185
  }).map(function (_, index) {
152
186
  var isActive = index === activeIndex;
153
- var dotWidth = isActive ? geometry.active : itemSize;
187
+ var isCompleted = !isActive && !!(completedSteps === null || completedSteps === void 0 ? void 0 : completedSteps.has(index));
188
+ var dotWidth = isActive ? activeSize : itemSize;
189
+ var restingFill = isCompleted ? import_componentColors.componentColors.indicator.completed : rail ?
190
+ // Idle chrome steps up the ramp on a rail so the dot still
191
+ // separates from the capsule fill it sits on.
192
+ import_componentColors.componentColors.indicator.track : import_componentColors.componentColors.indicator.inactive;
154
193
  return /* @__PURE__ */(0, import_jsx_runtime.jsx)(DotTarget, {
155
194
  width: dotWidth + slopX * 2,
156
195
  minHeight: import_theme.MIN_PRESS_TARGET,
@@ -160,11 +199,11 @@ function DotIndicator(param) {
160
199
  onPress: interactive ? function () {
161
200
  return onChange === null || onChange === void 0 ? void 0 : onChange(index);
162
201
  } : void 0,
163
- "aria-label": (0, import_t.withInterp)(t("Go to item {{number}}"), {
202
+ "aria-label": (0, import_t.withInterp)(label, {
164
203
  number: index + 1
165
204
  }),
166
205
  ...(isActive ? {
167
- "aria-current": "true"
206
+ "aria-current": currentValue
168
207
  } : void 0),
169
208
  ...(interactive ? {
170
209
  role: "button",
@@ -179,12 +218,31 @@ function DotIndicator(param) {
179
218
  role: "button"
180
219
  } : void 0),
181
220
  children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(Dot, {
182
- variant,
183
221
  active: isActive,
184
- activeVariant: isActive ? variant : void 0,
222
+ ...(isActive ? void 0 : {
223
+ backgroundColor: restingFill,
224
+ // A completed dot and a rail dot both hold their fill on
225
+ // hover: the neutral hover step is PALER than either, so
226
+ // the page-level hover would read as a dim.
227
+ ...(isCompleted || rail ? {
228
+ hoverStyle: {
229
+ backgroundColor: restingFill
230
+ }
231
+ } : void 0)
232
+ }),
185
233
  width: dotWidth,
186
234
  height: itemSize,
187
- disabled
235
+ disabled,
236
+ transition,
237
+ style: motionStyle,
238
+ ...{
239
+ [dotStateAttribute]: isActive ? "active" : "idle"
240
+ },
241
+ children: isCompleted && !isTick && itemSize >= CHECK_MIN_DOT && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react.CheckIcon, {
242
+ size: 8,
243
+ color: "white",
244
+ weight: "bold"
245
+ })
188
246
  })
189
247
  }, index);
190
248
  })
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","DotIndicator_exports","__export","DotIndicator","module","exports","import_jsx_runtime","require","import_theme","import_react_i18next","import_tamagui","import_componentColors","import_t","dotGapMap","small","medium","large","dotGeometryMap","$3","dot","bar","active","$4","$5","DotsContainer","styled","XStack","name","alignItems","justifyContent","gap","DotTarget","View","backgroundColor","focusVisibleStyle","outlineColor","outlineWidth","outlineStyle","outlineOffset","Dot","borderRadius","componentColors","indicator","inactive","hoverStyle","hover","variants","true","selected","variant","dots","width","height","bars","pills","activeVariant","disabled","opacity","param","total","activeIndex","onChange","gapProp","_ref","_dotGeometryMap_knobProps_sizeToken","_ref1","_getTokens_space_gap","_getTokens_space","t","useTranslation","knobProps","useResolvedKnobs","space","geometry","sizeToken","itemSize","gapPx","getTokens","val","slopX","Math","max","floor","outsetY","ceil","MIN_PRESS_TARGET","interactive","jsx","children","Array","from","length","map","_","index","isActive","dotWidth","minHeight","marginHorizontal","marginVertical","cursor","onPress","withInterp","number","role","tabIndex","onKeyDown","e","key","preventDefault"],"sources":["../../../src/DotIndicator/index.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","DotIndicator_exports","__export","DotIndicator","module","exports","import_jsx_runtime","require","import_theme","import_react","import_react_i18next","import_tamagui","import_componentColors","import_t","dotGapMap","small","medium","large","dotGeometryMap","$3","dot","bar","active","$4","$5","CHECK_MIN_DOT","sizePx","fallback","_getTokens_size_value","_getTokens_size","token","getTokens","size","val","DotsContainer","styled","XStack","name","alignItems","justifyContent","gap","variants","rail","true","backgroundColor","componentColors","interactive","background","radiusClassProps","borderRadius","DotTarget","View","focusVisibleStyle","outlineColor","outlineWidth","outlineStyle","outlineOffset","Dot","indicator","inactive","hoverStyle","hover","selected","disabled","opacity","param","total","activeIndex","onChange","variant","gapProp","completedSteps","idiom","dotSize","activeDotSize","transition","dotStateAttribute","_ref","_dotGeometryMap_knobProps_sizeToken","_ref1","_getTokens_space_gap","_getTokens_space","t","useTranslation","knobProps","useResolvedKnobs","space","geometry","sizeToken","isTick","itemSize","activeSize","gapPx","slopX","Math","max","floor","outsetY","ceil","MIN_PRESS_TARGET","isStep","label","currentValue","motionStyle","jsx","paddingHorizontal","panelPadding","padding","height","children","Array","from","length","map","_","index","isActive","isCompleted","has","dotWidth","restingFill","completed","track","width","minHeight","marginHorizontal","marginVertical","cursor","onPress","withInterp","number","role","tabIndex","onKeyDown","e","key","preventDefault"],"sources":["../../../src/DotIndicator/index.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}