@common-origin/design-system 2.14.0 → 2.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +50 -184
  2. package/dist/client.esm.js +975 -610
  3. package/dist/client.esm.js.map +1 -1
  4. package/dist/client.js +978 -609
  5. package/dist/client.js.map +1 -1
  6. package/dist/components/atoms/Badge/Badge.d.ts +2 -0
  7. package/dist/components/atoms/Button/Button.d.ts +13 -1
  8. package/dist/components/atoms/CategoryBadge/CategoryBadge.d.ts +12 -52
  9. package/dist/components/atoms/CategoryBadge/index.d.ts +1 -1
  10. package/dist/components/atoms/CategoryLabel/CategoryLabel.d.ts +69 -0
  11. package/dist/components/atoms/CategoryLabel/index.d.ts +2 -0
  12. package/dist/components/atoms/Chip/BooleanChip.d.ts +6 -1
  13. package/dist/components/atoms/Chip/Chip.d.ts +17 -12
  14. package/dist/components/atoms/Chip/FilterChip.d.ts +10 -24
  15. package/dist/components/atoms/Chip/InputChip.d.ts +27 -0
  16. package/dist/components/atoms/Chip/index.d.ts +1 -0
  17. package/dist/components/atoms/Chip/shared/types.d.ts +15 -1
  18. package/dist/components/atoms/Chip/shared/utils.d.ts +1 -82
  19. package/dist/components/atoms/ProgressBar/ProgressBar.d.ts +4 -0
  20. package/dist/components/atoms/StatusBadge/StatusBadge.d.ts +9 -55
  21. package/dist/components/atoms/StatusBadge/index.d.ts +1 -1
  22. package/dist/components/atoms/StatusLabel/StatusLabel.d.ts +17 -0
  23. package/dist/components/atoms/StatusLabel/StatusLabelBase.d.ts +49 -0
  24. package/dist/components/atoms/StatusLabel/index.d.ts +2 -0
  25. package/dist/components/atoms/Tag/Tag.d.ts +5 -0
  26. package/dist/components/atoms/index.d.ts +2 -0
  27. package/dist/components/layout/GridSystem/GridSystem.d.ts +6 -0
  28. package/dist/components/molecules/Alert/Alert.d.ts +15 -2
  29. package/dist/components/molecules/CardLarge/CardLarge.d.ts +3 -1
  30. package/dist/components/molecules/CardSmall/CardSmall.d.ts +2 -0
  31. package/dist/components/molecules/Dropdown/Dropdown.d.ts +2 -0
  32. package/dist/components/molecules/FeatureBlock/FeatureBlock.d.ts +2 -0
  33. package/dist/components/molecules/InlineAlert/InlineAlert.d.ts +54 -0
  34. package/dist/components/molecules/InlineAlert/index.d.ts +2 -0
  35. package/dist/components/molecules/Modal/Modal.d.ts +6 -2
  36. package/dist/components/molecules/PageTitle/PageTitle.d.ts +13 -0
  37. package/dist/components/molecules/TabBar/TabBar.d.ts +8 -5
  38. package/dist/components/molecules/index.d.ts +1 -0
  39. package/dist/data.esm.js +94 -12
  40. package/dist/data.esm.js.map +1 -1
  41. package/dist/data.js +94 -12
  42. package/dist/data.js.map +1 -1
  43. package/dist/index.esm.js +1 -1
  44. package/dist/index.js +4 -0
  45. package/dist/index.js.map +1 -1
  46. package/dist/styles/tokens.json +94 -12
  47. package/dist/tokens/index.esm.js +94 -12
  48. package/dist/tokens/index.esm.js.map +1 -1
  49. package/dist/tokens/index.js +94 -12
  50. package/dist/tokens/index.js.map +1 -1
  51. package/dist/tokens/types/tokens.d.ts +85 -3
  52. package/dist/tokens.css +769 -0
  53. package/dist/tokens.css.d.ts +4 -0
  54. package/dist/types/tokens.d.ts +85 -3
  55. package/package.json +20 -10
@@ -104,44 +104,44 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
104
104
  };
105
105
 
106
106
  // Destructure tokens
107
- var semantic$g = tokensJson.semantic;
107
+ var semantic$j = tokensJson.semantic;
108
108
  var initials = tokensJson.component.avatar.initials;
109
- var color$a = semantic$g.color,
110
- size$1 = semantic$g.size,
111
- border$a = semantic$g.border;
112
- var radius$5 = border$a.radius;
109
+ var color$b = semantic$j.color,
110
+ size$2 = semantic$j.size,
111
+ border$b = semantic$j.border;
112
+ var radius$5 = border$b.radius;
113
113
  var AvatarContainer = styled.div.withConfig({
114
114
  shouldForwardProp: function shouldForwardProp(prop) {
115
115
  return !prop.startsWith('$');
116
116
  },
117
117
  displayName: "Avatar__AvatarContainer",
118
118
  componentId: "sc-ezn4ax-0"
119
- })(templateObject_1$L || (templateObject_1$L = __makeTemplateObject(["\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: ", ";\n height: ", ";\n border-radius: ", ";\n background-color: ", ";\n overflow: hidden;\n flex-shrink: 0;\n"], ["\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: ", ";\n height: ", ";\n border-radius: ", ";\n background-color: ", ";\n overflow: hidden;\n flex-shrink: 0;\n"])), function (_a) {
119
+ })(templateObject_1$M || (templateObject_1$M = __makeTemplateObject(["\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: ", ";\n height: ", ";\n border-radius: ", ";\n background-color: ", ";\n overflow: hidden;\n flex-shrink: 0;\n"], ["\n position: relative;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: ", ";\n height: ", ";\n border-radius: ", ";\n background-color: ", ";\n overflow: hidden;\n flex-shrink: 0;\n"])), function (_a) {
120
120
  var $size = _a.$size;
121
- return size$1.avatar[$size];
121
+ return size$2.avatar[$size];
122
122
  }, function (_a) {
123
123
  var $size = _a.$size;
124
- return size$1.avatar[$size];
125
- }, radius$5.circle, color$a.background.surface);
124
+ return size$2.avatar[$size];
125
+ }, radius$5.circle, color$b.background.surface);
126
126
  var AvatarImage = styled.img.withConfig({
127
127
  shouldForwardProp: function shouldForwardProp(prop) {
128
128
  return !prop.startsWith('$');
129
129
  },
130
130
  displayName: "Avatar__AvatarImage",
131
131
  componentId: "sc-ezn4ax-1"
132
- })(templateObject_2$w || (templateObject_2$w = __makeTemplateObject(["\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: ", ";\n /* Remove the img role since the container already has role=\"img\" */\n"], ["\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: ", ";\n /* Remove the img role since the container already has role=\"img\" */\n"])), radius$5.circle);
132
+ })(templateObject_2$y || (templateObject_2$y = __makeTemplateObject(["\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: ", ";\n /* Remove the img role since the container already has role=\"img\" */\n"], ["\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: ", ";\n /* Remove the img role since the container already has role=\"img\" */\n"])), radius$5.circle);
133
133
  var AvatarInitials = styled.span.withConfig({
134
134
  shouldForwardProp: function shouldForwardProp(prop) {
135
135
  return !prop.startsWith('$');
136
136
  },
137
137
  displayName: "Avatar__AvatarInitials",
138
138
  componentId: "sc-ezn4ax-2"
139
- })(templateObject_3$t || (templateObject_3$t = __makeTemplateObject(["\n font-family: ", ";\n font-weight: ", ";\n font-size: ", ";\n color: ", ";\n line-height: ", ";\n text-transform: uppercase;\n user-select: none;\n"], ["\n font-family: ", ";\n font-weight: ", ";\n font-size: ", ";\n color: ", ";\n line-height: ", ";\n text-transform: uppercase;\n user-select: none;\n"
139
+ })(templateObject_3$v || (templateObject_3$v = __makeTemplateObject(["\n font-family: ", ";\n font-weight: ", ";\n font-size: ", ";\n color: ", ";\n line-height: ", ";\n text-transform: uppercase;\n user-select: none;\n"], ["\n font-family: ", ";\n font-weight: ", ";\n font-size: ", ";\n color: ", ";\n line-height: ", ";\n text-transform: uppercase;\n user-select: none;\n"
140
140
  // Helper function to get initials from name
141
141
  ])), initials.fontFamily, initials.fontWeight, function (_a) {
142
142
  var $size = _a.$size;
143
143
  return initials.fontSize[$size];
144
- }, color$a.text["default"], initials.lineHeight);
144
+ }, color$b.text["default"], initials.lineHeight);
145
145
  // Helper function to get initials from name
146
146
  var getInitials = function getInitials(name) {
147
147
  return name.split(' ').map(function (word) {
@@ -195,7 +195,7 @@ var Avatar = function Avatar(_a) {
195
195
  })
196
196
  }));
197
197
  };
198
- var templateObject_1$L, templateObject_2$w, templateObject_3$t;
198
+ var templateObject_1$M, templateObject_2$y, templateObject_3$v;
199
199
 
200
200
  // Breakpoints from the semantic tokens (decision 0014)
