@common-origin/design-system 2.21.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 +222 -206
- package/dist/client.js.map +1 -1
- 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.mjs +1 -1
- 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/molecules/AccountCard/AccountCard.mjs +21 -13
- 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/CodeBlock/CodeBlock.mjs +1 -1
- package/dist/components/molecules/Dropdown/Dropdown.mjs +2 -2
- 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 +505 -295
- package/dist/data.js.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 +15 -10
- package/dist/lib/tokenAliases.mjs.map +1 -1
- package/dist/styles/icons.json +141 -0
- package/dist/styles/icons.json.mjs +153 -2
- package/dist/styles/icons.json.mjs.map +1 -1
- package/dist/styles/tokens.d.mts +412 -122
- package/dist/styles/tokens.d.ts +412 -122
- package/dist/styles/tokens.json +353 -294
- package/dist/styles/tokens.json.mjs +353 -294
- package/dist/styles/tokens.json.mjs.map +1 -1
- package/dist/tokens/index.js +353 -294
- package/dist/tokens/index.js.map +1 -1
- package/dist/tokens/index.mjs +353 -294
- package/dist/tokens/index.mjs.map +1 -1
- package/dist/tokens/styles/tokens.d.mts +412 -122
- package/dist/tokens/styles/tokens.d.ts +412 -122
- package/dist/tokens.css +257 -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
|
@@ -4,8 +4,11 @@ export type { StatusLabelProps, StatusType, StatusSize } from './StatusLabelBase
|
|
|
4
4
|
/**
|
|
5
5
|
* StatusLabel conveys the status of something, such as a transaction or task (decision 0018).
|
|
6
6
|
*
|
|
7
|
-
* Uses only the status colour tokens and always shows
|
|
8
|
-
*
|
|
7
|
+
* Uses only the status colour tokens and always shows its text, so status is never conveyed by
|
|
8
|
+
* colour alone (decision 0045). Medium shows the status icon. Small shows the status shape for
|
|
9
|
+
* completed, failed and processing, and text only for the neutral pending, scheduled and
|
|
10
|
+
* cancelled, so keep the label visible. Not interactive. Announces changes politely to screen
|
|
11
|
+
* readers.
|
|
9
12
|
*
|
|
10
13
|
* @example
|
|
11
14
|
* ```tsx
|
|
@@ -6,8 +6,11 @@ import { StatusLabelBase } from './StatusLabelBase.mjs';
|
|
|
6
6
|
/**
|
|
7
7
|
* StatusLabel conveys the status of something, such as a transaction or task (decision 0018).
|
|
8
8
|
*
|
|
9
|
-
* Uses only the status colour tokens and always shows
|
|
10
|
-
*
|
|
9
|
+
* Uses only the status colour tokens and always shows its text, so status is never conveyed by
|
|
10
|
+
* colour alone (decision 0045). Medium shows the status icon. Small shows the status shape for
|
|
11
|
+
* completed, failed and processing, and text only for the neutral pending, scheduled and
|
|
12
|
+
* cancelled, so keep the label visible. Not interactive. Announces changes politely to screen
|
|
13
|
+
* readers.
|
|
11
14
|
*
|
|
12
15
|
* @example
|
|
13
16
|
* ```tsx
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusLabel.mjs","sources":["../../../../src/components/atoms/StatusLabel/StatusLabel.tsx"],"sourcesContent":["import React from 'react'\nimport { StatusLabelBase, type StatusLabelProps } from './StatusLabelBase'\n\nexport type { StatusLabelProps, StatusType, StatusSize } from './StatusLabelBase'\n\n/**\n * StatusLabel conveys the status of something, such as a transaction or task (decision 0018).\n *\n * Uses only the status colour tokens and always shows
|
|
1
|
+
{"version":3,"file":"StatusLabel.mjs","sources":["../../../../src/components/atoms/StatusLabel/StatusLabel.tsx"],"sourcesContent":["import React from 'react'\nimport { StatusLabelBase, type StatusLabelProps } from './StatusLabelBase'\n\nexport type { StatusLabelProps, StatusType, StatusSize } from './StatusLabelBase'\n\n/**\n * StatusLabel conveys the status of something, such as a transaction or task (decision 0018).\n *\n * Uses only the status colour tokens and always shows its text, so status is never conveyed by\n * colour alone (decision 0045). Medium shows the status icon. Small shows the status shape for\n * completed, failed and processing, and text only for the neutral pending, scheduled and\n * cancelled, so keep the label visible. Not interactive. Announces changes politely to screen\n * readers.\n *\n * @example\n * ```tsx\n * <StatusLabel status=\"completed\" />\n *\n * <StatusLabel status=\"pending\" label=\"Awaiting approval\" size=\"small\" />\n * ```\n */\n// showIcon comes last so no caller (for example plain JavaScript) can hide the icon\nexport const StatusLabel: React.FC<StatusLabelProps> = (props) => <StatusLabelBase {...props} showIcon />\n\nStatusLabel.displayName = 'StatusLabel'\n"],"names":["StatusLabel","props","_jsx","StatusLabelBase","showIcon","displayName"],"mappings":";;;;;AAKA;;;;;;;;;;;;;;;AAeG;AACH;IACaA,WAAW,GAA+B,SAA1CA,WAAWA,CAAgCC,KAAK,EAAK;EAAA,OAAAC,GAAC,CAAAC,eAAe,eAAKF,KAAK,EAAA;AAAEG,IAAAA,QAAQ,EAAG,IAAA;AAAA,GAAA,CAAA,CAAA,CAAA;AAAvC,EAAuC;AAEzGJ,WAAW,CAACK,WAAW,GAAG,aAAa;;;;"}
|
|
@@ -41,8 +41,8 @@ export interface StatusLabelProps {
|
|
|
41
41
|
}
|
|
42
42
|
/**
|
|
43
43
|
* Shared implementation of StatusLabel and the deprecated StatusBadge. Internal: not exported
|
|
44
|
-
* from the package. `showIcon` exists only for StatusBadge
|
|
45
|
-
* (
|
|
44
|
+
* from the package. `showIcon` exists only for StatusBadge. StatusLabel always shows the status icon
|
|
45
|
+
* at the medium size, and at the small size the shape for coloured statuses (decisions 0018, 0045).
|
|
46
46
|
*/
|
|
47
47
|
export declare const StatusLabelBase: React.FC<StatusLabelProps & {
|
|
48
48
|
showIcon?: boolean;
|
|
@@ -41,8 +41,8 @@ export interface StatusLabelProps {
|
|
|
41
41
|
}
|
|
42
42
|
/**
|
|
43
43
|
* Shared implementation of StatusLabel and the deprecated StatusBadge. Internal: not exported
|
|
44
|
-
* from the package. `showIcon` exists only for StatusBadge
|
|
45
|
-
* (
|
|
44
|
+
* from the package. `showIcon` exists only for StatusBadge. StatusLabel always shows the status icon
|
|
45
|
+
* at the medium size, and at the small size the shape for coloured statuses (decisions 0018, 0045).
|
|
46
46
|
*/
|
|
47
47
|
export declare const StatusLabelBase: React.FC<StatusLabelProps & {
|
|
48
48
|
showIcon?: boolean;
|
|
@@ -4,6 +4,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
|
|
|
4
4
|
import styled$module, { keyframes } from 'styled-components';
|
|
5
5
|
const styled = styled$module.default || styled$module;
|
|
6
6
|
import { Icon } from '../Icon/Icon.mjs';
|
|
7
|
+
import { StatusShape } from './StatusShape.mjs';
|
|
7
8
|
import { reducedMotion, forcedColorsEdge, visuallyHidden } from '../../../lib/styleUtils.mjs';
|
|
8
9
|
import tokens from '../../../lib/cssTokens.mjs';
|
|
9
10
|
|
|
@@ -20,43 +21,46 @@ var labelHeight = tokens.semantic.size.label;
|
|
|
20
21
|
var label = tokens.component.badge.label;
|
|
21
22
|
var scaleIn = keyframes(templateObject_1 || (templateObject_1 = __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"])));
|
|
22
23
|
var getStatusConfig = function getStatusConfig(status) {
|
|
24
|
+
// Each status's icon and, for the coloured statuses, its shape indicator (decision 0045). The
|
|
25
|
+
// neutral statuses have no shape: at the small size they're plain text.
|
|
23
26
|
var configs = {
|
|
24
27
|
pending: {
|
|
25
28
|
color: statusColors.pending.text,
|
|
26
29
|
bgColor: statusColors.pending.background,
|
|
27
|
-
icon: '
|
|
28
|
-
// Fallback until 'clock' icon is added
|
|
30
|
+
icon: 'statusPending',
|
|
29
31
|
label: 'Pending'
|
|
30
32
|
},
|
|
31
33
|
completed: {
|
|
32
34
|
color: statusColors.completed.text,
|
|
33
35
|
bgColor: statusColors.completed.background,
|
|
34
|
-
icon: '
|
|
36
|
+
icon: 'statusSuccess',
|
|
37
|
+
shape: 'success',
|
|
35
38
|
label: 'Completed'
|
|
36
39
|
},
|
|
37
40
|
failed: {
|
|
38
41
|
color: statusColors.failed.text,
|
|
39
42
|
bgColor: statusColors.failed.background,
|
|
40
|
-
icon: '
|
|
43
|
+
icon: 'statusError',
|
|
44
|
+
shape: 'error',
|
|
41
45
|
label: 'Failed'
|
|
42
46
|
},
|
|
43
47
|
cancelled: {
|
|
44
48
|
color: statusColors.cancelled.text,
|
|
45
49
|
bgColor: statusColors.cancelled.background,
|
|
46
|
-
icon: '
|
|
50
|
+
icon: 'statusCancelled',
|
|
47
51
|
label: 'Cancelled'
|
|
48
52
|
},
|
|
49
53
|
processing: {
|
|
50
54
|
color: statusColors.processing.text,
|
|
51
55
|
bgColor: statusColors.processing.background,
|
|
52
|
-
icon: '
|
|
56
|
+
icon: 'statusInProgress',
|
|
57
|
+
shape: 'inProgress',
|
|
53
58
|
label: 'Processing'
|
|
54
59
|
},
|
|
55
60
|
scheduled: {
|
|
56
61
|
color: statusColors.scheduled.text,
|
|
57
62
|
bgColor: statusColors.scheduled.background,
|
|
58
|
-
icon: '
|
|
59
|
-
// Fallback until 'calendar' icon is added
|
|
63
|
+
icon: 'statusScheduled',
|
|
60
64
|
label: 'Scheduled'
|
|
61
65
|
}
|
|
62
66
|
};
|
|
@@ -109,13 +113,13 @@ var VisibleContent = /*#__PURE__*/styled.span.withConfig({
|
|
|
109
113
|
})(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n display: contents;\n"], ["\n display: contents;\n"
|
|
110
114
|
/**
|
|
111
115
|
* Shared implementation of StatusLabel and the deprecated StatusBadge. Internal: not exported
|
|
112
|
-
* from the package. `showIcon` exists only for StatusBadge
|
|
113
|
-
* (
|
|
116
|
+
* from the package. `showIcon` exists only for StatusBadge. StatusLabel always shows the status icon
|
|
117
|
+
* at the medium size, and at the small size the shape for coloured statuses (decisions 0018, 0045).
|
|
114
118
|
*/])));
|
|
115
119
|
/**
|
|
116
120
|
* Shared implementation of StatusLabel and the deprecated StatusBadge. Internal: not exported
|
|
117
|
-
* from the package. `showIcon` exists only for StatusBadge
|
|
118
|
-
* (
|
|
121
|
+
* from the package. `showIcon` exists only for StatusBadge. StatusLabel always shows the status icon
|
|
122
|
+
* at the medium size, and at the small size the shape for coloured statuses (decisions 0018, 0045).
|
|
119
123
|
*/
|
|
120
124
|
var StatusLabelBase = function StatusLabelBase(_a) {
|
|
121
125
|
var status = _a.status,
|
|
@@ -143,10 +147,12 @@ var StatusLabelBase = function StatusLabelBase(_a) {
|
|
|
143
147
|
"data-testid": dataTestId,
|
|
144
148
|
children: [jsxs(VisibleContent, {
|
|
145
149
|
"aria-hidden": accessibleLabel ? 'true' : undefined,
|
|
146
|
-
children: [showIcon && jsx(Icon, {
|
|
150
|
+
children: [showIcon && size === 'medium' && jsx(Icon, {
|
|
147
151
|
name: statusConfig.icon,
|
|
148
152
|
size: sizeStyles.iconSize,
|
|
149
153
|
iconColor: "inherit"
|
|
154
|
+
}), showIcon && size === 'small' && statusConfig.shape && jsx(StatusShape, {
|
|
155
|
+
shape: statusConfig.shape
|
|
150
156
|
}), displayLabel, jsxs(ScreenReaderOnly, {
|
|
151
157
|
children: [status, " status"]
|
|
152
158
|
})]
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { __makeTemplateObject } from '../../../vendor/tslib/tslib.es6.mjs';
|
|
3
|
+
import { jsx } from 'react/jsx-runtime';
|
|
4
|
+
import styled$module from 'styled-components';
|
|
5
|
+
const styled = styled$module.default || styled$module;
|
|
6
|
+
import tokens from '../../../lib/cssTokens.mjs';
|
|
7
|
+
import { statusShapes } from '../../../lib/statusShapes.mjs';
|
|
8
|
+
|
|
9
|
+
// The shape indicator: at least 12px (decision 0045), filled with the current text colour, which is
|
|
10
|
+
// the label's role colour at 5.3:1 or more on its tint, so it needs no edge. Decorative: the text
|
|
11
|
+
// beside it names the status. Internal to the status family (#264): not exported from the package.
|
|
12
|
+
var Mark = /*#__PURE__*/styled.svg.withConfig({
|
|
13
|
+
displayName: "StatusShape__Mark",
|
|
14
|
+
componentId: "sc-1yzi9jt-0"
|
|
15
|
+
})(templateObject_1 || (templateObject_1 = __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);
|
|
16
|
+
var StatusShape = function StatusShape(_a) {
|
|
17
|
+
var shape = _a.shape;
|
|
18
|
+
return jsx(Mark, {
|
|
19
|
+
viewBox: "0 0 24 24",
|
|
20
|
+
"aria-hidden": "true",
|
|
21
|
+
focusable: "false",
|
|
22
|
+
"data-shape": shape,
|
|
23
|
+
children: jsx("path", {
|
|
24
|
+
d: statusShapes[shape]
|
|
25
|
+
})
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
var templateObject_1;
|
|
29
|
+
|
|
30
|
+
export { StatusShape };
|
|
31
|
+
//# sourceMappingURL=StatusShape.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusShape.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -25,7 +25,7 @@ var getTypographyStyles = function getTypographyStyles(variant) {
|
|
|
25
25
|
caption: "font: ".concat(typography.caption, "; text-transform: uppercase;"),
|
|
26
26
|
button1: "font: ".concat(tokens.component.button.sizes.large.font, ";"),
|
|
27
27
|
button2: "font: ".concat(tokens.component.button.sizes.medium.font, ";"),
|
|
28
|
-
button3: "font: ".concat(tokens.component.button.sizes.small.font, ";"),
|
|
28
|
+
button3: "font: ".concat(tokens.component.button.sizes.small.font, "; font-weight: ").concat(tokens.component.button.sizes.small.fontWeight, ";"),
|
|
29
29
|
label: "font: ".concat(typography.label, ";")
|
|
30
30
|
};
|
|
31
31
|
return styles[variant] || styles.body;
|
|
@@ -33,7 +33,7 @@ var getTypographyStyles = function getTypographyStyles(variant) {
|
|
|
33
33
|
var getTextColor = function getTextColor(colorVariant) {
|
|
34
34
|
var colorMap = {
|
|
35
35
|
"default": color.text["default"],
|
|
36
|
-
emphasis: color.text
|
|
36
|
+
emphasis: color.text["default"],
|
|
37
37
|
subdued: color.text.muted,
|
|
38
38
|
inverse: color.text.inverse,
|
|
39
39
|
disabled: color.text.disabled,
|
|
@@ -5,10 +5,10 @@ import styled$module from 'styled-components';
|
|
|
5
5
|
const styled = styled$module.default || styled$module;
|
|
6
6
|
import { Stack } from '../../atoms/Stack/Stack.mjs';
|
|
7
7
|
import { Box } from '../../atoms/Box/Box.mjs';
|
|
8
|
+
import { Icon } from '../../atoms/Icon/Icon.mjs';
|
|
8
9
|
import { Typography } from '../../atoms/Typography/Typography.mjs';
|
|
9
10
|
import { MoneyDisplay } from '../../atoms/MoneyDisplay/MoneyDisplay.mjs';
|
|
10
11
|
import { Button } from '../../atoms/Button/Button.mjs';
|
|
11
|
-
import { CategoryLabel } from '../../atoms/CategoryLabel/CategoryLabel.mjs';
|
|
12
12
|
import { Avatar } from '../../atoms/Avatar/Avatar.mjs';
|
|
13
13
|
import tokens from '../../../lib/cssTokens.mjs';
|
|
14
14
|
|
|
@@ -22,7 +22,10 @@ var StyledBalanceSection = /*#__PURE__*/styled.div.withConfig({
|
|
|
22
22
|
var StyledTrendSection = /*#__PURE__*/styled.div.withConfig({
|
|
23
23
|
displayName: "AccountCard__StyledTrendSection",
|
|
24
24
|
componentId: "sc-1erp7zn-1"
|
|
25
|
-
})(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: ", ";\n"], ["\n display: flex;\n align-items: center;\n gap: ", ";\n"])), space[100])
|
|
25
|
+
})(templateObject_2 || (templateObject_2 = __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[100], function (_a) {
|
|
26
|
+
var $color = _a.$color;
|
|
27
|
+
return $color;
|
|
28
|
+
}, semantic.typography.small);
|
|
26
29
|
/*#__PURE__*/styled.div.withConfig({
|
|
27
30
|
displayName: "AccountCard__StyledActions",
|
|
28
31
|
componentId: "sc-1erp7zn-2"
|
|
@@ -43,10 +46,12 @@ var trendToIcon = {
|
|
|
43
46
|
down: 'arrowDown',
|
|
44
47
|
neutral: 'arrowRight'
|
|
45
48
|
};
|
|
49
|
+
// A trend is a differential indicator (decision 0045): the arrow and the signed value carry the
|
|
50
|
+
// direction, and the role colour repeats it. Category colours carry no meaning, so they aren't used.
|
|
46
51
|
var trendToColor = {
|
|
47
|
-
up:
|
|
48
|
-
down:
|
|
49
|
-
neutral:
|
|
52
|
+
up: semantic.color.text.success,
|
|
53
|
+
down: semantic.color.text.danger,
|
|
54
|
+
neutral: semantic.color.text.muted
|
|
50
55
|
};
|
|
51
56
|
/**
|
|
52
57
|
* AccountCard component
|
|
@@ -141,16 +146,19 @@ var AccountCard = function AccountCard(_a) {
|
|
|
141
146
|
}), jsx(Typography, {
|
|
142
147
|
color: "subdued",
|
|
143
148
|
children: "Available"
|
|
144
|
-
}), trend && trendValue &&
|
|
149
|
+
}), trend && trendValue &&
|
|
150
|
+
// A group rather than an image, so screen readers read the value as well as the direction
|
|
151
|
+
jsxs(StyledTrendSection, {
|
|
152
|
+
role: "group",
|
|
145
153
|
"aria-label": "Trend ".concat(trend),
|
|
146
|
-
|
|
147
|
-
children: jsx(
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
154
|
+
"$color": trendColor,
|
|
155
|
+
children: [jsx(Icon, {
|
|
156
|
+
name: trendIcon,
|
|
157
|
+
size: "sm",
|
|
158
|
+
iconColor: "inherit"
|
|
159
|
+
}), jsx("span", {
|
|
152
160
|
children: trendValue
|
|
153
|
-
})
|
|
161
|
+
})]
|
|
154
162
|
})]
|
|
155
163
|
})
|
|
156
164
|
})]
|
|
@@ -2,10 +2,10 @@ import React from 'react';
|
|
|
2
2
|
export interface AlertProps {
|
|
3
3
|
/**
|
|
4
4
|
* Visual style variant affecting background, border, and icon colors
|
|
5
|
-
* - error: Critical issues, validation errors (
|
|
6
|
-
* - warning: Cautions, potential issues (
|
|
7
|
-
* - info: Tips, helper text, neutral information (
|
|
8
|
-
* - success: Confirmations, successful operations (
|
|
5
|
+
* - error: Critical issues, validation errors (cross in a hexagon)
|
|
6
|
+
* - warning: Cautions, potential issues (`!` in a triangle)
|
|
7
|
+
* - info: Tips, helper text, neutral information (`i` in a square)
|
|
8
|
+
* - success: Confirmations, successful operations (tick in a circle)
|
|
9
9
|
* @default 'info'
|
|
10
10
|
*/
|
|
11
11
|
variant?: 'error' | 'warning' | 'info' | 'success';
|
|
@@ -2,10 +2,10 @@ import React from 'react';
|
|
|
2
2
|
export interface AlertProps {
|
|
3
3
|
/**
|
|
4
4
|
* Visual style variant affecting background, border, and icon colors
|
|
5
|
-
* - error: Critical issues, validation errors (
|
|
6
|
-
* - warning: Cautions, potential issues (
|
|
7
|
-
* - info: Tips, helper text, neutral information (
|
|
8
|
-
* - success: Confirmations, successful operations (
|
|
5
|
+
* - error: Critical issues, validation errors (cross in a hexagon)
|
|
6
|
+
* - warning: Cautions, potential issues (`!` in a triangle)
|
|
7
|
+
* - info: Tips, helper text, neutral information (`i` in a square)
|
|
8
|
+
* - success: Confirmations, successful operations (tick in a circle)
|
|
9
9
|
* @default 'info'
|
|
10
10
|
*/
|
|
11
11
|
variant?: 'error' | 'warning' | 'info' | 'success';
|
|
@@ -35,11 +35,12 @@ var fadeOut = keyframes(templateObject_2 || (templateObject_2 = __makeTemplateOb
|
|
|
35
35
|
// The generated names of the two exits (full, and reduced motion)
|
|
36
36
|
var EXIT_ANIMATION_NAMES = [fadeThenCollapse.getName(), fadeOut.getName()];
|
|
37
37
|
// Default icons by variant
|
|
38
|
+
// Each severity's status icon (decision 0045): decorative, because the title and message say it
|
|
38
39
|
var variantIcons = {
|
|
39
|
-
error: '
|
|
40
|
-
warning: '
|
|
41
|
-
info: '
|
|
42
|
-
success: '
|
|
40
|
+
error: 'statusError',
|
|
41
|
+
warning: 'statusWarning',
|
|
42
|
+
info: 'statusInfo',
|
|
43
|
+
success: 'statusSuccess'
|
|
43
44
|
};
|
|
44
45
|
// Icon colors by variant (using semantic icon color tokens)
|
|
45
46
|
var variantIconColors = {
|
|
@@ -15,7 +15,7 @@ var _a = tokens.semantic,
|
|
|
15
15
|
var StyledCodeBlock = /*#__PURE__*/styled.pre.withConfig({
|
|
16
16
|
displayName: "CodeBlock__StyledCodeBlock",
|
|
17
17
|
componentId: "sc-1p1t0kp-0"
|
|
18
|
-
})(templateObject_1 || (templateObject_1 = __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
|
|
18
|
+
})(templateObject_1 || (templateObject_1 = __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["default"], tokens.semantic.radius.sm, tokens.semantic.space[300], tokens.component.codeBlock.fontFamily, tokens.component.codeBlock.fontSize, tokens.component.codeBlock.lineHeight, color.text["default"], function (_a) {
|
|
19
19
|
var $isExpanded = _a.$isExpanded,
|
|
20
20
|
$needsExpansion = _a.$needsExpansion;
|
|
21
21
|
return $needsExpansion && !$isExpanded ? 'hidden' : 'auto';
|
|
@@ -66,7 +66,7 @@ var DropdownMenu = /*#__PURE__*/styled.div.withConfig({
|
|
|
66
66
|
},
|
|
67
67
|
displayName: "Dropdown__DropdownMenu",
|
|
68
68
|
componentId: "sc-kz07c4-3"
|
|
69
|
-
})(templateObject_4 || (templateObject_4 = __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["default"].backgroundColor, border
|
|
69
|
+
})(templateObject_4 || (templateObject_4 = __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["default"].backgroundColor, border["default"], input["default"].borderRadius, elevation.floating, space[100], function (_a) {
|
|
70
70
|
var $isOpen = _a.$isOpen;
|
|
71
71
|
return $isOpen ? 1 : 0;
|
|
72
72
|
}, function (_a) {
|
|
@@ -89,7 +89,7 @@ var DropdownOption = /*#__PURE__*/styled.button.withConfig({
|
|
|
89
89
|
selected: $isSelected,
|
|
90
90
|
focused: $isFocused
|
|
91
91
|
});
|
|
92
|
-
}, border
|
|
92
|
+
}, border["default"]);
|
|
93
93
|
var StyledHelperText = /*#__PURE__*/styled.div.withConfig({
|
|
94
94
|
displayName: "Dropdown__StyledHelperText",
|
|
95
95
|
componentId: "sc-kz07c4-5"
|
|
@@ -5,16 +5,18 @@ import styled$module from 'styled-components';
|
|
|
5
5
|
const styled = styled$module.default || styled$module;
|
|
6
6
|
import tokens from '../../../lib/cssTokens.mjs';
|
|
7
7
|
import { Icon } from '../../atoms/Icon/Icon.mjs';
|
|
8
|
+
import { StatusShape } from '../../atoms/StatusLabel/StatusShape.mjs';
|
|
8
9
|
|
|
9
10
|
var semantic = tokens.semantic;
|
|
10
11
|
var color = semantic.color,
|
|
11
12
|
typography = semantic.typography,
|
|
12
13
|
size = semantic.size;
|
|
14
|
+
// Each severity's status icon and, at the small size, its shape (decision 0045)
|
|
13
15
|
var variantIcons = {
|
|
14
|
-
error: '
|
|
15
|
-
warning: '
|
|
16
|
-
info: '
|
|
17
|
-
success: '
|
|
16
|
+
error: 'statusError',
|
|
17
|
+
warning: 'statusWarning',
|
|
18
|
+
info: 'statusInfo',
|
|
19
|
+
success: 'statusSuccess'
|
|
18
20
|
};
|
|
19
21
|
var variantTextColors = {
|
|
20
22
|
error: color.text.danger,
|
|
@@ -22,6 +24,12 @@ var variantTextColors = {
|
|
|
22
24
|
info: color.text.accent,
|
|
23
25
|
success: color.text.success
|
|
24
26
|
};
|
|
27
|
+
var variantShapes = {
|
|
28
|
+
error: 'error',
|
|
29
|
+
warning: 'warning',
|
|
30
|
+
info: 'info',
|
|
31
|
+
success: 'success'
|
|
32
|
+
};
|
|
25
33
|
var sizeConfig = {
|
|
26
34
|
small: {
|
|
27
35
|
font: typography.caption,
|
|
@@ -122,7 +130,9 @@ var InlineAlert = function InlineAlert(_a) {
|
|
|
122
130
|
children: hasMessage && jsxs(Fragment, {
|
|
123
131
|
children: [jsx(StyledIconLine, {
|
|
124
132
|
"aria-hidden": "true",
|
|
125
|
-
children: jsx(
|
|
133
|
+
children: alertSize === 'small' ? jsx(StatusShape, {
|
|
134
|
+
shape: variantShapes[variant]
|
|
135
|
+
}) : jsx(Icon, {
|
|
126
136
|
name: variantIcons[variant],
|
|
127
137
|
size: sizeConfig[alertSize].icon,
|
|
128
138
|
iconColor: "inherit"
|
|
@@ -11,7 +11,7 @@ var semantic = tokens.semantic;
|
|
|
11
11
|
var StyledTabList = /*#__PURE__*/styled.div.withConfig({
|
|
12
12
|
displayName: "TabBar__StyledTabList",
|
|
13
13
|
componentId: "sc-1g9ib0y-0"
|
|
14
|
-
})(templateObject_1 || (templateObject_1 = __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
|
|
14
|
+
})(templateObject_1 || (templateObject_1 = __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);
|
|
15
15
|
var StyledTab = /*#__PURE__*/styled.button.withConfig({
|
|
16
16
|
shouldForwardProp: function shouldForwardProp(prop) {
|
|
17
17
|
return !prop.startsWith('$');
|
|
@@ -31,11 +31,11 @@ var StyledTab = /*#__PURE__*/styled.button.withConfig({
|
|
|
31
31
|
}, function (props) {
|
|
32
32
|
return props.$isActive ? semantic.color.fill['accent-muted-hover'] : 'transparent';
|
|
33
33
|
}, function (props) {
|
|
34
|
-
return props.$isActive ? semantic.color.text
|
|
34
|
+
return props.$isActive ? semantic.color.text.accent : semantic.color.text["default"];
|
|
35
35
|
}, function (props) {
|
|
36
36
|
return props.$isActive ? semantic.color.fill['accent-muted-pressed'] : 'transparent';
|
|
37
37
|
}, function (props) {
|
|
38
|
-
return props.$isActive ? semantic.color.text
|
|
38
|
+
return props.$isActive ? semantic.color.text.accent : semantic.color.text["default"];
|
|
39
39
|
}, function (props) {
|
|
40
40
|
return props.$disabled ? '0.5' : '1';
|
|
41
41
|
}, semantic.border.focus, semantic.border.focusOffset);
|
|
@@ -34,6 +34,6 @@ export interface TransactionListItemProps {
|
|
|
34
34
|
* status, and optional metadata (category, receipt, notes). Minimum height 72px
|
|
35
35
|
* with interactive states for clickable items.
|
|
36
36
|
*
|
|
37
|
-
* Composes: Avatar,
|
|
37
|
+
* Composes: Avatar, CategoryLabel, StatusLabel, MoneyDisplay, Icon, DateFormatter, Typography, Stack
|
|
38
38
|
*/
|
|
39
39
|
export declare const TransactionListItem: React.FC<TransactionListItemProps>;
|
|
@@ -34,6 +34,6 @@ export interface TransactionListItemProps {
|
|
|
34
34
|
* status, and optional metadata (category, receipt, notes). Minimum height 72px
|
|
35
35
|
* with interactive states for clickable items.
|
|
36
36
|
*
|
|
37
|
-
* Composes: Avatar,
|
|
37
|
+
* Composes: Avatar, CategoryLabel, StatusLabel, MoneyDisplay, Icon, DateFormatter, Typography, Stack
|
|
38
38
|
*/
|
|
39
39
|
export declare const TransactionListItem: React.FC<TransactionListItemProps>;
|
|
@@ -4,7 +4,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
|
|
|
4
4
|
import styled$module from 'styled-components';
|
|
5
5
|
const styled = styled$module.default || styled$module;
|
|
6
6
|
import { Avatar } from '../../atoms/Avatar/Avatar.mjs';
|
|
7
|
-
import {
|
|
7
|
+
import { StatusLabel } from '../../atoms/StatusLabel/StatusLabel.mjs';
|
|
8
8
|
import { CategoryLabel } from '../../atoms/CategoryLabel/CategoryLabel.mjs';
|
|
9
9
|
import { MoneyDisplay } from '../../atoms/MoneyDisplay/MoneyDisplay.mjs';
|
|
10
10
|
import { Icon } from '../../atoms/Icon/Icon.mjs';
|
|
@@ -56,28 +56,30 @@ var StyledTruncatedText = /*#__PURE__*/styled.span.withConfig({
|
|
|
56
56
|
])));
|
|
57
57
|
// Map categories to CategoryLabel configurations
|
|
58
58
|
var categoryConfig = {
|
|
59
|
+
// Display colours carry no meaning (decision 0043); five coloured categories share four colours,
|
|
60
|
+
// so the icon and label tell dining and bills apart
|
|
59
61
|
shopping: {
|
|
60
|
-
color: '
|
|
62
|
+
color: 'magenta',
|
|
61
63
|
icon: 'paper',
|
|
62
64
|
label: 'Shopping'
|
|
63
65
|
},
|
|
64
66
|
dining: {
|
|
65
|
-
color: '
|
|
67
|
+
color: 'rose',
|
|
66
68
|
icon: 'paper',
|
|
67
69
|
label: 'Dining'
|
|
68
70
|
},
|
|
69
71
|
transport: {
|
|
70
|
-
color: '
|
|
72
|
+
color: 'periwinkle',
|
|
71
73
|
icon: 'paper',
|
|
72
74
|
label: 'Transport'
|
|
73
75
|
},
|
|
74
76
|
entertainment: {
|
|
75
|
-
color: '
|
|
77
|
+
color: 'olive',
|
|
76
78
|
icon: 'star',
|
|
77
79
|
label: 'Entertainment'
|
|
78
80
|
},
|
|
79
81
|
bills: {
|
|
80
|
-
color: '
|
|
82
|
+
color: 'rose',
|
|
81
83
|
icon: 'paper',
|
|
82
84
|
label: 'Bills'
|
|
83
85
|
},
|
|
@@ -87,12 +89,6 @@ var categoryConfig = {
|
|
|
87
89
|
label: 'Other'
|
|
88
90
|
}
|
|
89
91
|
};
|
|
90
|
-
// Map status to badge variant
|
|
91
|
-
var statusToBadgeVariant = {
|
|
92
|
-
completed: 'success',
|
|
93
|
-
pending: 'warning',
|
|
94
|
-
failed: 'error'
|
|
95
|
-
};
|
|
96
92
|
/**
|
|
97
93
|
* TransactionListItem component
|
|
98
94
|
*
|
|
@@ -100,7 +96,7 @@ var statusToBadgeVariant = {
|
|
|
100
96
|
* status, and optional metadata (category, receipt, notes). Minimum height 72px
|
|
101
97
|
* with interactive states for clickable items.
|
|
102
98
|
*
|
|
103
|
-
* Composes: Avatar,
|
|
99
|
+
* Composes: Avatar, CategoryLabel, StatusLabel, MoneyDisplay, Icon, DateFormatter, Typography, Stack
|
|
104
100
|
*/
|
|
105
101
|
var TransactionListItem = function TransactionListItem(_a) {
|
|
106
102
|
var merchant = _a.merchant,
|
|
@@ -124,8 +120,6 @@ var TransactionListItem = function TransactionListItem(_a) {
|
|
|
124
120
|
var amountVariant = amount > 0 ? 'positive' : amount < 0 ? 'negative' : 'default';
|
|
125
121
|
// Get category configuration
|
|
126
122
|
var categoryData = category ? categoryConfig[category] : undefined;
|
|
127
|
-
// Get badge variant from status
|
|
128
|
-
var badgeVariant = statusToBadgeVariant[status];
|
|
129
123
|
var handleClick = function handleClick() {
|
|
130
124
|
if (isClickable && onClick) {
|
|
131
125
|
onClick();
|
|
@@ -143,19 +137,10 @@ var TransactionListItem = function TransactionListItem(_a) {
|
|
|
143
137
|
onKeyDown: handleKeyDown,
|
|
144
138
|
tabIndex: isClickable ? 0 : undefined,
|
|
145
139
|
role: isClickable ? 'button' : undefined,
|
|
146
|
-
"aria-label": isClickable ? "".concat(merchant, " transaction, ").concat(amount < 0 ? 'expense' : 'income', " of ").concat(Math.abs(amount)) : undefined,
|
|
140
|
+
"aria-label": isClickable ? "".concat(merchant, " transaction, ").concat(amount < 0 ? 'expense' : 'income', " of ").concat(Math.abs(amount)).concat(status === 'completed' ? '' : ", ".concat(status)) : undefined,
|
|
147
141
|
"data-testid": dataTestId,
|
|
148
142
|
children: [jsx(StyledAvatarSection, {
|
|
149
|
-
children:
|
|
150
|
-
variant: badgeVariant,
|
|
151
|
-
dot: true,
|
|
152
|
-
"aria-label": "Pending transaction",
|
|
153
|
-
children: jsx(Avatar, {
|
|
154
|
-
name: merchant,
|
|
155
|
-
picture: merchantLogo,
|
|
156
|
-
size: "md"
|
|
157
|
-
})
|
|
158
|
-
}) : jsx(Avatar, {
|
|
143
|
+
children: jsx(Avatar, {
|
|
159
144
|
name: merchant,
|
|
160
145
|
picture: merchantLogo,
|
|
161
146
|
size: "md"
|
|
@@ -175,11 +160,10 @@ var TransactionListItem = function TransactionListItem(_a) {
|
|
|
175
160
|
variant: "minimal",
|
|
176
161
|
"aria-label": "Category: ".concat(categoryData.label),
|
|
177
162
|
children: categoryData.label
|
|
178
|
-
}), status
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
children: jsx("span", {})
|
|
163
|
+
}), status !== 'completed' && jsx(StatusLabel, {
|
|
164
|
+
status: status,
|
|
165
|
+
size: "small",
|
|
166
|
+
liveRegion: false
|
|
183
167
|
})]
|
|
184
168
|
}), jsx(MoneyDisplay, {
|
|
185
169
|
amount: amount,
|