@alexgorbatchev/shadcn 0.0.18 → 0.0.20

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 (502) hide show
  1. package/README.md +32 -9
  2. package/dist/{chunk-q2ewq67a.js → chunk-02qymemz.js} +1 -1
  3. package/dist/{chunk-q9qm7skj.js → chunk-0ewzb2ax.js} +4 -4
  4. package/dist/{chunk-rrd9fsz6.js → chunk-14qj6w54.js} +5 -5
  5. package/dist/{chunk-yn3e9w1j.js → chunk-1c5jjkhw.js} +1 -1
  6. package/dist/{chunk-6aqm34nb.js → chunk-1qhf8gh8.js} +4 -3
  7. package/dist/{chunk-tsekdy3w.js → chunk-1tgrhacr.js} +12 -3
  8. package/dist/{chunk-zgpdhtkw.js → chunk-21x1n6gn.js} +6 -6
  9. package/dist/{chunk-22678d2t.js → chunk-24pefkd5.js} +1 -1
  10. package/dist/{chunk-msave608.js → chunk-2bx2r98r.js} +1 -1
  11. package/dist/{chunk-41wykzq3.js → chunk-2tmvz090.js} +1 -1
  12. package/dist/{chunk-gknaq8ep.js → chunk-3d9v39ga.js} +1 -1
  13. package/dist/{chunk-2b9agdrf.js → chunk-3dyqen8w.js} +1 -1
  14. package/dist/{chunk-f63f8w58.js → chunk-3jrsp186.js} +1 -1
  15. package/dist/{chunk-njzam0hx.js → chunk-3qqdfft7.js} +1 -0
  16. package/dist/{chunk-gfm2arhj.js → chunk-43hfchxf.js} +1 -1
  17. package/dist/{chunk-6xr41wyr.js → chunk-46jdxdzy.js} +3 -3
  18. package/dist/{chunk-x7z9jzyf.js → chunk-4djw71cv.js} +22 -12
  19. package/dist/{chunk-fh3nme7f.js → chunk-4drqqqz1.js} +1 -1
  20. package/dist/{chunk-mjpc4qf7.js → chunk-52e8a05a.js} +1 -1
  21. package/dist/{chunk-1hbge1cb.js → chunk-553bzh59.js} +1 -1
  22. package/dist/{chunk-a6e11wj6.js → chunk-5ayp2vkw.js} +1 -1
  23. package/dist/{chunk-19441s27.js → chunk-5pvyxayg.js} +2 -2
  24. package/dist/{chunk-vx7c2xhq.js → chunk-5v4typ39.js} +3 -3
  25. package/dist/{chunk-gt8m0zeq.js → chunk-5wndb6hx.js} +1 -1
  26. package/dist/{chunk-550z7s64.js → chunk-6432235c.js} +3 -3
  27. package/dist/{chunk-0xrvhezs.js → chunk-6f3qpy7v.js} +1 -1
  28. package/dist/{chunk-2gten6a1.js → chunk-6wvhq8wq.js} +2 -2
  29. package/dist/{chunk-zhnwybhq.js → chunk-70vndezn.js} +16 -5
  30. package/dist/{chunk-r7fy89jq.js → chunk-79667fz5.js} +3 -3
  31. package/dist/{chunk-4gby2v61.js → chunk-7pyt4e5t.js} +1 -1
  32. package/dist/{chunk-c6nvc3ft.js → chunk-84ca0dpc.js} +2 -2
  33. package/dist/{chunk-9msk1t9e.js → chunk-8a15x4a8.js} +1 -1
  34. package/dist/{chunk-0qcknj5n.js → chunk-8fcjx3he.js} +5 -5
  35. package/dist/{chunk-h8awhm19.js → chunk-96wh7ccv.js} +1 -1
  36. package/dist/{chunk-pe1vvkp7.js → chunk-9jct7hv0.js} +3 -3
  37. package/dist/{chunk-xqn8mef3.js → chunk-a6kyjjfk.js} +1 -0
  38. package/dist/chunk-aa7m22zj.js +22 -0
  39. package/dist/{chunk-h77yk9sn.js → chunk-bcpy6gpz.js} +1 -1
  40. package/dist/chunk-bygq5yqf.js +139 -0
  41. package/dist/{chunk-2m0zpzbm.js → chunk-cn81dnqb.js} +1 -0
  42. package/dist/{chunk-m1a9e1py.js → chunk-d2z4gebj.js} +1 -1
  43. package/dist/{chunk-mx21wpq0.js → chunk-d4bm5rzy.js} +12 -2
  44. package/dist/{chunk-jy6nfnbx.js → chunk-d9jbqd99.js} +2 -2
  45. package/dist/{chunk-3hvpcsb4.js → chunk-dgkj6442.js} +1 -1
  46. package/dist/{chunk-wwfj7ga3.js → chunk-djm7qq62.js} +1 -1
  47. package/dist/{chunk-9dw4dyzq.js → chunk-e0pv0me5.js} +1 -1
  48. package/dist/{chunk-dd53t01w.js → chunk-ecmk3vgd.js} +1 -1
  49. package/dist/{chunk-0yqwq0ev.js → chunk-eq88qk1d.js} +10 -10
  50. package/dist/{chunk-jq6tc65r.js → chunk-f5hphka1.js} +7 -1
  51. package/dist/{chunk-7g39g3h8.js → chunk-fb6h4fzt.js} +1 -1
  52. package/dist/{chunk-fq8taatb.js → chunk-fba5hr7b.js} +1 -1
  53. package/dist/{chunk-3esarnmt.js → chunk-g03nphs1.js} +1 -1
  54. package/dist/{chunk-jxwfkmdh.js → chunk-gabqzfq0.js} +3 -3
  55. package/dist/{chunk-zcwynyr0.js → chunk-gykrcxd1.js} +1 -0
  56. package/dist/{chunk-xvs5y4v7.js → chunk-h979cxnh.js} +15 -4
  57. package/dist/{chunk-m54kq3he.js → chunk-hh43wg05.js} +22 -12
  58. package/dist/{chunk-6hbx647r.js → chunk-j4gd5awk.js} +6 -6
  59. package/dist/{chunk-j5wk4ffj.js → chunk-jba22682.js} +3 -3
  60. package/dist/{chunk-5h7vkgvz.js → chunk-jf0y740b.js} +1 -1
  61. package/dist/{chunk-avrh238b.js → chunk-jpamrhdk.js} +1 -1
  62. package/dist/{chunk-gyg2s982.js → chunk-k4qz4q7r.js} +1 -0
  63. package/dist/{chunk-erpzgt57.js → chunk-kv1akmf5.js} +1 -1
  64. package/dist/{chunk-2g0zzx6f.js → chunk-m2ct74my.js} +1 -0
  65. package/dist/{chunk-34ndz1gf.js → chunk-mrrbycgx.js} +3 -3
  66. package/dist/chunk-mz3e810d.js +83 -0
  67. package/dist/{chunk-serw27sv.js → chunk-nkw2vsf3.js} +1 -0
  68. package/dist/{chunk-wf5cnpdg.js → chunk-p45ytcc2.js} +3 -3
  69. package/dist/{chunk-86211e5a.js → chunk-p8gshf3k.js} +1 -1
  70. package/dist/{chunk-dnja1pz5.js → chunk-p8qtk151.js} +1 -1
  71. package/dist/{chunk-3552jz55.js → chunk-qcsxnn16.js} +1 -0
  72. package/dist/{chunk-q40gqpwh.js → chunk-qgjjcmpa.js} +1 -1
  73. package/dist/{chunk-jwajmmfb.js → chunk-qv19jhdk.js} +1 -1
  74. package/dist/{chunk-1x2ch0xc.js → chunk-rffrerg5.js} +3 -1
  75. package/dist/{chunk-hhvp5352.js → chunk-s46hvhjw.js} +1 -1
  76. package/dist/{chunk-h561m2ae.js → chunk-s83v0taa.js} +1 -1
  77. package/dist/{chunk-emasqc8x.js → chunk-sat9hjv7.js} +1 -1
  78. package/dist/{chunk-ets9h67e.js → chunk-tea1nrwn.js} +2 -2
  79. package/dist/{chunk-47xfhw4f.js → chunk-v9r6t8bz.js} +1 -0
  80. package/dist/{chunk-48b1ya7g.js → chunk-ve9gpkxd.js} +1 -1
  81. package/dist/{chunk-jacxpetf.js → chunk-vjtbpkht.js} +2 -2
  82. package/dist/{chunk-1apg76a7.js → chunk-vq8nc5xa.js} +1 -1
  83. package/dist/{chunk-55bcw5ff.js → chunk-w1w71edg.js} +1 -0
  84. package/dist/{chunk-9zyam2cn.js → chunk-wkpf4bv7.js} +1 -1
  85. package/dist/{chunk-ed49y20r.js → chunk-ws4y7ctw.js} +1 -1
  86. package/dist/{chunk-ha24sd50.js → chunk-ykt5sv7n.js} +1 -1
  87. package/dist/{chunk-yncp9nsv.js → chunk-z4jpedvh.js} +1 -0
  88. package/dist/{chunk-b12s32e3.js → chunk-zj06vvcz.js} +1 -1
  89. package/dist/{chunk-5h6m9dsm.js → chunk-ztcbee24.js} +1 -1
  90. package/dist/components/AlertDialog.d.ts +1 -1
  91. package/dist/components/ButtonLink.d.ts +12 -0
  92. package/dist/components/Card.d.ts +6 -2
  93. package/dist/components/ContextMenu.d.ts +1 -1
  94. package/dist/components/DensityProvider.d.ts +9 -4
  95. package/dist/components/Dialog.d.ts +1 -1
  96. package/dist/components/Drawer.d.ts +1 -1
  97. package/dist/components/DropdownMenu.d.ts +1 -1
  98. package/dist/components/ScrollGuard.d.ts +6 -0
  99. package/dist/components/Toast.d.ts +1 -1
  100. package/dist/components/assistant-ui/elements/AgentCard.js +1 -1
  101. package/dist/components/assistant-ui/elements/ApprovalCard.js +1 -1
  102. package/dist/components/assistant-ui/elements/ArtifactCard.js +1 -1
  103. package/dist/components/assistant-ui/elements/BackgroundInbox.js +2 -2
  104. package/dist/components/assistant-ui/elements/Chart.js +2 -2
  105. package/dist/components/assistant-ui/elements/ChatPanel.js +1 -1
  106. package/dist/components/assistant-ui/elements/Citation.js +3 -2
  107. package/dist/components/assistant-ui/elements/CodeDiff.js +2 -2
  108. package/dist/components/assistant-ui/elements/CommandPalette.js +4 -3
  109. package/dist/components/assistant-ui/elements/ComparisonCard.js +1 -1
  110. package/dist/components/assistant-ui/elements/ComposerContext.js +3 -2
  111. package/dist/components/assistant-ui/elements/ContextDisplay.js +9 -8
  112. package/dist/components/assistant-ui/elements/ContextDisplayBar.js +6 -5
  113. package/dist/components/assistant-ui/elements/ContextDisplayContent.js +3 -2
  114. package/dist/components/assistant-ui/elements/ContextDisplayRing.js +6 -5
  115. package/dist/components/assistant-ui/elements/ContextDisplayRoot.js +3 -2
  116. package/dist/components/assistant-ui/elements/ContextDisplayText.js +6 -5
  117. package/dist/components/assistant-ui/elements/ContextDisplayTrigger.js +3 -2
  118. package/dist/components/assistant-ui/elements/ConversationMap.js +3 -2
  119. package/dist/components/assistant-ui/elements/DataTable.js +2 -2
  120. package/dist/components/assistant-ui/elements/EditMessage.js +2 -2
  121. package/dist/components/assistant-ui/elements/ElicitationForm.js +2 -2
  122. package/dist/components/assistant-ui/elements/FeedbackDialog.js +2 -2
  123. package/dist/components/assistant-ui/elements/FileTree.js +2 -2
  124. package/dist/components/assistant-ui/elements/FlowGraph.js +2 -2
  125. package/dist/components/assistant-ui/elements/GenerativeUi.js +5 -4
  126. package/dist/components/assistant-ui/elements/Image.js +3 -2
  127. package/dist/components/assistant-ui/elements/ImageGallery.js +3 -2
  128. package/dist/components/assistant-ui/elements/MarkdownText.js +4 -3
  129. package/dist/components/assistant-ui/elements/McpServerPanel.js +2 -2
  130. package/dist/components/assistant-ui/elements/MermaidDiagram.js +4 -3
  131. package/dist/components/assistant-ui/elements/MermaidZoom.js +3 -2
  132. package/dist/components/assistant-ui/elements/ModelPicker.js +2 -2
  133. package/dist/components/assistant-ui/elements/ModelSelector.js +13 -12
  134. package/dist/components/assistant-ui/elements/ModelSelectorContent.js +10 -9
  135. package/dist/components/assistant-ui/elements/ModelSelectorEmpty.js +4 -3
  136. package/dist/components/assistant-ui/elements/ModelSelectorFocusAnchor.js +4 -3
  137. package/dist/components/assistant-ui/elements/ModelSelectorGroup.js +4 -3
  138. package/dist/components/assistant-ui/elements/ModelSelectorItem.js +4 -3
  139. package/dist/components/assistant-ui/elements/ModelSelectorList.js +6 -5
  140. package/dist/components/assistant-ui/elements/ModelSelectorRoot.js +3 -2
  141. package/dist/components/assistant-ui/elements/ModelSelectorSearch.js +4 -3
  142. package/dist/components/assistant-ui/elements/ModelSelectorSeparator.js +4 -3
  143. package/dist/components/assistant-ui/elements/ModelSelectorTrigger.js +3 -2
  144. package/dist/components/assistant-ui/elements/ReasoningPanel.js +1 -1
  145. package/dist/components/assistant-ui/elements/RecommendationCard.js +1 -1
  146. package/dist/components/assistant-ui/elements/RegenerateMenu.js +3 -2
  147. package/dist/components/assistant-ui/elements/ScheduleCard.js +1 -1
  148. package/dist/components/assistant-ui/elements/ScrollAnchor.js +1 -1
  149. package/dist/components/assistant-ui/elements/SettingsPanel.js +1 -1
  150. package/dist/components/assistant-ui/elements/SpecSheet.js +1 -1
  151. package/dist/components/assistant-ui/elements/TaskCard.js +1 -1
  152. package/dist/components/assistant-ui/elements/TooltipIconButton.js +3 -2
  153. package/dist/components/assistant-ui/index.js +61 -60
  154. package/dist/components/assistant-ui/native/AssistantModal.js +11 -10
  155. package/dist/components/assistant-ui/native/AssistantSidebar.js +11 -10
  156. package/dist/components/assistant-ui/native/AttachmentPreview.js +5 -4
  157. package/dist/components/assistant-ui/native/ComposerTriggerPopover.js +1 -1
  158. package/dist/components/assistant-ui/native/ContextDisplay.js +11 -10
  159. package/dist/components/assistant-ui/native/ContextDisplayBar.js +8 -7
  160. package/dist/components/assistant-ui/native/ContextDisplayRing.js +8 -7
  161. package/dist/components/assistant-ui/native/ContextDisplayRoot.js +5 -4
  162. package/dist/components/assistant-ui/native/ContextDisplayRuntimeRoot.js +4 -3
  163. package/dist/components/assistant-ui/native/ContextDisplayText.js +8 -7
  164. package/dist/components/assistant-ui/native/ConversationMapAui.js +4 -3
  165. package/dist/components/assistant-ui/native/McpConfigDialog.js +3 -2
  166. package/dist/components/assistant-ui/native/MermaidDiagram.js +5 -4
  167. package/dist/components/assistant-ui/native/MessageTiming.js +3 -2
  168. package/dist/components/assistant-ui/native/ModelSelector.js +15 -14
  169. package/dist/components/assistant-ui/native/Reasoning.js +5 -4
  170. package/dist/components/assistant-ui/native/TaskCard.js +6 -5
  171. package/dist/components/assistant-ui/native/TaskGroup.js +7 -6
  172. package/dist/components/assistant-ui/native/TaskTray.js +3 -2
  173. package/dist/components/assistant-ui/native/Thread.js +9 -8
  174. package/dist/components/assistant-ui/native/ThreadList.js +1 -1
  175. package/dist/components/assistant-ui/native/ThreadListSidebar.js +5 -4
  176. package/dist/components/assistant-ui/native/VoiceControl.js +6 -5
  177. package/dist/components/assistant-ui/native/VoiceDisconnectButton.js +4 -3
  178. package/dist/components/assistant-ui/native/VoiceMuteButton.js +4 -3
  179. package/dist/components/assistant-ui/native/index.js +53 -52
  180. package/dist/components/command/index.js +3 -2
  181. package/dist/components/questionnaire/index.js +2 -2
  182. package/dist/components/resizable/Resizable.d.ts +1 -1
  183. package/dist/components/resizable/index.js +1 -1
  184. package/dist/hooks/useCardSpotlight.d.ts +7 -0
  185. package/dist/hooks/usePortalNode.d.ts +14 -0
  186. package/dist/index.d.ts +3 -0
  187. package/dist/index.js +649 -435
  188. package/dist/theme.css +91 -16
  189. package/dist/utils/observeScrollGuards.d.ts +4 -0
  190. package/llms/components/actions/Button.md +433 -0
  191. package/llms/components/actions/ButtonGroup.md +278 -0
  192. package/llms/components/actions/ButtonLink.md +189 -0
  193. package/llms/components/actions/Toggle.md +191 -0
  194. package/llms/components/actions/ToggleGroup.md +161 -0
  195. package/llms/components/assistant-ui/elements/agents-tasks/AgentCard.md +60 -0
  196. package/llms/components/assistant-ui/elements/agents-tasks/AgentHandoff.md +78 -0
  197. package/llms/components/assistant-ui/elements/agents-tasks/AgentPlan.md +57 -0
  198. package/llms/components/assistant-ui/elements/agents-tasks/AgentStatus.md +88 -0
  199. package/llms/components/assistant-ui/elements/agents-tasks/JobProgress.md +84 -0
  200. package/llms/components/assistant-ui/elements/agents-tasks/RunActivity.md +75 -0
  201. package/llms/components/assistant-ui/elements/agents-tasks/ScheduleCard.md +91 -0
  202. package/llms/components/assistant-ui/elements/agents-tasks/StoppedRun.md +54 -0
  203. package/llms/components/assistant-ui/elements/agents-tasks/SubagentList.md +72 -0
  204. package/llms/components/assistant-ui/elements/agents-tasks/TaskCard.md +101 -0
  205. package/llms/components/assistant-ui/elements/agents-tasks/TaskStateIcon.md +86 -0
  206. package/llms/components/assistant-ui/elements/agents-tasks/TodoList.md +99 -0
  207. package/llms/components/assistant-ui/elements/branding/ClaudeLogo.md +36 -0
  208. package/llms/components/assistant-ui/elements/branding/GeminiLogo.md +47 -0
  209. package/llms/components/assistant-ui/elements/branding/GitHubIcon.md +41 -0
  210. package/llms/components/assistant-ui/elements/branding/OpenAILogo.md +36 -0
  211. package/llms/components/assistant-ui/elements/code-diffs/CodeDiff.md +67 -0
  212. package/llms/components/assistant-ui/elements/code-diffs/CodeRunner.md +66 -0
  213. package/llms/components/assistant-ui/elements/code-diffs/DiffViewer.md +144 -0
  214. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerContent.md +50 -0
  215. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerFile.md +50 -0
  216. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerFileBadge.md +50 -0
  217. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerFileContent.md +59 -0
  218. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerHeader.md +81 -0
  219. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerLine.md +50 -0
  220. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerSplitLine.md +55 -0
  221. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerStats.md +50 -0
  222. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerText.md +44 -0
  223. package/llms/components/assistant-ui/elements/code-diffs/ReviewableDiff.md +102 -0
  224. package/llms/components/assistant-ui/elements/code-diffs/ShikiHighlighter.md +131 -0
  225. package/llms/components/assistant-ui/elements/code-diffs/SyntaxHighlighter.md +62 -0
  226. package/llms/components/assistant-ui/elements/code-diffs/TerminalAnsiFragment.md +66 -0
  227. package/llms/components/assistant-ui/elements/code-diffs/TerminalBlock.md +131 -0
  228. package/llms/components/assistant-ui/elements/composer/CommandPalette.md +79 -0
  229. package/llms/components/assistant-ui/elements/composer/Composer.md +62 -0
  230. package/llms/components/assistant-ui/elements/composer/ComposerActions.md +34 -0
  231. package/llms/components/assistant-ui/elements/composer/ComposerAttachButton.md +50 -0
  232. package/llms/components/assistant-ui/elements/composer/ComposerAttachmentChip.md +58 -0
  233. package/llms/components/assistant-ui/elements/composer/ComposerAttachments.md +42 -0
  234. package/llms/components/assistant-ui/elements/composer/ComposerBar.md +42 -0
  235. package/llms/components/assistant-ui/elements/composer/ComposerCommandItem.md +42 -0
  236. package/llms/components/assistant-ui/elements/composer/ComposerContext.md +50 -0
  237. package/llms/components/assistant-ui/elements/composer/ComposerInput.md +56 -0
  238. package/llms/components/assistant-ui/elements/composer/ComposerMenu.md +59 -0
  239. package/llms/components/assistant-ui/elements/composer/ComposerMenuItem.md +50 -0
  240. package/llms/components/assistant-ui/elements/composer/ComposerModelItem.md +42 -0
  241. package/llms/components/assistant-ui/elements/composer/ComposerModelTrigger.md +42 -0
  242. package/llms/components/assistant-ui/elements/composer/ComposerPersonItem.md +42 -0
  243. package/llms/components/assistant-ui/elements/composer/ComposerSend.md +58 -0
  244. package/llms/components/assistant-ui/elements/composer/ComposerToolbar.md +34 -0
  245. package/llms/components/assistant-ui/elements/composer/ComposerVoice.md +58 -0
  246. package/llms/components/assistant-ui/elements/composer/ComposerVoiceButton.md +50 -0
  247. package/llms/components/assistant-ui/elements/composer/MobileComposer.md +82 -0
  248. package/llms/components/assistant-ui/elements/composer/PromptLibrary.md +99 -0
  249. package/llms/components/assistant-ui/elements/composer/Suggestions.md +62 -0
  250. package/llms/components/assistant-ui/elements/context/ContextBreakdown.md +58 -0
  251. package/llms/components/assistant-ui/elements/context/ContextDisplay.md +37 -0
  252. package/llms/components/assistant-ui/elements/context/ContextDisplayBar.md +28 -0
  253. package/llms/components/assistant-ui/elements/context/ContextDisplayContent.md +31 -0
  254. package/llms/components/assistant-ui/elements/context/ContextDisplayRing.md +28 -0
  255. package/llms/components/assistant-ui/elements/context/ContextDisplayRoot.md +54 -0
  256. package/llms/components/assistant-ui/elements/context/ContextDisplayText.md +28 -0
  257. package/llms/components/assistant-ui/elements/context/ContextDisplayTrigger.md +51 -0
  258. package/llms/components/assistant-ui/elements/context/ContextDisplayValue.md +58 -0
  259. package/llms/components/assistant-ui/elements/context/MemoryChips.md +57 -0
  260. package/llms/components/assistant-ui/elements/conversations/BackgroundInbox.md +57 -0
  261. package/llms/components/assistant-ui/elements/conversations/CanvasSplit.md +68 -0
  262. package/llms/components/assistant-ui/elements/conversations/ChatPanel.md +82 -0
  263. package/llms/components/assistant-ui/elements/conversations/CheckpointHistory.md +57 -0
  264. package/llms/components/assistant-ui/elements/conversations/ConversationMap.md +59 -0
  265. package/llms/components/assistant-ui/elements/conversations/ConversationSearch.md +83 -0
  266. package/llms/components/assistant-ui/elements/conversations/DaySeparator.md +44 -0
  267. package/llms/components/assistant-ui/elements/conversations/DraftRestore.md +48 -0
  268. package/llms/components/assistant-ui/elements/conversations/EditMessage.md +97 -0
  269. package/llms/components/assistant-ui/elements/conversations/LauncherBubble.md +79 -0
  270. package/llms/components/assistant-ui/elements/conversations/MessageActions.md +68 -0
  271. package/llms/components/assistant-ui/elements/conversations/MessageAttachments.md +57 -0
  272. package/llms/components/assistant-ui/elements/conversations/MessageBranches.md +76 -0
  273. package/llms/components/assistant-ui/elements/conversations/MessagePair.md +57 -0
  274. package/llms/components/assistant-ui/elements/conversations/MessageQueue.md +54 -0
  275. package/llms/components/assistant-ui/elements/conversations/MessageTiming.md +78 -0
  276. package/llms/components/assistant-ui/elements/conversations/QuoteReply.md +83 -0
  277. package/llms/components/assistant-ui/elements/conversations/RegenerateMenu.md +117 -0
  278. package/llms/components/assistant-ui/elements/conversations/ScrollAnchor.md +56 -0
  279. package/llms/components/assistant-ui/elements/conversations/SharedConversation.md +81 -0
  280. package/llms/components/assistant-ui/elements/conversations/ThreadList.md +121 -0
  281. package/llms/components/assistant-ui/elements/conversations/ThreadSearch.md +131 -0
  282. package/llms/components/assistant-ui/elements/data-visualization/ActivityGraph.md +51 -0
  283. package/llms/components/assistant-ui/elements/data-visualization/ArtifactCard.md +50 -0
  284. package/llms/components/assistant-ui/elements/data-visualization/Chart.md +58 -0
  285. package/llms/components/assistant-ui/elements/data-visualization/ComparisonCard.md +58 -0
  286. package/llms/components/assistant-ui/elements/data-visualization/CostMeter.md +49 -0
  287. package/llms/components/assistant-ui/elements/data-visualization/DataTable.md +240 -0
  288. package/llms/components/assistant-ui/elements/data-visualization/Diagram.md +77 -0
  289. package/llms/components/assistant-ui/elements/data-visualization/DotMatrix.md +188 -0
  290. package/llms/components/assistant-ui/elements/data-visualization/FlowGraph.md +61 -0
  291. package/llms/components/assistant-ui/elements/data-visualization/GenerativeUi.md +110 -0
  292. package/llms/components/assistant-ui/elements/data-visualization/GenerativeUiTheme.md +67 -0
  293. package/llms/components/assistant-ui/elements/data-visualization/GeoMap.md +91 -0
  294. package/llms/components/assistant-ui/elements/data-visualization/HeatGraph.md +57 -0
  295. package/llms/components/assistant-ui/elements/data-visualization/MapAnswer.md +58 -0
  296. package/llms/components/assistant-ui/elements/data-visualization/MermaidDiagram.md +66 -0
  297. package/llms/components/assistant-ui/elements/data-visualization/NumberRoll.md +88 -0
  298. package/llms/components/assistant-ui/elements/data-visualization/NumberRollDigit.md +28 -0
  299. package/llms/components/assistant-ui/elements/data-visualization/NumberRollPart.md +28 -0
  300. package/llms/components/assistant-ui/elements/data-visualization/NumberTicker.md +87 -0
  301. package/llms/components/assistant-ui/elements/data-visualization/RecommendationCard.md +86 -0
  302. package/llms/components/assistant-ui/elements/data-visualization/ScoreBreakdown.md +72 -0
  303. package/llms/components/assistant-ui/elements/data-visualization/ShareMeter.md +50 -0
  304. package/llms/components/assistant-ui/elements/data-visualization/SpecSheet.md +69 -0
  305. package/llms/components/assistant-ui/elements/data-visualization/Timeline.md +72 -0
  306. package/llms/components/assistant-ui/elements/data-visualization/TraceWaterfall.md +88 -0
  307. package/llms/components/assistant-ui/elements/media-voice/AudioPlayer.md +50 -0
  308. package/llms/components/assistant-ui/elements/media-voice/File.md +122 -0
  309. package/llms/components/assistant-ui/elements/media-voice/FileTree.md +59 -0
  310. package/llms/components/assistant-ui/elements/media-voice/Image.md +201 -0
  311. package/llms/components/assistant-ui/elements/media-voice/ImageGallery.md +64 -0
  312. package/llms/components/assistant-ui/elements/media-voice/ImageGeneration.md +50 -0
  313. package/llms/components/assistant-ui/elements/media-voice/ReadAloud.md +89 -0
  314. package/llms/components/assistant-ui/elements/media-voice/SpeakerIdentity.md +60 -0
  315. package/llms/components/assistant-ui/elements/media-voice/VideoPlayer.md +42 -0
  316. package/llms/components/assistant-ui/elements/media-voice/VoiceConversation.md +78 -0
  317. package/llms/components/assistant-ui/elements/media-voice/VoiceOrb.md +110 -0
  318. package/llms/components/assistant-ui/elements/models/ModelPicker.md +79 -0
  319. package/llms/components/assistant-ui/elements/models/ModelSelector.md +48 -0
  320. package/llms/components/assistant-ui/elements/models/ModelSelectorContent.md +45 -0
  321. package/llms/components/assistant-ui/elements/models/ModelSelectorEffort.md +31 -0
  322. package/llms/components/assistant-ui/elements/models/ModelSelectorEmpty.md +30 -0
  323. package/llms/components/assistant-ui/elements/models/ModelSelectorFocusAnchor.md +31 -0
  324. package/llms/components/assistant-ui/elements/models/ModelSelectorGroup.md +40 -0
  325. package/llms/components/assistant-ui/elements/models/ModelSelectorItem.md +38 -0
  326. package/llms/components/assistant-ui/elements/models/ModelSelectorList.md +30 -0
  327. package/llms/components/assistant-ui/elements/models/ModelSelectorRoot.md +72 -0
  328. package/llms/components/assistant-ui/elements/models/ModelSelectorSearch.md +31 -0
  329. package/llms/components/assistant-ui/elements/models/ModelSelectorSeparator.md +34 -0
  330. package/llms/components/assistant-ui/elements/models/ModelSelectorTrigger.md +66 -0
  331. package/llms/components/assistant-ui/elements/models/ModelSelectorValue.md +32 -0
  332. package/llms/components/assistant-ui/elements/models/ReasoningEffort.md +86 -0
  333. package/llms/components/assistant-ui/elements/reasoning/GenerationLoader.md +88 -0
  334. package/llms/components/assistant-ui/elements/reasoning/ReasoningContent.md +59 -0
  335. package/llms/components/assistant-ui/elements/reasoning/ReasoningFade.md +62 -0
  336. package/llms/components/assistant-ui/elements/reasoning/ReasoningPanel.md +75 -0
  337. package/llms/components/assistant-ui/elements/reasoning/ReasoningRoot.md +101 -0
  338. package/llms/components/assistant-ui/elements/reasoning/ReasoningText.md +59 -0
  339. package/llms/components/assistant-ui/elements/reasoning/ReasoningTrigger.md +59 -0
  340. package/llms/components/assistant-ui/elements/reasoning/ThinkingIndicator.md +54 -0
  341. package/llms/components/assistant-ui/elements/reasoning/TypingIndicator.md +62 -0
  342. package/llms/components/assistant-ui/elements/sources-research/Citation.md +103 -0
  343. package/llms/components/assistant-ui/elements/sources-research/ConfidenceMarker.md +94 -0
  344. package/llms/components/assistant-ui/elements/sources-research/DocumentReference.md +60 -0
  345. package/llms/components/assistant-ui/elements/sources-research/InlineCitation.md +56 -0
  346. package/llms/components/assistant-ui/elements/sources-research/LinkPreview.md +65 -0
  347. package/llms/components/assistant-ui/elements/sources-research/ResearchReport.md +72 -0
  348. package/llms/components/assistant-ui/elements/sources-research/RetrievalChunks.md +75 -0
  349. package/llms/components/assistant-ui/elements/sources-research/SourceGlyph.md +54 -0
  350. package/llms/components/assistant-ui/elements/sources-research/Sources.md +150 -0
  351. package/llms/components/assistant-ui/elements/sources-research/WebPreview.md +80 -0
  352. package/llms/components/assistant-ui/elements/sources-research/WebSearch.md +72 -0
  353. package/llms/components/assistant-ui/elements/states-settings/ConnectionState.md +58 -0
  354. package/llms/components/assistant-ui/elements/states-settings/ElicitationForm.md +101 -0
  355. package/llms/components/assistant-ui/elements/states-settings/EmptyState.md +64 -0
  356. package/llms/components/assistant-ui/elements/states-settings/EmptyStateComposer.md +88 -0
  357. package/llms/components/assistant-ui/elements/states-settings/EmptyStateGreeting.md +56 -0
  358. package/llms/components/assistant-ui/elements/states-settings/EmptyStateSuggestion.md +66 -0
  359. package/llms/components/assistant-ui/elements/states-settings/EmptyStateSuggestions.md +61 -0
  360. package/llms/components/assistant-ui/elements/states-settings/ErrorState.md +47 -0
  361. package/llms/components/assistant-ui/elements/states-settings/EveAskQuestion.md +166 -0
  362. package/llms/components/assistant-ui/elements/states-settings/FeedbackDialog.md +85 -0
  363. package/llms/components/assistant-ui/elements/states-settings/Onboarding.md +84 -0
  364. package/llms/components/assistant-ui/elements/states-settings/OptionList.md +74 -0
  365. package/llms/components/assistant-ui/elements/states-settings/OptionText.md +38 -0
  366. package/llms/components/assistant-ui/elements/states-settings/QuestionFlow.md +85 -0
  367. package/llms/components/assistant-ui/elements/states-settings/QuotaBanner.md +91 -0
  368. package/llms/components/assistant-ui/elements/states-settings/SettingsPanel.md +92 -0
  369. package/llms/components/assistant-ui/elements/text-formatting/DirectiveText.md +94 -0
  370. package/llms/components/assistant-ui/elements/text-formatting/Frac.md +28 -0
  371. package/llms/components/assistant-ui/elements/text-formatting/MarkdownText.md +66 -0
  372. package/llms/components/assistant-ui/elements/text-formatting/MathBlock.md +67 -0
  373. package/llms/components/assistant-ui/elements/text-formatting/StreamingText.md +62 -0
  374. package/llms/components/assistant-ui/elements/text-formatting/Sub.md +28 -0
  375. package/llms/components/assistant-ui/elements/text-formatting/Sup.md +28 -0
  376. package/llms/components/assistant-ui/elements/tools-approvals/ApprovalCard.md +96 -0
  377. package/llms/components/assistant-ui/elements/tools-approvals/ComputerUse.md +58 -0
  378. package/llms/components/assistant-ui/elements/tools-approvals/GuardrailNotice.md +78 -0
  379. package/llms/components/assistant-ui/elements/tools-approvals/McpServerPanel.md +73 -0
  380. package/llms/components/assistant-ui/elements/tools-approvals/PermissionGrant.md +104 -0
  381. package/llms/components/assistant-ui/elements/tools-approvals/ToolCall.md +81 -0
  382. package/llms/components/assistant-ui/elements/tools-approvals/ToolError.md +89 -0
  383. package/llms/components/assistant-ui/elements/tools-approvals/ToolGroup.md +101 -0
  384. package/llms/components/assistant-ui/elements/tools-approvals/ToolTimeline.md +87 -0
  385. package/llms/components/assistant-ui/native/agents-tasks/AgentStatus.md +87 -0
  386. package/llms/components/assistant-ui/native/agents-tasks/TaskCard.md +111 -0
  387. package/llms/components/assistant-ui/native/agents-tasks/TaskGroup.md +82 -0
  388. package/llms/components/assistant-ui/native/agents-tasks/TaskTray.md +66 -0
  389. package/llms/components/assistant-ui/native/code-diffs/SyntaxHighlighter.md +48 -0
  390. package/llms/components/assistant-ui/native/composer/AttachmentPreview.md +58 -0
  391. package/llms/components/assistant-ui/native/composer/ComposerTriggerPopover.md +42 -0
  392. package/llms/components/assistant-ui/native/composer/FollowupSuggestionsRow.md +36 -0
  393. package/llms/components/assistant-ui/native/context/ContextDisplay.md +42 -0
  394. package/llms/components/assistant-ui/native/context/ContextDisplayBar.md +52 -0
  395. package/llms/components/assistant-ui/native/context/ContextDisplayRing.md +52 -0
  396. package/llms/components/assistant-ui/native/context/ContextDisplayRoot.md +42 -0
  397. package/llms/components/assistant-ui/native/context/ContextDisplayRuntimeRoot.md +42 -0
  398. package/llms/components/assistant-ui/native/context/ContextDisplayText.md +52 -0
  399. package/llms/components/assistant-ui/native/conversations/AssistantModal.md +60 -0
  400. package/llms/components/assistant-ui/native/conversations/AssistantSidebar.md +44 -0
  401. package/llms/components/assistant-ui/native/conversations/ConversationMapAui.md +50 -0
  402. package/llms/components/assistant-ui/native/conversations/MessageTiming.md +83 -0
  403. package/llms/components/assistant-ui/native/conversations/QuoteBlock.md +34 -0
  404. package/llms/components/assistant-ui/native/conversations/SelectionToolbar.md +53 -0
  405. package/llms/components/assistant-ui/native/conversations/Thread.md +144 -0
  406. package/llms/components/assistant-ui/native/conversations/ThreadList.md +67 -0
  407. package/llms/components/assistant-ui/native/conversations/ThreadListSidebar.md +45 -0
  408. package/llms/components/assistant-ui/native/data-visualization/MermaidDiagram.md +34 -0
  409. package/llms/components/assistant-ui/native/media-voice/VoiceConnectButton.md +69 -0
  410. package/llms/components/assistant-ui/native/media-voice/VoiceControl.md +52 -0
  411. package/llms/components/assistant-ui/native/media-voice/VoiceConversation.md +64 -0
  412. package/llms/components/assistant-ui/native/media-voice/VoiceDisconnectButton.md +53 -0
  413. package/llms/components/assistant-ui/native/media-voice/VoiceMuteButton.md +59 -0
  414. package/llms/components/assistant-ui/native/media-voice/VoiceOrb.md +66 -0
  415. package/llms/components/assistant-ui/native/media-voice/VoiceStatusDot.md +58 -0
  416. package/llms/components/assistant-ui/native/models/ModelSelector.md +50 -0
  417. package/llms/components/assistant-ui/native/reasoning/Reasoning.md +87 -0
  418. package/llms/components/assistant-ui/native/sources-research/Sources.md +145 -0
  419. package/llms/components/assistant-ui/native/text-formatting/DirectiveText.md +42 -0
  420. package/llms/components/assistant-ui/native/tools-approvals/McpConfigDialog.md +54 -0
  421. package/llms/components/assistant-ui/native/tools-approvals/ToolFallbackApproval.md +352 -0
  422. package/llms/components/assistant-ui/native/tools-approvals/ToolFallbackRoot.md +84 -0
  423. package/llms/components/assistant-ui/native/tools-approvals/ToolGroup.md +63 -0
  424. package/llms/components/data-display/Avatar.md +254 -0
  425. package/llms/components/data-display/Badge.md +221 -0
  426. package/llms/components/data-display/Carousel.md +465 -0
  427. package/llms/components/data-display/Chart.md +546 -0
  428. package/llms/components/data-display/Item.md +502 -0
  429. package/llms/components/data-display/JsonViewer.md +38 -0
  430. package/llms/components/data-display/Kbd.md +99 -0
  431. package/llms/components/data-display/Table.md +254 -0
  432. package/llms/components/data-display/VirtualTable.md +57 -0
  433. package/llms/components/dates/Calendar.md +539 -0
  434. package/llms/components/dates/PersianCalendar.md +117 -0
  435. package/llms/components/drag-drop/DragDropPreview.md +46 -0
  436. package/llms/components/drag-drop/DragDropProvider.md +28 -0
  437. package/llms/components/feedback/Alert.md +117 -0
  438. package/llms/components/feedback/Empty.md +193 -0
  439. package/llms/components/feedback/EmptyState.md +38 -0
  440. package/llms/components/feedback/PageMessage.md +49 -0
  441. package/llms/components/feedback/Progress.md +140 -0
  442. package/llms/components/feedback/Skeleton.md +157 -0
  443. package/llms/components/feedback/Sonner.md +325 -0
  444. package/llms/components/feedback/Spinner.md +119 -0
  445. package/llms/components/feedback/Toast.md +242 -0
  446. package/llms/components/forms/Checkbox.md +204 -0
  447. package/llms/components/forms/Combobox.md +594 -0
  448. package/llms/components/forms/Field.md +511 -0
  449. package/llms/components/forms/ImagePicker.md +63 -0
  450. package/llms/components/forms/InlineEdit.md +67 -0
  451. package/llms/components/forms/Input.md +380 -0
  452. package/llms/components/forms/InputGroup.md +628 -0
  453. package/llms/components/forms/InputOTP.md +400 -0
  454. package/llms/components/forms/Label.md +181 -0
  455. package/llms/components/forms/NativeSelect.md +128 -0
  456. package/llms/components/forms/Questionnaire.md +267 -0
  457. package/llms/components/forms/RadioGroup.md +401 -0
  458. package/llms/components/forms/Select.md +575 -0
  459. package/llms/components/forms/Slider.md +234 -0
  460. package/llms/components/forms/StarRating.md +60 -0
  461. package/llms/components/forms/Switch.md +240 -0
  462. package/llms/components/forms/Textarea.md +219 -0
  463. package/llms/components/layout/Accordion.md +249 -0
  464. package/llms/components/layout/AspectRatio.md +68 -0
  465. package/llms/components/layout/Card.md +391 -0
  466. package/llms/components/layout/Collapsible.md +231 -0
  467. package/llms/components/layout/Resizable.md +267 -0
  468. package/llms/components/layout/ScrollArea.md +170 -0
  469. package/llms/components/layout/Separator.md +104 -0
  470. package/llms/components/layout/SplitView.md +92 -0
  471. package/llms/components/messaging/Attachment.md +324 -0
  472. package/llms/components/messaging/Bubble.md +411 -0
  473. package/llms/components/messaging/Marker.md +203 -0
  474. package/llms/components/messaging/Message.md +268 -0
  475. package/llms/components/messaging/MessageScroller.md +227 -0
  476. package/llms/components/navigation/Breadcrumb.md +159 -0
  477. package/llms/components/navigation/Command.md +471 -0
  478. package/llms/components/navigation/ContextMenu.md +596 -0
  479. package/llms/components/navigation/DropdownMenu.md +602 -0
  480. package/llms/components/navigation/Menubar.md +397 -0
  481. package/llms/components/navigation/NavigationMenu.md +379 -0
  482. package/llms/components/navigation/Pagination.md +222 -0
  483. package/llms/components/navigation/Sidebar.md +330 -0
  484. package/llms/components/navigation/Tabs.md +418 -0
  485. package/llms/components/overlays/AlertDialog.md +365 -0
  486. package/llms/components/overlays/ConfirmationDialog.md +77 -0
  487. package/llms/components/overlays/Dialog.md +559 -0
  488. package/llms/components/overlays/Drawer.md +597 -0
  489. package/llms/components/overlays/HoverCard.md +276 -0
  490. package/llms/components/overlays/Popover.md +286 -0
  491. package/llms/components/overlays/Sheet.md +433 -0
  492. package/llms/components/overlays/Tooltip.md +318 -0
  493. package/llms/components/providers/DensityProvider.md +171 -0
  494. package/llms/components/providers/DirectionProvider.md +39 -0
  495. package/llms/components/providers/PortalProvider.md +264 -0
  496. package/llms/components/providers/ScrollGuard.md +24 -0
  497. package/llms/components/providers/ThemeProvider.md +71 -0
  498. package/llms/setup.md +380 -0
  499. package/llms.txt +428 -0
  500. package/package.json +8 -5
  501. package/dist/chunk-czg9p52v.js +0 -74
  502. package/dist/chunk-fqekyjkh.js +0 -65
