@common-origin/design-system 2.20.0 → 2.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.js +1015 -499
- package/dist/client.js.map +1 -1
- package/dist/components/atoms/AILabel/AILabel.d.mts +30 -0
- package/dist/components/atoms/AILabel/AILabel.d.ts +30 -0
- package/dist/components/atoms/AILabel/AILabel.mjs +94 -0
- package/dist/components/atoms/AILabel/AILabel.mjs.map +1 -0
- package/dist/components/atoms/AILabel/index.d.mts +1 -0
- package/dist/components/atoms/AILabel/index.d.ts +1 -0
- package/dist/components/atoms/Badge/Badge.d.mts +16 -4
- package/dist/components/atoms/Badge/Badge.d.ts +16 -4
- package/dist/components/atoms/Badge/Badge.mjs +4 -5
- package/dist/components/atoms/Badge/index.d.mts +1 -1
- package/dist/components/atoms/Badge/index.d.ts +1 -1
- package/dist/components/atoms/Button/Button.mjs +1 -1
- package/dist/components/atoms/CategoryLabel/CategoryLabel.d.mts +23 -8
- package/dist/components/atoms/CategoryLabel/CategoryLabel.d.ts +23 -8
- package/dist/components/atoms/CategoryLabel/CategoryLabel.mjs +31 -18
- package/dist/components/atoms/CategoryLabel/index.d.mts +1 -1
- package/dist/components/atoms/CategoryLabel/index.d.ts +1 -1
- package/dist/components/atoms/Chip/SuggestionChip.d.mts +24 -0
- package/dist/components/atoms/Chip/SuggestionChip.d.ts +24 -0
- package/dist/components/atoms/Chip/SuggestionChip.mjs +61 -0
- package/dist/components/atoms/Chip/SuggestionChip.mjs.map +1 -0
- package/dist/components/atoms/Chip/index.d.mts +1 -0
- package/dist/components/atoms/Chip/index.d.ts +1 -0
- package/dist/components/atoms/Chip/shared/utils.mjs +1 -1
- package/dist/components/atoms/Chip/shared/utils.mjs.map +1 -1
- package/dist/components/atoms/Icon/Icon.mjs +1 -1
- package/dist/components/atoms/MoneyDisplay/MoneyDisplay.mjs +14 -60
- package/dist/components/atoms/StatusBadge/StatusBadge.d.mts +3 -2
- package/dist/components/atoms/StatusBadge/StatusBadge.d.ts +3 -2
- package/dist/components/atoms/StatusBadge/StatusBadge.mjs +1 -1
- package/dist/components/atoms/StatusBadge/StatusBadge.mjs.map +1 -1
- package/dist/components/atoms/StatusLabel/StatusLabel.d.mts +5 -2
- package/dist/components/atoms/StatusLabel/StatusLabel.d.ts +5 -2
- package/dist/components/atoms/StatusLabel/StatusLabel.mjs +5 -2
- package/dist/components/atoms/StatusLabel/StatusLabel.mjs.map +1 -1
- package/dist/components/atoms/StatusLabel/StatusLabelBase.d.mts +2 -2
- package/dist/components/atoms/StatusLabel/StatusLabelBase.d.ts +2 -2
- package/dist/components/atoms/StatusLabel/StatusLabelBase.mjs +19 -13
- package/dist/components/atoms/StatusLabel/StatusShape.d.mts +4 -0
- package/dist/components/atoms/StatusLabel/StatusShape.d.ts +4 -0
- package/dist/components/atoms/StatusLabel/StatusShape.mjs +31 -0
- package/dist/components/atoms/StatusLabel/StatusShape.mjs.map +1 -0
- package/dist/components/atoms/Typography/Typography.mjs +2 -2
- package/dist/components/atoms/index.d.mts +1 -0
- package/dist/components/atoms/index.d.ts +1 -0
- package/dist/components/molecules/AccountCard/AccountCard.mjs +21 -13
- package/dist/components/molecules/AgentInput/AgentInput.d.mts +63 -1
- package/dist/components/molecules/AgentInput/AgentInput.d.ts +63 -1
- package/dist/components/molecules/AgentInput/AgentInput.mjs +476 -112
- package/dist/components/molecules/AgentInput/agentInputSpeech.d.mts +2 -0
- package/dist/components/molecules/AgentInput/agentInputSpeech.d.ts +2 -0
- package/dist/components/molecules/AgentInput/agentInputSpeech.mjs +5 -1
- package/dist/components/molecules/AgentInput/agentInputSpeech.mjs.map +1 -1
- package/dist/components/molecules/AgentInput/index.d.mts +1 -1
- package/dist/components/molecules/AgentInput/index.d.ts +1 -1
- package/dist/components/molecules/Alert/Alert.d.mts +4 -4
- package/dist/components/molecules/Alert/Alert.d.ts +4 -4
- package/dist/components/molecules/Alert/Alert.mjs +5 -4
- package/dist/components/molecules/CardLarge/CardLarge.mjs +1 -0
- package/dist/components/molecules/ChipGroup/ChipGroup.mjs +2 -0
- package/dist/components/molecules/CodeBlock/CodeBlock.mjs +1 -1
- package/dist/components/molecules/Dropdown/Dropdown.mjs +2 -2
- package/dist/components/molecules/FeatureBlock/FeatureBlock.mjs +1 -0
- package/dist/components/molecules/InlineAlert/InlineAlert.mjs +15 -5
- package/dist/components/molecules/TabBar/TabBar.mjs +3 -3
- package/dist/components/molecules/TransactionListItem/TransactionListItem.d.mts +1 -1
- package/dist/components/molecules/TransactionListItem/TransactionListItem.d.ts +1 -1
- package/dist/components/molecules/TransactionListItem/TransactionListItem.mjs +15 -31
- package/dist/data.js +817 -294
- package/dist/data.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -0
- package/dist/index.mjs.map +1 -1
- package/dist/lib/statusShapes.d.mts +2 -0
- package/dist/lib/statusShapes.d.ts +2 -0
- package/dist/lib/statusShapes.mjs +16 -0
- package/dist/lib/statusShapes.mjs.map +1 -0
- package/dist/lib/styleUtils.mjs +2 -2
- package/dist/lib/styleUtils.mjs.map +1 -1
- package/dist/lib/tokenAliases.mjs +16 -10
- package/dist/lib/tokenAliases.mjs.map +1 -1
- package/dist/styles/icons.json +171 -1
- package/dist/styles/icons.json.mjs +185 -3
- package/dist/styles/icons.json.mjs.map +1 -1
- package/dist/styles/tokens.d.mts +957 -123
- package/dist/styles/tokens.d.ts +957 -123
- package/dist/styles/tokens.json +633 -292
- package/dist/styles/tokens.json.mjs +633 -292
- package/dist/styles/tokens.json.mjs.map +1 -1
- package/dist/tokens/index.js +633 -292
- package/dist/tokens/index.js.map +1 -1
- package/dist/tokens/index.mjs +633 -292
- package/dist/tokens/index.mjs.map +1 -1
- package/dist/tokens/styles/tokens.d.mts +957 -123
- package/dist/tokens/styles/tokens.d.ts +957 -123
- package/dist/tokens.css +499 -212
- package/dist/types/icons.d.mts +1 -1
- package/dist/types/icons.d.ts +1 -1
- package/dist/types/icons.mjs.map +1 -1
- package/package.json +1 -1
package/dist/client.js
CHANGED
|
@@ -156,31 +156,31 @@ function withCssVariables(tree, path) {
|
|
|
156
156
|
var tokens = withCssVariables(data.tokensJson);
|
|
157
157
|
|
|
158
158
|
// Destructure tokens
|
|
159
|
-
var semantic$
|
|
159
|
+
var semantic$n = tokens.semantic;
|
|
160
160
|
var initials = tokens.component.avatar.initials;
|
|
161
|
-
var color$
|
|
162
|
-
size$
|
|
163
|
-
var radius$6 = semantic$
|
|
161
|
+
var color$d = semantic$n.color,
|
|
162
|
+
size$4 = semantic$n.size;
|
|
163
|
+
var radius$6 = semantic$n.radius;
|
|
164
164
|
var AvatarContainer = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
165
165
|
shouldForwardProp: function shouldForwardProp(prop) {
|
|
166
166
|
return !prop.startsWith('$');
|
|
167
167
|
},
|
|
168
168
|
displayName: "Avatar__AvatarContainer",
|
|
169
169
|
componentId: "sc-ezn4ax-0"
|
|
170
|
-
})(templateObject_1$
|
|
170
|
+
})(templateObject_1$P || (templateObject_1$P = __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) {
|
|
171
171
|
var $size = _a.$size;
|
|
172
|
-
return size$
|
|
172
|
+
return size$4.avatar[$size];
|
|
173
173
|
}, function (_a) {
|
|
174
174
|
var $size = _a.$size;
|
|
175
|
-
return size$
|
|
176
|
-
}, radius$6.full, color$
|
|
175
|
+
return size$4.avatar[$size];
|
|
176
|
+
}, radius$6.full, color$d.fill.muted);
|
|
177
177
|
var AvatarImage = /*#__PURE__*/styled__default.default.img.withConfig({
|
|
178
178
|
shouldForwardProp: function shouldForwardProp(prop) {
|
|
179
179
|
return !prop.startsWith('$');
|
|
180
180
|
},
|
|
181
181
|
displayName: "Avatar__AvatarImage",
|
|
182
182
|
componentId: "sc-ezn4ax-1"
|
|
183
|
-
})(templateObject_2$
|
|
183
|
+
})(templateObject_2$z || (templateObject_2$z = __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$6.full);
|
|
184
184
|
var AvatarInitials = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
185
185
|
shouldForwardProp: function shouldForwardProp(prop) {
|
|
186
186
|
return !prop.startsWith('$');
|
|
@@ -192,7 +192,7 @@ var AvatarInitials = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
|
192
192
|
])), initials.fontFamily, initials.fontWeight, function (_a) {
|
|
193
193
|
var $size = _a.$size;
|
|
194
194
|
return initials.fontSize[$size];
|
|
195
|
-
}, color$
|
|
195
|
+
}, color$d.text["default"], initials.lineHeight);
|
|
196
196
|
// Helper function to get initials from name
|
|
197
197
|
var getInitials = function getInitials(name) {
|
|
198
198
|
return name.split(' ').map(function (word) {
|
|
@@ -246,7 +246,7 @@ var Avatar = function Avatar(_a) {
|
|
|
246
246
|
})
|
|
247
247
|
}));
|
|
248
248
|
};
|
|
249
|
-
var templateObject_1$
|
|
249
|
+
var templateObject_1$P, templateObject_2$z, templateObject_3$w;
|
|
250
250
|
|
|
251
251
|
// Breakpoints from the semantic tokens (decision 0014)
|
|
252
252
|
var breakpoints$1 = {
|
|
@@ -281,7 +281,7 @@ var forcedColorsEdge = "".concat(forcedColors, " {\n border: ").concat(tokens.s
|
|
|
281
281
|
var reducedMotion = '@media (prefers-reduced-motion: reduce)';
|
|
282
282
|
// No `from` keyframe: the fade starts from the element's current opacity, including a
|
|
283
283
|
// still-running entrance, so closing mid-entrance doesn't jump back to fully visible.
|
|
284
|
-
var fadeOut$1 = styled.keyframes(templateObject_1$
|
|
284
|
+
var fadeOut$1 = styled.keyframes(templateObject_1$O || (templateObject_1$O = __makeTemplateObject(["\n to { opacity: 0; }\n"], ["\n to { opacity: 0; }\n"
|
|
285
285
|
// Exit for overlays that unmount (use with usePresence). Append `exitAnimation` to each of
|
|
286
286
|
// the element's `animation` declarations while it exits: the entrance stays in the list,
|
|
287
287
|
// so it isn't restarted, and the fade runs on top of it. A fade is already the
|
|
@@ -295,7 +295,7 @@ var fadeOut$1 = styled.keyframes(templateObject_1$L || (templateObject_1$L = __m
|
|
|
295
295
|
// reduced-motion form, so it needs no fallback of its own. While it fades, the backdrop
|
|
296
296
|
// still catches clicks (so they can't reach the page behind it) and the panel is inert.
|
|
297
297
|
// Exits accelerate: things leaving speed up as they go (decision 0037).
|
|
298
|
-
var exitAnimation = styled.css(templateObject_2$
|
|
298
|
+
var exitAnimation = styled.css(templateObject_2$y || (templateObject_2$y = __makeTemplateObject([", ", " ", " ", " forwards"], [", ", " ", " ", " forwards"
|
|
299
299
|
// Content for screen readers only. The 1px size and -1px margin are part of the standard
|
|
300
300
|
// visually-hidden technique, not design values, so they aren't tokens.
|
|
301
301
|
])), fadeOut$1, tokens.semantic.motion.duration.fast, tokens.semantic.motion.easing.accelerate);
|
|
@@ -333,11 +333,11 @@ var rowStates = {
|
|
|
333
333
|
},
|
|
334
334
|
hover: {
|
|
335
335
|
background: rowFill['accent-muted-hover'],
|
|
336
|
-
text: rowText
|
|
336
|
+
text: rowText.accent
|
|
337
337
|
},
|
|
338
338
|
pressed: {
|
|
339
339
|
background: rowFill['accent-muted-pressed'],
|
|
340
|
-
text: rowText
|
|
340
|
+
text: rowText.accent
|
|
341
341
|
}
|
|
342
342
|
}
|
|
343
343
|
};
|
|
@@ -399,44 +399,44 @@ var rowForcedColors = function rowForcedColors(_a) {
|
|
|
399
399
|
// the descendants' own rules.
|
|
400
400
|
return "".concat(forcedColors, " {\n ").concat(selected ? "background-color: Highlight;\n ".concat(text('HighlightText'), "\n && * {\n color: inherit;\n background-color: transparent;\n }") : '', "\n ").concat(!disabled && focused ? hover : '', "\n ").concat(disabled ? '' : "&:hover {\n ".concat(hover, "\n }"), "\n }");
|
|
401
401
|
};
|
|
402
|
-
var templateObject_1$
|
|
402
|
+
var templateObject_1$O, templateObject_2$y, templateObject_3$v;
|
|
403
403
|
|
|
404
404
|
var _a$a = tokens.semantic,
|
|
405
|
-
typography$
|
|
406
|
-
color$
|
|
405
|
+
typography$3 = _a$a.typography,
|
|
406
|
+
color$c = _a$a.color,
|
|
407
407
|
letterSpacing = _a$a.letterSpacing;
|
|
408
408
|
var getTypographyStyles = function getTypographyStyles(variant) {
|
|
409
409
|
var styles = {
|
|
410
|
-
display: "font: ".concat(typography$
|
|
411
|
-
h1: "font: ".concat(typography$
|
|
412
|
-
h2: "font: ".concat(typography$
|
|
413
|
-
h3: "font: ".concat(typography$
|
|
414
|
-
h4: "font: ".concat(typography$
|
|
415
|
-
h5: "font: ".concat(typography$
|
|
416
|
-
h6: "font: ".concat(typography$
|
|
417
|
-
subtitle: "font: ".concat(typography$
|
|
418
|
-
body: "font: ".concat(typography$
|
|
419
|
-
small: "font: ".concat(typography$
|
|
420
|
-
overline: "font: ".concat(typography$
|
|
421
|
-
caption: "font: ".concat(typography$
|
|
410
|
+
display: "font: ".concat(typography$3.display, "; letter-spacing: ").concat(letterSpacing.tighter, ";"),
|
|
411
|
+
h1: "font: ".concat(typography$3.h1, "; letter-spacing: ").concat(letterSpacing.tighter, ";"),
|
|
412
|
+
h2: "font: ".concat(typography$3.h2, "; letter-spacing: ").concat(letterSpacing.tight, ";"),
|
|
413
|
+
h3: "font: ".concat(typography$3.h3, "; letter-spacing: ").concat(letterSpacing.tight, ";"),
|
|
414
|
+
h4: "font: ".concat(typography$3.h4, "; letter-spacing: ").concat(letterSpacing.tight, ";"),
|
|
415
|
+
h5: "font: ".concat(typography$3.h5, "; letter-spacing: ").concat(letterSpacing.normal, ";"),
|
|
416
|
+
h6: "font: ".concat(typography$3.h6, "; letter-spacing: ").concat(letterSpacing.normal, ";"),
|
|
417
|
+
subtitle: "font: ".concat(typography$3.subtitle, ";"),
|
|
418
|
+
body: "font: ".concat(typography$3.body, ";"),
|
|
419
|
+
small: "font: ".concat(typography$3.small, ";"),
|
|
420
|
+
overline: "font: ".concat(typography$3.overline, ";"),
|
|
421
|
+
caption: "font: ".concat(typography$3.caption, "; text-transform: uppercase;"),
|
|
422
422
|
button1: "font: ".concat(tokens.component.button.sizes.large.font, ";"),
|
|
423
423
|
button2: "font: ".concat(tokens.component.button.sizes.medium.font, ";"),
|
|
424
|
-
button3: "font: ".concat(tokens.component.button.sizes.small.font, ";"),
|
|
425
|
-
label: "font: ".concat(typography$
|
|
424
|
+
button3: "font: ".concat(tokens.component.button.sizes.small.font, "; font-weight: ").concat(tokens.component.button.sizes.small.fontWeight, ";"),
|
|
425
|
+
label: "font: ".concat(typography$3.label, ";")
|
|
426
426
|
};
|
|
427
427
|
return styles[variant] || styles.body;
|
|
428
428
|
};
|
|
429
429
|
var getTextColor = function getTextColor(colorVariant) {
|
|
430
430
|
var colorMap = {
|
|
431
|
-
"default": color$
|
|
432
|
-
emphasis: color$
|
|
433
|
-
subdued: color$
|
|
434
|
-
inverse: color$
|
|
435
|
-
disabled: color$
|
|
436
|
-
interactive: color$
|
|
437
|
-
error: color$
|
|
438
|
-
success: color$
|
|
439
|
-
warning: color$
|
|
431
|
+
"default": color$c.text["default"],
|
|
432
|
+
emphasis: color$c.text["default"],
|
|
433
|
+
subdued: color$c.text.muted,
|
|
434
|
+
inverse: color$c.text.inverse,
|
|
435
|
+
disabled: color$c.text.disabled,
|
|
436
|
+
interactive: color$c.text.accent,
|
|
437
|
+
error: color$c.text.danger,
|
|
438
|
+
success: color$c.text.success,
|
|
439
|
+
warning: color$c.text.warning
|
|
440
440
|
};
|
|
441
441
|
return colorMap[colorVariant] || colorMap["default"];
|
|
442
442
|
};
|
|
@@ -467,7 +467,7 @@ var StyledTypography = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
|
467
467
|
},
|
|
468
468
|
displayName: "Typography__StyledTypography",
|
|
469
469
|
componentId: "sc-17mqo4k-0"
|
|
470
|
-
})(templateObject_1$
|
|
470
|
+
})(templateObject_1$N || (templateObject_1$N = __makeTemplateObject(["\n ", "\n color: ", ";\n margin: 0;\n"], ["\n ", "\n color: ", ";\n margin: 0;\n"
|
|
471
471
|
/**
|
|
472
472
|
* Typography is an atomic component for rendering text with semantic meaning and consistent styling.
|
|
473
473
|
*
|
|
@@ -529,20 +529,20 @@ var Typography = function Typography(_a) {
|
|
|
529
529
|
children: children
|
|
530
530
|
});
|
|
531
531
|
};
|
|
532
|
-
var templateObject_1$
|
|
532
|
+
var templateObject_1$N;
|
|
533
533
|
|
|
534
|
-
var semantic$
|
|
535
|
-
var color$
|
|
536
|
-
var radius$5 = semantic$
|
|
534
|
+
var semantic$m = tokens.semantic;
|
|
535
|
+
var color$b = semantic$m.color;
|
|
536
|
+
var radius$5 = semantic$m.radius;
|
|
537
537
|
var _a$9 = tokens.component.badge,
|
|
538
538
|
dot = _a$9.dot,
|
|
539
539
|
count = _a$9.count,
|
|
540
540
|
ring = _a$9.ring;
|
|
541
|
-
var scaleIn$2 = styled.keyframes(templateObject_1$
|
|
541
|
+
var scaleIn$2 = styled.keyframes(templateObject_1$M || (templateObject_1$M = __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"])));
|
|
542
542
|
var BadgeWrapper = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
543
543
|
displayName: "Badge__BadgeWrapper",
|
|
544
544
|
componentId: "sc-tjz4pp-0"
|
|
545
|
-
})(templateObject_2$
|
|
545
|
+
})(templateObject_2$x || (templateObject_2$x = __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"])));
|
|
546
546
|
var BadgeIndicator = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
547
547
|
shouldForwardProp: function shouldForwardProp(prop) {
|
|
548
548
|
return !prop.startsWith('$');
|
|
@@ -556,23 +556,22 @@ var BadgeIndicator = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
|
556
556
|
}, function (props) {
|
|
557
557
|
return props.$isDot ? dot.size : count.height;
|
|
558
558
|
}, function (props) {
|
|
559
|
-
return props.$isDot ? '0' : "0 ".concat(semantic$
|
|
560
|
-
}, radius$5.full, count.lineHeight, ring.width, semantic$
|
|
561
|
-
return props.$isDot ? "".concat(forcedColors, " { forced-color-adjust: none; background-color: CanvasText; }") : "".concat(forcedColors, " { border: ").concat(semantic$
|
|
559
|
+
return props.$isDot ? '0' : "0 ".concat(semantic$m.space.inset.xs);
|
|
560
|
+
}, radius$5.full, count.lineHeight, ring.width, semantic$m.surface.base, scaleIn$2, semantic$m.motion.duration.moderate, semantic$m.motion.easing.decelerate, reducedMotion, function (props) {
|
|
561
|
+
return props.$isDot ? "".concat(forcedColors, " { forced-color-adjust: none; background-color: CanvasText; }") : "".concat(forcedColors, " { border: ").concat(semantic$m.border.width.thin, " solid currentColor; }");
|
|
562
562
|
}, function (props) {
|
|
563
563
|
switch (props.$variant) {
|
|
564
|
+
// 'primary', 'error', 'warning' and 'success' are deprecated aliases for 'accent', removed in
|
|
565
|
+
// 3.0: 'primary' (#169), and the status colours, because a badge's colour alone can't carry a
|
|
566
|
+
// status (decision 0045, #263)
|
|
564
567
|
case 'accent':
|
|
565
568
|
case 'primary':
|
|
566
|
-
// Deprecated alias for 'accent', removed in 3.0 (#169)
|
|
567
|
-
return "\n background-color: ".concat(color$9.fill.accent, ";\n color: ").concat(color$9.text.inverse, ";\n ");
|
|
568
569
|
case 'error':
|
|
569
|
-
return "\n background-color: ".concat(color$9.fill.danger, ";\n color: ").concat(color$9.text.inverse, ";\n ");
|
|
570
570
|
case 'warning':
|
|
571
|
-
return "\n background-color: ".concat(color$9.fill.warning, ";\n color: ").concat(color$9.text.inverse, ";\n ");
|
|
572
571
|
case 'success':
|
|
573
|
-
return "\n background-color: ".concat(color$
|
|
572
|
+
return "\n background-color: ".concat(color$b.fill.accent, ";\n color: ").concat(color$b.text.inverse, ";\n ");
|
|
574
573
|
default:
|
|
575
|
-
return "\n background-color: ".concat(color$
|
|
574
|
+
return "\n background-color: ".concat(color$b.fill.emphasis, ";\n color: ").concat(color$b.text.inverse, ";\n ");
|
|
576
575
|
}
|
|
577
576
|
});
|
|
578
577
|
var ScreenReaderOnly$1 = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
@@ -616,16 +615,17 @@ var Badge = function Badge(_a) {
|
|
|
616
615
|
})]
|
|
617
616
|
});
|
|
618
617
|
};
|
|
619
|
-
var templateObject_1$
|
|
618
|
+
var templateObject_1$M, templateObject_2$x, templateObject_3$u, templateObject_4$n;
|
|
620
619
|
|
|
621
620
|
// Props whose values are token keys keep their published vocabulary in 2.x (P7), but read the
|
|
622
621
|
// semantic grammar's names (decision 0031, #189). Each map covers every key the prop type allows,
|
|
623
622
|
// so TypeScript fails here if a key is added without a mapping.
|
|
624
|
-
var semantic$
|
|
625
|
-
var color$
|
|
626
|
-
space$e = semantic$
|
|
627
|
-
radius$4 = semantic$
|
|
628
|
-
surface = semantic$
|
|
623
|
+
var semantic$l = tokens.semantic;
|
|
624
|
+
var color$a = semantic$l.color,
|
|
625
|
+
space$e = semantic$l.space,
|
|
626
|
+
radius$4 = semantic$l.radius,
|
|
627
|
+
surface = semantic$l.surface,
|
|
628
|
+
opacity = semantic$l.opacity;
|
|
629
629
|
/** Box's spacing props (`p`, `m`, `gap`…): the old layout scale's keys, read from `space`. */
|
|
630
630
|
var spaceByLayoutKey = {
|
|
631
631
|
none: space$e[0],
|
|
@@ -645,7 +645,7 @@ var spaceByLayoutKey = {
|
|
|
645
645
|
'10xl': space$e[2000],
|
|
646
646
|
'11xl': space$e[2400],
|
|
647
647
|
// A keyword, not a step: it stays until the keyword question is settled (0031)
|
|
648
|
-
auto: semantic$
|
|
648
|
+
auto: semantic$l.spacing.layout.auto
|
|
649
649
|
};
|
|
650
650
|
/** Box's `borderRadius` prop: the old radius keys, read from `radius`. */
|
|
651
651
|
var radiusByKey = {
|
|
@@ -665,73 +665,78 @@ var backgroundByKey = {
|
|
|
665
665
|
page: surface.base,
|
|
666
666
|
subtle: surface.raised,
|
|
667
667
|
overlay: surface.scrim,
|
|
668
|
-
emphasis: color$
|
|
669
|
-
|
|
670
|
-
'emphasis-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
'interactive-
|
|
676
|
-
'interactive-
|
|
677
|
-
'interactive-subtle
|
|
678
|
-
'interactive-subtle-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
'error-
|
|
682
|
-
'error-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
'neutral-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
'
|
|
694
|
-
'
|
|
668
|
+
emphasis: color$a.fill.emphasis,
|
|
669
|
+
// A strong fill's states mix its content colour in at the state-layer opacity (decision 0048)
|
|
670
|
+
'emphasis-hover': "color-mix(in srgb, ".concat(color$a.fill.emphasis, ", ").concat(color$a.text.inverse, " calc(").concat(opacity.state.hover, " * 100%))"),
|
|
671
|
+
'emphasis-active': "color-mix(in srgb, ".concat(color$a.fill.emphasis, ", ").concat(color$a.text.inverse, " calc(").concat(opacity.state.pressed, " * 100%))"),
|
|
672
|
+
surface: color$a.fill.muted,
|
|
673
|
+
inverse: color$a.fill.inverse,
|
|
674
|
+
interactive: color$a.fill.accent,
|
|
675
|
+
'interactive-hover': color$a.fill['accent-hover'],
|
|
676
|
+
'interactive-active': color$a.fill['accent-pressed'],
|
|
677
|
+
'interactive-subtle': color$a.fill['accent-muted'],
|
|
678
|
+
'interactive-subtle-hover': color$a.fill['accent-muted-hover'],
|
|
679
|
+
'interactive-subtle-active': color$a.fill['accent-muted-pressed'],
|
|
680
|
+
error: color$a.fill.danger,
|
|
681
|
+
'error-hover': color$a.fill['danger-hover'],
|
|
682
|
+
'error-active': color$a.fill['danger-pressed'],
|
|
683
|
+
'error-subtle': color$a.fill['danger-muted'],
|
|
684
|
+
success: color$a.fill.success,
|
|
685
|
+
'success-subtle': color$a.fill['success-muted'],
|
|
686
|
+
warning: color$a.fill.warning,
|
|
687
|
+
'warning-subtle': color$a.fill['warning-muted'],
|
|
688
|
+
disabled: color$a.fill.disabled,
|
|
689
|
+
neutral: color$a.fill["default"],
|
|
690
|
+
'neutral-hover': color$a.fill['default-hover'],
|
|
691
|
+
'neutral-active': color$a.fill['default-pressed'],
|
|
692
|
+
transparent: color$a.fill.none,
|
|
693
|
+
'hover-overlay': color$a.fill['none-hover'],
|
|
694
|
+
'active-overlay': color$a.fill['none-pressed'],
|
|
695
|
+
'inverse-overlay': color$a.fill['inverse-none-hover'],
|
|
695
696
|
// Moved to the component tier (decision 0031 §6)
|
|
696
697
|
progressTrack: tokens.component.track.background
|
|
697
698
|
};
|
|
698
699
|
/** Box's `color` prop: text colours, old and new keys. */
|
|
699
700
|
var textColorByKey = {
|
|
700
|
-
"default": color$
|
|
701
|
-
emphasis: color$
|
|
702
|
-
inverse: color$
|
|
703
|
-
disabled: color$
|
|
704
|
-
success: color$
|
|
705
|
-
warning: color$
|
|
706
|
-
muted: color$
|
|
707
|
-
accent: color$
|
|
708
|
-
'accent-hover': color$
|
|
709
|
-
'accent-pressed': color$
|
|
710
|
-
danger: color$
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
701
|
+
"default": color$a.text["default"],
|
|
702
|
+
emphasis: color$a.text["default"],
|
|
703
|
+
inverse: color$a.text.inverse,
|
|
704
|
+
disabled: color$a.text.disabled,
|
|
705
|
+
success: color$a.text.success,
|
|
706
|
+
warning: color$a.text.warning,
|
|
707
|
+
muted: color$a.text.muted,
|
|
708
|
+
accent: color$a.text.accent,
|
|
709
|
+
'accent-hover': color$a.text.accent,
|
|
710
|
+
'accent-pressed': color$a.text.accent,
|
|
711
|
+
danger: color$a.text.danger,
|
|
712
|
+
serious: color$a.text.serious,
|
|
713
|
+
ai: color$a.text.ai,
|
|
714
|
+
subdued: color$a.text.muted,
|
|
715
|
+
interactive: color$a.text.accent,
|
|
716
|
+
'interactive-hover': color$a.text.accent,
|
|
717
|
+
'interactive-active': color$a.text.accent,
|
|
718
|
+
error: color$a.text.danger
|
|
716
719
|
};
|
|
717
720
|
/** Box's border props: border colours, old and new keys. */
|
|
718
721
|
var borderColorByKey = {
|
|
719
|
-
"default": color$
|
|
720
|
-
success: color$
|
|
721
|
-
warning: color$
|
|
722
|
-
none: color$
|
|
723
|
-
emphasis: color$
|
|
724
|
-
input: color$
|
|
725
|
-
'input-hover': color$
|
|
726
|
-
focus: color$
|
|
727
|
-
accent: color$
|
|
728
|
-
danger: color$
|
|
729
|
-
|
|
730
|
-
|
|
722
|
+
"default": color$a.border["default"],
|
|
723
|
+
success: color$a.border.success,
|
|
724
|
+
warning: color$a.border.warning,
|
|
725
|
+
none: color$a.border.none,
|
|
726
|
+
emphasis: color$a.border["default"],
|
|
727
|
+
input: color$a.border.input,
|
|
728
|
+
'input-hover': color$a.border['input-hover'],
|
|
729
|
+
focus: color$a.border.focus,
|
|
730
|
+
accent: color$a.border.accent,
|
|
731
|
+
danger: color$a.border.danger,
|
|
732
|
+
serious: color$a.border.serious,
|
|
733
|
+
ai: color$a.border.ai,
|
|
734
|
+
subtle: color$a.border["default"],
|
|
735
|
+
control: color$a.border.input,
|
|
731
736
|
// `strong` split by use (0031); as a generic firm outline it is the hovered-input border
|
|
732
|
-
strong: color$
|
|
733
|
-
interactive: color$
|
|
734
|
-
error: color$
|
|
737
|
+
strong: color$a.border['input-hover'],
|
|
738
|
+
interactive: color$a.border.accent,
|
|
739
|
+
error: color$a.border.danger
|
|
735
740
|
};
|
|
736
741
|
|
|
737
742
|
var StyledBox = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
@@ -743,9 +748,9 @@ var StyledBox = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
|
743
748
|
})(templateObject_51 || (templateObject_51 = __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"
|
|
744
749
|
// Transform component that maps clean props to $-prefixed props for styled-components
|
|
745
750
|
])), function (props) {
|
|
746
|
-
return props.$display && styled.css(templateObject_1$
|
|
751
|
+
return props.$display && styled.css(templateObject_1$L || (templateObject_1$L = __makeTemplateObject(["display: ", ";"], ["display: ", ";"])), props.$display);
|
|
747
752
|
}, function (props) {
|
|
748
|
-
return props.$flexDirection && styled.css(templateObject_2$
|
|
753
|
+
return props.$flexDirection && styled.css(templateObject_2$w || (templateObject_2$w = __makeTemplateObject(["flex-direction: ", ";"], ["flex-direction: ", ";"])), props.$flexDirection);
|
|
749
754
|
}, function (props) {
|
|
750
755
|
return props.$justifyContent && styled.css(templateObject_3$t || (templateObject_3$t = __makeTemplateObject(["justify-content: ", ";"], ["justify-content: ", ";"])), props.$justifyContent);
|
|
751
756
|
}, function (props) {
|
|
@@ -779,35 +784,35 @@ var StyledBox = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
|
779
784
|
}, function (props) {
|
|
780
785
|
return props.$pl && styled.css(templateObject_18$2 || (templateObject_18$2 = __makeTemplateObject(["padding-left: ", ";"], ["padding-left: ", ";"])), spaceByLayoutKey[props.$pl]);
|
|
781
786
|
}, function (props) {
|
|
782
|
-
return props.$px && styled.css(templateObject_19$
|
|
787
|
+
return props.$px && styled.css(templateObject_19$2 || (templateObject_19$2 = __makeTemplateObject(["\n padding-left: ", ";\n padding-right: ", ";\n "], ["\n padding-left: ", ";\n padding-right: ", ";\n "])), spaceByLayoutKey[props.$px], spaceByLayoutKey[props.$px]);
|
|
783
788
|
}, function (props) {
|
|
784
|
-
return props.$py && styled.css(templateObject_20$
|
|
789
|
+
return props.$py && styled.css(templateObject_20$2 || (templateObject_20$2 = __makeTemplateObject(["\n padding-top: ", ";\n padding-bottom: ", ";\n "], ["\n padding-top: ", ";\n padding-bottom: ", ";\n "])), spaceByLayoutKey[props.$py], spaceByLayoutKey[props.$py]);
|
|
785
790
|
}, function (props) {
|
|
786
|
-
return props.$width && styled.css(templateObject_21$
|
|
791
|
+
return props.$width && styled.css(templateObject_21$2 || (templateObject_21$2 = __makeTemplateObject(["width: ", ";"], ["width: ", ";"])), props.$width);
|
|
787
792
|
}, function (props) {
|
|
788
|
-
return props.$height && styled.css(templateObject_22$
|
|
793
|
+
return props.$height && styled.css(templateObject_22$2 || (templateObject_22$2 = __makeTemplateObject(["height: ", ";"], ["height: ", ";"])), props.$height);
|
|
789
794
|
}, function (props) {
|
|
790
|
-
return props.$maxWidth && styled.css(templateObject_23$
|
|
795
|
+
return props.$maxWidth && styled.css(templateObject_23$2 || (templateObject_23$2 = __makeTemplateObject(["max-width: ", ";"], ["max-width: ", ";"])), props.$maxWidth);
|
|
791
796
|
}, function (props) {
|
|
792
|
-
return props.$maxHeight && styled.css(templateObject_24$
|
|
797
|
+
return props.$maxHeight && styled.css(templateObject_24$2 || (templateObject_24$2 = __makeTemplateObject(["max-height: ", ";"], ["max-height: ", ";"])), props.$maxHeight);
|
|
793
798
|
}, function (props) {
|
|
794
|
-
return props.$minWidth && styled.css(templateObject_25$
|
|
799
|
+
return props.$minWidth && styled.css(templateObject_25$2 || (templateObject_25$2 = __makeTemplateObject(["min-width: ", ";"], ["min-width: ", ";"])), props.$minWidth);
|
|
795
800
|
}, function (props) {
|
|
796
|
-
return props.$minHeight && styled.css(templateObject_26$
|
|
801
|
+
return props.$minHeight && styled.css(templateObject_26$2 || (templateObject_26$2 = __makeTemplateObject(["min-height: ", ";"], ["min-height: ", ";"])), props.$minHeight);
|
|
797
802
|
}, function (props) {
|
|
798
|
-
return props.$position && styled.css(templateObject_27$
|
|
803
|
+
return props.$position && styled.css(templateObject_27$2 || (templateObject_27$2 = __makeTemplateObject(["position: ", ";"], ["position: ", ";"])), props.$position);
|
|
799
804
|
}, function (props) {
|
|
800
|
-
return props.$top && styled.css(templateObject_28$
|
|
805
|
+
return props.$top && styled.css(templateObject_28$2 || (templateObject_28$2 = __makeTemplateObject(["top: ", ";"], ["top: ", ";"])), props.$top);
|
|
801
806
|
}, function (props) {
|
|
802
|
-
return props.$right && styled.css(templateObject_29$
|
|
807
|
+
return props.$right && styled.css(templateObject_29$2 || (templateObject_29$2 = __makeTemplateObject(["right: ", ";"], ["right: ", ";"])), props.$right);
|
|
803
808
|
}, function (props) {
|
|
804
|
-
return props.$bottom && styled.css(templateObject_30$
|
|
809
|
+
return props.$bottom && styled.css(templateObject_30$2 || (templateObject_30$2 = __makeTemplateObject(["bottom: ", ";"], ["bottom: ", ";"])), props.$bottom);
|
|
805
810
|
}, function (props) {
|
|
806
|
-
return props.$left && styled.css(templateObject_31$
|
|
811
|
+
return props.$left && styled.css(templateObject_31$2 || (templateObject_31$2 = __makeTemplateObject(["left: ", ";"], ["left: ", ";"])), props.$left);
|
|
807
812
|
}, function (props) {
|
|
808
|
-
return props.$borderRadius && styled.css(templateObject_32$
|
|
813
|
+
return props.$borderRadius && styled.css(templateObject_32$2 || (templateObject_32$2 = __makeTemplateObject(["border-radius: ", ";"], ["border-radius: ", ";"])), radiusByKey[props.$borderRadius]);
|
|
809
814
|
}, function (props) {
|
|
810
|
-
return props.$border && styled.css(templateObject_33$
|
|
815
|
+
return props.$border && styled.css(templateObject_33$2 || (templateObject_33$2 = __makeTemplateObject(["border: ", " solid ", ";"], ["border: ", " solid ", ";"])), tokens.semantic.border.width.thin, borderColorByKey[props.$border]);
|
|
811
816
|
}, function (props) {
|
|
812
817
|
return props.$borderTop && styled.css(templateObject_34$1 || (templateObject_34$1 = __makeTemplateObject(["border-top: ", " solid ", ";"], ["border-top: ", " solid ", ";"])), tokens.semantic.border.width.thin, borderColorByKey[props.$borderTop]);
|
|
813
818
|
}, function (props) {
|
|
@@ -967,7 +972,7 @@ var BoxTransform = function BoxTransform(props) {
|
|
|
967
972
|
}));
|
|
968
973
|
};
|
|
969
974
|
var Box = BoxTransform;
|
|
970
|
-
var templateObject_1$
|
|
975
|
+
var templateObject_1$L, templateObject_2$w, templateObject_3$t, templateObject_4$m, templateObject_5$i, 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$2, templateObject_20$2, templateObject_21$2, templateObject_22$2, templateObject_23$2, templateObject_24$2, templateObject_25$2, templateObject_26$2, templateObject_27$2, templateObject_28$2, templateObject_29$2, templateObject_30$2, templateObject_31$2, templateObject_32$2, templateObject_33$2, 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, templateObject_50, templateObject_51;
|
|
971
976
|
|
|
972
977
|
var IconStyled = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
973
978
|
shouldForwardProp: function shouldForwardProp(prop) {
|
|
@@ -975,7 +980,7 @@ var IconStyled = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
|
975
980
|
},
|
|
976
981
|
displayName: "Icon__IconStyled",
|
|
977
982
|
componentId: "sc-1105czq-0"
|
|
978
|
-
})(templateObject_1$
|
|
983
|
+
})(templateObject_1$K || (templateObject_1$K = __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) {
|
|
979
984
|
var $size = _a.$size;
|
|
980
985
|
return tokens.semantic.size.icon[$size];
|
|
981
986
|
}, function (_a) {
|
|
@@ -987,7 +992,7 @@ var IconStyled = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
|
987
992
|
case 'default':
|
|
988
993
|
return tokens.semantic.color.icon["default"];
|
|
989
994
|
case 'emphasis':
|
|
990
|
-
return tokens.semantic.color.icon
|
|
995
|
+
return tokens.semantic.color.icon["default"];
|
|
991
996
|
case 'subdued':
|
|
992
997
|
return tokens.semantic.color.icon.muted;
|
|
993
998
|
case 'disabled':
|
|
@@ -1052,17 +1057,17 @@ var Icon = function Icon(_a) {
|
|
|
1052
1057
|
}))
|
|
1053
1058
|
});
|
|
1054
1059
|
};
|
|
1055
|
-
var templateObject_1$
|
|
1060
|
+
var templateObject_1$K;
|
|
1056
1061
|
|
|
1057
1062
|
var button$1 = tokens.component.button,
|
|
1058
|
-
semantic$
|
|
1063
|
+
semantic$k = tokens.semantic;
|
|
1059
1064
|
// Height comes from size.control as a minimum and the content is centred, so there is no
|
|
1060
1065
|
// vertical padding (decision 0034). Horizontal padding comes from the semantic spacing scale:
|
|
1061
1066
|
// no component spacing tokens (decision 0022)
|
|
1062
|
-
var inset = semantic$
|
|
1063
|
-
var control$1 = semantic$
|
|
1067
|
+
var inset = semantic$k.space.inset;
|
|
1068
|
+
var control$1 = semantic$k.size.control;
|
|
1064
1069
|
// Base styles shared between button and link
|
|
1065
|
-
var baseButtonStyles = "\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: ".concat(tokens.semantic.space[100], ";\n height: max-content;\n cursor: pointer;\n border: none;\n text-decoration: none;\n transition: ").concat(semantic$
|
|
1070
|
+
var baseButtonStyles = "\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: ".concat(tokens.semantic.space[100], ";\n height: max-content;\n cursor: pointer;\n border: none;\n text-decoration: none;\n transition: ").concat(semantic$k.motion.transition.feedback, ";\n white-space: nowrap;\n user-select: none;\n \n &:focus {\n outline: ").concat(button$1.focus.outline, ";\n outline-offset: ").concat(semantic$k.border.focusOffset, ";\n }\n\n &:disabled {\n cursor: not-allowed;\n }\n\n ").concat(forcedColorsEdge, "\n");
|
|
1066
1071
|
// Dynamic variant styles using component tokens
|
|
1067
1072
|
var getVariantStyles$1 = function getVariantStyles(_a) {
|
|
1068
1073
|
var $variant = _a.$variant;
|
|
@@ -1125,7 +1130,7 @@ var getSizeStyles = function getSizeStyles(_a) {
|
|
|
1125
1130
|
var $size = _a.$size;
|
|
1126
1131
|
switch ($size) {
|
|
1127
1132
|
case 'small':
|
|
1128
|
-
return "\n font: ".concat(button$1.sizes.small.font, ";\n min-height: ").concat(control$1.sm, ";\n padding: 0 ").concat(inset.md, ";\n ");
|
|
1133
|
+
return "\n font: ".concat(button$1.sizes.small.font, ";\n font-weight: ").concat(button$1.sizes.small.fontWeight, ";\n min-height: ").concat(control$1.sm, ";\n padding: 0 ").concat(inset.md, ";\n ");
|
|
1129
1134
|
case 'medium':
|
|
1130
1135
|
return "\n font: ".concat(button$1.sizes.medium.font, ";\n min-height: ").concat(control$1.md, ";\n padding: 0 ").concat(inset.lg, ";\n ");
|
|
1131
1136
|
case 'large':
|
|
@@ -1139,14 +1144,14 @@ var StyledButton = /*#__PURE__*/styled__default.default.button.withConfig({
|
|
|
1139
1144
|
},
|
|
1140
1145
|
displayName: "Button__StyledButton",
|
|
1141
1146
|
componentId: "sc-1eiuum9-0"
|
|
1142
|
-
})(templateObject_1$
|
|
1147
|
+
})(templateObject_1$J || (templateObject_1$J = __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);
|
|
1143
1148
|
var StyledLink = /*#__PURE__*/styled__default.default.a.withConfig({
|
|
1144
1149
|
shouldForwardProp: function shouldForwardProp(prop) {
|
|
1145
1150
|
return !prop.startsWith('$');
|
|
1146
1151
|
},
|
|
1147
1152
|
displayName: "Button__StyledLink",
|
|
1148
1153
|
componentId: "sc-1eiuum9-1"
|
|
1149
|
-
})(templateObject_2$
|
|
1154
|
+
})(templateObject_2$v || (templateObject_2$v = __makeTemplateObject(["\n ", "\n border-radius: ", ";\n \n ", "\n ", "\n"], ["\n ", "\n border-radius: ", ";\n \n ", "\n ", "\n"
|
|
1150
1155
|
// Helper function to get icon size based on button size
|
|
1151
1156
|
])), baseButtonStyles, button$1.primary.borderRadius, getVariantStyles$1, getSizeStyles);
|
|
1152
1157
|
// Helper function to get icon size based on button size
|
|
@@ -1249,24 +1254,35 @@ var Button = function Button(_a) {
|
|
|
1249
1254
|
children: renderButtonContent(children, iconName, size)
|
|
1250
1255
|
}));
|
|
1251
1256
|
};
|
|
1252
|
-
var templateObject_1$
|
|
1257
|
+
var templateObject_1$J, templateObject_2$v;
|
|
1253
1258
|
|
|
1254
|
-
var semantic$
|
|
1255
|
-
var color$
|
|
1259
|
+
var semantic$j = tokens.semantic;
|
|
1260
|
+
var color$9 = semantic$j.color;
|
|
1256
1261
|
var label$2 = tokens.component.badge.label;
|
|
1257
|
-
var category = color$
|
|
1258
|
-
var radius$3 = semantic$
|
|
1259
|
-
var space$d = semantic$
|
|
1260
|
-
var labelHeight$1 = semantic$
|
|
1261
|
-
|
|
1262
|
+
var category = color$9.category;
|
|
1263
|
+
var radius$3 = semantic$j.radius;
|
|
1264
|
+
var space$d = semantic$j.space;
|
|
1265
|
+
var labelHeight$1 = semantic$j.size.label;
|
|
1266
|
+
var displayColor = {
|
|
1267
|
+
olive: 'olive',
|
|
1268
|
+
periwinkle: 'periwinkle',
|
|
1269
|
+
rose: 'rose',
|
|
1270
|
+
magenta: 'magenta',
|
|
1271
|
+
gray: 'gray',
|
|
1272
|
+
blue: 'periwinkle',
|
|
1273
|
+
purple: 'magenta',
|
|
1274
|
+
pink: 'rose',
|
|
1275
|
+
yellow: 'olive',
|
|
1276
|
+
green: 'olive',
|
|
1277
|
+
red: 'rose',
|
|
1278
|
+
orange: 'rose'
|
|
1279
|
+
};
|
|
1280
|
+
// Text on white or the -muted fill (outlined and minimal), at least 4.5:1 (#115)
|
|
1262
1281
|
var categoryText = {
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
green: category['green-text'],
|
|
1268
|
-
red: category['red-text'],
|
|
1269
|
-
orange: category['orange-text'],
|
|
1282
|
+
olive: category['olive-text'],
|
|
1283
|
+
periwinkle: category['periwinkle-text'],
|
|
1284
|
+
rose: category['rose-text'],
|
|
1285
|
+
magenta: category['magenta-text'],
|
|
1270
1286
|
gray: category['gray-text']
|
|
1271
1287
|
};
|
|
1272
1288
|
var StyledCategoryLabel = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
@@ -1275,10 +1291,10 @@ var StyledCategoryLabel = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
|
1275
1291
|
},
|
|
1276
1292
|
displayName: "CategoryLabel__StyledCategoryLabel",
|
|
1277
1293
|
componentId: "sc-1jx7bjo-0"
|
|
1278
|
-
})(templateObject_1$
|
|
1294
|
+
})(templateObject_1$I || (templateObject_1$I = __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"
|
|
1279
1295
|
// The visible content, hidden from assistive technology when an aria-label replaces it.
|
|
1280
1296
|
// display: contents keeps the root's flex layout and gap.
|
|
1281
|
-
])), radius$3.full, semantic$
|
|
1297
|
+
])), radius$3.full, semantic$j.border.width.thin, function (_a) {
|
|
1282
1298
|
var $size = _a.$size;
|
|
1283
1299
|
return labelHeight$1[$size];
|
|
1284
1300
|
}, function (_a) {
|
|
@@ -1302,7 +1318,7 @@ var StyledCategoryLabel = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
|
1302
1318
|
var $color = _a.$color,
|
|
1303
1319
|
$variant = _a.$variant;
|
|
1304
1320
|
if ($variant === 'filled') {
|
|
1305
|
-
return color$
|
|
1321
|
+
return color$9.text.inverse;
|
|
1306
1322
|
}
|
|
1307
1323
|
return categoryText[$color];
|
|
1308
1324
|
}, function (_a) {
|
|
@@ -1318,7 +1334,7 @@ var StyledCategoryLabel = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
|
1318
1334
|
var VisibleContent$1 = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
1319
1335
|
displayName: "CategoryLabel__VisibleContent",
|
|
1320
1336
|
componentId: "sc-1jx7bjo-1"
|
|
1321
|
-
})(templateObject_2$
|
|
1337
|
+
})(templateObject_2$u || (templateObject_2$u = __makeTemplateObject(["\n display: contents;\n"], ["\n display: contents;\n"])));
|
|
1322
1338
|
var HiddenLabel = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
1323
1339
|
displayName: "CategoryLabel__HiddenLabel",
|
|
1324
1340
|
componentId: "sc-1jx7bjo-2"
|
|
@@ -1326,16 +1342,17 @@ var HiddenLabel = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
|
1326
1342
|
/**
|
|
1327
1343
|
* CategoryLabel colour-codes an item's category, such as a transaction's (decision 0018).
|
|
1328
1344
|
*
|
|
1329
|
-
* A static, chip-like label with
|
|
1330
|
-
* Category colours carry no
|
|
1345
|
+
* A static, chip-like label with 4 display colours plus grey, 3 visual variants and an optional
|
|
1346
|
+
* icon. Category colours carry no meaning (decision 0043); for status use StatusLabel. Beyond five
|
|
1347
|
+
* categories, the icon and text tell them apart.
|
|
1331
1348
|
*
|
|
1332
1349
|
* @example
|
|
1333
1350
|
* ```tsx
|
|
1334
|
-
* <CategoryLabel color="
|
|
1351
|
+
* <CategoryLabel color="rose" icon="creditCard">
|
|
1335
1352
|
* Shopping
|
|
1336
1353
|
* </CategoryLabel>
|
|
1337
1354
|
*
|
|
1338
|
-
* <CategoryLabel color="
|
|
1355
|
+
* <CategoryLabel color="periwinkle" variant="outlined" size="medium">
|
|
1339
1356
|
* Travel
|
|
1340
1357
|
* </CategoryLabel>
|
|
1341
1358
|
* ```
|
|
@@ -1343,16 +1360,17 @@ var HiddenLabel = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
|
1343
1360
|
/**
|
|
1344
1361
|
* CategoryLabel colour-codes an item's category, such as a transaction's (decision 0018).
|
|
1345
1362
|
*
|
|
1346
|
-
* A static, chip-like label with
|
|
1347
|
-
* Category colours carry no
|
|
1363
|
+
* A static, chip-like label with 4 display colours plus grey, 3 visual variants and an optional
|
|
1364
|
+
* icon. Category colours carry no meaning (decision 0043); for status use StatusLabel. Beyond five
|
|
1365
|
+
* categories, the icon and text tell them apart.
|
|
1348
1366
|
*
|
|
1349
1367
|
* @example
|
|
1350
1368
|
* ```tsx
|
|
1351
|
-
* <CategoryLabel color="
|
|
1369
|
+
* <CategoryLabel color="rose" icon="creditCard">
|
|
1352
1370
|
* Shopping
|
|
1353
1371
|
* </CategoryLabel>
|
|
1354
1372
|
*
|
|
1355
|
-
* <CategoryLabel color="
|
|
1373
|
+
* <CategoryLabel color="periwinkle" variant="outlined" size="medium">
|
|
1356
1374
|
* Travel
|
|
1357
1375
|
* </CategoryLabel>
|
|
1358
1376
|
* ```
|
|
@@ -1360,7 +1378,7 @@ var HiddenLabel = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
|
1360
1378
|
var CategoryLabel = function CategoryLabel(_a) {
|
|
1361
1379
|
var children = _a.children,
|
|
1362
1380
|
_b = _a.color,
|
|
1363
|
-
color = _b === void 0 ? '
|
|
1381
|
+
color = _b === void 0 ? 'periwinkle' : _b,
|
|
1364
1382
|
_c = _a.variant,
|
|
1365
1383
|
variant = _c === void 0 ? 'filled' : _c,
|
|
1366
1384
|
_d = _a.size,
|
|
@@ -1372,7 +1390,7 @@ var CategoryLabel = function CategoryLabel(_a) {
|
|
|
1372
1390
|
// A blank aria-label is no label at all, so it falls back like a missing one
|
|
1373
1391
|
var accessibleLabel = (ariaLabel === null || ariaLabel === void 0 ? void 0 : ariaLabel.trim()) ? ariaLabel : undefined;
|
|
1374
1392
|
return jsxRuntime.jsxs(StyledCategoryLabel, {
|
|
1375
|
-
"$color": color,
|
|
1393
|
+
"$color": displayColor[color],
|
|
1376
1394
|
"$variant": variant,
|
|
1377
1395
|
"$size": size,
|
|
1378
1396
|
"data-testid": dataTestId,
|
|
@@ -1389,7 +1407,7 @@ var CategoryLabel = function CategoryLabel(_a) {
|
|
|
1389
1407
|
});
|
|
1390
1408
|
};
|
|
1391
1409
|
CategoryLabel.displayName = 'CategoryLabel';
|
|
1392
|
-
var templateObject_1$
|
|
1410
|
+
var templateObject_1$I, templateObject_2$u, templateObject_3$s;
|
|
1393
1411
|
|
|
1394
1412
|
// CategoryBadge sizes on the decision 0018 scale
|
|
1395
1413
|
var toLabelSize = {
|
|
@@ -1413,8 +1431,8 @@ var CategoryBadge = function CategoryBadge(_a) {
|
|
|
1413
1431
|
};
|
|
1414
1432
|
CategoryBadge.displayName = 'CategoryBadge';
|
|
1415
1433
|
|
|
1416
|
-
var chip$
|
|
1417
|
-
semantic$
|
|
1434
|
+
var chip$2 = tokens.component.chip,
|
|
1435
|
+
semantic$i = tokens.semantic;
|
|
1418
1436
|
// Helper function to get variant styles matching Button's approach
|
|
1419
1437
|
var getVariantStyles = function getVariantStyles(_a) {
|
|
1420
1438
|
var $variant = _a.$variant,
|
|
@@ -1427,34 +1445,34 @@ var getVariantStyles = function getVariantStyles(_a) {
|
|
|
1427
1445
|
// A selected disabled chip looks like any disabled chip; the checkmark keeps the
|
|
1428
1446
|
// selected state visible (#110)
|
|
1429
1447
|
if ($disabled) {
|
|
1430
|
-
var disabled = chip$
|
|
1448
|
+
var disabled = chip$2.variants.subtle.disabled;
|
|
1431
1449
|
return "\n background-color: ".concat(disabled.backgroundColor, ";\n color: ").concat(disabled.textColor, ";\n ");
|
|
1432
1450
|
}
|
|
1433
1451
|
var _b = tokens.semantic.color,
|
|
1434
1452
|
fill = _b.fill,
|
|
1435
1453
|
text = _b.text;
|
|
1436
1454
|
var interactiveStates = $clickable;
|
|
1437
|
-
return "\n background-color: ".concat(fill['accent-muted'], ";\n color: ").concat(text.accent, ";\n \n &:hover {\n background-color: ").concat(interactiveStates ? fill['accent-muted-hover'] : fill['accent-muted'], ";\n color: ").concat(interactiveStates ? text
|
|
1455
|
+
return "\n background-color: ".concat(fill['accent-muted'], ";\n color: ").concat(text.accent, ";\n \n &:hover {\n background-color: ").concat(interactiveStates ? fill['accent-muted-hover'] : fill['accent-muted'], ";\n color: ").concat(interactiveStates ? text.accent : text.accent, ";\n }\n \n &:active {\n background-color: ").concat(interactiveStates ? fill['accent-muted-pressed'] : fill['accent-muted'], ";\n color: ").concat(interactiveStates ? text.accent : text.accent, ";\n }\n\n /* Forced colours drop the fill, so a selected chip takes the system selection colours\n (decision 0038); its checkmark follows the text colour */\n ").concat(forcedColors, " {\n forced-color-adjust: none;\n background-color: Highlight;\n border-color: Highlight;\n color: HighlightText;\n }\n ");
|
|
1438
1456
|
}
|
|
1439
1457
|
switch ($variant) {
|
|
1440
1458
|
case 'emphasis':
|
|
1441
|
-
return "\n background-color: ".concat(chip$
|
|
1459
|
+
return "\n background-color: ".concat(chip$2.variants.emphasis.backgroundColor, ";\n color: ").concat(chip$2.variants.emphasis.textColor, ";\n \n &:hover {\n background-color: ").concat($disabled ? chip$2.variants.emphasis.disabled.backgroundColor : $clickable ? chip$2.variants.emphasis.hover.backgroundColor : chip$2.variants.emphasis.backgroundColor, ";\n }\n \n &:active {\n background-color: ").concat($disabled ? chip$2.variants.emphasis.disabled.backgroundColor : $clickable ? chip$2.variants.emphasis.active.backgroundColor : chip$2.variants.emphasis.backgroundColor, ";\n }\n \n ").concat($disabled ? "\n background-color: ".concat(chip$2.variants.emphasis.disabled.backgroundColor, ";\n color: ").concat(chip$2.variants.emphasis.disabled.textColor, ";\n ") : '', "\n ");
|
|
1442
1460
|
case 'subtle':
|
|
1443
|
-
return "\n background-color: ".concat(chip$
|
|
1461
|
+
return "\n background-color: ".concat(chip$2.variants.subtle.backgroundColor, ";\n color: ").concat(chip$2.variants.subtle.textColor, ";\n \n &:hover {\n background-color: ").concat($disabled ? chip$2.variants.subtle.disabled.backgroundColor : $clickable ? chip$2.variants.subtle.hover.backgroundColor : chip$2.variants.subtle.backgroundColor, ";\n }\n \n &:active {\n background-color: ").concat($disabled ? chip$2.variants.subtle.disabled.backgroundColor : $clickable ? chip$2.variants.subtle.active.backgroundColor : chip$2.variants.subtle.backgroundColor, ";\n }\n \n ").concat($disabled ? "\n background-color: ".concat(chip$2.variants.subtle.disabled.backgroundColor, ";\n color: ").concat(chip$2.variants.subtle.disabled.textColor, ";\n ") : '', "\n ");
|
|
1444
1462
|
case 'interactive':
|
|
1445
|
-
return "\n background-color: ".concat(chip$
|
|
1463
|
+
return "\n background-color: ".concat(chip$2.variants.interactive.backgroundColor, ";\n color: ").concat(chip$2.variants.interactive.textColor, ";\n \n &:hover {\n background-color: ").concat($disabled ? chip$2.variants.interactive.disabled.backgroundColor : $clickable ? chip$2.variants.interactive.hover.backgroundColor : chip$2.variants.interactive.backgroundColor, ";\n }\n \n &:active {\n background-color: ").concat($disabled ? chip$2.variants.interactive.disabled.backgroundColor : $clickable ? chip$2.variants.interactive.active.backgroundColor : chip$2.variants.interactive.backgroundColor, ";\n }\n \n ").concat($disabled ? "\n background-color: ".concat(chip$2.variants.interactive.disabled.backgroundColor, ";\n color: ").concat(chip$2.variants.interactive.disabled.textColor, ";\n ") : '', "\n ");
|
|
1446
1464
|
case 'default':
|
|
1447
1465
|
default:
|
|
1448
|
-
return "\n background-color: ".concat(chip$
|
|
1466
|
+
return "\n background-color: ".concat(chip$2["default"].backgroundColor, ";\n color: ").concat(chip$2["default"].textColor, ";\n \n &:hover {\n background-color: ").concat($disabled ? chip$2.disabled.backgroundColor : $clickable ? chip$2.hover.backgroundColor : chip$2["default"].backgroundColor, ";\n }\n \n &:active {\n background-color: ").concat($disabled ? chip$2.disabled.backgroundColor : $clickable ? chip$2.active.backgroundColor : chip$2["default"].backgroundColor, ";\n }\n \n ").concat($disabled ? "\n background-color: ".concat(chip$2.disabled.backgroundColor, ";\n color: ").concat(chip$2.disabled.textColor, ";\n ") : '', "\n ");
|
|
1449
1467
|
}
|
|
1450
1468
|
};
|
|
1451
1469
|
// Chips have one size: 24px from the label scale as a minimum, with the content centred
|
|
1452
1470
|
// and no vertical padding (decisions 0034 and 0035). Horizontal padding comes from the
|
|
1453
1471
|
// semantic spacing scale (decision 0022).
|
|
1454
|
-
var sizeStyles = "\n font: ".concat(chip$
|
|
1472
|
+
var sizeStyles = "\n font: ".concat(chip$2.sizes.medium.font, ";\n min-height: ").concat(semantic$i.size.label.medium, ";\n padding: 0 ").concat(semantic$i.space.inset.sm, ";\n");
|
|
1455
1473
|
|
|
1456
|
-
var chip = tokens.component.chip,
|
|
1457
|
-
semantic$
|
|
1474
|
+
var chip$1 = tokens.component.chip,
|
|
1475
|
+
semantic$h = tokens.semantic;
|
|
1458
1476
|
// Base styled component using direct prop interpolation like Button
|
|
1459
1477
|
var StyledChip = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
1460
1478
|
shouldForwardProp: function shouldForwardProp(prop) {
|
|
@@ -1462,18 +1480,18 @@ var StyledChip = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
|
1462
1480
|
},
|
|
1463
1481
|
displayName: "ChipBase__StyledChip",
|
|
1464
1482
|
componentId: "sc-moa6zc-0"
|
|
1465
|
-
})(templateObject_1$
|
|
1483
|
+
})(templateObject_1$H || (templateObject_1$H = __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 /* Forced colours: an edge, and GrayText when disabled, since a span gets no system disabled\n colour (decision 0038). Before the variant styles, so a selected chip's Highlight border wins. */\n ", "\n ", "\n\n ", "\n ", "\n \n &:focus-visible {\n outline: ", ";\n outline-offset: ", ";\n }\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 /* Forced colours: an edge, and GrayText when disabled, since a span gets no system disabled\n colour (decision 0038). Before the variant styles, so a selected chip's Highlight border wins. */\n ", "\n ", "\n\n ", "\n ", "\n \n &:focus-visible {\n outline: ", ";\n outline-offset: ", ";\n }\n\n"
|
|
1466
1484
|
// Icon container for selected indicator or leading icons
|
|
1467
|
-
])), chip["default"].borderRadius, semantic$
|
|
1485
|
+
])), chip$1["default"].borderRadius, semantic$h.motion.transition.feedback, function (props) {
|
|
1468
1486
|
return props.$disabled ? 'not-allowed' : props.$clickable ? 'pointer' : 'default';
|
|
1469
1487
|
}, forcedColorsEdge, function (props) {
|
|
1470
1488
|
return props.$disabled ? "".concat(forcedColors, " { color: GrayText; }") : '';
|
|
1471
|
-
}, getVariantStyles, sizeStyles, chip.focus.outline, semantic$
|
|
1489
|
+
}, getVariantStyles, sizeStyles, chip$1.focus.outline, semantic$h.border.focusOffset);
|
|
1472
1490
|
// Icon container for selected indicator or leading icons
|
|
1473
1491
|
var IconContainer = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
1474
1492
|
displayName: "ChipBase__IconContainer",
|
|
1475
1493
|
componentId: "sc-moa6zc-1"
|
|
1476
|
-
})(templateObject_2$
|
|
1494
|
+
})(templateObject_2$t || (templateObject_2$t = __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"
|
|
1477
1495
|
// Close button for dismissible chips
|
|
1478
1496
|
])), tokens.semantic.space[100]);
|
|
1479
1497
|
// Close button for dismissible chips
|
|
@@ -1483,10 +1501,10 @@ var CloseButton = /*#__PURE__*/styled__default.default.button.withConfig({
|
|
|
1483
1501
|
},
|
|
1484
1502
|
displayName: "ChipBase__CloseButton",
|
|
1485
1503
|
componentId: "sc-moa6zc-2"
|
|
1486
|
-
})(templateObject_3$r || (templateObject_3$r = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-left: ", ";\n background: transparent;\n border: none;\n position: relative;\n width: ", ";\n height: ", ";\n padding: ", ";\n\n /* The pointer target is at least 24 \xD7 24px (WCAG 2.5.8, decision 0039): an invisible hit area\n as tall as the chip, centred on the 20px button. It stays inside the chip and its padding, so\n it can't overlap another target. */\n &::before {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n width: ", ";\n height: ", ";\n transform: translate(-50%, -50%);\n }\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 position: relative;\n width: ", ";\n height: ", ";\n padding: ", ";\n\n /* The pointer target is at least 24 \xD7 24px (WCAG 2.5.8, decision 0039): an invisible hit area\n as tall as the chip, centred on the 20px button. It stays inside the chip and its padding, so\n it can't overlap another target. */\n &::before {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n width: ", ";\n height: ", ";\n transform: translate(-50%, -50%);\n }\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"])), tokens.semantic.space[200], chip.closeButton.size, chip.closeButton.size, tokens.semantic.space[0], semantic$
|
|
1504
|
+
})(templateObject_3$r || (templateObject_3$r = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-left: ", ";\n background: transparent;\n border: none;\n position: relative;\n width: ", ";\n height: ", ";\n padding: ", ";\n\n /* The pointer target is at least 24 \xD7 24px (WCAG 2.5.8, decision 0039): an invisible hit area\n as tall as the chip, centred on the 20px button. It stays inside the chip and its padding, so\n it can't overlap another target. */\n &::before {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n width: ", ";\n height: ", ";\n transform: translate(-50%, -50%);\n }\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 position: relative;\n width: ", ";\n height: ", ";\n padding: ", ";\n\n /* The pointer target is at least 24 \xD7 24px (WCAG 2.5.8, decision 0039): an invisible hit area\n as tall as the chip, centred on the 20px button. It stays inside the chip and its padding, so\n it can't overlap another target. */\n &::before {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n width: ", ";\n height: ", ";\n transform: translate(-50%, -50%);\n }\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"])), tokens.semantic.space[200], chip$1.closeButton.size, chip$1.closeButton.size, tokens.semantic.space[0], semantic$h.size.label.medium, semantic$h.size.label.medium, tokens.semantic.radius.xs, function (props) {
|
|
1487
1505
|
return props.$disabled ? 'not-allowed' : 'pointer';
|
|
1488
|
-
}, semantic$
|
|
1489
|
-
var templateObject_1$
|
|
1506
|
+
}, semantic$h.motion.transition.feedback, tokens.semantic.color.fill['none-hover'], tokens.semantic.color.fill['none-pressed'], tokens.semantic.color.text.disabled, chip$1.focus.outline, semantic$h.border.focusOffset, chip$1["default"].borderRadius);
|
|
1507
|
+
var templateObject_1$H, templateObject_2$t, templateObject_3$r;
|
|
1490
1508
|
|
|
1491
1509
|
/**
|
|
1492
1510
|
* Chip - a static, non-interactive label for tags, categories and metadata.
|
|
@@ -1723,11 +1741,61 @@ var BooleanChip = function BooleanChip(_a) {
|
|
|
1723
1741
|
}));
|
|
1724
1742
|
};
|
|
1725
1743
|
|
|
1744
|
+
var chip = tokens.component.chip,
|
|
1745
|
+
semantic$g = tokens.semantic;
|
|
1746
|
+
var color$8 = semantic$g.color;
|
|
1747
|
+
// Outlined, with the naked fill ladder on hover and press (decisions 0030, 0046): the edge keeps it
|
|
1748
|
+
// visible on white, the page and AgentInput's docked band
|
|
1749
|
+
var StyledSuggestionChip = /*#__PURE__*/styled__default.default.button.withConfig({
|
|
1750
|
+
displayName: "SuggestionChip__StyledSuggestionChip",
|
|
1751
|
+
componentId: "sc-1k0njm-0"
|
|
1752
|
+
})(templateObject_1$G || (templateObject_1$G = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n margin: 0;\n box-sizing: border-box;\n border: ", " solid ", ";\n border-radius: ", ";\n background-color: ", ";\n color: ", ";\n cursor: pointer;\n text-align: start;\n /* A long suggestion wraps inside the chip rather than being cut off (issue 279) */\n white-space: normal;\n overflow-wrap: anywhere;\n transition: ", ";\n ", "\n\n &:hover:not(:disabled) {\n background-color: ", ";\n }\n\n &:active:not(:disabled) {\n background-color: ", ";\n }\n\n &:focus-visible {\n outline: ", ";\n outline-offset: ", ";\n }\n\n &:disabled {\n border-color: ", ";\n color: ", ";\n cursor: not-allowed;\n }\n\n /* Forced colours: a native button gets ButtonBorder and GrayText; keep the edge (decision 0038) */\n ", " {\n border-color: ButtonBorder;\n\n &:disabled {\n border-color: GrayText;\n }\n }\n"], ["\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n margin: 0;\n box-sizing: border-box;\n border: ", " solid ", ";\n border-radius: ", ";\n background-color: ", ";\n color: ", ";\n cursor: pointer;\n text-align: start;\n /* A long suggestion wraps inside the chip rather than being cut off (issue 279) */\n white-space: normal;\n overflow-wrap: anywhere;\n transition: ", ";\n ", "\n\n &:hover:not(:disabled) {\n background-color: ", ";\n }\n\n &:active:not(:disabled) {\n background-color: ", ";\n }\n\n &:focus-visible {\n outline: ", ";\n outline-offset: ", ";\n }\n\n &:disabled {\n border-color: ", ";\n color: ", ";\n cursor: not-allowed;\n }\n\n /* Forced colours: a native button gets ButtonBorder and GrayText; keep the edge (decision 0038) */\n ", " {\n border-color: ButtonBorder;\n\n &:disabled {\n border-color: GrayText;\n }\n }\n"
|
|
1753
|
+
/**
|
|
1754
|
+
* SuggestionChip - Offers text to put in the agent input
|
|
1755
|
+
*
|
|
1756
|
+
* The Suggestion chip type from decision 0046 (amending 0016): the one chip that acts on click.
|
|
1757
|
+
* Picking it fills the input so the user can edit before sending; it never sends or runs a command,
|
|
1758
|
+
* which is why it's a chip and not a Button. AgentInput renders these from its `suggestions` prop.
|
|
1759
|
+
*
|
|
1760
|
+
* Features:
|
|
1761
|
+
* - A native button: Enter and Space pick it, and its text is its accessible name
|
|
1762
|
+
* - Outlined, with the naked hover and pressed fills; no selected state
|
|
1763
|
+
* - One chip height (24px minimum, decision 0035); long text wraps instead of being cut off
|
|
1764
|
+
*/])), semantic$g.border.width.thin, color$8.border.input, chip["default"].borderRadius, color$8.fill.none, color$8.text["default"], semantic$g.motion.transition.feedback, sizeStyles, color$8.fill['none-hover'], color$8.fill['none-pressed'], chip.focus.outline, semantic$g.border.focusOffset, color$8.border["default"], color$8.text.disabled, forcedColors);
|
|
1765
|
+
/**
|
|
1766
|
+
* SuggestionChip - Offers text to put in the agent input
|
|
1767
|
+
*
|
|
1768
|
+
* The Suggestion chip type from decision 0046 (amending 0016): the one chip that acts on click.
|
|
1769
|
+
* Picking it fills the input so the user can edit before sending; it never sends or runs a command,
|
|
1770
|
+
* which is why it's a chip and not a Button. AgentInput renders these from its `suggestions` prop.
|
|
1771
|
+
*
|
|
1772
|
+
* Features:
|
|
1773
|
+
* - A native button: Enter and Space pick it, and its text is its accessible name
|
|
1774
|
+
* - Outlined, with the naked hover and pressed fills; no selected state
|
|
1775
|
+
* - One chip height (24px minimum, decision 0035); long text wraps instead of being cut off
|
|
1776
|
+
*/
|
|
1777
|
+
var SuggestionChip = function SuggestionChip(_a) {
|
|
1778
|
+
var children = _a.children,
|
|
1779
|
+
onClick = _a.onClick,
|
|
1780
|
+
_b = _a.disabled,
|
|
1781
|
+
disabled = _b === void 0 ? false : _b,
|
|
1782
|
+
dataTestId = _a["data-testid"];
|
|
1783
|
+
return jsxRuntime.jsx(StyledSuggestionChip, {
|
|
1784
|
+
type: "button",
|
|
1785
|
+
onClick: onClick,
|
|
1786
|
+
disabled: disabled,
|
|
1787
|
+
"data-testid": dataTestId,
|
|
1788
|
+
children: children
|
|
1789
|
+
});
|
|
1790
|
+
};
|
|
1791
|
+
SuggestionChip.displayName = 'SuggestionChip';
|
|
1792
|
+
var templateObject_1$G;
|
|
1793
|
+
|
|
1726
1794
|
var space$c = tokens.semantic.space;
|
|
1727
1795
|
var StyledContainer$2 = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
1728
1796
|
displayName: "Container__StyledContainer",
|
|
1729
1797
|
componentId: "sc-17dbj6n-0"
|
|
1730
|
-
})(templateObject_1$
|
|
1798
|
+
})(templateObject_1$F || (templateObject_1$F = __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"])), space$c[600], space$c[600], 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']);
|
|
1731
1799
|
var Container$1 = function Container(_a) {
|
|
1732
1800
|
var children = _a.children,
|
|
1733
1801
|
props = __rest(_a, ["children"]);
|
|
@@ -1735,12 +1803,12 @@ var Container$1 = function Container(_a) {
|
|
|
1735
1803
|
children: children
|
|
1736
1804
|
}));
|
|
1737
1805
|
};
|
|
1738
|
-
var templateObject_1$
|
|
1806
|
+
var templateObject_1$F;
|
|
1739
1807
|
|
|
1740
1808
|
var PictureWrapper = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
1741
1809
|
displayName: "Picture__PictureWrapper",
|
|
1742
1810
|
componentId: "sc-11d9tei-0"
|
|
1743
|
-
})(templateObject_1$
|
|
1811
|
+
})(templateObject_1$E || (templateObject_1$E = __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"
|
|
1744
1812
|
// A clickable image answers input on the image itself (decision 0029, #185): it fades on hover and
|
|
1745
1813
|
// one step further while pressed, and draws the system focus ring around the image, following its
|
|
1746
1814
|
// rounded corners. Fading isn't movement, so it stays under reduced motion.
|
|
@@ -1748,7 +1816,7 @@ var PictureWrapper = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
|
1748
1816
|
// A clickable image answers input on the image itself (decision 0029, #185): it fades on hover and
|
|
1749
1817
|
// one step further while pressed, and draws the system focus ring around the image, following its
|
|
1750
1818
|
// rounded corners. Fading isn't movement, so it stays under reduced motion.
|
|
1751
|
-
var clickableImage = styled.css(templateObject_2$
|
|
1819
|
+
var clickableImage = styled.css(templateObject_2$s || (templateObject_2$s = __makeTemplateObject(["\n display: block;\n cursor: pointer;\n\n img {\n transition: ", ";\n }\n\n &:hover img {\n opacity: ", ";\n }\n\n &:active img {\n opacity: ", ";\n }\n\n &:focus-visible {\n outline: none;\n }\n\n &:focus-visible img {\n outline: ", ";\n outline-offset: ", ";\n }\n"], ["\n display: block;\n cursor: pointer;\n\n img {\n transition: ", ";\n }\n\n &:hover img {\n opacity: ", ";\n }\n\n &:active img {\n opacity: ", ";\n }\n\n &:focus-visible {\n outline: none;\n }\n\n &:focus-visible img {\n outline: ", ";\n outline-offset: ", ";\n }\n"])), tokens.semantic.motion.transition.press, tokens.semantic.opacity.hover, tokens.semantic.opacity.pressed, tokens.semantic.border.focus, tokens.semantic.border.focusOffset);
|
|
1752
1820
|
var ImageLink = /*#__PURE__*/styled__default.default.a.withConfig({
|
|
1753
1821
|
displayName: "Picture__ImageLink",
|
|
1754
1822
|
componentId: "sc-11d9tei-1"
|
|
@@ -1790,18 +1858,18 @@ var Picture = function Picture(_a) {
|
|
|
1790
1858
|
}) : image
|
|
1791
1859
|
});
|
|
1792
1860
|
};
|
|
1793
|
-
var templateObject_1$
|
|
1861
|
+
var templateObject_1$E, templateObject_2$s, templateObject_3$q, templateObject_4$l, templateObject_5$h;
|
|
1794
1862
|
|
|
1795
1863
|
var _a$8 = tokens.semantic,
|
|
1796
|
-
typography$
|
|
1797
|
-
color$
|
|
1864
|
+
typography$2 = _a$8.typography,
|
|
1865
|
+
color$7 = _a$8.color;
|
|
1798
1866
|
var TimeStyled = /*#__PURE__*/styled__default.default.time.withConfig({
|
|
1799
1867
|
displayName: "DateFormatter__TimeStyled",
|
|
1800
1868
|
componentId: "sc-5464cc-0"
|
|
1801
|
-
})(templateObject_1$
|
|
1869
|
+
})(templateObject_1$D || (templateObject_1$D = __makeTemplateObject(["\n font: ", ";\n color: ", ";\n"], ["\n font: ", ";\n color: ", ";\n"
|
|
1802
1870
|
/**
|
|
1803
1871
|
* Formats a date with smart relative/absolute logic
|
|
1804
|
-
*/])), typography$
|
|
1872
|
+
*/])), typography$2.label, color$7.text.muted);
|
|
1805
1873
|
/**
|
|
1806
1874
|
* Formats a date with smart relative/absolute logic
|
|
1807
1875
|
*/
|
|
@@ -1844,21 +1912,21 @@ var DateFormatter = function DateFormatter(_a) {
|
|
|
1844
1912
|
children: displayText
|
|
1845
1913
|
});
|
|
1846
1914
|
};
|
|
1847
|
-
var templateObject_1$
|
|
1915
|
+
var templateObject_1$D;
|
|
1848
1916
|
|
|
1849
1917
|
var _a$7 = tokens.semantic,
|
|
1850
1918
|
motion$5 = _a$7.motion,
|
|
1851
1919
|
border$3 = _a$7.border,
|
|
1852
1920
|
space$b = _a$7.space,
|
|
1853
|
-
size$
|
|
1921
|
+
size$3 = _a$7.size,
|
|
1854
1922
|
_b$2 = tokens.component,
|
|
1855
1923
|
iconButton = _b$2.iconButton,
|
|
1856
1924
|
button = _b$2.button;
|
|
1857
1925
|
// Height and width come from size.control as a minimum (decision 0034)
|
|
1858
1926
|
var control = {
|
|
1859
|
-
small: size$
|
|
1860
|
-
medium: size$
|
|
1861
|
-
large: size$
|
|
1927
|
+
small: size$3.control.sm,
|
|
1928
|
+
medium: size$3.control.md,
|
|
1929
|
+
large: size$3.control.lg
|
|
1862
1930
|
};
|
|
1863
1931
|
// Padding comes from the semantic spacing scale: no component spacing tokens (decision 0022)
|
|
1864
1932
|
var padding = {
|
|
@@ -1905,7 +1973,7 @@ var IconButtonStyled = /*#__PURE__*/styled__default.default.button.withConfig({
|
|
|
1905
1973
|
},
|
|
1906
1974
|
displayName: "IconButton__IconButtonStyled",
|
|
1907
1975
|
componentId: "sc-k8b14t-0"
|
|
1908
|
-
})(templateObject_1$
|
|
1976
|
+
})(templateObject_1$C || (templateObject_1$C = __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 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 ", "\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 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 ", "\n"])), function (_a) {
|
|
1909
1977
|
var $variant = _a.$variant;
|
|
1910
1978
|
return colours($variant).bg;
|
|
1911
1979
|
}, function (_a) {
|
|
@@ -1983,7 +2051,7 @@ var IconButton = function IconButton(_a) {
|
|
|
1983
2051
|
})
|
|
1984
2052
|
}));
|
|
1985
2053
|
};
|
|
1986
|
-
var templateObject_1$
|
|
2054
|
+
var templateObject_1$C;
|
|
1987
2055
|
|
|
1988
2056
|
var StyledWrapper = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
1989
2057
|
shouldForwardProp: function shouldForwardProp(prop) {
|
|
@@ -1991,7 +2059,7 @@ var StyledWrapper = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
|
1991
2059
|
},
|
|
1992
2060
|
displayName: "MoneyDisplay__StyledWrapper",
|
|
1993
2061
|
componentId: "sc-1mddej3-0"
|
|
1994
|
-
})(templateObject_1$
|
|
2062
|
+
})(templateObject_1$B || (templateObject_1$B = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n text-align: ", ";\n font-weight: ", ";\n"], ["\n display: inline-flex;\n align-items: center;\n text-align: ", ";\n font-weight: ", ";\n"
|
|
1995
2063
|
// Map size to Typography variant
|
|
1996
2064
|
])), function (_a) {
|
|
1997
2065
|
var $align = _a.$align;
|
|
@@ -2007,35 +2075,8 @@ var sizeToTypographyVariant = {
|
|
|
2007
2075
|
large: 'h3',
|
|
2008
2076
|
xlarge: 'h2'
|
|
2009
2077
|
};
|
|
2010
|
-
//
|
|
2011
|
-
var
|
|
2012
|
-
small: 'xs',
|
|
2013
|
-
medium: 'sm',
|
|
2014
|
-
large: 'md',
|
|
2015
|
-
xlarge: 'lg'
|
|
2016
|
-
};
|
|
2017
|
-
/**
|
|
2018
|
-
* Generates aria-label with spelled out amount
|
|
2019
|
-
*/
|
|
2020
|
-
var generateAriaLabel = function generateAriaLabel(amount, currency, locale) {
|
|
2021
|
-
var _a, _b;
|
|
2022
|
-
var formatter = new Intl.NumberFormat(locale, {
|
|
2023
|
-
style: 'currency',
|
|
2024
|
-
currency: currency,
|
|
2025
|
-
minimumFractionDigits: 2,
|
|
2026
|
-
maximumFractionDigits: 2
|
|
2027
|
-
});
|
|
2028
|
-
// Get parts to spell out the amount
|
|
2029
|
-
var parts = formatter.formatToParts(Math.abs(amount));
|
|
2030
|
-
var integerPart = ((_a = parts.find(function (p) {
|
|
2031
|
-
return p.type === 'integer';
|
|
2032
|
-
})) === null || _a === void 0 ? void 0 : _a.value) || '0';
|
|
2033
|
-
var fractionPart = ((_b = parts.find(function (p) {
|
|
2034
|
-
return p.type === 'fraction';
|
|
2035
|
-
})) === null || _b === void 0 ? void 0 : _b.value) || '00';
|
|
2036
|
-
var sign = amount < 0 ? 'negative ' : '';
|
|
2037
|
-
return "".concat(sign).concat(integerPart, " dollars and ").concat(fractionPart, " cents");
|
|
2038
|
-
};
|
|
2078
|
+
// The minus sign, not a hyphen, so it reads and copies as minus (decision 0045)
|
|
2079
|
+
var MINUS = "\u2212";
|
|
2039
2080
|
var MoneyDisplay = function MoneyDisplay(_a) {
|
|
2040
2081
|
var amount = _a.amount,
|
|
2041
2082
|
_b = _a.currency,
|
|
@@ -2061,51 +2102,33 @@ var MoneyDisplay = function MoneyDisplay(_a) {
|
|
|
2061
2102
|
maximumFractionDigits: 2
|
|
2062
2103
|
});
|
|
2063
2104
|
var formattedAmount = formatter.format(Math.abs(amount));
|
|
2064
|
-
//
|
|
2065
|
-
|
|
2066
|
-
var
|
|
2067
|
-
|
|
2068
|
-
var
|
|
2069
|
-
// Get typography variant and icon size
|
|
2105
|
+
// A signed amount carries its sign as text, so the sign survives copying and is read aloud, and the
|
|
2106
|
+
// role colour repeats it (decision 0045). Negative amounts always show their sign.
|
|
2107
|
+
var isNegative = amount < 0 || variant === 'negative';
|
|
2108
|
+
var isPositive = !isNegative && (showSign && amount > 0 || variant === 'positive');
|
|
2109
|
+
var sign = isNegative ? MINUS : isPositive ? '+' : '';
|
|
2070
2110
|
var typographyVariant = sizeToTypographyVariant[size];
|
|
2071
|
-
var
|
|
2072
|
-
|
|
2073
|
-
var iconColor = variant === 'positive' || showPositiveIcon ? 'success' : variant === 'negative' || showNegativeIcon ? 'error' : variant === 'neutral' ? 'subdued' : 'default';
|
|
2074
|
-
// Amount always uses default color (except neutral which stays subdued)
|
|
2075
|
-
var amountColor = variant === 'neutral' ? 'subdued' : 'default';
|
|
2076
|
-
return jsxRuntime.jsxs(StyledWrapper, {
|
|
2111
|
+
var amountColor = isNegative ? 'error' : isPositive ? 'success' : variant === 'neutral' ? 'subdued' : 'default';
|
|
2112
|
+
return jsxRuntime.jsx(StyledWrapper, {
|
|
2077
2113
|
"$align": align,
|
|
2078
2114
|
"$weight": weight,
|
|
2079
|
-
"aria-label": ariaLabel,
|
|
2080
2115
|
"data-testid": dataTestId,
|
|
2081
|
-
children:
|
|
2082
|
-
// The amount is shown without a sign, so the icon is the sign and needs a name (#85)
|
|
2083
|
-
jsxRuntime.jsx(Icon, {
|
|
2084
|
-
name: "addRing",
|
|
2085
|
-
size: iconSize,
|
|
2086
|
-
iconColor: iconColor,
|
|
2087
|
-
"aria-label": "Plus"
|
|
2088
|
-
}), showNegativeIcon && jsxRuntime.jsx(Icon, {
|
|
2089
|
-
name: "remove",
|
|
2090
|
-
size: iconSize,
|
|
2091
|
-
iconColor: iconColor,
|
|
2092
|
-
"aria-label": "Minus"
|
|
2093
|
-
}), jsxRuntime.jsx(Typography, {
|
|
2116
|
+
children: jsxRuntime.jsxs(Typography, {
|
|
2094
2117
|
variant: typographyVariant,
|
|
2095
2118
|
color: amountColor,
|
|
2096
2119
|
as: "span",
|
|
2097
|
-
children: formattedAmount
|
|
2098
|
-
})
|
|
2120
|
+
children: [sign, formattedAmount]
|
|
2121
|
+
})
|
|
2099
2122
|
});
|
|
2100
2123
|
};
|
|
2101
|
-
var templateObject_1$
|
|
2124
|
+
var templateObject_1$B;
|
|
2102
2125
|
|
|
2103
2126
|
// Destructure tokens
|
|
2104
|
-
var semantic$
|
|
2105
|
-
var _a$6 = __assign(__assign({}, semantic$
|
|
2127
|
+
var semantic$f = tokens.semantic;
|
|
2128
|
+
var _a$6 = __assign(__assign({}, semantic$f), {
|
|
2106
2129
|
component: tokens.component
|
|
2107
2130
|
}),
|
|
2108
|
-
color$
|
|
2131
|
+
color$6 = _a$6.color,
|
|
2109
2132
|
motion$4 = _a$6.motion,
|
|
2110
2133
|
radius$2 = _a$6.radius,
|
|
2111
2134
|
component$2 = _a$6.component;
|
|
@@ -2116,9 +2139,9 @@ var ProgressBarContainer = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
|
2116
2139
|
displayName: "ProgressBar__ProgressBarContainer",
|
|
2117
2140
|
componentId: "sc-1nco33q-0"
|
|
2118
2141
|
})(templateObject_3$p || (templateObject_3$p = __makeTemplateObject(["\n background-color: ", ";\n border-radius: ", ";\n overflow: hidden;\n\n /* Forced colours drop the track's fill, so the track gets an edge (decision 0038) */\n ", "\n\n ", "\n\n ", "\n"], ["\n background-color: ", ";\n border-radius: ", ";\n overflow: hidden;\n\n /* Forced colours drop the track's fill, so the track gets an edge (decision 0038) */\n ", "\n\n ", "\n\n ", "\n"])), tokens.component.track.background, radius$2.xs, forcedColorsEdge, function (props) {
|
|
2119
|
-
return props.$variant === 'horizontal' && styled.css(templateObject_1$
|
|
2142
|
+
return props.$variant === 'horizontal' && styled.css(templateObject_1$A || (templateObject_1$A = __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);
|
|
2120
2143
|
}, function (props) {
|
|
2121
|
-
return props.$variant === 'vertical' && styled.css(templateObject_2$
|
|
2144
|
+
return props.$variant === 'vertical' && styled.css(templateObject_2$r || (templateObject_2$r = __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);
|
|
2122
2145
|
});
|
|
2123
2146
|
var ProgressBarFill = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
2124
2147
|
shouldForwardProp: function shouldForwardProp(prop) {
|
|
@@ -2130,15 +2153,15 @@ var ProgressBarFill = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
|
2130
2153
|
var backgroundColor;
|
|
2131
2154
|
switch (props.$color) {
|
|
2132
2155
|
case 'success':
|
|
2133
|
-
backgroundColor = color$
|
|
2156
|
+
backgroundColor = color$6.fill.success;
|
|
2134
2157
|
break;
|
|
2135
2158
|
case 'error':
|
|
2136
|
-
backgroundColor = color$
|
|
2159
|
+
backgroundColor = color$6.fill.danger;
|
|
2137
2160
|
break;
|
|
2138
2161
|
case 'default':
|
|
2139
2162
|
default:
|
|
2140
2163
|
// Near-black, like Slider's fill (decision 0029)
|
|
2141
|
-
backgroundColor = color$
|
|
2164
|
+
backgroundColor = color$6.fill.emphasis;
|
|
2142
2165
|
break;
|
|
2143
2166
|
}
|
|
2144
2167
|
return styled.css(templateObject_4$k || (templateObject_4$k = __makeTemplateObject(["background-color: ", ";"], ["background-color: ", ";"])), backgroundColor);
|
|
@@ -2179,7 +2202,7 @@ var ProgressBar = function ProgressBar(_a) {
|
|
|
2179
2202
|
})
|
|
2180
2203
|
});
|
|
2181
2204
|
};
|
|
2182
|
-
var templateObject_1$
|
|
2205
|
+
var templateObject_1$A, templateObject_2$r, templateObject_3$p, templateObject_4$k, templateObject_5$g, templateObject_6$c, templateObject_7$a;
|
|
2183
2206
|
|
|
2184
2207
|
// Destructure tokens for cleaner access
|
|
2185
2208
|
var separatorTokens = tokens.component.separator;
|
|
@@ -2191,7 +2214,7 @@ var StyledDivider = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
|
2191
2214
|
},
|
|
2192
2215
|
displayName: "Divider__StyledDivider",
|
|
2193
2216
|
componentId: "sc-1l0c8ja-0"
|
|
2194
|
-
})(templateObject_1$
|
|
2217
|
+
})(templateObject_1$z || (templateObject_1$z = __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"
|
|
2195
2218
|
/**
|
|
2196
2219
|
* Divider is an atomic component that provides visual separation between content sections.
|
|
2197
2220
|
*
|
|
@@ -2304,7 +2327,7 @@ var Divider = function Divider(_a) {
|
|
|
2304
2327
|
"aria-orientation": orientation
|
|
2305
2328
|
});
|
|
2306
2329
|
};
|
|
2307
|
-
var templateObject_1$
|
|
2330
|
+
var templateObject_1$z;
|
|
2308
2331
|
|
|
2309
2332
|
var StyledStack = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
2310
2333
|
shouldForwardProp: function shouldForwardProp(prop) {
|
|
@@ -2312,7 +2335,7 @@ var StyledStack = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
|
2312
2335
|
},
|
|
2313
2336
|
displayName: "Stack__StyledStack",
|
|
2314
2337
|
componentId: "sc-1ehkxgy-0"
|
|
2315
|
-
})(templateObject_1$
|
|
2338
|
+
})(templateObject_1$y || (templateObject_1$y = __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"
|
|
2316
2339
|
// Each gap name maps to the space step that replaced its old spacing.layout token (decision 0031),
|
|
2317
2340
|
// so every gap keeps its value
|
|
2318
2341
|
])));
|
|
@@ -2366,7 +2389,41 @@ var Stack = function Stack(_a) {
|
|
|
2366
2389
|
children: children
|
|
2367
2390
|
});
|
|
2368
2391
|
};
|
|
2369
|
-
var templateObject_1$
|
|
2392
|
+
var templateObject_1$y;
|
|
2393
|
+
|
|
2394
|
+
// Shape indicators for the six coloured statuses (decision 0045): filled silhouettes on the
|
|
2395
|
+
// 24px grid, each the same outline as its status icon. Internal: they aren't public icons, so a
|
|
2396
|
+
// bare shape can't be shown without its label. The shape indicator (#264) and the small
|
|
2397
|
+
// StatusLabel and InlineAlert sizes render them at 12px or more, with a darker edge.
|
|
2398
|
+
var statusShapes = {
|
|
2399
|
+
error: 'M22.5 12L17.25 21.0933L6.75 21.0933L1.5 12L6.75 2.9067L17.25 2.9067Z',
|
|
2400
|
+
serious: 'M12 2L22 12L12 22L2 12Z',
|
|
2401
|
+
warning: 'M12 2.5L22 20.5L2 20.5Z',
|
|
2402
|
+
success: 'M12 2A10 10 0 1 1 12 22A10 10 0 1 1 12 2Z',
|
|
2403
|
+
info: 'M7 2H17A5 5 0 0 1 22 7V17A5 5 0 0 1 17 22H7A5 5 0 0 1 2 17V7A5 5 0 0 1 7 2Z',
|
|
2404
|
+
inProgress: 'M12 2A10 10 0 1 1 12 22A10 10 0 1 1 12 2ZM12 4A8 8 0 1 0 12 20A8 8 0 1 0 12 4ZM12 6A6 6 0 0 1 12 18Z'
|
|
2405
|
+
};
|
|
2406
|
+
|
|
2407
|
+
// The shape indicator: at least 12px (decision 0045), filled with the current text colour, which is
|
|
2408
|
+
// the label's role colour at 5.3:1 or more on its tint, so it needs no edge. Decorative: the text
|
|
2409
|
+
// beside it names the status. Internal to the status family (#264): not exported from the package.
|
|
2410
|
+
var Mark = /*#__PURE__*/styled__default.default.svg.withConfig({
|
|
2411
|
+
displayName: "StatusShape__Mark",
|
|
2412
|
+
componentId: "sc-1yzi9jt-0"
|
|
2413
|
+
})(templateObject_1$x || (templateObject_1$x = __makeTemplateObject(["\n flex: none;\n width: ", ";\n height: ", ";\n fill: currentColor;\n"], ["\n flex: none;\n width: ", ";\n height: ", ";\n fill: currentColor;\n"])), tokens.semantic.size.icon.xs, tokens.semantic.size.icon.xs);
|
|
2414
|
+
var StatusShape = function StatusShape(_a) {
|
|
2415
|
+
var shape = _a.shape;
|
|
2416
|
+
return jsxRuntime.jsx(Mark, {
|
|
2417
|
+
viewBox: "0 0 24 24",
|
|
2418
|
+
"aria-hidden": "true",
|
|
2419
|
+
focusable: "false",
|
|
2420
|
+
"data-shape": shape,
|
|
2421
|
+
children: jsxRuntime.jsx("path", {
|
|
2422
|
+
d: statusShapes[shape]
|
|
2423
|
+
})
|
|
2424
|
+
});
|
|
2425
|
+
};
|
|
2426
|
+
var templateObject_1$x;
|
|
2370
2427
|
|
|
2371
2428
|
// Destructure tokens for cleaner access
|
|
2372
2429
|
var statusColors = tokens.component.status;
|
|
@@ -2379,52 +2436,55 @@ var _b$1 = tokens.semantic.motion,
|
|
|
2379
2436
|
easing$3 = _b$1.easing;
|
|
2380
2437
|
var labelHeight = tokens.semantic.size.label;
|
|
2381
2438
|
var label$1 = tokens.component.badge.label;
|
|
2382
|
-
var scaleIn$1 = styled.keyframes(templateObject_1$
|
|
2439
|
+
var scaleIn$1 = styled.keyframes(templateObject_1$w || (templateObject_1$w = __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"])));
|
|
2383
2440
|
var getStatusConfig = function getStatusConfig(status) {
|
|
2441
|
+
// Each status's icon and, for the coloured statuses, its shape indicator (decision 0045). The
|
|
2442
|
+
// neutral statuses have no shape: at the small size they're plain text.
|
|
2384
2443
|
var configs = {
|
|
2385
2444
|
pending: {
|
|
2386
2445
|
color: statusColors.pending.text,
|
|
2387
2446
|
bgColor: statusColors.pending.background,
|
|
2388
|
-
icon: '
|
|
2389
|
-
// Fallback until 'clock' icon is added
|
|
2447
|
+
icon: 'statusPending',
|
|
2390
2448
|
label: 'Pending'
|
|
2391
2449
|
},
|
|
2392
2450
|
completed: {
|
|
2393
2451
|
color: statusColors.completed.text,
|
|
2394
2452
|
bgColor: statusColors.completed.background,
|
|
2395
|
-
icon: '
|
|
2453
|
+
icon: 'statusSuccess',
|
|
2454
|
+
shape: 'success',
|
|
2396
2455
|
label: 'Completed'
|
|
2397
2456
|
},
|
|
2398
2457
|
failed: {
|
|
2399
2458
|
color: statusColors.failed.text,
|
|
2400
2459
|
bgColor: statusColors.failed.background,
|
|
2401
|
-
icon: '
|
|
2460
|
+
icon: 'statusError',
|
|
2461
|
+
shape: 'error',
|
|
2402
2462
|
label: 'Failed'
|
|
2403
2463
|
},
|
|
2404
2464
|
cancelled: {
|
|
2405
2465
|
color: statusColors.cancelled.text,
|
|
2406
2466
|
bgColor: statusColors.cancelled.background,
|
|
2407
|
-
icon: '
|
|
2467
|
+
icon: 'statusCancelled',
|
|
2408
2468
|
label: 'Cancelled'
|
|
2409
2469
|
},
|
|
2410
2470
|
processing: {
|
|
2411
2471
|
color: statusColors.processing.text,
|
|
2412
2472
|
bgColor: statusColors.processing.background,
|
|
2413
|
-
icon: '
|
|
2473
|
+
icon: 'statusInProgress',
|
|
2474
|
+
shape: 'inProgress',
|
|
2414
2475
|
label: 'Processing'
|
|
2415
2476
|
},
|
|
2416
2477
|
scheduled: {
|
|
2417
2478
|
color: statusColors.scheduled.text,
|
|
2418
2479
|
bgColor: statusColors.scheduled.background,
|
|
2419
|
-
icon: '
|
|
2420
|
-
// Fallback until 'calendar' icon is added
|
|
2480
|
+
icon: 'statusScheduled',
|
|
2421
2481
|
label: 'Scheduled'
|
|
2422
2482
|
}
|
|
2423
2483
|
};
|
|
2424
2484
|
return configs[status];
|
|
2425
2485
|
};
|
|
2426
2486
|
// Size configuration
|
|
2427
|
-
var sizeConfig$
|
|
2487
|
+
var sizeConfig$2 = {
|
|
2428
2488
|
small: {
|
|
2429
2489
|
height: labelHeight.small,
|
|
2430
2490
|
padding: "".concat(space$9[100], " ").concat(space$9[200]),
|
|
@@ -2446,9 +2506,9 @@ var StyledStatusLabel = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
|
2446
2506
|
},
|
|
2447
2507
|
displayName: "StatusLabelBase__StyledStatusLabel",
|
|
2448
2508
|
componentId: "sc-1ye9xz5-0"
|
|
2449
|
-
})(templateObject_2$
|
|
2509
|
+
})(templateObject_2$q || (templateObject_2$q = __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 /* Under reduced motion the label appears without scaling in, and colours change at once */\n ", " {\n animation: none;\n transition: none;\n }\n\n /* Forced colours drop the fill, so the label keeps its shape with an edge (decision 0038) */\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 /* Under reduced motion the label appears without scaling in, and colours change at once */\n ", " {\n animation: none;\n transition: none;\n }\n\n /* Forced colours drop the fill, so the label keeps its shape with an edge (decision 0038) */\n ", "\n \n /* Size styles */\n ", "\n \n /* Status color styles */\n ", "\n"])), radius$1.full, scaleIn$1, duration$3.moderate, easing$3.decelerate, transition.feedback, reducedMotion, forcedColorsEdge, function (_a) {
|
|
2450
2510
|
var $size = _a.$size;
|
|
2451
|
-
var size = sizeConfig$
|
|
2511
|
+
var size = sizeConfig$2[$size];
|
|
2452
2512
|
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 ");
|
|
2453
2513
|
}, function (_a) {
|
|
2454
2514
|
var $status = _a.$status;
|
|
@@ -2470,13 +2530,13 @@ var VisibleContent = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
|
2470
2530
|
})(templateObject_4$j || (templateObject_4$j = __makeTemplateObject(["\n display: contents;\n"], ["\n display: contents;\n"
|
|
2471
2531
|
/**
|
|
2472
2532
|
* Shared implementation of StatusLabel and the deprecated StatusBadge. Internal: not exported
|
|
2473
|
-
* from the package. `showIcon` exists only for StatusBadge
|
|
2474
|
-
* (
|
|
2533
|
+
* from the package. `showIcon` exists only for StatusBadge. StatusLabel always shows the status icon
|
|
2534
|
+
* at the medium size, and at the small size the shape for coloured statuses (decisions 0018, 0045).
|
|
2475
2535
|
*/])));
|
|
2476
2536
|
/**
|
|
2477
2537
|
* Shared implementation of StatusLabel and the deprecated StatusBadge. Internal: not exported
|
|
2478
|
-
* from the package. `showIcon` exists only for StatusBadge
|
|
2479
|
-
* (
|
|
2538
|
+
* from the package. `showIcon` exists only for StatusBadge. StatusLabel always shows the status icon
|
|
2539
|
+
* at the medium size, and at the small size the shape for coloured statuses (decisions 0018, 0045).
|
|
2480
2540
|
*/
|
|
2481
2541
|
var StatusLabelBase = function StatusLabelBase(_a) {
|
|
2482
2542
|
var status = _a.status,
|
|
@@ -2490,7 +2550,7 @@ var StatusLabelBase = function StatusLabelBase(_a) {
|
|
|
2490
2550
|
dataTestId = _a["data-testid"],
|
|
2491
2551
|
ariaLabel = _a["aria-label"];
|
|
2492
2552
|
var statusConfig = getStatusConfig(status);
|
|
2493
|
-
var sizeStyles = sizeConfig$
|
|
2553
|
+
var sizeStyles = sizeConfig$2[size];
|
|
2494
2554
|
var displayLabel = label || statusConfig.label;
|
|
2495
2555
|
// A blank aria-label is no label at all, so it falls back like a missing one
|
|
2496
2556
|
var accessibleLabel = (ariaLabel === null || ariaLabel === void 0 ? void 0 : ariaLabel.trim()) ? ariaLabel : undefined;
|
|
@@ -2504,10 +2564,12 @@ var StatusLabelBase = function StatusLabelBase(_a) {
|
|
|
2504
2564
|
"data-testid": dataTestId,
|
|
2505
2565
|
children: [jsxRuntime.jsxs(VisibleContent, {
|
|
2506
2566
|
"aria-hidden": accessibleLabel ? 'true' : undefined,
|
|
2507
|
-
children: [showIcon && jsxRuntime.jsx(Icon, {
|
|
2567
|
+
children: [showIcon && size === 'medium' && jsxRuntime.jsx(Icon, {
|
|
2508
2568
|
name: statusConfig.icon,
|
|
2509
2569
|
size: sizeStyles.iconSize,
|
|
2510
2570
|
iconColor: "inherit"
|
|
2571
|
+
}), showIcon && size === 'small' && statusConfig.shape && jsxRuntime.jsx(StatusShape, {
|
|
2572
|
+
shape: statusConfig.shape
|
|
2511
2573
|
}), displayLabel, jsxRuntime.jsxs(ScreenReaderOnly, {
|
|
2512
2574
|
children: [status, " status"]
|
|
2513
2575
|
})]
|
|
@@ -2516,13 +2578,13 @@ var StatusLabelBase = function StatusLabelBase(_a) {
|
|
|
2516
2578
|
})]
|
|
2517
2579
|
});
|
|
2518
2580
|
};
|
|
2519
|
-
var templateObject_1$
|
|
2581
|
+
var templateObject_1$w, templateObject_2$q, templateObject_3$o, templateObject_4$j;
|
|
2520
2582
|
|
|
2521
2583
|
/**
|
|
2522
2584
|
* StatusBadge displays a transaction or task status.
|
|
2523
2585
|
*
|
|
2524
2586
|
* @deprecated Renamed to `StatusLabel` (same `status`, `size`, `label`, `liveRegion`), which always
|
|
2525
|
-
* shows
|
|
2587
|
+
* shows its status icon or shape. StatusBadge is removed in 3.0 (decision 0018).
|
|
2526
2588
|
*/
|
|
2527
2589
|
var StatusBadge = function StatusBadge(props) {
|
|
2528
2590
|
return jsxRuntime.jsx(StatusLabelBase, __assign({}, props));
|
|
@@ -2532,8 +2594,11 @@ StatusBadge.displayName = 'StatusBadge';
|
|
|
2532
2594
|
/**
|
|
2533
2595
|
* StatusLabel conveys the status of something, such as a transaction or task (decision 0018).
|
|
2534
2596
|
*
|
|
2535
|
-
* Uses only the status colour tokens and always shows
|
|
2536
|
-
*
|
|
2597
|
+
* Uses only the status colour tokens and always shows its text, so status is never conveyed by
|
|
2598
|
+
* colour alone (decision 0045). Medium shows the status icon. Small shows the status shape for
|
|
2599
|
+
* completed, failed and processing, and text only for the neutral pending, scheduled and
|
|
2600
|
+
* cancelled, so keep the label visible. Not interactive. Announces changes politely to screen
|
|
2601
|
+
* readers.
|
|
2537
2602
|
*
|
|
2538
2603
|
* @example
|
|
2539
2604
|
* ```tsx
|
|
@@ -2550,19 +2615,19 @@ var StatusLabel = function StatusLabel(props) {
|
|
|
2550
2615
|
};
|
|
2551
2616
|
StatusLabel.displayName = 'StatusLabel';
|
|
2552
2617
|
|
|
2553
|
-
var semantic$
|
|
2554
|
-
var color$
|
|
2555
|
-
size$
|
|
2618
|
+
var semantic$e = tokens.semantic;
|
|
2619
|
+
var color$5 = semantic$e.color,
|
|
2620
|
+
size$2 = semantic$e.size;
|
|
2556
2621
|
var label = tokens.component.badge.label;
|
|
2557
|
-
var space$8 = semantic$
|
|
2558
|
-
var radius = semantic$
|
|
2622
|
+
var space$8 = semantic$e.space;
|
|
2623
|
+
var radius = semantic$e.radius;
|
|
2559
2624
|
var StyledTag = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
2560
2625
|
shouldForwardProp: function shouldForwardProp(prop) {
|
|
2561
2626
|
return !prop.startsWith('$');
|
|
2562
2627
|
},
|
|
2563
2628
|
displayName: "Tag__StyledTag",
|
|
2564
2629
|
componentId: "sc-lzfmti-0"
|
|
2565
|
-
})(templateObject_1$
|
|
2630
|
+
})(templateObject_1$v || (templateObject_1$v = __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"
|
|
2566
2631
|
/**
|
|
2567
2632
|
* Tag component for categorizing and labeling content
|
|
2568
2633
|
*
|
|
@@ -2570,7 +2635,7 @@ var StyledTag = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
|
2570
2635
|
* Tags help users quickly identify and understand content classification.
|
|
2571
2636
|
*/])), radius.sm, function (_a) {
|
|
2572
2637
|
var $size = _a.$size;
|
|
2573
|
-
return size$
|
|
2638
|
+
return size$2.label[$size];
|
|
2574
2639
|
}, function (_a) {
|
|
2575
2640
|
var $size = _a.$size;
|
|
2576
2641
|
return $size === 'small' ? "0 ".concat(space$8[200]) : "".concat(space$8[100], " ").concat(space$8[200]);
|
|
@@ -2578,33 +2643,33 @@ var StyledTag = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
|
2578
2643
|
var $variant = _a.$variant;
|
|
2579
2644
|
switch ($variant) {
|
|
2580
2645
|
case 'interactive':
|
|
2581
|
-
return color$
|
|
2646
|
+
return color$5.fill['accent-muted'];
|
|
2582
2647
|
case 'success':
|
|
2583
|
-
return color$
|
|
2648
|
+
return color$5.fill['success-muted'];
|
|
2584
2649
|
case 'warning':
|
|
2585
|
-
return color$
|
|
2650
|
+
return color$5.fill['warning-muted'];
|
|
2586
2651
|
case 'error':
|
|
2587
|
-
return color$
|
|
2652
|
+
return color$5.fill['danger-muted'];
|
|
2588
2653
|
case 'emphasis':
|
|
2589
|
-
return color$
|
|
2654
|
+
return color$5.fill.emphasis;
|
|
2590
2655
|
default:
|
|
2591
|
-
return color$
|
|
2656
|
+
return color$5.fill.muted;
|
|
2592
2657
|
}
|
|
2593
2658
|
}, function (_a) {
|
|
2594
2659
|
var $variant = _a.$variant;
|
|
2595
2660
|
switch ($variant) {
|
|
2596
2661
|
case 'interactive':
|
|
2597
|
-
return color$
|
|
2662
|
+
return color$5.text.accent;
|
|
2598
2663
|
case 'success':
|
|
2599
|
-
return color$
|
|
2664
|
+
return color$5.text.success;
|
|
2600
2665
|
case 'warning':
|
|
2601
|
-
return color$
|
|
2666
|
+
return color$5.text.warning;
|
|
2602
2667
|
case 'error':
|
|
2603
|
-
return color$
|
|
2668
|
+
return color$5.text.danger;
|
|
2604
2669
|
case 'emphasis':
|
|
2605
|
-
return color$
|
|
2670
|
+
return color$5.text.inverse;
|
|
2606
2671
|
default:
|
|
2607
|
-
return color$
|
|
2672
|
+
return color$5.text["default"];
|
|
2608
2673
|
}
|
|
2609
2674
|
}, function (_a) {
|
|
2610
2675
|
var $variant = _a.$variant,
|
|
@@ -2612,17 +2677,17 @@ var StyledTag = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
|
2612
2677
|
if (!$border) return 'none';
|
|
2613
2678
|
switch ($variant) {
|
|
2614
2679
|
case 'interactive':
|
|
2615
|
-
return "".concat(semantic$
|
|
2680
|
+
return "".concat(semantic$e.border.width.thin, " solid ").concat(color$5.border.accent);
|
|
2616
2681
|
case 'success':
|
|
2617
|
-
return "".concat(semantic$
|
|
2682
|
+
return "".concat(semantic$e.border.width.thin, " solid ").concat(color$5.border.success);
|
|
2618
2683
|
case 'warning':
|
|
2619
|
-
return "".concat(semantic$
|
|
2684
|
+
return "".concat(semantic$e.border.width.thin, " solid ").concat(color$5.border.warning);
|
|
2620
2685
|
case 'error':
|
|
2621
|
-
return "".concat(semantic$
|
|
2686
|
+
return "".concat(semantic$e.border.width.thin, " solid ").concat(color$5.border.danger);
|
|
2622
2687
|
case 'emphasis':
|
|
2623
|
-
return "".concat(semantic$
|
|
2688
|
+
return "".concat(semantic$e.border.width.thin, " solid ").concat(color$5.fill.emphasis);
|
|
2624
2689
|
default:
|
|
2625
|
-
return "".concat(semantic$
|
|
2690
|
+
return "".concat(semantic$e.border.width.thin, " solid ").concat(color$5.border["default"]);
|
|
2626
2691
|
}
|
|
2627
2692
|
});
|
|
2628
2693
|
/**
|
|
@@ -2654,7 +2719,91 @@ var Tag = function Tag(_a) {
|
|
|
2654
2719
|
children: children
|
|
2655
2720
|
}));
|
|
2656
2721
|
};
|
|
2657
|
-
var templateObject_1$
|
|
2722
|
+
var templateObject_1$v;
|
|
2723
|
+
|
|
2724
|
+
var semantic$d = tokens.semantic;
|
|
2725
|
+
var color$4 = semantic$d.color,
|
|
2726
|
+
typography$1 = semantic$d.typography,
|
|
2727
|
+
size$1 = semantic$d.size;
|
|
2728
|
+
var labels = {
|
|
2729
|
+
suggested: 'Suggested',
|
|
2730
|
+
removal: 'Will be removed'
|
|
2731
|
+
};
|
|
2732
|
+
var sizeConfig$1 = {
|
|
2733
|
+
small: {
|
|
2734
|
+
font: typography$1.caption,
|
|
2735
|
+
gap: semantic$d.space[100],
|
|
2736
|
+
icon: 'xs'
|
|
2737
|
+
},
|
|
2738
|
+
medium: {
|
|
2739
|
+
font: typography$1.small,
|
|
2740
|
+
gap: semantic$d.space[200],
|
|
2741
|
+
icon: 'sm'
|
|
2742
|
+
}
|
|
2743
|
+
};
|
|
2744
|
+
var StyledAILabel = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
2745
|
+
shouldForwardProp: function shouldForwardProp(prop) {
|
|
2746
|
+
return !prop.startsWith('$');
|
|
2747
|
+
},
|
|
2748
|
+
displayName: "AILabel__StyledAILabel",
|
|
2749
|
+
componentId: "sc-qknkn-0"
|
|
2750
|
+
})(templateObject_1$u || (templateObject_1$u = __makeTemplateObject(["\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n min-height: ", ";\n gap: ", ";\n font: ", ";\n color: ", ";\n white-space: nowrap;\n"], ["\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n min-height: ", ";\n gap: ", ";\n font: ", ";\n color: ", ";\n white-space: nowrap;\n"])), function (_a) {
|
|
2751
|
+
var $size = _a.$size;
|
|
2752
|
+
return size$1.label[$size];
|
|
2753
|
+
}, function (_a) {
|
|
2754
|
+
var $size = _a.$size;
|
|
2755
|
+
return sizeConfig$1[$size].gap;
|
|
2756
|
+
}, function (_a) {
|
|
2757
|
+
var $size = _a.$size;
|
|
2758
|
+
return sizeConfig$1[$size].font;
|
|
2759
|
+
}, color$4.text.ai);
|
|
2760
|
+
var StyledIcon = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
2761
|
+
displayName: "AILabel__StyledIcon",
|
|
2762
|
+
componentId: "sc-qknkn-1"
|
|
2763
|
+
})(templateObject_2$p || (templateObject_2$p = __makeTemplateObject(["\n display: inline-flex;\n color: ", ";\n"], ["\n display: inline-flex;\n color: ", ";\n"
|
|
2764
|
+
/**
|
|
2765
|
+
* AILabel marks content an agent has proposed but the user hasn't accepted (decision 0046): the AI
|
|
2766
|
+
* icon and a fixed label in the AI colour, never colour alone (decision 0043). It isn't a status
|
|
2767
|
+
* (use StatusLabel) or a category (use CategoryLabel), and it doesn't label AI features in general.
|
|
2768
|
+
*
|
|
2769
|
+
* @example
|
|
2770
|
+
* ```tsx
|
|
2771
|
+
* <AILabel /> // "Suggested"
|
|
2772
|
+
* <AILabel kind="removal" /> // "Will be removed"
|
|
2773
|
+
* ```
|
|
2774
|
+
*/])), color$4.icon.ai);
|
|
2775
|
+
/**
|
|
2776
|
+
* AILabel marks content an agent has proposed but the user hasn't accepted (decision 0046): the AI
|
|
2777
|
+
* icon and a fixed label in the AI colour, never colour alone (decision 0043). It isn't a status
|
|
2778
|
+
* (use StatusLabel) or a category (use CategoryLabel), and it doesn't label AI features in general.
|
|
2779
|
+
*
|
|
2780
|
+
* @example
|
|
2781
|
+
* ```tsx
|
|
2782
|
+
* <AILabel /> // "Suggested"
|
|
2783
|
+
* <AILabel kind="removal" /> // "Will be removed"
|
|
2784
|
+
* ```
|
|
2785
|
+
*/
|
|
2786
|
+
var AILabel = function AILabel(_a) {
|
|
2787
|
+
var _b = _a.kind,
|
|
2788
|
+
kind = _b === void 0 ? 'suggested' : _b,
|
|
2789
|
+
_c = _a.size,
|
|
2790
|
+
labelSize = _c === void 0 ? 'medium' : _c,
|
|
2791
|
+
dataTestId = _a["data-testid"];
|
|
2792
|
+
return jsxRuntime.jsxs(StyledAILabel, {
|
|
2793
|
+
"$size": labelSize,
|
|
2794
|
+
"data-testid": dataTestId,
|
|
2795
|
+
children: [jsxRuntime.jsx(StyledIcon, {
|
|
2796
|
+
"aria-hidden": "true",
|
|
2797
|
+
children: jsxRuntime.jsx(Icon, {
|
|
2798
|
+
name: "ai",
|
|
2799
|
+
size: sizeConfig$1[labelSize].icon,
|
|
2800
|
+
iconColor: "inherit"
|
|
2801
|
+
})
|
|
2802
|
+
}), labels[kind]]
|
|
2803
|
+
});
|
|
2804
|
+
};
|
|
2805
|
+
AILabel.displayName = 'AILabel';
|
|
2806
|
+
var templateObject_1$u, templateObject_2$p;
|
|
2658
2807
|
|
|
2659
2808
|
// Destructure tokens for cleaner access
|
|
2660
2809
|
var semantic$c = tokens.semantic;
|
|
@@ -2666,7 +2815,10 @@ var StyledBalanceSection = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
|
2666
2815
|
var StyledTrendSection = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
2667
2816
|
displayName: "AccountCard__StyledTrendSection",
|
|
2668
2817
|
componentId: "sc-1erp7zn-1"
|
|
2669
|
-
})(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"])), space$7[100])
|
|
2818
|
+
})(templateObject_2$o || (templateObject_2$o = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: ", ";\n color: ", ";\n font: ", ";\n"], ["\n display: flex;\n align-items: center;\n gap: ", ";\n color: ", ";\n font: ", ";\n"])), space$7[100], function (_a) {
|
|
2819
|
+
var $color = _a.$color;
|
|
2820
|
+
return $color;
|
|
2821
|
+
}, semantic$c.typography.small);
|
|
2670
2822
|
/*#__PURE__*/styled__default.default.div.withConfig({
|
|
2671
2823
|
displayName: "AccountCard__StyledActions",
|
|
2672
2824
|
componentId: "sc-1erp7zn-2"
|
|
@@ -2687,10 +2839,12 @@ var trendToIcon = {
|
|
|
2687
2839
|
down: 'arrowDown',
|
|
2688
2840
|
neutral: 'arrowRight'
|
|
2689
2841
|
};
|
|
2842
|
+
// A trend is a differential indicator (decision 0045): the arrow and the signed value carry the
|
|
2843
|
+
// direction, and the role colour repeats it. Category colours carry no meaning, so they aren't used.
|
|
2690
2844
|
var trendToColor = {
|
|
2691
|
-
up:
|
|
2692
|
-
down:
|
|
2693
|
-
neutral:
|
|
2845
|
+
up: semantic$c.color.text.success,
|
|
2846
|
+
down: semantic$c.color.text.danger,
|
|
2847
|
+
neutral: semantic$c.color.text.muted
|
|
2694
2848
|
};
|
|
2695
2849
|
/**
|
|
2696
2850
|
* AccountCard component
|
|
@@ -2785,16 +2939,19 @@ var AccountCard = function AccountCard(_a) {
|
|
|
2785
2939
|
}), jsxRuntime.jsx(Typography, {
|
|
2786
2940
|
color: "subdued",
|
|
2787
2941
|
children: "Available"
|
|
2788
|
-
}), trend && trendValue &&
|
|
2942
|
+
}), trend && trendValue &&
|
|
2943
|
+
// A group rather than an image, so screen readers read the value as well as the direction
|
|
2944
|
+
jsxRuntime.jsxs(StyledTrendSection, {
|
|
2945
|
+
role: "group",
|
|
2789
2946
|
"aria-label": "Trend ".concat(trend),
|
|
2790
|
-
|
|
2791
|
-
children: jsxRuntime.jsx(
|
|
2792
|
-
|
|
2793
|
-
|
|
2794
|
-
|
|
2795
|
-
|
|
2947
|
+
"$color": trendColor,
|
|
2948
|
+
children: [jsxRuntime.jsx(Icon, {
|
|
2949
|
+
name: trendIcon,
|
|
2950
|
+
size: "sm",
|
|
2951
|
+
iconColor: "inherit"
|
|
2952
|
+
}), jsxRuntime.jsx("span", {
|
|
2796
2953
|
children: trendValue
|
|
2797
|
-
})
|
|
2954
|
+
})]
|
|
2798
2955
|
})]
|
|
2799
2956
|
})
|
|
2800
2957
|
})]
|
|
@@ -3370,6 +3527,10 @@ function detectSpeechRecognitionConstructor(targetWindow) {
|
|
|
3370
3527
|
function normalizeTranscript(input) {
|
|
3371
3528
|
return input.replace(/\s+/g, ' ').trim();
|
|
3372
3529
|
}
|
|
3530
|
+
/** Typed text: like a transcript, but line breaks are kept (spaces around them are dropped). */
|
|
3531
|
+
function normalizeMessage(input) {
|
|
3532
|
+
return input.replace(/[^\S\n]+/g, ' ').replace(/ ?\n ?/g, '\n').trim();
|
|
3533
|
+
}
|
|
3373
3534
|
function mapSpeechErrorCode(error) {
|
|
3374
3535
|
switch (error) {
|
|
3375
3536
|
case 'not-allowed':
|
|
@@ -3456,94 +3617,165 @@ function agentInputStateTransition(currentState, event) {
|
|
|
3456
3617
|
|
|
3457
3618
|
var semantic$a = tokens.semantic,
|
|
3458
3619
|
component$1 = tokens.component;
|
|
3459
|
-
var DEFAULT_IDLE_HELPER = 'Ask about transactions, spending, or transfers';
|
|
3460
3620
|
var DEFAULT_LISTENING_MESSAGE = 'Listening… speak now';
|
|
3461
3621
|
var DEFAULT_PROCESSING_MESSAGE = 'Finishing voice input…';
|
|
3622
|
+
// The counter appears from this share of maxLength
|
|
3623
|
+
var COUNTER_THRESHOLD = 0.8;
|
|
3624
|
+
// Layout effects warn during server rendering in React 18
|
|
3625
|
+
var useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;
|
|
3462
3626
|
var rotateRing = styled.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"])));
|
|
3463
3627
|
var Container = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
3628
|
+
shouldForwardProp: function shouldForwardProp(prop) {
|
|
3629
|
+
return !prop.startsWith('$');
|
|
3630
|
+
},
|
|
3464
3631
|
displayName: "AgentInput__Container",
|
|
3465
3632
|
componentId: "sc-fhl996-0"
|
|
3466
|
-
})(
|
|
3633
|
+
})(templateObject_3$k || (templateObject_3$k = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n gap: ", ";\n width: 100%;\n\n ", "\n"], ["\n display: flex;\n flex-direction: column;\n gap: ", ";\n width: 100%;\n\n ", "\n"])), semantic$a.space[200], function (_a) {
|
|
3634
|
+
var $docked = _a.$docked;
|
|
3635
|
+
return $docked && styled.css(templateObject_2$l || (templateObject_2$l = __makeTemplateObject(["\n position: sticky;\n bottom: 0;\n z-index: ", ";\n /* The band hides content scrolling past the field and status line (decisions 0006, 0031) */\n background-color: ", ";\n padding-top: ", ";\n /* Clears the home indicator; zero unless the page sets viewport-fit=cover */\n padding-bottom: env(safe-area-inset-bottom, 0px);\n "], ["\n position: sticky;\n bottom: 0;\n z-index: ", ";\n /* The band hides content scrolling past the field and status line (decisions 0006, 0031) */\n background-color: ", ";\n padding-top: ", ";\n /* Clears the home indicator; zero unless the page sets viewport-fit=cover */\n padding-bottom: env(safe-area-inset-bottom, 0px);\n "])), semantic$a.layer.sticky, semantic$a.surface.base, semantic$a.space[300]);
|
|
3636
|
+
});
|
|
3467
3637
|
var ControlsRow = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
3468
3638
|
displayName: "AgentInput__ControlsRow",
|
|
3469
3639
|
componentId: "sc-fhl996-1"
|
|
3470
|
-
})(
|
|
3640
|
+
})(templateObject_4$f || (templateObject_4$f = __makeTemplateObject(["\n width: 100%;\n"], ["\n width: 100%;\n"])));
|
|
3471
3641
|
var InputShell = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
3472
3642
|
displayName: "AgentInput__InputShell",
|
|
3473
3643
|
componentId: "sc-fhl996-2"
|
|
3474
|
-
})(
|
|
3475
|
-
|
|
3644
|
+
})(templateObject_5$c || (templateObject_5$c = __makeTemplateObject(["\n display: flex;\n /* Actions sit beside the last line as the field grows */\n align-items: flex-end;\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 /* Actions sit beside the last line as the field grows */\n align-items: flex-end;\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"
|
|
3645
|
+
// One row is a control-height field; it grows with its content to six rows, then scrolls.
|
|
3646
|
+
// The height is set from scrollHeight in resizeField; 1lh is the body line height.
|
|
3647
|
+
])), semantic$a.space[200], semantic$a.space[100], semantic$a.space[200], semantic$a.space[100], semantic$a.space.inset.lg, component$1.input["default"].backgroundColor, component$1.input["default"].borderWidth, component$1.input["default"].borderColor, semantic$a.radius['3xl'], semantic$a.elevation.raised, semantic$a.motion.duration.moderate, semantic$a.motion.easing.standard, semantic$a.motion.duration.moderate, semantic$a.motion.easing.standard, component$1.input.focus.borderColor, component$1.input.focus.outline, semantic$a.border.focusOffset, component$1.input.disabled.backgroundColor, component$1.input.disabled.borderColor);
|
|
3648
|
+
// One row is a control-height field; it grows with its content to six rows, then scrolls.
|
|
3649
|
+
// The height is set from scrollHeight in resizeField; 1lh is the body line height.
|
|
3650
|
+
var Input = /*#__PURE__*/styled__default.default.textarea.withConfig({
|
|
3476
3651
|
displayName: "AgentInput__Input",
|
|
3477
3652
|
componentId: "sc-fhl996-3"
|
|
3478
|
-
})(
|
|
3653
|
+
})(templateObject_6$9 || (templateObject_6$9 = __makeTemplateObject(["\n display: block;\n flex: 1;\n min-width: 0;\n box-sizing: border-box;\n height: ", ";\n min-height: ", ";\n max-height: calc(5lh + ", ");\n margin: 0;\n padding: calc((", " - 1lh) / 2) 0;\n resize: none;\n overflow-y: hidden;\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 display: block;\n flex: 1;\n min-width: 0;\n box-sizing: border-box;\n height: ", ";\n min-height: ", ";\n max-height: calc(5lh + ", ");\n margin: 0;\n padding: calc((", " - 1lh) / 2) 0;\n resize: none;\n overflow-y: hidden;\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.size.control.lg, semantic$a.size.control.lg, semantic$a.size.control.lg, semantic$a.size.control.lg, semantic$a.typography.body, semantic$a.color.text["default"], component$1.input.placeholder.textColor, semantic$a.color.text.disabled);
|
|
3479
3654
|
var InputActions = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
3480
3655
|
displayName: "AgentInput__InputActions",
|
|
3481
3656
|
componentId: "sc-fhl996-4"
|
|
3482
|
-
})(
|
|
3657
|
+
})(templateObject_7$7 || (templateObject_7$7 = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n gap: ", ";\n /* Centres the buttons on a one-row field, and keeps them level with the last line as it grows */\n padding-bottom: calc((", " - ", ") / 2);\n"], ["\n display: inline-flex;\n align-items: center;\n gap: ", ";\n /* Centres the buttons on a one-row field, and keeps them level with the last line as it grows */\n padding-bottom: calc((", " - ", ") / 2);\n"])), semantic$a.space[200], semantic$a.size.control.lg, semantic$a.size.control.md);
|
|
3483
3658
|
var CircularActionIconButton = /*#__PURE__*/styled__default.default(IconButton).withConfig({
|
|
3484
3659
|
displayName: "AgentInput__CircularActionIconButton",
|
|
3485
3660
|
componentId: "sc-fhl996-5"
|
|
3486
|
-
})(
|
|
3661
|
+
})(templateObject_8$6 || (templateObject_8$6 = __makeTemplateObject(["\n border-radius: ", ";\n"], ["\n border-radius: ", ";\n"])), semantic$a.radius.full);
|
|
3487
3662
|
var InputWrapper = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
3488
3663
|
displayName: "AgentInput__InputWrapper",
|
|
3489
3664
|
componentId: "sc-fhl996-6"
|
|
3490
|
-
})(
|
|
3665
|
+
})(templateObject_9$5 || (templateObject_9$5 = __makeTemplateObject(["\n flex: 1;\n min-width: 0;\n"], ["\n flex: 1;\n min-width: 0;\n"])));
|
|
3491
3666
|
var MicButtonWrapper = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
3492
3667
|
shouldForwardProp: function shouldForwardProp(prop) {
|
|
3493
3668
|
return !prop.startsWith('$');
|
|
3494
3669
|
},
|
|
3495
3670
|
displayName: "AgentInput__MicButtonWrapper",
|
|
3496
3671
|
componentId: "sc-fhl996-7"
|
|
3497
|
-
})(
|
|
3672
|
+
})(templateObject_10$3 || (templateObject_10$3 = __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"
|
|
3498
3673
|
// Masks read only alpha, so the opaque stop is a mask value, not a colour (decision 0010).
|
|
3499
3674
|
// eslint-disable-next-line no-restricted-syntax
|
|
3500
3675
|
])), semantic$a.radius.full);
|
|
3501
3676
|
// Masks read only alpha, so the opaque stop is a mask value, not a colour (decision 0010).
|
|
3502
3677
|
// eslint-disable-next-line no-restricted-syntax
|
|
3503
|
-
var ringMask = styled.css(
|
|
3678
|
+
var ringMask = styled.css(templateObject_11$3 || (templateObject_11$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)))"])));
|
|
3504
3679
|
var MicListeningRing = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
3505
3680
|
shouldForwardProp: function shouldForwardProp(prop) {
|
|
3506
3681
|
return !prop.startsWith('$');
|
|
3507
3682
|
},
|
|
3508
3683
|
displayName: "AgentInput__MicListeningRing",
|
|
3509
3684
|
componentId: "sc-fhl996-8"
|
|
3510
|
-
})(
|
|
3685
|
+
})(templateObject_13$3 || (templateObject_13$3 = __makeTemplateObject(["\n --ring-thickness: ", ";\n position: absolute;\n inset: calc(-1 * ", " - ", ");\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(-1 * ", " - ", ");\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"
|
|
3686
|
+
// Maximum suggestions shown (decision 0046, #280)
|
|
3687
|
+
])), semantic$a.border.width.thick, semantic$a.space[100], semantic$a.border.focusOffset, semantic$a.radius.full, semantic$a.color.fill['accent-muted'], semantic$a.color.fill.accent, semantic$a.color.fill['accent-hover'], semantic$a.color.fill.accent, semantic$a.color.fill['accent-muted'], ringMask, ringMask, function (_a) {
|
|
3511
3688
|
var $reducedMotion = _a.$reducedMotion;
|
|
3512
|
-
return !$reducedMotion && styled.css(
|
|
3689
|
+
return !$reducedMotion && styled.css(templateObject_12$3 || (templateObject_12$3 = __makeTemplateObject(["\n animation: ", " 1300ms linear infinite;\n "], ["\n animation: ", " 1300ms linear infinite;\n "])), rotateRing);
|
|
3513
3690
|
});
|
|
3691
|
+
// Maximum suggestions shown (decision 0046, #280)
|
|
3692
|
+
var MAX_SUGGESTIONS = 3;
|
|
3693
|
+
var regionEnter = styled.keyframes(templateObject_14$1 || (templateObject_14$1 = __makeTemplateObject(["\n from {\n opacity: 0;\n transform: translateY(", ");\n }\n"], ["\n from {\n opacity: 0;\n transform: translateY(", ");\n }\n"])), semantic$a.motion.distance.sm);
|
|
3694
|
+
var regionFadeIn = styled.keyframes(templateObject_15$1 || (templateObject_15$1 = __makeTemplateObject(["\n from {\n opacity: 0;\n }\n"], ["\n from {\n opacity: 0;\n }\n"
|
|
3695
|
+
// Leaving content fades, then its space closes, as with Alert's dismiss (decision 0015). A grid
|
|
3696
|
+
// row from 1fr to 0fr collapses to the content's own height without measuring it.
|
|
3697
|
+
])));
|
|
3698
|
+
// Leaving content fades, then its space closes, as with Alert's dismiss (decision 0015). A grid
|
|
3699
|
+
// row from 1fr to 0fr collapses to the content's own height without measuring it.
|
|
3700
|
+
var regionFadeThenCollapse = styled.keyframes(templateObject_16$1 || (templateObject_16$1 = __makeTemplateObject(["\n 0%, 50% {\n grid-template-rows: 1fr;\n }\n 0% {\n opacity: 1;\n }\n 50%, 100% {\n opacity: 0;\n }\n 100% {\n grid-template-rows: 0fr;\n }\n"], ["\n 0%, 50% {\n grid-template-rows: 1fr;\n }\n 0% {\n opacity: 1;\n }\n 50%, 100% {\n opacity: 0;\n }\n 100% {\n grid-template-rows: 0fr;\n }\n"])));
|
|
3701
|
+
var regionFadeOut = styled.keyframes(templateObject_17$1 || (templateObject_17$1 = __makeTemplateObject(["\n to {\n opacity: 0;\n }\n"], ["\n to {\n opacity: 0;\n }\n"
|
|
3702
|
+
// One part of the region above the field: the review bar or the suggestions
|
|
3703
|
+
])));
|
|
3704
|
+
// One part of the region above the field: the review bar or the suggestions
|
|
3705
|
+
var RegionItem = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
3706
|
+
shouldForwardProp: function shouldForwardProp(prop) {
|
|
3707
|
+
return !prop.startsWith('$');
|
|
3708
|
+
},
|
|
3709
|
+
displayName: "AgentInput__RegionItem",
|
|
3710
|
+
componentId: "sc-fhl996-9"
|
|
3711
|
+
})(templateObject_21$1 || (templateObject_21$1 = __makeTemplateObject(["\n display: grid;\n grid-template-rows: 1fr;\n animation: ", " ", " ", ";\n\n ", " {\n animation-name: ", ";\n }\n\n ", "\n"], ["\n display: grid;\n grid-template-rows: 1fr;\n animation: ", " ", " ", ";\n\n ", " {\n animation-name: ", ";\n }\n\n ", "\n"
|
|
3712
|
+
// Clips while the row collapses. Its bottom padding is the space to the next part, so it closes too.
|
|
3713
|
+
])), regionEnter, semantic$a.motion.duration.moderate, semantic$a.motion.easing.decelerate, reducedMotion, regionFadeIn, function (_a) {
|
|
3714
|
+
var $exiting = _a.$exiting,
|
|
3715
|
+
$reducedExit = _a.$reducedExit;
|
|
3716
|
+
return $exiting && styled.css(templateObject_20$1 || (templateObject_20$1 = __makeTemplateObject(["\n pointer-events: none;\n animation: ", ";\n "], ["\n pointer-events: none;\n animation: ", ";\n "])), $reducedExit ? styled.css(templateObject_18$1 || (templateObject_18$1 = __makeTemplateObject(["", " ", " ", " forwards"], ["", " ", " ", " forwards"])), regionFadeOut, semantic$a.motion.duration.fast, semantic$a.motion.easing.accelerate) : styled.css(templateObject_19$1 || (templateObject_19$1 = __makeTemplateObject(["", " calc(2 * ", ") ", " forwards"], ["", " calc(2 * ", ") ", " forwards"])), regionFadeThenCollapse, semantic$a.motion.duration.fast, semantic$a.motion.easing.accelerate));
|
|
3717
|
+
});
|
|
3718
|
+
// Clips while the row collapses. Its bottom padding is the space to the next part, so it closes too.
|
|
3719
|
+
var RegionItemContent = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
3720
|
+
displayName: "AgentInput__RegionItemContent",
|
|
3721
|
+
componentId: "sc-fhl996-10"
|
|
3722
|
+
})(templateObject_22$1 || (templateObject_22$1 = __makeTemplateObject(["\n min-height: 0;\n overflow: hidden;\n padding-bottom: ", ";\n padding-left: ", ";\n"], ["\n min-height: 0;\n overflow: hidden;\n padding-bottom: ", ";\n padding-left: ", ";\n"
|
|
3723
|
+
// The summary first, then the actions, left-aligned after it; they wrap below on narrow screens (0021)
|
|
3724
|
+
])), semantic$a.space[200], semantic$a.space[500]);
|
|
3725
|
+
// The summary first, then the actions, left-aligned after it; they wrap below on narrow screens (0021)
|
|
3726
|
+
var ReviewBar = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
3727
|
+
displayName: "AgentInput__ReviewBar",
|
|
3728
|
+
componentId: "sc-fhl996-11"
|
|
3729
|
+
})(templateObject_23$1 || (templateObject_23$1 = __makeTemplateObject(["\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n column-gap: ", ";\n row-gap: ", ";\n"], ["\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n column-gap: ", ";\n row-gap: ", ";\n"])), semantic$a.space[300], semantic$a.space[200]);
|
|
3730
|
+
var ReviewActions = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
3731
|
+
displayName: "AgentInput__ReviewActions",
|
|
3732
|
+
componentId: "sc-fhl996-12"
|
|
3733
|
+
})(templateObject_24$1 || (templateObject_24$1 = __makeTemplateObject(["\n display: flex;\n flex-wrap: wrap;\n gap: ", ";\n"], ["\n display: flex;\n flex-wrap: wrap;\n gap: ", ";\n"])), semantic$a.space[200]);
|
|
3734
|
+
var SuggestionList = /*#__PURE__*/styled__default.default.ul.withConfig({
|
|
3735
|
+
displayName: "AgentInput__SuggestionList",
|
|
3736
|
+
componentId: "sc-fhl996-13"
|
|
3737
|
+
})(templateObject_25$1 || (templateObject_25$1 = __makeTemplateObject(["\n display: flex;\n flex-wrap: wrap;\n gap: ", ";\n margin: 0;\n padding: 0;\n list-style: none;\n\n & > li {\n max-width: 100%;\n }\n"], ["\n display: flex;\n flex-wrap: wrap;\n gap: ", ";\n margin: 0;\n padding: 0;\n list-style: none;\n\n & > li {\n max-width: 100%;\n }\n"])), semantic$a.space[200]);
|
|
3514
3738
|
var StatusRow = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
3515
3739
|
displayName: "AgentInput__StatusRow",
|
|
3516
|
-
componentId: "sc-fhl996-
|
|
3517
|
-
})(
|
|
3740
|
+
componentId: "sc-fhl996-14"
|
|
3741
|
+
})(templateObject_26$1 || (templateObject_26$1 = __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.space[300], semantic$a.space[600]);
|
|
3518
3742
|
var StatusText = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
3519
3743
|
shouldForwardProp: function shouldForwardProp(prop) {
|
|
3520
3744
|
return !prop.startsWith('$');
|
|
3521
3745
|
},
|
|
3522
3746
|
displayName: "AgentInput__StatusText",
|
|
3523
|
-
componentId: "sc-fhl996-
|
|
3524
|
-
})(
|
|
3747
|
+
componentId: "sc-fhl996-15"
|
|
3748
|
+
})(templateObject_27$1 || (templateObject_27$1 = __makeTemplateObject(["\n padding-left: ", ";\n"], ["\n padding-left: ", ";\n"])), semantic$a.space[500]);
|
|
3525
3749
|
var StatusAnnouncement = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
3526
3750
|
displayName: "AgentInput__StatusAnnouncement",
|
|
3527
|
-
componentId: "sc-fhl996-
|
|
3528
|
-
})(
|
|
3751
|
+
componentId: "sc-fhl996-16"
|
|
3752
|
+
})(templateObject_28$1 || (templateObject_28$1 = __makeTemplateObject([""], [""])));
|
|
3753
|
+
var StatusEnd = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
3754
|
+
displayName: "AgentInput__StatusEnd",
|
|
3755
|
+
componentId: "sc-fhl996-17"
|
|
3756
|
+
})(templateObject_29$1 || (templateObject_29$1 = __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.space[300]);
|
|
3757
|
+
var VisuallyHidden = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
3758
|
+
displayName: "AgentInput__VisuallyHidden",
|
|
3759
|
+
componentId: "sc-fhl996-18"
|
|
3760
|
+
})(templateObject_30$1 || (templateObject_30$1 = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), visuallyHidden);
|
|
3529
3761
|
var MeterContainer = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
3530
3762
|
displayName: "AgentInput__MeterContainer",
|
|
3531
|
-
componentId: "sc-fhl996-
|
|
3532
|
-
})(
|
|
3763
|
+
componentId: "sc-fhl996-19"
|
|
3764
|
+
})(templateObject_31$1 || (templateObject_31$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.space[100], semantic$a.space[400]);
|
|
3533
3765
|
var MeterBar = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
3534
3766
|
shouldForwardProp: function shouldForwardProp(prop) {
|
|
3535
3767
|
return !prop.startsWith('$');
|
|
3536
3768
|
},
|
|
3537
3769
|
displayName: "AgentInput__MeterBar",
|
|
3538
|
-
componentId: "sc-fhl996-
|
|
3539
|
-
})(
|
|
3770
|
+
componentId: "sc-fhl996-20"
|
|
3771
|
+
})(templateObject_32$1 || (templateObject_32$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.space[100], semantic$a.radius.xs, semantic$a.color.fill.accent, function (_a) {
|
|
3540
3772
|
var $height = _a.$height;
|
|
3541
3773
|
return "".concat($height * 100, "%");
|
|
3542
3774
|
}, semantic$a.motion.duration.fast, semantic$a.motion.easing.decelerate);
|
|
3543
3775
|
var VisuallyHiddenLabel = /*#__PURE__*/styled__default.default.label.withConfig({
|
|
3544
3776
|
displayName: "AgentInput__VisuallyHiddenLabel",
|
|
3545
|
-
componentId: "sc-fhl996-
|
|
3546
|
-
})(
|
|
3777
|
+
componentId: "sc-fhl996-21"
|
|
3778
|
+
})(templateObject_33$1 || (templateObject_33$1 = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), visuallyHidden);
|
|
3547
3779
|
function getInitialState(hasText) {
|
|
3548
3780
|
return hasText ? 'typing' : 'idle';
|
|
3549
3781
|
}
|
|
@@ -3551,60 +3783,104 @@ function createMeterBars(level) {
|
|
|
3551
3783
|
var clampedLevel = Math.max(0, Math.min(level, 1));
|
|
3552
3784
|
return [0.25 + clampedLevel * 0.75, 0.2 + clampedLevel * 0.6, 0.3 + clampedLevel * 0.7, 0.2 + clampedLevel * 0.5];
|
|
3553
3785
|
}
|
|
3554
|
-
|
|
3786
|
+
// Declared separately so the react-hooks lint rules analyse it (they skip functions inline in forwardRef)
|
|
3787
|
+
// Development builds warn about props that break the pattern. Bundlers replace process.env.NODE_ENV
|
|
3788
|
+
// with a literal; without a bundler, a browser has no process, so reading it throws.
|
|
3789
|
+
function readIsProduction() {
|
|
3790
|
+
try {
|
|
3791
|
+
return process.env.NODE_ENV === 'production';
|
|
3792
|
+
} catch (_a) {
|
|
3793
|
+
return false;
|
|
3794
|
+
}
|
|
3795
|
+
}
|
|
3796
|
+
var isProduction = readIsProduction();
|
|
3797
|
+
// A part of the region above the field. It stays mounted while it fades out and its space closes.
|
|
3798
|
+
function RegionPart(_a) {
|
|
3799
|
+
var show = _a.show,
|
|
3800
|
+
reducedExit = _a.reducedExit,
|
|
3801
|
+
children = _a.children;
|
|
3802
|
+
var _b = usePresence(show, reducedExit ? EXIT_DURATION_MS : EXIT_DURATION_MS * 2),
|
|
3803
|
+
isPresent = _b.isPresent,
|
|
3804
|
+
isExiting = _b.isExiting;
|
|
3805
|
+
var ref = React.useRef(null);
|
|
3806
|
+
// Leaving controls drop out of the tab order and can't be activated
|
|
3807
|
+
useInert(ref, isExiting);
|
|
3808
|
+
if (!isPresent) return null;
|
|
3809
|
+
return jsxRuntime.jsx(RegionItem, {
|
|
3810
|
+
ref: ref,
|
|
3811
|
+
"$exiting": isExiting,
|
|
3812
|
+
"$reducedExit": reducedExit,
|
|
3813
|
+
"aria-hidden": isExiting || undefined,
|
|
3814
|
+
children: jsxRuntime.jsx(RegionItemContent, {
|
|
3815
|
+
children: children
|
|
3816
|
+
})
|
|
3817
|
+
});
|
|
3818
|
+
}
|
|
3819
|
+
function AgentInputWithRef(_a, ref) {
|
|
3820
|
+
var _this = this;
|
|
3821
|
+
var _b;
|
|
3555
3822
|
var value = _a.value,
|
|
3556
|
-
|
|
3557
|
-
defaultValue =
|
|
3823
|
+
_c = _a.defaultValue,
|
|
3824
|
+
defaultValue = _c === void 0 ? '' : _c,
|
|
3558
3825
|
onChange = _a.onChange,
|
|
3559
3826
|
onSubmit = _a.onSubmit,
|
|
3560
|
-
|
|
3561
|
-
|
|
3562
|
-
|
|
3563
|
-
|
|
3827
|
+
onStop = _a.onStop,
|
|
3828
|
+
review = _a.review,
|
|
3829
|
+
suggestions = _a.suggestions,
|
|
3830
|
+
onSuggestionSelect = _a.onSuggestionSelect,
|
|
3831
|
+
_d = _a.placeholder,
|
|
3832
|
+
placeholder = _d === void 0 ? 'Ask a question' : _d,
|
|
3833
|
+
maxLength = _a.maxLength,
|
|
3834
|
+
_e = _a.disabled,
|
|
3835
|
+
disabled = _e === void 0 ? false : _e,
|
|
3564
3836
|
isSubmitting = _a.isSubmitting,
|
|
3565
|
-
|
|
3566
|
-
enableVoice =
|
|
3567
|
-
|
|
3568
|
-
autoSubmitOnVoiceFinal =
|
|
3569
|
-
|
|
3570
|
-
voiceLanguage =
|
|
3571
|
-
|
|
3572
|
-
noSpeechTimeoutMs =
|
|
3837
|
+
_f = _a.enableVoice,
|
|
3838
|
+
enableVoice = _f === void 0 ? true : _f,
|
|
3839
|
+
_g = _a.autoSubmitOnVoiceFinal,
|
|
3840
|
+
autoSubmitOnVoiceFinal = _g === void 0 ? true : _g,
|
|
3841
|
+
_h = _a.voiceLanguage,
|
|
3842
|
+
voiceLanguage = _h === void 0 ? 'en-AU' : _h,
|
|
3843
|
+
_j = _a.noSpeechTimeoutMs,
|
|
3844
|
+
noSpeechTimeoutMs = _j === void 0 ? 8000 : _j,
|
|
3573
3845
|
onVoiceStart = _a.onVoiceStart,
|
|
3574
3846
|
onVoiceStop = _a.onVoiceStop,
|
|
3575
3847
|
onVoiceInterim = _a.onVoiceInterim,
|
|
3576
3848
|
onVoiceFinal = _a.onVoiceFinal,
|
|
3577
3849
|
onVoiceError = _a.onVoiceError,
|
|
3850
|
+
_k = _a.helperText,
|
|
3851
|
+
helperText = _k === void 0 ? '' : _k,
|
|
3578
3852
|
statusMessage = _a.statusMessage,
|
|
3579
3853
|
errorMessage = _a.errorMessage,
|
|
3580
|
-
|
|
3581
|
-
label =
|
|
3854
|
+
_l = _a.label,
|
|
3855
|
+
label = _l === void 0 ? 'Agent input' : _l,
|
|
3856
|
+
_m = _a.docked,
|
|
3857
|
+
docked = _m === void 0 ? false : _m,
|
|
3582
3858
|
dataTestId = _a["data-testid"];
|
|
3583
3859
|
var isControlled = value !== undefined;
|
|
3584
|
-
var
|
|
3585
|
-
internalValue =
|
|
3586
|
-
setInternalValue =
|
|
3587
|
-
var
|
|
3588
|
-
machineState =
|
|
3589
|
-
setMachineState =
|
|
3590
|
-
var
|
|
3591
|
-
interimTranscript =
|
|
3592
|
-
setInterimTranscript =
|
|
3593
|
-
var _o = React.useState(false),
|
|
3594
|
-
internalSubmitting = _o[0],
|
|
3595
|
-
setInternalSubmitting = _o[1];
|
|
3596
|
-
var _p = React.useState(undefined),
|
|
3597
|
-
internalErrorMessage = _p[0],
|
|
3598
|
-
setInternalErrorMessage = _p[1];
|
|
3599
|
-
var _q = React.useState(false),
|
|
3600
|
-
voiceSupported = _q[0],
|
|
3601
|
-
setVoiceSupported = _q[1];
|
|
3860
|
+
var _o = React.useState(defaultValue),
|
|
3861
|
+
internalValue = _o[0],
|
|
3862
|
+
setInternalValue = _o[1];
|
|
3863
|
+
var _p = React.useState(getInitialState(normalizeTranscript(value !== null && value !== void 0 ? value : defaultValue).length > 0)),
|
|
3864
|
+
machineState = _p[0],
|
|
3865
|
+
setMachineState = _p[1];
|
|
3866
|
+
var _q = React.useState(''),
|
|
3867
|
+
interimTranscript = _q[0],
|
|
3868
|
+
setInterimTranscript = _q[1];
|
|
3602
3869
|
var _r = React.useState(false),
|
|
3603
|
-
|
|
3604
|
-
|
|
3605
|
-
var _s = React.useState(
|
|
3606
|
-
|
|
3607
|
-
|
|
3870
|
+
internalSubmitting = _r[0],
|
|
3871
|
+
setInternalSubmitting = _r[1];
|
|
3872
|
+
var _s = React.useState(undefined),
|
|
3873
|
+
internalErrorMessage = _s[0],
|
|
3874
|
+
setInternalErrorMessage = _s[1];
|
|
3875
|
+
var _t = React.useState(false),
|
|
3876
|
+
voiceSupported = _t[0],
|
|
3877
|
+
setVoiceSupported = _t[1];
|
|
3878
|
+
var _u = React.useState(false),
|
|
3879
|
+
prefersReducedMotion = _u[0],
|
|
3880
|
+
setPrefersReducedMotion = _u[1];
|
|
3881
|
+
var _v = React.useState(0),
|
|
3882
|
+
meterLevel = _v[0],
|
|
3883
|
+
setMeterLevel = _v[1];
|
|
3608
3884
|
var recognitionRef = React.useRef(null);
|
|
3609
3885
|
var noSpeechTimeoutRef = React.useRef(null);
|
|
3610
3886
|
var isStoppingRef = React.useRef(false);
|
|
@@ -3612,10 +3888,19 @@ var AgentInput = function AgentInput(_a) {
|
|
|
3612
3888
|
var audioStreamRef = React.useRef(null);
|
|
3613
3889
|
var audioContextRef = React.useRef(null);
|
|
3614
3890
|
var meterRafRef = React.useRef(null);
|
|
3891
|
+
var inputRef = React.useRef(null);
|
|
3615
3892
|
var inputId = React.useId();
|
|
3616
3893
|
var statusId = "".concat(inputId, "-status");
|
|
3894
|
+
var counterId = "".concat(inputId, "-counter");
|
|
3617
3895
|
var currentValue = isControlled ? value !== null && value !== void 0 ? value : '' : internalValue;
|
|
3896
|
+
// Read after onSubmit settles, when the closure's value may be stale
|
|
3897
|
+
var currentValueRef = React.useRef(currentValue);
|
|
3898
|
+
React.useEffect(function () {
|
|
3899
|
+
currentValueRef.current = currentValue;
|
|
3900
|
+
}, [currentValue]);
|
|
3618
3901
|
var hasText = normalizeTranscript(currentValue).length > 0;
|
|
3902
|
+
var messageLength = normalizeMessage(currentValue).length;
|
|
3903
|
+
var isOverLimit = maxLength !== undefined && messageLength > maxLength;
|
|
3619
3904
|
var effectiveSubmitting = isSubmitting !== null && isSubmitting !== void 0 ? isSubmitting : internalSubmitting;
|
|
3620
3905
|
var effectiveState = disabled ? 'disabled' : machineState;
|
|
3621
3906
|
var isListening = effectiveState === 'listening';
|
|
@@ -3638,7 +3923,7 @@ var AgentInput = function AgentInput(_a) {
|
|
|
3638
3923
|
}
|
|
3639
3924
|
}, []);
|
|
3640
3925
|
var stopMeter = React.useCallback(function () {
|
|
3641
|
-
return __awaiter(
|
|
3926
|
+
return __awaiter(_this, void 0, void 0, function () {
|
|
3642
3927
|
return __generator(this, function (_a) {
|
|
3643
3928
|
switch (_a.label) {
|
|
3644
3929
|
case 0:
|
|
@@ -3666,7 +3951,7 @@ var AgentInput = function AgentInput(_a) {
|
|
|
3666
3951
|
});
|
|
3667
3952
|
}, []);
|
|
3668
3953
|
var startMeter = React.useCallback(function () {
|
|
3669
|
-
return __awaiter(
|
|
3954
|
+
return __awaiter(_this, void 0, void 0, function () {
|
|
3670
3955
|
var stream, audioContext, analyser_1, source, data_1, _loop_;
|
|
3671
3956
|
var _b;
|
|
3672
3957
|
return __generator(this, function (_c) {
|
|
@@ -3727,15 +4012,22 @@ var AgentInput = function AgentInput(_a) {
|
|
|
3727
4012
|
});
|
|
3728
4013
|
}, [onVoiceError, updateMachineState]);
|
|
3729
4014
|
var submitPayload = React.useCallback(function (rawText, source) {
|
|
3730
|
-
return __awaiter(
|
|
4015
|
+
return __awaiter(_this, void 0, void 0, function () {
|
|
3731
4016
|
var text;
|
|
3732
4017
|
return __generator(this, function (_b) {
|
|
3733
4018
|
switch (_b.label) {
|
|
3734
4019
|
case 0:
|
|
3735
|
-
text = normalizeTranscript(rawText);
|
|
4020
|
+
text = source === 'text' ? normalizeMessage(rawText) : normalizeTranscript(rawText);
|
|
3736
4021
|
if (!text || disabled || effectiveSubmitting) {
|
|
3737
4022
|
return [2 /*return*/];
|
|
3738
4023
|
}
|
|
4024
|
+
if (maxLength !== undefined && text.length > maxLength) {
|
|
4025
|
+
// A long transcript goes into the field to be shortened, unless the user has typed since
|
|
4026
|
+
if (source === 'voice-final' && !normalizeMessage(currentValueRef.current)) {
|
|
4027
|
+
updateValue(text);
|
|
4028
|
+
}
|
|
4029
|
+
return [2 /*return*/];
|
|
4030
|
+
}
|
|
3739
4031
|
updateMachineState({
|
|
3740
4032
|
type: 'SUBMIT'
|
|
3741
4033
|
});
|
|
@@ -3757,14 +4049,18 @@ var AgentInput = function AgentInput(_a) {
|
|
|
3757
4049
|
type: 'SUBMIT_SUCCESS'
|
|
3758
4050
|
});
|
|
3759
4051
|
setInterimTranscript('');
|
|
3760
|
-
|
|
4052
|
+
// Keep a follow-up typed while submitting
|
|
4053
|
+
if (normalizeMessage(currentValueRef.current) === text) {
|
|
4054
|
+
updateValue('');
|
|
4055
|
+
}
|
|
3761
4056
|
return [3 /*break*/, 5];
|
|
3762
4057
|
case 3:
|
|
3763
4058
|
_b.sent();
|
|
3764
4059
|
updateMachineState({
|
|
3765
4060
|
type: 'SUBMIT_ERROR'
|
|
3766
4061
|
});
|
|
3767
|
-
|
|
4062
|
+
// Restore the transcript unless the user has typed something since
|
|
4063
|
+
if (source === 'voice-final' && !normalizeMessage(currentValueRef.current)) {
|
|
3768
4064
|
updateValue(text);
|
|
3769
4065
|
}
|
|
3770
4066
|
setInternalErrorMessage('Submission failed. Please try again.');
|
|
@@ -3779,13 +4075,13 @@ var AgentInput = function AgentInput(_a) {
|
|
|
3779
4075
|
}
|
|
3780
4076
|
});
|
|
3781
4077
|
});
|
|
3782
|
-
}, [disabled, effectiveSubmitting, isSubmitting, onSubmit, updateMachineState, updateValue]);
|
|
4078
|
+
}, [disabled, effectiveSubmitting, isSubmitting, maxLength, onSubmit, updateMachineState, updateValue]);
|
|
3783
4079
|
var stopListening = React.useCallback(function (emitStopEvent_1) {
|
|
3784
4080
|
var args_1 = [];
|
|
3785
4081
|
for (var _i = 1; _i < arguments.length; _i++) {
|
|
3786
4082
|
args_1[_i - 1] = arguments[_i];
|
|
3787
4083
|
}
|
|
3788
|
-
return __awaiter(
|
|
4084
|
+
return __awaiter(_this, __spreadArray([emitStopEvent_1], args_1, true), void 0, function (emitStopEvent, preserveState) {
|
|
3789
4085
|
if (preserveState === void 0) {
|
|
3790
4086
|
preserveState = false;
|
|
3791
4087
|
}
|
|
@@ -3821,7 +4117,7 @@ var AgentInput = function AgentInput(_a) {
|
|
|
3821
4117
|
});
|
|
3822
4118
|
}, [clearNoSpeechTimeout, hasText, onVoiceStop, stopMeter, updateMachineState]);
|
|
3823
4119
|
var onNoSpeechTimeout = React.useCallback(function () {
|
|
3824
|
-
return __awaiter(
|
|
4120
|
+
return __awaiter(_this, void 0, void 0, function () {
|
|
3825
4121
|
var message;
|
|
3826
4122
|
return __generator(this, function (_a) {
|
|
3827
4123
|
switch (_a.label) {
|
|
@@ -3845,7 +4141,7 @@ var AgentInput = function AgentInput(_a) {
|
|
|
3845
4141
|
});
|
|
3846
4142
|
}, [clearNoSpeechTimeout, onVoiceError, stopListening, updateMachineState]);
|
|
3847
4143
|
var beginListening = React.useCallback(function () {
|
|
3848
|
-
return __awaiter(
|
|
4144
|
+
return __awaiter(_this, void 0, void 0, function () {
|
|
3849
4145
|
return __generator(this, function (_b) {
|
|
3850
4146
|
switch (_b.label) {
|
|
3851
4147
|
case 0:
|
|
@@ -3889,7 +4185,7 @@ var AgentInput = function AgentInput(_a) {
|
|
|
3889
4185
|
recognition.interimResults = true;
|
|
3890
4186
|
recognition.continuous = false;
|
|
3891
4187
|
recognition.onresult = function (event) {
|
|
3892
|
-
return __awaiter(
|
|
4188
|
+
return __awaiter(_this, void 0, void 0, function () {
|
|
3893
4189
|
var interim, finalText, index, result, normalizedInterim, normalizedFinal;
|
|
3894
4190
|
return __generator(this, function (_a) {
|
|
3895
4191
|
switch (_a.label) {
|
|
@@ -3947,7 +4243,7 @@ var AgentInput = function AgentInput(_a) {
|
|
|
3947
4243
|
});
|
|
3948
4244
|
};
|
|
3949
4245
|
recognition.onerror = function (event) {
|
|
3950
|
-
return __awaiter(
|
|
4246
|
+
return __awaiter(_this, void 0, void 0, function () {
|
|
3951
4247
|
var mappedCode;
|
|
3952
4248
|
return __generator(this, function (_a) {
|
|
3953
4249
|
switch (_a.label) {
|
|
@@ -3963,7 +4259,7 @@ var AgentInput = function AgentInput(_a) {
|
|
|
3963
4259
|
});
|
|
3964
4260
|
};
|
|
3965
4261
|
recognition.onend = function () {
|
|
3966
|
-
return __awaiter(
|
|
4262
|
+
return __awaiter(_this, void 0, void 0, function () {
|
|
3967
4263
|
return __generator(this, function (_a) {
|
|
3968
4264
|
switch (_a.label) {
|
|
3969
4265
|
case 0:
|
|
@@ -3992,6 +4288,95 @@ var AgentInput = function AgentInput(_a) {
|
|
|
3992
4288
|
stopMeter();
|
|
3993
4289
|
};
|
|
3994
4290
|
}, [autoSubmitOnVoiceFinal, clearNoSpeechTimeout, emitVoiceError, enableVoice, hasText, noSpeechTimeoutMs, onNoSpeechTimeout, onVoiceFinal, onVoiceInterim, stopListening, stopMeter, submitPayload, updateMachineState, updateValue, voiceLanguage]);
|
|
4291
|
+
var focusField = React.useCallback(function (cursor) {
|
|
4292
|
+
var input = inputRef.current;
|
|
4293
|
+
if (!input) return;
|
|
4294
|
+
input.focus();
|
|
4295
|
+
if (!cursor) return;
|
|
4296
|
+
var placeCursor = function placeCursor() {
|
|
4297
|
+
if (cursor === 'all') {
|
|
4298
|
+
input.select();
|
|
4299
|
+
return;
|
|
4300
|
+
}
|
|
4301
|
+
var position = cursor === 'start' ? 0 : input.value.length;
|
|
4302
|
+
input.setSelectionRange(position, position);
|
|
4303
|
+
};
|
|
4304
|
+
placeCursor();
|
|
4305
|
+
// Again after the render a prefill in the same handler triggers, so 'end' lands after the new text
|
|
4306
|
+
window.setTimeout(placeCursor, 0);
|
|
4307
|
+
}, []);
|
|
4308
|
+
React.useImperativeHandle(ref, function () {
|
|
4309
|
+
return {
|
|
4310
|
+
focus: function focus(options) {
|
|
4311
|
+
return focusField(options === null || options === void 0 ? void 0 : options.cursor);
|
|
4312
|
+
},
|
|
4313
|
+
clear: function clear() {
|
|
4314
|
+
setInterimTranscript('');
|
|
4315
|
+
updateValue('');
|
|
4316
|
+
}
|
|
4317
|
+
};
|
|
4318
|
+
}, [focusField, updateValue]);
|
|
4319
|
+
// The region above the field (decision 0046). The last review and suggestions shown are kept, so
|
|
4320
|
+
// they can fade out after the product removes them.
|
|
4321
|
+
var _w = React.useState(review),
|
|
4322
|
+
shownReview = _w[0],
|
|
4323
|
+
setShownReview = _w[1];
|
|
4324
|
+
var _x = React.useState(null),
|
|
4325
|
+
lastReviewAction = _x[0],
|
|
4326
|
+
setLastReviewAction = _x[1];
|
|
4327
|
+
if (review && review !== shownReview) {
|
|
4328
|
+
setShownReview(review);
|
|
4329
|
+
// A new proposal or change replaces what the last Discard or Undo announced
|
|
4330
|
+
if (lastReviewAction) setLastReviewAction(null);
|
|
4331
|
+
}
|
|
4332
|
+
// A proposal replacing an open one is announced as an update (decision 0047). Consecutive
|
|
4333
|
+
// replacements alternate a trailing no-break space, so the live region's text changes each time
|
|
4334
|
+
// even when the summary doesn't; screen readers don't speak it.
|
|
4335
|
+
var openProposalId = (review === null || review === void 0 ? void 0 : review.state) === 'proposal' ? review.id : null;
|
|
4336
|
+
var _y = React.useState(openProposalId),
|
|
4337
|
+
announcedProposalId = _y[0],
|
|
4338
|
+
setAnnouncedProposalId = _y[1];
|
|
4339
|
+
var _z = React.useState(0),
|
|
4340
|
+
replacementCount = _z[0],
|
|
4341
|
+
setReplacementCount = _z[1];
|
|
4342
|
+
if (openProposalId !== announcedProposalId) {
|
|
4343
|
+
setAnnouncedProposalId(openProposalId);
|
|
4344
|
+
setReplacementCount(openProposalId !== null && announcedProposalId !== null ? replacementCount + 1 : 0);
|
|
4345
|
+
}
|
|
4346
|
+
var cappedSuggestions = React.useMemo(function () {
|
|
4347
|
+
return (suggestions !== null && suggestions !== void 0 ? suggestions : []).slice(0, MAX_SUGGESTIONS);
|
|
4348
|
+
}, [suggestions]);
|
|
4349
|
+
var showSuggestions = cappedSuggestions.length > 0 && !hasText && (review === null || review === void 0 ? void 0 : review.state) !== 'proposal';
|
|
4350
|
+
var _0 = React.useState(cappedSuggestions),
|
|
4351
|
+
shownSuggestions = _0[0],
|
|
4352
|
+
setShownSuggestions = _0[1];
|
|
4353
|
+
if (showSuggestions && cappedSuggestions !== shownSuggestions) {
|
|
4354
|
+
setShownSuggestions(cappedSuggestions);
|
|
4355
|
+
}
|
|
4356
|
+
var suggestionCount = (_b = suggestions === null || suggestions === void 0 ? void 0 : suggestions.length) !== null && _b !== void 0 ? _b : 0;
|
|
4357
|
+
React.useEffect(function () {
|
|
4358
|
+
if (!isProduction && suggestionCount > MAX_SUGGESTIONS) {
|
|
4359
|
+
console.warn("AgentInput shows at most ".concat(MAX_SUGGESTIONS, " suggestions (decision 0046); ").concat(suggestionCount, " were passed, so the rest are hidden."));
|
|
4360
|
+
}
|
|
4361
|
+
}, [suggestionCount]);
|
|
4362
|
+
var reviewAnnouncement = review ? review.state === 'proposal' ? "".concat(replacementCount > 0 ? 'Proposal updated. ' : '').concat(review.summary, ". Accept or discard.").concat(replacementCount > 0 && replacementCount % 2 === 0 ? "\xA0" : '') : 'Changes applied. Undo available.' : lastReviewAction === 'discarded' ? 'Suggestion discarded.' : lastReviewAction === 'undone' ? 'Changes undone.' : '';
|
|
4363
|
+
var onReviewDiscard = function onReviewDiscard(onDiscard) {
|
|
4364
|
+
setLastReviewAction('discarded');
|
|
4365
|
+
onDiscard();
|
|
4366
|
+
// The bar is leaving, so focus goes to the field rather than being lost
|
|
4367
|
+
focusField();
|
|
4368
|
+
};
|
|
4369
|
+
var onReviewUndo = function onReviewUndo(onUndo) {
|
|
4370
|
+
setLastReviewAction('undone');
|
|
4371
|
+
onUndo();
|
|
4372
|
+
focusField();
|
|
4373
|
+
};
|
|
4374
|
+
var onPickSuggestion = function onPickSuggestion(text) {
|
|
4375
|
+
updateValue(text);
|
|
4376
|
+
onSuggestionSelect === null || onSuggestionSelect === void 0 ? void 0 : onSuggestionSelect(text);
|
|
4377
|
+
// Fills, never sends: the user reviews the text in the field first
|
|
4378
|
+
focusField('end');
|
|
4379
|
+
};
|
|
3995
4380
|
React.useEffect(function () {
|
|
3996
4381
|
var mediaQuery = window.matchMedia('(prefers-reduced-motion: reduce)');
|
|
3997
4382
|
var sync = function sync() {
|
|
@@ -4023,8 +4408,40 @@ var AgentInput = function AgentInput(_a) {
|
|
|
4023
4408
|
if (!interimTranscript) {
|
|
4024
4409
|
return currentValue;
|
|
4025
4410
|
}
|
|
4026
|
-
return
|
|
4411
|
+
return normalizeMessage([currentValue, interimTranscript].filter(Boolean).join(' '));
|
|
4027
4412
|
}, [currentValue, interimTranscript]);
|
|
4413
|
+
var lastFieldWidthRef = React.useRef(0);
|
|
4414
|
+
var resizeField = React.useCallback(function () {
|
|
4415
|
+
var field = inputRef.current;
|
|
4416
|
+
// Hidden (for example in a closed sheet): measure when it's shown, via the observer below
|
|
4417
|
+
if (!field || field.clientWidth === 0) return;
|
|
4418
|
+
lastFieldWidthRef.current = field.clientWidth;
|
|
4419
|
+
// Collapsing the field to measure it shrinks the page for a moment; some engines clamp a page
|
|
4420
|
+
// scrolled to the bottom when that happens, so restore its scroll position
|
|
4421
|
+
var scrollX = window.scrollX,
|
|
4422
|
+
scrollY = window.scrollY;
|
|
4423
|
+
field.style.height = 'auto';
|
|
4424
|
+
field.style.height = "".concat(field.scrollHeight, "px");
|
|
4425
|
+
if (window.scrollY !== scrollY) window.scrollTo(scrollX, scrollY);
|
|
4426
|
+
// Scroll only once max-height (six rows) clips the content
|
|
4427
|
+
field.style.overflowY = field.scrollHeight > field.clientHeight ? 'auto' : 'hidden';
|
|
4428
|
+
}, []);
|
|
4429
|
+
useIsomorphicLayoutEffect(function () {
|
|
4430
|
+
resizeField();
|
|
4431
|
+
}, [displayedValue, resizeField]);
|
|
4432
|
+
// Text rewraps when the field's width changes (layout, or being shown), not only the window's
|
|
4433
|
+
React.useEffect(function () {
|
|
4434
|
+
var field = inputRef.current;
|
|
4435
|
+
if (!field || typeof ResizeObserver === 'undefined') return;
|
|
4436
|
+
var observer = new ResizeObserver(function () {
|
|
4437
|
+
// Its own height changes trigger this too; only a width change can rewrap the text
|
|
4438
|
+
if (field.clientWidth !== lastFieldWidthRef.current) resizeField();
|
|
4439
|
+
});
|
|
4440
|
+
observer.observe(field);
|
|
4441
|
+
return function () {
|
|
4442
|
+
return observer.disconnect();
|
|
4443
|
+
};
|
|
4444
|
+
}, [resizeField]);
|
|
4028
4445
|
var onTextChange = function onTextChange(event) {
|
|
4029
4446
|
updateValue(event.target.value);
|
|
4030
4447
|
if (effectiveState === 'error') {
|
|
@@ -4036,10 +4453,18 @@ var AgentInput = function AgentInput(_a) {
|
|
|
4036
4453
|
}
|
|
4037
4454
|
};
|
|
4038
4455
|
var onInputKeyDown = function onInputKeyDown(event) {
|
|
4039
|
-
return __awaiter(
|
|
4456
|
+
return __awaiter(_this, void 0, void 0, function () {
|
|
4457
|
+
var isComposing;
|
|
4040
4458
|
return __generator(this, function (_a) {
|
|
4041
4459
|
switch (_a.label) {
|
|
4042
4460
|
case 0:
|
|
4461
|
+
isComposing = event.nativeEvent.isComposing || event.keyCode === 229;
|
|
4462
|
+
// Escape during an IME composition cancels the composition, not the request
|
|
4463
|
+
if (event.key === 'Escape' && onStop && effectiveSubmitting && !isComposing) {
|
|
4464
|
+
event.preventDefault();
|
|
4465
|
+
onStop();
|
|
4466
|
+
return [2 /*return*/];
|
|
4467
|
+
}
|
|
4043
4468
|
if (!(event.key === 'Escape' && isListening)) return [3 /*break*/, 2];
|
|
4044
4469
|
event.preventDefault();
|
|
4045
4470
|
return [4 /*yield*/, stopListening(true)];
|
|
@@ -4047,7 +4472,7 @@ var AgentInput = function AgentInput(_a) {
|
|
|
4047
4472
|
_a.sent();
|
|
4048
4473
|
return [2 /*return*/];
|
|
4049
4474
|
case 2:
|
|
4050
|
-
if (!(event.key === 'Enter')) return [3 /*break*/, 4];
|
|
4475
|
+
if (!(event.key === 'Enter' && !event.shiftKey && !isComposing)) return [3 /*break*/, 4];
|
|
4051
4476
|
event.preventDefault();
|
|
4052
4477
|
return [4 /*yield*/, submitPayload(currentValue, 'text')];
|
|
4053
4478
|
case 3:
|
|
@@ -4060,7 +4485,7 @@ var AgentInput = function AgentInput(_a) {
|
|
|
4060
4485
|
});
|
|
4061
4486
|
};
|
|
4062
4487
|
var onMicToggle = function onMicToggle() {
|
|
4063
|
-
return __awaiter(
|
|
4488
|
+
return __awaiter(_this, void 0, void 0, function () {
|
|
4064
4489
|
return __generator(this, function (_a) {
|
|
4065
4490
|
switch (_a.label) {
|
|
4066
4491
|
case 0:
|
|
@@ -4080,40 +4505,105 @@ var AgentInput = function AgentInput(_a) {
|
|
|
4080
4505
|
});
|
|
4081
4506
|
};
|
|
4082
4507
|
var statusByState = {
|
|
4083
|
-
idle: statusMessage ||
|
|
4084
|
-
typing: statusMessage ||
|
|
4508
|
+
idle: statusMessage || helperText,
|
|
4509
|
+
typing: statusMessage || helperText,
|
|
4085
4510
|
listening: statusMessage || DEFAULT_LISTENING_MESSAGE,
|
|
4086
4511
|
processingFinalTranscript: statusMessage || DEFAULT_PROCESSING_MESSAGE,
|
|
4087
4512
|
submitting: statusMessage || 'Submitting…',
|
|
4088
4513
|
error: errorMessage || internalErrorMessage || 'Voice input failed. Try again.',
|
|
4089
|
-
disabled: statusMessage ||
|
|
4514
|
+
disabled: statusMessage || helperText
|
|
4090
4515
|
};
|
|
4091
|
-
var
|
|
4092
|
-
|
|
4093
|
-
var resolvedStatus =
|
|
4094
|
-
var isStatusError = effectiveState === 'error'
|
|
4516
|
+
var overLimitMessage = isOverLimit && maxLength !== undefined ? "Over the ".concat(maxLength, "-character limit. Shorten your message to send.") : undefined;
|
|
4517
|
+
// A product-set error shows in any state. Unsupported voice hides the mic without a message.
|
|
4518
|
+
var resolvedStatus = errorMessage || overLimitMessage || statusByState[effectiveState];
|
|
4519
|
+
var isStatusError = Boolean(errorMessage) || isOverLimit || effectiveState === 'error';
|
|
4095
4520
|
var meterBars = createMeterBars(meterLevel);
|
|
4096
|
-
var
|
|
4521
|
+
var showStop = Boolean(onStop) && effectiveSubmitting;
|
|
4522
|
+
var sendDisabled = disabled || effectiveSubmitting || isOverLimit || messageLength === 0;
|
|
4523
|
+
var showCounter = maxLength !== undefined && messageLength >= maxLength * COUNTER_THRESHOLD;
|
|
4524
|
+
// Announced once when the limit is reached; going over is announced by the status line
|
|
4525
|
+
var limitAnnouncement = maxLength !== undefined && messageLength === maxLength ? "Character limit reached: ".concat(maxLength, " characters") : '';
|
|
4097
4526
|
return jsxRuntime.jsxs(Container, {
|
|
4098
4527
|
"data-testid": dataTestId,
|
|
4528
|
+
"$docked": docked,
|
|
4529
|
+
"data-docked": docked || undefined,
|
|
4099
4530
|
children: [jsxRuntime.jsx(VisuallyHiddenLabel, {
|
|
4100
4531
|
htmlFor: inputId,
|
|
4101
4532
|
children: label
|
|
4102
|
-
}), jsxRuntime.
|
|
4103
|
-
children: jsxRuntime.jsx(
|
|
4533
|
+
}), jsxRuntime.jsxs(ControlsRow, {
|
|
4534
|
+
children: [jsxRuntime.jsx(RegionPart, {
|
|
4535
|
+
show: Boolean(review),
|
|
4536
|
+
reducedExit: prefersReducedMotion,
|
|
4537
|
+
children: shownReview && jsxRuntime.jsxs(ReviewBar, {
|
|
4538
|
+
"data-testid": "agent-input-review",
|
|
4539
|
+
children: [jsxRuntime.jsx(Typography, {
|
|
4540
|
+
variant: "small",
|
|
4541
|
+
color: "default",
|
|
4542
|
+
children: shownReview.state === 'proposal' ? shownReview.summary : 'Changes applied'
|
|
4543
|
+
}), jsxRuntime.jsx(ReviewActions, {
|
|
4544
|
+
children: shownReview.state === 'proposal' ? jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
4545
|
+
children: [jsxRuntime.jsx(Button, {
|
|
4546
|
+
variant: "primary",
|
|
4547
|
+
size: "small",
|
|
4548
|
+
onClick: shownReview.onAccept,
|
|
4549
|
+
children: "Accept"
|
|
4550
|
+
}), jsxRuntime.jsx(Button, {
|
|
4551
|
+
variant: "secondary",
|
|
4552
|
+
size: "small",
|
|
4553
|
+
onClick: function onClick() {
|
|
4554
|
+
return onReviewDiscard(shownReview.onDiscard);
|
|
4555
|
+
},
|
|
4556
|
+
children: "Discard"
|
|
4557
|
+
})]
|
|
4558
|
+
}) : jsxRuntime.jsx(Button, {
|
|
4559
|
+
variant: "naked",
|
|
4560
|
+
size: "small",
|
|
4561
|
+
onClick: function onClick() {
|
|
4562
|
+
return onReviewUndo(shownReview.onUndo);
|
|
4563
|
+
},
|
|
4564
|
+
children: "Undo"
|
|
4565
|
+
})
|
|
4566
|
+
})]
|
|
4567
|
+
})
|
|
4568
|
+
}), jsxRuntime.jsx(RegionPart, {
|
|
4569
|
+
show: showSuggestions,
|
|
4570
|
+
reducedExit: prefersReducedMotion,
|
|
4571
|
+
children: jsxRuntime.jsx(SuggestionList, {
|
|
4572
|
+
"aria-label": "Suggestions",
|
|
4573
|
+
"data-testid": "agent-input-suggestions",
|
|
4574
|
+
children: shownSuggestions.map(function (suggestion, index) {
|
|
4575
|
+
return jsxRuntime.jsx("li", {
|
|
4576
|
+
children: jsxRuntime.jsx(SuggestionChip, {
|
|
4577
|
+
onClick: function onClick() {
|
|
4578
|
+
return onPickSuggestion(suggestion);
|
|
4579
|
+
},
|
|
4580
|
+
children: suggestion
|
|
4581
|
+
})
|
|
4582
|
+
}, "".concat(index, "-").concat(suggestion));
|
|
4583
|
+
})
|
|
4584
|
+
})
|
|
4585
|
+
}), jsxRuntime.jsx(VisuallyHidden, {
|
|
4586
|
+
"aria-live": "polite",
|
|
4587
|
+
"aria-atomic": "true",
|
|
4588
|
+
"data-testid": "agent-input-review-announcement",
|
|
4589
|
+
children: reviewAnnouncement
|
|
4590
|
+
}), jsxRuntime.jsx(InputWrapper, {
|
|
4104
4591
|
children: jsxRuntime.jsxs(InputShell, {
|
|
4105
|
-
"data-disabled": disabled
|
|
4592
|
+
"data-disabled": disabled,
|
|
4106
4593
|
children: [jsxRuntime.jsx(Input, {
|
|
4594
|
+
ref: inputRef,
|
|
4107
4595
|
id: inputId,
|
|
4108
|
-
|
|
4596
|
+
rows: 1,
|
|
4597
|
+
enterKeyHint: "send",
|
|
4109
4598
|
"aria-label": label,
|
|
4110
4599
|
value: displayedValue,
|
|
4111
4600
|
onChange: onTextChange,
|
|
4112
4601
|
onKeyDown: onInputKeyDown,
|
|
4113
4602
|
placeholder: placeholder,
|
|
4114
|
-
disabled: disabled
|
|
4603
|
+
disabled: disabled,
|
|
4115
4604
|
readOnly: isListening,
|
|
4116
|
-
"aria-describedby": statusId
|
|
4605
|
+
"aria-describedby": showCounter ? "".concat(statusId, " ").concat(counterId) : statusId,
|
|
4606
|
+
"aria-invalid": isOverLimit || undefined
|
|
4117
4607
|
}), jsxRuntime.jsxs(InputActions, {
|
|
4118
4608
|
children: [hasVoice && jsxRuntime.jsxs(MicButtonWrapper, {
|
|
4119
4609
|
"$isListening": isListening,
|
|
@@ -4133,7 +4623,17 @@ var AgentInput = function AgentInput(_a) {
|
|
|
4133
4623
|
disabled: disabled || effectiveSubmitting,
|
|
4134
4624
|
type: "button"
|
|
4135
4625
|
})]
|
|
4136
|
-
}), jsxRuntime.jsx(CircularActionIconButton, {
|
|
4626
|
+
}), showStop ? jsxRuntime.jsx(CircularActionIconButton, {
|
|
4627
|
+
variant: "secondary",
|
|
4628
|
+
size: "medium",
|
|
4629
|
+
iconName: "stop",
|
|
4630
|
+
onClick: function onClick() {
|
|
4631
|
+
return onStop === null || onStop === void 0 ? void 0 : onStop();
|
|
4632
|
+
},
|
|
4633
|
+
disabled: disabled,
|
|
4634
|
+
"aria-label": "Stop",
|
|
4635
|
+
type: "button"
|
|
4636
|
+
}) : jsxRuntime.jsx(CircularActionIconButton, {
|
|
4137
4637
|
variant: "secondary",
|
|
4138
4638
|
size: "medium",
|
|
4139
4639
|
iconName: "directionUp",
|
|
@@ -4146,7 +4646,7 @@ var AgentInput = function AgentInput(_a) {
|
|
|
4146
4646
|
})]
|
|
4147
4647
|
})]
|
|
4148
4648
|
})
|
|
4149
|
-
})
|
|
4649
|
+
})]
|
|
4150
4650
|
}), jsxRuntime.jsxs(StatusRow, {
|
|
4151
4651
|
children: [jsxRuntime.jsx(StatusText, {
|
|
4152
4652
|
"$isError": isStatusError,
|
|
@@ -4155,24 +4655,44 @@ var AgentInput = function AgentInput(_a) {
|
|
|
4155
4655
|
role: "status",
|
|
4156
4656
|
"aria-live": "polite",
|
|
4157
4657
|
"aria-atomic": "true",
|
|
4158
|
-
children: jsxRuntime.jsx(Typography, {
|
|
4658
|
+
children: resolvedStatus && jsxRuntime.jsx(Typography, {
|
|
4159
4659
|
variant: "small",
|
|
4160
4660
|
color: isStatusError ? 'error' : 'subdued',
|
|
4161
4661
|
children: resolvedStatus
|
|
4162
4662
|
})
|
|
4163
4663
|
})
|
|
4164
|
-
}),
|
|
4165
|
-
|
|
4166
|
-
|
|
4167
|
-
|
|
4168
|
-
|
|
4169
|
-
|
|
4170
|
-
|
|
4664
|
+
}), jsxRuntime.jsxs(StatusEnd, {
|
|
4665
|
+
children: [isListening && !prefersReducedMotion && jsxRuntime.jsx(MeterContainer, {
|
|
4666
|
+
"aria-hidden": "true",
|
|
4667
|
+
children: meterBars.map(function (barHeight, index) {
|
|
4668
|
+
return jsxRuntime.jsx(MeterBar, {
|
|
4669
|
+
"$height": barHeight
|
|
4670
|
+
}, "meter-".concat(index));
|
|
4671
|
+
})
|
|
4672
|
+
}), showCounter && jsxRuntime.jsx(Typography, {
|
|
4673
|
+
variant: "small",
|
|
4674
|
+
color: isOverLimit ? 'error' : 'subdued',
|
|
4675
|
+
children: jsxRuntime.jsxs("span", {
|
|
4676
|
+
id: counterId,
|
|
4677
|
+
"data-testid": "agent-input-counter",
|
|
4678
|
+
children: [messageLength, "/", maxLength, jsxRuntime.jsx(VisuallyHidden, {
|
|
4679
|
+
children: " characters"
|
|
4680
|
+
})]
|
|
4681
|
+
})
|
|
4682
|
+
})]
|
|
4683
|
+
}), maxLength !== undefined && jsxRuntime.jsx(VisuallyHidden, {
|
|
4684
|
+
role: "status",
|
|
4685
|
+
"aria-live": "polite",
|
|
4686
|
+
"aria-atomic": "true",
|
|
4687
|
+
"data-testid": "agent-input-limit-announcement",
|
|
4688
|
+
children: limitAnnouncement
|
|
4171
4689
|
})]
|
|
4172
4690
|
})]
|
|
4173
4691
|
});
|
|
4174
|
-
}
|
|
4175
|
-
var
|
|
4692
|
+
}
|
|
4693
|
+
var AgentInput = /*#__PURE__*/React.forwardRef(AgentInputWithRef);
|
|
4694
|
+
AgentInput.displayName = 'AgentInput';
|
|
4695
|
+
var templateObject_1$q, templateObject_2$l, templateObject_3$k, 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, 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;
|
|
4176
4696
|
|
|
4177
4697
|
var semantic$9 = tokens.semantic;
|
|
4178
4698
|
var alert = tokens.component.alert;
|
|
@@ -4199,11 +4719,12 @@ var fadeOut = styled.keyframes(templateObject_2$k || (templateObject_2$k = __mak
|
|
|
4199
4719
|
// The generated names of the two exits (full, and reduced motion)
|
|
4200
4720
|
var EXIT_ANIMATION_NAMES = [fadeThenCollapse.getName(), fadeOut.getName()];
|
|
4201
4721
|
// Default icons by variant
|
|
4722
|
+
// Each severity's status icon (decision 0045): decorative, because the title and message say it
|
|
4202
4723
|
var variantIcons$1 = {
|
|
4203
|
-
error: '
|
|
4204
|
-
warning: '
|
|
4205
|
-
info: '
|
|
4206
|
-
success: '
|
|
4724
|
+
error: 'statusError',
|
|
4725
|
+
warning: 'statusWarning',
|
|
4726
|
+
info: 'statusInfo',
|
|
4727
|
+
success: 'statusSuccess'
|
|
4207
4728
|
};
|
|
4208
4729
|
// Icon colors by variant (using semantic icon color tokens)
|
|
4209
4730
|
var variantIconColors = {
|
|
@@ -4448,11 +4969,12 @@ var semantic$8 = tokens.semantic;
|
|
|
4448
4969
|
var color$2 = semantic$8.color,
|
|
4449
4970
|
typography = semantic$8.typography,
|
|
4450
4971
|
size = semantic$8.size;
|
|
4972
|
+
// Each severity's status icon and, at the small size, its shape (decision 0045)
|
|
4451
4973
|
var variantIcons = {
|
|
4452
|
-
error: '
|
|
4453
|
-
warning: '
|
|
4454
|
-
info: '
|
|
4455
|
-
success: '
|
|
4974
|
+
error: 'statusError',
|
|
4975
|
+
warning: 'statusWarning',
|
|
4976
|
+
info: 'statusInfo',
|
|
4977
|
+
success: 'statusSuccess'
|
|
4456
4978
|
};
|
|
4457
4979
|
var variantTextColors = {
|
|
4458
4980
|
error: color$2.text.danger,
|
|
@@ -4460,6 +4982,12 @@ var variantTextColors = {
|
|
|
4460
4982
|
info: color$2.text.accent,
|
|
4461
4983
|
success: color$2.text.success
|
|
4462
4984
|
};
|
|
4985
|
+
var variantShapes = {
|
|
4986
|
+
error: 'error',
|
|
4987
|
+
warning: 'warning',
|
|
4988
|
+
info: 'info',
|
|
4989
|
+
success: 'success'
|
|
4990
|
+
};
|
|
4463
4991
|
var sizeConfig = {
|
|
4464
4992
|
small: {
|
|
4465
4993
|
font: typography.caption,
|
|
@@ -4560,7 +5088,9 @@ var InlineAlert = function InlineAlert(_a) {
|
|
|
4560
5088
|
children: hasMessage && jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
4561
5089
|
children: [jsxRuntime.jsx(StyledIconLine, {
|
|
4562
5090
|
"aria-hidden": "true",
|
|
4563
|
-
children: jsxRuntime.jsx(
|
|
5091
|
+
children: alertSize === 'small' ? jsxRuntime.jsx(StatusShape, {
|
|
5092
|
+
shape: variantShapes[variant]
|
|
5093
|
+
}) : jsxRuntime.jsx(Icon, {
|
|
4564
5094
|
name: variantIcons[variant],
|
|
4565
5095
|
size: sizeConfig[alertSize].icon,
|
|
4566
5096
|
iconColor: "inherit"
|
|
@@ -5006,7 +5536,7 @@ var _a$1 = tokens.semantic,
|
|
|
5006
5536
|
var StyledCodeBlock = /*#__PURE__*/styled__default.default.pre.withConfig({
|
|
5007
5537
|
displayName: "CodeBlock__StyledCodeBlock",
|
|
5008
5538
|
componentId: "sc-1p1t0kp-0"
|
|
5009
|
-
})(templateObject_1$h || (templateObject_1$h = __makeTemplateObject(["\n background-color: ", ";\n border: ", ";\n border-radius: ", ";\n padding: ", ";\n font-family: ", ";\n font-size: ", ";\n line-height: ", ";\n color: ", ";\n overflow-x: auto;\n overflow-y: ", ";\n margin: ", " 0;\n position: relative;\n transition: max-height ", " ", ";\n\n ", " {\n transition: none;\n }\n \n ", "\n\n /* The block is focusable so keyboard users can scroll it; it shows the system focus ring\n (decision 0029) */\n &:focus-visible {\n outline: ", ";\n outline-offset: ", ";\n }\n"], ["\n background-color: ", ";\n border: ", ";\n border-radius: ", ";\n padding: ", ";\n font-family: ", ";\n font-size: ", ";\n line-height: ", ";\n color: ", ";\n overflow-x: auto;\n overflow-y: ", ";\n margin: ", " 0;\n position: relative;\n transition: max-height ", " ", ";\n\n ", " {\n transition: none;\n }\n \n ", "\n\n /* The block is focusable so keyboard users can scroll it; it shows the system focus ring\n (decision 0029) */\n &:focus-visible {\n outline: ", ";\n outline-offset: ", ";\n }\n"])), tokens.semantic.surface.raised, border$1
|
|
5539
|
+
})(templateObject_1$h || (templateObject_1$h = __makeTemplateObject(["\n background-color: ", ";\n border: ", ";\n border-radius: ", ";\n padding: ", ";\n font-family: ", ";\n font-size: ", ";\n line-height: ", ";\n color: ", ";\n overflow-x: auto;\n overflow-y: ", ";\n margin: ", " 0;\n position: relative;\n transition: max-height ", " ", ";\n\n ", " {\n transition: none;\n }\n \n ", "\n\n /* The block is focusable so keyboard users can scroll it; it shows the system focus ring\n (decision 0029) */\n &:focus-visible {\n outline: ", ";\n outline-offset: ", ";\n }\n"], ["\n background-color: ", ";\n border: ", ";\n border-radius: ", ";\n padding: ", ";\n font-family: ", ";\n font-size: ", ";\n line-height: ", ";\n color: ", ";\n overflow-x: auto;\n overflow-y: ", ";\n margin: ", " 0;\n position: relative;\n transition: max-height ", " ", ";\n\n ", " {\n transition: none;\n }\n \n ", "\n\n /* The block is focusable so keyboard users can scroll it; it shows the system focus ring\n (decision 0029) */\n &:focus-visible {\n outline: ", ";\n outline-offset: ", ";\n }\n"])), tokens.semantic.surface.raised, border$1["default"], tokens.semantic.radius.sm, tokens.semantic.space[300], tokens.component.codeBlock.fontFamily, tokens.component.codeBlock.fontSize, tokens.component.codeBlock.lineHeight, color$1.text["default"], function (_a) {
|
|
5010
5540
|
var $isExpanded = _a.$isExpanded,
|
|
5011
5541
|
$needsExpansion = _a.$needsExpansion;
|
|
5012
5542
|
return $needsExpansion && !$isExpanded ? 'hidden' : 'auto';
|
|
@@ -5567,7 +6097,7 @@ var DropdownMenu = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
|
5567
6097
|
},
|
|
5568
6098
|
displayName: "Dropdown__DropdownMenu",
|
|
5569
6099
|
componentId: "sc-kz07c4-3"
|
|
5570
|
-
})(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: opacity ", " ", ",\n visibility ", " ", ",\n transform ", " ", ";\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: opacity ", " ", ",\n visibility ", " ", ",\n transform ", " ", ";\n max-height: ", ";\n overflow-y: auto;\n\n ", " {\n transform: none;\n }\n"])), tokens.semantic.layer.dropdown, input$1["default"].backgroundColor, border
|
|
6100
|
+
})(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: opacity ", " ", ",\n visibility ", " ", ",\n transform ", " ", ";\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: opacity ", " ", ",\n visibility ", " ", ",\n transform ", " ", ";\n max-height: ", ";\n overflow-y: auto;\n\n ", " {\n transform: none;\n }\n"])), tokens.semantic.layer.dropdown, input$1["default"].backgroundColor, border["default"], input$1["default"].borderRadius, elevation$1.floating, space$4[100], function (_a) {
|
|
5571
6101
|
var $isOpen = _a.$isOpen;
|
|
5572
6102
|
return $isOpen ? 1 : 0;
|
|
5573
6103
|
}, function (_a) {
|
|
@@ -5590,7 +6120,7 @@ var DropdownOption = /*#__PURE__*/styled__default.default.button.withConfig({
|
|
|
5590
6120
|
selected: $isSelected,
|
|
5591
6121
|
focused: $isFocused
|
|
5592
6122
|
});
|
|
5593
|
-
}, border
|
|
6123
|
+
}, border["default"]);
|
|
5594
6124
|
var StyledHelperText$3 = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
5595
6125
|
displayName: "Dropdown__StyledHelperText",
|
|
5596
6126
|
componentId: "sc-kz07c4-5"
|
|
@@ -7571,7 +8101,7 @@ var semantic = tokens.semantic;
|
|
|
7571
8101
|
var StyledTabList = /*#__PURE__*/styled__default.default.div.withConfig({
|
|
7572
8102
|
displayName: "TabBar__StyledTabList",
|
|
7573
8103
|
componentId: "sc-1g9ib0y-0"
|
|
7574
|
-
})(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
|
|
8104
|
+
})(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["default"], tokens.component.tabBar.scrollbar.height, semantic.surface.raised, semantic.color.border["default"], semantic.radius.sm);
|
|
7575
8105
|
var StyledTab = /*#__PURE__*/styled__default.default.button.withConfig({
|
|
7576
8106
|
shouldForwardProp: function shouldForwardProp(prop) {
|
|
7577
8107
|
return !prop.startsWith('$');
|
|
@@ -7591,11 +8121,11 @@ var StyledTab = /*#__PURE__*/styled__default.default.button.withConfig({
|
|
|
7591
8121
|
}, function (props) {
|
|
7592
8122
|
return props.$isActive ? semantic.color.fill['accent-muted-hover'] : 'transparent';
|
|
7593
8123
|
}, function (props) {
|
|
7594
|
-
return props.$isActive ? semantic.color.text
|
|
8124
|
+
return props.$isActive ? semantic.color.text.accent : semantic.color.text["default"];
|
|
7595
8125
|
}, function (props) {
|
|
7596
8126
|
return props.$isActive ? semantic.color.fill['accent-muted-pressed'] : 'transparent';
|
|
7597
8127
|
}, function (props) {
|
|
7598
|
-
return props.$isActive ? semantic.color.text
|
|
8128
|
+
return props.$isActive ? semantic.color.text.accent : semantic.color.text["default"];
|
|
7599
8129
|
}, function (props) {
|
|
7600
8130
|
return props.$disabled ? '0.5' : '1';
|
|
7601
8131
|
}, semantic.border.focus, semantic.border.focusOffset);
|
|
@@ -7916,28 +8446,30 @@ var StyledTruncatedText = /*#__PURE__*/styled__default.default.span.withConfig({
|
|
|
7916
8446
|
])));
|
|
7917
8447
|
// Map categories to CategoryLabel configurations
|
|
7918
8448
|
var categoryConfig = {
|
|
8449
|
+
// Display colours carry no meaning (decision 0043); five coloured categories share four colours,
|
|
8450
|
+
// so the icon and label tell dining and bills apart
|
|
7919
8451
|
shopping: {
|
|
7920
|
-
color: '
|
|
8452
|
+
color: 'magenta',
|
|
7921
8453
|
icon: 'paper',
|
|
7922
8454
|
label: 'Shopping'
|
|
7923
8455
|
},
|
|
7924
8456
|
dining: {
|
|
7925
|
-
color: '
|
|
8457
|
+
color: 'rose',
|
|
7926
8458
|
icon: 'paper',
|
|
7927
8459
|
label: 'Dining'
|
|
7928
8460
|
},
|
|
7929
8461
|
transport: {
|
|
7930
|
-
color: '
|
|
8462
|
+
color: 'periwinkle',
|
|
7931
8463
|
icon: 'paper',
|
|
7932
8464
|
label: 'Transport'
|
|
7933
8465
|
},
|
|
7934
8466
|
entertainment: {
|
|
7935
|
-
color: '
|
|
8467
|
+
color: 'olive',
|
|
7936
8468
|
icon: 'star',
|
|
7937
8469
|
label: 'Entertainment'
|
|
7938
8470
|
},
|
|
7939
8471
|
bills: {
|
|
7940
|
-
color: '
|
|
8472
|
+
color: 'rose',
|
|
7941
8473
|
icon: 'paper',
|
|
7942
8474
|
label: 'Bills'
|
|
7943
8475
|
},
|
|
@@ -7947,12 +8479,6 @@ var categoryConfig = {
|
|
|
7947
8479
|
label: 'Other'
|
|
7948
8480
|
}
|
|
7949
8481
|
};
|
|
7950
|
-
// Map status to badge variant
|
|
7951
|
-
var statusToBadgeVariant = {
|
|
7952
|
-
completed: 'success',
|
|
7953
|
-
pending: 'warning',
|
|
7954
|
-
failed: 'error'
|
|
7955
|
-
};
|
|
7956
8482
|
/**
|
|
7957
8483
|
* TransactionListItem component
|
|
7958
8484
|
*
|
|
@@ -7960,7 +8486,7 @@ var statusToBadgeVariant = {
|
|
|
7960
8486
|
* status, and optional metadata (category, receipt, notes). Minimum height 72px
|
|
7961
8487
|
* with interactive states for clickable items.
|
|
7962
8488
|
*
|
|
7963
|
-
* Composes: Avatar,
|
|
8489
|
+
* Composes: Avatar, CategoryLabel, StatusLabel, MoneyDisplay, Icon, DateFormatter, Typography, Stack
|
|
7964
8490
|
*/
|
|
7965
8491
|
var TransactionListItem = function TransactionListItem(_a) {
|
|
7966
8492
|
var merchant = _a.merchant,
|
|
@@ -7984,8 +8510,6 @@ var TransactionListItem = function TransactionListItem(_a) {
|
|
|
7984
8510
|
var amountVariant = amount > 0 ? 'positive' : amount < 0 ? 'negative' : 'default';
|
|
7985
8511
|
// Get category configuration
|
|
7986
8512
|
var categoryData = category ? categoryConfig[category] : undefined;
|
|
7987
|
-
// Get badge variant from status
|
|
7988
|
-
var badgeVariant = statusToBadgeVariant[status];
|
|
7989
8513
|
var handleClick = function handleClick() {
|
|
7990
8514
|
if (isClickable && onClick) {
|
|
7991
8515
|
onClick();
|
|
@@ -8003,19 +8527,10 @@ var TransactionListItem = function TransactionListItem(_a) {
|
|
|
8003
8527
|
onKeyDown: handleKeyDown,
|
|
8004
8528
|
tabIndex: isClickable ? 0 : undefined,
|
|
8005
8529
|
role: isClickable ? 'button' : undefined,
|
|
8006
|
-
"aria-label": isClickable ? "".concat(merchant, " transaction, ").concat(amount < 0 ? 'expense' : 'income', " of ").concat(Math.abs(amount)) : undefined,
|
|
8530
|
+
"aria-label": isClickable ? "".concat(merchant, " transaction, ").concat(amount < 0 ? 'expense' : 'income', " of ").concat(Math.abs(amount)).concat(status === 'completed' ? '' : ", ".concat(status)) : undefined,
|
|
8007
8531
|
"data-testid": dataTestId,
|
|
8008
8532
|
children: [jsxRuntime.jsx(StyledAvatarSection, {
|
|
8009
|
-
children:
|
|
8010
|
-
variant: badgeVariant,
|
|
8011
|
-
dot: true,
|
|
8012
|
-
"aria-label": "Pending transaction",
|
|
8013
|
-
children: jsxRuntime.jsx(Avatar, {
|
|
8014
|
-
name: merchant,
|
|
8015
|
-
picture: merchantLogo,
|
|
8016
|
-
size: "md"
|
|
8017
|
-
})
|
|
8018
|
-
}) : jsxRuntime.jsx(Avatar, {
|
|
8533
|
+
children: jsxRuntime.jsx(Avatar, {
|
|
8019
8534
|
name: merchant,
|
|
8020
8535
|
picture: merchantLogo,
|
|
8021
8536
|
size: "md"
|
|
@@ -8035,11 +8550,10 @@ var TransactionListItem = function TransactionListItem(_a) {
|
|
|
8035
8550
|
variant: "minimal",
|
|
8036
8551
|
"aria-label": "Category: ".concat(categoryData.label),
|
|
8037
8552
|
children: categoryData.label
|
|
8038
|
-
}), status
|
|
8039
|
-
|
|
8040
|
-
|
|
8041
|
-
|
|
8042
|
-
children: jsxRuntime.jsx("span", {})
|
|
8553
|
+
}), status !== 'completed' && jsxRuntime.jsx(StatusLabel, {
|
|
8554
|
+
status: status,
|
|
8555
|
+
size: "small",
|
|
8556
|
+
liveRegion: false
|
|
8043
8557
|
})]
|
|
8044
8558
|
}), jsxRuntime.jsx(MoneyDisplay, {
|
|
8045
8559
|
amount: amount,
|
|
@@ -8292,6 +8806,7 @@ var ResponsiveGrid = function ResponsiveGrid(_a) {
|
|
|
8292
8806
|
};
|
|
8293
8807
|
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;
|
|
8294
8808
|
|
|
8809
|
+
exports.AILabel = AILabel;
|
|
8295
8810
|
exports.AccountCard = AccountCard;
|
|
8296
8811
|
exports.ActionSheet = ActionSheet;
|
|
8297
8812
|
exports.AgentInput = AgentInput;
|
|
@@ -8343,6 +8858,7 @@ exports.StatusBadge = StatusBadge;
|
|
|
8343
8858
|
exports.StatusLabel = StatusLabel;
|
|
8344
8859
|
exports.StyledInputBase = StyledInputBase;
|
|
8345
8860
|
exports.StyledTextAreaBase = StyledTextAreaBase;
|
|
8861
|
+
exports.SuggestionChip = SuggestionChip;
|
|
8346
8862
|
exports.TabBar = TabBar;
|
|
8347
8863
|
exports.Tag = Tag;
|
|
8348
8864
|
exports.TextField = TextField;
|