@alexgorbatchev/shadcn 0.0.19 → 0.0.21

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 (587) hide show
  1. package/README.md +45 -16
  2. package/THIRD_PARTY_NOTICES.md +60 -0
  3. package/dist/{chunk-q2ewq67a.js → chunk-02qymemz.js} +1 -1
  4. package/dist/{chunk-k89xxj12.js → chunk-0ewzb2ax.js} +1 -1
  5. package/dist/{chunk-0jb0xgdb.js → chunk-0w6rxpr5.js} +1 -1
  6. package/dist/{chunk-0q6mg89k.js → chunk-1c5jjkhw.js} +1 -1
  7. package/dist/{chunk-x82x81th.js → chunk-1p7pend8.js} +3 -3
  8. package/dist/chunk-21wbz345.js +65 -0
  9. package/dist/{chunk-zgpdhtkw.js → chunk-21x1n6gn.js} +6 -6
  10. package/dist/{chunk-h46mdagy.js → chunk-24pefkd5.js} +1 -1
  11. package/dist/{chunk-msave608.js → chunk-2bx2r98r.js} +1 -1
  12. package/dist/{chunk-41wykzq3.js → chunk-2tmvz090.js} +1 -1
  13. package/dist/{chunk-wxncy44f.js → chunk-3d9v39ga.js} +1 -1
  14. package/dist/{chunk-2b9agdrf.js → chunk-3dyqen8w.js} +1 -1
  15. package/dist/{chunk-f63f8w58.js → chunk-3jrsp186.js} +1 -1
  16. package/dist/{chunk-njzam0hx.js → chunk-3qqdfft7.js} +1 -0
  17. package/dist/{chunk-gfm2arhj.js → chunk-43hfchxf.js} +1 -1
  18. package/dist/{chunk-6xr41wyr.js → chunk-46jdxdzy.js} +3 -3
  19. package/dist/{chunk-x7z9jzyf.js → chunk-4djw71cv.js} +22 -12
  20. package/dist/{chunk-mjpc4qf7.js → chunk-52e8a05a.js} +1 -1
  21. package/dist/{chunk-kc4mmrwk.js → chunk-5ayp2vkw.js} +1 -1
  22. package/dist/{chunk-vx7c2xhq.js → chunk-5v4typ39.js} +3 -3
  23. package/dist/{chunk-gt8m0zeq.js → chunk-5wndb6hx.js} +1 -1
  24. package/dist/{chunk-550z7s64.js → chunk-6432235c.js} +3 -3
  25. package/dist/{chunk-8x8yxf6x.js → chunk-67dkgsm3.js} +2 -2
  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-cre60717.js → chunk-72qr0gqe.js} +1 -1
  30. package/dist/{chunk-r7fy89jq.js → chunk-79667fz5.js} +3 -3
  31. package/dist/{chunk-vpj3vk7v.js → chunk-83cckb23.js} +1 -1
  32. package/dist/{chunk-9msk1t9e.js → chunk-8a15x4a8.js} +1 -1
  33. package/dist/{chunk-h8awhm19.js → chunk-96wh7ccv.js} +1 -1
  34. package/dist/{chunk-5h6m9dsm.js → chunk-9dqspkha.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-f8758vjx.js → chunk-az81pc04.js} +5 -5
  39. package/dist/{chunk-zhdp6qrb.js → chunk-bcpy6gpz.js} +1 -1
  40. package/dist/{chunk-v4yqjvzd.js → chunk-bygq5yqf.js} +31 -6
  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-2qxy1r5y.js → chunk-d3ad53et.js} +10 -10
  44. package/dist/{chunk-mx21wpq0.js → chunk-d4bm5rzy.js} +12 -2
  45. package/dist/{chunk-qw7229kj.js → chunk-dgkj6442.js} +1 -1
  46. package/dist/{chunk-r4fr62ca.js → chunk-djm7qq62.js} +1 -1
  47. package/dist/{chunk-45kmek5e.js → chunk-dq7kr5y0.js} +16 -4
  48. package/dist/{chunk-c6b2cfw4.js → chunk-e0gcczqk.js} +3 -3
  49. package/dist/{chunk-9dw4dyzq.js → chunk-e0pv0me5.js} +1 -1
  50. package/dist/{chunk-82vfgkjv.js → chunk-f4c0tg2x.js} +1 -1
  51. package/dist/{chunk-jq6tc65r.js → chunk-f5hphka1.js} +7 -1
  52. package/dist/{chunk-6wvtsf2m.js → chunk-f9ha76ap.js} +5 -5
  53. package/dist/{chunk-2e4fnx0e.js → chunk-fb6h4fzt.js} +1 -1
  54. package/dist/{chunk-c900175p.js → chunk-fba5hr7b.js} +1 -1
  55. package/dist/{chunk-155c0btb.js → chunk-g03nphs1.js} +1 -1
  56. package/dist/{chunk-waat2ksf.js → chunk-ghmkxqn5.js} +1 -1
  57. package/dist/{chunk-r3artnc9.js → chunk-gkkbg7rq.js} +1 -1
  58. package/dist/{chunk-zcwynyr0.js → chunk-gykrcxd1.js} +1 -0
  59. package/dist/{chunk-m54kq3he.js → chunk-hh43wg05.js} +22 -12
  60. package/dist/{chunk-6hbx647r.js → chunk-j4gd5awk.js} +6 -6
  61. package/dist/{chunk-aewjmzt9.js → chunk-jba22682.js} +3 -3
  62. package/dist/{chunk-82cw4kcg.js → chunk-jf0y740b.js} +1 -1
  63. package/dist/{chunk-fyb0b7bp.js → chunk-jpamrhdk.js} +1 -1
  64. package/dist/{chunk-gyg2s982.js → chunk-k4qz4q7r.js} +1 -0
  65. package/dist/{chunk-dppmqr99.js → chunk-k8v9y2dw.js} +1 -1
  66. package/dist/chunk-kbg2e95b.js +434 -0
  67. package/dist/{chunk-s3b87adw.js → chunk-kv1akmf5.js} +1 -1
  68. package/dist/{chunk-2g0zzx6f.js → chunk-m2ct74my.js} +1 -0
  69. package/dist/{chunk-19441s27.js → chunk-m9zsppp2.js} +2 -2
  70. package/dist/chunk-mz3e810d.js +83 -0
  71. package/dist/{chunk-serw27sv.js → chunk-nkw2vsf3.js} +1 -0
  72. package/dist/{chunk-wf5cnpdg.js → chunk-p45ytcc2.js} +3 -3
  73. package/dist/{chunk-86211e5a.js → chunk-p8gshf3k.js} +1 -1
  74. package/dist/{chunk-3552jz55.js → chunk-qcsxnn16.js} +1 -0
  75. package/dist/{chunk-q40gqpwh.js → chunk-qgjjcmpa.js} +1 -1
  76. package/dist/chunk-r9qrb6b6.js +54 -0
  77. package/dist/{chunk-1x2ch0xc.js → chunk-rffrerg5.js} +3 -1
  78. package/dist/{chunk-h561m2ae.js → chunk-s83v0taa.js} +1 -1
  79. package/dist/{chunk-emasqc8x.js → chunk-sat9hjv7.js} +1 -1
  80. package/dist/{chunk-k4vvp62d.js → chunk-seeed8a2.js} +1 -1
  81. package/dist/{chunk-akaezred.js → chunk-tea1nrwn.js} +2 -2
  82. package/dist/{chunk-0zwxgwr4.js → chunk-tynbgc30.js} +1 -1
  83. package/dist/{chunk-47xfhw4f.js → chunk-v9r6t8bz.js} +1 -0
  84. package/dist/{chunk-48b1ya7g.js → chunk-ve9gpkxd.js} +1 -1
  85. package/dist/{chunk-jacxpetf.js → chunk-vjtbpkht.js} +2 -2
  86. package/dist/{chunk-g7v9cqyg.js → chunk-vq8nc5xa.js} +1 -1
  87. package/dist/{chunk-55bcw5ff.js → chunk-w1w71edg.js} +1 -0
  88. package/dist/{chunk-z5d2zpnj.js → chunk-wkpf4bv7.js} +1 -1
  89. package/dist/{chunk-ed49y20r.js → chunk-ws4y7ctw.js} +1 -1
  90. package/dist/{chunk-38kwkd1a.js → chunk-wwyzwptb.js} +3 -2
  91. package/dist/{chunk-yncp9nsv.js → chunk-z4jpedvh.js} +1 -0
  92. package/dist/{chunk-b12s32e3.js → chunk-zj06vvcz.js} +1 -1
  93. package/dist/components/AccountMenu.d.ts +12 -0
  94. package/dist/components/AlertDialog.d.ts +1 -1
  95. package/dist/components/AppShell.d.ts +23 -0
  96. package/dist/components/AuthForm.d.ts +18 -0
  97. package/dist/components/BarList.d.ts +16 -0
  98. package/dist/components/BillingUsage.d.ts +20 -0
  99. package/dist/components/Combobox.d.ts +2 -1
  100. package/dist/components/ContextMenu.d.ts +1 -1
  101. package/dist/components/DashboardLayout.d.ts +18 -0
  102. package/dist/components/Dialog.d.ts +1 -1
  103. package/dist/components/Drawer.d.ts +1 -1
  104. package/dist/components/DropdownMenu.d.ts +1 -1
  105. package/dist/components/FilterBar.d.ts +20 -0
  106. package/dist/components/Kanban.d.ts +23 -0
  107. package/dist/components/Meter.d.ts +9 -0
  108. package/dist/components/NumberField.d.ts +11 -0
  109. package/dist/components/PageHeader.d.ts +11 -0
  110. package/dist/components/ScrollGuard.d.ts +6 -0
  111. package/dist/components/SettingsSection.d.ts +16 -0
  112. package/dist/components/Sidebar.d.ts +2 -1
  113. package/dist/components/StatCard.d.ts +14 -0
  114. package/dist/components/StatusTracker.d.ts +16 -0
  115. package/dist/components/Stepper.d.ts +12 -0
  116. package/dist/components/TagInput.d.ts +16 -0
  117. package/dist/components/Toast.d.ts +1 -1
  118. package/dist/components/Toolbar.d.ts +10 -0
  119. package/dist/components/WorkspaceSwitcher.d.ts +14 -0
  120. package/dist/components/assistant-ui/elements/AgentCard.js +1 -1
  121. package/dist/components/assistant-ui/elements/ApprovalCard.d.ts +1 -1
  122. package/dist/components/assistant-ui/elements/ApprovalCard.js +1 -1
  123. package/dist/components/assistant-ui/elements/ArtifactCard.js +1 -1
  124. package/dist/components/assistant-ui/elements/BackgroundInbox.js +2 -2
  125. package/dist/components/assistant-ui/elements/Chart.js +2 -2
  126. package/dist/components/assistant-ui/elements/ChatPanel.js +1 -1
  127. package/dist/components/assistant-ui/elements/Citation.js +3 -2
  128. package/dist/components/assistant-ui/elements/CodeDiff.js +2 -2
  129. package/dist/components/assistant-ui/elements/CommandPalette.js +5 -4
  130. package/dist/components/assistant-ui/elements/ComparisonCard.js +1 -1
  131. package/dist/components/assistant-ui/elements/ComposerContext.js +3 -2
  132. package/dist/components/assistant-ui/elements/ContextDisplay.js +9 -8
  133. package/dist/components/assistant-ui/elements/ContextDisplayBar.js +6 -5
  134. package/dist/components/assistant-ui/elements/ContextDisplayContent.js +3 -2
  135. package/dist/components/assistant-ui/elements/ContextDisplayRing.js +6 -5
  136. package/dist/components/assistant-ui/elements/ContextDisplayRoot.js +3 -2
  137. package/dist/components/assistant-ui/elements/ContextDisplayText.js +6 -5
  138. package/dist/components/assistant-ui/elements/ContextDisplayTrigger.js +3 -2
  139. package/dist/components/assistant-ui/elements/ConversationMap.js +3 -2
  140. package/dist/components/assistant-ui/elements/DataTable.js +2 -2
  141. package/dist/components/assistant-ui/elements/EditMessage.js +2 -2
  142. package/dist/components/assistant-ui/elements/ElicitationForm.js +2 -2
  143. package/dist/components/assistant-ui/elements/FeedbackDialog.js +2 -2
  144. package/dist/components/assistant-ui/elements/FileTree.js +2 -2
  145. package/dist/components/assistant-ui/elements/FlowGraph.js +2 -2
  146. package/dist/components/assistant-ui/elements/GenerativeUi.js +5 -4
  147. package/dist/components/assistant-ui/elements/Image.js +3 -2
  148. package/dist/components/assistant-ui/elements/ImageGallery.js +3 -2
  149. package/dist/components/assistant-ui/elements/MarkdownText.js +4 -3
  150. package/dist/components/assistant-ui/elements/McpServerPanel.js +2 -2
  151. package/dist/components/assistant-ui/elements/MermaidDiagram.js +4 -3
  152. package/dist/components/assistant-ui/elements/MermaidZoom.js +3 -2
  153. package/dist/components/assistant-ui/elements/MessageTiming.d.ts +1 -1
  154. package/dist/components/assistant-ui/elements/ModelPicker.js +2 -2
  155. package/dist/components/assistant-ui/elements/ModelSelector.js +14 -13
  156. package/dist/components/assistant-ui/elements/ModelSelectorContent.js +11 -10
  157. package/dist/components/assistant-ui/elements/ModelSelectorEmpty.js +5 -4
  158. package/dist/components/assistant-ui/elements/ModelSelectorFocusAnchor.js +5 -4
  159. package/dist/components/assistant-ui/elements/ModelSelectorGroup.js +5 -4
  160. package/dist/components/assistant-ui/elements/ModelSelectorItem.js +5 -4
  161. package/dist/components/assistant-ui/elements/ModelSelectorList.js +7 -6
  162. package/dist/components/assistant-ui/elements/ModelSelectorRoot.js +3 -2
  163. package/dist/components/assistant-ui/elements/ModelSelectorSearch.js +5 -4
  164. package/dist/components/assistant-ui/elements/ModelSelectorSeparator.js +5 -4
  165. package/dist/components/assistant-ui/elements/ModelSelectorTrigger.js +3 -2
  166. package/dist/components/assistant-ui/elements/ReasoningPanel.js +1 -1
  167. package/dist/components/assistant-ui/elements/RecommendationCard.js +1 -1
  168. package/dist/components/assistant-ui/elements/RegenerateMenu.js +3 -2
  169. package/dist/components/assistant-ui/elements/ScheduleCard.js +1 -1
  170. package/dist/components/assistant-ui/elements/ScrollAnchor.js +1 -1
  171. package/dist/components/assistant-ui/elements/SettingsPanel.js +1 -1
  172. package/dist/components/assistant-ui/elements/SpecSheet.js +1 -1
  173. package/dist/components/assistant-ui/elements/TaskCard.js +1 -1
  174. package/dist/components/assistant-ui/elements/TooltipIconButton.js +3 -2
  175. package/dist/components/assistant-ui/elements/types.d.ts +0 -4
  176. package/dist/components/assistant-ui/index.js +61 -60
  177. package/dist/components/assistant-ui/native/AssistantModal.js +11 -10
  178. package/dist/components/assistant-ui/native/AssistantSidebar.js +12 -11
  179. package/dist/components/assistant-ui/native/AttachmentPreview.js +5 -4
  180. package/dist/components/assistant-ui/native/ComposerTriggerPopover.js +1 -1
  181. package/dist/components/assistant-ui/native/ContextDisplay.js +11 -10
  182. package/dist/components/assistant-ui/native/ContextDisplayBar.js +8 -7
  183. package/dist/components/assistant-ui/native/ContextDisplayRing.js +8 -7
  184. package/dist/components/assistant-ui/native/ContextDisplayRoot.js +5 -4
  185. package/dist/components/assistant-ui/native/ContextDisplayRuntimeRoot.js +4 -3
  186. package/dist/components/assistant-ui/native/ContextDisplayText.js +8 -7
  187. package/dist/components/assistant-ui/native/ConversationMapAui.js +4 -3
  188. package/dist/components/assistant-ui/native/McpConfigDialog.js +3 -2
  189. package/dist/components/assistant-ui/native/MermaidDiagram.js +5 -4
  190. package/dist/components/assistant-ui/native/MessageTiming.js +3 -2
  191. package/dist/components/assistant-ui/native/ModelSelector.js +16 -15
  192. package/dist/components/assistant-ui/native/Reasoning.js +5 -4
  193. package/dist/components/assistant-ui/native/TaskCard.js +7 -6
  194. package/dist/components/assistant-ui/native/TaskGroup.js +8 -7
  195. package/dist/components/assistant-ui/native/TaskTray.js +3 -2
  196. package/dist/components/assistant-ui/native/Thread.js +10 -9
  197. package/dist/components/assistant-ui/native/ThreadListSidebar.js +4 -3
  198. package/dist/components/assistant-ui/native/VoiceControl.js +6 -5
  199. package/dist/components/assistant-ui/native/VoiceDisconnectButton.js +4 -3
  200. package/dist/components/assistant-ui/native/VoiceMuteButton.js +4 -3
  201. package/dist/components/assistant-ui/native/index.js +52 -51
  202. package/dist/components/calendar/DatePicker.d.ts +27 -0
  203. package/dist/components/calendar/index.d.ts +2 -0
  204. package/dist/components/calendar/index.js +175 -2
  205. package/dist/components/chart/AnalyticsChart.d.ts +24 -0
  206. package/dist/components/chart/index.d.ts +2 -0
  207. package/dist/components/chart/index.js +88 -0
  208. package/dist/components/color-picker/ColorPicker.d.ts +14 -0
  209. package/dist/components/color-picker/index.d.ts +2 -0
  210. package/dist/components/color-picker/index.js +52 -0
  211. package/dist/components/command/index.js +3 -2
  212. package/dist/components/data-grid/DataGrid.d.ts +44 -0
  213. package/dist/components/data-grid/index.d.ts +2 -0
  214. package/dist/components/data-grid/index.js +228 -0
  215. package/dist/components/editor/RichTextEditor.d.ts +14 -0
  216. package/dist/components/editor/index.d.ts +2 -0
  217. package/dist/components/editor/index.js +108 -0
  218. package/dist/components/event-calendar/EventCalendar.d.ts +16 -0
  219. package/dist/components/event-calendar/EventForm.d.ts +18 -0
  220. package/dist/components/event-calendar/index.d.ts +4 -0
  221. package/dist/components/event-calendar/index.js +266 -0
  222. package/dist/components/file-upload/FileUpload.d.ts +14 -0
  223. package/dist/components/file-upload/index.d.ts +2 -0
  224. package/dist/components/file-upload/index.js +80 -0
  225. package/dist/components/gantt/Gantt.d.ts +22 -0
  226. package/dist/components/gantt/Roadmap.d.ts +18 -0
  227. package/dist/components/gantt/index.d.ts +4 -0
  228. package/dist/components/gantt/index.js +357 -0
  229. package/dist/components/image-crop/ImageCrop.d.ts +10 -0
  230. package/dist/components/image-crop/index.d.ts +2 -0
  231. package/dist/components/image-crop/index.js +35 -0
  232. package/dist/components/questionnaire/index.js +2 -2
  233. package/dist/components/resizable/Resizable.d.ts +1 -1
  234. package/dist/components/resizable/index.js +1 -1
  235. package/dist/components/tree/Tree.d.ts +16 -0
  236. package/dist/components/tree/index.d.ts +2 -0
  237. package/dist/components/tree/index.js +57 -0
  238. package/dist/event-calendar.css +83 -0
  239. package/dist/hooks/usePortalNode.d.ts +14 -0
  240. package/dist/index.d.ts +35 -0
  241. package/dist/index.js +1636 -761
  242. package/dist/options/types.d.ts +5 -0
  243. package/dist/theme.css +34 -35
  244. package/dist/utils/observeScrollGuards.d.ts +4 -0
  245. package/llms/components/actions/Button.md +433 -0
  246. package/llms/components/actions/ButtonGroup.md +278 -0
  247. package/llms/components/actions/ButtonLink.md +189 -0
  248. package/llms/components/actions/Toggle.md +191 -0
  249. package/llms/components/actions/ToggleGroup.md +161 -0
  250. package/llms/components/actions/Toolbar.md +89 -0
  251. package/llms/components/assistant-ui/elements/agents-tasks/AgentCard.md +60 -0
  252. package/llms/components/assistant-ui/elements/agents-tasks/AgentHandoff.md +78 -0
  253. package/llms/components/assistant-ui/elements/agents-tasks/AgentPlan.md +57 -0
  254. package/llms/components/assistant-ui/elements/agents-tasks/AgentStatus.md +88 -0
  255. package/llms/components/assistant-ui/elements/agents-tasks/JobProgress.md +84 -0
  256. package/llms/components/assistant-ui/elements/agents-tasks/RunActivity.md +75 -0
  257. package/llms/components/assistant-ui/elements/agents-tasks/ScheduleCard.md +91 -0
  258. package/llms/components/assistant-ui/elements/agents-tasks/StoppedRun.md +54 -0
  259. package/llms/components/assistant-ui/elements/agents-tasks/SubagentList.md +72 -0
  260. package/llms/components/assistant-ui/elements/agents-tasks/TaskCard.md +101 -0
  261. package/llms/components/assistant-ui/elements/agents-tasks/TaskStateIcon.md +86 -0
  262. package/llms/components/assistant-ui/elements/agents-tasks/TodoList.md +99 -0
  263. package/llms/components/assistant-ui/elements/branding/ClaudeLogo.md +36 -0
  264. package/llms/components/assistant-ui/elements/branding/GeminiLogo.md +47 -0
  265. package/llms/components/assistant-ui/elements/branding/GitHubIcon.md +41 -0
  266. package/llms/components/assistant-ui/elements/branding/OpenAILogo.md +36 -0
  267. package/llms/components/assistant-ui/elements/code-diffs/CodeDiff.md +67 -0
  268. package/llms/components/assistant-ui/elements/code-diffs/CodeRunner.md +66 -0
  269. package/llms/components/assistant-ui/elements/code-diffs/DiffViewer.md +144 -0
  270. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerContent.md +50 -0
  271. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerFile.md +50 -0
  272. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerFileBadge.md +50 -0
  273. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerFileContent.md +59 -0
  274. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerHeader.md +81 -0
  275. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerLine.md +50 -0
  276. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerSplitLine.md +55 -0
  277. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerStats.md +50 -0
  278. package/llms/components/assistant-ui/elements/code-diffs/DiffViewerText.md +44 -0
  279. package/llms/components/assistant-ui/elements/code-diffs/ReviewableDiff.md +102 -0
  280. package/llms/components/assistant-ui/elements/code-diffs/ShikiHighlighter.md +131 -0
  281. package/llms/components/assistant-ui/elements/code-diffs/SyntaxHighlighter.md +62 -0
  282. package/llms/components/assistant-ui/elements/code-diffs/TerminalAnsiFragment.md +66 -0
  283. package/llms/components/assistant-ui/elements/code-diffs/TerminalBlock.md +131 -0
  284. package/llms/components/assistant-ui/elements/composer/CommandPalette.md +79 -0
  285. package/llms/components/assistant-ui/elements/composer/Composer.md +62 -0
  286. package/llms/components/assistant-ui/elements/composer/ComposerActions.md +34 -0
  287. package/llms/components/assistant-ui/elements/composer/ComposerAttachButton.md +50 -0
  288. package/llms/components/assistant-ui/elements/composer/ComposerAttachmentChip.md +58 -0
  289. package/llms/components/assistant-ui/elements/composer/ComposerAttachments.md +42 -0
  290. package/llms/components/assistant-ui/elements/composer/ComposerBar.md +42 -0
  291. package/llms/components/assistant-ui/elements/composer/ComposerCommandItem.md +42 -0
  292. package/llms/components/assistant-ui/elements/composer/ComposerContext.md +50 -0
  293. package/llms/components/assistant-ui/elements/composer/ComposerInput.md +56 -0
  294. package/llms/components/assistant-ui/elements/composer/ComposerMenu.md +59 -0
  295. package/llms/components/assistant-ui/elements/composer/ComposerMenuItem.md +50 -0
  296. package/llms/components/assistant-ui/elements/composer/ComposerModelItem.md +42 -0
  297. package/llms/components/assistant-ui/elements/composer/ComposerModelTrigger.md +42 -0
  298. package/llms/components/assistant-ui/elements/composer/ComposerPersonItem.md +42 -0
  299. package/llms/components/assistant-ui/elements/composer/ComposerSend.md +58 -0
  300. package/llms/components/assistant-ui/elements/composer/ComposerToolbar.md +34 -0
  301. package/llms/components/assistant-ui/elements/composer/ComposerVoice.md +58 -0
  302. package/llms/components/assistant-ui/elements/composer/ComposerVoiceButton.md +50 -0
  303. package/llms/components/assistant-ui/elements/composer/MobileComposer.md +82 -0
  304. package/llms/components/assistant-ui/elements/composer/PromptLibrary.md +99 -0
  305. package/llms/components/assistant-ui/elements/composer/Suggestions.md +62 -0
  306. package/llms/components/assistant-ui/elements/context/ContextBreakdown.md +58 -0
  307. package/llms/components/assistant-ui/elements/context/ContextDisplay.md +37 -0
  308. package/llms/components/assistant-ui/elements/context/ContextDisplayBar.md +28 -0
  309. package/llms/components/assistant-ui/elements/context/ContextDisplayContent.md +31 -0
  310. package/llms/components/assistant-ui/elements/context/ContextDisplayRing.md +28 -0
  311. package/llms/components/assistant-ui/elements/context/ContextDisplayRoot.md +54 -0
  312. package/llms/components/assistant-ui/elements/context/ContextDisplayText.md +28 -0
  313. package/llms/components/assistant-ui/elements/context/ContextDisplayTrigger.md +51 -0
  314. package/llms/components/assistant-ui/elements/context/ContextDisplayValue.md +58 -0
  315. package/llms/components/assistant-ui/elements/context/MemoryChips.md +57 -0
  316. package/llms/components/assistant-ui/elements/conversations/BackgroundInbox.md +57 -0
  317. package/llms/components/assistant-ui/elements/conversations/CanvasSplit.md +68 -0
  318. package/llms/components/assistant-ui/elements/conversations/ChatPanel.md +82 -0
  319. package/llms/components/assistant-ui/elements/conversations/CheckpointHistory.md +57 -0
  320. package/llms/components/assistant-ui/elements/conversations/ConversationMap.md +59 -0
  321. package/llms/components/assistant-ui/elements/conversations/ConversationSearch.md +83 -0
  322. package/llms/components/assistant-ui/elements/conversations/DaySeparator.md +44 -0
  323. package/llms/components/assistant-ui/elements/conversations/DraftRestore.md +48 -0
  324. package/llms/components/assistant-ui/elements/conversations/EditMessage.md +97 -0
  325. package/llms/components/assistant-ui/elements/conversations/LauncherBubble.md +79 -0
  326. package/llms/components/assistant-ui/elements/conversations/MessageActions.md +68 -0
  327. package/llms/components/assistant-ui/elements/conversations/MessageAttachments.md +57 -0
  328. package/llms/components/assistant-ui/elements/conversations/MessageBranches.md +76 -0
  329. package/llms/components/assistant-ui/elements/conversations/MessagePair.md +57 -0
  330. package/llms/components/assistant-ui/elements/conversations/MessageQueue.md +54 -0
  331. package/llms/components/assistant-ui/elements/conversations/MessageTiming.md +78 -0
  332. package/llms/components/assistant-ui/elements/conversations/QuoteReply.md +83 -0
  333. package/llms/components/assistant-ui/elements/conversations/RegenerateMenu.md +117 -0
  334. package/llms/components/assistant-ui/elements/conversations/ScrollAnchor.md +56 -0
  335. package/llms/components/assistant-ui/elements/conversations/SharedConversation.md +81 -0
  336. package/llms/components/assistant-ui/elements/conversations/ThreadList.md +121 -0
  337. package/llms/components/assistant-ui/elements/conversations/ThreadSearch.md +131 -0
  338. package/llms/components/assistant-ui/elements/data-visualization/ActivityGraph.md +51 -0
  339. package/llms/components/assistant-ui/elements/data-visualization/ArtifactCard.md +50 -0
  340. package/llms/components/assistant-ui/elements/data-visualization/Chart.md +58 -0
  341. package/llms/components/assistant-ui/elements/data-visualization/ComparisonCard.md +58 -0
  342. package/llms/components/assistant-ui/elements/data-visualization/CostMeter.md +49 -0
  343. package/llms/components/assistant-ui/elements/data-visualization/DataTable.md +240 -0
  344. package/llms/components/assistant-ui/elements/data-visualization/Diagram.md +77 -0
  345. package/llms/components/assistant-ui/elements/data-visualization/DotMatrix.md +188 -0
  346. package/llms/components/assistant-ui/elements/data-visualization/FlowGraph.md +61 -0
  347. package/llms/components/assistant-ui/elements/data-visualization/GenerativeUi.md +110 -0
  348. package/llms/components/assistant-ui/elements/data-visualization/GenerativeUiTheme.md +67 -0
  349. package/llms/components/assistant-ui/elements/data-visualization/GeoMap.md +91 -0
  350. package/llms/components/assistant-ui/elements/data-visualization/HeatGraph.md +57 -0
  351. package/llms/components/assistant-ui/elements/data-visualization/MapAnswer.md +58 -0
  352. package/llms/components/assistant-ui/elements/data-visualization/MermaidDiagram.md +66 -0
  353. package/llms/components/assistant-ui/elements/data-visualization/NumberRoll.md +88 -0
  354. package/llms/components/assistant-ui/elements/data-visualization/NumberRollDigit.md +28 -0
  355. package/llms/components/assistant-ui/elements/data-visualization/NumberRollPart.md +28 -0
  356. package/llms/components/assistant-ui/elements/data-visualization/NumberTicker.md +87 -0
  357. package/llms/components/assistant-ui/elements/data-visualization/RecommendationCard.md +86 -0
  358. package/llms/components/assistant-ui/elements/data-visualization/ScoreBreakdown.md +72 -0
  359. package/llms/components/assistant-ui/elements/data-visualization/ShareMeter.md +50 -0
  360. package/llms/components/assistant-ui/elements/data-visualization/SpecSheet.md +69 -0
  361. package/llms/components/assistant-ui/elements/data-visualization/Timeline.md +72 -0
  362. package/llms/components/assistant-ui/elements/data-visualization/TraceWaterfall.md +88 -0
  363. package/llms/components/assistant-ui/elements/media-voice/AudioPlayer.md +50 -0
  364. package/llms/components/assistant-ui/elements/media-voice/File.md +122 -0
  365. package/llms/components/assistant-ui/elements/media-voice/FileTree.md +59 -0
  366. package/llms/components/assistant-ui/elements/media-voice/Image.md +201 -0
  367. package/llms/components/assistant-ui/elements/media-voice/ImageGallery.md +64 -0
  368. package/llms/components/assistant-ui/elements/media-voice/ImageGeneration.md +50 -0
  369. package/llms/components/assistant-ui/elements/media-voice/ReadAloud.md +89 -0
  370. package/llms/components/assistant-ui/elements/media-voice/SpeakerIdentity.md +60 -0
  371. package/llms/components/assistant-ui/elements/media-voice/VideoPlayer.md +42 -0
  372. package/llms/components/assistant-ui/elements/media-voice/VoiceConversation.md +78 -0
  373. package/llms/components/assistant-ui/elements/media-voice/VoiceOrb.md +110 -0
  374. package/llms/components/assistant-ui/elements/models/ModelPicker.md +79 -0
  375. package/llms/components/assistant-ui/elements/models/ModelSelector.md +48 -0
  376. package/llms/components/assistant-ui/elements/models/ModelSelectorContent.md +45 -0
  377. package/llms/components/assistant-ui/elements/models/ModelSelectorEffort.md +31 -0
  378. package/llms/components/assistant-ui/elements/models/ModelSelectorEmpty.md +30 -0
  379. package/llms/components/assistant-ui/elements/models/ModelSelectorFocusAnchor.md +31 -0
  380. package/llms/components/assistant-ui/elements/models/ModelSelectorGroup.md +40 -0
  381. package/llms/components/assistant-ui/elements/models/ModelSelectorItem.md +38 -0
  382. package/llms/components/assistant-ui/elements/models/ModelSelectorList.md +30 -0
  383. package/llms/components/assistant-ui/elements/models/ModelSelectorRoot.md +72 -0
  384. package/llms/components/assistant-ui/elements/models/ModelSelectorSearch.md +31 -0
  385. package/llms/components/assistant-ui/elements/models/ModelSelectorSeparator.md +34 -0
  386. package/llms/components/assistant-ui/elements/models/ModelSelectorTrigger.md +66 -0
  387. package/llms/components/assistant-ui/elements/models/ModelSelectorValue.md +32 -0
  388. package/llms/components/assistant-ui/elements/models/ReasoningEffort.md +86 -0
  389. package/llms/components/assistant-ui/elements/reasoning/GenerationLoader.md +88 -0
  390. package/llms/components/assistant-ui/elements/reasoning/ReasoningContent.md +59 -0
  391. package/llms/components/assistant-ui/elements/reasoning/ReasoningFade.md +62 -0
  392. package/llms/components/assistant-ui/elements/reasoning/ReasoningPanel.md +75 -0
  393. package/llms/components/assistant-ui/elements/reasoning/ReasoningRoot.md +101 -0
  394. package/llms/components/assistant-ui/elements/reasoning/ReasoningText.md +59 -0
  395. package/llms/components/assistant-ui/elements/reasoning/ReasoningTrigger.md +59 -0
  396. package/llms/components/assistant-ui/elements/reasoning/ThinkingIndicator.md +54 -0
  397. package/llms/components/assistant-ui/elements/reasoning/TypingIndicator.md +62 -0
  398. package/llms/components/assistant-ui/elements/sources-research/Citation.md +103 -0
  399. package/llms/components/assistant-ui/elements/sources-research/ConfidenceMarker.md +94 -0
  400. package/llms/components/assistant-ui/elements/sources-research/DocumentReference.md +60 -0
  401. package/llms/components/assistant-ui/elements/sources-research/InlineCitation.md +56 -0
  402. package/llms/components/assistant-ui/elements/sources-research/LinkPreview.md +65 -0
  403. package/llms/components/assistant-ui/elements/sources-research/ResearchReport.md +72 -0
  404. package/llms/components/assistant-ui/elements/sources-research/RetrievalChunks.md +75 -0
  405. package/llms/components/assistant-ui/elements/sources-research/SourceGlyph.md +54 -0
  406. package/llms/components/assistant-ui/elements/sources-research/Sources.md +150 -0
  407. package/llms/components/assistant-ui/elements/sources-research/WebPreview.md +80 -0
  408. package/llms/components/assistant-ui/elements/sources-research/WebSearch.md +72 -0
  409. package/llms/components/assistant-ui/elements/states-settings/ConnectionState.md +58 -0
  410. package/llms/components/assistant-ui/elements/states-settings/ElicitationForm.md +101 -0
  411. package/llms/components/assistant-ui/elements/states-settings/EmptyState.md +64 -0
  412. package/llms/components/assistant-ui/elements/states-settings/EmptyStateComposer.md +88 -0
  413. package/llms/components/assistant-ui/elements/states-settings/EmptyStateGreeting.md +56 -0
  414. package/llms/components/assistant-ui/elements/states-settings/EmptyStateSuggestion.md +66 -0
  415. package/llms/components/assistant-ui/elements/states-settings/EmptyStateSuggestions.md +61 -0
  416. package/llms/components/assistant-ui/elements/states-settings/ErrorState.md +47 -0
  417. package/llms/components/assistant-ui/elements/states-settings/EveAskQuestion.md +166 -0
  418. package/llms/components/assistant-ui/elements/states-settings/FeedbackDialog.md +85 -0
  419. package/llms/components/assistant-ui/elements/states-settings/Onboarding.md +84 -0
  420. package/llms/components/assistant-ui/elements/states-settings/OptionList.md +74 -0
  421. package/llms/components/assistant-ui/elements/states-settings/OptionText.md +38 -0
  422. package/llms/components/assistant-ui/elements/states-settings/QuestionFlow.md +85 -0
  423. package/llms/components/assistant-ui/elements/states-settings/QuotaBanner.md +91 -0
  424. package/llms/components/assistant-ui/elements/states-settings/SettingsPanel.md +92 -0
  425. package/llms/components/assistant-ui/elements/text-formatting/DirectiveText.md +94 -0
  426. package/llms/components/assistant-ui/elements/text-formatting/Frac.md +28 -0
  427. package/llms/components/assistant-ui/elements/text-formatting/MarkdownText.md +66 -0
  428. package/llms/components/assistant-ui/elements/text-formatting/MathBlock.md +67 -0
  429. package/llms/components/assistant-ui/elements/text-formatting/StreamingText.md +62 -0
  430. package/llms/components/assistant-ui/elements/text-formatting/Sub.md +28 -0
  431. package/llms/components/assistant-ui/elements/text-formatting/Sup.md +28 -0
  432. package/llms/components/assistant-ui/elements/tools-approvals/ApprovalCard.md +96 -0
  433. package/llms/components/assistant-ui/elements/tools-approvals/ComputerUse.md +58 -0
  434. package/llms/components/assistant-ui/elements/tools-approvals/GuardrailNotice.md +78 -0
  435. package/llms/components/assistant-ui/elements/tools-approvals/McpServerPanel.md +73 -0
  436. package/llms/components/assistant-ui/elements/tools-approvals/PermissionGrant.md +104 -0
  437. package/llms/components/assistant-ui/elements/tools-approvals/ToolCall.md +81 -0
  438. package/llms/components/assistant-ui/elements/tools-approvals/ToolError.md +89 -0
  439. package/llms/components/assistant-ui/elements/tools-approvals/ToolGroup.md +101 -0
  440. package/llms/components/assistant-ui/elements/tools-approvals/ToolTimeline.md +87 -0
  441. package/llms/components/assistant-ui/native/agents-tasks/AgentStatus.md +87 -0
  442. package/llms/components/assistant-ui/native/agents-tasks/TaskCard.md +111 -0
  443. package/llms/components/assistant-ui/native/agents-tasks/TaskGroup.md +82 -0
  444. package/llms/components/assistant-ui/native/agents-tasks/TaskTray.md +66 -0
  445. package/llms/components/assistant-ui/native/code-diffs/SyntaxHighlighter.md +48 -0
  446. package/llms/components/assistant-ui/native/composer/AttachmentPreview.md +58 -0
  447. package/llms/components/assistant-ui/native/composer/ComposerTriggerPopover.md +42 -0
  448. package/llms/components/assistant-ui/native/composer/FollowupSuggestionsRow.md +36 -0
  449. package/llms/components/assistant-ui/native/context/ContextDisplay.md +42 -0
  450. package/llms/components/assistant-ui/native/context/ContextDisplayBar.md +52 -0
  451. package/llms/components/assistant-ui/native/context/ContextDisplayRing.md +52 -0
  452. package/llms/components/assistant-ui/native/context/ContextDisplayRoot.md +42 -0
  453. package/llms/components/assistant-ui/native/context/ContextDisplayRuntimeRoot.md +42 -0
  454. package/llms/components/assistant-ui/native/context/ContextDisplayText.md +52 -0
  455. package/llms/components/assistant-ui/native/conversations/AssistantModal.md +60 -0
  456. package/llms/components/assistant-ui/native/conversations/AssistantSidebar.md +44 -0
  457. package/llms/components/assistant-ui/native/conversations/ConversationMapAui.md +50 -0
  458. package/llms/components/assistant-ui/native/conversations/MessageTiming.md +83 -0
  459. package/llms/components/assistant-ui/native/conversations/QuoteBlock.md +34 -0
  460. package/llms/components/assistant-ui/native/conversations/SelectionToolbar.md +53 -0
  461. package/llms/components/assistant-ui/native/conversations/Thread.md +144 -0
  462. package/llms/components/assistant-ui/native/conversations/ThreadList.md +67 -0
  463. package/llms/components/assistant-ui/native/conversations/ThreadListSidebar.md +45 -0
  464. package/llms/components/assistant-ui/native/data-visualization/MermaidDiagram.md +34 -0
  465. package/llms/components/assistant-ui/native/media-voice/VoiceConnectButton.md +69 -0
  466. package/llms/components/assistant-ui/native/media-voice/VoiceControl.md +52 -0
  467. package/llms/components/assistant-ui/native/media-voice/VoiceConversation.md +64 -0
  468. package/llms/components/assistant-ui/native/media-voice/VoiceDisconnectButton.md +53 -0
  469. package/llms/components/assistant-ui/native/media-voice/VoiceMuteButton.md +59 -0
  470. package/llms/components/assistant-ui/native/media-voice/VoiceOrb.md +66 -0
  471. package/llms/components/assistant-ui/native/media-voice/VoiceStatusDot.md +58 -0
  472. package/llms/components/assistant-ui/native/models/ModelSelector.md +50 -0
  473. package/llms/components/assistant-ui/native/reasoning/Reasoning.md +87 -0
  474. package/llms/components/assistant-ui/native/sources-research/Sources.md +145 -0
  475. package/llms/components/assistant-ui/native/text-formatting/DirectiveText.md +42 -0
  476. package/llms/components/assistant-ui/native/tools-approvals/McpConfigDialog.md +54 -0
  477. package/llms/components/assistant-ui/native/tools-approvals/ToolFallbackApproval.md +352 -0
  478. package/llms/components/assistant-ui/native/tools-approvals/ToolFallbackRoot.md +84 -0
  479. package/llms/components/assistant-ui/native/tools-approvals/ToolGroup.md +63 -0
  480. package/llms/components/data-display/AnalyticsChart.md +48 -0
  481. package/llms/components/data-display/Avatar.md +254 -0
  482. package/llms/components/data-display/Badge.md +221 -0
  483. package/llms/components/data-display/BarList.md +50 -0
  484. package/llms/components/data-display/Carousel.md +465 -0
  485. package/llms/components/data-display/Chart.md +546 -0
  486. package/llms/components/data-display/DataGrid.md +51 -0
  487. package/llms/components/data-display/Item.md +502 -0
  488. package/llms/components/data-display/JsonViewer.md +38 -0
  489. package/llms/components/data-display/Kbd.md +99 -0
  490. package/llms/components/data-display/Meter.md +74 -0
  491. package/llms/components/data-display/Sparkline.md +50 -0
  492. package/llms/components/data-display/StatCard.md +65 -0
  493. package/llms/components/data-display/StatusTracker.md +51 -0
  494. package/llms/components/data-display/Table.md +254 -0
  495. package/llms/components/data-display/VirtualTable.md +57 -0
  496. package/llms/components/dates/Calendar.md +539 -0
  497. package/llms/components/dates/DatePicker.md +97 -0
  498. package/llms/components/dates/PersianCalendar.md +117 -0
  499. package/llms/components/drag-drop/DragDropPreview.md +46 -0
  500. package/llms/components/drag-drop/DragDropProvider.md +28 -0
  501. package/llms/components/feedback/Alert.md +117 -0
  502. package/llms/components/feedback/Empty.md +193 -0
  503. package/llms/components/feedback/EmptyState.md +38 -0
  504. package/llms/components/feedback/PageMessage.md +49 -0
  505. package/llms/components/feedback/Progress.md +140 -0
  506. package/llms/components/feedback/Skeleton.md +157 -0
  507. package/llms/components/feedback/Sonner.md +325 -0
  508. package/llms/components/feedback/Spinner.md +119 -0
  509. package/llms/components/feedback/Toast.md +242 -0
  510. package/llms/components/forms/AuthForm.md +70 -0
  511. package/llms/components/forms/Checkbox.md +204 -0
  512. package/llms/components/forms/ColorPicker.md +70 -0
  513. package/llms/components/forms/Combobox.md +594 -0
  514. package/llms/components/forms/EventForm.md +66 -0
  515. package/llms/components/forms/Field.md +511 -0
  516. package/llms/components/forms/FileUpload.md +55 -0
  517. package/llms/components/forms/FilterBar.md +34 -0
  518. package/llms/components/forms/ImageCrop.md +88 -0
  519. package/llms/components/forms/ImagePicker.md +63 -0
  520. package/llms/components/forms/InlineEdit.md +67 -0
  521. package/llms/components/forms/Input.md +380 -0
  522. package/llms/components/forms/InputGroup.md +628 -0
  523. package/llms/components/forms/InputOTP.md +400 -0
  524. package/llms/components/forms/Label.md +181 -0
  525. package/llms/components/forms/NativeSelect.md +128 -0
  526. package/llms/components/forms/NumberField.md +94 -0
  527. package/llms/components/forms/Questionnaire.md +279 -0
  528. package/llms/components/forms/RadioGroup.md +401 -0
  529. package/llms/components/forms/RichTextEditor.md +62 -0
  530. package/llms/components/forms/Select.md +575 -0
  531. package/llms/components/forms/SettingsSection.md +65 -0
  532. package/llms/components/forms/Slider.md +234 -0
  533. package/llms/components/forms/StarRating.md +60 -0
  534. package/llms/components/forms/Stepper.md +85 -0
  535. package/llms/components/forms/Switch.md +240 -0
  536. package/llms/components/forms/TagInput.md +47 -0
  537. package/llms/components/forms/Textarea.md +219 -0
  538. package/llms/components/layout/Accordion.md +249 -0
  539. package/llms/components/layout/AppShell.md +63 -0
  540. package/llms/components/layout/AspectRatio.md +68 -0
  541. package/llms/components/layout/BillingUsage.md +51 -0
  542. package/llms/components/layout/Card.md +391 -0
  543. package/llms/components/layout/Collapsible.md +231 -0
  544. package/llms/components/layout/DashboardLayout.md +78 -0
  545. package/llms/components/layout/PageHeader.md +49 -0
  546. package/llms/components/layout/Resizable.md +267 -0
  547. package/llms/components/layout/ScrollArea.md +170 -0
  548. package/llms/components/layout/Separator.md +104 -0
  549. package/llms/components/layout/SplitView.md +92 -0
  550. package/llms/components/messaging/Attachment.md +324 -0
  551. package/llms/components/messaging/Bubble.md +411 -0
  552. package/llms/components/messaging/Marker.md +203 -0
  553. package/llms/components/messaging/Message.md +268 -0
  554. package/llms/components/messaging/MessageScroller.md +227 -0
  555. package/llms/components/navigation/AccountMenu.md +42 -0
  556. package/llms/components/navigation/Breadcrumb.md +159 -0
  557. package/llms/components/navigation/Command.md +471 -0
  558. package/llms/components/navigation/ContextMenu.md +596 -0
  559. package/llms/components/navigation/DropdownMenu.md +602 -0
  560. package/llms/components/navigation/Menubar.md +397 -0
  561. package/llms/components/navigation/NavigationMenu.md +379 -0
  562. package/llms/components/navigation/Pagination.md +222 -0
  563. package/llms/components/navigation/Sidebar.md +330 -0
  564. package/llms/components/navigation/Tabs.md +418 -0
  565. package/llms/components/navigation/Tree.md +28 -0
  566. package/llms/components/navigation/WorkspaceSwitcher.md +48 -0
  567. package/llms/components/overlays/AlertDialog.md +365 -0
  568. package/llms/components/overlays/ConfirmationDialog.md +77 -0
  569. package/llms/components/overlays/Dialog.md +559 -0
  570. package/llms/components/overlays/Drawer.md +597 -0
  571. package/llms/components/overlays/HoverCard.md +276 -0
  572. package/llms/components/overlays/Popover.md +286 -0
  573. package/llms/components/overlays/Sheet.md +433 -0
  574. package/llms/components/overlays/Tooltip.md +318 -0
  575. package/llms/components/planning/EventCalendar.md +67 -0
  576. package/llms/components/planning/Gantt.md +66 -0
  577. package/llms/components/planning/Kanban.md +50 -0
  578. package/llms/components/planning/Roadmap.md +34 -0
  579. package/llms/components/providers/DensityProvider.md +171 -0
  580. package/llms/components/providers/DirectionProvider.md +39 -0
  581. package/llms/components/providers/PortalProvider.md +264 -0
  582. package/llms/components/providers/ScrollGuard.md +24 -0
  583. package/llms/components/providers/ThemeProvider.md +71 -0
  584. package/llms/setup.md +390 -0
  585. package/llms.txt +462 -0
  586. package/package.json +110 -5
  587. package/dist/chunk-czg9p52v.js +0 -74
