@attrus-ds/core 0.2.0 → 1.0.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.
Files changed (80) hide show
  1. package/LICENSE +27 -27
  2. package/dist/assets/flags/Brazil-rounded.svg +15 -15
  3. package/dist/assets/flags/Brazil-square.svg +16 -16
  4. package/dist/assets/flags/Chile-rounded.svg +10 -10
  5. package/dist/assets/flags/Chile-square.svg +10 -10
  6. package/dist/assets/flags/Colombia-rounded.svg +9 -9
  7. package/dist/assets/flags/Colombia-square.svg +9 -9
  8. package/dist/assets/flags/EUA-rounded.svg +10 -10
  9. package/dist/assets/flags/EUA-square.svg +10 -10
  10. package/dist/assets/flags/EUR-rounded.svg +8 -8
  11. package/dist/assets/flags/EUR-square.svg +8 -8
  12. package/dist/assets/flags/Mexico-rounded.svg +18 -18
  13. package/dist/assets/flags/Mexico-square.svg +18 -18
  14. package/dist/assets/icon-attrus-dark.svg +2 -2
  15. package/dist/assets/icon-attrus-light.svg +2 -2
  16. package/dist/assets/logo-attrus-dark.svg +7 -7
  17. package/dist/assets/logo-attrus-light.svg +7 -7
  18. package/dist/css/components/buttons.css +301 -301
  19. package/dist/css/components/callout.css +195 -195
  20. package/dist/css/components/cards.css +272 -272
  21. package/dist/css/components/combobox.css +319 -319
  22. package/dist/css/components/empty-states.css +61 -61
  23. package/dist/css/components/inputs.css +975 -975
  24. package/dist/css/components/number-input.css +138 -138
  25. package/dist/css/components/overlays.css +374 -374
  26. package/dist/css/components/primitives.css +314 -314
  27. package/dist/css/components/sidebar.css +179 -179
  28. package/dist/css/components/smart-search.css +91 -91
  29. package/dist/css/components/status-pills.css +207 -207
  30. package/dist/css/components/stepper.css +309 -309
  31. package/dist/css/components/table.css +602 -602
  32. package/dist/css/components/tabs.css +319 -319
  33. package/dist/css/components/toast.css +243 -243
  34. package/dist/css/components/tooltip.css +231 -231
  35. package/dist/css/components/topbar.css +148 -148
  36. package/dist/css/tokens.css +713 -666
  37. package/dist/react/AppSidebar/AppSidebar.d.ts +50 -50
  38. package/dist/react/AppSidebar/AppSidebar.tsx +197 -197
  39. package/dist/react/AppTopbar/AppTopbar.d.ts +58 -58
  40. package/dist/react/AppTopbar/AppTopbar.tsx +203 -203
  41. package/dist/react/Atoms/Atoms.d.ts +149 -149
  42. package/dist/react/Atoms/Atoms.tsx +407 -407
  43. package/dist/react/Button/Button.d.ts +25 -25
  44. package/dist/react/Button/Button.tsx +83 -83
  45. package/dist/react/Callout/Callout.d.ts +29 -29
  46. package/dist/react/Callout/Callout.tsx +98 -98
  47. package/dist/react/Card/Card.d.ts +38 -38
  48. package/dist/react/Card/Card.tsx +93 -93
  49. package/dist/react/Combobox/Combobox.d.ts +52 -52
  50. package/dist/react/Combobox/Combobox.tsx +254 -254
  51. package/dist/react/DataTable/DataTable.d.ts +81 -81
  52. package/dist/react/DataTable/DataTable.tsx +308 -308
  53. package/dist/react/Drawer/Drawer.d.ts +35 -35
  54. package/dist/react/Drawer/Drawer.tsx +226 -226
  55. package/dist/react/Input/Input.d.ts +155 -155
  56. package/dist/react/Input/Input.tsx +478 -478
  57. package/dist/react/Modal/Modal.d.ts +27 -27
  58. package/dist/react/Modal/Modal.tsx +173 -173
  59. package/dist/react/NumberInput/NumberInput.d.ts +25 -25
  60. package/dist/react/NumberInput/NumberInput.tsx +117 -117
  61. package/dist/react/Pill/Pill.d.ts +31 -31
  62. package/dist/react/Pill/Pill.tsx +104 -104
  63. package/dist/react/SearchPill/SearchPill.d.ts +14 -14
  64. package/dist/react/SearchPill/SearchPill.tsx +40 -40
  65. package/dist/react/SmartSearch/SmartSearch.d.ts +65 -65
  66. package/dist/react/SmartSearch/SmartSearch.tsx +271 -271
  67. package/dist/react/Stepper/Stepper.d.ts +25 -25
  68. package/dist/react/Stepper/Stepper.tsx +94 -94
  69. package/dist/react/Tabs/Tabs.d.ts +32 -32
  70. package/dist/react/Tabs/Tabs.tsx +147 -147
  71. package/dist/react/Toast/Toast.d.ts +30 -30
  72. package/dist/react/Toast/Toast.tsx +94 -94
  73. package/dist/react/Tooltip/Tooltip.d.ts +23 -23
  74. package/dist/react/Tooltip/Tooltip.tsx +80 -80
  75. package/dist/react/ZeroState/ZeroState.d.ts +17 -17
  76. package/dist/react/ZeroState/ZeroState.tsx +45 -45
  77. package/dist/react/index.ts +35 -35
  78. package/dist/tokens/attrus-tokens.flat.json +1234 -1234
  79. package/dist/tokens/attrus-tokens.json +1089 -1089
  80. package/package.json +66 -64
