@actioneer/ads 0.6.0 → 0.8.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/DESIGN.md +597 -0
- package/components/ai-elements/agent-trace.d.ts +2 -2
- package/components/ai-elements/agent-trace.js +164 -105
- 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/action-bar.js +1 -1
- package/components/assistant-ui/attachment.js +11 -11
- package/components/assistant-ui/badge.js +18 -18
- package/components/assistant-ui/composer-harness.js +15 -20
- package/components/assistant-ui/composer-trigger-popover.js +9 -9
- package/components/assistant-ui/composer.d.ts +3 -1
- package/components/assistant-ui/composer.js +148 -144
- package/components/assistant-ui/image.js +61 -61
- package/components/assistant-ui/index.d.ts +0 -3
- package/components/assistant-ui/message-timing.js +1 -1
- package/components/assistant-ui/selection-toolbar.js +7 -7
- 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 +0 -7
- package/components/breadcrumbs.js +54 -71
- package/components/button.d.ts +1 -1
- package/components/button.js +55 -49
- package/components/chart.js +298 -296
- 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 +2 -1
- package/components/date-range-picker.js +158 -122
- package/components/divider.js +25 -25
- package/components/drawer.d.ts +6 -2
- package/components/drawer.js +61 -58
- package/components/dropdown.d.ts +1 -2
- package/components/dropdown.js +88 -89
- package/components/field.js +41 -36
- package/components/file-dropzone.js +1 -1
- package/components/index.d.ts +4 -4
- package/components/index.js +501 -549
- 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 +32 -29
- package/components/modal.d.ts +31 -3
- package/components/modal.js +244 -170
- 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/pixel-blast-svg.js +71 -73
- 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 +151 -141
- 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 +427 -412
- package/components/tabs.d.ts +2 -0
- package/components/tabs.js +160 -295
- 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 +54 -49
- package/components/typography.d.ts +4 -4
- package/components/typography.js +13 -13
- package/components/ui/button.d.ts +1 -1
- package/components/ui/button.js +4 -4
- package/components/ui/dialog.js +25 -25
- package/demo/components/add-to-artifact.js +6 -10
- package/lib/cn.js +11 -4
- package/lib/icons.d.ts +4 -0
- package/lib/icons.js +103 -102
- package/lib/interactive.d.ts +1 -1
- package/llms.txt +132 -188
- package/manifest.json +1719 -2831
- package/package.json +2 -2
- package/styles.css +362 -233
- package/theme.css +312 -177
- 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
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
/*
|
|
40
40
|
* ============================================================
|
|
41
41
|
* ADS 1.0 — Design Tokens
|
|
42
|
-
* Palette:
|
|
42
|
+
* Palette: warm greys + product green
|
|
43
43
|
* Typeface: Aribau Grotesk
|
|
44
44
|
* ============================================================
|
|
45
45
|
*/
|
|
@@ -57,86 +57,160 @@
|
|
|
57
57
|
--font-mono: "JetBrains Mono Variable", ui-monospace, SFMono-Regular,
|
|
58
58
|
"SF Mono", Menlo, Consolas, "Liberation Mono", "Courier New", monospace;
|
|
59
59
|
|
|
60
|
-
/* ---- Type scale ----
|
|
61
|
-
|
|
62
|
-
/*
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
--text-
|
|
66
|
-
--text-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
--text-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
--text-
|
|
75
|
-
--text-
|
|
76
|
-
--text-
|
|
77
|
-
--text-
|
|
78
|
-
--text-
|
|
79
|
-
--text-
|
|
80
|
-
--text-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
--color-
|
|
92
|
-
--color-
|
|
93
|
-
--color-
|
|
94
|
-
--color-
|
|
95
|
-
--color-
|
|
96
|
-
--color-
|
|
97
|
-
--color-
|
|
98
|
-
--color-
|
|
99
|
-
--color-
|
|
100
|
-
--color-
|
|
101
|
-
|
|
102
|
-
--color-
|
|
103
|
-
--color-
|
|
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 · WG1…WG12 = Warm 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 WG3–WG5. ---- */
|
|
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-wg1: #f5f5f3;
|
|
103
|
+
--color-wg2: #f1f1ef;
|
|
104
|
+
--color-wg3: #ececea;
|
|
105
|
+
--color-wg4: #e5e5e2;
|
|
106
|
+
--color-wg5: #dcdcd8;
|
|
107
|
+
--color-wg6: #d1d1cc;
|
|
108
|
+
--color-wg7: #c2c2bc;
|
|
109
|
+
--color-wg8: #a6a69f;
|
|
110
|
+
--color-wg9: #777771;
|
|
111
|
+
--color-wg10: #686863;
|
|
112
|
+
--color-wg11: #4b4b47;
|
|
113
|
+
--color-wg12: #20201e;
|
|
114
|
+
|
|
115
|
+
/* Deprecated Neutral Grey names resolve to the canonical Warm Grey ramp.
|
|
116
|
+
Keep these aliases so existing consumer utilities continue to render. */
|
|
117
|
+
--color-ng1: var(--color-wg1);
|
|
118
|
+
--color-ng2: var(--color-wg2);
|
|
119
|
+
--color-ng3: var(--color-wg3);
|
|
120
|
+
--color-ng4: var(--color-wg4);
|
|
121
|
+
--color-ng5: var(--color-wg5);
|
|
122
|
+
--color-ng6: var(--color-wg6);
|
|
123
|
+
--color-ng7: var(--color-wg7);
|
|
124
|
+
--color-ng8: var(--color-wg8);
|
|
125
|
+
--color-ng9: var(--color-wg9);
|
|
126
|
+
--color-ng10: var(--color-wg10);
|
|
127
|
+
--color-ng11: var(--color-wg11);
|
|
128
|
+
--color-ng12: var(--color-wg12);
|
|
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-wg1);
|
|
147
|
+
--color-grey-100: var(--color-wg2);
|
|
148
|
+
--color-grey-200: var(--color-wg3);
|
|
149
|
+
--color-grey-300: var(--color-wg4);
|
|
150
|
+
--color-grey-400: var(--color-wg5);
|
|
151
|
+
--color-grey-500: var(--color-wg6);
|
|
152
|
+
--color-grey-600: var(--color-wg7);
|
|
153
|
+
--color-grey-700: var(--color-wg8);
|
|
154
|
+
--color-grey-800: var(--color-wg9);
|
|
155
|
+
--color-grey-850: var(--color-wg10);
|
|
156
|
+
--color-grey-900: var(--color-wg11);
|
|
157
|
+
--color-grey-950: var(--color-wg12);
|
|
158
|
+
|
|
159
|
+
--color-ink-50: var(--color-wg1);
|
|
160
|
+
--color-ink-100: var(--color-wg2);
|
|
161
|
+
--color-ink-200: var(--color-wg3);
|
|
162
|
+
--color-ink-300: var(--color-wg4);
|
|
163
|
+
--color-ink-400: var(--color-wg5);
|
|
164
|
+
--color-ink-500: var(--color-wg6);
|
|
165
|
+
--color-ink-600: var(--color-wg7);
|
|
166
|
+
--color-ink-700: var(--color-wg8);
|
|
167
|
+
--color-ink-800: var(--color-wg9);
|
|
168
|
+
--color-ink-850: var(--color-wg10);
|
|
169
|
+
--color-ink-900: var(--color-wg11);
|
|
170
|
+
--color-ink-950: var(--color-wg12);
|
|
104
171
|
|
|
105
172
|
/* ---- Semantic accent ramps ---- */
|
|
106
|
-
/* Success
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
--color-success-
|
|
110
|
-
--color-success-
|
|
111
|
-
--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;
|
|
112
183
|
|
|
113
184
|
--color-warning-50: #fffaeb;
|
|
114
185
|
--color-warning-100: #fef0c7;
|
|
186
|
+
--color-warning-300: #f9d68f;
|
|
187
|
+
--color-warning-400: #f4bc57;
|
|
115
188
|
--color-warning-500: #f79009;
|
|
116
189
|
--color-warning-600: #dc6803;
|
|
117
190
|
--color-warning-700: #b54708;
|
|
118
191
|
|
|
119
192
|
--color-danger-50: #fef3f2;
|
|
120
193
|
--color-danger-100: #fee4e2;
|
|
194
|
+
--color-danger-300: #f8bab5;
|
|
195
|
+
--color-danger-400: #f18f87;
|
|
121
196
|
--color-danger-500: #f04438;
|
|
122
197
|
--color-danger-600: #d92d20;
|
|
123
198
|
--color-danger-700: #b42318;
|
|
124
199
|
|
|
125
200
|
--color-info-50: #eff8ff;
|
|
126
201
|
--color-info-100: #d1e9ff;
|
|
202
|
+
--color-info-300: #a7d3f8;
|
|
203
|
+
--color-info-400: #7dbdf1;
|
|
127
204
|
--color-info-500: #2e90fa;
|
|
128
205
|
--color-info-600: #1570ef;
|
|
129
206
|
--color-info-700: #175cd3;
|
|
130
207
|
|
|
131
|
-
/* ---- Data-viz accents ----
|
|
208
|
+
/* ---- Data-viz accents ---- two small ramps for charts & illustration.
|
|
132
209
|
deep = text/lines · base = fills · soft = backgrounds. Separate from the
|
|
133
210
|
semantic status ramps above; these carry data, not product identity. */
|
|
134
211
|
--color-cyan-soft: #c7efe9; /* Cyan — vivid cool contrast; 2nd series, links */
|
|
135
212
|
--color-cyan-base: #12b5a5;
|
|
136
213
|
--color-cyan-deep: #0a7e82;
|
|
137
|
-
--color-lime-soft: #e4efcf; /* Lichen lime — energetic pop from the mark */
|
|
138
|
-
--color-lime-base: #a3c765;
|
|
139
|
-
--color-lime-deep: #6e8f30;
|
|
140
214
|
--color-amber-soft: #fce6c0; /* Amber — warm pop; highlights, "new" */
|
|
141
215
|
--color-amber-base: #f3a72e;
|
|
142
216
|
--color-amber-deep: #b57414;
|
|
@@ -144,18 +218,21 @@
|
|
|
144
218
|
/* Demo logo indigo — source for artifact canvas wash. */
|
|
145
219
|
--color-brand-mark: #2e1065;
|
|
146
220
|
|
|
147
|
-
/* ---- Radii ----
|
|
148
|
-
|
|
149
|
-
8px = menus, cards, panels, and large surfaces. Repeated aliases keep the
|
|
150
|
-
familiar Tailwind role names while capping every surface at 8px. */
|
|
221
|
+
/* ---- Radii ---- five canonical steps: XS · S · M · L · XL.
|
|
222
|
+
M (6px) is the default corner radius. */
|
|
151
223
|
--radius-xs: 0.125rem; /* 2px · micro details */
|
|
152
|
-
--radius-
|
|
153
|
-
--radius-
|
|
154
|
-
--radius-
|
|
155
|
-
--radius-xl: 0.
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
--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);
|
|
159
236
|
/* Shape-only exception for avatars, icon buttons, progress tracks, chips,
|
|
160
237
|
and badges. It is not part of the corner-radius scale. */
|
|
161
238
|
--radius-full: 9999px;
|
|
@@ -165,32 +242,40 @@
|
|
|
165
242
|
convention). */
|
|
166
243
|
--radius-dot: 2px;
|
|
167
244
|
|
|
168
|
-
/* ---- Elevation ----
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
--shadow-
|
|
173
|
-
|
|
245
|
+
/* ---- Elevation ---- Shopify-inspired 0–600 ladder, recolored with WG12.
|
|
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);
|
|
174
258
|
|
|
175
259
|
/* Pinned-table-column smudges — whisper-soft directional casts shown only
|
|
176
260
|
while content is hidden behind a sticky column (Table is scroll-aware).
|
|
177
|
-
Deep negative spread keeps the edge feathered; the tint is warm
|
|
178
|
-
--shadow-table-smudge-left: 8px 0 24px -14px rgb(
|
|
179
|
-
--shadow-table-smudge-right: -8px 0 24px -14px rgb(
|
|
180
|
-
|
|
181
|
-
/* ----
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
--inner-glow-cta: inset 0 1px 0
|
|
185
|
-
inset 0
|
|
186
|
-
inset 0
|
|
187
|
-
/*
|
|
188
|
-
|
|
189
|
-
--inner-glow-fill: inset 0 1px 0 0
|
|
190
|
-
inset 0
|
|
261
|
+
Deep negative spread keeps the edge feathered; the tint is warm grey. */
|
|
262
|
+
--shadow-table-smudge-left: 8px 0 24px -14px rgb(32 32 32 / 0.05);
|
|
263
|
+
--shadow-table-smudge-right: -8px 0 24px -14px rgb(32 32 32 / 0.05);
|
|
264
|
+
|
|
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);
|
|
191
276
|
/* Text fields — a whisper of inset depth so the writing surface reads
|
|
192
277
|
recessed into the page (persists through hover/focus/invalid). */
|
|
193
|
-
--inner-glow-field: inset 0 1px 2px 0 rgb(
|
|
278
|
+
--inner-glow-field: inset 0 1px 2px 0 rgb(32 32 32 / 0.06);
|
|
194
279
|
|
|
195
280
|
/* ---- Layout ---- app-frame dimensions (Sidebar / Panel) */
|
|
196
281
|
--sidebar-width: 15rem; /* 240px — primary nav rail */
|
|
@@ -199,7 +284,7 @@
|
|
|
199
284
|
--sidebar-item: 2rem; /* 32px — collapsed rail hit target (square) */
|
|
200
285
|
--sidebar-logo: 1.25rem; /* 20px — brand mark, centered in a --sidebar-item square */
|
|
201
286
|
--sidebar-text-indent: 2.375rem; /* px-3 + icon size-4 + gap-2.5 — history rows align to nav-item text */
|
|
202
|
-
--sidebar-navigation-text-size: var(--text-
|
|
287
|
+
--sidebar-navigation-text-size: var(--text-m); /* 15px — sidebar actions, items, history, and account text */
|
|
203
288
|
--sidebar-section-label-size: 0.8125rem; /* 13px — section and history labels */
|
|
204
289
|
--panel-header-height: 2.75rem; /* 44px — Panel / toolbar header */
|
|
205
290
|
--aside-width: 20rem; /* 320px — right-hand panel column */
|
|
@@ -213,10 +298,11 @@
|
|
|
213
298
|
--thread-max-width: 44rem; /* chat column cap — readable prose measure, all panes */
|
|
214
299
|
--thread-max-width-wide: 64rem; /* rich-content breakout cap (tables/charts/tool cards) on wide panes; prose keeps --thread-max-width */
|
|
215
300
|
--composer-bg: var(--elevated); /* pure white composer surface */
|
|
216
|
-
--composer-radius: var(--radius-
|
|
301
|
+
--composer-radius: var(--radius-xl);
|
|
217
302
|
--composer-padding: 0.5rem;
|
|
218
|
-
--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 */
|
|
219
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 */
|
|
220
306
|
}
|
|
221
307
|
|
|
222
308
|
/*
|
|
@@ -252,28 +338,44 @@
|
|
|
252
338
|
* @theme inline exposes them as utilities (bg-background, text-primary, …).
|
|
253
339
|
*/
|
|
254
340
|
@theme inline {
|
|
341
|
+
/* The shell canvas and its ink: the ground between top-level panels. */
|
|
255
342
|
--color-background: var(--background);
|
|
256
343
|
--color-foreground: var(--foreground);
|
|
257
344
|
|
|
258
|
-
/*
|
|
345
|
+
/* Contextual text hierarchies — three accessible levels per surface. */
|
|
346
|
+
--color-on-white-primary: var(--text-on-white-primary);
|
|
347
|
+
--color-on-white-secondary: var(--text-on-white-secondary);
|
|
348
|
+
--color-on-white-tertiary: var(--text-on-white-tertiary);
|
|
349
|
+
--color-on-warm-grey-primary: var(--text-on-warm-grey-primary);
|
|
350
|
+
--color-on-warm-grey-secondary: var(--text-on-warm-grey-secondary);
|
|
351
|
+
--color-on-warm-grey-tertiary: var(--text-on-warm-grey-tertiary);
|
|
352
|
+
|
|
353
|
+
/* Context-free compatibility aliases remain conservative. */
|
|
259
354
|
--color-primary: var(--text-primary);
|
|
260
355
|
--color-secondary: var(--text-secondary);
|
|
261
356
|
--color-tertiary: var(--text-tertiary);
|
|
262
357
|
|
|
358
|
+
/* One continuous recess inside a white surface, never a screen-level ground. */
|
|
263
359
|
--color-surface: var(--surface);
|
|
264
360
|
--color-surface-foreground: var(--surface-foreground);
|
|
265
361
|
--color-elevated: var(--elevated);
|
|
266
362
|
|
|
363
|
+
/* The hover and row-state wash: interaction, not a default item background. */
|
|
267
364
|
--color-muted: var(--muted);
|
|
268
365
|
--color-muted-foreground: var(--muted-foreground);
|
|
269
366
|
|
|
367
|
+
/* The white working plane that sits on the canvas, and the specimen hairline. */
|
|
270
368
|
--color-card: var(--card);
|
|
271
369
|
--color-card-foreground: var(--card-foreground);
|
|
370
|
+
--color-specimen-stroke: var(--specimen-stroke);
|
|
272
371
|
|
|
273
372
|
/* Primary CTA role — restrained Studio green, used sparingly. */
|
|
274
373
|
--color-action-primary: var(--action-primary);
|
|
275
374
|
--color-action-primary-foreground: var(--action-primary-foreground);
|
|
276
375
|
--color-action-primary-hover: var(--action-primary-hover);
|
|
376
|
+
--color-action-primary-text: var(--action-primary-text);
|
|
377
|
+
--color-action-primary-soft: var(--action-primary-soft);
|
|
378
|
+
--color-field-focus: var(--field-focus);
|
|
277
379
|
|
|
278
380
|
/* Compatibility action role — neutral ink, never a colored primary hue. */
|
|
279
381
|
--color-brand: var(--brand);
|
|
@@ -281,34 +383,47 @@
|
|
|
281
383
|
--color-brand-hover: var(--brand-hover);
|
|
282
384
|
--color-brand-text: var(--brand-text);
|
|
283
385
|
|
|
284
|
-
/* Quiet fill —
|
|
386
|
+
/* Quiet fill — avatars, chips, and disabled controls */
|
|
285
387
|
--color-fill: var(--fill);
|
|
286
388
|
--color-fill-foreground: var(--fill-foreground);
|
|
389
|
+
/* Table surfaces: the white tray, its hairlines, and header ink. */
|
|
287
390
|
--color-table-shell: var(--table-shell);
|
|
391
|
+
--color-table-stroke: var(--table-stroke);
|
|
392
|
+
--color-table-header-foreground: var(--table-header-foreground);
|
|
288
393
|
|
|
394
|
+
/* The artifact sheet: white warmed by a trace of the brand mark. */
|
|
289
395
|
--color-artifact-canvas: var(--artifact-canvas);
|
|
290
396
|
|
|
397
|
+
/* The active and selected wash, one step above hover. */
|
|
291
398
|
--color-accent: var(--accent);
|
|
292
399
|
--color-accent-foreground: var(--accent-foreground);
|
|
293
400
|
|
|
294
|
-
/* success-700
|
|
401
|
+
/* Lichen success-700 clears AA on White and both success soft fills;
|
|
402
|
+
success-600 is reserved for non-text marks because its 3.73:1 contrast
|
|
403
|
+
on White does not clear body-text AA. */
|
|
295
404
|
--color-success: var(--color-success-700);
|
|
296
|
-
--color-success-foreground:
|
|
405
|
+
--color-success-foreground: var(--color-white);
|
|
297
406
|
/* Amber-500 fill kept (it IS the caution signal); dark ink foreground
|
|
298
407
|
instead of white = 6.94:1 (white on amber was 2.35:1, failed even 3:1). */
|
|
299
408
|
--color-warning: var(--color-warning-500);
|
|
300
|
-
--color-warning-foreground: var(--color-
|
|
409
|
+
--color-warning-foreground: var(--color-wg12);
|
|
410
|
+
/* Danger and info: solid semantic fills carrying white foregrounds. */
|
|
301
411
|
--color-danger: var(--color-danger-600);
|
|
302
|
-
--color-danger-foreground:
|
|
412
|
+
--color-danger-foreground: var(--color-white);
|
|
303
413
|
--color-info: var(--color-info-600);
|
|
304
|
-
--color-info-foreground:
|
|
414
|
+
--color-info-foreground: var(--color-white);
|
|
305
415
|
|
|
416
|
+
/* The neutral stroke ladder: every 1px UI border stays within WG3 to WG5. */
|
|
306
417
|
--color-border-primary: var(--border-primary);
|
|
307
418
|
--color-border-secondary: var(--border-secondary);
|
|
308
419
|
--color-border-tertiary: var(--border-tertiary);
|
|
309
420
|
--color-border: var(--border);
|
|
310
421
|
--color-border-strong: var(--border-strong);
|
|
311
422
|
--color-input: var(--input);
|
|
423
|
+
--color-menu-stroke: var(--menu-stroke);
|
|
424
|
+
--color-toast-stroke: var(--toast-stroke);
|
|
425
|
+
--color-tree-stroke: var(--tree-stroke);
|
|
426
|
+
/* Focus ring and scrim, both translucent warm ink. */
|
|
312
427
|
--color-ring: var(--ring);
|
|
313
428
|
--color-overlay: var(--overlay);
|
|
314
429
|
|
|
@@ -320,10 +435,10 @@
|
|
|
320
435
|
* shadcn's grey/black defaults. The raw --sidebar-*/--popover values live in
|
|
321
436
|
* :root below.
|
|
322
437
|
*/
|
|
323
|
-
--color-primary-foreground:
|
|
324
|
-
--color-secondary-foreground:
|
|
438
|
+
--color-primary-foreground: var(--color-white);
|
|
439
|
+
--color-secondary-foreground: var(--color-white);
|
|
325
440
|
--color-destructive: var(--color-danger-600);
|
|
326
|
-
--color-destructive-foreground:
|
|
441
|
+
--color-destructive-foreground: var(--color-white);
|
|
327
442
|
--color-popover: var(--popover);
|
|
328
443
|
--color-popover-foreground: var(--popover-foreground);
|
|
329
444
|
|
|
@@ -339,69 +454,78 @@
|
|
|
339
454
|
|
|
340
455
|
/* ---- Theme (light only) ---- */
|
|
341
456
|
:root {
|
|
342
|
-
/*
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
--
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
--text-
|
|
354
|
-
--text-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
--
|
|
359
|
-
--
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
--
|
|
363
|
-
|
|
364
|
-
--
|
|
365
|
-
|
|
457
|
+
/* Surfaces and achromatic text/actions point into WG; the primary CTA
|
|
458
|
+
points into G. */
|
|
459
|
+
--background: var(--color-wg2); /* step 2 · canvas */
|
|
460
|
+
--foreground: var(--color-wg12); /* step 12 */
|
|
461
|
+
|
|
462
|
+
/* Both surface contexts point directly into the approved WG text steps.
|
|
463
|
+
WG10 is the tertiary/de-emphasis step and clears AA on White and WG2. */
|
|
464
|
+
--text-on-white-primary: var(--color-wg12); /* 16.32:1 · AAA */
|
|
465
|
+
--text-on-white-secondary: var(--color-wg11); /* 8.76:1 · AAA */
|
|
466
|
+
--text-on-white-tertiary: var(--color-wg10); /* 5.60:1 · AA */
|
|
467
|
+
--text-on-warm-grey-primary: var(--color-wg12); /* 14.43:1 on WG2 · AAA */
|
|
468
|
+
--text-on-warm-grey-secondary: var(--color-wg11); /* 7.75:1 on WG2 · AAA */
|
|
469
|
+
--text-on-warm-grey-tertiary: var(--color-wg10); /* 4.95:1 on WG2 · AA */
|
|
470
|
+
|
|
471
|
+
/* Existing context-free utilities remain compatibility aliases. Their
|
|
472
|
+
tertiary value stays conservative across WG2–WG4 and White. */
|
|
473
|
+
--text-primary: var(--color-wg12); /* 12.93:1 AAA (WG4 min surf) */
|
|
474
|
+
--text-secondary: var(--color-wg11); /* 6.94:1 AA (WG4 min surf) */
|
|
475
|
+
--text-tertiary: color-mix(in srgb, var(--color-wg10) 80%, var(--color-wg11)); /* 4.86:1 AA (WG4) */
|
|
476
|
+
|
|
477
|
+
--surface: var(--color-wg3); /* step 3 · tinted canvas */
|
|
478
|
+
--surface-foreground: var(--color-wg12);
|
|
479
|
+
--elevated: var(--color-white); /* pure white base */
|
|
480
|
+
|
|
481
|
+
--muted: var(--color-wg4); /* step 4 */
|
|
482
|
+
--muted-foreground: var(--color-wg11); /* step 11 · readable UI text */
|
|
483
|
+
|
|
484
|
+
--card: var(--color-white); /* pure white base */
|
|
485
|
+
--card-foreground: var(--color-wg12);
|
|
366
486
|
|
|
367
487
|
/* Studio green is deliberately isolated to the primary CTA role (roughly
|
|
368
488
|
5–10% of a screen). Selection controls keep using neutral `brand` below,
|
|
369
489
|
so tabs, switches, radios, and progress never inherit CTA color. */
|
|
370
|
-
--action-primary:
|
|
371
|
-
--action-primary-foreground:
|
|
372
|
-
--action-primary-hover:
|
|
490
|
+
--action-primary: var(--color-g9);
|
|
491
|
+
--action-primary-foreground: var(--color-white);
|
|
492
|
+
--action-primary-hover: var(--color-g10);
|
|
493
|
+
--action-primary-text: var(--color-g11);
|
|
494
|
+
--action-primary-soft: var(--color-g3);
|
|
373
495
|
|
|
374
496
|
/* Neutral action role. The `brand` name remains as a compatibility API,
|
|
375
497
|
and shared selection/control states intentionally remain achromatic. */
|
|
376
|
-
--brand: var(--color-
|
|
377
|
-
--brand-foreground:
|
|
378
|
-
--brand-hover: var(--color-
|
|
379
|
-
--brand-text: var(--color-
|
|
380
|
-
|
|
381
|
-
/*
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
/* Quiet component fill. Ink step 3 is the first interactive-background
|
|
498
|
+
--brand: var(--color-wg12); /* darkest neutral action */
|
|
499
|
+
--brand-foreground: var(--color-white);
|
|
500
|
+
--brand-hover: var(--color-wg11); /* lighter hover lift */
|
|
501
|
+
--brand-text: var(--color-wg12); /* action text / links */
|
|
502
|
+
|
|
503
|
+
/* Interactive row hover/focus uses the WG1 highlight wash. */
|
|
504
|
+
--table-row-hover: var(--color-wg2);
|
|
505
|
+
--table-row-selected: var(--color-wg1);
|
|
506
|
+
|
|
507
|
+
/* Quiet component fill. WG3 is the first interactive-background
|
|
388
508
|
step, so this remains visible on both white cards and the step-2 canvas. */
|
|
389
|
-
--fill: var(--color-
|
|
390
|
-
--fill-foreground: var(--color-
|
|
391
|
-
|
|
392
|
-
--accent: var(--color-
|
|
393
|
-
--accent-foreground: var(--color-
|
|
394
|
-
|
|
395
|
-
/*
|
|
396
|
-
tertiary
|
|
397
|
-
|
|
398
|
-
--border-primary: var(--color-
|
|
399
|
-
--border-secondary: var(--color-
|
|
400
|
-
--border-tertiary: var(--color-
|
|
509
|
+
--fill: var(--color-wg3); /* step 3 · default component fill */
|
|
510
|
+
--fill-foreground: var(--color-wg12);
|
|
511
|
+
|
|
512
|
+
--accent: var(--color-wg5); /* step 5 · active / selected wash */
|
|
513
|
+
--accent-foreground: var(--color-wg12);
|
|
514
|
+
|
|
515
|
+
/* Every neutral border stays within the consecutive WG3–WG5 range:
|
|
516
|
+
tertiary is the quietest 1px divider, secondary is the default hairline,
|
|
517
|
+
and primary is the strongest neutral edge. */
|
|
518
|
+
--border-primary: var(--color-wg5); /* step 5 · strongest */
|
|
519
|
+
--border-secondary: var(--color-wg4); /* step 4 · default */
|
|
520
|
+
--border-tertiary: var(--color-wg3); /* step 3 · faintest */
|
|
401
521
|
/* Legacy aliases point into the scale so existing utilities keep resolving. */
|
|
402
522
|
--border: var(--border-secondary); /* default hairline / separator */
|
|
403
523
|
--border-strong: var(--border-primary); /* emphasized / hover / selected */
|
|
404
|
-
--input: var(--
|
|
524
|
+
--input: var(--color-wg4); /* form-control edge */
|
|
525
|
+
--menu-stroke: var(--color-wg4); /* dropdown edge + separator */
|
|
526
|
+
--toast-stroke: var(--color-wg4); /* toast card edge */
|
|
527
|
+
--tree-stroke: var(--color-wg4); /* tree connector rail + elbows */
|
|
528
|
+
--field-focus: var(--color-g8); /* subtle green focused-control edge */
|
|
405
529
|
|
|
406
530
|
/* Ripple — the appearance wash that radiates from a floating surface's
|
|
407
531
|
origin corner as it opens (Dropdown/Popover/Select/Modal…). A soft ink
|
|
@@ -409,29 +533,30 @@
|
|
|
409
533
|
the `Ripple` component. */
|
|
410
534
|
--ripple-tint: color-mix(in srgb, var(--brand) 20%, transparent);
|
|
411
535
|
|
|
412
|
-
/* Stroke width —
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
the ink scale. Components pass these into non-CSS renderers (Recharts,
|
|
422
|
-
React Flow, the Paper/WebGL texture) so no component carries a raw ink-*
|
|
423
|
-
value. Same DS pattern as the data-viz --color-chart-* palette. */
|
|
536
|
+
/* Stroke width — every standard UI border is exactly 1px. */
|
|
537
|
+
--stroke-width: 1px;
|
|
538
|
+
--ring: color-mix(in srgb, var(--color-wg12) 50%, transparent); /* WG12 @ 50% */
|
|
539
|
+
--overlay: color-mix(in srgb, var(--color-wg12) 50%, transparent); /* WG12 @ 50% */
|
|
540
|
+
|
|
541
|
+
/* Functional / domain tokens — named for their render role, pointing into
|
|
542
|
+
the canonical WG palette. Components pass these into non-CSS renderers
|
|
543
|
+
(Recharts, React Flow, the Paper/WebGL texture) so no component carries a
|
|
544
|
+
raw primitive value. Same DS pattern as the data-viz palette. */
|
|
424
545
|
--chart-axis: var(--border-tertiary); /* axis lines + de-emphasised marks */
|
|
425
|
-
--chart-grid: var(--color-
|
|
426
|
-
--chart-track: var(--color-
|
|
427
|
-
--chart-context: var(--color-
|
|
546
|
+
--chart-grid: var(--color-wg3); /* quieter than axes, visible on white */
|
|
547
|
+
--chart-track: var(--color-wg3); /* funnel / progress track */
|
|
548
|
+
--chart-context: var(--color-wg6); /* de-emphasised context series */
|
|
549
|
+
--chart-active-bar-opacity: 0.68; /* hover lightens a bar while preserving its series hue */
|
|
428
550
|
--canvas-edge: var(--border-secondary);/* infinite-canvas edges / connectors */
|
|
429
|
-
--texture-ink: var(--color-
|
|
430
|
-
--table-shell: var(--color-
|
|
431
|
-
--table-
|
|
432
|
-
--
|
|
433
|
-
--
|
|
434
|
-
--
|
|
551
|
+
--texture-ink: var(--color-wg12); /* brand-texture / pixel-blast marks */
|
|
552
|
+
--table-shell: var(--color-white); /* simplified single-surface table */
|
|
553
|
+
--table-stroke: var(--color-wg3); /* table outline + row separators */
|
|
554
|
+
--table-header-foreground: var(--color-wg11); /* readable secondary table heading text */
|
|
555
|
+
--specimen-stroke: var(--color-wg3); /* showcase preview + variant-group frames */
|
|
556
|
+
--table-scroll-hint: color-mix(in srgb, var(--color-wg12) 4%, transparent); /* right-edge wash */
|
|
557
|
+
--surface-inverse: var(--color-wg12); /* dark hero / inverse surface base */
|
|
558
|
+
--surface-inverse-soft: var(--color-wg11);/* dark hero gradient falloff */
|
|
559
|
+
--artifact-canvas: color-mix(in srgb, var(--color-brand-mark) 7%, var(--color-white));
|
|
435
560
|
|
|
436
561
|
/* shadcn-compat raw surfaces — so a downstream shadcn Sidebar / Popover
|
|
437
562
|
(or an inline `var(--sidebar)` / `var(--popover)`) resolves to the ADS
|
|
@@ -452,9 +577,10 @@
|
|
|
452
577
|
|
|
453
578
|
/*
|
|
454
579
|
* ============================================================
|
|
455
|
-
*
|
|
580
|
+
* Standard strokes — ADS UI borders are 1px (principle 1).
|
|
456
581
|
* Override Tailwind's single-width border utilities to the
|
|
457
582
|
* --stroke-width token. Authored after `}
|
|
583
|
+
.border { border-width: var(--stroke-width); }
|
|
458
584
|
.border-t { border-top-width: var(--stroke-width); }
|
|
459
585
|
.border-r { border-right-width: var(--stroke-width); }
|
|
460
586
|
.border-b { border-bottom-width: var(--stroke-width); }
|
|
@@ -476,6 +602,15 @@
|
|
|
476
602
|
0% { opacity: 0.6; transform: scale(0.15); }
|
|
477
603
|
100% { opacity: 0; transform: scale(1.08); }
|
|
478
604
|
}
|
|
605
|
+
|
|
606
|
+
@keyframes ads-toast-progress {
|
|
607
|
+
from {
|
|
608
|
+
transform: scaleX(1);
|
|
609
|
+
}
|
|
610
|
+
to {
|
|
611
|
+
transform: scaleX(0);
|
|
612
|
+
}
|
|
613
|
+
}
|
|
479
614
|
.ads-ripple {
|
|
480
615
|
position: absolute;
|
|
481
616
|
inset: 0;
|
|
@@ -499,12 +634,12 @@
|
|
|
499
634
|
* `primary-foreground` companion (its base `--color-primary` is the ADS
|
|
500
635
|
* text-hierarchy token, which collides with the generated `primary` color),
|
|
501
636
|
* so the vendored shadcn button's icon rendered invisible (dark-on-dark) on
|
|
502
|
-
* `bg-primary`. Define the two utilities explicitly against
|
|
637
|
+
* `bg-primary`. Define the two utilities explicitly against White.
|
|
503
638
|
* ============================================================
|
|
504
639
|
*/
|
|
505
640
|
@layer utilities {
|
|
506
|
-
.text-primary-foreground { color:
|
|
507
|
-
.bg-primary-foreground { background-color:
|
|
641
|
+
.text-primary-foreground { color: var(--color-white); }
|
|
642
|
+
.bg-primary-foreground { background-color: var(--color-white); }
|
|
508
643
|
}
|
|
509
644
|
/* ---- Base, keyframes & component helpers ---- */
|
|
510
645
|
/* Hide scrollbars app-wide but keep scrollability. The demo UI is filled
|
|
@@ -521,6 +656,42 @@
|
|
|
521
656
|
display: none;
|
|
522
657
|
}
|
|
523
658
|
|
|
659
|
+
/* Ask landing: Hex's hierarchy translated into ADS tokens. The same quiet
|
|
660
|
+
texture spans the complete canvas; G2-G8 concentrate focus at the prompt. */
|
|
661
|
+
.ask-empty-state {
|
|
662
|
+
background-color: var(--color-white);
|
|
663
|
+
background-image: radial-gradient(
|
|
664
|
+
circle,
|
|
665
|
+
color-mix(in oklab, var(--color-g8) 22%, transparent) 0 0.75px,
|
|
666
|
+
transparent 0.9px
|
|
667
|
+
);
|
|
668
|
+
background-size: 12px 12px;
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
.ask-empty-hero-pattern {
|
|
672
|
+
background-image: radial-gradient(
|
|
673
|
+
ellipse at 50% 52%,
|
|
674
|
+
color-mix(in oklab, var(--color-g3) 88%, transparent) 0%,
|
|
675
|
+
color-mix(in oklab, var(--color-g2) 48%, transparent) 38%,
|
|
676
|
+
transparent 68%
|
|
677
|
+
);
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
.ask-empty-composer [data-slot="aui_composer-shell"] {
|
|
681
|
+
border-color: var(--color-wg4);
|
|
682
|
+
box-shadow: var(--shadow-200);
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
.ask-empty-composer:focus-within [data-slot="aui_composer-shell"] {
|
|
686
|
+
border-color: var(--color-g8);
|
|
687
|
+
box-shadow: 0 0 0 3px var(--color-g4), var(--shadow-300);
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
.ask-section-label {
|
|
691
|
+
font-size: 0.6875rem;
|
|
692
|
+
line-height: 1rem;
|
|
693
|
+
}
|
|
694
|
+
|
|
524
695
|
/* Artifact widgets are positioned by GridStack; ADS cards own the visible
|
|
525
696
|
surface while the library content wrapper only clips during interaction.
|
|
526
697
|
The subtle elevation lives on the wrapper (not the inner card) because the
|
|
@@ -618,11 +789,11 @@
|
|
|
618
789
|
halftone dissolves from the BOTTOM upward (a soft mask band sweeps up
|
|
619
790
|
through it) while the whole layer drifts up and fades — cloud cover
|
|
620
791
|
breaking and rising, not a curtain covering it. The mask rests fully
|
|
621
|
-
opaque (element aligned with the
|
|
792
|
+
opaque (element aligned with the ink end of an oversized gradient), and
|
|
622
793
|
the lifted state slides the element to the transparent end. */
|
|
623
794
|
.ads-texture-lift {
|
|
624
|
-
mask-image: linear-gradient(to top, transparent 0%, transparent 42%,
|
|
625
|
-
-webkit-mask-image: linear-gradient(to top, transparent 0%, transparent 42%,
|
|
795
|
+
mask-image: linear-gradient(to top, transparent 0%, transparent 42%, var(--color-wg12) 58%, var(--color-wg12) 100%);
|
|
796
|
+
-webkit-mask-image: linear-gradient(to top, transparent 0%, transparent 42%, var(--color-wg12) 58%, var(--color-wg12) 100%);
|
|
626
797
|
mask-repeat: no-repeat;
|
|
627
798
|
-webkit-mask-repeat: no-repeat;
|
|
628
799
|
mask-size: 100% 240%;
|
|
@@ -651,44 +822,6 @@
|
|
|
651
822
|
}
|
|
652
823
|
}
|
|
653
824
|
|
|
654
|
-
/* BrandLoader (src/components/brand-loader.tsx): each cell of the growth mark
|
|
655
|
-
flickers on like a neon tube — hard cuts (steps(1)): off → on with a
|
|
656
|
-
stutter → hold → off — on a staggered loop. fill-mode backwards keeps a
|
|
657
|
-
cell dark through its delay, so the mark builds up cell by cell. */
|
|
658
|
-
@keyframes brand-flicker {
|
|
659
|
-
0% {
|
|
660
|
-
opacity: 0;
|
|
661
|
-
}
|
|
662
|
-
6% {
|
|
663
|
-
opacity: 1;
|
|
664
|
-
}
|
|
665
|
-
9% {
|
|
666
|
-
opacity: 0.15;
|
|
667
|
-
}
|
|
668
|
-
12% {
|
|
669
|
-
opacity: 1;
|
|
670
|
-
}
|
|
671
|
-
15% {
|
|
672
|
-
opacity: 0.35;
|
|
673
|
-
}
|
|
674
|
-
18%,
|
|
675
|
-
82% {
|
|
676
|
-
opacity: 1;
|
|
677
|
-
}
|
|
678
|
-
90%,
|
|
679
|
-
100% {
|
|
680
|
-
opacity: 0;
|
|
681
|
-
}
|
|
682
|
-
}
|
|
683
|
-
.brand-loader-cell {
|
|
684
|
-
animation: brand-flicker 3.4s steps(1) infinite backwards;
|
|
685
|
-
}
|
|
686
|
-
@media (prefers-reduced-motion: reduce) {
|
|
687
|
-
.brand-loader-cell {
|
|
688
|
-
animation: none; /* static full-opacity mark */
|
|
689
|
-
}
|
|
690
|
-
}
|
|
691
|
-
|
|
692
825
|
@layer base {
|
|
693
826
|
* {
|
|
694
827
|
border-color: var(--border);
|
|
@@ -817,8 +950,8 @@
|
|
|
817
950
|
/*
|
|
818
951
|
* Interactive border — a reusable primitive (see src/lib/interactive.ts).
|
|
819
952
|
* Any bordered element opts in with `.ads-interactive` + a trigger class; the
|
|
820
|
-
* border
|
|
821
|
-
*
|
|
953
|
+
* border uses its configured hover and active colors — no halo, no elevation,
|
|
954
|
+
* no pulse (a shadow on a form control reads as
|
|
822
955
|
* actionable-surface elevation, which controls must not claim).
|
|
823
956
|
* Behaviour stays tunable through the CSS custom properties.
|
|
824
957
|
*/
|
|
@@ -835,7 +968,7 @@
|
|
|
835
968
|
/* Optional persistent inset (e.g. the field inner glow) — hosts opt in
|
|
836
969
|
via [--glow-inset:var(--inner-glow-field)]; carried through every
|
|
837
970
|
state below so hover/focus/invalid never strip it. */
|
|
838
|
-
--glow-inset: 0 0
|
|
971
|
+
--glow-inset: 0 0 transparent;
|
|
839
972
|
|
|
840
973
|
border-color: var(--glow-border-rest);
|
|
841
974
|
box-shadow: var(--glow-inset);
|
|
@@ -852,13 +985,13 @@
|
|
|
852
985
|
box-shadow: var(--glow-inset);
|
|
853
986
|
}
|
|
854
987
|
|
|
855
|
-
/* Focus / focus-within:
|
|
988
|
+
/* Focus / focus-within: configured active stroke, no glow, no pulse.
|
|
856
989
|
Kept plain so form fields read as "this is where I'm typing" without
|
|
857
990
|
the heartbeat animation that came before. */
|
|
858
991
|
.ads-interactive.ads-on-focus:focus:not(:disabled):not([aria-invalid="true"]),
|
|
859
992
|
.ads-interactive.ads-on-focus:focus-visible:not(:disabled):not([aria-invalid="true"]),
|
|
860
993
|
.ads-interactive.ads-on-within:focus-within:not([aria-invalid="true"]) {
|
|
861
|
-
border-color: var(--
|
|
994
|
+
border-color: var(--glow-border-active);
|
|
862
995
|
box-shadow: var(--glow-inset);
|
|
863
996
|
}
|
|
864
997
|
|
|
@@ -869,7 +1002,7 @@
|
|
|
869
1002
|
/* Invalid state (form fields) */
|
|
870
1003
|
.ads-interactive[aria-invalid="true"] {
|
|
871
1004
|
border-color: var(--color-danger-600);
|
|
872
|
-
box-shadow:
|
|
1005
|
+
box-shadow: none;
|
|
873
1006
|
}
|
|
874
1007
|
}
|
|
875
1008
|
|
|
@@ -999,7 +1132,7 @@
|
|
|
999
1132
|
position: absolute;
|
|
1000
1133
|
inset-block: 0;
|
|
1001
1134
|
left: 0;
|
|
1002
|
-
border-left: 1px solid var(--
|
|
1135
|
+
border-left: 1px solid var(--tree-stroke);
|
|
1003
1136
|
}
|
|
1004
1137
|
.ads-tree-rail:first-child::before,
|
|
1005
1138
|
.ads-tree-branch:first-child::before {
|
|
@@ -1026,20 +1159,16 @@
|
|
|
1026
1159
|
top: 0;
|
|
1027
1160
|
height: var(--tree-elbow, 1.125rem);
|
|
1028
1161
|
width: 1rem;
|
|
1029
|
-
border-bottom: 1px solid var(--
|
|
1030
|
-
border-left: 1px solid var(--
|
|
1162
|
+
border-bottom: 1px solid var(--tree-stroke);
|
|
1163
|
+
border-left: 1px solid var(--tree-stroke);
|
|
1031
1164
|
border-bottom-left-radius: var(--radius-lg);
|
|
1032
1165
|
}
|
|
1033
1166
|
|
|
1034
1167
|
/* Comments become a placement mode while the comments panel is open. Keep
|
|
1035
|
-
the native cursor readable while
|
|
1036
|
-
used by the rest of the Artifact UI. */
|
|
1168
|
+
the native cursor readable while keeping placement precise. */
|
|
1037
1169
|
.artifact-comment-cursor,
|
|
1038
1170
|
.artifact-comment-cursor * {
|
|
1039
|
-
cursor:
|
|
1040
|
-
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Ccircle cx='14' cy='14' r='12' fill='white' stroke='%23242424' stroke-width='1.5'/%3E%3Cpath d='M8.5 9.5h11v7h-5.5l-3.5 3v-3h-2z' fill='%23242424'/%3E%3C/svg%3E")
|
|
1041
|
-
5 5,
|
|
1042
|
-
crosshair !important;
|
|
1171
|
+
cursor: crosshair !important;
|
|
1043
1172
|
}
|
|
1044
1173
|
/* Let the consumer's Tailwind discover the classes ADS components use. */
|
|
1045
1174
|
@source "./**/*.{js,mjs}";
|