@actioneer/ads 1.0.7 → 1.0.9

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.
Files changed (87) hide show
  1. package/DESIGN.md +119 -91
  2. package/README.md +19 -1
  3. package/components/ai-elements/chart.js +20 -20
  4. package/components/ai-elements/inline-citation.js +50 -50
  5. package/components/ai-elements/message.js +1 -1
  6. package/components/ai-elements/tool.js +5 -5
  7. package/components/alert.d.ts +3 -2
  8. package/components/alert.js +25 -25
  9. package/components/answer.js +1 -1
  10. package/components/assistant-ui/action-bar.js +1 -1
  11. package/components/assistant-ui/attachment.js +68 -49
  12. package/components/assistant-ui/composer-add-context.js +1 -1
  13. package/components/assistant-ui/composer-harness.js +5 -4
  14. package/components/assistant-ui/composer-trigger-popover.js +1 -1
  15. package/components/assistant-ui/composer.js +13 -13
  16. package/components/assistant-ui/message-timing.js +6 -6
  17. package/components/assistant-ui/selection-toolbar.js +5 -5
  18. package/components/assistant-ui/sources.js +15 -15
  19. package/components/assistant-ui/tooltip-icon-button.js +18 -14
  20. package/components/audio-waveform.d.ts +21 -8
  21. package/components/audio-waveform.js +371 -94
  22. package/components/autocomplete.js +9 -9
  23. package/components/breadcrumbs.js +36 -42
  24. package/components/button.d.ts +16 -1
  25. package/components/button.js +86 -73
  26. package/components/card.js +1 -1
  27. package/components/chart.d.ts +31 -4
  28. package/components/chart.js +900 -666
  29. package/components/chip.d.ts +2 -1
  30. package/components/chip.js +56 -51
  31. package/components/command-palette.js +12 -12
  32. package/components/connector-card.d.ts +1 -2
  33. package/components/connector-card.js +17 -17
  34. package/components/date-range-picker.js +1 -2
  35. package/components/drawer.js +9 -10
  36. package/components/dropdown.js +1 -1
  37. package/components/empty-state.d.ts +2 -0
  38. package/components/empty-state.js +17 -15
  39. package/components/field.js +9 -10
  40. package/components/file-dropzone.d.ts +6 -3
  41. package/components/file-dropzone.js +72 -60
  42. package/components/filters.d.ts +37 -0
  43. package/components/filters.js +129 -0
  44. package/components/index.d.ts +1 -0
  45. package/components/index.js +447 -444
  46. package/components/infinite-canvas.js +9 -9
  47. package/components/modal.d.ts +2 -1
  48. package/components/modal.js +102 -91
  49. package/components/page-body.js +8 -8
  50. package/components/popover.d.ts +6 -1
  51. package/components/popover.js +75 -65
  52. package/components/progress-circle.d.ts +1 -1
  53. package/components/progress-circle.js +57 -48
  54. package/components/segmented.d.ts +1 -0
  55. package/components/segmented.js +34 -36
  56. package/components/select.js +2 -2
  57. package/components/selection-action-bar.js +32 -31
  58. package/components/setting-row.js +10 -10
  59. package/components/sidebar.d.ts +15 -0
  60. package/components/sidebar.js +186 -149
  61. package/components/slider.js +5 -5
  62. package/components/stepper.d.ts +1 -1
  63. package/components/stepper.js +1 -1
  64. package/components/switch.js +10 -10
  65. package/components/table.d.ts +10 -2
  66. package/components/table.js +380 -366
  67. package/components/tabs.d.ts +6 -1
  68. package/components/tabs.js +32 -29
  69. package/components/timeline.js +3 -3
  70. package/components/toast.js +53 -56
  71. package/components/ui/button.js +4 -4
  72. package/components/ui/dialog.js +1 -1
  73. package/components/viz-charts.js +263 -221
  74. package/demo/components/add-to-artifact.js +3 -2
  75. package/examples/README.md +31 -0
  76. package/examples/agents-screen.tsx +477 -0
  77. package/examples/campaign-analysis-screen.tsx +138 -0
  78. package/examples/campaigns-screen.tsx +439 -0
  79. package/examples/settings-screen.tsx +90 -0
  80. package/examples/workspace-header.tsx +71 -0
  81. package/lib/icons.d.ts +8 -0
  82. package/lib/icons.js +171 -118
  83. package/llms.txt +93 -29
  84. package/manifest.json +1660 -113
  85. package/package.json +1 -1
  86. package/styles.css +55 -68
  87. package/theme.css +50 -59
@@ -1,56 +1,56 @@
1
1
  "use client";
2
2
  import { jsx as r, jsxs as c } from "react/jsx-runtime";