package/README.md CHANGED
@@ -1,3 +1,12 @@
1
+ > [!IMPORTANT]
2
+ > **AI agents:** Before using this package, run the following command from the consuming project and read the linked setup and component documentation:
3
+ >
4
+ > ```sh
5
+ > cat node_modules/@alexgorbatchev/shadcn/llms.txt
6
+ > ```
7
+ >
8
+ > Resolve the index's relative links from `node_modules/@alexgorbatchev/shadcn/`.
9
+
1
10
  `@alexgorbatchev/shadcn` is a standalone React component library for Bun applications that need the sharp, monospace devhost design language. Install it as an npm-compatible package and explore its components in the local interactive Storybook catalog. Consuming apps do not depend on the devhost project.
2
11
 
3
12
  # What It Does
@@ -16,7 +25,7 @@
16
25
  # How it Really Works
17
26
 
18
27
  1. The stylesheet supplies semantic tokens and base body styling. Your Tailwind build scans the installed package to generate component utilities. Font loading is optional; importing `fonts.css` serves JetBrains Mono through your app's asset pipeline.
19
- 2. Theme preference persists in browser local storage, and system mode follows the operating system color preference. The theme provider sets `data-theme` and `color-scheme` on the document root, so dialogs and menus share that palette. Use one provider per document. Density also follows components into their portals. A component's `density` prop overrides its own presentation; nest a `DensityProvider` to change a subtree and its popups together. `useTheme()` throws outside `ThemeProvider`.
28
+ 2. Theme preference persists in browser local storage, and system mode follows the operating system color preference. The theme provider sets `data-theme` and `color-scheme` on the document root, so dialogs and menus share that palette. Use one provider per document. Density also follows components into their portals. A component's `density` prop overrides its own presentation; nest a `DensityProvider` to change a subtree and its popups together. A provider declares every density token, so its subtree keeps its density whatever an ancestor or a host page declares. It renders a `div` by default; pass `render`, such as `render={<section aria-label="Tools" className="flex gap-2" />}`, to make your own element the density root instead of adding a wrapper. `useTheme()` throws outside `ThemeProvider`.
20
29
  3. Storybook's Theme and Density toolbars change the component examples. Docs backgrounds and example frames follow the selected palette; the preview starts in dark mode with comfortable density.
