@actioneer/ads 0.5.6 → 0.5.7

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.
@@ -11,8 +11,7 @@ const n = o.forwardRef(
11
11
  "aria-invalid": r || void 0,
12
12
  className: s(
13
13
  m,
14
- // Multi-line: the pill radius single-line controls use would clip
15
- // the first/last lines oddly, so textareas stay softly rounded.
14
+ // Multi-line controls use the 4px surface radius.
16
15
  "min-h-20 resize-y rounded-lg py-2 text-xs",
17
16
  e
18
17
  ),
@@ -127,7 +127,7 @@ function Y({
127
127
  {
128
128
  "aria-hidden": !0,
129
129
  className: S(
130
- "absolute size-2 rotate-45 rounded-[1px] bg-foreground",
130
+ "absolute size-2 rotate-45 rounded-sm bg-foreground",
131
131
  V[a]
132
132
  )
133
133
  }
@@ -2,7 +2,7 @@
2
2
  import { jsx as i, jsxs as n } from "react/jsx-runtime";
3
3
  import { Tooltip as o } from "radix-ui";
4
4
  import { cn as d } from "../../lib/cn.js";
5
- function f({
5
+ function m({
6
6
  delayDuration: t = 0,
7
7
  ...r
8
8
  }) {
@@ -15,7 +15,7 @@ function f({
15
15
  }
16
16
  );
17
17
  }
18
- function m({
18
+ function p({
19
19
  ...t
20
20
  }) {
21
21
  return /* @__PURE__ */ i(o.Root, { "data-slot": "tooltip", ...t });
@@ -43,14 +43,14 @@ function u({
43
43
  ...a,
44
44
  children: [
45
45
  e,
46
- /* @__PURE__ */ i(o.Arrow, { className: "z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-foreground fill-foreground" })
46
+ /* @__PURE__ */ i(o.Arrow, { className: "z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-sm bg-foreground fill-foreground" })
47
47
  ]
48
48
  }
49
49
  ) });
50
50
  }
51
51
  export {
52
- m as Tooltip,
52
+ p as Tooltip,
53
53
  u as TooltipContent,
54
- f as TooltipProvider,
54
+ m as TooltipProvider,
55
55
  c as TooltipTrigger
56
56
  };
package/lib/icons.d.ts CHANGED
@@ -273,6 +273,14 @@ export declare const Table: React.ForwardRefExoticComponent<Omit<import('@phosph
273
273
  /** Legacy Hugeicons prop — `>= 2` maps to weight="bold", else ignored. */
274
274
  strokeWidth?: number;
275
275
  } & React.RefAttributes<SVGSVGElement>>;
276
+ export declare const Filter: React.ForwardRefExoticComponent<Omit<import('@phosphor-icons/react').IconProps, "ref"> & {
277
+ /** Legacy Hugeicons prop — `>= 2` maps to weight="bold", else ignored. */
278
+ strokeWidth?: number;
279
+ } & React.RefAttributes<SVGSVGElement>>;
280
+ export declare const Archive: React.ForwardRefExoticComponent<Omit<import('@phosphor-icons/react').IconProps, "ref"> & {
281
+ /** Legacy Hugeicons prop — `>= 2` maps to weight="bold", else ignored. */
282
+ strokeWidth?: number;
283
+ } & React.RefAttributes<SVGSVGElement>>;
276
284
  export declare const File: React.ForwardRefExoticComponent<Omit<import('@phosphor-icons/react').IconProps, "ref"> & {
277
285
  /** Legacy Hugeicons prop — `>= 2` maps to weight="bold", else ignored. */
278
286
  strokeWidth?: number;
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 { ArrowUpRight as g, Code as p, Check as u, Copy as $, FileText as f, X as k, UploadSimple as w, EyeSlash as d, Eye as S, Minus as P, Plus as A, CaretDown as L, MagnifyingGlass as T, Info as m, WarningCircle as M, Warning as y, CheckCircle as U, ChatCircle as O, CaretUp as B, ArrowsDownUp as b, Clock as D, Database as R, CaretLeft as I, CaretRight as F, CornersOut as x, Magnet as H, Tray as v, ArrowLeft as G, DotsThree as W, User as E, XCircle as z, CircleDashed as V, ArrowsClockwise as N, Paperclip as Q, Quotes as q, At as X, Lightning as j, Table as J, Sparkle as K, File as Y, DownloadSimple as Z, Image as s, BracketsCurly as _, MusicNotes as oo, VideoCamera as eo, ImageBroken as to, CircleNotch as so, Pulse as no, ArrowDown as ao, ArrowRight as ro, ArrowUp as co, Scroll as io, Stack as lo, BookOpen as ho, Brain as Co, CalendarBlank as go, Phone as po, ListChecks as uo, Cube as $o, ArrowSquareOut as fo, Folder as ko, FolderOpen as wo, Gauge as So, GitBranch as Po, Hash as Ao, ClockCounterClockwise as Lo, House as To, SquaresFour as mo, Leaf as Mo, Lightbulb as yo, Link as Uo, SignOut as Oo, Envelope as Bo, Microphone as bo, MicrophoneSlash as Do, DotsThreeVertical as Ro, Palette as Io, SidebarSimple as Fo, Pause as xo, PencilSimple as Ho, PhoneSlash as vo, ChartPie as Go, Play as Wo, Plug as Eo, Rocket as zo, Gear as Vo, Shapes as No, ShareNetwork as Qo, Star as qo, Stop as Xo, ArrowsLeftRight as jo, Target as Jo, Binoculars as Ko, TextT as Yo, ToggleRight as Zo, Trash as _o, Users as oe, Wrench as ee } from "@phosphor-icons/react";
4
+ import { ArrowUpRight as g, Code as p, Check as u, Copy as $, FileText as f, X as k, UploadSimple as w, EyeSlash as d, Eye as S, Minus as A, Plus as P, CaretDown as L, MagnifyingGlass as T, Info as m, WarningCircle as M, Warning as y, CheckCircle as U, ChatCircle as O, CaretUp as B, ArrowsDownUp as F, Clock as b, Database as D, ArrowSquareOut as R, Table as I, CaretLeft as v, CaretRight as x, 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 s, BracketsCurly as oo, MusicNotes as eo, VideoCamera as to, ImageBroken as so, CircleNotch as no, Pulse as ao, Archive as ro, ArrowDown as co, ArrowRight as io, ArrowUp as lo, Scroll as ho, Stack as Co, BookOpen as go, Brain as po, CalendarBlank as uo, Phone as $o, ListChecks as fo, Cube as ko, Funnel as wo, Folder as So, FolderOpen as Ao, Gauge as Po, GitBranch as Lo, Hash as To, ClockCounterClockwise as mo, House as Mo, SquaresFour as yo, Leaf as Uo, Lightbulb as Oo, Link as Bo, SignOut as Fo, Envelope as bo, Microphone as Do, MicrophoneSlash as Ro, DotsThreeVertical as Io, Palette as vo, SidebarSimple as xo, Pause as Ho, PencilSimple as Go, PhoneSlash as Wo, ChartPie as Eo, Play as zo, Plug as Vo, Rocket as No, Gear as Qo, Shapes as qo, ShareNetwork as Xo, Star as jo, Stop as Jo, ArrowsLeftRight as Ko, Target as Yo, Binoculars as Zo, TextT as _o, ToggleRight as oe, Trash as ee, Users as te, Wrench as se } from "@phosphor-icons/react";
5
5
  function o(n, a) {
6
6
  const e = C.forwardRef(function({ strokeWidth: t, weight: r, ...c }, i) {
7
7
  const l = r ?? (t != null && t >= 2 ? "bold" : "regular");
@@ -9,105 +9,107 @@ function o(n, a) {
9
9
  });
10
10
  return e.displayName = a, e;
11
11
  }
12
- const ae = o(ao, "ArrowDown"), re = o(G, "ArrowLeft"), ce = o(ro, "ArrowRight"), ie = o(co, "ArrowUp"), le = o(g, "ArrowUpRight"), he = o(L, "ChevronDown"), Ce = o(I, "ChevronLeft"), ge = o(F, "ChevronRight"), pe = o(B, "ChevronUp"), ue = o(b, "SortIcon"), $e = o(jo, "SwapHorizontal"), fe = o(fo, "ExternalLink"), ke = o(Fo, "PanelLeft"), we = o(X, "At"), de = o(po, "Call"), Se = o(k, "Close"), Pe = o(z, "CloseCircle"), Ae = o($, "Copy"), Le = o(Z, "Download"), Te = o(Oo, "LogOut"), me = o(bo, "Mic"), Me = o(Do, "MicOff"), ye = o(vo, "PhoneOff"), Ue = o(Ho, "Pencil"), Oe = o(q, "Quote"), Be = o(S, "Eye"), be = o(d, "EyeOff"), De = o(Ao, "Hash"), Re = o(s, "ImageUpload"), Ie = o(w, "Upload"), Fe = o(Yo, "TextFont"), xe = o(Zo, "ToggleOn"), He = o(go, "Calendar"), ve = o(D, "Clock"), Ge = o(p, "Code"), We = o(Xo, "Stop"), Ee = o(H, "Magnet"), ze = o(x, "Maximize"), Ve = o(P, "Minus"), Ne = o(W, "MoreHorizontal"), Qe = o(Ro, "MoreVertical"), qe = o(Uo, "Link"), Xe = o(A, "Plus"), je = o(N, "Refresh"), Je = o(io, "AuditTrail"), Ke = o(T, "Search"), Ye = o(Qo, "Share"), Ze = o(_o, "Trash"), _e = o(u, "Check"), ot = o(so, "Loader"), et = o(U, "CheckCircle"), tt = o(m, "Info"), st = o(y, "Warning"), nt = o(M, "WarningCircle"), at = o(no, "Activity"), rt = o(O, "AgentChat"), ct = o(j, "Bolt"), it = o(ho, "BookOpen"), lt = o(Co, "Brain"), ht = o(uo, "CheckList"), Ct = o($o, "Component"), gt = o(R, "Database"), pt = o(J, "Table"), ut = o(Y, "File"), $t = o(f, "FileText"), ft = o(ko, "Folder"), kt = o(s, "Image"), wt = o(to, "ImageOff"), dt = o(oo, "Music"), St = o(eo, "Video"), Pt = o(_, "Braces"), At = o(wo, "FolderOpen"), Lt = o(So, "Gauge"), Tt = o(Po, "GitBranch"), mt = o(Lo, "HistoryClock"), Mt = o(To, "Home"), yt = o(lo, "Blocks"), Ut = o(v, "Inbox"), Ot = o(yo, "Lightbulb"), Bt = o(Mo, "Leaf"), bt = o(mo, "LayoutGrid"), Dt = o(Bo, "Mail"), Rt = o(Io, "Palette"), It = o(Go, "PieChart"), Ft = o(Eo, "Plug"), xt = o(zo, "Rocket"), Ht = o(Vo, "Settings"), vt = o(No, "Shapes"), Gt = o(K, "Sparkles"), Wt = o(qo, "Star"), Et = o(Ko, "Telescope"), zt = o(Jo, "Target"), Vt = o(E, "User"), Nt = o(oe, "Users"), Qt = o(Wo, "Play"), qt = o(xo, "Pause"), Xt = o(Q, "Paperclip"), jt = o(V, "CircleDashed"), Jt = o(ee, "Wrench");
12
+ const ce = o(co, "ArrowDown"), ie = o(E, "ArrowLeft"), le = o(io, "ArrowRight"), he = o(lo, "ArrowUp"), Ce = o(g, "ArrowUpRight"), ge = o(L, "ChevronDown"), pe = o(v, "ChevronLeft"), ue = o(x, "ChevronRight"), $e = o(B, "ChevronUp"), fe = o(F, "SortIcon"), ke = o(Ko, "SwapHorizontal"), we = o(R, "ExternalLink"), de = o(xo, "PanelLeft"), Se = o(J, "At"), Ae = o($o, "Call"), Pe = o(k, "Close"), Le = o(N, "CloseCircle"), Te = o($, "Copy"), me = o(_, "Download"), Me = o(Fo, "LogOut"), ye = o(Do, "Mic"), Ue = o(Ro, "MicOff"), Oe = o(Wo, "PhoneOff"), Be = o(Go, "Pencil"), Fe = o(j, "Quote"), be = o(S, "Eye"), De = o(d, "EyeOff"), Re = o(To, "Hash"), Ie = o(s, "ImageUpload"), ve = o(w, "Upload"), xe = o(_o, "TextFont"), He = o(oe, "ToggleOn"), Ge = o(uo, "Calendar"), We = o(b, "Clock"), Ee = o(p, "Code"), ze = o(Jo, "Stop"), Ve = o(G, "Magnet"), Ne = o(H, "Maximize"), Qe = o(A, "Minus"), qe = o(z, "MoreHorizontal"), Xe = o(Io, "MoreVertical"), je = o(Bo, "Link"), Je = o(P, "Plus"), Ke = o(q, "Refresh"), Ye = o(ho, "AuditTrail"), Ze = o(T, "Search"), _e = o(Xo, "Share"), ot = o(ee, "Trash"), et = o(u, "Check"), tt = o(no, "Loader"), st = o(U, "CheckCircle"), nt = o(m, "Info"), at = o(y, "Warning"), rt = o(M, "WarningCircle"), ct = o(ao, "Activity"), it = o(O, "AgentChat"), lt = o(K, "Bolt"), ht = o(go, "BookOpen"), Ct = o(po, "Brain"), gt = o(fo, "CheckList"), pt = o(ko, "Component"), ut = o(D, "Database"), $t = o(I, "Table"), ft = o(wo, "Filter"), kt = o(ro, "Archive"), wt = o(Z, "File"), dt = o(f, "FileText"), St = o(So, "Folder"), At = o(s, "Image"), Pt = o(so, "ImageOff"), Lt = o(eo, "Music"), Tt = o(to, "Video"), mt = o(oo, "Braces"), Mt = o(Ao, "FolderOpen"), yt = o(Po, "Gauge"), Ut = o(Lo, "GitBranch"), Ot = o(mo, "HistoryClock"), Bt = o(Mo, "Home"), Ft = o(Co, "Blocks"), bt = o(W, "Inbox"), Dt = o(Oo, "Lightbulb"), Rt = o(Uo, "Leaf"), It = o(yo, "LayoutGrid"), vt = o(bo, "Mail"), xt = o(vo, "Palette"), Ht = o(Eo, "PieChart"), Gt = o(Vo, "Plug"), Wt = o(No, "Rocket"), Et = o(Qo, "Settings"), zt = o(qo, "Shapes"), Vt = o(Y, "Sparkles"), Nt = o(jo, "Star"), Qt = o(Zo, "Telescope"), qt = o(Yo, "Target"), Xt = o(V, "User"), jt = o(te, "Users"), Jt = o(zo, "Play"), Kt = o(Ho, "Pause"), Yt = o(X, "Paperclip"), Zt = o(Q, "CircleDashed"), _t = o(se, "Wrench");
13
13
  export {
14
- at as Activity,
15
- rt as AgentChat,
16
- ae as ArrowDown,
17
- re as ArrowLeft,
18
- ce as ArrowRight,
19
- ie as ArrowUp,
20
- le as ArrowUpRight,
21
- we as At,
22
- Je as AuditTrail,
23
- yt as Blocks,
24
- ct as Bolt,
25
- it as BookOpen,
26
- Pt as Braces,
27
- lt as Brain,
28
- He as Calendar,
29
- de as Call,
30
- _e as Check,
31
- et as CheckCircle,
32
- ht as CheckList,
33
- he as ChevronDown,
34
- Ce as ChevronLeft,
35
- ge as ChevronRight,
36
- pe as ChevronUp,
37
- jt as CircleDashed,
38
- ve as Clock,
39
- Se as Close,
40
- Pe as CloseCircle,
41
- Ge as Code,
42
- Ct as Component,
43
- Ae as Copy,
44
- gt as Database,
45
- Le as Download,
46
- fe as ExternalLink,
47
- Be as Eye,
48
- be as EyeOff,
49
- ut as File,
50
- $t as FileText,
51
- ft as Folder,
52
- At as FolderOpen,
53
- Lt as Gauge,
54
- Tt as GitBranch,
55
- De as Hash,
56
- mt as HistoryClock,
57
- Mt as Home,
58
- kt as Image,
59
- wt as ImageOff,
60
- Re as ImageUpload,
61
- Ut as Inbox,
62
- tt as Info,
63
- bt as LayoutGrid,
64
- Bt as Leaf,
65
- Ot as Lightbulb,
66
- qe as Link,
67
- ot as Loader,
68
- Te as LogOut,
69
- Ee as Magnet,
70
- Dt as Mail,
71
- ze as Maximize,
72
- me as Mic,
73
- Me as MicOff,
74
- Ve as Minus,
75
- Ne as MoreHorizontal,
76
- Qe as MoreVertical,
77
- dt as Music,
78
- Rt as Palette,
79
- ke as PanelLeft,
80
- Xt as Paperclip,
81
- qt as Pause,
82
- Ue as Pencil,
83
- ye as PhoneOff,
84
- It as PieChart,
85
- Qt as Play,
86
- Ft as Plug,
87
- Xe as Plus,
88
- Oe as Quote,
89
- je as Refresh,
90
- xt as Rocket,
91
- Ke as Search,
92
- Ht as Settings,
93
- vt as Shapes,
94
- Ye as Share,
95
- ue as SortIcon,
96
- Gt as Sparkles,
97
- Wt as Star,
98
- We as Stop,
99
- $e as SwapHorizontal,
100
- pt as Table,
101
- zt as Target,
102
- Et as Telescope,
103
- Fe as TextFont,
104
- xe as ToggleOn,
105
- Ze as Trash,
106
- Ie as Upload,
107
- Vt as User,
108
- Nt as Users,
109
- St as Video,
110
- st as Warning,
111
- nt as WarningCircle,
112
- Jt as Wrench
14
+ ct as Activity,
15
+ it as AgentChat,
16
+ kt as Archive,
17
+ ce as ArrowDown,
18
+ ie as ArrowLeft,
19
+ le as ArrowRight,
20
+ he as ArrowUp,
21
+ Ce as ArrowUpRight,
22
+ Se as At,
23
+ Ye as AuditTrail,
24
+ Ft as Blocks,
25
+ lt as Bolt,
26
+ ht as BookOpen,
27
+ mt as Braces,
28
+ Ct as Brain,
29
+ Ge as Calendar,
30
+ Ae as Call,
31
+ et as Check,
32
+ st as CheckCircle,
33
+ gt as CheckList,
34
+ ge as ChevronDown,
35
+ pe as ChevronLeft,
36
+ ue as ChevronRight,
37
+ $e as ChevronUp,
38
+ Zt as CircleDashed,
39
+ We as Clock,
40
+ Pe as Close,
41
+ Le as CloseCircle,
42
+ Ee as Code,
43
+ pt as Component,
44
+ Te as Copy,
45
+ ut as Database,
46
+ me as Download,
47
+ we as ExternalLink,
48
+ be as Eye,
49
+ De as EyeOff,
50
+ wt as File,
51
+ dt as FileText,
52
+ ft as Filter,
53
+ St as Folder,
54
+ Mt as FolderOpen,
55
+ yt as Gauge,
56
+ Ut as GitBranch,
57
+ Re as Hash,
58
+ Ot as HistoryClock,
59
+ Bt as Home,
60
+ At as Image,
61
+ Pt as ImageOff,
62
+ Ie as ImageUpload,
63
+ bt as Inbox,
64
+ nt as Info,
65
+ It as LayoutGrid,
66
+ Rt as Leaf,
67
+ Dt as Lightbulb,
68
+ je as Link,
69
+ tt as Loader,
70
+ Me as LogOut,
71
+ Ve as Magnet,
72
+ vt as Mail,
73
+ Ne as Maximize,
74
+ ye as Mic,
75
+ Ue as MicOff,
76
+ Qe as Minus,
77
+ qe as MoreHorizontal,
78
+ Xe as MoreVertical,
79
+ Lt as Music,
80
+ xt as Palette,
81
+ de as PanelLeft,
82
+ Yt as Paperclip,
83
+ Kt as Pause,
84
+ Be as Pencil,
85
+ Oe as PhoneOff,
86
+ Ht as PieChart,
87
+ Jt as Play,
88
+ Gt as Plug,
89
+ Je as Plus,
90
+ Fe as Quote,
91
+ Ke as Refresh,
92
+ Wt as Rocket,
93
+ Ze as Search,
94
+ Et as Settings,
95
+ zt as Shapes,
96
+ _e as Share,
97
+ fe as SortIcon,
98
+ Vt as Sparkles,
99
+ Nt as Star,
100
+ ze as Stop,
101
+ ke as SwapHorizontal,
102
+ $t as Table,
103
+ qt as Target,
104
+ Qt as Telescope,
105
+ xe as TextFont,
106
+ He as ToggleOn,
107
+ ot as Trash,
108
+ ve as Upload,
109
+ Xt as User,
110
+ jt as Users,
111
+ Tt as Video,
112
+ at as Warning,
113
+ rt as WarningCircle,
114
+ _t as Wrench
113
115
  };
package/llms.txt CHANGED
@@ -27,10 +27,10 @@ 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 (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
- - `brand-text` — Brand (Sage green) — used for solid fills / primary actions, not body text
30
+ - `brand` — Compatibility action role — neutral ink, never a colored primary hue.
31
+ - `brand-foreground` — Compatibility action role — neutral ink, never a colored primary hue.
32
+ - `brand-hover` — Compatibility action role — neutral ink, never a colored primary hue.
33
+ - `brand-text` — Compatibility action role — neutral ink, never a colored primary hue.
34
34
  - `fill` — Quiet fill — secondary buttons, avatars, chips
35
35
  - `fill-foreground` — Quiet fill — secondary buttons, avatars, chips
36
36
  - `table-shell` — Quiet fill — secondary buttons, avatars, chips
@@ -124,12 +124,13 @@ Every UI decision stays synchronized with ADS. Before making a new screen/contro
124
124
 
125
125
  ### 8. Minimal information per screen [judgment]
126
126
 
127
- A screen carries ONLY what the user needs to move forward: one title, at most one short supporting line, the inputs, one primary action. Never maximalist. Promote the one message that matters typographically instead of appending muted fine print.
127
+ A screen carries ONLY what the user needs to move forward: one title, the inputs, one primary action. Page, section, panel, modal, dialog, drawer, and popover headers are title-only by default; add a description only when the user explicitly asks for one. Never maximalist.
128
128
 
129
129
  - Do: Prefer more, smaller steps over dense ones; ask one thing at a time.
130
130
  - Do: Derive instead of asking whenever possible (a name from a work email, the company from its domain).
131
131
  - Do: Render multi-step flows full-screen — a single content container that holds the inputs and its own Back/Continue is fine.
132
132
  - Don't: Add section eyebrows above a title that already names the screen, or helper text that restates the obvious / duplicates a disabled button's meaning.
133
+ - Don't: Add any header description unless the user explicitly requested supporting copy for that page, section, panel, modal, dialog, drawer, or popover.
133
134
  - Don't: Nest panel/step-rail chrome inside a multi-step flow.
134
135
 
135
136
  ### 9. Responsive = container-fluid components, shells own the width [judgment]
@@ -311,6 +312,10 @@ When tabs and a search field control the same content, they share one responsive
311
312
  - [AccordionItem] — component [docs](https://ads.actioneer.dev/#/accordion)
312
313
  - [AnswerRenderer] — component (variants: tone: default|primary|success|warning|danger|info) [docs](https://ads.actioneer.dev/#/ai/answer)
313
314
  - [AnswerSkeleton] — component (variants: tone: default|primary|success|warning|danger|info) [docs](https://ads.actioneer.dev/#/ai/answer)
315
+ - [AnswerSourceChip] — Use the blue connector/source chip inside AnswerSources to open only the referenced nodes represented by that chip in the shell's inspector. [docs](https://ads.actioneer.dev/#/ai/sources)
316
+ - [AnswerSourceInspector] — Render as a separate white shell-level panel beside the answer when a source chip is selected; close and unmount it when the selection clears. [docs](https://ads.actioneer.dev/#/ai/sources)
317
+ - [AnswerSourceItem] — Use as an outlined clickable row inside AnswerSourceInspector for one referenced table or node, including its parent source, read state, and optional status. [docs](https://ads.actioneer.dev/#/ai/sources)
318
+ - [AnswerSources] — Place immediately above an answer's follow-up questions to summarize the referenced nodes and group them into clickable AnswerSourceChips. [docs](https://ads.actioneer.dev/#/ai/sources)
314
319
  - [AreaChart] — component [docs](https://ads.actioneer.dev/#/ai/chart)
315
320
  - [Avatar] — Use to represent a person or entity as a compact photo-or-initials glyph, standalone or stacked in an AvatarGroup. [docs](https://ads.actioneer.dev/#/avatar)
316
321
  - [AvatarGroup] — component [docs](https://ads.actioneer.dev/#/avatar)
@@ -396,6 +401,10 @@ When tabs and a search field control the same content, they share one responsive
396
401
  - [AnswerRendererProps] — TypeScript type
397
402
  - [AnswerSkeletonProps] — TypeScript type
398
403
  - [AnswerSource] — TypeScript type
404
+ - [AnswerSourceChipProps] — TypeScript type
405
+ - [AnswerSourceInspectorProps] — TypeScript type
406
+ - [AnswerSourceItemProps] — TypeScript type
407
+ - [AnswerSourcesProps] — TypeScript type
399
408
  - [AnswerSpec] — TypeScript type
400
409
  - [AnswerTone] — TypeScript type
401
410
  - [AreaChartProps] — TypeScript type
@@ -601,7 +610,7 @@ When tabs and a search field control the same content, they share one responsive
601
610
  - [NavbarItem] — component (variants: justify: start|center|end) [docs](https://ads.actioneer.dev/#/navbar)
602
611
  - [PageHeader] — Use for every page title row; supply onBack to anchor an icon-only back arrow immediately before the title, never in the trailing actions area. [docs](https://ads.actioneer.dev/#/page-header)
603
612
  - [Pagination] — Use for navigating multi-page numbered content — table footers, search results, or any list too long for one screen. [docs](https://ads.actioneer.dev/#/pagination)
604
- - [Sidebar] — Use as the app's left navigation rail — compose it from SidebarHeader/SidebarBrand, SidebarNav (sections of SidebarItems), optional SidebarHistory, and a SidebarFooter with SidebarAccount, with an opt-in collapsed icon-rail mode (⌘B/Ctrl-B) that every sub-part reads automatically. [docs](https://ads.actioneer.dev/#/sidebar)
613
+ - [Sidebar] — Use as the app's left navigation rail. The canonical Actioneer shell composes SidebarBrand with persistent header actions, SidebarAction above grouped SidebarItems, optional attention counts and SidebarHistory, then SidebarAccount in a pinned footer. Its opt-in collapsed icon-rail mode (⌘B/Ctrl-B) is shared automatically by every sub-part. [docs](https://ads.actioneer.dev/#/sidebar)
605
614
  - [SidebarAccount] — component [docs](https://ads.actioneer.dev/#/sidebar)
606
615
  - [SidebarAction] — component [docs](https://ads.actioneer.dev/#/sidebar)
607
616
  - [SidebarBrand] — component [docs](https://ads.actioneer.dev/#/sidebar)
@@ -879,8 +888,8 @@ When tabs and a search field control the same content, they share one responsive
879
888
  - [FileName] — component [docs](https://ads.actioneer.dev/#/demo/ask)
880
889
  - [FileRoot] — component [docs](https://ads.actioneer.dev/#/demo/ask)
881
890
  - [FileSize] — component [docs](https://ads.actioneer.dev/#/demo/ask)
882
- - [FollowUpQuestion] — component [docs](https://ads.actioneer.dev/#/demo/ask)
883
- - [FollowUpSuggestion] — component [docs](https://ads.actioneer.dev/#/demo/ask)
891
+ - [FollowUpQuestion] — Use for the two or three full-width next-question rows that close a structured answer, immediately after its source strip; show the exact prompt that clicking will send. [docs](https://ads.actioneer.dev/#/ai/follow-up-suggestions)
892
+ - [FollowUpSuggestion] — Use only for compact runtime suggestion chips above the composer; use FollowUpQuestion for the larger answer-ending question rows. [docs](https://ads.actioneer.dev/#/ai/follow-up-suggestions)
884
893
  - [Image] — component [docs](https://ads.actioneer.dev/#/demo/ask)
885
894
  - [ImageActions] — component [docs](https://ads.actioneer.dev/#/demo/ask)
886
895
  - [ImageContentFilterError] — component [docs](https://ads.actioneer.dev/#/demo/ask)
package/manifest.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actioneer/ads",
3
- "version": "0.5.6",
3
+ "version": "0.5.7",
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": 784,
20
- "component": 353,
21
- "type": 343,
19
+ "total": 792,
20
+ "component": 357,
21
+ "type": 347,
22
22
  "hook": 10,
23
23
  "util": 78
24
24
  },
@@ -148,7 +148,7 @@
148
148
  "text-brand",
149
149
  "border-brand"
150
150
  ],
151
- "description": "Brand (Sage green) — used for solid fills / primary actions, not body text"
151
+ "description": "Compatibility action role — neutral ink, never a colored primary hue."
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 (Sage green) — used for solid fills / primary actions, not body text"
160
+ "description": "Compatibility action role — neutral ink, never a colored primary hue."
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 (Sage green) — used for solid fills / primary actions, not body text"
170
+ "description": "Compatibility action role — neutral ink, never a colored primary hue."
171
171
  },
172
172
  {
173
173
  "name": "--color-brand-text",
@@ -177,7 +177,7 @@
177
177
  "text-brand-text",
178
178
  "border-brand-text"
179
179
  ],
180
- "description": "Brand (Sage green) — used for solid fills / primary actions, not body text"
180
+ "description": "Compatibility action role — neutral ink, never a colored primary hue."
181
181
  },
182
182
  {
183
183
  "name": "--color-fill",
@@ -2068,6 +2068,63 @@
2068
2068
  "kind"
2069
2069
  ]
2070
2070
  },
2071
+ {
2072
+ "name": "AnswerSourceChip",
2073
+ "family": "Data display",
2074
+ "kind": "component",
2075
+ "importPath": "@actioneer/ads",
2076
+ "module": "answer-sources",
2077
+ "description": "Use the blue connector/source chip inside AnswerSources to open only the referenced nodes represented by that chip in the shell's inspector.",
2078
+ "showcaseUrl": "https://ads.actioneer.dev/#/ai/sources",
2079
+ "props": [
2080
+ "icon",
2081
+ "count",
2082
+ "children"
2083
+ ]
2084
+ },
2085
+ {
2086
+ "name": "AnswerSourceInspector",
2087
+ "family": "Data display",
2088
+ "kind": "component",
2089
+ "importPath": "@actioneer/ads",
2090
+ "module": "answer-sources",
2091
+ "description": "Render as a separate white shell-level panel beside the answer when a source chip is selected; close and unmount it when the selection clears.",
2092
+ "showcaseUrl": "https://ads.actioneer.dev/#/ai/sources",
2093
+ "props": [
2094
+ "description",
2095
+ "title",
2096
+ "children"
2097
+ ]
2098
+ },
2099
+ {
2100
+ "name": "AnswerSourceItem",
2101
+ "family": "Data display",
2102
+ "kind": "component",
2103
+ "importPath": "@actioneer/ads",
2104
+ "module": "answer-sources",
2105
+ "description": "Use as an outlined clickable row inside AnswerSourceInspector for one referenced table or node, including its parent source, read state, and optional status.",
2106
+ "showcaseUrl": "https://ads.actioneer.dev/#/ai/sources",
2107
+ "props": [
2108
+ "name",
2109
+ "source",
2110
+ "description",
2111
+ "status",
2112
+ "icon"
2113
+ ]
2114
+ },
2115
+ {
2116
+ "name": "AnswerSources",
2117
+ "family": "Data display",
2118
+ "kind": "component",
2119
+ "importPath": "@actioneer/ads",
2120
+ "module": "answer-sources",
2121
+ "description": "Place immediately above an answer's follow-up questions to summarize the referenced nodes and group them into clickable AnswerSourceChips.",
2122
+ "showcaseUrl": "https://ads.actioneer.dev/#/ai/sources",
2123
+ "props": [
2124
+ "count",
2125
+ "label"
2126
+ ]
2127
+ },
2071
2128
  {
2072
2129
  "name": "AreaChart",
2073
2130
  "family": "Data display",
@@ -3042,6 +3099,7 @@
3042
3099
  "actionColumnWidth",
3043
3100
  "sortDescriptor",
3044
3101
  "onSortChange",
3102
+ "allowsSorting",
3045
3103
  "isStatic"
3046
3104
  ]
3047
3105
  },
@@ -3086,7 +3144,8 @@
3086
3144
  "showcaseUrl": "https://ads.actioneer.dev/#/table",
3087
3145
  "props": [
3088
3146
  "align",
3089
- "sticky"
3147
+ "sticky",
3148
+ "sortValue"
3090
3149
  ]
3091
3150
  },
3092
3151
  {
@@ -3099,7 +3158,9 @@
3099
3158
  "props": [
3100
3159
  "align",
3101
3160
  "sticky",
3102
- "sortKey"
3161
+ "sortKey",
3162
+ "allowsSorting",
3163
+ "_sortColumnIndex"
3103
3164
  ]
3104
3165
  },
3105
3166
  {
@@ -3466,6 +3527,34 @@
3466
3527
  "importPath": "@actioneer/ads",
3467
3528
  "module": "answer"
3468
3529
  },
3530
+ {
3531
+ "name": "AnswerSourceChipProps",
3532
+ "family": "Data display",
3533
+ "kind": "type",
3534
+ "importPath": "@actioneer/ads",
3535
+ "module": "answer-sources"
3536
+ },
3537
+ {
3538
+ "name": "AnswerSourceInspectorProps",
3539
+ "family": "Data display",
3540
+ "kind": "type",
3541
+ "importPath": "@actioneer/ads",
3542
+ "module": "answer-sources"
3543
+ },
3544
+ {
3545
+ "name": "AnswerSourceItemProps",
3546
+ "family": "Data display",
3547
+ "kind": "type",
3548
+ "importPath": "@actioneer/ads",
3549
+ "module": "answer-sources"
3550
+ },
3551
+ {
3552
+ "name": "AnswerSourcesProps",
3553
+ "family": "Data display",
3554
+ "kind": "type",
3555
+ "importPath": "@actioneer/ads",
3556
+ "module": "answer-sources"
3557
+ },
3469
3558
  {
3470
3559
  "name": "AnswerSpec",
3471
3560
  "family": "Data display",
@@ -4766,6 +4855,7 @@
4766
4855
  "mask",
4767
4856
  "motion",
4768
4857
  "motionMode",
4858
+ "interactionColor",
4769
4859
  "hero"
4770
4860
  ]
4771
4861
  },
@@ -5090,7 +5180,7 @@
5090
5180
  "kind": "component",
5091
5181
  "importPath": "@actioneer/ads",
5092
5182
  "module": "sidebar",
5093
- "description": "Use as the app's left navigation rail — compose it from SidebarHeader/SidebarBrand, SidebarNav (sections of SidebarItems), optional SidebarHistory, and a SidebarFooter with SidebarAccount, with an opt-in collapsed icon-rail mode (⌘B/Ctrl-B) that every sub-part reads automatically.",
5183
+ "description": "Use as the app's left navigation rail. The canonical Actioneer shell composes SidebarBrand with persistent header actions, SidebarAction above grouped SidebarItems, optional attention counts and SidebarHistory, then SidebarAccount in a pinned footer. Its opt-in collapsed icon-rail mode (⌘B/Ctrl-B) is shared automatically by every sub-part.",
5094
5184
  "showcaseUrl": "https://ads.actioneer.dev/#/sidebar",
5095
5185
  "props": [
5096
5186
  "collapsed",
@@ -7657,7 +7747,8 @@
7657
7747
  "module": "follow-up-suggestions",
7658
7748
  "vendored": true,
7659
7749
  "note": "Vendored assistant-ui component. Props follow upstream assistant-ui, not ADS conventions; the chat family needs an <AssistantRuntimeProvider> (chat runtime) and a <TooltipProvider> ancestor. Import from \"@actioneer/ads\" like any ADS export.",
7660
- "showcaseUrl": "https://ads.actioneer.dev/#/demo/ask"
7750
+ "description": "Use for the two or three full-width next-question rows that close a structured answer, immediately after its source strip; show the exact prompt that clicking will send.",
7751
+ "showcaseUrl": "https://ads.actioneer.dev/#/ai/follow-up-suggestions"
7661
7752
  },
7662
7753
  {
7663
7754
  "name": "FollowUpSuggestion",
@@ -7667,7 +7758,8 @@
7667
7758
  "module": "follow-up-suggestions",
7668
7759
  "vendored": true,
7669
7760
  "note": "Vendored assistant-ui component. Props follow upstream assistant-ui, not ADS conventions; the chat family needs an <AssistantRuntimeProvider> (chat runtime) and a <TooltipProvider> ancestor. Import from \"@actioneer/ads\" like any ADS export.",
7670
- "showcaseUrl": "https://ads.actioneer.dev/#/demo/ask"
7761
+ "description": "Use only for compact runtime suggestion chips above the composer; use FollowUpQuestion for the larger answer-ending question rows.",
7762
+ "showcaseUrl": "https://ads.actioneer.dev/#/ai/follow-up-suggestions"
7671
7763
  },
7672
7764
  {
7673
7765
  "name": "Image",
@@ -8701,7 +8793,7 @@
8701
8793
  "id": "minimal-information",
8702
8794
  "number": 8,
8703
8795
  "title": "Minimal information per screen",
8704
- "rule": "A screen carries ONLY what the user needs to move forward: one title, at most one short supporting line, the inputs, one primary action. Never maximalist. Promote the one message that matters typographically instead of appending muted fine print.",
8796
+ "rule": "A screen carries ONLY what the user needs to move forward: one title, the inputs, one primary action. Page, section, panel, modal, dialog, drawer, and popover headers are title-only by default; add a description only when the user explicitly asks for one. Never maximalist.",
8705
8797
  "do": [
8706
8798
  "Prefer more, smaller steps over dense ones; ask one thing at a time.",
8707
8799
  "Derive instead of asking whenever possible (a name from a work email, the company from its domain).",
@@ -8709,6 +8801,7 @@
8709
8801
  ],
8710
8802
  "dont": [
8711
8803
  "Add section eyebrows above a title that already names the screen, or helper text that restates the obvious / duplicates a disabled button's meaning.",
8804
+ "Add any header description unless the user explicitly requested supporting copy for that page, section, panel, modal, dialog, drawer, or popover.",
8712
8805
  "Nest panel/step-rail chrome inside a multi-step flow."
8713
8806
  ],
8714
8807
  "enforcedByLint": false
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actioneer/ads",
3
- "version": "0.5.6",
3
+ "version": "0.5.7",
4
4
  "description": "Actioneer Design System 1.0 — React 19 + Tailwind v4 component library.",
5
5
  "type": "module",
6
6
  "sideEffects": [