@actioneer/ads 0.1.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.
Files changed (231) hide show
  1. package/LICENSE +21 -0
  2. package/bin/ads-init.mjs +314 -0
  3. package/components/accordion.d.ts +13 -0
  4. package/components/accordion.js +91 -0
  5. package/components/agents-ui/agent-audio-visualizer-aura.d.ts +11 -0
  6. package/components/agents-ui/agent-audio-visualizer-aura.js +277 -0
  7. package/components/agents-ui/agent-audio-visualizer-wave.d.ts +12 -0
  8. package/components/agents-ui/agent-audio-visualizer-wave.js +203 -0
  9. package/components/agents-ui/react-shader-toy.d.ts +87 -0
  10. package/components/agents-ui/react-shader-toy.js +531 -0
  11. package/components/ai-elements/chain-of-thought.d.ts +30 -0
  12. package/components/ai-elements/chain-of-thought.js +182 -0
  13. package/components/ai-elements/index.d.ts +11 -0
  14. package/components/ai-elements/inline-citation.d.ts +44 -0
  15. package/components/ai-elements/inline-citation.js +314 -0
  16. package/components/ai-elements/message.d.ts +96 -0
  17. package/components/ai-elements/message.js +308 -0
  18. package/components/ai-elements/queue.d.ts +60 -0
  19. package/components/ai-elements/queue.js +193 -0
  20. package/components/ai-elements/reasoning.d.ts +26 -0
  21. package/components/ai-elements/reasoning.js +131 -0
  22. package/components/ai-elements/shimmer.d.ts +25 -0
  23. package/components/ai-elements/shimmer.js +44 -0
  24. package/components/ai-elements/speech-input.d.ts +16 -0
  25. package/components/ai-elements/speech-input.js +151 -0
  26. package/components/ai-elements/task-progress.d.ts +41 -0
  27. package/components/ai-elements/task-progress.js +211 -0
  28. package/components/ai-elements/task.d.ts +35 -0
  29. package/components/ai-elements/task.js +73 -0
  30. package/components/ai-elements/tool.d.ts +53 -0
  31. package/components/ai-elements/tool.js +116 -0
  32. package/components/ai-elements/voice.d.ts +74 -0
  33. package/components/ai-elements/voice.js +875 -0
  34. package/components/alert.d.ts +21 -0
  35. package/components/alert.js +76 -0
  36. package/components/answer.d.ts +984 -0
  37. package/components/answer.js +543 -0
  38. package/components/assistant-ui/action-bar.d.ts +3 -0
  39. package/components/assistant-ui/action-bar.js +57 -0
  40. package/components/assistant-ui/answer-tool-ui.d.ts +5 -0
  41. package/components/assistant-ui/answer-tool-ui.js +42 -0
  42. package/components/assistant-ui/attachment.d.ts +50 -0
  43. package/components/assistant-ui/attachment.js +353 -0
  44. package/components/assistant-ui/badge.d.ts +11 -0
  45. package/components/assistant-ui/badge.js +54 -0
  46. package/components/assistant-ui/branch-picker.d.ts +3 -0
  47. package/components/assistant-ui/branch-picker.js +36 -0
  48. package/components/assistant-ui/chain-of-thought.d.ts +46 -0
  49. package/components/assistant-ui/composer-add-context.d.ts +50 -0
  50. package/components/assistant-ui/composer-add-context.js +209 -0
  51. package/components/assistant-ui/composer-deep-research.d.ts +16 -0
  52. package/components/assistant-ui/composer-deep-research.js +38 -0
  53. package/components/assistant-ui/composer-harness.d.ts +18 -0
  54. package/components/assistant-ui/composer-harness.js +186 -0
  55. package/components/assistant-ui/composer-trigger-popover.d.ts +47 -0
  56. package/components/assistant-ui/composer-trigger-popover.js +147 -0
  57. package/components/assistant-ui/composer.d.ts +8 -0
  58. package/components/assistant-ui/composer.js +276 -0
  59. package/components/assistant-ui/directive-text.d.ts +16 -0
  60. package/components/assistant-ui/directive-text.js +40 -0
  61. package/components/assistant-ui/error.d.ts +6 -0
  62. package/components/assistant-ui/error.js +39 -0
  63. package/components/assistant-ui/file.d.ts +37 -0
  64. package/components/assistant-ui/file.js +159 -0
  65. package/components/assistant-ui/follow-up-suggestions.d.ts +7 -0
  66. package/components/assistant-ui/follow-up-suggestions.js +44 -0
  67. package/components/assistant-ui/image.d.ts +46 -0
  68. package/components/assistant-ui/image.js +351 -0
  69. package/components/assistant-ui/index.d.ts +28 -0
  70. package/components/assistant-ui/markdown-text.d.ts +1 -0
  71. package/components/assistant-ui/markdown-text.js +242 -0
  72. package/components/assistant-ui/message-timing.d.ts +25 -0
  73. package/components/assistant-ui/message-timing.js +56 -0
  74. package/components/assistant-ui/message.d.ts +4 -0
  75. package/components/assistant-ui/message.js +159 -0
  76. package/components/assistant-ui/primitives.d.ts +2 -0
  77. package/components/assistant-ui/quote.d.ts +37 -0
  78. package/components/assistant-ui/quote.js +150 -0
  79. package/components/assistant-ui/reasoning.d.ts +44 -0
  80. package/components/assistant-ui/reasoning.js +261 -0
  81. package/components/assistant-ui/selection-toolbar.d.ts +29 -0
  82. package/components/assistant-ui/selection-toolbar.js +91 -0
  83. package/components/assistant-ui/smart-message-text.d.ts +15 -0
  84. package/components/assistant-ui/smart-message-text.js +29 -0
  85. package/components/assistant-ui/sources.d.ts +17 -0
  86. package/components/assistant-ui/sources.js +121 -0
  87. package/components/assistant-ui/suggestions.d.ts +7 -0
  88. package/components/assistant-ui/suggestions.js +19 -0
  89. package/components/assistant-ui/thread-context.d.ts +37 -0
  90. package/components/assistant-ui/thread-context.js +8 -0
  91. package/components/assistant-ui/thread.d.ts +5 -0
  92. package/components/assistant-ui/thread.js +77 -0
  93. package/components/assistant-ui/tool-fallback.d.ts +36 -0
  94. package/components/assistant-ui/tool-fallback.js +428 -0
  95. package/components/assistant-ui/tool-group.d.ts +33 -0
  96. package/components/assistant-ui/tool-group.js +173 -0
  97. package/components/assistant-ui/tooltip-icon-button.d.ts +7 -0
  98. package/components/assistant-ui/tooltip-icon-button.js +31 -0
  99. package/components/assistant-ui/voice.d.ts +18 -0
  100. package/components/autocomplete.d.ts +18 -0
  101. package/components/autocomplete.js +162 -0
  102. package/components/avatar.d.ts +26 -0
  103. package/components/avatar.js +92 -0
  104. package/components/badge.d.ts +10 -0
  105. package/components/badge.js +83 -0
  106. package/components/brand-loader.d.ts +16 -0
  107. package/components/brand-loader.js +64 -0
  108. package/components/breadcrumbs.d.ts +8 -0
  109. package/components/breadcrumbs.js +58 -0
  110. package/components/button.d.ts +13 -0
  111. package/components/button.js +100 -0
  112. package/components/card.d.ts +19 -0
  113. package/components/card.js +82 -0
  114. package/components/carousel.d.ts +31 -0
  115. package/components/carousel.js +351 -0
  116. package/components/chart.d.ts +165 -0
  117. package/components/chart.js +841 -0
  118. package/components/checkbox.d.ts +13 -0
  119. package/components/checkbox.js +84 -0
  120. package/components/chip.d.ts +13 -0
  121. package/components/chip.js +112 -0
  122. package/components/collapsible.d.ts +5 -0
  123. package/components/collapsible.js +31 -0
  124. package/components/connector-card.d.ts +62 -0
  125. package/components/connector-card.js +154 -0
  126. package/components/divider.d.ts +23 -0
  127. package/components/divider.js +69 -0
  128. package/components/drawer.d.ts +45 -0
  129. package/components/drawer.js +234 -0
  130. package/components/dropdown.d.ts +33 -0
  131. package/components/dropdown.js +198 -0
  132. package/components/empty-state.d.ts +8 -0
  133. package/components/empty-state.js +30 -0
  134. package/components/field.d.ts +20 -0
  135. package/components/field.js +74 -0
  136. package/components/index.d.ts +56 -0
  137. package/components/index.js +444 -0
  138. package/components/input-field.d.ts +22 -0
  139. package/components/input-field.js +91 -0
  140. package/components/input.d.ts +8 -0
  141. package/components/input.js +61 -0
  142. package/components/kbd.d.ts +6 -0
  143. package/components/kbd.js +26 -0
  144. package/components/link.d.ts +14 -0
  145. package/components/link.js +72 -0
  146. package/components/modal.d.ts +18 -0
  147. package/components/modal.js +156 -0
  148. package/components/navbar.d.ts +15 -0
  149. package/components/navbar.js +68 -0
  150. package/components/number-field.d.ts +11 -0
  151. package/components/number-field.js +89 -0
  152. package/components/pagination.d.ts +28 -0
  153. package/components/pagination.js +179 -0
  154. package/components/panel.d.ts +14 -0
  155. package/components/panel.js +71 -0
  156. package/components/pixel-blast-svg.d.ts +22 -0
  157. package/components/pixel-blast-svg.js +154 -0
  158. package/components/popover.d.ts +20 -0
  159. package/components/popover.js +101 -0
  160. package/components/progress-circle.d.ts +11 -0
  161. package/components/progress-circle.js +75 -0
  162. package/components/progress.d.ts +22 -0
  163. package/components/progress.js +66 -0
  164. package/components/radio.d.ts +16 -0
  165. package/components/radio.js +101 -0
  166. package/components/segmented.d.ts +16 -0
  167. package/components/segmented.js +103 -0
  168. package/components/select.d.ts +28 -0
  169. package/components/select.js +180 -0
  170. package/components/selection-action-bar.d.ts +11 -0
  171. package/components/selection-action-bar.js +59 -0
  172. package/components/sidebar.d.ts +118 -0
  173. package/components/sidebar.js +375 -0
  174. package/components/skeleton.d.ts +6 -0
  175. package/components/skeleton.js +26 -0
  176. package/components/slider.d.ts +11 -0
  177. package/components/slider.js +62 -0
  178. package/components/spinner.d.ts +11 -0
  179. package/components/spinner.js +62 -0
  180. package/components/switch.d.ts +7 -0
  181. package/components/switch.js +61 -0
  182. package/components/table.d.ts +59 -0
  183. package/components/table.js +254 -0
  184. package/components/tabs.d.ts +29 -0
  185. package/components/tabs.js +371 -0
  186. package/components/textarea.d.ts +5 -0
  187. package/components/textarea.js +24 -0
  188. package/components/timeline.d.ts +7 -0
  189. package/components/timeline.js +47 -0
  190. package/components/toast.d.ts +74 -0
  191. package/components/toast.js +211 -0
  192. package/components/tooltip.d.ts +11 -0
  193. package/components/tooltip.js +143 -0
  194. package/components/tree.d.ts +42 -0
  195. package/components/tree.js +86 -0
  196. package/components/typography.d.ts +33 -0
  197. package/components/typography.js +65 -0
  198. package/components/ui/avatar.d.ts +11 -0
  199. package/components/ui/avatar.js +56 -0
  200. package/components/ui/button.d.ts +10 -0
  201. package/components/ui/button.js +57 -0
  202. package/components/ui/collapsible.d.ts +5 -0
  203. package/components/ui/collapsible.js +35 -0
  204. package/components/ui/dialog.d.ts +17 -0
  205. package/components/ui/dialog.js +93 -0
  206. package/components/ui/tabs.d.ts +22 -0
  207. package/components/ui/tooltip.d.ts +7 -0
  208. package/components/ui/tooltip.js +56 -0
  209. package/fonts/aribau-grotesk-400.otf +0 -0
  210. package/fonts/aribau-grotesk-700.otf +0 -0
  211. package/fonts.css +21 -0
  212. package/hooks/agents-ui/use-agent-audio-visualizer-aura.d.ts +8 -0
  213. package/hooks/agents-ui/use-agent-audio-visualizer-aura.js +62 -0
  214. package/hooks/agents-ui/use-agent-audio-visualizer-wave.d.ts +7 -0
  215. package/hooks/agents-ui/use-agent-audio-visualizer-wave.js +60 -0
  216. package/hooks/agents-ui/voice-visualizer-types.d.ts +9 -0
  217. package/lib/cn.d.ts +3 -0
  218. package/lib/cn.js +9 -0
  219. package/lib/icons.d.ts +378 -0
  220. package/lib/icons.js +119 -0
  221. package/lib/interactive.d.ts +24 -0
  222. package/lib/interactive.js +36 -0
  223. package/lib/motion.d.ts +58 -0
  224. package/lib/motion.js +70 -0
  225. package/lib/router.d.ts +3 -0
  226. package/lib/utils.d.ts +6 -0
  227. package/llms.txt +537 -0
  228. package/manifest.json +5085 -0
  229. package/package.json +60 -0
  230. package/styles.css +653 -0
  231. package/theme.css +273 -0