21
30
 
22
31
  # Prerequisites
@@ -64,11 +73,11 @@ import { ChartContainer, type ChartConfig } from "@alexgorbatchev/shadcn/chart";
64
73
  import { Carousel, CarouselContent, CarouselItem } from "@alexgorbatchev/shadcn/carousel";
65
74
  ```
66
75
 
67
- The patched `sonner`, `input-otp`, and `@shadcn/react` packages remain regular dependencies pending upstream fixes. Other feature dependencies are optional peers, so a core-only installation does not request them. Shared providers work across entry points.
76
+ The patched `sonner`, `input-otp`, and `@shadcn/react` packages remain regular dependencies pending upstream fixes. `@base-ui/utils` is a regular dependency at the exact version `@base-ui/react` requires, so the portal components share Base UI's own ref merging without installing a second copy. Other feature dependencies are optional peers, so a core-only installation does not request them. Shared providers work across entry points.
68
77
 
69
78
  The optional assistant-ui catalog provides presentational families under `/assistant-ui/<family>` and runtime adapters under `/assistant-ui/native/<family>`. For example, import `ApprovalCard` from `@alexgorbatchev/shadcn/assistant-ui/approval-card`. Add `@alexgorbatchev/shadcn/assistant-ui.css` to your stylesheet. Native threads require an actual assistant-ui runtime and the selected family's optional peers. See the [assistant-ui reference](./docs/internal/assistant-ui.md) for imports, dependency-bearing styles, source inventory, and the SelectionToolbar isolation limitation.
70
79
 
71
- For embedded surfaces, import `PortalProvider` from the package root and pass the real overlay `container`. Dialogs, alerts, sheets, drawers, menus, navigation popups, comboboxes, selects, hover cards, tooltips, popovers, and Base UI toasts inherit that container. Native portal props can still supply an explicit container override.
80
+ For embedded surfaces, import `PortalProvider` from the package root and pass the real overlay `container`. Dialogs, alerts, sheets, drawers, menus, navigation popups, comboboxes, selects, hover cards, tooltips, popovers, and Base UI toasts inherit that container. The container applies to the outermost popup: a popup opened inside another one, such as a select in a dialog, renders inside that popup's portal, where a modal dialog counts it as inside the dialog and keeps it reachable by assistive technology and the pointer. Native portal props can still supply an explicit container override.
72
81
 
73
82
  # Quick Start
74
83
 
@@ -173,11 +182,17 @@ Override tokens after the theme imports. This example uses the existing success
173
182
  }
174
183
  ```