3
- import * as o from "react";
4
- import { MotionConfig as _, motion as z } from "motion/react";
5
- import { User as j, PanelLeft as E } from "../lib/icons.js";
6
- import { cn as n } from "../lib/cn.js";
7
- import { springSidebar as H } from "../lib/motion.js";
8
- import { Tooltip as I } from "./tooltip.js";
9
- import { Avatar as L } from "./avatar.js";
10
- const R = o.createContext({
3
+ import * as n from "react";
4
+ import { MotionConfig as j, motion as _ } from "motion/react";
5
+ import { User as E, PanelLeft as H } from "../lib/icons.js";
6
+ import { cn as o } from "../lib/cn.js";
7
+ import { springSidebar as I } from "../lib/motion.js";
8
+ import { Tooltip as L } from "./tooltip.js";
9
+ import { Avatar as M } from "./avatar.js";
10
+ const z = n.createContext({
11
11
  collapsed: !1,
12
12
  toggle: () => {
13
13
  },
14
14
  setCollapsed: () => {
15
15
  }
16
16
  });
17
- function M() {
18
- return o.useContext(R);
17
+ function W() {
18
+ return n.useContext(z);
19
19
  }
20
- const K = o.forwardRef(
20
+ const K = n.forwardRef(
21
21
  ({
22
- className: t,
22
+ className: a,
23
23
  collapsed: e,
24
- defaultCollapsed: a = !1,
25
- onCollapsedChange: i,
24
+ defaultCollapsed: i = !1,
25
+ onCollapsedChange: t,
26
26
  animateOnMount: s = !1,
27
27
  keyboardToggle: d = !0,
28
28
  ...l
29
- }, m) => {
30
- const [v, y] = o.useState(a), g = e !== void 0, u = g ? e : v, b = o.useCallback(
29
+ }, b) => {
30
+ const [g, y] = n.useState(i), f = e !== void 0, u = f ? e : g, m = n.useCallback(
31
31
  (p) => {
32
- g || y(p), i == null || i(p);
32
+ f || y(p), t == null || t(p);
33
33
  },
34
- [g, i]
35
- ), h = o.useCallback(
36
- () => b(!u),
37
- [u, b]
34
+ [f, t]
35
+ ), x = n.useCallback(
36
+ () => m(!u),
37
+ [u, m]
38
38
  );
39
- o.useEffect(() => {
39
+ n.useEffect(() => {
40
40
  if (!d) return;
41
- const p = (f) => {
42
- (f.metaKey || f.ctrlKey) && f.key.toLowerCase() === "b" && (f.preventDefault(), h());
41
+ const p = (h) => {
42
+ (h.metaKey || h.ctrlKey) && h.key.toLowerCase() === "b" && (h.preventDefault(), x());
43
43
  };
44
44
  return document.addEventListener("keydown", p), () => document.removeEventListener("keydown", p);
45
- }, [d, h]);
46
- const x = o.useMemo(
47
- () => ({ collapsed: u, toggle: h, setCollapsed: b }),
48
- [u, h, b]
45
+ }, [d, x]);
46
+ const v = n.useMemo(
47
+ () => ({ collapsed: u, toggle: x, setCollapsed: m }),
48
+ [u, x, m]
49
49
  );
50
- return /* @__PURE__ */ r(R.Provider, { value: x, children: /* @__PURE__ */ r(_, { reducedMotion: "user", children: /* @__PURE__ */ r(
51
- z.aside,
50
+ return /* @__PURE__ */ r(z.Provider, { value: v, children: /* @__PURE__ */ r(j, { reducedMotion: "user", children: /* @__PURE__ */ r(
51
+ _.aside,
52
52
  {
53
- ref: m,
53
+ ref: b,
54
54
  "data-collapsed": u ? "true" : "false",
55
55
  initial: s ? {
56
56
  width: u ? 56 : 240,
@@ -62,10 +62,10 @@ const K = o.forwardRef(
62
62
  transform: "translate3d(0, 0, 0)",
63
63
  opacity: 1
64
64
  },
65
- transition: H,
66
- className: n(
65
+ transition: I,
66
+ className: o(
67
67
  "group/sidebar flex h-full shrink-0 flex-col bg-background",
68
- t
68
+ a
69
69
  ),
70
70
  ...l
71
71
  }
@@ -73,20 +73,20 @@ const K = o.forwardRef(
73
73
  }
74
74
  );
75
75
  K.displayName = "Sidebar";
76
- function S({ children: t }) {
77
- return /* @__PURE__ */ r("kbd", { className: "inline-flex h-4 min-w-4 items-center justify-center rounded bg-background/20 px-1 text-xs leading-none", children: t });
76
+ function S({ children: a }) {
77
+ return /* @__PURE__ */ r("kbd", { className: "inline-flex h-4 min-w-4 items-center justify-center rounded bg-background/20 px-1 text-xs leading-none", children: a });
78
78
  }
79
79
  function k({
80
- className: t,
80
+ className: a,
81
81
  onClick: e,
82
- tooltipSide: a = "right",
83
- ...i
82
+ tooltipSide: i = "right",
83
+ ...t
84
84
  }) {
85
- const { collapsed: s, toggle: d } = M();
85
+ const { collapsed: s, toggle: d } = W();
86
86
  return /* @__PURE__ */ r(
87
- I,
87
+ L,
88
88
  {
89
- side: a,
89
+ side: i,
90
90
  content: /* @__PURE__ */ c("span", { className: "flex items-center gap-1.5", children: [
91
91
  s ? "Expand" : "Collapse",
92
92
  /* @__PURE__ */ c("span", { className: "flex items-center gap-0.5", children: [
@@ -103,100 +103,136 @@ function k({
103
103
  onClick: (l) => {
104
104
  e == null || e(l), d();
105
105
  },
106
- className: n(
106
+ className: o(
107
107
  "inline-flex size-(--sidebar-item) shrink-0 items-center justify-center rounded-sm border border-transparent text-muted-foreground",
108
108
  "transition-colors hover:border-border hover:bg-elevated hover:text-foreground",
109
109
  "outline-none focus-visible:ring-3 focus-visible:ring-ring",
110
110
  "[&_svg]:size-4.5",
111
- t
111
+ a
112
112
  ),
113
- ...i,
114
- children: /* @__PURE__ */ r(E, {})
113
+ ...t,
114
+ children: /* @__PURE__ */ r(H, {})
115
115
  }
116
116
  )
117
117
  }
118
118
  );
119
119
  }
120
- function Y({
121
- logo: t,
120
+ function Z({
121
+ logo: a,
122
122
  href: e,
123
- label: a = "Home",
124
- showTrigger: i = !0,
123
+ label: i = "Home",
124
+ showTrigger: t = !0,
125
125
  children: s,
126
126
  className: d,
127
127
  ...l
128
128
  }) {
129
- const m = n(
130
- // 20px mark centered in a 32px square — the same box as every other rail icon.
131
- // group/brand lets a BrandMark logo play its blip loop on hover.
132
- "group/brand flex size-(--sidebar-item) items-center justify-center",
133
- "[&_img]:size-(--sidebar-logo) [&_svg]:size-(--sidebar-logo)",
129
+ const b = n.isValidElement(a) && a.type === R, g = o(
130
+ b ? "flex min-w-0 items-center rounded-m outline-none focus-visible:ring-3 focus-visible:ring-ring" : o(
131
+ // 20px mark centered in a 32px square — the same box as every other rail icon.
132
+ // group/brand lets a BrandMark logo play its blip loop on hover.
133
+ "group/brand flex size-(--sidebar-item) items-center justify-center",
134
+ "[&_img]:size-(--sidebar-logo) [&_svg]:size-(--sidebar-logo)"
135
+ ),
134
136
  // The logo owns the header at rest in BOTH states. On the collapsed rail
135
137
  // it swaps for the expand trigger only while the rail is hovered (or
136
138
  // holds keyboard focus, so the control stays reachable).
137
- i && "group-data-[collapsed=true]/sidebar:group-hover/sidebar:hidden group-data-[collapsed=true]/sidebar:group-focus-within/sidebar:hidden"
139
+ t && "group-data-[collapsed=true]/sidebar:group-hover/sidebar:hidden group-data-[collapsed=true]/sidebar:group-focus-within/sidebar:hidden"
138
140
  );
139
141
  return /* @__PURE__ */ c(
140
142
  "div",
141
143
  {
142
- className: n(
144
+ className: o(
143
145
  "flex h-(--sidebar-header) shrink-0 items-center justify-between gap-2 px-4",
144
146
  "group-data-[collapsed=true]/sidebar:justify-center group-data-[collapsed=true]/sidebar:px-2",
145
147
  d
146
148
  ),
147
149
  ...l,
148
150
  children: [
149
- e ? /* @__PURE__ */ r("a", { href: e, "aria-label": a, className: m, children: t }) : /* @__PURE__ */ r("span", { className: m, children: t }),
150
- i && /* @__PURE__ */ r("div", { className: "hidden group-data-[collapsed=true]/sidebar:group-hover/sidebar:flex group-data-[collapsed=true]/sidebar:group-focus-within/sidebar:flex", children: /* @__PURE__ */ r(k, { tooltipSide: "right" }) }),
151
+ e ? /* @__PURE__ */ r("a", { href: e, "aria-label": i, className: g, children: a }) : /* @__PURE__ */ r("span", { className: g, children: a }),
152
+ t && /* @__PURE__ */ r("div", { className: "hidden group-data-[collapsed=true]/sidebar:group-hover/sidebar:flex group-data-[collapsed=true]/sidebar:group-focus-within/sidebar:flex", children: /* @__PURE__ */ r(k, { tooltipSide: "right" }) }),
151
153
  /* @__PURE__ */ c("div", { className: "flex items-center gap-1 group-data-[collapsed=true]/sidebar:hidden", children: [
152
- i && /* @__PURE__ */ r(k, { tooltipSide: "bottom" }),
154
+ t && /* @__PURE__ */ r(k, { tooltipSide: "bottom" }),
153
155
  s
154
156
  ] })
155
157
  ]
156
158
  }
157
159
  );
158
160
  }
159
- const q = o.forwardRef(
160
- ({ className: t, ...e }, a) => /* @__PURE__ */ r(
161
+ const R = n.forwardRef(
162
+ ({ className: a, name: e, logoSrc: i, showName: t = !0, ...s }, d) => {
163
+ const l = e.trim().charAt(0).toUpperCase();
164
+ return /* @__PURE__ */ c(
165
+ "span",
166
+ {
167
+ ref: d,
168
+ className: o("flex min-w-0 items-center gap-2.5", a),
169
+ ...s,
170
+ children: [
171
+ i ? /* @__PURE__ */ r(
172
+ "img",
173
+ {
174
+ src: i,
175
+ alt: t ? "" : e,
176
+ className: "size-(--sidebar-item) shrink-0 rounded-m object-contain"
177
+ }
178
+ ) : /* @__PURE__ */ r(
179
+ "span",
180
+ {
181
+ "aria-hidden": t || void 0,
182
+ role: t ? void 0 : "img",
183
+ "aria-label": t ? void 0 : e,
184
+ className: "flex size-(--sidebar-item) shrink-0 items-center justify-center rounded-m bg-wg12 text-m leading-[var(--text-m--line-height)] font-medium text-white",
185
+ children: l
186
+ }
187
+ ),
188
+ t && /* @__PURE__ */ r("span", { className: "min-w-0 truncate text-l leading-[var(--text-l--line-height)] font-medium text-foreground group-data-[collapsed=true]/sidebar:sr-only", children: e })
189
+ ]
190
+ }
191
+ );
192
+ }
193
+ );
194
+ R.displayName = "SidebarWorkspace";
195
+ const q = n.forwardRef(
196
+ ({ className: a, ...e }, i) => /* @__PURE__ */ r(
161
197
  "div",
162
198
  {
163
- ref: a,
164
- className: n(
199
+ ref: i,
200
+ className: o(
165
201
  "flex h-(--sidebar-header) shrink-0 items-center justify-between gap-2 px-3",
166
202
  "group-data-[collapsed=true]/sidebar:justify-center group-data-[collapsed=true]/sidebar:px-2",
167
- t
203
+ a
168
204
  ),
169
205
  ...e
170
206
  }
171
207
  )
172
208
  );
173
209
  q.displayName = "SidebarHeader";
174
- const B = o.forwardRef(
175
- ({ className: t, ...e }, a) => /* @__PURE__ */ r("nav", { ref: a, className: n("min-h-0 flex-1 space-y-5 overflow-y-auto p-3", t), ...e })
210
+ const A = n.forwardRef(
211
+ ({ className: a, ...e }, i) => /* @__PURE__ */ r("nav", { ref: i, className: o("min-h-0 flex-1 space-y-5 overflow-y-auto p-3", a), ...e })
176
212
  );
177
- B.displayName = "SidebarNav";
178
- const D = o.forwardRef(
179
- ({ className: t, label: e, children: a, ...i }, s) => /* @__PURE__ */ c("div", { ref: s, className: t, ...i, children: [
213
+ A.displayName = "SidebarNav";
214
+ const B = n.forwardRef(
215
+ ({ className: a, label: e, children: i, ...t }, s) => /* @__PURE__ */ c("div", { ref: s, className: a, ...t, children: [
180
216
  e && /* @__PURE__ */ r("div", { className: "mb-1.5 px-3 text-s font-normal uppercase leading-4 tracking-wider text-tertiary group-data-[collapsed=true]/sidebar:hidden", children: e }),
181
- /* @__PURE__ */ r("div", { className: "flex flex-col gap-0.5 group-data-[collapsed=true]/sidebar:gap-2", children: a })
217
+ /* @__PURE__ */ r("div", { className: "flex flex-col gap-0.5 group-data-[collapsed=true]/sidebar:gap-2", children: i })
182
218
  ] })
183
219
  );
184
- D.displayName = "SidebarSection";
185
- const F = o.forwardRef(
186
- ({ className: t, icon: e, isActive: a, endContent: i, children: s, title: d, ...l }, m) => /* @__PURE__ */ c(
220
+ B.displayName = "SidebarSection";
221
+ const D = n.forwardRef(
222
+ ({ className: a, icon: e, isActive: i, endContent: t, children: s, title: d, ...l }, b) => /* @__PURE__ */ c(
187
223
  "a",
188
224
  {
189
- ref: m,
190
- "aria-current": a ? "page" : void 0,
225
+ ref: b,
226
+ "aria-current": i ? "page" : void 0,
191
227
  title: d ?? (typeof s == "string" ? s : void 0),
192
- className: n(
228
+ className: o(
193
229
  "group/sidebar-item flex h-9 items-center gap-2.5 rounded-md border border-transparent px-3 text-m leading-[var(--text-m--line-height)] font-normal text-sidebar-foreground",
194
230
  "transition-[background-color,border-color,color] duration-150 ease-out motion-reduce:transition-none",
195
231
  "outline-none focus-visible:ring-3 focus-visible:ring-ring",
196
232
  // Collapsed: a centered square (--sidebar-item) so every rail item lines up.
197
233
  "group-data-[collapsed=true]/sidebar:mx-auto group-data-[collapsed=true]/sidebar:size-(--sidebar-item) group-data-[collapsed=true]/sidebar:justify-center group-data-[collapsed=true]/sidebar:p-0",
198
- a ? "bg-sidebar-accent text-sidebar-accent-foreground" : "hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground",
199
- t
234
+ i ? "bg-sidebar-accent text-sidebar-accent-foreground" : "hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground",
235
+ a
200
236
  ),
201
237
  ...l,
202
238
  children: [
@@ -205,34 +241,34 @@ const F = o.forwardRef(
205
241
  {
206
242
  "aria-hidden": !0,
207
243
  className: "flex shrink-0 items-center justify-center transition-transform duration-150 ease-out group-hover/sidebar-item:scale-110 motion-reduce:transition-none motion-reduce:group-hover/sidebar-item:scale-100 [&_svg]:size-4 [&_svg]:shrink-0",
208
- children: a && o.isValidElement(e) ? o.cloneElement(e, { weight: "fill" }) : e
244
+ children: i && n.isValidElement(e) ? n.cloneElement(e, { weight: "fill" }) : e
209
245
  }
210
246
  ),
211
247
  /* @__PURE__ */ r("span", { className: "min-w-0 flex-1 truncate group-data-[collapsed=true]/sidebar:hidden", children: s }),
212
- i && /* @__PURE__ */ r("span", { className: "shrink-0 group-data-[collapsed=true]/sidebar:hidden", children: i })
248
+ t && /* @__PURE__ */ r("span", { className: "shrink-0 group-data-[collapsed=true]/sidebar:hidden", children: t })
213
249
  ]
214
250
  }
215
251
  )
216
252
  );
217
- F.displayName = "SidebarItem";
218
- const W = o.forwardRef(
219
- ({ className: t, ...e }, a) => /* @__PURE__ */ r(
253
+ D.displayName = "SidebarItem";
254
+ const F = n.forwardRef(
255
+ ({ className: a, ...e }, i) => /* @__PURE__ */ r(
220
256
  "div",
221
257
  {
222
- ref: a,
223
- className: n("shrink-0 p-3 group-data-[collapsed=true]/sidebar:px-2", t),
258
+ ref: i,
259
+ className: o("shrink-0 p-3 group-data-[collapsed=true]/sidebar:px-2", a),
224
260
  ...e
225
261
  }
226
262
  )
227
263
  );
228
- W.displayName = "SidebarFooter";
229
- const $ = o.forwardRef(
230
- ({ className: t, icon: e, children: a, ...i }, s) => /* @__PURE__ */ r("div", { className: "px-3 pb-0.5 group-data-[collapsed=true]/sidebar:px-2", children: /* @__PURE__ */ c(
264
+ F.displayName = "SidebarFooter";
265
+ const U = n.forwardRef(
266
+ ({ className: a, icon: e, children: i, ...t }, s) => /* @__PURE__ */ r("div", { className: "px-3 pb-0.5 group-data-[collapsed=true]/sidebar:px-2", children: /* @__PURE__ */ c(
231
267
  "button",
232
268
  {
233
269
  ref: s,
234
270
  type: "button",
235
- className: n(
271
+ className: o(
236
272
  "flex h-9 w-full items-center justify-start gap-2 rounded-md px-3",
237
273
  "text-m leading-[var(--text-m--line-height)] font-normal text-sidebar-foreground",
238
274
  // Reads as a normal nav item: transparent at rest, the shared White
@@ -242,50 +278,50 @@ const $ = o.forwardRef(
242
278
  "outline-none focus-visible:ring-3 focus-visible:ring-ring",
243
279
  "[&_svg]:size-4 [&_svg]:shrink-0",
244
280
  "group-data-[collapsed=true]/sidebar:mx-auto group-data-[collapsed=true]/sidebar:size-(--sidebar-item) group-data-[collapsed=true]/sidebar:justify-center group-data-[collapsed=true]/sidebar:px-0",
245
- t
281
+ a
246
282
  ),
247
- ...i,
283
+ ...t,
248
284
  children: [
249
285
  e,
250
- /* @__PURE__ */ r("span", { className: "truncate group-data-[collapsed=true]/sidebar:hidden", children: a })
286
+ /* @__PURE__ */ r("span", { className: "truncate group-data-[collapsed=true]/sidebar:hidden", children: i })
251
287
  ]
252
288
  }
253
289
  ) })
254
290
  );
255
- $.displayName = "SidebarAction";
256
- const A = o.forwardRef(
257
- ({ className: t, label: e, children: a, ...i }, s) => /* @__PURE__ */ c(
291
+ U.displayName = "SidebarAction";
292
+ const V = n.forwardRef(
293
+ ({ className: a, label: e, children: i, ...t }, s) => /* @__PURE__ */ c(
258
294
  "div",
259
295
  {
260
296
  ref: s,
261
- className: n("group-data-[collapsed=true]/sidebar:hidden", t),
262
- ...i,
297
+ className: o("group-data-[collapsed=true]/sidebar:hidden", a),
298
+ ...t,
263
299
  children: [
264
- e && /* @__PURE__ */ r("div", { className: "mb-1.5 px-3 text-s leading-[var(--text-s--line-height)] font-medium text-on-warm-grey-secondary", children: e }),
265
- /* @__PURE__ */ r("div", { className: "flex flex-col gap-0.5", children: a })
300
+ e && /* @__PURE__ */ r("div", { className: "mb-1.5 px-3 text-s font-normal uppercase leading-4 tracking-wider text-tertiary", children: e }),
301
+ /* @__PURE__ */ r("div", { className: "flex flex-col gap-0.5", children: i })
266
302
  ]
267
303
  }
268
304
  )
269
305
  );
270
- A.displayName = "SidebarHistory";
271
- const O = o.forwardRef(({ className: t, children: e, title: a, action: i, isActive: s, icon: d, ...l }, m) => {
272
- const v = o.useRef(null), y = o.useRef(null), [g, u] = o.useState(0);
273
- o.useLayoutEffect(() => {
274
- const x = v.current, p = y.current;
275
- if (!x || !p) return;
276
- const f = () => {
277
- const w = p.scrollWidth - x.clientWidth;
278
- u(w > 0 ? w + (i ? 32 : 0) : 0);
306
+ V.displayName = "SidebarHistory";
307
+ const $ = n.forwardRef(({ className: a, children: e, title: i, action: t, isActive: s, icon: d, ...l }, b) => {
308
+ const g = n.useRef(null), y = n.useRef(null), [f, u] = n.useState(0);
309
+ n.useLayoutEffect(() => {
310
+ const v = g.current, p = y.current;
311
+ if (!v || !p) return;
312
+ const h = () => {
313
+ const w = p.scrollWidth - v.clientWidth;
314
+ u(w > 0 ? w + (t ? 32 : 0) : 0);
279
315
  };
280
- f();
281
- const N = new ResizeObserver(f);
282
- return N.observe(x), N.observe(p), () => N.disconnect();
283
- }, [e, i]);
284
- const b = g > 0, h = Math.max(500, Math.round(g * 18));
316
+ h();
317
+ const N = new ResizeObserver(h);
318
+ return N.observe(v), N.observe(p), () => N.disconnect();
319
+ }, [e, t]);
320
+ const m = f > 0, x = Math.max(500, Math.round(f * 18));
285
321
  return /* @__PURE__ */ c(
286
322
  "div",
287
323
  {
288
- className: n(
324
+ className: o(
289
325
  "group/hist relative flex items-center rounded-md transition-colors",
290
326
  "text-sidebar-foreground",
291
327
  s ? "bg-sidebar-accent text-sidebar-accent-foreground" : "hover:bg-sidebar-accent/60 hover:text-sidebar-accent-foreground"
@@ -302,40 +338,40 @@ const O = o.forwardRef(({ className: t, children: e, title: a, action: i, isActi
302
338
  /* @__PURE__ */ r(
303
339
  "a",
304
340
  {
305
- ref: m,
306
- title: a ?? (typeof e == "string" ? e : void 0),
307
- className: n(
341
+ ref: b,
342
+ title: i ?? (typeof e == "string" ? e : void 0),
343
+ className: o(
308
344
  // Left pad matches a SidebarItem's text column (px-3 + icon size-4 +
309
345
  // gap-2.5 = 2.375rem) so history titles line up under the nav labels.
310
346
  "block min-w-0 flex-1 rounded-md py-1.5 pr-3 ps-(--sidebar-text-indent) text-m leading-[var(--text-m--line-height)] font-normal",
311
347
  "outline-none focus-visible:ring-3 focus-visible:ring-ring",
312
- t
348
+ a
313
349
  ),
314
350
  ...l,
315
351
  children: /* @__PURE__ */ r(
316
352
  "span",
317
353
  {
318
- ref: v,
319
- className: n(
354
+ ref: g,
355
+ className: o(
320
356
  "block overflow-hidden",
321
357
  // Rest: fade the right edge (no ellipsis). Hover: the title scrolls,
322
358
  // so fade the LEFT edge where it exits; the action backdrop (or the
323
359
  // string's own end) handles the right.
324
- b && "[mask-image:linear-gradient(to_right,var(--color-wg12)_calc(100%-1.5rem),transparent)]",
325
- b && "group-hover/hist:[mask-image:linear-gradient(to_right,transparent,var(--color-wg12)_1.25rem,var(--color-wg12)_100%)]"
360
+ m && "[mask-image:linear-gradient(to_right,var(--color-wg12)_calc(100%-1.5rem),transparent)]",
361
+ m && "group-hover/hist:[mask-image:linear-gradient(to_right,transparent,var(--color-wg12)_1.25rem,var(--color-wg12)_100%)]"
326
362
  ),
327
363
  children: /* @__PURE__ */ r(
328
364
  "span",
329
365
  {
330
366
  ref: y,
331
- className: n(
367
+ className: o(
332
368
  "block w-max whitespace-nowrap transition-transform ease-linear",
333
- b && "group-hover/hist:[transform:translateX(var(--mq-x))]",
369
+ m && "group-hover/hist:[transform:translateX(var(--mq-x))]",
334
370
  "motion-reduce:transition-none motion-reduce:group-hover/hist:[transform:none]"
335
371
  ),
336
372
  style: {
337
- "--mq-x": `-${g}px`,
338
- transitionDuration: `${h}ms`
373
+ "--mq-x": `-${f}px`,
374
+ transitionDuration: `${x}ms`
339
375
  },
340
376
  children: e
341
377
  }
@@ -344,10 +380,10 @@ const O = o.forwardRef(({ className: t, children: e, title: a, action: i, isActi
344
380
  )
345
381
  }
346
382
  ),
347
- i && /* @__PURE__ */ r(
383
+ t && /* @__PURE__ */ r(
348
384
  "span",
349
385
  {
350
- className: n(
386
+ className: o(
351
387
  // Rounded end matches the row's radius so the backdrop doesn't
352
388
  // square off the highlight's right corners.
353
389
  "absolute inset-y-0 right-0 flex items-center rounded-e-md pl-8 pr-1",
@@ -357,30 +393,30 @@ const O = o.forwardRef(({ className: t, children: e, title: a, action: i, isActi
357
393
  "pointer-events-none group-hover/hist:pointer-events-auto",
358
394
  "focus-within:pointer-events-auto focus-within:opacity-100"
359
395
  ),
360
- children: i
396
+ children: t
361
397
  }
362
398
  )
363
399
  ]
364
400
  }
365
401
  );
366
402
  });
367
- O.displayName = "SidebarHistoryItem";
368
- const P = o.forwardRef(
369
- ({ className: t, name: e, role: a, src: i, hideAvatar: s, ...d }, l) => /* @__PURE__ */ c(
403
+ $.displayName = "SidebarHistoryItem";
404
+ const O = n.forwardRef(
405
+ ({ className: a, name: e, role: i, src: t, hideAvatar: s, ...d }, l) => /* @__PURE__ */ c(
370
406
  "a",
371
407
  {
372
408
  ref: l,
373
- className: n(
409
+ className: o(
374
410
  "flex items-center gap-2.5 rounded-md border border-transparent p-2 transition-colors hover:border-wg10",
375
411
  "outline-none focus-visible:ring-3 focus-visible:ring-ring",
376
412
  "group-data-[collapsed=true]/sidebar:mx-auto group-data-[collapsed=true]/sidebar:size-(--sidebar-item) group-data-[collapsed=true]/sidebar:justify-center group-data-[collapsed=true]/sidebar:p-0",
377
- t
413
+ a
378
414
  ),
379
415
  ...d,
380
416
  children: [
381
- !s && /* @__PURE__ */ r(L, { size: "sm", name: e, src: i }),
417
+ !s && /* @__PURE__ */ r(M, { size: "sm", name: e, src: t }),
382
418
  s && /* @__PURE__ */ r(
383
- j,
419
+ E,
384
420
  {
385
421
  "aria-hidden": !0,
386
422
  className: "hidden size-4 shrink-0 text-muted-foreground group-data-[collapsed=true]/sidebar:block"
@@ -388,25 +424,26 @@ const P = o.forwardRef(
388
424
  ),
389
425
  /* @__PURE__ */ c("div", { className: "min-w-0 leading-tight group-data-[collapsed=true]/sidebar:hidden", children: [
390
426
  /* @__PURE__ */ r("div", { className: "truncate text-base leading-[var(--text-base--line-height)] font-normal text-foreground", children: e }),
391
- a && /* @__PURE__ */ r("div", { className: "truncate text-s leading-[var(--text-s--line-height)] text-tertiary", children: a })
427
+ i && /* @__PURE__ */ r("div", { className: "truncate text-s leading-[var(--text-s--line-height)] text-tertiary", children: i })
392
428
  ] })
393
429
  ]
394
430
  }
395
431
  )
396
432
  );
397
- P.displayName = "SidebarAccount";
433
+ O.displayName = "SidebarAccount";
398
434
  export {
399
435
  K as Sidebar,
400
- P as SidebarAccount,
401
- $ as SidebarAction,
402
- Y as SidebarBrand,
403
- W as SidebarFooter,
436
+ O as SidebarAccount,
437
+ U as SidebarAction,
438
+ Z as SidebarBrand,
439
+ F as SidebarFooter,
404
440
  q as SidebarHeader,
405
- A as SidebarHistory,
406
- O as SidebarHistoryItem,
407
- F as SidebarItem,
408
- B as SidebarNav,
409
- D as SidebarSection,
441
+ V as SidebarHistory,
442
+ $ as SidebarHistoryItem,
443
+ D as SidebarItem,
444
+ A as SidebarNav,
445
+ B as SidebarSection,
410
446
  k as SidebarTrigger,
411
- M as useSidebar
447
+ R as SidebarWorkspace,
448
+ W as useSidebar
412
449
  };
@@ -1,8 +1,8 @@
1
1
  "use client";
2
2
  import { jsxs as b, jsx as l } from "react/jsx-runtime";
3
- import * as v from "react";
3
+ import * as m from "react";
4
4
  import { cn as s } from "../lib/cn.js";
5
- const m = v.forwardRef(
5
+ const v = m.forwardRef(
6
6
  ({ value: d, onChange: t, min: e = 0, max: r = 100, step: u = 1, disabled: a, className: n, ...c }, f) => {
7
7
  const i = Math.min(Math.max(d, e), r), o = r === e ? 0 : (i - e) / (r - e) * 100;
8
8
  return /* @__PURE__ */ b(
@@ -44,7 +44,7 @@ const m = v.forwardRef(
44
44
  {
45
45
  className: s(
46
46
  "pointer-events-none absolute size-4 -translate-x-1/2 rounded-full",
47
- "border border-background bg-brand shadow-elevation transition-shadow",
47
+ "border border-background bg-brand transition-shadow",
48
48
  "peer-focus-visible:ring-3 peer-focus-visible:ring-ring"
49
49
  ),
50
50
  style: { left: `${o}%` },
@@ -56,7 +56,7 @@ const m = v.forwardRef(
56
56
  );
57
57
  }
58
58
  );
59
- m.displayName = "Slider";
59
+ v.displayName = "Slider";
60
60
  export {
61
- m as Slider
61
+ v as Slider
62
62
  };
@@ -35,7 +35,7 @@ export interface StepperProps extends Omit<React.HTMLAttributes<HTMLOListElement
35
35
  activeIndex: number;
36
36
  /** Makes completed steps navigable. */
37
37
  onSelect?: (index: number) => void;
38
- /** Places each label below its marker or directly beside it. */
38
+ /** Places each label directly beside its marker (default) or below it. */
39
39
  labelPosition?: "below" | "inline";
40
40
  }
41
41
  export declare const Stepper: React.ForwardRefExoticComponent<StepperProps & React.RefAttributes<HTMLOListElement>>;
@@ -31,7 +31,7 @@ const b = y(
31
31
  activeIndex: n,
32
32
  size: i = "md",
33
33
  onSelect: o,
34
- labelPosition: h = "below",
34
+ labelPosition: h = "inline",
35
35
  ...u
36
36
  }, N) => /* @__PURE__ */ e(
37
37
  "ol",