@agentaily/design-system 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 (294) hide show
  1. package/DESIGN.md +112 -0
  2. package/README.md +81 -0
  3. package/dist/assets/logo/agentaily-mark-black.svg +5 -0
  4. package/dist/assets/logo/agentaily-mark-white.svg +5 -0
  5. package/dist/components/ai/Attachments.d.ts +23 -0
  6. package/dist/components/ai/Attachments.js +96 -0
  7. package/dist/components/ai/Attachments.js.map +1 -0
  8. package/dist/components/ai/Checkpoint.d.ts +3 -0
  9. package/dist/components/ai/Checkpoint.js +38 -0
  10. package/dist/components/ai/Checkpoint.js.map +1 -0
  11. package/dist/components/ai/Confirmation.d.ts +3 -0
  12. package/dist/components/ai/Confirmation.js +54 -0
  13. package/dist/components/ai/Confirmation.js.map +1 -0
  14. package/dist/components/ai/Context.d.ts +3 -0
  15. package/dist/components/ai/Context.js +63 -0
  16. package/dist/components/ai/Context.js.map +1 -0
  17. package/dist/components/ai/Conversation.d.ts +3 -0
  18. package/dist/components/ai/Conversation.js +53 -0
  19. package/dist/components/ai/Conversation.js.map +1 -0
  20. package/dist/components/ai/ModelSelector.d.ts +19 -0
  21. package/dist/components/ai/ModelSelector.js +92 -0
  22. package/dist/components/ai/ModelSelector.js.map +1 -0
  23. package/dist/components/ai/Plan.d.ts +4 -0
  24. package/dist/components/ai/Plan.js +49 -0
  25. package/dist/components/ai/Plan.js.map +1 -0
  26. package/dist/components/ai/Queue.d.ts +4 -0
  27. package/dist/components/ai/Queue.js +45 -0
  28. package/dist/components/ai/Queue.js.map +1 -0
  29. package/dist/components/ai/Reasoning.d.ts +17 -0
  30. package/dist/components/ai/Reasoning.js +60 -0
  31. package/dist/components/ai/Reasoning.js.map +1 -0
  32. package/dist/components/ai/Shimmer.d.ts +10 -0
  33. package/dist/components/ai/Shimmer.js +28 -0
  34. package/dist/components/ai/Shimmer.js.map +1 -0
  35. package/dist/components/ai/Sources.d.ts +23 -0
  36. package/dist/components/ai/Sources.js +65 -0
  37. package/dist/components/ai/Sources.js.map +1 -0
  38. package/dist/components/ai/Suggestion.d.ts +19 -0
  39. package/dist/components/ai/Suggestion.js +40 -0
  40. package/dist/components/ai/Suggestion.js.map +1 -0
  41. package/dist/components/ai/Task.d.ts +4 -0
  42. package/dist/components/ai/Task.js +48 -0
  43. package/dist/components/ai/Task.js.map +1 -0
  44. package/dist/components/ai/ToolCall.d.ts +16 -0
  45. package/dist/components/ai/ToolCall.js +70 -0
  46. package/dist/components/ai/ToolCall.js.map +1 -0
  47. package/dist/components/buttons/Button.d.ts +17 -0
  48. package/dist/components/buttons/Button.js +60 -0
  49. package/dist/components/buttons/Button.js.map +1 -0
  50. package/dist/components/buttons/ButtonGroup.d.ts +3 -0
  51. package/dist/components/buttons/ButtonGroup.js +27 -0
  52. package/dist/components/buttons/ButtonGroup.js.map +1 -0
  53. package/dist/components/buttons/IconButton.d.ts +16 -0
  54. package/dist/components/buttons/IconButton.js +49 -0
  55. package/dist/components/buttons/IconButton.js.map +1 -0
  56. package/dist/components/chat/CodeBlock.d.ts +9 -0
  57. package/dist/components/chat/CodeBlock.js +62 -0
  58. package/dist/components/chat/CodeBlock.js.map +1 -0
  59. package/dist/components/chat/Composer.d.ts +17 -0
  60. package/dist/components/chat/Composer.js +123 -0
  61. package/dist/components/chat/Composer.js.map +1 -0
  62. package/dist/components/chat/Message.d.ts +16 -0
  63. package/dist/components/chat/Message.js +63 -0
  64. package/dist/components/chat/Message.js.map +1 -0
  65. package/dist/components/code/Agent.d.ts +3 -0
  66. package/dist/components/code/Agent.js +44 -0
  67. package/dist/components/code/Agent.js.map +1 -0
  68. package/dist/components/code/Artifact.d.ts +3 -0
  69. package/dist/components/code/Artifact.js +50 -0
  70. package/dist/components/code/Artifact.js.map +1 -0
  71. package/dist/components/code/Commit.d.ts +3 -0
  72. package/dist/components/code/Commit.js +55 -0
  73. package/dist/components/code/Commit.js.map +1 -0
  74. package/dist/components/code/EnvironmentVariables.d.ts +4 -0
  75. package/dist/components/code/EnvironmentVariables.js +49 -0
  76. package/dist/components/code/EnvironmentVariables.js.map +1 -0
  77. package/dist/components/code/FileTree.d.ts +4 -0
  78. package/dist/components/code/FileTree.js +59 -0
  79. package/dist/components/code/FileTree.js.map +1 -0
  80. package/dist/components/code/JSXPreview.d.ts +3 -0
  81. package/dist/components/code/JSXPreview.js +35 -0
  82. package/dist/components/code/JSXPreview.js.map +1 -0
  83. package/dist/components/code/PackageInfo.d.ts +3 -0
  84. package/dist/components/code/PackageInfo.js +47 -0
  85. package/dist/components/code/PackageInfo.js.map +1 -0
  86. package/dist/components/code/Sandbox.d.ts +3 -0
  87. package/dist/components/code/Sandbox.js +43 -0
  88. package/dist/components/code/Sandbox.js.map +1 -0
  89. package/dist/components/code/SchemaDisplay.d.ts +4 -0
  90. package/dist/components/code/SchemaDisplay.js +43 -0
  91. package/dist/components/code/SchemaDisplay.js.map +1 -0
  92. package/dist/components/code/Snippet.d.ts +3 -0
  93. package/dist/components/code/Snippet.js +36 -0
  94. package/dist/components/code/Snippet.js.map +1 -0
  95. package/dist/components/code/StackTrace.d.ts +4 -0
  96. package/dist/components/code/StackTrace.js +46 -0
  97. package/dist/components/code/StackTrace.js.map +1 -0
  98. package/dist/components/code/Terminal.d.ts +4 -0
  99. package/dist/components/code/Terminal.js +73 -0
  100. package/dist/components/code/Terminal.js.map +1 -0
  101. package/dist/components/code/TestResults.d.ts +4 -0
  102. package/dist/components/code/TestResults.js +61 -0
  103. package/dist/components/code/TestResults.js.map +1 -0
  104. package/dist/components/code/WebPreview.d.ts +3 -0
  105. package/dist/components/code/WebPreview.js +48 -0
  106. package/dist/components/code/WebPreview.js.map +1 -0
  107. package/dist/components/display/Accordion.d.ts +12 -0
  108. package/dist/components/display/Accordion.js +60 -0
  109. package/dist/components/display/Accordion.js.map +1 -0
  110. package/dist/components/display/Avatar.d.ts +14 -0
  111. package/dist/components/display/Avatar.js +41 -0
  112. package/dist/components/display/Avatar.js.map +1 -0
  113. package/dist/components/display/Badge.d.ts +11 -0
  114. package/dist/components/display/Badge.js +40 -0
  115. package/dist/components/display/Badge.js.map +1 -0
  116. package/dist/components/display/Breadcrumb.d.ts +11 -0
  117. package/dist/components/display/Breadcrumb.js +32 -0
  118. package/dist/components/display/Breadcrumb.js.map +1 -0
  119. package/dist/components/display/Card.d.ts +14 -0
  120. package/dist/components/display/Card.js +61 -0
  121. package/dist/components/display/Card.js.map +1 -0
  122. package/dist/components/display/Carousel.d.ts +3 -0
  123. package/dist/components/display/Carousel.js +40 -0
  124. package/dist/components/display/Carousel.js.map +1 -0
  125. package/dist/components/display/Chart.d.ts +7 -0
  126. package/dist/components/display/Chart.js +68 -0
  127. package/dist/components/display/Chart.js.map +1 -0
  128. package/dist/components/display/Collapsible.d.ts +3 -0
  129. package/dist/components/display/Collapsible.js +36 -0
  130. package/dist/components/display/Collapsible.js.map +1 -0
  131. package/dist/components/display/DataTable.d.ts +4 -0
  132. package/dist/components/display/DataTable.js +72 -0
  133. package/dist/components/display/DataTable.js.map +1 -0
  134. package/dist/components/display/Empty.d.ts +14 -0
  135. package/dist/components/display/Empty.js +36 -0
  136. package/dist/components/display/Empty.js.map +1 -0
  137. package/dist/components/display/Item.d.ts +3 -0
  138. package/dist/components/display/Item.js +36 -0
  139. package/dist/components/display/Item.js.map +1 -0
  140. package/dist/components/display/Kbd.d.ts +7 -0
  141. package/dist/components/display/Kbd.js +27 -0
  142. package/dist/components/display/Kbd.js.map +1 -0
  143. package/dist/components/display/Pagination.d.ts +11 -0
  144. package/dist/components/display/Pagination.js +55 -0
  145. package/dist/components/display/Pagination.js.map +1 -0
  146. package/dist/components/display/Progress.d.ts +14 -0
  147. package/dist/components/display/Progress.js +43 -0
  148. package/dist/components/display/Progress.js.map +1 -0
  149. package/dist/components/display/Separator.d.ts +10 -0
  150. package/dist/components/display/Separator.js +33 -0
  151. package/dist/components/display/Separator.js.map +1 -0
  152. package/dist/components/display/Skeleton.d.ts +12 -0
  153. package/dist/components/display/Skeleton.js +43 -0
  154. package/dist/components/display/Skeleton.js.map +1 -0
  155. package/dist/components/display/Table.d.ts +20 -0
  156. package/dist/components/display/Table.js +42 -0
  157. package/dist/components/display/Table.js.map +1 -0
  158. package/dist/components/display/Tabs.d.ts +11 -0
  159. package/dist/components/display/Tabs.js +47 -0
  160. package/dist/components/display/Tabs.js.map +1 -0
  161. package/dist/components/display/Typography.d.ts +5 -0
  162. package/dist/components/display/Typography.js +45 -0
  163. package/dist/components/display/Typography.js.map +1 -0
  164. package/dist/components/feedback/Alert.d.ts +12 -0
  165. package/dist/components/feedback/Alert.js +41 -0
  166. package/dist/components/feedback/Alert.js.map +1 -0
  167. package/dist/components/feedback/Dialog.d.ts +17 -0
  168. package/dist/components/feedback/Dialog.js +90 -0
  169. package/dist/components/feedback/Dialog.js.map +1 -0
  170. package/dist/components/feedback/Spinner.d.ts +8 -0
  171. package/dist/components/feedback/Spinner.js +39 -0
  172. package/dist/components/feedback/Spinner.js.map +1 -0
  173. package/dist/components/feedback/Toast.d.ts +12 -0
  174. package/dist/components/feedback/Toast.js +50 -0
  175. package/dist/components/feedback/Toast.js.map +1 -0
  176. package/dist/components/feedback/Tooltip.d.ts +11 -0
  177. package/dist/components/feedback/Tooltip.js +34 -0
  178. package/dist/components/feedback/Tooltip.js.map +1 -0
  179. package/dist/components/inputs/Calendar.d.ts +3 -0
  180. package/dist/components/inputs/Calendar.js +81 -0
  181. package/dist/components/inputs/Calendar.js.map +1 -0
  182. package/dist/components/inputs/Checkbox.d.ts +10 -0
  183. package/dist/components/inputs/Checkbox.js +42 -0
  184. package/dist/components/inputs/Checkbox.js.map +1 -0
  185. package/dist/components/inputs/Combobox.d.ts +3 -0
  186. package/dist/components/inputs/Combobox.js +94 -0
  187. package/dist/components/inputs/Combobox.js.map +1 -0
  188. package/dist/components/inputs/DatePicker.d.ts +3 -0
  189. package/dist/components/inputs/DatePicker.js +56 -0
  190. package/dist/components/inputs/DatePicker.js.map +1 -0
  191. package/dist/components/inputs/Field.d.ts +5 -0
  192. package/dist/components/inputs/Field.js +44 -0
  193. package/dist/components/inputs/Field.js.map +1 -0
  194. package/dist/components/inputs/Input.d.ts +19 -0
  195. package/dist/components/inputs/Input.js +72 -0
  196. package/dist/components/inputs/Input.js.map +1 -0
  197. package/dist/components/inputs/InputGroup.d.ts +3 -0
  198. package/dist/components/inputs/InputGroup.js +32 -0
  199. package/dist/components/inputs/InputGroup.js.map +1 -0
  200. package/dist/components/inputs/InputOTP.d.ts +3 -0
  201. package/dist/components/inputs/InputOTP.js +49 -0
  202. package/dist/components/inputs/InputOTP.js.map +1 -0
  203. package/dist/components/inputs/Label.d.ts +13 -0
  204. package/dist/components/inputs/Label.js +33 -0
  205. package/dist/components/inputs/Label.js.map +1 -0
  206. package/dist/components/inputs/RadioGroup.d.ts +15 -0
  207. package/dist/components/inputs/RadioGroup.js +58 -0
  208. package/dist/components/inputs/RadioGroup.js.map +1 -0
  209. package/dist/components/inputs/Select.d.ts +12 -0
  210. package/dist/components/inputs/Select.js +49 -0
  211. package/dist/components/inputs/Select.js.map +1 -0
  212. package/dist/components/inputs/Slider.d.ts +16 -0
  213. package/dist/components/inputs/Slider.js +62 -0
  214. package/dist/components/inputs/Slider.js.map +1 -0
  215. package/dist/components/inputs/Switch.d.ts +11 -0
  216. package/dist/components/inputs/Switch.js +39 -0
  217. package/dist/components/inputs/Switch.js.map +1 -0
  218. package/dist/components/inputs/Textarea.d.ts +13 -0
  219. package/dist/components/inputs/Textarea.js +41 -0
  220. package/dist/components/inputs/Textarea.js.map +1 -0
  221. package/dist/components/inputs/Toggle.d.ts +19 -0
  222. package/dist/components/inputs/Toggle.js +57 -0
  223. package/dist/components/inputs/Toggle.js.map +1 -0
  224. package/dist/components/layout/AspectRatio.d.ts +3 -0
  225. package/dist/components/layout/AspectRatio.js +20 -0
  226. package/dist/components/layout/AspectRatio.js.map +1 -0
  227. package/dist/components/layout/Resizable.d.ts +3 -0
  228. package/dist/components/layout/Resizable.js +58 -0
  229. package/dist/components/layout/Resizable.js.map +1 -0
  230. package/dist/components/layout/ScrollArea.d.ts +3 -0
  231. package/dist/components/layout/ScrollArea.js +24 -0
  232. package/dist/components/layout/ScrollArea.js.map +1 -0
  233. package/dist/components/layout/Sidebar.d.ts +5 -0
  234. package/dist/components/layout/Sidebar.js +55 -0
  235. package/dist/components/layout/Sidebar.js.map +1 -0
  236. package/dist/components/overlay/AlertDialog.d.ts +3 -0
  237. package/dist/components/overlay/AlertDialog.js +51 -0
  238. package/dist/components/overlay/AlertDialog.js.map +1 -0
  239. package/dist/components/overlay/Command.d.ts +22 -0
  240. package/dist/components/overlay/Command.js +123 -0
  241. package/dist/components/overlay/Command.js.map +1 -0
  242. package/dist/components/overlay/ContextMenu.d.ts +4 -0
  243. package/dist/components/overlay/ContextMenu.js +66 -0
  244. package/dist/components/overlay/ContextMenu.js.map +1 -0
  245. package/dist/components/overlay/DropdownMenu.d.ts +20 -0
  246. package/dist/components/overlay/DropdownMenu.js +86 -0
  247. package/dist/components/overlay/DropdownMenu.js.map +1 -0
  248. package/dist/components/overlay/HoverCard.d.ts +3 -0
  249. package/dist/components/overlay/HoverCard.js +53 -0
  250. package/dist/components/overlay/HoverCard.js.map +1 -0
  251. package/dist/components/overlay/Menubar.d.ts +4 -0
  252. package/dist/components/overlay/Menubar.js +55 -0
  253. package/dist/components/overlay/Menubar.js.map +1 -0
  254. package/dist/components/overlay/NavigationMenu.d.ts +5 -0
  255. package/dist/components/overlay/NavigationMenu.js +42 -0
  256. package/dist/components/overlay/NavigationMenu.js.map +1 -0
  257. package/dist/components/overlay/Popover.d.ts +16 -0
  258. package/dist/components/overlay/Popover.js +53 -0
  259. package/dist/components/overlay/Popover.js.map +1 -0
  260. package/dist/components/overlay/Sheet.d.ts +13 -0
  261. package/dist/components/overlay/Sheet.js +49 -0
  262. package/dist/components/overlay/Sheet.js.map +1 -0
  263. package/dist/components/utilities/Image.d.ts +3 -0
  264. package/dist/components/utilities/Image.js +32 -0
  265. package/dist/components/utilities/Image.js.map +1 -0
  266. package/dist/components/utilities/OpenInChat.d.ts +3 -0
  267. package/dist/components/utilities/OpenInChat.js +26 -0
  268. package/dist/components/utilities/OpenInChat.js.map +1 -0
  269. package/dist/components/voice/AudioPlayer.d.ts +3 -0
  270. package/dist/components/voice/AudioPlayer.js +42 -0
  271. package/dist/components/voice/AudioPlayer.js.map +1 -0
  272. package/dist/components/voice/MicSelector.d.ts +3 -0
  273. package/dist/components/voice/MicSelector.js +36 -0
  274. package/dist/components/voice/MicSelector.js.map +1 -0
  275. package/dist/components/voice/Persona.d.ts +3 -0
  276. package/dist/components/voice/Persona.js +41 -0
  277. package/dist/components/voice/Persona.js.map +1 -0
  278. package/dist/components/voice/SpeechInput.d.ts +3 -0
  279. package/dist/components/voice/SpeechInput.js +42 -0
  280. package/dist/components/voice/SpeechInput.js.map +1 -0
  281. package/dist/components/voice/Transcription.d.ts +4 -0
  282. package/dist/components/voice/Transcription.js +48 -0
  283. package/dist/components/voice/Transcription.js.map +1 -0
  284. package/dist/components/voice/VoiceSelector.d.ts +3 -0
  285. package/dist/components/voice/VoiceSelector.js +58 -0
  286. package/dist/components/voice/VoiceSelector.js.map +1 -0
  287. package/dist/components/workflow/Flow.d.ts +20 -0
  288. package/dist/components/workflow/Flow.js +96 -0
  289. package/dist/components/workflow/Flow.js.map +1 -0
  290. package/dist/index.d.ts +120 -0
  291. package/dist/index.js +208 -0
  292. package/dist/index.js.map +1 -0
  293. package/dist/styles.css +217 -0
  294. package/package.json +77 -0