175
184
 
185
+ # LLM Documentation
186
+
187
+ Storybook serves a generated `llms.txt` index at its site root, with linked setup instructions and a reference page for each story file. Pages contain public package imports, documented story controls, default args, and Storybook CSF examples with interaction tests omitted. The excerpts can depend on local helpers and fixtures; each page links to its full source. Story controls describe the configured controls, rather than the complete TypeScript props API.
188
+
189
+ The npm package includes the same index at `llms.txt` in its root and its linked pages under `llms/`. Package and Storybook builds regenerate these files from the public exports, README, and story catalog.
190
+
176
191
  # Component Catalog
177
192
 
178
193
  | Area | Components |
179
194
  | :----------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
180
- | Actions and status | Alert, Badge, Button, ButtonGroup, Sonner, Toast, Toggle, ToggleGroup |
195
+ | Actions and status | Alert, Badge, Button, ButtonGroup, ButtonLink, Sonner, Toast, Toggle, ToggleGroup |
181
196
  | Forms and selections | Calendar, Checkbox, Combobox, Command, Field, Input, InputGroup, InputOTP, Label, NativeSelect, Questionnaire, RadioGroup, Select, Slider, Switch, Textarea |
182
197
  | Structure and navigation | Accordion, AspectRatio, Avatar, Breadcrumb, Card, Carousel, Chart, Collapsible, Empty, Item, Kbd, Menubar, NavigationMenu, Pagination, Resizable, ScrollArea, Separator, Sidebar, Table, Tabs |
