@actioneer/ads 0.3.1 → 0.5.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 +87 -0
- package/components/ai-elements/agent-trace.js +180 -0
- package/components/ai-elements/chain-of-thought.js +63 -63
- package/components/ai-elements/index.d.ts +1 -0
- package/components/ai-elements/tool.js +3 -3
- package/components/ai-elements/voice.d.ts +24 -14
- package/components/ai-elements/voice.js +237 -670
- package/components/assistant-ui/composer-harness.js +5 -4
- package/components/chart.js +305 -306
- package/components/drawer.d.ts +15 -0
- package/components/empty-state.d.ts +40 -0
- package/components/empty-state.js +168 -26
- package/components/index.js +328 -322
- package/lib/icons.js +2 -2
- package/llms.txt +13 -4
- package/manifest.json +87 -8
- package/package.json +1 -1
- package/styles.css +89 -53
- package/theme.css +86 -50
- package/components/agents-ui/agent-audio-visualizer-aura.d.ts +0 -11
- package/components/agents-ui/agent-audio-visualizer-aura.js +0 -277
- package/components/agents-ui/agent-audio-visualizer-wave.d.ts +0 -12
- package/components/agents-ui/agent-audio-visualizer-wave.js +0 -203
- package/components/agents-ui/react-shader-toy.d.ts +0 -87
- package/components/agents-ui/react-shader-toy.js +0 -531
package/lib/icons.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as r } from "react/jsx-runtime";
|
|
3
3
|
import { HugeiconsIcon as s } from "@hugeicons/react";
|
|
4
|
-
import { Tick02Icon as a, Copy01Icon as i, File02Icon as I, Cancel01Icon as l, Upload01Icon as h, ViewOffIcon as C, ViewIcon as g, MinusSignIcon as p, PlusSignIcon as f, ArrowDown01Icon as d, Search01Icon as u, InformationCircleIcon as k, AlertCircleIcon as w, Alert02Icon as A, CheckmarkCircle02Icon as L, ArrowLeft01Icon as m, ArrowRight01Icon as S, DatabaseIcon as M, Maximize01Icon as O, Magnet01Icon as P, ArrowUp01Icon as T, ArrowUpDownIcon as U, InboxIcon as B, ArrowLeft02Icon as D, MoreHorizontalIcon as y,
|
|
4
|
+
import { Tick02Icon as a, Copy01Icon as i, File02Icon as I, Cancel01Icon as l, Upload01Icon as h, ViewOffIcon as C, ViewIcon as g, MinusSignIcon as p, PlusSignIcon as f, ArrowDown01Icon as d, Search01Icon as u, InformationCircleIcon as k, AlertCircleIcon as w, Alert02Icon as A, CheckmarkCircle02Icon as L, ArrowLeft01Icon as m, ArrowRight01Icon as S, DatabaseIcon as M, Maximize01Icon as O, Magnet01Icon as P, ArrowUp01Icon as T, ArrowUpDownIcon as U, InboxIcon as B, ArrowLeft02Icon as D, MoreHorizontalIcon as y, SparklesIcon as F, Wrench01Icon as R, CancelCircleIcon as b, Clock01Icon as x, CircleDashedIcon as H, RefreshIcon as v, Attachment01Icon as G, QuoteDownIcon as V, BrainIcon as z, Loading03Icon as E, AtIcon as W, BoltIcon as N, Table01Icon as Q, File01Icon as j, Download01Icon as q, Image01Icon as J, BracesIcon as K, MusicNote01Icon as X, Video01Icon as Y, ImageNotFound01Icon as Z, Activity01Icon as _, AiChat02Icon as $, ArrowDown02Icon as oo, ArrowRight02Icon as no, ArrowUp02Icon as co, Route01Icon as eo, BlocksIcon as to, BookOpen01Icon as ro, Calendar01Icon as so, Call02Icon as ao, CheckListIcon as io, CodeIcon as Io, ComponentIcon as lo, LinkSquare02Icon as ho, Folder01Icon as Co, FolderOpenIcon as go, DashboardSpeed01Icon as po, GitBranchIcon as fo, HashtagIcon as uo, HistoryIcon as ko, Home01Icon as wo, ImageUploadIcon as Ao, GridViewIcon as Lo, Leaf01Icon as mo, Idea01Icon as So, Link01Icon as Mo, Logout01Icon as Oo, Mail01Icon as Po, Mic01Icon as To, MicOff01Icon as Uo, MoreVerticalIcon as Bo, PaintBoardIcon as Do, SidebarLeftIcon as yo, PencilEdit02Icon as Fo, PhoneOff01Icon as Ro, PieChartIcon as bo, PlugSocketIcon as xo, RocketIcon as Ho, Settings01Icon as vo, ShapesIcon as Go, Share01Icon as Vo, StarIcon as zo, StopIcon as Eo, Target01Icon as Wo, Telescope01Icon as No, TextFontIcon as Qo, ToggleOnIcon as jo, Delete02Icon as qo, UserIcon as Jo, UserGroupIcon as Ko, ArrowUpRight01Icon as Xo } from "@hugeicons/core-free-icons";
|
|
5
5
|
function o(c, e) {
|
|
6
6
|
function n(t) {
|
|
7
7
|
return /* @__PURE__ */ r(s, { icon: c, size: "1em", ...t });
|
|
8
8
|
}
|
|
9
9
|
return n.displayName = e, n;
|
|
10
10
|
}
|
|
11
|
-
const $o = o(
|
|
11
|
+
const $o = o(oo, "ArrowDown"), on = o(D, "ArrowLeft"), nn = o(no, "ArrowRight"), cn = o(co, "ArrowUp"), en = o(Xo, "ArrowUpRight"), tn = o(d, "ChevronDown"), rn = o(m, "ChevronLeft"), sn = o(S, "ChevronRight"), an = o(T, "ChevronUp"), In = o(U, "SortIcon"), ln = o(ho, "ExternalLink"), hn = o(yo, "PanelLeft"), Cn = o(W, "At"), gn = o(ao, "Call"), pn = o(l, "Close"), fn = o(b, "CloseCircle"), dn = o(i, "Copy"), un = o(q, "Download"), kn = o(Oo, "LogOut"), wn = o(To, "Mic"), An = o(Uo, "MicOff"), Ln = o(Ro, "PhoneOff"), mn = o(Fo, "Pencil"), Sn = o(V, "Quote"), Mn = o(g, "Eye"), On = o(C, "EyeOff"), Pn = o(uo, "Hash"), Tn = o(Ao, "ImageUpload"), Un = o(h, "Upload"), Bn = o(Qo, "TextFont"), Dn = o(jo, "ToggleOn"), yn = o(so, "Calendar"), Fn = o(x, "Clock"), Rn = o(Io, "Code"), bn = o(Eo, "Stop"), xn = o(P, "Magnet"), Hn = o(O, "Maximize"), vn = o(p, "Minus"), Gn = o(y, "MoreHorizontal"), Vn = o(Bo, "MoreVertical"), zn = o(Mo, "Link"), En = o(f, "Plus"), Wn = o(v, "Refresh"), Nn = o(eo, "AuditTrail"), Qn = o(u, "Search"), jn = o(Vo, "Share"), qn = o(qo, "Trash"), Jn = o(a, "Check"), Kn = o(E, "Loader"), Xn = o(L, "CheckCircle"), Yn = o(k, "Info"), Zn = o(A, "Warning"), _n = o(w, "WarningCircle"), $n = o(_, "Activity"), oc = o($, "AgentChat"), nc = o(N, "Bolt"), cc = o(ro, "BookOpen"), ec = o(z, "Brain"), tc = o(io, "CheckList"), rc = o(lo, "Component"), sc = o(M, "Database"), ac = o(Q, "Table"), ic = o(j, "File"), Ic = o(I, "FileText"), lc = o(Co, "Folder"), hc = o(J, "Image"), Cc = o(Z, "ImageOff"), gc = o(X, "Music"), pc = o(Y, "Video"), fc = o(K, "Braces"), dc = o(go, "FolderOpen"), uc = o(po, "Gauge"), kc = o(fo, "GitBranch"), wc = o(ko, "HistoryClock"), Ac = o(wo, "Home"), Lc = o(to, "Blocks"), mc = o(B, "Inbox"), Sc = o(So, "Lightbulb"), Mc = o(mo, "Leaf"), Oc = o(Lo, "LayoutGrid"), Pc = o(Po, "Mail"), Tc = o(Do, "Palette"), Uc = o(bo, "PieChart"), Bc = o(xo, "Plug"), Dc = o(Ho, "Rocket"), yc = o(vo, "Settings"), Fc = o(Go, "Shapes"), Rc = o(F, "Sparkles"), bc = o(zo, "Star"), xc = o(No, "Telescope"), Hc = o(Wo, "Target"), vc = o(Jo, "User"), Gc = o(Ko, "Users"), Vc = o(G, "Paperclip"), zc = o(H, "CircleDashed"), Ec = o(R, "Wrench");
|
|
12
12
|
export {
|
|
13
13
|
$n as Activity,
|
|
14
14
|
oc as AgentChat,
|
package/llms.txt
CHANGED
|
@@ -27,9 +27,9 @@ Reference semantic roles, never raw color/dimension literals (ads-lint rejects l
|
|
|
27
27
|
- `muted-foreground`
|
|
28
28
|
- `card`
|
|
29
29
|
- `card-foreground`
|
|
30
|
-
- `brand` — Brand (
|
|
31
|
-
- `brand-foreground` — Brand (
|
|
32
|
-
- `brand-hover` — Brand (
|
|
30
|
+
- `brand` — Brand (Sage green) — used for solid fills / primary actions, not body text
|
|
31
|
+
- `brand-foreground` — Brand (Sage green) — used for solid fills / primary actions, not body text
|
|
32
|
+
- `brand-hover` — Brand (Sage green) — used for solid fills / primary actions, not body text
|
|
33
33
|
- `fill` — Quiet fill — secondary buttons, avatars, chips
|
|
34
34
|
- `fill-foreground` — Quiet fill — secondary buttons, avatars, chips
|
|
35
35
|
- `accent`
|
|
@@ -252,7 +252,7 @@ When tabs and a search field control the same content, they share one responsive
|
|
|
252
252
|
### Overlays
|
|
253
253
|
|
|
254
254
|
- [CommandPalette] — component [docs](https://ads.actioneer.dev/#/command-palette)
|
|
255
|
-
- [Drawer] — Use the portaled Drawer for a focused, blocking task (form, details, settings) that slides in over the page with a backdrop and focus trap; use InlineDrawer instead for a contextual panel that must stay in-flow beside content the user still needs. (variants: side: right|left|bottom; size: sm|md|lg|xl) [docs](https://ads.actioneer.dev/#/drawer)
|
|
255
|
+
- [Drawer] — Use the portaled Drawer for a focused, blocking task (form, details, settings) that slides in over the page with a backdrop and focus trap; use InlineDrawer instead for a contextual panel that must stay in-flow beside content the user still needs. The inline Drawer is a flat white panel (bg-card, no shadow, no border) that reads ONLY by fill contrast, so it MUST sit as a sibling of its content inside a bg-surface flex row — on a white (bg-background) parent it is invisible. If it doesn't read, tint the ground; never add a border or shadow to force it. (variants: side: right|left|bottom; size: sm|md|lg|xl) [docs](https://ads.actioneer.dev/#/drawer)
|
|
256
256
|
- [DrawerBody] — component (variants: side: right|left|bottom; size: sm|md|lg|xl) [docs](https://ads.actioneer.dev/#/drawer)
|
|
257
257
|
- [DrawerFooter] — component (variants: side: right|left|bottom; size: sm|md|lg|xl) [docs](https://ads.actioneer.dev/#/drawer)
|
|
258
258
|
- [DrawerHeader] — component (variants: side: right|left|bottom; size: sm|md|lg|xl) [docs](https://ads.actioneer.dev/#/drawer)
|
|
@@ -476,6 +476,10 @@ When tabs and a search field control the same content, they share one responsive
|
|
|
476
476
|
- [BrandMark] — component [docs](https://ads.actioneer.dev/#/brand-loader)
|
|
477
477
|
- [BrandTexture] — Place the ambient halftone wash behind a welcome or hero surface inside a relative container; set lifted when real content takes over so the field dissolves upward, and paused a beat later to stop the shader clock. [docs](https://ads.actioneer.dev/#/brand-texture)
|
|
478
478
|
- [BrandTextureField] — component [docs](https://ads.actioneer.dev/#/brand-texture)
|
|
479
|
+
- [EmptyConnections] — component [docs](https://ads.actioneer.dev/#/empty-state)
|
|
480
|
+
- [EmptyDocuments] — component [docs](https://ads.actioneer.dev/#/empty-state)
|
|
481
|
+
- [EmptyInsights] — component [docs](https://ads.actioneer.dev/#/empty-state)
|
|
482
|
+
- [EmptySearch] — component [docs](https://ads.actioneer.dev/#/empty-state)
|
|
479
483
|
- [EmptyState] — Use as the centered placeholder inside a list, table, or panel that currently has nothing to show. [docs](https://ads.actioneer.dev/#/empty-state)
|
|
480
484
|
- [PixelBlastSVG] — component [docs](https://ads.actioneer.dev/#/pixel-blast-svg)
|
|
481
485
|
- [Progress] — Use for a determinate or indeterminate bar showing task completion, driven by a value/max (default 100). [docs](https://ads.actioneer.dev/#/progress)
|
|
@@ -546,6 +550,7 @@ When tabs and a search field control the same content, they share one responsive
|
|
|
546
550
|
|
|
547
551
|
### AI Elements
|
|
548
552
|
|
|
553
|
+
- [AgentTrace] — component [docs](https://ads.actioneer.dev/#/agent-trace)
|
|
549
554
|
- [AIChart] — Wrap a source-backed chart produced during agent work so its query, partial-data, rendering, ready, error, and cancelled states stay distinct from the chart specification itself. (variants: status: pending|querying|partial|rendering|ready|error|cancelled) [docs](https://ads.actioneer.dev/#/ai/chart)
|
|
550
555
|
- [ChainOfThought] — component [docs](https://ads.actioneer.dev/#/ai/chain-of-thought)
|
|
551
556
|
- [ChainOfThoughtContent] — component [docs](https://ads.actioneer.dev/#/ai/chain-of-thought)
|
|
@@ -624,6 +629,10 @@ When tabs and a search field control the same content, they share one responsive
|
|
|
624
629
|
- [VoiceDisconnectButton] — component [docs](https://ads.actioneer.dev/#/ai/voice)
|
|
625
630
|
- [VoiceMuteButton] — component [docs](https://ads.actioneer.dev/#/ai/voice)
|
|
626
631
|
- [VoiceStatusDot] — component [docs](https://ads.actioneer.dev/#/ai/voice)
|
|
632
|
+
- [AgentTraceCall] — TypeScript type
|
|
633
|
+
- [AgentTraceProps] — TypeScript type
|
|
634
|
+
- [AgentTraceStep] — TypeScript type
|
|
635
|
+
- [AgentTraceStepStatus] — TypeScript type
|
|
627
636
|
- [AIChartProgress] — TypeScript type
|
|
628
637
|
- [AIChartProps] — TypeScript type
|
|
629
638
|
- [AIChartStatus] — TypeScript type
|
package/manifest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actioneer/ads",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"importPath": "@actioneer/ads",
|
|
5
5
|
"styleImport": "@import \"@actioneer/ads/styles.css\";",
|
|
6
6
|
"families": [
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
"Chat"
|
|
17
17
|
],
|
|
18
18
|
"counts": {
|
|
19
|
-
"total":
|
|
20
|
-
"component":
|
|
21
|
-
"type":
|
|
19
|
+
"total": 678,
|
|
20
|
+
"component": 327,
|
|
21
|
+
"type": 288,
|
|
22
22
|
"hook": 10,
|
|
23
23
|
"util": 53
|
|
24
24
|
},
|
|
@@ -148,7 +148,7 @@
|
|
|
148
148
|
"text-brand",
|
|
149
149
|
"border-brand"
|
|
150
150
|
],
|
|
151
|
-
"description": "Brand (
|
|
151
|
+
"description": "Brand (Sage green) — used for solid fills / primary actions, not body text"
|
|
152
152
|
},
|
|
153
153
|
{
|
|
154
154
|
"name": "--color-brand-foreground",
|
|
@@ -157,7 +157,7 @@
|
|
|
157
157
|
"text-brand-foreground",
|
|
158
158
|
"bg-brand-foreground"
|
|
159
159
|
],
|
|
160
|
-
"description": "Brand (
|
|
160
|
+
"description": "Brand (Sage green) — used for solid fills / primary actions, not body text"
|
|
161
161
|
},
|
|
162
162
|
{
|
|
163
163
|
"name": "--color-brand-hover",
|
|
@@ -167,7 +167,7 @@
|
|
|
167
167
|
"text-brand-hover",
|
|
168
168
|
"border-brand-hover"
|
|
169
169
|
],
|
|
170
|
-
"description": "Brand (
|
|
170
|
+
"description": "Brand (Sage green) — used for solid fills / primary actions, not body text"
|
|
171
171
|
},
|
|
172
172
|
{
|
|
173
173
|
"name": "--color-fill",
|
|
@@ -1318,7 +1318,7 @@
|
|
|
1318
1318
|
"kind": "component",
|
|
1319
1319
|
"importPath": "@actioneer/ads",
|
|
1320
1320
|
"module": "drawer",
|
|
1321
|
-
"description": "Use the portaled Drawer for a focused, blocking task (form, details, settings) that slides in over the page with a backdrop and focus trap; use InlineDrawer instead for a contextual panel that must stay in-flow beside content the user still needs.",
|
|
1321
|
+
"description": "Use the portaled Drawer for a focused, blocking task (form, details, settings) that slides in over the page with a backdrop and focus trap; use InlineDrawer instead for a contextual panel that must stay in-flow beside content the user still needs. The inline Drawer is a flat white panel (bg-card, no shadow, no border) that reads ONLY by fill contrast, so it MUST sit as a sibling of its content inside a bg-surface flex row — on a white (bg-background) parent it is invisible. If it doesn't read, tint the ground; never add a border or shadow to force it.",
|
|
1322
1322
|
"showcaseUrl": "https://ads.actioneer.dev/#/drawer",
|
|
1323
1323
|
"variants": {
|
|
1324
1324
|
"side": {
|
|
@@ -3785,6 +3785,38 @@
|
|
|
3785
3785
|
"module": "brand-texture",
|
|
3786
3786
|
"showcaseUrl": "https://ads.actioneer.dev/#/brand-texture"
|
|
3787
3787
|
},
|
|
3788
|
+
{
|
|
3789
|
+
"name": "EmptyConnections",
|
|
3790
|
+
"family": "Feedback",
|
|
3791
|
+
"kind": "component",
|
|
3792
|
+
"importPath": "@actioneer/ads",
|
|
3793
|
+
"module": "empty-state",
|
|
3794
|
+
"showcaseUrl": "https://ads.actioneer.dev/#/empty-state"
|
|
3795
|
+
},
|
|
3796
|
+
{
|
|
3797
|
+
"name": "EmptyDocuments",
|
|
3798
|
+
"family": "Feedback",
|
|
3799
|
+
"kind": "component",
|
|
3800
|
+
"importPath": "@actioneer/ads",
|
|
3801
|
+
"module": "empty-state",
|
|
3802
|
+
"showcaseUrl": "https://ads.actioneer.dev/#/empty-state"
|
|
3803
|
+
},
|
|
3804
|
+
{
|
|
3805
|
+
"name": "EmptyInsights",
|
|
3806
|
+
"family": "Feedback",
|
|
3807
|
+
"kind": "component",
|
|
3808
|
+
"importPath": "@actioneer/ads",
|
|
3809
|
+
"module": "empty-state",
|
|
3810
|
+
"showcaseUrl": "https://ads.actioneer.dev/#/empty-state"
|
|
3811
|
+
},
|
|
3812
|
+
{
|
|
3813
|
+
"name": "EmptySearch",
|
|
3814
|
+
"family": "Feedback",
|
|
3815
|
+
"kind": "component",
|
|
3816
|
+
"importPath": "@actioneer/ads",
|
|
3817
|
+
"module": "empty-state",
|
|
3818
|
+
"showcaseUrl": "https://ads.actioneer.dev/#/empty-state"
|
|
3819
|
+
},
|
|
3788
3820
|
{
|
|
3789
3821
|
"name": "EmptyState",
|
|
3790
3822
|
"family": "Feedback",
|
|
@@ -3795,6 +3827,7 @@
|
|
|
3795
3827
|
"showcaseUrl": "https://ads.actioneer.dev/#/empty-state",
|
|
3796
3828
|
"props": [
|
|
3797
3829
|
"icon",
|
|
3830
|
+
"illustration",
|
|
3798
3831
|
"title",
|
|
3799
3832
|
"description",
|
|
3800
3833
|
"action"
|
|
@@ -4409,6 +4442,23 @@
|
|
|
4409
4442
|
"importPath": "@actioneer/ads",
|
|
4410
4443
|
"module": "selection-action-bar"
|
|
4411
4444
|
},
|
|
4445
|
+
{
|
|
4446
|
+
"name": "AgentTrace",
|
|
4447
|
+
"family": "AI Elements",
|
|
4448
|
+
"kind": "component",
|
|
4449
|
+
"importPath": "@actioneer/ads",
|
|
4450
|
+
"module": "agent-trace",
|
|
4451
|
+
"showcaseUrl": "https://ads.actioneer.dev/#/agent-trace",
|
|
4452
|
+
"props": [
|
|
4453
|
+
"steps",
|
|
4454
|
+
"mainAgent",
|
|
4455
|
+
"slowSeconds",
|
|
4456
|
+
"reviewedStepIds",
|
|
4457
|
+
"onSendForReview",
|
|
4458
|
+
"slowMessage",
|
|
4459
|
+
"renderCall"
|
|
4460
|
+
]
|
|
4461
|
+
},
|
|
4412
4462
|
{
|
|
4413
4463
|
"name": "AIChart",
|
|
4414
4464
|
"family": "AI Elements",
|
|
@@ -5363,6 +5413,7 @@
|
|
|
5363
5413
|
"volume",
|
|
5364
5414
|
"palette",
|
|
5365
5415
|
"seed",
|
|
5416
|
+
"fill",
|
|
5366
5417
|
"onReady"
|
|
5367
5418
|
]
|
|
5368
5419
|
},
|
|
@@ -5436,6 +5487,34 @@
|
|
|
5436
5487
|
"className"
|
|
5437
5488
|
]
|
|
5438
5489
|
},
|
|
5490
|
+
{
|
|
5491
|
+
"name": "AgentTraceCall",
|
|
5492
|
+
"family": "AI Elements",
|
|
5493
|
+
"kind": "type",
|
|
5494
|
+
"importPath": "@actioneer/ads",
|
|
5495
|
+
"module": "agent-trace"
|
|
5496
|
+
},
|
|
5497
|
+
{
|
|
5498
|
+
"name": "AgentTraceProps",
|
|
5499
|
+
"family": "AI Elements",
|
|
5500
|
+
"kind": "type",
|
|
5501
|
+
"importPath": "@actioneer/ads",
|
|
5502
|
+
"module": "agent-trace"
|
|
5503
|
+
},
|
|
5504
|
+
{
|
|
5505
|
+
"name": "AgentTraceStep",
|
|
5506
|
+
"family": "AI Elements",
|
|
5507
|
+
"kind": "type",
|
|
5508
|
+
"importPath": "@actioneer/ads",
|
|
5509
|
+
"module": "agent-trace"
|
|
5510
|
+
},
|
|
5511
|
+
{
|
|
5512
|
+
"name": "AgentTraceStepStatus",
|
|
5513
|
+
"family": "AI Elements",
|
|
5514
|
+
"kind": "type",
|
|
5515
|
+
"importPath": "@actioneer/ads",
|
|
5516
|
+
"module": "agent-trace"
|
|
5517
|
+
},
|
|
5439
5518
|
{
|
|
5440
5519
|
"name": "AIChartProgress",
|
|
5441
5520
|
"family": "AI Elements",
|
package/package.json
CHANGED
package/styles.css
CHANGED
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
/*
|
|
30
30
|
* ============================================================
|
|
31
31
|
* ADS 1.0 — Design Tokens
|
|
32
|
-
* Brand:
|
|
32
|
+
* Brand: Sage (green) · Neutrals: warm greige · Typeface: Aribau Grotesk
|
|
33
33
|
* ============================================================
|
|
34
34
|
*/
|
|
35
35
|
@theme {
|
|
@@ -67,25 +67,44 @@
|
|
|
67
67
|
--text-2xl: 1.625rem; /* 26px — display */
|
|
68
68
|
--text-2xl--line-height: 2rem;
|
|
69
69
|
|
|
70
|
-
/* ----
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
--color-ink-
|
|
75
|
-
--color-ink-
|
|
76
|
-
--color-ink-
|
|
77
|
-
--color-ink-
|
|
78
|
-
--color-ink-
|
|
79
|
-
--color-ink-
|
|
80
|
-
--color-ink-
|
|
81
|
-
--color-ink-
|
|
70
|
+
/* ---- Neutral ramp — warm greige (the workhorse: backgrounds, surfaces,
|
|
71
|
+
text, borders). Kept a touch warm so it sits with Sage without turning
|
|
72
|
+
green — one family, not colour plus grey. The `ink` name is retained so
|
|
73
|
+
every existing reference resolves; the values are now greige. ---- */
|
|
74
|
+
--color-ink-50: #f2f2ed;
|
|
75
|
+
--color-ink-100: #e7e7e1;
|
|
76
|
+
--color-ink-200: #d8d7cf;
|
|
77
|
+
--color-ink-300: #c7c6be;
|
|
78
|
+
--color-ink-400: #a8a79e;
|
|
79
|
+
--color-ink-500: #8c8c84;
|
|
80
|
+
--color-ink-600: #6b6b63;
|
|
81
|
+
--color-ink-700: #4a4a44;
|
|
82
|
+
--color-ink-800: #33322e;
|
|
83
|
+
--color-ink-900: #26251f;
|
|
84
|
+
--color-ink-950: #1a1a17;
|
|
85
|
+
|
|
86
|
+
/* ---- Brand ramp — Sage (one green hue: brand, primary actions, focal
|
|
87
|
+
data). 600 is the primary. On a white/greige ground, colour earns its
|
|
88
|
+
place — the eye always knows where to look. ---- */
|
|
89
|
+
--color-sage-50: #eff5ea;
|
|
90
|
+
--color-sage-100: #dde8cf;
|
|
91
|
+
--color-sage-200: #a9ce86;
|
|
92
|
+
--color-sage-300: #8abb6a;
|
|
93
|
+
--color-sage-400: #6da24e;
|
|
94
|
+
--color-sage-500: #548c41;
|
|
95
|
+
--color-sage-600: #3f7a34;
|
|
96
|
+
--color-sage-700: #2c5724;
|
|
97
|
+
--color-sage-800: #254a1d;
|
|
98
|
+
--color-sage-900: #1e3a16;
|
|
82
99
|
|
|
83
100
|
/* ---- Semantic accent ramps ---- */
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
--color-success-
|
|
87
|
-
--color-success-
|
|
88
|
-
--color-success-
|
|
101
|
+
/* Success — shifted cooler (emerald/teal) so positive states stay clearly
|
|
102
|
+
distinct from the warm Sage brand green. */
|
|
103
|
+
--color-success-50: #ecfdf5;
|
|
104
|
+
--color-success-100: #d1fae5;
|
|
105
|
+
--color-success-500: #10b981;
|
|
106
|
+
--color-success-600: #059669;
|
|
107
|
+
--color-success-700: #047857;
|
|
89
108
|
|
|
90
109
|
--color-warning-50: #fffaeb;
|
|
91
110
|
--color-warning-100: #fef0c7;
|
|
@@ -105,6 +124,19 @@
|
|
|
105
124
|
--color-info-600: #1570ef;
|
|
106
125
|
--color-info-700: #175cd3;
|
|
107
126
|
|
|
127
|
+
/* ---- Data-viz accents ---- three small ramps for charts & illustration.
|
|
128
|
+
deep = text/lines · base = fills · soft = backgrounds. Separate from the
|
|
129
|
+
semantic status ramps above; these are the "focal data" companions to Sage. */
|
|
130
|
+
--color-cyan-soft: #c7efe9; /* Cyan — vivid cool contrast; 2nd series, links */
|
|
131
|
+
--color-cyan-base: #12b5a5;
|
|
132
|
+
--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
|
+
--color-amber-soft: #fce6c0; /* Amber — warm pop; highlights, "new" */
|
|
137
|
+
--color-amber-base: #f3a72e;
|
|
138
|
+
--color-amber-deep: #b57414;
|
|
139
|
+
|
|
108
140
|
/* ---- Radii ---- */
|
|
109
141
|
--radius-xs: 0.25rem;
|
|
110
142
|
--radius-sm: 0.375rem;
|
|
@@ -122,8 +154,8 @@
|
|
|
122
154
|
/* ---- Elevation ---- ONE soft token (Claude-panel style).
|
|
123
155
|
Delineate surfaces with fill color first; add this to gently lift them. */
|
|
124
156
|
--shadow-elevation: 0 0 0 1px rgb(10 10 11 / 0.03),
|
|
125
|
-
0 1px 2px 0 rgb(10 10 11 / 0.
|
|
126
|
-
0 8px
|
|
157
|
+
0 1px 2px 0 rgb(10 10 11 / 0.04),
|
|
158
|
+
0 8px 28px -8px rgb(10 10 11 / 0.09);
|
|
127
159
|
|
|
128
160
|
/* ---- CTA inner glow ---- luminous inset highlight for primary buttons
|
|
129
161
|
(adapted from the "AI button" Figma): a crisp top-edge catch plus a soft
|
|
@@ -201,12 +233,16 @@
|
|
|
201
233
|
* every comparison series survives production builds.
|
|
202
234
|
*/
|
|
203
235
|
:root {
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
--color-chart-
|
|
209
|
-
--color-chart-
|
|
236
|
+
/* Data-series palette — Sage (brand) leads as the focal/primary series,
|
|
237
|
+
then the three data-viz accents and two deep variants for extended
|
|
238
|
+
series. Explicit hexes (not var()) so every series survives @theme
|
|
239
|
+
pruning, since chart colours are referenced from SVG prop strings. */
|
|
240
|
+
--color-chart-1: #3f7a34; /* sage — primary / focal series */
|
|
241
|
+
--color-chart-2: #12b5a5; /* cyan base */
|
|
242
|
+
--color-chart-3: #f3a72e; /* amber base */
|
|
243
|
+
--color-chart-4: #a3c765; /* lichen lime base */
|
|
244
|
+
--color-chart-5: #0a7e82; /* cyan deep */
|
|
245
|
+
--color-chart-6: #b57414; /* amber deep */
|
|
210
246
|
}
|
|
211
247
|
|
|
212
248
|
/*
|
|
@@ -232,7 +268,7 @@
|
|
|
232
268
|
--color-card: var(--card);
|
|
233
269
|
--color-card-foreground: var(--card-foreground);
|
|
234
270
|
|
|
235
|
-
/* Brand (
|
|
271
|
+
/* Brand (Sage green) — used for solid fills / primary actions, not body text */
|
|
236
272
|
--color-brand: var(--brand);
|
|
237
273
|
--color-brand-foreground: var(--brand-foreground);
|
|
238
274
|
--color-brand-hover: var(--brand-hover);
|
|
@@ -274,41 +310,41 @@
|
|
|
274
310
|
|
|
275
311
|
/* ---- Theme (light only) ---- */
|
|
276
312
|
:root {
|
|
277
|
-
--background: #
|
|
278
|
-
--foreground: #
|
|
313
|
+
--background: #f7f7f3;
|
|
314
|
+
--foreground: #1a1a17;
|
|
279
315
|
|
|
280
|
-
/* Text hierarchy — accessible on
|
|
281
|
-
--text-primary: #
|
|
282
|
-
--text-secondary: #
|
|
283
|
-
--text-tertiary: #
|
|
316
|
+
/* Text hierarchy — accessible on the warm greige canvas */
|
|
317
|
+
--text-primary: #1a1a17; /* ~17:1 AAA */
|
|
318
|
+
--text-secondary: #4a4a44; /* ~8.5:1 AAA */
|
|
319
|
+
--text-tertiary: #6b6b63; /* ~4.8:1 AA */
|
|
284
320
|
|
|
285
|
-
--surface: #
|
|
286
|
-
--surface-foreground: #
|
|
321
|
+
--surface: #f2f2ed; /* warm greige — the tinted canvas */
|
|
322
|
+
--surface-foreground: #33322e;
|
|
287
323
|
--elevated: #ffffff;
|
|
288
324
|
|
|
289
|
-
--muted: #
|
|
290
|
-
--muted-foreground: #
|
|
325
|
+
--muted: #e7e7e1;
|
|
326
|
+
--muted-foreground: #6b6b63;
|
|
291
327
|
|
|
292
328
|
--card: #ffffff;
|
|
293
|
-
--card-foreground: #
|
|
329
|
+
--card-foreground: #1a1a17;
|
|
294
330
|
|
|
295
|
-
/*
|
|
296
|
-
--brand: #
|
|
331
|
+
/* Sage brand (green) — primary actions, focal moments */
|
|
332
|
+
--brand: #3f7a34;
|
|
297
333
|
--brand-foreground: #ffffff;
|
|
298
|
-
--brand-hover: #
|
|
334
|
+
--brand-hover: #2c5724;
|
|
299
335
|
|
|
300
336
|
/* Quiet fill */
|
|
301
|
-
--fill: #
|
|
302
|
-
--fill-foreground: #
|
|
337
|
+
--fill: #e7e7e1;
|
|
338
|
+
--fill-foreground: #1a1a17;
|
|
303
339
|
|
|
304
|
-
--accent: #
|
|
305
|
-
--accent-foreground: #
|
|
340
|
+
--accent: #edece6;
|
|
341
|
+
--accent-foreground: #1a1a17;
|
|
306
342
|
|
|
307
|
-
--border: #
|
|
308
|
-
--border-strong: #
|
|
309
|
-
--input: #
|
|
310
|
-
--ring: rgb(
|
|
311
|
-
--overlay: rgb(
|
|
343
|
+
--border: #e7e7e1;
|
|
344
|
+
--border-strong: #c7c6be;
|
|
345
|
+
--input: #c7c6be;
|
|
346
|
+
--ring: rgb(63 122 52 / 0.5);
|
|
347
|
+
--overlay: rgb(26 26 23 / 0.5);
|
|
312
348
|
}
|
|
313
349
|
/* ---- Base, keyframes & component helpers ---- */
|
|
314
350
|
/* Hide scrollbars app-wide but keep scrollability. The demo UI is filled
|
|
@@ -775,7 +811,7 @@
|
|
|
775
811
|
position: absolute;
|
|
776
812
|
inset-block: 0;
|
|
777
813
|
left: 0;
|
|
778
|
-
border-left: 1px solid var(--border);
|
|
814
|
+
border-left: 1px solid var(--border-strong);
|
|
779
815
|
}
|
|
780
816
|
.ads-tree-rail:first-child::before,
|
|
781
817
|
.ads-tree-branch:first-child::before {
|
|
@@ -794,8 +830,8 @@
|
|
|
794
830
|
top: 0;
|
|
795
831
|
height: var(--tree-elbow, 1.125rem);
|
|
796
832
|
width: 1rem;
|
|
797
|
-
border-bottom: 1px solid var(--border);
|
|
798
|
-
border-left: 1px solid var(--border);
|
|
833
|
+
border-bottom: 1px solid var(--border-strong);
|
|
834
|
+
border-left: 1px solid var(--border-strong);
|
|
799
835
|
border-bottom-left-radius: 9px;
|
|
800
836
|
}
|
|
801
837
|
/* Let the consumer's Tailwind discover the classes ADS components use. */
|