@@ -1,195 +1,195 @@
1
- /* ============================================================
2
- CALLOUT — note / aside / alert-bar for documentation & UI
3
- ------------------------------------------------------------
4
- An icon + message in a tinted, bordered box. Theme-aware: tint
5
- is mixed against --color-background-surface so it adapts to
6
- light & dark; the icon uses a theme-aware foreground token.
7
-
8
- Scales from a one-line note up to a rich panel (title + body +
9
- action buttons + dismiss) and a full-width alert bar.
10
-
11
- Simple:
12
- <div class="callout"> (info — default)
13
- <i data-lucide="info"></i>
14
- <div class="callout-body">…<code>x</code>…</div>
15
- </div>
16
-
17
- Rich (vertical: title + body + actions + dismiss):
18
- <div class="callout callout-warn">
19
- <i data-lucide="alert-triangle"></i>
20
- <div class="callout-content">
21
- <div class="callout-title">Heading</div>
22
- <div class="callout-body">Longer message…</div>
23
- <div class="callout-actions">
24
- <button class="btn btn-primary btn-sm">Confirm</button>
25
- <button class="btn btn-ghost btn-sm">Later</button>
26
- </div>
27
- </div>
28
- <button class="callout-dismiss" aria-label="Dismiss"><i data-lucide="x"></i></button>
29
- </div>
30
-
31
- Alert bar (full-width banner; actions + dismiss inline-right):
32
- <div class="callout callout-bar callout-danger"> … </div>
33
-
34
- Tonal: .callout-warn .callout-success .callout-danger .callout-neutral
35
- Size: .callout-sm (compact)
36
- Two props drive every tone:
37
- --callout-tint raw family color → background + border mix
38
- --callout-fg theme-aware foreground → icon color
39
- ============================================================ */
40
- .callout {
41
- --callout-tint: var(--color-brand-secondary-500); /* info / royal */
42
- --callout-fg: var(--color-foreground-accent); /* sky, theme-aware */
43
- display: flex;
44
- gap: var(--space-3);
45
- padding: var(--space-4) var(--space-5);
46
- border-radius: var(--radius-md);
47
- background: color-mix(in srgb, var(--callout-tint) 8%, var(--color-background-surface));
48
- border: 1px solid color-mix(in srgb, var(--callout-tint) 22%, transparent);
49
- }
50
-
51
- .callout > i,
52
- .callout > svg,
53
- .callout-icon {
54
- width: 18px;
55
- height: 18px;
56
- flex-shrink: 0;
57
- margin-top: 1px;
58
- color: var(--callout-fg);
59
- stroke-width: var(--icon-stroke);
60
- }
61
-
62
- /* content column — wrap title + body + actions for rich callouts */
63
- .callout-content {
64
- flex: 1;
65
- min-width: 0;
66
- display: flex;
67
- flex-direction: column;
68
- gap: var(--space-2);
69
- }
70
-
71
- .callout-title {
72
- font-size: var(--fs-md);
73
- font-weight: var(--w-semibold);
74
- letter-spacing: var(--ls-title);
75
- color: var(--color-foreground-default);
76
- line-height: var(--lh-tight);
77
- }
78
-
79
- .callout-body {
80
- font-size: var(--fs-sm);
81
- color: var(--color-foreground-secondary);
82
- line-height: var(--lh-snug);
83
- }
84
- .callout-body strong { color: var(--color-foreground-default); font-weight: var(--w-semibold); }
85
- .callout-body code {
86
- font-family: var(--font-mono);
87
- font-size: var(--fs-xs);
88
- color: var(--color-foreground-accent);
89
- }
90
- .callout-body a { color: var(--color-foreground-accent); text-decoration: none; font-weight: var(--w-semibold); }
91
- .callout-body p { margin: 0 0 var(--space-2); }
92
- .callout-body p:last-child { margin-bottom: 0; }
93
- .callout-body ul { margin: var(--space-2) 0 0; padding-left: var(--space-5); }
94
- .callout-body li { margin-bottom: var(--space-1); }
95
-
96
- /* action row — buttons use the canonical .btn system.
97
- Convention: keep callout actions SMALL (.btn-xs). Use .btn-secondary
98
- for the action — its border stays legible on the tinted box, where
99
- borderless ghost/tertiary read as plain text. .btn-ghost for the
100
- soft/secondary option; .btn-danger for destructive actions. */
101
- .callout-actions {
102
- display: flex;
103
- flex-wrap: wrap;
104
- align-items: center;
105
- gap: var(--space-2-5);
106
- margin-top: var(--space-3);
107
- }
108
-
109
- /* Action buttons adopt the callout's TONE so they belong to the tinted box.
110
- .btn-secondary → tonal soft button (tint fill + tint border + tint text);
111
- .btn-ghost → picks up the tone for text/hover.
112
- .btn-danger / .btn-primary stay canonical (solid) for strong/destructive. */
113
- .callout-actions .btn-secondary {
114
- background: color-mix(in srgb, var(--callout-tint) 14%, var(--color-background-surface));
115
- border-color: color-mix(in srgb, var(--callout-tint) 34%, transparent);
116
- color: var(--callout-fg);
117
- }
118
- .callout-actions .btn-secondary:hover {
119
- background: color-mix(in srgb, var(--callout-tint) 22%, var(--color-background-surface));
120
- border-color: color-mix(in srgb, var(--callout-tint) 50%, transparent);
121
- }
122
- .callout-actions .btn-ghost { color: var(--callout-fg); }
123
- .callout-actions .btn-ghost:hover { background: color-mix(in srgb, var(--callout-tint) 12%, transparent); color: var(--callout-fg); }
124
-
125
- /* dismiss — ghost icon button, top-aligned */
126
- .callout-dismiss {
127
- flex-shrink: 0;
128
- align-self: flex-start;
129
- display: inline-flex;
130
- align-items: center;
131
- justify-content: center;
132
- width: 26px;
133
- height: 26px;
134
- margin: -2px -2px 0 var(--space-2);
135
- padding: 0;
136
- border: 0;
137
- border-radius: var(--radius-sm);
138
- background: transparent;
139
- color: var(--color-foreground-muted);
140
- cursor: pointer;
141
- transition: var(--transition-fast);
142
- }
143
- .callout-dismiss:hover { background: color-mix(in srgb, var(--callout-tint) 14%, transparent); color: var(--color-foreground-default); }
144
- .callout-dismiss > i, .callout-dismiss > svg { width: 16px; height: 16px; stroke-width: var(--icon-stroke); }
145
-
146
- /* ---- tonal variants ---- */
147
- .callout-warn { --callout-tint: var(--color-warning-500); --callout-fg: var(--color-feedback-warning-foreground); }
148
- .callout-success { --callout-tint: var(--color-success-500); --callout-fg: var(--color-feedback-success-foreground); }
149
- .callout-danger { --callout-tint: var(--color-danger-500); --callout-fg: var(--color-feedback-danger-foreground); }
150
- .callout-neutral { --callout-tint: var(--color-neutral-500); --callout-fg: var(--color-foreground-muted); }
151
-
152
- /* ---- compact size ---- */
153
- .callout-sm { padding: var(--space-3) var(--space-4); gap: var(--space-2-5); }
154
- .callout-sm > i, .callout-sm > svg, .callout-sm .callout-icon { width: 16px; height: 16px; }
155
- .callout-sm .callout-body { font-size: var(--fs-xs); }
156
- .callout-sm .callout-title { font-size: var(--fs-sm); }
157
-
158
- /* ---- alert bar — full-width banner, items centered, actions right ---- */
159
- .callout-bar {
160
- align-items: center;
161
- border-radius: 0;
162
- border-left: 0;
163
- border-right: 0;
164
- padding: var(--space-3) var(--space-6);
165
- border-left: 3px solid var(--callout-tint); /* accent rule for scannability */
166
- }
167
- .callout-bar > i, .callout-bar > svg, .callout-bar .callout-icon { margin-top: 0; }
168
- .callout-bar .callout-content { flex-direction: row; align-items: center; gap: var(--space-3); flex-wrap: wrap; }
169
- .callout-bar .callout-actions { margin-top: 0; margin-left: auto; }
170
- .callout-bar .callout-dismiss { align-self: center; margin-top: 0; }
171
- .callout-bar .callout-title { font-size: var(--fs-sm); }
172
-
173
- /* rounded alert bar (when not edge-to-edge) */
174
- .callout-bar.callout-rounded { border-radius: var(--radius-md); border-left-width: 3px; border-top: 1px solid color-mix(in srgb, var(--callout-tint) 22%, transparent); border-right: 1px solid color-mix(in srgb, var(--callout-tint) 22%, transparent); border-bottom: 1px solid color-mix(in srgb, var(--callout-tint) 22%, transparent); }
175
-
176
- /* ---- Inline: content-sized, single-line (badges, hero notices) ---- */
177
- .callout-inline { display: inline-flex; width: auto; align-items: center; }
178
-
179
- /* ---- On inverse: glassy translucent tint + light text, for dark
180
- surfaces (hero, photo). Mirrors .pill.on-inverse. ---- */
181
- .callout.on-inverse {
182
- background: color-mix(in srgb, var(--callout-tint) 20%, transparent);
183
- border-color: color-mix(in srgb, var(--callout-tint) 38%, transparent);
184
- color: var(--color-foreground-inverse-default);
185
- -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
186
- }
187
- .callout.on-inverse > i, .callout.on-inverse > svg, .callout.on-inverse .callout-icon { color: var(--callout-fg-inv, currentColor); }
188
- .callout.on-inverse .callout-title { color: var(--color-foreground-inverse-default); }
189
- .callout.on-inverse .callout-body { color: var(--color-foreground-inverse-secondary); }
190
- .callout.on-inverse .callout-body strong { color: var(--color-foreground-inverse-default); }
191
- .callout-warn.on-inverse { --callout-fg-inv: var(--color-warning-300); }
192
- .callout-success.on-inverse { --callout-fg-inv: var(--color-success-300); }
193
- .callout-danger.on-inverse { --callout-fg-inv: var(--color-danger-300); }
194
- .callout-info.on-inverse { --callout-fg-inv: var(--color-brand-accent-300); }
195
- .callout-neutral.on-inverse { --callout-fg-inv: var(--color-foreground-inverse-muted); }
1
+ /* ============================================================
2
+ CALLOUT — note / aside / alert-bar for documentation & UI
3
+ ------------------------------------------------------------
4
+ An icon + message in a tinted, bordered box. Theme-aware: tint
5
+ is mixed against --color-background-surface so it adapts to
6
+ light & dark; the icon uses a theme-aware foreground token.
7
+
8
+ Scales from a one-line note up to a rich panel (title + body +
9
+ action buttons + dismiss) and a full-width alert bar.
10
+
11
+ Simple:
12
+ <div class="callout"> (info — default)
13
+ <i data-lucide="info"></i>
14
+ <div class="callout-body">…<code>x</code>…</div>
15
+ </div>
16
+
17
+ Rich (vertical: title + body + actions + dismiss):
18
+ <div class="callout callout-warn">
19
+ <i data-lucide="alert-triangle"></i>
20
+ <div class="callout-content">
21
+ <div class="callout-title">Heading</div>
22
+ <div class="callout-body">Longer message…</div>
23
+ <div class="callout-actions">
24
+ <button class="btn btn-primary btn-sm">Confirm</button>
25
+ <button class="btn btn-ghost btn-sm">Later</button>
26
+ </div>
27
+ </div>
28
+ <button class="callout-dismiss" aria-label="Dismiss"><i data-lucide="x"></i></button>
29
+ </div>
30
+
31
+ Alert bar (full-width banner; actions + dismiss inline-right):
32
+ <div class="callout callout-bar callout-danger"> … </div>
33
+
34
+ Tonal: .callout-warn .callout-success .callout-danger .callout-neutral
35
+ Size: .callout-sm (compact)
36
+ Two props drive every tone:
37
+ --callout-tint raw family color → background + border mix
38
+ --callout-fg theme-aware foreground → icon color
39
+ ============================================================ */
40
+ .callout {
41
+ --callout-tint: var(--color-brand-secondary-500); /* info / royal */
42
+ --callout-fg: var(--color-foreground-accent); /* sky, theme-aware */
43
+ display: flex;
44
+ gap: var(--space-3);
45
+ padding: var(--space-4) var(--space-5);
46
+ border-radius: var(--radius-md);
47
+ background: color-mix(in srgb, var(--callout-tint) 8%, var(--color-background-surface));
48
+ border: 1px solid color-mix(in srgb, var(--callout-tint) 22%, transparent);
49
+ }
50
+
51
+ .callout > i,
52
+ .callout > svg,
53
+ .callout-icon {
54
+ width: 18px;
55
+ height: 18px;
56
+ flex-shrink: 0;
57
+ margin-top: 1px;
58
+ color: var(--callout-fg);
59
+ stroke-width: var(--icon-stroke);
60
+ }
61
+
62
+ /* content column — wrap title + body + actions for rich callouts */
63
+ .callout-content {
64
+ flex: 1;
65
+ min-width: 0;
66
+ display: flex;
67
+ flex-direction: column;
68
+ gap: var(--space-2);
69
+ }
70
+
71
+ .callout-title {
72
+ font-size: var(--fs-md);
73
+ font-weight: var(--w-semibold);
74
+ letter-spacing: var(--ls-title);
75
+ color: var(--color-foreground-default);
76
+ line-height: var(--lh-tight);
77
+ }
78
+
79
+ .callout-body {
80
+ font-size: var(--fs-sm);
81
+ color: var(--color-foreground-secondary);
82
+ line-height: var(--lh-snug);
83
+ }
84
+ .callout-body strong { color: var(--color-foreground-default); font-weight: var(--w-semibold); }
85
+ .callout-body code {
86
+ font-family: var(--font-mono);
87
+ font-size: var(--fs-xs);
88
+ color: var(--color-foreground-accent);
89
+ }
90
+ .callout-body a { color: var(--color-foreground-accent); text-decoration: none; font-weight: var(--w-semibold); }
91
+ .callout-body p { margin: 0 0 var(--space-2); }
92
+ .callout-body p:last-child { margin-bottom: 0; }
93
+ .callout-body ul { margin: var(--space-2) 0 0; padding-left: var(--space-5); }
94
+ .callout-body li { margin-bottom: var(--space-1); }
95
+
96
+ /* action row — buttons use the canonical .btn system.
97
+ Convention: keep callout actions SMALL (.btn-xs). Use .btn-secondary
98
+ for the action — its border stays legible on the tinted box, where
99
+ borderless ghost/tertiary read as plain text. .btn-ghost for the
100
+ soft/secondary option; .btn-danger for destructive actions. */
101
+ .callout-actions {
102
+ display: flex;
103
+ flex-wrap: wrap;
104
+ align-items: center;
105
+ gap: var(--space-2-5);
106
+ margin-top: var(--space-3);
107
+ }
108
+
109
+ /* Action buttons adopt the callout's TONE so they belong to the tinted box.
110
+ .btn-secondary → tonal soft button (tint fill + tint border + tint text);
111
+ .btn-ghost → picks up the tone for text/hover.
112
+ .btn-danger / .btn-primary stay canonical (solid) for strong/destructive. */
113
+ .callout-actions .btn-secondary {
114
+ background: color-mix(in srgb, var(--callout-tint) 14%, var(--color-background-surface));
115
+ border-color: color-mix(in srgb, var(--callout-tint) 34%, transparent);
116
+ color: var(--callout-fg);
117
+ }
118
+ .callout-actions .btn-secondary:hover {
119
+ background: color-mix(in srgb, var(--callout-tint) 22%, var(--color-background-surface));
120
+ border-color: color-mix(in srgb, var(--callout-tint) 50%, transparent);
121
+ }
122
+ .callout-actions .btn-ghost { color: var(--callout-fg); }
123
+ .callout-actions .btn-ghost:hover { background: color-mix(in srgb, var(--callout-tint) 12%, transparent); color: var(--callout-fg); }
124
+
125
+ /* dismiss — ghost icon button, top-aligned */
126
+ .callout-dismiss {
127
+ flex-shrink: 0;
128
+ align-self: flex-start;
129
+ display: inline-flex;
130
+ align-items: center;
131
+ justify-content: center;
132
+ width: 26px;
133
+ height: 26px;
134
+ margin: -2px -2px 0 var(--space-2);
135
+ padding: 0;
136
+ border: 0;
137
+ border-radius: var(--radius-sm);
138
+ background: transparent;
139
+ color: var(--color-foreground-muted);
140
+ cursor: pointer;
141
+ transition: var(--transition-fast);
142
+ }
143
+ .callout-dismiss:hover { background: color-mix(in srgb, var(--callout-tint) 14%, transparent); color: var(--color-foreground-default); }
144
+ .callout-dismiss > i, .callout-dismiss > svg { width: 16px; height: 16px; stroke-width: var(--icon-stroke); }
145
+
146
+ /* ---- tonal variants ---- */
147
+ .callout-warn { --callout-tint: var(--color-warning-500); --callout-fg: var(--color-feedback-warning-foreground); }
148
+ .callout-success { --callout-tint: var(--color-success-500); --callout-fg: var(--color-feedback-success-foreground); }
149
+ .callout-danger { --callout-tint: var(--color-danger-500); --callout-fg: var(--color-feedback-danger-foreground); }
150
+ .callout-neutral { --callout-tint: var(--color-neutral-500); --callout-fg: var(--color-foreground-muted); }
151
+
152
+ /* ---- compact size ---- */
153
+ .callout-sm { padding: var(--space-3) var(--space-4); gap: var(--space-2-5); }
154
+ .callout-sm > i, .callout-sm > svg, .callout-sm .callout-icon { width: 16px; height: 16px; }
155
+ .callout-sm .callout-body { font-size: var(--fs-xs); }
156
+ .callout-sm .callout-title { font-size: var(--fs-sm); }
157
+
158
+ /* ---- alert bar — full-width banner, items centered, actions right ---- */
159
+ .callout-bar {
160
+ align-items: center;
161
+ border-radius: 0;
162
+ border-left: 0;
163
+ border-right: 0;
164
+ padding: var(--space-3) var(--space-6);
165
+ border-left: 3px solid var(--callout-tint); /* accent rule for scannability */
166
+ }
167
+ .callout-bar > i, .callout-bar > svg, .callout-bar .callout-icon { margin-top: 0; }
168
+ .callout-bar .callout-content { flex-direction: row; align-items: center; gap: var(--space-3); flex-wrap: wrap; }
169
+ .callout-bar .callout-actions { margin-top: 0; margin-left: auto; }
170
+ .callout-bar .callout-dismiss { align-self: center; margin-top: 0; }
171
+ .callout-bar .callout-title { font-size: var(--fs-sm); }
172
+
173
+ /* rounded alert bar (when not edge-to-edge) */
174
+ .callout-bar.callout-rounded { border-radius: var(--radius-md); border-left-width: 3px; border-top: 1px solid color-mix(in srgb, var(--callout-tint) 22%, transparent); border-right: 1px solid color-mix(in srgb, var(--callout-tint) 22%, transparent); border-bottom: 1px solid color-mix(in srgb, var(--callout-tint) 22%, transparent); }
175
+
176
+ /* ---- Inline: content-sized, single-line (badges, hero notices) ---- */
177
+ .callout-inline { display: inline-flex; width: auto; align-items: center; }
178
+
179
+ /* ---- On inverse: glassy translucent tint + light text, for dark
180
+ surfaces (hero, photo). Mirrors .pill.on-inverse. ---- */
181
+ .callout.on-inverse {
182
+ background: color-mix(in srgb, var(--callout-tint) 20%, transparent);
183
+ border-color: color-mix(in srgb, var(--callout-tint) 38%, transparent);
184
+ color: var(--color-foreground-inverse-default);
185
+ -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
186
+ }
187
+ .callout.on-inverse > i, .callout.on-inverse > svg, .callout.on-inverse .callout-icon { color: var(--callout-fg-inv, currentColor); }
188
+ .callout.on-inverse .callout-title { color: var(--color-foreground-inverse-default); }
189
+ .callout.on-inverse .callout-body { color: var(--color-foreground-inverse-secondary); }
190
+ .callout.on-inverse .callout-body strong { color: var(--color-foreground-inverse-default); }
191
+ .callout-warn.on-inverse { --callout-fg-inv: var(--color-warning-300); }
192
+ .callout-success.on-inverse { --callout-fg-inv: var(--color-success-300); }
193
+ .callout-danger.on-inverse { --callout-fg-inv: var(--color-danger-300); }
194
+ .callout-info.on-inverse { --callout-fg-inv: var(--color-brand-accent-300); }
195
+ .callout-neutral.on-inverse { --callout-fg-inv: var(--color-foreground-inverse-muted); }