183
198
  | Overlays | AlertDialog, ContextMenu, Dialog, Drawer, DropdownMenu, HoverCard, Popover, Sheet, Tooltip |
@@ -189,6 +204,12 @@ Use the composed parts exported from the package root, such as `DialogTrigger`,
189
204
 
190
205
  `ScrollArea` supplies a native scroll viewport and one vertical `ScrollBar` by default. Set `scrollbars={<ScrollBar orientation="horizontal" />}` for a wide horizontal layout, or supply a fragment containing vertical and horizontal parts for both axes. The tracks stay outside the viewport and reserve their shared corner. `keepMounted` belongs to `ScrollBar`; root and track className callbacks receive native overflow/scroll state. Focus the viewport for native keyboard scrolling.
191
206
 
207
+ Scrolling is intentional: cards, panels, dialogs, sheets, and floating surfaces carry `data-scroll="none"`. Put long content in a nested `ScrollArea` or an explicitly styled native scroll viewport; the outer surface stays stationary. `DialogContent` bounds its height to the viewport and uses a flex column, so give a nested `ScrollArea` `className="min-h-0"` to let it shrink within the dialog. Headers and footers stay outside that scroll area when they need to remain visible.
208
+
209
+ `ThemeProvider` mounts the development-only `ScrollGuard`. Without a theme provider, mount `<ScrollGuard />` once in your app. Add `data-scroll="none"` to any HTML element to apply the same check. The guard throws a browser error identifying the element, axis, and scroll range when computed `overflow: auto` or `scroll` permits overflowing content to scroll. It checks the marked element itself, including portaled elements in the same document, after content and size changes; nested scroll viewports remain independent. Hidden and clipped overflow do not trigger it. Duplicate mounts share one observer per document, and the final unmount disconnects it. Pass `ownerDocument` to check an iframe's document; shadow roots require their own layout validation. The guard installs no observers when the consuming application's `NODE_ENV` is `"production"`.
210
+
211
+ `ButtonLink` renders a native anchor with Button's `variant`, `size`, `align`, `truncate`, `fullWidth`, and `density` options, so navigation keeps the link role, Enter activation, and browser link behavior without `role="button"`. Pass `href` for a plain link, or a router link element through `render`, such as `<ButtonLink variant="outline" render={<Link to="/settings" />}>Settings</ButtonLink>`; class names, children, handlers, and refs merge with the rendered element. Its render callback receives typed slot and density state. Mark icons with `data-icon="inline-start"` or `data-icon="inline-end"` as in Button. Use `Button` for actions that do not navigate.
212
+
192
213
  `Badge` renders a span by default. Use `render={<a href="https://base-ui.com/" />}` for navigation or a native button for actions; handlers and refs merge with the rendered element. Its render callback receives typed variant, density, and slot state. Mark icons with `data-icon="inline-start"` or `data-icon="inline-end"`; their spacing follows inline direction. Use the success and warning variants for those statuses.
