@alexgorbatchev/shadcn 0.0.19 → 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 (495) hide show
  1. package/README.md +21 -2
  2. package/dist/{chunk-q2ewq67a.js → chunk-02qymemz.js} +1 -1
  3. package/dist/{chunk-k89xxj12.js → chunk-0ewzb2ax.js} +1 -1
  4. package/dist/{chunk-6wvtsf2m.js → chunk-14qj6w54.js} +5 -5
  5. package/dist/{chunk-0q6mg89k.js → chunk-1c5jjkhw.js} +1 -1
  6. package/dist/{chunk-38kwkd1a.js → chunk-1qhf8gh8.js} +3 -2
  7. package/dist/{chunk-zgpdhtkw.js → chunk-21x1n6gn.js} +6 -6
  8. package/dist/{chunk-h46mdagy.js → chunk-24pefkd5.js} +1 -1
  9. package/dist/{chunk-msave608.js → chunk-2bx2r98r.js} +1 -1
  10. package/dist/{chunk-41wykzq3.js → chunk-2tmvz090.js} +1 -1
  11. package/dist/{chunk-wxncy44f.js → chunk-3d9v39ga.js} +1 -1
  12. package/dist/{chunk-2b9agdrf.js → chunk-3dyqen8w.js} +1 -1
  13. package/dist/{chunk-f63f8w58.js → chunk-3jrsp186.js} +1 -1
  14. package/dist/{chunk-njzam0hx.js → chunk-3qqdfft7.js} +1 -0
  15. package/dist/{chunk-gfm2arhj.js → chunk-43hfchxf.js} +1 -1
  16. package/dist/{chunk-6xr41wyr.js → chunk-46jdxdzy.js} +3 -3
  17. package/dist/{chunk-x7z9jzyf.js → chunk-4djw71cv.js} +22 -12
  18. package/dist/{chunk-vpj3vk7v.js → chunk-4drqqqz1.js} +1 -1
  19. package/dist/{chunk-mjpc4qf7.js → chunk-52e8a05a.js} +1 -1
  20. package/dist/{chunk-82vfgkjv.js → chunk-553bzh59.js} +1 -1
  21. package/dist/{chunk-kc4mmrwk.js → chunk-5ayp2vkw.js} +1 -1
  22. package/dist/{chunk-19441s27.js → chunk-5pvyxayg.js} +2 -2
  23. package/dist/{chunk-vx7c2xhq.js → chunk-5v4typ39.js} +3 -3
  24. package/dist/{chunk-gt8m0zeq.js → chunk-5wndb6hx.js} +1 -1
  25. package/dist/{chunk-550z7s64.js → chunk-6432235c.js} +3 -3
  26. package/dist/{chunk-f73en61v.js → chunk-6f3qpy7v.js} +1 -1
  27. package/dist/{chunk-2gten6a1.js → chunk-6wvhq8wq.js} +2 -2
  28. package/dist/{chunk-717ggspf.js → chunk-70vndezn.js} +16 -5
  29. package/dist/{chunk-r7fy89jq.js → chunk-79667fz5.js} +3 -3
  30. package/dist/{chunk-waat2ksf.js → chunk-7pyt4e5t.js} +1 -1
  31. package/dist/{chunk-8x8yxf6x.js → chunk-84ca0dpc.js} +2 -2
  32. package/dist/{chunk-9msk1t9e.js → chunk-8a15x4a8.js} +1 -1
  33. package/dist/{chunk-f8758vjx.js → chunk-8fcjx3he.js} +5 -5
  34. package/dist/{chunk-h8awhm19.js → chunk-96wh7ccv.js} +1 -1
  35. package/dist/{chunk-pe1vvkp7.js → chunk-9jct7hv0.js} +3 -3
  36. package/dist/{chunk-xqn8mef3.js → chunk-a6kyjjfk.js} +1 -0
  37. package/dist/chunk-aa7m22zj.js +22 -0
  38. package/dist/{chunk-zhdp6qrb.js → chunk-bcpy6gpz.js} +1 -1
  39. package/dist/{chunk-v4yqjvzd.js → chunk-bygq5yqf.js} +31 -6
  40. package/dist/{chunk-2m0zpzbm.js → chunk-cn81dnqb.js} +1 -0
  41. package/dist/{chunk-m1a9e1py.js → chunk-d2z4gebj.js} +1 -1
  42. package/dist/{chunk-mx21wpq0.js → chunk-d4bm5rzy.js} +12 -2
  43. package/dist/{chunk-0zwxgwr4.js → chunk-d9jbqd99.js} +1 -1
  44. package/dist/{chunk-qw7229kj.js → chunk-dgkj6442.js} +1 -1
  45. package/dist/{chunk-r4fr62ca.js → chunk-djm7qq62.js} +1 -1
  46. package/dist/{chunk-9dw4dyzq.js → chunk-e0pv0me5.js} +1 -1
  47. package/dist/{chunk-k4vvp62d.js → chunk-ecmk3vgd.js} +1 -1
  48. package/dist/{chunk-2qxy1r5y.js → chunk-eq88qk1d.js} +10 -10
  49. package/dist/{chunk-jq6tc65r.js → chunk-f5hphka1.js} +7 -1
  50. package/dist/{chunk-2e4fnx0e.js → chunk-fb6h4fzt.js} +1 -1
  51. package/dist/{chunk-c900175p.js → chunk-fba5hr7b.js} +1 -1
  52. package/dist/{chunk-155c0btb.js → chunk-g03nphs1.js} +1 -1
  53. package/dist/{chunk-x82x81th.js → chunk-gabqzfq0.js} +3 -3
  54. package/dist/{chunk-zcwynyr0.js → chunk-gykrcxd1.js} +1 -0
  55. package/dist/{chunk-45kmek5e.js → chunk-h979cxnh.js} +14 -3
  56. package/dist/{chunk-m54kq3he.js → chunk-hh43wg05.js} +22 -12
  57. package/dist/{chunk-6hbx647r.js → chunk-j4gd5awk.js} +6 -6
  58. package/dist/{chunk-aewjmzt9.js → chunk-jba22682.js} +3 -3
  59. package/dist/{chunk-82cw4kcg.js → chunk-jf0y740b.js} +1 -1
  60. package/dist/{chunk-fyb0b7bp.js → chunk-jpamrhdk.js} +1 -1
  61. package/dist/{chunk-gyg2s982.js → chunk-k4qz4q7r.js} +1 -0
  62. package/dist/{chunk-s3b87adw.js → chunk-kv1akmf5.js} +1 -1
  63. package/dist/{chunk-2g0zzx6f.js → chunk-m2ct74my.js} +1 -0
  64. package/dist/{chunk-c6b2cfw4.js → chunk-mrrbycgx.js} +3 -3
  65. package/dist/chunk-mz3e810d.js +83 -0
  66. package/dist/{chunk-serw27sv.js → chunk-nkw2vsf3.js} +1 -0
  67. package/dist/{chunk-wf5cnpdg.js → chunk-p45ytcc2.js} +3 -3
  68. package/dist/{chunk-86211e5a.js → chunk-p8gshf3k.js} +1 -1
  69. package/dist/{chunk-cre60717.js → chunk-p8qtk151.js} +1 -1
  70. package/dist/{chunk-3552jz55.js → chunk-qcsxnn16.js} +1 -0
  71. package/dist/{chunk-q40gqpwh.js → chunk-qgjjcmpa.js} +1 -1
  72. package/dist/{chunk-dppmqr99.js → chunk-qv19jhdk.js} +1 -1
  73. package/dist/{chunk-1x2ch0xc.js → chunk-rffrerg5.js} +3 -1
  74. package/dist/{chunk-0jb0xgdb.js → chunk-s46hvhjw.js} +1 -1
  75. package/dist/{chunk-h561m2ae.js → chunk-s83v0taa.js} +1 -1
  76. package/dist/{chunk-emasqc8x.js → chunk-sat9hjv7.js} +1 -1
  77. package/dist/{chunk-akaezred.js → chunk-tea1nrwn.js} +2 -2
  78. package/dist/{chunk-47xfhw4f.js → chunk-v9r6t8bz.js} +1 -0
  79. package/dist/{chunk-48b1ya7g.js → chunk-ve9gpkxd.js} +1 -1
  80. package/dist/{chunk-jacxpetf.js → chunk-vjtbpkht.js} +2 -2
  81. package/dist/{chunk-g7v9cqyg.js → chunk-vq8nc5xa.js} +1 -1
  82. package/dist/{chunk-55bcw5ff.js → chunk-w1w71edg.js} +1 -0
  83. package/dist/{chunk-z5d2zpnj.js → chunk-wkpf4bv7.js} +1 -1
  84. package/dist/{chunk-ed49y20r.js → chunk-ws4y7ctw.js} +1 -1
  85. package/dist/{chunk-r3artnc9.js → chunk-ykt5sv7n.js} +1 -1
  86. package/dist/{chunk-yncp9nsv.js → chunk-z4jpedvh.js} +1 -0
  87. package/dist/{chunk-b12s32e3.js → chunk-zj06vvcz.js} +1 -1
  88. package/dist/{chunk-5h6m9dsm.js → chunk-ztcbee24.js} +1 -1
  89. package/dist/components/AlertDialog.d.ts +1 -1
  90. package/dist/components/ContextMenu.d.ts +1 -1
  91. package/dist/components/Dialog.d.ts +1 -1
  92. package/dist/components/Drawer.d.ts +1 -1
  93. package/dist/components/DropdownMenu.d.ts +1 -1
  94. package/dist/components/ScrollGuard.d.ts +6 -0
  95. package/dist/components/Toast.d.ts +1 -1
  96. package/dist/components/assistant-ui/elements/AgentCard.js +1 -1
  97. package/dist/components/assistant-ui/elements/ApprovalCard.js +1 -1
  98. package/dist/components/assistant-ui/elements/ArtifactCard.js +1 -1
  99. package/dist/components/assistant-ui/elements/BackgroundInbox.js +2 -2
  100. package/dist/components/assistant-ui/elements/Chart.js +2 -2
  101. package/dist/components/assistant-ui/elements/ChatPanel.js +1 -1
  102. package/dist/components/assistant-ui/elements/Citation.js +3 -2
  103. package/dist/components/assistant-ui/elements/CodeDiff.js +2 -2
  104. package/dist/components/assistant-ui/elements/CommandPalette.js +4 -3
  105. package/dist/components/assistant-ui/elements/ComparisonCard.js +1 -1
  106. package/dist/components/assistant-ui/elements/ComposerContext.js +3 -2
  107. package/dist/components/assistant-ui/elements/ContextDisplay.js +9 -8
  108. package/dist/components/assistant-ui/elements/ContextDisplayBar.js +6 -5
  109. package/dist/components/assistant-ui/elements/ContextDisplayContent.js +3 -2
  110. package/dist/components/assistant-ui/elements/ContextDisplayRing.js +6 -5
  111. package/dist/components/assistant-ui/elements/ContextDisplayRoot.js +3 -2
  112. package/dist/components/assistant-ui/elements/ContextDisplayText.js +6 -5
  113. package/dist/components/assistant-ui/elements/ContextDisplayTrigger.js +3 -2
  114. package/dist/components/assistant-ui/elements/ConversationMap.js +3 -2
  115. package/dist/components/assistant-ui/elements/DataTable.js +2 -2
  116. package/dist/components/assistant-ui/elements/EditMessage.js +2 -2
  117. package/dist/components/assistant-ui/elements/ElicitationForm.js +2 -2
  118. package/dist/components/assistant-ui/elements/FeedbackDialog.js +2 -2
  119. package/dist/components/assistant-ui/elements/FileTree.js +2 -2
  120. package/dist/components/assistant-ui/elements/FlowGraph.js +2 -2
  121. package/dist/components/assistant-ui/elements/GenerativeUi.js +5 -4
  122. package/dist/components/assistant-ui/elements/Image.js +3 -2
  123. package/dist/components/assistant-ui/elements/ImageGallery.js +3 -2
  124. package/dist/components/assistant-ui/elements/MarkdownText.js +4 -3
  125. package/dist/components/assistant-ui/elements/McpServerPanel.js +2 -2
  126. package/dist/components/assistant-ui/elements/MermaidDiagram.js +4 -3
  127. package/dist/components/assistant-ui/elements/MermaidZoom.js +3 -2
  128. package/dist/components/assistant-ui/elements/ModelPicker.js +2 -2
  129. package/dist/components/assistant-ui/elements/ModelSelector.js +13 -12
  130. package/dist/components/assistant-ui/elements/ModelSelectorContent.js +10 -9
  131. package/dist/components/assistant-ui/elements/ModelSelectorEmpty.js +4 -3
  132. package/dist/components/assistant-ui/elements/ModelSelectorFocusAnchor.js +4 -3
  133. package/dist/components/assistant-ui/elements/ModelSelectorGroup.js +4 -3
  134. package/dist/components/assistant-ui/elements/ModelSelectorItem.js +4 -3
  135. package/dist/components/assistant-ui/elements/ModelSelectorList.js +6 -5
  136. package/dist/components/assistant-ui/elements/ModelSelectorRoot.js +3 -2
  137. package/dist/components/assistant-ui/elements/ModelSelectorSearch.js +4 -3
  138. package/dist/components/assistant-ui/elements/ModelSelectorSeparator.js +4 -3
  139. package/dist/components/assistant-ui/elements/ModelSelectorTrigger.js +3 -2
  140. package/dist/components/assistant-ui/elements/ReasoningPanel.js +1 -1
  141. package/dist/components/assistant-ui/elements/RecommendationCard.js +1 -1
  142. package/dist/components/assistant-ui/elements/RegenerateMenu.js +3 -2
  143. package/dist/components/assistant-ui/elements/ScheduleCard.js +1 -1
  144. package/dist/components/assistant-ui/elements/ScrollAnchor.js +1 -1
  145. package/dist/components/assistant-ui/elements/SettingsPanel.js +1 -1
  146. package/dist/components/assistant-ui/elements/SpecSheet.js +1 -1
  147. package/dist/components/assistant-ui/elements/TaskCard.js +1 -1
  148. package/dist/components/assistant-ui/elements/TooltipIconButton.js +3 -2
  149. package/dist/components/assistant-ui/index.js +61 -60
  150. package/dist/components/assistant-ui/native/AssistantModal.js +10 -9
  151. package/dist/components/assistant-ui/native/AssistantSidebar.js +11 -10
  152. package/dist/components/assistant-ui/native/AttachmentPreview.js +5 -4
  153. package/dist/components/assistant-ui/native/ComposerTriggerPopover.js +1 -1
  154. package/dist/components/assistant-ui/native/ContextDisplay.js +11 -10
  155. package/dist/components/assistant-ui/native/ContextDisplayBar.js +8 -7
  156. package/dist/components/assistant-ui/native/ContextDisplayRing.js +8 -7
  157. package/dist/components/assistant-ui/native/ContextDisplayRoot.js +5 -4
  158. package/dist/components/assistant-ui/native/ContextDisplayRuntimeRoot.js +4 -3
  159. package/dist/components/assistant-ui/native/ContextDisplayText.js +8 -7
  160. package/dist/components/assistant-ui/native/ConversationMapAui.js +4 -3
  161. package/dist/components/assistant-ui/native/McpConfigDialog.js +3 -2
  162. package/dist/components/assistant-ui/native/MermaidDiagram.js +5 -4
  163. package/dist/components/assistant-ui/native/MessageTiming.js +3 -2
  164. package/dist/components/assistant-ui/native/ModelSelector.js +15 -14
  165. package/dist/components/assistant-ui/native/Reasoning.js +5 -4
  166. package/dist/components/assistant-ui/native/TaskCard.js +6 -5
  167. package/dist/components/assistant-ui/native/TaskGroup.js +7 -6
  168. package/dist/components/assistant-ui/native/TaskTray.js +3 -2
  169. package/dist/components/assistant-ui/native/Thread.js +9 -8
  170. package/dist/components/assistant-ui/native/ThreadListSidebar.js +4 -3
  171. package/dist/components/assistant-ui/native/VoiceControl.js +6 -5
  172. package/dist/components/assistant-ui/native/VoiceDisconnectButton.js +4 -3
  173. package/dist/components/assistant-ui/native/VoiceMuteButton.js +4 -3
  174. package/dist/components/assistant-ui/native/index.js +52 -51
  175. package/dist/components/command/index.js +3 -2
  176. package/dist/components/questionnaire/index.js +2 -2
  177. package/dist/components/resizable/Resizable.d.ts +1 -1
  178. package/dist/components/resizable/index.js +1 -1
  179. package/dist/hooks/usePortalNode.d.ts +14 -0
  180. package/dist/index.d.ts +2 -0
  181. package/dist/index.js +293 -121
  182. package/dist/theme.css +34 -35
  183. package/dist/utils/observeScrollGuards.d.ts +4 -0
  184. package/llms/components/actions/Button.md +433 -0
  185. package/llms/components/actions/ButtonGroup.md +278 -0
  186. package/llms/components/actions/ButtonLink.md +189 -0
  187. package/llms/components/actions/Toggle.md +191 -0
  188. package/llms/components/actions/ToggleGroup.md +161 -0
  189. package/llms/components/assistant-ui/elements/agents-tasks/AgentCard.md +60 -0
  190. package/llms/components/assistant-ui/elements/agents-tasks/AgentHandoff.md +78 -0
  191. package/llms/components/assistant-ui/elements/agents-tasks/AgentPlan.md +57 -0
  192. package/llms/components/assistant-ui/elements/agents-tasks/AgentStatus.md +88 -0
  193. package/llms/components/assistant-ui/elements/agents-tasks/JobProgress.md +84 -0
  194. package/llms/components/assistant-ui/elements/agents-tasks/RunActivity.md +75 -0
  195. package/llms/components/assistant-ui/elements/agents-tasks/ScheduleCard.md +91 -0
  196. package/llms/components/assistant-ui/elements/agents-tasks/StoppedRun.md +54 -0
  197. package/llms/components/assistant-ui/elements/agents-tasks/SubagentList.md +72 -0
  198. package/llms/components/assistant-ui/elements/agents-tasks/TaskCard.md +101 -0
  199. package/llms/components/assistant-ui/elements/agents-tasks/TaskStateIcon.md +86 -0
  200. package/llms/components/assistant-ui/elements/agents-tasks/TodoList.md +99 -0
  201. package/llms/components/assistant-ui/elements/branding/ClaudeLogo.md +36 -0
  202. package/llms/components/assistant-ui/elements/branding/GeminiLogo.md +47 -0
  203. package/llms/components/assistant-ui/elements/branding/GitHubIcon.md +41 -0
  204. package/llms/components/assistant-ui/elements/branding/OpenAILogo.md +36 -0
  205. package/llms/components/assistant-ui/elements/code-diffs/CodeDiff.md +67 -0
  206. package/llms/components/assistant-ui/elements/code-diffs/CodeRunner.md +66 -0
  207. package/llms/components/assistant-ui/elements/code-diffs/DiffViewer.md +144 -0
  208. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerContent.md +50 -0
  209. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerFile.md +50 -0
  210. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerFileBadge.md +50 -0
  211. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerFileContent.md +59 -0
  212. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerHeader.md +81 -0
  213. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerLine.md +50 -0
  214. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerSplitLine.md +55 -0
  215. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerStats.md +50 -0
  216. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerText.md +44 -0
  217. package/llms/components/assistant-ui/elements/code-diffs/ReviewableDiff.md +102 -0
  218. package/llms/components/assistant-ui/elements/code-diffs/ShikiHighlighter.md +131 -0
  219. package/llms/components/assistant-ui/elements/code-diffs/SyntaxHighlighter.md +62 -0
  220. package/llms/components/assistant-ui/elements/code-diffs/TerminalAnsiFragment.md +66 -0
  221. package/llms/components/assistant-ui/elements/code-diffs/TerminalBlock.md +131 -0
  222. package/llms/components/assistant-ui/elements/composer/CommandPalette.md +79 -0
  223. package/llms/components/assistant-ui/elements/composer/Composer.md +62 -0
  224. package/llms/components/assistant-ui/elements/composer/ComposerActions.md +34 -0
  225. package/llms/components/assistant-ui/elements/composer/ComposerAttachButton.md +50 -0
  226. package/llms/components/assistant-ui/elements/composer/ComposerAttachmentChip.md +58 -0
  227. package/llms/components/assistant-ui/elements/composer/ComposerAttachments.md +42 -0
  228. package/llms/components/assistant-ui/elements/composer/ComposerBar.md +42 -0
  229. package/llms/components/assistant-ui/elements/composer/ComposerCommandItem.md +42 -0
  230. package/llms/components/assistant-ui/elements/composer/ComposerContext.md +50 -0
  231. package/llms/components/assistant-ui/elements/composer/ComposerInput.md +56 -0
  232. package/llms/components/assistant-ui/elements/composer/ComposerMenu.md +59 -0
  233. package/llms/components/assistant-ui/elements/composer/ComposerMenuItem.md +50 -0
  234. package/llms/components/assistant-ui/elements/composer/ComposerModelItem.md +42 -0
  235. package/llms/components/assistant-ui/elements/composer/ComposerModelTrigger.md +42 -0
  236. package/llms/components/assistant-ui/elements/composer/ComposerPersonItem.md +42 -0
  237. package/llms/components/assistant-ui/elements/composer/ComposerSend.md +58 -0
  238. package/llms/components/assistant-ui/elements/composer/ComposerToolbar.md +34 -0
  239. package/llms/components/assistant-ui/elements/composer/ComposerVoice.md +58 -0
  240. package/llms/components/assistant-ui/elements/composer/ComposerVoiceButton.md +50 -0
  241. package/llms/components/assistant-ui/elements/composer/MobileComposer.md +82 -0
  242. package/llms/components/assistant-ui/elements/composer/PromptLibrary.md +99 -0
  243. package/llms/components/assistant-ui/elements/composer/Suggestions.md +62 -0
  244. package/llms/components/assistant-ui/elements/context/ContextBreakdown.md +58 -0
  245. package/llms/components/assistant-ui/elements/context/ContextDisplay.md +37 -0
  246. package/llms/components/assistant-ui/elements/context/ContextDisplayBar.md +28 -0
  247. package/llms/components/assistant-ui/elements/context/ContextDisplayContent.md +31 -0
  248. package/llms/components/assistant-ui/elements/context/ContextDisplayRing.md +28 -0
  249. package/llms/components/assistant-ui/elements/context/ContextDisplayRoot.md +54 -0
  250. package/llms/components/assistant-ui/elements/context/ContextDisplayText.md +28 -0
  251. package/llms/components/assistant-ui/elements/context/ContextDisplayTrigger.md +51 -0
  252. package/llms/components/assistant-ui/elements/context/ContextDisplayValue.md +58 -0
  253. package/llms/components/assistant-ui/elements/context/MemoryChips.md +57 -0
  254. package/llms/components/assistant-ui/elements/conversations/BackgroundInbox.md +57 -0
  255. package/llms/components/assistant-ui/elements/conversations/CanvasSplit.md +68 -0
  256. package/llms/components/assistant-ui/elements/conversations/ChatPanel.md +82 -0
  257. package/llms/components/assistant-ui/elements/conversations/CheckpointHistory.md +57 -0
  258. package/llms/components/assistant-ui/elements/conversations/ConversationMap.md +59 -0
  259. package/llms/components/assistant-ui/elements/conversations/ConversationSearch.md +83 -0
  260. package/llms/components/assistant-ui/elements/conversations/DaySeparator.md +44 -0
  261. package/llms/components/assistant-ui/elements/conversations/DraftRestore.md +48 -0
  262. package/llms/components/assistant-ui/elements/conversations/EditMessage.md +97 -0
  263. package/llms/components/assistant-ui/elements/conversations/LauncherBubble.md +79 -0
  264. package/llms/components/assistant-ui/elements/conversations/MessageActions.md +68 -0
  265. package/llms/components/assistant-ui/elements/conversations/MessageAttachments.md +57 -0
  266. package/llms/components/assistant-ui/elements/conversations/MessageBranches.md +76 -0
  267. package/llms/components/assistant-ui/elements/conversations/MessagePair.md +57 -0
  268. package/llms/components/assistant-ui/elements/conversations/MessageQueue.md +54 -0
  269. package/llms/components/assistant-ui/elements/conversations/MessageTiming.md +78 -0
  270. package/llms/components/assistant-ui/elements/conversations/QuoteReply.md +83 -0
  271. package/llms/components/assistant-ui/elements/conversations/RegenerateMenu.md +117 -0
  272. package/llms/components/assistant-ui/elements/conversations/ScrollAnchor.md +56 -0
  273. package/llms/components/assistant-ui/elements/conversations/SharedConversation.md +81 -0
  274. package/llms/components/assistant-ui/elements/conversations/ThreadList.md +121 -0
  275. package/llms/components/assistant-ui/elements/conversations/ThreadSearch.md +131 -0
  276. package/llms/components/assistant-ui/elements/data-visualization/ActivityGraph.md +51 -0
  277. package/llms/components/assistant-ui/elements/data-visualization/ArtifactCard.md +50 -0
  278. package/llms/components/assistant-ui/elements/data-visualization/Chart.md +58 -0
  279. package/llms/components/assistant-ui/elements/data-visualization/ComparisonCard.md +58 -0
  280. package/llms/components/assistant-ui/elements/data-visualization/CostMeter.md +49 -0
  281. package/llms/components/assistant-ui/elements/data-visualization/DataTable.md +240 -0
  282. package/llms/components/assistant-ui/elements/data-visualization/Diagram.md +77 -0
  283. package/llms/components/assistant-ui/elements/data-visualization/DotMatrix.md +188 -0
  284. package/llms/components/assistant-ui/elements/data-visualization/FlowGraph.md +61 -0
  285. package/llms/components/assistant-ui/elements/data-visualization/GenerativeUi.md +110 -0
  286. package/llms/components/assistant-ui/elements/data-visualization/GenerativeUiTheme.md +67 -0
  287. package/llms/components/assistant-ui/elements/data-visualization/GeoMap.md +91 -0
  288. package/llms/components/assistant-ui/elements/data-visualization/HeatGraph.md +57 -0
  289. package/llms/components/assistant-ui/elements/data-visualization/MapAnswer.md +58 -0
  290. package/llms/components/assistant-ui/elements/data-visualization/MermaidDiagram.md +66 -0
  291. package/llms/components/assistant-ui/elements/data-visualization/NumberRoll.md +88 -0
  292. package/llms/components/assistant-ui/elements/data-visualization/NumberRollDigit.md +28 -0
  293. package/llms/components/assistant-ui/elements/data-visualization/NumberRollPart.md +28 -0
  294. package/llms/components/assistant-ui/elements/data-visualization/NumberTicker.md +87 -0
  295. package/llms/components/assistant-ui/elements/data-visualization/RecommendationCard.md +86 -0
  296. package/llms/components/assistant-ui/elements/data-visualization/ScoreBreakdown.md +72 -0
  297. package/llms/components/assistant-ui/elements/data-visualization/ShareMeter.md +50 -0
  298. package/llms/components/assistant-ui/elements/data-visualization/SpecSheet.md +69 -0
  299. package/llms/components/assistant-ui/elements/data-visualization/Timeline.md +72 -0
  300. package/llms/components/assistant-ui/elements/data-visualization/TraceWaterfall.md +88 -0
  301. package/llms/components/assistant-ui/elements/media-voice/AudioPlayer.md +50 -0
  302. package/llms/components/assistant-ui/elements/media-voice/File.md +122 -0
  303. package/llms/components/assistant-ui/elements/media-voice/FileTree.md +59 -0
  304. package/llms/components/assistant-ui/elements/media-voice/Image.md +201 -0
  305. package/llms/components/assistant-ui/elements/media-voice/ImageGallery.md +64 -0
  306. package/llms/components/assistant-ui/elements/media-voice/ImageGeneration.md +50 -0
  307. package/llms/components/assistant-ui/elements/media-voice/ReadAloud.md +89 -0
  308. package/llms/components/assistant-ui/elements/media-voice/SpeakerIdentity.md +60 -0
  309. package/llms/components/assistant-ui/elements/media-voice/VideoPlayer.md +42 -0
  310. package/llms/components/assistant-ui/elements/media-voice/VoiceConversation.md +78 -0
  311. package/llms/components/assistant-ui/elements/media-voice/VoiceOrb.md +110 -0
  312. package/llms/components/assistant-ui/elements/models/ModelPicker.md +79 -0
  313. package/llms/components/assistant-ui/elements/models/ModelSelector.md +48 -0
  314. package/llms/components/assistant-ui/elements/models/ModelSelectorContent.md +45 -0
  315. package/llms/components/assistant-ui/elements/models/ModelSelectorEffort.md +31 -0
  316. package/llms/components/assistant-ui/elements/models/ModelSelectorEmpty.md +30 -0
  317. package/llms/components/assistant-ui/elements/models/ModelSelectorFocusAnchor.md +31 -0
  318. package/llms/components/assistant-ui/elements/models/ModelSelectorGroup.md +40 -0
  319. package/llms/components/assistant-ui/elements/models/ModelSelectorItem.md +38 -0
  320. package/llms/components/assistant-ui/elements/models/ModelSelectorList.md +30 -0
  321. package/llms/components/assistant-ui/elements/models/ModelSelectorRoot.md +72 -0
  322. package/llms/components/assistant-ui/elements/models/ModelSelectorSearch.md +31 -0
  323. package/llms/components/assistant-ui/elements/models/ModelSelectorSeparator.md +34 -0
  324. package/llms/components/assistant-ui/elements/models/ModelSelectorTrigger.md +66 -0
  325. package/llms/components/assistant-ui/elements/models/ModelSelectorValue.md +32 -0
  326. package/llms/components/assistant-ui/elements/models/ReasoningEffort.md +86 -0
  327. package/llms/components/assistant-ui/elements/reasoning/GenerationLoader.md +88 -0
  328. package/llms/components/assistant-ui/elements/reasoning/ReasoningContent.md +59 -0
  329. package/llms/components/assistant-ui/elements/reasoning/ReasoningFade.md +62 -0
  330. package/llms/components/assistant-ui/elements/reasoning/ReasoningPanel.md +75 -0
  331. package/llms/components/assistant-ui/elements/reasoning/ReasoningRoot.md +101 -0
  332. package/llms/components/assistant-ui/elements/reasoning/ReasoningText.md +59 -0
  333. package/llms/components/assistant-ui/elements/reasoning/ReasoningTrigger.md +59 -0
  334. package/llms/components/assistant-ui/elements/reasoning/ThinkingIndicator.md +54 -0
  335. package/llms/components/assistant-ui/elements/reasoning/TypingIndicator.md +62 -0
  336. package/llms/components/assistant-ui/elements/sources-research/Citation.md +103 -0
  337. package/llms/components/assistant-ui/elements/sources-research/ConfidenceMarker.md +94 -0
  338. package/llms/components/assistant-ui/elements/sources-research/DocumentReference.md +60 -0
  339. package/llms/components/assistant-ui/elements/sources-research/InlineCitation.md +56 -0
  340. package/llms/components/assistant-ui/elements/sources-research/LinkPreview.md +65 -0
  341. package/llms/components/assistant-ui/elements/sources-research/ResearchReport.md +72 -0
  342. package/llms/components/assistant-ui/elements/sources-research/RetrievalChunks.md +75 -0
  343. package/llms/components/assistant-ui/elements/sources-research/SourceGlyph.md +54 -0
  344. package/llms/components/assistant-ui/elements/sources-research/Sources.md +150 -0
  345. package/llms/components/assistant-ui/elements/sources-research/WebPreview.md +80 -0
  346. package/llms/components/assistant-ui/elements/sources-research/WebSearch.md +72 -0
  347. package/llms/components/assistant-ui/elements/states-settings/ConnectionState.md +58 -0
  348. package/llms/components/assistant-ui/elements/states-settings/ElicitationForm.md +101 -0
  349. package/llms/components/assistant-ui/elements/states-settings/EmptyState.md +64 -0
  350. package/llms/components/assistant-ui/elements/states-settings/EmptyStateComposer.md +88 -0
  351. package/llms/components/assistant-ui/elements/states-settings/EmptyStateGreeting.md +56 -0
  352. package/llms/components/assistant-ui/elements/states-settings/EmptyStateSuggestion.md +66 -0
  353. package/llms/components/assistant-ui/elements/states-settings/EmptyStateSuggestions.md +61 -0
  354. package/llms/components/assistant-ui/elements/states-settings/ErrorState.md +47 -0
  355. package/llms/components/assistant-ui/elements/states-settings/EveAskQuestion.md +166 -0
  356. package/llms/components/assistant-ui/elements/states-settings/FeedbackDialog.md +85 -0
  357. package/llms/components/assistant-ui/elements/states-settings/Onboarding.md +84 -0
  358. package/llms/components/assistant-ui/elements/states-settings/OptionList.md +74 -0
  359. package/llms/components/assistant-ui/elements/states-settings/OptionText.md +38 -0
  360. package/llms/components/assistant-ui/elements/states-settings/QuestionFlow.md +85 -0
  361. package/llms/components/assistant-ui/elements/states-settings/QuotaBanner.md +91 -0
  362. package/llms/components/assistant-ui/elements/states-settings/SettingsPanel.md +92 -0
  363. package/llms/components/assistant-ui/elements/text-formatting/DirectiveText.md +94 -0
  364. package/llms/components/assistant-ui/elements/text-formatting/Frac.md +28 -0
  365. package/llms/components/assistant-ui/elements/text-formatting/MarkdownText.md +66 -0
  366. package/llms/components/assistant-ui/elements/text-formatting/MathBlock.md +67 -0
  367. package/llms/components/assistant-ui/elements/text-formatting/StreamingText.md +62 -0
  368. package/llms/components/assistant-ui/elements/text-formatting/Sub.md +28 -0
  369. package/llms/components/assistant-ui/elements/text-formatting/Sup.md +28 -0
  370. package/llms/components/assistant-ui/elements/tools-approvals/ApprovalCard.md +96 -0
  371. package/llms/components/assistant-ui/elements/tools-approvals/ComputerUse.md +58 -0
  372. package/llms/components/assistant-ui/elements/tools-approvals/GuardrailNotice.md +78 -0
  373. package/llms/components/assistant-ui/elements/tools-approvals/McpServerPanel.md +73 -0
  374. package/llms/components/assistant-ui/elements/tools-approvals/PermissionGrant.md +104 -0
  375. package/llms/components/assistant-ui/elements/tools-approvals/ToolCall.md +81 -0
  376. package/llms/components/assistant-ui/elements/tools-approvals/ToolError.md +89 -0
  377. package/llms/components/assistant-ui/elements/tools-approvals/ToolGroup.md +101 -0
  378. package/llms/components/assistant-ui/elements/tools-approvals/ToolTimeline.md +87 -0
  379. package/llms/components/assistant-ui/native/agents-tasks/AgentStatus.md +87 -0
  380. package/llms/components/assistant-ui/native/agents-tasks/TaskCard.md +111 -0
  381. package/llms/components/assistant-ui/native/agents-tasks/TaskGroup.md +82 -0
  382. package/llms/components/assistant-ui/native/agents-tasks/TaskTray.md +66 -0
  383. package/llms/components/assistant-ui/native/code-diffs/SyntaxHighlighter.md +48 -0
  384. package/llms/components/assistant-ui/native/composer/AttachmentPreview.md +58 -0
  385. package/llms/components/assistant-ui/native/composer/ComposerTriggerPopover.md +42 -0
  386. package/llms/components/assistant-ui/native/composer/FollowupSuggestionsRow.md +36 -0
  387. package/llms/components/assistant-ui/native/context/ContextDisplay.md +42 -0
  388. package/llms/components/assistant-ui/native/context/ContextDisplayBar.md +52 -0
  389. package/llms/components/assistant-ui/native/context/ContextDisplayRing.md +52 -0
  390. package/llms/components/assistant-ui/native/context/ContextDisplayRoot.md +42 -0
  391. package/llms/components/assistant-ui/native/context/ContextDisplayRuntimeRoot.md +42 -0
  392. package/llms/components/assistant-ui/native/context/ContextDisplayText.md +52 -0
  393. package/llms/components/assistant-ui/native/conversations/AssistantModal.md +60 -0
  394. package/llms/components/assistant-ui/native/conversations/AssistantSidebar.md +44 -0
  395. package/llms/components/assistant-ui/native/conversations/ConversationMapAui.md +50 -0
  396. package/llms/components/assistant-ui/native/conversations/MessageTiming.md +83 -0
  397. package/llms/components/assistant-ui/native/conversations/QuoteBlock.md +34 -0
  398. package/llms/components/assistant-ui/native/conversations/SelectionToolbar.md +53 -0
  399. package/llms/components/assistant-ui/native/conversations/Thread.md +144 -0
  400. package/llms/components/assistant-ui/native/conversations/ThreadList.md +67 -0
  401. package/llms/components/assistant-ui/native/conversations/ThreadListSidebar.md +45 -0
  402. package/llms/components/assistant-ui/native/data-visualization/MermaidDiagram.md +34 -0
  403. package/llms/components/assistant-ui/native/media-voice/VoiceConnectButton.md +69 -0
  404. package/llms/components/assistant-ui/native/media-voice/VoiceControl.md +52 -0
  405. package/llms/components/assistant-ui/native/media-voice/VoiceConversation.md +64 -0
  406. package/llms/components/assistant-ui/native/media-voice/VoiceDisconnectButton.md +53 -0
  407. package/llms/components/assistant-ui/native/media-voice/VoiceMuteButton.md +59 -0
  408. package/llms/components/assistant-ui/native/media-voice/VoiceOrb.md +66 -0
  409. package/llms/components/assistant-ui/native/media-voice/VoiceStatusDot.md +58 -0
  410. package/llms/components/assistant-ui/native/models/ModelSelector.md +50 -0
  411. package/llms/components/assistant-ui/native/reasoning/Reasoning.md +87 -0
  412. package/llms/components/assistant-ui/native/sources-research/Sources.md +145 -0
  413. package/llms/components/assistant-ui/native/text-formatting/DirectiveText.md +42 -0
  414. package/llms/components/assistant-ui/native/tools-approvals/McpConfigDialog.md +54 -0
  415. package/llms/components/assistant-ui/native/tools-approvals/ToolFallbackApproval.md +352 -0
  416. package/llms/components/assistant-ui/native/tools-approvals/ToolFallbackRoot.md +84 -0
  417. package/llms/components/assistant-ui/native/tools-approvals/ToolGroup.md +63 -0
  418. package/llms/components/data-display/Avatar.md +254 -0
  419. package/llms/components/data-display/Badge.md +221 -0
  420. package/llms/components/data-display/Carousel.md +465 -0
  421. package/llms/components/data-display/Chart.md +546 -0
  422. package/llms/components/data-display/Item.md +502 -0
  423. package/llms/components/data-display/JsonViewer.md +38 -0
  424. package/llms/components/data-display/Kbd.md +99 -0
  425. package/llms/components/data-display/Table.md +254 -0
  426. package/llms/components/data-display/VirtualTable.md +57 -0
  427. package/llms/components/dates/Calendar.md +539 -0
  428. package/llms/components/dates/PersianCalendar.md +117 -0
  429. package/llms/components/drag-drop/DragDropPreview.md +46 -0
  430. package/llms/components/drag-drop/DragDropProvider.md +28 -0
  431. package/llms/components/feedback/Alert.md +117 -0
  432. package/llms/components/feedback/Empty.md +193 -0
  433. package/llms/components/feedback/EmptyState.md +38 -0
  434. package/llms/components/feedback/PageMessage.md +49 -0
  435. package/llms/components/feedback/Progress.md +140 -0
  436. package/llms/components/feedback/Skeleton.md +157 -0
  437. package/llms/components/feedback/Sonner.md +325 -0
  438. package/llms/components/feedback/Spinner.md +119 -0
  439. package/llms/components/feedback/Toast.md +242 -0
  440. package/llms/components/forms/Checkbox.md +204 -0
  441. package/llms/components/forms/Combobox.md +594 -0
  442. package/llms/components/forms/Field.md +511 -0
  443. package/llms/components/forms/ImagePicker.md +63 -0
  444. package/llms/components/forms/InlineEdit.md +67 -0
  445. package/llms/components/forms/Input.md +380 -0
  446. package/llms/components/forms/InputGroup.md +628 -0
  447. package/llms/components/forms/InputOTP.md +400 -0
  448. package/llms/components/forms/Label.md +181 -0
  449. package/llms/components/forms/NativeSelect.md +128 -0
  450. package/llms/components/forms/Questionnaire.md +267 -0
  451. package/llms/components/forms/RadioGroup.md +401 -0
  452. package/llms/components/forms/Select.md +575 -0
  453. package/llms/components/forms/Slider.md +234 -0
  454. package/llms/components/forms/StarRating.md +60 -0
  455. package/llms/components/forms/Switch.md +240 -0
  456. package/llms/components/forms/Textarea.md +219 -0
  457. package/llms/components/layout/Accordion.md +249 -0
  458. package/llms/components/layout/AspectRatio.md +68 -0
  459. package/llms/components/layout/Card.md +391 -0
  460. package/llms/components/layout/Collapsible.md +231 -0
  461. package/llms/components/layout/Resizable.md +267 -0
  462. package/llms/components/layout/ScrollArea.md +170 -0
  463. package/llms/components/layout/Separator.md +104 -0
  464. package/llms/components/layout/SplitView.md +92 -0
  465. package/llms/components/messaging/Attachment.md +324 -0
  466. package/llms/components/messaging/Bubble.md +411 -0
  467. package/llms/components/messaging/Marker.md +203 -0
  468. package/llms/components/messaging/Message.md +268 -0
  469. package/llms/components/messaging/MessageScroller.md +227 -0
  470. package/llms/components/navigation/Breadcrumb.md +159 -0
  471. package/llms/components/navigation/Command.md +471 -0
  472. package/llms/components/navigation/ContextMenu.md +596 -0
  473. package/llms/components/navigation/DropdownMenu.md +602 -0
  474. package/llms/components/navigation/Menubar.md +397 -0
  475. package/llms/components/navigation/NavigationMenu.md +379 -0
  476. package/llms/components/navigation/Pagination.md +222 -0
  477. package/llms/components/navigation/Sidebar.md +330 -0
  478. package/llms/components/navigation/Tabs.md +418 -0
  479. package/llms/components/overlays/AlertDialog.md +365 -0
  480. package/llms/components/overlays/ConfirmationDialog.md +77 -0
  481. package/llms/components/overlays/Dialog.md +559 -0
  482. package/llms/components/overlays/Drawer.md +597 -0
  483. package/llms/components/overlays/HoverCard.md +276 -0
  484. package/llms/components/overlays/Popover.md +286 -0
  485. package/llms/components/overlays/Sheet.md +433 -0
  486. package/llms/components/overlays/Tooltip.md +318 -0
  487. package/llms/components/providers/DensityProvider.md +171 -0
  488. package/llms/components/providers/DirectionProvider.md +39 -0
  489. package/llms/components/providers/PortalProvider.md +264 -0
  490. package/llms/components/providers/ScrollGuard.md +24 -0
  491. package/llms/components/providers/ThemeProvider.md +71 -0
  492. package/llms/setup.md +380 -0
  493. package/llms.txt +428 -0
  494. package/package.json +6 -3
  495. package/dist/chunk-czg9p52v.js +0 -74
