@actioneer/ads 0.5.6 → 0.5.8
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/bin/ads-init.mjs +6 -0
- package/components/accordion.js +50 -48
- package/components/agent-icon.d.ts +12 -0
- package/components/agent-icon.js +135 -121
- package/components/ai-elements/chain-of-thought-icon.d.ts +10 -12
- package/components/ai-elements/chain-of-thought-icon.js +341 -201
- package/components/ai-elements/chain-of-thought.d.ts +2 -2
- package/components/ai-elements/chain-of-thought.js +108 -108
- package/components/ai-elements/chart.js +16 -14
- package/components/ai-elements/inline-citation.js +41 -41
- package/components/ai-elements/message.js +4 -4
- package/components/ai-elements/queue.js +7 -7
- package/components/ai-elements/research-activity.js +114 -114
- package/components/ai-elements/shimmer.d.ts +2 -2
- package/components/ai-elements/speech-input.js +28 -28
- package/components/ai-elements/task-progress.js +26 -16
- package/components/ai-elements/task.js +17 -17
- package/components/ai-elements/tool.js +6 -6
- package/components/ai-elements/transcript.js +6 -5
- package/components/ai-elements/voice.js +1 -1
- package/components/alert.js +10 -10
- package/components/answer-sources.d.ts +42 -0
- package/components/answer-sources.js +111 -0
- package/components/answer.js +115 -114
- package/components/assistant-ui/action-bar.js +94 -48
- package/components/assistant-ui/attachment.js +131 -103
- package/components/assistant-ui/badge.d.ts +1 -1
- package/components/assistant-ui/badge.js +17 -17
- package/components/assistant-ui/chain-of-thought.d.ts +1 -1
- package/components/assistant-ui/composer-add-context.js +9 -9
- package/components/assistant-ui/composer-deep-research.js +5 -5
- package/components/assistant-ui/composer-harness.js +12 -9
- package/components/assistant-ui/composer-trigger-popover.js +45 -34
- package/components/assistant-ui/composer.js +59 -59
- package/components/assistant-ui/error.js +14 -14
- package/components/assistant-ui/file.d.ts +1 -1
- package/components/assistant-ui/image.d.ts +1 -1
- package/components/assistant-ui/image.js +113 -103
- package/components/assistant-ui/markdown-text.js +18 -18
- package/components/assistant-ui/message.js +46 -45
- package/components/assistant-ui/quote.js +1 -1
- package/components/assistant-ui/reasoning.d.ts +1 -1
- package/components/assistant-ui/reasoning.js +66 -77
- package/components/assistant-ui/suggestions.js +4 -4
- package/components/assistant-ui/thread-context.d.ts +2 -0
- package/components/assistant-ui/thread.js +41 -40
- package/components/assistant-ui/tool-fallback.js +60 -63
- package/components/assistant-ui/tool-group.d.ts +1 -1
- package/components/assistant-ui/tool-group.js +36 -42
- package/components/audio-waveform.js +25 -24
- package/components/autocomplete.d.ts +1 -0
- package/components/autocomplete.js +45 -43
- package/components/avatar.js +30 -30
- package/components/badge.d.ts +1 -1
- package/components/breadcrumbs.js +2 -2
- package/components/button.d.ts +2 -2
- package/components/button.js +22 -20
- package/components/card.js +8 -8
- package/components/carousel.js +105 -104
- package/components/chart.js +9 -7
- package/components/checkbox.js +74 -38
- package/components/chip.d.ts +1 -1
- package/components/code-block.js +3 -3
- package/components/collapsible.js +67 -23
- package/components/connector-card.js +6 -6
- package/components/drawer.d.ts +15 -10
- package/components/drawer.js +78 -77
- package/components/dropdown.d.ts +3 -1
- package/components/dropdown.js +88 -79
- package/components/empty-state.d.ts +4 -4
- package/components/empty-state.js +7 -7
- package/components/field.d.ts +4 -0
- package/components/field.js +45 -34
- package/components/file-dropzone.js +12 -12
- package/components/index.d.ts +4 -0
- package/components/index.js +584 -553
- package/components/infinite-canvas.js +1 -1
- package/components/input-field.js +51 -46
- package/components/input.js +20 -20
- package/components/link.js +9 -9
- package/components/modal.js +105 -73
- package/components/navbar.d.ts +1 -1
- package/components/navbar.js +1 -1
- package/components/number-field.js +38 -29
- package/components/page-header.js +12 -12
- package/components/pagination.js +19 -19
- package/components/panel.js +2 -2
- package/components/pixel-blast-svg.js +3 -3
- package/components/pixel-icon.d.ts +3 -1
- package/components/pixel-icon.js +294 -215
- package/components/popover.d.ts +1 -1
- package/components/popover.js +66 -64
- package/components/progress-circle.js +36 -32
- package/components/progress.js +28 -24
- package/components/radio.js +59 -49
- package/components/resizable-panel.js +1 -1
- package/components/reveal.d.ts +2 -2
- package/components/ripple.d.ts +3 -3
- package/components/scroll-area.js +17 -16
- package/components/segmented.d.ts +4 -1
- package/components/segmented.js +26 -25
- package/components/select.d.ts +2 -0
- package/components/select.js +61 -57
- package/components/setting-row.js +45 -42
- package/components/sidebar.d.ts +2 -2
- package/components/sidebar.js +131 -127
- package/components/skeleton.js +5 -5
- package/components/spinner.d.ts +13 -4
- package/components/spinner.js +42 -42
- package/components/stepper.js +21 -21
- package/components/switch.js +52 -32
- package/components/table.d.ts +24 -7
- package/components/table.js +457 -220
- package/components/tabs.js +149 -137
- package/components/textarea.js +1 -2
- package/components/toast.js +66 -66
- package/components/tooltip.js +2 -2
- package/components/tree.js +62 -51
- package/components/typography.d.ts +2 -1
- package/components/typography.js +33 -32
- package/components/ui/button.d.ts +2 -2
- package/components/ui/button.js +19 -19
- package/components/ui/collapsible.d.ts +1 -5
- package/components/ui/dialog.d.ts +3 -3
- package/components/ui/dialog.js +95 -58
- package/components/ui/tooltip.d.ts +2 -2
- package/components/ui/tooltip.js +67 -33
- package/components/viz-charts.js +95 -95
- package/demo/components/add-to-artifact.js +341 -0
- package/demo/lib/artifact-library.js +134 -0
- package/fonts/aribau-grotesk-medium.woff2 +0 -0
- package/fonts/aribau-grotesk-regular.woff2 +0 -0
- package/fonts.css +11 -11
- package/hooks/agents-ui/use-agent-audio-visualizer-aura.js +17 -16
- package/hooks/agents-ui/use-agent-audio-visualizer-wave.js +21 -20
- package/lib/icons.d.ts +12 -0
- package/lib/icons.js +107 -104
- package/lib/motion.d.ts +42 -39
- package/lib/motion.js +112 -52
- package/lib/spinner-mark.d.ts +9 -0
- package/lib/spinner-mark.js +98 -0
- package/llms.txt +69 -26
- package/manifest.json +344 -42
- package/package.json +1 -1
- package/styles.css +175 -161
- package/theme.css +104 -128
- package/components/ui/collapsible.js +0 -35
- package/fonts/aribau-grotesk-500.otf +0 -0
- package/fonts/aribau-grotesk-600.woff2 +0 -0
package/theme.css
CHANGED
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
/* @actioneer/ads — generated by scripts/build-lib-styles.mjs. Do not edit. */
|
|
2
|
+
/* ADS is light-only. Redefine the `dark` variant to be class-gated instead of
|
|
3
|
+
Tailwind's default `@media (prefers-color-scheme: dark)`, so a stray `dark:`
|
|
4
|
+
utility can never activate off the OS setting while there is no dark token
|
|
5
|
+
set. Nothing in ADS adds `.dark`, so `dark:` styles stay dormant. */
|
|
6
|
+
@custom-variant dark (&:where(.dark, .dark *));
|
|
7
|
+
|
|
2
8
|
/*
|
|
3
9
|
* ============================================================
|
|
4
10
|
* ADS 1.0 — Design Tokens
|
|
5
|
-
*
|
|
11
|
+
* Palette: Ink neutrals · Typeface: Aribau Grotesk
|
|
6
12
|
* ============================================================
|
|
7
13
|
*/
|
|
8
14
|
@theme {
|
|
9
15
|
/* ---- Typography ----
|
|
10
|
-
One brand typeface. Figures
|
|
11
|
-
`tabular-nums
|
|
16
|
+
One brand typeface (Regular + Medium). Figures stay in Aribau Grotesk with
|
|
17
|
+
`tabular-nums` (enabled globally in index.css); only literal source code
|
|
18
|
+
steps to the mono stack. */
|
|
12
19
|
--font-sans: "Aribau Grotesk", ui-sans-serif, system-ui, -apple-system,
|
|
13
20
|
"Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
|
14
21
|
|
|
@@ -40,49 +47,30 @@
|
|
|
40
47
|
--text-2xl: 1.625rem; /* 26px — display */
|
|
41
48
|
--text-2xl--line-height: 2rem;
|
|
42
49
|
|
|
43
|
-
/* ---- Neutral ramp —
|
|
44
|
-
|
|
50
|
+
/* ---- Neutral ramp — a role-based neutral Gray 12-step light scale. Every
|
|
51
|
+
channel is equal, so the product stays neutral with no Sand/Sage cast.
|
|
52
|
+
The light surface steps retain subtle spacing; the solid/text end is
|
|
53
|
+
perceptually widened so adjacent swatches and UI roles stay distinct.
|
|
54
|
+
Each step owns a role — 50/100 =
|
|
45
55
|
backgrounds, 200/300/400 = interactive component fills, 500/600/700 =
|
|
46
|
-
borders & separators, 800/850 = solid, 900/950 = accessible text.
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
--color-ink-
|
|
51
|
-
--color-ink-
|
|
52
|
-
--color-ink-
|
|
53
|
-
--color-ink-
|
|
54
|
-
--color-ink-
|
|
55
|
-
--color-ink-
|
|
56
|
-
--color-ink-
|
|
57
|
-
--color-ink-
|
|
58
|
-
--color-ink-
|
|
59
|
-
--color-ink-
|
|
60
|
-
--color-ink-
|
|
61
|
-
--color-ink-950: #1f1f1c; /* 12 · accessible text */
|
|
62
|
-
|
|
63
|
-
/* ---- Brand ramp — the full 12-step Sage green (light section, solid row),
|
|
64
|
-
same Radix roles as the neutral ramp. All 12 present: sage-850 (#417c36,
|
|
65
|
-
step 11 = the accessible green text tone) and sage-950 (#273d23, step 12)
|
|
66
|
-
are restored. The interactive brand (--brand #3f7a34) is step 9 (solid);
|
|
67
|
-
its hover is step 10 (#316c26). NOTE: steps 9–12 are not a pure lightness
|
|
68
|
-
ramp (Radix convention) — the Tailwind name order differs from role
|
|
69
|
-
order, so read the role comment, not the number. ---- */
|
|
70
|
-
--color-sage-50: #fbfefb; /* 1 · background */
|
|
71
|
-
--color-sage-100: #f6fbf5; /* 2 · background */
|
|
72
|
-
--color-sage-200: #e9f7e6; /* 3 · interactive */
|
|
73
|
-
--color-sage-300: #dbf1d6; /* 4 · interactive */
|
|
74
|
-
--color-sage-400: #cae8c5; /* 5 · interactive */
|
|
75
|
-
--color-sage-500: #b6dcaf; /* 6 · border */
|
|
76
|
-
--color-sage-600: #9ccc93; /* 7 · border */
|
|
77
|
-
--color-sage-700: #77b76b; /* 8 · border */
|
|
78
|
-
--color-sage-800: #3f7a34; /* 9 · solid (brand) */
|
|
79
|
-
--color-sage-900: #316c26; /* 10 · solid (hover) */
|
|
80
|
-
--color-sage-850: #417c36; /* 11 · accessible text */
|
|
81
|
-
--color-sage-950: #273d23; /* 12 · accessible text */
|
|
56
|
+
borders & separators, 800/850 = solid, 900/950 = accessible text. The
|
|
57
|
+
`ink` name is retained as the stable ADS API. ---- */
|
|
58
|
+
--color-ink-50: #fcfcfc; /* 1 · background */
|
|
59
|
+
--color-ink-100: #f9f9f9; /* 2 · background */
|
|
60
|
+
--color-ink-150: #f5f5f5; /* canvas */
|
|
61
|
+
--color-ink-200: #f0f0f0; /* 3 · interactive */
|
|
62
|
+
--color-ink-300: #e8e8e8; /* 4 · interactive */
|
|
63
|
+
--color-ink-400: #e0e0e0; /* 5 · interactive */
|
|
64
|
+
--color-ink-500: #d9d9d9; /* 6 · border */
|
|
65
|
+
--color-ink-600: #cecece; /* 7 · border */
|
|
66
|
+
--color-ink-700: #bbbbbb; /* 8 · border */
|
|
67
|
+
--color-ink-800: #8d8d8d; /* 9 · solid */
|
|
68
|
+
--color-ink-850: #737373; /* 10 · solid */
|
|
69
|
+
--color-ink-900: #555555; /* 11 · accessible text */
|
|
70
|
+
--color-ink-950: #202020; /* 12 · accessible text */
|
|
82
71
|
|
|
83
72
|
/* ---- Semantic accent ramps ---- */
|
|
84
|
-
/* Success
|
|
85
|
-
distinct from the warm Sage brand green. */
|
|
73
|
+
/* Success stays a semantic state color, never a product-primary hue. */
|
|
86
74
|
--color-success-50: #ecfdf5;
|
|
87
75
|
--color-success-100: #d1fae5;
|
|
88
76
|
--color-success-500: #10b981;
|
|
@@ -109,7 +97,7 @@
|
|
|
109
97
|
|
|
110
98
|
/* ---- Data-viz accents ---- three small ramps for charts & illustration.
|
|
111
99
|
deep = text/lines · base = fills · soft = backgrounds. Separate from the
|
|
112
|
-
semantic status ramps above; these
|
|
100
|
+
semantic status ramps above; these carry data, not product identity. */
|
|
113
101
|
--color-cyan-soft: #c7efe9; /* Cyan — vivid cool contrast; 2nd series, links */
|
|
114
102
|
--color-cyan-base: #12b5a5;
|
|
115
103
|
--color-cyan-deep: #0a7e82;
|
|
@@ -120,14 +108,23 @@
|
|
|
120
108
|
--color-amber-base: #f3a72e;
|
|
121
109
|
--color-amber-deep: #b57414;
|
|
122
110
|
|
|
123
|
-
/*
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
--radius-
|
|
111
|
+
/* Demo logo indigo — source for artifact canvas wash. */
|
|
112
|
+
--color-brand-mark: #2e1065;
|
|
113
|
+
|
|
114
|
+
/* ---- Radii ---- FOUR values, assigned by element scale and role.
|
|
115
|
+
2px = micro details; 4px = compact controls; 8px = standard controls
|
|
116
|
+
and floating UI; 16px = cards and large surfaces. The repeated aliases
|
|
117
|
+
keep the familiar Tailwind role names while capping surfaces at 16px. */
|
|
118
|
+
--radius-xs: 0.125rem; /* 2px · micro details */
|
|
119
|
+
--radius-sm: 0.25rem; /* 4px · compact controls */
|
|
120
|
+
--radius-md: 0.5rem; /* 8px · standard controls */
|
|
121
|
+
--radius-lg: 0.5rem; /* 8px · menus and panels */
|
|
122
|
+
--radius-xl: 1rem; /* 16px · cards and surfaces */
|
|
123
|
+
--radius-2xl: 1rem; /* 16px · large surfaces */
|
|
124
|
+
--radius-3xl: 1rem; /* 16px · capped compatibility alias */
|
|
125
|
+
--radius-4xl: 1rem; /* 16px · capped compatibility alias */
|
|
126
|
+
/* Shape-only exception for avatars, icon buttons, progress tracks, chips,
|
|
127
|
+
and badges. It is not part of the corner-radius scale. */
|
|
131
128
|
--radius-full: 9999px;
|
|
132
129
|
/* Status/indicator dots are SQUARE with a hair of softening — echoing the
|
|
133
130
|
growth-mark's square cells. Never render an indicator dot as a circle
|
|
@@ -137,20 +134,17 @@
|
|
|
137
134
|
|
|
138
135
|
/* ---- Elevation ---- ONE soft token (Claude-panel style).
|
|
139
136
|
Delineate surfaces with fill color first; add this to gently lift them.
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
0 1px 2px 0 rgb(15 23 42 / 0.04),
|
|
146
|
-
0 4px 16px -6px rgb(15 23 42 / 0.06);
|
|
137
|
+
The ambient drop sits close (y4, blur16) at low opacity and uses neutral
|
|
138
|
+
ink — never a cool slate tint that would reintroduce a color cast. */
|
|
139
|
+
--shadow-elevation: 0 0 0 1px rgb(32 32 32 / 0.03),
|
|
140
|
+
0 1px 2px 0 rgb(32 32 32 / 0.04),
|
|
141
|
+
0 4px 16px -6px rgb(32 32 32 / 0.06);
|
|
147
142
|
|
|
148
143
|
/* Pinned-table-column smudges — whisper-soft directional casts shown only
|
|
149
144
|
while content is hidden behind a sticky column (Table is scroll-aware).
|
|
150
|
-
Deep negative spread keeps the edge feathered;
|
|
151
|
-
|
|
152
|
-
--shadow-table-smudge-
|
|
153
|
-
--shadow-table-smudge-right: -8px 0 24px -14px rgb(15 23 42 / 0.05);
|
|
145
|
+
Deep negative spread keeps the edge feathered; the tint is neutral ink. */
|
|
146
|
+
--shadow-table-smudge-left: 8px 0 24px -14px rgb(32 32 32 / 0.05);
|
|
147
|
+
--shadow-table-smudge-right: -8px 0 24px -14px rgb(32 32 32 / 0.05);
|
|
154
148
|
|
|
155
149
|
/* ---- CTA inner glow ---- luminous inset highlight for primary buttons
|
|
156
150
|
(adapted from the "AI button" Figma): a crisp top-edge catch plus a soft
|
|
@@ -164,36 +158,7 @@
|
|
|
164
158
|
inset 0 8px 16px -8px rgb(255 255 255 / 0.45);
|
|
165
159
|
/* Text fields — a whisper of inset depth so the writing surface reads
|
|
166
160
|
recessed into the page (persists through hover/focus/invalid). */
|
|
167
|
-
--inner-glow-field: inset 0 1px 2px 0 rgb(
|
|
168
|
-
|
|
169
|
-
/* ---- Motion ---- strong custom curves; the built-in CSS easings are too
|
|
170
|
-
weak. Declared here so the `ease-out` / `ease-in-out` utilities resolve
|
|
171
|
-
to these system-wide. JS mirror: src/lib/motion.ts — keep in sync. */
|
|
172
|
-
--ease-out: cubic-bezier(0.23, 1, 0.32, 1); /* entrances, exits, presses */
|
|
173
|
-
--ease-in-out: cubic-bezier(0.77, 0, 0.175, 1); /* on-screen movement / morphs */
|
|
174
|
-
--ease-expo-out: cubic-bezier(0.16, 1, 0.3, 1); /* side-panel and drawer slide */
|
|
175
|
-
--ease-drawer: var(--ease-expo-out); /* backwards-compatible alias */
|
|
176
|
-
--ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1); /* playful overshoot (rare) */
|
|
177
|
-
--ease-disclosure: cubic-bezier(0.32, 0.72, 0, 1); /* height reveals — moves off the mark immediately, settles long */
|
|
178
|
-
|
|
179
|
-
/* Durations — every animation/transition timing flows from these.
|
|
180
|
-
UI animations stay under 300ms; exits run faster than enters. */
|
|
181
|
-
--duration-fast: 0.15s; /* menu / popover / tooltip enter */
|
|
182
|
-
--duration-normal: 0.2s; /* state transitions */
|
|
183
|
-
--duration-disclosure: 0.28s; /* collapsible open — travels a real distance */
|
|
184
|
-
--duration-spin: 0.8s; /* rotation loops (spinner) */
|
|
185
|
-
--duration-pulse: 1.5s; /* breathing / shimmer loops */
|
|
186
|
-
--duration-bloom: 0.9s; /* ambient reveals (chat texture bloom, curtain wipe) */
|
|
187
|
-
--duration-brand-loader: 3.4s; /* BrandLoader flicker loop */
|
|
188
|
-
|
|
189
|
-
/* Entrance-choreography beats — staggered delays for sequenced arrivals
|
|
190
|
-
(e.g. chat welcome: mark → greeting → composer). */
|
|
191
|
-
--stagger-1: 0.2s;
|
|
192
|
-
--stagger-2: 0.3s;
|
|
193
|
-
--stagger-3: 0.42s;
|
|
194
|
-
|
|
195
|
-
/* Press feedback — every pressable element scales down on :active */
|
|
196
|
-
--scale-press: 0.97;
|
|
161
|
+
--inner-glow-field: inset 0 1px 2px 0 rgb(32 32 32 / 0.06);
|
|
197
162
|
|
|
198
163
|
/* ---- Layout ---- app-frame dimensions (Sidebar / Panel) */
|
|
199
164
|
--sidebar-width: 15rem; /* 240px — primary nav rail */
|
|
@@ -273,7 +238,7 @@
|
|
|
273
238
|
--color-card: var(--card);
|
|
274
239
|
--color-card-foreground: var(--card-foreground);
|
|
275
240
|
|
|
276
|
-
/*
|
|
241
|
+
/* Compatibility action role — neutral ink, never a colored primary hue. */
|
|
277
242
|
--color-brand: var(--brand);
|
|
278
243
|
--color-brand-foreground: var(--brand-foreground);
|
|
279
244
|
--color-brand-hover: var(--brand-hover);
|
|
@@ -284,13 +249,18 @@
|
|
|
284
249
|
--color-fill-foreground: var(--fill-foreground);
|
|
285
250
|
--color-table-shell: var(--table-shell);
|
|
286
251
|
|
|
252
|
+
--color-artifact-canvas: var(--artifact-canvas);
|
|
253
|
+
|
|
287
254
|
--color-accent: var(--accent);
|
|
288
255
|
--color-accent-foreground: var(--accent-foreground);
|
|
289
256
|
|
|
290
|
-
|
|
257
|
+
/* success-700 on white = 5.48:1 (600 was 3.77:1, failed AA). */
|
|
258
|
+
--color-success: var(--color-success-700);
|
|
291
259
|
--color-success-foreground: #ffffff;
|
|
260
|
+
/* Amber-500 fill kept (it IS the caution signal); dark ink foreground
|
|
261
|
+
instead of white = 6.94:1 (white on amber was 2.35:1, failed even 3:1). */
|
|
292
262
|
--color-warning: var(--color-warning-500);
|
|
293
|
-
--color-warning-foreground:
|
|
263
|
+
--color-warning-foreground: var(--color-ink-950);
|
|
294
264
|
--color-danger: var(--color-danger-600);
|
|
295
265
|
--color-danger-foreground: #ffffff;
|
|
296
266
|
--color-info: var(--color-info-600);
|
|
@@ -332,18 +302,20 @@
|
|
|
332
302
|
|
|
333
303
|
/* ---- Theme (light only) ---- */
|
|
334
304
|
:root {
|
|
335
|
-
/* Every semantic token below points INTO
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
base surface, not a neutral scale step. */
|
|
305
|
+
/* Every neutral semantic token below points INTO the ink primitive scale.
|
|
306
|
+
Only pure white (#ffffff) stays literal: it is a base surface, not a
|
|
307
|
+
neutral scale step. */
|
|
339
308
|
--background: var(--color-ink-100); /* step 2 · canvas */
|
|
340
309
|
--foreground: var(--color-ink-950); /* step 12 */
|
|
341
310
|
|
|
342
|
-
/* Text levels: primary ink-950, secondary ink-900, tertiary
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
311
|
+
/* Text levels: primary ink-950, secondary ink-900, tertiary a tuned grey.
|
|
312
|
+
All three clear AA (4.5:1) for body copy on every surface they land on.
|
|
313
|
+
Tertiary is NOT an ink step: ink-800 (#8d8d8d) was AA-large only (2.7:1
|
|
314
|
+
on muted) but is used at 13px in 200+ places, so it is pinned to the
|
|
315
|
+
lightest grey that still passes 4.5:1 on bg/card/surface/muted. */
|
|
316
|
+
--text-primary: var(--color-ink-950); /* ~16:1 AAA */
|
|
317
|
+
--text-secondary: var(--color-ink-900); /* ~7.1:1 AAA */
|
|
318
|
+
--text-tertiary: #686868; /* ~4.55:1 AA (min surf) */
|
|
347
319
|
|
|
348
320
|
--surface: var(--color-ink-200); /* step 3 · tinted canvas */
|
|
349
321
|
--surface-foreground: var(--color-ink-950);
|
|
@@ -355,11 +327,12 @@
|
|
|
355
327
|
--card: #ffffff; /* pure white base */
|
|
356
328
|
--card-foreground: var(--color-ink-950);
|
|
357
329
|
|
|
358
|
-
/*
|
|
359
|
-
|
|
330
|
+
/* Neutral action role. The `brand` name remains as a compatibility API,
|
|
331
|
+
but the product has no colored primary palette. */
|
|
332
|
+
--brand: var(--color-ink-950); /* darkest action ink */
|
|
360
333
|
--brand-foreground: #ffffff;
|
|
361
|
-
--brand-hover: var(--color-
|
|
362
|
-
--brand-text: var(--color-
|
|
334
|
+
--brand-hover: var(--color-ink-900); /* lighter hover lift */
|
|
335
|
+
--brand-text: var(--color-ink-950); /* action text / links */
|
|
363
336
|
|
|
364
337
|
/* Table interaction fills are pre-composited and opaque. Sticky edge cells
|
|
365
338
|
therefore cover horizontally scrolled content while preserving the
|
|
@@ -367,56 +340,59 @@
|
|
|
367
340
|
--table-row-hover: color-mix(in srgb, var(--card) 40%, var(--muted));
|
|
368
341
|
--table-row-selected: color-mix(in srgb, var(--card) 10%, var(--muted));
|
|
369
342
|
|
|
370
|
-
/* Quiet fill
|
|
371
|
-
|
|
343
|
+
/* Quiet component fill. Radix step 3 is the first interactive-background
|
|
344
|
+
step, so this remains visible on both white cards and the step-2 canvas. */
|
|
345
|
+
--fill: var(--color-ink-200); /* step 3 · default component fill */
|
|
372
346
|
--fill-foreground: var(--color-ink-950);
|
|
373
347
|
|
|
374
|
-
--accent: var(--color-ink-
|
|
348
|
+
--accent: var(--color-ink-400); /* step 5 · active / selected wash */
|
|
375
349
|
--accent-foreground: var(--color-ink-950);
|
|
376
350
|
|
|
377
|
-
/* Borders
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
--border-
|
|
351
|
+
/* Borders use consecutive Radix steps 5–7. This avoids the old 3→5→7 jump:
|
|
352
|
+
tertiary stays quiet but visible at 0.5px, secondary is the Radix subtle
|
|
353
|
+
border step, and primary is the default interactive-control edge. */
|
|
354
|
+
--border-primary: var(--color-ink-600); /* step 7 · #cecece · strongest */
|
|
355
|
+
--border-secondary: var(--color-ink-500); /* step 6 · #d9d9d9 · default */
|
|
356
|
+
--border-tertiary: var(--color-ink-400); /* step 5 · #e0e0e0 · faintest */
|
|
381
357
|
/* Legacy aliases point into the scale so existing utilities keep resolving. */
|
|
382
358
|
--border: var(--border-secondary); /* default hairline / separator */
|
|
383
359
|
--border-strong: var(--border-primary); /* emphasized / hover / selected */
|
|
384
360
|
--input: var(--border-primary); /* form-control edge */
|
|
385
361
|
|
|
386
362
|
/* Ripple — the appearance wash that radiates from a floating surface's
|
|
387
|
-
origin corner as it opens (Dropdown/Popover/Select/Modal…). A soft
|
|
363
|
+
origin corner as it opens (Dropdown/Popover/Select/Modal…). A soft ink
|
|
388
364
|
tint that expands + fades once on mount; see the `.ads-ripple` layer and
|
|
389
|
-
the `Ripple` component.
|
|
365
|
+
the `Ripple` component. */
|
|
390
366
|
--ripple-tint: color-mix(in srgb, var(--brand) 20%, transparent);
|
|
391
|
-
--ripple-duration: 300ms;
|
|
392
367
|
|
|
393
368
|
/* Stroke width — ADS hairlines are 0.5px, not the Tailwind 1px default.
|
|
394
369
|
The single-width border utilities are overridden to this token at the
|
|
395
370
|
bottom of this file, so every `border`/`border-t|r|b|l|x|y` reads as a
|
|
396
371
|
true hairline. Explicit `border-2`+ widths are unaffected. */
|
|
397
372
|
--stroke-width: 0.5px;
|
|
398
|
-
--ring: color-mix(in srgb, var(--color-
|
|
373
|
+
--ring: color-mix(in srgb, var(--color-ink-950) 50%, transparent); /* ink @ 50% */
|
|
399
374
|
--overlay: color-mix(in srgb, var(--color-ink-950) 50%, transparent); /* ink-950 @ 50% */
|
|
400
375
|
|
|
401
376
|
/* Functional / domain tokens — named for their RENDER role, pointing into
|
|
402
377
|
the ink scale. Components pass these into non-CSS renderers (Recharts,
|
|
403
378
|
React Flow, the Paper/WebGL texture) so no component carries a raw ink-*
|
|
404
379
|
value. Same DS pattern as the data-viz --color-chart-* palette. */
|
|
405
|
-
--chart-axis: var(--
|
|
406
|
-
--chart-grid: var(--color-ink-
|
|
407
|
-
--chart-track: var(--color-ink-
|
|
408
|
-
--chart-context: var(--color-ink-
|
|
409
|
-
--canvas-edge: var(--
|
|
380
|
+
--chart-axis: var(--border-tertiary); /* axis lines + de-emphasised marks */
|
|
381
|
+
--chart-grid: var(--color-ink-200); /* quieter than axes, visible on white */
|
|
382
|
+
--chart-track: var(--color-ink-200); /* funnel / progress track */
|
|
383
|
+
--chart-context: var(--color-ink-500); /* de-emphasised context series */
|
|
384
|
+
--canvas-edge: var(--border-secondary);/* infinite-canvas edges / connectors */
|
|
410
385
|
--texture-ink: var(--color-ink-950); /* brand-texture / pixel-blast marks */
|
|
411
386
|
--table-shell: var(--color-ink-200); /* recessed table tray (lighter than muted) */
|
|
412
|
-
--table-scroll-hint: rgb(
|
|
387
|
+
--table-scroll-hint: rgb(32 32 32 / 0.04); /* right-edge "more columns" wash */
|
|
413
388
|
--surface-inverse: var(--color-ink-950); /* dark hero / inverse surface base */
|
|
414
389
|
--surface-inverse-soft: var(--color-ink-900); /* dark hero gradient falloff */
|
|
390
|
+
--artifact-canvas: color-mix(in srgb, var(--color-brand-mark) 7%, #ffffff);
|
|
415
391
|
|
|
416
392
|
/* shadcn-compat raw surfaces — so a downstream shadcn Sidebar / Popover
|
|
417
393
|
(or an inline `var(--sidebar)` / `var(--popover)`) resolves to the ADS
|
|
418
394
|
palette instead of shadcn's grey/black defaults. The sidebar reads as the
|
|
419
|
-
neutral canvas; its active item takes
|
|
395
|
+
neutral canvas; its active item takes action ink. A consumer that had
|
|
420
396
|
hard-coded these can now delete its overrides and inherit from here. */
|
|
421
397
|
--sidebar: var(--surface);
|
|
422
398
|
--sidebar-foreground: var(--foreground);
|
|
@@ -465,7 +441,7 @@
|
|
|
465
441
|
pointer-events: none;
|
|
466
442
|
transform-origin: var(--ripple-origin, center);
|
|
467
443
|
background: radial-gradient(125% 125% at var(--ripple-origin, center), var(--ripple-tint), transparent 62%);
|
|
468
|
-
animation: ads-ripple-wave
|
|
444
|
+
animation: ads-ripple-wave 300ms ease-out forwards;
|
|
469
445
|
will-change: transform, opacity;
|
|
470
446
|
}
|
|
471
447
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx as o } from "react/jsx-runtime";
|
|
3
|
-
import { Collapsible as t } from "radix-ui";
|
|
4
|
-
function a({
|
|
5
|
-
...l
|
|
6
|
-
}) {
|
|
7
|
-
return /* @__PURE__ */ o(t.Root, { "data-slot": "collapsible", ...l });
|
|
8
|
-
}
|
|
9
|
-
function r({
|
|
10
|
-
...l
|
|
11
|
-
}) {
|
|
12
|
-
return /* @__PURE__ */ o(
|
|
13
|
-
t.CollapsibleTrigger,
|
|
14
|
-
{
|
|
15
|
-
"data-slot": "collapsible-trigger",
|
|
16
|
-
...l
|
|
17
|
-
}
|
|
18
|
-
);
|
|
19
|
-
}
|
|
20
|
-
function n({
|
|
21
|
-
...l
|
|
22
|
-
}) {
|
|
23
|
-
return /* @__PURE__ */ o(
|
|
24
|
-
t.CollapsibleContent,
|
|
25
|
-
{
|
|
26
|
-
"data-slot": "collapsible-content",
|
|
27
|
-
...l
|
|
28
|
-
}
|
|
29
|
-
);
|
|
30
|
-
}
|
|
31
|
-
export {
|
|
32
|
-
a as Collapsible,
|
|
33
|
-
n as CollapsibleContent,
|
|
34
|
-
r as CollapsibleTrigger
|
|
35
|
-
};
|
|
Binary file
|
|
Binary file
|