193
214
 
194
215
  Compose `CardHeader`, `CardTitle`, `CardDescription`, `CardAction`, `CardContent`, and `CardFooter` inside `Card`. Use a native heading inside `CardTitle` when the title belongs in the document outline. The `size="sm"` option reduces spacing; density controls the base inset. A leading image meets the frame without top padding, and cards without footers retain bottom padding. The `--card-spacing` CSS variable adjusts both section gaps and insets.
@@ -221,7 +242,7 @@ For rendered HTML or Markdown output, import `@alexgorbatchev/shadcn/typeset.css
221
242
 
222
243
  Compose data tables with the exported Table parts and `@tanstack/react-table@9.2.8`, installed directly in your app. `Table dir="rtl"` sets both column direction and the overflow container's reading edge; headers align to the inline start. The Table catalog demonstrates TanStack v9's native `useTable` with sorting, filtering, pagination, column visibility, selection across pages, and row actions that copy invoice IDs or open invoice details. Pass the checkbox's original event to the row-selection handler to retain Shift range selection. There is no separate `DataTable` export. Both the [TanStack v9 quick start](https://tanstack.com/table/latest/docs/framework/react/quick-start) and [shadcn composition guide](https://ui.shadcn.com/docs/components/base/data-table) use the v9 API.
223
244
 
224
- Compose `Sidebar` and `SidebarInset` inside `SidebarProvider`. Use Header, Content, Group, Menu, and Footer parts to organize navigation, and `SidebarTrigger` or `SidebarRail` to toggle it. `useSidebar` exposes desktop and mobile state. Desktop collapse supports `offcanvas`, `icon`, and `none`; the mobile panel uses a titled Sheet with Escape dismissal and focus restoration. Menu buttons accept native custom elements through `render`; use anchors for navigation and keep their accessible text when collapsed. Cmd/Ctrl+B toggles the sidebar while focus is inside its provider. Set `open`/`onOpenChange` for controlled desktop state, or observe changes without supplying `open`. Persist changes in your application through `onOpenChange`, and restore them through `defaultOpen` or controlled `open`. Set widths through the typed `SidebarStyle` variables `--sidebar-width`, `--sidebar-width-mobile`, and `--sidebar-width-icon`.
245
+ Compose `Sidebar` and `SidebarInset` inside `SidebarProvider`. Use Header, Content, Group, Menu, and Footer parts to organize navigation, and `SidebarTrigger` or `SidebarRail` to toggle it. `useSidebar` exposes desktop and mobile state. Desktop collapse supports `offcanvas`, `icon`, and `none`; the mobile panel uses a titled Sheet with Escape dismissal and focus restoration. Menu buttons accept native custom elements through `render`; use anchors for navigation and keep their accessible text when collapsed. Cmd/Ctrl+B toggles the sidebar while focus is inside its provider. Set `open`/`onOpenChange` for controlled desktop state, or observe changes without supplying `open`. Persist changes in your application through `onOpenChange`, and restore them through `defaultOpen` or controlled `open`. Set widths through the typed `SidebarStyle` variables `--sidebar-width`, `--sidebar-width-mobile`, and `--sidebar-width-icon`. Sidebar colors follow the palette of the subtree they render in; set `--sidebar`, `--sidebar-foreground`, `--sidebar-primary`, `--sidebar-primary-foreground`, `--sidebar-accent`, `--sidebar-accent-foreground`, `--sidebar-border`, or `--sidebar-ring` to give the sidebar its own colors.
225
246
 
226
247
  `InputOTP` uses one real input for typing, selection, paste, and autofill. Compose its visual slots inside `InputOTPGroup`; supply `maxLength` and an accessible label. Use `defaultValue` to initialize an uncontrolled code, or `value` and `onChange` to control it. Changing `defaultValue` after mounting preserves the current input. Import the OTP parts together from `@alexgorbatchev/shadcn/input-otp`; its bundled implementation owns their context. `Calendar` supports single, multiple, and range selection. `ResizablePanelGroup` sizes use explicit percentage strings such as `defaultSize="50%"`; numeric sizes are pixels. `CommandDialog` supplies the modal title and description; set `Command`'s `label` to name its search input.
227
248
 
@@ -331,17 +352,19 @@ The preview shows compact individual badges, up to five labels followed by `+N m
331
352
 
332
353
  # Devhost Preview
333
354
 
334
- The manifest uses `shadcn.example.com` as a documentation placeholder. Before using the routed preview, replace both `services.storybook.host` and `services.storybook.env.__VITE_ADDITIONAL_SERVER_ALLOWED_HOSTS` in `devhost.toml` with your locally configured hostname. Keep private hostnames out of commits.
355
+ The routed preview serves Storybook at `shadcn.localhost` through devhost. To use a different hostname, copy [.env.example](./.env.example) to `.env.local` and set `SHADCN_DEV_HOST_SUFFIX`; the Storybook host becomes `shadcn` followed by that suffix. Exported environment variables take precedence over `.env.local`, which stays untracked.
335
356
 
336
357
  From this repository, start the configured Storybook service:
337
358
 
338
359
  ```sh
339
- devhost start
360
+ just run
340
361
  ```
341
362
 
342
- Open your configured hostname over HTTPS. The manifest allocates a port automatically and serves Storybook through the shared devhost HTTPS proxy. The hostname must resolve to the machine running devhost, and the managed Caddy instance must be running (`devhost caddy start`).
363
+ `just run` loads `.env.local`, applies the `.localhost` default, and runs `devhost start`. Running `devhost start` directly requires `SHADCN_DEV_HOST_SUFFIX` in the environment; devhost rejects the manifest when it is undefined.
364
+
365
+ Open the hostname printed by devhost over HTTPS. The manifest allocates a port automatically and serves Storybook through the shared devhost HTTPS proxy. The hostname must resolve to the machine running devhost, and the managed Caddy instance must be running (`devhost caddy start`).
343
366
 
344
- Storybook binds to IPv4 loopback and allows the configured hostname in both Storybook and Vite. Caddy listens on all interfaces and serves HTTP as well as HTTPS, so the external devbox gateway can reach it. The direct `bun run storybook` preview remains available on `127.0.0.1:6006`.
367
+ Storybook binds to IPv4 loopback and allows the configured hostname in both Storybook and Vite. Caddy listens on all interfaces and serves HTTP as well as HTTPS, so the external devbox gateway can reach it. The direct `just storybook` preview remains available on `127.0.0.1:6006`.
345
368
 
346
369
  # Troubleshooting
347
370
 
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-cp2m7y7v.js";
4
4
  import {
5
5
  TooltipIconButton2
6
- } from "./chunk-q40gqpwh.js";
6
+ } from "./chunk-qgjjcmpa.js";
7
7
  import {
8
8
  useCopyToClipboard
9
9
  } from "./chunk-6synj4j9.js";
@@ -1,13 +1,13 @@
1
- import {
2
- cn2
3
- } from "./chunk-cp2m7y7v.js";
4
1
  import {
5
2
  Card2,
6
3
  CardHeader2,
7
4
  CardTitle2,
8
5
  CardDescription2,
9
6
  CardContent2
10
- } from "./chunk-fqekyjkh.js";
7
+ } from "./chunk-bygq5yqf.js";
8
+ import {
9
+ cn2
10
+ } from "./chunk-cp2m7y7v.js";
11
11
  import {
12
12
  Chart3,
13
13
  ChartTooltipContent2,
@@ -1,22 +1,22 @@
1
1
  import {
2
2
  PopoverContent2,
3
3
  PopoverTitle2
4
- } from "./chunk-x7z9jzyf.js";
4
+ } from "./chunk-4djw71cv.js";
5
5
  import {
6
6
  Command2
7
- } from "./chunk-4gby2v61.js";
7
+ } from "./chunk-7pyt4e5t.js";
8
8
  import {
9
9
  useModelSelectorContext
10
10
  } from "./chunk-ydfx8r6d.js";
