@actioneer/ads 0.7.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.js +1 -1
- package/components/alert.js +3 -3
- package/components/answer.js +2 -2
- 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-trigger-popover.js +9 -9
- package/components/assistant-ui/composer.js +32 -32
- package/components/assistant-ui/image.js +61 -61
- package/components/assistant-ui/message-timing.js +1 -1
- package/components/assistant-ui/selection-toolbar.js +7 -7
- package/components/avatar.js +34 -34
- package/components/chip.js +8 -8
- package/components/divider.js +25 -25
- package/components/drawer.d.ts +2 -14
- package/components/drawer.js +103 -109
- package/components/field.js +9 -9
- package/components/index.js +423 -424
- package/components/input.js +21 -19
- package/components/modal.js +25 -25
- package/components/page-body.js +6 -6
- package/components/pagination.js +1 -1
- package/components/pixel-blast-svg.js +71 -73
- package/components/sidebar.js +47 -47
- package/components/table.d.ts +1 -1
- package/components/table.js +32 -33
- package/components/tabs.js +26 -26
- package/components/tree.js +17 -17
- package/components/ui/button.js +4 -4
- package/components/ui/dialog.js +22 -22
- package/lib/icons.js +12 -12
- package/llms.txt +50 -49
- package/manifest.json +226 -237
- package/package.json +2 -1
- package/styles.css +128 -123
- package/theme.css +121 -112
package/components/tree.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as e, jsxs as
|
|
2
|
+
import { jsx as e, jsxs as i, Fragment as T } from "react/jsx-runtime";
|
|
3
3
|
import * as t from "react";
|
|
4
4
|
import { MotionConfig as M, AnimatePresence as $, motion as D } from "motion/react";
|
|
5
5
|
import { cn as f } from "../lib/cn.js";
|
|
6
6
|
import { ChevronRight as V, FileText as W } from "../lib/icons.js";
|
|
7
7
|
import { springDisclosure as q } from "../lib/motion.js";
|
|
8
8
|
const B = t.forwardRef(
|
|
9
|
-
({ className: u, variant: a = "default", ...m },
|
|
9
|
+
({ className: u, variant: a = "default", ...m }, n) => /* @__PURE__ */ e(
|
|
10
10
|
"div",
|
|
11
11
|
{
|
|
12
|
-
ref:
|
|
12
|
+
ref: n,
|
|
13
13
|
role: "tree",
|
|
14
14
|
"data-variant": a,
|
|
15
15
|
className: f("group/tree flex flex-col gap-0.5 text-xs", u),
|
|
@@ -23,26 +23,26 @@ const E = t.forwardRef(
|
|
|
23
23
|
className: u,
|
|
24
24
|
label: a,
|
|
25
25
|
icon: m,
|
|
26
|
-
count:
|
|
26
|
+
count: n,
|
|
27
27
|
endContent: v,
|
|
28
28
|
defaultExpanded: R = !1,
|
|
29
29
|
expanded: x,
|
|
30
30
|
onExpandedChange: g,
|
|
31
|
-
href:
|
|
31
|
+
href: w,
|
|
32
32
|
isActive: s,
|
|
33
33
|
onSelect: b,
|
|
34
34
|
children: l,
|
|
35
35
|
..._
|
|
36
36
|
}, j) => {
|
|
37
|
-
const o = t.Children.count(l) > 0,
|
|
38
|
-
|
|
37
|
+
const o = t.Children.count(l) > 0, y = x !== void 0, [z, F] = t.useState(R), r = y ? x : z, N = (c) => {
|
|
38
|
+
y || F(c), g == null || g(c);
|
|
39
39
|
}, d = f(
|
|
40
40
|
"group/tree-row flex h-9 w-full items-center gap-1.5 rounded-md px-2 text-left",
|
|
41
41
|
"outline-none transition-colors focus-visible:ring-3 focus-visible:ring-ring",
|
|
42
42
|
"[&_svg]:size-4 [&_svg]:shrink-0",
|
|
43
|
-
"group-data-[variant=sidebar]/tree:border group-data-[variant=sidebar]/tree:border-transparent group-data-[variant=sidebar]/tree:text-
|
|
44
|
-
"group-data-[variant=sidebar]/tree:[&_svg]:size-5 group-data-[variant=sidebar]/tree:[&_svg]:text-
|
|
45
|
-
s ? "bg-fill font-normal text-foreground group-data-[variant=sidebar]/tree:border-
|
|
43
|
+
"group-data-[variant=sidebar]/tree:border group-data-[variant=sidebar]/tree:border-transparent group-data-[variant=sidebar]/tree:text-wg11",
|
|
44
|
+
"group-data-[variant=sidebar]/tree:[&_svg]:size-5 group-data-[variant=sidebar]/tree:[&_svg]:text-wg11",
|
|
45
|
+
s ? "bg-fill font-normal text-foreground group-data-[variant=sidebar]/tree:border-wg4 group-data-[variant=sidebar]/tree:bg-wg2 group-data-[variant=sidebar]/tree:text-wg11" : "text-muted-foreground hover:bg-fill/60 hover:text-foreground group-data-[variant=sidebar]/tree:hover:bg-wg1 group-data-[variant=sidebar]/tree:hover:text-wg11"
|
|
46
46
|
), p = m ?? (o ? null : /* @__PURE__ */ e(W, { className: "text-tertiary" })), k = s && t.isValidElement(p) ? t.cloneElement(
|
|
47
47
|
p,
|
|
48
48
|
{ weight: "fill" }
|
|
@@ -55,18 +55,18 @@ const E = t.forwardRef(
|
|
|
55
55
|
),
|
|
56
56
|
strokeWidth: 2
|
|
57
57
|
}
|
|
58
|
-
), I = (
|
|
58
|
+
), I = (n ?? t.Children.count(l)) > 0 && /* @__PURE__ */ e("span", { className: "shrink-0 tabular-nums text-xs text-tertiary", children: n ?? t.Children.count(l) }), h = /* @__PURE__ */ i(T, { children: [
|
|
59
59
|
k,
|
|
60
60
|
/* @__PURE__ */ e("span", { className: "min-w-0 flex-1 truncate", children: a }),
|
|
61
61
|
v,
|
|
62
|
-
o && /* @__PURE__ */
|
|
62
|
+
o && /* @__PURE__ */ i(T, { children: [
|
|
63
63
|
I,
|
|
64
64
|
C
|
|
65
65
|
] })
|
|
66
66
|
] });
|
|
67
|
-
return /* @__PURE__ */
|
|
68
|
-
o && b ? /* @__PURE__ */
|
|
69
|
-
/* @__PURE__ */
|
|
67
|
+
return /* @__PURE__ */ i("div", { ref: j, role: "treeitem", "aria-expanded": o ? r : void 0, "aria-selected": s, className: u, ..._, children: [
|
|
68
|
+
o && b ? /* @__PURE__ */ i("div", { className: d, children: [
|
|
69
|
+
/* @__PURE__ */ i(
|
|
70
70
|
"button",
|
|
71
71
|
{
|
|
72
72
|
type: "button",
|
|
@@ -87,11 +87,11 @@ const E = t.forwardRef(
|
|
|
87
87
|
"aria-label": `${r ? "Collapse" : "Expand"} ${typeof a == "string" ? a : "tree item"}`,
|
|
88
88
|
"aria-expanded": r,
|
|
89
89
|
className: "inline-flex size-7 shrink-0 items-center justify-center rounded-sm outline-none hover:text-foreground focus-visible:ring-3 focus-visible:ring-ring",
|
|
90
|
-
onClick: () =>
|
|
90
|
+
onClick: () => N(!r),
|
|
91
91
|
children: C
|
|
92
92
|
}
|
|
93
93
|
)
|
|
94
|
-
] }) : o ? /* @__PURE__ */ e("button", { type: "button", className: d, onClick: () =>
|
|
94
|
+
] }) : o ? /* @__PURE__ */ e("button", { type: "button", className: d, onClick: () => N(!r), children: h }) : w ? /* @__PURE__ */ e("a", { href: w, className: d, "aria-current": s ? "page" : void 0, children: h }) : /* @__PURE__ */ e("button", { type: "button", className: d, onClick: b, children: h }),
|
|
95
95
|
/* @__PURE__ */ e(M, { reducedMotion: "user", children: /* @__PURE__ */ e($, { initial: !1, children: o && r && /* @__PURE__ */ e(
|
|
96
96
|
D.div,
|
|
97
97
|
{
|
package/components/ui/button.js
CHANGED
|
@@ -9,8 +9,8 @@ const u = a(
|
|
|
9
9
|
variants: {
|
|
10
10
|
variant: {
|
|
11
11
|
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
12
|
-
destructive: "bg-destructive text-
|
|
13
|
-
outline: "border bg-background shadow-
|
|
12
|
+
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90 focus-visible:ring-destructive/20",
|
|
13
|
+
outline: "border bg-background shadow-100 hover:bg-accent hover:text-accent-foreground",
|
|
14
14
|
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
15
15
|
ghost: "hover:bg-accent hover:text-accent-foreground",
|
|
16
16
|
link: "text-primary underline-offset-4 hover:underline"
|
|
@@ -32,7 +32,7 @@ const u = a(
|
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
34
|
);
|
|
35
|
-
function
|
|
35
|
+
function p({
|
|
36
36
|
className: o,
|
|
37
37
|
variant: e = "default",
|
|
38
38
|
size: t = "default",
|
|
@@ -52,6 +52,6 @@ function f({
|
|
|
52
52
|
);
|
|
53
53
|
}
|
|
54
54
|
export {
|
|
55
|
-
|
|
55
|
+
p as Button,
|
|
56
56
|
u as buttonVariants
|
|
57
57
|
};
|
package/components/ui/dialog.js
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as e, jsxs as c } from "react/jsx-runtime";
|
|
3
3
|
import * as s from "react";
|
|
4
|
-
import { Close as
|
|
4
|
+
import { Close as b } from "../../lib/icons.js";
|
|
5
5
|
import { Dialog as o } from "radix-ui";
|
|
6
|
-
import { MotionConfig as v, AnimatePresence as
|
|
6
|
+
import { MotionConfig as v, AnimatePresence as h, motion as x } from "motion/react";
|
|
7
7
|
import { cn as u } from "../../lib/cn.js";
|
|
8
8
|
import "./button.js";
|
|
9
|
-
import { modalPanelVariants as
|
|
9
|
+
import { modalPanelVariants as C, backdropVariants as M } from "../../lib/motion.js";
|
|
10
10
|
const m = s.createContext(!1);
|
|
11
|
-
function
|
|
11
|
+
function k({
|
|
12
12
|
open: t,
|
|
13
13
|
defaultOpen: i = !1,
|
|
14
14
|
onOpenChange: n,
|
|
15
15
|
children: r,
|
|
16
16
|
...a
|
|
17
17
|
}) {
|
|
18
|
-
const l = t !== void 0, [d,
|
|
18
|
+
const l = t !== void 0, [d, p] = s.useState(i), f = l ? t : d;
|
|
19
19
|
return /* @__PURE__ */ e(m.Provider, { value: f, children: /* @__PURE__ */ e(
|
|
20
20
|
o.Root,
|
|
21
21
|
{
|
|
22
22
|
"data-slot": "dialog",
|
|
23
23
|
open: f,
|
|
24
24
|
onOpenChange: (g) => {
|
|
25
|
-
l ||
|
|
25
|
+
l || p(g), n == null || n(g);
|
|
26
26
|
},
|
|
27
27
|
...a,
|
|
28
28
|
children: r
|
|
@@ -34,27 +34,27 @@ function R({
|
|
|
34
34
|
}) {
|
|
35
35
|
return /* @__PURE__ */ e(o.Trigger, { "data-slot": "dialog-trigger", ...t });
|
|
36
36
|
}
|
|
37
|
-
function
|
|
37
|
+
function D({
|
|
38
38
|
...t
|
|
39
39
|
}) {
|
|
40
40
|
return /* @__PURE__ */ e(o.Portal, { "data-slot": "dialog-portal", ...t });
|
|
41
41
|
}
|
|
42
|
-
function
|
|
42
|
+
function y({
|
|
43
43
|
className: t,
|
|
44
44
|
forceMount: i,
|
|
45
45
|
asChild: n,
|
|
46
46
|
...r
|
|
47
47
|
}) {
|
|
48
48
|
const a = s.useContext(m);
|
|
49
|
-
return /* @__PURE__ */ e(v, { reducedMotion: "user", children: /* @__PURE__ */ e(
|
|
50
|
-
|
|
49
|
+
return /* @__PURE__ */ e(v, { reducedMotion: "user", children: /* @__PURE__ */ e(h, { initial: !1, children: a && /* @__PURE__ */ e(o.Overlay, { forceMount: !0, asChild: !0, ...r, children: /* @__PURE__ */ e(
|
|
50
|
+
x.div,
|
|
51
51
|
{
|
|
52
52
|
"data-slot": "dialog-overlay",
|
|
53
|
-
variants:
|
|
53
|
+
variants: M,
|
|
54
54
|
initial: "hidden",
|
|
55
55
|
animate: "visible",
|
|
56
56
|
exit: "hidden",
|
|
57
|
-
className: u("fixed inset-0 z-50 bg-
|
|
57
|
+
className: u("fixed inset-0 z-50 bg-overlay", t)
|
|
58
58
|
}
|
|
59
59
|
) }) }) });
|
|
60
60
|
}
|
|
@@ -67,9 +67,9 @@ function V({
|
|
|
67
67
|
...l
|
|
68
68
|
}) {
|
|
69
69
|
const d = s.useContext(m);
|
|
70
|
-
return /* @__PURE__ */ c(
|
|
71
|
-
/* @__PURE__ */ e(
|
|
72
|
-
/* @__PURE__ */ e(v, { reducedMotion: "user", children: /* @__PURE__ */ e(
|
|
70
|
+
return /* @__PURE__ */ c(D, { "data-slot": "dialog-portal", forceMount: !0, children: [
|
|
71
|
+
/* @__PURE__ */ e(y, {}),
|
|
72
|
+
/* @__PURE__ */ e(v, { reducedMotion: "user", children: /* @__PURE__ */ e(h, { initial: !1, children: d && /* @__PURE__ */ e(
|
|
73
73
|
o.Content,
|
|
74
74
|
{
|
|
75
75
|
"data-slot": "dialog-content",
|
|
@@ -77,14 +77,14 @@ function V({
|
|
|
77
77
|
className: "pointer-events-none fixed inset-0 z-50 grid place-items-center p-4 outline-none",
|
|
78
78
|
...l,
|
|
79
79
|
children: /* @__PURE__ */ c(
|
|
80
|
-
|
|
80
|
+
x.div,
|
|
81
81
|
{
|
|
82
|
-
variants:
|
|
82
|
+
variants: C,
|
|
83
83
|
initial: "hidden",
|
|
84
84
|
animate: "visible",
|
|
85
85
|
exit: "hidden",
|
|
86
86
|
className: u(
|
|
87
|
-
"pointer-events-auto relative flex max-h-[calc(100dvh-2rem)] w-full max-w-[38.75rem] flex-col overflow-hidden rounded-xl bg-elevated text-foreground shadow-
|
|
87
|
+
"pointer-events-auto relative flex max-h-[calc(100dvh-2rem)] w-full max-w-[38.75rem] flex-col overflow-hidden rounded-xl bg-elevated text-foreground shadow-400 outline-none max-sm:max-h-[calc(100dvh-1rem)] max-sm:rounded-lg",
|
|
88
88
|
t
|
|
89
89
|
),
|
|
90
90
|
children: [
|
|
@@ -95,7 +95,7 @@ function V({
|
|
|
95
95
|
"data-slot": "dialog-close",
|
|
96
96
|
className: "absolute right-2 top-2 z-10 inline-flex size-7 items-center justify-center rounded-sm text-secondary outline-none transition-[background,color,transform] duration-150 ease-out hover:bg-muted hover:text-foreground active:scale-[0.97] focus-visible:ring-3 focus-visible:ring-ring disabled:pointer-events-none motion-reduce:transition-none motion-reduce:active:scale-100 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
|
|
97
97
|
children: [
|
|
98
|
-
/* @__PURE__ */ e(
|
|
98
|
+
/* @__PURE__ */ e(b, {}),
|
|
99
99
|
/* @__PURE__ */ e("span", { className: "sr-only", children: "Close" })
|
|
100
100
|
]
|
|
101
101
|
}
|
|
@@ -121,10 +121,10 @@ function A({
|
|
|
121
121
|
);
|
|
122
122
|
}
|
|
123
123
|
export {
|
|
124
|
-
|
|
124
|
+
k as Dialog,
|
|
125
125
|
V as DialogContent,
|
|
126
|
-
|
|
127
|
-
|
|
126
|
+
y as DialogOverlay,
|
|
127
|
+
D as DialogPortal,
|
|
128
128
|
A as DialogTitle,
|
|
129
129
|
R as DialogTrigger
|
|
130
130
|
};
|
package/lib/icons.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as h } from "react/jsx-runtime";
|
|
3
3
|
import * as C from "react";
|
|
4
|
-
import { Code as g, Check as p, Copy as u, FileText as $, X as d, UploadSimple as
|
|
4
|
+
import { Code as g, Check as p, Copy as u, FileText as $, X as d, UploadSimple as S, EyeSlash as k, Eye as f, Minus as w, Plus as T, CaretDown as P, MagnifyingGlass as A, Info as L, WarningCircle as m, Warning as y, CheckCircle as B, CaretUp as U, ArrowsDownUp as x, ChatCircle as M, ArrowUpRight as D, Clock as I, Database as O, ArrowSquareOut as F, Table as b, CaretLeft as R, CaretRight as v, CornersOut as H, Magnet as G, Tray as W, ArrowLeft as E, DotsThree as z, User as V, XCircle as N, CircleDashed as Q, ArrowsClockwise as q, Paperclip as X, Quotes as j, At as J, Lightning as K, Sparkle as Y, File as Z, DownloadSimple as _, Image as n, BracketsCurly as ee, MusicNotes as oe, VideoCamera as te, ImageBroken as ne, Pulse as se, Archive as ae, ArrowDown as re, ArrowRight as ce, ArrowUp as le, Scroll as ie, Bell as he, Stack as Ce, BookOpen as ge, Brain as pe, CalendarBlank as ue, Phone as $e, ListChecks as de, Cube as Se, DotsNine as ke, FunnelSimple as fe, Folder as we, FolderOpen as Te, Gauge as Pe, GitBranch as Ae, Hash as Le, ClockCounterClockwise as me, House as ye, SquaresFour as Be, Leaf as Ue, Lightbulb as xe, Link as Me, CircleNotch as De, SignOut as Ie, Envelope as Oe, Microphone as Fe, MicrophoneSlash as be, DotsThreeVertical as Re, Palette as ve, SidebarSimple as He, Pause as Ge, PencilSimple as We, PhoneSlash as Ee, ChartPie as ze, Play as Ve, Plug as Ne, Presentation as Qe, Rocket as qe, Gear as Xe, Shapes as je, ShareNetwork as Je, Star as Ke, Stop as Ye, ArrowsLeftRight as Ze, Target as _e, Binoculars as eo, TextB as oo, TextT as to, TextItalic as no, TextStrikethrough as so, TextUnderline as ao, ToggleRight as ro, Trash as co, Users as lo, Wrench as io } from "@phosphor-icons/react";
|
|
5
5
|
function e(s, a) {
|
|
6
6
|
const o = C.forwardRef(function({ strokeWidth: t, weight: r, ...c }, l) {
|
|
7
7
|
const i = r ?? (t != null && t >= 2 ? "bold" : "regular");
|
|
@@ -9,7 +9,7 @@ function e(s, a) {
|
|
|
9
9
|
});
|
|
10
10
|
return o.displayName = a, o;
|
|
11
11
|
}
|
|
12
|
-
const po = e(re, "ArrowDown"), uo = e(E, "ArrowLeft"), $o = e(ce, "ArrowRight"),
|
|
12
|
+
const po = e(re, "ArrowDown"), uo = e(E, "ArrowLeft"), $o = e(ce, "ArrowRight"), So = e(le, "ArrowUp"), ko = e(D, "ArrowUpRight"), fo = e(P, "ChevronDown"), wo = e(R, "ChevronLeft"), To = e(v, "ChevronRight"), Po = e(U, "ChevronUp"), Ao = e(x, "SortIcon"), Lo = e(Ze, "SwapHorizontal"), mo = e(F, "ExternalLink"), yo = e(He, "PanelLeft"), Bo = e(J, "At"), Uo = e($e, "Call"), xo = e(d, "Close"), Mo = e(N, "CloseCircle"), Do = e(u, "Copy"), Io = e(_, "Download"), Oo = e(Ie, "LogOut"), Fo = e(Fe, "Mic"), bo = e(be, "MicOff"), Ro = e(Ee, "PhoneOff"), vo = e(We, "Pencil"), Ho = e(j, "Quote"), Go = e(f, "Eye"), Wo = e(k, "EyeOff"), Eo = e(Le, "Hash"), zo = e(n, "ImageUpload"), Vo = e(S, "Upload"), No = e(to, "TextFont"), Qo = e(oo, "TextBold"), qo = e(no, "TextItalicStyle"), Xo = e(so, "TextStrike"), jo = e(ao, "TextUnderlineStyle"), Jo = e(ro, "ToggleOn"), Ko = e(ue, "Calendar"), Yo = e(I, "Clock"), Zo = e(g, "Code"), _o = e(Ye, "Stop"), et = e(G, "Magnet"), ot = e(H, "Maximize"), tt = e(w, "Minus"), nt = e(z, "MoreHorizontal"), st = e(Re, "MoreVertical"), at = e(ke, "DragHandle"), rt = e(Me, "Link"), ct = e(T, "Plus"), lt = e(q, "Refresh"), it = e(ie, "AuditTrail"), ht = e(A, "Search"), Ct = e(Je, "Share"), gt = e(co, "Trash"), pt = e(p, "Check"), ut = e(De, "Loader"), $t = e(B, "CheckCircle"), dt = e(L, "Info"), St = e(y, "Warning"), kt = e(he, "Bell"), ft = e(m, "WarningCircle"), wt = e(se, "Activity"), Tt = e(M, "AgentChat"), Pt = e(K, "Bolt"), At = e(ge, "BookOpen"), Lt = e(pe, "Brain"), mt = e(de, "CheckList"), yt = e(Se, "Component"), Bt = e(O, "Database"), Ut = e(b, "Table"), xt = e(fe, "Filter"), Mt = e(ae, "Archive"), Dt = e(Z, "File"), It = e($, "FileText"), Ot = e(we, "Folder"), Ft = e(n, "Image"), bt = e(ne, "ImageOff"), Rt = e(oe, "Music"), vt = e(te, "Video"), Ht = e(ee, "Braces"), Gt = e(Te, "FolderOpen"), Wt = e(Pe, "Gauge"), Et = e(Ae, "GitBranch"), zt = e(me, "HistoryClock"), Vt = e(ye, "Home"), Nt = e(Ce, "Blocks"), Qt = e(W, "Inbox"), qt = e(xe, "Lightbulb"), Xt = e(Ue, "Leaf"), jt = e(Be, "LayoutGrid"), Jt = e(Oe, "Mail"), Kt = e(ve, "Palette"), Yt = e(ze, "PieChart"), Zt = e(Ne, "Plug"), _t = e(qe, "Rocket"), en = e(Xe, "Settings"), on = e(je, "Shapes"), tn = e(Y, "Sparkles"), nn = e(Ke, "Star"), sn = e(eo, "Telescope"), an = e(_e, "Target"), rn = e(V, "User"), cn = e(lo, "Users"), ln = e(Ve, "Play"), hn = e(Qe, "Presentation"), Cn = e(Ge, "Pause"), gn = e(X, "Paperclip"), pn = e(Q, "CircleDashed"), un = e(io, "Wrench");
|
|
13
13
|
export {
|
|
14
14
|
wt as Activity,
|
|
15
15
|
Tt as AgentChat,
|
|
@@ -17,11 +17,11 @@ export {
|
|
|
17
17
|
po as ArrowDown,
|
|
18
18
|
uo as ArrowLeft,
|
|
19
19
|
$o as ArrowRight,
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
So as ArrowUp,
|
|
21
|
+
ko as ArrowUpRight,
|
|
22
|
+
Bo as At,
|
|
23
23
|
it as AuditTrail,
|
|
24
|
-
|
|
24
|
+
kt as Bell,
|
|
25
25
|
Nt as Blocks,
|
|
26
26
|
Pt as Bolt,
|
|
27
27
|
At as BookOpen,
|
|
@@ -31,7 +31,7 @@ export {
|
|
|
31
31
|
Uo as Call,
|
|
32
32
|
pt as Check,
|
|
33
33
|
$t as CheckCircle,
|
|
34
|
-
|
|
34
|
+
mt as CheckList,
|
|
35
35
|
fo as ChevronDown,
|
|
36
36
|
wo as ChevronLeft,
|
|
37
37
|
To as ChevronRight,
|
|
@@ -41,12 +41,12 @@ export {
|
|
|
41
41
|
xo as Close,
|
|
42
42
|
Mo as CloseCircle,
|
|
43
43
|
Zo as Code,
|
|
44
|
-
|
|
44
|
+
yt as Component,
|
|
45
45
|
Do as Copy,
|
|
46
|
-
|
|
46
|
+
Bt as Database,
|
|
47
47
|
Io as Download,
|
|
48
48
|
at as DragHandle,
|
|
49
|
-
|
|
49
|
+
mo as ExternalLink,
|
|
50
50
|
Go as Eye,
|
|
51
51
|
Wo as EyeOff,
|
|
52
52
|
Dt as File,
|
|
@@ -80,7 +80,7 @@ export {
|
|
|
80
80
|
st as MoreVertical,
|
|
81
81
|
Rt as Music,
|
|
82
82
|
Kt as Palette,
|
|
83
|
-
|
|
83
|
+
yo as PanelLeft,
|
|
84
84
|
gn as Paperclip,
|
|
85
85
|
Cn as Pause,
|
|
86
86
|
vo as Pencil,
|
|
@@ -116,7 +116,7 @@ export {
|
|
|
116
116
|
rn as User,
|
|
117
117
|
cn as Users,
|
|
118
118
|
vt as Video,
|
|
119
|
-
|
|
119
|
+
St as Warning,
|
|
120
120
|
ft as WarningCircle,
|
|
121
121
|
un as Wrench
|
|
122
122
|
};
|
package/llms.txt
CHANGED
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
## Tokens
|
|
17
17
|
|
|
18
18
|
Reference semantic roles, never raw color/dimension literals (ads-lint rejects literals). Each role produces `bg-/text-/border-<role>` utilities:
|
|
19
|
-
- `background`
|
|
20
|
-
- `foreground`
|
|
19
|
+
- `background` — The shell canvas and its ink: the ground between top-level panels.
|
|
20
|
+
- `foreground` — The shell canvas and its ink: the ground between top-level panels.
|
|
21
21
|
- `on-white-primary` — Contextual text hierarchies — three accessible levels per surface.
|
|
22
22
|
- `on-white-secondary` — Contextual text hierarchies — three accessible levels per surface.
|
|
23
23
|
- `on-white-tertiary` — Contextual text hierarchies — three accessible levels per surface.
|
|
@@ -27,14 +27,14 @@ Reference semantic roles, never raw color/dimension literals (ads-lint rejects l
|
|
|
27
27
|
- `primary` — Context-free compatibility aliases remain conservative.
|
|
28
28
|
- `secondary` — Context-free compatibility aliases remain conservative.
|
|
29
29
|
- `tertiary` — Context-free compatibility aliases remain conservative.
|
|
30
|
-
- `surface`
|
|
31
|
-
- `surface-foreground`
|
|
32
|
-
- `elevated`
|
|
33
|
-
- `muted`
|
|
34
|
-
- `muted-foreground`
|
|
35
|
-
- `card`
|
|
36
|
-
- `card-foreground`
|
|
37
|
-
- `specimen-stroke`
|
|
30
|
+
- `surface` — One continuous recess inside a white surface, never a screen-level ground.
|
|
31
|
+
- `surface-foreground` — One continuous recess inside a white surface, never a screen-level ground.
|
|
32
|
+
- `elevated` — One continuous recess inside a white surface, never a screen-level ground.
|
|
33
|
+
- `muted` — The hover and row-state wash: interaction, not a default item background.
|
|
34
|
+
- `muted-foreground` — The hover and row-state wash: interaction, not a default item background.
|
|
35
|
+
- `card` — The white working plane that sits on the canvas, and the specimen hairline.
|
|
36
|
+
- `card-foreground` — The white working plane that sits on the canvas, and the specimen hairline.
|
|
37
|
+
- `specimen-stroke` — The white working plane that sits on the canvas, and the specimen hairline.
|
|
38
38
|
- `action-primary` — Primary CTA role — restrained Studio green, used sparingly.
|
|
39
39
|
- `action-primary-foreground` — Primary CTA role — restrained Studio green, used sparingly.
|
|
40
40
|
- `action-primary-hover` — Primary CTA role — restrained Studio green, used sparingly.
|
|
@@ -47,31 +47,31 @@ Reference semantic roles, never raw color/dimension literals (ads-lint rejects l
|
|
|
47
47
|
- `brand-text` — Compatibility action role — neutral ink, never a colored primary hue.
|
|
48
48
|
- `fill` — Quiet fill — avatars, chips, and disabled controls
|
|
49
49
|
- `fill-foreground` — Quiet fill — avatars, chips, and disabled controls
|
|
50
|
-
- `table-shell` —
|
|
51
|
-
- `table-stroke` —
|
|
52
|
-
- `table-header-foreground` —
|
|
53
|
-
- `artifact-canvas`
|
|
54
|
-
- `accent`
|
|
55
|
-
- `accent-foreground`
|
|
56
|
-
- `success` — Lichen success-700 clears AA on White and both success soft fills;
|
|
57
|
-
- `success-foreground` — Lichen success-700 clears AA on White and both success soft fills;
|
|
58
|
-
- `warning` — Amber-500 fill kept (it IS the caution signal); dark ink foreground
|
|
59
|
-
- `warning-foreground` — Amber-500 fill kept (it IS the caution signal); dark ink foreground
|
|
60
|
-
- `danger` —
|
|
61
|
-
- `danger-foreground` —
|
|
62
|
-
- `info` —
|
|
63
|
-
- `info-foreground` —
|
|
64
|
-
- `border-primary`
|
|
65
|
-
- `border-secondary`
|
|
66
|
-
- `border-tertiary`
|
|
67
|
-
- `border`
|
|
68
|
-
- `border-strong`
|
|
69
|
-
- `input`
|
|
70
|
-
- `menu-stroke`
|
|
71
|
-
- `toast-stroke`
|
|
72
|
-
- `tree-stroke`
|
|
73
|
-
- `ring`
|
|
74
|
-
- `overlay`
|
|
50
|
+
- `table-shell` — Table surfaces: the white tray, its hairlines, and header ink.
|
|
51
|
+
- `table-stroke` — Table surfaces: the white tray, its hairlines, and header ink.
|
|
52
|
+
- `table-header-foreground` — Table surfaces: the white tray, its hairlines, and header ink.
|
|
53
|
+
- `artifact-canvas` — The artifact sheet: white warmed by a trace of the brand mark.
|
|
54
|
+
- `accent` — The active and selected wash, one step above hover.
|
|
55
|
+
- `accent-foreground` — The active and selected wash, one step above hover.
|
|
56
|
+
- `success` — Lichen success-700 clears AA on White and both success soft fills; success-600 is reserved for non-text marks because its 3.73:1 contrast on White does not clear body-text AA.
|
|
57
|
+
- `success-foreground` — Lichen success-700 clears AA on White and both success soft fills; success-600 is reserved for non-text marks because its 3.73:1 contrast on White does not clear body-text AA.
|
|
58
|
+
- `warning` — Amber-500 fill kept (it IS the caution signal); dark ink foreground instead of white = 6.94:1 (white on amber was 2.35:1, failed even 3:1).
|
|
59
|
+
- `warning-foreground` — Amber-500 fill kept (it IS the caution signal); dark ink foreground instead of white = 6.94:1 (white on amber was 2.35:1, failed even 3:1).
|
|
60
|
+
- `danger` — Danger and info: solid semantic fills carrying white foregrounds.
|
|
61
|
+
- `danger-foreground` — Danger and info: solid semantic fills carrying white foregrounds.
|
|
62
|
+
- `info` — Danger and info: solid semantic fills carrying white foregrounds.
|
|
63
|
+
- `info-foreground` — Danger and info: solid semantic fills carrying white foregrounds.
|
|
64
|
+
- `border-primary` — The neutral stroke ladder: every 1px UI border stays within WG3 to WG5.
|
|
65
|
+
- `border-secondary` — The neutral stroke ladder: every 1px UI border stays within WG3 to WG5.
|
|
66
|
+
- `border-tertiary` — The neutral stroke ladder: every 1px UI border stays within WG3 to WG5.
|
|
67
|
+
- `border` — The neutral stroke ladder: every 1px UI border stays within WG3 to WG5.
|
|
68
|
+
- `border-strong` — The neutral stroke ladder: every 1px UI border stays within WG3 to WG5.
|
|
69
|
+
- `input` — The neutral stroke ladder: every 1px UI border stays within WG3 to WG5.
|
|
70
|
+
- `menu-stroke` — The neutral stroke ladder: every 1px UI border stays within WG3 to WG5.
|
|
71
|
+
- `toast-stroke` — The neutral stroke ladder: every 1px UI border stays within WG3 to WG5.
|
|
72
|
+
- `tree-stroke` — The neutral stroke ladder: every 1px UI border stays within WG3 to WG5.
|
|
73
|
+
- `ring` — Focus ring and scrim, both translucent warm ink.
|
|
74
|
+
- `overlay` — Focus ring and scrim, both translucent warm ink.
|
|
75
75
|
|
|
76
76
|
## Design principles
|
|
77
77
|
|
|
@@ -97,7 +97,7 @@ Every surface defaults to shadow-0. Use the numbered elevation ladder only when
|
|
|
97
97
|
- Do: When requested, use shadow-100 for controls, shadow-200 for raised surfaces and pressable cards, shadow-300 for menus, popovers, listboxes, and toasts, and shadow-400 for dialogs and overlay drawers.
|
|
98
98
|
- Do: Reserve shadow-500 and shadow-600 for rare higher stacked layers; the legacy shadow-elevation hook resolves to shadow-0.
|
|
99
99
|
- Don't: Infer permission to use a shadow from actionability, floating placement, or component type.
|
|
100
|
-
- Don't: Use raw shadow values or legacy shadow
|
|
100
|
+
- Don't: Use raw shadow values or legacy named shadow utilities.
|
|
101
101
|
- Don't: Put a shadow on a non-interactive surface for decoration.
|
|
102
102
|
- Don't: Use shadow-500 or shadow-600 as a routine default.
|
|
103
103
|
|
|
@@ -115,15 +115,15 @@ Component motion follows the closest Animate UI interaction pattern, using role-
|
|
|
115
115
|
- Don't: Animate keyboard-initiated or 100×/day actions (e.g. a command-palette toggle).
|
|
116
116
|
- Don't: Add motion to a component only because it is visible; static structure and decorative chrome stay still.
|
|
117
117
|
|
|
118
|
-
### 4. Icons:
|
|
118
|
+
### 4. Icons: Phosphor, regular weight (fill for active) [lint: icon-package-import]
|
|
119
119
|
|
|
120
|
-
All icons come from
|
|
120
|
+
All icons come from Phosphor Icons at the regular weight — the stroke-led icon language of ADS. Components import named icons from the @/lib/icons registry — never from an icon package directly — so swapping the underlying set touches one file.
|
|
121
121
|
|
|
122
|
-
- Do: Import icons from the @/lib/icons registry;
|
|
122
|
+
- Do: Import icons from the @/lib/icons registry; wrap a new Phosphor component with createIcon there before using it.
|
|
123
123
|
- Do: Let icons default to size='1em' so they scale with text; size with a size prop or size-* class.
|
|
124
|
-
- Do:
|
|
125
|
-
- Don't: Import from an icon package directly, or
|
|
126
|
-
- Don't:
|
|
124
|
+
- Do: Render weight='fill' for the active or selected state, and weight='bold' for the rare heavier stroke.
|
|
125
|
+
- Don't: Import from an icon package directly, or install a second icon set.
|
|
126
|
+
- Don't: Leave an active nav item's icon at the regular stroke weight.
|
|
127
127
|
|
|
128
128
|
### 5. Demo screens: the shell owns the frame [judgment]
|
|
129
129
|
|
|
@@ -142,13 +142,17 @@ Indicator/status dots (Badge & Chip dot variants, ConnectionStatus, chart legend
|
|
|
142
142
|
|
|
143
143
|
### 7. ADS-first UI: use the library; extend only when asked [lint: deep-import, barrel-aliased-import, barrel-default-import, barrel-namespace-import, external-ui-import]
|
|
144
144
|
|
|
145
|
-
Every UI decision stays synchronized with ADS.
|
|
145
|
+
Every UI decision stays synchronized with ADS. Search the full catalog before deciding a component is missing, and use the exact exported name from the public barrel. When the barrel genuinely has no primitive, the sanctioned fallback is a shadcn/ui component vendored into src/components/ui through the repo's components.json recipe — never a hand-rolled control and never a UI library imported at a call site.
|
|
146
146
|
|
|
147
147
|
- Do: Use an existing ADS component by its exact exported name from the package barrel; compose existing components for layout-only patterns.
|
|
148
|
-
- Do:
|
|
148
|
+
- Do: Search the whole catalog before concluding a component is missing — the documented specimens are a sample, not the inventory.
|
|
149
|
+
- Do: Fall back to shadcn/ui when the barrel has no primitive: vendor it with npx shadcn add into src/components/ui, import cn from @/lib/utils, and swap its lucide icons for @/lib/icons.
|
|
150
|
+
- Do: Let a vendored shadcn component inherit the ADS palette through the shadcn-compat aliases in theme.css rather than restyling it by hand.
|
|
151
|
+
- Do: Ask the user before promoting a vendored component into the public barrel; only an explicit request authorizes new library work.
|
|
149
152
|
- Do: When authorized, add the component to the right family, export its exact name through the barrel, and document it.
|
|
150
153
|
- Don't: Deep-import, alias, default/namespace-import, or hand-roll a local copy of a component.
|
|
151
|
-
- Don't: Import a visual component directly from the web or an npm UI library.
|
|
154
|
+
- Don't: Import a visual component directly from the web or an npm UI library at a call site.
|
|
155
|
+
- Don't: Reach for the shadcn fallback before searching the catalog, or install a second component library beside it.
|
|
152
156
|
|
|
153
157
|
### 8. Minimal information per screen [judgment]
|
|
154
158
|
|
|
@@ -347,7 +351,6 @@ Before using any component below, preserve its built-in motion and apply the mot
|
|
|
347
351
|
- [DropdownLabel] — component [docs](https://ads.actioneer.dev/#/dropdown)
|
|
348
352
|
- [DropdownSeparator] — component [docs](https://ads.actioneer.dev/#/dropdown)
|
|
349
353
|
- [DropdownTrigger] — component [docs](https://ads.actioneer.dev/#/dropdown)
|
|
350
|
-
- [FloatingDrawer] — component (variants: side: right|left|bottom; size: sm|md|lg|xl) [docs](https://ads.actioneer.dev/#/drawer)
|
|
351
354
|
- [InlineDrawer] — component (variants: side: right|left|bottom; size: sm|md|lg|xl) [docs](https://ads.actioneer.dev/#/drawer)
|
|
352
355
|
- [Modal] — Use for a blocking, focused task or confirmation that must interrupt the page until resolved (portaled, focus-trapped, Escape/backdrop dismissible). (variants: size: sm|md|lg|xl|full; position: center|top) [docs](https://ads.actioneer.dev/#/modal)
|
|
353
356
|
- [ModalBody] — component (variants: size: sm|md|lg|xl|full; position: center|top) [docs](https://ads.actioneer.dev/#/modal)
|
|
@@ -364,13 +367,11 @@ Before using any component below, preserve its built-in motion and apply the mot
|
|
|
364
367
|
- [ToastProvider] — component [docs](https://ads.actioneer.dev/#/toast)
|
|
365
368
|
- [CommandPaletteItem] — TypeScript type
|
|
366
369
|
- [CommandPaletteProps] — TypeScript type
|
|
367
|
-
- [DrawerAppearance] — TypeScript type
|
|
368
370
|
- [DrawerProps] — TypeScript type
|
|
369
371
|
- [DropdownContentProps] — TypeScript type
|
|
370
372
|
- [DropdownItemProps] — TypeScript type
|
|
371
373
|
- [DropdownProps] — TypeScript type
|
|
372
374
|
- [DropdownTriggerProps] — TypeScript type
|
|
373
|
-
- [FloatingDrawerProps] — TypeScript type
|
|
374
375
|
- [InlineDrawerProps] — TypeScript type
|
|
375
376
|
- [ModalBodyProps] — TypeScript type
|
|
376
377
|
- [ModalDrawerProps] — TypeScript type
|
|
@@ -453,7 +454,7 @@ Before using any component below, preserve its built-in motion and apply the mot
|
|
|
453
454
|
- [SeriesChart] — component [docs](https://ads.actioneer.dev/#/viz-charts)
|
|
454
455
|
- [StatusAnswer] — component (variants: tone: default|primary|success|warning|danger|info) [docs](https://ads.actioneer.dev/#/ai/answer)
|
|
455
456
|
- [Tab] — component (variants: orientation: horizontal|vertical; selected: true|false) [docs](https://ads.actioneer.dev/#/tabs)
|
|
456
|
-
- [Table] — Use Table for structured tabular data that may need row selection, column sorting, sticky columns, or a paginated footer — not for simple key-value lists. Interactive rows inherit the shared soft neutral hover/focus sink and keep their normal table geometry; do not add a brand tint or hover-only corner rounding. Primary record links stay text-only in every state: never reveal an arrow, chevron, or other directional icon only on hover. Persistent row actions use a final sticky-right column plus elevatedActionColumn so one body-column shadow lifts the action surface instead of repeating on individual cells. The empty matching header cell remains transparent and non-sticky. [docs](https://ads.actioneer.dev/#/table)
|
|
457
|
+
- [Table] — Use Table for structured tabular data that may need row selection, column sorting, sticky columns, or a paginated footer — not for simple key-value lists. Every primary body-cell value defaults to text-m (15px / 22px); only clearly secondary metadata inside a cell may opt down to text-s. Interactive rows inherit the shared soft neutral hover/focus sink and keep their normal table geometry; do not add a brand tint or hover-only corner rounding. Primary record links stay text-only in every state: never reveal an arrow, chevron, or other directional icon only on hover. Persistent row actions use a final sticky-right column plus elevatedActionColumn so one body-column shadow lifts the action surface instead of repeating on individual cells. The empty matching header cell remains transparent and non-sticky. [docs](https://ads.actioneer.dev/#/table)
|
|
457
458
|
- [TableAnswer] — component (variants: tone: default|primary|success|warning|danger|info) [docs](https://ads.actioneer.dev/#/ai/answer)
|
|
458
459
|
- [TableBody] — component [docs](https://ads.actioneer.dev/#/table)
|
|
459
460
|
- [TableCell] — component [docs](https://ads.actioneer.dev/#/table)
|