@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
@@ -0,0 +1,44 @@
1
+ # Component Classification
2
+
3
+ This file records the ownership class for U4 product compositions. The package may render standard product UI, but consuming apps own app behavior, data, persistence, and product-specific promises.
4
+
5
+ If first-party shadcn or AI Elements registry source already covers the same
6
+ generic product UI, do not add a parallel NadicodeAI package API. Use the
7
+ registry item in the consuming app and adapt it there with app-owned data,
8
+ copy, and behavior.
9
+
10
+ ## Removed Direct Reinventions
11
+
12
+ | Removed API | Registry source to use instead | Reason |
13
+ | --- | --- | --- |
14
+ | `DataTable`, `DataTableColumnControls`, `DataTableEmptyState`, `DataTableState` | `@shadcn/data-table-demo` or the `DataTable` inside `@shadcn/dashboard-01` | shadcn already ships first-party data-table examples with sorting, selection, visibility, filtering, and pagination patterns. |
15
+ | `CommandPalette`, `ModelPickerCommand`, `SessionPickerCommand` | `@shadcn/command`, `@shadcn/command-demo`, `@shadcn/command-dialog` | shadcn already ships the command primitives and command-dialog example; model/session execution is app behavior. |
16
+ | `ChartCard`, `MetricChart`, `semanticChartColors` | `@shadcn/chart` plus the relevant `@shadcn/chart-*` block/example | shadcn already ships chart primitives and chart-card block examples; metric aggregation and chart choice are app behavior. |
17
+
18
+ ## Retained Package Compositions
19
+
20
+ | Component | Classification | Built on | Required states | Package-owned accessibility | Fixture |
21
+ | --- | --- | --- | --- | --- | --- |
22
+ | `SettingsSection` | Net-new NadicodeAI product composition. | shadcn `FieldGroup` plus standard section markup. | header with optional actions; field group content. | section structure; no form behavior. | `../tests/product-compositions.test.ts` |
23
+ | `SettingsField` | Net-new NadicodeAI product composition. | shadcn `Field`, `FieldLabel`, `FieldDescription`, and `FieldError`. | valid and invalid field rows; disabled rows. | `data-invalid`, `aria-invalid`, `aria-describedby`, label `htmlFor`. | `../tests/product-compositions.test.ts` |
24
+ | `FeedbackState` | Net-new central product state composition adapted from shadcn empty-state patterns. | shadcn `Empty` and lucide status icons. | `empty`, `loading`, `saving`, `error`, `permission`, `offline`, `no-results`, `fatal`. | `role="status"` for loading/saving; `role="alert"` for error, permission, offline, and fatal. | `../tests/product-compositions.test.ts` |
25
+
26
+ ## App-Owned Boundaries
27
+
28
+ Keep these out of `@nadicodeai/ui`:
29
+
30
+ - data fetching, React Query, routers, server actions, desktop IPC, terminal runtime code, and persistence;
31
+ - login/signup routes, OTP/two-factor flows, auth provider choices, recovery flows, session mutation, and analytics;
32
+ - permission decisions, tenant/customer scoping, and policy enforcement;
33
+ - app-specific product copy, page IA, and route-specific ordering;
34
+ - fake proof, invented customer names, invented metrics, or placeholder testimonials.
35
+
36
+ ## Fixture Guidance
37
+
38
+ U4 fixtures should use NadicodeAI-relevant work objects:
39
+
40
+ - briefing agents, review agents, approval queues, sessions, models, workspace defaults, files, pairing codes, and weekly approvals;
41
+ - controlled state examples for sorting, selection, visibility, validation, loading, saving, offline, permission, and fatal states;
42
+ - no external network, browser, customer PII, signed contracts, financials, or fake proof.
43
+
44
+ Browser-driven tests stay out of the default Vitest suite. U4 fixtures render through static and SSR-friendly tests only.
@@ -0,0 +1,85 @@
1
+ # Nadia Consumer Readiness
2
+
3
+ This guide records the first consumer-readiness path for shared Nadia product UI.
4
+ The components are presentational package surface. Consuming apps still own
5
+ routes, auth, data loading, mutations, persistence, runtime adapters, permission
6
+ decisions, analytics, and product-specific copy.
7
+
8
+ ## Required Setup
9
+
10
+ Import both stylesheets once at the app root:
11
+
12
+ ```tsx
13
+ import "@nadicodeai/ui/globals.css";
14
+ import "@nadicodeai/design-system/css";
15
+ ```
16
+
17
+ Do not add local token overrides, component-level `dark:` utilities, raw colors,
18
+ raw Tailwind palette utilities, or app-local copies of package shell/product UI.
19
+ Use public package subpaths:
20
+
21
+ ```tsx
22
+ import { DashboardShell } from "@nadicodeai/ui/components/dashboard-shell";
23
+ import { AgentChat } from "@nadicodeai/ui/components/agent-chat";
24
+ ```
25
+
26
+ Use first-party shadcn registry source directly in the consuming app for generic
27
+ data tables, command palettes, and chart cards. Do not migrate those patterns
28
+ through a NadicodeAI package wrapper.
29
+
30
+ ## Migration Order
31
+
32
+ 1. Web admin or portal validation slice.
33
+ 2. Installer and bootstrap flows.
34
+ 3. Desktop shell and plugin boundary surfaces.
35
+ 4. Desktop chat and runtime work surfaces.
36
+ 5. TUI consumers through the terminal semantic mapping document.
37
+
38
+ Desktop chat is last because it carries runtime-sensitive approval, streaming,
39
+ queue, attachment, file, diff, and terminal states. Terminal consumers should
40
+ mirror `docs/terminal-tui-semantics.md` instead of importing a DOM runtime.
41
+
42
+ ## Readiness Gates
43
+
44
+ - The consumer imports `@nadicodeai/ui/globals.css` and
45
+ `@nadicodeai/design-system/css` at the root.
46
+ - Product components are imported from `@nadicodeai/ui/components/*` public
47
+ subpaths, not `src/*`.
48
+ - At least one local shell, bento, settings, installer, plugin, or chat
49
+ layout responsibility is removed from the consumer.
50
+ - Routes, data, auth, copy, persistence, and runtime behavior remain app-owned.
51
+ - Fixtures use synthetic or redacted provider, model, plugin, approval, diff,
52
+ terminal, installer, and agent-work scenarios.
53
+ - No fixture contains secrets, environment values, raw terminal output, hidden
54
+ reasoning, user memory, fake customers, fake proof metrics, or generic SaaS
55
+ filler.
56
+
57
+ ## First Validation Slice
58
+
59
+ The in-repo portal is the first real consumer slice. It already imports package
60
+ CSS at `portal/src/app/layout.tsx`. Its shell now consumes
61
+ `@nadicodeai/ui/components/dashboard-shell` and keeps portal-owned route
62
+ definitions, access checks, data, and Italian copy in `portal/`.
63
+
64
+ This validates the package boundary because the shared component owns responsive
65
+ dashboard chrome, mobile navigation trigger, content containment, and sidebar
66
+ structure while the portal keeps the Nadia Agents activation domain.
67
+
68
+ ## Fixture Expectations
69
+
70
+ Use NadicodeAI-relevant synthetic/redacted fixtures:
71
+
72
+ - Data and settings: provider rows, model choices, plugin status, session state,
73
+ loading, permission, error, empty, and recovery copy.
74
+ - Auth and installer: activation-shaped states, expired or invalid pairing,
75
+ retry and recovery actions, no live OTPs or secrets.
76
+ - Shell and plugin: realistic navigation hierarchy, permission badges, disabled,
77
+ warning, error, unsafe, and contained-overflow states.
78
+ - Agent, file, diff, and terminal: approval choices, tool failure, redacted
79
+ terminal summaries, changed-file hierarchy, interrupted, queued, and streaming
80
+ states.
81
+
82
+ Brand and marketing components remain part of the same package surface. Consumer
83
+ migrations should not hide or replace `PageFrame`, `SectionIntro`, `Bento`,
84
+ `MediaMount`, `DemoSurface`, `HeroSplit`, `NavBar`, `Footer`, `BrandWordmark`,
85
+ or the existing marketing sections.
@@ -0,0 +1,77 @@
1
+ # Product Compositions
2
+
3
+ U4 adds the first shared product compositions for NadicodeAI admin, settings, and agent-work surfaces. These components are presentational only: consumers own routing, persistence, server actions, mutations, analytics, auth providers, permissions, and product-specific page copy.
4
+
5
+ When first-party shadcn or AI Elements registry source already covers the same
6
+ generic product UI, use that registry item in the consuming app instead of
7
+ adding a parallel NadicodeAI package API. Data tables, command palettes, and
8
+ chart cards follow this rule: use `@shadcn/data-table-demo`,
9
+ `@shadcn/command-dialog`, `@shadcn/chart`, or the relevant `@shadcn/chart-*`
10
+ block/example as the source of truth.
11
+
12
+ Import components through the wildcard component subpath after build:
13
+
14
+ ```tsx
15
+ import { SettingsSection } from "@nadicodeai/ui/components/settings-section"
16
+ ```
17
+
18
+ Fixtures live in:
19
+
20
+ - [`../tests/product-compositions.test.ts`](../tests/product-compositions.test.ts)
21
+ - [`../tests/product-compositions-ssr.test.ts`](../tests/product-compositions-ssr.test.ts)
22
+
23
+ ## Boundaries
24
+
25
+ | Component | Package owns | Consumer owns |
26
+ | --- | --- | --- |
27
+ | `SettingsSection` / `SettingsField` | Horizontal settings layout, `Field` composition, labels, descriptions, errors, `data-invalid`, and `aria-invalid` wiring. | Form state, validation rules, submission, persistence, settings taxonomy, save/cancel behavior. |
28
+ | `FeedbackState` | Shared empty, loading, saving, error, permission, offline, no-results, and fatal state presentation. | Recovery actions, retry behavior, permission escalation, app-specific state language. |
29
+
30
+ ## SettingsSection
31
+
32
+ Use `SettingsSection` and `SettingsField` for horizontal settings rows that need consistent label, description, error, and control alignment.
33
+
34
+ ```tsx
35
+ <SettingsSection
36
+ title="Workspace defaults"
37
+ description="Shared defaults for agent work."
38
+ >
39
+ <SettingsField
40
+ id="review-window"
41
+ label="Review window"
42
+ description="How long approvals stay visible."
43
+ error={reviewWindowError}
44
+ invalid={Boolean(reviewWindowError)}
45
+ >
46
+ {({ controlProps }) => (
47
+ <input {...controlProps} value={reviewWindow} onChange={onReviewWindowChange} />
48
+ )}
49
+ </SettingsField>
50
+ </SettingsSection>
51
+ ```
52
+
53
+ | Prop | Purpose |
54
+ | --- | --- |
55
+ | `title` / `description` / `actions` | Section header content and right-side action slot. |
56
+ | `id` / `label` | Required field identity and accessible label. |
57
+ | `description` / `error` / `invalid` | Field helper text, error text, and invalid state. |
58
+ | `children` | Control node or render function receiving `controlProps`. |
59
+
60
+ Accessibility: invalid fields set `data-invalid` on the field wrapper and `aria-invalid` on the rendered control. Descriptions and errors are wired through `aria-describedby`.
61
+
62
+ ## FeedbackState
63
+
64
+ Use `FeedbackState` when a surface needs a standard state panel outside an app-owned shadcn table adaptation.
65
+
66
+ ```tsx
67
+ <FeedbackState
68
+ status="offline"
69
+ title="Connection paused"
70
+ description="Reconnect before continuing with this agent session."
71
+ actions={<ReconnectButton />}
72
+ />
73
+ ```
74
+
75
+ Supported statuses: `empty`, `loading`, `saving`, `error`, `permission`, `offline`, `no-results`, and `fatal`.
76
+
77
+ Accessibility: loading and saving states render with polite status semantics. Error, permission, offline, and fatal states render as alerts.
@@ -0,0 +1,200 @@
1
+ # Product Sections
2
+
3
+ U5 adds shared shell skeletons, plugin containment, installer states, and automation/settings sections. These components are presentational only. Consumers own routing, persistence, server actions, runtime adapters, permission decisions, retries, plugin trust, installer side effects, analytics, and product-specific page copy.
4
+
5
+ Import components through the existing component subpath after build:
6
+
7
+ ```tsx
8
+ import { DashboardShell } from "@nadicodeai/ui/components/dashboard-shell"
9
+ import { PluginSlotBoundary } from "@nadicodeai/ui/components/plugin-slot-boundary"
10
+ ```
11
+
12
+ Fixtures live in:
13
+
14
+ - [`../tests/product-sections.test.ts`](../tests/product-sections.test.ts)
15
+ - [`../tests/product-sections-ssr.test.ts`](../tests/product-sections-ssr.test.ts)
16
+
17
+ ## Boundaries
18
+
19
+ | Component | Package owns | Consumer owns |
20
+ | --- | --- | --- |
21
+ | `DashboardShell` | Responsive slot layout, sidebar/header/content/inspector regions, mobile sidebar trigger, focusable shell structure, overflow containment. | Route state, nav definitions, page data, permission filtering, tenant/workspace context, page-specific copy. |
22
+ | `DesktopAppShell` | Titlebar/statusbar framing, activity rail, primary/secondary/inspector panes, resizable panel composition, overflow containment. | Desktop runtime, window controls, route selection, IPC, command execution, local persistence. |
23
+ | `InstallerShell` | Welcome/progress/success/failure presentation, progress display, step list, feedback-state composition. | Installer state machine, platform checks, downloads, retries, recovery behavior, logs. |
24
+ | `PluginSlotBoundary` | Visible plugin content boundary, permission badges, warning/error alerts, contained overflow, redaction guidance. | Plugin runtime, trust decisions, install/remove actions, grants, sandbox policy, secrets. |
25
+ | `AutomationSection` | Automation row layout, status badges, enable switch placement, empty state. | Automation definitions, scheduling, execution, persistence, permission rules. |
26
+ | `ProviderSettings` | Provider setting rows built on `SettingsSection` and `SettingsField`. | Provider list, validation, saving, rate limits, billing or policy behavior. |
27
+ | `McpServerSettings` | MCP server rows, status badges, enable switch placement, field semantics. | Server discovery, connection checks, grants, persistence, tool execution. |
28
+ | `EnvironmentVariablesSettings` | Variable name rows and redacted state display. | Secret storage, reveal controls, value validation, rotation, syncing. |
29
+
30
+ ## DashboardShell
31
+
32
+ Use `DashboardShell` when a web/admin surface needs shared app chrome without the package owning navigation.
33
+
34
+ ```tsx
35
+ <DashboardShell
36
+ sidebar={<WorkspaceNav />}
37
+ sidebarHeader={<WorkspaceSwitcher />}
38
+ sidebarFooter={<AccountMenu />}
39
+ header={<PageHeading />}
40
+ headerActions={<RunAction />}
41
+ inspector={<PermissionSummary />}
42
+ >
43
+ <AgentQueue />
44
+ </DashboardShell>
45
+ ```
46
+
47
+ | Prop | Purpose |
48
+ | --- | --- |
49
+ | `sidebar` | Sidebar content slot. Consumers pass nav items or any compatible sidebar content. |
50
+ | `header` / `headerActions` | Top chrome slots. The package adds the mobile navigation trigger. |
51
+ | `children` | Main content region. |
52
+ | `inspector` | Optional right-side inspector that stacks below content on smaller screens. |
53
+ | `sidebarHeader` / `sidebarFooter` | Optional sidebar framing slots. |
54
+ | `sidebarSide` / `sidebarVariant` / `sidebarCollapsible` | Pass-through shell options over the existing sidebar primitive. |
55
+
56
+ Accessibility: the shell exposes labeled content and inspector regions. The mobile trigger has an accessible label and the underlying sidebar primitive preserves keyboard access and collapsed labels.
57
+
58
+ ## DesktopAppShell
59
+
60
+ Use `DesktopAppShell` for desktop-shaped layouts where the consumer owns runtime behavior.
61
+
62
+ ```tsx
63
+ <DesktopAppShell
64
+ title="Nadia desktop"
65
+ activityRail={<ActivityButtons />}
66
+ secondaryPane={<RunContext />}
67
+ inspectorRail={<Inspector />}
68
+ statusbar={<StatusLine />}
69
+ >
70
+ <Workspace />
71
+ </DesktopAppShell>
72
+ ```
73
+
74
+ | Prop | Purpose |
75
+ | --- | --- |
76
+ | `title` / `titlebar` / `titlebarActions` | Titlebar slots. `titlebar` can replace the default title row. |
77
+ | `activityRail` | Left rail slot for mode buttons or app tools. |
78
+ | `children` | Primary pane. |
79
+ | `secondaryPane` | Optional resizable middle pane. |
80
+ | `inspectorRail` | Optional resizable inspector pane. |
81
+ | `statusbar` | Bottom status slot. |
82
+ | `primaryPaneSize` / `secondaryPaneSize` / `inspectorPaneSize` | Initial resizable panel sizes. |
83
+
84
+ The component does not assume browser routing, desktop IPC, or command execution.
85
+
86
+ ## InstallerShell
87
+
88
+ Use `InstallerShell` for installer or setup flows with an app-owned state machine.
89
+
90
+ ```tsx
91
+ <InstallerShell
92
+ state="progress"
93
+ title="Installing"
94
+ description="Preparing the local workspace."
95
+ progressValue={62}
96
+ steps={[
97
+ { id: "package", label: "Prepare package", status: "complete" },
98
+ { id: "settings", label: "Apply settings", status: "running" },
99
+ ]}
100
+ actions={<CancelButton />}
101
+ />
102
+ ```
103
+
104
+ Supported states: `welcome`, `progress`, `success`, and `failure`.
105
+
106
+ Step statuses: `pending`, `running`, `complete`, and `error`.
107
+
108
+ The shell uses `FeedbackState` for the primary state message. Consumers provide the installer state, recovery actions, and side effects.
109
+
110
+ ## PluginSlotBoundary
111
+
112
+ Use `PluginSlotBoundary` around extension or plugin-rendered content. It makes the plugin boundary visible and keeps overflow contained.
113
+
114
+ ```tsx
115
+ <PluginSlotBoundary
116
+ title="Planner plugin"
117
+ status="warning"
118
+ permissions={[
119
+ { id: "files", label: "Read files", level: "review" },
120
+ { id: "network", label: "Network blocked", level: "denied" },
121
+ ]}
122
+ warning="Review plugin scope before granting access."
123
+ >
124
+ <PluginPreview />
125
+ </PluginSlotBoundary>
126
+ ```
127
+
128
+ Supported statuses: `ready`, `warning`, `error`, and `disabled`.
129
+
130
+ Permission levels: `safe`, `review`, `risk`, and `denied`.
131
+
132
+ Redaction rule: package fixtures and examples may show synthetic names, variable names, and redacted placeholders only. They must not include secret values, environment variable values, raw terminal output, user memory, or hidden reasoning.
133
+
134
+ ## AutomationSection
135
+
136
+ Use `AutomationSection` for a list of app-owned automations.
137
+
138
+ ```tsx
139
+ <AutomationSection
140
+ title="Automation runs"
141
+ automations={[
142
+ {
143
+ id: "briefing",
144
+ title: "Briefing preparation",
145
+ description: "Drafts a review packet.",
146
+ status: "running",
147
+ enabled: true,
148
+ toggleLabel: "Toggle briefing preparation",
149
+ },
150
+ ]}
151
+ onAutomationEnabledChange={setAutomationEnabled}
152
+ />
153
+ ```
154
+
155
+ Supported statuses: `ready`, `running`, `paused`, `error`, and `disabled`.
156
+
157
+ The callback reports a requested toggle. It does not save, schedule, retry, or execute anything.
158
+
159
+ ## Settings Patterns
160
+
161
+ `ProviderSettings`, `McpServerSettings`, and `EnvironmentVariablesSettings` compose `SettingsSection` and `SettingsField` so settings rows share label, description, error, invalid, disabled, and control alignment behavior.
162
+
163
+ ```tsx
164
+ <ProviderSettings
165
+ fields={[
166
+ {
167
+ id: "provider",
168
+ label: "Provider",
169
+ description: "Displayed provider label.",
170
+ value: "Nadia synthetic provider",
171
+ },
172
+ ]}
173
+ />
174
+
175
+ <McpServerSettings
176
+ servers={[
177
+ {
178
+ id: "docs",
179
+ label: "Docs server",
180
+ description: "Read-only documentation context.",
181
+ status: "connected",
182
+ enabled: true,
183
+ },
184
+ ]}
185
+ />
186
+
187
+ <EnvironmentVariablesSettings
188
+ variables={[
189
+ {
190
+ id: "model-key",
191
+ name: "NADIA_MODEL_KEY",
192
+ description: "Configured by the consuming app.",
193
+ state: "configured",
194
+ required: true,
195
+ },
196
+ ]}
197
+ />
198
+ ```
199
+
200
+ Environment variable rows intentionally render names and redacted state only. They do not accept or display actual values.
@@ -0,0 +1,211 @@
1
+ # Terminal/TUI Semantics
2
+
3
+ This document defines the serializable names a terminal, React Ink, or other
4
+ TUI consumer can use to share palette, status, approval, and message meanings
5
+ with DOM agent surfaces. It is a semantic mapping only. It does not add a
6
+ terminal runtime, a package export, a React DOM dependency, or a terminal package
7
+ namespace.
8
+
9
+ The CSS aliases referenced here are UI-local aliases expected in
10
+ `@nadicodeai/ui/src/styles/globals.css`. They should reference generated brand
11
+ tokens there. Terminal-specific values should move to `design-system/DESIGN.md`
12
+ only after they become stable brand-level primitives.
13
+
14
+ Do not put raw terminal output, secrets, environment values, user memory, hidden
15
+ chain-of-thought, or provider content in package examples or fixtures. Use
16
+ synthetic summaries and explicit redaction fields.
17
+
18
+ ## Naming Rules
19
+
20
+ - Serializable names use dot-case strings such as `terminal.foreground`,
21
+ `tool.running`, or `approval.session`.
22
+ - UI-local CSS aliases use `--nc-*` custom properties in
23
+ `@nadicodeai/ui/src/styles/globals.css`.
24
+ - DOM and TUI state names share the same meanings. For run-state parity, reuse
25
+ `ready`, `running`, `review`, `blocked`, and `complete` where those states
26
+ apply. For tool and command status, reuse `pending`, `running`, `success`,
27
+ `warning`, `error`, and `muted`.
28
+ - Terminal renderers choose the concrete Ink style, ANSI escape, spacing, or
29
+ glyph. The package-owned contract is the name, not terminal I/O behavior.
30
+
31
+ ## Terminal Palette
32
+
33
+ | Serializable token | UI-local alias | Meaning |
34
+ | --- | --- | --- |
35
+ | `terminal.foreground` | `--nc-terminal-fg` | Default terminal text. |
36
+ | `terminal.background` | `--nc-terminal-bg` | Default terminal canvas. |
37
+ | `terminal.muted` | `--nc-terminal-muted` | Dim output, timestamps, separators, and low-priority metadata. |
38
+ | `terminal.cursor` | `--nc-terminal-cursor` | Text cursor or focused prompt caret. |
39
+ | `terminal.selection` | `--nc-terminal-selection-bg` | Selected text background. |
40
+ | `terminal.selection.background` | `--nc-terminal-selection-bg` | Explicit background form for renderers that model selection as an object. |
41
+
42
+ ## ANSI Palette
43
+
44
+ | Serializable token | UI-local alias |
45
+ | --- | --- |
46
+ | `terminal.ansi.black` | `--nc-terminal-ansi-black` |
47
+ | `terminal.ansi.red` | `--nc-terminal-ansi-red` |
48
+ | `terminal.ansi.green` | `--nc-terminal-ansi-green` |
49
+ | `terminal.ansi.yellow` | `--nc-terminal-ansi-yellow` |
50
+ | `terminal.ansi.blue` | `--nc-terminal-ansi-blue` |
51
+ | `terminal.ansi.magenta` | `--nc-terminal-ansi-magenta` |
52
+ | `terminal.ansi.cyan` | `--nc-terminal-ansi-cyan` |
53
+ | `terminal.ansi.white` | `--nc-terminal-ansi-white` |
54
+ | `terminal.ansi.bright-black` | `--nc-terminal-ansi-bright-black` |
55
+ | `terminal.ansi.bright-red` | `--nc-terminal-ansi-bright-red` |
56
+ | `terminal.ansi.bright-green` | `--nc-terminal-ansi-bright-green` |
57
+ | `terminal.ansi.bright-yellow` | `--nc-terminal-ansi-bright-yellow` |
58
+ | `terminal.ansi.bright-blue` | `--nc-terminal-ansi-bright-blue` |
59
+ | `terminal.ansi.bright-magenta` | `--nc-terminal-ansi-bright-magenta` |
60
+ | `terminal.ansi.bright-cyan` | `--nc-terminal-ansi-bright-cyan` |
61
+ | `terminal.ansi.bright-white` | `--nc-terminal-ansi-bright-white` |
62
+
63
+ ## Code And Diff Roles
64
+
65
+ | Serializable token | UI-local alias | Meaning |
66
+ | --- | --- | --- |
67
+ | `code.foreground` | `--nc-app-text-code` | Default code text. |
68
+ | `code.background` | `--nc-code-surface` | Code block, inline preview, or terminal-adjacent code surface. |
69
+ | `code.border` | `--nc-code-border` | Code surface border or gutter divider. |
70
+ | `code.token.keyword` | `--nc-code-token-keyword` | Syntax keyword token. |
71
+ | `code.token.string` | `--nc-code-token-string` | Syntax string token. |
72
+ | `code.token.comment` | `--nc-code-token-comment` | Syntax comment token. |
73
+ | `code.token.function` | `--nc-code-token-function` | Syntax function token. |
74
+ | `diff.added` | `--nc-diff-added-line` | Added-line state. |
75
+ | `diff.added.line` | `--nc-diff-added-line` | Added-line background or accent. |
76
+ | `diff.added.word` | `--nc-diff-added-word` | Added inline word span. |
77
+ | `diff.removed` | `--nc-diff-removed-line` | Removed-line state. |
78
+ | `diff.removed.line` | `--nc-diff-removed-line` | Removed-line background or accent. |
79
+ | `diff.removed.word` | `--nc-diff-removed-word` | Removed inline word span. |
80
+ | `diff.modified` | `--nc-diff-hunk` | Modified hunk or neutral changed-context state. |
81
+ | `diff.modified.hunk` | `--nc-diff-hunk` | Hunk marker, changed context, or neutral modified line. |
82
+ | `diff.modified.file-header` | `--nc-diff-file-header` | Modified file header or file-level changed state. |
83
+
84
+ ## Trace Severity And Command Status
85
+
86
+ Trace severity maps technical trails, logs, and diagnostic summaries. It is not a
87
+ license to store raw logs in package examples.
88
+
89
+ | Serializable state | UI-local alias | Meaning |
90
+ | --- | --- | --- |
91
+ | `trace.info` | `--nc-status-info` | Informational trace row. |
92
+ | `trace.success` | `--nc-status-success` | Completed trace row. |
93
+ | `trace.warning` | `--nc-status-warning` | Recoverable warning. |
94
+ | `trace.error` | `--nc-status-error` | Failed trace row. |
95
+ | `trace.muted` | `--nc-tool-muted` | Low-priority diagnostic metadata. |
96
+
97
+ Command status shares meanings with DOM tool surfaces:
98
+
99
+ | Serializable state | UI-local alias | Meaning |
100
+ | --- | --- | --- |
101
+ | `command.queued` | `--nc-tool-pending` | Queued but not started. |
102
+ | `command.pending` | `--nc-tool-pending` | Waiting for scheduler, input, or approval. |
103
+ | `command.running` | `--nc-tool-running` | Currently executing. |
104
+ | `command.success` | `--nc-tool-success` | Finished successfully. |
105
+ | `command.warning` | `--nc-tool-warning` | Finished with warnings or partial recovery. |
106
+ | `command.error` | `--nc-tool-error` | Failed. |
107
+ | `command.paused` | `--nc-status-paused` | Paused by user or runtime. |
108
+ | `command.blocked` | `--nc-status-blocked` | Blocked by missing permission, precondition, or input. |
109
+ | `command.complete` | `--nc-status-complete` | Complete run-state parity with DOM work surfaces. |
110
+
111
+ ## Provider And Model Status
112
+
113
+ Provider and model rows use the same serializable names in DOM pickers, terminal
114
+ model pickers, and future TUI overlays.
115
+
116
+ | Serializable state | UI-local alias | Meaning |
117
+ | --- | --- | --- |
118
+ | `provider.surface` | `--nc-model-provider-surface` | Provider row or provider group surface. |
119
+ | `provider.online` | `--nc-status-online` | Provider is available. |
120
+ | `provider.offline` | `--nc-status-offline` | Provider is unavailable. |
121
+ | `provider.degraded` | `--nc-status-warning` | Provider is available with degraded capacity. |
122
+ | `provider.error` | `--nc-status-error` | Provider cannot serve requests. |
123
+ | `model.available` | `--nc-model-capability-surface` | Model is available for selection. |
124
+ | `model.selected` | `--nc-model-capability-border` | Selected or focused model. |
125
+ | `model.context-warning` | `--nc-model-context-meter` | Context window is near a configured limit. |
126
+ | `model.cost-warning` | `--nc-model-cost-warning` | Cost warning or budget-sensitive model. |
127
+ | `model.rate-limited` | `--nc-model-rate-limit` | Rate limit active or likely. |
128
+ | `model.unavailable` | `--nc-status-offline` | Model cannot be selected. |
129
+
130
+ ## Approval Choices
131
+
132
+ Approval choices are serializable strings. Consumers own behavior, keyboard
133
+ shortcuts, and persistence.
134
+
135
+ | Serializable choice | UI-local alias | Meaning |
136
+ | --- | --- | --- |
137
+ | `approval.run` | `--nc-tool-approval-run` | Run once. |
138
+ | `approval.deny` | `--nc-tool-approval-deny` | Deny this action. |
139
+ | `approval.session` | `--nc-tool-approval-session` | Allow for this session. |
140
+ | `approval.always` | `--nc-tool-approval-always` | Allow persistently where app policy permits. |
141
+
142
+ ## Message And Tool States
143
+
144
+ Message roles map to the same meanings as DOM agent/chat surfaces.
145
+
146
+ | Serializable state | UI-local alias | Meaning |
147
+ | --- | --- | --- |
148
+ | `message.user` | `--nc-chat-user-surface` | Human-authored message. |
149
+ | `message.assistant` | `--nc-chat-assistant-surface` | Assistant-authored message. |
150
+ | `message.system` | `--nc-chat-system-surface` | System or policy summary visible to the user. |
151
+ | `message.reasoning` | `--nc-chat-reasoning-surface` | Reasoning summary disclosure, not hidden chain-of-thought. |
152
+ | `message.tool` | `--nc-chat-tool-surface` | Tool call summary or tool result summary. |
153
+ | `message.artifact` | `--nc-chat-artifact-surface` | Artifact reference, preview, or generated file summary. |
154
+ | `message.source` | `--nc-chat-inline-ref-surface` | Source or citation reference. |
155
+ | `message.queued` | `--nc-tool-pending` | Queued message. |
156
+ | `message.streaming` | `--nc-status-running` | Partial assistant output is streaming. |
157
+ | `message.interrupted` | `--nc-status-paused` | Message generation stopped before completion. |
158
+ | `message.retryable` | `--nc-status-warning` | Retry is available. |
159
+ | `message.permission-denied` | `--nc-status-blocked` | Blocked by user, policy, or permission. |
160
+ | `message.fatal` | `--nc-status-error` | Non-recoverable message failure. |
161
+
162
+ Tool states reuse command status meanings:
163
+
164
+ | Serializable state | UI-local alias | Meaning |
165
+ | --- | --- | --- |
166
+ | `tool.pending` | `--nc-tool-pending` | Waiting to start or waiting for approval. |
167
+ | `tool.running` | `--nc-tool-running` | Active tool call. |
168
+ | `tool.success` | `--nc-tool-success` | Tool call completed successfully. |
169
+ | `tool.warning` | `--nc-tool-warning` | Tool call completed with warning or degraded result. |
170
+ | `tool.error` | `--nc-tool-error` | Tool call failed. |
171
+ | `tool.muted` | `--nc-tool-muted` | Low-priority tool metadata. |
172
+
173
+ ## Message Spacing And Prompt Glyphs
174
+
175
+ Spacing names are serializable layout hints, not CSS aliases:
176
+
177
+ | Serializable token | Meaning |
178
+ | --- | --- |
179
+ | `message.spacing.compact` | Dense terminal rows for active streams and tool trails. |
180
+ | `message.spacing.default` | Standard chat/TUI rhythm. |
181
+ | `message.spacing.loose` | Review surfaces, approvals, and long-form summaries. |
182
+ | `message.indent.user` | User message indent. |
183
+ | `message.indent.assistant` | Assistant message indent. |
184
+ | `message.indent.tool` | Tool trail indent. |
185
+
186
+ Prompt glyph names are semantic keys. The concrete glyphs are consumer-owned:
187
+
188
+ | Serializable token | Meaning |
189
+ | --- | --- |
190
+ | `promptGlyph.user` | Human prompt marker. |
191
+ | `promptGlyph.assistant` | Assistant prompt marker. |
192
+ | `promptGlyph.system` | System or notice marker. |
193
+ | `promptGlyph.tool` | Tool trail marker. |
194
+ | `promptGlyph.approval` | Approval prompt marker. |
195
+ | `promptGlyph.continuation` | Wrapped or continued line marker. |
196
+
197
+ ## Serializable Shape
198
+
199
+ The package does not export this type in U7. It documents the shape a consumer
200
+ can mirror without importing React DOM or product components:
201
+
202
+ ```json
203
+ {
204
+ "messageState": "message.streaming",
205
+ "toolState": "tool.running",
206
+ "approvalChoice": "approval.run",
207
+ "severity": "trace.info",
208
+ "redactedSummary": "Synthetic action summary"
209
+ }
210
+ ```
211
+