201
201
  var breakpoints$1 = {
@@ -220,7 +220,7 @@ var media$1 = {
220
220
  var reducedMotion = '@media (prefers-reduced-motion: reduce)';
221
221
  // No `from` keyframe: the fade starts from the element's current opacity, including a
222
222
  // still-running entrance, so closing mid-entrance doesn't jump back to fully visible.
223
- var fadeOut$1 = keyframes(templateObject_1$K || (templateObject_1$K = __makeTemplateObject(["\n to { opacity: 0; }\n"], ["\n to { opacity: 0; }\n"
223
+ var fadeOut$1 = keyframes(templateObject_1$L || (templateObject_1$L = __makeTemplateObject(["\n to { opacity: 0; }\n"], ["\n to { opacity: 0; }\n"
224
224
  // Exit for overlays that unmount (use with usePresence). Append `exitAnimation` to each of
225
225
  // the element's `animation` declarations while it exits: the entrance stays in the list,
226
226
  // so it isn't restarted, and the fade runs on top of it. A fade is already the
@@ -232,51 +232,51 @@ var fadeOut$1 = keyframes(templateObject_1$K || (templateObject_1$K = __makeTemp
232
232
  // so it isn't restarted, and the fade runs on top of it. A fade is already the
233
233
  // reduced-motion form, so it needs no fallback of its own. While it fades, the backdrop
234
234
  // still catches clicks (so they can't reach the page behind it) and the panel is inert.
235
- var exitAnimation = css(templateObject_2$v || (templateObject_2$v = __makeTemplateObject([", ", " ", " ", " forwards"], [", ", " ", " ", " forwards"
235
+ var exitAnimation = css(templateObject_2$x || (templateObject_2$x = __makeTemplateObject([", ", " ", " ", " forwards"], [", ", " ", " ", " forwards"
236
236
  // Content for screen readers only. The 1px size and -1px margin are part of the standard
237
237
  // visually-hidden technique, not design values, so they aren't tokens.
238
238
  ])), fadeOut$1, tokensJson.semantic.motion.duration.fast, tokensJson.semantic.motion.easing.easeOut);
239
239
  // Content for screen readers only. The 1px size and -1px margin are part of the standard
240
240
  // visually-hidden technique, not design values, so they aren't tokens.
241
- var visuallyHidden = css(templateObject_3$s || (templateObject_3$s = __makeTemplateObject(["\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n"], ["\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n"])));
242
- var templateObject_1$K, templateObject_2$v, templateObject_3$s;
241
+ var visuallyHidden = css(templateObject_3$u || (templateObject_3$u = __makeTemplateObject(["\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n"], ["\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n"])));
242
+ var templateObject_1$L, templateObject_2$x, templateObject_3$u;
243
243
 
244
- var _a$c = tokensJson.semantic,
245
- typography$1 = _a$c.typography,
246
- color$9 = _a$c.color,
247
- letterSpacing = _a$c.letterSpacing;
244
+ var _a$b = tokensJson.semantic,
245
+ typography$2 = _a$b.typography,
246
+ color$a = _a$b.color,
247
+ letterSpacing = _a$b.letterSpacing;
248
248
  var getTypographyStyles = function getTypographyStyles(variant) {
249
249
  var styles = {
250
- display: "font: ".concat(typography$1.display, "; letter-spacing: ").concat(letterSpacing.tighter, ";"),
251
- h1: "font: ".concat(typography$1.h1, "; letter-spacing: ").concat(letterSpacing.tighter, ";"),
252
- h2: "font: ".concat(typography$1.h2, "; letter-spacing: ").concat(letterSpacing.tight, ";"),
253
- h3: "font: ".concat(typography$1.h3, "; letter-spacing: ").concat(letterSpacing.tight, ";"),
254
- h4: "font: ".concat(typography$1.h4, "; letter-spacing: ").concat(letterSpacing.tight, ";"),
255
- h5: "font: ".concat(typography$1.h5, "; letter-spacing: ").concat(letterSpacing.normal, ";"),
256
- h6: "font: ".concat(typography$1.h6, "; letter-spacing: ").concat(letterSpacing.normal, ";"),
257
- subtitle: "font: ".concat(typography$1.subtitle, ";"),
258
- body: "font: ".concat(typography$1.body, ";"),
259
- small: "font: ".concat(typography$1.small, ";"),
260
- overline: "font: ".concat(typography$1.overline, ";"),
261
- caption: "font: ".concat(typography$1.caption, "; text-transform: uppercase;"),
262
- button1: "font: ".concat(typography$1.button1, ";"),
263
- button2: "font: ".concat(typography$1.button2, ";"),
264
- button3: "font: ".concat(typography$1.button3, ";"),
265
- label: "font: ".concat(typography$1.label, ";")
250
+ display: "font: ".concat(typography$2.display, "; letter-spacing: ").concat(letterSpacing.tighter, ";"),
251
+ h1: "font: ".concat(typography$2.h1, "; letter-spacing: ").concat(letterSpacing.tighter, ";"),
252
+ h2: "font: ".concat(typography$2.h2, "; letter-spacing: ").concat(letterSpacing.tight, ";"),
253
+ h3: "font: ".concat(typography$2.h3, "; letter-spacing: ").concat(letterSpacing.tight, ";"),
254
+ h4: "font: ".concat(typography$2.h4, "; letter-spacing: ").concat(letterSpacing.tight, ";"),
255
+ h5: "font: ".concat(typography$2.h5, "; letter-spacing: ").concat(letterSpacing.normal, ";"),
256
+ h6: "font: ".concat(typography$2.h6, "; letter-spacing: ").concat(letterSpacing.normal, ";"),
257
+ subtitle: "font: ".concat(typography$2.subtitle, ";"),
258
+ body: "font: ".concat(typography$2.body, ";"),
259
+ small: "font: ".concat(typography$2.small, ";"),
260
+ overline: "font: ".concat(typography$2.overline, ";"),
261
+ caption: "font: ".concat(typography$2.caption, "; text-transform: uppercase;"),
262
+ button1: "font: ".concat(typography$2.button1, ";"),
263
+ button2: "font: ".concat(typography$2.button2, ";"),
264
+ button3: "font: ".concat(typography$2.button3, ";"),
265
+ label: "font: ".concat(typography$2.label, ";")
266
266
  };
267
267
  return styles[variant] || styles.body;
268
268
  };
269
269
  var getTextColor = function getTextColor(colorVariant) {
270
270
  var colorMap = {
271
- "default": color$9.text["default"],
272
- emphasis: color$9.text.emphasis,
273
- subdued: color$9.text.subdued,
274
- inverse: color$9.text.inverse,
275
- disabled: color$9.text.disabled,
276
- interactive: color$9.text.interactive,
277
- error: color$9.text.error,
278
- success: color$9.text.success,
279
- warning: color$9.text.warning
271
+ "default": color$a.text["default"],
272
+ emphasis: color$a.text.emphasis,
273
+ subdued: color$a.text.subdued,
274
+ inverse: color$a.text.inverse,
275
+ disabled: color$a.text.disabled,
276
+ interactive: color$a.text.interactive,
277
+ error: color$a.text.error,
278
+ success: color$a.text.success,
279
+ warning: color$a.text.warning
280
280
  };
281
281
  return colorMap[colorVariant] || colorMap["default"];
282
282
  };
@@ -307,7 +307,7 @@ var StyledTypography = styled.span.withConfig({
307
307
  },
308
308
  displayName: "Typography__StyledTypography",
309
309
  componentId: "sc-17mqo4k-0"
310
- })(templateObject_1$J || (templateObject_1$J = __makeTemplateObject(["\n ", "\n color: ", ";\n margin: 0;\n"], ["\n ", "\n color: ", ";\n margin: 0;\n"
310
+ })(templateObject_1$K || (templateObject_1$K = __makeTemplateObject(["\n ", "\n color: ", ";\n margin: 0;\n"], ["\n ", "\n color: ", ";\n margin: 0;\n"
311
311
  /**
312
312
  * Typography is an atomic component for rendering text with semantic meaning and consistent styling.
313
313
  *
@@ -369,53 +369,53 @@ var Typography = function Typography(_a) {
369
369
  children: children
370
370
  });
371
371
  };
372
- var templateObject_1$J;
372
+ var templateObject_1$K;
373
373
 
374
- var semantic$f = tokensJson.semantic;
375
- var color$8 = semantic$f.color,
376
- border$9 = semantic$f.border;
377
- var radius$4 = border$9.radius;
378
- var _a$b = tokensJson.component.badge,
379
- dot = _a$b.dot,
380
- count = _a$b.count,
381
- ring = _a$b.ring;
382
- var scaleIn$2 = keyframes(templateObject_1$I || (templateObject_1$I = __makeTemplateObject(["\n from {\n transform: scale(0.8);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n"], ["\n from {\n transform: scale(0.8);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n"])));
374
+ var semantic$i = tokensJson.semantic;
375
+ var color$9 = semantic$i.color,
376
+ border$a = semantic$i.border;
377
+ var radius$4 = border$a.radius;
378
+ var _a$a = tokensJson.component.badge,
379
+ dot = _a$a.dot,
380
+ count = _a$a.count,
381
+ ring = _a$a.ring;
382
+ var scaleIn$2 = keyframes(templateObject_1$J || (templateObject_1$J = __makeTemplateObject(["\n from {\n transform: scale(0.8);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n"], ["\n from {\n transform: scale(0.8);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n"])));
383
383
  var BadgeWrapper = styled.span.withConfig({
384
384
  displayName: "Badge__BadgeWrapper",
385
385
  componentId: "sc-tjz4pp-0"
386
- })(templateObject_2$u || (templateObject_2$u = __makeTemplateObject(["\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n flex-shrink: 0;\n"], ["\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n flex-shrink: 0;\n"])));
386
+ })(templateObject_2$w || (templateObject_2$w = __makeTemplateObject(["\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n flex-shrink: 0;\n"], ["\n position: relative;\n display: inline-flex;\n vertical-align: middle;\n flex-shrink: 0;\n"])));
387
387
  var BadgeIndicator = styled.span.withConfig({
388
388
  shouldForwardProp: function shouldForwardProp(prop) {
389
389
  return !prop.startsWith('$');
390
390
  },
391
391
  displayName: "Badge__BadgeIndicator",
392
392
  componentId: "sc-tjz4pp-1"
393
- })(templateObject_3$r || (templateObject_3$r = __makeTemplateObject(["\n position: absolute;\n top: 0;\n right: 0;\n transform: translate(50%, -50%);\n display: ", ";\n align-items: center;\n justify-content: center;\n min-width: ", ";\n height: ", ";\n padding: ", ";\n border-radius: ", ";\n line-height: ", ";\n white-space: nowrap;\n box-shadow: 0 0 0 ", " ", ";\n animation: ", " ", " ", ";\n\n ", " {\n animation: none;\n }\n \n ", "\n"], ["\n position: absolute;\n top: 0;\n right: 0;\n transform: translate(50%, -50%);\n display: ", ";\n align-items: center;\n justify-content: center;\n min-width: ", ";\n height: ", ";\n padding: ", ";\n border-radius: ", ";\n line-height: ", ";\n white-space: nowrap;\n box-shadow: 0 0 0 ", " ", ";\n animation: ", " ", " ", ";\n\n ", " {\n animation: none;\n }\n \n ", "\n"])), function (props) {
393
+ })(templateObject_3$t || (templateObject_3$t = __makeTemplateObject(["\n position: absolute;\n top: 0;\n right: 0;\n transform: translate(50%, -50%);\n display: ", ";\n align-items: center;\n justify-content: center;\n min-width: ", ";\n height: ", ";\n padding: ", ";\n border-radius: ", ";\n line-height: ", ";\n white-space: nowrap;\n box-shadow: 0 0 0 ", " ", ";\n animation: ", " ", " ", ";\n\n ", " {\n animation: none;\n }\n \n ", "\n"], ["\n position: absolute;\n top: 0;\n right: 0;\n transform: translate(50%, -50%);\n display: ", ";\n align-items: center;\n justify-content: center;\n min-width: ", ";\n height: ", ";\n padding: ", ";\n border-radius: ", ";\n line-height: ", ";\n white-space: nowrap;\n box-shadow: 0 0 0 ", " ", ";\n animation: ", " ", " ", ";\n\n ", " {\n animation: none;\n }\n \n ", "\n"])), function (props) {
394
394
  return props.$isVisible ? 'flex' : 'none';
395
395
  }, function (props) {
396
396
  return props.$isDot ? dot.size : count.minWidth;
397
397
  }, function (props) {
398
398
  return props.$isDot ? dot.size : count.height;
399
399
  }, function (props) {
400
- return props.$isDot ? '0' : "0 ".concat(count.paddingX);
401
- }, radius$4.circle, count.lineHeight, ring.width, color$8.background["default"], scaleIn$2, semantic$f.motion.duration.normal, semantic$f.motion.easing.easeOut, reducedMotion, function (props) {
400
+ return props.$isDot ? '0' : "0 ".concat(semantic$i.spacing.component.xs);
401
+ }, radius$4.circle, count.lineHeight, ring.width, color$9.background["default"], scaleIn$2, semantic$i.motion.duration.normal, semantic$i.motion.easing.easeOut, reducedMotion, function (props) {
402
402
  switch (props.$variant) {
403
403
  case 'primary':
404
- return "\n background-color: ".concat(color$8.background.interactive, ";\n color: ").concat(color$8.text.inverse, ";\n ");
404
+ return "\n background-color: ".concat(color$9.background.interactive, ";\n color: ").concat(color$9.text.inverse, ";\n ");
405
405
  case 'error':
406
- return "\n background-color: ".concat(color$8.background.error, ";\n color: ").concat(color$8.text.inverse, ";\n ");
406
+ return "\n background-color: ".concat(color$9.background.error, ";\n color: ").concat(color$9.text.inverse, ";\n ");
407
407
  case 'warning':
408
- return "\n background-color: ".concat(color$8.background.warning, ";\n color: ").concat(color$8.text.inverse, ";\n ");
408
+ return "\n background-color: ".concat(color$9.background.warning, ";\n color: ").concat(color$9.text.inverse, ";\n ");
409
409
  case 'success':
410
- return "\n background-color: ".concat(color$8.background.success, ";\n color: ").concat(color$8.text.inverse, ";\n ");
410
+ return "\n background-color: ".concat(color$9.background.success, ";\n color: ").concat(color$9.text.inverse, ";\n ");
411
411
  default:
412
- return "\n background-color: ".concat(color$8.background.emphasis, ";\n color: ").concat(color$8.text.inverse, ";\n ");
412
+ return "\n background-color: ".concat(color$9.background.emphasis, ";\n color: ").concat(color$9.text.inverse, ";\n ");
413
413
  }
414
414
  });
415
415
  var ScreenReaderOnly$1 = styled.span.withConfig({
416
416
  displayName: "Badge__ScreenReaderOnly",
417
417
  componentId: "sc-tjz4pp-2"
418
- })(templateObject_4$m || (templateObject_4$m = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), visuallyHidden);
418
+ })(templateObject_4$n || (templateObject_4$n = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), visuallyHidden);
419
419
  var Badge = function Badge(_a) {
420
420
  var children = _a.children,
421
421
  _b = _a.count,
@@ -427,7 +427,8 @@ var Badge = function Badge(_a) {
427
427
  _e = _a.dot,
428
428
  dot = _e === void 0 ? false : _e,
429
429
  ariaLabel = _a["aria-label"],
430
- className = _a.className;
430
+ className = _a.className,
431
+ dataTestId = _a["data-testid"];
431
432
  var isVisible = dot || count > 0;
432
433
  var displayCount = count > max ? "".concat(max, "+") : count.toString();
433
434
  // Generate default aria-label if not provided
@@ -435,6 +436,7 @@ var Badge = function Badge(_a) {
435
436
  var label = ariaLabel || defaultAriaLabel;
436
437
  return jsxs(BadgeWrapper, {
437
438
  className: className,
439
+ "data-testid": dataTestId,
438
440
  children: [children, jsxs(BadgeIndicator, {
439
441
  "$variant": variant,
440
442
  "$isDot": dot,
@@ -451,7 +453,7 @@ var Badge = function Badge(_a) {
451
453
  })]
452
454
  });
453
455
  };
454
- var templateObject_1$I, templateObject_2$u, templateObject_3$r, templateObject_4$m;
456
+ var templateObject_1$J, templateObject_2$w, templateObject_3$t, templateObject_4$n;
455
457
 
456
458
  var StyledBox = styled.div.withConfig({
457
459
  shouldForwardProp: function shouldForwardProp(prop) {
@@ -462,15 +464,15 @@ var StyledBox = styled.div.withConfig({
462
464
  })(templateObject_49 || (templateObject_49 = __makeTemplateObject(["\n ", "\n \n // Flexbox\n ", "\n ", "\n ", "\n ", "\n ", "\n \n // Margin\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n \n // Padding\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n \n // Size\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n \n // Position\n ", "\n ", "\n ", "\n ", "\n ", "\n \n // Borders\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n \n // Background & Color\n ", "\n ", "\n \n // Elevation (shadow)\n ", "\n \n // Cursor\n ", "\n \n // Transition\n ", "\n \n // Hover states\n ", "\n \n // Overflow\n ", "\n ", "\n ", "\n"], ["\n ", "\n \n // Flexbox\n ", "\n ", "\n ", "\n ", "\n ", "\n \n // Margin\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n \n // Padding\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n \n // Size\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n \n // Position\n ", "\n ", "\n ", "\n ", "\n ", "\n \n // Borders\n ", "\n ", "\n ", "\n ", "\n ", "\n ", "\n \n // Background & Color\n ", "\n ", "\n \n // Elevation (shadow)\n ", "\n \n // Cursor\n ", "\n \n // Transition\n ", "\n \n // Hover states\n ", "\n \n // Overflow\n ", "\n ", "\n ", "\n"
463
465
  // Transform component that maps clean props to $-prefixed props for styled-components
464
466
  ])), function (props) {
465
- return props.$display && css(templateObject_1$H || (templateObject_1$H = __makeTemplateObject(["display: ", ";"], ["display: ", ";"])), props.$display);
467
+ return props.$display && css(templateObject_1$I || (templateObject_1$I = __makeTemplateObject(["display: ", ";"], ["display: ", ";"])), props.$display);
466
468
  }, function (props) {
467
- return props.$flexDirection && css(templateObject_2$t || (templateObject_2$t = __makeTemplateObject(["flex-direction: ", ";"], ["flex-direction: ", ";"])), props.$flexDirection);
469
+ return props.$flexDirection && css(templateObject_2$v || (templateObject_2$v = __makeTemplateObject(["flex-direction: ", ";"], ["flex-direction: ", ";"])), props.$flexDirection);
468
470
  }, function (props) {
469
- return props.$justifyContent && css(templateObject_3$q || (templateObject_3$q = __makeTemplateObject(["justify-content: ", ";"], ["justify-content: ", ";"])), props.$justifyContent);
471
+ return props.$justifyContent && css(templateObject_3$s || (templateObject_3$s = __makeTemplateObject(["justify-content: ", ";"], ["justify-content: ", ";"])), props.$justifyContent);
470
472
  }, function (props) {
471
- return props.$alignItems && css(templateObject_4$l || (templateObject_4$l = __makeTemplateObject(["align-items: ", ";"], ["align-items: ", ";"])), props.$alignItems);
473
+ return props.$alignItems && css(templateObject_4$m || (templateObject_4$m = __makeTemplateObject(["align-items: ", ";"], ["align-items: ", ";"])), props.$alignItems);
472
474
  }, function (props) {
473
- return props.$flexWrap && css(templateObject_5$g || (templateObject_5$g = __makeTemplateObject(["flex-wrap: ", ";"], ["flex-wrap: ", ";"])), props.$flexWrap);
475
+ return props.$flexWrap && css(templateObject_5$h || (templateObject_5$h = __makeTemplateObject(["flex-wrap: ", ";"], ["flex-wrap: ", ";"])), props.$flexWrap);
474
476
  }, function (props) {
475
477
  return props.$gap && css(templateObject_6$d || (templateObject_6$d = __makeTemplateObject(["gap: ", ";"], ["gap: ", ";"])), tokensJson.semantic.spacing.layout[props.$gap]);
476
478
  }, function (props) {
@@ -486,7 +488,7 @@ var StyledBox = styled.div.withConfig({
486
488
  }, function (props) {
487
489
  return props.$mx && css(templateObject_12$4 || (templateObject_12$4 = __makeTemplateObject(["\n margin-left: ", ";\n margin-right: ", ";\n "], ["\n margin-left: ", ";\n margin-right: ", ";\n "])), tokensJson.semantic.spacing.layout[props.$mx], tokensJson.semantic.spacing.layout[props.$mx]);
488
490
  }, function (props) {
489
- return props.$my && css(templateObject_13$3 || (templateObject_13$3 = __makeTemplateObject(["\n margin-top: ", ";\n margin-bottom: ", ";\n "], ["\n margin-top: ", ";\n margin-bottom: ", ";\n "])), tokensJson.semantic.spacing.layout[props.$my], tokensJson.semantic.spacing.layout[props.$my]);
491
+ return props.$my && css(templateObject_13$4 || (templateObject_13$4 = __makeTemplateObject(["\n margin-top: ", ";\n margin-bottom: ", ";\n "], ["\n margin-top: ", ";\n margin-bottom: ", ";\n "])), tokensJson.semantic.spacing.layout[props.$my], tokensJson.semantic.spacing.layout[props.$my]);
490
492
  }, function (props) {
491
493
  return props.$p && css(templateObject_14$2 || (templateObject_14$2 = __makeTemplateObject(["padding: ", ";"], ["padding: ", ";"])), tokensJson.semantic.spacing.layout[props.$p]);
492
494
  }, function (props) {
@@ -496,7 +498,7 @@ var StyledBox = styled.div.withConfig({
496
498
  }, function (props) {
497
499
  return props.$pb && css(templateObject_17$2 || (templateObject_17$2 = __makeTemplateObject(["padding-bottom: ", ";"], ["padding-bottom: ", ";"])), tokensJson.semantic.spacing.layout[props.$pb]);
498
500
  }, function (props) {
499
- return props.$pl && css(templateObject_18$1 || (templateObject_18$1 = __makeTemplateObject(["padding-left: ", ";"], ["padding-left: ", ";"])), tokensJson.semantic.spacing.layout[props.$pl]);
501
+ return props.$pl && css(templateObject_18$2 || (templateObject_18$2 = __makeTemplateObject(["padding-left: ", ";"], ["padding-left: ", ";"])), tokensJson.semantic.spacing.layout[props.$pl]);
500
502
  }, function (props) {
501
503
  return props.$px && css(templateObject_19$1 || (templateObject_19$1 = __makeTemplateObject(["\n padding-left: ", ";\n padding-right: ", ";\n "], ["\n padding-left: ", ";\n padding-right: ", ";\n "])), tokensJson.semantic.spacing.layout[props.$px], tokensJson.semantic.spacing.layout[props.$px]);
502
504
  }, function (props) {
@@ -686,7 +688,7 @@ var BoxTransform = function BoxTransform(props) {
686
688
  }));
687
689
  };
688
690
  var Box = BoxTransform;
689
- var templateObject_1$H, templateObject_2$t, templateObject_3$q, templateObject_4$l, templateObject_5$g, templateObject_6$d, templateObject_7$b, templateObject_8$8, templateObject_9$6, templateObject_10$4, templateObject_11$4, templateObject_12$4, templateObject_13$3, templateObject_14$2, templateObject_15$2, templateObject_16$2, templateObject_17$2, templateObject_18$1, templateObject_19$1, templateObject_20$1, templateObject_21$1, templateObject_22$1, templateObject_23$1, templateObject_24$1, templateObject_25$1, templateObject_26$1, templateObject_27$1, templateObject_28$1, templateObject_29$1, templateObject_30$1, templateObject_31$1, templateObject_32$1, templateObject_33$1, templateObject_34$1, templateObject_35$1, templateObject_36, templateObject_37, templateObject_38, templateObject_39, templateObject_40, templateObject_41, templateObject_42, templateObject_43, templateObject_44, templateObject_45, templateObject_46, templateObject_47, templateObject_48, templateObject_49;
691
+ var templateObject_1$I, templateObject_2$v, templateObject_3$s, templateObject_4$m, templateObject_5$h, templateObject_6$d, templateObject_7$b, templateObject_8$8, templateObject_9$6, templateObject_10$4, templateObject_11$4, templateObject_12$4, templateObject_13$4, templateObject_14$2, templateObject_15$2, templateObject_16$2, templateObject_17$2, templateObject_18$2, templateObject_19$1, templateObject_20$1, templateObject_21$1, templateObject_22$1, templateObject_23$1, templateObject_24$1, templateObject_25$1, templateObject_26$1, templateObject_27$1, templateObject_28$1, templateObject_29$1, templateObject_30$1, templateObject_31$1, templateObject_32$1, templateObject_33$1, templateObject_34$1, templateObject_35$1, templateObject_36, templateObject_37, templateObject_38, templateObject_39, templateObject_40, templateObject_41, templateObject_42, templateObject_43, templateObject_44, templateObject_45, templateObject_46, templateObject_47, templateObject_48, templateObject_49;
690
692
 
691
693
  var IconStyled = styled.span.withConfig({
692
694
  shouldForwardProp: function shouldForwardProp(prop) {
@@ -694,7 +696,7 @@ var IconStyled = styled.span.withConfig({
694
696
  },
695
697
  displayName: "Icon__IconStyled",
696
698
  componentId: "sc-1105czq-0"
697
- })(templateObject_1$G || (templateObject_1$G = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: ", ";\n height: ", ";\n \n svg {\n width: 100%;\n height: 100%;\n display: block;\n }\n \n /* Use semantic icon colors */\n color: ", ";\n"], ["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: ", ";\n height: ", ";\n \n svg {\n width: 100%;\n height: 100%;\n display: block;\n }\n \n /* Use semantic icon colors */\n color: ", ";\n"])), function (_a) {
699
+ })(templateObject_1$H || (templateObject_1$H = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: ", ";\n height: ", ";\n \n svg {\n width: 100%;\n height: 100%;\n display: block;\n }\n \n /* Use semantic icon colors */\n color: ", ";\n"], ["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: ", ";\n height: ", ";\n \n svg {\n width: 100%;\n height: 100%;\n display: block;\n }\n \n /* Use semantic icon colors */\n color: ", ";\n"])), function (_a) {
698
700
  var $size = _a.$size;
699
701
  return tokensJson.semantic.size.icon[$size];
700
702
  }, function (_a) {
@@ -760,12 +762,14 @@ var Icon = function Icon(_a) {
760
762
  })
761
763
  });
762
764
  };
763
- var templateObject_1$G;
765
+ var templateObject_1$H;
764
766
 
765
767
  var button$1 = tokensJson.component.button,
766
- semantic$e = tokensJson.semantic;
768
+ semantic$h = tokensJson.semantic;
769
+ // Padding comes from the semantic spacing scale: no component spacing tokens (decision 0022)
770
+ var spacing$a = semantic$h.spacing.component;
767
771
  // Base styles shared between button and link
768
- var baseButtonStyles = "\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: ".concat(tokensJson.semantic.spacing.layout.xs, ";\n height: max-content;\n cursor: pointer;\n border: none;\n text-decoration: none;\n transition: ").concat(semantic$e.motion.hover, ";\n white-space: nowrap;\n user-select: none;\n \n &:focus {\n outline: ").concat(button$1.focus.outline, ";\n outline-offset: ").concat(button$1.focus.outlineOffset, ";\n }\n\n &:disabled {\n cursor: not-allowed;\n }\n");
772
+ var baseButtonStyles = "\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: ".concat(tokensJson.semantic.spacing.layout.xs, ";\n height: max-content;\n cursor: pointer;\n border: none;\n text-decoration: none;\n transition: ").concat(semantic$h.motion.hover, ";\n white-space: nowrap;\n user-select: none;\n \n &:focus {\n outline: ").concat(button$1.focus.outline, ";\n outline-offset: ").concat(semantic$h.border.focusOffset, ";\n }\n\n &:disabled {\n cursor: not-allowed;\n }\n");
769
773
  // Dynamic variant styles using component tokens
770
774
  var getVariantStyles$1 = function getVariantStyles(_a) {
771
775
  var $variant = _a.$variant;
@@ -794,6 +798,15 @@ var getVariantStyles$1 = function getVariantStyles(_a) {
794
798
  disabledBg: button$1.variants.naked.disabled.backgroundColor,
795
799
  disabledText: button$1.variants.naked.disabled.textColor
796
800
  },
801
+ accent: {
802
+ bg: button$1.variants.accent.backgroundColor,
803
+ text: button$1.variants.accent.textColor,
804
+ hoverBg: button$1.variants.accent.hover.backgroundColor,
805
+ activeBg: button$1.variants.accent.active.backgroundColor,
806
+ disabledBg: button$1.variants.accent.disabled.backgroundColor,
807
+ disabledText: button$1.variants.accent.disabled.textColor
808
+ },
809
+ // Deprecated alias for accent; removed in 3.0
797
810
  emphasis: {
798
811
  bg: button$1.variants.emphasis.backgroundColor,
799
812
  text: button$1.variants.emphasis.textColor,
@@ -819,13 +832,13 @@ var getSizeStyles$1 = function getSizeStyles(_a) {
819
832
  var $size = _a.$size;
820
833
  switch ($size) {
821
834
  case 'small':
822
- return "\n font: ".concat(button$1.sizes.small.font, ";\n padding: ").concat(button$1.sizes.small.padding, ";\n ");
835
+ return "\n font: ".concat(button$1.sizes.small.font, ";\n padding: ").concat(spacing$a.sm, " ").concat(spacing$a.md, ";\n ");
823
836
  case 'medium':
824
- return "\n font: ".concat(button$1.sizes.medium.font, ";\n padding: ").concat(button$1.sizes.medium.padding, ";\n ");
837
+ return "\n font: ".concat(button$1.sizes.medium.font, ";\n padding: ").concat(spacing$a.sm, " ").concat(spacing$a.lg, ";\n ");
825
838
  case 'large':
826
- return "\n font: ".concat(button$1.sizes.large.font, ";\n padding: ").concat(button$1.sizes.large.padding, ";\n ");
839
+ return "\n font: ".concat(button$1.sizes.large.font, ";\n padding: ").concat(spacing$a.md, " ").concat(spacing$a.lg, ";\n ");
827
840
  default:
828
- return "\n font: ".concat(button$1.sizes.large.font, ";\n padding: ").concat(button$1.sizes.large.padding, ";\n ");
841
+ return "\n font: ".concat(button$1.sizes.large.font, ";\n padding: ").concat(spacing$a.md, " ").concat(spacing$a.lg, ";\n ");
829
842
  }
830
843
  };
831
844
  var StyledButton = styled.button.withConfig({
@@ -834,14 +847,14 @@ var StyledButton = styled.button.withConfig({
834
847
  },
835
848
  displayName: "Button__StyledButton",
836
849
  componentId: "sc-1eiuum9-0"
837
- })(templateObject_1$F || (templateObject_1$F = __makeTemplateObject(["\n ", "\n border-radius: ", ";\n \n ", "\n ", "\n"], ["\n ", "\n border-radius: ", ";\n \n ", "\n ", "\n"])), baseButtonStyles, button$1.primary.borderRadius, getVariantStyles$1, getSizeStyles$1);
850
+ })(templateObject_1$G || (templateObject_1$G = __makeTemplateObject(["\n ", "\n border-radius: ", ";\n \n ", "\n ", "\n"], ["\n ", "\n border-radius: ", ";\n \n ", "\n ", "\n"])), baseButtonStyles, button$1.primary.borderRadius, getVariantStyles$1, getSizeStyles$1);
838
851
  var StyledLink = styled.a.withConfig({
839
852
  shouldForwardProp: function shouldForwardProp(prop) {
840
853
  return !prop.startsWith('$');
841
854
  },
842
855
  displayName: "Button__StyledLink",
843
856
  componentId: "sc-1eiuum9-1"
844
- })(templateObject_2$s || (templateObject_2$s = __makeTemplateObject(["\n ", "\n border-radius: ", ";\n \n ", "\n ", "\n"], ["\n ", "\n border-radius: ", ";\n \n ", "\n ", "\n"
857
+ })(templateObject_2$u || (templateObject_2$u = __makeTemplateObject(["\n ", "\n border-radius: ", ";\n \n ", "\n ", "\n"], ["\n ", "\n border-radius: ", ";\n \n ", "\n ", "\n"
845
858
  // Helper function to get icon size based on button size
846
859
  ])), baseButtonStyles, button$1.primary.borderRadius, getVariantStyles$1, getSizeStyles$1);
847
860
  // Helper function to get icon size based on button size
@@ -885,8 +898,11 @@ var Button = function Button(_a) {
885
898
  rest = __rest(_a, ["variant", "size", "url", "purpose", "children", "target", "iconName", "linkComponent", 'data-testid']);
886
899
  // For links with custom link component (e.g., Next.js Link, React Router Link)
887
900
  if (purpose === 'link' && url && LinkComponent) {
888
- return jsx(LinkComponent, {
901
+ // The link component renders the <a>, so anchor attributes (id, aria-*, rel, handlers) go to it
902
+ var linkProps = rest;
903
+ return jsx(LinkComponent, __assign({}, linkProps, {
889
904
  href: url,
905
+ target: target,
890
906
  children: jsx(StyledLink, {
891
907
  as: "span",
892
908
  "$variant": variant,
@@ -894,18 +910,17 @@ var Button = function Button(_a) {
894
910
  "data-testid": dataTestId,
895
911
  children: renderButtonContent(children, iconName, size)
896
912
  })
897
- });
913
+ }));
898
914
  }
899
915
  // For standard links (external or without custom component)
900
916
  if (purpose === 'link' && url) {
901
917
  var linkProps = rest;
902
- return jsx(StyledLink, __assign({
918
+ return jsx(StyledLink, __assign({}, linkProps, {
903
919
  href: url,
904
920
  target: target,
905
921
  "$variant": variant,
906
922
  "$size": size,
907
- "data-testid": dataTestId
908
- }, linkProps, {
923
+ "data-testid": dataTestId,
909
924
  children: renderButtonContent(children, iconName, size)
910
925
  }));
911
926
  }
@@ -942,49 +957,46 @@ var Button = function Button(_a) {
942
957
  children: renderButtonContent(children, iconName, size)
943
958
  }));
944
959
  };
945
- var templateObject_1$F, templateObject_2$s;
960
+ var templateObject_1$G, templateObject_2$u;
946
961
 
947
- var semantic$d = tokensJson.semantic;
948
- var color$7 = semantic$d.color,
949
- border$8 = semantic$d.border,
950
- spacing$7 = semantic$d.spacing;
962
+ var semantic$g = tokensJson.semantic;
963
+ var color$8 = semantic$g.color,
964
+ border$9 = semantic$g.border,
965
+ spacing$9 = semantic$g.spacing;
951
966
  var label$2 = tokensJson.component.badge.label;
952
- var category = color$7.category;
953
- var radius$3 = border$8.radius;
954
- var layout$4 = spacing$7.layout;
955
- var StyledCategoryBadge = styled.span.withConfig({
967
+ var category = color$8.category;
968
+ var radius$3 = border$9.radius;
969
+ var layout$4 = spacing$9.layout;
970
+ var labelHeight$1 = semantic$g.size.label;
971
+ // Text on white or the -subtle fill (outlined and minimal), at least 4.5:1 (#115)
972
+ var categoryText = {
973
+ blue: category['blue-text'],
974
+ purple: category['purple-text'],
975
+ pink: category['pink-text'],
976
+ yellow: category['yellow-text'],
977
+ green: category['green-text'],
978
+ red: category['red-text'],
979
+ orange: category['orange-text'],
980
+ gray: category['gray-text']
981
+ };
982
+ var StyledCategoryLabel = styled.span.withConfig({
956
983
  shouldForwardProp: function shouldForwardProp(prop) {
957
984
  return !prop.startsWith('$');
958
985
  },
959
- displayName: "CategoryBadge__StyledCategoryBadge",
960
- componentId: "sc-17aslpn-0"
961
- })(templateObject_1$E || (templateObject_1$E = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: ", ";\n white-space: nowrap;\n user-select: none;\n border-style: solid;\n border-width: ", ";\n \n /* Size styles */\n height: ", ";\n padding: ", ";\n font: ", ";\n /* After the font shorthand, which would otherwise reset it */\n font-weight: ", ";\n gap: ", ";\n \n /* Variant + Color styles */\n background-color: ", ";\n \n color: ", ";\n \n border-color: ", ";\n"], ["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: ", ";\n white-space: nowrap;\n user-select: none;\n border-style: solid;\n border-width: ", ";\n \n /* Size styles */\n height: ", ";\n padding: ", ";\n font: ", ";\n /* After the font shorthand, which would otherwise reset it */\n font-weight: ", ";\n gap: ", ";\n \n /* Variant + Color styles */\n background-color: ", ";\n \n color: ", ";\n \n border-color: ", ";\n"
962
- /**
963
- * CategoryBadge component for displaying transaction categories
964
- *
965
- * A static label for categorizing content with support for 8 color options,
966
- * 3 visual variants, and optional icons. Perfect for categorizing
967
- * financial transactions or content types.
968
- *
969
- * @example
970
- * ```tsx
971
- * <CategoryBadge color="orange" icon="restaurant">
972
- * Food & Dining
973
- * </CategoryBadge>
974
- *
975
- * <CategoryBadge color="blue" variant="outlined" size="small">
976
- * Travel
977
- * </CategoryBadge>
978
- * ```
979
- */])), radius$3.circle, semantic$d.border.width.thin, function (_a) {
986
+ displayName: "CategoryLabel__StyledCategoryLabel",
987
+ componentId: "sc-1jx7bjo-0"
988
+ })(templateObject_1$F || (templateObject_1$F = __makeTemplateObject(["\n box-sizing: border-box; /* the height includes padding and border, without relying on a global reset */\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: ", ";\n white-space: nowrap;\n user-select: none;\n border-style: solid;\n border-width: ", ";\n \n /* Size styles */\n height: ", ";\n padding: ", ";\n font: ", ";\n /* After the font shorthand, which would otherwise reset it */\n font-weight: ", ";\n gap: ", ";\n \n /* Variant + Color styles */\n background-color: ", ";\n \n /* Outlined and minimal text uses the AA text token, not the base colour (issue 115) */\n color: ", ";\n \n border-color: ", ";\n"], ["\n box-sizing: border-box; /* the height includes padding and border, without relying on a global reset */\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: ", ";\n white-space: nowrap;\n user-select: none;\n border-style: solid;\n border-width: ", ";\n \n /* Size styles */\n height: ", ";\n padding: ", ";\n font: ", ";\n /* After the font shorthand, which would otherwise reset it */\n font-weight: ", ";\n gap: ", ";\n \n /* Variant + Color styles */\n background-color: ", ";\n \n /* Outlined and minimal text uses the AA text token, not the base colour (issue 115) */\n color: ", ";\n \n border-color: ", ";\n"
989
+ // The visible content, hidden from assistive technology when an aria-label replaces it.
990
+ // display: contents keeps the root's flex layout and gap.
991
+ ])), radius$3.circle, semantic$g.border.width.thin, function (_a) {
980
992
  var $size = _a.$size;
981
- return $size === 'small' ? '24px' : '32px';
993
+ return labelHeight$1[$size];
982
994
  }, function (_a) {
983
995
  var $size = _a.$size;
984
- return $size === 'small' ? "".concat(layout$4.xs, " ").concat(layout$4.sm) : "".concat(layout$4.sm, " ").concat(layout$4.md);
996
+ return $size === 'medium' ? "".concat(layout$4.xs, " ").concat(layout$4.sm) : "".concat(layout$4.sm, " ").concat(layout$4.md);
985
997
  }, function (_a) {
986
998
  var $size = _a.$size;
987
- return $size === 'small' ? label$2.typography.small : label$2.typography.medium;
999
+ return $size === 'medium' ? label$2.typography.small : label$2.typography.medium;
988
1000
  }, label$2.fontWeight, layout$4.xs, function (_a) {
989
1001
  var $color = _a.$color,
990
1002
  $variant = _a.$variant;
@@ -1000,9 +1012,9 @@ var StyledCategoryBadge = styled.span.withConfig({
1000
1012
  var $color = _a.$color,
1001
1013
  $variant = _a.$variant;
1002
1014
  if ($variant === 'filled') {
1003
- return color$7.text.inverse;
1015
+ return color$8.text.inverse;
1004
1016
  }
1005
- return category[$color];
1017
+ return categoryText[$color];
1006
1018
  }, function (_a) {
1007
1019
  var $color = _a.$color,
1008
1020
  $variant = _a.$variant;
@@ -1011,74 +1023,139 @@ var StyledCategoryBadge = styled.span.withConfig({
1011
1023
  }
1012
1024
  return 'transparent';
1013
1025
  });
1026
+ // The visible content, hidden from assistive technology when an aria-label replaces it.
1027
+ // display: contents keeps the root's flex layout and gap.
1028
+ var VisibleContent$1 = styled.span.withConfig({
1029
+ displayName: "CategoryLabel__VisibleContent",
1030
+ componentId: "sc-1jx7bjo-1"
1031
+ })(templateObject_2$t || (templateObject_2$t = __makeTemplateObject(["\n display: contents;\n"], ["\n display: contents;\n"])));
1032
+ var HiddenLabel = styled.span.withConfig({
1033
+ displayName: "CategoryLabel__HiddenLabel",
1034
+ componentId: "sc-1jx7bjo-2"
1035
+ })(templateObject_3$r || (templateObject_3$r = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"
1036
+ /**
1037
+ * CategoryLabel colour-codes an item's category, such as a transaction's (decision 0018).
1038
+ *
1039
+ * A static, chip-like label with 8 category colours, 3 visual variants and an optional icon.
1040
+ * Category colours carry no status meaning; for status use StatusLabel.
1041
+ *
1042
+ * @example
1043
+ * ```tsx
1044
+ * <CategoryLabel color="orange" icon="creditCard">
1045
+ * Shopping
1046
+ * </CategoryLabel>
1047
+ *
1048
+ * <CategoryLabel color="blue" variant="outlined" size="medium">
1049
+ * Travel
1050
+ * </CategoryLabel>
1051
+ * ```
1052
+ */])), visuallyHidden);
1014
1053
  /**
1015
- * CategoryBadge component for displaying transaction categories
1054
+ * CategoryLabel colour-codes an item's category, such as a transaction's (decision 0018).
1016
1055
  *
1017
- * A static label for categorizing content with support for 8 color options,
1018
- * 3 visual variants, and optional icons. Perfect for categorizing
1019
- * financial transactions or content types.
1056
+ * A static, chip-like label with 8 category colours, 3 visual variants and an optional icon.
1057
+ * Category colours carry no status meaning; for status use StatusLabel.
1020
1058
  *
1021
1059
  * @example
1022
1060
  * ```tsx
1023
- * <CategoryBadge color="orange" icon="restaurant">
1024
- * Food & Dining
1025
- * </CategoryBadge>
1061
+ * <CategoryLabel color="orange" icon="creditCard">
1062
+ * Shopping
1063
+ * </CategoryLabel>
1026
1064
  *
1027
- * <CategoryBadge color="blue" variant="outlined" size="small">
1065
+ * <CategoryLabel color="blue" variant="outlined" size="medium">
1028
1066
  * Travel
1029
- * </CategoryBadge>
1067
+ * </CategoryLabel>
1030
1068
  * ```
1031
1069
  */
1032
- var CategoryBadge = function CategoryBadge(_a) {
1070
+ var CategoryLabel = function CategoryLabel(_a) {
1033
1071
  var children = _a.children,
1034
1072
  _b = _a.color,
1035
1073
  color = _b === void 0 ? 'blue' : _b,
1036
1074
  _c = _a.variant,
1037
1075
  variant = _c === void 0 ? 'filled' : _c,
1038
1076
  _d = _a.size,
1039
- size = _d === void 0 ? 'medium' : _d,
1077
+ size = _d === void 0 ? 'large' : _d,
1040
1078
  icon = _a.icon,
1041
1079
  dataTestId = _a["data-testid"],
1042
1080
  ariaLabel = _a["aria-label"];
1043
- var iconSize = size === 'small' ? 'xs' : 'sm';
1044
- return jsxs(StyledCategoryBadge, {
1081
+ var iconSize = size === 'medium' ? 'xs' : 'sm';
1082
+ // A blank aria-label is no label at all, so it falls back like a missing one
1083
+ var accessibleLabel = (ariaLabel === null || ariaLabel === void 0 ? void 0 : ariaLabel.trim()) ? ariaLabel : undefined;
1084
+ return jsxs(StyledCategoryLabel, {
1045
1085
  "$color": color,
1046
1086
  "$variant": variant,
1047
1087
  "$size": size,
1048
- "aria-label": ariaLabel,
1049
1088
  "data-testid": dataTestId,
1050
- children: [icon && jsx(Icon, {
1051
- name: icon,
1052
- size: iconSize,
1053
- iconColor: variant === 'filled' ? 'inverse' : 'inherit',
1054
- "aria-hidden": "true"
1055
- }), children]
1089
+ children: [jsxs(VisibleContent$1, {
1090
+ "aria-hidden": accessibleLabel ? 'true' : undefined,
1091
+ children: [icon && jsx(Icon, {
1092
+ name: icon,
1093
+ size: iconSize,
1094
+ iconColor: variant === 'filled' ? 'inverse' : 'inherit',
1095
+ "aria-hidden": "true"
1096
+ }), children]
1097
+ }), accessibleLabel && jsx(HiddenLabel, {
1098
+ children: accessibleLabel
1099
+ })]
1056
1100
  });
1057
1101
  };
1102
+ CategoryLabel.displayName = 'CategoryLabel';
1103
+ var templateObject_1$F, templateObject_2$t, templateObject_3$r;
1104
+
1105
+ // CategoryBadge sizes on the decision 0018 scale
1106
+ var toLabelSize = {
1107
+ small: 'medium',
1108
+ medium: 'large'
1109
+ };
1110
+ /**
1111
+ * CategoryBadge displays a category label.
1112
+ *
1113
+ * @deprecated Renamed to `CategoryLabel` (same `color` and `variant`). Map `size="small"` to
1114
+ * `"medium"`, and `size="medium"` (or no size) to `"large"`, CategoryLabel's default.
1115
+ * CategoryBadge is removed in 3.0 (decision 0018).
1116
+ */
1117
+ var CategoryBadge = function CategoryBadge(_a) {
1118
+ var _b = _a.size,
1119
+ size = _b === void 0 ? 'medium' : _b,
1120
+ props = __rest(_a, ["size"]);
1121
+ return jsx(CategoryLabel, __assign({}, props, {
1122
+ size: toLabelSize[size]
1123
+ }));
1124
+ };
1058
1125
  CategoryBadge.displayName = 'CategoryBadge';
1059
- var templateObject_1$E;
1060
1126
 
1061
- var chip = tokensJson.component.chip;
1127
+ var chip$1 = tokensJson.component.chip;
1062
1128
  // Helper function to get variant styles matching Button's approach
1063
1129
  var getVariantStyles = function getVariantStyles(_a) {
1064
1130
  var $variant = _a.$variant,
1065
1131
  $selected = _a.$selected,
1066
1132
  $clickable = _a.$clickable,
1067
1133
  $disabled = _a.$disabled;
1068
- // Boolean chips with selected state get special background
1134
+ // Selected filter and input chips use the light-blue selected treatment (decision 0016).
1135
+ // The text darkens with the fill so every state stays at least 4.5:1.
1069
1136
  if ($selected) {
1070
- return "\n background-color: ".concat(tokensJson.semantic.color.background['interactive-subtle'], ";\n color: ").concat(chip["default"].textColor, ";\n \n &:hover {\n background-color: ").concat($disabled ? tokensJson.semantic.color.background['interactive-subtle'] : $clickable ? '#CAE8FF' : tokensJson.semantic.color.background['interactive-subtle'], ";\n }\n \n &:active {\n background-color: ").concat($disabled ? tokensJson.semantic.color.background['interactive-subtle'] : $clickable ? '#B5DEFF' : tokensJson.semantic.color.background['interactive-subtle'], ";\n }\n ");
1137
+ // A selected disabled chip looks like any disabled chip; the checkmark keeps the
1138
+ // selected state visible (#110)
1139
+ if ($disabled) {
1140
+ var disabled = chip$1.variants.subtle.disabled;
1141
+ return "\n background-color: ".concat(disabled.backgroundColor, ";\n color: ").concat(disabled.textColor, ";\n ");
1142
+ }
1143
+ var _b = tokensJson.semantic.color,
1144
+ background = _b.background,
1145
+ text = _b.text;
1146
+ var interactiveStates = $clickable;
1147
+ return "\n background-color: ".concat(background['interactive-subtle'], ";\n color: ").concat(text.interactive, ";\n \n &:hover {\n background-color: ").concat(interactiveStates ? background['interactive-subtle-hover'] : background['interactive-subtle'], ";\n color: ").concat(interactiveStates ? text['interactive-hover'] : text.interactive, ";\n }\n \n &:active {\n background-color: ").concat(interactiveStates ? background['interactive-subtle-active'] : background['interactive-subtle'], ";\n color: ").concat(interactiveStates ? text['interactive-active'] : text.interactive, ";\n }\n ");
1071
1148
  }
1072
1149
  switch ($variant) {
1073
1150
  case 'emphasis':
1074
- return "\n background-color: ".concat(chip.variants.emphasis.backgroundColor, ";\n color: ").concat(chip.variants.emphasis.textColor, ";\n \n &:hover {\n background-color: ").concat($disabled ? chip.variants.emphasis.disabled.backgroundColor : $clickable ? chip.variants.emphasis.hover.backgroundColor : chip.variants.emphasis.backgroundColor, ";\n }\n \n &:active {\n background-color: ").concat($disabled ? chip.variants.emphasis.disabled.backgroundColor : $clickable ? chip.variants.emphasis.active.backgroundColor : chip.variants.emphasis.backgroundColor, ";\n }\n \n ").concat($disabled ? "\n background-color: ".concat(chip.variants.emphasis.disabled.backgroundColor, ";\n color: ").concat(chip.variants.emphasis.disabled.textColor, ";\n ") : '', "\n ");
1151
+ return "\n background-color: ".concat(chip$1.variants.emphasis.backgroundColor, ";\n color: ").concat(chip$1.variants.emphasis.textColor, ";\n \n &:hover {\n background-color: ").concat($disabled ? chip$1.variants.emphasis.disabled.backgroundColor : $clickable ? chip$1.variants.emphasis.hover.backgroundColor : chip$1.variants.emphasis.backgroundColor, ";\n }\n \n &:active {\n background-color: ").concat($disabled ? chip$1.variants.emphasis.disabled.backgroundColor : $clickable ? chip$1.variants.emphasis.active.backgroundColor : chip$1.variants.emphasis.backgroundColor, ";\n }\n \n ").concat($disabled ? "\n background-color: ".concat(chip$1.variants.emphasis.disabled.backgroundColor, ";\n color: ").concat(chip$1.variants.emphasis.disabled.textColor, ";\n ") : '', "\n ");
1075
1152
  case 'subtle':
1076
- return "\n background-color: ".concat(chip.variants.subtle.backgroundColor, ";\n color: ").concat(chip.variants.subtle.textColor, ";\n \n &:hover {\n background-color: ").concat($disabled ? chip.variants.subtle.disabled.backgroundColor : $clickable ? chip.variants.subtle.hover.backgroundColor : chip.variants.subtle.backgroundColor, ";\n }\n \n &:active {\n background-color: ").concat($disabled ? chip.variants.subtle.disabled.backgroundColor : $clickable ? chip.variants.subtle.active.backgroundColor : chip.variants.subtle.backgroundColor, ";\n }\n \n ").concat($disabled ? "\n background-color: ".concat(chip.variants.subtle.disabled.backgroundColor, ";\n color: ").concat(chip.variants.subtle.disabled.textColor, ";\n ") : '', "\n ");
1153
+ return "\n background-color: ".concat(chip$1.variants.subtle.backgroundColor, ";\n color: ").concat(chip$1.variants.subtle.textColor, ";\n \n &:hover {\n background-color: ").concat($disabled ? chip$1.variants.subtle.disabled.backgroundColor : $clickable ? chip$1.variants.subtle.hover.backgroundColor : chip$1.variants.subtle.backgroundColor, ";\n }\n \n &:active {\n background-color: ").concat($disabled ? chip$1.variants.subtle.disabled.backgroundColor : $clickable ? chip$1.variants.subtle.active.backgroundColor : chip$1.variants.subtle.backgroundColor, ";\n }\n \n ").concat($disabled ? "\n background-color: ".concat(chip$1.variants.subtle.disabled.backgroundColor, ";\n color: ").concat(chip$1.variants.subtle.disabled.textColor, ";\n ") : '', "\n ");
1077
1154
  case 'interactive':
1078
- return "\n background-color: ".concat(chip.variants.interactive.backgroundColor, ";\n color: ").concat(chip.variants.interactive.textColor, ";\n \n &:hover {\n background-color: ").concat($disabled ? chip.variants.interactive.disabled.backgroundColor : $clickable ? chip.variants.interactive.hover.backgroundColor : chip.variants.interactive.backgroundColor, ";\n }\n \n &:active {\n background-color: ").concat($disabled ? chip.variants.interactive.disabled.backgroundColor : $clickable ? chip.variants.interactive.active.backgroundColor : chip.variants.interactive.backgroundColor, ";\n }\n \n ").concat($disabled ? "\n background-color: ".concat(chip.variants.interactive.disabled.backgroundColor, ";\n color: ").concat(chip.variants.interactive.disabled.textColor, ";\n ") : '', "\n ");
1155
+ return "\n background-color: ".concat(chip$1.variants.interactive.backgroundColor, ";\n color: ").concat(chip$1.variants.interactive.textColor, ";\n \n &:hover {\n background-color: ").concat($disabled ? chip$1.variants.interactive.disabled.backgroundColor : $clickable ? chip$1.variants.interactive.hover.backgroundColor : chip$1.variants.interactive.backgroundColor, ";\n }\n \n &:active {\n background-color: ").concat($disabled ? chip$1.variants.interactive.disabled.backgroundColor : $clickable ? chip$1.variants.interactive.active.backgroundColor : chip$1.variants.interactive.backgroundColor, ";\n }\n \n ").concat($disabled ? "\n background-color: ".concat(chip$1.variants.interactive.disabled.backgroundColor, ";\n color: ").concat(chip$1.variants.interactive.disabled.textColor, ";\n ") : '', "\n ");
1079
1156
  case 'default':
1080
1157
  default:
1081
- return "\n background-color: ".concat(chip["default"].backgroundColor, ";\n color: ").concat(chip["default"].textColor, ";\n \n &:hover {\n background-color: ").concat($disabled ? chip.disabled.backgroundColor : $clickable ? chip.hover.backgroundColor : chip["default"].backgroundColor, ";\n }\n \n &:active {\n background-color: ").concat($disabled ? chip.disabled.backgroundColor : $clickable ? chip.active.backgroundColor : chip["default"].backgroundColor, ";\n }\n \n ").concat($disabled ? "\n background-color: ".concat(chip.disabled.backgroundColor, ";\n color: ").concat(chip.disabled.textColor, ";\n ") : '', "\n ");
1158
+ return "\n background-color: ".concat(chip$1["default"].backgroundColor, ";\n color: ").concat(chip$1["default"].textColor, ";\n \n &:hover {\n background-color: ").concat($disabled ? chip$1.disabled.backgroundColor : $clickable ? chip$1.hover.backgroundColor : chip$1["default"].backgroundColor, ";\n }\n \n &:active {\n background-color: ").concat($disabled ? chip$1.disabled.backgroundColor : $clickable ? chip$1.active.backgroundColor : chip$1["default"].backgroundColor, ";\n }\n \n ").concat($disabled ? "\n background-color: ".concat(chip$1.disabled.backgroundColor, ";\n color: ").concat(chip$1.disabled.textColor, ";\n ") : '', "\n ");
1082
1159
  }
1083
1160
  };
1084
1161
  // Helper function to get size styles matching Button's approach
@@ -1086,13 +1163,15 @@ var getSizeStyles = function getSizeStyles(_a) {
1086
1163
  var $size = _a.$size;
1087
1164
  switch ($size) {
1088
1165
  case 'small':
1089
- return "\n font: ".concat(chip.sizes.small.font, ";\n padding: ").concat(chip.sizes.small.padding, ";\n ");
1166
+ return "\n font: ".concat(chip$1.sizes.small.font, ";\n // Off-grid 2px: keeps the deprecated token until #129 (decision 0022)\n padding: ").concat(chip$1.sizes.small.padding, ";\n ");
1090
1167
  case 'medium':
1091
1168
  default:
1092
- return "\n font: ".concat(chip.sizes.medium.font, ";\n padding: ").concat(chip.sizes.medium.padding, ";\n ");
1169
+ return "\n font: ".concat(chip$1.sizes.medium.font, ";\n padding: ").concat(chip$1.sizes.medium.padding, ";\n ");
1093
1170
  }
1094
1171
  };
1095
1172
 
1173
+ var chip = tokensJson.component.chip,
1174
+ semantic$f = tokensJson.semantic;
1096
1175
  // Base styled component using direct prop interpolation like Button
1097
1176
  var StyledChip = styled.span.withConfig({
1098
1177
  shouldForwardProp: function shouldForwardProp(prop) {
@@ -1100,16 +1179,16 @@ var StyledChip = styled.span.withConfig({
1100
1179
  },
1101
1180
  displayName: "ChipBase__StyledChip",
1102
1181
  componentId: "sc-moa6zc-0"
1103
- })(templateObject_1$D || (templateObject_1$D = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: fit-content;\n height: max-content;\n border-radius: ", ";\n box-sizing: border-box;\n user-select: none;\n white-space: nowrap;\n transition: ", ";\n cursor: ", ";\n \n ", "\n ", "\n \n &:focus-visible {\n outline: ", ";\n outline-offset: ", ";\n }\n"], ["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: fit-content;\n height: max-content;\n border-radius: ", ";\n box-sizing: border-box;\n user-select: none;\n white-space: nowrap;\n transition: ", ";\n cursor: ", ";\n \n ", "\n ", "\n \n &:focus-visible {\n outline: ", ";\n outline-offset: ", ";\n }\n"
1182
+ })(templateObject_1$E || (templateObject_1$E = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: fit-content;\n height: max-content;\n border-radius: ", ";\n box-sizing: border-box;\n user-select: none;\n white-space: nowrap;\n transition: ", ";\n cursor: ", ";\n \n ", "\n ", "\n \n &:focus-visible {\n outline: ", ";\n outline-offset: ", ";\n }\n"], ["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: fit-content;\n height: max-content;\n border-radius: ", ";\n box-sizing: border-box;\n user-select: none;\n white-space: nowrap;\n transition: ", ";\n cursor: ", ";\n \n ", "\n ", "\n \n &:focus-visible {\n outline: ", ";\n outline-offset: ", ";\n }\n"
1104
1183
  // Icon container for selected indicator or leading icons
1105
- ])), chip["default"].borderRadius, tokensJson.semantic.motion.hover, function (props) {
1184
+ ])), chip["default"].borderRadius, semantic$f.motion.hover, function (props) {
1106
1185
  return props.$disabled ? 'not-allowed' : props.$clickable ? 'pointer' : 'default';
1107
- }, getVariantStyles, getSizeStyles, chip.focus.outline, chip.focus.outlineOffset);
1186
+ }, getVariantStyles, getSizeStyles, chip.focus.outline, semantic$f.border.focusOffset);
1108
1187
  // Icon container for selected indicator or leading icons
1109
1188
  var IconContainer = styled.span.withConfig({
1110
1189
  displayName: "ChipBase__IconContainer",
1111
1190
  componentId: "sc-moa6zc-1"
1112
- })(templateObject_2$r || (templateObject_2$r = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n margin-right: ", ";\n"], ["\n display: inline-flex;\n align-items: center;\n margin-right: ", ";\n"
1191
+ })(templateObject_2$s || (templateObject_2$s = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n margin-right: ", ";\n"], ["\n display: inline-flex;\n align-items: center;\n margin-right: ", ";\n"
1113
1192
  // Close button for dismissible chips
1114
1193
  ])), tokensJson.semantic.spacing.layout.xs);
1115
1194
  // Close button for dismissible chips
@@ -1119,24 +1198,21 @@ var CloseButton = styled.button.withConfig({
1119
1198
  },
1120
1199
  displayName: "ChipBase__CloseButton",
1121
1200
  componentId: "sc-moa6zc-2"
1122
- })(templateObject_3$p || (templateObject_3$p = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-left: ", ";\n background: transparent;\n border: none;\n padding: 2px;\n border-radius: ", ";\n cursor: ", ";\n color: inherit;\n transition: ", ";\n \n &:hover:not(:disabled) {\n background-color: ", ";\n }\n \n &:active:not(:disabled) {\n background-color: ", ";\n }\n \n &:disabled {\n color: ", ";\n }\n \n &:focus-visible {\n outline: ", ";\n outline-offset: ", ";\n border-radius: ", ";\n }\n"], ["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-left: ", ";\n background: transparent;\n border: none;\n padding: 2px;\n border-radius: ", ";\n cursor: ", ";\n color: inherit;\n transition: ", ";\n \n &:hover:not(:disabled) {\n background-color: ", ";\n }\n \n &:active:not(:disabled) {\n background-color: ", ";\n }\n \n &:disabled {\n color: ", ";\n }\n \n &:focus-visible {\n outline: ", ";\n outline-offset: ", ";\n border-radius: ", ";\n }\n"])), tokensJson.semantic.spacing.layout.sm, tokensJson.semantic.border.radius.xs, function (props) {
1201
+ })(templateObject_3$q || (templateObject_3$q = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-left: ", ";\n background: transparent;\n border: none;\n width: ", ";\n height: ", ";\n padding: ", ";\n border-radius: ", ";\n cursor: ", ";\n color: inherit;\n transition: ", ";\n \n &:hover:not(:disabled) {\n background-color: ", ";\n }\n \n &:active:not(:disabled) {\n background-color: ", ";\n }\n \n &:disabled {\n color: ", ";\n }\n \n &:focus-visible {\n outline: ", ";\n outline-offset: ", ";\n border-radius: ", ";\n }\n"], ["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-left: ", ";\n background: transparent;\n border: none;\n width: ", ";\n height: ", ";\n padding: ", ";\n border-radius: ", ";\n cursor: ", ";\n color: inherit;\n transition: ", ";\n \n &:hover:not(:disabled) {\n background-color: ", ";\n }\n \n &:active:not(:disabled) {\n background-color: ", ";\n }\n \n &:disabled {\n color: ", ";\n }\n \n &:focus-visible {\n outline: ", ";\n outline-offset: ", ";\n border-radius: ", ";\n }\n"])), tokensJson.semantic.spacing.layout.sm, chip.closeButton.size, chip.closeButton.size, tokensJson.semantic.spacing.layout.none, tokensJson.semantic.border.radius.xs, function (props) {
1123
1202
  return props.$disabled ? 'not-allowed' : 'pointer';
1124
- }, tokensJson.semantic.motion.hover, tokensJson.semantic.color.background['hover-overlay'], tokensJson.semantic.color.background['active-overlay'], tokensJson.semantic.color.text.disabled, chip.focus.outline, chip.focus.outlineOffset, chip["default"].borderRadius);
1125
- var templateObject_1$D, templateObject_2$r, templateObject_3$p;
1203
+ }, semantic$f.motion.hover, tokensJson.semantic.color.background['hover-overlay'], tokensJson.semantic.color.background['active-overlay'], tokensJson.semantic.color.text.disabled, chip.focus.outline, semantic$f.border.focusOffset, chip["default"].borderRadius);
1204
+ var templateObject_1$E, templateObject_2$s, templateObject_3$q;
1126
1205
 
1127
1206
  /**
1128
- * Chip - Compact element for displaying tags, categories, and labels
1207
+ * Chip - a static, non-interactive label for tags, categories and metadata.
1129
1208
  *
1130
- * Use this component for static display chips or simple interactive chips.
1131
- * For specialized filtering patterns, use:
1132
- * - FilterChip: Dismissible chips for showing applied filters
1133
- * - BooleanChip: Toggleable chips for quick filter controls
1209
+ * Chips are classified by job (decision 0016):
1210
+ * - Chip: a static label (`default` variant only)
1211
+ * - InputChip: a removable value, such as an applied filter (formerly `FilterChip`)
1212
+ * - BooleanChip: toggles a filter on and off (becomes `FilterChip` in 3.0)
1134
1213
  *
1135
- * Variants:
1136
- * - default: Standard gray background
1137
- * - emphasis: High-contrast dark background
1138
- * - subtle: Light background for secondary info
1139
- * - interactive: Blue background with hover states
1214
+ * The `emphasis`, `subtle`, `interactive`, `light` and `dark` variants and `onClick` are
1215
+ * deprecated and will be removed in 3.0.
1140
1216
  */
1141
1217
  var Chip = function Chip(_a) {
1142
1218
  var children = _a.children,
@@ -1198,22 +1274,22 @@ var LegacyChip = function LegacyChip(_a) {
1198
1274
  };
1199
1275
 
1200
1276
  /**
1201
- * FilterChip - Chip for displaying filters with selected state and optional dismissal
1277
+ * InputChip - A removable value, such as an applied filter, with an optional selected state
1202
1278
  *
1203
- * Use this component to show filters that can be selected/deselected.
1204
- * When selected, displays a checkmark and light blue background.
1279
+ * Use this component to show values the user has entered or applied, such as filters.
1280
+ * When selected, displays a checkmark on the light-blue selected treatment (decision 0016).
1281
+ * A selected disabled chip uses the disabled colours and keeps its checkmark.
1205
1282
  * Optionally dismissible when onDismiss is provided.
1206
1283
  *
1207
1284
  * Features:
1208
1285
  * - Shows checkmark icon when selected
1209
- * - Light blue background when selected
1286
+ * - Light-blue fill and blue text when selected and enabled; disabled colours when disabled
1210
1287
  * - Optional close (×) button when onDismiss is provided
1211
1288
  * - Keyboard dismissal with Delete or Backspace keys (when dismissible)
1212
1289
  * - Non-clickable body (only close button is interactive when present)
1213
- * - Uses subtle/interactive background styling based on selected state
1214
1290
  * - Announces as "status" to screen readers
1215
1291
  */
1216
- var FilterChip = function FilterChip(_a) {
1292
+ var InputChip = function InputChip(_a) {
1217
1293
  var children = _a.children,
1218
1294
  _b = _a.selected,
1219
1295
  selected = _b === void 0 ? false : _b,
@@ -1266,7 +1342,8 @@ var FilterChip = function FilterChip(_a) {
1266
1342
  "aria-hidden": "true",
1267
1343
  children: jsx(Icon, {
1268
1344
  name: "check",
1269
- size: "sm"
1345
+ size: "sm",
1346
+ iconColor: "inherit"
1270
1347
  })
1271
1348
  }), children, isDismissible && jsx(CloseButton, {
1272
1349
  type: "button",
@@ -1279,12 +1356,22 @@ var FilterChip = function FilterChip(_a) {
1279
1356
  "data-testid": dataTestId ? "".concat(dataTestId, "-close") : undefined,
1280
1357
  children: jsx(Icon, {
1281
1358
  name: "close",
1282
- size: "sm"
1359
+ size: "sm",
1360
+ iconColor: "inherit"
1283
1361
  })
1284
1362
  })]
1285
1363
  }));
1286
1364
  };
1287
1365
 
1366
+ /**
1367
+ * FilterChip - a removable chip with an optional selected state.
1368
+ *
1369
+ * @deprecated Renamed to `InputChip`; in 3.0 `FilterChip` becomes the toggle chip (today's
1370
+ * `BooleanChip`). Replace `FilterChip` with `InputChip` first, then `BooleanChip` with
1371
+ * `FilterChip` when you upgrade to 3.0 (decision 0016).
1372
+ */
1373
+ var FilterChip = InputChip;
1374
+
1288
1375
  /**
1289
1376
  * BooleanChip - Toggleable chip for quick filter controls
1290
1377
  *
@@ -1297,7 +1384,11 @@ var FilterChip = function FilterChip(_a) {
1297
1384
  * - Entire chip is clickable to toggle
1298
1385
  * - Keyboard activation with Space or Enter
1299
1386
  * - Uses checkbox role with aria-checked
1300
- * - Visual background change when selected
1387
+ * - Light-blue fill and blue text when selected and enabled; disabled colours when disabled
1388
+ *
1389
+ * @deprecated Becomes `FilterChip` in 3.0, with the same props. Keep using `BooleanChip`
1390
+ * until you upgrade; in 3.0, replace `FilterChip` with `InputChip` first, then
1391
+ * `BooleanChip` with `FilterChip` (decision 0016).
1301
1392
  */
1302
1393
  var BooleanChip = function BooleanChip(_a) {
1303
1394
  var children = _a.children,
@@ -1343,17 +1434,18 @@ var BooleanChip = function BooleanChip(_a) {
1343
1434
  "aria-hidden": "true",
1344
1435
  children: jsx(Icon, {
1345
1436
  name: "check",
1346
- size: "sm"
1437
+ size: "sm",
1438
+ iconColor: "inherit"
1347
1439
  })
1348
1440
  }), children]
1349
1441
  }));
1350
1442
  };
1351
1443
 
1352
- var spacing$6 = tokensJson.semantic.spacing;
1444
+ var spacing$8 = tokensJson.semantic.spacing;
1353
1445
  var StyledContainer$2 = styled.div.withConfig({
1354
1446
  displayName: "Container__StyledContainer",
1355
1447
  componentId: "sc-17dbj6n-0"
1356
- })(templateObject_1$C || (templateObject_1$C = __makeTemplateObject(["\n width: 100%;\n margin-left: auto;\n margin-right: auto;\n padding-left: ", ";\n padding-right: ", ";\n \n ", " {\n max-width: ", ";\n }\n \n ", " {\n max-width: ", ";\n }\n \n ", " {\n max-width: ", ";\n }\n \n ", " {\n max-width: ", ";\n }\n \n ", " {\n max-width: ", ";\n }\n"], ["\n width: 100%;\n margin-left: auto;\n margin-right: auto;\n padding-left: ", ";\n padding-right: ", ";\n \n ", " {\n max-width: ", ";\n }\n \n ", " {\n max-width: ", ";\n }\n \n ", " {\n max-width: ", ";\n }\n \n ", " {\n max-width: ", ";\n }\n \n ", " {\n max-width: ", ";\n }\n"])), spacing$6.layout['2xl'], spacing$6.layout['2xl'], media$1.sm, breakpoints$1.sm, media$1.md, breakpoints$1.md, media$1.lg, breakpoints$1.lg, media$1.xl, breakpoints$1.xl, media$1['2xl'], breakpoints$1['2xl']);
1448
+ })(templateObject_1$D || (templateObject_1$D = __makeTemplateObject(["\n width: 100%;\n margin-left: auto;\n margin-right: auto;\n padding-left: ", ";\n padding-right: ", ";\n \n ", " {\n max-width: ", ";\n }\n \n ", " {\n max-width: ", ";\n }\n \n ", " {\n max-width: ", ";\n }\n \n ", " {\n max-width: ", ";\n }\n \n ", " {\n max-width: ", ";\n }\n"], ["\n width: 100%;\n margin-left: auto;\n margin-right: auto;\n padding-left: ", ";\n padding-right: ", ";\n \n ", " {\n max-width: ", ";\n }\n \n ", " {\n max-width: ", ";\n }\n \n ", " {\n max-width: ", ";\n }\n \n ", " {\n max-width: ", ";\n }\n \n ", " {\n max-width: ", ";\n }\n"])), spacing$8.layout['2xl'], spacing$8.layout['2xl'], media$1.sm, breakpoints$1.sm, media$1.md, breakpoints$1.md, media$1.lg, breakpoints$1.lg, media$1.xl, breakpoints$1.xl, media$1['2xl'], breakpoints$1['2xl']);
1357
1449
  var Container$1 = function Container(_a) {
1358
1450
  var children = _a.children,
1359
1451
  props = __rest(_a, ["children"]);
@@ -1361,24 +1453,24 @@ var Container$1 = function Container(_a) {
1361
1453
  children: children
1362
1454
  }));
1363
1455
  };
1364
- var templateObject_1$C;
1456
+ var templateObject_1$D;
1365
1457
 
1366
1458
  var PictureWrapper = styled.div.withConfig({
1367
1459
  displayName: "Picture__PictureWrapper",
1368
1460
  componentId: "sc-11d9tei-0"
1369
- })(templateObject_1$B || (templateObject_1$B = __makeTemplateObject(["\n margin: 0 auto;\n \n ", " {\n margin-left: 0;\n margin-right: 0;\n }\n"], ["\n margin: 0 auto;\n \n ", " {\n margin-left: 0;\n margin-right: 0;\n }\n"])), media$1.sm);
1461
+ })(templateObject_1$C || (templateObject_1$C = __makeTemplateObject(["\n margin: 0 auto;\n \n ", " {\n margin-left: 0;\n margin-right: 0;\n }\n"], ["\n margin: 0 auto;\n \n ", " {\n margin-left: 0;\n margin-right: 0;\n }\n"])), media$1.sm);
1370
1462
  var ImageLink = styled.a.withConfig({
1371
1463
  displayName: "Picture__ImageLink",
1372
1464
  componentId: "sc-11d9tei-1"
1373
- })(templateObject_2$q || (templateObject_2$q = __makeTemplateObject(["\n display: block;\n cursor: pointer;\n transition: opacity ", " ", ";\n \n &:hover {\n opacity: 0.8;\n }\n"], ["\n display: block;\n cursor: pointer;\n transition: opacity ", " ", ";\n \n &:hover {\n opacity: 0.8;\n }\n"])), tokensJson.semantic.motion.duration.normal, tokensJson.semantic.motion.easing.easeInOut);
1465
+ })(templateObject_2$r || (templateObject_2$r = __makeTemplateObject(["\n display: block;\n cursor: pointer;\n transition: opacity ", " ", ";\n \n &:hover {\n opacity: 0.8;\n }\n"], ["\n display: block;\n cursor: pointer;\n transition: opacity ", " ", ";\n \n &:hover {\n opacity: 0.8;\n }\n"])), tokensJson.semantic.motion.duration.normal, tokensJson.semantic.motion.easing.easeInOut);
1374
1466
  var ImageButton = styled.button.withConfig({
1375
1467
  displayName: "Picture__ImageButton",
1376
1468
  componentId: "sc-11d9tei-2"
1377
- })(templateObject_3$o || (templateObject_3$o = __makeTemplateObject(["\n border: none;\n background: none;\n padding: 0;\n cursor: pointer;\n display: block;\n width: 100%;\n transition: opacity ", " ", ";\n \n &:hover {\n opacity: 0.8;\n }\n"], ["\n border: none;\n background: none;\n padding: 0;\n cursor: pointer;\n display: block;\n width: 100%;\n transition: opacity ", " ", ";\n \n &:hover {\n opacity: 0.8;\n }\n"])), tokensJson.semantic.motion.duration.normal, tokensJson.semantic.motion.easing.easeInOut);
1469
+ })(templateObject_3$p || (templateObject_3$p = __makeTemplateObject(["\n border: none;\n background: none;\n padding: 0;\n cursor: pointer;\n display: block;\n width: 100%;\n transition: opacity ", " ", ";\n \n &:hover {\n opacity: 0.8;\n }\n"], ["\n border: none;\n background: none;\n padding: 0;\n cursor: pointer;\n display: block;\n width: 100%;\n transition: opacity ", " ", ";\n \n &:hover {\n opacity: 0.8;\n }\n"])), tokensJson.semantic.motion.duration.normal, tokensJson.semantic.motion.easing.easeInOut);
1378
1470
  var StyledImage = styled.img.withConfig({
1379
1471
  displayName: "Picture__StyledImage",
1380
1472
  componentId: "sc-11d9tei-3"
1381
- })(templateObject_4$k || (templateObject_4$k = __makeTemplateObject(["\n width: 100%;\n height: auto;\n border-radius: ", ";\n display: block;\n"], ["\n width: 100%;\n height: auto;\n border-radius: ", ";\n display: block;\n"])), tokensJson.semantic.border.radius.sm);
1473
+ })(templateObject_4$l || (templateObject_4$l = __makeTemplateObject(["\n width: 100%;\n height: auto;\n border-radius: ", ";\n display: block;\n"], ["\n width: 100%;\n height: auto;\n border-radius: ", ";\n display: block;\n"])), tokensJson.semantic.border.radius.sm);
1382
1474
  var Picture = function Picture(_a) {
1383
1475
  var title = _a.title,
1384
1476
  src = _a.src,
@@ -1408,18 +1500,18 @@ var Picture = function Picture(_a) {
1408
1500
  }) : image
