@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.
Files changed (98) hide show
  1. package/dist/components/card/account-card/index.d.ts.map +1 -1
  2. package/dist/components/card/account-card/index.js +1 -1
  3. package/dist/components/card/entity-card/index.js +3 -3
  4. package/dist/components/dialog/confirmation-dialog/index.d.ts +36 -5
  5. package/dist/components/dialog/confirmation-dialog/index.d.ts.map +1 -1
  6. package/dist/components/dialog/confirmation-dialog/index.js +2 -2
  7. package/dist/components/entity-box/index.js +1 -1
  8. package/dist/components/entity-data-table/index.d.ts.map +1 -1
  9. package/dist/components/entity-data-table/index.js +1 -1
  10. package/dist/components/page-header/index.d.ts.map +1 -1
  11. package/dist/components/page-header/index.js +2 -2
  12. package/dist/components/ui/autocomplete/index.d.ts +34 -6
  13. package/dist/components/ui/autocomplete/index.d.ts.map +1 -1
  14. package/dist/components/ui/autocomplete/index.js +72 -16
  15. package/dist/components/ui/badge/index.d.ts.map +1 -1
  16. package/dist/components/ui/badge/index.js +11 -1
  17. package/dist/components/ui/card/index.d.ts.map +1 -1
  18. package/dist/components/ui/card/index.js +1 -1
  19. package/dist/components/ui/dropdown-menu/index.d.ts.map +1 -1
  20. package/dist/components/ui/dropdown-menu/index.js +4 -1
  21. package/dist/components/ui/field/index.d.ts.map +1 -1
  22. package/dist/components/ui/field/index.js +5 -2
  23. package/dist/components/ui/file-upload/index.js +1 -1
  24. package/dist/components/ui/form.d.ts.map +1 -1
  25. package/dist/components/ui/form.js +5 -2
  26. package/dist/components/ui/multiple-select/index.js +2 -2
  27. package/dist/components/ui/progress/index.d.ts +15 -1
  28. package/dist/components/ui/progress/index.d.ts.map +1 -1
  29. package/dist/components/ui/progress/index.js +25 -2
  30. package/dist/components/ui/sidebar/sidebar-expand-button.d.ts.map +1 -1
  31. package/dist/components/ui/sidebar/sidebar-expand-button.js +17 -1
  32. package/dist/components/ui/tooltip/index.d.ts +15 -0
  33. package/dist/components/ui/tooltip/index.d.ts.map +1 -1
  34. package/dist/components/ui/tooltip/index.js +16 -1
  35. package/dist/domain/blotter/index.d.ts +4 -2
  36. package/dist/domain/blotter/index.d.ts.map +1 -1
  37. package/dist/domain/delinquency-aging/aging-buckets.d.ts.map +1 -1
  38. package/dist/domain/delinquency-aging/aging-buckets.js +8 -3
  39. package/dist/domain/delinquency-aging/index.d.ts.map +1 -1
  40. package/dist/domain/delinquency-aging/index.js +8 -3
  41. package/dist/domain/key-id/index.js +1 -1
  42. package/dist/domain/money-text/index.d.ts.map +1 -1
  43. package/dist/domain/money-text/index.js +13 -5
  44. package/dist/domain/status-rail/index.js +1 -1
  45. package/dist/domain/threshold-gauge/index.d.ts.map +1 -1
  46. package/dist/domain/threshold-gauge/index.js +9 -5
  47. package/dist/enterprise/stat-card/index.d.ts.map +1 -1
  48. package/dist/enterprise/stat-card/index.js +12 -4
  49. package/dist/esm/components/card/account-card/index.d.ts.map +1 -1
  50. package/dist/esm/components/card/account-card/index.js +1 -1
  51. package/dist/esm/components/card/entity-card/index.js +3 -3
  52. package/dist/esm/components/dialog/confirmation-dialog/index.d.ts +36 -5
  53. package/dist/esm/components/dialog/confirmation-dialog/index.d.ts.map +1 -1
  54. package/dist/esm/components/dialog/confirmation-dialog/index.js +2 -2
  55. package/dist/esm/components/entity-box/index.js +1 -1
  56. package/dist/esm/components/entity-data-table/index.d.ts.map +1 -1
  57. package/dist/esm/components/entity-data-table/index.js +1 -1
  58. package/dist/esm/components/page-header/index.d.ts.map +1 -1
  59. package/dist/esm/components/page-header/index.js +2 -2
  60. package/dist/esm/components/ui/autocomplete/index.d.ts +34 -6
  61. package/dist/esm/components/ui/autocomplete/index.d.ts.map +1 -1
  62. package/dist/esm/components/ui/autocomplete/index.js +72 -16
  63. package/dist/esm/components/ui/badge/index.d.ts.map +1 -1
  64. package/dist/esm/components/ui/badge/index.js +11 -1
  65. package/dist/esm/components/ui/card/index.d.ts.map +1 -1
  66. package/dist/esm/components/ui/card/index.js +1 -1
  67. package/dist/esm/components/ui/dropdown-menu/index.d.ts.map +1 -1
  68. package/dist/esm/components/ui/dropdown-menu/index.js +4 -1
  69. package/dist/esm/components/ui/field/index.d.ts.map +1 -1
  70. package/dist/esm/components/ui/field/index.js +5 -2
  71. package/dist/esm/components/ui/file-upload/index.js +1 -1
  72. package/dist/esm/components/ui/form.d.ts.map +1 -1
  73. package/dist/esm/components/ui/form.js +5 -2
  74. package/dist/esm/components/ui/multiple-select/index.js +2 -2
  75. package/dist/esm/components/ui/progress/index.d.ts +15 -1
  76. package/dist/esm/components/ui/progress/index.d.ts.map +1 -1
  77. package/dist/esm/components/ui/progress/index.js +25 -2
  78. package/dist/esm/components/ui/sidebar/sidebar-expand-button.d.ts.map +1 -1
  79. package/dist/esm/components/ui/sidebar/sidebar-expand-button.js +17 -1
  80. package/dist/esm/components/ui/tooltip/index.d.ts +15 -0
  81. package/dist/esm/components/ui/tooltip/index.d.ts.map +1 -1
  82. package/dist/esm/components/ui/tooltip/index.js +16 -1
  83. package/dist/esm/domain/blotter/index.d.ts +4 -2
  84. package/dist/esm/domain/blotter/index.d.ts.map +1 -1
  85. package/dist/esm/domain/delinquency-aging/aging-buckets.d.ts.map +1 -1
  86. package/dist/esm/domain/delinquency-aging/aging-buckets.js +8 -3
  87. package/dist/esm/domain/delinquency-aging/index.d.ts.map +1 -1
  88. package/dist/esm/domain/delinquency-aging/index.js +8 -3
  89. package/dist/esm/domain/key-id/index.js +1 -1
  90. package/dist/esm/domain/money-text/index.d.ts.map +1 -1
  91. package/dist/esm/domain/money-text/index.js +13 -5
  92. package/dist/esm/domain/status-rail/index.js +1 -1
  93. package/dist/esm/domain/threshold-gauge/index.d.ts.map +1 -1
  94. package/dist/esm/domain/threshold-gauge/index.js +9 -5
  95. package/dist/esm/enterprise/stat-card/index.d.ts.map +1 -1
  96. package/dist/esm/enterprise/stat-card/index.js +12 -4
  97. package/dist/globals.css +24 -1
  98. 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-400 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]" })] }) }));
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`) only
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;;;;;;;;;;;;;;;;GAgBG;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
+ {"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;AA2BD;;;;;;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"}
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;AAoFD,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"}
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":"AAwBA,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"}
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 destructive color;
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. `--destructive` marks a negative/alarm
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
- * this class stays `text-destructive`, as in sindarian-x@0.15.0.
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-destructive', className), children: [formatted, !hideCurrency && currency ? (_jsx("span", { className: "text-muted-foreground ml-1 text-xs", children: currency })) : null] }));
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-destructive'
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;AAmCD;;;;;;;;;;;;;;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"}
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-destructive',
64
+ tint: 'text-system-error-h1a',
65
65
  word: 'Limite ultrapassado'
66
66
  }
67
67
  };
68
- /** Track fill tint per band — kept distinct from the glyph tint so the bar can
69
- * use the softer wash while the glyph carries the full tint. */
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;AAoB5E,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"}
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-text',
12
- warning: 'text-system-alert-text',
13
- destructive: 'text-destructive'
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
- --ring: 240 5% 65%; /* focus ring */
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 */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lerianstudio/sindarian-ui",
3
- "version": "1.4.0-beta.7",
3
+ "version": "2.0.0-beta.1",
4
4
  "description": "Sindarian UI - A UI library for Midaz Console",
5
5
  "license": "ISC",
6
6
  "author": {