11
11
  import {
12
12
  ModelSelectorFocusAnchor2
13
- } from "./chunk-1hbge1cb.js";
13
+ } from "./chunk-553bzh59.js";
14
14
  import {
15
15
  ModelSelectorSearch2
16
- } from "./chunk-hhvp5352.js";
16
+ } from "./chunk-s46hvhjw.js";
17
17
  import {
18
18
  ModelSelectorList2
19
- } from "./chunk-jxwfkmdh.js";
19
+ } from "./chunk-gabqzfq0.js";
20
20
  import {
21
21
  ModelSelectorEffort2
22
22
  } from "./chunk-r07v9c4f.js";
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  MermaidSvg,
6
6
  MermaidZoom2
7
- } from "./chunk-wwfj7ga3.js";
7
+ } from "./chunk-djm7qq62.js";
8
8
 
9
9
  // src/components/assistant-ui/elements/MermaidDiagram.tsx
10
10
  import { useMemo } from "react";
@@ -6,15 +6,15 @@ import {
6
6
  } from "./chunk-e6hk39ev.js";
7
7
  import {
8
8
  TooltipIconButton2
9
- } from "./chunk-q40gqpwh.js";
9
+ } from "./chunk-qgjjcmpa.js";
10
10
  import {
11
11
  Thread2
12
- } from "./chunk-0qcknj5n.js";
12
+ } from "./chunk-8fcjx3he.js";
13
13
  import {
14
14
  ThreadListSearch2,
15
15
  ThreadListRoot2,
16
16
  ThreadListItems2
17
- } from "./chunk-tsekdy3w.js";
17
+ } from "./chunk-1tgrhacr.js";
18
18
 
19
19
  // src/components/assistant-ui/native/AssistantModal.tsx
20
20
  import { BotIcon, ChevronDownIcon, HistoryIcon, PlusIcon } from "lucide-react";
@@ -189,6 +189,7 @@ function AssistantModal2() {
189
189
  }),
190
190
  isPortalReady && /* @__PURE__ */ jsxs(AssistantModalPrimitive.Content, {
191
191
  "data-density": density,
192
+ "data-scroll": "none",
192
193
  ref: contentRef,
193
194
  sideOffset: 16,
194
195
  "aria-labelledby": titleId,
@@ -301,6 +301,7 @@ var ThreadListItemRename = ({ onDone }) => {
301
301
  const [value, setValue] = useState(title);
302
302
  const inputRef = useRef(null);
303
303
  const settledRef = useRef(false);
304
+ const keyboardActionRef = useRef(null);
304
305
  useEffect(() => {
305
306
  inputRef.current?.select();
306
307
  }, []);
@@ -332,16 +333,24 @@ var ThreadListItemRename = ({ onDone }) => {
332
333
  "aria-label": "Rename thread",
333
334
  value,
334
335
  onChange: (event) => setValue(event.target.value),
335
- onBlur: () => commit(false),
336
+ onBlur: () => {
337
+ if (keyboardActionRef.current === "cancel")
338
+ cancel();
339
+ else
340
+ commit(keyboardActionRef.current === "commit");
341
+ keyboardActionRef.current = null;
342
+ },
336
343
  onKeyDown: (event) => {
337
344
  if (event.nativeEvent.isComposing || event.nativeEvent.keyCode === 229)
338
345
  return;
339
346
  if (event.key === "Enter") {
340
347
  event.preventDefault();
341
- commit(true);
348
+ keyboardActionRef.current = "commit";
349
+ event.currentTarget.blur();
342
350
  } else if (event.key === "Escape") {
343
351
  event.preventDefault();
344
- cancel();
352
+ keyboardActionRef.current = "cancel";
353
+ event.currentTarget.blur();
345
354
  }
346
355
  }
347
356
  });
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  ContextDisplayRoot2
3
- } from "./chunk-2gten6a1.js";
3
+ } from "./chunk-6wvhq8wq.js";
4
4
  import {
5
5
  ContextDisplayTrigger2
6
- } from "./chunk-86211e5a.js";
6
+ } from "./chunk-p8gshf3k.js";
7
7
  import {
8
8
  ContextDisplayContent2
9
- } from "./chunk-2b9agdrf.js";
9
+ } from "./chunk-3dyqen8w.js";
10
10
  import {
11
11
  ContextDisplayRing3
12
- } from "./chunk-vx7c2xhq.js";
12
+ } from "./chunk-5v4typ39.js";
13
13
  import {
14
14
  ContextDisplayBar3
15
- } from "./chunk-6xr41wyr.js";
15
+ } from "./chunk-46jdxdzy.js";
16
16
  import {
17
17
  ContextDisplayText3
18
- } from "./chunk-r7fy89jq.js";
18
+ } from "./chunk-79667fz5.js";
19
19
 
20
20
  // src/components/assistant-ui/native/ContextDisplay.tsx
21
21
  import { jsx } from "react/jsx-runtime";
@@ -15,7 +15,7 @@ import {
15
15
  DialogHeader2,
16
16
  DialogTitle2,
17
17
  DialogDescription2
18
- } from "./chunk-zhnwybhq.js";
18
+ } from "./chunk-70vndezn.js";
19
19
  import {
20
20
  Input2
21
21
  } from "./chunk-59p19t57.js";
@@ -5,7 +5,7 @@ import {
5
5
  Popover2,
6
6
  PopoverTrigger2,
7
7
  PopoverContent2
8
- } from "./chunk-x7z9jzyf.js";
8
+ } from "./chunk-4djw71cv.js";
9
9
  import {
10
10
  AgentStatus3
11
11
  } from "./chunk-4k2jzddw.js";
@@ -5,7 +5,7 @@ import {
5
5
  HoverCard2,
6
6
  HoverCardTrigger2,
7
7
  HoverCardContent2
8
- } from "./chunk-m54kq3he.js";
8
+ } from "./chunk-hh43wg05.js";
9
9
  import {
10
10
  Button2
11
11
  } from "./chunk-73rkr9ct.js";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-ds65prb9.js";
4
4
  import {
5
5
  MermaidDiagram3
6
- } from "./chunk-yn3e9w1j.js";
6
+ } from "./chunk-1c5jjkhw.js";
7
7
 
8
8
  // src/components/assistant-ui/elements/GenerativeUi.tsx
9
9
  import ReactMarkdown from "react-markdown";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  PopoverContent2,
3
3
  PopoverTitle2