1409
1501
  });
1410
1502
  };
1411
- var templateObject_1$B, templateObject_2$q, templateObject_3$o, templateObject_4$k;
1503
+ var templateObject_1$C, templateObject_2$r, templateObject_3$p, templateObject_4$l;
1412
1504
 
1413
- var _a$a = tokensJson.semantic,
1414
- typography = _a$a.typography,
1415
- color$6 = _a$a.color;
1505
+ var _a$9 = tokensJson.semantic,
1506
+ typography$1 = _a$9.typography,
1507
+ color$7 = _a$9.color;
1416
1508
  var TimeStyled = styled.time.withConfig({
1417
1509
  displayName: "DateFormatter__TimeStyled",
1418
1510
  componentId: "sc-5464cc-0"
1419
- })(templateObject_1$A || (templateObject_1$A = __makeTemplateObject(["\n font: ", ";\n color: ", ";\n"], ["\n font: ", ";\n color: ", ";\n"
1511
+ })(templateObject_1$B || (templateObject_1$B = __makeTemplateObject(["\n font: ", ";\n color: ", ";\n"], ["\n font: ", ";\n color: ", ";\n"
1420
1512
  /**
1421
1513
  * Formats a date with smart relative/absolute logic
1422
- */])), typography.label, color$6.text.subdued);
1514
+ */])), typography$1.label, color$7.text.subdued);
1423
1515
  /**
1424
1516
  * Formats a date with smart relative/absolute logic
1425
1517
  */
@@ -1465,43 +1557,67 @@ var DateFormatter = function DateFormatter(_a) {
1465
1557
  children: displayText
1466
1558
  });
1467
1559
  };
1468
- var templateObject_1$A;
1560
+ var templateObject_1$B;
1469
1561
 
1470
- var motion$5 = tokensJson.semantic.motion,
1471
- _a$9 = tokensJson.component,
1472
- iconButton = _a$9.iconButton,
1473
- button = _a$9.button;
1562
+ var _a$8 = tokensJson.semantic,
1563
+ motion$5 = _a$8.motion,
1564
+ border$8 = _a$8.border,
1565
+ spacing$7 = _a$8.spacing,
1566
+ _b$1 = tokensJson.component,
1567
+ iconButton = _b$1.iconButton,
1568
+ button = _b$1.button;
1569
+ // Padding comes from the semantic spacing scale: no component spacing tokens (decision 0022)
1570
+ var padding = {
1571
+ small: spacing$7.component.xs,
1572
+ medium: spacing$7.component.sm,
1573
+ large: spacing$7.component.md
1574
+ };
1575
+ // Colours and motion come from Button's tokens, so IconButton's variants look and behave exactly like
1576
+ // Button's in every state (#130). Only the size and the icon differ
1577
+ var variants = {
1578
+ primary: {
1579
+ bg: button.primary.backgroundColor,
1580
+ text: button.primary.textColor,
1581
+ hoverBg: button.hover.backgroundColor,
1582
+ activeBg: button.active.backgroundColor,
1583
+ disabledBg: button.disabled.backgroundColor,
1584
+ disabledText: button.disabled.textColor
1585
+ },
1586
+ secondary: {
1587
+ bg: button.variants.secondary.backgroundColor,
1588
+ text: button.variants.secondary.textColor,
1589
+ hoverBg: button.variants.secondary.hover.backgroundColor,
1590
+ activeBg: button.variants.secondary.active.backgroundColor,
1591
+ disabledBg: button.variants.secondary.disabled.backgroundColor,
1592
+ disabledText: button.variants.secondary.disabled.textColor
1593
+ },
1594
+ naked: {
1595
+ bg: button.variants.naked.backgroundColor,
1596
+ text: button.variants.naked.textColor,
1597
+ hoverBg: button.variants.naked.hover.backgroundColor,
1598
+ activeBg: button.variants.naked.active.backgroundColor,
1599
+ disabledBg: button.variants.naked.disabled.backgroundColor,
1600
+ disabledText: button.variants.naked.disabled.textColor
1601
+ }
1602
+ };
1603
+ // JavaScript callers can pass any string, so an unknown variant falls back to primary, as before
1604
+ var colours = function colours(variant) {
1605
+ var _a;
1606
+ return (_a = variants[variant]) !== null && _a !== void 0 ? _a : variants.primary;
1607
+ };
1474
1608
  var IconButtonStyled = styled.button.withConfig({
1475
1609
  shouldForwardProp: function shouldForwardProp(prop) {
1476
1610
  return !prop.startsWith('$');
1477
1611
  },
1478
1612
  displayName: "IconButton__IconButtonStyled",
1479
1613
  componentId: "sc-k8b14t-0"
1480
- })(templateObject_1$z || (templateObject_1$z = __makeTemplateObject(["\n background-color: ", ";\n color: ", ";\n border: none;\n border-radius: ", ";\n transition: ", ";\n box-sizing: border-box;\n display: ", ";\n justify-content: ", ";\n align-items: ", ";\n height: max-content;\n cursor: pointer;\n position: relative;\n\n /* Size-specific dimensions from component tokens */\n min-width: ", ";\n min-height: ", ";\n padding: ", ";\n\n &:hover:not(:disabled) {\n background-color: ", ";\n }\n\n &:active:not(:disabled) {\n background-color: ", ";\n }\n\n &:focus {\n outline: ", ";\n outline-offset: ", ";\n }\n\n &:disabled {\n background-color: ", ";\n color: ", ";\n cursor: not-allowed;\n }\n\n /* High contrast mode support */\n @media (prefers-contrast: high) {\n border: ", " solid;\n }\n\n /* Reduced motion support */\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n"], ["\n background-color: ", ";\n color: ", ";\n border: none;\n border-radius: ", ";\n transition: ", ";\n box-sizing: border-box;\n display: ", ";\n justify-content: ", ";\n align-items: ", ";\n height: max-content;\n cursor: pointer;\n position: relative;\n\n /* Size-specific dimensions from component tokens */\n min-width: ", ";\n min-height: ", ";\n padding: ", ";\n\n &:hover:not(:disabled) {\n background-color: ", ";\n }\n\n &:active:not(:disabled) {\n background-color: ", ";\n }\n\n &:focus {\n outline: ", ";\n outline-offset: ", ";\n }\n\n &:disabled {\n background-color: ", ";\n color: ", ";\n cursor: not-allowed;\n }\n\n /* High contrast mode support */\n @media (prefers-contrast: high) {\n border: ", " solid;\n }\n\n /* Reduced motion support */\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n"])), function (_a) {
1614
+ })(templateObject_1$A || (templateObject_1$A = __makeTemplateObject(["\n background-color: ", ";\n color: ", ";\n border: none;\n border-radius: ", ";\n transition: ", ";\n box-sizing: border-box;\n display: flex;\n justify-content: center;\n align-items: center;\n height: max-content;\n cursor: pointer;\n position: relative;\n\n /* Size-specific dimensions from component tokens */\n min-width: ", ";\n min-height: ", ";\n padding: ", ";\n\n &:hover:not(:disabled) {\n background-color: ", ";\n }\n\n &:active:not(:disabled) {\n background-color: ", ";\n }\n\n &:focus {\n outline: ", ";\n outline-offset: ", ";\n }\n\n &:disabled {\n background-color: ", ";\n color: ", ";\n cursor: not-allowed;\n }\n"], ["\n background-color: ", ";\n color: ", ";\n border: none;\n border-radius: ", ";\n transition: ", ";\n box-sizing: border-box;\n display: flex;\n justify-content: center;\n align-items: center;\n height: max-content;\n cursor: pointer;\n position: relative;\n\n /* Size-specific dimensions from component tokens */\n min-width: ", ";\n min-height: ", ";\n padding: ", ";\n\n &:hover:not(:disabled) {\n background-color: ", ";\n }\n\n &:active:not(:disabled) {\n background-color: ", ";\n }\n\n &:focus {\n outline: ", ";\n outline-offset: ", ";\n }\n\n &:disabled {\n background-color: ", ";\n color: ", ";\n cursor: not-allowed;\n }\n"])), function (_a) {
1481
1615
  var $variant = _a.$variant;
1482
- switch ($variant) {
1483
- case 'primary':
1484
- return iconButton.primary.backgroundColor;
1485
- case 'secondary':
1486
- return iconButton.variants.secondary.backgroundColor;
1487
- case 'naked':
1488
- return iconButton.variants.naked.backgroundColor;
1489
- default:
1490
- return iconButton.primary.backgroundColor;
1491
- }
1616
+ return colours($variant).bg;
1492
1617
  }, function (_a) {
1493
1618
  var $variant = _a.$variant;
1494
- switch ($variant) {
1495
- case 'primary':
1496
- return button.primary.textColor;
1497
- case 'secondary':
1498
- return button.variants.secondary.textColor;
1499
- case 'naked':
1500
- return button.variants.naked.textColor;
1501
- default:
1502
- return button.primary.textColor;
1503
- }
1504
- }, iconButton.primary.borderRadius, motion$5.transition.normal, iconButton.primary.display, iconButton.primary.justifyContent, iconButton.primary.alignItems, function (_a) {
1619
+ return colours($variant).text;
1620
+ }, iconButton.primary.borderRadius, motion$5.hover, function (_a) {
1505
1621
  var $size = _a.$size;
1506
1622
  return iconButton.sizes[$size].minWidth;
1507
1623
  }, function (_a) {
@@ -1509,32 +1625,20 @@ var IconButtonStyled = styled.button.withConfig({
1509
1625
  return iconButton.sizes[$size].minHeight;
1510
1626
  }, function (_a) {
1511
1627
  var $size = _a.$size;
1512
- return iconButton.sizes[$size].padding;
1628
+ return padding[$size];
1513
1629
  }, function (_a) {
1514
1630
  var $variant = _a.$variant;
1515
- switch ($variant) {
1516
- case 'primary':
1517
- return iconButton.hover.backgroundColor;
1518
- case 'secondary':
1519
- return iconButton.variants.secondary.hover.backgroundColor;
1520
- case 'naked':
1521
- return iconButton.variants.naked.hover.backgroundColor;
1522
- default:
1523
- return iconButton.hover.backgroundColor;
1524
- }
1525
- }, iconButton.active.backgroundColor, iconButton.focus.outline, iconButton.focus.outlineOffset, iconButton.disabled.backgroundColor, function (_a) {
1631
+ return colours($variant).hoverBg;
1632
+ }, function (_a) {
1526
1633
  var $variant = _a.$variant;
1527
- switch ($variant) {
1528
- case 'primary':
1529
- return button.disabled.textColor;
1530
- case 'secondary':
1531
- return button.variants.secondary.disabled.textColor;
1532
- case 'naked':
1533
- return button.variants.naked.disabled.textColor;
1534
- default:
1535
- return button.disabled.textColor;
1536
- }
1537
- }, tokensJson.semantic.border.width.thin);
1634
+ return colours($variant).activeBg;
1635
+ }, iconButton.focus.outline, border$8.focusOffset, function (_a) {
1636
+ var $variant = _a.$variant;
1637
+ return colours($variant).disabledBg;
1638
+ }, function (_a) {
1639
+ var $variant = _a.$variant;
1640
+ return colours($variant).disabledText;
1641
+ });
1538
1642
  var IconButton = function IconButton(_a) {
1539
1643
  var variant = _a.variant,
1540
1644
  _b = _a.size,
@@ -1585,7 +1689,7 @@ var IconButton = function IconButton(_a) {
1585
1689
  })
1586
1690
  }));
1587
1691
  };
1588
- var templateObject_1$z;
1692
+ var templateObject_1$A;
1589
1693
 
1590
1694
  var StyledWrapper = styled.span.withConfig({
1591
1695
  shouldForwardProp: function shouldForwardProp(prop) {
@@ -1593,7 +1697,7 @@ var StyledWrapper = styled.span.withConfig({
1593
1697
  },
1594
1698
  displayName: "MoneyDisplay__StyledWrapper",
1595
1699
  componentId: "sc-1mddej3-0"
1596
- })(templateObject_1$y || (templateObject_1$y = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n text-align: ", ";\n font-weight: ", ";\n"], ["\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n text-align: ", ";\n font-weight: ", ";\n"
1700
+ })(templateObject_1$z || (templateObject_1$z = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n text-align: ", ";\n font-weight: ", ";\n"], ["\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n text-align: ", ";\n font-weight: ", ";\n"
1597
1701
  // Map size to Typography variant
1598
1702
  ])), function (_a) {
1599
1703
  var $align = _a.$align;
@@ -1696,17 +1800,17 @@ var MoneyDisplay = function MoneyDisplay(_a) {
1696
1800
  })]
1697
1801
  });
1698
1802
  };
1699
- var templateObject_1$y;
1803
+ var templateObject_1$z;
1700
1804
 
1701
1805
  // Destructure tokens
