asma-ui-core 3.81.5 → 3.82.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/asma-ui-core.css +1 -1
- package/dist/components/custom/page/page-header/PageHeader.js +72 -69
- package/dist/components/data-display/badge/StyledBadge.js +44 -23
- package/dist/src/components/data-display/badge/StyledBadge.d.ts +10 -6
- package/package.json +1 -1
- package/src/styles/color-variables/rootVariables.css +8 -0
|
@@ -1,103 +1,106 @@
|
|
|
1
1
|
import { cn as m } from "../../../../helpers/cn.js";
|
|
2
|
-
import {
|
|
2
|
+
import { StyledBadge as le } from "../../../data-display/badge/StyledBadge.js";
|
|
3
|
+
import { HamburgerIcon as oe } from "../../../icons/hamburger-icon/HamburgerIcon.js";
|
|
3
4
|
import { ArrowLeftIcon as ie } from "../../../icons/arrow-left-icon/ArrowLeftIcon.js";
|
|
4
|
-
import { StyledButton as
|
|
5
|
-
import { useElementWidthPx as
|
|
5
|
+
import { StyledButton as _ } from "../../../inputs/button/StyledButton.js";
|
|
6
|
+
import { useElementWidthPx as se } from "../../../../hooks/useElementWidthPx.js";
|
|
6
7
|
import { useWidthRegistry as re } from "../../../../hooks/useWidthRegistry.js";
|
|
7
|
-
import { planToolbarActions as
|
|
8
|
-
import { ToolbarActionButton as
|
|
9
|
-
import { useToolbarTranslations as
|
|
10
|
-
import { KEY_MORE_BUTTON as
|
|
11
|
-
import { useIsTitleClamped as
|
|
12
|
-
import { useMemo as G, useRef as
|
|
13
|
-
import { Fragment as
|
|
14
|
-
import { useMergeRefs as
|
|
15
|
-
var
|
|
16
|
-
const { badgeCount:
|
|
17
|
-
...
|
|
18
|
-
canHideLabel:
|
|
8
|
+
import { planToolbarActions as ce } from "../../module/header-layout/planToolbarActions.js";
|
|
9
|
+
import { ToolbarActionButton as de, ToolbarActionGroup as me } from "../../module/header-layout/ToolbarActionGroup.js";
|
|
10
|
+
import { useToolbarTranslations as ue } from "../../module/header-layout/useTranslations.js";
|
|
11
|
+
import { KEY_MORE_BUTTON as he, ToolbarMeasurementStrip as fe, actionKey as z } from "../../module/header-layout/ToolbarMeasurement.js";
|
|
12
|
+
import { useIsTitleClamped as pe, useSearchFocus as xe, useStickyScrollPadding as ge, useStuckOnScroll as be } from "./PageHeader.hooks.js";
|
|
13
|
+
import { useMemo as G, useRef as E } from "react";
|
|
14
|
+
import { Fragment as ve, jsx as e, jsxs as s } from "react/jsx-runtime";
|
|
15
|
+
import { useMergeRefs as we } from "@floating-ui/react";
|
|
16
|
+
var Ne = 744, Te = 8, Ae = 32, Le = 120, Me = (t) => {
|
|
17
|
+
const { badgeCount: r, ...o } = t, a = {
|
|
18
|
+
...o,
|
|
19
|
+
canHideLabel: o.icon != null && o.canHideLabel !== !1
|
|
19
20
|
};
|
|
20
|
-
if (
|
|
21
|
-
const
|
|
21
|
+
if (r == null || a.render) return a;
|
|
22
|
+
const l = `${a.label} (${r})`;
|
|
22
23
|
return {
|
|
23
24
|
...a,
|
|
24
|
-
label:
|
|
25
|
-
ariaLabel:
|
|
26
|
-
render: ({ showLabel: u }) => /* @__PURE__ */
|
|
27
|
-
|
|
28
|
-
|
|
25
|
+
label: l,
|
|
26
|
+
ariaLabel: l,
|
|
27
|
+
render: ({ showLabel: u }) => /* @__PURE__ */ e(le, {
|
|
28
|
+
dataTest: `${a.dataTest ?? `page-header-action-${a.id}`}-badge`,
|
|
29
|
+
badgeContent: r,
|
|
30
|
+
statusMessage: l,
|
|
31
|
+
slotProps: { badge: { style: {
|
|
32
|
+
right: -8,
|
|
33
|
+
top: -4,
|
|
34
|
+
transform: "none"
|
|
35
|
+
} } },
|
|
36
|
+
children: /* @__PURE__ */ e(de, {
|
|
29
37
|
action: {
|
|
30
38
|
...a,
|
|
31
|
-
ariaLabel:
|
|
39
|
+
ariaLabel: l
|
|
32
40
|
},
|
|
33
41
|
showLabel: u
|
|
34
|
-
})
|
|
35
|
-
"aria-hidden": !0,
|
|
36
|
-
className: "absolute -right-2 -top-1 flex h-5 min-w-[20px] items-center justify-center rounded-full border border-solid border-lime-500 bg-lime-300 px-1.5 text-sm font-semibold leading-5 text-gama-800",
|
|
37
|
-
"data-testid": `${a.dataTest ?? `page-header-action-${a.id}`}-badge`,
|
|
38
|
-
children: s
|
|
39
|
-
})]
|
|
42
|
+
})
|
|
40
43
|
})
|
|
41
44
|
};
|
|
42
45
|
};
|
|
43
|
-
function
|
|
44
|
-
return /* @__PURE__ */
|
|
46
|
+
function Pe({ compact: t }) {
|
|
47
|
+
return /* @__PURE__ */ s("div", {
|
|
45
48
|
className: "flex w-full min-w-0 items-center justify-between gap-2",
|
|
46
49
|
"aria-hidden": !0,
|
|
47
50
|
children: [/* @__PURE__ */ e("div", { className: m("animate-pulse rounded bg-delta-100", t ? "h-6 w-3/5" : "h-8 w-2/5 max-w-[500px]") }), /* @__PURE__ */ e("div", { className: "h-10 w-14 shrink-0 animate-pulse rounded bg-delta-100" })]
|
|
48
51
|
});
|
|
49
52
|
}
|
|
50
|
-
function
|
|
51
|
-
const c =
|
|
52
|
-
|
|
53
|
+
function Ye({ title: t, titleAs: r = "h1", titleDataTest: o, titleRef: a, subtitle: l, status: u, leading: h, onLeadingClick: I, leadingLabel: X, leadingSlot: W, actions: k = [], search: w, searchOpen: y = !1, onSearchClose: Y, searchCloseLabel: F, loading: f = !1, sticky: p = !1, locale: D = "en", className: U, dataTest: x = "page-header" }) {
|
|
54
|
+
const c = ue(D), { ref: S, widthPx: N } = se(), { register: g, widths: i } = re(), T = E(null), C = E(null), B = E(null), n = N > 0 && N < Ne, V = we([T, a]), A = y && w != null, b = f || A;
|
|
55
|
+
xe(w != null, y, B, T);
|
|
53
56
|
const v = be(p, C);
|
|
54
|
-
|
|
55
|
-
const Z =
|
|
57
|
+
ge(p, S);
|
|
58
|
+
const Z = pe(T, t, !b), L = G(() => k.filter((d) => !d.hidden).map(Me), [k]), $ = Math.max(0, N - Ae), H = h != null || W != null, M = u != null, q = H ? i["slot:leading"] ?? 0 : 0, J = M ? i["slot:status"] ?? 0 : 0, Q = i.title ?? 0, ee = Math.max(Le, Math.min(Q, Math.floor($ * 0.5))), te = 1 + (H ? 1 : 0) + (M ? 1 : 0), K = Math.max(0, $ - q - J - ee - Te * te), ae = G(() => ce({
|
|
56
59
|
actions: L,
|
|
57
60
|
availableWidth: K,
|
|
58
61
|
collapseLabels: !0,
|
|
59
|
-
resolveActionWidth: (d,
|
|
60
|
-
moreButtonWidthPx:
|
|
62
|
+
resolveActionWidth: (d, R) => i[z(d.id, R)],
|
|
63
|
+
moreButtonWidthPx: i[he]
|
|
61
64
|
}), [
|
|
62
65
|
L,
|
|
63
66
|
K,
|
|
64
|
-
|
|
65
|
-
]),
|
|
67
|
+
i
|
|
68
|
+
]), P = X ?? (h === "menu" ? c.menu : c.back), O = W ?? (h === "menu" ? /* @__PURE__ */ e(_, {
|
|
66
69
|
dataTest: `${x}-menu`,
|
|
67
70
|
variant: "text",
|
|
68
71
|
size: "large",
|
|
69
|
-
onClick:
|
|
70
|
-
"aria-label":
|
|
71
|
-
startIcon: /* @__PURE__ */ e(
|
|
72
|
+
onClick: I,
|
|
73
|
+
"aria-label": P,
|
|
74
|
+
startIcon: /* @__PURE__ */ e(oe, {
|
|
72
75
|
width: 24,
|
|
73
76
|
height: 24
|
|
74
77
|
})
|
|
75
|
-
}) : h === "back" ? /* @__PURE__ */ e(
|
|
78
|
+
}) : h === "back" ? /* @__PURE__ */ e(_, {
|
|
76
79
|
dataTest: `${x}-back`,
|
|
77
80
|
variant: n ? "text" : "outlined",
|
|
78
81
|
size: "large",
|
|
79
|
-
onClick:
|
|
80
|
-
"aria-label": n ?
|
|
82
|
+
onClick: I,
|
|
83
|
+
"aria-label": n ? P : void 0,
|
|
81
84
|
startIcon: /* @__PURE__ */ e(ie, {
|
|
82
85
|
width: n ? 24 : 20,
|
|
83
86
|
height: n ? 24 : 20
|
|
84
87
|
}),
|
|
85
|
-
children: n ? void 0 :
|
|
86
|
-
}) : null), j = n || v, ne = t === "" ? null : /* @__PURE__ */ e(
|
|
88
|
+
children: n ? void 0 : P
|
|
89
|
+
}) : null), j = n || v, ne = t === "" ? null : /* @__PURE__ */ e(r, {
|
|
87
90
|
ref: V,
|
|
88
91
|
tabIndex: -1,
|
|
89
|
-
"data-test":
|
|
90
|
-
"data-testid":
|
|
92
|
+
"data-test": o,
|
|
93
|
+
"data-testid": o,
|
|
91
94
|
title: Z ? t : void 0,
|
|
92
95
|
className: m("m-0 line-clamp-2 min-w-0 break-words font-semibold text-delta-800 outline-none", j ? "text-xl leading-7" : "text-2xl leading-8"),
|
|
93
96
|
children: t
|
|
94
97
|
});
|
|
95
|
-
return /* @__PURE__ */
|
|
98
|
+
return /* @__PURE__ */ s(ve, { children: [p && /* @__PURE__ */ e("div", {
|
|
96
99
|
ref: C,
|
|
97
100
|
"aria-hidden": !0,
|
|
98
101
|
className: "h-px w-full",
|
|
99
102
|
style: { marginBottom: -1 }
|
|
100
|
-
}), /* @__PURE__ */
|
|
103
|
+
}), /* @__PURE__ */ s("div", {
|
|
101
104
|
ref: S,
|
|
102
105
|
"data-testid": x,
|
|
103
106
|
"data-compact": n ? "true" : "false",
|
|
@@ -105,40 +108,40 @@ function Ge({ title: t, titleAs: s = "h1", titleDataTest: i, titleRef: a, subtit
|
|
|
105
108
|
"aria-busy": f || void 0,
|
|
106
109
|
className: m("flex w-full items-center gap-2 px-4", v ? "min-h-[56px] py-2 shadow-sm" : "min-h-[64px] py-3", p && "sticky top-0 z-30 bg-delta-50", U),
|
|
107
110
|
children: [
|
|
108
|
-
/* @__PURE__ */ e(
|
|
111
|
+
/* @__PURE__ */ e(fe, {
|
|
109
112
|
actions: L,
|
|
110
|
-
register:
|
|
113
|
+
register: g,
|
|
111
114
|
overflowMenuLabel: c.more,
|
|
112
115
|
title: t,
|
|
113
116
|
titleClassName: m("font-semibold", j ? "text-xl leading-7" : "text-2xl leading-8")
|
|
114
117
|
}),
|
|
115
118
|
O != null && /* @__PURE__ */ e("span", {
|
|
116
|
-
ref:
|
|
119
|
+
ref: g("slot:leading"),
|
|
117
120
|
className: "inline-flex shrink-0",
|
|
118
121
|
children: O
|
|
119
122
|
}),
|
|
120
|
-
/* @__PURE__ */
|
|
121
|
-
className: m(
|
|
122
|
-
children: [/* @__PURE__ */
|
|
123
|
+
/* @__PURE__ */ s("div", {
|
|
124
|
+
className: m(b ? "sr-only" : "flex min-w-0 flex-1 flex-col justify-center"),
|
|
125
|
+
children: [/* @__PURE__ */ s("div", {
|
|
123
126
|
className: "flex min-w-0 items-center gap-2",
|
|
124
|
-
children: [ne, M && !
|
|
125
|
-
ref:
|
|
127
|
+
children: [ne, M && !b && /* @__PURE__ */ e("span", {
|
|
128
|
+
ref: g("slot:status"),
|
|
126
129
|
className: "inline-flex shrink-0 items-center",
|
|
127
130
|
children: u
|
|
128
131
|
})]
|
|
129
|
-
}), !
|
|
132
|
+
}), !b && l != null && !v && /* @__PURE__ */ e("div", {
|
|
130
133
|
className: "mt-0.5 min-w-0 text-sm text-delta-700",
|
|
131
|
-
children:
|
|
134
|
+
children: l
|
|
132
135
|
})]
|
|
133
136
|
}),
|
|
134
|
-
f && /* @__PURE__ */ e(
|
|
135
|
-
A && /* @__PURE__ */
|
|
136
|
-
ref:
|
|
137
|
+
f && /* @__PURE__ */ e(Pe, { compact: n }),
|
|
138
|
+
A && /* @__PURE__ */ s("div", {
|
|
139
|
+
ref: B,
|
|
137
140
|
className: "flex w-full min-w-0 items-center gap-2",
|
|
138
141
|
children: [/* @__PURE__ */ e("div", {
|
|
139
142
|
className: "min-w-0 flex-1",
|
|
140
143
|
children: w
|
|
141
|
-
}), /* @__PURE__ */ e(
|
|
144
|
+
}), /* @__PURE__ */ e(_, {
|
|
142
145
|
dataTest: `${x}-search-close`,
|
|
143
146
|
variant: "text",
|
|
144
147
|
size: "large",
|
|
@@ -146,14 +149,14 @@ function Ge({ title: t, titleAs: s = "h1", titleDataTest: i, titleRef: a, subtit
|
|
|
146
149
|
children: F ?? c.close
|
|
147
150
|
})]
|
|
148
151
|
}),
|
|
149
|
-
!f && !A && /* @__PURE__ */ e(
|
|
152
|
+
!f && !A && /* @__PURE__ */ e(me, {
|
|
150
153
|
plan: ae,
|
|
151
154
|
overflowMenuLabel: c.more,
|
|
152
|
-
registerActionWidth: (d,
|
|
155
|
+
registerActionWidth: (d, R) => g(z(d, R))
|
|
153
156
|
})
|
|
154
157
|
]
|
|
155
158
|
})] });
|
|
156
159
|
}
|
|
157
160
|
export {
|
|
158
|
-
|
|
161
|
+
Ye as PageHeader
|
|
159
162
|
};
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { resolveSx as
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
|
|
1
|
+
import { resolveSx as p } from "../../../helpers/sx.js";
|
|
2
|
+
import E from "clsx";
|
|
3
|
+
import { useEffect as L, useRef as u } from "react";
|
|
4
|
+
import { jsx as m, jsxs as D } from "react/jsx-runtime";
|
|
5
|
+
var b = {
|
|
5
6
|
primary: {
|
|
6
|
-
backgroundColor: "var(--colors-
|
|
7
|
-
color: "
|
|
7
|
+
backgroundColor: "var(--colors-badge-background)",
|
|
8
|
+
color: "var(--colors-badge-label)"
|
|
8
9
|
},
|
|
9
10
|
default: {
|
|
10
11
|
backgroundColor: "var(--colors-delta-200)",
|
|
@@ -30,29 +31,49 @@ var c = {
|
|
|
30
31
|
backgroundColor: "var(--colors-warning-700)",
|
|
31
32
|
color: "#fff"
|
|
32
33
|
}
|
|
33
|
-
},
|
|
34
|
+
}, $ = {
|
|
34
35
|
"top-right": "top-0 right-0 translate-x-1/2 -translate-y-1/2 origin-[100%_0%]",
|
|
35
36
|
"top-left": "top-0 left-0 -translate-x-1/2 -translate-y-1/2 origin-[0%_0%]",
|
|
36
37
|
"bottom-right": "bottom-0 right-0 translate-x-1/2 translate-y-1/2 origin-[100%_100%]",
|
|
37
38
|
"bottom-left": "bottom-0 left-0 -translate-x-1/2 translate-y-1/2 origin-[0%_100%]"
|
|
38
|
-
},
|
|
39
|
-
const
|
|
40
|
-
|
|
39
|
+
}, x = "& .MuiBadge-badge", J = ({ color: l = "primary", dataTest: v, size: s = "medium", badgeContent: r, max: z, showZero: I, variant: y = "standard", statusMessage: n, invisible: g, anchorOrigin: c, children: h, className: _, sx: t, overlap: T, classes: Z, slots: G, slotProps: i, component: H, tabIndex: W, ...S }) => {
|
|
40
|
+
const a = u(null), e = typeof r == "number" ? r : void 0, d = u(e);
|
|
41
|
+
L(() => {
|
|
42
|
+
e !== d.current && (d.current = e, a.current && (a.current.textContent = n ?? ""));
|
|
43
|
+
}, [e, n]);
|
|
44
|
+
const f = t && typeof t == "object" && !Array.isArray(t) ? t : {}, w = p(f[x]), k = p(Object.fromEntries(Object.entries(f).filter(([B]) => B !== x))), o = y === "dot", j = !!g || !o && (r === 0 || r === void 0 || r === null), O = o ? null : typeof r == "number" && r > 99 ? "99+" : r, A = typeof r == "number" && r > 0 && r < 10, C = c?.vertical ?? "top", N = c?.horizontal ?? "right", R = l === "primary" ? {
|
|
45
|
+
borderColor: o ? "var(--colors-badge-border-dot)" : "var(--colors-badge-border-count)",
|
|
46
|
+
borderStyle: "solid",
|
|
47
|
+
borderWidth: o ? "var(--border-badge-dot)" : "var(--border-badge-count)"
|
|
48
|
+
} : {};
|
|
49
|
+
return /* @__PURE__ */ D("span", {
|
|
41
50
|
className: "relative inline-flex shrink-0 align-middle",
|
|
42
|
-
"data-testid":
|
|
43
|
-
style:
|
|
44
|
-
...
|
|
45
|
-
children: [
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
"data-testid": v,
|
|
52
|
+
style: k,
|
|
53
|
+
...S,
|
|
54
|
+
children: [
|
|
55
|
+
h,
|
|
56
|
+
!j && /* @__PURE__ */ m("span", {
|
|
57
|
+
"aria-hidden": "true",
|
|
58
|
+
className: E("absolute z-[1] box-border flex items-center justify-center whitespace-nowrap font-roboto font-semibold", $[`${C}-${N}`], o ? "h-[12px] w-[12px] min-w-[12px] rounded-full p-0" : s === "small" ? "h-[16px] w-max min-w-[16px] rounded-[20px] px-[4px] text-[0.75rem]" : "h-[20px] min-w-[20px] rounded-[20px] px-[6px] text-sm leading-5", !o && s === "medium" && A && "w-[20px]", _, i?.badge?.className),
|
|
59
|
+
style: {
|
|
60
|
+
...b[l] ?? b.default,
|
|
61
|
+
...R,
|
|
62
|
+
...w,
|
|
63
|
+
...i?.badge?.style
|
|
64
|
+
},
|
|
65
|
+
children: O
|
|
66
|
+
}),
|
|
67
|
+
/* @__PURE__ */ m("span", {
|
|
68
|
+
ref: a,
|
|
69
|
+
"aria-atomic": "true",
|
|
70
|
+
"aria-live": "polite",
|
|
71
|
+
className: "sr-only",
|
|
72
|
+
role: "status"
|
|
73
|
+
})
|
|
74
|
+
]
|
|
54
75
|
});
|
|
55
76
|
};
|
|
56
77
|
export {
|
|
57
|
-
|
|
78
|
+
J as StyledBadge
|
|
58
79
|
};
|
|
@@ -2,19 +2,23 @@ import { CSSProperties, ElementType, HTMLAttributes, ReactNode } from 'react';
|
|
|
2
2
|
type StyledBadgeSize = 'medium' | 'small';
|
|
3
3
|
/**
|
|
4
4
|
* @figmaNode wXrXt5uKNNzV2DnQCgyYZH#15181-43817
|
|
5
|
-
* Figma "Badge".
|
|
6
|
-
* `dot`
|
|
7
|
-
*
|
|
5
|
+
* Figma "Badge". Notification count = 20px lime pill with a 1px border and Helper-Semibold 14/20;
|
|
6
|
+
* `dot` = 12px lime circle with a stronger 2px border. Other colors and `small` are legacy app
|
|
7
|
+
* extensions with no matching Figma notification variant.
|
|
8
8
|
*/
|
|
9
9
|
interface BadgeProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'color'> {
|
|
10
10
|
/** @figmaProp Badge content (the number/label) */
|
|
11
11
|
badgeContent?: ReactNode;
|
|
12
|
-
/** @figmaProp Type/colour = primary→
|
|
12
|
+
/** @figmaProp Type/colour = primary→notification badge | others = legacy app extensions */
|
|
13
13
|
color?: string;
|
|
14
|
+
/** @deprecated Notification badges always cap at 99. */
|
|
14
15
|
max?: number;
|
|
16
|
+
/** @deprecated A zero notification count is always omitted. */
|
|
15
17
|
showZero?: boolean;
|
|
16
|
-
/** @figmaProp
|
|
18
|
+
/** @figmaProp Size = dot→"Dot" (12px) | standard→"Default" count badge */
|
|
17
19
|
variant?: 'standard' | 'dot';
|
|
20
|
+
/** Polite live-update text. Keep this contextual and include the real, uncapped count. */
|
|
21
|
+
statusMessage?: string;
|
|
18
22
|
invisible?: boolean;
|
|
19
23
|
anchorOrigin?: {
|
|
20
24
|
vertical: 'top' | 'bottom';
|
|
@@ -42,5 +46,5 @@ type StyledBadgeProps = BadgeProps & {
|
|
|
42
46
|
* The established styling API `sx={{ '& .MuiBadge-badge': {...} }}` is preserved by extracting that
|
|
43
47
|
* slot and applying `resolveSx` to the badge span (DEC-007 slot-sx). Signature unchanged (DEC-003).
|
|
44
48
|
*/
|
|
45
|
-
export declare const StyledBadge: ({ color, dataTest, size, badgeContent, max, showZero, variant, invisible, anchorOrigin, children, className, sx, overlap: _overlap, classes: _classes, slots: _slots, slotProps, component: _component, ...props }: StyledBadgeProps) => JSX.Element;
|
|
49
|
+
export declare const StyledBadge: ({ color, dataTest, size, badgeContent, max: _max, showZero: _showZero, variant, statusMessage, invisible, anchorOrigin, children, className, sx, overlap: _overlap, classes: _classes, slots: _slots, slotProps, component: _component, tabIndex: _tabIndex, ...props }: StyledBadgeProps) => JSX.Element;
|
|
46
50
|
export {};
|
package/package.json
CHANGED
|
@@ -85,6 +85,14 @@
|
|
|
85
85
|
--colors-lime-500: #beda2f;
|
|
86
86
|
--colors-lime-700: #8ba01d;
|
|
87
87
|
|
|
88
|
+
/* Figma Badge semantic tokens are shared by all three ASMA themes. */
|
|
89
|
+
--colors-badge-background: #d9f256;
|
|
90
|
+
--colors-badge-label: #404d00;
|
|
91
|
+
--colors-badge-border-count: #a2c200;
|
|
92
|
+
--colors-badge-border-dot: #778f00;
|
|
93
|
+
--border-badge-count: 1px;
|
|
94
|
+
--border-badge-dot: 2px;
|
|
95
|
+
|
|
88
96
|
--colors-success-50: #e9fbf0;
|
|
89
97
|
--colors-success-100: #d3f8e1;
|
|
90
98
|
--colors-success-300: #a1ebbd;
|