@@ -0,0 +1,42 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import "react";
3
+ const AX_SPEECH_CSS = `
4
+ .ax-speech { display: inline-flex; align-items: center; gap: 14px; padding: 12px 18px; border: 1px solid var(--border-default); border-radius: var(--radius-full); background: var(--surface-card); }
5
+ .ax-speech__btn { width: 44px; height: 44px; flex: none; display: flex; align-items: center; justify-content: center; cursor: pointer; border: none; border-radius: var(--radius-full); transition: background var(--dur-1) var(--ease-out); }
6
+ .ax-speech__btn--idle { background: var(--accent); color: var(--accent-fg); }
7
+ .ax-speech__btn--idle:hover { background: var(--accent-hover); }
8
+ .ax-speech__btn--recording { background: var(--danger); color: #fff; }
9
+ .ax-speech__viz { display: flex; align-items: center; gap: 3px; height: 28px; min-width: 80px; }
10
+ .ax-speech__bar { width: 3px; border-radius: 1px; background: var(--border-strong); }
11
+ .ax-speech--recording .ax-speech__bar { background: var(--danger); animation: ax-speech-bounce 0.8s var(--ease-out) infinite; }
12
+ .ax-speech--recording .ax-speech__bar:nth-child(2n) { animation-delay: 0.15s; }
13
+ .ax-speech--recording .ax-speech__bar:nth-child(3n) { animation-delay: 0.3s; }
14
+ .ax-speech--recording .ax-speech__bar:nth-child(4n) { animation-delay: 0.45s; }
15
+ .ax-speech__status { font-family: var(--font-mono); font-size: var(--text-xs); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--text-faint); }
16
+ .ax-speech--recording .ax-speech__status { color: var(--danger); }
17
+ .ax-speech__time { font-family: var(--font-mono); font-size: var(--text-sm); color: var(--text-muted); }
18
+ @keyframes ax-speech-bounce { 0%, 100% { height: 6px; } 50% { height: 24px; } }
19
+ @media (prefers-reduced-motion: reduce) { .ax-speech--recording .ax-speech__bar { animation: none; height: 14px; } }
20
+ `;
21
+ if (typeof document !== "undefined" && !document.getElementById("ax-speech-css")) {
22
+ const s = document.createElement("style");
23
+ s.id = "ax-speech-css";
24
+ s.textContent = AX_SPEECH_CSS;
25
+ document.head.appendChild(s);
26
+ }
27
+ const Mic = /* @__PURE__ */ jsxs("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
28
+ /* @__PURE__ */ jsx("rect", { x: "9", y: "2", width: "6", height: "12", rx: "3" }),
29
+ /* @__PURE__ */ jsx("path", { d: "M5 10a7 7 0 0 0 14 0M12 17v4" })
30
+ ] });
31
+ const Stop = /* @__PURE__ */ jsx("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsx("rect", { x: "6", y: "6", width: "12", height: "12", rx: "2" }) });
32
+ function SpeechInput({ recording = false, time = "0:00", onToggle, className = "", ...rest }) {
33
+ return /* @__PURE__ */ jsxs("div", { className: ["ax-speech", recording ? "ax-speech--recording" : "", className].filter(Boolean).join(" "), ...rest, children: [
34
+ /* @__PURE__ */ jsx("button", { className: "ax-speech__btn ax-speech__btn--" + (recording ? "recording" : "idle"), onClick: onToggle, "aria-label": recording ? "Stop" : "Record", children: recording ? Stop : Mic }),
35
+ /* @__PURE__ */ jsx("div", { className: "ax-speech__viz", children: Array.from({ length: 16 }).map((_, i) => /* @__PURE__ */ jsx("span", { className: "ax-speech__bar", style: { height: recording ? void 0 : 6 + i % 4 * 4 } }, i)) }),
36
+ recording ? /* @__PURE__ */ jsx("span", { className: "ax-speech__time", children: time }) : /* @__PURE__ */ jsx("span", { className: "ax-speech__status", children: "Tap to speak" })
37
+ ] });
38
+ }
39
+ export {
40
+ SpeechInput
41
+ };
42
+ //# sourceMappingURL=SpeechInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpeechInput.js","sources":["../../../src/components/voice/SpeechInput.jsx"],"sourcesContent":["import React from \"react\";\n\nconst AX_SPEECH_CSS = `\n.ax-speech { display: inline-flex; align-items: center; gap: 14px; padding: 12px 18px; border: 1px solid var(--border-default); border-radius: var(--radius-full); background: var(--surface-card); }\n.ax-speech__btn { width: 44px; height: 44px; flex: none; display: flex; align-items: center; justify-content: center; cursor: pointer; border: none; border-radius: var(--radius-full); transition: background var(--dur-1) var(--ease-out); }\n.ax-speech__btn--idle { background: var(--accent); color: var(--accent-fg); }\n.ax-speech__btn--idle:hover { background: var(--accent-hover); }\n.ax-speech__btn--recording { background: var(--danger); color: #fff; }\n.ax-speech__viz { display: flex; align-items: center; gap: 3px; height: 28px; min-width: 80px; }\n.ax-speech__bar { width: 3px; border-radius: 1px; background: var(--border-strong); }\n.ax-speech--recording .ax-speech__bar { background: var(--danger); animation: ax-speech-bounce 0.8s var(--ease-out) infinite; }\n.ax-speech--recording .ax-speech__bar:nth-child(2n) { animation-delay: 0.15s; }\n.ax-speech--recording .ax-speech__bar:nth-child(3n) { animation-delay: 0.3s; }\n.ax-speech--recording .ax-speech__bar:nth-child(4n) { animation-delay: 0.45s; }\n.ax-speech__status { font-family: var(--font-mono); font-size: var(--text-xs); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--text-faint); }\n.ax-speech--recording .ax-speech__status { color: var(--danger); }\n.ax-speech__time { font-family: var(--font-mono); font-size: var(--text-sm); color: var(--text-muted); }\n@keyframes ax-speech-bounce { 0%, 100% { height: 6px; } 50% { height: 24px; } }\n@media (prefers-reduced-motion: reduce) { .ax-speech--recording .ax-speech__bar { animation: none; height: 14px; } }\n`;\n\nif (typeof document !== \"undefined\" && !document.getElementById(\"ax-speech-css\")) {\n const s = document.createElement(\"style\");\n s.id = \"ax-speech-css\";\n s.textContent = AX_SPEECH_CSS;\n document.head.appendChild(s);\n}\n\nconst Mic = <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"><rect x=\"9\" y=\"2\" width=\"6\" height=\"12\" rx=\"3\"></rect><path d=\"M5 10a7 7 0 0 0 14 0M12 17v4\"></path></svg>;\nconst Stop = <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><rect x=\"6\" y=\"6\" width=\"12\" height=\"12\" rx=\"2\"></rect></svg>;\n\nexport function SpeechInput({ recording = false, time = \"0:00\", onToggle, className = \"\", ...rest }) {\n return (\n <div className={[\"ax-speech\", recording ? \"ax-speech--recording\" : \"\", className].filter(Boolean).join(\" \")} {...rest}>\n <button className={\"ax-speech__btn ax-speech__btn--\" + (recording ? \"recording\" : \"idle\")} onClick={onToggle} aria-label={recording ? \"Stop\" : \"Record\"}>\n {recording ? Stop : Mic}\n </button>\n <div className=\"ax-speech__viz\">\n {Array.from({ length: 16 }).map((_, i) => <span key={i} className=\"ax-speech__bar\" style={{ height: recording ? undefined : (6 + (i % 4) * 4) }}></span>)}\n </div>\n {recording ? <span className=\"ax-speech__time\">{time}</span> : <span className=\"ax-speech__status\">Tap to speak</span>}\n </div>\n );\n}\n"],"names":[],"mappings":";;AAEA,MAAM,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBtB,IAAI,OAAO,aAAa,eAAe,CAAC,SAAS,eAAe,eAAe,GAAG;AAChF,QAAM,IAAI,SAAS,cAAc,OAAO;AACxC,IAAE,KAAK;AACP,IAAE,cAAc;AAChB,WAAS,KAAK,YAAY,CAAC;AAC7B;AAEA,MAAM,MAAM,qBAAC,OAAA,EAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,QAAO,QAAO,gBAAe,aAAY,KAAI,eAAc,SAAQ,gBAAe,SAAQ,UAAA;AAAA,EAAA,oBAAC,QAAA,EAAK,GAAE,KAAI,GAAE,KAAI,OAAM,KAAI,QAAO,MAAK,IAAG,IAAA,CAAI;AAAA,EAAO,oBAAC,QAAA,EAAK,GAAE,+BAAA,CAA+B;AAAA,GAAO;AAC/P,MAAM,2BAAQ,OAAA,EAAI,OAAM,MAAK,QAAO,MAAK,SAAQ,aAAY,MAAK,gBAAe,8BAAC,QAAA,EAAK,GAAE,KAAI,GAAE,KAAI,OAAM,MAAK,QAAO,MAAK,IAAG,IAAA,CAAI,EAAA,CAAO;AAEjI,SAAS,YAAY,EAAE,YAAY,OAAO,OAAO,QAAQ,UAAU,YAAY,IAAI,GAAG,QAAQ;AACnG,8BACG,OAAA,EAAI,WAAW,CAAC,aAAa,YAAY,yBAAyB,IAAI,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAAI,GAAG,MAC/G,UAAA;AAAA,IAAA,oBAAC,UAAA,EAAO,WAAW,qCAAqC,YAAY,cAAc,SAAS,SAAS,UAAU,cAAY,YAAY,SAAS,UAC5I,UAAA,YAAY,OAAO,KACtB;AAAA,IACA,oBAAC,OAAA,EAAI,WAAU,kBACZ,UAAA,MAAM,KAAK,EAAE,QAAQ,GAAA,CAAI,EAAE,IAAI,CAAC,GAAG,MAAM,oBAAC,QAAA,EAAa,WAAU,kBAAiB,OAAO,EAAE,QAAQ,YAAY,SAAa,IAAK,IAAI,IAAK,EAAA,EAAG,GAAzF,CAA4F,CAAO,GAC1J;AAAA,IACC,YAAY,oBAAC,QAAA,EAAK,WAAU,mBAAmB,UAAA,KAAA,CAAK,IAAU,oBAAC,QAAA,EAAK,WAAU,qBAAoB,UAAA,eAAA,CAAY;AAAA,EAAA,GACjH;AAEJ;"}
@@ -0,0 +1,4 @@
1
+ /** Live or final speech transcript; supports speaker labels and an interim (greyed) tail. */
2
+ export interface TranscriptSegment { text: string; speaker?: string; }
3
+ export interface TranscriptionProps { live?: boolean; segments?: Array<string | TranscriptSegment>; text?: string; interim?: string; }
4
+ export declare function Transcription(props: TranscriptionProps): JSX.Element;
@@ -0,0 +1,48 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import "react";
3
+ const AX_TRANSCRIPTION_CSS = `
4
+ .ax-transcription { border: 1px solid var(--border-default); border-radius: var(--radius-3); background: var(--surface-card); padding: 14px 16px; }
5
+ .ax-transcription__head { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
6
+ .ax-transcription__live { display: inline-flex; align-items: center; gap: 6px; font-family: var(--font-mono); font-size: 10px; letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--danger); }
7
+ .ax-transcription__livedot { width: 7px; height: 7px; border-radius: 1px; background: var(--danger); animation: ax-trans-pulse 1s var(--ease-out) infinite; }
8
+ .ax-transcription__text { font-size: var(--text-md); line-height: var(--leading-body); color: var(--text-body); }
9
+ .ax-transcription__seg { color: var(--text-body); }
10
+ .ax-transcription__interim { color: var(--text-faint); }
11
+ .ax-transcription__cursor { display: inline-block; width: 0.5em; height: 1em; background: var(--text-body); vertical-align: text-bottom; margin-left: 2px; animation: ax-trans-blink 1.1s steps(1) infinite; }
12
+ .ax-transcription__speaker { font-family: var(--font-mono); font-size: var(--text-xs); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--text-faint); margin-right: 8px; }
13
+ @keyframes ax-trans-pulse { 50% { opacity: 0.3; } }
14
+ @keyframes ax-trans-blink { 50% { opacity: 0; } }
15
+ @media (prefers-reduced-motion: reduce) { .ax-transcription__livedot, .ax-transcription__cursor { animation: none; } }
16
+ `;
17
+ if (typeof document !== "undefined" && !document.getElementById("ax-transcription-css")) {
18
+ const s = document.createElement("style");
19
+ s.id = "ax-transcription-css";
20
+ s.textContent = AX_TRANSCRIPTION_CSS;
21
+ document.head.appendChild(s);
22
+ }
23
+ function Transcription({ live = false, segments = [], text, interim, className = "", ...rest }) {
24
+ return /* @__PURE__ */ jsxs("div", { className: ["ax-transcription", className].filter(Boolean).join(" "), ...rest, children: [
25
+ live ? /* @__PURE__ */ jsx("div", { className: "ax-transcription__head", children: /* @__PURE__ */ jsxs("span", { className: "ax-transcription__live", children: [
26
+ /* @__PURE__ */ jsx("span", { className: "ax-transcription__livedot" }),
27
+ "Transcribing"
28
+ ] }) }) : null,
29
+ /* @__PURE__ */ jsxs("div", { className: "ax-transcription__text", children: [
30
+ segments.length ? segments.map((seg, i) => {
31
+ const s = typeof seg === "string" ? { text: seg } : seg;
32
+ return /* @__PURE__ */ jsxs("span", { children: [
33
+ s.speaker ? /* @__PURE__ */ jsx("span", { className: "ax-transcription__speaker", children: s.speaker }) : null,
34
+ /* @__PURE__ */ jsxs("span", { className: "ax-transcription__seg", children: [
35
+ s.text,
36
+ " "
37
+ ] })
38
+ ] }, i);
39
+ }) : /* @__PURE__ */ jsx("span", { className: "ax-transcription__seg", children: text }),
40
+ interim ? /* @__PURE__ */ jsx("span", { className: "ax-transcription__interim", children: interim }) : null,
41
+ live ? /* @__PURE__ */ jsx("span", { className: "ax-transcription__cursor" }) : null
42
+ ] })
43
+ ] });
44
+ }
45
+ export {
46
+ Transcription
47
+ };
48
+ //# sourceMappingURL=Transcription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Transcription.js","sources":["../../../src/components/voice/Transcription.jsx"],"sourcesContent":["import React from \"react\";\n\nconst AX_TRANSCRIPTION_CSS = `\n.ax-transcription { border: 1px solid var(--border-default); border-radius: var(--radius-3); background: var(--surface-card); padding: 14px 16px; }\n.ax-transcription__head { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }\n.ax-transcription__live { display: inline-flex; align-items: center; gap: 6px; font-family: var(--font-mono); font-size: 10px; letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--danger); }\n.ax-transcription__livedot { width: 7px; height: 7px; border-radius: 1px; background: var(--danger); animation: ax-trans-pulse 1s var(--ease-out) infinite; }\n.ax-transcription__text { font-size: var(--text-md); line-height: var(--leading-body); color: var(--text-body); }\n.ax-transcription__seg { color: var(--text-body); }\n.ax-transcription__interim { color: var(--text-faint); }\n.ax-transcription__cursor { display: inline-block; width: 0.5em; height: 1em; background: var(--text-body); vertical-align: text-bottom; margin-left: 2px; animation: ax-trans-blink 1.1s steps(1) infinite; }\n.ax-transcription__speaker { font-family: var(--font-mono); font-size: var(--text-xs); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--text-faint); margin-right: 8px; }\n@keyframes ax-trans-pulse { 50% { opacity: 0.3; } }\n@keyframes ax-trans-blink { 50% { opacity: 0; } }\n@media (prefers-reduced-motion: reduce) { .ax-transcription__livedot, .ax-transcription__cursor { animation: none; } }\n`;\n\nif (typeof document !== \"undefined\" && !document.getElementById(\"ax-transcription-css\")) {\n const s = document.createElement(\"style\");\n s.id = \"ax-transcription-css\";\n s.textContent = AX_TRANSCRIPTION_CSS;\n document.head.appendChild(s);\n}\n\nexport function Transcription({ live = false, segments = [], text, interim, className = \"\", ...rest }) {\n return (\n <div className={[\"ax-transcription\", className].filter(Boolean).join(\" \")} {...rest}>\n {live ? (\n <div className=\"ax-transcription__head\">\n <span className=\"ax-transcription__live\"><span className=\"ax-transcription__livedot\"></span>Transcribing</span>\n </div>\n ) : null}\n <div className=\"ax-transcription__text\">\n {segments.length ? segments.map((seg, i) => {\n const s = typeof seg === \"string\" ? { text: seg } : seg;\n return (\n <span key={i}>\n {s.speaker ? <span className=\"ax-transcription__speaker\">{s.speaker}</span> : null}\n <span className=\"ax-transcription__seg\">{s.text} </span>\n </span>\n );\n }) : <span className=\"ax-transcription__seg\">{text}</span>}\n {interim ? <span className=\"ax-transcription__interim\">{interim}</span> : null}\n {live ? <span className=\"ax-transcription__cursor\"></span> : null}\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":";;AAEA,MAAM,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAe7B,IAAI,OAAO,aAAa,eAAe,CAAC,SAAS,eAAe,sBAAsB,GAAG;AACvF,QAAM,IAAI,SAAS,cAAc,OAAO;AACxC,IAAE,KAAK;AACP,IAAE,cAAc;AAChB,WAAS,KAAK,YAAY,CAAC;AAC7B;AAEO,SAAS,cAAc,EAAE,OAAO,OAAO,WAAW,CAAA,GAAI,MAAM,SAAS,YAAY,IAAI,GAAG,QAAQ;AACrG,SACE,qBAAC,OAAA,EAAI,WAAW,CAAC,oBAAoB,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAAI,GAAG,MAC5E,UAAA;AAAA,IAAA,2BACE,OAAA,EAAI,WAAU,0BACb,UAAA,qBAAC,QAAA,EAAK,WAAU,0BAAyB,UAAA;AAAA,MAAA,oBAAC,QAAA,EAAK,WAAU,4BAAA,CAA4B;AAAA,MAAO;AAAA,IAAA,EAAA,CAAY,GAC1G,IACE;AAAA,IACJ,qBAAC,OAAA,EAAI,WAAU,0BACZ,UAAA;AAAA,MAAA,SAAS,SAAS,SAAS,IAAI,CAAC,KAAK,MAAM;AAC1C,cAAM,IAAI,OAAO,QAAQ,WAAW,EAAE,MAAM,QAAQ;AACpD,oCACG,QAAA,EACE,UAAA;AAAA,UAAA,EAAE,UAAU,oBAAC,QAAA,EAAK,WAAU,6BAA6B,UAAA,EAAE,SAAQ,IAAU;AAAA,UAC9E,qBAAC,QAAA,EAAK,WAAU,yBAAyB,UAAA;AAAA,YAAA,EAAE;AAAA,YAAK;AAAA,UAAA,EAAA,CAAC;AAAA,QAAA,EAAA,GAFxC,CAGX;AAAA,MAEJ,CAAC,IAAI,oBAAC,QAAA,EAAK,WAAU,yBAAyB,UAAA,MAAK;AAAA,MAClD,UAAU,oBAAC,QAAA,EAAK,WAAU,6BAA6B,mBAAQ,IAAU;AAAA,MACzE,OAAO,oBAAC,QAAA,EAAK,WAAU,4BAA2B,IAAU;AAAA,IAAA,EAAA,CAC/D;AAAA,EAAA,GACF;AAEJ;"}
@@ -0,0 +1,3 @@
1
+ /** TTS voice picker dropdown with swatch initials and preview affordance. */
2
+ export interface VoiceSelectorProps { voices: Array<string | { value: string; label: string; tag?: string }>; value?: string; onChange?: (value: string) => void; }
3
+ export declare function VoiceSelector(props: VoiceSelectorProps): JSX.Element;
@@ -0,0 +1,58 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useState, useRef, useCallback, useEffect } from "react";
3
+ const AX_VOICESEL_CSS = `
4
+ .ax-voicesel { position: relative; display: inline-flex; }
5
+ .ax-voicesel__trigger { display: inline-flex; align-items: center; gap: 10px; height: 36px; padding: 0 12px; cursor: pointer; background: var(--surface-card); border: 1px solid var(--border-default); border-radius: var(--radius-2); color: var(--text-body); font-family: var(--font-body); font-size: var(--text-sm); transition: border-color var(--dur-1) var(--ease-out); }
6
+ .ax-voicesel__trigger:hover { border-color: var(--border-strong); }
7
+ .ax-voicesel__swatch { width: 18px; height: 18px; flex: none; border-radius: var(--radius-1); display: flex; align-items: center; justify-content: center; font-family: var(--font-mono); font-size: 10px; background: var(--accent); color: var(--accent-fg); }
8
+ .ax-voicesel__panel { position: absolute; z-index: 60; top: calc(100% + 6px); left: 0; min-width: 240px; background: var(--surface-panel); border: 1px solid var(--border-strong); border-radius: var(--radius-3); box-shadow: var(--shadow-2); padding: var(--space-1); }
9
+ .ax-voicesel__opt { display: flex; align-items: center; gap: 10px; width: 100%; appearance: none; background: none; border: none; text-align: left; cursor: pointer; padding: 8px 10px; border-radius: var(--radius-2); }
10
+ .ax-voicesel__opt:hover { background: var(--surface-raised); }
11
+ .ax-voicesel__name { font-size: var(--text-sm); color: var(--text-body); flex: 1; }
12
+ .ax-voicesel__tag { font-family: var(--font-mono); font-size: 10px; color: var(--text-faint); }
13
+ .ax-voicesel__play { color: var(--text-faint); cursor: pointer; }
14
+ .ax-voicesel__play:hover { color: var(--text-body); }
15
+ `;
16
+ if (typeof document !== "undefined" && !document.getElementById("ax-voicesel-css")) {
17
+ const s = document.createElement("style");
18
+ s.id = "ax-voicesel-css";
19
+ s.textContent = AX_VOICESEL_CSS;
20
+ document.head.appendChild(s);
21
+ }
22
+ function VoiceSelector({ voices = [], value, onChange, className = "", ...rest }) {
23
+ const [open, setOpen] = useState(false);
24
+ const ref = useRef(null);
25
+ const norm = (v) => typeof v === "string" ? { value: v, label: v } : v;
26
+ const current = voices.map(norm).find((v) => v.value === value) || norm(voices[0] || "Voice");
27
+ const onDoc = useCallback((e) => {
28
+ if (ref.current && !ref.current.contains(e.target)) setOpen(false);
29
+ }, []);
30
+ useEffect(() => {
31
+ if (open) {
32
+ document.addEventListener("mousedown", onDoc);
33
+ return () => document.removeEventListener("mousedown", onDoc);
34
+ }
35
+ }, [open, onDoc]);
36
+ return /* @__PURE__ */ jsxs("div", { className: ["ax-voicesel", className].filter(Boolean).join(" "), ref, ...rest, children: [
37
+ /* @__PURE__ */ jsxs("button", { className: "ax-voicesel__trigger", onClick: () => setOpen((o) => !o), children: [
38
+ /* @__PURE__ */ jsx("span", { className: "ax-voicesel__swatch", children: (current.label || "V")[0] }),
39
+ current.label
40
+ ] }),
41
+ open ? /* @__PURE__ */ jsx("div", { className: "ax-voicesel__panel", children: voices.map((v) => {
42
+ const voice = norm(v);
43
+ return /* @__PURE__ */ jsxs("button", { className: "ax-voicesel__opt", onClick: () => {
44
+ onChange && onChange(voice.value);
45
+ setOpen(false);
46
+ }, children: [
47
+ /* @__PURE__ */ jsx("span", { className: "ax-voicesel__swatch", children: (voice.label || "V")[0] }),
48
+ /* @__PURE__ */ jsx("span", { className: "ax-voicesel__name", children: voice.label }),
49
+ voice.tag ? /* @__PURE__ */ jsx("span", { className: "ax-voicesel__tag", children: voice.tag }) : null,
50
+ /* @__PURE__ */ jsx("span", { className: "ax-voicesel__play", children: "▶" })
51
+ ] }, voice.value);
52
+ }) }) : null
53
+ ] });
54
+ }
55
+ export {
56
+ VoiceSelector
57
+ };
58
+ //# sourceMappingURL=VoiceSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VoiceSelector.js","sources":["../../../src/components/voice/VoiceSelector.jsx"],"sourcesContent":["import React, { useState, useRef, useEffect, useCallback } from \"react\";\n\nconst AX_VOICESEL_CSS = `\n.ax-voicesel { position: relative; display: inline-flex; }\n.ax-voicesel__trigger { display: inline-flex; align-items: center; gap: 10px; height: 36px; padding: 0 12px; cursor: pointer; background: var(--surface-card); border: 1px solid var(--border-default); border-radius: var(--radius-2); color: var(--text-body); font-family: var(--font-body); font-size: var(--text-sm); transition: border-color var(--dur-1) var(--ease-out); }\n.ax-voicesel__trigger:hover { border-color: var(--border-strong); }\n.ax-voicesel__swatch { width: 18px; height: 18px; flex: none; border-radius: var(--radius-1); display: flex; align-items: center; justify-content: center; font-family: var(--font-mono); font-size: 10px; background: var(--accent); color: var(--accent-fg); }\n.ax-voicesel__panel { position: absolute; z-index: 60; top: calc(100% + 6px); left: 0; min-width: 240px; background: var(--surface-panel); border: 1px solid var(--border-strong); border-radius: var(--radius-3); box-shadow: var(--shadow-2); padding: var(--space-1); }\n.ax-voicesel__opt { display: flex; align-items: center; gap: 10px; width: 100%; appearance: none; background: none; border: none; text-align: left; cursor: pointer; padding: 8px 10px; border-radius: var(--radius-2); }\n.ax-voicesel__opt:hover { background: var(--surface-raised); }\n.ax-voicesel__name { font-size: var(--text-sm); color: var(--text-body); flex: 1; }\n.ax-voicesel__tag { font-family: var(--font-mono); font-size: 10px; color: var(--text-faint); }\n.ax-voicesel__play { color: var(--text-faint); cursor: pointer; }\n.ax-voicesel__play:hover { color: var(--text-body); }\n`;\n\nif (typeof document !== \"undefined\" && !document.getElementById(\"ax-voicesel-css\")) {\n const s = document.createElement(\"style\");\n s.id = \"ax-voicesel-css\";\n s.textContent = AX_VOICESEL_CSS;\n document.head.appendChild(s);\n}\n\nexport function VoiceSelector({ voices = [], value, onChange, className = \"\", ...rest }) {\n const [open, setOpen] = useState(false);\n const ref = useRef(null);\n const norm = (v) => (typeof v === \"string\" ? { value: v, label: v } : v);\n const current = voices.map(norm).find((v) => v.value === value) || norm(voices[0] || \"Voice\");\n const onDoc = useCallback((e) => { if (ref.current && !ref.current.contains(e.target)) setOpen(false); }, []);\n useEffect(() => {\n if (open) { document.addEventListener(\"mousedown\", onDoc); return () => document.removeEventListener(\"mousedown\", onDoc); }\n }, [open, onDoc]);\n return (\n <div className={[\"ax-voicesel\", className].filter(Boolean).join(\" \")} ref={ref} {...rest}>\n <button className=\"ax-voicesel__trigger\" onClick={() => setOpen((o) => !o)}>\n <span className=\"ax-voicesel__swatch\">{(current.label || \"V\")[0]}</span>\n {current.label}\n </button>\n {open ? (\n <div className=\"ax-voicesel__panel\">\n {voices.map((v) => {\n const voice = norm(v);\n return (\n <button key={voice.value} className=\"ax-voicesel__opt\" onClick={() => { onChange && onChange(voice.value); setOpen(false); }}>\n <span className=\"ax-voicesel__swatch\">{(voice.label || \"V\")[0]}</span>\n <span className=\"ax-voicesel__name\">{voice.label}</span>\n {voice.tag ? <span className=\"ax-voicesel__tag\">{voice.tag}</span> : null}\n <span className=\"ax-voicesel__play\">▶</span>\n </button>\n );\n })}\n </div>\n ) : null}\n </div>\n );\n}\n"],"names":[],"mappings":";;AAEA,MAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcxB,IAAI,OAAO,aAAa,eAAe,CAAC,SAAS,eAAe,iBAAiB,GAAG;AAClF,QAAM,IAAI,SAAS,cAAc,OAAO;AACxC,IAAE,KAAK;AACP,IAAE,cAAc;AAChB,WAAS,KAAK,YAAY,CAAC;AAC7B;AAEO,SAAS,cAAc,EAAE,SAAS,CAAA,GAAI,OAAO,UAAU,YAAY,IAAI,GAAG,QAAQ;AACvF,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AACtC,QAAM,MAAM,OAAO,IAAI;AACvB,QAAM,OAAO,CAAC,MAAO,OAAO,MAAM,WAAW,EAAE,OAAO,GAAG,OAAO,EAAA,IAAM;AACtE,QAAM,UAAU,OAAO,IAAI,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,KAAK,KAAK,KAAK,OAAO,CAAC,KAAK,OAAO;AAC5F,QAAM,QAAQ,YAAY,CAAC,MAAM;AAAE,QAAI,IAAI,WAAW,CAAC,IAAI,QAAQ,SAAS,EAAE,MAAM,EAAG,SAAQ,KAAK;AAAA,EAAG,GAAG,CAAA,CAAE;AAC5G,YAAU,MAAM;AACd,QAAI,MAAM;AAAE,eAAS,iBAAiB,aAAa,KAAK;AAAG,aAAO,MAAM,SAAS,oBAAoB,aAAa,KAAK;AAAA,IAAG;AAAA,EAC5H,GAAG,CAAC,MAAM,KAAK,CAAC;AAChB,SACE,qBAAC,OAAA,EAAI,WAAW,CAAC,eAAe,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,GAAG,KAAW,GAAG,MAClF,UAAA;AAAA,IAAA,qBAAC,UAAA,EAAO,WAAU,wBAAuB,SAAS,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,GACvE,UAAA;AAAA,MAAA,oBAAC,UAAK,WAAU,uBAAwB,mBAAQ,SAAS,KAAK,CAAC,EAAA,CAAE;AAAA,MAChE,QAAQ;AAAA,IAAA,GACX;AAAA,IACC,2BACE,OAAA,EAAI,WAAU,sBACZ,UAAA,OAAO,IAAI,CAAC,MAAM;AACjB,YAAM,QAAQ,KAAK,CAAC;AACpB,aACE,qBAAC,UAAA,EAAyB,WAAU,oBAAmB,SAAS,MAAM;AAAE,oBAAY,SAAS,MAAM,KAAK;AAAG,gBAAQ,KAAK;AAAA,MAAG,GACzH,UAAA;AAAA,QAAA,oBAAC,UAAK,WAAU,uBAAwB,iBAAM,SAAS,KAAK,CAAC,EAAA,CAAE;AAAA,QAC/D,oBAAC,QAAA,EAAK,WAAU,qBAAqB,gBAAM,OAAM;AAAA,QAChD,MAAM,MAAM,oBAAC,QAAA,EAAK,WAAU,oBAAoB,UAAA,MAAM,KAAI,IAAU;AAAA,QACrE,oBAAC,QAAA,EAAK,WAAU,qBAAoB,UAAA,IAAA,CAAC;AAAA,MAAA,EAAA,GAJ1B,MAAM,KAKnB;AAAA,IAEJ,CAAC,GACH,IACE;AAAA,EAAA,GACN;AAEJ;"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Node-graph workflow primitives. Canvas holds Nodes (absolute x/y) and an SVG
3
+ * edge layer; Edge/Connection draw bezier links; Controls/Panel/Toolbar are canvas chrome.
4
+ */
5
+ export interface CanvasProps { edges?: React.ReactNode; children?: React.ReactNode; }
6
+ export declare function Canvas(props: CanvasProps): JSX.Element;
7
+ export interface NodeProps { x?: number; y?: number; title?: React.ReactNode; status?: "ok" | "warn"; ports?: boolean; selected?: boolean; children?: React.ReactNode; }
8
+ export declare function Node(props: NodeProps): JSX.Element;
9
+ export interface Point { x: number; y: number; }
10
+ export interface EdgeProps { from: Point; to: Point; animated?: boolean; label?: string; }
11
+ /** Static bezier edge (render inside Canvas's edges slot). */
12
+ export declare function Edge(props: EdgeProps): JSX.Element;
13
+ /** Animated (flowing dashes) edge — for in-progress links. */
14
+ export declare function Connection(props: { from: Point; to: Point; label?: string }): JSX.Element;
15
+ export interface ControlsProps { orientation?: "vertical" | "horizontal"; onZoomIn?: () => void; onZoomOut?: () => void; onFit?: () => void; }
16
+ export declare function Controls(props: ControlsProps): JSX.Element;
17
+ export interface PanelProps { position?: "top-right" | "top-left" | "bottom-right"; children?: React.ReactNode; }
18
+ export declare function Panel(props: PanelProps): JSX.Element;
19
+ export interface ToolbarProps { children?: React.ReactNode; }
20
+ export declare function Toolbar(props: ToolbarProps): JSX.Element;
@@ -0,0 +1,96 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import "react";
3
+ const AX_FLOW_CSS = `
4
+ .ax-canvas { position: relative; width: 100%; height: 320px; overflow: hidden; border: 1px solid var(--border-default); border-radius: var(--radius-3); background: var(--surface-page); background-image: var(--dot-grid); background-size: 20px 20px; }
5
+ .ax-canvas__inner { position: absolute; inset: 0; }
6
+ .ax-canvas__edges { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; overflow: visible; }
7
+
8
+ .ax-node { position: absolute; min-width: 130px; background: var(--surface-card); border: 1px solid var(--border-strong); border-radius: var(--radius-2); box-shadow: var(--shadow-1); user-select: none; }
9
+ .ax-node--selected { border-color: var(--text-body); box-shadow: var(--ring); }
10
+ .ax-node__head { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border-bottom: 1px solid var(--border-default); }
11
+ .ax-node__dot { width: 7px; height: 7px; border-radius: 1px; flex: none; background: var(--text-faint); }
12
+ .ax-node__dot--ok { background: var(--ok); }
13
+ .ax-node__dot--warn { background: var(--warn); }
14
+ .ax-node__title { font-family: var(--font-mono); font-size: var(--text-xs); color: var(--text-body); letter-spacing: 0.02em; flex: 1; }
15
+ .ax-node__body { padding: 8px 10px; font-size: var(--text-xs); color: var(--text-muted); line-height: var(--leading-snug); }
16
+ .ax-node__port { position: absolute; width: 9px; height: 9px; border-radius: var(--radius-1); background: var(--surface-page); border: 1px solid var(--border-strong); top: 50%; transform: translateY(-50%); }
17
+ .ax-node__port--in { left: -5px; }
18
+ .ax-node__port--out { right: -5px; }
19
+
20
+ .ax-flow-controls { position: absolute; bottom: 12px; left: 12px; z-index: 5; display: flex; flex-direction: column; background: var(--surface-panel); border: 1px solid var(--border-strong); border-radius: var(--radius-2); overflow: hidden; box-shadow: var(--shadow-1); }
21
+ .ax-flow-controls--horizontal { flex-direction: row; }
22
+ .ax-flow-controls__btn { width: 28px; height: 28px; display: flex; align-items: center; justify-content: center; cursor: pointer; background: none; border: none; color: var(--text-muted); border-bottom: 1px solid var(--border-default); transition: background var(--dur-1) var(--ease-out), color var(--dur-1) var(--ease-out); }
23
+ .ax-flow-controls--horizontal .ax-flow-controls__btn { border-bottom: none; border-right: 1px solid var(--border-default); }
24
+ .ax-flow-controls__btn:last-child { border: none; }
25
+ .ax-flow-controls__btn:hover { background: var(--surface-raised); color: var(--text-body); }
26
+
27
+ .ax-flow-panel { position: absolute; z-index: 5; background: var(--surface-panel); border: 1px solid var(--border-strong); border-radius: var(--radius-2); box-shadow: var(--shadow-1); padding: var(--space-3); }
28
+ .ax-flow-panel--top-right { top: 12px; right: 12px; }
29
+ .ax-flow-panel--top-left { top: 12px; left: 12px; }
30
+ .ax-flow-panel--bottom-right { bottom: 12px; right: 12px; }
31
+
32
+ .ax-flow-toolbar { display: inline-flex; gap: 2px; padding: 3px; background: var(--surface-panel); border: 1px solid var(--border-strong); border-radius: var(--radius-2); box-shadow: var(--shadow-1); }
33
+ .ax-flow-toolbar__btn { width: 30px; height: 30px; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; background: none; border: none; border-radius: var(--radius-1); color: var(--text-muted); transition: background var(--dur-1) var(--ease-out), color var(--dur-1) var(--ease-out); }
34
+ .ax-flow-toolbar__btn:hover, .ax-flow-toolbar__btn--active { background: var(--surface-raised); color: var(--text-body); }
35
+ .ax-flow-toolbar__sep { width: 1px; align-self: stretch; background: var(--border-default); margin: 2px 2px; }
36
+ `;
37
+ if (typeof document !== "undefined" && !document.getElementById("ax-flow-css")) {
38
+ const s = document.createElement("style");
39
+ s.id = "ax-flow-css";
40
+ s.textContent = AX_FLOW_CSS;
41
+ document.head.appendChild(s);
42
+ }
43
+ function Canvas({ children, edges, className = "", ...rest }) {
44
+ return /* @__PURE__ */ jsxs("div", { className: ["ax-canvas", className].filter(Boolean).join(" "), ...rest, children: [
45
+ /* @__PURE__ */ jsx("svg", { className: "ax-canvas__edges", children: edges }),
46
+ /* @__PURE__ */ jsx("div", { className: "ax-canvas__inner", children })
47
+ ] });
48
+ }
49
+ function Node({ x = 0, y = 0, title, status, ports = true, selected = false, children, className = "", style = {}, ...rest }) {
50
+ return /* @__PURE__ */ jsxs("div", { className: ["ax-node", selected ? "ax-node--selected" : "", className].filter(Boolean).join(" "), style: { left: x, top: y, ...style }, ...rest, children: [
51
+ ports ? /* @__PURE__ */ jsx("span", { className: "ax-node__port ax-node__port--in" }) : null,
52
+ /* @__PURE__ */ jsxs("div", { className: "ax-node__head", children: [
53
+ /* @__PURE__ */ jsx("span", { className: "ax-node__dot" + (status ? " ax-node__dot--" + status : "") }),
54
+ /* @__PURE__ */ jsx("span", { className: "ax-node__title", children: title })
55
+ ] }),
56
+ children ? /* @__PURE__ */ jsx("div", { className: "ax-node__body", children }) : null,
57
+ ports ? /* @__PURE__ */ jsx("span", { className: "ax-node__port ax-node__port--out" }) : null
58
+ ] });
59
+ }
60
+ function Edge({ from, to, animated = false, label, ...rest }) {
61
+ const dx = Math.abs(to.x - from.x) * 0.5;
62
+ const d = `M ${from.x} ${from.y} C ${from.x + dx} ${from.y}, ${to.x - dx} ${to.y}, ${to.x} ${to.y}`;
63
+ const mx = (from.x + to.x) / 2, my = (from.y + to.y) / 2;
64
+ return /* @__PURE__ */ jsxs("g", { ...rest, children: [
65
+ /* @__PURE__ */ jsx("path", { d, fill: "none", stroke: "var(--border-strong)", strokeWidth: "1.5", strokeDasharray: animated ? "4 4" : void 0, children: animated ? /* @__PURE__ */ jsx("animate", { attributeName: "stroke-dashoffset", from: "8", to: "0", dur: "0.5s", repeatCount: "indefinite" }) : null }),
66
+ label ? /* @__PURE__ */ jsx("text", { x: mx, y: my - 4, fill: "var(--text-faint)", fontSize: "9", fontFamily: "var(--font-mono)", textAnchor: "middle", children: label }) : null
67
+ ] });
68
+ }
69
+ function Connection({ from, to, ...rest }) {
70
+ return /* @__PURE__ */ jsx(Edge, { from, to, animated: true, ...rest });
71
+ }
72
+ function Controls({ orientation = "vertical", onZoomIn, onZoomOut, onFit, className = "", ...rest }) {
73
+ return /* @__PURE__ */ jsxs("div", { className: ["ax-flow-controls", orientation === "horizontal" ? "ax-flow-controls--horizontal" : "", className].filter(Boolean).join(" "), ...rest, children: [
74
+ /* @__PURE__ */ jsx("button", { className: "ax-flow-controls__btn", onClick: onZoomIn, "aria-label": "Zoom in", children: "+" }),
75
+ /* @__PURE__ */ jsx("button", { className: "ax-flow-controls__btn", onClick: onZoomOut, "aria-label": "Zoom out", children: "−" }),
76
+ /* @__PURE__ */ jsx("button", { className: "ax-flow-controls__btn", onClick: onFit, "aria-label": "Fit view", children: "⊡" })
77
+ ] });
78
+ }
79
+ function Panel({ position = "top-right", children, className = "", ...rest }) {
80
+ return /* @__PURE__ */ jsx("div", { className: ["ax-flow-panel", "ax-flow-panel--" + position, className].filter(Boolean).join(" "), ...rest, children });
81
+ }
82
+ function Toolbar({ children, className = "", ...rest }) {
83
+ return /* @__PURE__ */ jsx("div", { className: ["ax-flow-toolbar", className].filter(Boolean).join(" "), ...rest, children });
84
+ }
85
+ const Flow = Canvas;
86
+ export {
87
+ Canvas,
88
+ Connection,
89
+ Controls,
90
+ Edge,
91
+ Flow,
92
+ Node,
93
+ Panel,
94
+ Toolbar
95
+ };
96
+ //# sourceMappingURL=Flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Flow.js","sources":["../../../src/components/workflow/Flow.jsx"],"sourcesContent":["import React from \"react\";\n\nconst AX_FLOW_CSS = `\n.ax-canvas { position: relative; width: 100%; height: 320px; overflow: hidden; border: 1px solid var(--border-default); border-radius: var(--radius-3); background: var(--surface-page); background-image: var(--dot-grid); background-size: 20px 20px; }\n.ax-canvas__inner { position: absolute; inset: 0; }\n.ax-canvas__edges { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; overflow: visible; }\n\n.ax-node { position: absolute; min-width: 130px; background: var(--surface-card); border: 1px solid var(--border-strong); border-radius: var(--radius-2); box-shadow: var(--shadow-1); user-select: none; }\n.ax-node--selected { border-color: var(--text-body); box-shadow: var(--ring); }\n.ax-node__head { display: flex; align-items: center; gap: 8px; padding: 8px 10px; border-bottom: 1px solid var(--border-default); }\n.ax-node__dot { width: 7px; height: 7px; border-radius: 1px; flex: none; background: var(--text-faint); }\n.ax-node__dot--ok { background: var(--ok); }\n.ax-node__dot--warn { background: var(--warn); }\n.ax-node__title { font-family: var(--font-mono); font-size: var(--text-xs); color: var(--text-body); letter-spacing: 0.02em; flex: 1; }\n.ax-node__body { padding: 8px 10px; font-size: var(--text-xs); color: var(--text-muted); line-height: var(--leading-snug); }\n.ax-node__port { position: absolute; width: 9px; height: 9px; border-radius: var(--radius-1); background: var(--surface-page); border: 1px solid var(--border-strong); top: 50%; transform: translateY(-50%); }\n.ax-node__port--in { left: -5px; }\n.ax-node__port--out { right: -5px; }\n\n.ax-flow-controls { position: absolute; bottom: 12px; left: 12px; z-index: 5; display: flex; flex-direction: column; background: var(--surface-panel); border: 1px solid var(--border-strong); border-radius: var(--radius-2); overflow: hidden; box-shadow: var(--shadow-1); }\n.ax-flow-controls--horizontal { flex-direction: row; }\n.ax-flow-controls__btn { width: 28px; height: 28px; display: flex; align-items: center; justify-content: center; cursor: pointer; background: none; border: none; color: var(--text-muted); border-bottom: 1px solid var(--border-default); transition: background var(--dur-1) var(--ease-out), color var(--dur-1) var(--ease-out); }\n.ax-flow-controls--horizontal .ax-flow-controls__btn { border-bottom: none; border-right: 1px solid var(--border-default); }\n.ax-flow-controls__btn:last-child { border: none; }\n.ax-flow-controls__btn:hover { background: var(--surface-raised); color: var(--text-body); }\n\n.ax-flow-panel { position: absolute; z-index: 5; background: var(--surface-panel); border: 1px solid var(--border-strong); border-radius: var(--radius-2); box-shadow: var(--shadow-1); padding: var(--space-3); }\n.ax-flow-panel--top-right { top: 12px; right: 12px; }\n.ax-flow-panel--top-left { top: 12px; left: 12px; }\n.ax-flow-panel--bottom-right { bottom: 12px; right: 12px; }\n\n.ax-flow-toolbar { display: inline-flex; gap: 2px; padding: 3px; background: var(--surface-panel); border: 1px solid var(--border-strong); border-radius: var(--radius-2); box-shadow: var(--shadow-1); }\n.ax-flow-toolbar__btn { width: 30px; height: 30px; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; background: none; border: none; border-radius: var(--radius-1); color: var(--text-muted); transition: background var(--dur-1) var(--ease-out), color var(--dur-1) var(--ease-out); }\n.ax-flow-toolbar__btn:hover, .ax-flow-toolbar__btn--active { background: var(--surface-raised); color: var(--text-body); }\n.ax-flow-toolbar__sep { width: 1px; align-self: stretch; background: var(--border-default); margin: 2px 2px; }\n`;\n\nif (typeof document !== \"undefined\" && !document.getElementById(\"ax-flow-css\")) {\n const s = document.createElement(\"style\");\n s.id = \"ax-flow-css\";\n s.textContent = AX_FLOW_CSS;\n document.head.appendChild(s);\n}\n\nexport function Canvas({ children, edges, className = \"\", ...rest }) {\n return (\n <div className={[\"ax-canvas\", className].filter(Boolean).join(\" \")} {...rest}>\n <svg className=\"ax-canvas__edges\">{edges}</svg>\n <div className=\"ax-canvas__inner\">{children}</div>\n </div>\n );\n}\n\nexport function Node({ x = 0, y = 0, title, status, ports = true, selected = false, children, className = \"\", style = {}, ...rest }) {\n return (\n <div className={[\"ax-node\", selected ? \"ax-node--selected\" : \"\", className].filter(Boolean).join(\" \")} style={{ left: x, top: y, ...style }} {...rest}>\n {ports ? <span className=\"ax-node__port ax-node__port--in\"></span> : null}\n <div className=\"ax-node__head\">\n <span className={\"ax-node__dot\" + (status ? \" ax-node__dot--\" + status : \"\")}></span>\n <span className=\"ax-node__title\">{title}</span>\n </div>\n {children ? <div className=\"ax-node__body\">{children}</div> : null}\n {ports ? <span className=\"ax-node__port ax-node__port--out\"></span> : null}\n </div>\n );\n}\n\nexport function Edge({ from, to, animated = false, label, ...rest }) {\n const dx = Math.abs(to.x - from.x) * 0.5;\n const d = `M ${from.x} ${from.y} C ${from.x + dx} ${from.y}, ${to.x - dx} ${to.y}, ${to.x} ${to.y}`;\n const mx = (from.x + to.x) / 2, my = (from.y + to.y) / 2;\n return (\n <g {...rest}>\n <path d={d} fill=\"none\" stroke=\"var(--border-strong)\" strokeWidth=\"1.5\" strokeDasharray={animated ? \"4 4\" : undefined}>\n {animated ? <animate attributeName=\"stroke-dashoffset\" from=\"8\" to=\"0\" dur=\"0.5s\" repeatCount=\"indefinite\"></animate> : null}\n </path>\n {label ? <text x={mx} y={my - 4} fill=\"var(--text-faint)\" fontSize=\"9\" fontFamily=\"var(--font-mono)\" textAnchor=\"middle\">{label}</text> : null}\n </g>\n );\n}\n\nexport function Connection({ from, to, ...rest }) {\n return <Edge from={from} to={to} animated {...rest} />;\n}\n\nexport function Controls({ orientation = \"vertical\", onZoomIn, onZoomOut, onFit, className = \"\", ...rest }) {\n return (\n <div className={[\"ax-flow-controls\", orientation === \"horizontal\" ? \"ax-flow-controls--horizontal\" : \"\", className].filter(Boolean).join(\" \")} {...rest}>\n <button className=\"ax-flow-controls__btn\" onClick={onZoomIn} aria-label=\"Zoom in\">+</button>\n <button className=\"ax-flow-controls__btn\" onClick={onZoomOut} aria-label=\"Zoom out\">−</button>\n <button className=\"ax-flow-controls__btn\" onClick={onFit} aria-label=\"Fit view\">⊡</button>\n </div>\n );\n}\n\nexport function Panel({ position = \"top-right\", children, className = \"\", ...rest }) {\n return <div className={[\"ax-flow-panel\", \"ax-flow-panel--\" + position, className].filter(Boolean).join(\" \")} {...rest}>{children}</div>;\n}\n\nexport function Toolbar({ children, className = \"\", ...rest }) {\n return <div className={[\"ax-flow-toolbar\", className].filter(Boolean).join(\" \")} {...rest}>{children}</div>;\n}\n\n/** Namesake export — Flow aliases Canvas (the graph root). Canvas/Node/Edge/… are the primary exports. */\nexport const Flow = Canvas;\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ // AUTO-GENERATED — type barrel for the Agentaily design system.
2
+
3
+ // ai
4
+ export * from "./components/ai/Attachments";
5
+ export * from "./components/ai/Checkpoint";
6
+ export * from "./components/ai/Confirmation";
7
+ export * from "./components/ai/Context";
8
+ export * from "./components/ai/Conversation";
9
+ export * from "./components/ai/ModelSelector";
10
+ export * from "./components/ai/Plan";
11
+ export * from "./components/ai/Queue";
12
+ export * from "./components/ai/Reasoning";
13
+ export * from "./components/ai/Shimmer";
14
+ export * from "./components/ai/Sources";
15
+ export * from "./components/ai/Suggestion";
16
+ export * from "./components/ai/Task";
17
+ export * from "./components/ai/ToolCall";
18
+
19
+ // buttons
20
+ export * from "./components/buttons/Button";
21
+ export * from "./components/buttons/ButtonGroup";
22
+ export * from "./components/buttons/IconButton";
23
+
24
+ // chat
25
+ export * from "./components/chat/CodeBlock";
26
+ export * from "./components/chat/Composer";
27
+ export * from "./components/chat/Message";
28
+
29
+ // code
30
+ export * from "./components/code/Agent";
31
+ export * from "./components/code/Artifact";
32
+ export * from "./components/code/Commit";
33
+ export * from "./components/code/EnvironmentVariables";
34
+ export * from "./components/code/FileTree";
35
+ export * from "./components/code/JSXPreview";
36
+ export * from "./components/code/PackageInfo";
37
+ export * from "./components/code/Sandbox";
38
+ export * from "./components/code/SchemaDisplay";
39
+ export * from "./components/code/Snippet";
40
+ export * from "./components/code/StackTrace";
41
+ export * from "./components/code/Terminal";
42
+ export * from "./components/code/TestResults";
43
+ export * from "./components/code/WebPreview";
44
+
45
+ // display
46
+ export * from "./components/display/Accordion";
47
+ export * from "./components/display/Avatar";
48
+ export * from "./components/display/Badge";
49
+ export * from "./components/display/Breadcrumb";
50
+ export * from "./components/display/Card";
51
+ export * from "./components/display/Carousel";
52
+ export * from "./components/display/Chart";
53
+ export * from "./components/display/Collapsible";
54
+ export * from "./components/display/DataTable";
55
+ export * from "./components/display/Empty";
56
+ export * from "./components/display/Item";
57
+ export * from "./components/display/Kbd";
58
+ export * from "./components/display/Pagination";
59
+ export * from "./components/display/Progress";
60
+ export * from "./components/display/Separator";
61
+ export * from "./components/display/Skeleton";
62
+ export * from "./components/display/Table";
63
+ export * from "./components/display/Tabs";
64
+ export * from "./components/display/Typography";
65
+
66
+ // feedback
67
+ export * from "./components/feedback/Alert";
68
+ export * from "./components/feedback/Dialog";
69
+ export * from "./components/feedback/Spinner";
70
+ export * from "./components/feedback/Toast";
71
+ export * from "./components/feedback/Tooltip";
72
+
73
+ // inputs
74
+ export * from "./components/inputs/Calendar";
75
+ export * from "./components/inputs/Checkbox";
76
+ export * from "./components/inputs/Combobox";
77
+ export * from "./components/inputs/DatePicker";
78
+ export * from "./components/inputs/Field";
79
+ export * from "./components/inputs/Input";
80
+ export * from "./components/inputs/InputGroup";
81
+ export * from "./components/inputs/InputOTP";
82
+ export * from "./components/inputs/Label";
83
+ export * from "./components/inputs/RadioGroup";
84
+ export * from "./components/inputs/Select";
85
+ export * from "./components/inputs/Slider";
86
+ export * from "./components/inputs/Switch";
87
+ export * from "./components/inputs/Textarea";
88
+ export * from "./components/inputs/Toggle";
89
+
90
+ // layout
91
+ export * from "./components/layout/AspectRatio";
92
+ export * from "./components/layout/Resizable";
93
+ export * from "./components/layout/ScrollArea";
94
+ export * from "./components/layout/Sidebar";
95
+
96
+ // overlay
97
+ export * from "./components/overlay/AlertDialog";
98
+ export * from "./components/overlay/Command";
99
+ export * from "./components/overlay/ContextMenu";
100
+ export * from "./components/overlay/DropdownMenu";
101
+ export * from "./components/overlay/HoverCard";
102
+ export * from "./components/overlay/Menubar";
103
+ export * from "./components/overlay/NavigationMenu";
104
+ export * from "./components/overlay/Popover";
105
+ export * from "./components/overlay/Sheet";
106
+
107
+ // utilities
108
+ export * from "./components/utilities/Image";
109
+ export * from "./components/utilities/OpenInChat";
110
+
111
+ // voice
112
+ export * from "./components/voice/AudioPlayer";
113
+ export * from "./components/voice/MicSelector";
114
+ export * from "./components/voice/Persona";
115
+ export * from "./components/voice/SpeechInput";
116
+ export * from "./components/voice/Transcription";
117
+ export * from "./components/voice/VoiceSelector";
118
+
119
+ // workflow
120
+ export * from "./components/workflow/Flow";