1702
- var semantic$c = tokensJson.semantic;
1703
- var _a$8 = __assign(__assign({}, semantic$c), {
1806
+ var semantic$e = tokensJson.semantic;
1807
+ var _a$7 = __assign(__assign({}, semantic$e), {
1704
1808
  component: tokensJson.component
1705
1809
  }),
1706
- color$5 = _a$8.color,
1707
- border$7 = _a$8.border,
1708
- motion$4 = _a$8.motion,
1709
- component$2 = _a$8.component;
1810
+ color$6 = _a$7.color,
1811
+ border$7 = _a$7.border,
1812
+ motion$4 = _a$7.motion,
1813
+ component$2 = _a$7.component;
1710
1814
  var radius$2 = border$7.radius;
1711
1815
  var ProgressBarContainer = styled.div.withConfig({
1712
1816
  shouldForwardProp: function shouldForwardProp(prop) {
@@ -1714,10 +1818,10 @@ var ProgressBarContainer = styled.div.withConfig({
1714
1818
  },
1715
1819
  displayName: "ProgressBar__ProgressBarContainer",
1716
1820
  componentId: "sc-1nco33q-0"
1717
- })(templateObject_3$n || (templateObject_3$n = __makeTemplateObject(["\n background-color: ", ";\n border-radius: ", ";\n overflow: hidden;\n\n ", "\n\n ", "\n"], ["\n background-color: ", ";\n border-radius: ", ";\n overflow: hidden;\n\n ", "\n\n ", "\n"])), color$5.background.disabled, radius$2.xs, function (props) {
1718
- return props.$variant === 'horizontal' && css(templateObject_1$x || (templateObject_1$x = __makeTemplateObject(["\n width: 100%;\n height: ", ";\n "], ["\n width: 100%;\n height: ", ";\n "])), props.$height ? component$2.progressBar.sizes[props.$height].height : component$2.progressBar.sizes.md.height);
1821
+ })(templateObject_3$o || (templateObject_3$o = __makeTemplateObject(["\n background-color: ", ";\n border-radius: ", ";\n overflow: hidden;\n\n ", "\n\n ", "\n"], ["\n background-color: ", ";\n border-radius: ", ";\n overflow: hidden;\n\n ", "\n\n ", "\n"])), color$6.background.disabled, radius$2.xs, function (props) {
1822
+ return props.$variant === 'horizontal' && css(templateObject_1$y || (templateObject_1$y = __makeTemplateObject(["\n width: 100%;\n height: ", ";\n "], ["\n width: 100%;\n height: ", ";\n "])), props.$height ? component$2.progressBar.sizes[props.$height].height : component$2.progressBar.sizes.md.height);
1719
1823
  }, function (props) {
1720
- return props.$variant === 'vertical' && css(templateObject_2$p || (templateObject_2$p = __makeTemplateObject(["\n width: ", ";\n height: 100%;\n "], ["\n width: ", ";\n height: 100%;\n "])), props.$width ? component$2.progressBar.sizes[props.$width].height : component$2.progressBar.sizes.md.height);
1824
+ return props.$variant === 'vertical' && css(templateObject_2$q || (templateObject_2$q = __makeTemplateObject(["\n width: ", ";\n height: 100%;\n "], ["\n width: ", ";\n height: 100%;\n "])), props.$width ? component$2.progressBar.sizes[props.$width].height : component$2.progressBar.sizes.md.height);
1721
1825
  });
1722
1826
  var ProgressBarFill = styled.div.withConfig({
1723
1827
  shouldForwardProp: function shouldForwardProp(prop) {
@@ -1729,19 +1833,19 @@ var ProgressBarFill = styled.div.withConfig({
1729
1833
  var backgroundColor;
1730
1834
  switch (props.$color) {
1731
1835
  case 'success':
1732
- backgroundColor = color$5.background.success;
1836
+ backgroundColor = color$6.background.success;
1733
1837
  break;
1734
1838
  case 'error':
1735
- backgroundColor = color$5.background.error;
1839
+ backgroundColor = color$6.background.error;
1736
1840
  break;
1737
1841
  case 'default':
1738
1842
  default:
1739
- backgroundColor = color$5.background.interactive;
1843
+ backgroundColor = color$6.background.interactive;
1740
1844
  break;
1741
1845
  }
1742
- return css(templateObject_4$j || (templateObject_4$j = __makeTemplateObject(["background-color: ", ";"], ["background-color: ", ";"])), backgroundColor);
1846
+ return css(templateObject_4$k || (templateObject_4$k = __makeTemplateObject(["background-color: ", ";"], ["background-color: ", ";"])), backgroundColor);
1743
1847
  }, function (props) {
1744
- return props.$variant === 'horizontal' && css(templateObject_5$f || (templateObject_5$f = __makeTemplateObject(["\n width: ", "%;\n "], ["\n width: ", "%;\n "])), Math.min(100, Math.max(0, props.$value)));
1848
+ return props.$variant === 'horizontal' && css(templateObject_5$g || (templateObject_5$g = __makeTemplateObject(["\n width: ", "%;\n "], ["\n width: ", "%;\n "])), Math.min(100, Math.max(0, props.$value)));
1745
1849
  }, function (props) {
1746
1850
  return props.$variant === 'vertical' && css(templateObject_6$c || (templateObject_6$c = __makeTemplateObject(["\n width: 100%;\n height: ", "%;\n "], ["\n width: 100%;\n height: ", "%;\n "])), Math.min(100, Math.max(0, props.$value)));
1747
1851
  });
@@ -1753,13 +1857,20 @@ var ProgressBar = function ProgressBar(_a) {
1753
1857
  color = _c === void 0 ? 'default' : _c,
1754
1858
  height = _a.height,
1755
1859
  width = _a.width,
1860
+ ariaLabel = _a["aria-label"],
1861
+ ariaLabelledBy = _a["aria-labelledby"],
1756
1862
  dataTestId = _a["data-testid"];
1863
+ // Blank values are no name at all, so they fall back like missing ones
1864
+ var label = (ariaLabel === null || ariaLabel === void 0 ? void 0 : ariaLabel.trim()) ? ariaLabel : undefined;
1865
+ var labelledBy = (ariaLabelledBy === null || ariaLabelledBy === void 0 ? void 0 : ariaLabelledBy.trim()) ? ariaLabelledBy : undefined;
1757
1866
  return jsx(ProgressBarContainer, {
1758
1867
  "$variant": variant,
1759
1868
  "$height": height,
1760
1869
  "$width": width,
1761
1870
  "data-testid": dataTestId,
1762
1871
  role: "progressbar",
1872
+ "aria-label": label !== null && label !== void 0 ? label : labelledBy ? undefined : 'Progress',
1873
+ "aria-labelledby": labelledBy,
1763
1874
  "aria-valuenow": Math.min(100, Math.max(0, value)),
1764
1875
  "aria-valuemin": 0,
1765
1876
  "aria-valuemax": 100,
@@ -1770,10 +1881,11 @@ var ProgressBar = function ProgressBar(_a) {
1770
1881
  })
1771
1882
  });
1772
1883
  };
1773
- var templateObject_1$x, templateObject_2$p, templateObject_3$n, templateObject_4$j, templateObject_5$f, templateObject_6$c, templateObject_7$a;
1884
+ var templateObject_1$y, templateObject_2$q, templateObject_3$o, templateObject_4$k, templateObject_5$g, templateObject_6$c, templateObject_7$a;
1774
1885
 
1775
1886
  // Destructure tokens for cleaner access
1776
1887
  var separatorTokens = tokensJson.component.separator;
1888
+ // Margins come from the semantic separator spacing: no component spacing tokens (decision 0022)
1777
1889
  var separatorSpacing = tokensJson.semantic.spacing.separator;
1778
1890
  var StyledDivider = styled.div.withConfig({
1779
1891
  shouldForwardProp: function shouldForwardProp(prop) {
@@ -1781,7 +1893,7 @@ var StyledDivider = styled.div.withConfig({
1781
1893
  },
1782
1894
  displayName: "Divider__StyledDivider",
1783
1895
  componentId: "sc-1l0c8ja-0"
1784
- })(templateObject_1$w || (templateObject_1$w = __makeTemplateObject(["\n border: none;\n \n /* Apply orientation */\n ", "\n \n /* Apply variant styles */\n ", "\n \n /* Apply size styles (spacing) */\n ", "\n"], ["\n border: none;\n \n /* Apply orientation */\n ", "\n \n /* Apply variant styles */\n ", "\n \n /* Apply size styles (spacing) */\n ", "\n"
1896
+ })(templateObject_1$x || (templateObject_1$x = __makeTemplateObject(["\n border: none;\n \n /* Apply orientation */\n ", "\n \n /* Apply variant styles */\n ", "\n \n /* Apply size styles (spacing) */\n ", "\n"], ["\n border: none;\n \n /* Apply orientation */\n ", "\n \n /* Apply variant styles */\n ", "\n \n /* Apply size styles (spacing) */\n ", "\n"
1785
1897
  /**
1786
1898
  * Divider is an atomic component that provides visual separation between content sections.
1787
1899
  *
@@ -1830,7 +1942,7 @@ var StyledDivider = styled.div.withConfig({
1830
1942
  $orientation = _d === void 0 ? 'horizontal' : _d;
1831
1943
  if ($variant === 'minimal' && $orientation === 'horizontal') {
1832
1944
  // Minimal variant always uses its predefined spacing for horizontal
1833
- return "margin: ".concat(separatorTokens.variants.minimal.margin, ";");
1945
+ return "margin: ".concat(separatorSpacing.md, " 0;");
1834
1946
  }
1835
1947
  if ($orientation === 'vertical') {
1836
1948
  // Vertical orientation uses horizontal margins (left/right)
@@ -1849,14 +1961,14 @@ var StyledDivider = styled.div.withConfig({
1849
1961
  // Horizontal orientation uses vertical margins (top/bottom)
1850
1962
  switch ($size) {
1851
1963
  case 'small':
1852
- return "margin: ".concat(separatorTokens.sizes.small.margin, ";");
1964
+ return "margin: ".concat(separatorSpacing.sm, " 0;");
1853
1965
  case 'medium':
1854
- return "margin: ".concat(separatorTokens.sizes.medium.margin, ";");
1966
+ return "margin: ".concat(separatorSpacing.md, " 0;");
1855
1967
  case 'xlarge':
1856
- return "margin: ".concat(separatorTokens.sizes.xlarge.margin, ";");
1968
+ return "margin: ".concat(separatorSpacing.xl, " 0;");
1857
1969
  case 'large':
1858
1970
  default:
1859
- return "margin: ".concat(separatorTokens.sizes.large.margin, ";");
1971
+ return "margin: ".concat(separatorSpacing.lg, " 0;");
1860
1972
  }
1861
1973
  });
1862
1974
  /**
@@ -1894,7 +2006,7 @@ var Divider = function Divider(_a) {
1894
2006
  "aria-orientation": orientation
1895
2007
  });
1896
2008
  };
1897
- var templateObject_1$w;
2009
+ var templateObject_1$x;
1898
2010
 
1899
2011
  var StyledStack = styled.div.withConfig({
1900
2012
  shouldForwardProp: function shouldForwardProp(prop) {
@@ -1902,7 +2014,7 @@ var StyledStack = styled.div.withConfig({
1902
2014
  },
1903
2015
  displayName: "Stack__StyledStack",
1904
2016
  componentId: "sc-1ehkxgy-0"
1905
- })(templateObject_1$v || (templateObject_1$v = __makeTemplateObject(["\n display: flex;\n flex-direction: var(--stack-direction);\n align-items: var(--stack-align-items);\n justify-content: var(--stack-justify-content);\n gap: var(--stack-gap);\n flex-wrap: var(--stack-wrap);\n"], ["\n display: flex;\n flex-direction: var(--stack-direction);\n align-items: var(--stack-align-items);\n justify-content: var(--stack-justify-content);\n gap: var(--stack-gap);\n flex-wrap: var(--stack-wrap);\n"
2017
+ })(templateObject_1$w || (templateObject_1$w = __makeTemplateObject(["\n display: flex;\n flex-direction: var(--stack-direction);\n align-items: var(--stack-align-items);\n justify-content: var(--stack-justify-content);\n gap: var(--stack-gap);\n flex-wrap: var(--stack-wrap);\n"], ["\n display: flex;\n flex-direction: var(--stack-direction);\n align-items: var(--stack-align-items);\n justify-content: var(--stack-justify-content);\n gap: var(--stack-gap);\n flex-wrap: var(--stack-wrap);\n"
1906
2018
  // Helper function to convert gap prop to CSS value
1907
2019
  ])));
1908
2020
  // Helper function to convert gap prop to CSS value
@@ -1941,18 +2053,19 @@ var Stack = function Stack(_a) {
1941
2053
  children: children
1942
2054
  });
1943
2055
  };
1944
- var templateObject_1$v;
2056
+ var templateObject_1$w;
1945
2057
 
1946
2058
  // Destructure tokens for cleaner access
1947
2059
  var statusColors = tokensJson.semantic.color.status;
1948
- var spacing$5 = tokensJson.semantic.spacing.layout;
2060
+ var spacing$6 = tokensJson.semantic.spacing.layout;
1949
2061
  var radius$1 = tokensJson.semantic.border.radius;
1950
- var _a$7 = tokensJson.semantic.motion,
1951
- transition = _a$7.transition,
1952
- duration$3 = _a$7.duration,
1953
- easing$3 = _a$7.easing;
2062
+ var _a$6 = tokensJson.semantic.motion,
2063
+ transition = _a$6.transition,
2064
+ duration$3 = _a$6.duration,
2065
+ easing$3 = _a$6.easing;
2066
+ var labelHeight = tokensJson.semantic.size.label;
1954
2067
  var label$1 = tokensJson.component.badge.label;
1955
- var scaleIn$1 = keyframes(templateObject_1$u || (templateObject_1$u = __makeTemplateObject(["\n from {\n opacity: 0;\n transform: scale(0.8);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n"], ["\n from {\n opacity: 0;\n transform: scale(0.8);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n"])));
2068
+ var scaleIn$1 = keyframes(templateObject_1$v || (templateObject_1$v = __makeTemplateObject(["\n from {\n opacity: 0;\n transform: scale(0.8);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n"], ["\n from {\n opacity: 0;\n transform: scale(0.8);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n"])));
1956
2069
  var getStatusConfig = function getStatusConfig(status) {
1957
2070
  var configs = {
1958
2071
  pending: {
@@ -1997,31 +2110,31 @@ var getStatusConfig = function getStatusConfig(status) {
1997
2110
  return configs[status];
1998
2111
  };
1999
2112
  // Size configuration
2000
- var sizeConfig = {
2113
+ var sizeConfig$1 = {
2001
2114
  small: {
2002
- height: '20px',
2003
- padding: "".concat(spacing$5.xs, " ").concat(spacing$5.sm),
2115
+ height: labelHeight.small,
2116
+ padding: "".concat(spacing$6.xs, " ").concat(spacing$6.sm),
2004
2117
  font: label$1.typography.small,
2005
- gap: spacing$5.xs,
2118
+ gap: spacing$6.xs,
2006
2119
  iconSize: 'xs'
2007
2120
  },
2008
2121
  medium: {
2009
- height: '24px',
2010
- padding: "".concat(spacing$5.xs, " ").concat(spacing$5.sm),
2122
+ height: labelHeight.medium,
2123
+ padding: "".concat(spacing$6.xs, " ").concat(spacing$6.sm),
2011
2124
  font: label$1.typography.medium,
2012
- gap: spacing$5.xs,
2125
+ gap: spacing$6.xs,
2013
2126
  iconSize: 'sm'
2014
2127
  }
2015
2128
  };
2016
- var StyledStatusBadge = styled.span.withConfig({
2129
+ var StyledStatusLabel = styled.span.withConfig({
2017
2130
  shouldForwardProp: function shouldForwardProp(prop) {
2018
2131
  return !prop.startsWith('$');
2019
2132
  },
2020
- displayName: "StatusBadge__StyledStatusBadge",
2021
- componentId: "sc-1paksgb-0"
2022
- })(templateObject_2$o || (templateObject_2$o = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: ", ";\n white-space: nowrap;\n user-select: none;\n animation: ", " ", " ", ";\n transition: ", ";\n\n /* transition.fast covers all properties, so a size change would animate the badge's dimensions */\n ", " {\n animation: none;\n transition: none;\n }\n \n /* Size styles */\n ", "\n \n /* Status color styles */\n ", "\n"], ["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: ", ";\n white-space: nowrap;\n user-select: none;\n animation: ", " ", " ", ";\n transition: ", ";\n\n /* transition.fast covers all properties, so a size change would animate the badge's dimensions */\n ", " {\n animation: none;\n transition: none;\n }\n \n /* Size styles */\n ", "\n \n /* Status color styles */\n ", "\n"])), radius$1.circle, scaleIn$1, duration$3.normal, easing$3.easeOut, transition.fast, reducedMotion, function (_a) {
2133
+ displayName: "StatusLabelBase__StyledStatusLabel",
2134
+ componentId: "sc-1ye9xz5-0"
2135
+ })(templateObject_2$p || (templateObject_2$p = __makeTemplateObject(["\n box-sizing: border-box; /* the height includes padding, without relying on a global reset */\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: ", ";\n white-space: nowrap;\n user-select: none;\n animation: ", " ", " ", ";\n transition: ", ";\n\n /* transition.fast covers all properties, so a size change would animate the label's dimensions */\n ", " {\n animation: none;\n transition: none;\n }\n \n /* Size styles */\n ", "\n \n /* Status color styles */\n ", "\n"], ["\n box-sizing: border-box; /* the height includes padding, without relying on a global reset */\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: ", ";\n white-space: nowrap;\n user-select: none;\n animation: ", " ", " ", ";\n transition: ", ";\n\n /* transition.fast covers all properties, so a size change would animate the label's dimensions */\n ", " {\n animation: none;\n transition: none;\n }\n \n /* Size styles */\n ", "\n \n /* Status color styles */\n ", "\n"])), radius$1.circle, scaleIn$1, duration$3.normal, easing$3.easeOut, transition.fast, reducedMotion, function (_a) {
2023
2136
  var $size = _a.$size;
2024
- var size = sizeConfig[$size];
2137
+ var size = sizeConfig$1[$size];
2025
2138
  return "\n height: ".concat(size.height, ";\n padding: ").concat(size.padding, ";\n font: ").concat(size.font, ";\n font-weight: ").concat(label$1.fontWeight, ";\n gap: ").concat(size.gap, ";\n ");
2026
2139
  }, function (_a) {
2027
2140
  var $status = _a.$status;
@@ -2029,56 +2142,29 @@ var StyledStatusBadge = styled.span.withConfig({
2029
2142
  return "\n background-color: ".concat(config.bgColor, ";\n color: ").concat(config.color, ";\n ");
2030
2143
  });
2031
2144
  var ScreenReaderOnly = styled.span.withConfig({
2032
- displayName: "StatusBadge__ScreenReaderOnly",
2033
- componentId: "sc-1paksgb-1"
2034
- })(templateObject_3$m || (templateObject_3$m = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"
2145
+ displayName: "StatusLabelBase__ScreenReaderOnly",
2146
+ componentId: "sc-1ye9xz5-1"
2147
+ })(templateObject_3$n || (templateObject_3$n = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"
2148
+ // The visible content, hidden from assistive technology when an aria-label replaces it.
2149
+ // display: contents keeps the root's flex layout and gap.
2150
+ ])), visuallyHidden);
2151
+ // The visible content, hidden from assistive technology when an aria-label replaces it.
2152
+ // display: contents keeps the root's flex layout and gap.
2153
+ var VisibleContent = styled.span.withConfig({
2154
+ displayName: "StatusLabelBase__VisibleContent",
2155
+ componentId: "sc-1ye9xz5-2"
2156
+ })(templateObject_4$j || (templateObject_4$j = __makeTemplateObject(["\n display: contents;\n"], ["\n display: contents;\n"
2035
2157
  /**
2036
- * StatusBadge component for displaying transaction or task status
2037
- *
2038
- * Displays status with appropriate color, icon, and supports live updates for screen readers.
2039
- * Maps to 6 common status types with semantic color tokens.
2040
- *
2041
- * @example
2042
- * ```tsx
2043
- * <StatusBadge status="completed" />
2044
- *
2045
- * <StatusBadge
2046
- * status="pending"
2047
- * label="Awaiting approval"
2048
- * size="small"
2049
- * />
2050
- *
2051
- * <StatusBadge
2052
- * status="failed"
2053
- * showIcon={false}
2054
- * liveRegion={true}
2055
- * />
2056
- * ```
2057
- */])), visuallyHidden);
2158
+ * Shared implementation of StatusLabel and the deprecated StatusBadge. Internal: not exported
2159
+ * from the package. `showIcon` exists only for StatusBadge; StatusLabel always shows the icon
2160
+ * (decision 0018).
2161
+ */])));
2058
2162
  /**
2059
- * StatusBadge component for displaying transaction or task status
2060
- *
2061
- * Displays status with appropriate color, icon, and supports live updates for screen readers.
2062
- * Maps to 6 common status types with semantic color tokens.
2063
- *
2064
- * @example
2065
- * ```tsx
2066
- * <StatusBadge status="completed" />
2067
- *
2068
- * <StatusBadge
2069
- * status="pending"
2070
- * label="Awaiting approval"
2071
- * size="small"
2072
- * />
2073
- *
2074
- * <StatusBadge
2075
- * status="failed"
2076
- * showIcon={false}
2077
- * liveRegion={true}
2078
- * />
2079
- * ```
2163
+ * Shared implementation of StatusLabel and the deprecated StatusBadge. Internal: not exported
2164
+ * from the package. `showIcon` exists only for StatusBadge; StatusLabel always shows the icon
2165
+ * (decision 0018).
2080
2166
  */
2081
- var StatusBadge = function StatusBadge(_a) {
2167
+ var StatusLabelBase = function StatusLabelBase(_a) {
2082
2168
  var status = _a.status,
2083
2169
  label = _a.label,
2084
2170
  _b = _a.size,
@@ -2090,36 +2176,74 @@ var StatusBadge = function StatusBadge(_a) {
2090
2176
  dataTestId = _a["data-testid"],
2091
2177
  ariaLabel = _a["aria-label"];
2092
2178
  var statusConfig = getStatusConfig(status);
2093
- var sizeStyles = sizeConfig[size];
2179
+ var sizeStyles = sizeConfig$1[size];
2094
2180
  var displayLabel = label || statusConfig.label;
2095
- return jsxs(StyledStatusBadge, {
2181
+ // A blank aria-label is no label at all, so it falls back like a missing one
2182
+ var accessibleLabel = (ariaLabel === null || ariaLabel === void 0 ? void 0 : ariaLabel.trim()) ? ariaLabel : undefined;
2183
+ return jsxs(StyledStatusLabel, {
2096
2184
  "$status": status,
2097
2185
  "$size": size,
2098
2186
  role: "status",
2099
- "aria-label": ariaLabel || "Status: ".concat(displayLabel),
2100
- "aria-live": liveRegion ? 'polite' : undefined,
2187
+ "aria-label": accessibleLabel || "Status: ".concat(displayLabel),
2188
+ "aria-live": liveRegion ? 'polite' : 'off',
2101
2189
  "aria-atomic": liveRegion ? 'true' : undefined,
2102
2190
  "data-testid": dataTestId,
2103
- children: [showIcon && jsx(Icon, {
2104
- name: statusConfig.icon,
2105
- size: sizeStyles.iconSize,
2106
- iconColor: "inherit",
2107
- "aria-hidden": "true"
2108
- }), displayLabel, jsxs(ScreenReaderOnly, {
2109
- children: [status, " status"]
2191
+ children: [jsxs(VisibleContent, {
2192
+ "aria-hidden": accessibleLabel ? 'true' : undefined,
2193
+ children: [showIcon && jsx(Icon, {
2194
+ name: statusConfig.icon,
2195
+ size: sizeStyles.iconSize,
2196
+ iconColor: "inherit",
2197
+ "aria-hidden": "true"
2198
+ }), displayLabel, jsxs(ScreenReaderOnly, {
2199
+ children: [status, " status"]
2200
+ })]
2201
+ }), accessibleLabel && jsx(ScreenReaderOnly, {
2202
+ children: accessibleLabel
2110
2203
  })]
2111
2204
  });
2112
2205
  };
2206
+ var templateObject_1$v, templateObject_2$p, templateObject_3$n, templateObject_4$j;
2207
+
2208
+ /**
2209
+ * StatusBadge displays a transaction or task status.
2210
+ *
2211
+ * @deprecated Renamed to `StatusLabel` (same `status`, `size`, `label`, `liveRegion`), which always
2212
+ * shows the icon. StatusBadge is removed in 3.0 (decision 0018).
2213
+ */
2214
+ var StatusBadge = function StatusBadge(props) {
2215
+ return jsx(StatusLabelBase, __assign({}, props));
2216
+ };
2113
2217
  StatusBadge.displayName = 'StatusBadge';
2114
- var templateObject_1$u, templateObject_2$o, templateObject_3$m;
2115
2218
 
2116
- var semantic$b = tokensJson.semantic;
2117
- var color$4 = semantic$b.color,
2118
- spacing$4 = semantic$b.spacing,
2119
- border$6 = semantic$b.border,
2120
- size = semantic$b.size;
2219
+ /**
2220
+ * StatusLabel conveys the status of something, such as a transaction or task (decision 0018).
2221
+ *
2222
+ * Uses only the status colour tokens and always shows an icon with its text, so status is never
2223
+ * conveyed by colour alone. Not interactive. Announces changes politely to screen readers.
2224
+ *
2225
+ * @example
2226
+ * ```tsx
2227
+ * <StatusLabel status="completed" />
2228
+ *
2229
+ * <StatusLabel status="pending" label="Awaiting approval" size="small" />
2230
+ * ```
2231
+ */
2232
+ // showIcon comes last so no caller (for example plain JavaScript) can hide the icon
2233
+ var StatusLabel = function StatusLabel(props) {
2234
+ return jsx(StatusLabelBase, __assign({}, props, {
2235
+ showIcon: true
2236
+ }));
2237
+ };
2238
+ StatusLabel.displayName = 'StatusLabel';
2239
+
2240
+ var semantic$d = tokensJson.semantic;
2241
+ var color$5 = semantic$d.color,
2242
+ spacing$5 = semantic$d.spacing,
2243
+ border$6 = semantic$d.border,
2244
+ size$1 = semantic$d.size;
2121
2245
  var label = tokensJson.component.badge.label;
2122
- var layout$3 = spacing$4.layout;
2246
+ var layout$3 = spacing$5.layout;
2123
2247
  var radius = border$6.radius;
2124
2248
  var StyledTag = styled.span.withConfig({
2125
2249
  shouldForwardProp: function shouldForwardProp(prop) {
@@ -2127,43 +2251,49 @@ var StyledTag = styled.span.withConfig({
2127
2251
  },
2128
2252
  displayName: "Tag__StyledTag",
2129
2253
  componentId: "sc-lzfmti-0"
2130
- })(templateObject_1$t || (templateObject_1$t = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: ", ";\n user-select: none;\n white-space: nowrap;\n max-height: ", ";\n \n /* Size - fixed to small */\n padding: ", " ", ";\n font: ", ";\n font-weight: ", ";\n \n /* Variant styles */\n background-color: ", ";\n \n color: ", ";\n \n border: ", ";\n"], ["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: ", ";\n user-select: none;\n white-space: nowrap;\n max-height: ", ";\n \n /* Size - fixed to small */\n padding: ", " ", ";\n font: ", ";\n font-weight: ", ";\n \n /* Variant styles */\n background-color: ", ";\n \n color: ", ";\n \n border: ", ";\n"
2254
+ })(templateObject_1$u || (templateObject_1$u = __makeTemplateObject(["\n box-sizing: border-box; /* the height includes padding and border, without relying on a global reset */\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: ", ";\n user-select: none;\n white-space: nowrap;\n\n /* Size (decision 0018): small has no vertical padding so the text line fits inside 20px */\n height: ", ";\n padding: ", ";\n font: ", ";\n font-weight: ", ";\n \n /* Variant styles */\n background-color: ", ";\n \n color: ", ";\n \n border: ", ";\n"], ["\n box-sizing: border-box; /* the height includes padding and border, without relying on a global reset */\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: ", ";\n user-select: none;\n white-space: nowrap;\n\n /* Size (decision 0018): small has no vertical padding so the text line fits inside 20px */\n height: ", ";\n padding: ", ";\n font: ", ";\n font-weight: ", ";\n \n /* Variant styles */\n background-color: ", ";\n \n color: ", ";\n \n border: ", ";\n"
2131
2255
  /**
2132
2256
  * Tag component for categorizing and labeling content
2133
2257
  *
2134
2258
  * A static, non-interactive label used to categorize elements or objects in the UI.
2135
2259
  * Tags help users quickly identify and understand content classification.
2136
- */])), radius.sm, size.icon.lg || '2rem', layout$3.xs, layout$3.sm, label.typography.small, label.fontWeight, function (_a) {
2260
+ */])), radius.sm, function (_a) {
2261
+ var $size = _a.$size;
2262
+ return size$1.label[$size];
2263
+ }, function (_a) {
2264
+ var $size = _a.$size;
2265
+ return $size === 'small' ? "0 ".concat(layout$3.sm) : "".concat(layout$3.xs, " ").concat(layout$3.sm);
2266
+ }, label.typography.small, label.fontWeight, function (_a) {
2137
2267
  var $variant = _a.$variant;
2138
2268
  switch ($variant) {
2139
2269
  case 'interactive':
2140
- return color$4.background['interactive-subtle'];
2270
+ return color$5.background['interactive-subtle'];
2141
2271
  case 'success':
2142
- return color$4.background['success-subtle'];
2272
+ return color$5.background['success-subtle'];
2143
2273
  case 'warning':
2144
- return color$4.background['warning-subtle'];
2274
+ return color$5.background['warning-subtle'];
2145
2275
  case 'error':
2146
- return color$4.background['error-subtle'];
2276
+ return color$5.background['error-subtle'];
2147
2277
  case 'emphasis':
2148
- return color$4.background.emphasis;
2278
+ return color$5.background.emphasis;
2149
2279
  default:
2150
- return color$4.background.surface;
2280
+ return color$5.background.surface;
2151
2281
  }
2152
2282
  }, function (_a) {
2153
2283
  var $variant = _a.$variant;
2154
2284
  switch ($variant) {
2155
2285
  case 'interactive':
2156
- return color$4.text.interactive;
2286
+ return color$5.text.interactive;
2157
2287
  case 'success':
2158
- return color$4.text.success;
2288
+ return color$5.text.success;
2159
2289
  case 'warning':
2160
- return color$4.text.warning;
2290
+ return color$5.text.warning;
2161
2291
  case 'error':
2162
- return color$4.text.error;
2292
+ return color$5.text.error;
2163
2293
  case 'emphasis':
2164
- return color$4.text.inverse;
2294
+ return color$5.text.inverse;
2165
2295
  default:
2166
- return color$4.text["default"];
2296
+ return color$5.text["default"];
2167
2297
  }
2168
2298
  }, function (_a) {
2169
2299
  var $variant = _a.$variant,
@@ -2171,17 +2301,17 @@ var StyledTag = styled.span.withConfig({
2171
2301
  if (!$border) return 'none';
2172
2302
  switch ($variant) {
2173
2303
  case 'interactive':
2174
- return "".concat(semantic$b.border.width.thin, " solid ").concat(color$4.border.interactive);
2304
+ return "".concat(semantic$d.border.width.thin, " solid ").concat(color$5.border.interactive);
2175
2305
  case 'success':
2176
- return "".concat(semantic$b.border.width.thin, " solid ").concat(color$4.border.success);
2306
+ return "".concat(semantic$d.border.width.thin, " solid ").concat(color$5.border.success);
2177
2307
  case 'warning':
2178
- return "".concat(semantic$b.border.width.thin, " solid ").concat(color$4.border.warning);
2308
+ return "".concat(semantic$d.border.width.thin, " solid ").concat(color$5.border.warning);
2179
2309
  case 'error':
2180
- return "".concat(semantic$b.border.width.thin, " solid ").concat(color$4.border.error);
2310
+ return "".concat(semantic$d.border.width.thin, " solid ").concat(color$5.border.error);
2181
2311
  case 'emphasis':
2182
- return "".concat(semantic$b.border.width.thin, " solid ").concat(color$4.background.emphasis);
2312
+ return "".concat(semantic$d.border.width.thin, " solid ").concat(color$5.background.emphasis);
2183
2313
  default:
2184
- return "".concat(semantic$b.border.width.thin, " solid ").concat(color$4.border["default"]);
2314
+ return "".concat(semantic$d.border.width.thin, " solid ").concat(color$5.border["default"]);
2185
2315
  }
2186
2316
  });
2187
2317
  /**
@@ -2196,11 +2326,14 @@ var Tag = function Tag(_a) {
2196
2326
  variant = _b === void 0 ? 'default' : _b,
2197
2327
  _c = _a.border,
2198
2328
  border = _c === void 0 ? true : _c,
2329
+ _d = _a.size,
2330
+ tagSize = _d === void 0 ? 'medium' : _d,
2199
2331
  dataTestId = _a["data-testid"],
2200
- props = __rest(_a, ["children", "variant", "border", 'data-testid']);
2332
+ props = __rest(_a, ["children", "variant", "border", "size", 'data-testid']);
2201
2333
  return jsx(StyledTag, __assign({
2202
2334
  "$variant": variant,
2203
2335
  "$border": border,
2336
+ "$size": tagSize,
2204
2337
  "data-testid": dataTestId,
2205
2338
  "data-variant": variant,
2206
2339
  "data-border": border,
@@ -2210,24 +2343,24 @@ var Tag = function Tag(_a) {
2210
2343
  children: children
2211
2344
  }));
2212
2345
  };
2213
- var templateObject_1$t;
2346
+ var templateObject_1$u;
2214
2347
 
2215
2348
  // Destructure tokens for cleaner access
2216
- var semantic$a = tokensJson.semantic;
2217
- var spacing$3 = semantic$a.spacing;
2218
- var layout$2 = spacing$3.layout;
2349
+ var semantic$c = tokensJson.semantic;
2350
+ var spacing$4 = semantic$c.spacing;
2351
+ var layout$2 = spacing$4.layout;
2219
2352
  var StyledBalanceSection = styled.div.withConfig({
2220
2353
  displayName: "AccountCard__StyledBalanceSection",
2221
2354
  componentId: "sc-1erp7zn-0"
2222
- })(templateObject_1$s || (templateObject_1$s = __makeTemplateObject(["\n margin-bottom: ", ";\n"], ["\n margin-bottom: ", ";\n"])), layout$2.lg);
2355
+ })(templateObject_1$t || (templateObject_1$t = __makeTemplateObject(["\n margin-bottom: ", ";\n"], ["\n margin-bottom: ", ";\n"])), layout$2.lg);
2223
2356
  var StyledTrendSection = styled.div.withConfig({
2224
2357
  displayName: "AccountCard__StyledTrendSection",
2225
2358
  componentId: "sc-1erp7zn-1"
2226
- })(templateObject_2$n || (templateObject_2$n = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: ", ";\n"], ["\n display: flex;\n align-items: center;\n gap: ", ";\n"])), layout$2.xs);
2359
+ })(templateObject_2$o || (templateObject_2$o = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: ", ";\n"], ["\n display: flex;\n align-items: center;\n gap: ", ";\n"])), layout$2.xs);
2227
2360
  styled.div.withConfig({
2228
2361
  displayName: "AccountCard__StyledActions",
2229
2362
  componentId: "sc-1erp7zn-2"
2230
- })(templateObject_3$l || (templateObject_3$l = __makeTemplateObject(["\n display: flex;\n gap: ", ";\n margin-top: auto;\n"], ["\n display: flex;\n gap: ", ";\n margin-top: auto;\n"])), layout$2.sm);
2363
+ })(templateObject_3$m || (templateObject_3$m = __makeTemplateObject(["\n display: flex;\n gap: ", ";\n margin-top: auto;\n"], ["\n display: flex;\n gap: ", ";\n margin-top: auto;\n"])), layout$2.sm);
2231
2364
  var StyledStackWrapper = styled.div.withConfig({
2232
2365
  displayName: "AccountCard__StyledStackWrapper",
2233
2366
  componentId: "sc-1erp7zn-3"
@@ -2235,7 +2368,7 @@ var StyledStackWrapper = styled.div.withConfig({
2235
2368
  var StyledHeaderWrapper = styled.div.withConfig({
2236
2369
  displayName: "AccountCard__StyledHeaderWrapper",
2237
2370
  componentId: "sc-1erp7zn-4"
2238
- })(templateObject_5$e || (templateObject_5$e = __makeTemplateObject(["\n min-height: ", ";\n display: flex;\n flex-direction: column;\n justify-content: center;\n gap: ", ";\n\n & > span {\n margin-top: -", ";\n }\n"], ["\n min-height: ", ";\n display: flex;\n flex-direction: column;\n justify-content: center;\n gap: ", ";\n\n & > span {\n margin-top: -", ";\n }\n"
2371
+ })(templateObject_5$f || (templateObject_5$f = __makeTemplateObject(["\n min-height: ", ";\n display: flex;\n flex-direction: column;\n justify-content: center;\n gap: ", ";\n\n & > span {\n margin-top: -", ";\n }\n"], ["\n min-height: ", ";\n display: flex;\n flex-direction: column;\n justify-content: center;\n gap: ", ";\n\n & > span {\n margin-top: -", ";\n }\n"
2239
2372
  // Map trend direction to icon and color
2240
2373
  ])), tokensJson.component.accountCard.header.minHeight, layout$2.none, layout$2.xs);
2241
2374
  // Map trend direction to icon and color
@@ -2291,7 +2424,7 @@ var AccountCard = function AccountCard(_a) {
2291
2424
  bg: "subtle",
2292
2425
  border: "default",
2293
2426
  borderRadius: "xl",
2294
- transition: "box-shadow ".concat(semantic$a.motion.duration.normal, " ").concat(semantic$a.motion.easing.easeOut),
2427
+ transition: "box-shadow ".concat(semantic$c.motion.duration.normal, " ").concat(semantic$c.motion.easing.easeOut),
2295
2428
  cursor: isClickable ? 'pointer' : 'default',
2296
2429
  hoverShadow: isClickable ? 'floating' : undefined,
2297
2430
  onClick: handleClick,
@@ -2345,8 +2478,8 @@ var AccountCard = function AccountCard(_a) {
2345
2478
  }), trend && trendValue && jsx(StyledTrendSection, {
2346
2479
  "aria-label": "Trend ".concat(trend),
2347
2480
  role: "img",
2348
- children: jsx(CategoryBadge, {
2349
- size: "small",
2481
+ children: jsx(CategoryLabel, {
2482
+ size: "medium",
2350
2483
  icon: trendIcon,
2351
2484
  color: trendColor,
2352
2485
  variant: "minimal",
@@ -2386,28 +2519,28 @@ var AccountCard = function AccountCard(_a) {
2386
2519
  })
2387
2520
  });
2388
2521
  };
2389
- var templateObject_1$s, templateObject_2$n, templateObject_3$l, templateObject_4$i, templateObject_5$e;
2522
+ var templateObject_1$t, templateObject_2$o, templateObject_3$m, templateObject_4$i, templateObject_5$f;
2390
2523
 
2391
- var semantic$9 = tokensJson.semantic;
2392
- var _a$6 = semantic$9.motion,
2393
- duration$2 = _a$6.duration,
2394
- easing$2 = _a$6.easing;
2524
+ var semantic$b = tokensJson.semantic;
2525
+ var _a$5 = semantic$b.motion,
2526
+ duration$2 = _a$5.duration,
2527
+ easing$2 = _a$5.easing;
2395
2528
  var StyledListItem = styled.li.withConfig({
2396
2529
  shouldForwardProp: function shouldForwardProp(prop) {
2397
2530
  return !prop.startsWith('$');
2398
2531
  },
2399
2532
  displayName: "ListItem__StyledListItem",
2400
2533
  componentId: "sc-1wzzt21-0"
2401
- })(templateObject_1$r || (templateObject_1$r = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n min-height: ", ";\n position: relative;\n \n /* Disable user selection for interactive items */\n ", "\n \n /* Disabled state */\n ", "\n \n /* Destructive state - apply error color to text */\n ", "\n"], ["\n display: flex;\n flex-direction: column;\n min-height: ", ";\n position: relative;\n \n /* Disable user selection for interactive items */\n ", "\n \n /* Disabled state */\n ", "\n \n /* Destructive state - apply error color to text */\n ", "\n"])), semantic$9.size.touchTarget, function (_a) {
2534
+ })(templateObject_1$s || (templateObject_1$s = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n min-height: ", ";\n position: relative;\n \n /* Disable user selection for interactive items */\n ", "\n \n /* Disabled state */\n ", "\n \n /* Destructive state - apply error color to text */\n ", "\n"], ["\n display: flex;\n flex-direction: column;\n min-height: ", ";\n position: relative;\n \n /* Disable user selection for interactive items */\n ", "\n \n /* Disabled state */\n ", "\n \n /* Destructive state - apply error color to text */\n ", "\n"])), semantic$b.size.touchTarget, function (_a) {
2402
2535
  var $interactive = _a.$interactive;
2403
2536
  return $interactive && 'user-select: none;';
2404
2537
  }, function (_a) {
2405
2538
  var $disabled = _a.$disabled;
2406
- return $disabled && "\n opacity: ".concat(semantic$9.opacity.disabled, ";\n cursor: not-allowed;\n pointer-events: none;\n ");
2539
+ return $disabled && "\n opacity: ".concat(semantic$b.opacity.disabled, ";\n cursor: not-allowed;\n pointer-events: none;\n ");
2407
2540
  }, function (_a) {
2408
2541
  var $destructive = _a.$destructive,
2409
2542
  $disabled = _a.$disabled;
2410
- return $destructive && !$disabled && "\n color: ".concat(semantic$9.color.text.error, ";\n ");
2543
+ return $destructive && !$disabled && "\n color: ".concat(semantic$b.color.text.error, ";\n ");
2411
2544
  });
2412
2545
  var StyledItemContent = styled.div.withConfig({
2413
2546
  shouldForwardProp: function shouldForwardProp(prop) {
@@ -2415,12 +2548,12 @@ var StyledItemContent = styled.div.withConfig({
2415
2548
  },
2416
2549
  displayName: "ListItem__StyledItemContent",
2417
2550
  componentId: "sc-1wzzt21-1"
2418
- })(templateObject_2$m || (templateObject_2$m = __makeTemplateObject(["\n display: flex;\n align-items: flex-start;\n gap: ", ";\n padding: ", ";\n border-radius: ", ";\n background-color: ", ";\n transition: background-color ", " ", ";\n cursor: ", ";\n \n /* Interactive hover states */\n ", "\n \n /* Focus visible */\n &:focus-visible {\n outline: ", " solid ", ";\n outline-offset: ", ";\n }\n"], ["\n display: flex;\n align-items: flex-start;\n gap: ", ";\n padding: ", ";\n border-radius: ", ";\n background-color: ", ";\n transition: background-color ", " ", ";\n cursor: ", ";\n \n /* Interactive hover states */\n ", "\n \n /* Focus visible */\n &:focus-visible {\n outline: ", " solid ", ";\n outline-offset: ", ";\n }\n"])), semantic$9.spacing.layout.md, function (_a) {
2551
+ })(templateObject_2$n || (templateObject_2$n = __makeTemplateObject(["\n display: flex;\n align-items: flex-start;\n gap: ", ";\n padding: ", ";\n border-radius: ", ";\n background-color: ", ";\n transition: background-color ", " ", ";\n cursor: ", ";\n \n /* Interactive hover states */\n ", "\n \n /* Focus visible */\n &:focus-visible {\n outline: ", " solid ", ";\n outline-offset: ", ";\n }\n"], ["\n display: flex;\n align-items: flex-start;\n gap: ", ";\n padding: ", ";\n border-radius: ", ";\n background-color: ", ";\n transition: background-color ", " ", ";\n cursor: ", ";\n \n /* Interactive hover states */\n ", "\n \n /* Focus visible */\n &:focus-visible {\n outline: ", " solid ", ";\n outline-offset: ", ";\n }\n"])), semantic$b.spacing.layout.md, function (_a) {
2419
2552
  var $spacing = _a.$spacing;
2420
- return $spacing === 'compact' ? "".concat(semantic$9.spacing.layout.sm, " ").concat(semantic$9.spacing.layout.md) : "".concat(semantic$9.spacing.layout.md, " ").concat(semantic$9.spacing.layout.lg);
2421
- }, semantic$9.border.radius.sm, function (_a) {
2553
+ return $spacing === 'compact' ? "".concat(semantic$b.spacing.layout.sm, " ").concat(semantic$b.spacing.layout.md) : "".concat(semantic$b.spacing.layout.md, " ").concat(semantic$b.spacing.layout.lg);
2554
+ }, semantic$b.border.radius.sm, function (_a) {
2422
2555
  var $selected = _a.$selected;
2423
- return $selected ? semantic$9.color.background['interactive-subtle'] : 'transparent';
2556
+ return $selected ? semantic$b.color.background['interactive-subtle'] : 'transparent';
2424
2557
  }, duration$2.fast, easing$2.easeOut, function (_a) {
2425
2558
  var $interactive = _a.$interactive,
2426
2559
  $disabled = _a.$disabled;
@@ -2432,26 +2565,26 @@ var StyledItemContent = styled.div.withConfig({
2432
2565
  $disabled = _a.$disabled,
2433
2566
  $selected = _a.$selected;
2434
2567
  return !$disabled && $interactive && "\n &:hover {\n background-color: ".concat($selected ? tokensJson.component.button.variants.secondary.backgroundColor : tokensJson.component.button.variants.secondary.backgroundColor, ";\n }\n \n &:active {\n background-color: ").concat(tokensJson.component.button.variants.naked.backgroundColor, ";\n }\n ");
2435
- }, semantic$9.border.width.thick, semantic$9.color.border.interactive, semantic$9.border.focusOffset);
2568
+ }, semantic$b.border.width.thick, semantic$b.color.border.interactive, semantic$b.border.focusOffset);
2436
2569
  var StyledIconContainer$1 = styled.div.withConfig({
2437
2570
  displayName: "ListItem__StyledIconContainer",
2438
2571
  componentId: "sc-1wzzt21-2"
2439
- })(templateObject_3$k || (templateObject_3$k = __makeTemplateObject(["\n display: flex;\n align-items: center;\n flex-shrink: 0;\n width: ", ";\n height: ", ";\n"], ["\n display: flex;\n align-items: center;\n flex-shrink: 0;\n width: ", ";\n height: ", ";\n"])), semantic$9.size.icon.lg, semantic$9.size.icon.lg);
2572
+ })(templateObject_3$l || (templateObject_3$l = __makeTemplateObject(["\n display: flex;\n align-items: center;\n flex-shrink: 0;\n width: ", ";\n height: ", ";\n"], ["\n display: flex;\n align-items: center;\n flex-shrink: 0;\n width: ", ";\n height: ", ";\n"])), semantic$b.size.icon.lg, semantic$b.size.icon.lg);
2440
2573
  var StyledTextContent = styled.div.withConfig({
2441
2574
  displayName: "ListItem__StyledTextContent",
2442
2575
  componentId: "sc-1wzzt21-3"
2443
- })(templateObject_4$h || (templateObject_4$h = __makeTemplateObject(["\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: ", ";\n min-width: 0; /* Allow text truncation */\n"], ["\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: ", ";\n min-width: 0; /* Allow text truncation */\n"])), semantic$9.spacing.layout.xs);
2576
+ })(templateObject_4$h || (templateObject_4$h = __makeTemplateObject(["\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: ", ";\n min-width: 0; /* Allow text truncation */\n"], ["\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: ", ";\n min-width: 0; /* Allow text truncation */\n"])), semantic$b.spacing.layout.xs);
2444
2577
  var StyledRightContent = styled.div.withConfig({
2445
2578
  displayName: "ListItem__StyledRightContent",
2446
2579
  componentId: "sc-1wzzt21-4"
2447
- })(templateObject_5$d || (templateObject_5$d = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: ", ";\n flex-shrink: 0;\n margin-left: auto;\n"], ["\n display: flex;\n align-items: center;\n gap: ", ";\n flex-shrink: 0;\n margin-left: auto;\n"])), semantic$9.spacing.layout.sm);
2580
+ })(templateObject_5$e || (templateObject_5$e = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: ", ";\n flex-shrink: 0;\n margin-left: auto;\n"], ["\n display: flex;\n align-items: center;\n gap: ", ";\n flex-shrink: 0;\n margin-left: auto;\n"])), semantic$b.spacing.layout.sm);
2448
2581
  var StyledChevronIcon = styled.div.withConfig({
2449
2582
  shouldForwardProp: function shouldForwardProp(prop) {
2450
2583
  return !prop.startsWith('$');
2451
2584
  },
2452
2585
  displayName: "ListItem__StyledChevronIcon",
2453
2586
  componentId: "sc-1wzzt21-5"
2454
- })(templateObject_6$b || (templateObject_6$b = __makeTemplateObject(["\n display: flex;\n align-items: center;\n justify-content: center;\n width: ", ";\n height: ", ";\n color: ", ";\n transition: transform ", " ", ";\n transform: rotate(", ");\n pointer-events: none;\n\n ", " {\n transition: none;\n }\n"], ["\n display: flex;\n align-items: center;\n justify-content: center;\n width: ", ";\n height: ", ";\n color: ", ";\n transition: transform ", " ", ";\n transform: rotate(", ");\n pointer-events: none;\n\n ", " {\n transition: none;\n }\n"])), semantic$9.size.icon.lg, semantic$9.size.icon.lg, semantic$9.color.icon.subdued, duration$2.fast, easing$2.easeOut, function (_a) {
2587
+ })(templateObject_6$b || (templateObject_6$b = __makeTemplateObject(["\n display: flex;\n align-items: center;\n justify-content: center;\n width: ", ";\n height: ", ";\n color: ", ";\n transition: transform ", " ", ";\n transform: rotate(", ");\n pointer-events: none;\n\n ", " {\n transition: none;\n }\n"], ["\n display: flex;\n align-items: center;\n justify-content: center;\n width: ", ";\n height: ", ";\n color: ", ";\n transition: transform ", " ", ";\n transform: rotate(", ");\n pointer-events: none;\n\n ", " {\n transition: none;\n }\n"])), semantic$b.size.icon.lg, semantic$b.size.icon.lg, semantic$b.color.icon.subdued, duration$2.fast, easing$2.easeOut, function (_a) {
2455
2588
  var $expanded = _a.$expanded;
2456
2589
  return $expanded ? '180deg' : '0deg';
2457
2590
  }, reducedMotion);
@@ -2473,7 +2606,7 @@ var StyledExpandedContent = styled.div.withConfig({
2473
2606
  }, reducedMotion, duration$2.normal, easing$2.easeOut, duration$2.normal, easing$2.easeOut, function (_a) {
2474
2607
  var $expanded = _a.$expanded,
2475
2608
  $spacing = _a.$spacing;
2476
- return $expanded && "\n padding: ".concat($spacing === 'compact' ? "".concat(semantic$9.spacing.layout.sm, " ").concat(semantic$9.spacing.layout.md, " ").concat(semantic$9.spacing.layout.sm, " ").concat(tokensJson.component.listItem.expandedIndent.compact) : "".concat(semantic$9.spacing.layout.sm, " ").concat(semantic$9.spacing.layout.lg, " ").concat(semantic$9.spacing.layout.md, " ").concat(tokensJson.component.listItem.expandedIndent.comfortable), ";\n background-color: ").concat(semantic$9.color.background['subtle'], ";\n border-radius: ").concat(semantic$9.border.radius.sm, ";\n margin: 0 ").concat($spacing === 'compact' ? semantic$9.spacing.layout.md : semantic$9.spacing.layout.lg, " ").concat($spacing === 'compact' ? semantic$9.spacing.layout.sm : semantic$9.spacing.layout.md, ";\n ");
2609
+ return $expanded && "\n padding: ".concat($spacing === 'compact' ? "".concat(semantic$b.spacing.layout.sm, " ").concat(semantic$b.spacing.layout.md, " ").concat(semantic$b.spacing.layout.sm, " ").concat(tokensJson.component.listItem.expandedIndent.compact) : "".concat(semantic$b.spacing.layout.sm, " ").concat(semantic$b.spacing.layout.lg, " ").concat(semantic$b.spacing.layout.md, " ").concat(tokensJson.component.listItem.expandedIndent.comfortable), ";\n background-color: ").concat(semantic$b.color.background['subtle'], ";\n border-radius: ").concat(semantic$b.border.radius.sm, ";\n margin: 0 ").concat($spacing === 'compact' ? semantic$b.spacing.layout.md : semantic$b.spacing.layout.lg, " ").concat($spacing === 'compact' ? semantic$b.spacing.layout.sm : semantic$b.spacing.layout.md, ";\n ");
2477
2610
  });
2478
2611
  var ListItem = function ListItem(_a) {
2479
2612
  var primary = _a.primary,
@@ -2586,7 +2719,7 @@ var ListItem = function ListItem(_a) {
2586
2719
  }));
2587
2720
  };
2588
2721
  ListItem.displayName = 'ListItem';
2589
- var templateObject_1$r, templateObject_2$m, templateObject_3$k, templateObject_4$h, templateObject_5$d, templateObject_6$b, templateObject_7$9;
2722
+ var templateObject_1$s, templateObject_2$n, templateObject_3$l, templateObject_4$h, templateObject_5$e, templateObject_6$b, templateObject_7$9;
2590
2723
 
2591
2724
  // How long an exiting element stays mounted: the duration of `exitAnimation` in styleUtils.
2592
2725
  var EXIT_DURATION_MS = parseInt(tokensJson.semantic.motion.duration.fast, 10);
@@ -2631,25 +2764,25 @@ function useInert(ref, isInert) {
2631
2764
  }, [ref, isInert]);
2632
2765
  }
2633
2766
 
2634
- var _a$5 = tokensJson.semantic,
2635
- color$3 = _a$5.color,
2636
- border$5 = _a$5.border,
2637
- layout$1 = _a$5.spacing.layout,
2638
- motion$3 = _a$5.motion,
2639
- elevation$2 = _a$5.elevation;
2640
- var slideUp = keyframes(templateObject_1$q || (templateObject_1$q = __makeTemplateObject(["\n from {\n transform: translateY(100%);\n }\n to {\n transform: translateY(0);\n }\n"], ["\n from {\n transform: translateY(100%);\n }\n to {\n transform: translateY(0);\n }\n"])));
2641
- var fadeIn$2 = keyframes(templateObject_2$l || (templateObject_2$l = __makeTemplateObject(["\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n"], ["\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n"])));
2767
+ var _a$4 = tokensJson.semantic,
2768
+ color$4 = _a$4.color,
2769
+ border$5 = _a$4.border,
2770
+ layout$1 = _a$4.spacing.layout,
2771
+ motion$3 = _a$4.motion,
2772
+ elevation$2 = _a$4.elevation;
2773
+ var slideUp = keyframes(templateObject_1$r || (templateObject_1$r = __makeTemplateObject(["\n from {\n transform: translateY(100%);\n }\n to {\n transform: translateY(0);\n }\n"], ["\n from {\n transform: translateY(100%);\n }\n to {\n transform: translateY(0);\n }\n"])));
2774
+ var fadeIn$2 = keyframes(templateObject_2$m || (templateObject_2$m = __makeTemplateObject(["\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n"], ["\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n"])));
2642
2775
  var StyledOverlay$2 = styled.div.withConfig({
2643
2776
  displayName: "ActionSheet__StyledOverlay",
2644
2777
  componentId: "sc-regbol-0"
2645
- })(templateObject_3$j || (templateObject_3$j = __makeTemplateObject(["\n position: fixed;\n inset: 0;\n background-color: ", ";\n z-index: ", ";\n animation: ", " ", " ", "", ";\n"], ["\n position: fixed;\n inset: 0;\n background-color: ", ";\n z-index: ", ";\n animation: ", " ", " ", "", ";\n"])), color$3.background.overlay, tokensJson.semantic.zIndex.modal, fadeIn$2, motion$3.duration.normal, motion$3.easing.easeOut, function (_a) {
2778
+ })(templateObject_3$k || (templateObject_3$k = __makeTemplateObject(["\n position: fixed;\n inset: 0;\n background-color: ", ";\n z-index: ", ";\n animation: ", " ", " ", "", ";\n"], ["\n position: fixed;\n inset: 0;\n background-color: ", ";\n z-index: ", ";\n animation: ", " ", " ", "", ";\n"])), color$4.background.overlay, tokensJson.semantic.zIndex.modal, fadeIn$2, motion$3.duration.normal, motion$3.easing.easeOut, function (_a) {
2646
2779
  var $isExiting = _a.$isExiting;
2647
2780
  return $isExiting && exitAnimation;
2648
2781
  });
2649
2782
  var StyledActionSheet = styled.div.withConfig({
2650
2783
  displayName: "ActionSheet__StyledActionSheet",
2651
2784
  componentId: "sc-regbol-1"
2652
- })(templateObject_4$g || (templateObject_4$g = __makeTemplateObject(["\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n background-color: ", ";\n border-top-left-radius: ", ";\n border-top-right-radius: ", ";\n box-shadow: ", ";\n max-height: 90vh;\n overflow-y: auto;\n z-index: ", ";\n animation: ", " ", " ", "", ";\n\n ", " {\n animation: ", " ", " ", "", ";\n }\n\n"], ["\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n background-color: ", ";\n border-top-left-radius: ", ";\n border-top-right-radius: ", ";\n box-shadow: ", ";\n max-height: 90vh;\n overflow-y: auto;\n z-index: ", ";\n animation: ", " ", " ", "", ";\n\n ", " {\n animation: ", " ", " ", "", ";\n }\n\n"])), color$3.background.subtle, border$5.radius.lg, border$5.radius.lg, elevation$2.overlay, tokensJson.semantic.zIndex.modal, slideUp, motion$3.duration.slow, motion$3.easing.easeOut, function (_a) {
2785
+ })(templateObject_4$g || (templateObject_4$g = __makeTemplateObject(["\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n background-color: ", ";\n border-top-left-radius: ", ";\n border-top-right-radius: ", ";\n box-shadow: ", ";\n max-height: 90vh;\n overflow-y: auto;\n z-index: ", ";\n animation: ", " ", " ", "", ";\n\n ", " {\n animation: ", " ", " ", "", ";\n }\n\n"], ["\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n background-color: ", ";\n border-top-left-radius: ", ";\n border-top-right-radius: ", ";\n box-shadow: ", ";\n max-height: 90vh;\n overflow-y: auto;\n z-index: ", ";\n animation: ", " ", " ", "", ";\n\n ", " {\n animation: ", " ", " ", "", ";\n }\n\n"])), color$4.background.subtle, border$5.radius.lg, border$5.radius.lg, elevation$2.overlay, tokensJson.semantic.zIndex.modal, slideUp, motion$3.duration.slow, motion$3.easing.easeOut, function (_a) {
2653
2786
  var $isExiting = _a.$isExiting;
2654
2787
  return $isExiting && exitAnimation;
2655
2788
  }, reducedMotion, fadeIn$2, motion$3.duration.slow, motion$3.easing.easeOut, function (_a) {
@@ -2659,7 +2792,7 @@ var StyledActionSheet = styled.div.withConfig({
2659
2792
  var StyledHeader$2 = styled.div.withConfig({
2660
2793
  displayName: "ActionSheet__StyledHeader",
2661
2794
  componentId: "sc-regbol-2"
2662
- })(templateObject_5$c || (templateObject_5$c = __makeTemplateObject(["\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: ", " ", " ", ";\n border-bottom: ", ";\n"], ["\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: ", " ", " ", ";\n border-bottom: ", ";\n"])), layout$1.lg, layout$1.lg, layout$1.md, border$5["default"]);
2795
+ })(templateObject_5$d || (templateObject_5$d = __makeTemplateObject(["\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: ", " ", " ", ";\n border-bottom: ", ";\n"], ["\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n padding: ", " ", " ", ";\n border-bottom: ", ";\n"])), layout$1.lg, layout$1.lg, layout$1.md, border$5["default"]);
2663
2796
  var StyledHeaderContent = styled.div.withConfig({
2664
2797
  displayName: "ActionSheet__StyledHeaderContent",
2665
2798
  componentId: "sc-regbol-3"
@@ -2667,7 +2800,7 @@ var StyledHeaderContent = styled.div.withConfig({
2667
2800
  var StyledCloseButton = styled.button.withConfig({
2668
2801
  displayName: "ActionSheet__StyledCloseButton",
2669
2802
  componentId: "sc-regbol-4"
2670
- })(templateObject_7$8 || (templateObject_7$8 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n justify-content: center;\n padding: ", ";\n border: none;\n background: transparent;\n color: ", ";\n cursor: pointer;\n border-radius: ", ";\n transition: ", ";\n margin-left: ", ";\n \n &:hover {\n color: ", ";\n background-color: ", ";\n }\n \n &:focus-visible {\n outline: ", ";\n outline-offset: ", ";\n }\n"], ["\n display: flex;\n align-items: center;\n justify-content: center;\n padding: ", ";\n border: none;\n background: transparent;\n color: ", ";\n cursor: pointer;\n border-radius: ", ";\n transition: ", ";\n margin-left: ", ";\n \n &:hover {\n color: ", ";\n background-color: ", ";\n }\n \n &:focus-visible {\n outline: ", ";\n outline-offset: ", ";\n }\n"])), layout$1.sm, color$3.icon.subdued, border$5.radius.sm, motion$3.hover, layout$1.sm, color$3.icon["default"], color$3.background.surface, border$5.focus, layout$1.xs);
2803
+ })(templateObject_7$8 || (templateObject_7$8 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n justify-content: center;\n padding: ", ";\n border: none;\n background: transparent;\n color: ", ";\n cursor: pointer;\n border-radius: ", ";\n transition: ", ";\n margin-left: ", ";\n \n &:hover {\n color: ", ";\n background-color: ", ";\n }\n \n &:focus-visible {\n outline: ", ";\n outline-offset: ", ";\n }\n"], ["\n display: flex;\n align-items: center;\n justify-content: center;\n padding: ", ";\n border: none;\n background: transparent;\n color: ", ";\n cursor: pointer;\n border-radius: ", ";\n transition: ", ";\n margin-left: ", ";\n \n &:hover {\n color: ", ";\n background-color: ", ";\n }\n \n &:focus-visible {\n outline: ", ";\n outline-offset: ", ";\n }\n"])), layout$1.sm, color$4.icon.subdued, border$5.radius.sm, motion$3.hover, layout$1.sm, color$4.icon["default"], color$4.background.surface, border$5.focus, layout$1.xs);
2671
2804
  var StyledActionsList = styled.ul.withConfig({
2672
2805
  displayName: "ActionSheet__StyledActionsList",
2673
2806
  componentId: "sc-regbol-5"
@@ -2894,7 +3027,7 @@ var ActionSheet = function ActionSheet(_a) {
2894
3027
  })]
2895
3028
  }), document.body);
2896
3029
  };
2897
- var templateObject_1$q, templateObject_2$l, templateObject_3$j, templateObject_4$g, templateObject_5$c, templateObject_6$a, templateObject_7$8, templateObject_8$7;
3030
+ var templateObject_1$r, templateObject_2$m, templateObject_3$k, templateObject_4$g, templateObject_5$d, templateObject_6$a, templateObject_7$8, templateObject_8$7;
2898
3031
 
2899
3032
  function detectSpeechRecognitionConstructor(targetWindow) {
2900
3033
  if (!targetWindow) return null;
@@ -2994,36 +3127,36 @@ function agentInputStateTransition(currentState, event) {
2994
3127
  }
2995
3128
  }
2996
3129
 
2997
- var semantic$8 = tokensJson.semantic,
3130
+ var semantic$a = tokensJson.semantic,
2998
3131
  component$1 = tokensJson.component;
2999
3132
  var DEFAULT_IDLE_HELPER = 'Ask about transactions, spending, or transfers';
3000
3133
  var DEFAULT_LISTENING_MESSAGE = 'Listening… speak now';
3001
3134
  var DEFAULT_PROCESSING_MESSAGE = 'Finishing voice input…';
3002
- var rotateRing = keyframes(templateObject_1$p || (templateObject_1$p = __makeTemplateObject(["\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n"], ["\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n"])));
3135
+ var rotateRing = keyframes(templateObject_1$q || (templateObject_1$q = __makeTemplateObject(["\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n"], ["\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n"])));
3003
3136
  var Container = styled.div.withConfig({
3004
3137
  displayName: "AgentInput__Container",
3005
3138
  componentId: "sc-fhl996-0"
3006
- })(templateObject_2$k || (templateObject_2$k = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n gap: ", ";\n width: 100%;\n"], ["\n display: flex;\n flex-direction: column;\n gap: ", ";\n width: 100%;\n"])), semantic$8.spacing.layout.sm);
3139
+ })(templateObject_2$l || (templateObject_2$l = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n gap: ", ";\n width: 100%;\n"], ["\n display: flex;\n flex-direction: column;\n gap: ", ";\n width: 100%;\n"])), semantic$a.spacing.layout.sm);
3007
3140
  var ControlsRow = styled.div.withConfig({
3008
3141
  displayName: "AgentInput__ControlsRow",
3009
3142
  componentId: "sc-fhl996-1"
3010
- })(templateObject_3$i || (templateObject_3$i = __makeTemplateObject(["\n width: 100%;\n"], ["\n width: 100%;\n"])));
3143
+ })(templateObject_3$j || (templateObject_3$j = __makeTemplateObject(["\n width: 100%;\n"], ["\n width: 100%;\n"])));
3011
3144
  var InputShell = styled.div.withConfig({
3012
3145
  displayName: "AgentInput__InputShell",
3013
3146
  componentId: "sc-fhl996-2"
3014
- })(templateObject_4$f || (templateObject_4$f = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: ", ";\n width: 100%;\n padding: ", " ", " ", " ", ";\n background-color: ", ";\n border: ", " solid ", ";\n border-radius: ", ";\n box-shadow: ", ";\n transition: border-color ", " ", ", outline ", " ", ";\n\n &:focus-within {\n border-color: ", ";\n outline: ", ";\n outline-offset: ", ";\n }\n\n &[data-disabled='true'] {\n background-color: ", ";\n border-color: ", ";\n }\n"], ["\n display: flex;\n align-items: center;\n gap: ", ";\n width: 100%;\n padding: ", " ", " ", " ", ";\n background-color: ", ";\n border: ", " solid ", ";\n border-radius: ", ";\n box-shadow: ", ";\n transition: border-color ", " ", ", outline ", " ", ";\n\n &:focus-within {\n border-color: ", ";\n outline: ", ";\n outline-offset: ", ";\n }\n\n &[data-disabled='true'] {\n background-color: ", ";\n border-color: ", ";\n }\n"])), semantic$8.spacing.layout.sm, semantic$8.spacing.layout.xs, semantic$8.spacing.layout.sm, semantic$8.spacing.layout.xs, component$1.input["default"].paddingX, component$1.input["default"].backgroundColor, component$1.input["default"].borderWidth, component$1.input["default"].borderColor, semantic$8.border.radius['3xl'], semantic$8.elevation.raised, semantic$8.motion.duration.normal, semantic$8.motion.easing.easeInOut, semantic$8.motion.duration.normal, semantic$8.motion.easing.easeInOut, component$1.input.focus.borderColor, component$1.input.focus.outline, component$1.input.focus.outlineOffset, component$1.input.disabled.backgroundColor, component$1.input.disabled.borderColor);
3147
+ })(templateObject_4$f || (templateObject_4$f = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: ", ";\n width: 100%;\n padding: ", " ", " ", " ", ";\n background-color: ", ";\n border: ", " solid ", ";\n border-radius: ", ";\n box-shadow: ", ";\n transition: border-color ", " ", ", outline ", " ", ";\n\n &:focus-within {\n border-color: ", ";\n outline: ", ";\n outline-offset: ", ";\n }\n\n &[data-disabled='true'] {\n background-color: ", ";\n border-color: ", ";\n }\n"], ["\n display: flex;\n align-items: center;\n gap: ", ";\n width: 100%;\n padding: ", " ", " ", " ", ";\n background-color: ", ";\n border: ", " solid ", ";\n border-radius: ", ";\n box-shadow: ", ";\n transition: border-color ", " ", ", outline ", " ", ";\n\n &:focus-within {\n border-color: ", ";\n outline: ", ";\n outline-offset: ", ";\n }\n\n &[data-disabled='true'] {\n background-color: ", ";\n border-color: ", ";\n }\n"])), semantic$a.spacing.layout.sm, semantic$a.spacing.layout.xs, semantic$a.spacing.layout.sm, semantic$a.spacing.layout.xs, semantic$a.spacing.component.lg, component$1.input["default"].backgroundColor, component$1.input["default"].borderWidth, component$1.input["default"].borderColor, semantic$a.border.radius['3xl'], semantic$a.elevation.raised, semantic$a.motion.duration.normal, semantic$a.motion.easing.easeInOut, semantic$a.motion.duration.normal, semantic$a.motion.easing.easeInOut, component$1.input.focus.borderColor, component$1.input.focus.outline, semantic$a.border.focusOffset, component$1.input.disabled.backgroundColor, component$1.input.disabled.borderColor);
3015
3148
  var Input = styled.input.withConfig({
3016
3149
  displayName: "AgentInput__Input",
3017
3150
  componentId: "sc-fhl996-3"
3018
- })(templateObject_5$b || (templateObject_5$b = __makeTemplateObject(["\n flex: 1;\n min-width: 0;\n min-height: ", ";\n border: none;\n background: transparent;\n font: ", ";\n color: ", ";\n outline: none;\n\n &::placeholder {\n color: ", ";\n }\n\n &:disabled {\n color: ", ";\n cursor: not-allowed;\n }\n"], ["\n flex: 1;\n min-width: 0;\n min-height: ", ";\n border: none;\n background: transparent;\n font: ", ";\n color: ", ";\n outline: none;\n\n &::placeholder {\n color: ", ";\n }\n\n &:disabled {\n color: ", ";\n cursor: not-allowed;\n }\n"])), semantic$8.spacing.layout['7xl'], semantic$8.typography.body, semantic$8.color.text["default"], semantic$8.color.text.subdued, semantic$8.color.text.disabled);
3151
+ })(templateObject_5$c || (templateObject_5$c = __makeTemplateObject(["\n flex: 1;\n min-width: 0;\n min-height: ", ";\n border: none;\n background: transparent;\n font: ", ";\n color: ", ";\n outline: none;\n\n &::placeholder {\n color: ", ";\n /* Firefox fades placeholders to 0.54 by default, which would undo the 4.5:1 contrast */\n opacity: 1;\n }\n\n &:disabled {\n color: ", ";\n cursor: not-allowed;\n }\n"], ["\n flex: 1;\n min-width: 0;\n min-height: ", ";\n border: none;\n background: transparent;\n font: ", ";\n color: ", ";\n outline: none;\n\n &::placeholder {\n color: ", ";\n /* Firefox fades placeholders to 0.54 by default, which would undo the 4.5:1 contrast */\n opacity: 1;\n }\n\n &:disabled {\n color: ", ";\n cursor: not-allowed;\n }\n"])), semantic$a.spacing.layout['7xl'], semantic$a.typography.body, semantic$a.color.text["default"], component$1.input.placeholder.textColor, semantic$a.color.text.disabled);
3019
3152
  var InputActions = styled.div.withConfig({
3020
3153
  displayName: "AgentInput__InputActions",
3021
3154
  componentId: "sc-fhl996-4"
3022
- })(templateObject_6$9 || (templateObject_6$9 = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n gap: ", ";\n"], ["\n display: inline-flex;\n align-items: center;\n gap: ", ";\n"])), semantic$8.spacing.layout.sm);
3155
+ })(templateObject_6$9 || (templateObject_6$9 = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n gap: ", ";\n"], ["\n display: inline-flex;\n align-items: center;\n gap: ", ";\n"])), semantic$a.spacing.layout.sm);
3023
3156
  var CircularActionIconButton = styled(IconButton).withConfig({
3024
3157
  displayName: "AgentInput__CircularActionIconButton",
3025
3158
  componentId: "sc-fhl996-5"
3026
- })(templateObject_7$7 || (templateObject_7$7 = __makeTemplateObject(["\n border-radius: ", ";\n"], ["\n border-radius: ", ";\n"])), semantic$8.border.radius.circle);
3159
+ })(templateObject_7$7 || (templateObject_7$7 = __makeTemplateObject(["\n border-radius: ", ";\n"], ["\n border-radius: ", ";\n"])), semantic$a.border.radius.circle);
3027
3160
  var InputWrapper = styled.div.withConfig({
3028
3161
  displayName: "AgentInput__InputWrapper",
3029
3162
  componentId: "sc-fhl996-6"
@@ -3034,50 +3167,56 @@ var MicButtonWrapper = styled.div.withConfig({
3034
3167
  },
3035
3168
  displayName: "AgentInput__MicButtonWrapper",
3036
3169
  componentId: "sc-fhl996-7"
3037
- })(templateObject_9$5 || (templateObject_9$5 = __makeTemplateObject(["\n position: relative;\n display: inline-flex;\n border-radius: ", ";\n\n & > button {\n position: relative;\n z-index: 1;\n }\n"], ["\n position: relative;\n display: inline-flex;\n border-radius: ", ";\n\n & > button {\n position: relative;\n z-index: 1;\n }\n"])), semantic$8.border.radius.circle);
3170
+ })(templateObject_9$5 || (templateObject_9$5 = __makeTemplateObject(["\n position: relative;\n display: inline-flex;\n border-radius: ", ";\n\n & > button {\n position: relative;\n z-index: 1;\n }\n"], ["\n position: relative;\n display: inline-flex;\n border-radius: ", ";\n\n & > button {\n position: relative;\n z-index: 1;\n }\n"
3171
+ // Masks read only alpha, so the opaque stop is a mask value, not a colour (decision 0010).
3172
+ // eslint-disable-next-line no-restricted-syntax
3173
+ ])), semantic$a.border.radius.circle);
3174
+ // Masks read only alpha, so the opaque stop is a mask value, not a colour (decision 0010).
3175
+ // eslint-disable-next-line no-restricted-syntax
3176
+ var ringMask = css(templateObject_10$3 || (templateObject_10$3 = __makeTemplateObject(["radial-gradient(farthest-side, transparent calc(100% - var(--ring-thickness)), #000 calc(100% - var(--ring-thickness)))"], ["radial-gradient(farthest-side, transparent calc(100% - var(--ring-thickness)), #000 calc(100% - var(--ring-thickness)))"])));
3038
3177
  var MicListeningRing = styled.span.withConfig({
3039
3178
  shouldForwardProp: function shouldForwardProp(prop) {
3040
3179
  return !prop.startsWith('$');
3041
3180
  },
3042
3181
  displayName: "AgentInput__MicListeningRing",
3043
3182
  componentId: "sc-fhl996-8"
3044
- })(templateObject_11$3 || (templateObject_11$3 = __makeTemplateObject(["\n --ring-thickness: ", ";\n position: absolute;\n inset: calc(-", " - ", ");\n border-radius: ", ";\n pointer-events: none;\n z-index: 0;\n background: conic-gradient(\n from 0deg,\n ", " 0deg,\n ", " 110deg,\n ", " 210deg,\n ", " 300deg,\n ", " 360deg\n );\n mask: radial-gradient(\n farthest-side,\n transparent calc(100% - var(--ring-thickness)),\n #000 calc(100% - var(--ring-thickness))\n );\n -webkit-mask: radial-gradient(\n farthest-side,\n transparent calc(100% - var(--ring-thickness)),\n #000 calc(100% - var(--ring-thickness))\n );\n\n ", "\n\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n }\n"], ["\n --ring-thickness: ", ";\n position: absolute;\n inset: calc(-", " - ", ");\n border-radius: ", ";\n pointer-events: none;\n z-index: 0;\n background: conic-gradient(\n from 0deg,\n ", " 0deg,\n ", " 110deg,\n ", " 210deg,\n ", " 300deg,\n ", " 360deg\n );\n mask: radial-gradient(\n farthest-side,\n transparent calc(100% - var(--ring-thickness)),\n #000 calc(100% - var(--ring-thickness))\n );\n -webkit-mask: radial-gradient(\n farthest-side,\n transparent calc(100% - var(--ring-thickness)),\n #000 calc(100% - var(--ring-thickness))\n );\n\n ", "\n\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n }\n"])), semantic$8.border.width.thick, semantic$8.spacing.layout.xs, component$1.iconButton.focus.outlineOffset, semantic$8.border.radius.circle, semantic$8.color.background['interactive-subtle'], semantic$8.color.background.interactive, semantic$8.color.background['interactive-hover'], semantic$8.color.background.interactive, semantic$8.color.background['interactive-subtle'], function (_a) {
3183
+ })(templateObject_12$3 || (templateObject_12$3 = __makeTemplateObject(["\n --ring-thickness: ", ";\n position: absolute;\n inset: calc(-", " - ", ");\n border-radius: ", ";\n pointer-events: none;\n z-index: 0;\n background: conic-gradient(\n from 0deg,\n ", " 0deg,\n ", " 110deg,\n ", " 210deg,\n ", " 300deg,\n ", " 360deg\n );\n mask: ", ";\n -webkit-mask: ", ";\n\n ", "\n\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n }\n"], ["\n --ring-thickness: ", ";\n position: absolute;\n inset: calc(-", " - ", ");\n border-radius: ", ";\n pointer-events: none;\n z-index: 0;\n background: conic-gradient(\n from 0deg,\n ", " 0deg,\n ", " 110deg,\n ", " 210deg,\n ", " 300deg,\n ", " 360deg\n );\n mask: ", ";\n -webkit-mask: ", ";\n\n ", "\n\n @media (prefers-reduced-motion: reduce) {\n animation: none;\n }\n"])), semantic$a.border.width.thick, semantic$a.spacing.layout.xs, semantic$a.border.focusOffset, semantic$a.border.radius.circle, semantic$a.color.background['interactive-subtle'], semantic$a.color.background.interactive, semantic$a.color.background['interactive-hover'], semantic$a.color.background.interactive, semantic$a.color.background['interactive-subtle'], ringMask, ringMask, function (_a) {
3045
3184
  var $reducedMotion = _a.$reducedMotion;
3046
- return !$reducedMotion && css(templateObject_10$3 || (templateObject_10$3 = __makeTemplateObject(["\n animation: ", " 1300ms linear infinite;\n "], ["\n animation: ", " 1300ms linear infinite;\n "])), rotateRing);
3185
+ return !$reducedMotion && css(templateObject_11$3 || (templateObject_11$3 = __makeTemplateObject(["\n animation: ", " 1300ms linear infinite;\n "], ["\n animation: ", " 1300ms linear infinite;\n "])), rotateRing);
3047
3186
  });
3048
3187
  var StatusRow = styled.div.withConfig({
3049
3188
  displayName: "AgentInput__StatusRow",
3050
3189
  componentId: "sc-fhl996-9"
3051
- })(templateObject_12$3 || (templateObject_12$3 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: ", ";\n min-height: ", ";\n"], ["\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: ", ";\n min-height: ", ";\n"])), semantic$8.spacing.layout.md, semantic$8.spacing.layout['2xl']);
3190
+ })(templateObject_13$3 || (templateObject_13$3 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: ", ";\n min-height: ", ";\n"], ["\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: ", ";\n min-height: ", ";\n"])), semantic$a.spacing.layout.md, semantic$a.spacing.layout['2xl']);
3052
3191
  var StatusText = styled.div.withConfig({
3053
3192
  shouldForwardProp: function shouldForwardProp(prop) {
3054
3193
  return !prop.startsWith('$');
3055
3194
  },
3056
3195
  displayName: "AgentInput__StatusText",
3057
3196
  componentId: "sc-fhl996-10"
3058
- })(templateObject_13$2 || (templateObject_13$2 = __makeTemplateObject(["\n padding-left: ", ";\n"], ["\n padding-left: ", ";\n"])), semantic$8.spacing.layout.xl);
3197
+ })(templateObject_14$1 || (templateObject_14$1 = __makeTemplateObject(["\n padding-left: ", ";\n"], ["\n padding-left: ", ";\n"])), semantic$a.spacing.layout.xl);
3059
3198
  var StatusAnnouncement = styled.div.withConfig({
3060
3199
  displayName: "AgentInput__StatusAnnouncement",
3061
3200
  componentId: "sc-fhl996-11"
3062
- })(templateObject_14$1 || (templateObject_14$1 = __makeTemplateObject([""], [""])));
3201
+ })(templateObject_15$1 || (templateObject_15$1 = __makeTemplateObject([""], [""])));
3063
3202
  var MeterContainer = styled.div.withConfig({
3064
3203
  displayName: "AgentInput__MeterContainer",
3065
3204
  componentId: "sc-fhl996-12"
3066
- })(templateObject_15$1 || (templateObject_15$1 = __makeTemplateObject(["\n display: inline-flex;\n align-items: flex-end;\n gap: ", ";\n height: ", ";\n"], ["\n display: inline-flex;\n align-items: flex-end;\n gap: ", ";\n height: ", ";\n"])), semantic$8.spacing.layout.xs, semantic$8.spacing.layout.lg);
3205
+ })(templateObject_16$1 || (templateObject_16$1 = __makeTemplateObject(["\n display: inline-flex;\n align-items: flex-end;\n gap: ", ";\n height: ", ";\n"], ["\n display: inline-flex;\n align-items: flex-end;\n gap: ", ";\n height: ", ";\n"])), semantic$a.spacing.layout.xs, semantic$a.spacing.layout.lg);
3067
3206
  var MeterBar = styled.div.withConfig({
3068
3207
  shouldForwardProp: function shouldForwardProp(prop) {
3069
3208
  return !prop.startsWith('$');
3070
3209
  },
3071
3210
  displayName: "AgentInput__MeterBar",
3072
3211
  componentId: "sc-fhl996-13"
3073
- })(templateObject_16$1 || (templateObject_16$1 = __makeTemplateObject(["\n width: ", ";\n border-radius: ", ";\n background-color: ", ";\n height: ", ";\n transition: height ", " ", ";\n"], ["\n width: ", ";\n border-radius: ", ";\n background-color: ", ";\n height: ", ";\n transition: height ", " ", ";\n"])), semantic$8.spacing.layout.xs, semantic$8.border.radius.xs, semantic$8.color.background.interactive, function (_a) {
3212
+ })(templateObject_17$1 || (templateObject_17$1 = __makeTemplateObject(["\n width: ", ";\n border-radius: ", ";\n background-color: ", ";\n height: ", ";\n transition: height ", " ", ";\n"], ["\n width: ", ";\n border-radius: ", ";\n background-color: ", ";\n height: ", ";\n transition: height ", " ", ";\n"])), semantic$a.spacing.layout.xs, semantic$a.border.radius.xs, semantic$a.color.background.interactive, function (_a) {
3074
3213
  var $height = _a.$height;
3075
3214
  return "".concat($height * 100, "%");
3076
- }, semantic$8.motion.duration.fast, semantic$8.motion.easing.easeOut);
3215
+ }, semantic$a.motion.duration.fast, semantic$a.motion.easing.easeOut);
3077
3216
  var VisuallyHiddenLabel = styled.label.withConfig({
3078
3217
  displayName: "AgentInput__VisuallyHiddenLabel",
3079
3218
  componentId: "sc-fhl996-14"
3080
- })(templateObject_17$1 || (templateObject_17$1 = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), visuallyHidden);
3219
+ })(templateObject_18$1 || (templateObject_18$1 = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), visuallyHidden);
3081
3220
  function getInitialState(hasText) {
3082
3221
  return hasText ? 'typing' : 'idle';
3083
3222
  }
@@ -3706,21 +3845,21 @@ var AgentInput = function AgentInput(_a) {
3706
3845
  })]
3707
3846
  });
3708
3847
  };
3709
- var templateObject_1$p, templateObject_2$k, templateObject_3$i, templateObject_4$f, templateObject_5$b, templateObject_6$9, templateObject_7$7, templateObject_8$6, templateObject_9$5, templateObject_10$3, templateObject_11$3, templateObject_12$3, templateObject_13$2, templateObject_14$1, templateObject_15$1, templateObject_16$1, templateObject_17$1;
3848
+ var templateObject_1$q, templateObject_2$l, templateObject_3$j, templateObject_4$f, templateObject_5$c, templateObject_6$9, templateObject_7$7, templateObject_8$6, templateObject_9$5, templateObject_10$3, templateObject_11$3, templateObject_12$3, templateObject_13$3, templateObject_14$1, templateObject_15$1, templateObject_16$1, templateObject_17$1, templateObject_18$1;
3710
3849
 
3711
- var semantic$7 = tokensJson.semantic;
3850
+ var semantic$9 = tokensJson.semantic;
3712
3851
  var alert = tokensJson.component.alert;
3713
- var _a$4 = semantic$7.motion,
3714
- duration$1 = _a$4.duration,
3715
- easing$1 = _a$4.easing;
3852
+ var _a$3 = semantic$9.motion,
3853
+ duration$1 = _a$3.duration,
3854
+ easing$1 = _a$3.easing;
3716
3855
  // Dismissing fades the alert out, then collapses the space it took (Ollie's call, #35).
3717
3856
  // Each half takes duration.fast, so the whole exit stays within the 300ms maximum (P6).
3718
3857
  var FADE_MS = parseInt(duration$1.fast, 10);
3719
3858
  var EXIT_MS = FADE_MS * 2;
3720
3859
  // The --alert-exit-* properties are the alert's height and vertical padding, measured
3721
3860
  // when it's dismissed, so nothing moves until the fade has finished
3722
- var fadeThenCollapse = keyframes(templateObject_1$o || (templateObject_1$o = __makeTemplateObject(["\n 0%, 50% {\n max-height: var(--alert-exit-height);\n padding-top: var(--alert-exit-padding-top);\n padding-bottom: var(--alert-exit-padding-bottom);\n border-width: ", ";\n }\n 0% {\n opacity: 1;\n }\n 50% {\n opacity: 0;\n }\n 100% {\n opacity: 0;\n max-height: 0;\n padding-top: 0;\n padding-bottom: 0;\n border-width: 0;\n }\n"], ["\n 0%, 50% {\n max-height: var(--alert-exit-height);\n padding-top: var(--alert-exit-padding-top);\n padding-bottom: var(--alert-exit-padding-bottom);\n border-width: ", ";\n }\n 0% {\n opacity: 1;\n }\n 50% {\n opacity: 0;\n }\n 100% {\n opacity: 0;\n max-height: 0;\n padding-top: 0;\n padding-bottom: 0;\n border-width: 0;\n }\n"])), semantic$7.border.width.thin);
3723
- var fadeOut = keyframes(templateObject_2$j || (templateObject_2$j = __makeTemplateObject(["\n from { opacity: 1; }\n to { opacity: 0; }\n"], ["\n from { opacity: 1; }\n to { opacity: 0; }\n"
3861
+ var fadeThenCollapse = keyframes(templateObject_1$p || (templateObject_1$p = __makeTemplateObject(["\n 0%, 50% {\n max-height: var(--alert-exit-height);\n padding-top: var(--alert-exit-padding-top);\n padding-bottom: var(--alert-exit-padding-bottom);\n border-width: ", ";\n }\n 0% {\n opacity: 1;\n }\n 50% {\n opacity: 0;\n }\n 100% {\n opacity: 0;\n max-height: 0;\n padding-top: 0;\n padding-bottom: 0;\n border-width: 0;\n }\n"], ["\n 0%, 50% {\n max-height: var(--alert-exit-height);\n padding-top: var(--alert-exit-padding-top);\n padding-bottom: var(--alert-exit-padding-bottom);\n border-width: ", ";\n }\n 0% {\n opacity: 1;\n }\n 50% {\n opacity: 0;\n }\n 100% {\n opacity: 0;\n max-height: 0;\n padding-top: 0;\n padding-bottom: 0;\n border-width: 0;\n }\n"])), semantic$9.border.width.thin);
3862
+ var fadeOut = keyframes(templateObject_2$k || (templateObject_2$k = __makeTemplateObject(["\n from { opacity: 1; }\n to { opacity: 0; }\n"], ["\n from { opacity: 1; }\n to { opacity: 0; }\n"
3724
3863
  // The exit ends on the alert's own animationend: 300ms, or 150ms under reduced motion
3725
3864
  // (chosen when dismissed). A timer of the same length removes it if no animation event
3726
3865
  // arrives, for example where animations are disabled or the tab is hidden.
@@ -3732,7 +3871,7 @@ var fadeOut = keyframes(templateObject_2$j || (templateObject_2$j = __makeTempla
3732
3871
  // The generated names of the two exits (full, and reduced motion)
3733
3872
  var EXIT_ANIMATION_NAMES = [fadeThenCollapse.getName(), fadeOut.getName()];
3734
3873
  // Default icons by variant
3735
- var variantIcons = {
3874
+ var variantIcons$1 = {
3736
3875
  error: 'crossCircle',
3737
3876
  warning: 'bell',
3738
3877
  info: 'info',
@@ -3758,35 +3897,32 @@ var StyledAlert = styled.div.withConfig({
3758
3897
  },
3759
3898
  displayName: "Alert__StyledAlert",
3760
3899
  componentId: "sc-18tq5d-0"
3761
- })(templateObject_6$8 || (templateObject_6$8 = __makeTemplateObject(["\n display: flex;\n align-items: ", ";\n gap: ", ";\n padding: ", ";\n border-radius: ", ";\n border: ", " solid;\n position: relative;\n width: 100%;\n \n /* Variant-specific colors */\n ", "\n \n /* Responsive adjustments */\n @media (min-width: ", ") {\n padding: ", ";\n }\n\n /* The exit is chosen once, when dismissed (not by a media query), so a reduced-motion\n preference that changes mid-exit can't swap animations and flash the faded alert back.\n Reduced motion: fade only; the space closes instantly afterwards. */\n ", "\n"], ["\n display: flex;\n align-items: ", ";\n gap: ", ";\n padding: ", ";\n border-radius: ", ";\n border: ", " solid;\n position: relative;\n width: 100%;\n \n /* Variant-specific colors */\n ", "\n \n /* Responsive adjustments */\n @media (min-width: ", ") {\n padding: ", ";\n }\n\n /* The exit is chosen once, when dismissed (not by a media query), so a reduced-motion\n preference that changes mid-exit can't swap animations and flash the faded alert back.\n Reduced motion: fade only; the space closes instantly afterwards. */\n ", "\n"])), function (_a) {
3900
+ })(templateObject_6$8 || (templateObject_6$8 = __makeTemplateObject(["\n display: flex;\n /* Items start at the top, so the icon and dismiss button line up with the first line */\n align-items: flex-start;\n gap: ", ";\n padding: ", ";\n border-radius: ", ";\n border: ", " solid;\n position: relative;\n width: 100%;\n \n /* Severity \xD7 appearance colours from Alert's component tokens (decision 0019). Borderless\n keeps a transparent border, so both appearances take the same space. */\n background-color: ", ";\n color: ", ";\n border-color: ", ";\n \n /* Responsive adjustments */\n @media (min-width: ", ") {\n padding: ", ";\n }\n\n /* The exit is chosen once, when dismissed (not by a media query), so a reduced-motion\n preference that changes mid-exit can't swap animations and flash the faded alert back.\n Reduced motion: fade only; the space closes instantly afterwards. */\n ", "\n"], ["\n display: flex;\n /* Items start at the top, so the icon and dismiss button line up with the first line */\n align-items: flex-start;\n gap: ", ";\n padding: ", ";\n border-radius: ", ";\n border: ", " solid;\n position: relative;\n width: 100%;\n \n /* Severity \xD7 appearance colours from Alert's component tokens (decision 0019). Borderless\n keeps a transparent border, so both appearances take the same space. */\n background-color: ", ";\n color: ", ";\n border-color: ", ";\n \n /* Responsive adjustments */\n @media (min-width: ", ") {\n padding: ", ";\n }\n\n /* The exit is chosen once, when dismissed (not by a media query), so a reduced-motion\n preference that changes mid-exit can't swap animations and flash the faded alert back.\n Reduced motion: fade only; the space closes instantly afterwards. */\n ", "\n"])), function (_a) {
3762
3901
  var $inline = _a.$inline;
3763
- return $inline ? 'center' : 'flex-start';
3902
+ return $inline ? semantic$9.spacing.layout.sm : semantic$9.spacing.layout.md;
3764
3903
  }, function (_a) {
3765
3904
  var $inline = _a.$inline;
3766
- return $inline ? semantic$7.spacing.layout.sm : semantic$7.spacing.layout.md;
3905
+ return $inline ? semantic$9.spacing.layout.sm : semantic$9.spacing.layout.md;
3906
+ }, semantic$9.border.radius.sm, semantic$9.border.width.thin, function (_a) {
3907
+ var _b = _a.$variant,
3908
+ $variant = _b === void 0 ? 'info' : _b;
3909
+ return alert.severity[$variant].background;
3767
3910
  }, function (_a) {
3911
+ var _b = _a.$variant,
3912
+ $variant = _b === void 0 ? 'info' : _b;
3913
+ return alert.severity[$variant].text;
3914
+ }, function (_a) {
3915
+ var _b = _a.$variant,
3916
+ $variant = _b === void 0 ? 'info' : _b,
3917
+ $appearance = _a.$appearance;
3918
+ return alert.appearance[$appearance].borderColor[$variant];
3919
+ }, semantic$9.breakpoint.md, function (_a) {
3768
3920
  var $inline = _a.$inline;
3769
- return $inline ? semantic$7.spacing.layout.sm : semantic$7.spacing.layout.md;
3770
- }, semantic$7.border.radius.sm, semantic$7.border.width.thin, function (_a) {
3771
- var $variant = _a.$variant;
3772
- switch ($variant) {
3773
- case 'error':
3774
- return "\n background-color: ".concat(semantic$7.color.background['error-subtle'], ";\n border-color: ").concat(semantic$7.color.border.error, ";\n color: ").concat(semantic$7.color.text.error, ";\n ");
3775
- case 'warning':
3776
- return "\n background-color: ".concat(semantic$7.color.background['warning-subtle'], ";\n border-color: ").concat(semantic$7.color.border.warning, ";\n color: ").concat(semantic$7.color.text.warning, ";\n ");
3777
- case 'success':
3778
- return "\n background-color: ".concat(semantic$7.color.background['success-subtle'], ";\n border-color: ").concat(semantic$7.color.border.success, ";\n color: ").concat(semantic$7.color.text.success, ";\n ");
3779
- case 'info':
3780
- default:
3781
- return "\n background-color: ".concat(semantic$7.color.background['interactive-subtle'], ";\n border-color: ").concat(semantic$7.color.border.interactive, ";\n color: ").concat(semantic$7.color.text.interactive, ";\n ");
3782
- }
3783
- }, semantic$7.breakpoint.md, function (_a) {
3784
- var $inline = _a.$inline;
3785
- return $inline ? semantic$7.spacing.layout.sm : semantic$7.spacing.layout.lg;
3921
+ return $inline ? semantic$9.spacing.layout.sm : semantic$9.spacing.layout.lg;
3786
3922
  }, function (_a) {
3787
3923
  var $isExiting = _a.$isExiting,
3788
3924
  $reducedExit = _a.$reducedExit;
3789
- return $isExiting && css(templateObject_5$a || (templateObject_5$a = __makeTemplateObject(["\n overflow: hidden;\n pointer-events: none;\n animation: ", ";\n "], ["\n overflow: hidden;\n pointer-events: none;\n animation: ", ";\n "])), $reducedExit ? css(templateObject_3$h || (templateObject_3$h = __makeTemplateObject(["", " ", " ", " forwards"], ["", " ", " ", " forwards"])), fadeOut, duration$1.fast, easing$1.easeOut) : css(templateObject_4$e || (templateObject_4$e = __makeTemplateObject(["", " ", "ms ", " forwards"], ["", " ", "ms ", " forwards"])), fadeThenCollapse, EXIT_MS, easing$1.easeOut));
3925
+ return $isExiting && css(templateObject_5$b || (templateObject_5$b = __makeTemplateObject(["\n overflow: hidden;\n pointer-events: none;\n animation: ", ";\n "], ["\n overflow: hidden;\n pointer-events: none;\n animation: ", ";\n "])), $reducedExit ? css(templateObject_3$i || (templateObject_3$i = __makeTemplateObject(["", " ", " ", " forwards"], ["", " ", " ", " forwards"])), fadeOut, duration$1.fast, easing$1.easeOut) : css(templateObject_4$e || (templateObject_4$e = __makeTemplateObject(["", " ", "ms ", " forwards"], ["", " ", "ms ", " forwards"])), fadeThenCollapse, EXIT_MS, easing$1.easeOut));
3790
3926
  });
3791
3927
  var StyledIconContainer = styled.div.withConfig({
3792
3928
  displayName: "Alert__StyledIconContainer",
@@ -3795,47 +3931,81 @@ var StyledIconContainer = styled.div.withConfig({
3795
3931
  var StyledContent$1 = styled.div.withConfig({
3796
3932
  displayName: "Alert__StyledContent",
3797
3933
  componentId: "sc-18tq5d-2"
3798
- })(templateObject_8$5 || (templateObject_8$5 = __makeTemplateObject(["\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: ", ";\n min-width: 0; /* Allow text wrapping */\n"], ["\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: ", ";\n min-width: 0; /* Allow text wrapping */\n"])), semantic$7.spacing.layout.xs);
3934
+ })(templateObject_8$5 || (templateObject_8$5 = __makeTemplateObject(["\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: ", ";\n min-width: 0; /* Allow text wrapping */\n"], ["\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: ", ";\n min-width: 0; /* Allow text wrapping */\n"])), semantic$9.spacing.layout.xs);
3799
3935
  var StyledTitle = styled.span.withConfig({
3800
3936
  displayName: "Alert__StyledTitle",
3801
3937
  componentId: "sc-18tq5d-3"
3802
3938
  })(templateObject_9$4 || (templateObject_9$4 = __makeTemplateObject(["\n font: ", ";\n font-weight: ", ";\n line-height: ", ";\n margin: 0;\n"], ["\n font: ", ";\n font-weight: ", ";\n line-height: ", ";\n margin: 0;\n"])), alert.title.typography, alert.title.fontWeight, alert.title.lineHeight);
3803
- var StyledMessage = styled.span.withConfig({
3939
+ var StyledMessage$1 = styled.span.withConfig({
3804
3940
  displayName: "Alert__StyledMessage",
3805
3941
  componentId: "sc-18tq5d-4"
3806
- })(templateObject_10$2 || (templateObject_10$2 = __makeTemplateObject(["\n font: ", ";\n line-height: ", ";\n"], ["\n font: ", ";\n line-height: ", ";\n"])), alert.message.typography, alert.message.lineHeight);
3942
+ })(templateObject_10$2 || (templateObject_10$2 = __makeTemplateObject(["\n font: ", ";\n line-height: ", ";\n"], ["\n font: ", ";\n line-height: ", ";\n"
3943
+ // The action follows the content, left-aligned with it, so it's read after the message
3944
+ // (#122). With the content's xs gap, the space above it is md: a separate step.
3945
+ ])), alert.message.typography, alert.message.lineHeight);
3946
+ // The action follows the content, left-aligned with it, so it's read after the message
3947
+ // (#122). With the content's xs gap, the space above it is md: a separate step.
3807
3948
  var StyledActions = styled.div.withConfig({
3808
3949
  displayName: "Alert__StyledActions",
3809
3950
  componentId: "sc-18tq5d-5"
3810
- })(templateObject_11$2 || (templateObject_11$2 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: ", ";\n flex-shrink: 0;\n margin-left: auto;\n"], ["\n display: flex;\n align-items: center;\n gap: ", ";\n flex-shrink: 0;\n margin-left: auto;\n"])), semantic$7.spacing.layout.sm);
3951
+ })(templateObject_11$2 || (templateObject_11$2 = __makeTemplateObject(["\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: ", ";\n margin-top: calc(", " - ", ");\n"], ["\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: ", ";\n margin-top: calc(", " - ", ");\n"
3952
+ // The dismiss button's centre lines up with the first line of content: the title, or the
3953
+ // message when there's no title (decision 0019). The slot is as tall as that line and the
3954
+ // button is centred in it, overflowing evenly into the padding, so it stays aligned at every
3955
+ // padding and line height. Being in the row, it also keeps text and actions from running under it.
3956
+ ])), semantic$9.spacing.layout.sm, semantic$9.spacing.layout.md, semantic$9.spacing.layout.xs);
3957
+ // The dismiss button's centre lines up with the first line of content: the title, or the
3958
+ // message when there's no title (decision 0019). The slot is as tall as that line and the
3959
+ // button is centred in it, overflowing evenly into the padding, so it stays aligned at every
3960
+ // padding and line height. Being in the row, it also keeps text and actions from running under it.
3961
+ var StyledDismissSlot = styled.div.withConfig({
3962
+ shouldForwardProp: function shouldForwardProp(prop) {
3963
+ return !prop.startsWith('$');
3964
+ },
3965
+ displayName: "Alert__StyledDismissSlot",
3966
+ componentId: "sc-18tq5d-6"
3967
+ })(templateObject_12$2 || (templateObject_12$2 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n flex-shrink: 0;\n height: ", ";\n"], ["\n display: flex;\n align-items: center;\n flex-shrink: 0;\n height: ", ";\n"
3968
+ // The glyph sits on the padding edge, mirroring the severity icon on the left. The inline
3969
+ // alert's padding is too small for that, so its button stays inside the padding.
3970
+ ])), function (_a) {
3971
+ var $lineHeight = _a.$lineHeight;
3972
+ return $lineHeight;
3973
+ });
3974
+ // The glyph sits on the padding edge, mirroring the severity icon on the left. The inline
3975
+ // alert's padding is too small for that, so its button stays inside the padding.
3811
3976
  var StyledDismissButton = styled(IconButton).withConfig({
3812
3977
  displayName: "Alert__StyledDismissButton",
3813
- componentId: "sc-18tq5d-6"
3814
- })(templateObject_12$2 || (templateObject_12$2 = __makeTemplateObject(["\n margin-left: ", ";\n\tposition: absolute;\n\tright: ", ";\n\ttop: ", ";\n"], ["\n margin-left: ", ";\n\tposition: absolute;\n\tright: ", ";\n\ttop: ", ";\n"])), semantic$7.spacing.layout.xs, semantic$7.spacing.layout.sm, semantic$7.spacing.layout.sm);
3978
+ componentId: "sc-18tq5d-7"
3979
+ })(templateObject_13$2 || (templateObject_13$2 = __makeTemplateObject(["\n margin-right: ", ";\n"], ["\n margin-right: ", ";\n"])), function (_a) {
3980
+ var $inline = _a.$inline;
3981
+ return $inline ? 0 : "calc((".concat(tokensJson.component.iconButton.sizes.small.minWidth, " - ").concat(semantic$9.size.icon.sm, ") / -2)");
3982
+ });
3815
3983
  var Alert = function Alert(_a) {
3816
3984
  var _b = _a.variant,
3817
3985
  variant = _b === void 0 ? 'info' : _b,
3986
+ _c = _a.appearance,
3987
+ appearance = _c === void 0 ? 'outlined' : _c,
3818
3988
  children = _a.children,
3819
3989
  title = _a.title,
3820
- _c = _a.dismissible,
3821
- dismissible = _c === void 0 ? false : _c,
3990
+ _d = _a.dismissible,
3991
+ dismissible = _d === void 0 ? false : _d,
3822
3992
  onDismiss = _a.onDismiss,
3823
3993
  action = _a.action,
3824
- _d = _a.inline,
3825
- inline = _d === void 0 ? false : _d,
3826
- _e = _a.ariaLive,
3827
- ariaLive = _e === void 0 ? 'polite' : _e,
3994
+ _e = _a.inline,
3995
+ inline = _e === void 0 ? false : _e,
3996
+ _f = _a.ariaLive,
3997
+ ariaLive = _f === void 0 ? 'polite' : _f,
3828
3998
  dataTestId = _a["data-testid"],
3829
- props = __rest(_a, ["variant", "children", "title", "dismissible", "onDismiss", "action", "inline", "ariaLive", 'data-testid']);
3830
- var _f = React.useState('visible'),
3831
- phase = _f[0],
3832
- setPhase = _f[1];
3833
- var _g = React.useState(false),
3834
- reducedExit = _g[0],
3835
- setReducedExit = _g[1];
3836
- var _h = React.useState(),
3837
- exitStyle = _h[0],
3838
- setExitStyle = _h[1];
3999
+ props = __rest(_a, ["variant", "appearance", "children", "title", "dismissible", "onDismiss", "action", "inline", "ariaLive", 'data-testid']);
4000
+ var _g = React.useState('visible'),
4001
+ phase = _g[0],
4002
+ setPhase = _g[1];
4003
+ var _h = React.useState(false),
4004
+ reducedExit = _h[0],
4005
+ setReducedExit = _h[1];
4006
+ var _j = React.useState(),
4007
+ exitStyle = _j[0],
4008
+ setExitStyle = _j[1];
3839
4009
  var alertRef = React.useRef(null);
3840
4010
  // While it exits, its controls leave the tab order and can't be activated
3841
4011
  useInert(alertRef, phase === 'exiting');
@@ -3892,7 +4062,7 @@ var Alert = function Alert(_a) {
3892
4062
  }
3893
4063
  };
3894
4064
  // Get the icon for the current variant
3895
- var iconName = variantIcons[variant];
4065
+ var iconName = variantIcons$1[variant];
3896
4066
  var alertIconColor = variantIconColors[variant];
3897
4067
  var alertTitleColor = variantTitleColors[variant];
3898
4068
  // Determine ARIA role based on variant and aria-live
@@ -3901,6 +4071,7 @@ var Alert = function Alert(_a) {
3901
4071
  role: role,
3902
4072
  "aria-live": ariaLive,
3903
4073
  "$variant": variant,
4074
+ "$appearance": appearance,
3904
4075
  "$inline": inline,
3905
4076
  "$isExiting": isExiting,
3906
4077
  "$reducedExit": reducedExit,
@@ -3923,29 +4094,163 @@ var Alert = function Alert(_a) {
3923
4094
  "aria-level": 6,
3924
4095
  color: alertTitleColor,
3925
4096
  children: title
3926
- }), jsx(StyledMessage, {
4097
+ }), jsx(StyledMessage$1, {
3927
4098
  children: children
4099
+ }), action && jsx(StyledActions, {
4100
+ children: action
3928
4101
  })]
3929
- }), (action || dismissible) && jsxs(StyledActions, {
3930
- children: [action, dismissible && jsx(StyledDismissButton, {
4102
+ }), dismissible && jsx(StyledDismissSlot, {
4103
+ "$lineHeight": title ? alert.title.lineHeight : alert.message.lineHeight,
4104
+ children: jsx(StyledDismissButton, {
3931
4105
  iconName: "close",
3932
4106
  size: "small",
3933
4107
  variant: "naked",
4108
+ "$inline": inline,
3934
4109
  onClick: handleDismiss,
3935
4110
  "aria-label": "Dismiss alert",
3936
4111
  "data-testid": dataTestId ? "".concat(dataTestId, "-dismiss") : undefined
3937
- })]
4112
+ })
3938
4113
  })]
3939
4114
  }));
3940
4115
  };
3941
4116
  Alert.displayName = 'Alert';
3942
- var templateObject_1$o, templateObject_2$j, templateObject_3$h, templateObject_4$e, templateObject_5$a, templateObject_6$8, templateObject_7$6, templateObject_8$5, templateObject_9$4, templateObject_10$2, templateObject_11$2, templateObject_12$2;
4117
+ var templateObject_1$p, templateObject_2$k, templateObject_3$i, templateObject_4$e, templateObject_5$b, templateObject_6$8, templateObject_7$6, templateObject_8$5, templateObject_9$4, templateObject_10$2, templateObject_11$2, templateObject_12$2, templateObject_13$2;
4118
+
4119
+ var semantic$8 = tokensJson.semantic;
4120
+ var color$3 = semantic$8.color,
4121
+ typography = semantic$8.typography,
4122
+ spacing$3 = semantic$8.spacing,
4123
+ size = semantic$8.size;
4124
+ var variantIcons = {
4125
+ error: 'crossCircle',
4126
+ warning: 'bell',
4127
+ info: 'info',
4128
+ success: 'checkRing'
4129
+ };
4130
+ var variantTextColors = {
4131
+ error: color$3.text.error,
4132
+ warning: color$3.text.warning,
4133
+ info: color$3.text.interactive,
4134
+ success: color$3.text.success
4135
+ };
4136
+ var sizeConfig = {
4137
+ small: {
4138
+ font: typography.caption,
4139
+ gap: spacing$3.layout.xs,
4140
+ icon: 'xs'
4141
+ },
4142
+ medium: {
4143
+ font: typography.small,
4144
+ gap: spacing$3.layout.sm,
4145
+ icon: 'sm'
4146
+ }
4147
+ };
4148
+ var StyledInlineAlert = styled.div.withConfig({
4149
+ shouldForwardProp: function shouldForwardProp(prop) {
4150
+ return !prop.startsWith('$');
4151
+ },
4152
+ displayName: "InlineAlert__StyledInlineAlert",
4153
+ componentId: "sc-eervmb-0"
4154
+ })(templateObject_1$o || (templateObject_1$o = __makeTemplateObject(["\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n min-height: ", ";\n gap: ", ";\n font: ", ";\n color: ", ";\n"], ["\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n min-height: ", ";\n gap: ", ";\n font: ", ";\n color: ", ";\n"
4155
+ // One line of the message's font tall, so the icon centres on the first line at any size:
4156
+ // the zero-width space gives the box the font's line height without a fixed value
4157
+ ])), function (_a) {
4158
+ var $size = _a.$size,
4159
+ $empty = _a.$empty;
4160
+ return $empty ? '0' : size.label[$size];
4161
+ }, function (_a) {
4162
+ var $size = _a.$size;
4163
+ return sizeConfig[$size].gap;
4164
+ }, function (_a) {
4165
+ var $size = _a.$size;
4166
+ return sizeConfig[$size].font;
4167
+ }, function (_a) {
4168
+ var $variant = _a.$variant;
4169
+ return variantTextColors[$variant];
4170
+ });
4171
+ // One line of the message's font tall, so the icon centres on the first line at any size:
4172
+ // the zero-width space gives the box the font's line height without a fixed value
4173
+ var StyledIconLine = styled.span.withConfig({
4174
+ displayName: "InlineAlert__StyledIconLine",
4175
+ componentId: "sc-eervmb-1"
4176
+ })(templateObject_2$j || (templateObject_2$j = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n\n &::after {\n content: '\\200B';\n }\n"], ["\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n\n &::after {\n content: '\\\\200B';\n }\n"])));
4177
+ var StyledMessage = styled.span.withConfig({
4178
+ displayName: "InlineAlert__StyledMessage",
4179
+ componentId: "sc-eervmb-2"
4180
+ })(templateObject_3$h || (templateObject_3$h = __makeTemplateObject(["\n min-width: 0;\n"], ["\n min-width: 0;\n"
4181
+ /**
4182
+ * InlineAlert is a short, local message that sits next to what it's about: between paragraphs,
4183
+ * below a field or in a table cell (decision 0019). A severity icon and text in the severity
4184
+ * colour, with no background or border. For a title, an action or a dismiss button, use Alert.
4185
+ *
4186
+ * @example
4187
+ * ```tsx
4188
+ * <InlineAlert variant="success">Saved</InlineAlert>
4189
+ *
4190
+ * // Field feedback: the control references the message with aria-describedby
4191
+ * <input id="email" aria-describedby="email-error" aria-invalid="true" />
4192
+ * <InlineAlert id="email-error" variant="error" size="small">Enter a valid email address</InlineAlert>
4193
+ * ```
4194
+ */])));
4195
+ /**
4196
+ * InlineAlert is a short, local message that sits next to what it's about: between paragraphs,
4197
+ * below a field or in a table cell (decision 0019). A severity icon and text in the severity
4198
+ * colour, with no background or border. For a title, an action or a dismiss button, use Alert.
4199
+ *
4200
+ * @example
4201
+ * ```tsx
4202
+ * <InlineAlert variant="success">Saved</InlineAlert>
4203
+ *
4204
+ * // Field feedback: the control references the message with aria-describedby
4205
+ * <input id="email" aria-describedby="email-error" aria-invalid="true" />
4206
+ * <InlineAlert id="email-error" variant="error" size="small">Enter a valid email address</InlineAlert>
4207
+ * ```
4208
+ */
4209
+ var InlineAlert = function InlineAlert(_a) {
4210
+ var _b = _a.variant,
4211
+ variant = _b === void 0 ? 'info' : _b,
4212
+ _c = _a.size,
4213
+ alertSize = _c === void 0 ? 'medium' : _c,
4214
+ children = _a.children,
4215
+ _d = _a.ariaLive,
4216
+ ariaLive = _d === void 0 ? 'polite' : _d,
4217
+ id = _a.id,
4218
+ dataTestId = _a["data-testid"];
4219
+ // A live region is announced reliably only when it exists before its content changes, so with
4220
+ // no message it stays mounted as an empty region, with no icon and no minimum height
4221
+ var hasMessage = children !== undefined && children !== null && children !== false && children !== '';
4222
+ return jsx(StyledInlineAlert
4223
+ // Same roles as Alert; ariaLive sets how urgently changes are announced
4224
+ , {
4225
+ // Same roles as Alert; ariaLive sets how urgently changes are announced
4226
+ role: variant === 'error' ? 'alert' : 'status',
4227
+ "aria-live": ariaLive,
4228
+ id: id,
4229
+ "data-testid": dataTestId,
4230
+ "$variant": variant,
4231
+ "$size": alertSize,
4232
+ "$empty": !hasMessage,
4233
+ children: hasMessage && jsxs(Fragment, {
4234
+ children: [jsx(StyledIconLine, {
4235
+ "aria-hidden": "true",
4236
+ children: jsx(Icon, {
4237
+ name: variantIcons[variant],
4238
+ size: sizeConfig[alertSize].icon,
4239
+ iconColor: "inherit"
4240
+ })
4241
+ }), jsx(StyledMessage, {
4242
+ children: children
4243
+ })]
4244
+ })
4245
+ });
4246
+ };
4247
+ InlineAlert.displayName = 'InlineAlert';
4248
+ var templateObject_1$o, templateObject_2$j, templateObject_3$h;
3943
4249
 
3944
- var _a$3, _b$1;
3945
4250
  var BreadcrumbNavStyled = styled.nav.withConfig({
3946
4251
  displayName: "Breadcrumbs__BreadcrumbNavStyled",
3947
4252
  componentId: "sc-7ouzg5-0"
3948
- })(templateObject_1$n || (templateObject_1$n = __makeTemplateObject(["\n border-bottom: ", ";\n\n ol {\n display: flex;\n align-items: center;\n list-style: none;\n margin: 0;\n padding: 0;\n }\n"], ["\n border-bottom: ", ";\n\n ol {\n display: flex;\n align-items: center;\n list-style: none;\n margin: 0;\n padding: 0;\n }\n"])), ((_b$1 = (_a$3 = tokensJson.semantic) === null || _a$3 === void 0 ? void 0 : _a$3.border) === null || _b$1 === void 0 ? void 0 : _b$1["default"]) || '0.0625rem solid #e9ecef');
4253
+ })(templateObject_1$n || (templateObject_1$n = __makeTemplateObject(["\n border-bottom: ", ";\n\n ol {\n display: flex;\n align-items: center;\n list-style: none;\n margin: 0;\n padding: 0;\n }\n"], ["\n border-bottom: ", ";\n\n ol {\n display: flex;\n align-items: center;\n list-style: none;\n margin: 0;\n padding: 0;\n }\n"])), tokensJson.semantic.border["default"]);
3949
4254
  var BreadcrumbStyled = styled.li.withConfig({
3950
4255
  displayName: "Breadcrumbs__BreadcrumbStyled",
3951
4256
  componentId: "sc-7ouzg5-1"
@@ -4013,7 +4318,8 @@ var CardSmall = function CardSmall(_a) {
4013
4318
  subtitle = _a.subtitle,
4014
4319
  meta = _a.meta,
4015
4320
  href = _a.href,
4016
- LinkComponent = _a.linkComponent;
4321
+ LinkComponent = _a.linkComponent,
4322
+ dataTestId = _a["data-testid"];
4017
4323
  if (!picture || !meta) {
4018
4324
  return null;
4019
4325
  }
@@ -4047,6 +4353,7 @@ var CardSmall = function CardSmall(_a) {
4047
4353
  })]
4048
4354
  });
4049
4355
  return jsx(CardSmallStyled, {
4356
+ "data-testid": dataTestId,
4050
4357
  children: LinkComponent && href ? jsx(LinkComponent, {
4051
4358
  href: href,
4052
4359
  "aria-label": title,
@@ -4073,8 +4380,10 @@ var CardLarge = function CardLarge(_a) {
4073
4380
  labels = _b === void 0 ? [] : _b,
4074
4381
  picture = _a.picture,
4075
4382
  onImageClick = _a.onImageClick,
4076
- imageHref = _a.imageHref;
4383
+ imageHref = _a.imageHref,
4384
+ dataTestId = _a["data-testid"];
4077
4385
  return jsx(CardLargeStyled, {
4386
+ "data-testid": dataTestId,
4078
4387
  children: jsxs(Stack, {
4079
4388
  direction: "column",
4080
4389
  gap: "md",
@@ -4160,7 +4469,7 @@ var StyledCheckbox = styled.span.withConfig({
4160
4469
  return props.$state === 'disabled' ? 'not-allowed' : 'pointer';
4161
4470
  }, tokensJson.semantic.motion.duration.fast, tokensJson.semantic.motion.easing.easeOut, HiddenCheckboxInput, function (props) {
4162
4471
  return props.$state === 'error' ? tokensJson.component.input.error.hover.borderColor : props.$checked || props.$indeterminate ? tokensJson.semantic.border.strong : tokensJson.component.input.hover.borderColor;
4163
- }, HiddenCheckboxInput, tokensJson.component.input.focus.outline, tokensJson.component.input.focus.outlineOffset, function (props) {
4472
+ }, HiddenCheckboxInput, tokensJson.component.input.focus.outline, tokensJson.semantic.border.focusOffset, function (props) {
4164
4473
  return props.$state === 'error' ? tokensJson.component.input.error.focus.borderColor : tokensJson.component.input.focus.borderColor;
4165
4474
  }, function (props) {
4166
4475
  return props.$state === 'disabled' && "\n background-color: ".concat(tokensJson.component.input.disabled.backgroundColor, ";\n border-color: ").concat(tokensJson.component.input.disabled.borderColor, ";\n ");
@@ -4448,6 +4757,37 @@ var CopyButton = function CopyButton(_a) {
4448
4757
  })
4449
4758
  });
4450
4759
  };
4760
+ var LiveRegion = styled.span.withConfig({
4761
+ displayName: "CodeBlock__LiveRegion",
4762
+ componentId: "sc-1p1t0kp-4"
4763
+ })(templateObject_5$a || (templateObject_5$a = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"
4764
+ /**
4765
+ * CodeBlock component for displaying formatted code with optional copy functionality
4766
+ * and expandable content for long code blocks.
4767
+ *
4768
+ * @param children - The code content to display
4769
+ * @param showCopyButton - Whether to show the copy button (default: true)
4770
+ * @param onCopy - Optional callback when code is copied
4771
+ * @param maxHeight - Maximum height in pixels before enabling expand/collapse
4772
+ * @param defaultExpanded - Initial expanded state when maxHeight is set
4773
+ * @param data-testid - Test identifier for the code block
4774
+ *
4775
+ * @example
4776
+ * ```tsx
4777
+ * // Basic usage
4778
+ * <CodeBlock>const x = 1;</CodeBlock>
4779
+ *
4780
+ * // With max height and expand/collapse
4781
+ * <CodeBlock maxHeight={200}>
4782
+ * {longCodeString}
4783
+ * </CodeBlock>
4784
+ *
4785
+ * // Start expanded
4786
+ * <CodeBlock maxHeight={200} defaultExpanded>
4787
+ * {longCodeString}
4788
+ * </CodeBlock>
4789
+ * ```
4790
+ */])), visuallyHidden);
4451
4791
  /**
4452
4792
  * CodeBlock component for displaying formatted code with optional copy functionality
4453
4793
  * and expandable content for long code blocks.
@@ -4490,6 +4830,9 @@ var CodeBlock = function CodeBlock(_a) {
4490
4830
  var _e = useState(false),
4491
4831
  needsExpansion = _e[0],
4492
4832
  setNeedsExpansion = _e[1];
4833
+ var _f = useState(''),
4834
+ announcement = _f[0],
4835
+ setAnnouncement = _f[1];
4493
4836
  var contentRef = useRef(null);
4494
4837
  // Check if content exceeds maxHeight
4495
4838
  useEffect(function () {
@@ -4503,17 +4846,7 @@ var CodeBlock = function CodeBlock(_a) {
4503
4846
  return !prev;
4504
4847
  });
4505
4848
  // Announce state change to screen readers
4506
- var announcement = isExpanded ? 'Code block collapsed' : 'Code block expanded';
4507
- var announcer = document.createElement('div');
4508
- announcer.setAttribute('aria-live', 'polite');
4509
- announcer.setAttribute('aria-atomic', 'true');
4510
- announcer.setAttribute('class', 'sr-only');
4511
- announcer.style.cssText = 'position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;';
4512
- announcer.textContent = announcement;
4513
- document.body.appendChild(announcer);
4514
- setTimeout(function () {
4515
- document.body.removeChild(announcer);
4516
- }, 1000);
4849
+ setAnnouncement(isExpanded ? 'Code block collapsed' : 'Code block expanded');
4517
4850
  };
4518
4851
  var showExpandButton = maxHeight && needsExpansion;
4519
4852
  return jsxs(CodeBlockWrapper, {
@@ -4538,13 +4871,17 @@ var CodeBlock = function CodeBlock(_a) {
4538
4871
  "data-testid": "expand-button",
4539
4872
  children: isExpanded ? 'Show less' : 'Show more'
4540
4873
  })
4874
+ }), showExpandButton && jsx(LiveRegion, {
4875
+ "aria-live": "polite",
4876
+ "aria-atomic": "true",
4877
+ children: announcement
4541
4878
  }), showCopyButton && jsx(CopyButton, {
4542
4879
  text: children,
4543
4880
  onCopy: onCopy
4544
4881
  })]
4545
4882
  });
4546
4883
  };
4547
- var templateObject_1$h, templateObject_2$f, templateObject_3$e, templateObject_4$c;
4884
+ var templateObject_1$h, templateObject_2$f, templateObject_3$e, templateObject_4$c, templateObject_5$a;
4548
4885
 
4549
4886
  var StyledHeader$1 = styled.div.withConfig({
4550
4887
  displayName: "DateGroup__StyledHeader",
@@ -4638,7 +4975,7 @@ var DateGroup = function DateGroup(_a) {
4638
4975
  };
4639
4976
  var templateObject_1$g, templateObject_2$e, templateObject_3$d, templateObject_4$b;
4640
4977
 
4641
- var semantic$6 = tokensJson.semantic;
4978
+ var semantic$7 = tokensJson.semantic;
4642
4979
  var StyledContainer$1 = styled.div.withConfig({
4643
4980
  shouldForwardProp: function shouldForwardProp(prop) {
4644
4981
  return !prop.startsWith('$');
@@ -4647,7 +4984,7 @@ var StyledContainer$1 = styled.div.withConfig({
4647
4984
  componentId: "sc-1u5hxh-0"
4648
4985
  })(templateObject_1$f || (templateObject_1$f = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n max-width: ", ";\n margin: 0 auto;\n padding: ", ";\n"], ["\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n max-width: ", ";\n margin: 0 auto;\n padding: ", ";\n"])), tokensJson.component.emptyState.maxWidth, function (_a) {
4649
4986
  var $size = _a.$size;
4650
- return $size === 'small' ? semantic$6.spacing.layout['4xl'] : $size === 'large' ? semantic$6.spacing.layout['8xl'] : semantic$6.spacing.layout['6xl'];
4987
+ return $size === 'small' ? semantic$7.spacing.layout['4xl'] : $size === 'large' ? semantic$7.spacing.layout['8xl'] : semantic$7.spacing.layout['6xl'];
4651
4988
  });
4652
4989
  var StyledIllustration = styled.div.withConfig({
4653
4990
  shouldForwardProp: function shouldForwardProp(prop) {
@@ -4661,16 +4998,16 @@ var StyledIllustration = styled.div.withConfig({
4661
4998
  }, function (_a) {
4662
4999
  var $size = _a.$size;
4663
5000
  return $size === 'small' ? tokensJson.component.emptyState.illustration.small : $size === 'large' ? tokensJson.component.emptyState.illustration.large : tokensJson.component.emptyState.illustration.medium;
4664
- }, semantic$6.spacing.layout['2xl'], function (_a) {
5001
+ }, semantic$7.spacing.layout['2xl'], function (_a) {
4665
5002
  var $variant = _a.$variant;
4666
- return $variant === 'error' ? semantic$6.color.icon.error : $variant === 'success' ? semantic$6.color.icon.success : semantic$6.color.icon.subdued;
5003
+ return $variant === 'error' ? semantic$7.color.icon.error : $variant === 'success' ? semantic$7.color.icon.success : semantic$7.color.icon.subdued;
4667
5004
  });
4668
5005
  var StyledTextContainer = styled.div.withConfig({
4669
5006
  displayName: "EmptyState__StyledTextContainer",
4670
5007
  componentId: "sc-1u5hxh-2"
4671
5008
  })(templateObject_3$c || (templateObject_3$c = __makeTemplateObject(["\n max-width: ", ";\n margin-bottom: ", ";\n"], ["\n max-width: ", ";\n margin-bottom: ", ";\n"
4672
5009
  // Map illustration type to icon name
4673
- ])), tokensJson.component.emptyState.text.maxWidth, semantic$6.spacing.layout['2xl']);
5010
+ ])), tokensJson.component.emptyState.text.maxWidth, semantic$7.spacing.layout['2xl']);
4674
5011
  // Map illustration type to icon name
4675
5012
  var illustrationToIcon = {
4676
5013
  search: 'search',
@@ -4725,7 +5062,7 @@ var EmptyState = function EmptyState(_a) {
4725
5062
  children: title
4726
5063
  }), jsx("div", {
4727
5064
  style: {
4728
- marginTop: semantic$6.spacing.layout.md
5065
+ marginTop: semantic$7.spacing.layout.md
4729
5066
  },
4730
5067
  children: jsx(Typography, {
4731
5068
  variant: "body",
@@ -4790,9 +5127,11 @@ var FeatureBlock = function FeatureBlock(_a) {
4790
5127
  onReadMore = _a.onReadMore,
4791
5128
  readMoreHref = _a.readMoreHref,
4792
5129
  _c = _a.readMoreText,
4793
- readMoreText = _c === void 0 ? "Read more" : _c;
5130
+ readMoreText = _c === void 0 ? "Read more" : _c,
5131
+ dataTestId = _a["data-testid"];
4794
5132
  return jsxs(Fragment, {
4795
5133
  children: [jsxs(FeatureBlockStyled, {
5134
+ "data-testid": dataTestId,
4796
5135
  children: [jsx(ImageWrapper, {
4797
5136
  children: jsx(Picture, {
4798
5137
  title: title,
@@ -4848,6 +5187,9 @@ var _a = tokensJson.semantic,
4848
5187
  _b = tokensJson.component,
4849
5188
  input$1 = _b.input,
4850
5189
  field$3 = _b.field;
5190
+ // Spacing comes from the semantic scales: no component spacing tokens (decision 0022).
5191
+ // The 11px vertical padding is off-grid and keeps its deprecated token until #129.
5192
+ var controlPaddingX = tokensJson.semantic.spacing.component.lg;
4851
5193
  var duration = motion$1.duration,
4852
5194
  easing = motion$1.easing;
4853
5195
  var DropdownContainer = styled.div.withConfig({
@@ -4860,7 +5202,7 @@ var DropdownTrigger = styled.button.withConfig({
4860
5202
  },
4861
5203
  displayName: "Dropdown__DropdownTrigger",
4862
5204
  componentId: "sc-kz07c4-1"
4863
- })(templateObject_2$b || (templateObject_2$b = __makeTemplateObject(["\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: ", " ", ";\n background-color: ", ";\n border: ", " solid ", ";\n border-radius: ", ";\n font: ", ";\n color: ", ";\n cursor: pointer;\n transition: border-color ", " ", ",\n outline ", " ", ";\n \n &:hover:not(:disabled) {\n border-color: ", ";\n }\n \n &:focus {\n border-color: ", ";\n outline: ", ";\n outline-offset: ", ";\n }\n \n &:disabled {\n background-color: ", ";\n color: ", ";\n border-color: ", ";\n cursor: ", ";\n }\n \n ", "\n"], ["\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: ", " ", ";\n background-color: ", ";\n border: ", " solid ", ";\n border-radius: ", ";\n font: ", ";\n color: ", ";\n cursor: pointer;\n transition: border-color ", " ", ",\n outline ", " ", ";\n \n &:hover:not(:disabled) {\n border-color: ", ";\n }\n \n &:focus {\n border-color: ", ";\n outline: ", ";\n outline-offset: ", ";\n }\n \n &:disabled {\n background-color: ", ";\n color: ", ";\n border-color: ", ";\n cursor: ", ";\n }\n \n ", "\n"])), input$1["default"].paddingY, input$1["default"].paddingX, input$1["default"].backgroundColor, input$1["default"].borderWidth, function (_a) {
5205
+ })(templateObject_2$b || (templateObject_2$b = __makeTemplateObject(["\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: ", " ", ";\n background-color: ", ";\n border: ", " solid ", ";\n border-radius: ", ";\n font: ", ";\n color: ", ";\n cursor: pointer;\n transition: border-color ", " ", ",\n outline ", " ", ";\n \n &:hover:not(:disabled) {\n border-color: ", ";\n }\n \n &:focus {\n border-color: ", ";\n outline: ", ";\n outline-offset: ", ";\n }\n \n &:disabled {\n background-color: ", ";\n color: ", ";\n border-color: ", ";\n cursor: not-allowed;\n }\n \n ", "\n"], ["\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: ", " ", ";\n background-color: ", ";\n border: ", " solid ", ";\n border-radius: ", ";\n font: ", ";\n color: ", ";\n cursor: pointer;\n transition: border-color ", " ", ",\n outline ", " ", ";\n \n &:hover:not(:disabled) {\n border-color: ", ";\n }\n \n &:focus {\n border-color: ", ";\n outline: ", ";\n outline-offset: ", ";\n }\n \n &:disabled {\n background-color: ", ";\n color: ", ";\n border-color: ", ";\n cursor: not-allowed;\n }\n \n ", "\n"])), input$1["default"].paddingY, controlPaddingX, input$1["default"].backgroundColor, input$1["default"].borderWidth, function (_a) {
4864
5206
  var $hasError = _a.$hasError;
4865
5207
  return $hasError ? input$1.error.borderColor : input$1["default"].borderColor;
4866
5208
  }, input$1["default"].borderRadius, input$1["default"].font, input$1["default"].textColor, duration.normal, easing.easeInOut, duration.normal, easing.easeInOut, function (_a) {
@@ -4869,7 +5211,7 @@ var DropdownTrigger = styled.button.withConfig({
4869
5211
  }, function (_a) {
4870
5212
  var $hasError = _a.$hasError;
4871
5213
  return $hasError ? input$1.error.focus.borderColor : input$1.focus.borderColor;
4872
- }, input$1.focus.outline, input$1.focus.outlineOffset, input$1.disabled.backgroundColor, input$1.disabled.textColor, input$1.disabled.borderColor, input$1.disabled.cursor, function (_a) {
5214
+ }, input$1.focus.outline, border$1.focusOffset, input$1.disabled.backgroundColor, input$1.disabled.textColor, input$1.disabled.borderColor, function (_a) {
4873
5215
  var $isOpen = _a.$isOpen,
4874
5216
  $hasError = _a.$hasError;
4875
5217
  return $isOpen && "\n border-color: ".concat($hasError ? input$1.error.focus.borderColor : input$1.focus.borderColor, ";\n ");
@@ -4890,7 +5232,7 @@ var DropdownMenu = styled.div.withConfig({
4890
5232
  },
4891
5233
  displayName: "Dropdown__DropdownMenu",
4892
5234
  componentId: "sc-kz07c4-3"
4893
- })(templateObject_4$9 || (templateObject_4$9 = __makeTemplateObject(["\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n z-index: ", ";\n background-color: ", ";\n border: ", " solid ", ";\n border-radius: ", ";\n box-shadow: ", ";\n margin-top: ", ";\n overflow: hidden;\n opacity: ", ";\n visibility: ", ";\n transform: ", ";\n transition: all ", " ", ";\n max-height: ", ";\n overflow-y: auto;\n\n ", " {\n transform: none;\n }\n"], ["\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n z-index: ", ";\n background-color: ", ";\n border: ", " solid ", ";\n border-radius: ", ";\n box-shadow: ", ";\n margin-top: ", ";\n overflow: hidden;\n opacity: ", ";\n visibility: ", ";\n transform: ", ";\n transition: all ", " ", ";\n max-height: ", ";\n overflow-y: auto;\n\n ", " {\n transform: none;\n }\n"])), zIndex.dropdown, input$1["default"].backgroundColor, input$1["default"].borderWidth, input$1["default"].borderColor, input$1["default"].borderRadius, elevation$1.floating, spacing.xs, function (_a) {
5235
+ })(templateObject_4$9 || (templateObject_4$9 = __makeTemplateObject(["\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n z-index: ", ";\n background-color: ", ";\n /* A decorative outline: elevation separates the menu, and only the trigger is a control edge (decision 0025) */\n border: ", ";\n border-radius: ", ";\n box-shadow: ", ";\n margin-top: ", ";\n overflow: hidden;\n opacity: ", ";\n visibility: ", ";\n transform: ", ";\n transition: all ", " ", ";\n max-height: ", ";\n overflow-y: auto;\n\n ", " {\n transform: none;\n }\n"], ["\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n z-index: ", ";\n background-color: ", ";\n /* A decorative outline: elevation separates the menu, and only the trigger is a control edge (decision 0025) */\n border: ", ";\n border-radius: ", ";\n box-shadow: ", ";\n margin-top: ", ";\n overflow: hidden;\n opacity: ", ";\n visibility: ", ";\n transform: ", ";\n transition: all ", " ", ";\n max-height: ", ";\n overflow-y: auto;\n\n ", " {\n transform: none;\n }\n"])), zIndex.dropdown, input$1["default"].backgroundColor, border$1.subtle, input$1["default"].borderRadius, elevation$1.floating, spacing.xs, function (_a) {
4894
5236
  var $isOpen = _a.$isOpen;
4895
5237
  return $isOpen ? 1 : 0;
4896
5238
  }, function (_a) {
@@ -4906,7 +5248,7 @@ var DropdownOption = styled.button.withConfig({
4906
5248
  },
4907
5249
  displayName: "Dropdown__DropdownOption",
4908
5250
  componentId: "sc-kz07c4-4"
4909
- })(templateObject_5$8 || (templateObject_5$8 = __makeTemplateObject(["\n width: 100%;\n display: block;\n padding: ", " ", ";\n background-color: ", ";\n border: none;\n font: ", ";\n color: ", ";\n text-align: left;\n cursor: pointer;\n transition: background-color ", " ", ";\n \n &:hover {\n background-color: ", ";\n }\n \n &:focus {\n outline: none;\n background-color: ", ";\n }\n \n &:not(:last-child) {\n border-bottom: ", ";\n }\n"], ["\n width: 100%;\n display: block;\n padding: ", " ", ";\n background-color: ", ";\n border: none;\n font: ", ";\n color: ", ";\n text-align: left;\n cursor: pointer;\n transition: background-color ", " ", ";\n \n &:hover {\n background-color: ", ";\n }\n \n &:focus {\n outline: none;\n background-color: ", ";\n }\n \n &:not(:last-child) {\n border-bottom: ", ";\n }\n"])), input$1["default"].paddingY, input$1["default"].paddingX, function (_a) {
5251
+ })(templateObject_5$8 || (templateObject_5$8 = __makeTemplateObject(["\n width: 100%;\n display: block;\n padding: ", " ", ";\n background-color: ", ";\n border: none;\n font: ", ";\n color: ", ";\n text-align: left;\n cursor: pointer;\n transition: background-color ", " ", ";\n \n &:hover {\n background-color: ", ";\n }\n \n &:focus {\n outline: none;\n background-color: ", ";\n }\n \n &:not(:last-child) {\n border-bottom: ", ";\n }\n"], ["\n width: 100%;\n display: block;\n padding: ", " ", ";\n background-color: ", ";\n border: none;\n font: ", ";\n color: ", ";\n text-align: left;\n cursor: pointer;\n transition: background-color ", " ", ";\n \n &:hover {\n background-color: ", ";\n }\n \n &:focus {\n outline: none;\n background-color: ", ";\n }\n \n &:not(:last-child) {\n border-bottom: ", ";\n }\n"])), input$1["default"].paddingY, controlPaddingX, function (_a) {
4910
5252
  var $isSelected = _a.$isSelected,
4911
5253
  $isFocused = _a.$isFocused;
4912
5254
  if ($isFocused) return color$1.background.surface;
@@ -4919,7 +5261,7 @@ var StyledHelperText$3 = styled.div.withConfig({
4919
5261
  })(templateObject_6$7 || (templateObject_6$7 = __makeTemplateObject(["\n font: ", ";\n color: ", ";\n margin-top: ", ";\n"], ["\n font: ", ";\n color: ", ";\n margin-top: ", ";\n"])), field$3.helperText.typography, function (_a) {
4920
5262
  var $hasError = _a.$hasError;
4921
5263
  return $hasError ? field$3.helperText.colorError : field$3.helperText.color;
4922
- }, field$3.gap);
5264
+ }, spacing.sm);
4923
5265
  var Dropdown = function Dropdown(_a) {
4924
5266
  var options = _a.options,
4925
5267
  value = _a.value,
@@ -4931,7 +5273,8 @@ var Dropdown = function Dropdown(_a) {
4931
5273
  className = _a.className,
4932
5274
  label = _a.label,
4933
5275
  helperText = _a.helperText,
4934
- error = _a.error;
5276
+ error = _a.error,
5277
+ dataTestId = _a["data-testid"];
4935
5278
  var _d = useState(false),
4936
5279
  isOpen = _d[0],
4937
5280
  setIsOpen = _d[1];
@@ -5036,11 +5379,12 @@ var Dropdown = function Dropdown(_a) {
5036
5379
  return jsxs(DropdownContainer, {
5037
5380
  ref: dropdownRef,
5038
5381
  className: className,
5382
+ "data-testid": dataTestId,
5039
5383
  children: [label && jsx("label", {
5040
5384
  htmlFor: dropdownId,
5041
5385
  style: {
5042
5386
  display: 'block',
5043
- marginBottom: field$3.gap
5387
+ marginBottom: spacing.sm
5044
5388
  },
5045
5389
  children: jsx(Typography, {
5046
5390
  variant: "label",
@@ -5095,7 +5439,7 @@ var Dropdown = function Dropdown(_a) {
5095
5439
  };
5096
5440
  var templateObject_1$d, templateObject_2$b, templateObject_3$a, templateObject_4$9, templateObject_5$8, templateObject_6$7;
5097
5441
 
5098
- var semantic$5 = tokensJson.semantic;
5442
+ var semantic$6 = tokensJson.semantic;
5099
5443
  var StyledList = styled.ul.withConfig({
5100
5444
  shouldForwardProp: function shouldForwardProp(prop) {
5101
5445
  return !prop.startsWith('$');
@@ -5104,7 +5448,7 @@ var StyledList = styled.ul.withConfig({
5104
5448
  componentId: "sc-1irksg5-0"
5105
5449
  })(templateObject_1$c || (templateObject_1$c = __makeTemplateObject(["\n list-style: none;\n margin: 0;\n padding: 0;\n width: 100%;\n \n /* Divider styles */\n ", "\n"], ["\n list-style: none;\n margin: 0;\n padding: 0;\n width: 100%;\n \n /* Divider styles */\n ", "\n"])), function (_a) {
5106
5450
  var $dividers = _a.$dividers;
5107
- return $dividers && "\n > li:not(:last-child) {\n border-bottom: ".concat(semantic$5.border.width.thin, " solid ").concat(semantic$5.color.border["default"], ";\n }\n ");
5451
+ return $dividers && "\n > li:not(:last-child) {\n border-bottom: ".concat(semantic$6.border.width.thin, " solid ").concat(semantic$6.color.border["default"], ";\n }\n ");
5108
5452
  });
5109
5453
  var List = function List(_a) {
5110
5454
  var children = _a.children,
@@ -5128,12 +5472,12 @@ var List = function List(_a) {
5128
5472
  List.displayName = 'List';
5129
5473
  var templateObject_1$c;
5130
5474
 
5131
- var semantic$4 = tokensJson.semantic;
5132
- var layout = semantic$4.spacing.layout,
5133
- color = semantic$4.color,
5134
- border = semantic$4.border,
5135
- elevation = semantic$4.elevation,
5136
- motion = semantic$4.motion;
5475
+ var semantic$5 = tokensJson.semantic;
5476
+ var layout = semantic$5.spacing.layout,
5477
+ color = semantic$5.color,
5478
+ border = semantic$5.border,
5479
+ elevation = semantic$5.elevation,
5480
+ motion = semantic$5.motion;
5137
5481
  // ---------------------------------------------------------------------------
5138
5482
  // Size map
5139
5483
  // ---------------------------------------------------------------------------
@@ -5157,7 +5501,7 @@ var scaleIn = keyframes(templateObject_2$a || (templateObject_2$a = __makeTempla
5157
5501
  var StyledOverlay$1 = styled.div.withConfig({
5158
5502
  displayName: "Modal__StyledOverlay",
5159
5503
  componentId: "sc-1d3g5gh-0"
5160
- })(templateObject_4$8 || (templateObject_4$8 = __makeTemplateObject(["\n position: fixed;\n inset: 0;\n background-color: ", ";\n z-index: ", ";\n ", "\n"], ["\n position: fixed;\n inset: 0;\n background-color: ", ";\n z-index: ", ";\n ", "\n"])), color.background.overlay, semantic$4.zIndex.modal, css(templateObject_3$9 || (templateObject_3$9 = __makeTemplateObject(["animation: ", " ", " ", "", ";"], ["animation: ", " ", " ", "", ";"])), fadeIn$1, motion.duration.normal, motion.easing.easeOut, function (_a) {
5504
+ })(templateObject_4$8 || (templateObject_4$8 = __makeTemplateObject(["\n position: fixed;\n inset: 0;\n background-color: ", ";\n z-index: ", ";\n ", "\n"], ["\n position: fixed;\n inset: 0;\n background-color: ", ";\n z-index: ", ";\n ", "\n"])), color.background.overlay, semantic$5.zIndex.modal, css(templateObject_3$9 || (templateObject_3$9 = __makeTemplateObject(["animation: ", " ", " ", "", ";"], ["animation: ", " ", " ", "", ";"])), fadeIn$1, motion.duration.normal, motion.easing.easeOut, function (_a) {
5161
5505
  var $isExiting = _a.$isExiting;
5162
5506
  return $isExiting && exitAnimation;
5163
5507
  }));
@@ -5167,7 +5511,7 @@ var StyledDialog = styled.div.withConfig({
5167
5511
  },
5168
5512
  displayName: "Modal__StyledDialog",
5169
5513
  componentId: "sc-1d3g5gh-1"
5170
- })(templateObject_6$6 || (templateObject_6$6 = __makeTemplateObject(["\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) scale(1);\n z-index: ", ";\n\n width: ", ";\n max-width: calc(100vw - ", " * 2);\n max-height: calc(100vh - ", " * 2);\n\n display: flex;\n flex-direction: column;\n\n background-color: ", ";\n border-radius: ", ";\n box-shadow: ", ";\n overflow: hidden;\n\n ", "\n\n ", " {\n animation: ", " ", " ", "", ";\n }\n\n /* Auto-fullscreen below md breakpoint (768px) */\n @media (max-width: ", ") {\n width: 100vw;\n height: 100vh;\n max-width: 100vw;\n max-height: 100vh;\n border-radius: 0;\n top: 0;\n left: 0;\n transform: none;\n animation: ", " ", " ", "", ";\n }\n\n &:focus {\n outline: none;\n }\n\n"], ["\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) scale(1);\n z-index: ", ";\n\n width: ", ";\n max-width: calc(100vw - ", " * 2);\n max-height: calc(100vh - ", " * 2);\n\n display: flex;\n flex-direction: column;\n\n background-color: ", ";\n border-radius: ", ";\n box-shadow: ", ";\n overflow: hidden;\n\n ", "\n\n ", " {\n animation: ", " ", " ", "", ";\n }\n\n /* Auto-fullscreen below md breakpoint (768px) */\n @media (max-width: ", ") {\n width: 100vw;\n height: 100vh;\n max-width: 100vw;\n max-height: 100vh;\n border-radius: 0;\n top: 0;\n left: 0;\n transform: none;\n animation: ", " ", " ", "", ";\n }\n\n &:focus {\n outline: none;\n }\n\n"])), semantic$4.zIndex.modal, function (_a) {
5514
+ })(templateObject_6$6 || (templateObject_6$6 = __makeTemplateObject(["\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) scale(1);\n z-index: ", ";\n\n width: ", ";\n max-width: calc(100vw - ", " * 2);\n max-height: calc(100vh - ", " * 2);\n\n display: flex;\n flex-direction: column;\n\n background-color: ", ";\n border-radius: ", ";\n box-shadow: ", ";\n overflow: hidden;\n\n ", "\n\n ", " {\n animation: ", " ", " ", "", ";\n }\n\n /* Auto-fullscreen below md breakpoint (768px) */\n @media (max-width: ", ") {\n width: 100vw;\n height: 100vh;\n max-width: 100vw;\n max-height: 100vh;\n border-radius: 0;\n top: 0;\n left: 0;\n transform: none;\n animation: ", " ", " ", "", ";\n }\n\n &:focus {\n outline: none;\n }\n\n"], ["\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%) scale(1);\n z-index: ", ";\n\n width: ", ";\n max-width: calc(100vw - ", " * 2);\n max-height: calc(100vh - ", " * 2);\n\n display: flex;\n flex-direction: column;\n\n background-color: ", ";\n border-radius: ", ";\n box-shadow: ", ";\n overflow: hidden;\n\n ", "\n\n ", " {\n animation: ", " ", " ", "", ";\n }\n\n /* Auto-fullscreen below md breakpoint (768px) */\n @media (max-width: ", ") {\n width: 100vw;\n height: 100vh;\n max-width: 100vw;\n max-height: 100vh;\n border-radius: 0;\n top: 0;\n left: 0;\n transform: none;\n animation: ", " ", " ", "", ";\n }\n\n &:focus {\n outline: none;\n }\n\n"])), semantic$5.zIndex.modal, function (_a) {
5171
5515
  var $width = _a.$width;
5172
5516
  return $width;
5173
5517
  }, layout.lg, layout.lg, color.background.subtle, border.radius.xl, elevation.overlay, css(templateObject_5$7 || (templateObject_5$7 = __makeTemplateObject(["animation: ", " ", " ", "", ";"], ["animation: ", " ", " ", "", ";"])), scaleIn, motion.duration.normal, motion.easing.easeOut, function (_a) {
@@ -5176,7 +5520,7 @@ var StyledDialog = styled.div.withConfig({
5176
5520
  }), reducedMotion, fadeIn$1, motion.duration.normal, motion.easing.easeOut, function (_a) {
5177
5521
  var $isExiting = _a.$isExiting;
5178
5522
  return $isExiting && exitAnimation;
5179
- }, semantic$4.breakpoint.md, fadeIn$1, motion.duration.normal, motion.easing.easeOut, function (_a) {
5523
+ }, semantic$5.breakpoint.md, fadeIn$1, motion.duration.normal, motion.easing.easeOut, function (_a) {
5180
5524
  var $isExiting = _a.$isExiting;
5181
5525
  return $isExiting && exitAnimation;
5182
5526
  });
@@ -5187,7 +5531,7 @@ var StyledHeader = styled.div.withConfig({
5187
5531
  var StyledBody = styled.div.withConfig({
5188
5532
  displayName: "Modal__StyledBody",
5189
5533
  componentId: "sc-1d3g5gh-3"
5190
- })(templateObject_8$4 || (templateObject_8$4 = __makeTemplateObject(["\n flex: 1 1 auto;\n overflow-y: auto;\n padding: ", " ", ";\n\n /* Scrollbar styling */\n &::-webkit-scrollbar {\n width: ", ";\n }\n &::-webkit-scrollbar-track {\n background: ", ";\n }\n &::-webkit-scrollbar-thumb {\n background: ", ";\n border-radius: ", ";\n }\n &::-webkit-scrollbar-thumb:hover {\n background: ", ";\n }\n"], ["\n flex: 1 1 auto;\n overflow-y: auto;\n padding: ", " ", ";\n\n /* Scrollbar styling */\n &::-webkit-scrollbar {\n width: ", ";\n }\n &::-webkit-scrollbar-track {\n background: ", ";\n }\n &::-webkit-scrollbar-thumb {\n background: ", ";\n border-radius: ", ";\n }\n &::-webkit-scrollbar-thumb:hover {\n background: ", ";\n }\n"])), layout.md, layout.lg, semantic$4.spacing.layout.sm, color.background.surface, color.border["default"], border.radius.circle, color.border.strong);
5534
+ })(templateObject_8$4 || (templateObject_8$4 = __makeTemplateObject(["\n flex: 1 1 auto;\n overflow-y: auto;\n padding: ", " ", ";\n\n /* Scrollbar styling */\n &::-webkit-scrollbar {\n width: ", ";\n }\n &::-webkit-scrollbar-track {\n background: ", ";\n }\n &::-webkit-scrollbar-thumb {\n background: ", ";\n border-radius: ", ";\n }\n &::-webkit-scrollbar-thumb:hover {\n background: ", ";\n }\n"], ["\n flex: 1 1 auto;\n overflow-y: auto;\n padding: ", " ", ";\n\n /* Scrollbar styling */\n &::-webkit-scrollbar {\n width: ", ";\n }\n &::-webkit-scrollbar-track {\n background: ", ";\n }\n &::-webkit-scrollbar-thumb {\n background: ", ";\n border-radius: ", ";\n }\n &::-webkit-scrollbar-thumb:hover {\n background: ", ";\n }\n"])), layout.md, layout.lg, semantic$5.spacing.layout.sm, color.background.surface, color.border["default"], border.radius.circle, color.border.strong);
5191
5535
  var StyledFooter = styled.div.withConfig({
5192
5536
  displayName: "Modal__StyledFooter",
5193
5537
  componentId: "sc-1d3g5gh-4"
@@ -5371,20 +5715,21 @@ var Modal = function Modal(_a) {
5371
5715
  Modal.displayName = 'Modal';
5372
5716
  var templateObject_1$b, templateObject_2$a, templateObject_3$9, templateObject_4$8, templateObject_5$7, templateObject_6$6, templateObject_7$5, templateObject_8$4, templateObject_9$3;
5373
5717
 
5374
- var input = tokensJson.component.input;
5718
+ var input = tokensJson.component.input,
5719
+ semantic$4 = tokensJson.semantic;
5375
5720
  var StyledInputBase = styled.input.withConfig({
5376
5721
  shouldForwardProp: function shouldForwardProp(prop) {
5377
5722
  return !prop.startsWith('$');
5378
5723
  },
5379
5724
  displayName: "InputBase__StyledInputBase",
5380
5725
  componentId: "sc-1bpf4e8-0"
5381
- })(templateObject_1$a || (templateObject_1$a = __makeTemplateObject(["\n /* Typography */\n font: ", ";\n color: ", ";\n \n /* Layout */\n width: 100%;\n padding: ", " ", ";\n \n /* Visual styling */\n background-color: ", ";\n \n border: ", " solid ", ";\n \n border-radius: ", ";\n \n /* Remove default appearance */\n appearance: none;\n outline: none;\n \n /* Transitions */\n transition: border-color ", " ", ",\n outline ", " ", ";\n \n /* Placeholder */\n &::placeholder {\n color: ", ";\n opacity: 1;\n }\n \n /* Focus state */\n &:focus {\n border-color: ", ";\n outline: ", ";\n outline-offset: ", ";\n }\n \n /* Hover state (only when not disabled) */\n &:hover:not(:disabled) {\n border-color: ", ";\n }\n \n /* Disabled state */\n &:disabled {\n cursor: ", ";\n }\n \n /* Remove number input spinners */\n &[type='number']::-webkit-inner-spin-button,\n &[type='number']::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n \n &[type='number'] {\n -moz-appearance: textfield;\n }\n"], ["\n /* Typography */\n font: ", ";\n color: ", ";\n \n /* Layout */\n width: 100%;\n padding: ", " ", ";\n \n /* Visual styling */\n background-color: ", ";\n \n border: ", " solid ", ";\n \n border-radius: ", ";\n \n /* Remove default appearance */\n appearance: none;\n outline: none;\n \n /* Transitions */\n transition: border-color ", " ", ",\n outline ", " ", ";\n \n /* Placeholder */\n &::placeholder {\n color: ", ";\n opacity: 1;\n }\n \n /* Focus state */\n &:focus {\n border-color: ", ";\n outline: ", ";\n outline-offset: ", ";\n }\n \n /* Hover state (only when not disabled) */\n &:hover:not(:disabled) {\n border-color: ", ";\n }\n \n /* Disabled state */\n &:disabled {\n cursor: ", ";\n }\n \n /* Remove number input spinners */\n &[type='number']::-webkit-inner-spin-button,\n &[type='number']::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n \n &[type='number'] {\n -moz-appearance: textfield;\n }\n"
5726
+ })(templateObject_1$a || (templateObject_1$a = __makeTemplateObject(["\n /* Typography */\n font: ", ";\n color: ", ";\n \n /* Layout */\n width: 100%;\n padding: ", " ", ";\n \n /* Visual styling */\n background-color: ", ";\n \n border: ", " solid ", ";\n \n border-radius: ", ";\n \n /* Remove default appearance */\n appearance: none;\n outline: none;\n \n /* Transitions */\n transition: border-color ", " ", ",\n outline ", " ", ";\n \n /* Placeholder */\n &::placeholder {\n color: ", ";\n opacity: 1;\n }\n \n /* Focus state */\n &:focus {\n border-color: ", ";\n outline: ", ";\n outline-offset: ", ";\n }\n \n /* Hover state (only when not disabled) */\n &:hover:not(:disabled) {\n border-color: ", ";\n }\n \n /* Disabled state */\n &:disabled {\n cursor: not-allowed;\n }\n \n /* Remove number input spinners */\n &[type='number']::-webkit-inner-spin-button,\n &[type='number']::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n \n &[type='number'] {\n -moz-appearance: textfield;\n }\n"], ["\n /* Typography */\n font: ", ";\n color: ", ";\n \n /* Layout */\n width: 100%;\n padding: ", " ", ";\n \n /* Visual styling */\n background-color: ", ";\n \n border: ", " solid ", ";\n \n border-radius: ", ";\n \n /* Remove default appearance */\n appearance: none;\n outline: none;\n \n /* Transitions */\n transition: border-color ", " ", ",\n outline ", " ", ";\n \n /* Placeholder */\n &::placeholder {\n color: ", ";\n opacity: 1;\n }\n \n /* Focus state */\n &:focus {\n border-color: ", ";\n outline: ", ";\n outline-offset: ", ";\n }\n \n /* Hover state (only when not disabled) */\n &:hover:not(:disabled) {\n border-color: ", ";\n }\n \n /* Disabled state */\n &:disabled {\n cursor: not-allowed;\n }\n \n /* Remove number input spinners */\n &[type='number']::-webkit-inner-spin-button,\n &[type='number']::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n \n &[type='number'] {\n -moz-appearance: textfield;\n }\n"
5382
5727
  /**
5383
5728
  * Base styled textarea with shared styling
5384
5729
  */])), input["default"].font, function (_a) {
5385
5730
  var $disabled = _a.$disabled;
5386
5731
  return $disabled ? input.disabled.textColor : input["default"].textColor;
5387
- }, input["default"].paddingY, input["default"].paddingX, function (_a) {
5732
+ }, input["default"].paddingY, semantic$4.spacing.component.lg, function (_a) {
5388
5733
  var $disabled = _a.$disabled;
5389
5734
  return $disabled ? input.disabled.backgroundColor : input["default"].backgroundColor;
5390
5735
  }, input["default"].borderWidth, function (_a) {
@@ -5396,10 +5741,10 @@ var StyledInputBase = styled.input.withConfig({
5396
5741
  }, input["default"].borderRadius, tokensJson.semantic.motion.duration.normal, tokensJson.semantic.motion.easing.easeInOut, tokensJson.semantic.motion.duration.normal, tokensJson.semantic.motion.easing.easeInOut, input.placeholder.textColor, function (_a) {
5397
5742
  var $hasError = _a.$hasError;
5398
5743
  return $hasError ? input.error.focus.borderColor : input.focus.borderColor;
5399
- }, input.focus.outline, input.focus.outlineOffset, function (_a) {
5744
+ }, input.focus.outline, semantic$4.border.focusOffset, function (_a) {
5400
5745
  var $hasError = _a.$hasError;
5401
5746
  return $hasError ? input.error.hover.borderColor : input.hover.borderColor;
5402
- }, input.disabled.cursor);
5747
+ });
5403
5748
  /**
5404
5749
  * Base styled textarea with shared styling
5405
5750
  */
@@ -5413,14 +5758,16 @@ var StyledTextAreaBase = styled.textarea.withConfig({
5413
5758
  var templateObject_1$a, templateObject_2$9;
5414
5759
 
5415
5760
  var field$2 = tokensJson.component.field;
5761
+ // Gaps come from the semantic spacing scale: no component spacing tokens (decision 0022)
5762
+ var gap$2 = tokensJson.semantic.spacing.layout;
5416
5763
  var StyledFieldContainer$2 = styled.div.withConfig({
5417
5764
  displayName: "NumberInput__StyledFieldContainer",
5418
5765
  componentId: "sc-qotc3w-0"
5419
- })(templateObject_1$9 || (templateObject_1$9 = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n gap: ", ";\n width: 100%;\n"], ["\n display: flex;\n flex-direction: column;\n gap: ", ";\n width: 100%;\n"])), field$2.gap);
5766
+ })(templateObject_1$9 || (templateObject_1$9 = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n gap: ", ";\n width: 100%;\n"], ["\n display: flex;\n flex-direction: column;\n gap: ", ";\n width: 100%;\n"])), gap$2.sm);
5420
5767
  var StyledLabel$3 = styled.label.withConfig({
5421
5768
  displayName: "NumberInput__StyledLabel",
5422
5769
  componentId: "sc-qotc3w-1"
5423
- })(templateObject_2$8 || (templateObject_2$8 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: ", ";\n font: ", ";\n color: ", ";\n\n &[data-disabled='true'] {\n color: ", ";\n }\n"], ["\n display: flex;\n align-items: center;\n gap: ", ";\n font: ", ";\n color: ", ";\n\n &[data-disabled='true'] {\n color: ", ";\n }\n"])), field$2.label.gap, field$2.label.typography, field$2.label.color, field$2.label.colorDisabled);
5770
+ })(templateObject_2$8 || (templateObject_2$8 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: ", ";\n font: ", ";\n color: ", ";\n\n &[data-disabled='true'] {\n color: ", ";\n }\n"], ["\n display: flex;\n align-items: center;\n gap: ", ";\n font: ", ";\n color: ", ";\n\n &[data-disabled='true'] {\n color: ", ";\n }\n"])), gap$2.xs, field$2.label.typography, field$2.label.color, field$2.label.colorDisabled);
5424
5771
  var StyledRequiredIndicator$2 = styled.span.withConfig({
5425
5772
  displayName: "NumberInput__StyledRequiredIndicator",
5426
5773
  componentId: "sc-qotc3w-2"
@@ -5672,10 +6019,36 @@ var PageTitleStyled = styled.div.withConfig({
5672
6019
  },
5673
6020
  displayName: "PageTitle__PageTitleStyled",
5674
6021
  componentId: "sc-16h256f-0"
5675
- })(templateObject_1$8 || (templateObject_1$8 = __makeTemplateObject(["\n margin-bottom: ", ";\n margin-top: ", ";\n"], ["\n margin-bottom: ", ";\n margin-top: ", ";\n"])), tokensJson.semantic.spacing.layout['2xl'], function (_a) {
6022
+ })(templateObject_1$8 || (templateObject_1$8 = __makeTemplateObject(["\n margin-bottom: ", ";\n margin-top: ", ";\n"], ["\n margin-bottom: ", ";\n margin-top: ", ";\n"
6023
+ /**
6024
+ * @deprecated PageTitle is a leftover from the personal site (its back button always links to `/music`)
6025
+ * and will be removed in the next major version. Compose a page title from `Typography` in a `Stack`:
6026
+ *
6027
+ * ```tsx
6028
+ * <Stack direction="column" gap="md">
6029
+ * <Typography variant="h1">{title}</Typography>
6030
+ * <Typography variant="caption" color="subdued">{subtitle}</Typography>
6031
+ * </Stack>
6032
+ * ```
6033
+ *
6034
+ * For a back link, add an `IconButton` with your own `url` and `aria-label`.
6035
+ */])), tokensJson.semantic.spacing.layout['2xl'], function (_a) {
5676
6036
  var $hasBackButton = _a.$hasBackButton;
5677
6037
  return $hasBackButton ? tokensJson.semantic.spacing.layout.none : tokensJson.semantic.spacing.layout['7xl'];
5678
6038
  });
6039
+ /**
6040
+ * @deprecated PageTitle is a leftover from the personal site (its back button always links to `/music`)
6041
+ * and will be removed in the next major version. Compose a page title from `Typography` in a `Stack`:
6042
+ *
6043
+ * ```tsx
6044
+ * <Stack direction="column" gap="md">
6045
+ * <Typography variant="h1">{title}</Typography>
6046
+ * <Typography variant="caption" color="subdued">{subtitle}</Typography>
6047
+ * </Stack>
6048
+ * ```
6049
+ *
6050
+ * For a back link, add an `IconButton` with your own `url` and `aria-label`.
6051
+ */
5679
6052
  var PageTitle = function PageTitle(_a) {
5680
6053
  var title = _a.title,
5681
6054
  _b = _a.hasBackButton,
@@ -5706,14 +6079,16 @@ var PageTitle = function PageTitle(_a) {
5706
6079
  var templateObject_1$8;
5707
6080
 
5708
6081
  var field$1 = tokensJson.component.field;
6082
+ // Gaps come from the semantic spacing scale: no component spacing tokens (decision 0022)
6083
+ var gap$1 = tokensJson.semantic.spacing.layout;
5709
6084
  var StyledFieldContainer$1 = styled.div.withConfig({
5710
6085
  displayName: "PasswordField__StyledFieldContainer",
5711
6086
  componentId: "sc-1p15zk0-0"
5712
- })(templateObject_1$7 || (templateObject_1$7 = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n gap: ", ";\n width: 100%;\n"], ["\n display: flex;\n flex-direction: column;\n gap: ", ";\n width: 100%;\n"])), field$1.gap);
6087
+ })(templateObject_1$7 || (templateObject_1$7 = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n gap: ", ";\n width: 100%;\n"], ["\n display: flex;\n flex-direction: column;\n gap: ", ";\n width: 100%;\n"])), gap$1.sm);
5713
6088
  var StyledLabel$2 = styled.label.withConfig({
5714
6089
  displayName: "PasswordField__StyledLabel",
5715
6090
  componentId: "sc-1p15zk0-1"
5716
- })(templateObject_2$7 || (templateObject_2$7 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: ", ";\n font: ", ";\n color: ", ";\n\n &[data-disabled='true'] {\n color: ", ";\n }\n"], ["\n display: flex;\n align-items: center;\n gap: ", ";\n font: ", ";\n color: ", ";\n\n &[data-disabled='true'] {\n color: ", ";\n }\n"])), field$1.label.gap, field$1.label.typography, field$1.label.color, field$1.label.colorDisabled);
6091
+ })(templateObject_2$7 || (templateObject_2$7 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: ", ";\n font: ", ";\n color: ", ";\n\n &[data-disabled='true'] {\n color: ", ";\n }\n"], ["\n display: flex;\n align-items: center;\n gap: ", ";\n font: ", ";\n color: ", ";\n\n &[data-disabled='true'] {\n color: ", ";\n }\n"])), gap$1.xs, field$1.label.typography, field$1.label.color, field$1.label.colorDisabled);
5717
6092
  var StyledRequiredIndicator$1 = styled.span.withConfig({
5718
6093
  displayName: "PasswordField__StyledRequiredIndicator",
5719
6094
  componentId: "sc-1p15zk0-2"
@@ -5847,14 +6222,14 @@ var StyledInputWrapper = styled.div.withConfig({
5847
6222
  displayName: "SearchField__StyledInputWrapper",
5848
6223
  componentId: "sc-qhz9i8-1"
5849
6224
  })(templateObject_2$6 || (templateObject_2$6 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: ", ";\n padding: ", " ", ";\n background-color: ", ";\n border: ", " solid ", ";\n border-radius: ", ";\n transition: border-color ", " ", ", outline ", " ", ";\n \n ", "\n \n ", "\n \n &:hover:not([data-disabled='true']) {\n border-color: ", ";\n }\n"], ["\n display: flex;\n align-items: center;\n gap: ", ";\n padding: ", " ", ";\n background-color: ", ";\n border: ", " solid ", ";\n border-radius: ", ";\n transition: border-color ", " ", ", outline ", " ", ";\n \n ", "\n \n ", "\n \n &:hover:not([data-disabled='true']) {\n border-color: ", ";\n }\n"])), semantic$3.spacing.layout.sm, semantic$3.spacing.layout.sm, semantic$3.spacing.layout.md, component.input["default"].backgroundColor, component.input["default"].borderWidth, component.input["default"].borderColor, component.input["default"].borderRadius, semantic$3.motion.duration.normal, semantic$3.motion.easing.easeInOut, semantic$3.motion.duration.normal, semantic$3.motion.easing.easeInOut, function (props) {
5850
- return props.$isFocused && "\n border-color: ".concat(component.input.focus.borderColor, ";\n outline: ").concat(component.input.focus.outline, ";\n outline-offset: ").concat(component.input.focus.outlineOffset, ";\n ");
6225
+ return props.$isFocused && "\n border-color: ".concat(component.input.focus.borderColor, ";\n outline: ").concat(component.input.focus.outline, ";\n outline-offset: ").concat(semantic$3.border.focusOffset, ";\n ");
5851
6226
  }, function (props) {
5852
6227
  return props.$disabled && "\n background-color: ".concat(component.input.disabled.backgroundColor, ";\n border-color: ").concat(component.input.disabled.borderColor, ";\n cursor: not-allowed;\n ");
5853
6228
  }, component.input.hover.borderColor);
5854
6229
  var StyledInput = styled.input.withConfig({
5855
6230
  displayName: "SearchField__StyledInput",
5856
6231
  componentId: "sc-qhz9i8-2"
5857
- })(templateObject_3$6 || (templateObject_3$6 = __makeTemplateObject(["\n flex: 1;\n border: none;\n background: transparent;\n font: ", ";\n color: ", ";\n outline: none;\n \n &::placeholder {\n color: ", ";\n }\n \n &:disabled {\n color: ", ";\n cursor: not-allowed;\n }\n"], ["\n flex: 1;\n border: none;\n background: transparent;\n font: ", ";\n color: ", ";\n outline: none;\n \n &::placeholder {\n color: ", ";\n }\n \n &:disabled {\n color: ", ";\n cursor: not-allowed;\n }\n"])), semantic$3.typography.body, semantic$3.color.text["default"], semantic$3.color.text.subdued, semantic$3.color.text.disabled);
6232
+ })(templateObject_3$6 || (templateObject_3$6 = __makeTemplateObject(["\n flex: 1;\n border: none;\n background: transparent;\n font: ", ";\n color: ", ";\n outline: none;\n \n &::placeholder {\n color: ", ";\n /* Firefox fades placeholders to 0.54 by default, which would undo the 4.5:1 contrast */\n opacity: 1;\n }\n \n &:disabled {\n color: ", ";\n cursor: not-allowed;\n }\n"], ["\n flex: 1;\n border: none;\n background: transparent;\n font: ", ";\n color: ", ";\n outline: none;\n \n &::placeholder {\n color: ", ";\n /* Firefox fades placeholders to 0.54 by default, which would undo the 4.5:1 contrast */\n opacity: 1;\n }\n \n &:disabled {\n color: ", ";\n cursor: not-allowed;\n }\n"])), semantic$3.typography.body, semantic$3.color.text["default"], component.input.placeholder.textColor, semantic$3.color.text.disabled);
5858
6233
  var StyledSuggestionsList = styled.ul.withConfig({
5859
6234
  displayName: "SearchField__StyledSuggestionsList",
5860
6235
  componentId: "sc-qhz9i8-3"
@@ -6417,7 +6792,7 @@ var StyledTrack = styled.div.withConfig({
6417
6792
  componentId: "sc-6mh2d4-3"
6418
6793
  })(templateObject_4$3 || (templateObject_4$3 = __makeTemplateObject(["\n position: relative;\n width: 100%;\n height: ", ";\n background-color: ", ";\n border-radius: ", ";\n cursor: ", ";\n"], ["\n position: relative;\n width: 100%;\n height: ", ";\n background-color: ", ";\n border-radius: ", ";\n cursor: ", ";\n"])), semantic$1.spacing.layout.xs, function (_a) {
6419
6794
  var $disabled = _a.$disabled;
6420
- return $disabled ? semantic$1.color.background.disabled : semantic$1.color.border["default"];
6795
+ return $disabled ? semantic$1.color.background.disabled : semantic$1.color.background.progressTrack;
6421
6796
  }, semantic$1.border.radius.circle, function (_a) {
6422
6797
  var $disabled = _a.$disabled;
6423
6798
  return $disabled ? 'not-allowed' : 'pointer';
@@ -6427,7 +6802,7 @@ var StyledTrackFill = styled.div.withConfig({
6427
6802
  componentId: "sc-6mh2d4-4"
6428
6803
  })(templateObject_5$2 || (templateObject_5$2 = __makeTemplateObject(["\n position: absolute;\n height: 100%;\n background-color: ", ";\n border-radius: ", ";\n pointer-events: none;\n"], ["\n position: absolute;\n height: 100%;\n background-color: ", ";\n border-radius: ", ";\n pointer-events: none;\n"])), function (_a) {
6429
6804
  var $disabled = _a.$disabled;
6430
- return $disabled ? semantic$1.color.border["default"] : semantic$1.color.background.emphasis;
6805
+ return $disabled ? semantic$1.color.icon.disabled : semantic$1.color.background.emphasis;
6431
6806
  }, semantic$1.border.radius.circle);
6432
6807
  var StyledThumb = styled.div.withConfig({
6433
6808
  displayName: "Slider__StyledThumb",
@@ -6437,7 +6812,7 @@ var StyledThumb = styled.div.withConfig({
6437
6812
  return $disabled ? semantic$1.color.background.disabled : semantic$1.color.background.subtle;
6438
6813
  }, semantic$1.border.width.thick, function (_a) {
6439
6814
  var $disabled = _a.$disabled;
6440
- return $disabled ? semantic$1.color.border["default"] : semantic$1.color.background.emphasis;
6815
+ return $disabled ? semantic$1.color.icon.disabled : semantic$1.color.background.emphasis;
6441
6816
  }, semantic$1.border.radius.circle, function (_a) {
6442
6817
  var $disabled = _a.$disabled;
6443
6818
  return $disabled ? 'not-allowed' : 'grab';
@@ -6803,47 +7178,42 @@ var templateObject_1$4, templateObject_2$4, templateObject_3$4, templateObject_4
6803
7178
 
6804
7179
  var semantic = tokensJson.semantic;
6805
7180
  var StyledTabList = styled.div.withConfig({
6806
- shouldForwardProp: function shouldForwardProp(prop) {
6807
- return !prop.startsWith('$');
6808
- },
6809
7181
  displayName: "TabBar__StyledTabList",
6810
7182
  componentId: "sc-1g9ib0y-0"
6811
- })(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: ", ";\n border-bottom: ", ";\n overflow-x: auto;\n overflow-y: hidden;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: thin;\n \n &::-webkit-scrollbar {\n height: ", ";\n }\n \n &::-webkit-scrollbar-track {\n background: ", ";\n }\n \n &::-webkit-scrollbar-thumb {\n background: ", ";\n border-radius: ", ";\n }\n"], ["\n display: flex;\n align-items: center;\n gap: ", ";\n border-bottom: ", ";\n overflow-x: auto;\n overflow-y: hidden;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: thin;\n \n &::-webkit-scrollbar {\n height: ", ";\n }\n \n &::-webkit-scrollbar-track {\n background: ", ";\n }\n \n &::-webkit-scrollbar-thumb {\n background: ", ";\n border-radius: ", ";\n }\n"])), function (props) {
6812
- return props.$variant === 'pills' ? semantic.spacing.layout.sm : '0';
6813
- }, function (props) {
6814
- return props.$variant === 'underline' ? "".concat(semantic.border.width.thin, " solid ").concat(semantic.color.border.subtle) : 'none';
6815
- }, tokensJson.component.tabBar.scrollbar.height, semantic.color.background.subtle, semantic.color.border["default"], semantic.border.radius.sm);
7183
+ })(templateObject_1$3 || (templateObject_1$3 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n border-bottom: ", " solid ", ";\n overflow-x: auto;\n overflow-y: hidden;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: thin;\n \n &::-webkit-scrollbar {\n height: ", ";\n }\n \n &::-webkit-scrollbar-track {\n background: ", ";\n }\n \n &::-webkit-scrollbar-thumb {\n background: ", ";\n border-radius: ", ";\n }\n"], ["\n display: flex;\n align-items: center;\n border-bottom: ", " solid ", ";\n overflow-x: auto;\n overflow-y: hidden;\n -webkit-overflow-scrolling: touch;\n scrollbar-width: thin;\n \n &::-webkit-scrollbar {\n height: ", ";\n }\n \n &::-webkit-scrollbar-track {\n background: ", ";\n }\n \n &::-webkit-scrollbar-thumb {\n background: ", ";\n border-radius: ", ";\n }\n"])), semantic.border.width.thin, semantic.color.border.subtle, tokensJson.component.tabBar.scrollbar.height, semantic.color.background.subtle, semantic.color.border["default"], semantic.border.radius.sm);
6816
7184
  var StyledTab = styled.button.withConfig({
6817
7185
  shouldForwardProp: function shouldForwardProp(prop) {
6818
7186
  return !prop.startsWith('$');
6819
7187
  },
6820
7188
  displayName: "TabBar__StyledTab",
6821
7189
  componentId: "sc-1g9ib0y-1"
6822
- })(templateObject_2$3 || (templateObject_2$3 = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n gap: ", ";\n padding: ", " ", ";\n font: ", ";\n white-space: nowrap;\n cursor: ", ";\n border: none;\n background: transparent;\n transition: ", ";\n position: relative;\n \n /* Variant-specific styles */\n ", "\n \n /* Disabled state */\n opacity: ", ";\n \n /* Focus state */\n &:focus-visible {\n outline: ", " solid ", ";\n outline-offset: ", ";\n z-index: 1;\n }\n \n /* Active/pressed state */\n &:active:not(:disabled) {\n transform: translateY(1px);\n }\n"], ["\n display: inline-flex;\n align-items: center;\n gap: ", ";\n padding: ", " ", ";\n font: ", ";\n white-space: nowrap;\n cursor: ", ";\n border: none;\n background: transparent;\n transition: ", ";\n position: relative;\n \n /* Variant-specific styles */\n ", "\n \n /* Disabled state */\n opacity: ", ";\n \n /* Focus state */\n &:focus-visible {\n outline: ", " solid ", ";\n outline-offset: ", ";\n z-index: 1;\n }\n \n /* Active/pressed state */\n &:active:not(:disabled) {\n transform: translateY(1px);\n }\n"])), semantic.spacing.layout.sm, semantic.spacing.layout.md, semantic.spacing.layout.lg, semantic.typography.button2, function (props) {
7190
+ })(templateObject_2$3 || (templateObject_2$3 = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n gap: ", ";\n padding: ", " ", ";\n font: ", ";\n white-space: nowrap;\n cursor: ", ";\n border: none;\n background: transparent;\n transition: ", ";\n position: relative;\n \n /* Selected tab: the light-blue selected treatment plus a blue underline (decisions 0016, 0020).\n The text darkens with the fill on hover and press so every state stays at least 4.5:1. */\n border-radius: ", " ", " 0 0;\n background-color: ", ";\n color: ", ";\n\n &::after {\n content: '';\n position: absolute;\n bottom: -1px;\n left: 0;\n right: 0;\n height: ", ";\n background-color: ", ";\n transition: ", ";\n }\n\n &:hover:not(:disabled) {\n background-color: ", ";\n color: ", ";\n }\n\n &:active:not(:disabled) {\n background-color: ", ";\n color: ", ";\n }\n\n /* Disabled state */\n opacity: ", ";\n \n /* Focus state */\n &:focus-visible {\n outline: ", " solid ", ";\n outline-offset: ", ";\n z-index: 1;\n }\n \n /* Pressed nudge */\n &:active:not(:disabled) {\n transform: translateY(1px);\n }\n"], ["\n display: inline-flex;\n align-items: center;\n gap: ", ";\n padding: ", " ", ";\n font: ", ";\n white-space: nowrap;\n cursor: ", ";\n border: none;\n background: transparent;\n transition: ", ";\n position: relative;\n \n /* Selected tab: the light-blue selected treatment plus a blue underline (decisions 0016, 0020).\n The text darkens with the fill on hover and press so every state stays at least 4.5:1. */\n border-radius: ", " ", " 0 0;\n background-color: ", ";\n color: ", ";\n\n &::after {\n content: '';\n position: absolute;\n bottom: -1px;\n left: 0;\n right: 0;\n height: ", ";\n background-color: ", ";\n transition: ", ";\n }\n\n &:hover:not(:disabled) {\n background-color: ", ";\n color: ", ";\n }\n\n &:active:not(:disabled) {\n background-color: ", ";\n color: ", ";\n }\n\n /* Disabled state */\n opacity: ", ";\n \n /* Focus state */\n &:focus-visible {\n outline: ", " solid ", ";\n outline-offset: ", ";\n z-index: 1;\n }\n \n /* Pressed nudge */\n &:active:not(:disabled) {\n transform: translateY(1px);\n }\n"])), semantic.spacing.layout.sm, semantic.spacing.layout.md, semantic.spacing.layout.lg, semantic.typography.button2, function (props) {
6823
7191
  return props.$disabled ? 'not-allowed' : 'pointer';
7192
+ }, semantic.motion.hover, semantic.border.radius.sm, semantic.border.radius.sm, function (props) {
7193
+ return props.$isActive ? semantic.color.background['interactive-subtle'] : 'transparent';
7194
+ }, function (props) {
7195
+ return props.$isActive ? semantic.color.text.interactive : semantic.color.text.subdued;
7196
+ }, semantic.border.width.thick, function (props) {
7197
+ return props.$isActive ? semantic.color.background.interactive : 'transparent';
6824
7198
  }, semantic.motion.hover, function (props) {
6825
- if (props.$variant === 'pills') {
6826
- return "\n border-radius: ".concat(semantic.border.radius.circle, ";\n background-color: ").concat(props.$isActive ? semantic.color.background.interactive : semantic.color.background.subtle, ";\n color: ").concat(props.$isActive ? semantic.color.text.inverse : semantic.color.text["default"], ";\n \n &:hover:not(:disabled) {\n background-color: ").concat(props.$isActive ? semantic.color.background['interactive-hover'] : semantic.color.background.surface, ";\n }\n ");
6827
- }
6828
- if (props.$variant === 'underline') {
6829
- return "\n color: ".concat(props.$isActive ? semantic.color.text.interactive : semantic.color.text.subdued, ";\n \n &::after {\n content: '';\n position: absolute;\n bottom: -1px;\n left: 0;\n right: 0;\n height: ").concat(semantic.border.width.thick, ";\n background-color: ").concat(props.$isActive ? semantic.color.background.interactive : 'transparent', ";\n transition: ").concat(semantic.motion.hover, ";\n }\n \n &:hover:not(:disabled) {\n color: ").concat(semantic.color.text.interactive, ";\n }\n ");
6830
- }
6831
- // default variant
6832
- return "\n border-radius: ".concat(semantic.border.radius.sm, " ").concat(semantic.border.radius.sm, " 0 0;\n background-color: ").concat(props.$isActive ? semantic.color.background.subtle : semantic.color.background["default"], ";\n color: ").concat(props.$isActive ? semantic.color.text["default"] : semantic.color.text.subdued, ";\n border: ").concat(semantic.border.width.thin, " solid ").concat(semantic.color.border["default"], ";\n border-bottom: ").concat(props.$isActive ? 'none' : "".concat(semantic.border.width.thin, " solid ").concat(semantic.color.border["default"]), ";\n margin-bottom: ").concat(props.$isActive ? '-1px' : '0', ";\n \n &:hover:not(:disabled) {\n background-color: ").concat(semantic.color.background.surface, ";\n color: ").concat(semantic.color.text["default"], ";\n }\n ");
7199
+ return props.$isActive ? semantic.color.background['interactive-subtle-hover'] : 'transparent';
7200
+ }, function (props) {
7201
+ return props.$isActive ? semantic.color.text['interactive-hover'] : semantic.color.text["default"];
7202
+ }, function (props) {
7203
+ return props.$isActive ? semantic.color.background['interactive-subtle-active'] : 'transparent';
7204
+ }, function (props) {
7205
+ return props.$isActive ? semantic.color.text['interactive-active'] : semantic.color.text["default"];
6833
7206
  }, function (props) {
6834
7207
  return props.$disabled ? '0.5' : '1';
6835
7208
  }, semantic.border.width.thick, semantic.color.border.strong, semantic.spacing.layout.xs);
6836
7209
  var StyledBadge = styled.span.withConfig({
6837
- shouldForwardProp: function shouldForwardProp(prop) {
6838
- return !prop.startsWith('$');
6839
- },
6840
7210
  displayName: "TabBar__StyledBadge",
6841
7211
  componentId: "sc-1g9ib0y-2"
6842
7212
  })(templateObject_3$3 || (templateObject_3$3 = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: ", ";\n height: ", ";\n padding: 0 ", ";\n font: ", ";\n font-weight: ", ";\n border-radius: ", ";\n background-color: ", ";\n color: ", ";\n"], ["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: ", ";\n height: ", ";\n padding: 0 ", ";\n font: ", ";\n font-weight: ", ";\n border-radius: ", ";\n background-color: ", ";\n color: ", ";\n"
6843
7213
  /**
6844
7214
  * TabBar component for tabbed navigation
6845
7215
  *
6846
- * Provides accessible tab navigation with 3 visual variants, keyboard support,
7216
+ * Provides accessible tab navigation with an underline style, keyboard support,
6847
7217
  * and optional badge counts. Follows ARIA tablist pattern.
6848
7218
  *
6849
7219
  * @example
@@ -6858,21 +7228,13 @@ var StyledBadge = styled.span.withConfig({
6858
7228
  * ]}
6859
7229
  * activeTab={activeTab}
6860
7230
  * onTabChange={setActiveTab}
6861
- * variant="pills"
6862
7231
  * />
6863
7232
  * ```
6864
- */])), tokensJson.component.tabBar.badge.size, tokensJson.component.tabBar.badge.size, semantic.spacing.layout.xs, tokensJson.component.tabBar.badge.typography, tokensJson.component.tabBar.badge.fontWeight, semantic.border.radius.circle, function (props) {
6865
- if (props.$variant === 'pills') {
6866
- return props.$isActive ? 'rgba(255, 255, 255, 0.2)' : semantic.color.background.interactive;
6867
- }
6868
- return semantic.color.background.interactive;
6869
- }, function (props) {
6870
- return props.$variant === 'pills' && props.$isActive ? semantic.color.text.inverse : semantic.color.text.inverse;
6871
- });
7233
+ */])), tokensJson.component.tabBar.badge.size, tokensJson.component.tabBar.badge.size, semantic.spacing.layout.xs, tokensJson.component.tabBar.badge.typography, tokensJson.component.tabBar.badge.fontWeight, semantic.border.radius.circle, semantic.color.background.interactive, semantic.color.text.inverse);
6872
7234
  /**
6873
7235
  * TabBar component for tabbed navigation
6874
7236
  *
6875
- * Provides accessible tab navigation with 3 visual variants, keyboard support,
7237
+ * Provides accessible tab navigation with an underline style, keyboard support,
6876
7238
  * and optional badge counts. Follows ARIA tablist pattern.
6877
7239
  *
6878
7240
  * @example
@@ -6887,27 +7249,26 @@ var StyledBadge = styled.span.withConfig({
6887
7249
  * ]}
6888
7250
  * activeTab={activeTab}
6889
7251
  * onTabChange={setActiveTab}
6890
- * variant="pills"
6891
7252
  * />
6892
7253
  * ```
6893
7254
  */
6894
7255
  var TabBar = function TabBar(_a) {
6895
7256
  var tabs = _a.tabs,
6896
7257
  activeTab = _a.activeTab,
6897
- onTabChange = _a.onTabChange,
6898
- _b = _a.variant,
6899
- variant = _b === void 0 ? 'default' : _b,
6900
- _c = _a["aria-label"],
6901
- ariaLabel = _c === void 0 ? 'Tab navigation' : _c,
7258
+ onTabChange = _a.onTabChange;
7259
+ // Deprecated: every variant renders as underline (decision 0020)
7260
+ _a.variant;
7261
+ var _b = _a["aria-label"],
7262
+ ariaLabel = _b === void 0 ? 'Tab navigation' : _b,
6902
7263
  dataTestId = _a["data-testid"];
6903
7264
  var tabRefs = useRef([]);
6904
- var _d = useState(function () {
7265
+ var _c = useState(function () {
6905
7266
  return tabs.findIndex(function (tab) {
6906
7267
  return tab.id === activeTab;
6907
7268
  });
6908
7269
  }),
6909
- focusedIndex = _d[0],
6910
- setFocusedIndex = _d[1];
7270
+ focusedIndex = _c[0],
7271
+ setFocusedIndex = _c[1];
6911
7272
  // Update focused index when active tab changes externally
6912
7273
  useEffect(function () {
6913
7274
  var newIndex = tabs.findIndex(function (tab) {
@@ -6982,7 +7343,6 @@ var TabBar = function TabBar(_a) {
6982
7343
  }
6983
7344
  };
6984
7345
  return jsx(StyledTabList, {
6985
- "$variant": variant,
6986
7346
  role: "tablist",
6987
7347
  "aria-label": ariaLabel,
6988
7348
  "data-testid": dataTestId,
@@ -6991,7 +7351,6 @@ var TabBar = function TabBar(_a) {
6991
7351
  ref: function ref(el) {
6992
7352
  tabRefs.current[index] = el;
6993
7353
  },
6994
- "$variant": variant,
6995
7354
  "$isActive": tab.id === activeTab,
6996
7355
  "$disabled": tab.disabled || false,
6997
7356
  role: "tab",
@@ -7007,8 +7366,6 @@ var TabBar = function TabBar(_a) {
7007
7366
  },
7008
7367
  "data-testid": "".concat(dataTestId, "-tab-").concat(tab.id),
7009
7368
  children: [tab.label, typeof tab.badge === 'number' && tab.badge > 0 && jsx(StyledBadge, {
7010
- "$variant": variant,
7011
- "$isActive": tab.id === activeTab,
7012
7369
  "aria-label": "".concat(tab.badge, " items"),
7013
7370
  children: tab.badge > 99 ? '99+' : tab.badge
7014
7371
  })]
@@ -7020,14 +7377,16 @@ TabBar.displayName = 'TabBar';
7020
7377
  var templateObject_1$3, templateObject_2$3, templateObject_3$3;
7021
7378
 
7022
7379
  var field = tokensJson.component.field;
7380
+ // Gaps come from the semantic spacing scale: no component spacing tokens (decision 0022)
7381
+ var gap = tokensJson.semantic.spacing.layout;
7023
7382
  var StyledFieldContainer = styled.div.withConfig({
7024
7383
  displayName: "TextField__StyledFieldContainer",
7025
7384
  componentId: "sc-1ys3b0-0"
7026
- })(templateObject_1$2 || (templateObject_1$2 = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n gap: ", ";\n width: 100%;\n"], ["\n display: flex;\n flex-direction: column;\n gap: ", ";\n width: 100%;\n"])), field.gap);
7385
+ })(templateObject_1$2 || (templateObject_1$2 = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n gap: ", ";\n width: 100%;\n"], ["\n display: flex;\n flex-direction: column;\n gap: ", ";\n width: 100%;\n"])), gap.sm);
7027
7386
  var StyledLabel = styled.label.withConfig({
7028
7387
  displayName: "TextField__StyledLabel",
7029
7388
  componentId: "sc-1ys3b0-1"
7030
- })(templateObject_2$2 || (templateObject_2$2 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: ", ";\n font: ", ";\n color: ", ";\n\n &[data-disabled='true'] {\n color: ", ";\n }\n"], ["\n display: flex;\n align-items: center;\n gap: ", ";\n font: ", ";\n color: ", ";\n\n &[data-disabled='true'] {\n color: ", ";\n }\n"])), field.label.gap, field.label.typography, field.label.color, field.label.colorDisabled);
7389
+ })(templateObject_2$2 || (templateObject_2$2 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: ", ";\n font: ", ";\n color: ", ";\n\n &[data-disabled='true'] {\n color: ", ";\n }\n"], ["\n display: flex;\n align-items: center;\n gap: ", ";\n font: ", ";\n color: ", ";\n\n &[data-disabled='true'] {\n color: ", ";\n }\n"])), gap.xs, field.label.typography, field.label.color, field.label.colorDisabled);
7031
7390
  var StyledRequiredIndicator = styled.span.withConfig({
7032
7391
  displayName: "TextField__StyledRequiredIndicator",
7033
7392
  componentId: "sc-1ys3b0-2"
@@ -7160,9 +7519,9 @@ var StyledTruncatedText = styled.span.withConfig({
7160
7519
  displayName: "TransactionListItem__StyledTruncatedText",
7161
7520
  componentId: "sc-7yunm0-8"
7162
7521
  })(templateObject_9$1 || (templateObject_9$1 = __makeTemplateObject(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n"], ["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n"
7163
- // Map categories to CategoryBadge configurations
7522
+ // Map categories to CategoryLabel configurations
7164
7523
  ])));
7165
- // Map categories to CategoryBadge configurations
7524
+ // Map categories to CategoryLabel configurations
7166
7525
  var categoryConfig = {
7167
7526
  shopping: {
7168
7527
  color: 'purple',
@@ -7276,10 +7635,10 @@ var TransactionListItem = function TransactionListItem(_a) {
7276
7635
  variant: "body",
7277
7636
  children: merchant
7278
7637
  })
7279
- }), categoryData && jsx(CategoryBadge, {
7638
+ }), categoryData && jsx(CategoryLabel, {
7280
7639
  color: categoryData.color,
7281
7640
  icon: categoryData.icon,
7282
- size: "small",
7641
+ size: "medium",
7283
7642
  variant: "minimal",
7284
7643
  "aria-label": "Category: ".concat(categoryData.label),
7285
7644
  children: categoryData.label
@@ -7378,6 +7737,7 @@ var Grid = function Grid(_a) {
7378
7737
  gapX = _a.gapX,
7379
7738
  gapY = _a.gapY,
7380
7739
  className = _a.className,
7740
+ dataTestId = _a["data-testid"],
7381
7741
  children = _a.children;
7382
7742
  return jsx(GridContainer, {
7383
7743
  "$cols": cols,
@@ -7385,6 +7745,7 @@ var Grid = function Grid(_a) {
7385
7745
  "$gapX": gapX ? gapSpacing[gapX] : undefined,
7386
7746
  "$gapY": gapY ? gapSpacing[gapY] : undefined,
7387
7747
  className: className,
7748
+ "data-testid": dataTestId,
7388
7749
  children: children
7389
7750
  });
7390
7751
  };
@@ -7397,7 +7758,7 @@ var GridColContainer = styled.div.withConfig({
7397
7758
  })(templateObject_15 || (templateObject_15 = __makeTemplateObject(["\n ", "\n ", "\n \n ", "\n \n ", "\n \n ", "\n \n ", "\n \n ", "\n \n ", "\n \n ", "\n \n ", "\n"], ["\n ", "\n ", "\n \n ", "\n \n ", "\n \n ", "\n \n ", "\n \n ", "\n \n ", "\n \n ", "\n \n ", "\n"])), function (props) {
7398
7759
  return props.$span && css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["grid-column: span ", " / span ", ";"], ["grid-column: span ", " / span ", ";"])), props.$span, props.$span);
7399
7760
  }, function (props) {
7400
- return props.$order && css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["order: ", ";"], ["order: ", ";"])), props.$order);
7761
+ return props.$order !== undefined && css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["order: ", ";"], ["order: ", ";"])), props.$order);
7401
7762
  }, function (props) {
7402
7763
  return props.$spanSm && css(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n ", " {\n grid-column: span ", " / span ", ";\n }\n "], ["\n ", " {\n grid-column: span ", " / span ", ";\n }\n "])), media.sm, props.$spanSm, props.$spanSm);
7403
7764
  }, function (props) {
@@ -7407,13 +7768,13 @@ var GridColContainer = styled.div.withConfig({
7407
7768
  }, function (props) {
7408
7769
  return props.$spanXl && css(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n ", " {\n grid-column: span ", " / span ", ";\n }\n "], ["\n ", " {\n grid-column: span ", " / span ", ";\n }\n "])), media.xl, props.$spanXl, props.$spanXl);
7409
7770
  }, function (props) {
7410
- return props.$orderSm && css(templateObject_11 || (templateObject_11 = __makeTemplateObject(["\n ", " {\n order: ", ";\n }\n "], ["\n ", " {\n order: ", ";\n }\n "])), media.sm, props.$orderSm);
7771
+ return props.$orderSm !== undefined && css(templateObject_11 || (templateObject_11 = __makeTemplateObject(["\n ", " {\n order: ", ";\n }\n "], ["\n ", " {\n order: ", ";\n }\n "])), media.sm, props.$orderSm);
7411
7772
  }, function (props) {
7412
- return props.$orderMd && css(templateObject_12 || (templateObject_12 = __makeTemplateObject(["\n ", " {\n order: ", ";\n }\n "], ["\n ", " {\n order: ", ";\n }\n "])), media.md, props.$orderMd);
7773
+ return props.$orderMd !== undefined && css(templateObject_12 || (templateObject_12 = __makeTemplateObject(["\n ", " {\n order: ", ";\n }\n "], ["\n ", " {\n order: ", ";\n }\n "])), media.md, props.$orderMd);
7413
7774
  }, function (props) {
7414
- return props.$orderLg && css(templateObject_13 || (templateObject_13 = __makeTemplateObject(["\n ", " {\n order: ", ";\n }\n "], ["\n ", " {\n order: ", ";\n }\n "])), media.lg, props.$orderLg);
7775
+ return props.$orderLg !== undefined && css(templateObject_13 || (templateObject_13 = __makeTemplateObject(["\n ", " {\n order: ", ";\n }\n "], ["\n ", " {\n order: ", ";\n }\n "])), media.lg, props.$orderLg);
7415
7776
  }, function (props) {
7416
- return props.$orderXl && css(templateObject_14 || (templateObject_14 = __makeTemplateObject(["\n ", " {\n order: ", ";\n }\n "], ["\n ", " {\n order: ", ";\n }\n "])), media.xl, props.$orderXl);
7777
+ return props.$orderXl !== undefined && css(templateObject_14 || (templateObject_14 = __makeTemplateObject(["\n ", " {\n order: ", ";\n }\n "], ["\n ", " {\n order: ", ";\n }\n "])), media.xl, props.$orderXl);
7417
7778
  });
7418
7779
  var GridCol = function GridCol(_a) {
7419
7780
  var span = _a.span,
@@ -7427,6 +7788,7 @@ var GridCol = function GridCol(_a) {
7427
7788
  orderLg = _a.orderLg,
7428
7789
  orderXl = _a.orderXl,
7429
7790
  className = _a.className,
7791
+ dataTestId = _a["data-testid"],
7430
7792
  children = _a.children;
7431
7793
  return jsx(GridColContainer, {
7432
7794
  "$span": span,
@@ -7440,6 +7802,7 @@ var GridCol = function GridCol(_a) {
7440
7802
  "$orderLg": orderLg,
7441
7803
  "$orderXl": orderXl,
7442
7804
  className: className,
7805
+ "data-testid": dataTestId,
7443
7806
  children: children
7444
7807
  });
7445
7808
  };
@@ -7512,6 +7875,7 @@ var ResponsiveGrid = function ResponsiveGrid(_a) {
7512
7875
  gapYLg = _a.gapYLg,
7513
7876
  gapYXl = _a.gapYXl,
7514
7877
  className = _a.className,
7878
+ dataTestId = _a["data-testid"],
7515
7879
  children = _a.children;
7516
7880
  return jsx(ResponsiveGridContainer, {
7517
7881
  "$cols": cols,
@@ -7535,10 +7899,11 @@ var ResponsiveGrid = function ResponsiveGrid(_a) {
7535
7899
  "$gapYLg": gapYLg ? gapSpacing[gapYLg] : undefined,
7536
7900
  "$gapYXl": gapYXl ? gapSpacing[gapYXl] : undefined,
7537
7901
  className: className,
7902
+ "data-testid": dataTestId,
7538
7903
  children: children
7539
7904
  });
7540
7905
  };
7541
7906
  var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16, templateObject_17, templateObject_18, templateObject_19, templateObject_20, templateObject_21, templateObject_22, templateObject_23, templateObject_24, templateObject_25, templateObject_26, templateObject_27, templateObject_28, templateObject_29, templateObject_30, templateObject_31, templateObject_32, templateObject_33, templateObject_34, templateObject_35;
7542
7907
 
7543
- export { Avatar as A, Badge as B, CategoryBadge as C, DateFormatter as D, EmptyState as E, FilterChip as F, GridCol as G, Modal as H, Icon as I, PageTitle as J, PasswordField as K, LegacyChip as L, MoneyDisplay as M, NumberInput as N, SearchField as O, Picture as P, Sheet as Q, ResponsiveGrid as R, Stack as S, Tag as T, Slider as U, TabBar as V, TextField as W, StyledInputBase as X, StyledTextAreaBase as Y, TransactionListItem as Z, Grid as a, Box as b, Button as c, Chip as d, BooleanChip as e, Container$1 as f, IconButton as g, ProgressBar as h, Divider as i, StatusBadge as j, Typography as k, AccountCard as l, ActionSheet as m, AgentInput as n, Alert as o, Breadcrumbs as p, CardSmall as q, CardLarge as r, Checkbox as s, ChipGroup as t, CodeBlock as u, DateGroup as v, FeatureBlock as w, Dropdown as x, List as y, ListItem as z };
7908
+ export { StyledInputBase as $, Avatar as A, Badge as B, CategoryBadge as C, DateFormatter as D, EmptyState as E, FilterChip as F, GridCol as G, FeatureBlock as H, InputChip as I, Dropdown as J, List as K, LegacyChip as L, MoneyDisplay as M, ListItem as N, Modal as O, Picture as P, NumberInput as Q, ResponsiveGrid as R, Stack as S, Tag as T, PageTitle as U, PasswordField as V, SearchField as W, Sheet as X, Slider as Y, TabBar as Z, TextField as _, Grid as a, StyledTextAreaBase as a0, TransactionListItem as a1, Box as b, Button as c, CategoryLabel as d, Chip as e, BooleanChip as f, Container$1 as g, Icon as h, IconButton as i, ProgressBar as j, Divider as k, StatusBadge as l, StatusLabel as m, Typography as n, AccountCard as o, ActionSheet as p, AgentInput as q, Alert as r, InlineAlert as s, Breadcrumbs as t, CardSmall as u, CardLarge as v, Checkbox as w, ChipGroup as x, CodeBlock as y, DateGroup as z };
7544
7909
  //# sourceMappingURL=client.esm.js.map