@actioneer/ads 0.5.9 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/ai-elements/agent-trace.d.ts +2 -2
- package/components/ai-elements/agent-trace.js +163 -104
- package/components/ai-elements/chain-of-thought.d.ts +2 -2
- package/components/ai-elements/chain-of-thought.js +1 -1
- package/components/ai-elements/index.d.ts +0 -5
- package/components/ai-elements/inline-citation.js +1 -1
- package/components/alert.d.ts +6 -6
- package/components/alert.js +89 -53
- package/components/answer-sources.d.ts +2 -6
- package/components/answer-sources.js +58 -60
- package/components/answer.d.ts +5 -0
- package/components/answer.js +311 -271
- package/components/assistant-ui/composer-harness.js +11 -14
- package/components/assistant-ui/composer.d.ts +3 -1
- package/components/assistant-ui/composer.js +148 -144
- package/components/assistant-ui/index.d.ts +0 -3
- package/components/assistant-ui/thread-context.d.ts +3 -1
- package/components/assistant-ui/thread.js +50 -42
- package/components/avatar.js +42 -42
- package/components/badge.d.ts +5 -6
- package/components/badge.js +13 -76
- package/components/body-page-header.d.ts +15 -0
- package/components/body-page-header.js +24 -0
- package/components/brand-loader.d.ts +0 -3
- package/components/brand-loader.js +10 -32
- package/components/breadcrumbs.d.ts +1 -8
- package/components/breadcrumbs.js +65 -78
- package/components/button.d.ts +1 -1
- package/components/button.js +55 -49
- package/components/card.js +19 -18
- package/components/chart.js +526 -503
- package/components/chip.d.ts +13 -1
- package/components/chip.js +93 -80
- package/components/collection-header.d.ts +17 -0
- package/components/collection-header.js +31 -0
- package/components/connector-card.d.ts +6 -6
- package/components/connector-card.js +31 -32
- package/components/date-range-picker.d.ts +26 -0
- package/components/date-range-picker.js +223 -0
- package/components/drawer.d.ts +19 -3
- package/components/drawer.js +143 -116
- package/components/dropdown.d.ts +1 -2
- package/components/dropdown.js +88 -89
- package/components/field.js +39 -34
- package/components/file-dropzone.js +1 -1
- package/components/index.d.ts +5 -4
- package/components/index.js +501 -546
- package/components/infinite-canvas.js +24 -24
- package/components/input-field.d.ts +18 -3
- package/components/input-field.js +88 -72
- package/components/input.js +16 -15
- package/components/modal.d.ts +31 -3
- package/components/modal.js +243 -169
- package/components/number-field.js +45 -42
- package/components/page-body.d.ts +12 -0
- package/components/page-body.js +18 -0
- package/components/pagination.js +36 -36
- package/components/panel.js +31 -28
- package/components/select.d.ts +21 -0
- package/components/select.js +189 -148
- package/components/setting-row.d.ts +6 -5
- package/components/setting-row.js +33 -32
- package/components/sidebar.d.ts +2 -0
- package/components/sidebar.js +165 -155
- package/components/skeleton.js +8 -7
- package/components/slider.js +1 -1
- package/components/surface-loader.d.ts +11 -0
- package/components/surface-loader.js +35 -0
- package/components/table.d.ts +16 -10
- package/components/table.js +426 -410
- package/components/tabs.d.ts +2 -0
- package/components/tabs.js +159 -294
- package/components/textarea.js +9 -9
- package/components/toast.d.ts +1 -1
- package/components/toast.js +181 -118
- package/components/tree.d.ts +5 -1
- package/components/tree.js +96 -63
- package/components/typography.d.ts +4 -4
- package/components/typography.js +13 -13
- package/components/ui/button.d.ts +1 -1
- package/components/ui/dialog.js +33 -33
- package/components/viz-charts.js +186 -183
- package/demo/components/add-to-artifact.js +8 -10
- package/fonts.css +2 -0
- package/lib/cn.js +11 -4
- package/lib/icons.d.ts +4 -0
- package/lib/icons.js +107 -106
- package/lib/interactive.d.ts +1 -1
- package/llms.txt +115 -152
- package/manifest.json +13730 -1084
- package/package.json +4 -2
- package/styles.css +365 -225
- package/theme.css +315 -176
- package/components/agent-icon.d.ts +0 -76
- package/components/agent-icon.js +0 -265
- package/components/ai-elements/queue.d.ts +0 -60
- package/components/ai-elements/queue.js +0 -193
- package/components/ai-elements/speech-input.d.ts +0 -16
- package/components/ai-elements/speech-input.js +0 -151
- package/components/ai-elements/task-progress.d.ts +0 -41
- package/components/ai-elements/task-progress.js +0 -224
- package/components/ai-elements/task.d.ts +0 -39
- package/components/ai-elements/task.js +0 -105
- package/components/ai-elements/voice.d.ts +0 -90
- package/components/ai-elements/voice.js +0 -496
- package/components/assistant-ui/follow-up-suggestions.d.ts +0 -11
- package/components/assistant-ui/follow-up-suggestions.js +0 -72
- package/components/assistant-ui/suggestions.d.ts +0 -7
- package/components/assistant-ui/suggestions.js +0 -19
- package/components/assistant-ui/voice.d.ts +0 -18
- package/components/link.d.ts +0 -14
- package/components/link.js +0 -72
- package/components/navbar.d.ts +0 -15
- package/components/navbar.js +0 -68
- package/components/pixel-icon.d.ts +0 -37
- package/components/pixel-icon.js +0 -859
package/styles.css
CHANGED
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
@import "tw-animate-css";
|
|
6
6
|
|
|
7
7
|
/* ---- Aribau Grotesk ---- */
|
|
8
|
+
@import "@fontsource-variable/jetbrains-mono/wght.css";
|
|
9
|
+
|
|
8
10
|
/* Aribau Grotesk — ADS UI typeface.
|
|
9
11
|
TWO physical faces, both served compressed (woff2):
|
|
10
12
|
• Regular → `font-normal` (weight 100–499)
|
|
@@ -37,7 +39,8 @@
|
|
|
37
39
|
/*
|
|
38
40
|
* ============================================================
|
|
39
41
|
* ADS 1.0 — Design Tokens
|
|
40
|
-
* Palette:
|
|
42
|
+
* Palette: soft neutral greys + product green
|
|
43
|
+
* Typeface: Aribau Grotesk
|
|
41
44
|
* ============================================================
|
|
42
45
|
*/
|
|
43
46
|
@theme {
|
|
@@ -48,91 +51,166 @@
|
|
|
48
51
|
--font-sans: "Aribau Grotesk", ui-sans-serif, system-ui, -apple-system,
|
|
49
52
|
"Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
|
50
53
|
|
|
51
|
-
/* Source code only (CodeBlock, inline Code).
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
--font-mono: ui-monospace, SFMono-Regular,
|
|
55
|
-
"Liberation Mono", "Courier New", monospace;
|
|
56
|
-
|
|
57
|
-
/* ---- Type scale ----
|
|
58
|
-
|
|
59
|
-
/*
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
--text-
|
|
63
|
-
--text-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
--text-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
--text-
|
|
72
|
-
--text-
|
|
73
|
-
--text-
|
|
74
|
-
--text-
|
|
75
|
-
--text-
|
|
76
|
-
--text-
|
|
77
|
-
--text-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
Each
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
--color-
|
|
88
|
-
--color-
|
|
89
|
-
--color-
|
|
90
|
-
--color-
|
|
91
|
-
--color-
|
|
92
|
-
--color-
|
|
93
|
-
--color-
|
|
94
|
-
--color-
|
|
95
|
-
--color-
|
|
96
|
-
--color-
|
|
97
|
-
--color-
|
|
98
|
-
|
|
99
|
-
--color-
|
|
54
|
+
/* Source code only (CodeBlock, inline Code). JetBrains Mono is bundled so
|
|
55
|
+
code renders consistently across platforms. Never use it for UI copy or
|
|
56
|
+
ordinary data. */
|
|
57
|
+
--font-mono: "JetBrains Mono Variable", ui-monospace, SFMono-Regular,
|
|
58
|
+
"SF Mono", Menlo, Consolas, "Liberation Mono", "Courier New", monospace;
|
|
59
|
+
|
|
60
|
+
/* ---- Type scale ---- five canonical steps: S · M · L · XL · 2XL.
|
|
61
|
+
Root stays 16px so spacing is unaffected. */
|
|
62
|
+
--text-s: 0.8125rem; /* 13px · captions, secondary text, table cells */
|
|
63
|
+
--text-s--line-height: 1.125rem; /* 18px */
|
|
64
|
+
--text-m: 0.9375rem; /* 15px · default body */
|
|
65
|
+
--text-m--line-height: 1.375rem; /* 22px */
|
|
66
|
+
--text-l: 1.1875rem; /* 19px · emphasized body, section headings */
|
|
67
|
+
--text-l--line-height: 1.625rem; /* 26px */
|
|
68
|
+
--text-xl: 1.5625rem; /* 25px · page titles */
|
|
69
|
+
--text-xl--line-height: 2rem; /* 32px */
|
|
70
|
+
--text-2xl: 1.9375rem; /* 31px · display */
|
|
71
|
+
--text-2xl--line-height: 2.375rem; /* 38px */
|
|
72
|
+
|
|
73
|
+
/* Compatibility aliases keep existing ADS consumers on the new scale. */
|
|
74
|
+
--text-xs: var(--text-s);
|
|
75
|
+
--text-xs--line-height: var(--text-s--line-height);
|
|
76
|
+
--text-sm: var(--text-s);
|
|
77
|
+
--text-sm--line-height: var(--text-s--line-height);
|
|
78
|
+
--text-base: var(--text-m);
|
|
79
|
+
--text-base--line-height: var(--text-m--line-height);
|
|
80
|
+
--text-lg: var(--text-l);
|
|
81
|
+
--text-lg--line-height: var(--text-l--line-height);
|
|
82
|
+
|
|
83
|
+
/* ---- Foundation palette ----
|
|
84
|
+
Canonical primitive names:
|
|
85
|
+
G1…G12 = Green · NG1…NG12 = Neutral Grey.
|
|
86
|
+
Each ramp progresses from light backgrounds and interactive fills through
|
|
87
|
+
supporting tones to solid colors and accessible text. Neutral UI borders
|
|
88
|
+
are intentionally restricted to NG3–NG5. ---- */
|
|
89
|
+
--color-g1: #f7f9f7;
|
|
90
|
+
--color-g2: #eef5f0;
|
|
91
|
+
--color-g3: #e2efe5;
|
|
92
|
+
--color-g4: #cce4d2;
|
|
93
|
+
--color-g5: #b4d8be;
|
|
94
|
+
--color-g6: #9bcbaa;
|
|
95
|
+
--color-g7: #7db78f;
|
|
96
|
+
--color-g8: #5c9c73;
|
|
97
|
+
--color-g9: #398457;
|
|
98
|
+
--color-g10: #2b7348;
|
|
99
|
+
--color-g11: #1f623b;
|
|
100
|
+
--color-g12: #183c28;
|
|
101
|
+
|
|
102
|
+
--color-ng1: #fafafa;
|
|
103
|
+
--color-ng2: #f6f6f6;
|
|
104
|
+
--color-ng3: #f1f1f1;
|
|
105
|
+
--color-ng4: #ececec;
|
|
106
|
+
--color-ng5: #e6e6e6;
|
|
107
|
+
--color-ng6: #dedede;
|
|
108
|
+
--color-ng7: #d4d4d4;
|
|
109
|
+
--color-ng8: #bdbdbd;
|
|
110
|
+
--color-ng9: #868686;
|
|
111
|
+
--color-ng10: #7c7b7b;
|
|
112
|
+
--color-ng11: #5e5d5d;
|
|
113
|
+
--color-ng12: #202020;
|
|
114
|
+
|
|
115
|
+
/* Deprecated Warm Grey names now resolve to Neutral Grey. Keep these
|
|
116
|
+
aliases so existing consumer utilities continue to render safely. */
|
|
117
|
+
--color-wg1: var(--color-ng1);
|
|
118
|
+
--color-wg2: var(--color-ng2);
|
|
119
|
+
--color-wg3: var(--color-ng3);
|
|
120
|
+
--color-wg4: var(--color-ng4);
|
|
121
|
+
--color-wg5: var(--color-ng5);
|
|
122
|
+
--color-wg6: var(--color-ng6);
|
|
123
|
+
--color-wg7: var(--color-ng7);
|
|
124
|
+
--color-wg8: var(--color-ng8);
|
|
125
|
+
--color-wg9: var(--color-ng9);
|
|
126
|
+
--color-wg10: var(--color-ng10);
|
|
127
|
+
--color-wg11: var(--color-ng11);
|
|
128
|
+
--color-wg12: var(--color-ng12);
|
|
129
|
+
|
|
130
|
+
--color-white: #ffffff;
|
|
131
|
+
|
|
132
|
+
/* Compatibility aliases preserve the existing ADS utility/API surface. */
|
|
133
|
+
--color-green-50: var(--color-g1);
|
|
134
|
+
--color-green-100: var(--color-g2);
|
|
135
|
+
--color-green-200: var(--color-g3);
|
|
136
|
+
--color-green-300: var(--color-g4);
|
|
137
|
+
--color-green-400: var(--color-g5);
|
|
138
|
+
--color-green-500: var(--color-g6);
|
|
139
|
+
--color-green-600: var(--color-g7);
|
|
140
|
+
--color-green-700: var(--color-g8);
|
|
141
|
+
--color-green-800: var(--color-g9);
|
|
142
|
+
--color-green-850: var(--color-g10);
|
|
143
|
+
--color-green-900: var(--color-g11);
|
|
144
|
+
--color-green-950: var(--color-g12);
|
|
145
|
+
|
|
146
|
+
--color-grey-50: var(--color-ng1);
|
|
147
|
+
--color-grey-100: var(--color-ng2);
|
|
148
|
+
--color-grey-200: var(--color-ng3);
|
|
149
|
+
--color-grey-300: var(--color-ng4);
|
|
150
|
+
--color-grey-400: var(--color-ng5);
|
|
151
|
+
--color-grey-500: var(--color-ng6);
|
|
152
|
+
--color-grey-600: var(--color-ng7);
|
|
153
|
+
--color-grey-700: var(--color-ng8);
|
|
154
|
+
--color-grey-800: var(--color-ng9);
|
|
155
|
+
--color-grey-850: var(--color-ng10);
|
|
156
|
+
--color-grey-900: var(--color-ng11);
|
|
157
|
+
--color-grey-950: var(--color-ng12);
|
|
158
|
+
|
|
159
|
+
--color-ink-50: var(--color-ng1);
|
|
160
|
+
--color-ink-100: var(--color-ng2);
|
|
161
|
+
--color-ink-200: var(--color-ng3);
|
|
162
|
+
--color-ink-300: var(--color-ng4);
|
|
163
|
+
--color-ink-400: var(--color-ng5);
|
|
164
|
+
--color-ink-500: var(--color-ng6);
|
|
165
|
+
--color-ink-600: var(--color-ng7);
|
|
166
|
+
--color-ink-700: var(--color-ng8);
|
|
167
|
+
--color-ink-800: var(--color-ng9);
|
|
168
|
+
--color-ink-850: var(--color-ng10);
|
|
169
|
+
--color-ink-900: var(--color-ng11);
|
|
170
|
+
--color-ink-950: var(--color-ng12);
|
|
100
171
|
|
|
101
172
|
/* ---- Semantic accent ramps ---- */
|
|
102
|
-
/* Success
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
--color-success-
|
|
106
|
-
--color-success-
|
|
107
|
-
--color-success-
|
|
173
|
+
/* Success uses the lichen lime family and stays status-only. The original
|
|
174
|
+
soft/base/deep anchors map to 50/500/600; 100 and 400 bridge the soft fill
|
|
175
|
+
and base, while 700 deepens the family enough for AA text on White. */
|
|
176
|
+
--color-success-50: #e4efcf;
|
|
177
|
+
--color-success-100: #d4e5b5;
|
|
178
|
+
--color-success-300: #c4dc9b;
|
|
179
|
+
--color-success-400: #b4d281;
|
|
180
|
+
--color-success-500: #a3c765;
|
|
181
|
+
--color-success-600: #6e8f30;
|
|
182
|
+
--color-success-700: #516923;
|
|
108
183
|
|
|
109
184
|
--color-warning-50: #fffaeb;
|
|
110
185
|
--color-warning-100: #fef0c7;
|
|
186
|
+
--color-warning-300: #f9d68f;
|
|
187
|
+
--color-warning-400: #f4bc57;
|
|
111
188
|
--color-warning-500: #f79009;
|
|
112
189
|
--color-warning-600: #dc6803;
|
|
113
190
|
--color-warning-700: #b54708;
|
|
114
191
|
|
|
115
192
|
--color-danger-50: #fef3f2;
|
|
116
193
|
--color-danger-100: #fee4e2;
|
|
194
|
+
--color-danger-300: #f8bab5;
|
|
195
|
+
--color-danger-400: #f18f87;
|
|
117
196
|
--color-danger-500: #f04438;
|
|
118
197
|
--color-danger-600: #d92d20;
|
|
119
198
|
--color-danger-700: #b42318;
|
|
120
199
|
|
|
121
200
|
--color-info-50: #eff8ff;
|
|
122
201
|
--color-info-100: #d1e9ff;
|
|
202
|
+
--color-info-300: #a7d3f8;
|
|
203
|
+
--color-info-400: #7dbdf1;
|
|
123
204
|
--color-info-500: #2e90fa;
|
|
124
205
|
--color-info-600: #1570ef;
|
|
125
206
|
--color-info-700: #175cd3;
|
|
126
207
|
|
|
127
|
-
/* ---- Data-viz accents ----
|
|
208
|
+
/* ---- Data-viz accents ---- two small ramps for charts & illustration.
|
|
128
209
|
deep = text/lines · base = fills · soft = backgrounds. Separate from the
|
|
129
210
|
semantic status ramps above; these carry data, not product identity. */
|
|
130
211
|
--color-cyan-soft: #c7efe9; /* Cyan — vivid cool contrast; 2nd series, links */
|
|
131
212
|
--color-cyan-base: #12b5a5;
|
|
132
213
|
--color-cyan-deep: #0a7e82;
|
|
133
|
-
--color-lime-soft: #e4efcf; /* Lichen lime — energetic pop from the mark */
|
|
134
|
-
--color-lime-base: #a3c765;
|
|
135
|
-
--color-lime-deep: #6e8f30;
|
|
136
214
|
--color-amber-soft: #fce6c0; /* Amber — warm pop; highlights, "new" */
|
|
137
215
|
--color-amber-base: #f3a72e;
|
|
138
216
|
--color-amber-deep: #b57414;
|
|
@@ -140,18 +218,21 @@
|
|
|
140
218
|
/* Demo logo indigo — source for artifact canvas wash. */
|
|
141
219
|
--color-brand-mark: #2e1065;
|
|
142
220
|
|
|
143
|
-
/* ---- Radii ----
|
|
144
|
-
|
|
145
|
-
and floating UI; 16px = cards and large surfaces. The repeated aliases
|
|
146
|
-
keep the familiar Tailwind role names while capping surfaces at 16px. */
|
|
221
|
+
/* ---- Radii ---- five canonical steps: XS · S · M · L · XL.
|
|
222
|
+
M (6px) is the default corner radius. */
|
|
147
223
|
--radius-xs: 0.125rem; /* 2px · micro details */
|
|
148
|
-
--radius-
|
|
149
|
-
--radius-
|
|
150
|
-
--radius-
|
|
151
|
-
--radius-xl:
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
--radius-
|
|
224
|
+
--radius-s: 0.25rem; /* 4px · compact controls */
|
|
225
|
+
--radius-m: 0.375rem; /* 6px · default controls and surfaces */
|
|
226
|
+
--radius-l: 0.5rem; /* 8px · menus and cards */
|
|
227
|
+
--radius-xl: 0.75rem; /* 12px · large panels and feature surfaces */
|
|
228
|
+
|
|
229
|
+
/* Compatibility aliases preserve existing ADS utilities. */
|
|
230
|
+
--radius-sm: var(--radius-s);
|
|
231
|
+
--radius-md: var(--radius-m);
|
|
232
|
+
--radius-lg: var(--radius-l);
|
|
233
|
+
--radius-2xl: var(--radius-xl);
|
|
234
|
+
--radius-3xl: var(--radius-xl);
|
|
235
|
+
--radius-4xl: var(--radius-xl);
|
|
155
236
|
/* Shape-only exception for avatars, icon buttons, progress tracks, chips,
|
|
156
237
|
and badges. It is not part of the corner-radius scale. */
|
|
157
238
|
--radius-full: 9999px;
|
|
@@ -161,30 +242,37 @@
|
|
|
161
242
|
convention). */
|
|
162
243
|
--radius-dot: 2px;
|
|
163
244
|
|
|
164
|
-
/* ---- Elevation ----
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
--shadow-
|
|
169
|
-
|
|
170
|
-
|
|
245
|
+
/* ---- Elevation ---- Shopify-inspired 0–600 ladder, recolored with NG12.
|
|
246
|
+
Geometry and opacity increase together; static surfaces remain at 0. */
|
|
247
|
+
--shadow-0: none;
|
|
248
|
+
--shadow-100: 0 1px 0 0 rgb(32 32 32 / 0.07);
|
|
249
|
+
--shadow-200: 0 3px 1px -1px rgb(32 32 32 / 0.07);
|
|
250
|
+
--shadow-300: 0 4px 6px -2px rgb(32 32 32 / 0.2);
|
|
251
|
+
--shadow-400: 0 8px 16px -4px rgb(32 32 32 / 0.22);
|
|
252
|
+
--shadow-500: 0 12px 20px -8px rgb(32 32 32 / 0.24);
|
|
253
|
+
--shadow-600: 0 20px 20px -8px rgb(32 32 32 / 0.28);
|
|
254
|
+
|
|
255
|
+
/* Compatibility hook stays flat. Apply a numbered level only when the user
|
|
256
|
+
explicitly requests elevation for a named surface. */
|
|
257
|
+
--shadow-elevation: var(--shadow-0);
|
|
171
258
|
|
|
172
259
|
/* Pinned-table-column smudges — whisper-soft directional casts shown only
|
|
173
260
|
while content is hidden behind a sticky column (Table is scroll-aware).
|
|
174
|
-
Deep negative spread keeps the edge feathered; the tint is neutral
|
|
261
|
+
Deep negative spread keeps the edge feathered; the tint is neutral grey. */
|
|
175
262
|
--shadow-table-smudge-left: 8px 0 24px -14px rgb(32 32 32 / 0.05);
|
|
176
263
|
--shadow-table-smudge-right: -8px 0 24px -14px rgb(32 32 32 / 0.05);
|
|
177
264
|
|
|
178
|
-
/* ----
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
--inner-glow-cta: inset 0 1px 0
|
|
182
|
-
inset 0
|
|
183
|
-
inset 0
|
|
184
|
-
/*
|
|
185
|
-
|
|
186
|
-
--inner-glow-fill: inset 0 1px 0 0
|
|
187
|
-
inset 0
|
|
265
|
+
/* ---- Button inset depth ---- Polaris-inspired stacked inner edges. The
|
|
266
|
+
lower contact line, quiet inner outline, and half-pixel top catch make
|
|
267
|
+
solid actions feel tactile without adding a decorative outer border. */
|
|
268
|
+
--inner-glow-cta: inset 0 -1px 0 1px rgb(32 32 32 / 0.22),
|
|
269
|
+
inset 0 0 0 1px rgb(32 32 32 / 0.12),
|
|
270
|
+
inset 0 0.5px 0 1.5px rgb(255 255 255 / 0.28);
|
|
271
|
+
/* Compatibility treatment for explicitly raised light fills. Its visible
|
|
272
|
+
edge is entirely inset, so it keeps a transparent outer border. */
|
|
273
|
+
--inner-glow-fill: inset 0 -1px 0 0 var(--border-primary),
|
|
274
|
+
inset 0 0 0 1px rgb(32 32 32 / 0.1),
|
|
275
|
+
inset 0 0.5px 0 1.5px rgb(255 255 255 / 0.86);
|
|
188
276
|
/* Text fields — a whisper of inset depth so the writing surface reads
|
|
189
277
|
recessed into the page (persists through hover/focus/invalid). */
|
|
190
278
|
--inner-glow-field: inset 0 1px 2px 0 rgb(32 32 32 / 0.06);
|
|
@@ -196,7 +284,7 @@
|
|
|
196
284
|
--sidebar-item: 2rem; /* 32px — collapsed rail hit target (square) */
|
|
197
285
|
--sidebar-logo: 1.25rem; /* 20px — brand mark, centered in a --sidebar-item square */
|
|
198
286
|
--sidebar-text-indent: 2.375rem; /* px-3 + icon size-4 + gap-2.5 — history rows align to nav-item text */
|
|
199
|
-
--sidebar-navigation-text-size: var(--text-
|
|
287
|
+
--sidebar-navigation-text-size: var(--text-m); /* 15px — sidebar actions, items, history, and account text */
|
|
200
288
|
--sidebar-section-label-size: 0.8125rem; /* 13px — section and history labels */
|
|
201
289
|
--panel-header-height: 2.75rem; /* 44px — Panel / toolbar header */
|
|
202
290
|
--aside-width: 20rem; /* 320px — right-hand panel column */
|
|
@@ -210,10 +298,11 @@
|
|
|
210
298
|
--thread-max-width: 44rem; /* chat column cap — readable prose measure, all panes */
|
|
211
299
|
--thread-max-width-wide: 64rem; /* rich-content breakout cap (tables/charts/tool cards) on wide panes; prose keeps --thread-max-width */
|
|
212
300
|
--composer-bg: var(--elevated); /* pure white composer surface */
|
|
213
|
-
--composer-radius: var(--radius-
|
|
301
|
+
--composer-radius: var(--radius-xl);
|
|
214
302
|
--composer-padding: 0.5rem;
|
|
215
|
-
--composer-placeholder-max-h: calc(var(--text-
|
|
303
|
+
--composer-placeholder-max-h: calc(var(--text-m--line-height) * 2); /* rotating placeholder clamp — two lines of the input's own rhythm, so it can never overlap the accessory row */
|
|
216
304
|
--chat-texture-opacity: 0.06; /* welcome-state halftone wash */
|
|
305
|
+
--ask-hero-min-height: 30rem; /* keeps the empty-state prompt visually primary before recent work */
|
|
217
306
|
}
|
|
218
307
|
|
|
219
308
|
/*
|
|
@@ -252,7 +341,15 @@
|
|
|
252
341
|
--color-background: var(--background);
|
|
253
342
|
--color-foreground: var(--foreground);
|
|
254
343
|
|
|
255
|
-
/*
|
|
344
|
+
/* Contextual text hierarchies — three accessible levels per surface. */
|
|
345
|
+
--color-on-white-primary: var(--text-on-white-primary);
|
|
346
|
+
--color-on-white-secondary: var(--text-on-white-secondary);
|
|
347
|
+
--color-on-white-tertiary: var(--text-on-white-tertiary);
|
|
348
|
+
--color-on-warm-grey-primary: var(--text-on-warm-grey-primary);
|
|
349
|
+
--color-on-warm-grey-secondary: var(--text-on-warm-grey-secondary);
|
|
350
|
+
--color-on-warm-grey-tertiary: var(--text-on-warm-grey-tertiary);
|
|
351
|
+
|
|
352
|
+
/* Context-free compatibility aliases remain conservative. */
|
|
256
353
|
--color-primary: var(--text-primary);
|
|
257
354
|
--color-secondary: var(--text-secondary);
|
|
258
355
|
--color-tertiary: var(--text-tertiary);
|
|
@@ -266,6 +363,15 @@
|
|
|
266
363
|
|
|
267
364
|
--color-card: var(--card);
|
|
268
365
|
--color-card-foreground: var(--card-foreground);
|
|
366
|
+
--color-specimen-stroke: var(--specimen-stroke);
|
|
367
|
+
|
|
368
|
+
/* Primary CTA role — restrained Studio green, used sparingly. */
|
|
369
|
+
--color-action-primary: var(--action-primary);
|
|
370
|
+
--color-action-primary-foreground: var(--action-primary-foreground);
|
|
371
|
+
--color-action-primary-hover: var(--action-primary-hover);
|
|
372
|
+
--color-action-primary-text: var(--action-primary-text);
|
|
373
|
+
--color-action-primary-soft: var(--action-primary-soft);
|
|
374
|
+
--color-field-focus: var(--field-focus);
|
|
269
375
|
|
|
270
376
|
/* Compatibility action role — neutral ink, never a colored primary hue. */
|
|
271
377
|
--color-brand: var(--brand);
|
|
@@ -273,27 +379,31 @@
|
|
|
273
379
|
--color-brand-hover: var(--brand-hover);
|
|
274
380
|
--color-brand-text: var(--brand-text);
|
|
275
381
|
|
|
276
|
-
/* Quiet fill —
|
|
382
|
+
/* Quiet fill — avatars, chips, and disabled controls */
|
|
277
383
|
--color-fill: var(--fill);
|
|
278
384
|
--color-fill-foreground: var(--fill-foreground);
|
|
279
385
|
--color-table-shell: var(--table-shell);
|
|
386
|
+
--color-table-stroke: var(--table-stroke);
|
|
387
|
+
--color-table-header-foreground: var(--table-header-foreground);
|
|
280
388
|
|
|
281
389
|
--color-artifact-canvas: var(--artifact-canvas);
|
|
282
390
|
|
|
283
391
|
--color-accent: var(--accent);
|
|
284
392
|
--color-accent-foreground: var(--accent-foreground);
|
|
285
393
|
|
|
286
|
-
/* success-700
|
|
394
|
+
/* Lichen success-700 clears AA on White and both success soft fills;
|
|
395
|
+
success-600 is reserved for non-text marks because its 3.73:1 contrast
|
|
396
|
+
on White does not clear body-text AA. */
|
|
287
397
|
--color-success: var(--color-success-700);
|
|
288
|
-
--color-success-foreground:
|
|
398
|
+
--color-success-foreground: var(--color-white);
|
|
289
399
|
/* Amber-500 fill kept (it IS the caution signal); dark ink foreground
|
|
290
400
|
instead of white = 6.94:1 (white on amber was 2.35:1, failed even 3:1). */
|
|
291
401
|
--color-warning: var(--color-warning-500);
|
|
292
|
-
--color-warning-foreground: var(--color-
|
|
402
|
+
--color-warning-foreground: var(--color-ng12);
|
|
293
403
|
--color-danger: var(--color-danger-600);
|
|
294
|
-
--color-danger-foreground:
|
|
404
|
+
--color-danger-foreground: var(--color-white);
|
|
295
405
|
--color-info: var(--color-info-600);
|
|
296
|
-
--color-info-foreground:
|
|
406
|
+
--color-info-foreground: var(--color-white);
|
|
297
407
|
|
|
298
408
|
--color-border-primary: var(--border-primary);
|
|
299
409
|
--color-border-secondary: var(--border-secondary);
|
|
@@ -301,6 +411,9 @@
|
|
|
301
411
|
--color-border: var(--border);
|
|
302
412
|
--color-border-strong: var(--border-strong);
|
|
303
413
|
--color-input: var(--input);
|
|
414
|
+
--color-menu-stroke: var(--menu-stroke);
|
|
415
|
+
--color-toast-stroke: var(--toast-stroke);
|
|
416
|
+
--color-tree-stroke: var(--tree-stroke);
|
|
304
417
|
--color-ring: var(--ring);
|
|
305
418
|
--color-overlay: var(--overlay);
|
|
306
419
|
|
|
@@ -312,10 +425,10 @@
|
|
|
312
425
|
* shadcn's grey/black defaults. The raw --sidebar-*/--popover values live in
|
|
313
426
|
* :root below.
|
|
314
427
|
*/
|
|
315
|
-
--color-primary-foreground:
|
|
316
|
-
--color-secondary-foreground:
|
|
428
|
+
--color-primary-foreground: var(--color-white);
|
|
429
|
+
--color-secondary-foreground: var(--color-white);
|
|
317
430
|
--color-destructive: var(--color-danger-600);
|
|
318
|
-
--color-destructive-foreground:
|
|
431
|
+
--color-destructive-foreground: var(--color-white);
|
|
319
432
|
--color-popover: var(--popover);
|
|
320
433
|
--color-popover-foreground: var(--popover-foreground);
|
|
321
434
|
|
|
@@ -331,62 +444,79 @@
|
|
|
331
444
|
|
|
332
445
|
/* ---- Theme (light only) ---- */
|
|
333
446
|
:root {
|
|
334
|
-
/*
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
--
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
--text-primary: var(--color-
|
|
346
|
-
--text-secondary: var(--color-
|
|
347
|
-
--text-tertiary:
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
--
|
|
352
|
-
|
|
353
|
-
--
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
--
|
|
357
|
-
--
|
|
447
|
+
/* Surfaces and achromatic text/actions point into NG; the primary CTA
|
|
448
|
+
points into G. */
|
|
449
|
+
--background: var(--color-ng2); /* step 2 · canvas */
|
|
450
|
+
--foreground: var(--color-ng12); /* step 12 */
|
|
451
|
+
|
|
452
|
+
/* Both surface contexts point directly into the approved NG text steps.
|
|
453
|
+
NG10 is the tertiary/de-emphasis step; it does not clear 4.5:1 for normal
|
|
454
|
+
body text on these surfaces, so reserve it for nonessential content. */
|
|
455
|
+
--text-on-white-primary: var(--color-ng12); /* 16.29:1 · AAA */
|
|
456
|
+
--text-on-white-secondary: var(--color-ng11); /* 6.56:1 · AA */
|
|
457
|
+
--text-on-white-tertiary: var(--color-ng10); /* 4.22:1 */
|
|
458
|
+
--text-on-warm-grey-primary: var(--color-ng12); /* legacy name · neutral canvas */
|
|
459
|
+
--text-on-warm-grey-secondary: var(--color-ng11); /* legacy name · neutral canvas */
|
|
460
|
+
--text-on-warm-grey-tertiary: var(--color-ng10); /* legacy name · neutral canvas */
|
|
461
|
+
|
|
462
|
+
/* Existing context-free utilities remain compatibility aliases. Their
|
|
463
|
+
tertiary value stays conservative across NG2–NG4 and White. */
|
|
464
|
+
--text-primary: var(--color-ng12); /* ~12.5:1 AAA (min surf) */
|
|
465
|
+
--text-secondary: var(--color-ng11); /* ~5.0:1 AA (min surf) */
|
|
466
|
+
--text-tertiary: #625f5c; /* ~4.53:1 AA (min surf) */
|
|
467
|
+
|
|
468
|
+
--surface: var(--color-ng3); /* step 3 · tinted canvas */
|
|
469
|
+
--surface-foreground: var(--color-ng12);
|
|
470
|
+
--elevated: var(--color-white); /* pure white base */
|
|
471
|
+
|
|
472
|
+
--muted: var(--color-ng4); /* step 4 */
|
|
473
|
+
--muted-foreground: var(--color-ng11); /* step 11 · readable UI text */
|
|
474
|
+
|
|
475
|
+
--card: var(--color-white); /* pure white base */
|
|
476
|
+
--card-foreground: var(--color-ng12);
|
|
477
|
+
|
|
478
|
+
/* Studio green is deliberately isolated to the primary CTA role (roughly
|
|
479
|
+
5–10% of a screen). Selection controls keep using neutral `brand` below,
|
|
480
|
+
so tabs, switches, radios, and progress never inherit CTA color. */
|
|
481
|
+
--action-primary: var(--color-g9);
|
|
482
|
+
--action-primary-foreground: var(--color-white);
|
|
483
|
+
--action-primary-hover: var(--color-g10);
|
|
484
|
+
--action-primary-text: var(--color-g11);
|
|
485
|
+
--action-primary-soft: var(--color-g3);
|
|
358
486
|
|
|
359
487
|
/* Neutral action role. The `brand` name remains as a compatibility API,
|
|
360
|
-
|
|
361
|
-
--brand: var(--color-
|
|
362
|
-
--brand-foreground:
|
|
363
|
-
--brand-hover: var(--color-
|
|
364
|
-
--brand-text: var(--color-
|
|
365
|
-
|
|
366
|
-
/*
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
/* Quiet component fill. Radix step 3 is the first interactive-background
|
|
488
|
+
and shared selection/control states intentionally remain achromatic. */
|
|
489
|
+
--brand: var(--color-ng12); /* darkest neutral action */
|
|
490
|
+
--brand-foreground: var(--color-white);
|
|
491
|
+
--brand-hover: var(--color-ng11); /* lighter hover lift */
|
|
492
|
+
--brand-text: var(--color-ng12); /* action text / links */
|
|
493
|
+
|
|
494
|
+
/* Interactive rows lift one step above the NG1 zebra band. */
|
|
495
|
+
--table-row-hover: var(--color-ng2);
|
|
496
|
+
--table-row-selected: var(--color-ng1);
|
|
497
|
+
|
|
498
|
+
/* Quiet component fill. NG3 is the first interactive-background
|
|
373
499
|
step, so this remains visible on both white cards and the step-2 canvas. */
|
|
374
|
-
--fill: var(--color-
|
|
375
|
-
--fill-foreground: var(--color-
|
|
376
|
-
|
|
377
|
-
--accent: var(--color-
|
|
378
|
-
--accent-foreground: var(--color-
|
|
379
|
-
|
|
380
|
-
/*
|
|
381
|
-
tertiary
|
|
382
|
-
|
|
383
|
-
--border-primary: var(--color-
|
|
384
|
-
--border-secondary: var(--color-
|
|
385
|
-
--border-tertiary: var(--color-
|
|
500
|
+
--fill: var(--color-ng3); /* step 3 · default component fill */
|
|
501
|
+
--fill-foreground: var(--color-ng12);
|
|
502
|
+
|
|
503
|
+
--accent: var(--color-ng5); /* step 5 · active / selected wash */
|
|
504
|
+
--accent-foreground: var(--color-ng12);
|
|
505
|
+
|
|
506
|
+
/* Every neutral border stays within the consecutive NG3–NG5 range:
|
|
507
|
+
tertiary is the quietest 1px divider, secondary is the default hairline,
|
|
508
|
+
and primary is the strongest neutral edge. */
|
|
509
|
+
--border-primary: var(--color-ng5); /* step 5 · strongest */
|
|
510
|
+
--border-secondary: var(--color-ng4); /* step 4 · default */
|
|
511
|
+
--border-tertiary: var(--color-ng3); /* step 3 · faintest */
|
|
386
512
|
/* Legacy aliases point into the scale so existing utilities keep resolving. */
|
|
387
513
|
--border: var(--border-secondary); /* default hairline / separator */
|
|
388
514
|
--border-strong: var(--border-primary); /* emphasized / hover / selected */
|
|
389
|
-
--input: var(--
|
|
515
|
+
--input: var(--color-ng4); /* form-control edge */
|
|
516
|
+
--menu-stroke: var(--color-ng4); /* dropdown edge + separator */
|
|
517
|
+
--toast-stroke: var(--color-ng4); /* toast card edge */
|
|
518
|
+
--tree-stroke: var(--color-ng4); /* tree connector rail + elbows */
|
|
519
|
+
--field-focus: var(--color-g8); /* subtle green focused-control edge */
|
|
390
520
|
|
|
391
521
|
/* Ripple — the appearance wash that radiates from a floating surface's
|
|
392
522
|
origin corner as it opens (Dropdown/Popover/Select/Modal…). A soft ink
|
|
@@ -394,29 +524,30 @@
|
|
|
394
524
|
the `Ripple` component. */
|
|
395
525
|
--ripple-tint: color-mix(in srgb, var(--brand) 20%, transparent);
|
|
396
526
|
|
|
397
|
-
/* Stroke width —
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
the ink scale. Components pass these into non-CSS renderers (Recharts,
|
|
407
|
-
React Flow, the Paper/WebGL texture) so no component carries a raw ink-*
|
|
408
|
-
value. Same DS pattern as the data-viz --color-chart-* palette. */
|
|
527
|
+
/* Stroke width — every standard UI border is exactly 1px. */
|
|
528
|
+
--stroke-width: 1px;
|
|
529
|
+
--ring: color-mix(in srgb, var(--color-ng12) 50%, transparent); /* NG12 @ 50% */
|
|
530
|
+
--overlay: color-mix(in srgb, var(--color-ng12) 50%, transparent); /* NG12 @ 50% */
|
|
531
|
+
|
|
532
|
+
/* Functional / domain tokens — named for their render role, pointing into
|
|
533
|
+
the canonical NG palette. Components pass these into non-CSS renderers
|
|
534
|
+
(Recharts, React Flow, the Paper/WebGL texture) so no component carries a
|
|
535
|
+
raw primitive value. Same DS pattern as the data-viz palette. */
|
|
409
536
|
--chart-axis: var(--border-tertiary); /* axis lines + de-emphasised marks */
|
|
410
|
-
--chart-grid: var(--color-
|
|
411
|
-
--chart-track: var(--color-
|
|
412
|
-
--chart-context: var(--color-
|
|
537
|
+
--chart-grid: var(--color-ng3); /* quieter than axes, visible on white */
|
|
538
|
+
--chart-track: var(--color-ng3); /* funnel / progress track */
|
|
539
|
+
--chart-context: var(--color-ng6); /* de-emphasised context series */
|
|
540
|
+
--chart-active-bar-opacity: 0.68; /* hover lightens a bar while preserving its series hue */
|
|
413
541
|
--canvas-edge: var(--border-secondary);/* infinite-canvas edges / connectors */
|
|
414
|
-
--texture-ink: var(--color-
|
|
415
|
-
--table-shell: var(--color-
|
|
542
|
+
--texture-ink: var(--color-ng12); /* brand-texture / pixel-blast marks */
|
|
543
|
+
--table-shell: var(--color-white); /* simplified single-surface table */
|
|
544
|
+
--table-stroke: var(--color-ng3); /* table outline + row separators */
|
|
545
|
+
--table-header-foreground: var(--color-ng10); /* secondary table heading text */
|
|
546
|
+
--specimen-stroke: var(--color-ng3); /* showcase preview + variant-group frames */
|
|
416
547
|
--table-scroll-hint: rgb(32 32 32 / 0.04); /* right-edge "more columns" wash */
|
|
417
|
-
--surface-inverse: var(--color-
|
|
418
|
-
--surface-inverse-soft: var(--color-
|
|
419
|
-
--artifact-canvas: color-mix(in srgb, var(--color-brand-mark) 7%,
|
|
548
|
+
--surface-inverse: var(--color-ng12); /* dark hero / inverse surface base */
|
|
549
|
+
--surface-inverse-soft: var(--color-ng11);/* dark hero gradient falloff */
|
|
550
|
+
--artifact-canvas: color-mix(in srgb, var(--color-brand-mark) 7%, var(--color-white));
|
|
420
551
|
|
|
421
552
|
/* shadcn-compat raw surfaces — so a downstream shadcn Sidebar / Popover
|
|
422
553
|
(or an inline `var(--sidebar)` / `var(--popover)`) resolves to the ADS
|
|
@@ -437,9 +568,10 @@
|
|
|
437
568
|
|
|
438
569
|
/*
|
|
439
570
|
* ============================================================
|
|
440
|
-
*
|
|
571
|
+
* Standard strokes — ADS UI borders are 1px (principle 1).
|
|
441
572
|
* Override Tailwind's single-width border utilities to the
|
|
442
573
|
* --stroke-width token. Authored after `}
|
|
574
|
+
.border { border-width: var(--stroke-width); }
|
|
443
575
|
.border-t { border-top-width: var(--stroke-width); }
|
|
444
576
|
.border-r { border-right-width: var(--stroke-width); }
|
|
445
577
|
.border-b { border-bottom-width: var(--stroke-width); }
|
|
@@ -461,6 +593,15 @@
|
|
|
461
593
|
0% { opacity: 0.6; transform: scale(0.15); }
|
|
462
594
|
100% { opacity: 0; transform: scale(1.08); }
|
|
463
595
|
}
|
|
596
|
+
|
|
597
|
+
@keyframes ads-toast-progress {
|
|
598
|
+
from {
|
|
599
|
+
transform: scaleX(1);
|
|
600
|
+
}
|
|
601
|
+
to {
|
|
602
|
+
transform: scaleX(0);
|
|
603
|
+
}
|
|
604
|
+
}
|
|
464
605
|
.ads-ripple {
|
|
465
606
|
position: absolute;
|
|
466
607
|
inset: 0;
|
|
@@ -484,12 +625,12 @@
|
|
|
484
625
|
* `primary-foreground` companion (its base `--color-primary` is the ADS
|
|
485
626
|
* text-hierarchy token, which collides with the generated `primary` color),
|
|
486
627
|
* so the vendored shadcn button's icon rendered invisible (dark-on-dark) on
|
|
487
|
-
* `bg-primary`. Define the two utilities explicitly against
|
|
628
|
+
* `bg-primary`. Define the two utilities explicitly against White.
|
|
488
629
|
* ============================================================
|
|
489
630
|
*/
|
|
490
631
|
@layer utilities {
|
|
491
|
-
.text-primary-foreground { color:
|
|
492
|
-
.bg-primary-foreground { background-color:
|
|
632
|
+
.text-primary-foreground { color: var(--color-white); }
|
|
633
|
+
.bg-primary-foreground { background-color: var(--color-white); }
|
|
493
634
|
}
|
|
494
635
|
/* ---- Base, keyframes & component helpers ---- */
|
|
495
636
|
/* Hide scrollbars app-wide but keep scrollability. The demo UI is filled
|
|
@@ -506,6 +647,42 @@
|
|
|
506
647
|
display: none;
|
|
507
648
|
}
|
|
508
649
|
|
|
650
|
+
/* Ask landing: Hex's hierarchy translated into ADS tokens. The same quiet
|
|
651
|
+
texture spans the complete canvas; G2-G8 concentrate focus at the prompt. */
|
|
652
|
+
.ask-empty-state {
|
|
653
|
+
background-color: var(--color-white);
|
|
654
|
+
background-image: radial-gradient(
|
|
655
|
+
circle,
|
|
656
|
+
color-mix(in oklab, var(--color-g8) 22%, transparent) 0 0.75px,
|
|
657
|
+
transparent 0.9px
|
|
658
|
+
);
|
|
659
|
+
background-size: 12px 12px;
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
.ask-empty-hero-pattern {
|
|
663
|
+
background-image: radial-gradient(
|
|
664
|
+
ellipse at 50% 52%,
|
|
665
|
+
color-mix(in oklab, var(--color-g3) 88%, transparent) 0%,
|
|
666
|
+
color-mix(in oklab, var(--color-g2) 48%, transparent) 38%,
|
|
667
|
+
transparent 68%
|
|
668
|
+
);
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
.ask-empty-composer [data-slot="aui_composer-shell"] {
|
|
672
|
+
border-color: var(--color-ng4);
|
|
673
|
+
box-shadow: var(--shadow-200);
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
.ask-empty-composer:focus-within [data-slot="aui_composer-shell"] {
|
|
677
|
+
border-color: var(--color-g8);
|
|
678
|
+
box-shadow: 0 0 0 3px var(--color-g4), var(--shadow-300);
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
.ask-section-label {
|
|
682
|
+
font-size: 0.6875rem;
|
|
683
|
+
line-height: 1rem;
|
|
684
|
+
}
|
|
685
|
+
|
|
509
686
|
/* Artifact widgets are positioned by GridStack; ADS cards own the visible
|
|
510
687
|
surface while the library content wrapper only clips during interaction.
|
|
511
688
|
The subtle elevation lives on the wrapper (not the inner card) because the
|
|
@@ -636,44 +813,6 @@
|
|
|
636
813
|
}
|
|
637
814
|
}
|
|
638
815
|
|
|
639
|
-
/* BrandLoader (src/components/brand-loader.tsx): each cell of the growth mark
|
|
640
|
-
flickers on like a neon tube — hard cuts (steps(1)): off → on with a
|
|
641
|
-
stutter → hold → off — on a staggered loop. fill-mode backwards keeps a
|
|
642
|
-
cell dark through its delay, so the mark builds up cell by cell. */
|
|
643
|
-
@keyframes brand-flicker {
|
|
644
|
-
0% {
|
|
645
|
-
opacity: 0;
|
|
646
|
-
}
|
|
647
|
-
6% {
|
|
648
|
-
opacity: 1;
|
|
649
|
-
}
|
|
650
|
-
9% {
|
|
651
|
-
opacity: 0.15;
|
|
652
|
-
}
|
|
653
|
-
12% {
|
|
654
|
-
opacity: 1;
|
|
655
|
-
}
|
|
656
|
-
15% {
|
|
657
|
-
opacity: 0.35;
|
|
658
|
-
}
|
|
659
|
-
18%,
|
|
660
|
-
82% {
|
|
661
|
-
opacity: 1;
|
|
662
|
-
}
|
|
663
|
-
90%,
|
|
664
|
-
100% {
|
|
665
|
-
opacity: 0;
|
|
666
|
-
}
|
|
667
|
-
}
|
|
668
|
-
.brand-loader-cell {
|
|
669
|
-
animation: brand-flicker 3.4s steps(1) infinite backwards;
|
|
670
|
-
}
|
|
671
|
-
@media (prefers-reduced-motion: reduce) {
|
|
672
|
-
.brand-loader-cell {
|
|
673
|
-
animation: none; /* static full-opacity mark */
|
|
674
|
-
}
|
|
675
|
-
}
|
|
676
|
-
|
|
677
816
|
@layer base {
|
|
678
817
|
* {
|
|
679
818
|
border-color: var(--border);
|
|
@@ -698,13 +837,14 @@
|
|
|
698
837
|
font-synthesis-weight: none;
|
|
699
838
|
}
|
|
700
839
|
|
|
701
|
-
/*
|
|
702
|
-
code
|
|
840
|
+
/* Literal code uses the bundled mono face, including unclassed semantic
|
|
841
|
+
code elements. UI copy and data remain in Aribau Grotesk. */
|
|
703
842
|
code,
|
|
704
843
|
kbd,
|
|
705
844
|
samp,
|
|
706
845
|
pre {
|
|
707
|
-
font-family:
|
|
846
|
+
font-family: var(--font-mono);
|
|
847
|
+
font-feature-settings: normal;
|
|
708
848
|
}
|
|
709
849
|
|
|
710
850
|
/* Consistent focus ring across the system */
|
|
@@ -801,8 +941,8 @@
|
|
|
801
941
|
/*
|
|
802
942
|
* Interactive border — a reusable primitive (see src/lib/interactive.ts).
|
|
803
943
|
* Any bordered element opts in with `.ads-interactive` + a trigger class; the
|
|
804
|
-
* border
|
|
805
|
-
*
|
|
944
|
+
* border uses its configured hover and active colors — no halo, no elevation,
|
|
945
|
+
* no pulse (a shadow on a form control reads as
|
|
806
946
|
* actionable-surface elevation, which controls must not claim).
|
|
807
947
|
* Behaviour stays tunable through the CSS custom properties.
|
|
808
948
|
*/
|
|
@@ -836,13 +976,13 @@
|
|
|
836
976
|
box-shadow: var(--glow-inset);
|
|
837
977
|
}
|
|
838
978
|
|
|
839
|
-
/* Focus / focus-within:
|
|
979
|
+
/* Focus / focus-within: configured active stroke, no glow, no pulse.
|
|
840
980
|
Kept plain so form fields read as "this is where I'm typing" without
|
|
841
981
|
the heartbeat animation that came before. */
|
|
842
982
|
.ads-interactive.ads-on-focus:focus:not(:disabled):not([aria-invalid="true"]),
|
|
843
983
|
.ads-interactive.ads-on-focus:focus-visible:not(:disabled):not([aria-invalid="true"]),
|
|
844
984
|
.ads-interactive.ads-on-within:focus-within:not([aria-invalid="true"]) {
|
|
845
|
-
border-color: var(--
|
|
985
|
+
border-color: var(--glow-border-active);
|
|
846
986
|
box-shadow: var(--glow-inset);
|
|
847
987
|
}
|
|
848
988
|
|
|
@@ -853,7 +993,7 @@
|
|
|
853
993
|
/* Invalid state (form fields) */
|
|
854
994
|
.ads-interactive[aria-invalid="true"] {
|
|
855
995
|
border-color: var(--color-danger-600);
|
|
856
|
-
box-shadow:
|
|
996
|
+
box-shadow: none;
|
|
857
997
|
}
|
|
858
998
|
}
|
|
859
999
|
|
|
@@ -983,7 +1123,7 @@
|
|
|
983
1123
|
position: absolute;
|
|
984
1124
|
inset-block: 0;
|
|
985
1125
|
left: 0;
|
|
986
|
-
border-left: 1px solid var(--
|
|
1126
|
+
border-left: 1px solid var(--tree-stroke);
|
|
987
1127
|
}
|
|
988
1128
|
.ads-tree-rail:first-child::before,
|
|
989
1129
|
.ads-tree-branch:first-child::before {
|
|
@@ -1010,8 +1150,8 @@
|
|
|
1010
1150
|
top: 0;
|
|
1011
1151
|
height: var(--tree-elbow, 1.125rem);
|
|
1012
1152
|
width: 1rem;
|
|
1013
|
-
border-bottom: 1px solid var(--
|
|
1014
|
-
border-left: 1px solid var(--
|
|
1153
|
+
border-bottom: 1px solid var(--tree-stroke);
|
|
1154
|
+
border-left: 1px solid var(--tree-stroke);
|
|
1015
1155
|
border-bottom-left-radius: var(--radius-lg);
|
|
1016
1156
|
}
|
|
1017
1157
|
|