package/dist/index.js CHANGED
@@ -10,9 +10,12 @@ import {
10
10
  useDensity
11
11
  } from "./chunk-e6hk39ev.js";
12
12
  import {
13
- PortalContext,
14
13
  usePortalContainer2
15
14
  } from "./chunk-j89xg1ak.js";
15
+ import {
16
+ usePortalNode,
17
+ PortalProvider2
18
+ } from "./chunk-aa7m22zj.js";
16
19
  import {
17
20
  DirectionProvider2,
18
21
  useDirection2
@@ -33,7 +36,7 @@ import {
33
36
  DropdownMenuRadioItem2,
34
37
  DropdownMenuSeparator2,
35
38
  DropdownMenuShortcut2
36
- } from "./chunk-mx21wpq0.js";
39
+ } from "./chunk-d4bm5rzy.js";
37
40
  import {
38
41
  Popover2,
39
42
  PopoverTrigger2,
@@ -41,7 +44,7 @@ import {
41
44
  PopoverHeader2,
42
45
  PopoverTitle2,
43
46
  PopoverDescription2
44
- } from "./chunk-x7z9jzyf.js";
47
+ } from "./chunk-4djw71cv.js";
45
48
  import {
46
49
  Skeleton2
47
50
  } from "./chunk-d70rcwk7.js";
@@ -77,7 +80,7 @@ import {
77
80
  DialogFooter2,
78
81
  DialogTitle2,
79
82
  DialogDescription2
80
- } from "./chunk-717ggspf.js";
83
+ } from "./chunk-70vndezn.js";
81
84
  import {
82
85
  Slider2
83
86
  } from "./chunk-644cnngf.js";