@@ -0,0 +1,371 @@
1
+ "use client";
2
+ import { jsx as m, jsxs as M } from "react/jsx-runtime";
3
+ import * as t from "react";
4
+ import { MotionConfig as U, motion as E } from "motion/react";
5
+ import { cva as S } from "class-variance-authority";
6
+ import { cn as f } from "../lib/cn.js";
7
+ import { EASE_OUT as k } from "../lib/motion.js";
8
+ const V = t.createContext(null);
9
+ function I(o) {
10
+ const e = t.useContext(V);
11
+ if (!e)
12
+ throw new Error(`<${o}> must be used within <Tabs>`);
13
+ return e;
14
+ }
15
+ const O = t.forwardRef(
16
+ ({
17
+ className: o,
18
+ value: e,
19
+ defaultValue: a,
20
+ onValueChange: s,
21
+ variant: i = "primary",
22
+ orientation: d = "horizontal",
23
+ size: b = "md",
24
+ children: $,
25
+ ...j
26
+ }, w) => {
27
+ const x = e !== void 0, [z, R] = t.useState(a), c = t.useId(), v = t.useId(), y = t.useRef([]), h = t.useRef(/* @__PURE__ */ new Set()), N = x ? e : z, u = t.useCallback(
28
+ (r) => {
29
+ x || R(r), s == null || s(r);
30
+ },
31
+ [x, s]
32
+ ), T = t.useCallback((r) => {
33
+ y.current.includes(r) || y.current.push(r);
34
+ }, []), l = t.useMemo(
35
+ () => ({
36
+ value: N,
37
+ setValue: u,
38
+ baseId: c,
39
+ registerTab: T,
40
+ tabs: y,
41
+ disabled: h,
42
+ thumbId: v,
43
+ variant: i,
44
+ orientation: d,
45
+ size: b
46
+ }),
47
+ [
48
+ N,
49
+ u,
50
+ c,
51
+ T,
52
+ v,
53
+ i,
54
+ d,
55
+ b
56
+ ]
57
+ );
58
+ return /* @__PURE__ */ m(V.Provider, { value: l, children: /* @__PURE__ */ m(
59
+ "div",
60
+ {
61
+ ref: w,
62
+ "data-orientation": d,
63
+ "data-variant": i,
64
+ className: f(
65
+ "flex gap-4",
66
+ d === "horizontal" ? "flex-col" : "flex-row",
67
+ o
68
+ ),
69
+ ...j,
70
+ children: /* @__PURE__ */ m(U, { reducedMotion: "user", children: $ })
71
+ }
72
+ ) });
73
+ }
74
+ );
75
+ O.displayName = "Tabs";
76
+ const B = S("inline-flex", {
77
+ variants: {
78
+ variant: {
79
+ primary: "bg-muted p-1 rounded-lg gap-1",
80
+ secondary: "gap-0"
81
+ },
82
+ orientation: {
83
+ horizontal: "flex-row items-center",
84
+ vertical: "flex-col items-stretch"
85
+ },
86
+ size: {
87
+ sm: "text-xs",
88
+ md: "text-xs",
89
+ lg: "text-base"
90
+ }
91
+ },
92
+ compoundVariants: [
93
+ // Secondary variant uses a subtle rail (border) on the opposite edge of
94
+ // the active indicator. Kept intentionally hairline — surfaces avoid
95
+ // strokes, but a tab rail is a control edge, not a surface.
96
+ {
97
+ variant: "secondary",
98
+ orientation: "horizontal",
99
+ className: "border-b border-border"
100
+ },
101
+ {
102
+ variant: "secondary",
103
+ orientation: "vertical",
104
+ className: "border-r border-border"
105
+ }
106
+ ],
107
+ defaultVariants: {
108
+ variant: "primary",
109
+ orientation: "horizontal",
110
+ size: "md"
111
+ }
112
+ }), H = t.forwardRef(
113
+ ({ className: o, ...e }, a) => {
114
+ const { variant: s, orientation: i, size: d } = I("TabList");
115
+ return /* @__PURE__ */ m(
116
+ "div",
117
+ {
118
+ ref: a,
119
+ role: "tablist",
120
+ "aria-orientation": i,
121
+ "data-orientation": i,
122
+ "data-variant": s,
123
+ className: f(B({ variant: s, orientation: i, size: d }), o),
124
+ ...e
125
+ }
126
+ );
127
+ }
128
+ );
129
+ H.displayName = "TabList";
130
+ const _ = S(
131
+ f(
132
+ "relative inline-flex items-center whitespace-nowrap font-medium select-none",
133
+ "transition-colors duration-(--duration-fast) cursor-pointer",
134
+ "outline-none focus-visible:ring-3 focus-visible:ring-ring",
135
+ "disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed"
136
+ ),
137
+ {
138
+ variants: {
139
+ variant: {
140
+ primary: "justify-center rounded-md",
141
+ secondary: ""
142
+ },
143
+ orientation: {
144
+ horizontal: "",
145
+ vertical: ""
146
+ },
147
+ size: {
148
+ sm: "",
149
+ md: "",
150
+ lg: ""
151
+ },
152
+ selected: {
153
+ true: "text-foreground",
154
+ false: "text-muted-foreground hover:text-foreground"
155
+ }
156
+ },
157
+ compoundVariants: [
158
+ // Sizing — differs per variant (primary is filled, secondary is
159
+ // flush-underline).
160
+ { variant: "primary", size: "sm", className: "h-6 px-2.5" },
161
+ { variant: "primary", size: "md", className: "h-8 px-3" },
162
+ { variant: "primary", size: "lg", className: "h-9 px-4" },
163
+ // Secondary horizontal: -1px sits over the rail so the sliding
164
+ // indicator overlaps it cleanly.
165
+ {
166
+ variant: "secondary",
167
+ orientation: "horizontal",
168
+ size: "sm",
169
+ className: "px-2.5 pb-1.5 -mb-px justify-center"
170
+ },
171
+ {
172
+ variant: "secondary",
173
+ orientation: "horizontal",
174
+ size: "md",
175
+ className: "px-3 pb-2 -mb-px justify-center"
176
+ },
177
+ {
178
+ variant: "secondary",
179
+ orientation: "horizontal",
180
+ size: "lg",
181
+ className: "px-4 pb-2.5 -mb-px justify-center"
182
+ },
183
+ // Secondary vertical: left-aligned, sits over the right-side rail.
184
+ {
185
+ variant: "secondary",
186
+ orientation: "vertical",
187
+ size: "sm",
188
+ className: "px-2.5 py-1 pr-3 -mr-px justify-start"
189
+ },
190
+ {
191
+ variant: "secondary",
192
+ orientation: "vertical",
193
+ size: "md",
194
+ className: "px-3 py-1.5 pr-4 -mr-px justify-start"
195
+ },
196
+ {
197
+ variant: "secondary",
198
+ orientation: "vertical",
199
+ size: "lg",
200
+ className: "px-4 py-2 pr-5 -mr-px justify-start"
201
+ }
202
+ ],
203
+ defaultVariants: {
204
+ variant: "primary",
205
+ orientation: "horizontal",
206
+ size: "md",
207
+ selected: !1
208
+ }
209
+ }
210
+ ), q = t.forwardRef(
211
+ ({ className: o, value: e, isDisabled: a, children: s, onClick: i, onKeyDown: d, ...b }, $) => {
212
+ const {
213
+ value: j,
214
+ setValue: w,
215
+ baseId: x,
216
+ registerTab: z,
217
+ tabs: R,
218
+ disabled: c,
219
+ thumbId: v,
220
+ variant: y,
221
+ orientation: h,
222
+ size: N
223
+ } = I("Tab"), u = j === e;
224
+ t.useEffect(() => {
225
+ z(e);
226
+ }, [z, e]), t.useEffect(() => {
227
+ a ? c.current.add(e) : c.current.delete(e);
228
+ }, [c, a, e]);
229
+ const T = (l) => {
230
+ if (d == null || d(l), l.defaultPrevented) return;
231
+ const r = R.current, g = r.indexOf(e);
232
+ if (g === -1) return;
233
+ const L = h === "vertical" ? ["ArrowDown"] : ["ArrowRight", "ArrowDown"], P = h === "vertical" ? ["ArrowUp"] : ["ArrowLeft", "ArrowUp"];
234
+ let n = null;
235
+ if (L.includes(l.key)) {
236
+ n = g;
237
+ do
238
+ n = (n + 1) % r.length;
239
+ while (c.current.has(r[n]) && n !== g);
240
+ } else if (P.includes(l.key)) {
241
+ n = g;
242
+ do
243
+ n = (n - 1 + r.length) % r.length;
244
+ while (c.current.has(r[n]) && n !== g);
245
+ } else if (l.key === "Home")
246
+ n = r.findIndex((p) => !c.current.has(p));
247
+ else if (l.key === "End") {
248
+ for (let p = r.length - 1; p >= 0; p--)
249
+ if (!c.current.has(r[p])) {
250
+ n = p;
251
+ break;
252
+ }
253
+ }
254
+ if (n !== null && n !== -1) {
255
+ l.preventDefault();
256
+ const p = r[n];
257
+ w(p);
258
+ const A = document.getElementById(`${x}-tab-${p}`);
259
+ A == null || A.focus();
260
+ }
261
+ };
262
+ return /* @__PURE__ */ M(
263
+ "button",
264
+ {
265
+ ref: $,
266
+ type: "button",
267
+ role: "tab",
268
+ id: `${x}-tab-${e}`,
269
+ "aria-selected": u,
270
+ "aria-controls": `${x}-panel-${e}`,
271
+ "aria-disabled": a || void 0,
272
+ disabled: a,
273
+ "data-selected": u || void 0,
274
+ "data-disabled": a || void 0,
275
+ tabIndex: u && !a ? 0 : -1,
276
+ className: f(
277
+ _({ variant: y, orientation: h, size: N, selected: u }),
278
+ o
279
+ ),
280
+ onClick: (l) => {
281
+ i == null || i(l), a || w(e);
282
+ },
283
+ onKeyDown: T,
284
+ ...b,
285
+ children: [
286
+ u && y === "primary" && /* @__PURE__ */ m(
287
+ E.span,
288
+ {
289
+ layoutId: v,
290
+ "aria-hidden": !0,
291
+ transition: { duration: 0.2, ease: k },
292
+ className: "absolute inset-0 rounded-md bg-elevated shadow-elevation"
293
+ }
294
+ ),
295
+ u && y === "secondary" && /* @__PURE__ */ m(
296
+ E.span,
297
+ {
298
+ layoutId: v,
299
+ "aria-hidden": !0,
300
+ transition: { duration: 0.2, ease: k },
301
+ className: f(
302
+ "absolute bg-brand",
303
+ h === "horizontal" ? "left-0 right-0 bottom-0 h-0.5" : "top-0 bottom-0 right-0 w-0.5"
304
+ )
305
+ }
306
+ ),
307
+ /* @__PURE__ */ m("span", { className: "relative", children: s })
308
+ ]
309
+ }
310
+ );
311
+ }
312
+ );
313
+ q.displayName = "Tab";
314
+ const C = t.forwardRef(
315
+ ({ className: o, ...e }, a) => {
316
+ const { orientation: s, variant: i } = I("TabSeparator");
317
+ return i === "primary" ? /* @__PURE__ */ m(
318
+ "span",
319
+ {
320
+ ref: a,
321
+ "aria-hidden": !0,
322
+ role: "separator",
323
+ className: f("shrink-0", o),
324
+ ...e
325
+ }
326
+ ) : /* @__PURE__ */ m(
327
+ "span",
328
+ {
329
+ ref: a,
330
+ "aria-hidden": !0,
331
+ role: "separator",
332
+ className: f(
333
+ "shrink-0 bg-border",
334
+ s === "horizontal" ? "mx-1 h-4 w-px" : "my-1 h-px w-full",
335
+ o
336
+ ),
337
+ ...e
338
+ }
339
+ );
340
+ }
341
+ );
342
+ C.displayName = "TabSeparator";
343
+ const F = t.forwardRef(
344
+ ({ className: o, value: e, children: a, ...s }, i) => {
345
+ const { value: d, baseId: b } = I("TabPanel");
346
+ return d !== e ? null : /* @__PURE__ */ m(
347
+ "div",
348
+ {
349
+ ref: i,
350
+ role: "tabpanel",
351
+ id: `${b}-panel-${e}`,
352
+ "aria-labelledby": `${b}-tab-${e}`,
353
+ tabIndex: 0,
354
+ className: f(
355
+ "flex-1 outline-none focus-visible:ring-3 focus-visible:ring-ring rounded-sm",
356
+ o
357
+ ),
358
+ ...s,
359
+ children: a
360
+ }
361
+ );
362
+ }
363
+ );
364
+ F.displayName = "TabPanel";
365
+ export {
366
+ q as Tab,
367
+ H as TabList,
368
+ F as TabPanel,
369
+ C as TabSeparator,
370
+ O as Tabs
371
+ };
@@ -0,0 +1,5 @@
1
+ import * as React from "react";
2
+ export interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {
3
+ isInvalid?: boolean;
4
+ }
5
+ export declare const Textarea: React.ForwardRefExoticComponent<TextareaProps & React.RefAttributes<HTMLTextAreaElement>>;
@@ -0,0 +1,24 @@
1
+ "use client";
2
+ import { jsx as i } from "react/jsx-runtime";
3
+ import * as o from "react";
4
+ import { cn as s } from "../lib/cn.js";
5
+ import { inputBaseClass as m } from "./field.js";
6
+ const p = o.forwardRef(
7
+ ({ className: a, isInvalid: e, ...r }, t) => /* @__PURE__ */ i(
8
+ "textarea",
9
+ {
10
+ ref: t,
11
+ "aria-invalid": e || void 0,
12
+ className: s(
13
+ m,
14
+ "min-h-20 resize-y py-2 text-xs",
15
+ a
16
+ ),
17
+ ...r
18
+ }
19
+ )
20
+ );
21
+ p.displayName = "Textarea";
22
+ export {
23
+ p as Textarea
24
+ };
@@ -0,0 +1,7 @@
1
+ import * as React from "react";
2
+ export declare const Timeline: React.ForwardRefExoticComponent<React.OlHTMLAttributes<HTMLOListElement> & React.RefAttributes<HTMLOListElement>>;
3
+ export interface TimelineItemProps extends React.LiHTMLAttributes<HTMLLIElement> {
4
+ markerClassName?: string;
5
+ lineClassName?: string;
6
+ }
7
+ export declare const TimelineItem: React.ForwardRefExoticComponent<TimelineItemProps & React.RefAttributes<HTMLLIElement>>;
@@ -0,0 +1,47 @@
1
+ "use client";
2
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
+ import * as l from "react";
4
+ import { cn as e } from "../lib/cn.js";
5
+ const d = l.forwardRef(({ className: a, ...i }, s) => /* @__PURE__ */ t("ol", { ref: s, className: e("space-y-0", a), ...i }));
6
+ d.displayName = "Timeline";
7
+ const p = l.forwardRef(
8
+ ({ className: a, markerClassName: i, lineClassName: s, children: o, ...m }, r) => /* @__PURE__ */ n(
9
+ "li",
10
+ {
11
+ ref: r,
12
+ className: e(
13
+ "relative pb-4 pl-6 last:pb-0 last:[&_.ads-timeline-line]:hidden",
14
+ a
15
+ ),
16
+ ...m,
17
+ children: [
18
+ /* @__PURE__ */ t(
19
+ "span",
20
+ {
21
+ "aria-hidden": !0,
22
+ className: e(
23
+ "ads-timeline-line absolute bottom-0 left-1.5 top-5 w-px bg-border",
24
+ s
25
+ )
26
+ }
27
+ ),
28
+ /* @__PURE__ */ t(
29
+ "span",
30
+ {
31
+ "aria-hidden": !0,
32
+ className: e(
33
+ "absolute left-0.5 top-4 size-2 rounded-dot bg-muted-foreground",
34
+ i
35
+ )
36
+ }
37
+ ),
38
+ o
39
+ ]
40
+ }
41
+ )
42
+ );
43
+ p.displayName = "TimelineItem";
44
+ export {
45
+ d as Timeline,
46
+ p as TimelineItem
47
+ };
@@ -0,0 +1,74 @@
1
+ import { ButtonProps } from './button';
2
+ import * as React from "react";
3
+ /**
4
+ * Toast — ported from HeroUI v3 onto ADS tokens.
5
+ *
6
+ * Anatomy: a light floating card where the VARIANT tints only the indicator
7
+ * icon and the title; the description stays muted; the close button is a
8
+ * tiny corner chip revealed on hover. An optional action button sits on the
9
+ * trailing edge.
10
+ *
11
+ * Stacking (the HeroUI deck): toasts don't pile up as a list — the newest
12
+ * sits in front and older ones collapse BEHIND it, peeking out as slivers
13
+ * (offset + scaled down, clipped to the front card's height). Dismissing
14
+ * the front card promotes the next one with a spring.
15
+ *
16
+ * API (via `useToast()`): `toast(message, options?)` returns an id, plus
17
+ * `toast.success/info/warning/danger`, `toast.promise(p, {loading, success,
18
+ * error})`, `toast.close(id)` and `toast.clear()`. Options: `description`,
19
+ * `indicator` (custom icon), `actionProps` (trailing Button), `timeout`
20
+ * (0 = persistent), `onClose`, `isLoading`. The legacy object form
21
+ * `toast({ title, description, variant, duration })` still works.
22
+ */
23
+ export type ToastVariant = "default" | "success" | "info" | "warning" | "danger";
24
+ export interface ToastActionProps {
25
+ children: React.ReactNode;
26
+ onClick?: () => void;
27
+ variant?: ButtonProps["variant"];
28
+ className?: string;
29
+ }
30
+ export interface ToastOptions {
31
+ title?: React.ReactNode;
32
+ description?: React.ReactNode;
33
+ variant?: ToastVariant;
34
+ /** Custom indicator icon — replaces the variant's default. */
35
+ indicator?: React.ReactNode;
36
+ /** Trailing action button. */
37
+ actionProps?: ToastActionProps;
38
+ /** Auto-dismiss after N ms. 0 = persistent. Default 5000 (0 when loading). */
39
+ timeout?: number;
40
+ /** Legacy alias for `timeout`. */
41
+ duration?: number;
42
+ /** Fires when the toast closes — timeout, ✕, close(id) or clear(). */
43
+ onClose?: () => void;
44
+ /** Show a spinner in the indicator slot. */
45
+ isLoading?: boolean;
46
+ }
47
+ export interface ToastFn {
48
+ (message: React.ReactNode | (ToastOptions & {
49
+ title: React.ReactNode;
50
+ }), options?: ToastOptions): string;
51
+ success: (message: React.ReactNode, options?: ToastOptions) => string;
52
+ info: (message: React.ReactNode, options?: ToastOptions) => string;
53
+ warning: (message: React.ReactNode, options?: ToastOptions) => string;
54
+ danger: (message: React.ReactNode, options?: ToastOptions) => string;
55
+ promise: <T>(promise: Promise<T>, msgs: {
56
+ loading: React.ReactNode;
57
+ success: React.ReactNode | ((data: T) => React.ReactNode);
58
+ error: React.ReactNode | ((err: unknown) => React.ReactNode);
59
+ }) => Promise<T>;
60
+ close: (id: string) => void;
61
+ clear: () => void;
62
+ }
63
+ export declare function useToast(): {
64
+ toast: ToastFn;
65
+ };
66
+ export type ToastPlacement = "bottom-end" | "bottom" | "bottom-start" | "top-end" | "top" | "top-start";
67
+ export interface ToastProviderProps {
68
+ children: React.ReactNode;
69
+ /** Where the deck anchors. Default bottom-end. */
70
+ placement?: ToastPlacement;
71
+ /** Front card + how many peeking layers stay visible. Default 3. */
72
+ maxVisible?: number;
73
+ }
74
+ export declare function ToastProvider({ children, placement, maxVisible, }: ToastProviderProps): React.JSX.Element;