@@ -0,0 +1,511 @@
1
+ # Field
2
+
3
+ Story: @alexgorbatchev/shadcn/components/forms/Field
4
+ Source: src/components/stories/forms/Field.stories.tsx
5
+
6
+ [Full source and local helpers](https://github.com/alexgorbatchev/shadcn/blob/main/src/components/stories/forms/Field.stories.tsx)
7
+
8
+ ## Public imports
9
+
10
+ ```tsx
11
+ import { Field, FieldContent, FieldLabel, FieldTitle, FieldDescription, FieldError, FieldGroup, FieldSet, FieldLegend, FieldSeparator, Input, Checkbox, Button, Textarea, RadioGroup, RadioGroupItem, Switch, Slider, Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue, DirectionProvider } from "@alexgorbatchev/shadcn";
12
+ ```
13
+
14
+ ## Supporting imports
15
+
16
+ ```tsx
17
+ import type { ReactElement } from "react";
18
+ import { useId, useState } from "react";
19
+ import { Controller, useForm } from "react-hook-form";
20
+ import { zodResolver } from "@hookform/resolvers/zod";
21
+ import { z } from "zod";
22
+ ```
23
+
24
+ ## Default component
25
+
26
+ ```tsx
27
+ Field
28
+ ```
29
+
30
+ ## Default args
31
+
32
+ ```tsx
33
+ { orientation: "vertical" }
34
+ ```
35
+
36
+ ## Default render
37
+
38
+ ```tsx
39
+ (args) => {
40
+ const storyId = useId();
41
+ return (<Field {...args}>
42
+ <FieldLabel htmlFor={`${storyId}-field-name`}>Project name</FieldLabel>
43
+ <Input id={`${storyId}-field-name`} aria-describedby={`${storyId}-field-help`} defaultValue="my-project"/>
44
+ <FieldDescription id={`${storyId}-field-help`}>Choose a recognizable name.</FieldDescription>
45
+ </Field>);
46
+ }
47
+ ```
48
+
49
+ ## Examples
50
+
51
+ Storybook CSF excerpts. Default args and render apply unless overridden. Local helpers, fixtures, decorators, and providers may be required; these are reference excerpts, not standalone consumer modules. Interaction tests are omitted.
52
+
53
+ ### Default
54
+
55
+ ```tsx
56
+ {}
57
+ ```
58
+
59
+ ### Horizontal
60
+
61
+ ```tsx
62
+ {
63
+ args: { orientation: "horizontal" }
64
+ }
65
+ ```
66
+
67
+ ### Responsive
68
+
69
+ ```tsx
70
+ {
71
+ render: function Render() {
72
+ const id = useId();
73
+ const [isWide, setIsWide] = useState(false);
74
+ return (<>
75
+ <Button onClick={() => setIsWide((current) => !current)}>Resize fields</Button>
76
+ <FieldGroup style={{ width: isWide ? 600 : 360 }}>
77
+ <Field orientation="responsive">
78
+ <FieldContent>
79
+ <FieldLabel htmlFor={id}>Responsive name</FieldLabel>
80
+ <FieldDescription id={id + "-help"}>Provide your full name for identification.</FieldDescription>
81
+ </FieldContent>
82
+ <Input id={id} aria-describedby={id + "-help"}/>
83
+ </Field>
84
+ </FieldGroup>
85
+ </>);
86
+ }
87
+ }
88
+ ```
89
+
90
+ ### Invalid
91
+
92
+ ```tsx
93
+ {
94
+ render: () => {
95
+ const storyId = useId();
96
+ return (<Field data-invalid>
97
+ <FieldLabel htmlFor={`${storyId}-invalid-name`}>Project name</FieldLabel>
98
+ <Input id={`${storyId}-invalid-name`} aria-invalid aria-describedby={`${storyId}-invalid-message`} defaultValue=""/>
99
+ <FieldError id={`${storyId}-invalid-message`}>A project name is required.</FieldError>
100
+ </Field>);
101
+ }
102
+ }
103
+ ```
104
+
105
+ ### Disabled
106
+
107
+ ```tsx
108
+ {
109
+ render: () => {
110
+ const storyId = useId();
111
+ return (<Field data-disabled>
112
+ <FieldLabel htmlFor={`${storyId}-disabled-name`}>Project name</FieldLabel>
113
+ <Input id={`${storyId}-disabled-name`} disabled defaultValue="my-project"/>
114
+ </Field>);
115
+ }
116
+ }
117
+ ```
118
+
119
+ ### Grouped
120
+
121
+ ```tsx
122
+ {
123
+ render: () => {
124
+ const storyId = useId();
125
+ return (<FieldSet aria-describedby={`${storyId}-notify-help`}>
126
+ <FieldLegend>Notifications</FieldLegend>
127
+ <FieldDescription id={`${storyId}-notify-help`}>Select delivery channels.</FieldDescription>
128
+ <FieldGroup>
129
+ <Field orientation="horizontal">
130
+ <Checkbox id={`${storyId}-notify-email`} aria-describedby={`${storyId}-email-help`} defaultChecked/>
131
+ <FieldContent>
132
+ <FieldLabel htmlFor={`${storyId}-notify-email`}>Email</FieldLabel>
133
+ <FieldDescription id={`${storyId}-email-help`}>Weekly updates.</FieldDescription>
134
+ </FieldContent>
135
+ </Field>
136
+ <FieldSeparator>Or</FieldSeparator>
137
+ <Field orientation="horizontal">
138
+ <Checkbox id={`${storyId}-notify-desktop`}/>
139
+ <FieldLabel htmlFor={`${storyId}-notify-desktop`}>Desktop</FieldLabel>
140
+ </Field>
141
+ </FieldGroup>
142
+ </FieldSet>);
143
+ }
144
+ }
145
+ ```
146
+
147
+ ### MultipleErrors
148
+
149
+ ```tsx
150
+ {
151
+ render: () => (<Field data-invalid>
152
+ <FieldTitle>Validation</FieldTitle>
153
+ <FieldError errors={[{ message: "Required field." }, { message: "Invalid format." }, { message: "Required field." }]}/>
154
+ </Field>)
155
+ }
156
+ ```
157
+
158
+ ### EmptyErrors
159
+
160
+ ```tsx
161
+ {
162
+ render: () => (<Field>
163
+ <FieldTitle>Validation results</FieldTitle>
164
+ <FieldError errors={[undefined, {}, { message: "" }]}/>
165
+ </Field>)
166
+ }
167
+ ```
168
+
169
+ ### SingleError
170
+
171
+ ```tsx
172
+ {
173
+ render: () => (<Field>
174
+ <FieldTitle>Validation results</FieldTitle>
175
+ <FieldError errors={[{ message: "A name is required." }, { message: "A name is required." }]}/>
176
+ </Field>)
177
+ }
178
+ ```
179
+
180
+ ### RightToLeftErrors
181
+
182
+ ```tsx
183
+ {
184
+ render: () => (<Field data-invalid>
185
+ <FieldTitle>Validation</FieldTitle>
186
+ <FieldError errors={[{ message: "Required field." }, { message: "Invalid format." }, { message: "Required field." }]}/>
187
+ </Field>),
188
+ decorators: [
189
+ (Story) => (<div dir="rtl">
190
+ <Story />
191
+ </div>),
192
+ ]
193
+ }
194
+ ```
195
+
196
+ ### HorizontalDescription
197
+
198
+ ```tsx
199
+ {
200
+ render: function Render() {
201
+ const id = useId();
202
+ const [isHorizontal, setIsHorizontal] = useState(true);
203
+ return (<FieldGroup className="w-80">
204
+ <Field orientation={isHorizontal ? "horizontal" : "vertical"}>
205
+ <Checkbox id={id}/>
206
+ <FieldContent>
207
+ <FieldLabel htmlFor={id}>Project updates</FieldLabel>
208
+ <FieldDescription>
209
+ Receive weekly project news and important release updates from your team.
210
+ </FieldDescription>
211
+ </FieldContent>
212
+ </Field>
213
+ <Button onClick={() => setIsHorizontal((current) => !current)}>Change orientation</Button>
214
+ </FieldGroup>);
215
+ }
216
+ }
217
+ ```
218
+
219
+ ### WithTextarea
220
+
221
+ ```tsx
222
+ {
223
+ render: function Render() {
224
+ const id = useId();
225
+ return (<Field className="w-80">
226
+ <FieldLabel htmlFor={id}>Feedback</FieldLabel>
227
+ <Textarea id={id} aria-describedby={id + "-help"}/>
228
+ <FieldDescription id={id + "-help"}>Share your thoughts.</FieldDescription>
229
+ </Field>);
230
+ }
231
+ }
232
+ ```
233
+
234
+ ### WithSelect
235
+
236
+ ```tsx
237
+ {
238
+ render: function Render() {
239
+ const id = useId();
240
+ const [runtime, setRuntime] = useState<string | null>(null);
241
+ return (<Field className="w-80">
242
+ <FieldLabel htmlFor={id}>Runtime</FieldLabel>
243
+ <Select<string> items={fixture_runtimes} value={runtime} onValueChange={setRuntime}>
244
+ <SelectTrigger id={id} aria-describedby={id + "-help"}>
245
+ <SelectValue />
246
+ </SelectTrigger>
247
+ <SelectContent>
248
+ <SelectGroup>
249
+ {fixture_runtimes.map((item) => (<SelectItem key={item.value ?? "placeholder"} value={item.value}>
250
+ {item.label}
251
+ </SelectItem>))}
252
+ </SelectGroup>
253
+ </SelectContent>
254
+ </Select>
255
+ <FieldDescription id={id + "-help"}>Choose the project runtime.</FieldDescription>
256
+ <output aria-label="Selected runtime">{runtime}</output>
257
+ </Field>);
258
+ }
259
+ }
260
+ ```
261
+
262
+ ### WithSlider
263
+
264
+ ```tsx
265
+ {
266
+ render: function Render() {
267
+ const id = useId();
268
+ const [range, setRange] = useState([200, 800]);
269
+ return (<Field className="w-80">
270
+ <FieldTitle id={id}>Budget range</FieldTitle>
271
+ <FieldDescription id={id + "-help"}>
272
+ Choose a budget from {range[0]} to {range[1]}.
273
+ </FieldDescription>
274
+ <Slider<number[]> value={range} onValueChange={setRange} min={0} max={1000} step={10} getAriaLabel={(index) => ["Minimum budget", "Maximum budget"][index]} aria-labelledby={id} aria-describedby={id + "-help"}/>
275
+ <output aria-label="Current budget">{range.join("–")}</output>
276
+ </Field>);
277
+ }
278
+ }
279
+ ```
280
+
281
+ ### WithSwitch
282
+
283
+ ```tsx
284
+ {
285
+ render: function Render() {
286
+ const id = useId();
287
+ return (<Field orientation="horizontal" className="w-80">
288
+ <FieldLabel htmlFor={id}>Multi-factor authentication</FieldLabel>
289
+ <Switch id={id}/>
290
+ </Field>);
291
+ }
292
+ }
293
+ ```
294
+
295
+ ### WithRadio
296
+
297
+ ```tsx
298
+ {
299
+ render: function Render() {
300
+ const id = useId();
301
+ return (<FieldSet className="w-80">
302
+ <FieldLegend variant="label">Subscription plan</FieldLegend>
303
+ <FieldDescription id={id + "-help"}>Choose how often to renew.</FieldDescription>
304
+ <RadioGroup defaultValue="monthly" aria-label="Subscription plan" aria-describedby={id + "-help"}>
305
+ <Field orientation="horizontal">
306
+ <RadioGroupItem id={id + "-monthly"} value="monthly"/>
307
+ <FieldLabel htmlFor={id + "-monthly"}>Monthly</FieldLabel>
308
+ </Field>
309
+ <Field orientation="horizontal">
310
+ <RadioGroupItem id={id + "-yearly"} value="yearly"/>
311
+ <FieldLabel htmlFor={id + "-yearly"}>Yearly</FieldLabel>
312
+ </Field>
313
+ </RadioGroup>
314
+ </FieldSet>);
315
+ }
316
+ }
317
+ ```
318
+
319
+ ### RadioChoiceCards
320
+
321
+ ```tsx
322
+ {
323
+ render: function Render() {
324
+ const id = useId();
325
+ return (<FieldGroup className="w-80">
326
+ <FieldSet>
327
+ <FieldLegend variant="label">Compute environment</FieldLegend>
328
+ <RadioGroup defaultValue="cluster" aria-label="Compute environment">
329
+ <FieldLabel htmlFor={id + "-cluster"}>
330
+ <Field orientation="horizontal">
331
+ <FieldContent>
332
+ <FieldTitle>Cluster</FieldTitle>
333
+ <FieldDescription>Run workloads together.</FieldDescription>
334
+ </FieldContent>
335
+ <RadioGroupItem id={id + "-cluster"} value="cluster"/>
336
+ </Field>
337
+ </FieldLabel>
338
+ <FieldLabel htmlFor={id + "-vm"}>
339
+ <Field orientation="horizontal">
340
+ <FieldContent>
341
+ <FieldTitle>Virtual machine</FieldTitle>
342
+ <FieldDescription>Run an isolated workload.</FieldDescription>
343
+ </FieldContent>
344
+ <RadioGroupItem id={id + "-vm"} value="vm"/>
345
+ </Field>
346
+ </FieldLabel>
347
+ </RadioGroup>
348
+ </FieldSet>
349
+ </FieldGroup>);
350
+ }
351
+ }
352
+ ```
353
+
354
+ ### CheckboxChoiceCard
355
+
356
+ ```tsx
357
+ {
358
+ render: function Render() {
359
+ const id = useId();
360
+ return (<FieldGroup className="w-80">
361
+ <FieldLabel htmlFor={id}>
362
+ <Field orientation="horizontal">
363
+ <FieldContent>
364
+ <FieldTitle>Sync files</FieldTitle>
365
+ <FieldDescription>Keep project files available.</FieldDescription>
366
+ </FieldContent>
367
+ <Checkbox id={id}/>
368
+ </Field>
369
+ </FieldLabel>
370
+ </FieldGroup>);
371
+ }
372
+ }
373
+ ```
374
+
375
+ ### SwitchChoiceCard
376
+
377
+ ```tsx
378
+ {
379
+ render: function Render() {
380
+ const id = useId();
381
+ return (<FieldGroup className="w-80">
382
+ <FieldLabel htmlFor={id}>
383
+ <Field orientation="horizontal">
384
+ <FieldContent>
385
+ <FieldTitle>Enable backup</FieldTitle>
386
+ <FieldDescription>Save a daily snapshot.</FieldDescription>
387
+ </FieldContent>
388
+ <Switch id={id}/>
389
+ </Field>
390
+ </FieldLabel>
391
+ </FieldGroup>);
392
+ }
393
+ }
394
+ ```
395
+
396
+ ### RightToLeftChoiceCards
397
+
398
+ ```tsx
399
+ {
400
+ render: function Render() {
401
+ const id = useId();
402
+ return (<FieldGroup className="w-80">
403
+ <FieldSet>
404
+ <FieldLegend variant="label">Compute environment</FieldLegend>
405
+ <RadioGroup defaultValue="cluster" aria-label="Compute environment">
406
+ <FieldLabel htmlFor={id + "-cluster"}>
407
+ <Field orientation="horizontal">
408
+ <FieldContent>
409
+ <FieldTitle>Cluster</FieldTitle>
410
+ <FieldDescription>Run workloads together.</FieldDescription>
411
+ </FieldContent>
412
+ <RadioGroupItem id={id + "-cluster"} value="cluster"/>
413
+ </Field>
414
+ </FieldLabel>
415
+ <FieldLabel htmlFor={id + "-vm"}>
416
+ <Field orientation="horizontal">
417
+ <FieldContent>
418
+ <FieldTitle>Virtual machine</FieldTitle>
419
+ <FieldDescription>Run an isolated workload.</FieldDescription>
420
+ </FieldContent>
421
+ <RadioGroupItem id={id + "-vm"} value="vm"/>
422
+ </Field>
423
+ </FieldLabel>
424
+ </RadioGroup>
425
+ </FieldSet>
426
+ </FieldGroup>);
427
+ },
428
+ decorators: [
429
+ (Story) => (<DirectionProvider direction="rtl">
430
+ <div dir="rtl">
431
+ <Story />
432
+ </div>
433
+ </DirectionProvider>),
434
+ ]
435
+ }
436
+ ```
437
+
438
+ ### RightToLeftGrouped
439
+
440
+ ```tsx
441
+ {
442
+ render: () => {
443
+ const storyId = useId();
444
+ return (<FieldSet aria-describedby={`${storyId}-notify-help`}>
445
+ <FieldLegend>Notifications</FieldLegend>
446
+ <FieldDescription id={`${storyId}-notify-help`}>Select delivery channels.</FieldDescription>
447
+ <FieldGroup>
448
+ <Field orientation="horizontal">
449
+ <Checkbox id={`${storyId}-notify-email`} aria-describedby={`${storyId}-email-help`} defaultChecked/>
450
+ <FieldContent>
451
+ <FieldLabel htmlFor={`${storyId}-notify-email`}>Email</FieldLabel>
452
+ <FieldDescription id={`${storyId}-email-help`}>Weekly updates.</FieldDescription>
453
+ </FieldContent>
454
+ </Field>
455
+ <FieldSeparator>Or</FieldSeparator>
456
+ <Field orientation="horizontal">
457
+ <Checkbox id={`${storyId}-notify-desktop`}/>
458
+ <FieldLabel htmlFor={`${storyId}-notify-desktop`}>Desktop</FieldLabel>
459
+ </Field>
460
+ </FieldGroup>
461
+ </FieldSet>);
462
+ },
463
+ decorators: [
464
+ (Story) => (<DirectionProvider direction="rtl">
465
+ <div dir="rtl">
466
+ <Story />
467
+ </div>
468
+ </DirectionProvider>),
469
+ ]
470
+ }
471
+ ```
472
+
473
+ ### StandardSchemaValidation
474
+
475
+ ```tsx
476
+ {
477
+ render: function Render() {
478
+ const id = useId();
479
+ const [issues, setIssues] = useState<ProfileValidation["issues"]>();
480
+ const [result, setResult] = useState("");
481
+ return (<form aria-label="Standard validation" noValidate className="w-80" onSubmit={async (event) => {
482
+ event.preventDefault();
483
+ const validation = await profileSchema["~standard"].validate(Object.fromEntries(new FormData(event.currentTarget)));
484
+ setIssues(validation.issues);
485
+ setResult(validation.issues ? "" : JSON.stringify(validation.value));
486
+ }}>
487
+ <FieldGroup>
488
+ <Field data-invalid={!!issues}>
489
+ <FieldLabel htmlFor={id + "-name"}>Display name</FieldLabel>
490
+ <Input id={id + "-name"} name="displayName" aria-invalid={!!issues} aria-describedby={issues ? id + "-errors" : undefined}/>
491
+ </Field>
492
+ <Field data-invalid={!!issues}>
493
+ <FieldLabel htmlFor={id + "-team"}>Team</FieldLabel>
494
+ <Input id={id + "-team"} name="team" aria-invalid={!!issues} aria-describedby={issues ? id + "-errors" : undefined}/>
495
+ </Field>
496
+ <FieldError id={id + "-errors"} errors={issues}/>
497
+ <Button type="submit">Validate profile</Button>
498
+ <output aria-label="Validated profile">{result}</output>
499
+ </FieldGroup>
500
+ </form>);
501
+ }
502
+ }
503
+ ```
504
+
505
+ ### FormComposition
506
+
507
+ ```tsx
508
+ {
509
+ render: () => <ReportForm />
510
+ }
511
+ ```
@@ -0,0 +1,63 @@
1
+ # ImagePicker
2
+
3
+ Story: @alexgorbatchev/shadcn/components/forms/ImagePicker
4
+ Source: src/components/stories/forms/ImagePicker.stories.tsx
5
+
6
+ [Full source and local helpers](https://github.com/alexgorbatchev/shadcn/blob/main/src/components/stories/forms/ImagePicker.stories.tsx)
7
+
8
+ ## Public imports
9
+
10
+ ```tsx
11
+ import { ImagePicker } from "@alexgorbatchev/shadcn";
12
+ ```
13
+
14
+ ## Supporting imports
15
+
16
+ ```tsx
17
+ import { useState, type ReactElement } from "react";
18
+ ```
19
+
20
+ ## Default component
21
+
22
+ ```tsx
23
+ ImagePicker
24
+ ```
25
+
26
+ ## Default args
27
+
28
+ ```tsx
29
+ { src: fixture_avatarImage, label: "Cover artwork", onFileChange: fn(), onClear: fn() }
30
+ ```
31
+
32
+ ## Default render
33
+
34
+ ```tsx
35
+ function Example(args): ReactElement {
36
+ const [file, setFile] = useState<File | null>();
37
+ return (<ImagePicker {...args} file={file} onFileChange={(file) => {
38
+ setFile(file);
39
+ args.onFileChange(file);
40
+ }} onClear={() => {
41
+ setFile(null);
42
+ args.onClear();
43
+ }}/>);
44
+ }
45
+ ```
46
+
47
+ ## Examples
48
+
49
+ Storybook CSF excerpts. Default args and render apply unless overridden. Local helpers, fixtures, decorators, and providers may be required; these are reference excerpts, not standalone consumer modules. Interaction tests are omitted.
50
+
51
+ ### Default
52
+
53
+ ```tsx
54
+ {}
55
+ ```
56
+
57
+ ### Disabled
58
+
59
+ ```tsx
60
+ {
61
+ args: { disabled: true }
62
+ }
63
+ ```
@@ -0,0 +1,67 @@
1
+ # InlineEdit
2
+
3
+ Story: @alexgorbatchev/shadcn/components/forms/InlineEdit
4
+ Source: src/components/stories/forms/InlineEdit.stories.tsx
5
+
6
+ [Full source and local helpers](https://github.com/alexgorbatchev/shadcn/blob/main/src/components/stories/forms/InlineEdit.stories.tsx)
7
+
8
+ ## Public imports
9
+
10
+ ```tsx
11
+ import { InlineEdit } from "@alexgorbatchev/shadcn";
12
+ ```
13
+
14
+ ## Supporting imports
15
+
16
+ ```tsx
17
+ import { useState, type ReactElement } from "react";
18
+ ```
19
+
20
+ ## Default component
21
+
22
+ ```tsx
23
+ InlineEdit
24
+ ```
25
+
26
+ ## Default args
27
+
28
+ ```tsx
29
+ { label: "Playlist title", value: "New playlist", onValueChange: fn(), onCommit: fn(), onCancel: fn() }
30
+ ```
31
+
32
+ ## Default render
33
+
34
+ ```tsx
35
+ function Example(args, { id }): ReactElement {
36
+ const [value, setValue] = useState(args.value);
37
+ return <InlineEdit key={id} {...args} value={value} onValueChange={setValue}/>;
38
+ }
39
+ ```
40
+
41
+ ## Examples
42
+
43
+ Storybook CSF excerpts. Default args and render apply unless overridden. Local helpers, fixtures, decorators, and providers may be required; these are reference excerpts, not standalone consumer modules. Interaction tests are omitted.
44
+
45
+ ### Default
46
+
47
+ ```tsx
48
+ {}
49
+ ```
50
+
51
+ ### Cancel
52
+
53
+ ```tsx
54
+ {}
55
+ ```
56
+
57
+ ### FailedSave
58
+
59
+ ```tsx
60
+ {
61
+ args: {
62
+ onCommit: async () => {
63
+ throw new Error("Could not save");
64
+ },
65
+ }
66
+ }
67
+ ```