@@ -92,7 +95,7 @@ import {
92
95
  Tooltip2,
93
96
  TooltipTrigger2,
94
97
  TooltipContent2
95
- } from "./chunk-czg9p52v.js";
98
+ } from "./chunk-mz3e810d.js";
96
99
  import {
97
100
  RadioGroup2,
98
101
  RadioGroupItem2
@@ -105,7 +108,7 @@ import {
105
108
  CardAction2,
106
109
  CardContent2,
107
110
  CardFooter2
108
- } from "./chunk-v4yqjvzd.js";
111
+ } from "./chunk-bygq5yqf.js";
109
112
  import {
110
113
  InputGroup2,
111
114
  InputGroupAddon2,
@@ -114,6 +117,21 @@ import {
114
117
  InputGroupInput2,
115
118
  InputGroupTextarea2
116
119
  } from "./chunk-1jeg5z55.js";
120
+ import {
121
+ Tabs2,
122
+ tabsListVariants2,
123
+ TabsList2,
124
+ TabsTrigger2,
125
+ TabsContent2,
126
+ DragDropPreview2,
127
+ DragDropProvider2,
128
+ useDragDrop2,
129
+ useDragSource2,
130
+ DragSource2,
131
+ useDropTarget2,
132
+ DropTarget2,
133
+ Kanban2
134
+ } from "./chunk-kbg2e95b.js";
117
135
  import {
118
136
  badgeVariants2,
119
137
  Badge2
@@ -179,6 +197,11 @@ import {
179
197
  TableCell2,
180
198
  TableCaption2
181
199
  } from "./chunk-0y0kqaqj.js";
200
+ import {
201
+ NativeSelect2,
202
+ NativeSelectOption2,
203
+ NativeSelectOptGroup2
204
+ } from "./chunk-r9qrb6b6.js";
182
205
  import {
183
206
  Kbd2,
184
207
  KbdGroup2
@@ -187,7 +210,7 @@ import {
187
210
  HoverCard2,
188
211
  HoverCardTrigger2,
189
212
  HoverCardContent2
190
- } from "./chunk-m54kq3he.js";
213
+ } from "./chunk-hh43wg05.js";
191
214
  import {
192
215
  Sheet2,
193
216
  SheetTrigger2,
@@ -221,7 +244,15 @@ import {
221
244
  SidebarMenuSub2,
222
245
  SidebarMenuSubItem2,
223
246
  SidebarMenuSubButton2
224
- } from "./chunk-45kmek5e.js";
247
+ } from "./chunk-dq7kr5y0.js";
248
+ import {
249
+ Toolbar2,
250
+ ToolbarButton2,
251
+ ToolbarLink2,
252
+ ToolbarInput2,
253
+ ToolbarGroup2,
254
+ ToolbarSeparator2
255
+ } from "./chunk-21wbz345.js";
225
256
  // src/components/ButtonLink.tsx
226
257
  import { mergeProps } from "@base-ui/react/merge-props";
227
258
  import { useRender } from "@base-ui/react/use-render";
@@ -406,22 +437,27 @@ function ComboboxContent({
406
437
  const resolvedDensity = useDensity(density);
407
438
  const direction = useDirection();
408
439
  const container = usePortalContainer2();
440
+ const portal = usePortalNode();
409
441
  return /* @__PURE__ */ jsx3(ComboboxPrimitive.Portal, {
410
442
  container,
411
- children: /* @__PURE__ */ jsx3(ComboboxPrimitive.Positioner, {
412
- side,
413
- sideOffset,
414
- align,
415
- alignOffset,
416
- anchor,
417
- className: "isolate ",
418
- children: /* @__PURE__ */ jsx3(ComboboxPrimitive.Popup, {
419
- dir: direction,
420
- "data-density": resolvedDensity,
421
- "data-slot": "combobox-content",
422
- "data-chips": !!anchor,
423
- className: (state) => cn2("group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-md bg-popover text-popover-foreground border border-frame-edge shadow-frame duration-120 data-[chips=true]:min-w-(--anchor-width) *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-control *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-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", typeof className === "function" ? className(state) : className),
424
- ...props
443
+ ref: portal.ref,
444
+ children: /* @__PURE__ */ jsx3(PortalProvider2, {
445
+ container: portal.node,
446
+ children: /* @__PURE__ */ jsx3(ComboboxPrimitive.Positioner, {
447
+ side,
448
+ sideOffset,
449
+ align,
450
+ alignOffset,
451
+ anchor,
452
+ className: "isolate ",
453
+ children: /* @__PURE__ */ jsx3(ComboboxPrimitive.Popup, {
454
+ dir: direction,
455
+ "data-density": resolvedDensity,
456
+ "data-slot": "combobox-content",
457
+ "data-chips": !!anchor,
458
+ className: (state) => cn2("group/combobox-content relative max-h-(--available-height) w-(--anchor-width) max-w-(--available-width) min-w-[calc(var(--anchor-width)+--spacing(7))] origin-(--transform-origin) overflow-hidden rounded-md bg-popover text-popover-foreground border border-frame-edge shadow-frame duration-120 data-[chips=true]:min-w-(--anchor-width) *:data-[slot=input-group]:m-1 *:data-[slot=input-group]:mb-0 *:data-[slot=input-group]:h-control *:data-[slot=input-group]:border-input/30 *:data-[slot=input-group]:bg-input/30 *:data-[slot=input-group]:shadow-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", typeof className === "function" ? className(state) : className),
459
+ ...props
460
+ })
425
461
  })
426
462
  })
427
463
  });
@@ -498,7 +534,14 @@ function ComboboxChips({ density, className, ...props }) {
498
534
  ...props
499
535
  });
500
536
  }
501
- function ComboboxChip({ density, className, children, showRemove = true, ...props }) {
537
+ function ComboboxChip({
538
+ density,
539
+ className,
540
+ children,
541
+ showRemove = true,
542
+ removeLabel = "Remove item",
543
+ ...props
544
+ }) {
502
545
  return /* @__PURE__ */ jsxs2(ComboboxPrimitive.Chip, {
503
546
  "data-density": density,
504
547
  "data-slot": "combobox-chip",
@@ -513,7 +556,7 @@ function ComboboxChip({ density, className, children, showRemove = true, ...prop
513
556
  }),
514
557
  className: "size-tag -ms-1 opacity-50 hover:opacity-100",
515
558
  "data-slot": "combobox-chip-remove",
516
- "aria-label": "Remove item",
559
+ "aria-label": removeLabel,
517
560
  children: /* @__PURE__ */ jsx3(XIcon, {
518
561
  className: "pointer-events-none"
519
562
  })
@@ -529,334 +572,54 @@ function ComboboxChipsInput({ density, className, ...props }) {
529
572
  ...props
530
573
  });
531
574
  }
532
- // src/components/Tabs.tsx
533
- import { Tabs as TabsPrimitive } from "@base-ui/react/tabs";
534
- import { cva } from "class-variance-authority";
535
- import { jsx as jsx4 } from "react/jsx-runtime";
536
- function Tabs({ density, className, orientation = "horizontal", ...props }) {
537
- return /* @__PURE__ */ jsx4(TabsPrimitive.Root, {
538
- "data-density": density,
539
- "data-slot": "tabs",
540
- orientation,
541
- className: (state) => cn2("group/tabs flex gap-2 data-[orientation=horizontal]:flex-col", typeof className === "function" ? className(state) : className),
542
- ...props
543
- });
544
- }
545
- var tabsListVariants = cva("group/tabs-list inline-flex w-fit items-center justify-center rounded-sm p-px text-muted-foreground group-data-[orientation=horizontal]/tabs:h-control group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col data-[variant=line]:rounded-none", {
546
- variants: {
547
- variant: {
548
- default: "bg-muted",
549
- line: "gap-1 bg-transparent"
550
- }
551
- },
552
- defaultVariants: {
553
- variant: "default"
554
- }
555
- });
556
- function TabsList({ density, className, variant = "default", ...props }) {
557
- return /* @__PURE__ */ jsx4(TabsPrimitive.List, {
558
- "data-density": density,
559
- "data-slot": "tabs-list",
560
- "data-variant": variant,
561
- className: (state) => cn2(tabsListVariants({ variant }), typeof className === "function" ? className(state) : className),
562
- ...props
563
- });
564
- }
565
- function TabsTrigger({ density, className, ...props }) {
566
- return /* @__PURE__ */ jsx4(TabsPrimitive.Tab, {
567
- "data-density": density,
568
- "data-slot": "tabs-trigger",
569
- className: (state) => cn2("relative inline-flex h-full flex-1 items-center justify-center gap-control-gap rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap text-foreground/60 transition-colors group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start hover:text-foreground focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pe-1 has-data-[icon=inline-start]:ps-1 aria-disabled:pointer-events-none aria-disabled:opacity-50 group-data-[variant=default]/tabs-list:data-active:shadow-sm group-data-[variant=line]/tabs-list:data-active:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", "group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-active:bg-transparent", "data-active:bg-background data-active:text-foreground", "after:absolute after:bg-foreground after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-5px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-end-1 group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-active:after:opacity-100", typeof className === "function" ? className(state) : className),
570
- ...props
571
- });
572
- }
573
- function TabsContent({ density, className, ...props }) {
574
- return /* @__PURE__ */ jsx4(TabsPrimitive.Panel, {
575
- "data-density": density,
576
- "data-slot": "tabs-content",
577
- className: (state) => cn2("flex-1 text-sm outline-none", typeof className === "function" ? className(state) : className),
578
- ...props
579
- });
580
- }
581
- // src/components/DragDropProvider.tsx
582
- import { useCallback, useEffect, useRef, useState } from "react";
583
- import { flushSync } from "react-dom";
584
-
585
- // src/drag-drop/DragDropContext.ts
586
- import { createContext } from "react";
587
- var DragDropContext = createContext(null);
588
-
589
- // src/components/DragDropPreview.tsx
590
- import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
591
- function DragDropPreview({ labels, maxItems = 5 }) {
592
- const limit = Math.max(1, Math.floor(maxItems));
593
- return /* @__PURE__ */ jsxs3("div", {
594
- "data-slot": "drag-drop-preview",
595
- className: "flex w-max max-w-64 flex-col items-start gap-1",
596
- children: [
597
- labels.slice(0, limit).map((label, index) => /* @__PURE__ */ jsx5(Badge2, {
598
- variant: "secondary",
599
- density: "compact",
600
- children: /* @__PURE__ */ jsx5("span", {
601
- className: "max-w-60 truncate",
602
- children: label
603
- })
604
- }, `${index}:${label}`)),
605
- labels.length > limit && /* @__PURE__ */ jsxs3(Badge2, {
606
- variant: "secondary",
607
- density: "compact",
608
- children: [
609
- "+",
610
- labels.length - limit,
611
- " more…"
612
- ]
613
- })
614
- ]
615
- });
616
- }
617
-
618
- // src/components/DragDropProvider.tsx
619
- import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
620
- function DragDropProvider({ children, maxPreviewItems = 5 }) {
621
- const [active, setActive] = useState(null);
622
- const [over, setOver] = useState(null);
623
- const preview = useRef(null);
624
- const end = useCallback(() => {
625
- setActive(null);
626
- setOver(null);
627
- }, []);
628
- useEffect(() => {
629
- window.addEventListener("dragend", end);
630
- window.addEventListener("drop", end);
631
- return () => {
632
- window.removeEventListener("dragend", end);
633
- window.removeEventListener("drop", end);
634
- };
635
- }, [end]);
636
- const start = (event, item, effect) => {
637
- event.dataTransfer.effectAllowed = effect;
638
- event.dataTransfer.setData(item.type, JSON.stringify(item.data) ?? "null");
639
- event.dataTransfer.setData("text/plain", item.labels.join(`
640
- `));
641
- flushSync(() => {
642
- setActive(item);
643
- setOver(null);
644
- });
645
- if (preview.current)
646
- event.dataTransfer.setDragImage(preview.current, 12, 12);
647
- };
648
- const enter = (next) => setOver((current) => current?.id === next.id && current.type === next.type && current.isAlt === next.isAlt && current.effect === next.effect ? current : next);
649
- const leave = (id) => setOver((current) => current?.id === id ? null : current);
650
- return /* @__PURE__ */ jsxs4(DragDropContext, {
651
- value: { active, over, start, end, enter, leave },
652
- children: [
653
- children,
654
- /* @__PURE__ */ jsx6("div", {
655
- ref: preview,
656
- "aria-hidden": "true",
657
- className: "pointer-events-none fixed -left-[10000px] top-0 w-max",
658
- children: /* @__PURE__ */ jsx6(DragDropPreview, {
659
- labels: active?.labels ?? [],
660
- maxItems: maxPreviewItems
661
- })
662
- }),
663
- /* @__PURE__ */ jsx6("span", {
664
- role: "status",
665
- "aria-label": "Drag status",
666
- className: "sr-only",
667
- children: active && `${active.labels.length} ${active.labels.length === 1 ? "item" : "items"} being dragged`
668
- })
669
- ]
670
- });
671
- }
672
- // src/components/DragSource.tsx
673
- import { useRender as useRender2 } from "@base-ui/react/use-render";
674
- import { mergeProps as mergeProps2 } from "@base-ui/react/merge-props";
675
-
676
- // src/hooks/useDragSource.ts
677
- import { useId } from "react";
678
-
679
- // src/hooks/useDragDrop.ts
680
- import { useContext } from "react";
681
- function useDragDrop() {
682
- const context = useContext(DragDropContext);
683
- if (!context)
684
- throw new Error("Drag and drop requires DragDropProvider.");
685
- return context;
686
- }
687
-
688
- // src/hooks/useDragSource.ts
689
- function useDragSource({
690
- type,
691
- data,
692
- labels,
693
- effectAllowed = "copyMove",
694
- disabled = false
695
- }) {
696
- const { active, start, end } = useDragDrop();
697
- const sourceId = useId();
698
- return {
699
- isDragging: active?.sourceId === sourceId,
700
- props: {
701
- draggable: !disabled,
702
- onDragStart: (event) => {
703
- if (event.defaultPrevented)
704
- return;
705
- event.stopPropagation();
706
- if (disabled || labels.length === 0) {
707
- event.preventDefault();
708
- return;
709
- }
710
- start(event, { sourceId, type, data, labels }, effectAllowed);
711
- },
712
- onDragEnd: end
713
- }
714
- };
715
- }
716
-
717
- // src/components/DragSource.tsx
718
- function DragSource({
719
- type,
720
- data,
721
- labels,
722
- effectAllowed,
723
- disabled,
724
- render,
725
- ...props
726
- }) {
727
- const source = useDragSource({ type, data, labels, effectAllowed, disabled });
728
- return useRender2({
729
- defaultTagName: "div",
730
- render,
731
- props: mergeProps2(props, source.props),
732
- state: { slot: "drag-source", dragging: source.isDragging }
733
- });
734
- }
735
- // src/components/DropTarget.tsx
736
- import { useRender as useRender3 } from "@base-ui/react/use-render";
737
- import { mergeProps as mergeProps3 } from "@base-ui/react/merge-props";
738
-
739
- // src/hooks/useDropTarget.ts
740
- import { useId as useId2, useState as useState2 } from "react";
741
- function useDropTarget({ accept, canDrop, getDropEffect, onDrop }) {
742
- const { active, over, enter, leave, end } = useDragDrop();
743
- const id = useId2();
744
- const [feedback, setFeedback] = useState2(null);
745
- return {
746
- feedback,
747
- type: over?.id === id ? over.type : null,
748
- isOver: over?.id === id,
749
- isAlt: over?.id === id && over.isAlt,
750
- effect: over?.id === id ? over.effect : "none",
751
- props: {
752
- onDragOver: (event) => {
753
- const type = accept.find((type) => event.dataTransfer.types.includes(type));
754
- if (!type)
755
- return;
756
- event.stopPropagation();
757
- const item = active?.type === type ? active : null;
758
- const effect = item && canDrop && !canDrop(item) ? "none" : getDropEffect?.(item, event) ?? "move";
759
- event.dataTransfer.dropEffect = effect;
760
- if (effect === "none") {
761
- leave(id);
762
- return;
763
- }
764
- event.preventDefault();
765
- setFeedback((current) => current?.type === type && current.isAlt === event.altKey && current.effect === effect ? current : { type, isAlt: event.altKey, effect });
766
- enter({ id, type, isAlt: event.altKey, effect });
767
- },
768
- onDragLeave: (event) => {
769
- if (!(event.relatedTarget instanceof Node) || !event.currentTarget.contains(event.relatedTarget))
770
- leave(id);
771
- },
772
- onDrop: (event) => {
773
- const type = accept.find((type) => event.dataTransfer.types.includes(type));
774
- if (!type)
775
- return;
776
- event.stopPropagation();
777
- event.preventDefault();
778
- const raw = event.dataTransfer.getData(type);
779
- let data;
780
- try {
781
- data = JSON.parse(raw);
782
- } catch {
783
- data = raw;
784
- }
785
- const item = { type, data, labels: active?.labels ?? [] };
786
- leave(id);
787
- end();
788
- if (!canDrop || canDrop(item))
789
- onDrop(item, event);
790
- }
791
- }
792
- };
793
- }
794
-
795
- // src/components/DropTarget.tsx
796
- function DropTarget({
797
- accept,
798
- canDrop,
799
- getDropEffect,
800
- onDrop,
801
- render,
802
- ...props
803
- }) {
804
- const target = useDropTarget({ accept, canDrop, getDropEffect, onDrop });
805
- return useRender3({
806
- defaultTagName: "div",
807
- render,
808
- props: mergeProps3(props, target.props),
809
- state: { slot: "drop-target", over: target.isOver, effect: target.effect }
810
- });
811
- }
812
575
  // src/components/EmptyState.tsx
813
- import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
576
+ import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
814
577
  function EmptyState({ title, description, children }) {
815
- return /* @__PURE__ */ jsxs5(Empty2, {
578
+ return /* @__PURE__ */ jsxs3(Empty2, {
816
579
  children: [
817
- /* @__PURE__ */ jsxs5(EmptyHeader2, {
580
+ /* @__PURE__ */ jsxs3(EmptyHeader2, {
818
581
  children: [
819
- /* @__PURE__ */ jsx7(EmptyTitle2, {
582
+ /* @__PURE__ */ jsx4(EmptyTitle2, {
820
583
  children: title
821
584
  }),
822
- /* @__PURE__ */ jsx7(EmptyDescription2, {
585
+ /* @__PURE__ */ jsx4(EmptyDescription2, {
823
586
  children: description
824
587
  })
825
588
  ]
826
589
  }),
827
- children && /* @__PURE__ */ jsx7(EmptyContent2, {
590
+ children && /* @__PURE__ */ jsx4(EmptyContent2, {
828
591
  children
829
592
  })
830
593
  ]
831
594
  });
832
595
  }
833
596
  // src/components/PageMessage.tsx
834
- import { useId as useId3 } from "react";
835
- import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
597
+ import { useId } from "react";
598
+ import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
836
599
  function PageMessage({ title, description, children }) {
837
- const titleId = useId3();
838
- const descriptionId = useId3();
839
- return /* @__PURE__ */ jsx8("main", {
600
+ const titleId = useId();
601
+ const descriptionId = useId();
602
+ return /* @__PURE__ */ jsx5("main", {
840
603
  "aria-labelledby": titleId,
841
604
  "aria-describedby": description == null ? undefined : descriptionId,
842
605
  className: "grid min-h-dvh w-full place-items-center bg-background text-foreground",
843
- children: /* @__PURE__ */ jsxs6(Empty2, {
606
+ children: /* @__PURE__ */ jsxs4(Empty2, {
844
607
  children: [
845
- /* @__PURE__ */ jsxs6(EmptyHeader2, {
608
+ /* @__PURE__ */ jsxs4(EmptyHeader2, {
846
609
  children: [
847
- /* @__PURE__ */ jsx8(EmptyTitle2, {
848
- children: /* @__PURE__ */ jsx8("h1", {
610
+ /* @__PURE__ */ jsx5(EmptyTitle2, {
611
+ children: /* @__PURE__ */ jsx5("h1", {
849
612
  id: titleId,
850
613
  children: title
851
614
  })
852
615
  }),
853
- description != null && /* @__PURE__ */ jsx8(EmptyDescription2, {
616
+ description != null && /* @__PURE__ */ jsx5(EmptyDescription2, {
854
617
  id: descriptionId,
855
618
  children: description
856
619
  })
857
620
  ]
858
621
  }),
859
- children != null && /* @__PURE__ */ jsx8(EmptyContent2, {
622
+ children != null && /* @__PURE__ */ jsx5(EmptyContent2, {
860
623
  children
861
624
  })
862
625
  ]
@@ -864,9 +627,9 @@ function PageMessage({ title, description, children }) {
864
627
  });
865
628
  }
866
629
  // src/components/JsonViewer.tsx
867
- import { jsx as jsx9 } from "react/jsx-runtime";
630
+ import { jsx as jsx6 } from "react/jsx-runtime";
868
631
  function JsonViewer({ value, label = "JSON", rows = 12 }) {
869
- return /* @__PURE__ */ jsx9(Textarea2, {
632
+ return /* @__PURE__ */ jsx6(Textarea2, {
870
633
  readOnly: true,
871
634
  rows,
872
635
  "aria-label": label,
@@ -876,31 +639,37 @@ function JsonViewer({ value, label = "JSON", rows = 12 }) {
876
639
  // src/components/AlertDialog.tsx
877
640
  import { AlertDialog as AlertDialogPrimitive } from "@base-ui/react/alert-dialog";
878
641
  import { useDirection as useDirection3 } from "@base-ui/react/direction-provider";
879
- import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
642
+ import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
880
643
  "use client";
881
644
  function AlertDialog({ ...props }) {
882
- return /* @__PURE__ */ jsx10(AlertDialogPrimitive.Root, {
645
+ return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Root, {
883
646
  "data-slot": "alert-dialog",
884
647
  ...props
885
648
  });
886
649
  }
887
650
  function AlertDialogTrigger({ ...props }) {
888
- return /* @__PURE__ */ jsx10(AlertDialogPrimitive.Trigger, {
651
+ return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Trigger, {
889
652
  "data-slot": "alert-dialog-trigger",
890
653
  ...props
891
654
  });
892
655
  }
893
- function AlertDialogPortal({ container, ...props }) {
656
+ function AlertDialogPortal({ container, ref, children, ...props }) {
894
657
  const resolvedContainer = usePortalContainer2(container);
895
- return /* @__PURE__ */ jsx10(AlertDialogPrimitive.Portal, {
658
+ const portal = usePortalNode(ref);
659
+ return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Portal, {
896
660
  "data-slot": "alert-dialog-portal",
897
661
  container: resolvedContainer,
898
- ...props
662
+ ref: portal.ref,
663
+ ...props,
664
+ children: /* @__PURE__ */ jsx7(PortalProvider2, {
665
+ container: portal.node,
666
+ children
667
+ })
899
668
  });
900
669
  }
901
670
  function AlertDialogOverlay({ density, className, ...props }) {
902
671
  const resolvedDensity = useDensity(density);
903
- return /* @__PURE__ */ jsx10(AlertDialogPrimitive.Backdrop, {
672
+ return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Backdrop, {
904
673
  "data-density": resolvedDensity,
905
674
  "data-slot": "alert-dialog-overlay",
906
675
  className: (state) => cn2("fixed inset-0 isolate bg-backdrop 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),
@@ -910,13 +679,14 @@ function AlertDialogOverlay({ density, className, ...props }) {
910
679
  function AlertDialogContent({ density, className, size = "default", ...props }) {
911
680
  const resolvedDensity = useDensity(density);
912
681
  const direction = useDirection3();
913
- return /* @__PURE__ */ jsxs7(AlertDialogPortal, {
682
+ return /* @__PURE__ */ jsxs5(AlertDialogPortal, {
914
683
  children: [
915
- /* @__PURE__ */ jsx10(AlertDialogOverlay, {}),
916
- /* @__PURE__ */ jsx10(AlertDialogPrimitive.Popup, {
684
+ /* @__PURE__ */ jsx7(AlertDialogOverlay, {}),
685
+ /* @__PURE__ */ jsx7(AlertDialogPrimitive.Popup, {
917
686
  dir: direction,
918
687
  "data-density": resolvedDensity,
919
688
  "data-slot": "alert-dialog-content",
689
+ "data-scroll": "none",
920
690
  "data-size": size,
921
691
  className: (state) => cn2("group/alert-dialog-content fixed top-1/2 left-1/2 grid w-full -translate-x-1/2 -translate-y-1/2 gap-panel rounded-md bg-popover p-panel text-popover-foreground border border-frame-edge shadow-frame duration-120 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-sm 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),
922
692
  ...props
@@ -925,7 +695,7 @@ function AlertDialogContent({ density, className, size = "default", ...props })
925
695
  });
926
696
  }
927
697
  function AlertDialogHeader({ density, className, ...props }) {
928
- return /* @__PURE__ */ jsx10("div", {
698
+ return /* @__PURE__ */ jsx7("div", {
929
699
  "data-density": density,
930
700
  "data-slot": "alert-dialog-header",
931
701
  className: cn2("grid grid-rows-[auto_1fr] place-items-center gap-control-gap text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-4 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-start sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]", className),
@@ -933,7 +703,7 @@ function AlertDialogHeader({ density, className, ...props }) {
933
703
  });
934
704
  }
935
705
  function AlertDialogFooter({ density, className, ...props }) {
936
- return /* @__PURE__ */ jsx10("div", {
706
+ return /* @__PURE__ */ jsx7("div", {
937
707
  "data-density": density,
938
708
  "data-slot": "alert-dialog-footer",
939
709
  className: cn2("-mx-panel -mb-panel flex flex-col-reverse gap-2 rounded-b-md border-t bg-muted/50 p-panel group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end", className),
@@ -941,7 +711,7 @@ function AlertDialogFooter({ density, className, ...props }) {
941
711
  });
942
712
  }
943
713
  function AlertDialogMedia({ density, className, ...props }) {
944
- return /* @__PURE__ */ jsx10("div", {
714
+ return /* @__PURE__ */ jsx7("div", {
945
715
  "data-density": density,
946
716
  "data-slot": "alert-dialog-media",
947
717
  className: cn2("mb-2 inline-flex size-10 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-control-xs", className),
@@ -949,7 +719,7 @@ function AlertDialogMedia({ density, className, ...props }) {
949
719
  });
950
720
  }
951
721
  function AlertDialogTitle({ density, className, ...props }) {
952
- return /* @__PURE__ */ jsx10(AlertDialogPrimitive.Title, {
722
+ return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Title, {
953
723
  "data-density": density,
954
724
  "data-slot": "alert-dialog-title",
955
725
  className: (state) => cn2("text-base font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2", typeof className === "function" ? className(state) : className),
@@ -957,7 +727,7 @@ function AlertDialogTitle({ density, className, ...props }) {
957
727
  });
958
728
  }
959
729
  function AlertDialogDescription({ density, className, ...props }) {
960
- return /* @__PURE__ */ jsx10(AlertDialogPrimitive.Description, {
730
+ return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Description, {
961
731
  "data-density": density,
962
732
  "data-slot": "alert-dialog-description",
963
733
  className: (state) => cn2("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", typeof className === "function" ? className(state) : className),
@@ -965,7 +735,7 @@ function AlertDialogDescription({ density, className, ...props }) {
965
735
  });
966
736
  }
967
737
  function AlertDialogAction({ density, className, ...props }) {
968
- return /* @__PURE__ */ jsx10(Button2, {
738
+ return /* @__PURE__ */ jsx7(Button2, {
969
739
  "data-density": density,
970
740
  "data-slot": "alert-dialog-action",
971
741
  className,
@@ -979,11 +749,11 @@ function AlertDialogCancel({
979
749
  size = "default",
980
750
  ...props
981
751
  }) {
982
- return /* @__PURE__ */ jsx10(AlertDialogPrimitive.Close, {
752
+ return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Close, {
983
753
  "data-density": density,
984
754
  "data-slot": "alert-dialog-cancel",
985
755
  className,
986
- render: /* @__PURE__ */ jsx10(Button2, {
756
+ render: /* @__PURE__ */ jsx7(Button2, {
987
757
  variant,
988
758
  size
989
759
  }),
@@ -994,11 +764,11 @@ function AlertDialogCancel({
994
764
  import { Select as SelectPrimitive } from "@base-ui/react/select";
995
765
  import { useDirection as useDirection4 } from "@base-ui/react/direction-provider";
996
766
  import { ChevronDownIcon as ChevronDownIcon3, CheckIcon as CheckIcon2, ChevronUpIcon as ChevronUpIcon2 } from "lucide-react";
997
- import { jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
767
+ import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
998
768
  "use client";
999
769
  var Select = SelectPrimitive.Root;
1000
770
  function SelectGroup({ density, className, ...props }) {
1001
- return /* @__PURE__ */ jsx11(SelectPrimitive.Group, {
771
+ return /* @__PURE__ */ jsx8(SelectPrimitive.Group, {
1002
772
  "data-density": density,
1003
773
  "data-slot": "select-group",
1004
774
  className: (state) => cn2("scroll-my-1 p-1", typeof className === "function" ? className(state) : className),
@@ -1006,7 +776,7 @@ function SelectGroup({ density, className, ...props }) {
1006
776
  });
1007
777
  }
1008
778
  function SelectValue({ density, className, ...props }) {
1009
- return /* @__PURE__ */ jsx11(SelectPrimitive.Value, {
779
+ return /* @__PURE__ */ jsx8(SelectPrimitive.Value, {
1010
780
  "data-density": density,
1011
781
  "data-slot": "select-value",
1012
782
  className: (state) => cn2("flex flex-1 text-start", typeof className === "function" ? className(state) : className),
@@ -1014,7 +784,7 @@ function SelectValue({ density, className, ...props }) {
1014
784
  });
1015
785
  }
1016
786
  function SelectTrigger({ density, className, size = "default", children, ...props }) {
1017
- return /* @__PURE__ */ jsxs8(SelectPrimitive.Trigger, {
787
+ return /* @__PURE__ */ jsxs6(SelectPrimitive.Trigger, {
1018
788
  "data-density": density,
1019
789
  "data-slot": "select-trigger",
1020
790
  "data-size": size,
@@ -1022,8 +792,8 @@ function SelectTrigger({ density, className, size = "default", children, ...prop
1022
792
  ...props,
1023
793
  children: [
1024
794
  children,
1025
- /* @__PURE__ */ jsx11(SelectPrimitive.Icon, {
1026
- render: /* @__PURE__ */ jsx11(ChevronDownIcon3, {
795
+ /* @__PURE__ */ jsx8(SelectPrimitive.Icon, {
796
+ render: /* @__PURE__ */ jsx8(ChevronDownIcon3, {
1027
797
  className: "pointer-events-none size-4 text-muted-foreground"
1028
798
  })
1029
799
  })
@@ -1044,35 +814,40 @@ function SelectContent({
1044
814
  const resolvedDensity = useDensity(density);
1045
815
  const direction = useDirection4();
1046
816
  const container = usePortalContainer2();
1047
- return /* @__PURE__ */ jsx11(SelectPrimitive.Portal, {
817
+ const portal = usePortalNode();
818
+ return /* @__PURE__ */ jsx8(SelectPrimitive.Portal, {
1048
819
  container,
1049
- children: /* @__PURE__ */ jsx11(SelectPrimitive.Positioner, {
1050
- side,
1051
- sideOffset,
1052
- align,
1053
- alignOffset,
1054
- alignItemWithTrigger,
1055
- className: "isolate ",
1056
- children: /* @__PURE__ */ jsxs8(SelectPrimitive.Popup, {
1057
- dir: direction,
1058
- "data-density": resolvedDensity,
1059
- "data-slot": "select-content",
1060
- "data-align-trigger": alignItemWithTrigger,
1061
- className: (state) => cn2("relative isolate max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md bg-popover text-popover-foreground border border-frame-edge shadow-frame duration-120 data-[align-trigger=true]:animate-none data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 motion-reduce:animate-none", typeof className === "function" ? className(state) : className),
1062
- ...props,
1063
- children: [
1064
- /* @__PURE__ */ jsx11(SelectScrollUpButton, {}),
1065
- /* @__PURE__ */ jsx11(SelectPrimitive.List, {
1066
- children
1067
- }),
1068
- /* @__PURE__ */ jsx11(SelectScrollDownButton, {})
1069
- ]
820
+ ref: portal.ref,
821
+ children: /* @__PURE__ */ jsx8(PortalProvider2, {
822
+ container: portal.node,
823
+ children: /* @__PURE__ */ jsx8(SelectPrimitive.Positioner, {
824
+ side,
825
+ sideOffset,
826
+ align,
827
+ alignOffset,
828
+ alignItemWithTrigger,
829
+ className: "isolate ",
830
+ children: /* @__PURE__ */ jsxs6(SelectPrimitive.Popup, {
831
+ dir: direction,
832
+ "data-density": resolvedDensity,
833
+ "data-slot": "select-content",
834
+ "data-align-trigger": alignItemWithTrigger,
835
+ className: (state) => cn2("relative isolate max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-md bg-popover text-popover-foreground border border-frame-edge shadow-frame duration-120 data-[align-trigger=true]:animate-none data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 motion-reduce:animate-none", typeof className === "function" ? className(state) : className),
836
+ ...props,
837
+ children: [
838
+ /* @__PURE__ */ jsx8(SelectScrollUpButton, {}),
839
+ /* @__PURE__ */ jsx8(SelectPrimitive.List, {
840
+ children
841
+ }),
842
+ /* @__PURE__ */ jsx8(SelectScrollDownButton, {})
843
+ ]
844
+ })
1070
845
  })
1071
846
  })
1072
847
  });
1073
848
  }
1074
849
  function SelectLabel({ density, className, ...props }) {
1075
- return /* @__PURE__ */ jsx11(SelectPrimitive.GroupLabel, {
850
+ return /* @__PURE__ */ jsx8(SelectPrimitive.GroupLabel, {
1076
851
  "data-density": density,
1077
852
  "data-slot": "select-label",
1078
853
  className: (state) => cn2("px-1.5 py-1 text-xs text-muted-foreground", typeof className === "function" ? className(state) : className),
@@ -1080,21 +855,21 @@ function SelectLabel({ density, className, ...props }) {
1080
855
  });
1081
856
  }
1082
857
  function SelectItem({ density, className, children, ...props }) {
1083
- return /* @__PURE__ */ jsxs8(SelectPrimitive.Item, {
858
+ return /* @__PURE__ */ jsxs6(SelectPrimitive.Item, {
1084
859
  "data-density": density,
1085
860
  "data-slot": "select-item",
1086
861
  className: (state) => cn2("relative flex w-full cursor-default items-center gap-control-gap rounded-md py-1 pe-8 ps-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", typeof className === "function" ? className(state) : className),
1087
862
  ...props,
1088
863
  children: [
1089
- /* @__PURE__ */ jsx11(SelectPrimitive.ItemText, {
864
+ /* @__PURE__ */ jsx8(SelectPrimitive.ItemText, {
1090
865
  className: "flex flex-1 shrink-0 gap-2 whitespace-nowrap",
1091
866
  children
1092
867
  }),
1093
- /* @__PURE__ */ jsx11(SelectPrimitive.ItemIndicator, {
1094
- render: /* @__PURE__ */ jsx11("span", {
868
+ /* @__PURE__ */ jsx8(SelectPrimitive.ItemIndicator, {
869
+ render: /* @__PURE__ */ jsx8("span", {
1095
870
  className: "pointer-events-none absolute end-2 flex size-4 items-center justify-center"
1096
871
  }),
1097
- children: /* @__PURE__ */ jsx11(CheckIcon2, {
872
+ children: /* @__PURE__ */ jsx8(CheckIcon2, {
1098
873
  className: "pointer-events-none"
1099
874
  })
1100
875
  })
@@ -1102,7 +877,7 @@ function SelectItem({ density, className, children, ...props }) {
1102
877
  });
1103
878
  }
1104
879
  function SelectSeparator({ density, className, ...props }) {
1105
- return /* @__PURE__ */ jsx11(SelectPrimitive.Separator, {
880
+ return /* @__PURE__ */ jsx8(SelectPrimitive.Separator, {
1106
881
  "data-density": density,
1107
882
  "data-slot": "select-separator",
1108
883
  className: (state) => cn2("pointer-events-none -mx-1 my-1 h-px bg-border", typeof className === "function" ? className(state) : className),
@@ -1110,40 +885,40 @@ function SelectSeparator({ density, className, ...props }) {
1110
885
  });
1111
886
  }
1112
887
  function SelectScrollUpButton({ density, className, ...props }) {
1113
- return /* @__PURE__ */ jsx11(SelectPrimitive.ScrollUpArrow, {
888
+ return /* @__PURE__ */ jsx8(SelectPrimitive.ScrollUpArrow, {
1114
889
  "data-density": density,
1115
890
  "data-slot": "select-scroll-up-button",
1116
891
  className: (state) => cn2("top-0 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4", typeof className === "function" ? className(state) : className),
1117
892
  ...props,
1118
- children: /* @__PURE__ */ jsx11(ChevronUpIcon2, {})
893
+ children: /* @__PURE__ */ jsx8(ChevronUpIcon2, {})
1119
894
  });
1120
895
  }
1121
896
  function SelectScrollDownButton({ density, className, ...props }) {
1122
- return /* @__PURE__ */ jsx11(SelectPrimitive.ScrollDownArrow, {
897
+ return /* @__PURE__ */ jsx8(SelectPrimitive.ScrollDownArrow, {
1123
898
  "data-density": density,
1124
899
  "data-slot": "select-scroll-down-button",
1125
900
  className: (state) => cn2("bottom-0 flex w-full cursor-default items-center justify-center bg-popover py-1 [&_svg:not([class*='size-'])]:size-4", typeof className === "function" ? className(state) : className),
1126
901
  ...props,
1127
- children: /* @__PURE__ */ jsx11(ChevronDownIcon3, {})
902
+ children: /* @__PURE__ */ jsx8(ChevronDownIcon3, {})
1128
903
  });
1129
904
  }
1130
905
  // src/components/DensityProvider.tsx
1131
- import { mergeProps as mergeProps4 } from "@base-ui/react/merge-props";
1132
- import { useRender as useRender4 } from "@base-ui/react/use-render";
1133
- import { jsx as jsx12 } from "react/jsx-runtime";
906
+ import { mergeProps as mergeProps2 } from "@base-ui/react/merge-props";
907
+ import { useRender as useRender2 } from "@base-ui/react/use-render";
908
+ import { jsx as jsx9 } from "react/jsx-runtime";
1134
909
  function DensityProvider({
1135
910
  density = "comfortable",
1136
911
  className,
1137
912
  render,
1138
913
  ...props
1139
914
  }) {
1140
- const element = useRender4({
915
+ const element = useRender2({
1141
916
  defaultTagName: "div",
1142
- props: mergeProps4({ className: cn2("font-sans text-base leading-(--ag-leading)", className) }, props),
917
+ props: mergeProps2({ className: cn2("font-sans text-base leading-(--ag-leading)", className) }, props),
1143
918
  render,
1144
919
  state: { slot: "density-provider", density }
1145
920
  });
1146
- return /* @__PURE__ */ jsx12(DensityContext.Provider, {
921
+ return /* @__PURE__ */ jsx9(DensityContext.Provider, {
1147
922
  value: density,
1148
923
  children: element
1149
924
  });
@@ -1151,7 +926,137 @@ function DensityProvider({
1151
926
  // src/components/ThemeProvider.tsx
1152
927
  import { useMemo } from "react";
1153
928
  import { useIsomorphicLayoutEffect, useTernaryDarkMode } from "usehooks-ts";
1154
- import { jsx as jsx13 } from "react/jsx-runtime";
929
+
930
+ // src/components/ScrollGuard.tsx
931
+ import { useEffect } from "react";
932
+
933
+ // src/utils/observeScrollGuards.ts
934
+ function throwViolation(error) {
935
+ throw error;
936
+ }
937
+ function getViolation(element, view) {
938
+ if (!element.getClientRects().length)
939
+ return;
940
+ const style = view.getComputedStyle(element);
941
+ if (style.visibility !== "visible")
942
+ return;
943
+ const axes = [];
944
+ if (["auto", "scroll"].includes(style.overflowX) && element.scrollWidth > element.clientWidth) {
945
+ axes.push(`horizontal: ${element.scrollWidth}px > ${element.clientWidth}px`);
946
+ }
947
+ if (["auto", "scroll"].includes(style.overflowY) && element.scrollHeight > element.clientHeight) {
948
+ axes.push(`vertical: ${element.scrollHeight}px > ${element.clientHeight}px`);
949
+ }
950
+ if (!axes.length)
951
+ return;
952
+ const slot = element.getAttribute("data-slot");
953
+ const identity = element.id ? ` id="${element.id}"` : slot ? ` data-slot="${slot}"` : "";
954
+ return `<${element.localName}${identity}> (${axes.join(", ")})`;
955
+ }
956
+ function observeScrollGuards(ownerDocument, reportViolation = throwViolation) {
957
+ const view = ownerDocument.defaultView;
958
+ if (!view)
959
+ return () => {};
960
+ let frame;
961
+ let needsRefresh = true;
962
+ let guarded = [];
963
+ const observed = new Set;
964
+ const reported = new WeakSet;
965
+ const schedule = () => {
966
+ frame ??= view.requestAnimationFrame(check);
967
+ };
968
+ const resizeObserver = new view.ResizeObserver(schedule);
969
+ const refresh = () => {
970
+ guarded = [...ownerDocument.querySelectorAll('[data-scroll="none"]')];
971
+ const targets = new Set(guarded.flatMap((element) => [element, ...element.querySelectorAll("*")]));
972
+ for (const element of observed) {
973
+ if (!targets.has(element)) {
974
+ resizeObserver.unobserve(element);
975
+ observed.delete(element);
976
+ }
977
+ }
978
+ for (const element of targets) {
979
+ if (!observed.has(element)) {
980
+ resizeObserver.observe(element);
981
+ observed.add(element);
982
+ }
983
+ }
984
+ needsRefresh = false;
985
+ };
986
+ const check = () => {
987
+ frame = undefined;
988
+ if (needsRefresh)
989
+ refresh();
990
+ const violations = [];
991
+ for (const element of guarded) {
992
+ const violation = getViolation(element, view);
993
+ if (!violation) {
994
+ reported.delete(element);
995
+ } else if (!reported.has(element)) {
996
+ reported.add(element);
997
+ violations.push(violation);
998
+ }
999
+ }
1000
+ if (violations.length) {
1001
+ reportViolation(new Error(`[shadcn] Scrolling is forbidden by data-scroll="none": ${violations.join("; ")}. ` + "Move scrolling content into a nested ScrollArea or another explicit scroll viewport."));
1002
+ }
1003
+ };
1004
+ const mutations = new view.MutationObserver((records) => {
1005
+ needsRefresh ||= records.some((record) => record.type === "childList" || record.attributeName === "data-scroll");
1006
+ schedule();
1007
+ });
1008
+ mutations.observe(ownerDocument.documentElement, {
1009
+ subtree: true,
1010
+ childList: true,
1011
+ characterData: true,
1012
+ attributes: true
1013
+ });
1014
+ view.addEventListener("resize", schedule);
1015
+ ownerDocument.addEventListener("load", schedule, true);
1016
+ ownerDocument.addEventListener("transitionend", schedule, true);
1017
+ ownerDocument.addEventListener("animationend", schedule, true);
1018
+ ownerDocument.fonts.addEventListener("loadingdone", schedule);
1019
+ schedule();
1020
+ return () => {
1021
+ mutations.disconnect();
1022
+ resizeObserver.disconnect();
1023
+ if (frame !== undefined)
1024
+ view.cancelAnimationFrame(frame);
1025
+ view.removeEventListener("resize", schedule);
1026
+ ownerDocument.removeEventListener("load", schedule, true);
1027
+ ownerDocument.removeEventListener("transitionend", schedule, true);
1028
+ ownerDocument.removeEventListener("animationend", schedule, true);
1029
+ ownerDocument.fonts.removeEventListener("loadingdone", schedule);
1030
+ };
1031
+ }
1032
+
1033
+ // src/components/ScrollGuard.tsx
1034
+ "use client";
1035
+ var registrations = new WeakMap;
1036
+ function ScrollGuard({ ownerDocument }) {
1037
+ useEffect(() => {
1038
+ if (process.env.NODE_ENV === "production")
1039
+ return;
1040
+ const target = ownerDocument ?? document;
1041
+ let registration = registrations.get(target);
1042
+ if (!registration) {
1043
+ registration = { users: 0, disconnect: observeScrollGuards(target) };
1044
+ registrations.set(target, registration);
1045
+ }
1046
+ registration.users++;
1047
+ return () => {
1048
+ registration.users--;
1049
+ if (!registration.users) {
1050
+ registration.disconnect();
1051
+ registrations.delete(target);
1052
+ }
1053
+ };
1054
+ }, [ownerDocument]);
1055
+ return null;
1056
+ }
1057
+
1058
+ // src/components/ThemeProvider.tsx
1059
+ import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
1155
1060
  function StoredThemeProvider({
1156
1061
  children,
1157
1062
  defaultTheme = "system",
@@ -1162,7 +1067,7 @@ function StoredThemeProvider({
1162
1067
  defaultValue: defaultTheme,
1163
1068
  localStorageKey: storageKey
1164
1069
  });
1165
- return /* @__PURE__ */ jsx13(ThemePalette, {
1070
+ return /* @__PURE__ */ jsx10(ThemePalette, {
1166
1071
  theme: forcedTheme ?? ternaryDarkMode,
1167
1072
  resolvedTheme: forcedTheme ?? (isDarkMode ? "dark" : "light"),
1168
1073
  setTheme: setTernaryDarkMode,
@@ -1180,9 +1085,12 @@ function ThemePalette({
1180
1085
  document.documentElement.style.colorScheme = resolvedTheme;
1181
1086
  }, [resolvedTheme]);
1182
1087
  const value = useMemo(() => ({ theme, resolvedTheme, setTheme }), [theme, resolvedTheme, setTheme]);
1183
- return /* @__PURE__ */ jsx13(ThemeContext.Provider, {
1088
+ return /* @__PURE__ */ jsxs7(ThemeContext.Provider, {
1184
1089
  value,
1185
- children
1090
+ children: [
1091
+ /* @__PURE__ */ jsx10(ScrollGuard, {}),
1092
+ children
1093
+ ]
1186
1094
  });
1187
1095
  }
1188
1096
  function ControlledThemeProvider({
@@ -1193,7 +1101,7 @@ function ControlledThemeProvider({
1193
1101
  const isDark = useMediaQuery("(prefers-color-scheme: dark)");
1194
1102
  const { theme, setTheme } = controlledTheme;
1195
1103
  const resolvedTheme = forcedTheme ?? (theme === "system" ? isDark ? "dark" : "light" : theme);
1196
- return /* @__PURE__ */ jsx13(ThemePalette, {
1104
+ return /* @__PURE__ */ jsx10(ThemePalette, {
1197
1105
  theme: forcedTheme ?? theme,
1198
1106
  resolvedTheme,
1199
1107
  setTheme,
@@ -1202,23 +1110,23 @@ function ControlledThemeProvider({
1202
1110
  }
1203
1111
  function ThemeProvider(props) {
1204
1112
  if (props.controlledTheme)
1205
- return /* @__PURE__ */ jsx13(ControlledThemeProvider, {
1113
+ return /* @__PURE__ */ jsx10(ControlledThemeProvider, {
1206
1114
  ...props,
1207
1115
  controlledTheme: props.controlledTheme
1208
1116
  });
1209
- return /* @__PURE__ */ jsx13(StoredThemeProvider, {
1117
+ return /* @__PURE__ */ jsx10(StoredThemeProvider, {
1210
1118
  ...props
1211
1119
  });
1212
1120
  }
1213
1121
  // src/hooks/useComboboxAnchor.ts
1214
- import { useRef as useRef2 } from "react";
1122
+ import { useRef } from "react";
1215
1123
  function useComboboxAnchor() {
1216
- return useRef2(null);
1124
+ return useRef(null);
1217
1125
  }
1218
1126
  // src/components/AspectRatio.tsx
1219
- import { jsx as jsx14 } from "react/jsx-runtime";
1127
+ import { jsx as jsx11 } from "react/jsx-runtime";
1220
1128
  function AspectRatio({ ratio, className, style, ...props }) {
1221
- return /* @__PURE__ */ jsx14("div", {
1129
+ return /* @__PURE__ */ jsx11("div", {
1222
1130
  "data-slot": "aspect-ratio",
1223
1131
  className: cn2("relative", className),
1224
1132
  style: { aspectRatio: ratio, ...style },
@@ -1227,11 +1135,11 @@ function AspectRatio({ ratio, className, style, ...props }) {
1227
1135
  }
1228
1136
  // src/components/Breadcrumb.tsx
1229
1137
  import { ChevronRightIcon, MoreHorizontalIcon } from "lucide-react";
1230
- import { mergeProps as mergeProps5 } from "@base-ui/react/merge-props";
1231
- import { useRender as useRender5 } from "@base-ui/react/use-render";
1232
- import { jsx as jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
1138
+ import { mergeProps as mergeProps3 } from "@base-ui/react/merge-props";
1139
+ import { useRender as useRender3 } from "@base-ui/react/use-render";
1140
+ import { jsx as jsx12, jsxs as jsxs8 } from "react/jsx-runtime";
1233
1141
  function Breadcrumb({ density, className, ...props }) {
1234
- return /* @__PURE__ */ jsx15("nav", {
1142
+ return /* @__PURE__ */ jsx12("nav", {
1235
1143
  "aria-label": "breadcrumb",
1236
1144
  "data-density": density,
1237
1145
  "data-slot": "breadcrumb",
@@ -1240,7 +1148,7 @@ function Breadcrumb({ density, className, ...props }) {
1240
1148
  });
1241
1149
  }
1242
1150
  function BreadcrumbList({ density, className, ...props }) {
1243
- return /* @__PURE__ */ jsx15("ol", {
1151
+ return /* @__PURE__ */ jsx12("ol", {
1244
1152
  "data-density": density,
1245
1153
  "data-slot": "breadcrumb-list",
1246
1154
  className: cn2("flex flex-wrap items-center gap-control-gap text-sm wrap-break-word text-muted-foreground", className),
@@ -1248,7 +1156,7 @@ function BreadcrumbList({ density, className, ...props }) {
1248
1156
  });
1249
1157
  }
1250
1158
  function BreadcrumbItem({ density, className, ...props }) {
1251
- return /* @__PURE__ */ jsx15("li", {
1159
+ return /* @__PURE__ */ jsx12("li", {
1252
1160
  "data-density": density,
1253
1161
  "data-slot": "breadcrumb-item",
1254
1162
  className: cn2("inline-flex items-center gap-1", className),
@@ -1256,9 +1164,9 @@ function BreadcrumbItem({ density, className, ...props }) {
1256
1164
  });
1257
1165
  }
1258
1166
  function BreadcrumbLink({ density, className, render, ...props }) {
1259
- return useRender5({
1167
+ return useRender3({
1260
1168
  defaultTagName: "a",
1261
- props: mergeProps5({
1169
+ props: mergeProps3({
1262
1170
  className: cn2("transition-colors hover:text-foreground", className)
1263
1171
  }, props),
1264
1172
  render,
@@ -1269,7 +1177,7 @@ function BreadcrumbLink({ density, className, render, ...props }) {
1269
1177
  });
1270
1178
  }
1271
1179
  function BreadcrumbPage({ density, className, ...props }) {
1272
- return /* @__PURE__ */ jsx15("span", {
1180
+ return /* @__PURE__ */ jsx12("span", {
1273
1181
  "data-density": density,
1274
1182
  "data-slot": "breadcrumb-page",
1275
1183
  role: "link",
@@ -1280,20 +1188,20 @@ function BreadcrumbPage({ density, className, ...props }) {
1280
1188
  });
1281
1189
  }
1282
1190
  function BreadcrumbSeparator({ density, children, className, ...props }) {
1283
- return /* @__PURE__ */ jsx15("li", {
1191
+ return /* @__PURE__ */ jsx12("li", {
1284
1192
  "data-density": density,
1285
1193
  "data-slot": "breadcrumb-separator",
1286
1194
  role: "presentation",
1287
1195
  "aria-hidden": "true",
1288
1196
  className: cn2("[&>svg]:size-3.5", className),
1289
1197
  ...props,
1290
- children: children ?? /* @__PURE__ */ jsx15(ChevronRightIcon, {
1198
+ children: children ?? /* @__PURE__ */ jsx12(ChevronRightIcon, {
1291
1199
  className: "rtl:rotate-180"
1292
1200
  })
1293
1201
  });
1294
1202
  }
1295
1203
  function BreadcrumbEllipsis({ density, className, ...props }) {
1296
- return /* @__PURE__ */ jsxs9("span", {
1204
+ return /* @__PURE__ */ jsxs8("span", {
1297
1205
  "data-density": density,
1298
1206
  "data-slot": "breadcrumb-ellipsis",
1299
1207
  role: "presentation",
@@ -1301,8 +1209,8 @@ function BreadcrumbEllipsis({ density, className, ...props }) {
1301
1209
  className: cn2("flex size-5 items-center justify-center [&>svg]:size-4", className),
1302
1210
  ...props,
1303
1211
  children: [
1304
- /* @__PURE__ */ jsx15(MoreHorizontalIcon, {}),
1305
- /* @__PURE__ */ jsx15("span", {
1212
+ /* @__PURE__ */ jsx12(MoreHorizontalIcon, {}),
1213
+ /* @__PURE__ */ jsx12("span", {
1306
1214
  className: "sr-only",
1307
1215
  children: "More"
1308
1216
  })
@@ -1310,11 +1218,11 @@ function BreadcrumbEllipsis({ density, className, ...props }) {
1310
1218
  });
1311
1219
  }
1312
1220
  // src/components/ButtonGroup.tsx
1313
- import { mergeProps as mergeProps6 } from "@base-ui/react/merge-props";
1314
- import { useRender as useRender6 } from "@base-ui/react/use-render";
1315
- import { cva as cva2 } from "class-variance-authority";
1316
- import { jsx as jsx16 } from "react/jsx-runtime";
1317
- var buttonGroupVariants = cva2("flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-e-sm [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1", {
1221
+ import { mergeProps as mergeProps4 } from "@base-ui/react/merge-props";
1222
+ import { useRender as useRender4 } from "@base-ui/react/use-render";
1223
+ import { cva } from "class-variance-authority";
1224
+ import { jsx as jsx13 } from "react/jsx-runtime";
1225
+ var buttonGroupVariants = cva("flex w-fit items-stretch *:focus-visible:relative *:focus-visible:z-10 has-[>[data-slot=button-group]]:gap-2 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-e-sm [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1", {
1318
1226
  variants: {
1319
1227
  orientation: {
1320
1228
  horizontal: "*:data-slot:rounded-e-none [&>[data-slot]:not(:has(~[data-slot]))]:rounded-e-sm! [&>[data-slot]~[data-slot]]:rounded-s-none [&>[data-slot]~[data-slot]]:border-s-0",
@@ -1326,7 +1234,7 @@ var buttonGroupVariants = cva2("flex w-fit items-stretch *:focus-visible:relativ
1326
1234
  }
1327
1235
  });
1328
1236
  function ButtonGroup({ density, className, orientation, ...props }) {
1329
- return /* @__PURE__ */ jsx16("div", {
1237
+ return /* @__PURE__ */ jsx13("div", {
1330
1238
  role: "group",
1331
1239
  "data-density": density,
1332
1240
  "data-slot": "button-group",
@@ -1336,9 +1244,9 @@ function ButtonGroup({ density, className, orientation, ...props }) {
1336
1244
  });
1337
1245
  }
1338
1246
  function ButtonGroupText({ density, className, render, ...props }) {
1339
- return useRender6({
1247
+ return useRender4({
1340
1248
  defaultTagName: "div",
1341
- props: mergeProps6({
1249
+ props: mergeProps4({
1342
1250
  className: cn2("flex items-center gap-2 rounded-sm border bg-muted px-control-x text-sm font-medium [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", className)
1343
1251
  }, props),
1344
1252
  render,
@@ -1354,7 +1262,7 @@ function ButtonGroupSeparator({
1354
1262
  orientation = "vertical",
1355
1263
  ...props
1356
1264
  }) {
1357
- return /* @__PURE__ */ jsx16(Separator2, {
1265
+ return /* @__PURE__ */ jsx13(Separator2, {
1358
1266
  "data-density": density,
1359
1267
  "data-slot": "button-group-separator",
1360
1268
  orientation,
@@ -1362,61 +1270,13 @@ function ButtonGroupSeparator({
1362
1270
  ...props
1363
1271
  });
1364
1272
  }
1365
- // src/components/NativeSelect.tsx
1366
- import { ChevronDownIcon as ChevronDownIcon4 } from "lucide-react";
1367
- import { jsx as jsx17, jsxs as jsxs10 } from "react/jsx-runtime";
1368
- function NativeSelect({
1369
- density,
1370
- className,
1371
- dir,
1372
- size = "default",
1373
- ...props
1374
- }) {
1375
- return /* @__PURE__ */ jsxs10("div", {
1376
- dir,
1377
- className: cn2("group/native-select relative w-fit has-[select:disabled]:opacity-50", className),
1378
- "data-density": density,
1379
- "data-slot": "native-select-wrapper",
1380
- "data-size": size,
1381
- children: [
1382
- /* @__PURE__ */ jsx17("select", {
1383
- dir,
1384
- "data-slot": "native-select",
1385
- "data-size": size,
1386
- className: "h-control w-full min-w-0 appearance-none rounded-sm border border-input bg-secondary py-1 pe-8 ps-2.5 text-sm transition-colors outline-none select-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:cursor-not-allowed aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive data-[size=sm]:h-control-sm data-[size=sm]:rounded-sm data-[size=sm]:py-0.5",
1387
- ...props
1388
- }),
1389
- /* @__PURE__ */ jsx17(ChevronDownIcon4, {
1390
- className: "pointer-events-none absolute top-1/2 end-2.5 size-4 -translate-y-1/2 text-muted-foreground select-none",
1391
- "aria-hidden": "true",
1392
- "data-slot": "native-select-icon"
1393
- })
1394
- ]
1395
- });
1396
- }
1397
- function NativeSelectOption({ density, className, ...props }) {
1398
- return /* @__PURE__ */ jsx17("option", {
1399
- "data-density": density,
1400
- "data-slot": "native-select-option",
1401
- className: cn2("bg-[Canvas] text-[CanvasText]", className),
1402
- ...props
1403
- });
1404
- }
1405
- function NativeSelectOptGroup({ density, className, ...props }) {
1406
- return /* @__PURE__ */ jsx17("optgroup", {
1407
- "data-density": density,
1408
- "data-slot": "native-select-optgroup",
1409
- className: cn2("bg-[Canvas] text-[CanvasText]", className),
1410
- ...props
1411
- });
1412
- }
1413
1273
  // src/components/Item.tsx
1414
- import { mergeProps as mergeProps7 } from "@base-ui/react/merge-props";
1415
- import { useRender as useRender7 } from "@base-ui/react/use-render";
1416
- import { cva as cva3 } from "class-variance-authority";
1417
- import { jsx as jsx18 } from "react/jsx-runtime";
1274
+ import { mergeProps as mergeProps5 } from "@base-ui/react/merge-props";
1275
+ import { useRender as useRender5 } from "@base-ui/react/use-render";
1276
+ import { cva as cva2 } from "class-variance-authority";
1277
+ import { jsx as jsx14 } from "react/jsx-runtime";
1418
1278
  function ItemGroup({ density, className, ...props }) {
1419
- return /* @__PURE__ */ jsx18("div", {
1279
+ return /* @__PURE__ */ jsx14("div", {
1420
1280
  role: "list",
1421
1281
  "data-density": density,
1422
1282
  "data-slot": "item-group",
@@ -1425,7 +1285,7 @@ function ItemGroup({ density, className, ...props }) {
1425
1285
  });
1426
1286
  }
1427
1287
  function ItemSeparator({ density, className, ...props }) {
1428
- return /* @__PURE__ */ jsx18(Separator2, {
1288
+ return /* @__PURE__ */ jsx14(Separator2, {
1429
1289
  "data-density": density,
1430
1290
  "data-slot": "item-separator",
1431
1291
  orientation: "horizontal",
@@ -1433,7 +1293,7 @@ function ItemSeparator({ density, className, ...props }) {
1433
1293
  ...props
1434
1294
  });
1435
1295
  }
1436
- var itemVariants = cva3("group/item flex w-full flex-wrap items-center rounded-sm border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring [a]:transition-colors [a]:hover:bg-muted", {
1296
+ var itemVariants = cva2("group/item flex w-full flex-wrap items-center rounded-sm border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-1 focus-visible:ring-ring [a]:transition-colors [a]:hover:bg-muted", {
1437
1297
  variants: {
1438
1298
  variant: {
1439
1299
  default: "border-transparent",
@@ -1459,9 +1319,9 @@ function Item({
1459
1319
  render,
1460
1320
  ...props
1461
1321
  }) {
1462
- return useRender7({
1322
+ return useRender5({
1463
1323
  defaultTagName: "div",
1464
- props: mergeProps7({
1324
+ props: mergeProps5({
1465
1325
  className: cn2(itemVariants({ variant, size, className }))
1466
1326
  }, props),
1467
1327
  render,
@@ -1473,7 +1333,7 @@ function Item({
1473
1333
  }
1474
1334
  });
1475
1335
  }
1476
- var itemMediaVariants = cva3("flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none", {
1336
+ var itemMediaVariants = cva2("flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none", {
1477
1337
  variants: {
1478
1338
  variant: {
1479
1339
  default: "bg-transparent",
@@ -1486,7 +1346,7 @@ var itemMediaVariants = cva3("flex shrink-0 items-center justify-center gap-2 gr
1486
1346
  }
1487
1347
  });
1488
1348
  function ItemMedia({ density, className, variant = "default", ...props }) {
1489
- return /* @__PURE__ */ jsx18("div", {
1349
+ return /* @__PURE__ */ jsx14("div", {
1490
1350
  "data-density": density,
1491
1351
  "data-slot": "item-media",
1492
1352
  "data-variant": variant,
@@ -1495,7 +1355,7 @@ function ItemMedia({ density, className, variant = "default", ...props }) {
1495
1355
  });
1496
1356
  }
1497
1357
  function ItemContent({ density, className, ...props }) {
1498
- return /* @__PURE__ */ jsx18("div", {
1358
+ return /* @__PURE__ */ jsx14("div", {
1499
1359
  "data-density": density,
1500
1360
  "data-slot": "item-content",
1501
1361
  className: cn2("flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none", className),
@@ -1503,7 +1363,7 @@ function ItemContent({ density, className, ...props }) {
1503
1363
  });
1504
1364
  }
1505
1365
  function ItemTitle({ density, className, ...props }) {
1506
- return /* @__PURE__ */ jsx18("div", {
1366
+ return /* @__PURE__ */ jsx14("div", {
1507
1367
  "data-density": density,
1508
1368
  "data-slot": "item-title",
1509
1369
  className: cn2("line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4", className),
@@ -1511,7 +1371,7 @@ function ItemTitle({ density, className, ...props }) {
1511
1371
  });
1512
1372
  }
1513
1373
  function ItemDescription({ density, className, ...props }) {
1514
- return /* @__PURE__ */ jsx18("p", {
1374
+ return /* @__PURE__ */ jsx14("p", {
1515
1375
  "data-density": density,
1516
1376
  "data-slot": "item-description",
1517
1377
  className: cn2("line-clamp-2 text-start text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary", className),
@@ -1519,7 +1379,7 @@ function ItemDescription({ density, className, ...props }) {
1519
1379
  });
1520
1380
  }
1521
1381
  function ItemActions({ density, className, ...props }) {
1522
- return /* @__PURE__ */ jsx18("div", {
1382
+ return /* @__PURE__ */ jsx14("div", {
1523
1383
  "data-density": density,
1524
1384
  "data-slot": "item-actions",
1525
1385
  className: cn2("flex items-center gap-2", className),
@@ -1527,7 +1387,7 @@ function ItemActions({ density, className, ...props }) {
1527
1387
  });
1528
1388
  }
1529
1389
  function ItemHeader({ density, className, ...props }) {
1530
- return /* @__PURE__ */ jsx18("div", {
1390
+ return /* @__PURE__ */ jsx14("div", {
1531
1391
  "data-density": density,
1532
1392
  "data-slot": "item-header",
1533
1393
  className: cn2("flex basis-full items-center justify-between gap-2", className),
@@ -1535,7 +1395,7 @@ function ItemHeader({ density, className, ...props }) {
1535
1395
  });
1536
1396
  }
1537
1397
  function ItemFooter({ density, className, ...props }) {
1538
- return /* @__PURE__ */ jsx18("div", {
1398
+ return /* @__PURE__ */ jsx14("div", {
1539
1399
  "data-density": density,
1540
1400
  "data-slot": "item-footer",
1541
1401
  className: cn2("flex basis-full items-center justify-between gap-2", className),
@@ -1544,9 +1404,9 @@ function ItemFooter({ density, className, ...props }) {
1544
1404
  }
1545
1405
  // src/components/Pagination.tsx
1546
1406
  import { ChevronLeftIcon, ChevronRightIcon as ChevronRightIcon2, MoreHorizontalIcon as MoreHorizontalIcon2 } from "lucide-react";
1547
- import { jsx as jsx19, jsxs as jsxs11 } from "react/jsx-runtime";
1407
+ import { jsx as jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
1548
1408
  function Pagination({ density, className, ...props }) {
1549
- return /* @__PURE__ */ jsx19("nav", {
1409
+ return /* @__PURE__ */ jsx15("nav", {
1550
1410
  role: "navigation",
1551
1411
  "aria-label": "pagination",
1552
1412
  "data-density": density,
@@ -1556,7 +1416,7 @@ function Pagination({ density, className, ...props }) {
1556
1416
  });
1557
1417
  }
1558
1418
  function PaginationContent({ density, className, ...props }) {
1559
- return /* @__PURE__ */ jsx19("ul", {
1419
+ return /* @__PURE__ */ jsx15("ul", {
1560
1420
  "data-density": density,
1561
1421
  "data-slot": "pagination-content",
1562
1422
  className: cn2("flex items-center gap-0.5", className),
@@ -1564,7 +1424,7 @@ function PaginationContent({ density, className, ...props }) {
1564
1424
  });
1565
1425
  }
1566
1426
  function PaginationItem({ ...props }) {
1567
- return /* @__PURE__ */ jsx19("li", {
1427
+ return /* @__PURE__ */ jsx15("li", {
1568
1428
  "data-slot": "pagination-item",
1569
1429
  ...props
1570
1430
  });
@@ -1576,7 +1436,7 @@ function PaginationLink({
1576
1436
  size = "icon",
1577
1437
  ...props
1578
1438
  }) {
1579
- return /* @__PURE__ */ jsx19("a", {
1439
+ return /* @__PURE__ */ jsx15("a", {
1580
1440
  "data-density": density,
1581
1441
  className: cn2(buttonVariants2({ variant: isActive ? "outline" : "ghost", size }), className),
1582
1442
  "aria-current": isActive ? "page" : undefined,
@@ -1591,18 +1451,18 @@ function PaginationPrevious({
1591
1451
  text = "Previous",
1592
1452
  ...props
1593
1453
  }) {
1594
- return /* @__PURE__ */ jsxs11(PaginationLink, {
1454
+ return /* @__PURE__ */ jsxs9(PaginationLink, {
1595
1455
  density,
1596
1456
  "aria-label": "Go to previous page",
1597
1457
  size: "default",
1598
1458
  className: cn2("ps-1.5!", className),
1599
1459
  ...props,
1600
1460
  children: [
1601
- /* @__PURE__ */ jsx19(ChevronLeftIcon, {
1461
+ /* @__PURE__ */ jsx15(ChevronLeftIcon, {
1602
1462
  "data-icon": "inline-start",
1603
1463
  className: "rtl:rotate-180"
1604
1464
  }),
1605
- /* @__PURE__ */ jsx19("span", {
1465
+ /* @__PURE__ */ jsx15("span", {
1606
1466
  className: "hidden sm:block",
1607
1467
  children: text
1608
1468
  })
@@ -1610,18 +1470,18 @@ function PaginationPrevious({
1610
1470
  });
1611
1471
  }
1612
1472
  function PaginationNext({ density, className, text = "Next", ...props }) {
1613
- return /* @__PURE__ */ jsxs11(PaginationLink, {
1473
+ return /* @__PURE__ */ jsxs9(PaginationLink, {
1614
1474
  density,
1615
1475
  "aria-label": "Go to next page",
1616
1476
  size: "default",
1617
1477
  className: cn2("pe-1.5!", className),
1618
1478
  ...props,
1619
1479
  children: [
1620
- /* @__PURE__ */ jsx19("span", {
1480
+ /* @__PURE__ */ jsx15("span", {
1621
1481
  className: "hidden sm:block",
1622
1482
  children: text
1623
1483
  }),
1624
- /* @__PURE__ */ jsx19(ChevronRightIcon2, {
1484
+ /* @__PURE__ */ jsx15(ChevronRightIcon2, {
1625
1485
  "data-icon": "inline-end",
1626
1486
  className: "rtl:rotate-180"
1627
1487
  })
@@ -1629,15 +1489,15 @@ function PaginationNext({ density, className, text = "Next", ...props }) {
1629
1489
  });
1630
1490
  }
1631
1491
  function PaginationEllipsis({ density, className, ...props }) {
1632
- return /* @__PURE__ */ jsxs11("span", {
1492
+ return /* @__PURE__ */ jsxs9("span", {
1633
1493
  "aria-hidden": true,
1634
1494
  "data-density": density,
1635
1495
  "data-slot": "pagination-ellipsis",
1636
1496
  className: cn2("flex size-control items-center justify-center [&_svg:not([class*='size-'])]:size-4", className),
1637
1497
  ...props,
1638
1498
  children: [
1639
- /* @__PURE__ */ jsx19(MoreHorizontalIcon2, {}),
1640
- /* @__PURE__ */ jsx19("span", {
1499
+ /* @__PURE__ */ jsx15(MoreHorizontalIcon2, {}),
1500
+ /* @__PURE__ */ jsx15("span", {
1641
1501
  className: "sr-only",
1642
1502
  children: "More pages"
1643
1503
  })
@@ -1646,39 +1506,39 @@ function PaginationEllipsis({ density, className, ...props }) {
1646
1506
  }
1647
1507
  // src/components/ScrollArea.tsx
1648
1508
  import { ScrollArea as ScrollAreaPrimitive } from "@base-ui/react/scroll-area";
1649
- import { jsx as jsx20, jsxs as jsxs12 } from "react/jsx-runtime";
1509
+ import { jsx as jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
1650
1510
  function ScrollArea({
1651
1511
  density,
1652
1512
  className,
1653
1513
  children,
1654
- scrollbars = /* @__PURE__ */ jsx20(ScrollBar, {}),
1514
+ scrollbars = /* @__PURE__ */ jsx16(ScrollBar, {}),
1655
1515
  ...props
1656
1516
  }) {
1657
- return /* @__PURE__ */ jsxs12(ScrollAreaPrimitive.Root, {
1517
+ return /* @__PURE__ */ jsxs10(ScrollAreaPrimitive.Root, {
1658
1518
  "data-density": density,
1659
1519
  "data-slot": "scroll-area",
1660
- className: (state) => cn2("relative", typeof className === "function" ? className(state) : className),
1520
+ className: (state) => cn2("relative flex min-h-0 flex-col", typeof className === "function" ? className(state) : className),
1661
1521
  ...props,
1662
1522
  children: [
1663
- /* @__PURE__ */ jsx20(ScrollAreaPrimitive.Viewport, {
1523
+ /* @__PURE__ */ jsx16(ScrollAreaPrimitive.Viewport, {
1664
1524
  "data-slot": "scroll-area-viewport",
1665
- className: "size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-1",
1525
+ className: "size-full min-h-0 flex-1 rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-1",
1666
1526
  children
1667
1527
  }),
1668
1528
  scrollbars,
1669
- /* @__PURE__ */ jsx20(ScrollAreaPrimitive.Corner, {})
1529
+ /* @__PURE__ */ jsx16(ScrollAreaPrimitive.Corner, {})
1670
1530
  ]
1671
1531
  });
1672
1532
  }
1673
1533
  function ScrollBar({ density, className, orientation = "vertical", ...props }) {
1674
- return /* @__PURE__ */ jsx20(ScrollAreaPrimitive.Scrollbar, {
1534
+ return /* @__PURE__ */ jsx16(ScrollAreaPrimitive.Scrollbar, {
1675
1535
  "data-density": density,
1676
1536
  "data-slot": "scroll-area-scrollbar",
1677
1537
  "data-orientation": orientation,
1678
1538
  orientation,
1679
1539
  className: (state) => cn2("flex touch-none p-px transition-colors select-none data-[orientation=horizontal]:h-2.5 data-[orientation=horizontal]:flex-col data-[orientation=horizontal]:border-t data-[orientation=horizontal]:border-t-transparent data-[orientation=vertical]:w-2.5 data-[orientation=vertical]:border-s data-[orientation=vertical]:border-s-transparent", typeof className === "function" ? className(state) : className),
1680
1540
  ...props,
1681
- children: /* @__PURE__ */ jsx20(ScrollAreaPrimitive.Thumb, {
1541
+ children: /* @__PURE__ */ jsx16(ScrollAreaPrimitive.Thumb, {
1682
1542
  "data-slot": "scroll-area-thumb",
1683
1543
  className: "relative flex-1 rounded-full bg-border"
1684
1544
  })
@@ -1688,13 +1548,13 @@ function ScrollBar({ density, className, orientation = "vertical", ...props }) {
1688
1548
  import { useMemo as useMemo2 } from "react";
1689
1549
 
1690
1550
  // src/drawer/DrawerContext.ts
1691
- import { createContext as createContext2 } from "react";
1692
- var DrawerContext = createContext2(null);
1551
+ import { createContext } from "react";
1552
+ var DrawerContext = createContext(null);
1693
1553
 
1694
1554
  // src/hooks/useDrawer.ts
1695
- import { useContext as useContext2 } from "react";
1555
+ import { useContext } from "react";
1696
1556
  function useDrawer() {
1697
- const context = useContext2(DrawerContext);
1557
+ const context = useContext(DrawerContext);
1698
1558
  if (!context) {
1699
1559
  throw new Error("useDrawer must be used within a Drawer.");
1700
1560
  }
@@ -1703,7 +1563,7 @@ function useDrawer() {
1703
1563
 
1704
1564
  // src/components/Drawer.tsx
1705
1565
  import { Drawer as DrawerPrimitive } from "@base-ui/react/drawer";
1706
- import { jsx as jsx21, jsxs as jsxs13 } from "react/jsx-runtime";
1566
+ import { jsx as jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
1707
1567
  function Drawer({
1708
1568
  modal = true,
1709
1569
  showSwipeHandle = false,
@@ -1713,9 +1573,9 @@ function Drawer({
1713
1573
  }) {
1714
1574
  const hasSnapPoints = snapPoints != null && snapPoints.length > 0;
1715
1575
  const contextValue = useMemo2(() => ({ hasSnapPoints, modal, showSwipeHandle, swipeDirection }), [hasSnapPoints, modal, showSwipeHandle, swipeDirection]);
1716
- return /* @__PURE__ */ jsx21(DrawerContext.Provider, {
1576
+ return /* @__PURE__ */ jsx17(DrawerContext.Provider, {
1717
1577
  value: contextValue,
1718
- children: /* @__PURE__ */ jsx21(DrawerPrimitive.Root, {
1578
+ children: /* @__PURE__ */ jsx17(DrawerPrimitive.Root, {
1719
1579
  "data-slot": "drawer",
1720
1580
  modal,
1721
1581
  snapPoints,
@@ -1725,28 +1585,34 @@ function Drawer({
1725
1585
  });
1726
1586
  }
1727
1587
  function DrawerTrigger({ ...props }) {
1728
- return /* @__PURE__ */ jsx21(DrawerPrimitive.Trigger, {
1588
+ return /* @__PURE__ */ jsx17(DrawerPrimitive.Trigger, {
1729
1589
  "data-slot": "drawer-trigger",
1730
1590
  ...props
1731
1591
  });
1732
1592
  }
1733
- function DrawerPortal({ container, ...props }) {
1593
+ function DrawerPortal({ container, ref, children, ...props }) {
1734
1594
  const resolvedContainer = usePortalContainer2(container);
1735
- return /* @__PURE__ */ jsx21(DrawerPrimitive.Portal, {
1595
+ const portal = usePortalNode(ref);
1596
+ return /* @__PURE__ */ jsx17(DrawerPrimitive.Portal, {
1736
1597
  "data-slot": "drawer-portal",
1737
1598
  container: resolvedContainer,
1738
- ...props
1599
+ ref: portal.ref,
1600
+ ...props,
1601
+ children: /* @__PURE__ */ jsx17(PortalProvider2, {
1602
+ container: portal.node,
1603
+ children
1604
+ })
1739
1605
  });
1740
1606
  }
1741
1607
  function DrawerClose({ ...props }) {
1742
- return /* @__PURE__ */ jsx21(DrawerPrimitive.Close, {
1608
+ return /* @__PURE__ */ jsx17(DrawerPrimitive.Close, {
1743
1609
  "data-slot": "drawer-close",
1744
1610
  ...props
1745
1611
  });
1746
1612
  }
1747
1613
  function DrawerOverlay({ density, className, ...props }) {
1748
1614
  const resolvedDensity = useDensity(density);
1749
- return /* @__PURE__ */ jsx21(DrawerPrimitive.Backdrop, {
1615
+ return /* @__PURE__ */ jsx17(DrawerPrimitive.Backdrop, {
1750
1616
  "data-density": resolvedDensity,
1751
1617
  "data-slot": "drawer-overlay",
1752
1618
  className: (state) => cn2("fixed inset-0 min-h-dvh bg-backdrop opacity-[max(var(--drawer-overlay-min-opacity,0),calc(1-var(--drawer-swipe-progress)))] transition-opacity duration-450 ease-[cubic-bezier(0.32,0.72,0,1)] select-none data-ending-style:pointer-events-none data-ending-style:opacity-0 data-ending-style:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-snap-points:[--drawer-overlay-min-opacity:0.5] data-starting-style:opacity-0 data-swiping:duration-0 supports-[-webkit-touch-callout:none]:absolute", typeof className === "function" ? className(state) : className),
@@ -1754,7 +1620,7 @@ function DrawerOverlay({ density, className, ...props }) {
1754
1620
  });
1755
1621
  }
1756
1622
  function DrawerSwipeHandle({ density, className, ...props }) {
1757
- return /* @__PURE__ */ jsx21("div", {
1623
+ return /* @__PURE__ */ jsx17("div", {
1758
1624
  "data-density": density,
1759
1625
  "data-slot": "drawer-swipe-handle",
1760
1626
  "aria-hidden": "true",
@@ -1767,28 +1633,30 @@ function DrawerContent({ density, className, children, ...props }) {
1767
1633
  const direction = useDirection2();
1768
1634
  const { hasSnapPoints, modal, showSwipeHandle, swipeDirection } = useDrawer();
1769
1635
  const swipeAxis = swipeDirection === "down" || swipeDirection === "up" ? "y" : "x";
1770
- return /* @__PURE__ */ jsxs13(DrawerPortal, {
1636
+ return /* @__PURE__ */ jsxs11(DrawerPortal, {
1771
1637
  "data-slot": "drawer-portal",
1772
1638
  children: [
1773
- modal === true && /* @__PURE__ */ jsx21(DrawerOverlay, {
1639
+ modal === true && /* @__PURE__ */ jsx17(DrawerOverlay, {
1774
1640
  "data-snap-points": hasSnapPoints ? "" : undefined
1775
1641
  }),
1776
- /* @__PURE__ */ jsx21(DrawerPrimitive.Viewport, {
1642
+ /* @__PURE__ */ jsx17(DrawerPrimitive.Viewport, {
1777
1643
  dir: direction,
1778
1644
  "data-slot": "drawer-viewport",
1779
1645
  "data-modal": modal,
1780
1646
  className: "pointer-events-none fixed inset-0 select-none data-[modal=true]:pointer-events-auto",
1781
- children: /* @__PURE__ */ jsxs13(DrawerPrimitive.Popup, {
1647
+ children: /* @__PURE__ */ jsxs11(DrawerPrimitive.Popup, {
1782
1648
  "data-density": resolvedDensity,
1783
1649
  "data-slot": "drawer-popup",
1650
+ "data-scroll": "none",
1784
1651
  "data-swipe-axis": swipeAxis,
1785
1652
  "data-snap-points": hasSnapPoints ? "" : undefined,
1786
1653
  className: (state) => cn2("group/drawer-popup pointer-events-auto fixed m-(--drawer-inset,0px) flex h-(--drawer-content-height) max-h-(--drawer-content-max-height,none) min-h-0 w-(--drawer-content-width,auto) transform-[translate3d(var(--translate-x,0px),var(--translate-y,0px),0)] flex-col border border-frame-edge shadow-frame bg-popover text-sm text-popover-foreground transition-[transform,height,opacity,filter] duration-450 ease-[cubic-bezier(0.22,1,0.36,1)] will-change-transform outline-none select-none [interpolate-size:allow-keywords] data-[swipe-direction=down]:rounded-t-md data-[swipe-direction=down]:border-t data-[swipe-direction=left]:rounded-r-md data-[swipe-direction=left]:border-r data-[swipe-direction=right]:rounded-l-md data-[swipe-direction=right]:border-l data-[swipe-direction=up]:rounded-b-md data-[swipe-direction=up]:border-b", "data-nested-drawer-open:overflow-hidden data-nested-drawer-open:brightness-95", "after:pointer-events-none after:absolute after:bg-(--drawer-bleed-background,var(--color-popover)) data-[swipe-axis=x]:after:inset-y-0 data-[swipe-axis=x]:after:w-(--bleed) data-[swipe-axis=y]:after:inset-x-0 data-[swipe-axis=y]:after:h-(--bleed) data-[swipe-direction=down]:after:top-full data-[swipe-direction=left]:after:right-full data-[swipe-direction=right]:after:left-full data-[swipe-direction=up]:after:bottom-full", "[--drawer-content-height:var(--drawer-height,auto)] data-[swipe-axis=x]:[--drawer-content-width:75%] data-[swipe-axis=y]:[--drawer-content-max-height:calc(100dvh-6rem)] data-[swipe-axis=y]:data-snap-points:[--drawer-content-height:100dvh] data-[swipe-axis=x]:sm:[--drawer-content-width:24rem]", "[--bleed:3rem] [--peek:1rem] [--stack-height:var(--drawer-frontmost-height,var(--drawer-height,0px))] [--stack-peek-offset:max(0px,calc((var(--nested-drawers)-var(--stack-progress))*var(--peek)))] [--stack-progress:clamp(0,var(--drawer-swipe-progress),1)] [--stack-shrink:0]", "data-ending-style:transform-(--closed-transform) data-ending-style:opacity-[0.9999] data-ending-style:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-nested-drawer-swiping:duration-0 data-ending-style:data-nested-drawer-swiping:duration-[calc(var(--drawer-swipe-strength)*400ms)] data-starting-style:transform-(--closed-transform) data-swiping:duration-0 data-ending-style:data-swiping:duration-[calc(var(--drawer-swipe-strength)*400ms)]", "data-[swipe-axis=y]:inset-x-0 data-[swipe-axis=y]:data-nested-drawer-open:h-(--stack-height)", "data-[swipe-axis=x]:inset-y-0 data-[swipe-axis=x]:flex-row", "data-[swipe-direction=down]:bottom-0 data-[swipe-direction=down]:origin-bottom data-[swipe-direction=down]:[--closed-transform:translate3d(0,calc(100%+var(--drawer-inset,0px)+2px),0)] data-[swipe-direction=down]:[--translate-y:calc(var(--drawer-snap-point-offset,0px)+var(--drawer-swipe-movement-y)-var(--stack-peek-offset)-(var(--stack-shrink)*var(--stack-height)))]", "data-[swipe-direction=up]:top-0 data-[swipe-direction=up]:origin-top data-[swipe-direction=up]:[--closed-transform:translate3d(0,calc(-100%-var(--drawer-inset,0px)-2px),0)] data-[swipe-direction=up]:[--translate-y:calc(var(--drawer-snap-point-offset,0px)+var(--drawer-swipe-movement-y)+var(--stack-peek-offset)+(var(--stack-shrink)*var(--stack-height)))]", "data-[swipe-direction=left]:left-0 data-[swipe-direction=left]:origin-left data-[swipe-direction=left]:[--closed-transform:translate3d(calc(-100%-var(--drawer-inset,0px)-2px),0,0)] data-[swipe-direction=left]:[--translate-x:calc(var(--drawer-swipe-movement-x)+var(--stack-peek-offset)+(var(--stack-shrink)*100%))]", "data-[swipe-direction=right]:right-0 data-[swipe-direction=right]:origin-right data-[swipe-direction=right]:[--closed-transform:translate3d(calc(100%+var(--drawer-inset,0px)+2px),0,0)] data-[swipe-direction=right]:[--translate-x:calc(var(--drawer-swipe-movement-x)-var(--stack-peek-offset)-(var(--stack-shrink)*100%))]", typeof className === "function" ? className(state) : className),
1787
1654
  ...props,
1788
1655
  children: [
1789
- showSwipeHandle && /* @__PURE__ */ jsx21(DrawerSwipeHandle, {}),
1790
- /* @__PURE__ */ jsx21(DrawerPrimitive.Content, {
1656
+ showSwipeHandle && /* @__PURE__ */ jsx17(DrawerSwipeHandle, {}),
1657
+ /* @__PURE__ */ jsx17(DrawerPrimitive.Content, {
1791
1658
  "data-slot": "drawer-content",
1659
+ "data-scroll": "none",
1792
1660
  className: "flex min-h-0 flex-1 flex-col overflow-hidden overscroll-contain rounded-[inherit] transition-opacity duration-300 ease-out select-text group-data-nested-drawer-open/drawer-popup:opacity-0 group-data-nested-drawer-swiping/drawer-popup:opacity-100 group-data-swiping/drawer-popup:select-none",
1793
1661
  children
1794
1662
  })
@@ -1799,7 +1667,7 @@ function DrawerContent({ density, className, children, ...props }) {
1799
1667
  });
1800
1668
  }
1801
1669
  function DrawerHeader({ density, className, ...props }) {
1802
- return /* @__PURE__ */ jsx21("div", {
1670
+ return /* @__PURE__ */ jsx17("div", {
1803
1671
  "data-density": density,
1804
1672
  "data-slot": "drawer-header",
1805
1673
  className: cn2("flex shrink-0 flex-col gap-0.5 p-panel pb-0 group-data-[swipe-axis=y]/drawer-popup:text-center md:gap-0.5 md:text-start md:group-data-[swipe-axis=y]/drawer-popup:text-start", className),
@@ -1807,7 +1675,7 @@ function DrawerHeader({ density, className, ...props }) {
1807
1675
  });
1808
1676
  }
1809
1677
  function DrawerFooter({ density, className, ...props }) {
1810
- return /* @__PURE__ */ jsx21("div", {
1678
+ return /* @__PURE__ */ jsx17("div", {
1811
1679
  "data-density": density,
1812
1680
  "data-slot": "drawer-footer",
1813
1681
  className: cn2("mt-auto flex shrink-0 flex-col gap-2 p-panel pt-0", className),
@@ -1815,7 +1683,7 @@ function DrawerFooter({ density, className, ...props }) {
1815
1683
  });
1816
1684
  }
1817
1685
  function DrawerTitle({ density, className, ...props }) {
1818
- return /* @__PURE__ */ jsx21(DrawerPrimitive.Title, {
1686
+ return /* @__PURE__ */ jsx17(DrawerPrimitive.Title, {
1819
1687
  "data-density": density,
1820
1688
  "data-slot": "drawer-title",
1821
1689
  className: (state) => cn2(" text-base font-medium text-foreground", typeof className === "function" ? className(state) : className),
@@ -1823,7 +1691,7 @@ function DrawerTitle({ density, className, ...props }) {
1823
1691
  });
1824
1692
  }
1825
1693
  function DrawerDescription({ density, className, ...props }) {
1826
- return /* @__PURE__ */ jsx21(DrawerPrimitive.Description, {
1694
+ return /* @__PURE__ */ jsx17(DrawerPrimitive.Description, {
1827
1695
  "data-density": density,
1828
1696
  "data-slot": "drawer-description",
1829
1697
  className: (state) => cn2("text-sm text-balance text-muted-foreground", typeof className === "function" ? className(state) : className),
@@ -1834,23 +1702,29 @@ function DrawerDescription({ density, className, ...props }) {
1834
1702
  import { ChevronRightIcon as ChevronRightIcon3, CheckIcon as CheckIcon3 } from "lucide-react";
1835
1703
  import { useDirection as useDirection5 } from "@base-ui/react/direction-provider";
1836
1704
  import { ContextMenu as ContextMenuPrimitive } from "@base-ui/react/context-menu";
1837
- import { jsx as jsx22, jsxs as jsxs14 } from "react/jsx-runtime";
1705
+ import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
1838
1706
  function ContextMenu({ ...props }) {
1839
- return /* @__PURE__ */ jsx22(ContextMenuPrimitive.Root, {
1707
+ return /* @__PURE__ */ jsx18(ContextMenuPrimitive.Root, {
1840
1708
  "data-slot": "context-menu",
1841
1709
  ...props
1842
1710
  });
1843
1711
  }
1844
- function ContextMenuPortal({ container, ...props }) {
1712
+ function ContextMenuPortal({ container, ref, children, ...props }) {
1845
1713
  const resolvedContainer = usePortalContainer2(container);
1846
- return /* @__PURE__ */ jsx22(ContextMenuPrimitive.Portal, {
1714
+ const portal = usePortalNode(ref);
1715
+ return /* @__PURE__ */ jsx18(ContextMenuPrimitive.Portal, {
1847
1716
  "data-slot": "context-menu-portal",
1848
1717
  container: resolvedContainer,
1849
- ...props
1718
+ ref: portal.ref,
1719
+ ...props,
1720
+ children: /* @__PURE__ */ jsx18(PortalProvider2, {
1721
+ container: portal.node,
1722
+ children
1723
+ })
1850
1724
  });
1851
1725
  }
1852
1726
  function ContextMenuTrigger({ density, className, ...props }) {
1853
- return /* @__PURE__ */ jsx22(ContextMenuPrimitive.Trigger, {
1727
+ return /* @__PURE__ */ jsx18(ContextMenuPrimitive.Trigger, {
1854
1728
  "data-density": density,
1855
1729
  "data-slot": "context-menu-trigger",
1856
1730
  className: (state) => cn2("select-none", typeof className === "function" ? className(state) : className),
@@ -1868,15 +1742,15 @@ function ContextMenuContent({
1868
1742
  }) {
1869
1743
  const resolvedDensity = useDensity(density);
1870
1744
  const direction = useDirection5();
1871
- return /* @__PURE__ */ jsx22(ContextMenuPortal, {
1872
- children: /* @__PURE__ */ jsx22(ContextMenuPrimitive.Positioner, {
1745
+ return /* @__PURE__ */ jsx18(ContextMenuPortal, {
1746
+ children: /* @__PURE__ */ jsx18(ContextMenuPrimitive.Positioner, {
1873
1747
  dir: direction,
1874
1748
  className: "isolate outline-none",
1875
1749
  align,
1876
1750
  alignOffset,
1877
1751
  side,
1878
1752
  sideOffset,
1879
- children: /* @__PURE__ */ jsx22(ContextMenuPrimitive.Popup, {
1753
+ children: /* @__PURE__ */ jsx18(ContextMenuPrimitive.Popup, {
1880
1754
  dir: direction,
1881
1755
  "data-density": resolvedDensity,
1882
1756
  "data-slot": "context-menu-content",
@@ -1887,13 +1761,13 @@ function ContextMenuContent({
1887
1761
  });
1888
1762
  }
1889
1763
  function ContextMenuGroup({ ...props }) {
1890
- return /* @__PURE__ */ jsx22(ContextMenuPrimitive.Group, {
1764
+ return /* @__PURE__ */ jsx18(ContextMenuPrimitive.Group, {
1891
1765
  "data-slot": "context-menu-group",
1892
1766
  ...props
1893
1767
  });
1894
1768
  }
1895
1769
  function ContextMenuLabel({ density, className, inset, ...props }) {
1896
- return /* @__PURE__ */ jsx22(ContextMenuPrimitive.GroupLabel, {
1770
+ return /* @__PURE__ */ jsx18(ContextMenuPrimitive.GroupLabel, {
1897
1771
  "data-density": density,
1898
1772
  "data-slot": "context-menu-label",
1899
1773
  "data-inset": inset,
@@ -1902,7 +1776,7 @@ function ContextMenuLabel({ density, className, inset, ...props }) {
1902
1776
  });
1903
1777
  }
1904
1778
  function ContextMenuItem({ density, className, inset, variant = "default", ...props }) {
1905
- return /* @__PURE__ */ jsx22(ContextMenuPrimitive.Item, {
1779
+ return /* @__PURE__ */ jsx18(ContextMenuPrimitive.Item, {
1906
1780
  "data-density": density,
1907
1781
  "data-slot": "context-menu-item",
1908
1782
  "data-inset": inset,
@@ -1912,13 +1786,13 @@ function ContextMenuItem({ density, className, inset, variant = "default", ...pr
1912
1786
  });
1913
1787
  }
1914
1788
  function ContextMenuSub({ ...props }) {
1915
- return /* @__PURE__ */ jsx22(ContextMenuPrimitive.SubmenuRoot, {
1789
+ return /* @__PURE__ */ jsx18(ContextMenuPrimitive.SubmenuRoot, {
1916
1790
  "data-slot": "context-menu-sub",
1917
1791
  ...props
1918
1792
  });
1919
1793
  }
1920
1794
  function ContextMenuSubTrigger({ density, className, inset, children, ...props }) {
1921
- return /* @__PURE__ */ jsxs14(ContextMenuPrimitive.SubmenuTrigger, {
1795
+ return /* @__PURE__ */ jsxs12(ContextMenuPrimitive.SubmenuTrigger, {
1922
1796
  "data-density": density,
1923
1797
  "data-slot": "context-menu-sub-trigger",
1924
1798
  "data-inset": inset,
@@ -1926,14 +1800,14 @@ function ContextMenuSubTrigger({ density, className, inset, children, ...props }
1926
1800
  ...props,
1927
1801
  children: [
1928
1802
  children,
1929
- /* @__PURE__ */ jsx22(ChevronRightIcon3, {
1803
+ /* @__PURE__ */ jsx18(ChevronRightIcon3, {
1930
1804
  className: "rtl:rotate-180 ms-auto"
1931
1805
  })
1932
1806
  ]
1933
1807
  });
1934
1808
  }
1935
1809
  function ContextMenuSubContent({ ...props }) {
1936
- return /* @__PURE__ */ jsx22(ContextMenuContent, {
1810
+ return /* @__PURE__ */ jsx18(ContextMenuContent, {
1937
1811
  "data-slot": "context-menu-sub-content",
1938
1812
  className: " shadow-frame border border-frame-edge",
1939
1813
  side: "inline-end",
@@ -1948,7 +1822,7 @@ function ContextMenuCheckboxItem({
1948
1822
  inset,
1949
1823
  ...props
1950
1824
  }) {
1951
- return /* @__PURE__ */ jsxs14(ContextMenuPrimitive.CheckboxItem, {
1825
+ return /* @__PURE__ */ jsxs12(ContextMenuPrimitive.CheckboxItem, {
1952
1826
  "data-density": density,
1953
1827
  "data-slot": "context-menu-checkbox-item",
1954
1828
  "data-inset": inset,
@@ -1956,10 +1830,10 @@ function ContextMenuCheckboxItem({
1956
1830
  checked,
1957
1831
  ...props,
1958
1832
  children: [
1959
- /* @__PURE__ */ jsx22("span", {
1833
+ /* @__PURE__ */ jsx18("span", {
1960
1834
  className: "pointer-events-none absolute end-2",
1961
- children: /* @__PURE__ */ jsx22(ContextMenuPrimitive.CheckboxItemIndicator, {
1962
- children: /* @__PURE__ */ jsx22(CheckIcon3, {})
1835
+ children: /* @__PURE__ */ jsx18(ContextMenuPrimitive.CheckboxItemIndicator, {
1836
+ children: /* @__PURE__ */ jsx18(CheckIcon3, {})
1963
1837
  })
1964
1838
  }),
1965
1839
  children
@@ -1967,23 +1841,23 @@ function ContextMenuCheckboxItem({
1967
1841
  });
1968
1842
  }
1969
1843
  function ContextMenuRadioGroup({ ...props }) {
1970
- return /* @__PURE__ */ jsx22(ContextMenuPrimitive.RadioGroup, {
1844
+ return /* @__PURE__ */ jsx18(ContextMenuPrimitive.RadioGroup, {
1971
1845
  "data-slot": "context-menu-radio-group",
1972
1846
  ...props
1973
1847
  });
1974
1848
  }
1975
1849
  function ContextMenuRadioItem({ density, className, children, inset, ...props }) {
1976
- return /* @__PURE__ */ jsxs14(ContextMenuPrimitive.RadioItem, {
1850
+ return /* @__PURE__ */ jsxs12(ContextMenuPrimitive.RadioItem, {
1977
1851
  "data-density": density,
1978
1852
  "data-slot": "context-menu-radio-item",
1979
1853
  "data-inset": inset,
1980
1854
  className: (state) => cn2("relative flex cursor-default items-center gap-control-gap rounded-md py-1 pe-8 ps-1.5 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:ps-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", typeof className === "function" ? className(state) : className),
1981
1855
  ...props,
1982
1856
  children: [
1983
- /* @__PURE__ */ jsx22("span", {
1857
+ /* @__PURE__ */ jsx18("span", {
1984
1858
  className: "pointer-events-none absolute end-2",
1985
- children: /* @__PURE__ */ jsx22(ContextMenuPrimitive.RadioItemIndicator, {
1986
- children: /* @__PURE__ */ jsx22(CheckIcon3, {})
1859
+ children: /* @__PURE__ */ jsx18(ContextMenuPrimitive.RadioItemIndicator, {
1860
+ children: /* @__PURE__ */ jsx18(CheckIcon3, {})
1987
1861
  })
1988
1862
  }),
1989
1863
  children
@@ -1991,7 +1865,7 @@ function ContextMenuRadioItem({ density, className, children, inset, ...props })
1991
1865
  });
1992
1866
  }
1993
1867
  function ContextMenuSeparator({ density, className, ...props }) {
1994
- return /* @__PURE__ */ jsx22(ContextMenuPrimitive.Separator, {
1868
+ return /* @__PURE__ */ jsx18(ContextMenuPrimitive.Separator, {
1995
1869
  "data-density": density,
1996
1870
  "data-slot": "context-menu-separator",
1997
1871
  className: (state) => cn2("-mx-1 my-1 h-px bg-border", typeof className === "function" ? className(state) : className),
@@ -1999,7 +1873,7 @@ function ContextMenuSeparator({ density, className, ...props }) {
1999
1873
  });
2000
1874
  }
2001
1875
  function ContextMenuShortcut({ density, className, ...props }) {
2002
- return /* @__PURE__ */ jsx22("span", {
1876
+ return /* @__PURE__ */ jsx18("span", {
2003
1877
  "data-density": density,
2004
1878
  "data-slot": "context-menu-shortcut",
2005
1879
  className: cn2("ms-auto text-xs tracking-widest text-muted-foreground group-focus/context-menu-item:text-accent-foreground", className),
@@ -2010,9 +1884,9 @@ function ContextMenuShortcut({ density, className, ...props }) {
2010
1884
  import { CheckIcon as CheckIcon4 } from "lucide-react";
2011
1885
  import { Menu as MenuPrimitive } from "@base-ui/react/menu";
2012
1886
  import { Menubar as MenubarPrimitive } from "@base-ui/react/menubar";
2013
- import { jsx as jsx23, jsxs as jsxs15 } from "react/jsx-runtime";
1887
+ import { jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
2014
1888
  function Menubar({ density, className, ...props }) {
2015
- return /* @__PURE__ */ jsx23(MenubarPrimitive, {
1889
+ return /* @__PURE__ */ jsx19(MenubarPrimitive, {
2016
1890
  "data-density": density,
2017
1891
  "data-slot": "menubar",
2018
1892
  className: (state) => cn2("flex h-control items-center gap-0.5 rounded-sm border p-px", typeof className === "function" ? className(state) : className),
@@ -2020,25 +1894,25 @@ function Menubar({ density, className, ...props }) {
2020
1894
  });
2021
1895
  }
2022
1896
  function MenubarMenu({ ...props }) {
2023
- return /* @__PURE__ */ jsx23(DropdownMenu2, {
1897
+ return /* @__PURE__ */ jsx19(DropdownMenu2, {
2024
1898
  "data-slot": "menubar-menu",
2025
1899
  ...props
2026
1900
  });
2027
1901
  }
2028
1902
  function MenubarGroup({ ...props }) {
2029
- return /* @__PURE__ */ jsx23(DropdownMenuGroup2, {
1903
+ return /* @__PURE__ */ jsx19(DropdownMenuGroup2, {
2030
1904
  "data-slot": "menubar-group",
2031
1905
  ...props
2032
1906
  });
2033
1907
  }
2034
1908
  function MenubarPortal({ ...props }) {
2035
- return /* @__PURE__ */ jsx23(DropdownMenuPortal2, {
1909
+ return /* @__PURE__ */ jsx19(DropdownMenuPortal2, {
2036
1910
  "data-slot": "menubar-portal",
2037
1911
  ...props
2038
1912
  });
2039
1913
  }
2040
1914
  function MenubarTrigger({ density, className, ...props }) {
2041
- return /* @__PURE__ */ jsx23(DropdownMenuTrigger2, {
1915
+ return /* @__PURE__ */ jsx19(DropdownMenuTrigger2, {
2042
1916
  "data-density": density,
2043
1917
  "data-slot": "menubar-trigger",
2044
1918
  className: (state) => cn2("flex h-full items-center rounded-sm px-control-x text-sm leading-none font-medium outline-hidden select-none hover:bg-muted aria-expanded:bg-muted", typeof className === "function" ? className(state) : className),
@@ -2053,7 +1927,7 @@ function MenubarContent({
2053
1927
  sideOffset = 8,
2054
1928
  ...props
2055
1929
  }) {
2056
- return /* @__PURE__ */ jsx23(DropdownMenuContent2, {
1930
+ return /* @__PURE__ */ jsx19(DropdownMenuContent2, {
2057
1931
  density,
2058
1932
  "data-slot": "menubar-content",
2059
1933
  align,
@@ -2064,7 +1938,7 @@ function MenubarContent({
2064
1938
  });
2065
1939
  }
2066
1940
  function MenubarItem({ density, className, inset, variant = "default", ...props }) {
2067
- return /* @__PURE__ */ jsx23(DropdownMenuItem2, {
1941
+ return /* @__PURE__ */ jsx19(DropdownMenuItem2, {
2068
1942
  density,
2069
1943
  "data-slot": "menubar-item",
2070
1944
  inset,
@@ -2081,7 +1955,7 @@ function MenubarCheckboxItem({
2081
1955
  inset,
2082
1956
  ...props
2083
1957
  }) {
2084
- return /* @__PURE__ */ jsxs15(MenuPrimitive.CheckboxItem, {
1958
+ return /* @__PURE__ */ jsxs13(MenuPrimitive.CheckboxItem, {
2085
1959
  "data-density": density,
2086
1960
  "data-slot": "menubar-checkbox-item",
2087
1961
  "data-inset": inset,
@@ -2089,10 +1963,10 @@ function MenubarCheckboxItem({
2089
1963
  checked,
2090
1964
  ...props,
2091
1965
  children: [
2092
- /* @__PURE__ */ jsx23("span", {
1966
+ /* @__PURE__ */ jsx19("span", {
2093
1967
  className: "pointer-events-none absolute start-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4",
2094
- children: /* @__PURE__ */ jsx23(MenuPrimitive.CheckboxItemIndicator, {
2095
- children: /* @__PURE__ */ jsx23(CheckIcon4, {})
1968
+ children: /* @__PURE__ */ jsx19(MenuPrimitive.CheckboxItemIndicator, {
1969
+ children: /* @__PURE__ */ jsx19(CheckIcon4, {})
2096
1970
  })
2097
1971
  }),
2098
1972
  children
@@ -2100,23 +1974,23 @@ function MenubarCheckboxItem({
2100
1974
  });
2101
1975
  }
2102
1976
  function MenubarRadioGroup({ ...props }) {
2103
- return /* @__PURE__ */ jsx23(DropdownMenuRadioGroup2, {
1977
+ return /* @__PURE__ */ jsx19(DropdownMenuRadioGroup2, {
2104
1978
  "data-slot": "menubar-radio-group",
2105
1979
  ...props
2106
1980
  });
2107
1981
  }
2108
1982
  function MenubarRadioItem({ density, className, children, inset, ...props }) {
2109
- return /* @__PURE__ */ jsxs15(MenuPrimitive.RadioItem, {
1983
+ return /* @__PURE__ */ jsxs13(MenuPrimitive.RadioItem, {
2110
1984
  "data-density": density,
2111
1985
  "data-slot": "menubar-radio-item",
2112
1986
  "data-inset": inset,
2113
1987
  className: (state) => cn2("relative flex cursor-default items-center gap-control-gap rounded-md py-1 pe-1.5 ps-7 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:ps-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", typeof className === "function" ? className(state) : className),
2114
1988
  ...props,
2115
1989
  children: [
2116
- /* @__PURE__ */ jsx23("span", {
1990
+ /* @__PURE__ */ jsx19("span", {
2117
1991
  className: "pointer-events-none absolute start-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4",
2118
- children: /* @__PURE__ */ jsx23(MenuPrimitive.RadioItemIndicator, {
2119
- children: /* @__PURE__ */ jsx23(CheckIcon4, {})
1992
+ children: /* @__PURE__ */ jsx19(MenuPrimitive.RadioItemIndicator, {
1993
+ children: /* @__PURE__ */ jsx19(CheckIcon4, {})
2120
1994
  })
2121
1995
  }),
2122
1996
  children
@@ -2124,7 +1998,7 @@ function MenubarRadioItem({ density, className, children, inset, ...props }) {
2124
1998
  });
2125
1999
  }
2126
2000
  function MenubarLabel({ density, className, inset, ...props }) {
2127
- return /* @__PURE__ */ jsx23(DropdownMenuLabel2, {
2001
+ return /* @__PURE__ */ jsx19(DropdownMenuLabel2, {
2128
2002
  density,
2129
2003
  "data-slot": "menubar-label",
2130
2004
  inset,
@@ -2133,7 +2007,7 @@ function MenubarLabel({ density, className, inset, ...props }) {
2133
2007
  });
2134
2008
  }
2135
2009
  function MenubarSeparator({ density, className, ...props }) {
2136
- return /* @__PURE__ */ jsx23(DropdownMenuSeparator2, {
2010
+ return /* @__PURE__ */ jsx19(DropdownMenuSeparator2, {
2137
2011
  density,
2138
2012
  "data-slot": "menubar-separator",
2139
2013
  className: (state) => cn2("-mx-1 my-1 h-px bg-border", typeof className === "function" ? className(state) : className),
@@ -2141,7 +2015,7 @@ function MenubarSeparator({ density, className, ...props }) {
2141
2015
  });
2142
2016
  }
2143
2017
  function MenubarShortcut({ density, className, ...props }) {
2144
- return /* @__PURE__ */ jsx23(DropdownMenuShortcut2, {
2018
+ return /* @__PURE__ */ jsx19(DropdownMenuShortcut2, {
2145
2019
  "data-density": density,
2146
2020
  "data-slot": "menubar-shortcut",
2147
2021
  className: cn2("ms-auto text-xs tracking-widest text-muted-foreground group-focus/menubar-item:text-accent-foreground", className),
@@ -2149,13 +2023,13 @@ function MenubarShortcut({ density, className, ...props }) {
2149
2023
  });
2150
2024
  }
2151
2025
  function MenubarSub({ ...props }) {
2152
- return /* @__PURE__ */ jsx23(DropdownMenuSub2, {
2026
+ return /* @__PURE__ */ jsx19(DropdownMenuSub2, {
2153
2027
  "data-slot": "menubar-sub",
2154
2028
  ...props
2155
2029
  });
2156
2030
  }
2157
2031
  function MenubarSubTrigger({ density, className, inset, ...props }) {
2158
- return /* @__PURE__ */ jsx23(DropdownMenuSubTrigger2, {
2032
+ return /* @__PURE__ */ jsx19(DropdownMenuSubTrigger2, {
2159
2033
  density,
2160
2034
  "data-slot": "menubar-sub-trigger",
2161
2035
  inset,
@@ -2164,7 +2038,7 @@ function MenubarSubTrigger({ density, className, inset, ...props }) {
2164
2038
  });
2165
2039
  }
2166
2040
  function MenubarSubContent({ density, className, ...props }) {
2167
- return /* @__PURE__ */ jsx23(DropdownMenuSubContent2, {
2041
+ return /* @__PURE__ */ jsx19(DropdownMenuSubContent2, {
2168
2042
  density,
2169
2043
  "data-slot": "menubar-sub-content",
2170
2044
  className: (state) => cn2(" min-w-32 rounded-sm bg-popover p-1 text-popover-foreground shadow-frame border border-frame-edge border border-frame-edge shadow-frame duration-100 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0 ", typeof className === "function" ? className(state) : className),
@@ -2172,10 +2046,10 @@ function MenubarSubContent({ density, className, ...props }) {
2172
2046
  });
2173
2047
  }
2174
2048
  // src/components/NavigationMenu.tsx
2175
- import { ChevronDownIcon as ChevronDownIcon5 } from "lucide-react";
2049
+ import { ChevronDownIcon as ChevronDownIcon4 } from "lucide-react";
2176
2050
  import { NavigationMenu as NavigationMenuPrimitive } from "@base-ui/react/navigation-menu";
2177
- import { cva as cva4 } from "class-variance-authority";
2178
- import { jsx as jsx24, jsxs as jsxs16 } from "react/jsx-runtime";
2051
+ import { cva as cva3 } from "class-variance-authority";
2052
+ import { jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
2179
2053
  function NavigationMenu({
2180
2054
  density,
2181
2055
  align = "start",
@@ -2184,14 +2058,14 @@ function NavigationMenu({
2184
2058
  ...props
2185
2059
  }) {
2186
2060
  const resolvedDensity = useDensity(density);
2187
- return /* @__PURE__ */ jsxs16(NavigationMenuPrimitive.Root, {
2061
+ return /* @__PURE__ */ jsxs14(NavigationMenuPrimitive.Root, {
2188
2062
  "data-density": resolvedDensity,
2189
2063
  "data-slot": "navigation-menu",
2190
2064
  className: (state) => cn2("group/navigation-menu relative flex max-w-max flex-1 items-center justify-center", typeof className === "function" ? className(state) : className),
2191
2065
  ...props,
2192
2066
  children: [
2193
2067
  children,
2194
- /* @__PURE__ */ jsx24(NavigationMenuPositioner, {
2068
+ /* @__PURE__ */ jsx20(NavigationMenuPositioner, {
2195
2069
  density: resolvedDensity,
2196
2070
  align
2197
2071
  })
@@ -2199,7 +2073,7 @@ function NavigationMenu({
2199
2073
  });
2200
2074
  }
2201
2075
  function NavigationMenuList({ density, className, ...props }) {
2202
- return /* @__PURE__ */ jsx24(NavigationMenuPrimitive.List, {
2076
+ return /* @__PURE__ */ jsx20(NavigationMenuPrimitive.List, {
2203
2077
  "data-density": density,
2204
2078
  "data-slot": "navigation-menu-list",
2205
2079
  className: (state) => cn2("group flex flex-1 list-none items-center justify-center gap-0", typeof className === "function" ? className(state) : className),
@@ -2207,16 +2081,16 @@ function NavigationMenuList({ density, className, ...props }) {
2207
2081
  });
2208
2082
  }
2209
2083
  function NavigationMenuItem({ density, className, ...props }) {
2210
- return /* @__PURE__ */ jsx24(NavigationMenuPrimitive.Item, {
2084
+ return /* @__PURE__ */ jsx20(NavigationMenuPrimitive.Item, {
2211
2085
  "data-density": density,
2212
2086
  "data-slot": "navigation-menu-item",
2213
2087
  className: (state) => cn2("relative", typeof className === "function" ? className(state) : className),
2214
2088
  ...props
2215
2089
  });
2216
2090
  }
2217
- var navigationMenuTriggerStyle = cva4("group/navigation-menu-trigger inline-flex h-control-lg w-max items-center justify-center rounded-sm px-control-x py-1.5 text-sm font-medium transition-colors outline-none hover:bg-muted focus:bg-muted focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted");
2091
+ var navigationMenuTriggerStyle = cva3("group/navigation-menu-trigger inline-flex h-control-lg w-max items-center justify-center rounded-sm px-control-x py-1.5 text-sm font-medium transition-colors outline-none hover:bg-muted focus:bg-muted focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted");
2218
2092
  function NavigationMenuTrigger({ density, className, children, ...props }) {
2219
- return /* @__PURE__ */ jsxs16(NavigationMenuPrimitive.Trigger, {
2093
+ return /* @__PURE__ */ jsxs14(NavigationMenuPrimitive.Trigger, {
2220
2094
  "data-density": density,
2221
2095
  "data-slot": "navigation-menu-trigger",
2222
2096
  className: (state) => cn2(navigationMenuTriggerStyle(), "group", typeof className === "function" ? className(state) : className),
@@ -2224,12 +2098,12 @@ function NavigationMenuTrigger({ density, className, children, ...props }) {
2224
2098
  children: [
2225
2099
  children,
2226
2100
  " ",
2227
- /* @__PURE__ */ jsx24(NavigationMenuIndicator, {})
2101
+ /* @__PURE__ */ jsx20(NavigationMenuIndicator, {})
2228
2102
  ]
2229
2103
  });
2230
2104
  }
2231
2105
  function NavigationMenuContent({ density, className, ...props }) {
2232
- return /* @__PURE__ */ jsx24(NavigationMenuPrimitive.Content, {
2106
+ return /* @__PURE__ */ jsx20(NavigationMenuPrimitive.Content, {
2233
2107
  "data-density": density,
2234
2108
  "data-slot": "navigation-menu-content",
2235
2109
  className: (state) => cn2("data-ending-style:data-activation-direction=left:translate-x-[50%] data-ending-style:data-activation-direction=right:translate-x-[-50%] data-starting-style:data-activation-direction=left:translate-x-[-50%] data-starting-style:data-activation-direction=right:translate-x-[50%] h-full w-auto p-1 transition-[opacity,transform,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] data-ending-style:opacity-0 data-starting-style:opacity-0 ", typeof className === "function" ? className(state) : className),
@@ -2248,29 +2122,34 @@ function NavigationMenuPositioner({
2248
2122
  const resolvedDensity = useDensity(density);
2249
2123
  const direction = useDirection2();
2250
2124
  const container = usePortalContainer2();
2251
- return /* @__PURE__ */ jsx24(NavigationMenuPrimitive.Portal, {
2125
+ const portal = usePortalNode();
2126
+ return /* @__PURE__ */ jsx20(NavigationMenuPrimitive.Portal, {
2252
2127
  container,
2253
- children: /* @__PURE__ */ jsx24(NavigationMenuPrimitive.Positioner, {
2254
- dir: direction,
2255
- side,
2256
- sideOffset,
2257
- align,
2258
- alignOffset,
2259
- className: (state) => cn2("isolate h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] data-instant:transition-none data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0", typeof className === "function" ? className(state) : className),
2260
- ...props,
2261
- children: /* @__PURE__ */ jsx24(NavigationMenuPrimitive.Popup, {
2262
- "data-density": resolvedDensity,
2263
- "data-slot": "navigation-menu-popup",
2264
- className: "data-[ending-style]:easing-[ease] xs:w-(--popup-width) relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) rounded-sm bg-popover text-popover-foreground border border-frame-edge shadow-frame transition-[opacity,transform,width,height,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:opacity-0",
2265
- children: /* @__PURE__ */ jsx24(NavigationMenuPrimitive.Viewport, {
2266
- className: "relative size-full overflow-hidden"
2128
+ ref: portal.ref,
2129
+ children: /* @__PURE__ */ jsx20(PortalProvider2, {
2130
+ container: portal.node,
2131
+ children: /* @__PURE__ */ jsx20(NavigationMenuPrimitive.Positioner, {
2132
+ dir: direction,
2133
+ side,
2134
+ sideOffset,
2135
+ align,
2136
+ alignOffset,
2137
+ className: (state) => cn2("isolate h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] data-instant:transition-none data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0", typeof className === "function" ? className(state) : className),
2138
+ ...props,
2139
+ children: /* @__PURE__ */ jsx20(NavigationMenuPrimitive.Popup, {
2140
+ "data-density": resolvedDensity,
2141
+ "data-slot": "navigation-menu-popup",
2142
+ className: "data-[ending-style]:easing-[ease] xs:w-(--popup-width) relative h-(--popup-height) w-(--popup-width) origin-(--transform-origin) rounded-sm bg-popover text-popover-foreground border border-frame-edge shadow-frame transition-[opacity,transform,width,height,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] outline-none data-ending-style:opacity-0 data-ending-style:duration-150 data-starting-style:opacity-0",
2143
+ children: /* @__PURE__ */ jsx20(NavigationMenuPrimitive.Viewport, {
2144
+ className: "relative size-full overflow-hidden"
2145
+ })
2267
2146
  })
2268
2147
  })
2269
2148
  })
2270
2149
  });
2271
2150
  }
2272
2151
  function NavigationMenuLink({ density, className, ...props }) {
2273
- return /* @__PURE__ */ jsx24(NavigationMenuPrimitive.Link, {
2152
+ return /* @__PURE__ */ jsx20(NavigationMenuPrimitive.Link, {
2274
2153
  "data-density": density,
2275
2154
  "data-slot": "navigation-menu-link",
2276
2155
  className: (state) => cn2("flex items-center gap-2 rounded-sm p-2 text-sm transition-colors outline-none hover:bg-muted focus:bg-muted focus-visible:ring-1 focus-visible:ring-ring focus-visible:outline-1 in-data-[slot=navigation-menu-content]:rounded-md data-active:bg-muted/50 data-active:hover:bg-muted data-active:focus:bg-muted [&_svg:not([class*='size-'])]:size-4", typeof className === "function" ? className(state) : className),
@@ -2283,35 +2162,41 @@ function NavigationMenuIndicator({
2283
2162
  children,
2284
2163
  ...props
2285
2164
  }) {
2286
- return /* @__PURE__ */ jsx24(NavigationMenuPrimitive.Icon, {
2165
+ return /* @__PURE__ */ jsx20(NavigationMenuPrimitive.Icon, {
2287
2166
  "data-density": density,
2288
2167
  "data-slot": "navigation-menu-indicator",
2289
2168
  className: (state) => cn2("ms-1 inline-flex size-3 shrink-0 items-center justify-center transition-transform duration-120 data-popup-open:rotate-180 [&_svg]:size-full", typeof className === "function" ? className(state) : className),
2290
2169
  ...props,
2291
- children: children ?? /* @__PURE__ */ jsx24(ChevronDownIcon5, {})
2170
+ children: children ?? /* @__PURE__ */ jsx20(ChevronDownIcon4, {})
2292
2171
  });
2293
2172
  }
2294
2173
  // src/components/Toast.tsx
2295
2174
  import { Toast as ToastPrimitive } from "@base-ui/react/toast";
2296
2175
  import { CircleCheckIcon, InfoIcon, TriangleAlertIcon, OctagonXIcon, LoaderCircleIcon, XIcon as XIcon2 } from "lucide-react";
2297
- import { jsx as jsx25, jsxs as jsxs17, Fragment } from "react/jsx-runtime";
2176
+ import { jsx as jsx21, jsxs as jsxs15, Fragment } from "react/jsx-runtime";
2298
2177
  function ToastProvider(props) {
2299
- return /* @__PURE__ */ jsx25(ToastPrimitive.Provider, {
2178
+ return /* @__PURE__ */ jsx21(ToastPrimitive.Provider, {
2300
2179
  ...props
2301
2180
  });
2302
2181
  }
2303
- function ToastPortal({ container, ...props }) {
2182
+ function ToastPortal({ container, ref, children, ...props }) {
2304
2183
  const resolvedContainer = usePortalContainer2(container);
2305
- return /* @__PURE__ */ jsx25(ToastPrimitive.Portal, {
2184
+ const portal = usePortalNode(ref);
2185
+ return /* @__PURE__ */ jsx21(ToastPrimitive.Portal, {
2306
2186
  "data-slot": "toast-portal",
2307
2187
  container: resolvedContainer,
2308
- ...props
2188
+ ref: portal.ref,
2189
+ ...props,
2190
+ children: /* @__PURE__ */ jsx21(PortalProvider2, {
2191
+ container: portal.node,
2192
+ children
2193
+ })
2309
2194
  });
2310
2195
  }
2311
2196
  function ToastViewport({ density, dir, className, ...props }) {
2312
2197
  const resolvedDensity = useDensity(density);
2313
2198
  const inheritedDirection = useDirection2();
2314
- return /* @__PURE__ */ jsx25(ToastPrimitive.Viewport, {
2199
+ return /* @__PURE__ */ jsx21(ToastPrimitive.Viewport, {
2315
2200
  dir: dir ?? inheritedDirection,
2316
2201
  "data-density": resolvedDensity,
2317
2202
  "data-slot": "toast-viewport",
@@ -2320,7 +2205,7 @@ function ToastViewport({ density, dir, className, ...props }) {
2320
2205
  });
2321
2206
  }
2322
2207
  function Toast({ density, className, ...props }) {
2323
- return /* @__PURE__ */ jsx25(ToastPrimitive.Root, {
2208
+ return /* @__PURE__ */ jsx21(ToastPrimitive.Root, {
2324
2209
  "data-density": density,
2325
2210
  "data-slot": "toast",
2326
2211
  className: (state) => cn2("group/toast pointer-events-auto absolute right-0 bottom-0 w-full rounded-md border border-frame-edge bg-popover text-popover-foreground shadow-frame outline-none select-none focus-visible:ring-1 focus-visible:ring-ring [--offset-y:calc(var(--toast-offset-y)*-1-var(--toast-index)*var(--spacing-panel))] [transform:translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--offset-y)+var(--toast-swipe-movement-y)))] transition-[transform,opacity] duration-120 ease-out data-limited:opacity-0 data-starting-style:opacity-0 data-ending-style:opacity-0 motion-reduce:transition-none", typeof className === "function" ? className(state) : className),
@@ -2328,21 +2213,21 @@ function Toast({ density, className, ...props }) {
2328
2213
  });
2329
2214
  }
2330
2215
  function ToastContent({ className, ...props }) {
2331
- return /* @__PURE__ */ jsx25(ToastPrimitive.Content, {
2216
+ return /* @__PURE__ */ jsx21(ToastPrimitive.Content, {
2332
2217
  "data-slot": "toast-content",
2333
2218
  className: (state) => cn2("flex items-center gap-control-gap p-panel", typeof className === "function" ? className(state) : className),
2334
2219
  ...props
2335
2220
  });
2336
2221
  }
2337
2222
  function ToastTitle({ className, ...props }) {
2338
- return /* @__PURE__ */ jsx25(ToastPrimitive.Title, {
2223
+ return /* @__PURE__ */ jsx21(ToastPrimitive.Title, {
2339
2224
  "data-slot": "toast-title",
2340
2225
  className: (state) => cn2("text-sm font-medium", typeof className === "function" ? className(state) : className),
2341
2226
  ...props
2342
2227
  });
2343
2228
  }
2344
2229
  function ToastDescription({ className, ...props }) {
2345
- return /* @__PURE__ */ jsx25(ToastPrimitive.Description, {
2230
+ return /* @__PURE__ */ jsx21(ToastPrimitive.Description, {
2346
2231
  "data-slot": "toast-description",
2347
2232
  className: (state) => cn2("text-sm text-muted-foreground", typeof className === "function" ? className(state) : className),
2348
2233
  ...props
@@ -2350,13 +2235,13 @@ function ToastDescription({ className, ...props }) {
2350
2235
  }
2351
2236
  function ToastAction({
2352
2237
  className,
2353
- render = /* @__PURE__ */ jsx25(Button2, {
2238
+ render = /* @__PURE__ */ jsx21(Button2, {
2354
2239
  variant: "outline",
2355
2240
  size: "sm"
2356
2241
  }),
2357
2242
  ...props
2358
2243
  }) {
2359
- return /* @__PURE__ */ jsx25(ToastPrimitive.Action, {
2244
+ return /* @__PURE__ */ jsx21(ToastPrimitive.Action, {
2360
2245
  "data-slot": "toast-action",
2361
2246
  render,
2362
2247
  className: (state) => cn2("shrink-0", typeof className === "function" ? className(state) : className),
@@ -2366,19 +2251,19 @@ function ToastAction({
2366
2251
  function ToastClose({
2367
2252
  className,
2368
2253
  children,
2369
- render = /* @__PURE__ */ jsx25(Button2, {
2254
+ render = /* @__PURE__ */ jsx21(Button2, {
2370
2255
  variant: "ghost",
2371
2256
  size: "icon-sm"
2372
2257
  }),
2373
2258
  ...props
2374
2259
  }) {
2375
- return /* @__PURE__ */ jsx25(ToastPrimitive.Close, {
2260
+ return /* @__PURE__ */ jsx21(ToastPrimitive.Close, {
2376
2261
  "data-slot": "toast-close",
2377
2262
  "aria-label": "Close toast",
2378
2263
  render,
2379
2264
  className: (state) => cn2("relative shrink-0 text-muted-foreground hover:text-foreground", typeof className === "function" ? className(state) : className),
2380
2265
  ...props,
2381
- children: children ?? /* @__PURE__ */ jsx25(XIcon2, {
2266
+ children: children ?? /* @__PURE__ */ jsx21(XIcon2, {
2382
2267
  "aria-hidden": "true"
2383
2268
  })
2384
2269
  });
@@ -2386,24 +2271,24 @@ function ToastClose({
2386
2271
  function ToastIcon({ type }) {
2387
2272
  switch (type) {
2388
2273
  case "success":
2389
- return /* @__PURE__ */ jsx25(CircleCheckIcon, {
2274
+ return /* @__PURE__ */ jsx21(CircleCheckIcon, {
2390
2275
  "aria-hidden": "true"
2391
2276
  });
2392
2277
  case "info":
2393
- return /* @__PURE__ */ jsx25(InfoIcon, {
2278
+ return /* @__PURE__ */ jsx21(InfoIcon, {
2394
2279
  "aria-hidden": "true"
2395
2280
  });
2396
2281
  case "warning":
2397
- return /* @__PURE__ */ jsx25(TriangleAlertIcon, {
2282
+ return /* @__PURE__ */ jsx21(TriangleAlertIcon, {
2398
2283
  "aria-hidden": "true"
2399
2284
  });
2400
2285
  case "error":
2401
- return /* @__PURE__ */ jsx25(OctagonXIcon, {
2286
+ return /* @__PURE__ */ jsx21(OctagonXIcon, {
2402
2287
  "aria-hidden": "true",
2403
2288
  className: "text-destructive"
2404
2289
  });
2405
2290
  case "loading":
2406
- return /* @__PURE__ */ jsx25(LoaderCircleIcon, {
2291
+ return /* @__PURE__ */ jsx21(LoaderCircleIcon, {
2407
2292
  "aria-hidden": "true",
2408
2293
  className: "animate-spin motion-reduce:animate-none"
2409
2294
  });
@@ -2413,41 +2298,41 @@ function ToastIcon({ type }) {
2413
2298
  }
2414
2299
  function ToastList() {
2415
2300
  const { toasts } = ToastPrimitive.useToastManager();
2416
- return /* @__PURE__ */ jsx25(Fragment, {
2417
- children: toasts.map((toastItem) => /* @__PURE__ */ jsx25(Toast, {
2301
+ return /* @__PURE__ */ jsx21(Fragment, {
2302
+ children: toasts.map((toastItem) => /* @__PURE__ */ jsx21(Toast, {
2418
2303
  toast: toastItem,
2419
- children: /* @__PURE__ */ jsxs17(ToastContent, {
2304
+ children: /* @__PURE__ */ jsxs15(ToastContent, {
2420
2305
  children: [
2421
- /* @__PURE__ */ jsx25("span", {
2306
+ /* @__PURE__ */ jsx21("span", {
2422
2307
  "data-slot": "toast-icon",
2423
2308
  className: "shrink-0 empty:hidden [&_svg]:size-4",
2424
- children: /* @__PURE__ */ jsx25(ToastIcon, {
2309
+ children: /* @__PURE__ */ jsx21(ToastIcon, {
2425
2310
  type: toastItem.type
2426
2311
  })
2427
2312
  }),
2428
- /* @__PURE__ */ jsxs17("div", {
2313
+ /* @__PURE__ */ jsxs15("div", {
2429
2314
  className: "flex min-w-0 flex-1 flex-col gap-1",
2430
2315
  children: [
2431
- /* @__PURE__ */ jsx25(ToastTitle, {}),
2432
- /* @__PURE__ */ jsx25(ToastDescription, {})
2316
+ /* @__PURE__ */ jsx21(ToastTitle, {}),
2317
+ /* @__PURE__ */ jsx21(ToastDescription, {})
2433
2318
  ]
2434
2319
  }),
2435
- /* @__PURE__ */ jsx25(ToastAction, {}),
2436
- /* @__PURE__ */ jsx25(ToastClose, {})
2320
+ /* @__PURE__ */ jsx21(ToastAction, {}),
2321
+ /* @__PURE__ */ jsx21(ToastClose, {})
2437
2322
  ]
2438
2323
  })
2439
2324
  }, toastItem.id))
2440
2325
  });
2441
2326
  }
2442
2327
  function ToastToaster({ children, density, ...props }) {
2443
- return /* @__PURE__ */ jsxs17(ToastProvider, {
2328
+ return /* @__PURE__ */ jsxs15(ToastProvider, {
2444
2329
  ...props,
2445
2330
  children: [
2446
2331
  children,
2447
- /* @__PURE__ */ jsx25(ToastPortal, {
2448
- children: /* @__PURE__ */ jsx25(ToastViewport, {
2332
+ /* @__PURE__ */ jsx21(ToastPortal, {
2333
+ children: /* @__PURE__ */ jsx21(ToastViewport, {
2449
2334
  density,
2450
- children: /* @__PURE__ */ jsx25(ToastList, {})
2335
+ children: /* @__PURE__ */ jsx21(ToastList, {})
2451
2336
  })
2452
2337
  })
2453
2338
  ]
@@ -2460,11 +2345,11 @@ function useToastManager() {
2460
2345
  return Toast2.useToastManager();
2461
2346
  }
2462
2347
  // src/components/Marker.tsx
2463
- import { mergeProps as mergeProps8 } from "@base-ui/react/merge-props";
2464
- import { useRender as useRender8 } from "@base-ui/react/use-render";
2465
- import { cva as cva5 } from "class-variance-authority";
2466
- import { jsx as jsx26 } from "react/jsx-runtime";
2467
- var markerVariants = cva5("group/marker relative flex min-h-4 w-full items-center gap-control-gap text-start text-sm text-muted-foreground [&_svg:not([class*='size-'])]:size-4 [a]:underline [a]:underline-offset-3 [a]:hover:text-foreground [&:is(a,button)]:outline-none [&:is(a,button)]:focus-visible:outline-1 [&:is(a,button)]:focus-visible:outline-ring", {
2348
+ import { mergeProps as mergeProps6 } from "@base-ui/react/merge-props";
2349
+ import { useRender as useRender6 } from "@base-ui/react/use-render";
2350
+ import { cva as cva4 } from "class-variance-authority";
2351
+ import { jsx as jsx22 } from "react/jsx-runtime";
2352
+ var markerVariants = cva4("group/marker relative flex min-h-4 w-full items-center gap-control-gap text-start text-sm text-muted-foreground [&_svg:not([class*='size-'])]:size-4 [a]:underline [a]:underline-offset-3 [a]:hover:text-foreground [&:is(a,button)]:outline-none [&:is(a,button)]:focus-visible:outline-1 [&:is(a,button)]:focus-visible:outline-ring", {
2468
2353
  variants: {
2469
2354
  variant: {
2470
2355
  default: "",
@@ -2474,15 +2359,15 @@ var markerVariants = cva5("group/marker relative flex min-h-4 w-full items-cente
2474
2359
  }
2475
2360
  });
2476
2361
  function Marker({ density, className, variant = "default", render, ...props }) {
2477
- return useRender8({
2362
+ return useRender6({
2478
2363
  defaultTagName: "div",
2479
- props: mergeProps8({ className: cn2(markerVariants({ variant, className })) }, props),
2364
+ props: mergeProps6({ className: cn2(markerVariants({ variant, className })) }, props),
2480
2365
  render,
2481
2366
  state: { slot: "marker", variant, density }
2482
2367
  });
2483
2368
  }
2484
2369
  function MarkerIcon({ density, className, ...props }) {
2485
- return /* @__PURE__ */ jsx26("span", {
2370
+ return /* @__PURE__ */ jsx22("span", {
2486
2371
  "data-density": density,
2487
2372
  "data-slot": "marker-icon",
2488
2373
  "aria-hidden": "true",
@@ -2491,7 +2376,7 @@ function MarkerIcon({ density, className, ...props }) {
2491
2376
  });
2492
2377
  }
2493
2378
  function MarkerContent({ density, className, ...props }) {
2494
- return /* @__PURE__ */ jsx26("span", {
2379
+ return /* @__PURE__ */ jsx22("span", {
2495
2380
  "data-density": density,
2496
2381
  "data-slot": "marker-content",
2497
2382
  className: cn2("min-w-0 wrap-break-word group-data-[variant=separator]/marker:text-center [&>a]:underline [&>a]:underline-offset-3 [&>a:hover]:text-foreground", className),
@@ -2499,19 +2384,19 @@ function MarkerContent({ density, className, ...props }) {
2499
2384
  });
2500
2385
  }
2501
2386
  // src/components/Bubble.tsx
2502
- import { mergeProps as mergeProps9 } from "@base-ui/react/merge-props";
2503
- import { useRender as useRender9 } from "@base-ui/react/use-render";
2504
- import { cva as cva6 } from "class-variance-authority";
2505
- import { jsx as jsx27 } from "react/jsx-runtime";
2387
+ import { mergeProps as mergeProps7 } from "@base-ui/react/merge-props";
2388
+ import { useRender as useRender7 } from "@base-ui/react/use-render";
2389
+ import { cva as cva5 } from "class-variance-authority";
2390
+ import { jsx as jsx23 } from "react/jsx-runtime";
2506
2391
  function BubbleGroup({ density, className, ...props }) {
2507
- return /* @__PURE__ */ jsx27("div", {
2392
+ return /* @__PURE__ */ jsx23("div", {
2508
2393
  "data-density": density,
2509
2394
  "data-slot": "bubble-group",
2510
2395
  className: cn2("flex min-w-0 flex-col gap-control-gap", className),
2511
2396
  ...props
2512
2397
  });
2513
2398
  }
2514
- var bubbleVariants = cva6("group/bubble relative flex w-fit max-w-[80%] min-w-0 flex-col gap-1 group-data-[align=end]/message:self-end data-[align=end]:self-end data-[variant=ghost]:max-w-full", {
2399
+ var bubbleVariants = cva5("group/bubble relative flex w-fit max-w-[80%] min-w-0 flex-col gap-1 group-data-[align=end]/message:self-end data-[align=end]:self-end data-[variant=ghost]:max-w-full", {
2515
2400
  variants: {
2516
2401
  variant: {
2517
2402
  default: "*:data-[slot=bubble-content]:bg-primary *:data-[slot=bubble-content]:text-primary-foreground [&>[data-slot=bubble-content]:is(button,a):hover]:bg-primary/80",
@@ -2526,7 +2411,7 @@ var bubbleVariants = cva6("group/bubble relative flex w-fit max-w-[80%] min-w-0
2526
2411
  defaultVariants: { variant: "default" }
2527
2412
  });
2528
2413
  function Bubble({ density, variant = "default", align = "start", className, ...props }) {
2529
- return /* @__PURE__ */ jsx27("div", {
2414
+ return /* @__PURE__ */ jsx23("div", {
2530
2415
  "data-density": density,
2531
2416
  "data-slot": "bubble",
2532
2417
  "data-variant": variant,
@@ -2536,16 +2421,16 @@ function Bubble({ density, variant = "default", align = "start", className, ...p
2536
2421
  });
2537
2422
  }
2538
2423
  function BubbleContent({ density, className, render, ...props }) {
2539
- return useRender9({
2424
+ return useRender7({
2540
2425
  defaultTagName: "div",
2541
- props: mergeProps9({
2426
+ props: mergeProps7({
2542
2427
  className: cn2("w-fit max-w-full min-w-0 overflow-hidden rounded-sm border border-transparent px-control-x py-control-gap text-sm leading-relaxed wrap-break-word group-data-[align=end]/bubble:self-end [&:is(button)]:text-start [&:is(button,a)]:transition-colors motion-reduce:transition-none [&:is(button,a)]:outline-none [&:is(button,a)]:focus-visible:border-ring [&:is(button,a)]:focus-visible:ring-1 [&:is(button,a)]:focus-visible:ring-ring", className)
2543
2428
  }, props),
2544
2429
  render,
2545
2430
  state: { slot: "bubble-content", density }
2546
2431
  });
2547
2432
  }
2548
- var bubbleReactionsVariants = cva6("absolute z-10 flex w-fit shrink-0 items-center justify-center gap-1 rounded-sm border border-border bg-muted px-1.5 py-0.5 text-sm ring-2 ring-card has-[button]:p-0", {
2433
+ var bubbleReactionsVariants = cva5("absolute z-10 flex w-fit shrink-0 items-center justify-center gap-1 rounded-sm border border-border bg-muted px-1.5 py-0.5 text-sm ring-2 ring-card has-[button]:p-0", {
2549
2434
  variants: {
2550
2435
  side: { top: "top-0 -translate-y-3/4", bottom: "bottom-0 translate-y-3/4" },
2551
2436
  align: { start: "start-3", end: "end-3" }
@@ -2559,7 +2444,7 @@ function BubbleReactions({
2559
2444
  className,
2560
2445
  ...props
2561
2446
  }) {
2562
- return /* @__PURE__ */ jsx27("div", {
2447
+ return /* @__PURE__ */ jsx23("div", {
2563
2448
  "data-density": density,
2564
2449
  "data-slot": "bubble-reactions",
2565
2450
  "data-align": align,
@@ -2569,17 +2454,17 @@ function BubbleReactions({
2569
2454
  });
2570
2455
  }
2571
2456
  // src/components/Message.tsx
2572
- import { useContext as useContext3, useLayoutEffect, useMemo as useMemo3, useRef as useRef3, useState as useState3 } from "react";
2573
- import { useRender as useRender10 } from "@base-ui/react/use-render";
2457
+ import { useContext as useContext2, useLayoutEffect, useMemo as useMemo3, useRef as useRef2, useState } from "react";
2458
+ import { useRender as useRender8 } from "@base-ui/react/use-render";
2574
2459
 
2575
2460
  // src/message/MessageContext.ts
2576
- import { createContext as createContext3 } from "react";
2577
- var MessageContext = createContext3(null);
2461
+ import { createContext as createContext2 } from "react";
2462
+ var MessageContext = createContext2(null);
2578
2463
 
2579
2464
  // src/components/Message.tsx
2580
- import { jsx as jsx28 } from "react/jsx-runtime";
2465
+ import { jsx as jsx24 } from "react/jsx-runtime";
2581
2466
  function MessageGroup({ density, className, ...props }) {
2582
- return /* @__PURE__ */ jsx28("div", {
2467
+ return /* @__PURE__ */ jsx24("div", {
2583
2468
  "data-density": density,
2584
2469
  "data-slot": "message-group",
2585
2470
  className: cn2("flex min-w-0 flex-col gap-control-gap", className),
@@ -2587,12 +2472,12 @@ function MessageGroup({ density, className, ...props }) {
2587
2472
  });
2588
2473
  }
2589
2474
  function Message({ density, className, align = "start", style, ...props }) {
2590
- const [footerOffset, setFooterOffset] = useState3(0);
2475
+ const [footerOffset, setFooterOffset] = useState(0);
2591
2476
  const context = useMemo3(() => ({ setFooterOffset }), []);
2592
2477
  const messageStyle = { ...style, "--message-footer-offset": `${footerOffset}px` };
2593
- return /* @__PURE__ */ jsx28(MessageContext.Provider, {
2478
+ return /* @__PURE__ */ jsx24(MessageContext.Provider, {
2594
2479
  value: context,
2595
- children: /* @__PURE__ */ jsx28("div", {
2480
+ children: /* @__PURE__ */ jsx24("div", {
2596
2481
  "data-density": density,
2597
2482
  "data-slot": "message",
2598
2483
  "data-align": align,
@@ -2603,7 +2488,7 @@ function Message({ density, className, align = "start", style, ...props }) {
2603
2488
  });
2604
2489
  }
2605
2490
  function MessageAvatar({ density, className, ...props }) {
2606
- return /* @__PURE__ */ jsx28("div", {
2491
+ return /* @__PURE__ */ jsx24("div", {
2607
2492
  "data-density": density,
2608
2493
  "data-slot": "message-avatar",
2609
2494
  className: cn2("flex w-fit min-w-8 shrink-0 items-center justify-center self-end overflow-hidden rounded-full bg-muted group-has-data-[slot=message-footer]/message:-translate-y-(--message-footer-offset)", className),
@@ -2611,7 +2496,7 @@ function MessageAvatar({ density, className, ...props }) {
2611
2496
  });
2612
2497
  }
2613
2498
  function MessageContent({ density, className, ...props }) {
2614
- return /* @__PURE__ */ jsx28("div", {
2499
+ return /* @__PURE__ */ jsx24("div", {
2615
2500
  "data-density": density,
2616
2501
  "data-slot": "message-content",
2617
2502
  className: cn2("flex w-full min-w-0 flex-col gap-control-gap wrap-break-word group-data-[align=end]/message:[&>[data-slot]:not([data-slot=message-header])]:self-end", className),
@@ -2619,7 +2504,7 @@ function MessageContent({ density, className, ...props }) {
2619
2504
  });
2620
2505
  }
2621
2506
  function MessageHeader({ density, className, ...props }) {
2622
- return /* @__PURE__ */ jsx28("div", {
2507
+ return /* @__PURE__ */ jsx24("div", {
2623
2508
  "data-density": density,
2624
2509
  "data-slot": "message-header",
2625
2510
  className: cn2("flex max-w-full min-w-0 items-center px-control-x text-xs font-medium text-muted-foreground group-has-data-[variant=ghost]/message:px-0", className),
@@ -2627,8 +2512,8 @@ function MessageHeader({ density, className, ...props }) {
2627
2512
  });
2628
2513
  }
2629
2514
  function MessageFooter({ density, className, ...props }) {
2630
- const context = useContext3(MessageContext);
2631
- const footerRef = useRef3(null);
2515
+ const context = useContext2(MessageContext);
2516
+ const footerRef = useRef2(null);
2632
2517
  useLayoutEffect(() => {
2633
2518
  const footer = footerRef.current;
2634
2519
  const content = footer?.parentElement;
@@ -2647,7 +2532,7 @@ function MessageFooter({ density, className, ...props }) {
2647
2532
  context.setFooterOffset(0);
2648
2533
  };
2649
2534
  }, [context]);
2650
- return useRender10({
2535
+ return useRender8({
2651
2536
  defaultTagName: "div",
2652
2537
  ref: footerRef,
2653
2538
  state: { slot: "message-footer", density },
@@ -2658,11 +2543,11 @@ function MessageFooter({ density, className, ...props }) {
2658
2543
  });
2659
2544
  }
2660
2545
  // src/components/Attachment.tsx
2661
- import { mergeProps as mergeProps10 } from "@base-ui/react/merge-props";
2662
- import { useRender as useRender11 } from "@base-ui/react/use-render";
2663
- import { cva as cva7 } from "class-variance-authority";
2664
- import { jsx as jsx29 } from "react/jsx-runtime";
2665
- var attachmentVariants = cva7("group/attachment relative flex w-fit max-w-full min-w-0 shrink-0 flex-wrap rounded-md border bg-card text-card-foreground transition-colors motion-reduce:transition-none focus-within:ring-1 focus-within:ring-ring has-[>a,>button]:hover:bg-muted/50 data-[state=error]:border-destructive data-[state=idle]:border-dashed", {
2546
+ import { mergeProps as mergeProps8 } from "@base-ui/react/merge-props";
2547
+ import { useRender as useRender9 } from "@base-ui/react/use-render";
2548
+ import { cva as cva6 } from "class-variance-authority";
2549
+ import { jsx as jsx25 } from "react/jsx-runtime";
2550
+ var attachmentVariants = cva6("group/attachment relative flex w-fit max-w-full min-w-0 shrink-0 flex-wrap rounded-md border bg-card text-card-foreground transition-colors motion-reduce:transition-none focus-within:ring-1 focus-within:ring-ring has-[>a,>button]:hover:bg-muted/50 data-[state=error]:border-destructive data-[state=idle]:border-dashed", {
2666
2551
  variants: {
2667
2552
  size: {
2668
2553
  default: "gap-control-gap text-sm has-data-[slot=attachment-content]:px-control-x has-data-[slot=attachment-content]:py-control-gap has-data-[slot=attachment-media]:p-control-gap",
@@ -2683,7 +2568,7 @@ function Attachment({
2683
2568
  orientation = "horizontal",
2684
2569
  ...props
2685
2570
  }) {
2686
- return /* @__PURE__ */ jsx29("div", {
2571
+ return /* @__PURE__ */ jsx25("div", {
2687
2572
  "data-slot": "attachment",
2688
2573
  "data-density": density,
2689
2574
  "data-state": state,
@@ -2693,7 +2578,7 @@ function Attachment({
2693
2578
  ...props
2694
2579
  });
2695
2580
  }
2696
- var attachmentMediaVariants = cva7("relative flex aspect-square w-10 shrink-0 items-center justify-center overflow-hidden rounded-sm bg-muted text-foreground group-data-[orientation=vertical]/attachment:w-full group-data-[orientation=horizontal]/attachment:group-data-[size=sm]/attachment:w-8 group-data-[orientation=horizontal]/attachment:group-data-[size=xs]/attachment:w-7 group-data-[state=error]/attachment:bg-destructive/10 group-data-[state=error]/attachment:text-destructive group-data-[orientation=vertical]/attachment:*:data-[slot=spinner]:size-6! [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 group-data-[orientation=vertical]/attachment:[&_svg:not([class*='size-'])]:size-6 group-data-[size=xs]/attachment:[&_svg:not([class*='size-'])]:size-3.5", {
2581
+ var attachmentMediaVariants = cva6("relative flex aspect-square w-10 shrink-0 items-center justify-center overflow-hidden rounded-sm bg-muted text-foreground group-data-[orientation=vertical]/attachment:w-full group-data-[orientation=horizontal]/attachment:group-data-[size=sm]/attachment:w-8 group-data-[orientation=horizontal]/attachment:group-data-[size=xs]/attachment:w-7 group-data-[state=error]/attachment:bg-destructive/10 group-data-[state=error]/attachment:text-destructive group-data-[orientation=vertical]/attachment:*:data-[slot=spinner]:size-6! [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 group-data-[orientation=vertical]/attachment:[&_svg:not([class*='size-'])]:size-6 group-data-[size=xs]/attachment:[&_svg:not([class*='size-'])]:size-3.5", {
2697
2582
  variants: {
2698
2583
  variant: {
2699
2584
  icon: "",
@@ -2703,7 +2588,7 @@ var attachmentMediaVariants = cva7("relative flex aspect-square w-10 shrink-0 it
2703
2588
  defaultVariants: { variant: "icon" }
2704
2589
  });
2705
2590
  function AttachmentMedia({ density, className, variant = "icon", ...props }) {
2706
- return /* @__PURE__ */ jsx29("div", {
2591
+ return /* @__PURE__ */ jsx25("div", {
2707
2592
  "data-slot": "attachment-media",
2708
2593
  "data-density": density,
2709
2594
  "data-variant": variant,
@@ -2712,7 +2597,7 @@ function AttachmentMedia({ density, className, variant = "icon", ...props }) {
2712
2597
  });
2713
2598
  }
2714
2599
  function AttachmentContent({ density, className, ...props }) {
2715
- return /* @__PURE__ */ jsx29("div", {
2600
+ return /* @__PURE__ */ jsx25("div", {
2716
2601
  "data-slot": "attachment-content",
2717
2602
  "data-density": density,
2718
2603
  className: cn2("max-w-full min-w-0 flex-1 leading-tight group-data-[orientation=vertical]/attachment:px-1", className),
@@ -2720,7 +2605,7 @@ function AttachmentContent({ density, className, ...props }) {
2720
2605
  });
2721
2606
  }
2722
2607
  function AttachmentTitle({ density, className, ...props }) {
2723
- return /* @__PURE__ */ jsx29("span", {
2608
+ return /* @__PURE__ */ jsx25("span", {
2724
2609
  "data-slot": "attachment-title",
2725
2610
  "data-density": density,
2726
2611
  className: cn2("block max-w-full min-w-0 truncate font-medium group-data-[state=processing]/attachment:shimmer group-data-[state=uploading]/attachment:shimmer", className),
@@ -2728,7 +2613,7 @@ function AttachmentTitle({ density, className, ...props }) {
2728
2613
  });
2729
2614
  }
2730
2615
  function AttachmentDescription({ density, className, ...props }) {
2731
- return /* @__PURE__ */ jsx29("span", {
2616
+ return /* @__PURE__ */ jsx25("span", {
2732
2617
  "data-slot": "attachment-description",
2733
2618
  "data-density": density,
2734
2619
  className: cn2("mt-0.5 block max-w-full min-w-0 truncate text-xs text-muted-foreground group-data-[state=error]/attachment:text-destructive", className),
@@ -2736,7 +2621,7 @@ function AttachmentDescription({ density, className, ...props }) {
2736
2621
  });
2737
2622
  }
2738
2623
  function AttachmentActions({ density, className, ...props }) {
2739
- return /* @__PURE__ */ jsx29("div", {
2624
+ return /* @__PURE__ */ jsx25("div", {
2740
2625
  "data-slot": "attachment-actions",
2741
2626
  "data-density": density,
2742
2627
  className: cn2("relative z-20 flex shrink-0 items-center group-data-[orientation=vertical]/attachment:absolute group-data-[orientation=vertical]/attachment:top-3 group-data-[orientation=vertical]/attachment:end-3 group-data-[orientation=vertical]/attachment:gap-1", className),
@@ -2749,7 +2634,7 @@ function AttachmentAction({
2749
2634
  size = "icon-xs",
2750
2635
  ...props
2751
2636
  }) {
2752
- return /* @__PURE__ */ jsx29(Button2, {
2637
+ return /* @__PURE__ */ jsx25(Button2, {
2753
2638
  "data-slot": "attachment-action",
2754
2639
  variant,
2755
2640
  size,
@@ -2758,15 +2643,15 @@ function AttachmentAction({
2758
2643
  });
2759
2644
  }
2760
2645
  function AttachmentTrigger({ density, className, render, type, ...props }) {
2761
- return useRender11({
2646
+ return useRender9({
2762
2647
  defaultTagName: "button",
2763
- props: mergeProps10({ type: render ? type : type ?? "button", className: cn2("absolute inset-0 z-10 outline-none", className) }, props),
2648
+ props: mergeProps8({ type: render ? type : type ?? "button", className: cn2("absolute inset-0 z-10 outline-none", className) }, props),
2764
2649
  render,
2765
2650
  state: { slot: "attachment-trigger", density }
2766
2651
  });
2767
2652
  }
2768
2653
  function AttachmentGroup({ density, className, ...props }) {
2769
- return /* @__PURE__ */ jsx29("div", {
2654
+ return /* @__PURE__ */ jsx25("div", {
2770
2655
  "data-slot": "attachment-group",
2771
2656
  "data-density": density,
2772
2657
  className: cn2("flex min-w-0 scroll-fade-x snap-x snap-mandatory scroll-px-1 no-scrollbar gap-3 overflow-x-auto overscroll-x-contain py-1 *:data-[slot=attachment]:flex-none *:data-[slot=attachment]:snap-start", className),
@@ -2774,8 +2659,8 @@ function AttachmentGroup({ density, className, ...props }) {
2774
2659
  });
2775
2660
  }
2776
2661
  // src/components/InlineEdit.tsx
2777
- import { useEffect as useEffect2, useRef as useRef4, useState as useState4 } from "react";
2778
- import { jsx as jsx30, jsxs as jsxs18 } from "react/jsx-runtime";
2662
+ import { useEffect as useEffect2, useRef as useRef3, useState as useState2 } from "react";
2663
+ import { jsx as jsx26, jsxs as jsxs16 } from "react/jsx-runtime";
2779
2664
  function InlineEdit({
2780
2665
  label,
2781
2666
  value,
@@ -2786,10 +2671,10 @@ function InlineEdit({
2786
2671
  onCommit,
2787
2672
  onCancel
2788
2673
  }) {
2789
- const input = useRef4(null);
2790
- const isFinished = useRef4(false);
2791
- const [isSaving, setSaving] = useState4(false);
2792
- const [error, setError] = useState4("");
2674
+ const input = useRef3(null);
2675
+ const isFinished = useRef3(false);
2676
+ const [isSaving, setSaving] = useState2(false);
2677
+ const [error, setError] = useState2("");
2793
2678
  useEffect2(() => {
2794
2679
  input.current?.focus();
2795
2680
  if (shouldSelectOnMount)
@@ -2810,14 +2695,14 @@ function InlineEdit({
2810
2695
  setSaving(false);
2811
2696
  }
2812
2697
  };
2813
- return /* @__PURE__ */ jsxs18("form", {
2698
+ return /* @__PURE__ */ jsxs16("form", {
2814
2699
  className: "flex min-w-0 flex-col gap-1",
2815
2700
  onSubmit: (event) => {
2816
2701
  event.preventDefault();
2817
2702
  save();
2818
2703
  },
2819
2704
  children: [
2820
- /* @__PURE__ */ jsx30(Input2, {
2705
+ /* @__PURE__ */ jsx26(Input2, {
2821
2706
  ref: input,
2822
2707
  density,
2823
2708
  "aria-label": label,
@@ -2838,7 +2723,7 @@ function InlineEdit({
2838
2723
  }
2839
2724
  }
2840
2725
  }),
2841
- error && /* @__PURE__ */ jsx30("p", {
2726
+ error && /* @__PURE__ */ jsx26("p", {
2842
2727
  role: "alert",
2843
2728
  className: "text-xs text-destructive",
2844
2729
  children: error
@@ -2850,28 +2735,28 @@ function InlineEdit({
2850
2735
  import { Radio } from "@base-ui/react/radio";
2851
2736
  import { RadioGroup } from "@base-ui/react/radio-group";
2852
2737
  import { StarIcon, CircleOffIcon } from "lucide-react";
2853
- import { jsx as jsx31 } from "react/jsx-runtime";
2738
+ import { jsx as jsx27 } from "react/jsx-runtime";
2854
2739
  function StarRating({ label, value, disabled, density, onValueChange }) {
2855
- return /* @__PURE__ */ jsx31(RadioGroup, {
2740
+ return /* @__PURE__ */ jsx27(RadioGroup, {
2856
2741
  "aria-label": label,
2857
2742
  value,
2858
2743
  disabled,
2859
2744
  "data-density": density,
2860
2745
  className: "inline-flex w-fit shrink-0 items-center gap-0.5",
2861
2746
  onValueChange,
2862
- children: [1, 2, 3, 4, 5, 0].map((star) => /* @__PURE__ */ jsx31(Radio.Root, {
2747
+ children: [1, 2, 3, 4, 5, 0].map((star) => /* @__PURE__ */ jsx27(Radio.Root, {
2863
2748
  value: star,
2864
2749
  nativeButton: true,
2865
- render: /* @__PURE__ */ jsx31("button", {
2750
+ render: /* @__PURE__ */ jsx27("button", {
2866
2751
  type: "button"
2867
2752
  }),
2868
2753
  "aria-label": star === 0 ? "Unrated" : `${star} ${star === 1 ? "star" : "stars"}`,
2869
2754
  title: star === 0 ? "Clear rating" : `${star} stars`,
2870
2755
  className: "inline-flex size-5 shrink-0 items-center justify-center rounded-sm text-muted-foreground outline-none hover:text-primary focus-visible:ring-1 focus-visible:ring-ring data-disabled:cursor-not-allowed data-disabled:opacity-50",
2871
- children: star === 0 ? /* @__PURE__ */ jsx31(CircleOffIcon, {
2756
+ children: star === 0 ? /* @__PURE__ */ jsx27(CircleOffIcon, {
2872
2757
  "aria-hidden": "true",
2873
2758
  className: "size-3"
2874
- }) : /* @__PURE__ */ jsx31(StarIcon, {
2759
+ }) : /* @__PURE__ */ jsx27(StarIcon, {
2875
2760
  "aria-hidden": "true",
2876
2761
  className: star <= value ? "size-3.5 fill-primary text-primary" : "size-3.5"
2877
2762
  })
@@ -2879,8 +2764,8 @@ function StarRating({ label, value, disabled, density, onValueChange }) {
2879
2764
  });
2880
2765
  }
2881
2766
  // src/components/ConfirmationDialog.tsx
2882
- import { useState as useState5 } from "react";
2883
- import { jsx as jsx32, jsxs as jsxs19 } from "react/jsx-runtime";
2767
+ import { useState as useState3 } from "react";
2768
+ import { jsx as jsx28, jsxs as jsxs17 } from "react/jsx-runtime";
2884
2769
  function ConfirmationDialog({
2885
2770
  open,
2886
2771
  title,
@@ -2889,9 +2774,9 @@ function ConfirmationDialog({
2889
2774
  onOpenChange,
2890
2775
  onConfirm
2891
2776
  }) {
2892
- const [isPending, setPending] = useState5(false);
2893
- const [error, setError] = useState5("");
2894
- return /* @__PURE__ */ jsx32(AlertDialog, {
2777
+ const [isPending, setPending] = useState3(false);
2778
+ const [error, setError] = useState3("");
2779
+ return /* @__PURE__ */ jsx28(AlertDialog, {
2895
2780
  open,
2896
2781
  onOpenChange: (next) => {
2897
2782
  if (!isPending) {
@@ -2899,31 +2784,31 @@ function ConfirmationDialog({
2899
2784
  onOpenChange(next);
2900
2785
  }
2901
2786
  },
2902
- children: /* @__PURE__ */ jsxs19(AlertDialogContent, {
2787
+ children: /* @__PURE__ */ jsxs17(AlertDialogContent, {
2903
2788
  children: [
2904
- /* @__PURE__ */ jsxs19(AlertDialogHeader, {
2789
+ /* @__PURE__ */ jsxs17(AlertDialogHeader, {
2905
2790
  children: [
2906
- /* @__PURE__ */ jsx32(AlertDialogTitle, {
2791
+ /* @__PURE__ */ jsx28(AlertDialogTitle, {
2907
2792
  children: title
2908
2793
  }),
2909
- /* @__PURE__ */ jsx32(AlertDialogDescription, {
2794
+ /* @__PURE__ */ jsx28(AlertDialogDescription, {
2910
2795
  children: description
2911
2796
  })
2912
2797
  ]
2913
2798
  }),
2914
- error && /* @__PURE__ */ jsx32(Alert2, {
2799
+ error && /* @__PURE__ */ jsx28(Alert2, {
2915
2800
  variant: "destructive",
2916
- children: /* @__PURE__ */ jsx32(AlertDescription2, {
2801
+ children: /* @__PURE__ */ jsx28(AlertDescription2, {
2917
2802
  children: error
2918
2803
  })
2919
2804
  }),
2920
- /* @__PURE__ */ jsxs19(AlertDialogFooter, {
2805
+ /* @__PURE__ */ jsxs17(AlertDialogFooter, {
2921
2806
  children: [
2922
- /* @__PURE__ */ jsx32(AlertDialogCancel, {
2807
+ /* @__PURE__ */ jsx28(AlertDialogCancel, {
2923
2808
  disabled: isPending,
2924
2809
  children: "Cancel"
2925
2810
  }),
2926
- /* @__PURE__ */ jsx32(Button2, {
2811
+ /* @__PURE__ */ jsx28(Button2, {
2927
2812
  variant: "destructive",
2928
2813
  disabled: isPending,
2929
2814
  onClick: async () => {
@@ -2947,13 +2832,13 @@ function ConfirmationDialog({
2947
2832
  });
2948
2833
  }
2949
2834
  // src/components/ImagePicker.tsx
2950
- import { useRef as useRef5 } from "react";
2835
+ import { useRef as useRef4 } from "react";
2951
2836
  import { ImageIcon, UploadIcon } from "lucide-react";
2952
2837
 
2953
2838
  // src/hooks/useObjectURL.ts
2954
- import { useEffect as useEffect3, useState as useState6 } from "react";
2839
+ import { useEffect as useEffect3, useState as useState4 } from "react";
2955
2840
  function useObjectURL(file) {
2956
- const [url, setURL] = useState6();
2841
+ const [url, setURL] = useState4();
2957
2842
  useEffect3(() => {
2958
2843
  if (!file) {
2959
2844
  setURL(undefined);
@@ -2967,32 +2852,32 @@ function useObjectURL(file) {
2967
2852
  }
2968
2853
 
2969
2854
  // src/components/ImagePicker.tsx
2970
- import { jsx as jsx33, jsxs as jsxs20 } from "react/jsx-runtime";
2855
+ import { jsx as jsx29, jsxs as jsxs18 } from "react/jsx-runtime";
2971
2856
  function ImagePicker({ src, file, label, disabled, onFileChange, onClear }) {
2972
- const input = useRef5(null);
2857
+ const input = useRef4(null);
2973
2858
  const preview = useObjectURL(file);
2974
2859
  const image = file === null ? undefined : preview ?? src;
2975
- return /* @__PURE__ */ jsxs20("figure", {
2860
+ return /* @__PURE__ */ jsxs18("figure", {
2976
2861
  className: "flex min-w-0 flex-col items-center gap-3",
2977
2862
  "aria-label": label,
2978
2863
  children: [
2979
- /* @__PURE__ */ jsxs20(Avatar2, {
2864
+ /* @__PURE__ */ jsxs18(Avatar2, {
2980
2865
  size: "preview",
2981
2866
  shape: "square",
2982
2867
  children: [
2983
- /* @__PURE__ */ jsx33(AvatarImage2, {
2868
+ /* @__PURE__ */ jsx29(AvatarImage2, {
2984
2869
  src: image,
2985
2870
  alt: label
2986
2871
  }),
2987
- /* @__PURE__ */ jsx33(AvatarFallback2, {
2988
- children: /* @__PURE__ */ jsx33(ImageIcon, {
2872
+ /* @__PURE__ */ jsx29(AvatarFallback2, {
2873
+ children: /* @__PURE__ */ jsx29(ImageIcon, {
2989
2874
  className: "size-12",
2990
2875
  "aria-hidden": "true"
2991
2876
  })
2992
2877
  })
2993
2878
  ]
2994
2879
  }),
2995
- /* @__PURE__ */ jsx33("input", {
2880
+ /* @__PURE__ */ jsx29("input", {
2996
2881
  ref: input,
2997
2882
  hidden: true,
2998
2883
  type: "file",
@@ -3006,22 +2891,22 @@ function ImagePicker({ src, file, label, disabled, onFileChange, onClear }) {
3006
2891
  event.currentTarget.value = "";
3007
2892
  }
3008
2893
  }),
3009
- /* @__PURE__ */ jsxs20("div", {
2894
+ /* @__PURE__ */ jsxs18("div", {
3010
2895
  className: "flex flex-wrap justify-center gap-2",
3011
2896
  children: [
3012
- /* @__PURE__ */ jsxs20(Button2, {
2897
+ /* @__PURE__ */ jsxs18(Button2, {
3013
2898
  type: "button",
3014
2899
  variant: "outline",
3015
2900
  disabled,
3016
2901
  onClick: () => input.current?.click(),
3017
2902
  children: [
3018
- /* @__PURE__ */ jsx33(UploadIcon, {
2903
+ /* @__PURE__ */ jsx29(UploadIcon, {
3019
2904
  "data-icon": "inline-start"
3020
2905
  }),
3021
2906
  "Upload image"
3022
2907
  ]
3023
2908
  }),
3024
- /* @__PURE__ */ jsx33(Button2, {
2909
+ /* @__PURE__ */ jsx29(Button2, {
3025
2910
  type: "button",
3026
2911
  variant: "outline",
3027
2912
  disabled: disabled || !image,
@@ -3033,19 +2918,972 @@ function ImagePicker({ src, file, label, disabled, onFileChange, onClear }) {
3033
2918
  ]
3034
2919
  });
3035
2920
  }
3036
- // src/components/PortalProvider.tsx
3037
- import { jsx as jsx34 } from "react/jsx-runtime";
3038
- function PortalProvider({ container, children }) {
3039
- return /* @__PURE__ */ jsx34(PortalContext.Provider, {
3040
- value: container,
2921
+ // src/components/NumberField.tsx
2922
+ import { NumberField as NumberFieldPrimitive } from "@base-ui/react/number-field";
2923
+ import { MinusIcon, PlusIcon, MoveHorizontalIcon } from "lucide-react";
2924
+ import { jsx as jsx30 } from "react/jsx-runtime";
2925
+ function NumberField({ density, className, ...props }) {
2926
+ return /* @__PURE__ */ jsx30(NumberFieldPrimitive.Root, {
2927
+ "data-density": density,
2928
+ "data-slot": "number-field",
2929
+ className: (state) => cn2("flex min-w-0 flex-col gap-field-gap", typeof className === "function" ? className(state) : className),
2930
+ ...props
2931
+ });
2932
+ }
2933
+ function NumberFieldGroup({
2934
+ density,
2935
+ className,
2936
+ ...props
2937
+ }) {
2938
+ return /* @__PURE__ */ jsx30(NumberFieldPrimitive.Group, {
2939
+ "data-density": density,
2940
+ "data-slot": "number-field-group",
2941
+ className: (state) => cn2("flex h-control min-w-0 items-stretch rounded-sm border border-input bg-secondary text-foreground transition-colors focus-within:border-ring focus-within:ring-1 focus-within:ring-ring data-disabled:opacity-50 motion-reduce:transition-none", typeof className === "function" ? className(state) : className),
2942
+ ...props
2943
+ });
2944
+ }
2945
+ function NumberFieldInput({
2946
+ density,
2947
+ className,
2948
+ ...props
2949
+ }) {
2950
+ return /* @__PURE__ */ jsx30(NumberFieldPrimitive.Input, {
2951
+ "data-density": density,
2952
+ "data-slot": "number-field-input",
2953
+ className: (state) => cn2("min-w-0 flex-1 bg-transparent px-control-x text-center text-sm tabular-nums outline-none disabled:cursor-not-allowed", typeof className === "function" ? className(state) : className),
2954
+ ...props
2955
+ });
2956
+ }
2957
+ function NumberFieldDecrement({
2958
+ density,
2959
+ className,
2960
+ children = /* @__PURE__ */ jsx30(MinusIcon, {}),
2961
+ ...props
2962
+ }) {
2963
+ return /* @__PURE__ */ jsx30(NumberFieldPrimitive.Decrement, {
2964
+ "data-density": density,
2965
+ "data-slot": "number-field-decrement",
2966
+ className: (state) => cn2("flex w-control shrink-0 items-center justify-center rounded-s-sm outline-none hover:bg-muted focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-3.5", typeof className === "function" ? className(state) : className),
2967
+ ...props,
2968
+ children
2969
+ });
2970
+ }
2971
+ function NumberFieldIncrement({
2972
+ density,
2973
+ className,
2974
+ children = /* @__PURE__ */ jsx30(PlusIcon, {}),
2975
+ ...props
2976
+ }) {
2977
+ return /* @__PURE__ */ jsx30(NumberFieldPrimitive.Increment, {
2978
+ "data-density": density,
2979
+ "data-slot": "number-field-increment",
2980
+ className: (state) => cn2("flex w-control shrink-0 items-center justify-center rounded-e-sm outline-none hover:bg-muted focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-3.5", typeof className === "function" ? className(state) : className),
2981
+ ...props,
2982
+ children
2983
+ });
2984
+ }
2985
+ function NumberFieldScrubArea({
2986
+ density,
2987
+ className,
2988
+ ...props
2989
+ }) {
2990
+ return /* @__PURE__ */ jsx30(NumberFieldPrimitive.ScrubArea, {
2991
+ "data-density": density,
2992
+ "data-slot": "number-field-scrub-area",
2993
+ className: (state) => cn2("flex w-fit cursor-ew-resize items-center gap-control-gap text-sm font-medium", typeof className === "function" ? className(state) : className),
2994
+ ...props
2995
+ });
2996
+ }
2997
+ function NumberFieldScrubAreaCursor({
2998
+ density,
2999
+ className,
3000
+ children = /* @__PURE__ */ jsx30(MoveHorizontalIcon, {}),
3001
+ ...props
3002
+ }) {
3003
+ const resolvedDensity = useDensity(density);
3004
+ return /* @__PURE__ */ jsx30(NumberFieldPrimitive.ScrubAreaCursor, {
3005
+ "data-density": resolvedDensity,
3006
+ "data-slot": "number-field-scrub-area-cursor",
3007
+ className: (state) => cn2("z-50 font-sans text-sm text-foreground [&_svg]:size-5", typeof className === "function" ? className(state) : className),
3008
+ ...props,
3041
3009
  children
3042
3010
  });
3043
3011
  }
3012
+ // src/components/Meter.tsx
3013
+ import { Meter as MeterPrimitive } from "@base-ui/react/meter";
3014
+ import { jsx as jsx31 } from "react/jsx-runtime";
3015
+ function Meter({ density, className, ...props }) {
3016
+ return /* @__PURE__ */ jsx31(MeterPrimitive.Root, {
3017
+ "data-density": density,
3018
+ "data-slot": "meter",
3019
+ className: (state) => cn2("flex min-w-0 flex-wrap items-center gap-field-gap", typeof className === "function" ? className(state) : className),
3020
+ ...props
3021
+ });
3022
+ }
3023
+ function MeterLabel({ density, className, ...props }) {
3024
+ return /* @__PURE__ */ jsx31(MeterPrimitive.Label, {
3025
+ "data-density": density,
3026
+ "data-slot": "meter-label",
3027
+ className: (state) => cn2("text-sm font-medium", typeof className === "function" ? className(state) : className),
3028
+ ...props
3029
+ });
3030
+ }
3031
+ function MeterValue({ density, className, ...props }) {
3032
+ return /* @__PURE__ */ jsx31(MeterPrimitive.Value, {
3033
+ "data-density": density,
3034
+ "data-slot": "meter-value",
3035
+ className: (state) => cn2("ms-auto text-sm text-muted-foreground tabular-nums", typeof className === "function" ? className(state) : className),
3036
+ ...props
3037
+ });
3038
+ }
3039
+ function MeterTrack({ density, className, ...props }) {
3040
+ return /* @__PURE__ */ jsx31(MeterPrimitive.Track, {
3041
+ "data-density": density,
3042
+ "data-slot": "meter-track",
3043
+ className: (state) => cn2("h-1 w-full overflow-hidden rounded-sm bg-muted", typeof className === "function" ? className(state) : className),
3044
+ ...props
3045
+ });
3046
+ }
3047
+ function MeterIndicator({
3048
+ density,
3049
+ className,
3050
+ ...props
3051
+ }) {
3052
+ return /* @__PURE__ */ jsx31(MeterPrimitive.Indicator, {
3053
+ "data-density": density,
3054
+ "data-slot": "meter-indicator",
3055
+ className: (state) => cn2("h-full bg-primary transition-[width] motion-reduce:transition-none", typeof className === "function" ? className(state) : className),
3056
+ ...props
3057
+ });
3058
+ }
3059
+ // src/components/Stepper.tsx
3060
+ import { Tabs as TabsPrimitive } from "@base-ui/react/tabs";
3061
+ import { CheckIcon as CheckIcon5 } from "lucide-react";
3062
+ import { jsx as jsx32 } from "react/jsx-runtime";
3063
+ function Stepper({ density, className, ...props }) {
3064
+ return /* @__PURE__ */ jsx32(TabsPrimitive.Root, {
3065
+ "data-density": density,
3066
+ "data-slot": "stepper",
3067
+ className: (state) => cn2("group/stepper flex min-w-0 flex-col gap-panel data-[orientation=vertical]:flex-row", typeof className === "function" ? className(state) : className),
3068
+ ...props
3069
+ });
3070
+ }
3071
+ function StepperList({
3072
+ density,
3073
+ className,
3074
+ activateOnFocus = false,
3075
+ ...props
3076
+ }) {
3077
+ return /* @__PURE__ */ jsx32(TabsPrimitive.List, {
3078
+ "data-density": density,
3079
+ "data-slot": "stepper-list",
3080
+ activateOnFocus,
3081
+ className: (state) => cn2("flex min-w-0 gap-panel group-data-[orientation=vertical]/stepper:flex-col", typeof className === "function" ? className(state) : className),
3082
+ ...props
3083
+ });
3084
+ }
3085
+ function StepperTrigger({ density, className, ...props }) {
3086
+ return /* @__PURE__ */ jsx32(TabsPrimitive.Tab, {
3087
+ "data-density": density,
3088
+ "data-slot": "stepper-trigger",
3089
+ className: (state) => cn2("group/step flex min-h-control items-center gap-control-gap rounded-sm text-sm text-muted-foreground outline-none focus-visible:ring-1 focus-visible:ring-ring data-active:text-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:opacity-50", typeof className === "function" ? className(state) : className),
3090
+ ...props
3091
+ });
3092
+ }
3093
+ function StepperIndicator({ completed = false, children, className, ...props }) {
3094
+ return /* @__PURE__ */ jsx32("span", {
3095
+ "aria-hidden": "true",
3096
+ "data-slot": "stepper-indicator",
3097
+ "data-completed": completed || undefined,
3098
+ className: cn2("flex size-control shrink-0 items-center justify-center rounded-sm border border-input bg-secondary text-sm tabular-nums group-data-active/step:border-primary group-data-active/step:bg-primary group-data-active/step:text-primary-foreground data-completed:border-primary data-completed:text-primary [&_svg]:size-3.5", className),
3099
+ ...props,
3100
+ children: completed ? /* @__PURE__ */ jsx32(CheckIcon5, {}) : children
3101
+ });
3102
+ }
3103
+ function StepperContent({ density, className, ...props }) {
3104
+ return /* @__PURE__ */ jsx32(TabsPrimitive.Panel, {
3105
+ "data-density": density,
3106
+ "data-slot": "stepper-content",
3107
+ className: (state) => cn2("min-w-0 flex-1 outline-none focus-visible:ring-1 focus-visible:ring-ring", typeof className === "function" ? className(state) : className),
3108
+ ...props
3109
+ });
3110
+ }
3111
+ // src/components/AppShell.tsx
3112
+ import { jsx as jsx33, jsxs as jsxs19 } from "react/jsx-runtime";
3113
+ function AppShell({
3114
+ navigation,
3115
+ brand,
3116
+ children,
3117
+ header,
3118
+ sidebarFooter,
3119
+ footer,
3120
+ height = "100dvh",
3121
+ defaultSidebarOpen = true,
3122
+ label = "Application",
3123
+ density
3124
+ }) {
3125
+ return /* @__PURE__ */ jsxs19(SidebarProvider2, {
3126
+ density,
3127
+ defaultOpen: defaultSidebarOpen,
3128
+ className: "relative min-h-0",
3129
+ style: { height },
3130
+ "data-scroll": "none",
3131
+ children: [
3132
+ /* @__PURE__ */ jsxs19(Sidebar2, {
3133
+ collapsible: "icon",
3134
+ position: "container",
3135
+ children: [
3136
+ /* @__PURE__ */ jsx33(SidebarHeader2, {
3137
+ children: brand
3138
+ }),
3139
+ /* @__PURE__ */ jsx33(SidebarContent2, {
3140
+ children: /* @__PURE__ */ jsx33("nav", {
3141
+ "aria-label": "Primary navigation",
3142
+ children: /* @__PURE__ */ jsx33(SidebarGroup2, {
3143
+ children: /* @__PURE__ */ jsx33(SidebarMenu2, {
3144
+ children: navigation.map((item) => /* @__PURE__ */ jsx33(SidebarMenuItem2, {
3145
+ children: /* @__PURE__ */ jsxs19(SidebarMenuButton2, {
3146
+ render: /* @__PURE__ */ jsx33("a", {
3147
+ href: item.href,
3148
+ "aria-current": item.active ? "page" : undefined
3149
+ }),
3150
+ isActive: item.active,
3151
+ tooltip: item.label,
3152
+ children: [
3153
+ item.icon,
3154
+ /* @__PURE__ */ jsx33("span", {
3155
+ children: item.label
3156
+ })
3157
+ ]
3158
+ })
3159
+ }, item.id))
3160
+ })
3161
+ })
3162
+ })
3163
+ }),
3164
+ sidebarFooter && /* @__PURE__ */ jsx33(SidebarFooter2, {
3165
+ children: sidebarFooter
3166
+ })
3167
+ ]
3168
+ }),
3169
+ /* @__PURE__ */ jsxs19(SidebarInset2, {
3170
+ "aria-label": label,
3171
+ className: "min-h-0 min-w-0",
3172
+ "data-scroll": "none",
3173
+ children: [
3174
+ /* @__PURE__ */ jsxs19("header", {
3175
+ "data-scroll": "none",
3176
+ className: "flex shrink-0 items-center gap-control-gap border-b border-border p-panel",
3177
+ children: [
3178
+ /* @__PURE__ */ jsx33(SidebarTrigger2, {}),
3179
+ /* @__PURE__ */ jsx33(Separator2, {
3180
+ orientation: "vertical",
3181
+ className: "h-control"
3182
+ }),
3183
+ header
3184
+ ]
3185
+ }),
3186
+ /* @__PURE__ */ jsx33(ScrollArea, {
3187
+ className: "min-h-0 flex-1",
3188
+ children: /* @__PURE__ */ jsx33("div", {
3189
+ className: "flex min-w-0 flex-col gap-panel p-panel",
3190
+ children
3191
+ })
3192
+ }),
3193
+ footer && /* @__PURE__ */ jsx33("footer", {
3194
+ className: "shrink-0 border-t border-border p-panel",
3195
+ "data-scroll": "none",
3196
+ children: footer
3197
+ })
3198
+ ]
3199
+ })
3200
+ ]
3201
+ });
3202
+ }
3203
+ // src/components/PageHeader.tsx
3204
+ import { jsx as jsx34, jsxs as jsxs20 } from "react/jsx-runtime";
3205
+ function PageHeader({ title, description, breadcrumbs, actions, density }) {
3206
+ return /* @__PURE__ */ jsxs20("header", {
3207
+ "data-density": density,
3208
+ "data-slot": "page-header",
3209
+ "data-scroll": "none",
3210
+ className: "flex min-w-0 flex-col gap-field-gap",
3211
+ children: [
3212
+ breadcrumbs,
3213
+ /* @__PURE__ */ jsxs20("div", {
3214
+ className: "flex min-w-0 flex-wrap items-start justify-between gap-panel",
3215
+ children: [
3216
+ /* @__PURE__ */ jsxs20("div", {
3217
+ className: "min-w-0",
3218
+ children: [
3219
+ /* @__PURE__ */ jsx34("h1", {
3220
+ className: "text-xl font-semibold text-foreground",
3221
+ children: title
3222
+ }),
3223
+ description && /* @__PURE__ */ jsx34("div", {
3224
+ className: "mt-1 text-sm text-muted-foreground",
3225
+ children: description
3226
+ })
3227
+ ]
3228
+ }),
3229
+ actions && /* @__PURE__ */ jsx34("div", {
3230
+ className: "flex shrink-0 flex-wrap items-center gap-control-gap",
3231
+ children: actions
3232
+ })
3233
+ ]
3234
+ })
3235
+ ]
3236
+ });
3237
+ }
3238
+ // src/components/WorkspaceSwitcher.tsx
3239
+ import { jsx as jsx35, jsxs as jsxs21 } from "react/jsx-runtime";
3240
+ function WorkspaceSwitcher({
3241
+ workspaces,
3242
+ value,
3243
+ defaultValue,
3244
+ onValueChange,
3245
+ disabled,
3246
+ label = "Workspace",
3247
+ density
3248
+ }) {
3249
+ return /* @__PURE__ */ jsxs21(Select, {
3250
+ items: workspaces,
3251
+ value,
3252
+ defaultValue: defaultValue ?? workspaces[0]?.value,
3253
+ onValueChange: (next) => {
3254
+ if (next !== null)
3255
+ onValueChange?.(next);
3256
+ },
3257
+ disabled,
3258
+ children: [
3259
+ /* @__PURE__ */ jsx35(SelectTrigger, {
3260
+ "aria-label": label,
3261
+ density,
3262
+ children: /* @__PURE__ */ jsx35(SelectValue, {})
3263
+ }),
3264
+ /* @__PURE__ */ jsx35(SelectContent, {
3265
+ density,
3266
+ children: /* @__PURE__ */ jsx35(SelectGroup, {
3267
+ children: workspaces.map((workspace) => /* @__PURE__ */ jsx35(SelectItem, {
3268
+ value: workspace.value,
3269
+ children: workspace.label
3270
+ }, workspace.value))
3271
+ })
3272
+ })
3273
+ ]
3274
+ });
3275
+ }
3276
+ // src/components/AccountMenu.tsx
3277
+ import { jsx as jsx36, jsxs as jsxs22 } from "react/jsx-runtime";
3278
+ function AccountMenu({ name, email, image, onAction, density }) {
3279
+ return /* @__PURE__ */ jsxs22(DropdownMenu2, {
3280
+ children: [
3281
+ /* @__PURE__ */ jsxs22(DropdownMenuTrigger2, {
3282
+ render: /* @__PURE__ */ jsx36(Button2, {
3283
+ variant: "ghost",
3284
+ density
3285
+ }),
3286
+ "aria-label": `Account menu for ${name}`,
3287
+ children: [
3288
+ /* @__PURE__ */ jsxs22(Avatar2, {
3289
+ className: "size-control",
3290
+ children: [
3291
+ /* @__PURE__ */ jsx36(AvatarImage2, {
3292
+ src: image,
3293
+ alt: ""
3294
+ }),
3295
+ /* @__PURE__ */ jsx36(AvatarFallback2, {
3296
+ children: name.slice(0, 2).toUpperCase()
3297
+ })
3298
+ ]
3299
+ }),
3300
+ /* @__PURE__ */ jsx36("span", {
3301
+ children: name
3302
+ })
3303
+ ]
3304
+ }),
3305
+ /* @__PURE__ */ jsx36(DropdownMenuContent2, {
3306
+ density,
3307
+ align: "end",
3308
+ children: /* @__PURE__ */ jsxs22(DropdownMenuGroup2, {
3309
+ children: [
3310
+ /* @__PURE__ */ jsx36(DropdownMenuLabel2, {
3311
+ children: email ?? name
3312
+ }),
3313
+ /* @__PURE__ */ jsx36(DropdownMenuItem2, {
3314
+ onClick: () => onAction("profile"),
3315
+ children: "Profile"
3316
+ }),
3317
+ /* @__PURE__ */ jsx36(DropdownMenuItem2, {
3318
+ onClick: () => onAction("settings"),
3319
+ children: "Settings"
3320
+ }),
3321
+ /* @__PURE__ */ jsx36(DropdownMenuSeparator2, {}),
3322
+ /* @__PURE__ */ jsx36(DropdownMenuItem2, {
3323
+ onClick: () => onAction("sign-out"),
3324
+ children: "Sign out"
3325
+ })
3326
+ ]
3327
+ })
3328
+ })
3329
+ ]
3330
+ });
3331
+ }
3332
+ // src/components/StatCard.tsx
3333
+ import { jsx as jsx37, jsxs as jsxs23 } from "react/jsx-runtime";
3334
+ function StatCard({
3335
+ label,
3336
+ value,
3337
+ change,
3338
+ changeIntent = "neutral",
3339
+ description,
3340
+ children,
3341
+ loading = false,
3342
+ density
3343
+ }) {
3344
+ return /* @__PURE__ */ jsxs23(Card2, {
3345
+ density,
3346
+ "aria-label": label,
3347
+ "aria-busy": loading,
3348
+ children: [
3349
+ /* @__PURE__ */ jsxs23(CardHeader2, {
3350
+ children: [
3351
+ /* @__PURE__ */ jsx37(CardTitle2, {
3352
+ children: label
3353
+ }),
3354
+ description && /* @__PURE__ */ jsx37(CardDescription2, {
3355
+ children: description
3356
+ })
3357
+ ]
3358
+ }),
3359
+ /* @__PURE__ */ jsx37(CardContent2, {
3360
+ children: /* @__PURE__ */ jsxs23("div", {
3361
+ className: "flex flex-wrap items-center justify-between gap-control-gap",
3362
+ children: [
3363
+ loading ? /* @__PURE__ */ jsx37(Skeleton2, {
3364
+ className: "h-8 w-24",
3365
+ "aria-label": `Loading ${label}`
3366
+ }) : /* @__PURE__ */ jsx37("div", {
3367
+ className: "text-2xl font-semibold tabular-nums",
3368
+ children: value
3369
+ }),
3370
+ change && /* @__PURE__ */ jsx37(Badge2, {
3371
+ variant: changeIntent === "positive" ? "success" : changeIntent === "negative" ? "destructive" : "secondary",
3372
+ children: change
3373
+ })
3374
+ ]
3375
+ })
3376
+ }),
3377
+ children && /* @__PURE__ */ jsx37(CardFooter2, {
3378
+ children
3379
+ })
3380
+ ]
3381
+ });
3382
+ }
3383
+ // src/components/AuthForm.tsx
3384
+ import { useId as useId2, useState as useState5 } from "react";
3385
+ import { jsx as jsx38, jsxs as jsxs24 } from "react/jsx-runtime";
3386
+ function AuthForm({
3387
+ mode = "sign-in",
3388
+ onSubmit,
3389
+ footer,
3390
+ alternativeActions,
3391
+ disabled = false,
3392
+ density
3393
+ }) {
3394
+ const id = useId2();
3395
+ const [pending, setPending] = useState5(false);
3396
+ const [error, setError] = useState5("");
3397
+ const title = mode === "sign-up" ? "Create an account" : mode === "reset-password" ? "Reset your password" : "Sign in";
3398
+ async function submit(event) {
3399
+ event.preventDefault();
3400
+ const data = new FormData(event.currentTarget);
3401
+ setError("");
3402
+ setPending(true);
3403
+ try {
3404
+ await onSubmit({
3405
+ email: String(data.get("email") ?? ""),
3406
+ password: String(data.get("password") ?? ""),
3407
+ name: String(data.get("name") ?? "")
3408
+ });
3409
+ } catch (error) {
3410
+ setError(error instanceof Error ? error.message : "Unable to submit. Please try again.");
3411
+ } finally {
3412
+ setPending(false);
3413
+ }
3414
+ }
3415
+ return /* @__PURE__ */ jsxs24(Card2, {
3416
+ density,
3417
+ children: [
3418
+ /* @__PURE__ */ jsxs24(CardHeader2, {
3419
+ children: [
3420
+ /* @__PURE__ */ jsx38(CardTitle2, {
3421
+ children: title
3422
+ }),
3423
+ /* @__PURE__ */ jsx38(CardDescription2, {
3424
+ children: mode === "reset-password" ? "Enter your email to request a password reset." : "Enter your details to continue."
3425
+ })
3426
+ ]
3427
+ }),
3428
+ /* @__PURE__ */ jsx38(CardContent2, {
3429
+ children: /* @__PURE__ */ jsx38("form", {
3430
+ onSubmit: submit,
3431
+ "aria-label": title,
3432
+ "aria-busy": pending,
3433
+ children: /* @__PURE__ */ jsxs24(FieldGroup2, {
3434
+ children: [
3435
+ mode === "sign-up" && /* @__PURE__ */ jsxs24(Field2, {
3436
+ children: [
3437
+ /* @__PURE__ */ jsx38(FieldLabel2, {
3438
+ htmlFor: id + "-name",
3439
+ children: "Name"
3440
+ }),
3441
+ /* @__PURE__ */ jsx38(Input2, {
3442
+ id: id + "-name",
3443
+ name: "name",
3444
+ autoComplete: "name",
3445
+ required: true,
3446
+ disabled: disabled || pending
3447
+ })
3448
+ ]
3449
+ }),
3450
+ /* @__PURE__ */ jsxs24(Field2, {
3451
+ children: [
3452
+ /* @__PURE__ */ jsx38(FieldLabel2, {
3453
+ htmlFor: id + "-email",
3454
+ children: "Email"
3455
+ }),
3456
+ /* @__PURE__ */ jsx38(Input2, {
3457
+ id: id + "-email",
3458
+ name: "email",
3459
+ type: "email",
3460
+ autoComplete: "email",
3461
+ required: true,
3462
+ disabled: disabled || pending
3463
+ })
3464
+ ]
3465
+ }),
3466
+ mode !== "reset-password" && /* @__PURE__ */ jsxs24(Field2, {
3467
+ children: [
3468
+ /* @__PURE__ */ jsx38(FieldLabel2, {
3469
+ htmlFor: id + "-password",
3470
+ children: "Password"
3471
+ }),
3472
+ /* @__PURE__ */ jsx38(Input2, {
3473
+ id: id + "-password",
3474
+ name: "password",
3475
+ type: "password",
3476
+ autoComplete: mode === "sign-up" ? "new-password" : "current-password",
3477
+ minLength: mode === "sign-up" ? 8 : undefined,
3478
+ required: true,
3479
+ disabled: disabled || pending
3480
+ }),
3481
+ mode === "sign-up" && /* @__PURE__ */ jsx38(FieldDescription2, {
3482
+ children: "Use at least eight characters."
3483
+ })
3484
+ ]
3485
+ }),
3486
+ error && /* @__PURE__ */ jsxs24(Alert2, {
3487
+ variant: "destructive",
3488
+ children: [
3489
+ /* @__PURE__ */ jsx38(AlertTitle2, {
3490
+ children: "Request failed"
3491
+ }),
3492
+ /* @__PURE__ */ jsx38(AlertDescription2, {
3493
+ children: error
3494
+ })
3495
+ ]
3496
+ }),
3497
+ /* @__PURE__ */ jsxs24(Button2, {
3498
+ type: "submit",
3499
+ disabled: disabled || pending,
3500
+ children: [
3501
+ pending && /* @__PURE__ */ jsx38(Spinner2, {
3502
+ "data-icon": "inline-start"
3503
+ }),
3504
+ mode === "reset-password" ? "Send reset link" : title
3505
+ ]
3506
+ }),
3507
+ alternativeActions
3508
+ ]
3509
+ })
3510
+ })
3511
+ }),
3512
+ footer && /* @__PURE__ */ jsx38(CardFooter2, {
3513
+ children: footer
3514
+ })
3515
+ ]
3516
+ });
3517
+ }
3518
+ // src/components/SettingsSection.tsx
3519
+ import { jsx as jsx39, jsxs as jsxs25 } from "react/jsx-runtime";
3520
+ function SettingsSection({
3521
+ title,
3522
+ description,
3523
+ children,
3524
+ onSubmit,
3525
+ saveLabel = "Save changes",
3526
+ pending = false,
3527
+ disabled = false,
3528
+ footer,
3529
+ destructive = false,
3530
+ density
3531
+ }) {
3532
+ return /* @__PURE__ */ jsx39("form", {
3533
+ "aria-label": title,
3534
+ onSubmit,
3535
+ "aria-busy": pending,
3536
+ children: /* @__PURE__ */ jsxs25(Card2, {
3537
+ density,
3538
+ children: [
3539
+ /* @__PURE__ */ jsxs25(CardHeader2, {
3540
+ children: [
3541
+ /* @__PURE__ */ jsx39(CardTitle2, {
3542
+ children: title
3543
+ }),
3544
+ description && /* @__PURE__ */ jsx39(CardDescription2, {
3545
+ children: description
3546
+ })
3547
+ ]
3548
+ }),
3549
+ /* @__PURE__ */ jsx39(CardContent2, {
3550
+ children: /* @__PURE__ */ jsxs25("fieldset", {
3551
+ disabled: disabled || pending,
3552
+ className: "min-w-0 border-0 p-0",
3553
+ children: [
3554
+ /* @__PURE__ */ jsx39("legend", {
3555
+ className: "sr-only",
3556
+ children: title
3557
+ }),
3558
+ /* @__PURE__ */ jsx39(FieldGroup2, {
3559
+ children
3560
+ })
3561
+ ]
3562
+ })
3563
+ }),
3564
+ /* @__PURE__ */ jsxs25(CardFooter2, {
3565
+ className: "flex flex-wrap items-center justify-between gap-control-gap",
3566
+ children: [
3567
+ footer,
3568
+ /* @__PURE__ */ jsxs25(Button2, {
3569
+ type: "submit",
3570
+ variant: destructive ? "destructive" : "default",
3571
+ disabled: disabled || pending,
3572
+ children: [
3573
+ pending && /* @__PURE__ */ jsx39(Spinner2, {
3574
+ "data-icon": "inline-start"
3575
+ }),
3576
+ saveLabel
3577
+ ]
3578
+ })
3579
+ ]
3580
+ })
3581
+ ]
3582
+ })
3583
+ });
3584
+ }
3585
+ // src/components/TagInput.tsx
3586
+ import { jsx as jsx40, jsxs as jsxs26 } from "react/jsx-runtime";
3587
+ function TagInput({
3588
+ label,
3589
+ options,
3590
+ value,
3591
+ defaultValue,
3592
+ onValueChange,
3593
+ disabled,
3594
+ name,
3595
+ placeholder = "Add tags",
3596
+ density
3597
+ }) {
3598
+ const anchor = useComboboxAnchor();
3599
+ return /* @__PURE__ */ jsxs26(Combobox, {
3600
+ items: options,
3601
+ multiple: true,
3602
+ value,
3603
+ defaultValue,
3604
+ onValueChange,
3605
+ disabled,
3606
+ name,
3607
+ children: [
3608
+ /* @__PURE__ */ jsxs26(ComboboxChips, {
3609
+ ref: anchor,
3610
+ density,
3611
+ children: [
3612
+ /* @__PURE__ */ jsx40(ComboboxValue, {
3613
+ children: (values) => values.map((item) => /* @__PURE__ */ jsx40(ComboboxChip, {
3614
+ removeLabel: `Remove ${item}`,
3615
+ children: item
3616
+ }, item))
3617
+ }),
3618
+ /* @__PURE__ */ jsx40(ComboboxChipsInput, {
3619
+ "aria-label": label,
3620
+ placeholder
3621
+ })
3622
+ ]
3623
+ }),
3624
+ /* @__PURE__ */ jsxs26(ComboboxContent, {
3625
+ anchor,
3626
+ density,
3627
+ children: [
3628
+ /* @__PURE__ */ jsx40(ComboboxEmpty, {
3629
+ children: "No matching tags."
3630
+ }),
3631
+ /* @__PURE__ */ jsx40(ComboboxList, {
3632
+ children: /* @__PURE__ */ jsx40(ComboboxGroup, {
3633
+ children: /* @__PURE__ */ jsx40(ComboboxCollection, {
3634
+ children: (item) => /* @__PURE__ */ jsx40(ComboboxItem, {
3635
+ value: item,
3636
+ children: item
3637
+ }, item)
3638
+ })
3639
+ })
3640
+ })
3641
+ ]
3642
+ })
3643
+ ]
3644
+ });
3645
+ }
3646
+ // src/components/FilterBar.tsx
3647
+ import { jsx as jsx41, jsxs as jsxs27 } from "react/jsx-runtime";
3648
+ function FilterBar({
3649
+ label,
3650
+ search,
3651
+ onSearchChange,
3652
+ filters,
3653
+ value,
3654
+ onValueChange,
3655
+ disabled,
3656
+ density
3657
+ }) {
3658
+ return /* @__PURE__ */ jsxs27("fieldset", {
3659
+ "aria-label": label,
3660
+ disabled,
3661
+ "data-density": density,
3662
+ className: "flex min-w-0 flex-wrap items-center gap-2",
3663
+ children: [
3664
+ /* @__PURE__ */ jsx41(Input2, {
3665
+ "aria-label": `Search ${label}`,
3666
+ type: "search",
3667
+ value: search,
3668
+ onChange: (event) => onSearchChange(event.target.value),
3669
+ className: "min-w-40 flex-1"
3670
+ }),
3671
+ filters.map((filter) => /* @__PURE__ */ jsxs27(NativeSelect2, {
3672
+ "aria-label": filter.label,
3673
+ value: value[filter.id] ?? "",
3674
+ onChange: (event) => onValueChange({ ...value, [filter.id]: event.target.value }),
3675
+ children: [
3676
+ /* @__PURE__ */ jsxs27(NativeSelectOption2, {
3677
+ value: "",
3678
+ children: [
3679
+ "All ",
3680
+ filter.label.toLowerCase()
3681
+ ]
3682
+ }),
3683
+ filter.options.map((option) => /* @__PURE__ */ jsx41(NativeSelectOption2, {
3684
+ value: option.value,
3685
+ children: option.label
3686
+ }, option.value))
3687
+ ]
3688
+ }, filter.id)),
3689
+ /* @__PURE__ */ jsx41(Button2, {
3690
+ type: "button",
3691
+ variant: "ghost",
3692
+ disabled: !search && !Object.values(value).some(Boolean),
3693
+ onClick: () => {
3694
+ onSearchChange("");
3695
+ onValueChange({});
3696
+ },
3697
+ children: "Clear filters"
3698
+ })
3699
+ ]
3700
+ });
3701
+ }
3702
+ // src/components/BarList.tsx
3703
+ import { jsx as jsx42, jsxs as jsxs28 } from "react/jsx-runtime";
3704
+ function BarList({
3705
+ label,
3706
+ items,
3707
+ onItemSelect,
3708
+ valueFormatter = (value) => value.toLocaleString(),
3709
+ density
3710
+ }) {
3711
+ const max = Math.max(1, ...items.map((item) => item.value));
3712
+ return /* @__PURE__ */ jsxs28("section", {
3713
+ "aria-label": label,
3714
+ "data-density": density,
3715
+ children: [
3716
+ /* @__PURE__ */ jsx42("ul", {
3717
+ className: "grid gap-3",
3718
+ children: items.map((item) => /* @__PURE__ */ jsx42("li", {
3719
+ children: /* @__PURE__ */ jsxs28(Meter, {
3720
+ min: 0,
3721
+ max,
3722
+ value: item.value,
3723
+ "aria-label": item.label,
3724
+ format: { maximumFractionDigits: 2 },
3725
+ children: [
3726
+ /* @__PURE__ */ jsxs28("div", {
3727
+ className: "mb-1 flex items-center justify-between gap-3 text-sm",
3728
+ children: [
3729
+ /* @__PURE__ */ jsx42(MeterLabel, {
3730
+ children: onItemSelect ? /* @__PURE__ */ jsx42(Button2, {
3731
+ type: "button",
3732
+ variant: "link",
3733
+ className: "h-auto p-0",
3734
+ onClick: () => onItemSelect(item),
3735
+ children: item.label
3736
+ }) : item.label
3737
+ }),
3738
+ /* @__PURE__ */ jsx42(MeterValue, {
3739
+ children: () => valueFormatter(item.value)
3740
+ })
3741
+ ]
3742
+ }),
3743
+ /* @__PURE__ */ jsx42(MeterTrack, {
3744
+ children: /* @__PURE__ */ jsx42(MeterIndicator, {})
3745
+ })
3746
+ ]
3747
+ })
3748
+ }, item.id))
3749
+ }),
3750
+ !items.length && /* @__PURE__ */ jsx42("p", {
3751
+ role: "status",
3752
+ className: "text-sm text-muted-foreground",
3753
+ children: "No data available."
3754
+ })
3755
+ ]
3756
+ });
3757
+ }
3758
+ // src/components/StatusTracker.tsx
3759
+ import { jsx as jsx43, jsxs as jsxs29 } from "react/jsx-runtime";
3760
+ var statusClasses = { success: "bg-success", warning: "bg-warning", error: "bg-destructive", unknown: "bg-muted" };
3761
+ function StatusTracker({ label, items, onItemSelect, density }) {
3762
+ return /* @__PURE__ */ jsx43(TooltipProvider2, {
3763
+ children: /* @__PURE__ */ jsx43("div", {
3764
+ role: "group",
3765
+ "aria-label": label,
3766
+ "data-density": density,
3767
+ className: "flex min-w-0 gap-1",
3768
+ children: items.map((item) => /* @__PURE__ */ jsxs29(Tooltip2, {
3769
+ children: [
3770
+ /* @__PURE__ */ jsx43(TooltipTrigger2, {
3771
+ "aria-label": `${item.label}: ${item.status}`,
3772
+ onClick: () => onItemSelect?.(item),
3773
+ className: cn2("h-8 min-w-2 flex-1 rounded-sm outline-none focus-visible:ring-2 focus-visible:ring-ring", statusClasses[item.status])
3774
+ }),
3775
+ /* @__PURE__ */ jsxs29(TooltipContent2, {
3776
+ children: [
3777
+ item.label,
3778
+ ": ",
3779
+ item.description ?? item.status
3780
+ ]
3781
+ })
3782
+ ]
3783
+ }, item.id))
3784
+ })
3785
+ });
3786
+ }
3787
+ // src/components/DashboardLayout.tsx
3788
+ import { jsx as jsx44, jsxs as jsxs30 } from "react/jsx-runtime";
3789
+ function DashboardLayout({
3790
+ title,
3791
+ description,
3792
+ actions,
3793
+ filters,
3794
+ stats,
3795
+ children,
3796
+ footer,
3797
+ density
3798
+ }) {
3799
+ return /* @__PURE__ */ jsxs30("div", {
3800
+ "data-density": density,
3801
+ "data-scroll": "none",
3802
+ className: "grid min-w-0 gap-6",
3803
+ children: [
3804
+ /* @__PURE__ */ jsx44(PageHeader, {
3805
+ title,
3806
+ description,
3807
+ actions
3808
+ }),
3809
+ filters,
3810
+ stats.length > 0 && /* @__PURE__ */ jsx44("div", {
3811
+ className: "grid gap-4 sm:grid-cols-2 xl:grid-cols-4",
3812
+ children: stats.map(({ id, ...stat }) => /* @__PURE__ */ jsx44(StatCard, {
3813
+ ...stat
3814
+ }, id))
3815
+ }),
3816
+ /* @__PURE__ */ jsx44("div", {
3817
+ className: "grid min-w-0 gap-4",
3818
+ children
3819
+ }),
3820
+ footer
3821
+ ]
3822
+ });
3823
+ }
3824
+ // src/components/BillingUsage.tsx
3825
+ import { jsx as jsx45, jsxs as jsxs31 } from "react/jsx-runtime";
3826
+ function BillingUsage({ plan, price, period, metrics, onManage, pending, density }) {
3827
+ return /* @__PURE__ */ jsxs31(Card2, {
3828
+ density,
3829
+ "aria-label": "Billing and usage",
3830
+ children: [
3831
+ /* @__PURE__ */ jsxs31(CardHeader2, {
3832
+ children: [
3833
+ /* @__PURE__ */ jsx45(CardTitle2, {
3834
+ children: plan
3835
+ }),
3836
+ /* @__PURE__ */ jsxs31(CardDescription2, {
3837
+ children: [
3838
+ price,
3839
+ " · ",
3840
+ period
3841
+ ]
3842
+ })
3843
+ ]
3844
+ }),
3845
+ /* @__PURE__ */ jsx45(CardContent2, {
3846
+ className: "grid gap-4",
3847
+ children: metrics.map((metric) => /* @__PURE__ */ jsxs31(Meter, {
3848
+ value: metric.used,
3849
+ max: metric.limit,
3850
+ "aria-label": metric.label,
3851
+ children: [
3852
+ /* @__PURE__ */ jsxs31("div", {
3853
+ className: "mb-2 flex items-center justify-between gap-3 text-sm",
3854
+ children: [
3855
+ /* @__PURE__ */ jsx45(MeterLabel, {
3856
+ children: metric.label
3857
+ }),
3858
+ /* @__PURE__ */ jsx45(MeterValue, {
3859
+ children: () => `${metric.used.toLocaleString()} / ${metric.limit.toLocaleString()}${metric.unit ? ` ${metric.unit}` : ""}`
3860
+ })
3861
+ ]
3862
+ }),
3863
+ /* @__PURE__ */ jsx45(MeterTrack, {
3864
+ children: /* @__PURE__ */ jsx45(MeterIndicator, {})
3865
+ })
3866
+ ]
3867
+ }, metric.id))
3868
+ }),
3869
+ /* @__PURE__ */ jsx45(CardFooter2, {
3870
+ children: /* @__PURE__ */ jsx45(Button2, {
3871
+ type: "button",
3872
+ variant: "outline",
3873
+ onClick: onManage,
3874
+ disabled: pending,
3875
+ children: "Manage billing"
3876
+ })
3877
+ })
3878
+ ]
3879
+ });
3880
+ }
3044
3881
  export {
3045
3882
  Accordion,
3046
3883
  AccordionContent,
3047
3884
  AccordionItem,
3048
3885
  AccordionTrigger,
3886
+ AccountMenu,
3049
3887
  Alert2 as Alert,
3050
3888
  AlertAction2 as AlertAction,
3051
3889
  AlertDescription2 as AlertDescription,
@@ -3062,6 +3900,7 @@ export {
3062
3900
  AlertDialogTitle,
3063
3901
  AlertDialogTrigger,
3064
3902
  AlertTitle2 as AlertTitle,
3903
+ AppShell,
3065
3904
  AspectRatio,
3066
3905
  Attachment,
3067
3906
  AttachmentAction,
@@ -3072,6 +3911,7 @@ export {
3072
3911
  AttachmentMedia,
3073
3912
  AttachmentTitle,
3074
3913
  AttachmentTrigger,
3914
+ AuthForm,
3075
3915
  Avatar2 as Avatar,
3076
3916
  AvatarBadge2 as AvatarBadge,
3077
3917
  AvatarFallback2 as AvatarFallback,
@@ -3079,6 +3919,8 @@ export {
3079
3919
  AvatarGroupCount2 as AvatarGroupCount,
3080
3920
  AvatarImage2 as AvatarImage,
3081
3921
  Badge2 as Badge,
3922
+ BarList,
3923
+ BillingUsage,
3082
3924
  Breadcrumb,
3083
3925
  BreadcrumbEllipsis,
3084
3926
  BreadcrumbItem,
@@ -3137,6 +3979,7 @@ export {
3137
3979
  ContextMenuSubContent,
3138
3980
  ContextMenuSubTrigger,
3139
3981
  ContextMenuTrigger,
3982
+ DashboardLayout,
3140
3983
  DensityProvider,
3141
3984
  Dialog2 as Dialog,
3142
3985
  DialogClose2 as DialogClose,
@@ -3149,9 +3992,9 @@ export {
3149
3992
  DialogTitle2 as DialogTitle,
3150
3993
  DialogTrigger2 as DialogTrigger,
3151
3994
  DirectionProvider2 as DirectionProvider,
3152
- DragDropPreview,
3153
- DragDropProvider,
3154
- DragSource,
3995
+ DragDropPreview2 as DragDropPreview,
3996
+ DragDropProvider2 as DragDropProvider,
3997
+ DragSource2 as DragSource,
3155
3998
  Drawer,
3156
3999
  DrawerClose,
3157
4000
  DrawerContent,
@@ -3163,7 +4006,7 @@ export {
3163
4006
  DrawerSwipeHandle,
3164
4007
  DrawerTitle,
3165
4008
  DrawerTrigger,
3166
- DropTarget,
4009
+ DropTarget2 as DropTarget,
3167
4010
  DropdownMenu2 as DropdownMenu,
3168
4011
  DropdownMenuCheckboxItem2 as DropdownMenuCheckboxItem,
3169
4012
  DropdownMenuContent2 as DropdownMenuContent,
@@ -3196,6 +4039,7 @@ export {
3196
4039
  FieldSeparator2 as FieldSeparator,
3197
4040
  FieldSet2 as FieldSet,
3198
4041
  FieldTitle2 as FieldTitle,
4042
+ FilterBar,
3199
4043
  HoverCard2 as HoverCard,
3200
4044
  HoverCardContent2 as HoverCardContent,
3201
4045
  HoverCardTrigger2 as HoverCardTrigger,
@@ -3219,6 +4063,7 @@ export {
3219
4063
  ItemSeparator,
3220
4064
  ItemTitle,
3221
4065
  JsonViewer,
4066
+ Kanban2 as Kanban,
3222
4067
  Kbd2 as Kbd,
3223
4068
  KbdGroup2 as KbdGroup,
3224
4069
  Label2 as Label,
@@ -3247,9 +4092,14 @@ export {
3247
4092
  MessageFooter,
3248
4093
  MessageGroup,
3249
4094
  MessageHeader,
3250
- NativeSelect,
3251
- NativeSelectOptGroup,
3252
- NativeSelectOption,
4095
+ Meter,
4096
+ MeterIndicator,
4097
+ MeterLabel,
4098
+ MeterTrack,
4099
+ MeterValue,
4100
+ NativeSelect2 as NativeSelect,
4101
+ NativeSelectOptGroup2 as NativeSelectOptGroup,
4102
+ NativeSelectOption2 as NativeSelectOption,
3253
4103
  NavigationMenu,
3254
4104
  NavigationMenuContent,
3255
4105
  NavigationMenuIndicator,
@@ -3258,6 +4108,14 @@ export {
3258
4108
  NavigationMenuList,
3259
4109
  NavigationMenuPositioner,
3260
4110
  NavigationMenuTrigger,
4111
+ NumberField,
4112
+ NumberFieldDecrement,
4113
+ NumberFieldGroup,
4114
+ NumberFieldIncrement,
4115
+ NumberFieldInput,
4116
+ NumberFieldScrubArea,
4117
+ NumberFieldScrubAreaCursor,
4118
+ PageHeader,
3261
4119
  PageMessage,
3262
4120
  Pagination,
3263
4121
  PaginationContent,
@@ -3272,7 +4130,7 @@ export {
3272
4130
  PopoverHeader2 as PopoverHeader,
3273
4131
  PopoverTitle2 as PopoverTitle,
3274
4132
  PopoverTrigger2 as PopoverTrigger,
3275
- PortalProvider,
4133
+ PortalProvider2 as PortalProvider,
3276
4134
  Progress2 as Progress,
3277
4135
  ProgressIndicator2 as ProgressIndicator,
3278
4136
  ProgressLabel2 as ProgressLabel,
@@ -3282,6 +4140,7 @@ export {
3282
4140
  RadioGroupItem2 as RadioGroupItem,
3283
4141
  ScrollArea,
3284
4142
  ScrollBar,
4143
+ ScrollGuard,
3285
4144
  Select,
3286
4145
  SelectContent,
3287
4146
  SelectGroup,
@@ -3293,6 +4152,7 @@ export {
3293
4152
  SelectTrigger,
3294
4153
  SelectValue,
3295
4154
  Separator2 as Separator,
4155
+ SettingsSection,
3296
4156
  Sheet2 as Sheet,
3297
4157
  SheetClose2 as SheetClose,
3298
4158
  SheetContent2 as SheetContent,
@@ -3328,6 +4188,13 @@ export {
3328
4188
  Slider2 as Slider,
3329
4189
  Spinner2 as Spinner,
3330
4190
  StarRating,
4191
+ StatCard,
4192
+ StatusTracker,
4193
+ Stepper,
4194
+ StepperContent,
4195
+ StepperIndicator,
4196
+ StepperList,
4197
+ StepperTrigger,
3331
4198
  Switch2 as Switch,
3332
4199
  Table2 as Table,
3333
4200
  TableBody2 as TableBody,
@@ -3337,10 +4204,11 @@ export {
3337
4204
  TableHead2 as TableHead,
3338
4205
  TableHeader2 as TableHeader,
3339
4206
  TableRow2 as TableRow,
3340
- Tabs,
3341
- TabsContent,
3342
- TabsList,
3343
- TabsTrigger,
4207
+ Tabs2 as Tabs,
4208
+ TabsContent2 as TabsContent,
4209
+ TabsList2 as TabsList,
4210
+ TabsTrigger2 as TabsTrigger,
4211
+ TagInput,
3344
4212
  Textarea2 as Textarea,
3345
4213
  ThemeProvider,
3346
4214
  Toast,
@@ -3356,10 +4224,17 @@ export {
3356
4224
  Toggle2 as Toggle,
3357
4225
  ToggleGroup2 as ToggleGroup,
3358
4226
  ToggleGroupItem2 as ToggleGroupItem,
4227
+ Toolbar2 as Toolbar,
4228
+ ToolbarButton2 as ToolbarButton,
4229
+ ToolbarGroup2 as ToolbarGroup,
4230
+ ToolbarInput2 as ToolbarInput,
4231
+ ToolbarLink2 as ToolbarLink,
4232
+ ToolbarSeparator2 as ToolbarSeparator,
3359
4233
  Tooltip2 as Tooltip,
3360
4234
  TooltipContent2 as TooltipContent,
3361
4235
  TooltipProvider2 as TooltipProvider,
3362
4236
  TooltipTrigger2 as TooltipTrigger,
4237
+ WorkspaceSwitcher,
3363
4238
  badgeVariants2 as badgeVariants,
3364
4239
  buttonGroupVariants,
3365
4240
  buttonVariants2 as buttonVariants,
@@ -3367,13 +4242,13 @@ export {
3367
4242
  createToastManager,
3368
4243
  markerVariants,
3369
4244
  navigationMenuTriggerStyle,
3370
- tabsListVariants,
4245
+ tabsListVariants2 as tabsListVariants,
3371
4246
  toggleVariants2 as toggleVariants,
3372
4247
  useComboboxAnchor,
3373
4248
  useDirection2 as useDirection,
3374
- useDragDrop,
3375
- useDragSource,
3376
- useDropTarget,
4249
+ useDragDrop2 as useDragDrop,
4250
+ useDragSource2 as useDragSource,
4251
+ useDropTarget2 as useDropTarget,
3377
4252
  usePortalContainer2 as usePortalContainer,
3378
4253
  useSidebar2 as useSidebar,
3379
4254
  useTheme2 as useTheme,