@nadicodeai/ui 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 (472) hide show
  1. package/AGENTS.md +114 -0
  2. package/README.md +211 -0
  3. package/dist/ai-elements.d.ts +49 -0
  4. package/dist/ai-elements.d.ts.map +1 -0
  5. package/dist/ai-elements.js +48 -0
  6. package/dist/components/accordion.d.ts +8 -0
  7. package/dist/components/accordion.d.ts.map +1 -0
  8. package/dist/components/accordion.js +18 -0
  9. package/dist/components/action-band.d.ts +10 -0
  10. package/dist/components/action-band.d.ts.map +1 -0
  11. package/dist/components/action-band.js +33 -0
  12. package/dist/components/agent-chat.d.ts +20 -0
  13. package/dist/components/agent-chat.d.ts.map +1 -0
  14. package/dist/components/agent-chat.js +10 -0
  15. package/dist/components/agent-composer.d.ts +56 -0
  16. package/dist/components/agent-composer.d.ts.map +1 -0
  17. package/dist/components/agent-composer.js +60 -0
  18. package/dist/components/agent-message.d.ts +116 -0
  19. package/dist/components/agent-message.d.ts.map +1 -0
  20. package/dist/components/agent-message.js +110 -0
  21. package/dist/components/agent-thread.d.ts +26 -0
  22. package/dist/components/agent-thread.d.ts.map +1 -0
  23. package/dist/components/agent-thread.js +72 -0
  24. package/dist/components/agent-tool-approval.d.ts +32 -0
  25. package/dist/components/agent-tool-approval.d.ts.map +1 -0
  26. package/dist/components/agent-tool-approval.js +61 -0
  27. package/dist/components/ai-elements/agent.d.ts +27 -0
  28. package/dist/components/ai-elements/agent.d.ts.map +1 -0
  29. package/dist/components/ai-elements/agent.js +27 -0
  30. package/dist/components/ai-elements/artifact.d.ts +24 -0
  31. package/dist/components/ai-elements/artifact.d.ts.map +1 -0
  32. package/dist/components/ai-elements/artifact.js +20 -0
  33. package/dist/components/ai-elements/attachments.d.ts +55 -0
  34. package/dist/components/ai-elements/attachments.d.ts.map +1 -0
  35. package/dist/components/ai-elements/attachments.js +125 -0
  36. package/dist/components/ai-elements/audio-player.d.ts +30 -0
  37. package/dist/components/ai-elements/audio-player.d.ts.map +1 -0
  38. package/dist/components/ai-elements/audio-player.js +43 -0
  39. package/dist/components/ai-elements/canvas.d.ts +8 -0
  40. package/dist/components/ai-elements/canvas.d.ts.map +1 -0
  41. package/dist/components/ai-elements/canvas.js +5 -0
  42. package/dist/components/ai-elements/chain-of-thought.d.ts +30 -0
  43. package/dist/components/ai-elements/chain-of-thought.d.ts.map +1 -0
  44. package/dist/components/ai-elements/chain-of-thought.js +49 -0
  45. package/dist/components/ai-elements/checkpoint.d.ts +12 -0
  46. package/dist/components/ai-elements/checkpoint.d.ts.map +1 -0
  47. package/dist/components/ai-elements/checkpoint.js +10 -0
  48. package/dist/components/ai-elements/code-block.d.ts +46 -0
  49. package/dist/components/ai-elements/code-block.d.ts.map +1 -0
  50. package/dist/components/ai-elements/code-block.js +207 -0
  51. package/dist/components/ai-elements/commit.d.ts +65 -0
  52. package/dist/components/ai-elements/commit.d.ts.map +1 -0
  53. package/dist/components/ai-elements/commit.js +95 -0
  54. package/dist/components/ai-elements/confirmation.d.ts +50 -0
  55. package/dist/components/ai-elements/confirmation.d.ts.map +1 -0
  56. package/dist/components/ai-elements/confirmation.js +61 -0
  57. package/dist/components/ai-elements/connection.d.ts +6 -0
  58. package/dist/components/ai-elements/connection.d.ts.map +1 -0
  59. package/dist/components/ai-elements/connection.js +10 -0
  60. package/dist/components/ai-elements/context.d.ts +33 -0
  61. package/dist/components/ai-elements/context.d.ts.map +1 -0
  62. package/dist/components/ai-elements/context.js +164 -0
  63. package/dist/components/ai-elements/controls.d.ts +5 -0
  64. package/dist/components/ai-elements/controls.d.ts.map +1 -0
  65. package/dist/components/ai-elements/controls.js +5 -0
  66. package/dist/components/ai-elements/conversation.d.ts +24 -0
  67. package/dist/components/ai-elements/conversation.d.ts.map +1 -0
  68. package/dist/components/ai-elements/conversation.js +41 -0
  69. package/dist/components/ai-elements/edge.d.ts +6 -0
  70. package/dist/components/ai-elements/edge.d.ts.map +1 -0
  71. package/dist/components/ai-elements/edge.js +88 -0
  72. package/dist/components/ai-elements/environment-variables.d.ts +39 -0
  73. package/dist/components/ai-elements/environment-variables.d.ts.map +1 -0
  74. package/dist/components/ai-elements/environment-variables.js +87 -0
  75. package/dist/components/ai-elements/file-tree.d.ts +27 -0
  76. package/dist/components/ai-elements/file-tree.d.ts.map +1 -0
  77. package/dist/components/ai-elements/file-tree.js +71 -0
  78. package/dist/components/ai-elements/image.d.ts +7 -0
  79. package/dist/components/ai-elements/image.d.ts.map +1 -0
  80. package/dist/components/ai-elements/image.js +3 -0
  81. package/dist/components/ai-elements/inline-citation.d.ts +39 -0
  82. package/dist/components/ai-elements/inline-citation.d.ts.map +1 -0
  83. package/dist/components/ai-elements/inline-citation.js +86 -0
  84. package/dist/components/ai-elements/jsx-preview.d.ts +30 -0
  85. package/dist/components/ai-elements/jsx-preview.d.ts.map +1 -0
  86. package/dist/components/ai-elements/jsx-preview.js +168 -0
  87. package/dist/components/ai-elements/message.d.ts +38 -0
  88. package/dist/components/ai-elements/message.d.ts.map +1 -0
  89. package/dist/components/ai-elements/message.js +92 -0
  90. package/dist/components/ai-elements/mic-selector.d.ts +46 -0
  91. package/dist/components/ai-elements/mic-selector.d.ts.map +1 -0
  92. package/dist/components/ai-elements/mic-selector.js +184 -0
  93. package/dist/components/ai-elements/model-selector.d.ts +36 -0
  94. package/dist/components/ai-elements/model-selector.d.ts.map +1 -0
  95. package/dist/components/ai-elements/model-selector.js +18 -0
  96. package/dist/components/ai-elements/node.d.ts +22 -0
  97. package/dist/components/ai-elements/node.d.ts.map +1 -0
  98. package/dist/components/ai-elements/node.js +12 -0
  99. package/dist/components/ai-elements/open-in-chat.d.ts +29 -0
  100. package/dist/components/ai-elements/open-in-chat.d.ts.map +1 -0
  101. package/dist/components/ai-elements/open-in-chat.js +100 -0
  102. package/dist/components/ai-elements/package-info.d.ts +30 -0
  103. package/dist/components/ai-elements/package-info.d.ts.map +1 -0
  104. package/dist/components/ai-elements/package-info.js +50 -0
  105. package/dist/components/ai-elements/panel.d.ts +6 -0
  106. package/dist/components/ai-elements/panel.d.ts.map +1 -0
  107. package/dist/components/ai-elements/panel.js +5 -0
  108. package/dist/components/ai-elements/persona.d.ts +49 -0
  109. package/dist/components/ai-elements/persona.d.ts.map +1 -0
  110. package/dist/components/ai-elements/persona.js +176 -0
  111. package/dist/components/ai-elements/plan.d.ts +26 -0
  112. package/dist/components/ai-elements/plan.d.ts.map +1 -0
  113. package/dist/components/ai-elements/plan.js +34 -0
  114. package/dist/components/ai-elements/prompt-input.d.ts +149 -0
  115. package/dist/components/ai-elements/prompt-input.d.ts.map +1 -0
  116. package/dist/components/ai-elements/prompt-input.js +715 -0
  117. package/dist/components/ai-elements/queue.d.ts +62 -0
  118. package/dist/components/ai-elements/queue.d.ts.map +1 -0
  119. package/dist/components/ai-elements/queue.js +28 -0
  120. package/dist/components/ai-elements/reasoning.d.ts +27 -0
  121. package/dist/components/ai-elements/reasoning.d.ts.map +1 -0
  122. package/dist/components/ai-elements/reasoning.js +95 -0
  123. package/dist/components/ai-elements/sandbox.d.ts +25 -0
  124. package/dist/components/ai-elements/sandbox.d.ts.map +1 -0
  125. package/dist/components/ai-elements/sandbox.js +15 -0
  126. package/dist/components/ai-elements/schema-display.d.ts +56 -0
  127. package/dist/components/ai-elements/schema-display.d.ts.map +1 -0
  128. package/dist/components/ai-elements/schema-display.js +90 -0
  129. package/dist/components/ai-elements/shimmer.d.ts +10 -0
  130. package/dist/components/ai-elements/shimmer.d.ts.map +1 -0
  131. package/dist/components/ai-elements/shimmer.js +28 -0
  132. package/dist/components/ai-elements/snippet.d.ts +19 -0
  133. package/dist/components/ai-elements/snippet.d.ts.map +1 -0
  134. package/dist/components/ai-elements/snippet.js +46 -0
  135. package/dist/components/ai-elements/sources.d.ts +13 -0
  136. package/dist/components/ai-elements/sources.d.ts.map +1 -0
  137. package/dist/components/ai-elements/sources.js +9 -0
  138. package/dist/components/ai-elements/speech-input.d.ts +55 -0
  139. package/dist/components/ai-elements/speech-input.d.ts.map +1 -0
  140. package/dist/components/ai-elements/speech-input.js +187 -0
  141. package/dist/components/ai-elements/stack-trace.d.ts +38 -0
  142. package/dist/components/ai-elements/stack-trace.d.ts.map +1 -0
  143. package/dist/components/ai-elements/stack-trace.js +194 -0
  144. package/dist/components/ai-elements/suggestion.d.ts +11 -0
  145. package/dist/components/ai-elements/suggestion.d.ts.map +1 -0
  146. package/dist/components/ai-elements/suggestion.js +13 -0
  147. package/dist/components/ai-elements/task.d.ts +15 -0
  148. package/dist/components/ai-elements/task.d.ts.map +1 -0
  149. package/dist/components/ai-elements/task.js +10 -0
  150. package/dist/components/ai-elements/terminal.d.ts +28 -0
  151. package/dist/components/ai-elements/terminal.d.ts.map +1 -0
  152. package/dist/components/ai-elements/terminal.js +68 -0
  153. package/dist/components/ai-elements/test-results.d.ts +59 -0
  154. package/dist/components/ai-elements/test-results.d.ts.map +1 -0
  155. package/dist/components/ai-elements/test-results.js +98 -0
  156. package/dist/components/ai-elements/tool.d.ts +32 -0
  157. package/dist/components/ai-elements/tool.d.ts.map +1 -0
  158. package/dist/components/ai-elements/tool.js +49 -0
  159. package/dist/components/ai-elements/toolbar.d.ts +6 -0
  160. package/dist/components/ai-elements/toolbar.d.ts.map +1 -0
  161. package/dist/components/ai-elements/toolbar.js +5 -0
  162. package/dist/components/ai-elements/transcription.d.ts +17 -0
  163. package/dist/components/ai-elements/transcription.d.ts.map +1 -0
  164. package/dist/components/ai-elements/transcription.js +36 -0
  165. package/dist/components/ai-elements/voice-selector.d.ts +64 -0
  166. package/dist/components/ai-elements/voice-selector.d.ts.map +1 -0
  167. package/dist/components/ai-elements/voice-selector.js +224 -0
  168. package/dist/components/ai-elements/web-preview.d.ts +35 -0
  169. package/dist/components/ai-elements/web-preview.d.ts.map +1 -0
  170. package/dist/components/ai-elements/web-preview.js +66 -0
  171. package/dist/components/alert-dialog.d.ts +19 -0
  172. package/dist/components/alert-dialog.d.ts.map +1 -0
  173. package/dist/components/alert-dialog.js +42 -0
  174. package/dist/components/alert.d.ts +10 -0
  175. package/dist/components/alert.d.ts.map +1 -0
  176. package/dist/components/alert.js +24 -0
  177. package/dist/components/artifact-panel.d.ts +131 -0
  178. package/dist/components/artifact-panel.d.ts.map +1 -0
  179. package/dist/components/artifact-panel.js +189 -0
  180. package/dist/components/aspect-ratio.d.ts +4 -0
  181. package/dist/components/aspect-ratio.d.ts.map +1 -0
  182. package/dist/components/aspect-ratio.js +7 -0
  183. package/dist/components/automation-section.d.ts +76 -0
  184. package/dist/components/automation-section.d.ts.map +1 -0
  185. package/dist/components/automation-section.js +80 -0
  186. package/dist/components/avatar.d.ts +12 -0
  187. package/dist/components/avatar.d.ts.map +1 -0
  188. package/dist/components/avatar.js +23 -0
  189. package/dist/components/badge.d.ts +10 -0
  190. package/dist/components/badge.d.ts.map +1 -0
  191. package/dist/components/badge.js +25 -0
  192. package/dist/components/benefits-bento.d.ts +15 -0
  193. package/dist/components/benefits-bento.d.ts.map +1 -0
  194. package/dist/components/benefits-bento.js +6 -0
  195. package/dist/components/bento.d.ts +28 -0
  196. package/dist/components/bento.d.ts.map +1 -0
  197. package/dist/components/bento.js +48 -0
  198. package/dist/components/brand.d.ts +9 -0
  199. package/dist/components/brand.d.ts.map +1 -0
  200. package/dist/components/brand.js +16 -0
  201. package/dist/components/breadcrumb.d.ts +12 -0
  202. package/dist/components/breadcrumb.d.ts.map +1 -0
  203. package/dist/components/breadcrumb.js +28 -0
  204. package/dist/components/button-group.d.ts +12 -0
  205. package/dist/components/button-group.d.ts.map +1 -0
  206. package/dist/components/button-group.js +28 -0
  207. package/dist/components/button.d.ts +11 -0
  208. package/dist/components/button.d.ts.map +1 -0
  209. package/dist/components/button.js +36 -0
  210. package/dist/components/calendar.d.ts +9 -0
  211. package/dist/components/calendar.d.ts.map +1 -0
  212. package/dist/components/calendar.js +76 -0
  213. package/dist/components/card-marketing.d.ts +30 -0
  214. package/dist/components/card-marketing.d.ts.map +1 -0
  215. package/dist/components/card-marketing.js +48 -0
  216. package/dist/components/card.d.ts +10 -0
  217. package/dist/components/card.d.ts.map +1 -0
  218. package/dist/components/card.js +24 -0
  219. package/dist/components/carousel.d.ts +20 -0
  220. package/dist/components/carousel.d.ts.map +1 -0
  221. package/dist/components/carousel.js +91 -0
  222. package/dist/components/chart.d.ts +44 -0
  223. package/dist/components/chart.d.ts.map +1 -0
  224. package/dist/components/chart.js +132 -0
  225. package/dist/components/checkbox.d.ts +5 -0
  226. package/dist/components/checkbox.d.ts.map +1 -0
  227. package/dist/components/checkbox.js +9 -0
  228. package/dist/components/code-editor-mockup.d.ts +25 -0
  229. package/dist/components/code-editor-mockup.d.ts.map +1 -0
  230. package/dist/components/code-editor-mockup.js +47 -0
  231. package/dist/components/collapsible.d.ts +6 -0
  232. package/dist/components/collapsible.d.ts.map +1 -0
  233. package/dist/components/collapsible.js +13 -0
  234. package/dist/components/combobox.d.ts +25 -0
  235. package/dist/components/combobox.d.ts.map +1 -0
  236. package/dist/components/combobox.js +58 -0
  237. package/dist/components/command.d.ts +19 -0
  238. package/dist/components/command.d.ts.map +1 -0
  239. package/dist/components/command.js +34 -0
  240. package/dist/components/contact.d.ts +20 -0
  241. package/dist/components/contact.d.ts.map +1 -0
  242. package/dist/components/contact.js +24 -0
  243. package/dist/components/context-menu.d.ts +26 -0
  244. package/dist/components/context-menu.d.ts.map +1 -0
  245. package/dist/components/context-menu.js +51 -0
  246. package/dist/components/dashboard-shell.d.ts +24 -0
  247. package/dist/components/dashboard-shell.d.ts.map +1 -0
  248. package/dist/components/dashboard-shell.js +8 -0
  249. package/dist/components/demo-surface.d.ts +26 -0
  250. package/dist/components/demo-surface.d.ts.map +1 -0
  251. package/dist/components/demo-surface.js +14 -0
  252. package/dist/components/desktop-shell.d.ts +28 -0
  253. package/dist/components/desktop-shell.d.ts.map +1 -0
  254. package/dist/components/desktop-shell.js +8 -0
  255. package/dist/components/dialog.d.ts +18 -0
  256. package/dist/components/dialog.d.ts.map +1 -0
  257. package/dist/components/dialog.js +37 -0
  258. package/dist/components/direction.d.ts +8 -0
  259. package/dist/components/direction.d.ts.map +1 -0
  260. package/dist/components/direction.js +8 -0
  261. package/dist/components/drawer.d.ts +14 -0
  262. package/dist/components/drawer.d.ts.map +1 -0
  263. package/dist/components/drawer.js +34 -0
  264. package/dist/components/dropdown-menu.d.ts +26 -0
  265. package/dist/components/dropdown-menu.d.ts.map +1 -0
  266. package/dist/components/dropdown-menu.js +51 -0
  267. package/dist/components/empty.d.ts +12 -0
  268. package/dist/components/empty.d.ts.map +1 -0
  269. package/dist/components/empty.js +33 -0
  270. package/dist/components/fact-cell.d.ts +21 -0
  271. package/dist/components/fact-cell.d.ts.map +1 -0
  272. package/dist/components/fact-cell.js +29 -0
  273. package/dist/components/faq-item.d.ts +25 -0
  274. package/dist/components/faq-item.d.ts.map +1 -0
  275. package/dist/components/faq-item.js +25 -0
  276. package/dist/components/faq.d.ts +16 -0
  277. package/dist/components/faq.d.ts.map +1 -0
  278. package/dist/components/faq.js +18 -0
  279. package/dist/components/feedback-state.d.ts +14 -0
  280. package/dist/components/feedback-state.d.ts.map +1 -0
  281. package/dist/components/feedback-state.js +70 -0
  282. package/dist/components/field.d.ts +25 -0
  283. package/dist/components/field.d.ts.map +1 -0
  284. package/dist/components/field.js +76 -0
  285. package/dist/components/files-preview.d.ts +36 -0
  286. package/dist/components/files-preview.d.ts.map +1 -0
  287. package/dist/components/files-preview.js +96 -0
  288. package/dist/components/footer.d.ts +32 -0
  289. package/dist/components/footer.d.ts.map +1 -0
  290. package/dist/components/footer.js +53 -0
  291. package/dist/components/form.d.ts +25 -0
  292. package/dist/components/form.d.ts.map +1 -0
  293. package/dist/components/form.js +59 -0
  294. package/dist/components/hero-split.d.ts +23 -0
  295. package/dist/components/hero-split.d.ts.map +1 -0
  296. package/dist/components/hero-split.js +34 -0
  297. package/dist/components/hover-card.d.ts +7 -0
  298. package/dist/components/hover-card.d.ts.map +1 -0
  299. package/dist/components/hover-card.js +14 -0
  300. package/dist/components/input-group.d.ts +17 -0
  301. package/dist/components/input-group.d.ts.map +1 -0
  302. package/dist/components/input-group.js +63 -0
  303. package/dist/components/input-otp.d.ts +12 -0
  304. package/dist/components/input-otp.d.ts.map +1 -0
  305. package/dist/components/input-otp.js +21 -0
  306. package/dist/components/input.d.ts +4 -0
  307. package/dist/components/input.d.ts.map +1 -0
  308. package/dist/components/input.js +6 -0
  309. package/dist/components/installer-shell.d.ts +25 -0
  310. package/dist/components/installer-shell.d.ts.map +1 -0
  311. package/dist/components/installer-shell.js +36 -0
  312. package/dist/components/item.d.ts +24 -0
  313. package/dist/components/item.d.ts.map +1 -0
  314. package/dist/components/item.js +67 -0
  315. package/dist/components/kbd.d.ts +4 -0
  316. package/dist/components/kbd.d.ts.map +1 -0
  317. package/dist/components/kbd.js +9 -0
  318. package/dist/components/label.d.ts +5 -0
  319. package/dist/components/label.d.ts.map +1 -0
  320. package/dist/components/label.js +8 -0
  321. package/dist/components/logo-band.d.ts +23 -0
  322. package/dist/components/logo-band.d.ts.map +1 -0
  323. package/dist/components/logo-band.js +35 -0
  324. package/dist/components/logo-tile.d.ts +21 -0
  325. package/dist/components/logo-tile.d.ts.map +1 -0
  326. package/dist/components/logo-tile.js +27 -0
  327. package/dist/components/media-mount.d.ts +13 -0
  328. package/dist/components/media-mount.d.ts.map +1 -0
  329. package/dist/components/media-mount.js +17 -0
  330. package/dist/components/menubar.d.ts +27 -0
  331. package/dist/components/menubar.d.ts.map +1 -0
  332. package/dist/components/menubar.js +54 -0
  333. package/dist/components/native-select.d.ts +8 -0
  334. package/dist/components/native-select.d.ts.map +1 -0
  335. package/dist/components/native-select.js +13 -0
  336. package/dist/components/nav-bar.d.ts +20 -0
  337. package/dist/components/nav-bar.d.ts.map +1 -0
  338. package/dist/components/nav-bar.js +30 -0
  339. package/dist/components/navigation-menu.d.ts +15 -0
  340. package/dist/components/navigation-menu.d.ts.map +1 -0
  341. package/dist/components/navigation-menu.js +32 -0
  342. package/dist/components/newsletter.d.ts +24 -0
  343. package/dist/components/newsletter.d.ts.map +1 -0
  344. package/dist/components/newsletter.js +31 -0
  345. package/dist/components/page-frame.d.ts +30 -0
  346. package/dist/components/page-frame.d.ts.map +1 -0
  347. package/dist/components/page-frame.js +30 -0
  348. package/dist/components/pagination.d.ts +14 -0
  349. package/dist/components/pagination.d.ts.map +1 -0
  350. package/dist/components/pagination.js +29 -0
  351. package/dist/components/plugin-slot-boundary.d.ts +27 -0
  352. package/dist/components/plugin-slot-boundary.d.ts.map +1 -0
  353. package/dist/components/plugin-slot-boundary.js +24 -0
  354. package/dist/components/popover.d.ts +11 -0
  355. package/dist/components/popover.d.ts.map +1 -0
  356. package/dist/components/popover.js +26 -0
  357. package/dist/components/pricing-card.d.ts +35 -0
  358. package/dist/components/pricing-card.d.ts.map +1 -0
  359. package/dist/components/pricing-card.js +55 -0
  360. package/dist/components/pricing.d.ts +28 -0
  361. package/dist/components/pricing.d.ts.map +1 -0
  362. package/dist/components/pricing.js +22 -0
  363. package/dist/components/progress.d.ts +5 -0
  364. package/dist/components/progress.d.ts.map +1 -0
  365. package/dist/components/progress.js +8 -0
  366. package/dist/components/proof-slot.d.ts +8 -0
  367. package/dist/components/proof-slot.d.ts.map +1 -0
  368. package/dist/components/proof-slot.js +8 -0
  369. package/dist/components/quote-card.d.ts +23 -0
  370. package/dist/components/quote-card.d.ts.map +1 -0
  371. package/dist/components/quote-card.js +36 -0
  372. package/dist/components/radio-group.d.ts +6 -0
  373. package/dist/components/radio-group.d.ts.map +1 -0
  374. package/dist/components/radio-group.js +12 -0
  375. package/dist/components/resizable.d.ts +8 -0
  376. package/dist/components/resizable.d.ts.map +1 -0
  377. package/dist/components/resizable.js +14 -0
  378. package/dist/components/scroll-area.d.ts +6 -0
  379. package/dist/components/scroll-area.d.ts.map +1 -0
  380. package/dist/components/scroll-area.js +13 -0
  381. package/dist/components/section-intro.d.ts +18 -0
  382. package/dist/components/section-intro.d.ts.map +1 -0
  383. package/dist/components/section-intro.js +22 -0
  384. package/dist/components/select.d.ts +16 -0
  385. package/dist/components/select.d.ts.map +1 -0
  386. package/dist/components/select.js +38 -0
  387. package/dist/components/separator.d.ts +5 -0
  388. package/dist/components/separator.d.ts.map +1 -0
  389. package/dist/components/separator.js +8 -0
  390. package/dist/components/settings-section.d.ts +31 -0
  391. package/dist/components/settings-section.d.ts.map +1 -0
  392. package/dist/components/settings-section.js +37 -0
  393. package/dist/components/sheet.d.ts +15 -0
  394. package/dist/components/sheet.d.ts.map +1 -0
  395. package/dist/components/sheet.js +40 -0
  396. package/dist/components/shift-band.d.ts +14 -0
  397. package/dist/components/shift-band.d.ts.map +1 -0
  398. package/dist/components/shift-band.js +10 -0
  399. package/dist/components/sidebar.d.ts +70 -0
  400. package/dist/components/sidebar.d.ts.map +1 -0
  401. package/dist/components/sidebar.js +212 -0
  402. package/dist/components/skeleton.d.ts +3 -0
  403. package/dist/components/skeleton.d.ts.map +1 -0
  404. package/dist/components/skeleton.js +6 -0
  405. package/dist/components/slider.d.ts +5 -0
  406. package/dist/components/slider.d.ts.map +1 -0
  407. package/dist/components/slider.js +14 -0
  408. package/dist/components/sonner.d.ts +4 -0
  409. package/dist/components/sonner.d.ts.map +1 -0
  410. package/dist/components/sonner.js +19 -0
  411. package/dist/components/spinner.d.ts +3 -0
  412. package/dist/components/spinner.d.ts.map +1 -0
  413. package/dist/components/spinner.js +7 -0
  414. package/dist/components/stat-block.d.ts +20 -0
  415. package/dist/components/stat-block.d.ts.map +1 -0
  416. package/dist/components/stat-block.js +20 -0
  417. package/dist/components/stats-band.d.ts +18 -0
  418. package/dist/components/stats-band.d.ts.map +1 -0
  419. package/dist/components/stats-band.js +28 -0
  420. package/dist/components/switch.d.ts +7 -0
  421. package/dist/components/switch.d.ts.map +1 -0
  422. package/dist/components/switch.js +8 -0
  423. package/dist/components/table.d.ts +11 -0
  424. package/dist/components/table.d.ts.map +1 -0
  425. package/dist/components/table.js +28 -0
  426. package/dist/components/tabs.d.ts +12 -0
  427. package/dist/components/tabs.d.ts.map +1 -0
  428. package/dist/components/tabs.js +29 -0
  429. package/dist/components/testimonials.d.ts +21 -0
  430. package/dist/components/testimonials.d.ts.map +1 -0
  431. package/dist/components/testimonials.js +28 -0
  432. package/dist/components/textarea.d.ts +4 -0
  433. package/dist/components/textarea.d.ts.map +1 -0
  434. package/dist/components/textarea.js +6 -0
  435. package/dist/components/toggle-group.d.ts +10 -0
  436. package/dist/components/toggle-group.d.ts.map +1 -0
  437. package/dist/components/toggle-group.js +22 -0
  438. package/dist/components/toggle.d.ts +10 -0
  439. package/dist/components/toggle.d.ts.map +1 -0
  440. package/dist/components/toggle.js +26 -0
  441. package/dist/components/tooltip.d.ts +8 -0
  442. package/dist/components/tooltip.d.ts.map +1 -0
  443. package/dist/components/tooltip.js +17 -0
  444. package/dist/components/use-case-bento.d.ts +13 -0
  445. package/dist/components/use-case-bento.d.ts.map +1 -0
  446. package/dist/components/use-case-bento.js +9 -0
  447. package/dist/components/watch-it-work-band.d.ts +11 -0
  448. package/dist/components/watch-it-work-band.d.ts.map +1 -0
  449. package/dist/components/watch-it-work-band.js +8 -0
  450. package/dist/hooks/use-mobile.d.ts +2 -0
  451. package/dist/hooks/use-mobile.d.ts.map +1 -0
  452. package/dist/hooks/use-mobile.js +16 -0
  453. package/dist/index.d.ts +101 -0
  454. package/dist/index.d.ts.map +1 -0
  455. package/dist/index.js +100 -0
  456. package/dist/lib/agent-attachment.d.ts +11 -0
  457. package/dist/lib/agent-attachment.d.ts.map +1 -0
  458. package/dist/lib/agent-attachment.js +19 -0
  459. package/dist/lib/utils.d.ts +3 -0
  460. package/dist/lib/utils.d.ts.map +1 -0
  461. package/dist/lib/utils.js +5 -0
  462. package/dist/styles/globals.css +362 -0
  463. package/docs/agent-work-surfaces.md +98 -0
  464. package/docs/agents/nadicodeai-ui.md +229 -0
  465. package/docs/component-classification.md +44 -0
  466. package/docs/migration/nadia-consumer-readiness.md +85 -0
  467. package/docs/product-compositions.md +77 -0
  468. package/docs/product-sections.md +200 -0
  469. package/docs/terminal-tui-semantics.md +211 -0
  470. package/llms.txt +75 -0
  471. package/package.json +95 -0
  472. package/skills/nadicodeai-ui/SKILL.md +80 -0
