@lerianstudio/sindarian-ui 1.4.0-beta.7 → 2.0.0-beta.1
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/components/card/account-card/index.d.ts.map +1 -1
- package/dist/components/card/account-card/index.js +1 -1
- package/dist/components/card/entity-card/index.js +3 -3
- package/dist/components/dialog/confirmation-dialog/index.d.ts +36 -5
- package/dist/components/dialog/confirmation-dialog/index.d.ts.map +1 -1
- package/dist/components/dialog/confirmation-dialog/index.js +2 -2
- package/dist/components/entity-box/index.js +1 -1
- package/dist/components/entity-data-table/index.d.ts.map +1 -1
- package/dist/components/entity-data-table/index.js +1 -1
- package/dist/components/page-header/index.d.ts.map +1 -1
- package/dist/components/page-header/index.js +2 -2
- package/dist/components/ui/autocomplete/index.d.ts +34 -6
- package/dist/components/ui/autocomplete/index.d.ts.map +1 -1
- package/dist/components/ui/autocomplete/index.js +72 -16
- package/dist/components/ui/badge/index.d.ts.map +1 -1
- package/dist/components/ui/badge/index.js +11 -1
- package/dist/components/ui/card/index.d.ts.map +1 -1
- package/dist/components/ui/card/index.js +1 -1
- package/dist/components/ui/dropdown-menu/index.d.ts.map +1 -1
- package/dist/components/ui/dropdown-menu/index.js +4 -1
- package/dist/components/ui/field/index.d.ts.map +1 -1
- package/dist/components/ui/field/index.js +5 -2
- package/dist/components/ui/file-upload/index.js +1 -1
- package/dist/components/ui/form.d.ts.map +1 -1
- package/dist/components/ui/form.js +5 -2
- package/dist/components/ui/multiple-select/index.js +2 -2
- package/dist/components/ui/progress/index.d.ts +15 -1
- package/dist/components/ui/progress/index.d.ts.map +1 -1
- package/dist/components/ui/progress/index.js +25 -2
- package/dist/components/ui/sidebar/sidebar-expand-button.d.ts.map +1 -1
- package/dist/components/ui/sidebar/sidebar-expand-button.js +17 -1
- package/dist/components/ui/tooltip/index.d.ts +15 -0
- package/dist/components/ui/tooltip/index.d.ts.map +1 -1
- package/dist/components/ui/tooltip/index.js +16 -1
- package/dist/domain/blotter/index.d.ts +4 -2
- package/dist/domain/blotter/index.d.ts.map +1 -1
- package/dist/domain/delinquency-aging/aging-buckets.d.ts.map +1 -1
- package/dist/domain/delinquency-aging/aging-buckets.js +8 -3
- package/dist/domain/delinquency-aging/index.d.ts.map +1 -1
- package/dist/domain/delinquency-aging/index.js +8 -3
- package/dist/domain/key-id/index.js +1 -1
- package/dist/domain/money-text/index.d.ts.map +1 -1
- package/dist/domain/money-text/index.js +13 -5
- package/dist/domain/status-rail/index.js +1 -1
- package/dist/domain/threshold-gauge/index.d.ts.map +1 -1
- package/dist/domain/threshold-gauge/index.js +9 -5
- package/dist/enterprise/stat-card/index.d.ts.map +1 -1
- package/dist/enterprise/stat-card/index.js +12 -4
- package/dist/esm/components/card/account-card/index.d.ts.map +1 -1
- package/dist/esm/components/card/account-card/index.js +1 -1
- package/dist/esm/components/card/entity-card/index.js +3 -3
- package/dist/esm/components/dialog/confirmation-dialog/index.d.ts +36 -5
- package/dist/esm/components/dialog/confirmation-dialog/index.d.ts.map +1 -1
- package/dist/esm/components/dialog/confirmation-dialog/index.js +2 -2
- package/dist/esm/components/entity-box/index.js +1 -1
- package/dist/esm/components/entity-data-table/index.d.ts.map +1 -1
- package/dist/esm/components/entity-data-table/index.js +1 -1
- package/dist/esm/components/page-header/index.d.ts.map +1 -1
- package/dist/esm/components/page-header/index.js +2 -2
- package/dist/esm/components/ui/autocomplete/index.d.ts +34 -6
- package/dist/esm/components/ui/autocomplete/index.d.ts.map +1 -1
- package/dist/esm/components/ui/autocomplete/index.js +72 -16
- package/dist/esm/components/ui/badge/index.d.ts.map +1 -1
- package/dist/esm/components/ui/badge/index.js +11 -1
- package/dist/esm/components/ui/card/index.d.ts.map +1 -1
- package/dist/esm/components/ui/card/index.js +1 -1
- package/dist/esm/components/ui/dropdown-menu/index.d.ts.map +1 -1
- package/dist/esm/components/ui/dropdown-menu/index.js +4 -1
- package/dist/esm/components/ui/field/index.d.ts.map +1 -1
- package/dist/esm/components/ui/field/index.js +5 -2
- package/dist/esm/components/ui/file-upload/index.js +1 -1
- package/dist/esm/components/ui/form.d.ts.map +1 -1
- package/dist/esm/components/ui/form.js +5 -2
- package/dist/esm/components/ui/multiple-select/index.js +2 -2
- package/dist/esm/components/ui/progress/index.d.ts +15 -1
- package/dist/esm/components/ui/progress/index.d.ts.map +1 -1
- package/dist/esm/components/ui/progress/index.js +25 -2
- package/dist/esm/components/ui/sidebar/sidebar-expand-button.d.ts.map +1 -1
- package/dist/esm/components/ui/sidebar/sidebar-expand-button.js +17 -1
- package/dist/esm/components/ui/tooltip/index.d.ts +15 -0
- package/dist/esm/components/ui/tooltip/index.d.ts.map +1 -1
- package/dist/esm/components/ui/tooltip/index.js +16 -1
- package/dist/esm/domain/blotter/index.d.ts +4 -2
- package/dist/esm/domain/blotter/index.d.ts.map +1 -1
- package/dist/esm/domain/delinquency-aging/aging-buckets.d.ts.map +1 -1
- package/dist/esm/domain/delinquency-aging/aging-buckets.js +8 -3
- package/dist/esm/domain/delinquency-aging/index.d.ts.map +1 -1
- package/dist/esm/domain/delinquency-aging/index.js +8 -3
- package/dist/esm/domain/key-id/index.js +1 -1
- package/dist/esm/domain/money-text/index.d.ts.map +1 -1
- package/dist/esm/domain/money-text/index.js +13 -5
- package/dist/esm/domain/status-rail/index.js +1 -1
- package/dist/esm/domain/threshold-gauge/index.d.ts.map +1 -1
- package/dist/esm/domain/threshold-gauge/index.js +9 -5
- package/dist/esm/enterprise/stat-card/index.d.ts.map +1 -1
- package/dist/esm/enterprise/stat-card/index.js +12 -4
- package/dist/globals.css +24 -1
- package/package.json +1 -1
|
@@ -22,7 +22,22 @@ function Tooltip({ open: _open, onOpenChange, disabled, ...props }) {
|
|
|
22
22
|
function TooltipTrigger({ ...props }) {
|
|
23
23
|
return _jsx(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
|
|
24
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* The fill is a RAW palette step, not a theme token: `--color-shadcn-600` is a
|
|
27
|
+
* flat hex, so an inverted tooltip stays #27272A under both themes. The ink has
|
|
28
|
+
* to be theme-fixed too, which rules out `--primary-foreground` and
|
|
29
|
+
* `--background`: both invert, and both land on 1.00:1 against this fill in
|
|
30
|
+
* dark.
|
|
31
|
+
*
|
|
32
|
+
* base/400 was not unreadable here (5.81:1 on this fill; the 2.56:1 figure that
|
|
33
|
+
* class earns elsewhere is against a LIGHT ground, which this is not). It moved
|
|
34
|
+
* one step to base/300 because base/400 is banned kit-wide in
|
|
35
|
+
* `__tests__/ink-classes.test.ts`: its only safe ground is a fixed-dark fill,
|
|
36
|
+
* and that narrow exception had already leaked into eight slots that were not
|
|
37
|
+
* one. base/300 reads 10.08:1 here, and keeps this line quieter than the
|
|
38
|
+
* `text-white` a consumer puts beside it (`page-header/index.tsx:226`).
|
|
39
|
+
*/
|
|
25
40
|
function TooltipContent({ className, sideOffset = 0, children, ...props }) {
|
|
26
|
-
return (_jsx(TooltipPrimitive.Portal, { children: _jsxs(TooltipPrimitive.Content, { "data-slot": "tooltip-content", sideOffset: sideOffset, className: cn('bg-shadcn-600 text-shadcn-
|
|
41
|
+
return (_jsx(TooltipPrimitive.Portal, { children: _jsxs(TooltipPrimitive.Content, { "data-slot": "tooltip-content", sideOffset: sideOffset, className: cn('bg-shadcn-600 text-shadcn-300 motion-safe:animate-in fade-in-0 zoom-in-95 motion-safe:data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 rounded-md px-3 py-1.5 text-sm shadow-md', className), ...props, children: [children, _jsx(TooltipPrimitive.Arrow, { className: "bg-shadcn-600 fill-shadcn-600 z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })] }) }));
|
|
27
42
|
}
|
|
28
43
|
export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };
|
|
@@ -5,8 +5,10 @@
|
|
|
5
5
|
* — no zebra fills. Each row: a quiet sentence-case sans label on the left, a mono
|
|
6
6
|
* `tabular-nums` value on the right, `hover:bg-body-surface` as the quiet row
|
|
7
7
|
* affordance (the recessed page surface, one step behind `bg-card`, in both
|
|
8
|
-
* themes). Escalate the value color (`text-credit`, `text-system-alert`)
|
|
9
|
-
* when a metric crosses a threshold
|
|
8
|
+
* themes). Escalate the value color (`text-credit`, `text-system-alert-h1a`)
|
|
9
|
+
* only when a metric crosses a threshold — the INK tokens, never the bare
|
|
10
|
+
* `text-system-*` fills, which are picked to carry white and read as low as
|
|
11
|
+
* 1.78:1 on this surface in light.
|
|
10
12
|
*
|
|
11
13
|
* <Blotter>
|
|
12
14
|
* <BlotterRow label="Resolved on time" value="128" />
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/blotter/index.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/blotter/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAMtC,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,SAAS,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,OAAO,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,YAAY,+BAE5D;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,SAAS,CAAA;IAChB,KAAK,EAAE,SAAS,CAAA;IAChB,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,EACL,cAAc,EACd,SAAS,EACT,OAAe,EACf,OAAe,EAChB,EAAE,eAAe,+BAkDjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aging-buckets.d.ts","sourceRoot":"","sources":["../../../../src/domain/delinquency-aging/aging-buckets.tsx"],"names":[],"mappings":"AAyCA,MAAM,WAAW,WAAW;IAC1B,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAA;IACb,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAA;IACb,yEAAyE;IACzE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CACvB;AAED,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAA;AAElE;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;IAC1C,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oEAAoE;IACpE,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,yEAAyE;IACzE,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B;oFACgF;IAChF,WAAW,CAAC,EAAE,SAAS,GAAG,KAAK,CAAA;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;
|
|
1
|
+
{"version":3,"file":"aging-buckets.d.ts","sourceRoot":"","sources":["../../../../src/domain/delinquency-aging/aging-buckets.tsx"],"names":[],"mappings":"AAyCA,MAAM,WAAW,WAAW;IAC1B,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAA;IACb,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAA;IACb,yEAAyE;IACzE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CACvB;AAED,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAA;AAElE;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;IAC1C,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,iFAAiF;IACjF,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oEAAoE;IACpE,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,yEAAyE;IACzE,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B;oFACgF;IAChF,WAAW,CAAC,EAAE,SAAS,GAAG,KAAK,CAAA;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAgCD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,CAMlE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EAAE,EACtB,KAAK,EAAE,MAAM,GACZ,MAAM,GAAG,IAAI,CAMf;AAED,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,QAAQ,EACR,MAAM,EACN,SAAiB,EACjB,MAAM,EACN,WAAuB,EACvB,SAAS,EACV,EAAE,iBAAiB,+BAkHnB"}
|
|
@@ -38,11 +38,16 @@ import { minorDigitsOf, minorToDecimal, sumMinor } from '../money-math.js';
|
|
|
38
38
|
import { MoneyText } from '../money-text/index.js';
|
|
39
39
|
/** Band → glyph + tint + accessible word. The glyph (and the sr-only word) is
|
|
40
40
|
* the load-bearing severity cue; the tint only reinforces it, so the
|
|
41
|
-
* escalation survives grayscale and color-vision deficiency.
|
|
41
|
+
* escalation survives grayscale and color-vision deficiency.
|
|
42
|
+
*
|
|
43
|
+
* The tint is an INK token (`-h1a`). A load-bearing glyph answers to the 3:1
|
|
44
|
+
* floor of SC 1.4.11, and the bare fill token `--system-alert` reads 1.78:1 on
|
|
45
|
+
* `--card` and 1.62:1 on `--body-surface` in light — the cue was invisible on
|
|
46
|
+
* the row it escalates. */
|
|
42
47
|
const BAND = {
|
|
43
48
|
current: {
|
|
44
49
|
Icon: CircleDot,
|
|
45
|
-
tint: 'text-system-success',
|
|
50
|
+
tint: 'text-system-success-h1a',
|
|
46
51
|
word: 'Em dia'
|
|
47
52
|
},
|
|
48
53
|
recent: {
|
|
@@ -52,7 +57,7 @@ const BAND = {
|
|
|
52
57
|
},
|
|
53
58
|
aging: {
|
|
54
59
|
Icon: AlertTriangle,
|
|
55
|
-
tint: 'text-system-alert',
|
|
60
|
+
tint: 'text-system-alert-h1a',
|
|
56
61
|
word: 'Em atraso'
|
|
57
62
|
},
|
|
58
63
|
overdue: { Icon: AlertOctagon, tint: 'text-credit', word: 'Vencido' }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/delinquency-aging/index.tsx"],"names":[],"mappings":"AAoDA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAKtE,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAOpE;;wEAEwE;AACxE,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;oEACoE;AACpE,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,iFAAiF;IACjF,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,6EAA6E;IAC7E,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB;;0EAEsE;IACtE,aAAa,EAAE,OAAO,CAAA;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,iBAAiB,EAAE,EAC5B,KAAK,EAAE,MAAM,GACZ,eAAe,CAuDjB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/delinquency-aging/index.tsx"],"names":[],"mappings":"AAoDA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAKtE,YAAY,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAOpE;;wEAEwE;AACxE,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;oEACoE;AACpE,MAAM,WAAW,eAAe;IAC9B,sEAAsE;IACtE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,iFAAiF;IACjF,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,6EAA6E;IAC7E,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB;;0EAEsE;IACtE,aAAa,EAAE,OAAO,CAAA;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,iBAAiB,EAAE,EAC5B,KAAK,EAAE,MAAM,GACZ,eAAe,CAuDjB;AAyFD,MAAM,WAAW,qBAAqB;IACpC;yEACqE;IACrE,OAAO,EAAE,iBAAiB,EAAE,CAAA;IAC5B,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;sBAGkB;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;IACnD,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,+EAA+E;IAC/E,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B;;oBAEgB;IAChB,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC;;;mDAG+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;yEACqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0EAA0E;IAC1E,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,SAAS,GAAG,KAAK,CAAA;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,QAAQ,EACR,MAAM,EACN,SAA2B,EAC3B,cAAc,EACd,UAA2B,EAC3B,kBAAoC,EACpC,YAAY,EACZ,IAAW,EACX,MAAY,EACZ,SAAiB,EACjB,WAAuB,EACvB,SAAS,EACV,EAAE,qBAAqB,+BA6EvB"}
|
|
@@ -178,10 +178,15 @@ function exactBand(overdue, total, warn, breach) {
|
|
|
178
178
|
/** Band → glyph + tint + accessible word. The glyph and sr-only word are the
|
|
179
179
|
* load-bearing cue; the tint only reinforces, so the band survives grayscale
|
|
180
180
|
* and color-vision deficiency. Mirrors the gauge's three-band canon, renamed
|
|
181
|
-
* to the delinquency vocabulary.
|
|
181
|
+
* to the delinquency vocabulary.
|
|
182
|
+
*
|
|
183
|
+
* The tint is an INK token (`-h1a`), because it is painted on the `Figure`
|
|
184
|
+
* below as well as on the glyph. The bare fill tokens read 1.78:1
|
|
185
|
+
* (`--system-alert`) and 3.35:1 (`--system-success`) on every light surface in
|
|
186
|
+
* the kit — the alert one under even the 3:1 floor a glyph answers to. */
|
|
182
187
|
const RATE_BAND = {
|
|
183
|
-
low: { Icon: ShieldCheck, tint: 'text-system-success', word: 'Saudável' },
|
|
184
|
-
warn: { Icon: TriangleAlert, tint: 'text-system-alert', word: 'Elevada' },
|
|
188
|
+
low: { Icon: ShieldCheck, tint: 'text-system-success-h1a', word: 'Saudável' },
|
|
189
|
+
warn: { Icon: TriangleAlert, tint: 'text-system-alert-h1a', word: 'Elevada' },
|
|
185
190
|
breach: { Icon: AlertOctagon, tint: 'text-credit', word: 'Em estresse' }
|
|
186
191
|
};
|
|
187
192
|
export function DelinquencyAging({ buckets, currency, locale, rateLabel = 'Inadimplência', rateBandLabels, emptyLabel = 'sem carteira', indeterminateLabel = 'indeterminada', bucketLabels, warn = 0.05, breach = 0.1, showTotal = false, healthyTone = 'success', className }) {
|
|
@@ -165,5 +165,5 @@ function CopyValue({ value }) {
|
|
|
165
165
|
setCopied(false);
|
|
166
166
|
});
|
|
167
167
|
};
|
|
168
|
-
return (_jsx("button", { type: "button", onClick: copy, "aria-label": copied ? 'Copiado para a área de transferência' : 'Copiar valor', className: "text-muted-foreground hover:text-foreground focus:ring-ring inline-flex size-5 shrink-0 items-center justify-center rounded-sm transition-colors duration-150 ease-out focus:ring-2 focus:outline-none", children: copied ? (_jsx(Check, { "aria-hidden": true, className: "text-system-success size-3" })) : (_jsx(Copy, { "aria-hidden": true, className: "size-3" })) }));
|
|
168
|
+
return (_jsx("button", { type: "button", onClick: copy, "aria-label": copied ? 'Copiado para a área de transferência' : 'Copiar valor', className: "text-muted-foreground hover:text-foreground focus:ring-ring inline-flex size-5 shrink-0 items-center justify-center rounded-sm transition-colors duration-150 ease-out focus:ring-2 focus:outline-none", children: copied ? (_jsx(Check, { "aria-hidden": true, className: "text-system-success-h1a size-3" })) : (_jsx(Copy, { "aria-hidden": true, className: "size-3" })) }));
|
|
169
169
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/money-text/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/money-text/index.tsx"],"names":[],"mappings":"AAgCA,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAC1C,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,gDAAgD;IAChD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,uCAAuC;IACvC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,mDAAmD;IACnD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAOtE;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,cAAc,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,MAAM,GACd;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAiDjD;AAED,wBAAgB,SAAS,CAAC,EACxB,MAAM,EACN,QAAQ,EACR,cAAkB,EAClB,YAAoB,EACpB,SAAgB,EAChB,MAAM,EACN,SAAS,EACV,EAAE,cAAc,+BA8BhB"}
|
|
@@ -9,15 +9,23 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
9
9
|
* preserve that guarantee.
|
|
10
10
|
*
|
|
11
11
|
* The currency code is shown as a suffix rather than a symbol so mixed-currency
|
|
12
|
-
* ledgers stay unambiguous. Negative amounts get the
|
|
12
|
+
* ledgers stay unambiguous. Negative amounts get the error sign color;
|
|
13
13
|
* null/undefined/empty render the muted no-value placeholder.
|
|
14
14
|
*
|
|
15
|
-
* SIGN COLOR IS NOT THE CREDIT ROLE.
|
|
15
|
+
* SIGN COLOR IS NOT THE CREDIT ROLE. The sign ink marks a negative/alarm
|
|
16
16
|
* amount; `--credit` is the accounting reading of a credit amount. They are two
|
|
17
17
|
* roles, and a consumer layers the credit role on top (matcher's fork passes
|
|
18
18
|
* `signColor={false}` with `tone="credit"` precisely so the two never fight).
|
|
19
|
-
* Collapsing the sign color into `text-credit` would erase that distinction
|
|
20
|
-
*
|
|
19
|
+
* Collapsing the sign color into `text-credit` would erase that distinction.
|
|
20
|
+
*
|
|
21
|
+
* THE SIGN INK IS THE `system-error` H1A INK, not `--destructive`. A signed
|
|
22
|
+
* amount is TEXT, so it answers to WCAG AA on whatever surface holds it, and
|
|
23
|
+
* `--destructive` is a FILL family (buttons, badges, tinted chips) whose dark
|
|
24
|
+
* value reads 3.80:1 as ink on `--card`, an axe finding on a live console.
|
|
25
|
+
* `--system-error-h1a` is the error INK of the same family and reads 8.28:1
|
|
26
|
+
* light / 7.12:1 dark on that surface. `__tests__/tokens-contract.test.ts`
|
|
27
|
+
* re-measures whichever token this line applies, so the pairing is measured
|
|
28
|
+
* rather than trusted.
|
|
21
29
|
*/
|
|
22
30
|
import { cn } from '../../lib/utils.js';
|
|
23
31
|
import { NO_VALUE, isValidDigitCount, safeLocale } from '../format.js';
|
|
@@ -106,5 +114,5 @@ export function MoneyText({ amount, currency, fractionDigits = 2, hideCurrency =
|
|
|
106
114
|
if (result === null)
|
|
107
115
|
return noValue;
|
|
108
116
|
const { formatted, negative } = result;
|
|
109
|
-
return (_jsxs("span", { className: cn('tabular-nums', signColor && negative && 'text-
|
|
117
|
+
return (_jsxs("span", { className: cn('tabular-nums', signColor && negative && 'text-system-error-h1a', className), children: [formatted, !hideCurrency && currency ? (_jsx("span", { className: "text-muted-foreground ml-1 text-xs", children: currency })) : null] }));
|
|
110
118
|
}
|
|
@@ -45,7 +45,7 @@ export function StatusRail({ lead, items = [], chips = [], className }) {
|
|
|
45
45
|
// Tiny mono token: raised a hair off the sunken tape by the
|
|
46
46
|
// card surface + whisper shadow.
|
|
47
47
|
'inline-flex items-center gap-1 rounded-sm border px-1.5 py-0.5 shadow-sm', chip.alarm
|
|
48
|
-
? 'border-destructive/40 bg-destructive/10 text-
|
|
48
|
+
? 'border-destructive/40 bg-destructive/10 text-system-error-h1a'
|
|
49
49
|
: 'border-border bg-card text-foreground'), children: [chip.alarm ? (_jsxs(_Fragment, { children: [_jsx(TriangleAlert, { "aria-hidden": true, className: "size-3" }), _jsx("span", { className: "sr-only", children: "(alarme)" })] })) : null, chip.value] })] }, chip.id ?? i))) })) : null] }));
|
|
50
50
|
}
|
|
51
51
|
/** A tape item preceded by a separator dot when it is not the first token. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/threshold-gauge/index.tsx"],"names":[],"mappings":"AAiDA,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEjD;gFACgF;AAChF,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG,gBAAgB,CAAA;AAEjE;;gDAEgD;AAChD,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;AAEjE;;;;wEAIwE;AACxE,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAA;AAE/C,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAA;IACZ,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAA;IACd,8EAA8E;IAC9E,KAAK,CAAC,EAAE,UAAU,CAAA;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC;oEACgE;IAChE,KAAK,EAAE,MAAM,CAAA;IACb;;;;iDAI6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,wBAAwB;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAA;IACZ,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAA;IACd,kEAAkE;IAClE,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB,qEAAqE;IACrE,SAAS,EAAE,cAAc,CAAA;IACzB,qDAAqD;IACrD,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;uCAImC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;0EAIsE;IACtE,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/domain/threshold-gauge/index.tsx"],"names":[],"mappings":"AAiDA,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEjD;gFACgF;AAChF,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG,gBAAgB,CAAA;AAEjE;;gDAEgD;AAChD,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAA;AAEjE;;;;wEAIwE;AACxE,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAA;AAE/C,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAA;IACZ,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAA;IACd,8EAA8E;IAC9E,KAAK,CAAC,EAAE,UAAU,CAAA;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC;oEACgE;IAChE,KAAK,EAAE,MAAM,CAAA;IACb;;;;iDAI6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,wBAAwB;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAA;IACZ,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAA;IACd,kEAAkE;IAClE,KAAK,CAAC,EAAE,UAAU,CAAA;IAClB,qEAAqE;IACrE,SAAS,EAAE,cAAc,CAAA;IACzB,qDAAqD;IACrD,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;uCAImC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;0EAIsE;IACtE,UAAU,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAuCD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,eAAe,EAC3B,SAAS,EAAE,cAAc,GACxB,SAAS,CAUX;AA+CD,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,YAAY,EACZ,GAAO,EACP,GAAG,EACH,IAAI,EACJ,MAAM,EACN,KAAK,EACL,SAAS,EACT,MAAkB,EAClB,QAAQ,EACR,MAAM,EACN,KAAK,EACL,SAAS,EACT,UAAU,EACV,SAAS,EACV,EAAE,mBAAmB,+BA8ErB"}
|
|
@@ -51,22 +51,26 @@ import { MoneyText } from '../money-text/index.js';
|
|
|
51
51
|
const BAND = {
|
|
52
52
|
low: {
|
|
53
53
|
Icon: ShieldCheck,
|
|
54
|
-
tint: 'text-system-success',
|
|
54
|
+
tint: 'text-system-success-h1a',
|
|
55
55
|
word: 'Dentro do limite'
|
|
56
56
|
},
|
|
57
57
|
warn: {
|
|
58
58
|
Icon: TriangleAlert,
|
|
59
|
-
tint: 'text-system-alert',
|
|
59
|
+
tint: 'text-system-alert-h1a',
|
|
60
60
|
word: 'Próximo do limite'
|
|
61
61
|
},
|
|
62
62
|
breach: {
|
|
63
63
|
Icon: OctagonX,
|
|
64
|
-
tint: 'text-
|
|
64
|
+
tint: 'text-system-error-h1a',
|
|
65
65
|
word: 'Limite ultrapassado'
|
|
66
66
|
}
|
|
67
67
|
};
|
|
68
|
-
/** Track fill tint per band
|
|
69
|
-
*
|
|
68
|
+
/** Track fill tint per band, and the reason it is a SEPARATE map from the
|
|
69
|
+
* tint above: these are the fill tokens, and a fill answers to no text floor.
|
|
70
|
+
* The tint above is painted on the band glyph AND on the `Figure`, so it has
|
|
71
|
+
* to be the ink family. Light `--system-alert` is #EAB308, about 1.9:1 on
|
|
72
|
+
* white, and `--system-success` about 3.3:1 — both were readable only as a
|
|
73
|
+
* bar wash, never as the number the reader is here to read. */
|
|
70
74
|
const BAND_FILL = {
|
|
71
75
|
low: 'bg-system-success',
|
|
72
76
|
warn: 'bg-system-alert',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/enterprise/stat-card/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAQtC,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/enterprise/stat-card/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAQtC,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,CAAA;AA4B5E,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,SAAS,CAAA;IAChB,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAA;IACb,iEAAiE;IACjE,KAAK,EAAE,SAAS,CAAA;IAChB,4FAA4F;IAC5F,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,uDAAuD;IACvD,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,sDAAsD;IACtD,KAAK,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC,CAAA;IAC7D,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,yCAAyC;IACzC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAwED,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,KAAK,EACL,KAAK,EACL,IAAgB,EAChB,KAAK,EACL,QAAkB,EAClB,IAAI,EACJ,SAAS,EACV,EAAE,aAAa,+BAgCf"}
|
|
@@ -5,12 +5,20 @@ import { LedgerPanel } from '../../domain/ledger-sheet/index.js';
|
|
|
5
5
|
import { SectionLabel } from '../../domain/section-label/index.js';
|
|
6
6
|
import { cn } from '../../lib/utils.js';
|
|
7
7
|
/** Value/delta color per tone. `default` keeps the high-contrast foreground;
|
|
8
|
-
* the rest escalate to a semantic theme token that tracks light/dark.
|
|
8
|
+
* the rest escalate to a semantic theme token that tracks light/dark.
|
|
9
|
+
*
|
|
10
|
+
* All three escalations read the `-h1a` family, not a mix of `-h1a` and
|
|
11
|
+
* `-text`. `--system-*-text` is the ink of a tinted PILL, measured against its
|
|
12
|
+
* own surface; this card paints on the panel, and `-h1a` is the family gated
|
|
13
|
+
* against `--card` and `--background` in `__tests__/tokens-contract.test.ts`.
|
|
14
|
+
* The two differ by one palette step in dark, so a mixed table gave the three
|
|
15
|
+
* deltas three different weights on the same surface for no reason a reader
|
|
16
|
+
* could see. */
|
|
9
17
|
const TONE_VALUE = {
|
|
10
18
|
default: 'text-foreground',
|
|
11
|
-
success: 'text-system-success-
|
|
12
|
-
warning: 'text-system-alert-
|
|
13
|
-
destructive: 'text-
|
|
19
|
+
success: 'text-system-success-h1a',
|
|
20
|
+
warning: 'text-system-alert-h1a',
|
|
21
|
+
destructive: 'text-system-error-h1a'
|
|
14
22
|
};
|
|
15
23
|
/** Trend stroke color per tone. Resolved through the `--color-*` wrappers (the
|
|
16
24
|
* raw `--chart-N` tokens are bare HSL triples, not usable colors). */
|
package/dist/globals.css
CHANGED
|
@@ -294,7 +294,26 @@
|
|
|
294
294
|
here claimed 4.4:1 was acceptable "on the shadcn-100 field", which named
|
|
295
295
|
a fill the component never paints. */
|
|
296
296
|
--input-placeholder: 240 4% 45%; /* one notch off base/500: #6E6E77, AA on body-surface */
|
|
297
|
-
|
|
297
|
+
/*
|
|
298
|
+
Focus ring. base/400 read 2.55:1 on white and 2.33:1 on --body-surface,
|
|
299
|
+
under the 3:1 floor a focus indicator answers to (SC 1.4.11), and this is
|
|
300
|
+
the ring every input, button and trigger in the kit paints: the wrapper
|
|
301
|
+
border on :focus-within, and the ring itself at ring-offset-0, both of
|
|
302
|
+
which touch the page ground directly. base/500 clears it on every light
|
|
303
|
+
ground: 4.84:1 on white (which is also --card and --popover here) and
|
|
304
|
+
4.40:1 on --body-surface.
|
|
305
|
+
|
|
306
|
+
It does NOT serve both themes. On the dark container surface base/500
|
|
307
|
+
measures 2.16:1, so .dark keeps the old channel as its own declaration,
|
|
308
|
+
where it reads 5.81:1 on --background and 4.08:1 on --card.
|
|
309
|
+
|
|
310
|
+
No single value clears both themes with margin, and none is a palette
|
|
311
|
+
step: the best one channel does is an off-scale 240 5% 57%, which clears
|
|
312
|
+
3:1 on all four grounds but by 0.04 on two of them. The per-theme pair
|
|
313
|
+
sits at 4.4+ light and 4.0+ dark, each half gated in
|
|
314
|
+
`__tests__/tokens-contract.test.ts`.
|
|
315
|
+
*/
|
|
316
|
+
--ring: 240 4% 46%; /* base/500 = #71717A */
|
|
298
317
|
--radius: 0.5rem;
|
|
299
318
|
|
|
300
319
|
/* Accent variants */
|
|
@@ -425,6 +444,10 @@
|
|
|
425
444
|
dark field that is already only 5.8:1, and going lighter here means
|
|
426
445
|
darker, which would push the hint under the AA floor. */
|
|
427
446
|
--input-placeholder: 240 5% 80%; /* between base/400 and base/300: #C9C9CF, AA on card (6.3:1); base/400 read 4.07:1 there */
|
|
447
|
+
/* Held at base/400, which light had to leave: on this ground the two
|
|
448
|
+
directions disagree. base/400 reads 5.81:1 on --background and 4.08:1 on
|
|
449
|
+
--card here, while light's base/500 would read 2.16:1 on --card. */
|
|
450
|
+
--ring: 240 5% 65%; /* base/400 = #A1A1AA */
|
|
428
451
|
--primary: 240 5% 96%; /* base/100 = #F4F4F5 */
|
|
429
452
|
--primary-foreground: 240 4% 16%; /* base/800 = #27272A */
|
|
430
453
|
--secondary: 240 4% 16%; /* base/800 = #27272A */
|