4
- } from "./chunk-x7z9jzyf.js";
4
+ } from "./chunk-4djw71cv.js";
5
5
  import {
6
6
  getPercentColor,
7
7
  getContextSegments
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Popover2
3
- } from "./chunk-x7z9jzyf.js";
3
+ } from "./chunk-4djw71cv.js";
4
4
  import {
5
5
  contextDisplayContext,
6
6
  getUsagePercent
@@ -43,6 +43,7 @@ function TaskCard3({
43
43
  return /* @__PURE__ */ jsxs("div", {
44
44
  "data-testid": "TaskCard",
45
45
  "data-slot": "task-card",
46
+ "data-scroll": "none",
46
47
  "data-state": state,
47
48
  className: cn2(paper, "flex w-full max-w-sm flex-col overflow-hidden rounded-md", className),
48
49
  ...props,
@@ -123,7 +123,7 @@ var ComposerTriggerPopoverImpl = ({
123
123
  ...props
124
124
  }) => {
125
125
  const warnedRef = useRef(false);
126
- if (!warnedRef.current && Boolean(directive) === Boolean(action)) {
126
+ if (process.env.NODE_ENV !== "production" && !warnedRef.current && Boolean(directive) === Boolean(action)) {
127
127
  warnedRef.current = true;
128
128
  console.warn("[assistant-ui] ComposerTriggerPopover requires exactly one of `directive` or `action` props.");
129
129
  }
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  ContextDisplayRoot2
3
- } from "./chunk-2gten6a1.js";
3
+ } from "./chunk-6wvhq8wq.js";
4
4
  import {
5
5
  ContextDisplayTrigger2
6
- } from "./chunk-86211e5a.js";
6
+ } from "./chunk-p8gshf3k.js";
7
7
  import {
8
8
  ContextDisplayContent2
9
- } from "./chunk-2b9agdrf.js";
9
+ } from "./chunk-3dyqen8w.js";
10
10
  import {
11
11
  ContextDisplayValue2
12
12
  } from "./chunk-qxt0fx4f.js";
@@ -4,6 +4,10 @@ import {
4
4
  import {
5
5
  usePortalContainer2
6
6
  } from "./chunk-j89xg1ak.js";
7
+ import {
8
+ usePortalNode,
9
+ PortalProvider2
10
+ } from "./chunk-aa7m22zj.js";
7
11
  import {
8
12
  cn2
9
13
  } from "./chunk-cp2m7y7v.js";
@@ -37,21 +41,27 @@ function PopoverContent2({
37
41
  const resolvedDensity = useDensity(density);
38
42
  const direction = useDirection();
39
43
  const container = usePortalContainer2();
44
+ const portal = usePortalNode();
40
45
  return /* @__PURE__ */ jsx(PopoverPrimitive.Portal, {
41
46
  container,
42
- children: /* @__PURE__ */ jsx(PopoverPrimitive.Positioner, {
43
- dir: direction,
44
- align,
45
- alignOffset,
46
- side,
47
- sideOffset,
48
- className: "isolate ",
49
- children: /* @__PURE__ */ jsx(PopoverPrimitive.Popup, {
47
+ ref: portal.ref,
48
+ children: /* @__PURE__ */ jsx(PortalProvider2, {
49
+ container: portal.node,
50
+ children: /* @__PURE__ */ jsx(PopoverPrimitive.Positioner, {
50
51
  dir: direction,
51
- "data-density": resolvedDensity,
52
- "data-slot": "popover-content",
53
- className: (state) => cn2("flex w-72 origin-(--transform-origin) flex-col gap-2.5 rounded-md bg-popover p-2.5 text-sm text-popover-foreground shadow-frame border border-frame-edge shadow-frame outline-hidden duration-120 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 motion-reduce:data-open:animate-none motion-reduce:data-closed:animate-none", typeof className === "function" ? className(state) : className),
54
- ...props
52
+ align,
53
+ alignOffset,
54
+ side,
55
+ sideOffset,
56
+ className: "isolate ",
57
+ children: /* @__PURE__ */ jsx(PopoverPrimitive.Popup, {
58
+ dir: direction,
59
+ "data-density": resolvedDensity,
60
+ "data-slot": "popover-content",
61
+ "data-scroll": "none",
62
+ className: (state) => cn2("flex w-72 origin-(--transform-origin) flex-col gap-2.5 rounded-md bg-popover p-2.5 text-sm text-popover-foreground shadow-frame border border-frame-edge shadow-frame outline-hidden duration-120 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 motion-reduce:data-open:animate-none motion-reduce:data-closed:animate-none", typeof className === "function" ? className(state) : className),
63
+ ...props
64
+ })
55
65
  })
56
66
  })
57
67
  });
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CommandItem2
3
- } from "./chunk-4gby2v61.js";
3
+ } from "./chunk-7pyt4e5t.js";
4
4
  import {
5
5
  useModelSelectorContext
6
6
  } from "./chunk-ydfx8r6d.js";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-cp2m7y7v.js";
4
4
  import {
5
5
  ConversationMap2
6
- } from "./chunk-ed49y20r.js";
6
+ } from "./chunk-ws4y7ctw.js";
7
7
  import {
8
8
  usePrefersReducedMotion
9
9
  } from "./chunk-jy57625a.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  CommandInput2
3
- } from "./chunk-4gby2v61.js";
3
+ } from "./chunk-7pyt4e5t.js";
4
4
 
5
5
  // src/components/assistant-ui/elements/ModelSelectorFocusAnchor.tsx
6
6
  import { jsx } from "react/jsx-runtime";
@@ -7,7 +7,7 @@ import {
7
7
  CardTitle2,
8
8
  CardDescription2,
9
9
  CardContent2
10
- } from "./chunk-fqekyjkh.js";
10
+ } from "./chunk-bygq5yqf.js";
11
11
 
12
12
  // src/components/assistant-ui/elements/BackgroundInbox.tsx
13
13
  import { CheckIcon, Loader2Icon, XIcon } from "lucide-react";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-cp2m7y7v.js";
4
4
  import {
5
5
  MarkdownText2
6
- } from "./chunk-q2ewq67a.js";
6
+ } from "./chunk-02qymemz.js";
7
7
  import {
8
8
  formatUnknownValue2,
9
9
  ToolFallbackError2,
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk-yp12vs0s.js";
14
14
  import {
15
15
  TaskCard3
16
- } from "./chunk-njzam0hx.js";
16
+ } from "./chunk-3qqdfft7.js";
17
17
  import {
18
18
  taskStateOf,
19
19
  taskLabel,
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  ContextDisplayRoot2
3
- } from "./chunk-2gten6a1.js";
3
+ } from "./chunk-6wvhq8wq.js";
4
4
  import {
5
5
  ContextDisplayTrigger2
6
- } from "./chunk-86211e5a.js";
6
+ } from "./chunk-p8gshf3k.js";
7
7
  import {
8
8
  ContextDisplayContent2
9
- } from "./chunk-2b9agdrf.js";
9
+ } from "./chunk-3dyqen8w.js";
10
10
  import {
11
11
  ContextDisplayValue2
12
12
  } from "./chunk-qxt0fx4f.js";
@@ -6,7 +6,7 @@ import {
6
6
  PopoverTrigger2,
7
7
  PopoverContent2,
8
8
  PopoverTitle2
9
- } from "./chunk-x7z9jzyf.js";
9
+ } from "./chunk-4djw71cv.js";
10
10
 
11
11
  // src/components/assistant-ui/native/MessageTiming.tsx
12
12
  import { useMessageTiming } from "@assistant-ui/react";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  ContextDisplayRoot3
3
- } from "./chunk-f63f8w58.js";
3
+ } from "./chunk-3jrsp186.js";
4
4
  import {
5
5
  ContextDisplayTrigger2
6
- } from "./chunk-86211e5a.js";
6
+ } from "./chunk-p8gshf3k.js";
7
7
  import {
8
8
  ContextDisplayContent2
9
- } from "./chunk-2b9agdrf.js";
9
+ } from "./chunk-3dyqen8w.js";
10
10
  import {
11
11
  ContextDisplayValue2
12
12
  } from "./chunk-qxt0fx4f.js";
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-73rkr9ct.js";
13
13
  import {
14
14
  Card2
15
- } from "./chunk-fqekyjkh.js";
15
+ } from "./chunk-bygq5yqf.js";
16
16
  import {
17
17
  Table2,
18
18
  TableHeader2,
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  ContextDisplayRoot3
3
- } from "./chunk-f63f8w58.js";
3
+ } from "./chunk-3jrsp186.js";
4
4
  import {
5
5
  ContextDisplayRuntimeRoot2
6
- } from "./chunk-emasqc8x.js";
6
+ } from "./chunk-sat9hjv7.js";
7
7
 
8
8
  // src/components/assistant-ui/native/ContextDisplayRoot.tsx
9
9
  import { jsx } from "react/jsx-runtime";
@@ -4,6 +4,10 @@ import {
4
4
  import {
5
5
  usePortalContainer2
6
6
  } from "./chunk-j89xg1ak.js";
7
+ import {
8
+ usePortalNode,
9
+ PortalProvider2
10
+ } from "./chunk-aa7m22zj.js";
7
11
  import {
8
12
  cn2
9
13
  } from "./chunk-cp2m7y7v.js";
@@ -28,12 +32,18 @@ function DialogTrigger2({ ...props }) {
28
32
  ...props
29
33
  });
30
34
  }
31
- function DialogPortal2({ container, ...props }) {
35
+ function DialogPortal2({ container, ref, children, ...props }) {
32
36
  const resolvedContainer = usePortalContainer2(container);
37
+ const portal = usePortalNode(ref);
33
38
  return /* @__PURE__ */ jsx(DialogPrimitive.Portal, {
34
39
  "data-slot": "dialog-portal",
35
40
  container: resolvedContainer,
36
- ...props
41
+ ref: portal.ref,
42
+ ...props,
43
+ children: /* @__PURE__ */ jsx(PortalProvider2, {
44
+ container: portal.node,
45
+ children
46
+ })
37
47
  });
38
48
  }
39
49
  function DialogClose2({ ...props }) {
@@ -68,7 +78,8 @@ function DialogContent2({
68
78
  dir: direction,
69
79
  "data-density": resolvedDensity,
70
80
  "data-slot": "dialog-content",
71
- className: (state) => cn2("fixed grid w-full gap-panel bg-popover p-panel text-sm text-popover-foreground border border-frame-edge shadow-frame duration-120 outline-none data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 motion-reduce:data-open:animate-none motion-reduce:data-closed:animate-none", size === "fullscreen" ? "inset-0 h-dvh max-h-dvh max-w-none rounded-none" : cn2("top-1/2 left-1/2 max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 rounded-md", size === "wide" ? "sm:max-w-xl" : size === "narrow" ? "sm:max-w-48" : "sm:max-w-sm"), typeof className === "function" ? className(state) : className),
81
+ "data-scroll": "none",
82
+ className: (state) => cn2("fixed flex min-h-0 w-full flex-col gap-panel overscroll-contain bg-popover p-panel text-sm text-popover-foreground border border-frame-edge shadow-frame duration-120 outline-none data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 motion-reduce:data-open:animate-none motion-reduce:data-closed:animate-none", size === "fullscreen" ? "inset-0 h-dvh max-h-dvh max-w-none rounded-none" : cn2("top-1/2 left-1/2 max-h-[calc(100dvh-2rem)] max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 rounded-md", size === "wide" ? "sm:max-w-xl" : size === "narrow" ? "sm:max-w-48" : "sm:max-w-sm"), typeof className === "function" ? className(state) : className),
72
83
  ...props,
73
84
  children: [
74
85
  children,
@@ -96,7 +107,7 @@ function DialogHeader2({ density, className, ...props }) {
96
107
  return /* @__PURE__ */ jsx("div", {
97
108
  "data-density": density,
98
109
  "data-slot": "dialog-header",
99
- className: cn2("flex flex-col gap-2", className),
110
+ className: cn2("flex shrink-0 flex-col gap-2", className),
100
111
  ...props
101
112
  });
102
113
  }
@@ -110,7 +121,7 @@ function DialogFooter2({
110
121
  return /* @__PURE__ */ jsxs("div", {
111
122
  "data-density": density,
112
123
  "data-slot": "dialog-footer",
113
- className: cn2("-mx-panel -mb-panel flex flex-col-reverse gap-2 rounded-b-md border-t bg-muted/50 p-panel sm:flex-row sm:justify-end", className),
124
+ className: cn2("-mx-panel -mb-panel flex shrink-0 flex-col-reverse gap-2 rounded-b-md border-t bg-muted/50 p-panel sm:flex-row sm:justify-end", className),
114
125
  ...props,
115
126
  children: [
116
127
  children,
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  ContextDisplayRoot2
3
- } from "./chunk-2gten6a1.js";
3
+ } from "./chunk-6wvhq8wq.js";
4
4
  import {
5
5
  ContextDisplayTrigger2
6
- } from "./chunk-86211e5a.js";
6
+ } from "./chunk-p8gshf3k.js";
7
7
  import {
8
8
  ContextDisplayContent2
9
- } from "./chunk-2b9agdrf.js";
9
+ } from "./chunk-3dyqen8w.js";
10
10
  import {
11
11
  ContextDisplayValue2
12
12
  } from "./chunk-qxt0fx4f.js";
@@ -7,7 +7,7 @@ import {
7
7
  DialogHeader2,
8
8
  DialogTitle2,
9
9
  DialogDescription2
10
- } from "./chunk-zhnwybhq.js";
10
+ } from "./chunk-70vndezn.js";
11
11
  import {
12
12
  InputGroup2,
13
13
  InputGroupAddon2,