package/AGENTS.md ADDED
@@ -0,0 +1,114 @@
1
+ # @nadicodeai/ui - Agent Rules
2
+
3
+ The `@nadicodeai/ui` npm workspace: the shared NadicodeAI React UI package on brand tokens (Tailwind v4, semantic light/dark roles), per ADR 0007. It ships shadcn primitives, AI Elements, React adapters over the design-system grammar, reusable marketing/section compositions, and plan-approved product components once their source/export/tests/docs exist. It is source-authored in `src/` and published from built `dist` JavaScript, declarations, and CSS. Read this file before working in the component library. For website page assembly, also read **`../website/AGENTS.md`**; for portal screens, read **`../portal/AGENTS.md`**.
4
+
5
+ When this file is read from an installed package, use it as the consumer agent
6
+ contract: import `@nadicodeai/ui/globals.css` and
7
+ `@nadicodeai/design-system/css` once at the app root, import components from
8
+ `@nadicodeai/ui/components/*` or `@nadicodeai/ui/ai-elements`, and keep all
9
+ new UI token-only. Dark mode is a `.dark` selector remap of semantic roles and
10
+ UI-local product aliases in `globals.css`; components must not add `dark:` utilities,
11
+ OS dark-mode branching, or raw palette values. The package also ships `llms.txt`,
12
+ `docs/agents/nadicodeai-ui.md`, `docs/migration/`, and
13
+ `skills/nadicodeai-ui/SKILL.md` for agents that index package documentation or
14
+ skills.
15
+
16
+ ## Invariants
17
+
18
+ - **Token-only, no raw literals.** Components style through brand tokens only — the `nadicode.theme.css` role vars bridged into Tailwind utilities (`bg-background`, `text-foreground`, `border-input`, …) plus UI-local product aliases defined in `globals.css` such as `--nc-app-surface`, `--nc-chat-tool-surface`, and `--nc-terminal-bg`. No raw `#hex` / `rgb()` / `hsl()` in any `.tsx`; a new source value goes to `design-system/DESIGN.md` first and flows through generated tokens. Enforced by `tests/no-raw-literal.test.ts` and `tests/token-reference-integrity.test.ts`.
19
+ - **Dark-ready roles, no component `dark:` styling.** `globals.css` owns the `:root` and `.dark` remaps for shadcn roles and UI-local product aliases. Components consume semantic utilities or product aliases such as `var(--nc-app-surface)`; they must not ship `dark:` Tailwind utilities, OS dark-mode branching, or raw dark palette utilities such as `dark:bg-slate-950` / `dark:text-white`. Enforced by `tests/no-dark.test.ts` and `tests/dark-semantic-roles.test.ts`.
20
+ - **Components inherit the brand theme.** Consumers import `@nadicodeai/ui/globals.css` (Tailwind + the generated brand `@theme` + semantic role/alias maps) and `@nadicodeai/design-system/css` (kept `nc-*` geometry, type scale, chat CSS components, motion, and display components). Components carry no theme of their own — they resolve every color/radius from bridged brand tokens, UI-local aliases, and design-system CSS.
21
+ - **Source-authored, built package.** Components are authored as shadcn-style source in this workspace, then emitted to `dist/` for consumption by other apps. Package exports must point at built JS/declarations/CSS, not raw `src/*.tsx`, and `npm pack --dry-run` must include only intentional consumer artifacts.
22
+ - **shadcn and AI Elements are package surface.** The installed shadcn source components under `src/components/` and all 48 Vercel AI Elements under `src/components/ai-elements/` are intentional ready-to-use exports. Keep `src/index.ts`, `src/ai-elements.ts`, package `exports`, README/agent docs, and `website/app/ui-check/elements` synchronized whenever this surface changes.
23
+ - **Named shadcn blocks stay named.** When a user, plan, or issue selects a shadcn block/example such as `login-02`, `signup-02`, `dashboard-01`, or `sidebar-*`, use that registry item as the source of truth through shadcn CLI/MCP. Do not replace it with a package-authored abstraction unless the plan explicitly records the substitution, the reason, and the true consumer route that proves it.
24
+ - **Package surface is source-backed.** `src/components/` is intentionally flat shadcn-style source. Do not document folders or package namespaces that do not exist. Do not add top-level exports for recipes, blocks, agent, or terminal groupings unless a later package API decision adds concrete source, built files, docs, and tests in the same change.
25
+ - **Auth routes are consumer-owned shadcn block work.** Login, signup, OTP, two-factor, magic-link, and provider-button flows start from the selected shadcn block/example in the consuming app, with app-owned Better Auth behavior. Do not ship generic auth, signup, OTP, federated-login, or provider abstractions from this package unless a later explicit boundary decision replaces the selected shadcn block.
26
+ - **Standard components, not app-owned product features.** This package ships primitives, standard UI components, AI Elements, brand adapters, React adapters, reusable sections, and presentational product components such as settings, shells, plugin boundaries, installer states, agent chat, artifacts, files, diffs, and redacted terminal summaries. It must not ship app-specific feature/use-case screens or names such as operator-login, portal activation, customer credential control, customer management, or other product-domain use cases. Generic data tables, command palettes, and chart cards are app-owned shadcn registry adaptations, not NadicodeAI package abstractions. Those screens live in the consuming app and are built from `@nadicodeai/ui` components and first-party shadcn blocks/examples.
27
+ - **Design-system geometry remains the foundation.** React components compose the kept `nc-*` page grammar and display CSS components; they do not redefine frame math, marker placement, token values, or raw CSS geometry. Use parent-paints-plus-gap for bordered cell grids and keep every visible seam single-owner.
28
+ - **Reusable sections and compositions live here after proof.** Bento grids, media mounts, demo surfaces, page frames, section intros, CTA bands, proof slots, benefits grids, generic shells, and homepage/use-case sections belong in `@nadicodeai/ui` when a second concrete consumer, a plan-approved shared component, or a named validation slice proves the package boundary. Website, portal, and sibling Nadia routes should pass data and media children into existing compositions instead of rebuilding layout locally.
29
+ - **Brand renderers live here for React consumers.** `BrandMark` is the logo mark, and `BrandWordmark` is the text-only wordmark. A full lockup is exactly one `BrandMark` followed by one `BrandWordmark`; compact mark-only usage uses `BrandMark` alone. These adapters are the only place React code imports the raw `@nadicodeai/design-system/assets/*` logo SVG exports. Website, portal, and sibling routes use these adapters instead of importing logo assets directly, drawing brand SVG inline, masking/recoloring assets, or embedding the mark inside the wordmark.
30
+ - **No fake proof APIs.** Components may support future testimonials, logos, stats, and proof slots, but they must render nothing public when the proof is absent. Do not ship placeholder customer names, metrics, or logos.
31
+
32
+ ## Reusable Section Vocabulary
33
+
34
+ The soft-launch homepage relies on this reusable vocabulary, and future reusable
35
+ marketing/product sections should extend the same model:
36
+
37
+ - `PageFrame` / `PageRow` wrappers for the kept page system.
38
+ - `SectionIntro` for section headers.
39
+ - `Bento` compound components for bordered marketing grids.
40
+ - `MediaMount` for image, video, poster, and artifact mounts.
41
+ - `DemoSurface` for chat, artifact, approval, tool-trace, image, and video demos.
42
+ - `ShiftBand`, `UseCaseBento`, `WatchItWorkBand`, `BenefitsBento`, and
43
+ `ProofSlot` for homepage-level compositions.
44
+ - Existing reusable sections/compositions such as `HeroSplit`, `ActionBand`, `Faq`, `Footer`, `NavBar`,
45
+ `LogoBand`, `Testimonials`, and `StatsBand` when their proof/content is real.
46
+
47
+ When a page needs a variation, extend these source components with a small,
48
+ typed prop or slot. Do not fork the same layout in `website/`.
49
+
50
+ ## shadcn / AI Elements Discovery
51
+
52
+ Use live shadcn MCP or CLI discovery while maintaining this package. MCP/CLI is
53
+ for browsing, searching, viewing docs, previewing diffs, and installing current
54
+ registry source during implementation. `@nadicodeai/ui` does not maintain a
55
+ committed upstream registry inventory, registry snapshot, or inventory update
56
+ script.
57
+
58
+ From `@nadicodeai/ui`, initialize Codex MCP only when the local runtime supports
59
+ it:
60
+
61
+ ```bash
62
+ npx shadcn@latest mcp init --client codex
63
+ ```
64
+
65
+ CLI fallbacks:
66
+
67
+ ```bash
68
+ npx shadcn@latest info --json
69
+ npx shadcn@latest search @shadcn -q "select" --json
70
+ npx shadcn@latest search @ai-elements -q "message" --json
71
+ npx shadcn@latest docs button select dialog --json
72
+ npx shadcn@latest view @shadcn/button
73
+ npx shadcn@latest add @shadcn/button --dry-run
74
+ npx shadcn@latest add @ai-elements/message --dry-run
75
+ ```
76
+
77
+ Use `info --json` for project-aware aliases, Tailwind version, base primitive
78
+ library, icon library, resolved source paths, and configured registries. Use
79
+ `search`, `docs`, and `view` before adding source; use `add --dry-run` or
80
+ `add --diff` before changing files. Do not use `--overwrite` unless the
81
+ maintainer explicitly asks for an upstream refresh and the diff is reviewed.
82
+
83
+ ## Product Components And Consumer Readiness
84
+
85
+ Use public component subpaths for product UI:
86
+
87
+ - `@nadicodeai/ui/components/agent-chat`
88
+ - `@nadicodeai/ui/components/agent-composer`
89
+ - `@nadicodeai/ui/components/agent-message`
90
+ - `@nadicodeai/ui/components/agent-thread`
91
+ - `@nadicodeai/ui/components/agent-tool-approval`
92
+ - `@nadicodeai/ui/components/artifact-panel`
93
+ - `@nadicodeai/ui/components/automation-section`
94
+ - `@nadicodeai/ui/components/dashboard-shell`
95
+ - `@nadicodeai/ui/components/desktop-shell`
96
+ - `@nadicodeai/ui/components/feedback-state`
97
+ - `@nadicodeai/ui/components/files-preview`
98
+ - `@nadicodeai/ui/components/installer-shell`
99
+ - `@nadicodeai/ui/components/plugin-slot-boundary`
100
+ - `@nadicodeai/ui/components/settings-section`
101
+
102
+ Consumers own routing, auth, app data, server actions, runtime adapters,
103
+ permission decisions, analytics, and app-specific copy. The package owns the
104
+ presentational structure and state vocabulary only. Follow
105
+ `docs/migration/nadia-consumer-readiness.md`: validate a web/admin or portal
106
+ slice first, installer second, desktop shell third, desktop chat last, and TUI
107
+ through `docs/terminal-tui-semantics.md`.
108
+
109
+ ## Commands
110
+
111
+ | Command | When |
112
+ | --- | --- |
113
+ | `npm run build -w @nadicodeai/ui` | Emit the consumable `dist/` package surface before packing or app builds |
114
+ | `npm run test -w @nadicodeai/ui` | Run this workspace's guards (browser-free; also runs inside the root `npm run test` gate) |
package/README.md ADDED
@@ -0,0 +1,211 @@
1
+ # @nadicodeai/ui
2
+
3
+ Shared React UI for NadicodeAI ecosystem apps, authored as shadcn-style source
4
+ and published as a built package.
5
+
6
+ The package exports ESM JavaScript, TypeScript declarations, and the Tailwind v4
7
+ entry stylesheet needed by consuming apps. It is intentionally coupled to
8
+ `@nadicodeai/design-system`: the design-system package owns brand tokens,
9
+ framework-agnostic geometry, fonts, assets, and CSS components; this package owns
10
+ React components and reusable section compositions on those tokens. Shared
11
+ product compositions from
12
+ `../docs/plans/2026-06-23-001-feat-nadia-product-ui-package-plan.md` now ship
13
+ when their source, public subpath export, docs, and tests exist.
14
+
15
+ The package ships:
16
+
17
+ - shadcn source components under `@nadicodeai/ui/components/*`
18
+ - all 48 Vercel AI Elements under `@nadicodeai/ui/components/ai-elements/*`
19
+ - an AI Elements barrel at `@nadicodeai/ui/ai-elements`
20
+ - React adapters over the design-system grammar and assets
21
+ - reusable marketing/section compositions
22
+ - presentational product components such as `SettingsSection`,
23
+ `DashboardShell`, `AgentChat`, `InstallerShell`, and `PluginSlotBoundary`
24
+ - package-local agent guidance: `AGENTS.md`, `llms.txt`,
25
+ `docs/agents/nadicodeai-ui.md`, `docs/migration/`, and
26
+ `skills/nadicodeai-ui/SKILL.md`
27
+
28
+ The package surface is source-backed. `src/components/` is a flat shadcn-style
29
+ source surface; do not document folders or package namespaces that do not exist.
30
+ Do not add top-level exports for recipes, blocks, agent, or terminal groupings
31
+ until a concrete package API decision adds source, built files, docs, and tests
32
+ together. Routes, persistence, auth behavior, server state, runtime adapters,
33
+ and app-owned product features/use cases stay in consuming apps such as
34
+ `website/`, `portal/`, and sibling Nadia apps. Product-specific names such as
35
+ `operator-login`, portal activation, and customer credential control stay out of
36
+ package components.
37
+
38
+ ## Install
39
+
40
+ Install both NadicodeAI packages and the required peers in the consuming app:
41
+
42
+ ```bash
43
+ npm install @nadicodeai/design-system @nadicodeai/ui react react-dom tailwindcss @tailwindcss/postcss
44
+ ```
45
+
46
+ The package is scoped for public npm registry publishing.
47
+
48
+ ## CSS
49
+
50
+ Import the UI Tailwind entry and the design-system CSS once at the app root:
51
+
52
+ ```tsx
53
+ import "@nadicodeai/ui/globals.css";
54
+ import "@nadicodeai/design-system/css";
55
+ ```
56
+
57
+ `@nadicodeai/ui/globals.css` imports Tailwind v4, the generated NadicodeAI
58
+ Tailwind theme, the shadcn role bridge, and the package-local semantic
59
+ `:root`/`.dark` maps. The `.dark` selector remaps shadcn roles plus UI-local
60
+ product aliases for app shell/surface, chat/tool/composer, approval, diff/code,
61
+ terminal/ANSI, trace/status, provider/model, and plugin permission UI. Those
62
+ aliases reference generated `--nc-*` tokens or semantic roles; they are not a
63
+ new source-token group. `@nadicodeai/design-system/css` provides the kept
64
+ `nc-*` page grammar, type scale, geometry, chat CSS components, motion, and
65
+ brand display components that many UI components compose.
66
+
67
+ Components should consume semantic utilities such as `bg-background`,
68
+ `text-foreground`, and `border-border`, or product aliases such as
69
+ `var(--nc-app-surface)` and `var(--nc-terminal-bg)` where a product role is
70
+ needed. Do not add component-level Tailwind `dark:` utilities, OS dark-mode
71
+ branching, raw color literals, or raw palette utilities.
72
+
73
+ For Next.js App Router apps, place both imports in the root layout. The app still
74
+ owns its PostCSS setup; this package does not export a PostCSS config.
75
+
76
+ ## Imports
77
+
78
+ Prefer direct subpath imports in app code:
79
+
80
+ ```tsx
81
+ import { Button } from "@nadicodeai/ui/components/button";
82
+ import { PageFrame } from "@nadicodeai/ui/components/page-frame";
83
+ import { Message } from "@nadicodeai/ui/components/ai-elements/message";
84
+ ```
85
+
86
+ The root export is available for tooling and DX, but direct component subpaths
87
+ keep package use explicit and friendly to bundlers.
88
+
89
+ AI Elements can also be imported from the dedicated barrel:
90
+
91
+ ```tsx
92
+ import { Message, PromptInput, Reasoning, Tool } from "@nadicodeai/ui/ai-elements";
93
+ ```
94
+
95
+ Product components use the same public component subpaths:
96
+
97
+ ```tsx
98
+ import { DashboardShell } from "@nadicodeai/ui/components/dashboard-shell";
99
+ import { AgentChat } from "@nadicodeai/ui/components/agent-chat";
100
+ ```
101
+
102
+ ## Product components
103
+
104
+ Product components are presentational. The package owns shared layout,
105
+ state-display, shell, plugin-boundary, installer, settings, chat, artifact,
106
+ diff, and redacted terminal summary UI. Consuming apps own
107
+ routes, app data, auth, server actions, persistence, permission decisions,
108
+ runtime adapters, analytics, and product-specific copy.
109
+
110
+ Generic product widgets that shadcn already ships as first-party registry
111
+ source, such as data tables, command palettes, and chart cards, are app-owned
112
+ shadcn block/example adaptations. Do not add a second package abstraction over
113
+ those registry items.
114
+
115
+ Current product subpaths:
116
+
117
+ - `@nadicodeai/ui/components/agent-chat`
118
+ - `@nadicodeai/ui/components/agent-composer`
119
+ - `@nadicodeai/ui/components/agent-message`
120
+ - `@nadicodeai/ui/components/agent-thread`
121
+ - `@nadicodeai/ui/components/agent-tool-approval`
122
+ - `@nadicodeai/ui/components/artifact-panel`
123
+ - `@nadicodeai/ui/components/automation-section`
124
+ - `@nadicodeai/ui/components/dashboard-shell`
125
+ - `@nadicodeai/ui/components/desktop-shell`
126
+ - `@nadicodeai/ui/components/feedback-state`
127
+ - `@nadicodeai/ui/components/files-preview`
128
+ - `@nadicodeai/ui/components/installer-shell`
129
+ - `@nadicodeai/ui/components/plugin-slot-boundary`
130
+ - `@nadicodeai/ui/components/settings-section`
131
+
132
+ Recommended migration order is documented in
133
+ `docs/migration/nadia-consumer-readiness.md`: web admin or portal first,
134
+ installer second, desktop shell third, desktop chat last, and terminal/TUI
135
+ consumers through `docs/terminal-tui-semantics.md`.
136
+
137
+ ## shadcn and AI Elements discovery
138
+
139
+ Use shadcn MCP or the CLI for live discovery and install guidance while working
140
+ in this package. Do not maintain a committed upstream registry inventory,
141
+ registry snapshot, or inventory update script in `@nadicodeai/ui`; the source
142
+ files and package exports are the committed surface.
143
+
144
+ From `@nadicodeai/ui`, Codex-capable environments can initialize the shadcn MCP
145
+ client configuration when the local runtime supports MCP:
146
+
147
+ ```bash
148
+ npx shadcn@latest mcp init --client codex
149
+ ```
150
+
151
+ When MCP is unavailable, use the CLI directly:
152
+
153
+ ```bash
154
+ npx shadcn@latest info --json
155
+ npx shadcn@latest search @shadcn -q "select" --json
156
+ npx shadcn@latest search @ai-elements -q "message" --json
157
+ npx shadcn@latest docs button select dialog --json
158
+ npx shadcn@latest view @shadcn/button
159
+ npx shadcn@latest add @shadcn/button --dry-run
160
+ npx shadcn@latest add @ai-elements/message --dry-run
161
+ ```
162
+
163
+ `info --json` is the project-aware source of truth for aliases, Tailwind version,
164
+ base primitive library, icon library, resolved source paths, and configured
165
+ registries. Use `search`, `docs`, and `view` to inspect current registry items
166
+ before adding or refreshing source. Review `add --dry-run` or `add --diff`
167
+ output before changing files, and do not use `--overwrite` unless the maintainer
168
+ explicitly asks for an upstream refresh.
169
+
170
+ ## Forms
171
+
172
+ Use one form model:
173
+
174
+ - `Input`, `Textarea`, `Select`, `Checkbox`, and similar files are controls.
175
+ - `FieldGroup`, `Field`, `FieldLabel`, `FieldDescription`, and `FieldError`
176
+ provide field layout and accessible label/error structure.
177
+ - `Form`, `FormField`, `FormItem`, `FormControl`, `FormLabel`,
178
+ `FormDescription`, and `FormMessage` are the React Hook Form integration.
179
+
180
+ Do not add or import a separate `FormInput`/`FormTextarea` control family. If a
181
+ new input size or behavior is needed, add it to the canonical shadcn control or
182
+ field primitive instead of creating a parallel form-control API.
183
+
184
+ ## Agent instructions
185
+
186
+ The npm package includes agent-facing files on purpose. Agents should read:
187
+
188
+ - `AGENTS.md` for the package contract
189
+ - `llms.txt` for a concise import/setup index
190
+ - `docs/agents/nadicodeai-ui.md` for detailed usage and maintenance guidance
191
+ - `docs/migration/nadia-consumer-readiness.md` for consumer migration order
192
+ and readiness gates
193
+ - `skills/nadicodeai-ui/SKILL.md` when the agent runtime supports skills
194
+
195
+ These files are packaged through npm `files`; they are not runtime module
196
+ exports.
197
+
198
+ ## Build
199
+
200
+ ```bash
201
+ npm run build -w @nadicodeai/ui
202
+ ```
203
+
204
+ The build emits:
205
+
206
+ - `dist/**/*.js`
207
+ - `dist/**/*.d.ts`
208
+ - `dist/styles/globals.css`
209
+
210
+ `dist`, this README, package docs, and the package agent-instruction files are
211
+ packed.
@@ -0,0 +1,49 @@
1
+ export * from "./components/ai-elements/agent";
2
+ export * from "./components/ai-elements/artifact";
3
+ export * from "./components/ai-elements/attachments";
4
+ export * from "./components/ai-elements/audio-player";
5
+ export * from "./components/ai-elements/canvas";
6
+ export * from "./components/ai-elements/chain-of-thought";
7
+ export * from "./components/ai-elements/checkpoint";
8
+ export * from "./components/ai-elements/code-block";
9
+ export * from "./components/ai-elements/commit";
10
+ export * from "./components/ai-elements/confirmation";
11
+ export * from "./components/ai-elements/connection";
12
+ export * from "./components/ai-elements/context";
13
+ export * from "./components/ai-elements/controls";
14
+ export * from "./components/ai-elements/conversation";
15
+ export * from "./components/ai-elements/edge";
16
+ export * from "./components/ai-elements/environment-variables";
17
+ export * from "./components/ai-elements/file-tree";
18
+ export * from "./components/ai-elements/image";
19
+ export * from "./components/ai-elements/inline-citation";
20
+ export * from "./components/ai-elements/jsx-preview";
21
+ export * from "./components/ai-elements/message";
22
+ export * from "./components/ai-elements/mic-selector";
23
+ export * from "./components/ai-elements/model-selector";
24
+ export * from "./components/ai-elements/node";
25
+ export * from "./components/ai-elements/open-in-chat";
26
+ export * from "./components/ai-elements/package-info";
27
+ export * from "./components/ai-elements/panel";
28
+ export * from "./components/ai-elements/persona";
29
+ export * from "./components/ai-elements/plan";
30
+ export * from "./components/ai-elements/prompt-input";
31
+ export * from "./components/ai-elements/queue";
32
+ export * from "./components/ai-elements/reasoning";
33
+ export * from "./components/ai-elements/sandbox";
34
+ export * from "./components/ai-elements/schema-display";
35
+ export * from "./components/ai-elements/shimmer";
36
+ export * from "./components/ai-elements/snippet";
37
+ export * from "./components/ai-elements/sources";
38
+ export * from "./components/ai-elements/speech-input";
39
+ export * from "./components/ai-elements/stack-trace";
40
+ export * from "./components/ai-elements/suggestion";
41
+ export * from "./components/ai-elements/task";
42
+ export * from "./components/ai-elements/terminal";
43
+ export * from "./components/ai-elements/test-results";
44
+ export * from "./components/ai-elements/tool";
45
+ export * from "./components/ai-elements/toolbar";
46
+ export * from "./components/ai-elements/transcription";
47
+ export * from "./components/ai-elements/voice-selector";
48
+ export * from "./components/ai-elements/web-preview";
49
+ //# sourceMappingURL=ai-elements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-elements.d.ts","sourceRoot":"","sources":["../src/ai-elements.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAA;AAC9C,cAAc,mCAAmC,CAAA;AACjD,cAAc,sCAAsC,CAAA;AACpD,cAAc,uCAAuC,CAAA;AACrD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,2CAA2C,CAAA;AACzD,cAAc,qCAAqC,CAAA;AACnD,cAAc,qCAAqC,CAAA;AACnD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,uCAAuC,CAAA;AACrD,cAAc,qCAAqC,CAAA;AACnD,cAAc,kCAAkC,CAAA;AAChD,cAAc,mCAAmC,CAAA;AACjD,cAAc,uCAAuC,CAAA;AACrD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,gDAAgD,CAAA;AAC9D,cAAc,oCAAoC,CAAA;AAClD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,0CAA0C,CAAA;AACxD,cAAc,sCAAsC,CAAA;AACpD,cAAc,kCAAkC,CAAA;AAChD,cAAc,uCAAuC,CAAA;AACrD,cAAc,yCAAyC,CAAA;AACvD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,uCAAuC,CAAA;AACrD,cAAc,uCAAuC,CAAA;AACrD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,kCAAkC,CAAA;AAChD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,uCAAuC,CAAA;AACrD,cAAc,gCAAgC,CAAA;AAC9C,cAAc,oCAAoC,CAAA;AAClD,cAAc,kCAAkC,CAAA;AAChD,cAAc,yCAAyC,CAAA;AACvD,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA;AAChD,cAAc,uCAAuC,CAAA;AACrD,cAAc,sCAAsC,CAAA;AACpD,cAAc,qCAAqC,CAAA;AACnD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,mCAAmC,CAAA;AACjD,cAAc,uCAAuC,CAAA;AACrD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,kCAAkC,CAAA;AAChD,cAAc,wCAAwC,CAAA;AACtD,cAAc,yCAAyC,CAAA;AACvD,cAAc,sCAAsC,CAAA"}
@@ -0,0 +1,48 @@
1
+ export * from "./components/ai-elements/agent.js";
2
+ export * from "./components/ai-elements/artifact.js";
3
+ export * from "./components/ai-elements/attachments.js";
4
+ export * from "./components/ai-elements/audio-player.js";
5
+ export * from "./components/ai-elements/canvas.js";
6
+ export * from "./components/ai-elements/chain-of-thought.js";
7
+ export * from "./components/ai-elements/checkpoint.js";
8
+ export * from "./components/ai-elements/code-block.js";
9
+ export * from "./components/ai-elements/commit.js";
10
+ export * from "./components/ai-elements/confirmation.js";
11
+ export * from "./components/ai-elements/connection.js";
12
+ export * from "./components/ai-elements/context.js";
13
+ export * from "./components/ai-elements/controls.js";
14
+ export * from "./components/ai-elements/conversation.js";
15
+ export * from "./components/ai-elements/edge.js";
16
+ export * from "./components/ai-elements/environment-variables.js";
17
+ export * from "./components/ai-elements/file-tree.js";
18
+ export * from "./components/ai-elements/image.js";
19
+ export * from "./components/ai-elements/inline-citation.js";
20
+ export * from "./components/ai-elements/jsx-preview.js";
21
+ export * from "./components/ai-elements/message.js";
22
+ export * from "./components/ai-elements/mic-selector.js";
23
+ export * from "./components/ai-elements/model-selector.js";
24
+ export * from "./components/ai-elements/node.js";
25
+ export * from "./components/ai-elements/open-in-chat.js";
26
+ export * from "./components/ai-elements/package-info.js";
27
+ export * from "./components/ai-elements/panel.js";
28
+ export * from "./components/ai-elements/persona.js";
29
+ export * from "./components/ai-elements/plan.js";
30
+ export * from "./components/ai-elements/prompt-input.js";
31
+ export * from "./components/ai-elements/queue.js";
32
+ export * from "./components/ai-elements/reasoning.js";
33
+ export * from "./components/ai-elements/sandbox.js";
34
+ export * from "./components/ai-elements/schema-display.js";
35
+ export * from "./components/ai-elements/shimmer.js";
36
+ export * from "./components/ai-elements/snippet.js";
37
+ export * from "./components/ai-elements/sources.js";
38
+ export * from "./components/ai-elements/speech-input.js";
39
+ export * from "./components/ai-elements/stack-trace.js";
40
+ export * from "./components/ai-elements/suggestion.js";
41
+ export * from "./components/ai-elements/task.js";
42
+ export * from "./components/ai-elements/terminal.js";
43
+ export * from "./components/ai-elements/test-results.js";
44
+ export * from "./components/ai-elements/tool.js";
45
+ export * from "./components/ai-elements/toolbar.js";
46
+ export * from "./components/ai-elements/transcription.js";
47
+ export * from "./components/ai-elements/voice-selector.js";
48
+ export * from "./components/ai-elements/web-preview.js";
@@ -0,0 +1,8 @@
1
+ import * as React from "react";
2
+ import { Accordion as AccordionPrimitive } from "radix-ui";
3
+ declare function Accordion({ ...props }: React.ComponentProps<typeof AccordionPrimitive.Root>): React.JSX.Element;
4
+ declare function AccordionItem({ className, ...props }: React.ComponentProps<typeof AccordionPrimitive.Item>): React.JSX.Element;
5
+ declare function AccordionTrigger({ className, children, ...props }: React.ComponentProps<typeof AccordionPrimitive.Trigger>): React.JSX.Element;
6
+ declare function AccordionContent({ className, children, ...props }: React.ComponentProps<typeof AccordionPrimitive.Content>): React.JSX.Element;
7
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
8
+ //# sourceMappingURL=accordion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../src/components/accordion.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,SAAS,IAAI,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAI1D,iBAAS,SAAS,CAAC,EACjB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC,qBAEtD;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC,qBAQtD;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,OAAO,CAAC,qBAgBzD;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,OAAO,CAAC,qBAUzD;AAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAA"}
@@ -0,0 +1,18 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { ChevronDownIcon } from "lucide-react";
4
+ import { Accordion as AccordionPrimitive } from "radix-ui";
5
+ import { cn } from "../lib/utils.js";
6
+ function Accordion({ ...props }) {
7
+ return _jsx(AccordionPrimitive.Root, { "data-slot": "accordion", ...props });
8
+ }
9
+ function AccordionItem({ className, ...props }) {
10
+ return (_jsx(AccordionPrimitive.Item, { "data-slot": "accordion-item", className: cn("border-b last:border-b-0", className), ...props }));
11
+ }
12
+ function AccordionTrigger({ className, children, ...props }) {
13
+ return (_jsx(AccordionPrimitive.Header, { className: "flex", children: _jsxs(AccordionPrimitive.Trigger, { "data-slot": "accordion-trigger", className: cn("flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180", className), ...props, children: [children, _jsx(ChevronDownIcon, { className: "pointer-events-none size-4 shrink-0 translate-y-0.5 text-muted-foreground transition-transform duration-200" })] }) }));
14
+ }
15
+ function AccordionContent({ className, children, ...props }) {
16
+ return (_jsx(AccordionPrimitive.Content, { "data-slot": "accordion-content", className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down", ...props, children: _jsx("div", { className: cn("pt-0 pb-4", className), children: children }) }));
17
+ }
18
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
@@ -0,0 +1,10 @@
1
+ import * as React from "react";
2
+ type ActionBandProps = React.ComponentProps<"div"> & {
3
+ active?: "inset" | "full";
4
+ };
5
+ declare function ActionBand({ active, className, children, style, ...props }: ActionBandProps): React.JSX.Element;
6
+ declare function ActionBandContent({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
7
+ declare function ActionBandCopy({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
8
+ declare function ActionBandVisual({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
9
+ export { ActionBand, ActionBandContent, ActionBandCopy, ActionBandVisual };
10
+ //# sourceMappingURL=action-band.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-band.d.ts","sourceRoot":"","sources":["../../src/components/action-band.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAsC9B,KAAK,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG;IACnD,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;CAC1B,CAAA;AAED,iBAAS,UAAU,CAAC,EAClB,MAAgB,EAChB,SAAS,EACT,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACT,EAAE,eAAe,qBAsBjB;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW7B;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW3E;AAED,iBAAS,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAW7E;AAED,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAA"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from "../lib/utils.js";
3
+ /**
4
+ * action-band — full-lane conversion stage for a final CTA or page-level ask.
5
+ *
6
+ * Replaces the retired recipe-specific `action-stage` CSS with the kept stage
7
+ * grammar: `nc-stage-frame`, `nc-stage-fill`, `nc-stage-grid`,
8
+ * `nc-stage-active`, and connector strips. The component owns the conversion
9
+ * band structure, while the page supplies copy, controls, and media. The outer
10
+ * stage spans the full lane; the active band is a bounded 12-column cell grid
11
+ * with a single internal seam owner (`bg-border` + `gap-px`). The page/frame/rail
12
+ * geometry owns the perimeter. Token-only; no
13
+ * raw color values and no `dark:` styling.
14
+ */
15
+ function ActionBandConnector({ edge }) {
16
+ return (_jsx("div", { className: "nc-stage-grid nc-connector-strip", "data-edge": edge, "aria-hidden": "true", children: _jsxs("div", { className: "nc-stage-active nc-connector-track", children: [_jsx("div", { children: _jsx("svg", { width: "1", height: "100%", focusable: "false", children: _jsx("line", { x1: "0.5", y1: "0", x2: "0.5", y2: "100%" }) }) }), _jsx("svg", { width: "1", height: "100%", focusable: "false", children: _jsx("line", { x1: "0.5", y1: "0", x2: "0.5", y2: "100%" }) })] }) }));
17
+ }
18
+ function ActionBand({ active = "inset", className, children, style, ...props }) {
19
+ return (_jsxs("div", { "data-slot": "action-band", "data-frame-lines": "true", className: cn("nc-stage-frame relative", className), style: {
20
+ ...(active === "full" ? { "--nc-stage-active-column": "1 / -1" } : {}),
21
+ ...style,
22
+ }, ...props, children: [_jsx("div", { className: "nc-stage-fill", "aria-hidden": "true" }), _jsx(ActionBandConnector, { edge: "start" }), _jsx("div", { className: "nc-stage-grid", children: _jsx("div", { className: "nc-stage-active", children: children }) }), _jsx(ActionBandConnector, { edge: "end" })] }));
23
+ }
24
+ function ActionBandContent({ className, ...props }) {
25
+ return (_jsx("div", { "data-slot": "action-band-content", className: cn("grid min-w-0 gap-px bg-border lg:h-[var(--nc-h-action-band)] lg:grid-cols-12", className), ...props }));
26
+ }
27
+ function ActionBandCopy({ className, ...props }) {
28
+ return (_jsx("div", { "data-slot": "action-band-copy", className: cn("nc-panel-cell relative overflow-hidden !bg-[var(--nc-ink)] !text-[var(--nc-canvas)] lg:col-span-6", className), ...props }));
29
+ }
30
+ function ActionBandVisual({ className, ...props }) {
31
+ return (_jsx("div", { "data-slot": "action-band-visual", className: cn("nc-panel-cell items-stretch !p-0 ![align-content:stretch] ![grid-template-rows:minmax(0,1fr)] lg:col-span-6", className), ...props }));
32
+ }
33
+ export { ActionBand, ActionBandContent, ActionBandCopy, ActionBandVisual };
@@ -0,0 +1,20 @@
1
+ import * as React from "react";
2
+ import { type AgentComposerProps } from "./agent-composer";
3
+ import { type AgentThreadStateCopy } from "./agent-thread";
4
+ import { type AgentMessageModel, type AgentToolApprovalDecisionHandler, type AgentWorkState } from "./agent-message";
5
+ declare function AgentChat({ messages, state, stateCopy, emptyState, composer, composerProps, toolActions, retryAction, onToolApprovalChoice, maxMessages, header, className, threadClassName, ...props }: React.ComponentProps<"section"> & {
6
+ messages: AgentMessageModel[];
7
+ state?: AgentWorkState;
8
+ stateCopy?: Partial<Record<Exclude<AgentWorkState, "idle">, AgentThreadStateCopy>>;
9
+ emptyState?: AgentThreadStateCopy;
10
+ composer?: React.ReactNode;
11
+ composerProps?: AgentComposerProps;
12
+ toolActions?: Record<string, React.ReactNode>;
13
+ retryAction?: React.ReactNode;
14
+ onToolApprovalChoice?: AgentToolApprovalDecisionHandler;
15
+ maxMessages?: number;
16
+ header?: React.ReactNode;
17
+ threadClassName?: string;
18
+ }): React.JSX.Element;
19
+ export { AgentChat };
20
+ //# sourceMappingURL=agent-chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-chat.d.ts","sourceRoot":"","sources":["../../src/components/agent-chat.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,gCAAgC,EACrC,KAAK,cAAc,EACpB,MAAM,4BAA4B,CAAA;AAGnC,iBAAS,SAAS,CAAC,EACjB,QAAQ,EACR,KAAc,EACd,SAAS,EACT,UAAU,EACV,QAAQ,EACR,aAAa,EACb,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,WAAW,EACX,MAAM,EACN,SAAS,EACT,eAAe,EACf,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG;IACnC,QAAQ,EAAE,iBAAiB,EAAE,CAAA;IAC7B,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAA;IAClF,UAAU,CAAC,EAAE,oBAAoB,CAAA;IACjC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,aAAa,CAAC,EAAE,kBAAkB,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IAC7C,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,oBAAoB,CAAC,EAAE,gCAAgC,CAAA;IACvD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB,qBAgCA;AAED,OAAO,EAAE,SAAS,EAAE,CAAA"}
@@ -0,0 +1,10 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { AgentComposer, } from "./agent-composer.js";
4
+ import { AgentThread, } from "./agent-thread.js";
5
+ import { cn } from "../lib/utils.js";
6
+ function AgentChat({ messages, state = "idle", stateCopy, emptyState, composer, composerProps, toolActions, retryAction, onToolApprovalChoice, maxMessages, header, className, threadClassName, ...props }) {
7
+ return (_jsxs("section", { "data-slot": "agent-chat", "data-agent-state": state, className: cn("flex min-h-0 flex-col gap-4 rounded-lg border bg-[var(--nc-app-surface-panel)] p-3", className), ...props, children: [header && _jsx("div", { "data-slot": "agent-chat-header", children: header }), _jsx(AgentThread, { messages: messages, state: state, stateCopy: stateCopy, emptyState: emptyState, toolActions: toolActions, retryAction: retryAction, onToolApprovalChoice: onToolApprovalChoice, maxMessages: maxMessages, className: cn("flex-1", threadClassName) }), composer ??
8
+ (composerProps ? (_jsx(AgentComposer, { ...composerProps, state: state === "streaming" ? "streaming" : composerProps.state })) : null)] }));
9
+ }
10
+ export { AgentChat };
@@ -0,0 +1,56 @@
1
+ import * as React from "react";
2
+ import { PromptInput } from "./ai-elements/prompt-input";
3
+ import { type AgentRedactionRule } from "./artifact-panel";
4
+ import { type AgentAttachmentModel } from "./agent-message";
5
+ export type AgentComposerState = "idle" | "disabled" | "submitting" | "streaming" | "error";
6
+ export type AgentQueueStatus = "queued" | "running" | "blocked" | "complete" | "interrupted";
7
+ export type AgentQueueItemModel = {
8
+ id: string;
9
+ title: string;
10
+ description?: string;
11
+ status?: AgentQueueStatus;
12
+ attachments?: AgentAttachmentModel[];
13
+ redaction?: AgentRedactionRule;
14
+ };
15
+ export type AgentQueueModel = {
16
+ title?: string;
17
+ description?: string;
18
+ items: AgentQueueItemModel[];
19
+ };
20
+ export type AgentComposerSubmit = {
21
+ value: string;
22
+ attachments: AgentAttachmentModel[];
23
+ queue?: AgentQueueModel;
24
+ };
25
+ export type AgentComposerProps = Omit<React.ComponentProps<typeof PromptInput>, "children" | "onSubmit"> & {
26
+ value?: string;
27
+ defaultValue?: string;
28
+ placeholder?: string;
29
+ attachments?: AgentAttachmentModel[];
30
+ queue?: AgentQueueModel;
31
+ state?: AgentComposerState;
32
+ disabled?: boolean;
33
+ slashMenu?: React.ReactNode;
34
+ mentionMenu?: React.ReactNode;
35
+ tools?: React.ReactNode;
36
+ submitLabel?: string;
37
+ stopLabel?: string;
38
+ onValueChange?: (value: string) => void;
39
+ onSubmit?: (payload: AgentComposerSubmit, event: React.FormEvent<HTMLFormElement>) => void | Promise<void>;
40
+ onStop?: () => void;
41
+ onRemoveAttachment?: (attachment: AgentAttachmentModel) => void;
42
+ queueActions?: Record<string, React.ReactNode>;
43
+ footer?: React.ReactNode;
44
+ };
45
+ declare function AgentComposerAttachments({ attachments, onRemoveAttachment, }: {
46
+ attachments?: AgentAttachmentModel[];
47
+ onRemoveAttachment?: (attachment: AgentAttachmentModel) => void;
48
+ }): React.JSX.Element | null;
49
+ declare function AgentQueuePanel({ queue, actions, className, }: {
50
+ queue: AgentQueueModel;
51
+ actions?: Record<string, React.ReactNode>;
52
+ className?: string;
53
+ }): React.JSX.Element | null;
54
+ declare function AgentComposer({ value, defaultValue, placeholder, attachments, queue, state, disabled, slashMenu, mentionMenu, tools, submitLabel, stopLabel, onValueChange, onSubmit, onStop, onRemoveAttachment, queueActions, footer, className, ...props }: AgentComposerProps): React.JSX.Element;
55
+ export { AgentComposer, AgentComposerAttachments, AgentQueuePanel, };
56
+ //# sourceMappingURL=agent-composer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-composer.d.ts","sourceRoot":"","sources":["../../src/components/agent-composer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAU9B,OAAO,EACL,WAAW,EAOZ,MAAM,uCAAuC,CAAA;AAa9C,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAA;AAGpC,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAItE,MAAM,MAAM,kBAAkB,GAC1B,MAAM,GACN,UAAU,GACV,YAAY,GACZ,WAAW,GACX,OAAO,CAAA;AAEX,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,SAAS,GACT,SAAS,GACT,UAAU,GACV,aAAa,CAAA;AAEjB,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,gBAAgB,CAAA;IACzB,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAA;IACpC,SAAS,CAAC,EAAE,kBAAkB,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,mBAAmB,EAAE,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,oBAAoB,EAAE,CAAA;IACnC,KAAK,CAAC,EAAE,eAAe,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,KAAK,CAAC,cAAc,CAAC,OAAO,WAAW,CAAC,EACxC,UAAU,GAAG,UAAU,CACxB,GAAG;IACF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAA;IACpC,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,KAAK,CAAC,EAAE,kBAAkB,CAAA;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC3B,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,QAAQ,CAAC,EAAE,CACT,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,KACpC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,oBAAoB,KAAK,IAAI,CAAA;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IAC9C,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CACzB,CAAA;AA0BD,iBAAS,wBAAwB,CAAC,EAChC,WAAW,EACX,kBAAkB,GACnB,EAAE;IACD,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAA;IACpC,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,oBAAoB,KAAK,IAAI,CAAA;CAChE,4BAsCA;AAED,iBAAS,eAAe,CAAC,EACvB,KAAK,EACL,OAAO,EACP,SAAS,GACV,EAAE;IACD,KAAK,EAAE,eAAe,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,4BA6DA;AAED,iBAAS,aAAa,CAAC,EACrB,KAAK,EACL,YAAY,EACZ,WAA4C,EAC5C,WAAgB,EAChB,KAAK,EACL,KAAc,EACd,QAAgB,EAChB,SAAS,EACT,WAAW,EACX,KAAK,EACL,WAAsB,EACtB,SAAkB,EAClB,aAAa,EACb,QAAQ,EACR,MAAM,EACN,kBAAkB,EAClB,YAAY,EACZ,MAAM,EACN,SAAS,EACT,GAAG,KAAK,EACT,EAAE,kBAAkB,qBA8FpB;AAED,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,eAAe,GAChB,CAAA"}