@alexgorbatchev/shadcn 0.0.41 → 0.0.43

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 (459) hide show
  1. package/README.md +47 -25
  2. package/dist/analytics/AnalyticsContext.d.ts +2 -0
  3. package/dist/analytics/analyticsSource.d.ts +4 -0
  4. package/dist/analytics/types.d.ts +55 -0
  5. package/dist/{chunk-2agnzxa0.js → chunk-05shyxqp.js} +1 -1
  6. package/dist/{chunk-59p19t57.js → chunk-0fmrwsgp.js} +7 -2
  7. package/dist/{chunk-p45ytcc2.js → chunk-0gwqtywa.js} +3 -3
  8. package/dist/{chunk-60756tfb.js → chunk-0q9n4syq.js} +3 -3
  9. package/dist/{chunk-dwkjt1mm.js → chunk-0twprqdp.js} +13 -3
  10. package/dist/{chunk-rggdd436.js → chunk-0xqqs9kw.js} +1 -1
  11. package/dist/{chunk-cyfbg25t.js → chunk-0ybh8xre.js} +3 -3
  12. package/dist/{chunk-dvmxyk3q.js → chunk-10t1w38s.js} +2 -2
  13. package/dist/{chunk-57jj9v64.js → chunk-14mh00z3.js} +3 -3
  14. package/dist/{chunk-h6kcqtzf.js → chunk-1hq2k0fs.js} +6 -2
  15. package/dist/{chunk-saf6rz9s.js → chunk-1hy9rfvc.js} +1 -1
  16. package/dist/{chunk-nvegyysk.js → chunk-1q30wk9x.js} +2 -2
  17. package/dist/{chunk-3bzbwhda.js → chunk-1sqv5axv.js} +6 -2
  18. package/dist/{chunk-yxgyprns.js → chunk-1sxpyjph.js} +1 -1
  19. package/dist/{chunk-zdx7dtcw.js → chunk-1t959882.js} +1 -1
  20. package/dist/{chunk-p8gshf3k.js → chunk-1zbtg30t.js} +6 -2
  21. package/dist/{chunk-4djw71cv.js → chunk-21ab0jsp.js} +12 -6
  22. package/dist/{chunk-7gpq6kty.js → chunk-23419f5j.js} +1 -1
  23. package/dist/{chunk-f5hphka1.js → chunk-23jrbq6y.js} +5 -1
  24. package/dist/{chunk-k4aawd44.js → chunk-2krw4tjq.js} +1 -1
  25. package/dist/{chunk-644cnngf.js → chunk-2mn2ctsk.js} +6 -0
  26. package/dist/{chunk-7e3samhv.js → chunk-2mswp6h1.js} +3 -3
  27. package/dist/{chunk-4zaj9tsr.js → chunk-2pzvxbq3.js} +3 -3
  28. package/dist/chunk-38301e40.js +182 -0
  29. package/dist/{chunk-he0w0tx1.js → chunk-3b6ws9hk.js} +1 -1
  30. package/dist/{chunk-ttdeyjvj.js → chunk-3c35ysaq.js} +1 -1
  31. package/dist/{chunk-v0va5w5c.js → chunk-3r0q02k6.js} +720 -481
  32. package/dist/{chunk-fgzcp6dt.js → chunk-3t7h84te.js} +1 -1
  33. package/dist/{chunk-7b3n0ftm.js → chunk-3v95p5js.js} +1 -1
  34. package/dist/{chunk-ey6q1ra5.js → chunk-3wap1z7h.js} +6 -2
  35. package/dist/{chunk-d0qccfv4.js → chunk-46tg5t7g.js} +3 -3
  36. package/dist/chunk-4710gn6d.js +15 -0
  37. package/dist/{chunk-5z9y2mdj.js → chunk-474fgeht.js} +1 -1
  38. package/dist/{chunk-7mj8g4vx.js → chunk-48yhjpfs.js} +1 -1
  39. package/dist/{chunk-yazbpnav.js → chunk-4e1eq1t5.js} +2 -2
  40. package/dist/{chunk-pqe77cc1.js → chunk-4e879g03.js} +1 -1
  41. package/dist/{chunk-espw1b6e.js → chunk-4gcpx4pm.js} +1 -1
  42. package/dist/{chunk-s0typ7hv.js → chunk-55s7v2mw.js} +2 -2
  43. package/dist/{chunk-ret3m6vs.js → chunk-588wj6g4.js} +1 -1
  44. package/dist/{chunk-mwzhaw5v.js → chunk-5h7xxnr7.js} +1 -1
  45. package/dist/chunk-5mydsjp3.js +48 -0
  46. package/dist/{chunk-pc2d5950.js → chunk-5myr07fp.js} +1 -1
  47. package/dist/{chunk-f0jej3qt.js → chunk-5w279fsn.js} +6 -6
  48. package/dist/{chunk-zn1w5cd5.js → chunk-5zyc28sc.js} +11 -7
  49. package/dist/{chunk-hh43wg05.js → chunk-60p7sagm.js} +12 -6
  50. package/dist/{chunk-0skytwpk.js → chunk-634pk1cg.js} +2 -2
  51. package/dist/{chunk-vf1rsqpk.js → chunk-645dhey7.js} +1 -1
  52. package/dist/{chunk-na2mxcxz.js → chunk-6fp821jv.js} +2 -2
  53. package/dist/{chunk-dzvsjw59.js → chunk-6jw87d07.js} +33 -4
  54. package/dist/{chunk-58st8hnr.js → chunk-6kygf29c.js} +1 -1
  55. package/dist/{chunk-sb00e3gj.js → chunk-77xfccfq.js} +3 -3
  56. package/dist/chunk-7jpsybag.js +33 -0
  57. package/dist/{chunk-987zth0a.js → chunk-7mnba0d8.js} +8 -3
  58. package/dist/chunk-7ny0vyek.js +25 -0
  59. package/dist/{chunk-jkgje3ar.js → chunk-7qwp41y5.js} +1 -1
  60. package/dist/{chunk-rffrerg5.js → chunk-7w8yemba.js} +7 -2
  61. package/dist/{chunk-809fwd84.js → chunk-7zyf9nnf.js} +24 -10
  62. package/dist/{chunk-k138cvn8.js → chunk-83v2vma2.js} +1 -1
  63. package/dist/{chunk-enxt9sfx.js → chunk-84gs32n6.js} +1 -1
  64. package/dist/{chunk-5x7387nh.js → chunk-8bxfp671.js} +1 -1
  65. package/dist/{chunk-726x26pk.js → chunk-8jnfvgvk.js} +1 -1
  66. package/dist/{chunk-6kwf9644.js → chunk-8k18tnap.js} +1 -1
  67. package/dist/{chunk-3jrsp186.js → chunk-8q0xpeh4.js} +1 -1
  68. package/dist/{chunk-gqm1483k.js → chunk-8rtm4y46.js} +2 -2
  69. package/dist/chunk-8ssktt4b.js +11 -0
  70. package/dist/{chunk-d4bm5rzy.js → chunk-8wc2z7te.js} +37 -12
  71. package/dist/{chunk-b06rfrfz.js → chunk-8xnjf4ef.js} +6 -2
  72. package/dist/{chunk-tfqfqn8z.js → chunk-96x8wa8w.js} +1 -1
  73. package/dist/{chunk-3se9vgw9.js → chunk-9qcqxp3v.js} +1 -1
  74. package/dist/{chunk-dtkw8m6d.js → chunk-9t5h5ps3.js} +1 -1
  75. package/dist/{chunk-tnnf8ydf.js → chunk-9w9berq8.js} +6 -1
  76. package/dist/{chunk-a50gtwc9.js → chunk-a82d9z1e.js} +1 -1
  77. package/dist/{chunk-q5m8vz61.js → chunk-aahx2gyb.js} +1 -1
  78. package/dist/{chunk-3dyqen8w.js → chunk-agy4dzea.js} +1 -1
  79. package/dist/{chunk-n789tekk.js → chunk-axw1yqxz.js} +1 -1
  80. package/dist/{chunk-97kagey4.js → chunk-beywepck.js} +5 -1
  81. package/dist/{chunk-rkbbjjwq.js → chunk-bt7ramb0.js} +6 -2
  82. package/dist/{chunk-ga79snaw.js → chunk-c4m53x5s.js} +1 -1
  83. package/dist/{chunk-8vfh3ez0.js → chunk-c9ypcp4s.js} +32 -19
  84. package/dist/{chunk-ybypybsb.js → chunk-cmd9erv0.js} +6 -1
  85. package/dist/{chunk-r6p7982y.js → chunk-cqbd39je.js} +6 -1
  86. package/dist/{chunk-81y5s246.js → chunk-ct6ayjkt.js} +1 -1
  87. package/dist/{chunk-bt57g6ms.js → chunk-cvg5366s.js} +1 -1
  88. package/dist/{chunk-7p6032sv.js → chunk-cy1xv5nz.js} +10 -2
  89. package/dist/{chunk-6wx7cr8d.js → chunk-d444bwwf.js} +2 -2
  90. package/dist/{chunk-yrxjwwz3.js → chunk-dfkzm4f1.js} +218 -199
  91. package/dist/{chunk-x0megjk3.js → chunk-dq6se94p.js} +1 -1
  92. package/dist/{chunk-3zrw72sw.js → chunk-e970kv8r.js} +1 -1
  93. package/dist/{chunk-3x0ter92.js → chunk-e9756880.js} +1 -1
  94. package/dist/{chunk-0kyfh857.js → chunk-e9v481he.js} +1 -1
  95. package/dist/{chunk-wndqbss9.js → chunk-ekbesw9t.js} +7 -2
  96. package/dist/{chunk-yc9ytj9j.js → chunk-esrypw6g.js} +1 -1
  97. package/dist/{chunk-b43t3etd.js → chunk-ewhk1ze1.js} +1 -1
  98. package/dist/{chunk-kwbgqv5z.js → chunk-f08tw6hg.js} +1 -1
  99. package/dist/{chunk-mgdec3zt.js → chunk-f28xnx55.js} +2 -2
  100. package/dist/{chunk-43hfchxf.js → chunk-f63cr8mx.js} +9 -3
  101. package/dist/{chunk-jy50ebz0.js → chunk-f6rbv5gf.js} +8 -4
  102. package/dist/{chunk-78cs7n93.js → chunk-f72tygjq.js} +1 -1
  103. package/dist/{chunk-p9aqek06.js → chunk-f9kdk0q4.js} +5 -1
  104. package/dist/{chunk-ag6xpy6q.js → chunk-f9twxy4y.js} +11 -3
  105. package/dist/{chunk-arsjatb3.js → chunk-fky4t8cc.js} +2 -2
  106. package/dist/{chunk-4521sn9e.js → chunk-fkzh31y0.js} +1 -1
  107. package/dist/{chunk-09agnr7z.js → chunk-fpj82hex.js} +1 -1
  108. package/dist/{chunk-24d68cjp.js → chunk-fw86vanx.js} +8 -2
  109. package/dist/{chunk-gtbtfnd7.js → chunk-fxfwgr5g.js} +4 -4
  110. package/dist/{chunk-jf0y740b.js → chunk-fz2x6hvf.js} +1 -1
  111. package/dist/{chunk-1hj251b8.js → chunk-gbmvkt3q.js} +19 -7
  112. package/dist/{chunk-9nckfswe.js → chunk-ghz2g6j5.js} +9 -4
  113. package/dist/{chunk-sfmkphna.js → chunk-gtebjkkz.js} +10 -5
  114. package/dist/{chunk-dv8344f7.js → chunk-h3qqt3rg.js} +1 -1
  115. package/dist/{chunk-46jdxdzy.js → chunk-h5zhqdmb.js} +3 -3
  116. package/dist/{chunk-9a1hj7mc.js → chunk-hj9avapz.js} +4 -4
  117. package/dist/{chunk-b513tz37.js → chunk-hxg0pkj9.js} +1 -1
  118. package/dist/{chunk-jrzx4wre.js → chunk-j2hawnp9.js} +2 -2
  119. package/dist/{chunk-c2vcrwjp.js → chunk-j2n8684w.js} +6 -1
  120. package/dist/{chunk-ws4y7ctw.js → chunk-jadf0xqn.js} +6 -2
  121. package/dist/{chunk-ex1zk6ta.js → chunk-jgdpa00w.js} +10 -7
  122. package/dist/{chunk-yxej7z50.js → chunk-jk941nke.js} +1 -1
  123. package/dist/{chunk-e7wbz622.js → chunk-jwzg2twy.js} +1 -1
  124. package/dist/{chunk-pg9rhbgm.js → chunk-k455qwx2.js} +2 -2
  125. package/dist/{chunk-cgv6qm25.js → chunk-khtt3f21.js} +2 -2
  126. package/dist/{chunk-p6wb9jw3.js → chunk-kxx5fnpb.js} +1 -1
  127. package/dist/{chunk-1qsph9ej.js → chunk-kzar67tq.js} +3 -5
  128. package/dist/{chunk-tz8xh1nc.js → chunk-m0agthfm.js} +1 -1
  129. package/dist/{chunk-yf68wrse.js → chunk-m4wfy6n3.js} +2 -2
  130. package/dist/{chunk-21x1n6gn.js → chunk-m71d0g7v.js} +6 -6
  131. package/dist/{chunk-h19wjq6v.js → chunk-m7n2f6nf.js} +1 -1
  132. package/dist/{chunk-srv59vf3.js → chunk-m9rrhywc.js} +4 -4
  133. package/dist/{chunk-z7jkw7ds.js → chunk-mcdqy5gt.js} +1 -1
  134. package/dist/{chunk-dd4erwx8.js → chunk-mtx71g1t.js} +7 -3
  135. package/dist/{chunk-9vyg3854.js → chunk-mwzmmeeq.js} +5 -1
  136. package/dist/{chunk-w0bgsawz.js → chunk-n5ea9nv1.js} +2 -2
  137. package/dist/{chunk-krz4q9sz.js → chunk-ngq209hr.js} +2 -2
  138. package/dist/{chunk-7j9d7dtq.js → chunk-nw8zvj83.js} +1 -1
  139. package/dist/{chunk-52e8a05a.js → chunk-nxkbx5r2.js} +1 -1
  140. package/dist/{chunk-c7tnf6h7.js → chunk-p1eqxz4v.js} +28 -9
  141. package/dist/{chunk-9ye7w106.js → chunk-p5x18ckg.js} +1 -1
  142. package/dist/{chunk-ehgeg4q9.js → chunk-p6kw19sx.js} +17 -7
  143. package/dist/{chunk-3c7tvhtx.js → chunk-pa8yemp1.js} +1 -1
  144. package/dist/{chunk-zw6a73cm.js → chunk-prp1x0by.js} +1 -1
  145. package/dist/{chunk-8ye0k6z7.js → chunk-ptgtqv1a.js} +6 -1
  146. package/dist/{chunk-8k1y6w5k.js → chunk-pws4vb8r.js} +5 -1
  147. package/dist/{chunk-r07v9c4f.js → chunk-pzr1f2tz.js} +5 -1
  148. package/dist/{chunk-sat9hjv7.js → chunk-qky9999p.js} +1 -1
  149. package/dist/{chunk-svkzwq5e.js → chunk-qmfxytfb.js} +1 -1
  150. package/dist/{chunk-wnyxdfzd.js → chunk-qv3b2jvc.js} +1 -1
  151. package/dist/{chunk-5bw5h08v.js → chunk-r4jzz4f2.js} +7 -1
  152. package/dist/{chunk-cb51ybz5.js → chunk-r7mfpkbb.js} +12 -4
  153. package/dist/{chunk-5wndb6hx.js → chunk-ray29hdb.js} +6 -2
  154. package/dist/{chunk-z4jpedvh.js → chunk-rr74321a.js} +1 -1
  155. package/dist/{chunk-wensxzx9.js → chunk-rtb0ejf0.js} +1 -1
  156. package/dist/{chunk-tvd9n2kd.js → chunk-s0ecp1mv.js} +1 -1
  157. package/dist/{chunk-y7pkfcsz.js → chunk-s8ejm9d8.js} +1 -1
  158. package/dist/{chunk-v9r6t8bz.js → chunk-snq5m541.js} +6 -2
  159. package/dist/{chunk-4qn98ngf.js → chunk-srr328m4.js} +1 -1
  160. package/dist/{chunk-6p6zfyjr.js → chunk-svz0farj.js} +1 -1
  161. package/dist/{chunk-d3fr5vtc.js → chunk-t97ts9df.js} +1 -1
  162. package/dist/{chunk-79667fz5.js → chunk-tbd56x4h.js} +3 -3
  163. package/dist/chunk-tcefvfr8.js +15 -0
  164. package/dist/{chunk-0ftjkxjg.js → chunk-td7ra5d2.js} +1 -1
  165. package/dist/{chunk-6wvhq8wq.js → chunk-tg5grn8f.js} +2 -2
  166. package/dist/{chunk-hz9azhzx.js → chunk-tq0pfv5h.js} +7 -2
  167. package/dist/{chunk-4x3ck2yz.js → chunk-v24aqtkt.js} +1 -1
  168. package/dist/{chunk-sbrpnv8s.js → chunk-v8gdzaxt.js} +6 -2
  169. package/dist/{chunk-3mzqf6b4.js → chunk-vg2j5044.js} +1 -1
  170. package/dist/{chunk-map13pza.js → chunk-vhm7fpav.js} +11 -11
  171. package/dist/{chunk-kt085sbn.js → chunk-vm3fzfnj.js} +1 -1
  172. package/dist/{chunk-2bx2r98r.js → chunk-vrs3371x.js} +6 -2
  173. package/dist/{chunk-bqyvf9jn.js → chunk-w1jm0rx3.js} +8 -4
  174. package/dist/{chunk-e0pv0me5.js → chunk-w9jyajx3.js} +1 -1
  175. package/dist/{chunk-aexby8h3.js → chunk-w9s21aj0.js} +17 -2
  176. package/dist/{chunk-5v4typ39.js → chunk-wh7rmym5.js} +3 -3
  177. package/dist/{chunk-0mkv6zgs.js → chunk-wnhxn2se.js} +1 -1
  178. package/dist/{chunk-jfc7rhtt.js → chunk-wpa484a6.js} +1 -1
  179. package/dist/{chunk-pgq064p6.js → chunk-wq8jxf31.js} +7 -3
  180. package/dist/{chunk-6432235c.js → chunk-x1598f0d.js} +3 -3
  181. package/dist/{chunk-83zjj4jd.js → chunk-x6vx0v6d.js} +34 -7
  182. package/dist/{chunk-j4gd5awk.js → chunk-x6zmnr8m.js} +6 -6
  183. package/dist/{chunk-aa7m22zj.js → chunk-x90xmrba.js} +13 -4
  184. package/dist/{chunk-wjaehks2.js → chunk-xfhk2vrw.js} +6 -2
  185. package/dist/{chunk-5a2xnjyw.js → chunk-xgp1eyhr.js} +12 -4
  186. package/dist/{chunk-pwqw7ksj.js → chunk-xq579zwh.js} +1 -1
  187. package/dist/{chunk-ge5t1xhw.js → chunk-xvmv0xm5.js} +1 -1
  188. package/dist/{chunk-96wh7ccv.js → chunk-xwf411kf.js} +6 -2
  189. package/dist/{chunk-9jct7hv0.js → chunk-y7tyyzfy.js} +3 -3
  190. package/dist/{chunk-wqc963k8.js → chunk-ybyx7vt4.js} +2 -2
  191. package/dist/{chunk-rbm24fhv.js → chunk-z8n03ra5.js} +2 -2
  192. package/dist/{chunk-wmyj3hfw.js → chunk-zksbrzf6.js} +1 -1
  193. package/dist/{chunk-bsff5mmk.js → chunk-zp3wrbve.js} +1 -1
  194. package/dist/components/Accordion.d.ts +3 -2
  195. package/dist/components/AlertDialog.d.ts +3 -3
  196. package/dist/components/Attachment.d.ts +4 -3
  197. package/dist/components/Badge.d.ts +1 -1
  198. package/dist/components/Breadcrumb.d.ts +3 -2
  199. package/dist/components/Button.d.ts +8 -4
  200. package/dist/components/ButtonLink.d.ts +3 -2
  201. package/dist/components/Checkbox.d.ts +3 -2
  202. package/dist/components/Collapsible.d.ts +2 -1
  203. package/dist/components/Combobox.d.ts +2 -1
  204. package/dist/components/ContextMenu.d.ts +6 -5
  205. package/dist/components/DataViewer.d.ts +16 -0
  206. package/dist/components/Dialog.d.ts +2 -1
  207. package/dist/components/Drawer.d.ts +2 -1
  208. package/dist/components/DropTarget.d.ts +1 -1
  209. package/dist/components/DropdownMenu.d.ts +6 -5
  210. package/dist/components/HoverCard.d.ts +2 -1
  211. package/dist/components/ImagePicker.d.ts +3 -2
  212. package/dist/components/InlineEdit.d.ts +3 -2
  213. package/dist/components/Input.d.ts +3 -2
  214. package/dist/components/InputGroup.d.ts +2 -1
  215. package/dist/components/Item.d.ts +1 -1
  216. package/dist/components/Menubar.d.ts +4 -3
  217. package/dist/components/NativeSelect.d.ts +2 -1
  218. package/dist/components/NavigationMenu.d.ts +4 -3
  219. package/dist/components/NumberField.d.ts +2 -1
  220. package/dist/components/Pagination.d.ts +2 -1
  221. package/dist/components/Popover.d.ts +2 -1
  222. package/dist/components/RadioGroup.d.ts +3 -2
  223. package/dist/components/Select.d.ts +2 -1
  224. package/dist/components/Sheet.d.ts +2 -1
  225. package/dist/components/Sidebar.d.ts +8 -7
  226. package/dist/components/Slider.d.ts +2 -1
  227. package/dist/components/StarRating.d.ts +3 -2
  228. package/dist/components/Switch.d.ts +3 -2
  229. package/dist/components/Tabs.d.ts +3 -2
  230. package/dist/components/Textarea.d.ts +3 -2
  231. package/dist/components/Toast.d.ts +3 -2
  232. package/dist/components/Toggle.d.ts +3 -2
  233. package/dist/components/ToggleGroup.d.ts +3 -2
  234. package/dist/components/Toolbar.d.ts +4 -3
  235. package/dist/components/Tooltip.d.ts +2 -1
  236. package/dist/components/analytics/AnalyticsButton.d.ts +8 -0
  237. package/dist/components/analytics/AnalyticsImpression.d.ts +11 -0
  238. package/dist/components/analytics/AnalyticsInput.d.ts +7 -0
  239. package/dist/components/analytics/AnalyticsLink.d.ts +7 -0
  240. package/dist/components/analytics/AnalyticsProvider.d.ts +3 -0
  241. package/dist/components/analytics/AnalyticsScope.d.ts +3 -0
  242. package/dist/components/analytics/AnalyticsTextarea.d.ts +7 -0
  243. package/dist/components/analytics/index.d.ts +6 -0
  244. package/dist/components/analytics/index.js +145 -0
  245. package/dist/components/assistant-ui/elements/AgentCard.js +8 -2
  246. package/dist/components/assistant-ui/elements/ApprovalCard.js +8 -2
  247. package/dist/components/assistant-ui/elements/ArtifactCard.js +8 -2
  248. package/dist/components/assistant-ui/elements/AudioPlayer.js +9 -2
  249. package/dist/components/assistant-ui/elements/BackgroundInbox.js +8 -2
  250. package/dist/components/assistant-ui/elements/CanvasSplit.js +8 -2
  251. package/dist/components/assistant-ui/elements/Chart.js +6 -2
  252. package/dist/components/assistant-ui/elements/ChatPanel.js +12 -5
  253. package/dist/components/assistant-ui/elements/CheckpointHistory.js +8 -2
  254. package/dist/components/assistant-ui/elements/Citation.js +9 -5
  255. package/dist/components/assistant-ui/elements/CodeRunner.js +8 -2
  256. package/dist/components/assistant-ui/elements/CommandPalette.js +13 -9
  257. package/dist/components/assistant-ui/elements/ComposerAttachButton.js +8 -2
  258. package/dist/components/assistant-ui/elements/ComposerAttachmentChip.js +8 -2
  259. package/dist/components/assistant-ui/elements/ComposerAttachments.js +12 -5
  260. package/dist/components/assistant-ui/elements/ComposerBar.js +12 -5
  261. package/dist/components/assistant-ui/elements/ComposerCommandItem.js +9 -3
  262. package/dist/components/assistant-ui/elements/ComposerContext.js +8 -5
  263. package/dist/components/assistant-ui/elements/ComposerInput.js +12 -5
  264. package/dist/components/assistant-ui/elements/ComposerMenuItem.js +8 -2
  265. package/dist/components/assistant-ui/elements/ComposerModelItem.js +9 -3
  266. package/dist/components/assistant-ui/elements/ComposerModelTrigger.js +8 -2
  267. package/dist/components/assistant-ui/elements/ComposerPersonItem.js +9 -3
  268. package/dist/components/assistant-ui/elements/ComposerSend.js +8 -2
  269. package/dist/components/assistant-ui/elements/ComposerToolbar.js +12 -5
  270. package/dist/components/assistant-ui/elements/ComposerVoiceButton.js +8 -2
  271. package/dist/components/assistant-ui/elements/ConfidenceMarker.js +5 -1
  272. package/dist/components/assistant-ui/elements/ConnectionState.js +8 -2
  273. package/dist/components/assistant-ui/elements/ContextDisplay.js +13 -10
  274. package/dist/components/assistant-ui/elements/ContextDisplayBar.js +10 -7
  275. package/dist/components/assistant-ui/elements/ContextDisplayContent.js +6 -4
  276. package/dist/components/assistant-ui/elements/ContextDisplayRing.js +10 -7
  277. package/dist/components/assistant-ui/elements/ContextDisplayRoot.js +6 -4
  278. package/dist/components/assistant-ui/elements/ContextDisplayText.js +10 -7
  279. package/dist/components/assistant-ui/elements/ContextDisplayTrigger.js +7 -4
  280. package/dist/components/assistant-ui/elements/ConversationMap.js +7 -4
  281. package/dist/components/assistant-ui/elements/ConversationSearch.js +12 -5
  282. package/dist/components/assistant-ui/elements/DataTable.js +9 -2
  283. package/dist/components/assistant-ui/elements/Diagram.js +8 -2
  284. package/dist/components/assistant-ui/elements/DiffViewer.js +9 -3
  285. package/dist/components/assistant-ui/elements/DiffViewerHeader.js +8 -2
  286. package/dist/components/assistant-ui/elements/DocumentReference.js +8 -2
  287. package/dist/components/assistant-ui/elements/DraftRestore.js +8 -2
  288. package/dist/components/assistant-ui/elements/EditMessage.js +10 -3
  289. package/dist/components/assistant-ui/elements/ElicitationForm.js +12 -5
  290. package/dist/components/assistant-ui/elements/EmptyStateComposer.js +12 -5
  291. package/dist/components/assistant-ui/elements/EmptyStateSuggestion.js +8 -2
  292. package/dist/components/assistant-ui/elements/ErrorState.js +8 -2
  293. package/dist/components/assistant-ui/elements/EveAskQuestion.js +13 -5
  294. package/dist/components/assistant-ui/elements/FeedbackDialog.js +11 -4
  295. package/dist/components/assistant-ui/elements/File.js +11 -3
  296. package/dist/components/assistant-ui/elements/GenerativeUi.js +11 -8
  297. package/dist/components/assistant-ui/elements/GeoMap.js +8 -2
  298. package/dist/components/assistant-ui/elements/GuardrailNotice.js +8 -2
  299. package/dist/components/assistant-ui/elements/Image.js +10 -5
  300. package/dist/components/assistant-ui/elements/ImageGallery.js +10 -5
  301. package/dist/components/assistant-ui/elements/ImageGeneration.js +8 -2
  302. package/dist/components/assistant-ui/elements/JobProgress.js +8 -2
  303. package/dist/components/assistant-ui/elements/LauncherBubble.js +8 -2
  304. package/dist/components/assistant-ui/elements/LinkPreview.js +5 -1
  305. package/dist/components/assistant-ui/elements/MapAnswer.js +9 -2
  306. package/dist/components/assistant-ui/elements/MarkdownText.js +8 -6
  307. package/dist/components/assistant-ui/elements/McpServerPanel.js +9 -3
  308. package/dist/components/assistant-ui/elements/MemoryChips.js +8 -2
  309. package/dist/components/assistant-ui/elements/MermaidDiagram.js +9 -6
  310. package/dist/components/assistant-ui/elements/MermaidZoom.js +8 -5
  311. package/dist/components/assistant-ui/elements/MessageActions.js +9 -3
  312. package/dist/components/assistant-ui/elements/MessageAttachments.js +8 -2
  313. package/dist/components/assistant-ui/elements/MessageBranches.js +8 -2
  314. package/dist/components/assistant-ui/elements/MessagePair.js +8 -2
  315. package/dist/components/assistant-ui/elements/MessageQueue.js +8 -2
  316. package/dist/components/assistant-ui/elements/MobileComposer.js +12 -5
  317. package/dist/components/assistant-ui/elements/ModelPicker.js +5 -2
  318. package/dist/components/assistant-ui/elements/ModelSelector.js +24 -19
  319. package/dist/components/assistant-ui/elements/ModelSelectorContent.js +21 -16
  320. package/dist/components/assistant-ui/elements/ModelSelectorEffort.js +5 -1
  321. package/dist/components/assistant-ui/elements/ModelSelectorEmpty.js +13 -9
  322. package/dist/components/assistant-ui/elements/ModelSelectorFocusAnchor.js +13 -9
  323. package/dist/components/assistant-ui/elements/ModelSelectorGroup.js +13 -9
  324. package/dist/components/assistant-ui/elements/ModelSelectorItem.js +13 -9
  325. package/dist/components/assistant-ui/elements/ModelSelectorList.js +15 -11
  326. package/dist/components/assistant-ui/elements/ModelSelectorRoot.js +6 -4
  327. package/dist/components/assistant-ui/elements/ModelSelectorSearch.js +13 -9
  328. package/dist/components/assistant-ui/elements/ModelSelectorSeparator.js +13 -9
  329. package/dist/components/assistant-ui/elements/ModelSelectorTrigger.js +7 -4
  330. package/dist/components/assistant-ui/elements/Onboarding.js +8 -2
  331. package/dist/components/assistant-ui/elements/OptionList.js +9 -3
  332. package/dist/components/assistant-ui/elements/PermissionGrant.js +8 -2
  333. package/dist/components/assistant-ui/elements/PromptLibrary.js +12 -5
  334. package/dist/components/assistant-ui/elements/QuestionFlow.js +10 -4
  335. package/dist/components/assistant-ui/elements/QuotaBanner.js +8 -2
  336. package/dist/components/assistant-ui/elements/QuoteReply.js +8 -2
  337. package/dist/components/assistant-ui/elements/ReadAloud.js +8 -2
  338. package/dist/components/assistant-ui/elements/ReasoningContent.js +5 -2
  339. package/dist/components/assistant-ui/elements/ReasoningEffort.js +5 -2
  340. package/dist/components/assistant-ui/elements/ReasoningPanel.js +6 -2
  341. package/dist/components/assistant-ui/elements/ReasoningRoot.js +5 -2
  342. package/dist/components/assistant-ui/elements/ReasoningTrigger.js +5 -2
  343. package/dist/components/assistant-ui/elements/RecommendationCard.js +8 -2
  344. package/dist/components/assistant-ui/elements/RegenerateMenu.js +7 -5
  345. package/dist/components/assistant-ui/elements/ReviewableDiff.js +8 -2
  346. package/dist/components/assistant-ui/elements/RunActivity.js +6 -2
  347. package/dist/components/assistant-ui/elements/ScheduleCard.js +5 -2
  348. package/dist/components/assistant-ui/elements/ScrollAnchor.js +5 -1
  349. package/dist/components/assistant-ui/elements/SettingsPanel.js +12 -5
  350. package/dist/components/assistant-ui/elements/SharedConversation.js +8 -2
  351. package/dist/components/assistant-ui/elements/Sources.js +7 -2
  352. package/dist/components/assistant-ui/elements/StoppedRun.js +8 -2
  353. package/dist/components/assistant-ui/elements/Suggestions.js +8 -2
  354. package/dist/components/assistant-ui/elements/TaskCard.js +8 -2
  355. package/dist/components/assistant-ui/elements/TerminalBlock.js +8 -2
  356. package/dist/components/assistant-ui/elements/ThreadList.js +8 -2
  357. package/dist/components/assistant-ui/elements/ThreadSearch.js +12 -5
  358. package/dist/components/assistant-ui/elements/TodoList.js +8 -2
  359. package/dist/components/assistant-ui/elements/ToolCall.js +6 -2
  360. package/dist/components/assistant-ui/elements/ToolError.js +8 -2
  361. package/dist/components/assistant-ui/elements/ToolGroup.js +8 -2
  362. package/dist/components/assistant-ui/elements/ToolTimeline.js +6 -2
  363. package/dist/components/assistant-ui/elements/TooltipIconButton.js +6 -5
  364. package/dist/components/assistant-ui/elements/VoiceConversation.js +9 -2
  365. package/dist/components/assistant-ui/elements/WebPreview.js +8 -2
  366. package/dist/components/assistant-ui/eveAskQuestionToolkit.js +14 -6
  367. package/dist/components/assistant-ui/index.js +148 -144
  368. package/dist/components/assistant-ui/native/AssistantModal.js +29 -25
  369. package/dist/components/assistant-ui/native/AssistantSidebar.js +28 -24
  370. package/dist/components/assistant-ui/native/AttachmentPreview.js +9 -7
  371. package/dist/components/assistant-ui/native/ComposerQuotePreview.js +5 -1
  372. package/dist/components/assistant-ui/native/ComposerTriggerPopover.js +5 -1
  373. package/dist/components/assistant-ui/native/ContextDisplay.js +15 -12
  374. package/dist/components/assistant-ui/native/ContextDisplayBar.js +12 -9
  375. package/dist/components/assistant-ui/native/ContextDisplayRing.js +12 -9
  376. package/dist/components/assistant-ui/native/ContextDisplayRoot.js +8 -6
  377. package/dist/components/assistant-ui/native/ContextDisplayRuntimeRoot.js +7 -5
  378. package/dist/components/assistant-ui/native/ContextDisplayText.js +12 -9
  379. package/dist/components/assistant-ui/native/ConversationMapAui.js +8 -5
  380. package/dist/components/assistant-ui/native/FollowupSuggestionsRow.js +5 -1
  381. package/dist/components/assistant-ui/native/McpConfigDialog.js +12 -6
  382. package/dist/components/assistant-ui/native/MermaidDiagram.js +10 -7
  383. package/dist/components/assistant-ui/native/MessageTiming.js +7 -4
  384. package/dist/components/assistant-ui/native/ModelSelector.js +26 -21
  385. package/dist/components/assistant-ui/native/Reasoning.js +13 -11
  386. package/dist/components/assistant-ui/native/SelectionToolbar.js +5 -1
  387. package/dist/components/assistant-ui/native/Sources.js +5 -1
  388. package/dist/components/assistant-ui/native/TaskCard.js +15 -11
  389. package/dist/components/assistant-ui/native/TaskGroup.js +16 -12
  390. package/dist/components/assistant-ui/native/TaskTray.js +7 -4
  391. package/dist/components/assistant-ui/native/Thread.js +26 -22
  392. package/dist/components/assistant-ui/native/ThreadList.d.ts +6 -4
  393. package/dist/components/assistant-ui/native/ThreadList.js +11 -5
  394. package/dist/components/assistant-ui/native/ThreadListSidebar.js +14 -10
  395. package/dist/components/assistant-ui/native/ToolFallbackRoot.js +12 -4
  396. package/dist/components/assistant-ui/native/ToolGroup.js +6 -2
  397. package/dist/components/assistant-ui/native/VoiceConnectButton.js +8 -2
  398. package/dist/components/assistant-ui/native/VoiceControl.js +10 -9
  399. package/dist/components/assistant-ui/native/VoiceConversation.js +10 -3
  400. package/dist/components/assistant-ui/native/VoiceDisconnectButton.js +7 -6
  401. package/dist/components/assistant-ui/native/VoiceMuteButton.js +7 -6
  402. package/dist/components/assistant-ui/native/index.js +81 -77
  403. package/dist/components/calendar/Calendar.d.ts +1 -1
  404. package/dist/components/calendar/index.js +9 -6
  405. package/dist/components/calendar/types.d.ts +2 -1
  406. package/dist/components/carousel/Carousel.d.ts +1 -1
  407. package/dist/components/carousel/index.js +8 -2
  408. package/dist/components/carousel/types.d.ts +2 -1
  409. package/dist/components/chart/index.js +5 -1
  410. package/dist/components/color-picker/ColorPicker.d.ts +2 -1
  411. package/dist/components/color-picker/index.js +26 -1
  412. package/dist/components/command/Command.d.ts +2 -1
  413. package/dist/components/command/index.js +12 -8
  414. package/dist/components/data-grid/index.js +16 -12
  415. package/dist/components/editor/RichTextEditor.d.ts +3 -2
  416. package/dist/components/editor/index.js +39 -3
  417. package/dist/components/event-calendar/EventCalendar.d.ts +2 -1
  418. package/dist/components/event-calendar/index.js +19 -3
  419. package/dist/components/file-upload/FileUpload.d.ts +3 -2
  420. package/dist/components/file-upload/index.js +20 -2
  421. package/dist/components/gantt/index.js +9 -3
  422. package/dist/components/image-crop/ImageCrop.d.ts +4 -3
  423. package/dist/components/image-crop/index.js +27 -1
  424. package/dist/components/input-otp/InputOTP.d.ts +3 -2
  425. package/dist/components/input-otp/index.js +9 -2
  426. package/dist/components/json-render/catalog.d.ts +1 -1
  427. package/dist/components/json-render/index.js +34 -31
  428. package/dist/components/message-scroller/MessageScroller.d.ts +3 -2
  429. package/dist/components/message-scroller/index.js +12 -1
  430. package/dist/components/persian-calendar/PersianCalendar.d.ts +3 -2
  431. package/dist/components/persian-calendar/index.js +16 -3
  432. package/dist/components/questionnaire/Questionnaire.d.ts +8 -7
  433. package/dist/components/questionnaire/index.js +37 -3
  434. package/dist/components/resizable/Resizable.d.ts +2 -1
  435. package/dist/components/resizable/index.js +4 -1
  436. package/dist/components/sonner/Sonner.d.ts +3 -2
  437. package/dist/components/sonner/index.js +14 -1
  438. package/dist/components/tree/Tree.d.ts +3 -2
  439. package/dist/components/tree/TreeItem.d.ts +3 -2
  440. package/dist/components/tree/index.js +28 -2
  441. package/dist/components/virtual-data-grid/index.js +11 -4
  442. package/dist/drag-drop/types.d.ts +2 -1
  443. package/dist/hooks/useAnalytics.d.ts +4 -0
  444. package/dist/hooks/useAnalyticsCallback.d.ts +5 -0
  445. package/dist/hooks/useAnalyticsEnabled.d.ts +2 -0
  446. package/dist/hooks/useAnalyticsInput.d.ts +8 -0
  447. package/dist/hooks/useDropTarget.d.ts +1 -1
  448. package/dist/index.d.ts +2 -0
  449. package/dist/index.js +43 -37
  450. package/dist/prototype.js +5 -1
  451. package/llms/components/actions/Button.md +20 -0
  452. package/llms/components/data-display/DataViewer.md +90 -0
  453. package/llms/components/providers/AnalyticsProvider.md +59 -0
  454. package/llms/setup.md +47 -25
  455. package/llms.txt +2 -0
  456. package/package.json +5 -1
  457. package/dist/chunk-j89xg1ak.js +0 -14
  458. package/dist/chunk-mz3e810d.js +0 -83
  459. package/dist/chunk-q7p28b89.js +0 -68
@@ -1,24 +1,29 @@
1
+ import {
2
+ useAnalytics2
3
+ } from "./chunk-7ny0vyek.js";
1
4
  import {
2
5
  cn2
3
6
  } from "./chunk-cp2m7y7v.js";
4
- import {
5
- buttonVariants2,
6
- Button2
7
- } from "./chunk-q7p28b89.js";
8
7
  import {
9
8
  DensityContext,
10
9
  useDensity
11
10
  } from "./chunk-e6hk39ev.js";
12
11
  import {
13
- usePortalContainer2
14
- } from "./chunk-j89xg1ak.js";
15
- import {
12
+ usePortalContainer2,
16
13
  usePortalNode,
17
14
  PortalProvider2
18
- } from "./chunk-aa7m22zj.js";
15
+ } from "./chunk-x90xmrba.js";
19
16
  import {
20
17
  useDirection2
21
18
  } from "./chunk-jpvw9xqy.js";
19
+ import {
20
+ TooltipProvider2,
21
+ Tooltip2,
22
+ TooltipTrigger2,
23
+ TooltipContent2,
24
+ buttonVariants2,
25
+ Button2
26
+ } from "./chunk-38301e40.js";
22
27
  import {
23
28
  DropdownMenu2,
24
29
  DropdownMenuPortal2,
@@ -33,13 +38,13 @@ import {
33
38
  DropdownMenuRadioGroup2,
34
39
  DropdownMenuSeparator2,
35
40
  DropdownMenuShortcut2
36
- } from "./chunk-d4bm5rzy.js";
41
+ } from "./chunk-8wc2z7te.js";
37
42
  import {
38
43
  Skeleton2
39
44
  } from "./chunk-d70rcwk7.js";
40
45
  import {
41
46
  Input2
42
- } from "./chunk-59p19t57.js";
47
+ } from "./chunk-0fmrwsgp.js";
43
48
  import {
44
49
  Separator2
45
50
  } from "./chunk-rajgnfbr.js";
@@ -51,13 +56,10 @@ import {
51
56
  } from "./chunk-6jpz5geq.js";
52
57
  import {
53
58
  Textarea2
54
- } from "./chunk-hz9azhzx.js";
59
+ } from "./chunk-tq0pfv5h.js";
55
60
  import {
56
- TooltipProvider2,
57
- Tooltip2,
58
- TooltipTrigger2,
59
- TooltipContent2
60
- } from "./chunk-mz3e810d.js";
61
+ RadioGroup2
62
+ } from "./chunk-ekbesw9t.js";
61
63
  import {
62
64
  Card2,
63
65
  CardHeader2,
@@ -80,7 +82,7 @@ import {
80
82
  ComboboxChipsInput2,
81
83
  useComboboxAnchor2,
82
84
  ScrollArea2
83
- } from "./chunk-c7tnf6h7.js";
85
+ } from "./chunk-p1eqxz4v.js";
84
86
  import {
85
87
  Badge2
86
88
  } from "./chunk-wjx6zf94.js";
@@ -113,7 +115,10 @@ import {
113
115
  import {
114
116
  NativeSelect2,
115
117
  NativeSelectOption2
116
- } from "./chunk-5bw5h08v.js";
118
+ } from "./chunk-r4jzz4f2.js";
119
+ import {
120
+ AnalyticsLink
121
+ } from "./chunk-4710gn6d.js";
117
122
  import {
118
123
  SidebarProvider2,
119
124
  Sidebar2,
@@ -126,12 +131,19 @@ import {
126
131
  SidebarMenu2,
127
132
  SidebarMenuItem2,
128
133
  SidebarMenuButton2
129
- } from "./chunk-8vfh3ez0.js";
134
+ } from "./chunk-c9ypcp4s.js";
135
+ import {
136
+ AnalyticsButton
137
+ } from "./chunk-tcefvfr8.js";
138
+ import {
139
+ useAnalyticsCallback
140
+ } from "./chunk-5mydsjp3.js";
130
141
  // src/components/ButtonLink.tsx
131
142
  import { mergeProps } from "@base-ui/react/merge-props";
132
143
  import { useRender } from "@base-ui/react/use-render";
133
144
  import { jsx } from "react/jsx-runtime";
134
145
  function ButtonLink2({
146
+ analytics,
135
147
  density,
136
148
  className,
137
149
  variant = "default",
@@ -143,6 +155,7 @@ function ButtonLink2({
143
155
  children,
144
156
  ...props
145
157
  }) {
158
+ const onClick = useAnalyticsCallback("ButtonLink", analytics, { name: "ui.activate" }, props.onClick);
146
159
  return useRender({
147
160
  defaultTagName: "a",
148
161
  props: mergeProps({
@@ -151,7 +164,7 @@ function ButtonLink2({
151
164
  className: "min-w-0 truncate",
152
165
  children
153
166
  }) : children
154
- }, props),
167
+ }, { ...props, onClick }),
155
168
  render,
156
169
  state: {
157
170
  slot: "button-link",
@@ -163,12 +176,14 @@ function ButtonLink2({
163
176
  import { Accordion as AccordionPrimitive } from "@base-ui/react/accordion";
164
177
  import { ChevronDownIcon, ChevronUpIcon } from "lucide-react";
165
178
  import { jsx as jsx2, jsxs } from "react/jsx-runtime";
166
- function Accordion2({ density, className, ...props }) {
179
+ function Accordion2({ analytics, density, className, ...props }) {
180
+ const trackedOnValueChange = useAnalyticsCallback("Accordion", analytics, { name: "ui.change-request" }, props.onValueChange);
167
181
  return /* @__PURE__ */ jsx2(AccordionPrimitive.Root, {
168
182
  "data-density": density,
169
183
  "data-slot": "accordion",
170
184
  className: (state) => cn2("flex w-full flex-col", typeof className === "function" ? className(state) : className),
171
- ...props
185
+ ...props,
186
+ onValueChange: trackedOnValueChange
172
187
  });
173
188
  }
174
189
  function AccordionItem2({ density, className, ...props }) {
@@ -267,10 +282,127 @@ function PageMessage2({ title, description, children }) {
267
282
  })
268
283
  });
269
284
  }
285
+ // src/components/DataViewer.tsx
286
+ import { Fragment } from "react";
287
+ import { jsx as jsx5, jsxs as jsxs4, Fragment as Fragment2 } from "react/jsx-runtime";
288
+ var ACRONYMS = new Map([
289
+ ["api", "API"],
290
+ ["http", "HTTP"],
291
+ ["https", "HTTPS"],
292
+ ["id", "ID"],
293
+ ["ids", "IDs"],
294
+ ["json", "JSON"],
295
+ ["url", "URL"],
296
+ ["urls", "URLs"],
297
+ ["uuid", "UUID"]
298
+ ]);
299
+ function formatDataLabel2(key) {
300
+ const label = key.replace(/([a-z0-9])([A-Z])/g, "$1 $2").split(/[\s_-]+/).filter(Boolean).map((word) => ACRONYMS.get(word.toLowerCase()) ?? word.toLowerCase()).join(" ");
301
+ return label.charAt(0).toUpperCase() + label.slice(1);
302
+ }
303
+ function isRecord(value) {
304
+ return typeof value === "object" && value !== null && !Array.isArray(value);
305
+ }
306
+ function isNested(value) {
307
+ return Array.isArray(value) || isRecord(value);
308
+ }
309
+ function Placeholder({ children }) {
310
+ return /* @__PURE__ */ jsx5("span", {
311
+ className: "text-muted-foreground italic",
312
+ children
313
+ });
314
+ }
315
+ function DataValue({ value, formatLabel }) {
316
+ if (Array.isArray(value)) {
317
+ if (value.length === 0)
318
+ return /* @__PURE__ */ jsx5(Placeholder, {
319
+ children: "None"
320
+ });
321
+ return value.some(isNested) ? /* @__PURE__ */ jsx5("ol", {
322
+ className: "flex list-decimal flex-col gap-2 pl-5 marker:text-muted-foreground",
323
+ children: value.map((item, index) => /* @__PURE__ */ jsx5("li", {
324
+ className: "min-w-0",
325
+ children: /* @__PURE__ */ jsx5(DataValue, {
326
+ value: item,
327
+ formatLabel
328
+ })
329
+ }, index))
330
+ }) : /* @__PURE__ */ jsx5("ul", {
331
+ className: "flex flex-wrap gap-x-3 gap-y-1",
332
+ children: value.map((item, index) => /* @__PURE__ */ jsx5("li", {
333
+ className: "min-w-0 break-words",
334
+ children: /* @__PURE__ */ jsx5(DataValue, {
335
+ value: item,
336
+ formatLabel
337
+ })
338
+ }, index))
339
+ });
340
+ }
341
+ if (isRecord(value)) {
342
+ const entries = Object.entries(value);
343
+ if (entries.length === 0)
344
+ return /* @__PURE__ */ jsx5(Placeholder, {
345
+ children: "None"
346
+ });
347
+ return /* @__PURE__ */ jsx5("dl", {
348
+ className: "grid grid-cols-[minmax(0,max-content)_minmax(0,1fr)] gap-x-4 gap-y-1",
349
+ children: entries.map(([key, item]) => /* @__PURE__ */ jsxs4(Fragment, {
350
+ children: [
351
+ /* @__PURE__ */ jsx5("dt", {
352
+ className: "min-w-0 break-words text-muted-foreground",
353
+ children: formatLabel(key)
354
+ }),
355
+ /* @__PURE__ */ jsx5("dd", {
356
+ className: cn2("min-w-0 break-words", isRecord(item) && "border-l border-border pl-3"),
357
+ children: /* @__PURE__ */ jsx5(DataValue, {
358
+ value: item,
359
+ formatLabel
360
+ })
361
+ })
362
+ ]
363
+ }, key))
364
+ });
365
+ }
366
+ if (value === null || value === undefined)
367
+ return /* @__PURE__ */ jsx5(Placeholder, {
368
+ children: "None"
369
+ });
370
+ if (typeof value === "boolean")
371
+ return /* @__PURE__ */ jsx5(Fragment2, {
372
+ children: value ? "Yes" : "No"
373
+ });
374
+ if (value === "")
375
+ return /* @__PURE__ */ jsx5(Placeholder, {
376
+ children: "Empty"
377
+ });
378
+ return /* @__PURE__ */ jsx5(Fragment2, {
379
+ children: String(value)
380
+ });
381
+ }
382
+ function DataViewer2({
383
+ value,
384
+ label = "Data",
385
+ formatLabel = formatDataLabel2,
386
+ density,
387
+ className,
388
+ ...props
389
+ }) {
390
+ return /* @__PURE__ */ jsx5("section", {
391
+ "aria-label": label,
392
+ "data-density": density,
393
+ "data-slot": "data-viewer",
394
+ className: cn2("min-w-0 text-sm", className),
395
+ ...props,
396
+ children: /* @__PURE__ */ jsx5(DataValue, {
397
+ value,
398
+ formatLabel
399
+ })
400
+ });
401
+ }
270
402
  // src/components/JsonViewer.tsx
271
- import { jsx as jsx5 } from "react/jsx-runtime";
403
+ import { jsx as jsx6 } from "react/jsx-runtime";
272
404
  function JsonViewer2({ value, label = "JSON", rows = 12 }) {
273
- return /* @__PURE__ */ jsx5(Textarea2, {
405
+ return /* @__PURE__ */ jsx6(Textarea2, {
274
406
  readOnly: true,
275
407
  rows,
276
408
  "aria-label": label,
@@ -280,16 +412,21 @@ function JsonViewer2({ value, label = "JSON", rows = 12 }) {
280
412
  // src/components/AlertDialog.tsx
281
413
  import { AlertDialog as AlertDialogPrimitive } from "@base-ui/react/alert-dialog";
282
414
  import { useDirection } from "@base-ui/react/direction-provider";
283
- import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
415
+ import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
284
416
  "use client";
285
- function AlertDialog2({ ...props }) {
286
- return /* @__PURE__ */ jsx6(AlertDialogPrimitive.Root, {
417
+ function AlertDialog2({
418
+ analytics,
419
+ ...props
420
+ }) {
421
+ const trackedOnOpenChange = useAnalyticsCallback("AlertDialog", analytics, (open, _details) => ({ name: "ui.open-request", open }), props.onOpenChange);
422
+ return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Root, {
287
423
  "data-slot": "alert-dialog",
288
- ...props
424
+ ...props,
425
+ onOpenChange: trackedOnOpenChange
289
426
  });
290
427
  }
291
428
  function AlertDialogTrigger2({ ...props }) {
292
- return /* @__PURE__ */ jsx6(AlertDialogPrimitive.Trigger, {
429
+ return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Trigger, {
293
430
  "data-slot": "alert-dialog-trigger",
294
431
  ...props
295
432
  });
@@ -297,12 +434,12 @@ function AlertDialogTrigger2({ ...props }) {
297
434
  function AlertDialogPortal2({ container, ref, children, ...props }) {
298
435
  const resolvedContainer = usePortalContainer2(container);
299
436
  const portal = usePortalNode(ref);
300
- return /* @__PURE__ */ jsx6(AlertDialogPrimitive.Portal, {
437
+ return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Portal, {
301
438
  "data-slot": "alert-dialog-portal",
302
439
  container: resolvedContainer,
303
440
  ref: portal.ref,
304
441
  ...props,
305
- children: /* @__PURE__ */ jsx6(PortalProvider2, {
442
+ children: /* @__PURE__ */ jsx7(PortalProvider2, {
306
443
  container: portal.node,
307
444
  children
308
445
  })
@@ -310,7 +447,7 @@ function AlertDialogPortal2({ container, ref, children, ...props }) {
310
447
  }
311
448
  function AlertDialogOverlay2({ density, className, ...props }) {
312
449
  const resolvedDensity = useDensity(density);
313
- return /* @__PURE__ */ jsx6(AlertDialogPrimitive.Backdrop, {
450
+ return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Backdrop, {
314
451
  "data-density": resolvedDensity,
315
452
  "data-slot": "alert-dialog-overlay",
316
453
  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),
@@ -320,10 +457,10 @@ function AlertDialogOverlay2({ density, className, ...props }) {
320
457
  function AlertDialogContent2({ density, className, size = "default", ...props }) {
321
458
  const resolvedDensity = useDensity(density);
322
459
  const direction = useDirection();
323
- return /* @__PURE__ */ jsxs4(AlertDialogPortal2, {
460
+ return /* @__PURE__ */ jsxs5(AlertDialogPortal2, {
324
461
  children: [
325
- /* @__PURE__ */ jsx6(AlertDialogOverlay2, {}),
326
- /* @__PURE__ */ jsx6(AlertDialogPrimitive.Popup, {
462
+ /* @__PURE__ */ jsx7(AlertDialogOverlay2, {}),
463
+ /* @__PURE__ */ jsx7(AlertDialogPrimitive.Popup, {
327
464
  dir: direction,
328
465
  "data-density": resolvedDensity,
329
466
  "data-slot": "alert-dialog-content",
@@ -336,7 +473,7 @@ function AlertDialogContent2({ density, className, size = "default", ...props })
336
473
  });
337
474
  }
338
475
  function AlertDialogHeader2({ density, className, ...props }) {
339
- return /* @__PURE__ */ jsx6("div", {
476
+ return /* @__PURE__ */ jsx7("div", {
340
477
  "data-density": density,
341
478
  "data-slot": "alert-dialog-header",
342
479
  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),
@@ -344,7 +481,7 @@ function AlertDialogHeader2({ density, className, ...props }) {
344
481
  });
345
482
  }
346
483
  function AlertDialogFooter2({ density, className, ...props }) {
347
- return /* @__PURE__ */ jsx6("div", {
484
+ return /* @__PURE__ */ jsx7("div", {
348
485
  "data-density": density,
349
486
  "data-slot": "alert-dialog-footer",
350
487
  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),
@@ -352,7 +489,7 @@ function AlertDialogFooter2({ density, className, ...props }) {
352
489
  });
353
490
  }
354
491
  function AlertDialogMedia2({ density, className, ...props }) {
355
- return /* @__PURE__ */ jsx6("div", {
492
+ return /* @__PURE__ */ jsx7("div", {
356
493
  "data-density": density,
357
494
  "data-slot": "alert-dialog-media",
358
495
  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),
@@ -360,7 +497,7 @@ function AlertDialogMedia2({ density, className, ...props }) {
360
497
  });
361
498
  }
362
499
  function AlertDialogTitle2({ density, className, ...props }) {
363
- return /* @__PURE__ */ jsx6(AlertDialogPrimitive.Title, {
500
+ return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Title, {
364
501
  "data-density": density,
365
502
  "data-slot": "alert-dialog-title",
366
503
  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),
@@ -368,7 +505,7 @@ function AlertDialogTitle2({ density, className, ...props }) {
368
505
  });
369
506
  }
370
507
  function AlertDialogDescription2({ density, className, ...props }) {
371
- return /* @__PURE__ */ jsx6(AlertDialogPrimitive.Description, {
508
+ return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Description, {
372
509
  "data-density": density,
373
510
  "data-slot": "alert-dialog-description",
374
511
  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),
@@ -376,7 +513,7 @@ function AlertDialogDescription2({ density, className, ...props }) {
376
513
  });
377
514
  }
378
515
  function AlertDialogAction2({ density, className, ...props }) {
379
- return /* @__PURE__ */ jsx6(Button2, {
516
+ return /* @__PURE__ */ jsx7(Button2, {
380
517
  "data-density": density,
381
518
  "data-slot": "alert-dialog-action",
382
519
  className,
@@ -390,11 +527,11 @@ function AlertDialogCancel2({
390
527
  size = "default",
391
528
  ...props
392
529
  }) {
393
- return /* @__PURE__ */ jsx6(AlertDialogPrimitive.Close, {
530
+ return /* @__PURE__ */ jsx7(AlertDialogPrimitive.Close, {
394
531
  "data-density": density,
395
532
  "data-slot": "alert-dialog-cancel",
396
533
  className,
397
- render: /* @__PURE__ */ jsx6(Button2, {
534
+ render: /* @__PURE__ */ jsx7(Button2, {
398
535
  variant,
399
536
  size
400
537
  }),
@@ -405,11 +542,22 @@ function AlertDialogCancel2({
405
542
  import { Select as SelectPrimitive } from "@base-ui/react/select";
406
543
  import { useDirection as useDirection3 } from "@base-ui/react/direction-provider";
407
544
  import { ChevronDownIcon as ChevronDownIcon2, CheckIcon, ChevronUpIcon as ChevronUpIcon2 } from "lucide-react";
408
- import { jsx as jsx7, jsxs as jsxs5 } from "react/jsx-runtime";
545
+ import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
409
546
  "use client";
410
- var Select2 = SelectPrimitive.Root;
547
+ function Select2({
548
+ analytics,
549
+ ...props
550
+ }) {
551
+ const onValueChange = useAnalyticsCallback("Select", analytics, { name: "ui.change-request" }, props.onValueChange);
552
+ const onOpenChange = useAnalyticsCallback("Select", analytics, (open, _details) => ({ name: "ui.open-request", open }), props.onOpenChange);
553
+ return /* @__PURE__ */ jsx8(SelectPrimitive.Root, {
554
+ ...props,
555
+ onValueChange,
556
+ onOpenChange
557
+ });
558
+ }
411
559
  function SelectGroup2({ density, className, ...props }) {
412
- return /* @__PURE__ */ jsx7(SelectPrimitive.Group, {
560
+ return /* @__PURE__ */ jsx8(SelectPrimitive.Group, {
413
561
  "data-density": density,
414
562
  "data-slot": "select-group",
415
563
  className: (state) => cn2("scroll-my-1 p-1", typeof className === "function" ? className(state) : className),
@@ -417,7 +565,7 @@ function SelectGroup2({ density, className, ...props }) {
417
565
  });
418
566
  }
419
567
  function SelectValue2({ density, className, ...props }) {
420
- return /* @__PURE__ */ jsx7(SelectPrimitive.Value, {
568
+ return /* @__PURE__ */ jsx8(SelectPrimitive.Value, {
421
569
  "data-density": density,
422
570
  "data-slot": "select-value",
423
571
  className: (state) => cn2("flex flex-1 text-start", typeof className === "function" ? className(state) : className),
@@ -425,7 +573,7 @@ function SelectValue2({ density, className, ...props }) {
425
573
  });
426
574
  }
427
575
  function SelectTrigger2({ density, className, size = "default", children, ...props }) {
428
- return /* @__PURE__ */ jsxs5(SelectPrimitive.Trigger, {
576
+ return /* @__PURE__ */ jsxs6(SelectPrimitive.Trigger, {
429
577
  "data-density": density,
430
578
  "data-slot": "select-trigger",
431
579
  "data-size": size,
@@ -433,8 +581,8 @@ function SelectTrigger2({ density, className, size = "default", children, ...pro
433
581
  ...props,
434
582
  children: [
435
583
  children,
436
- /* @__PURE__ */ jsx7(SelectPrimitive.Icon, {
437
- render: /* @__PURE__ */ jsx7(ChevronDownIcon2, {
584
+ /* @__PURE__ */ jsx8(SelectPrimitive.Icon, {
585
+ render: /* @__PURE__ */ jsx8(ChevronDownIcon2, {
438
586
  className: "pointer-events-none size-4 text-muted-foreground"
439
587
  })
440
588
  })
@@ -456,19 +604,19 @@ function SelectContent2({
456
604
  const direction = useDirection3();
457
605
  const container = usePortalContainer2();
458
606
  const portal = usePortalNode();
459
- return /* @__PURE__ */ jsx7(SelectPrimitive.Portal, {
607
+ return /* @__PURE__ */ jsx8(SelectPrimitive.Portal, {
460
608
  container,
461
609
  ref: portal.ref,
462
- children: /* @__PURE__ */ jsx7(PortalProvider2, {
610
+ children: /* @__PURE__ */ jsx8(PortalProvider2, {
463
611
  container: portal.node,
464
- children: /* @__PURE__ */ jsx7(SelectPrimitive.Positioner, {
612
+ children: /* @__PURE__ */ jsx8(SelectPrimitive.Positioner, {
465
613
  side,
466
614
  sideOffset,
467
615
  align,
468
616
  alignOffset,
469
617
  alignItemWithTrigger,
470
618
  className: "isolate ",
471
- children: /* @__PURE__ */ jsxs5(SelectPrimitive.Popup, {
619
+ children: /* @__PURE__ */ jsxs6(SelectPrimitive.Popup, {
472
620
  dir: direction,
473
621
  "data-density": resolvedDensity,
474
622
  "data-slot": "select-content",
@@ -476,11 +624,11 @@ function SelectContent2({
476
624
  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),
477
625
  ...props,
478
626
  children: [
479
- /* @__PURE__ */ jsx7(SelectScrollUpButton2, {}),
480
- /* @__PURE__ */ jsx7(SelectPrimitive.List, {
627
+ /* @__PURE__ */ jsx8(SelectScrollUpButton2, {}),
628
+ /* @__PURE__ */ jsx8(SelectPrimitive.List, {
481
629
  children
482
630
  }),
483
- /* @__PURE__ */ jsx7(SelectScrollDownButton2, {})
631
+ /* @__PURE__ */ jsx8(SelectScrollDownButton2, {})
484
632
  ]
485
633
  })
486
634
  })
@@ -488,7 +636,7 @@ function SelectContent2({
488
636
  });
489
637
  }
490
638
  function SelectLabel2({ density, className, ...props }) {
491
- return /* @__PURE__ */ jsx7(SelectPrimitive.GroupLabel, {
639
+ return /* @__PURE__ */ jsx8(SelectPrimitive.GroupLabel, {
492
640
  "data-density": density,
493
641
  "data-slot": "select-label",
494
642
  className: (state) => cn2("px-1.5 py-1 text-xs text-muted-foreground", typeof className === "function" ? className(state) : className),
@@ -496,21 +644,21 @@ function SelectLabel2({ density, className, ...props }) {
496
644
  });
497
645
  }
498
646
  function SelectItem2({ density, className, children, ...props }) {
499
- return /* @__PURE__ */ jsxs5(SelectPrimitive.Item, {
647
+ return /* @__PURE__ */ jsxs6(SelectPrimitive.Item, {
500
648
  "data-density": density,
501
649
  "data-slot": "select-item",
502
650
  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),
503
651
  ...props,
504
652
  children: [
505
- /* @__PURE__ */ jsx7(SelectPrimitive.ItemText, {
653
+ /* @__PURE__ */ jsx8(SelectPrimitive.ItemText, {
506
654
  className: "flex flex-1 shrink-0 gap-2 whitespace-nowrap",
507
655
  children
508
656
  }),
509
- /* @__PURE__ */ jsx7(SelectPrimitive.ItemIndicator, {
510
- render: /* @__PURE__ */ jsx7("span", {
657
+ /* @__PURE__ */ jsx8(SelectPrimitive.ItemIndicator, {
658
+ render: /* @__PURE__ */ jsx8("span", {
511
659
  className: "pointer-events-none absolute end-2 flex size-4 items-center justify-center"
512
660
  }),
513
- children: /* @__PURE__ */ jsx7(CheckIcon, {
661
+ children: /* @__PURE__ */ jsx8(CheckIcon, {
514
662
  className: "pointer-events-none"
515
663
  })
516
664
  })
@@ -518,7 +666,7 @@ function SelectItem2({ density, className, children, ...props }) {
518
666
  });
519
667
  }
520
668
  function SelectSeparator2({ density, className, ...props }) {
521
- return /* @__PURE__ */ jsx7(SelectPrimitive.Separator, {
669
+ return /* @__PURE__ */ jsx8(SelectPrimitive.Separator, {
522
670
  "data-density": density,
523
671
  "data-slot": "select-separator",
524
672
  className: (state) => cn2("pointer-events-none -mx-1 my-1 h-px bg-border", typeof className === "function" ? className(state) : className),
@@ -526,27 +674,27 @@ function SelectSeparator2({ density, className, ...props }) {
526
674
  });
527
675
  }
528
676
  function SelectScrollUpButton2({ density, className, ...props }) {
529
- return /* @__PURE__ */ jsx7(SelectPrimitive.ScrollUpArrow, {
677
+ return /* @__PURE__ */ jsx8(SelectPrimitive.ScrollUpArrow, {
530
678
  "data-density": density,
531
679
  "data-slot": "select-scroll-up-button",
532
680
  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),
533
681
  ...props,
534
- children: /* @__PURE__ */ jsx7(ChevronUpIcon2, {})
682
+ children: /* @__PURE__ */ jsx8(ChevronUpIcon2, {})
535
683
  });
536
684
  }
537
685
  function SelectScrollDownButton2({ density, className, ...props }) {
538
- return /* @__PURE__ */ jsx7(SelectPrimitive.ScrollDownArrow, {
686
+ return /* @__PURE__ */ jsx8(SelectPrimitive.ScrollDownArrow, {
539
687
  "data-density": density,
540
688
  "data-slot": "select-scroll-down-button",
541
689
  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),
542
690
  ...props,
543
- children: /* @__PURE__ */ jsx7(ChevronDownIcon2, {})
691
+ children: /* @__PURE__ */ jsx8(ChevronDownIcon2, {})
544
692
  });
545
693
  }
546
694
  // src/components/DensityProvider.tsx
547
695
  import { mergeProps as mergeProps2 } from "@base-ui/react/merge-props";
548
696
  import { useRender as useRender2 } from "@base-ui/react/use-render";
549
- import { jsx as jsx8 } from "react/jsx-runtime";
697
+ import { jsx as jsx9 } from "react/jsx-runtime";
550
698
  function DensityProvider2({
551
699
  density = "comfortable",
552
700
  className,
@@ -559,7 +707,7 @@ function DensityProvider2({
559
707
  render,
560
708
  state: { slot: "density-provider", density }
561
709
  });
562
- return /* @__PURE__ */ jsx8(DensityContext.Provider, {
710
+ return /* @__PURE__ */ jsx9(DensityContext.Provider, {
563
711
  value: density,
564
712
  children: element
565
713
  });
@@ -872,7 +1020,7 @@ function ScrollGuard2({ ownerDocument }) {
872
1020
  }
873
1021
 
874
1022
  // src/components/ThemeProvider.tsx
875
- import { jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
1023
+ import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
876
1024
  function StoredThemeProvider({
877
1025
  children,
878
1026
  defaultTheme = "system",
@@ -883,7 +1031,7 @@ function StoredThemeProvider({
883
1031
  defaultValue: defaultTheme,
884
1032
  localStorageKey: storageKey
885
1033
  });
886
- return /* @__PURE__ */ jsx9(ThemePalette, {
1034
+ return /* @__PURE__ */ jsx10(ThemePalette, {
887
1035
  theme: forcedTheme ?? ternaryDarkMode,
888
1036
  resolvedTheme: forcedTheme ?? (isDarkMode ? "dark" : "light"),
889
1037
  setTheme: setTernaryDarkMode,
@@ -901,11 +1049,11 @@ function ThemePalette({
901
1049
  document.documentElement.style.colorScheme = resolvedTheme;
902
1050
  }, [resolvedTheme]);
903
1051
  const value = useMemo(() => ({ theme, resolvedTheme, setTheme }), [theme, resolvedTheme, setTheme]);
904
- return /* @__PURE__ */ jsxs6(ThemeContext.Provider, {
1052
+ return /* @__PURE__ */ jsxs7(ThemeContext.Provider, {
905
1053
  value,
906
1054
  children: [
907
- /* @__PURE__ */ jsx9(ScrollGuard2, {}),
908
- /* @__PURE__ */ jsx9(LayoutGuard2, {}),
1055
+ /* @__PURE__ */ jsx10(ScrollGuard2, {}),
1056
+ /* @__PURE__ */ jsx10(LayoutGuard2, {}),
909
1057
  children
910
1058
  ]
911
1059
  });
@@ -918,7 +1066,7 @@ function ControlledThemeProvider({
918
1066
  const isDark = useMediaQuery("(prefers-color-scheme: dark)");
919
1067
  const { theme, setTheme } = controlledTheme;
920
1068
  const resolvedTheme = forcedTheme ?? (theme === "system" ? isDark ? "dark" : "light" : theme);
921
- return /* @__PURE__ */ jsx9(ThemePalette, {
1069
+ return /* @__PURE__ */ jsx10(ThemePalette, {
922
1070
  theme: forcedTheme ?? theme,
923
1071
  resolvedTheme,
924
1072
  setTheme,
@@ -927,18 +1075,18 @@ function ControlledThemeProvider({
927
1075
  }
928
1076
  function ThemeProvider2(props) {
929
1077
  if (props.controlledTheme)
930
- return /* @__PURE__ */ jsx9(ControlledThemeProvider, {
1078
+ return /* @__PURE__ */ jsx10(ControlledThemeProvider, {
931
1079
  ...props,
932
1080
  controlledTheme: props.controlledTheme
933
1081
  });
934
- return /* @__PURE__ */ jsx9(StoredThemeProvider, {
1082
+ return /* @__PURE__ */ jsx10(StoredThemeProvider, {
935
1083
  ...props
936
1084
  });
937
1085
  }
938
1086
  // src/components/AspectRatio.tsx
939
- import { jsx as jsx10 } from "react/jsx-runtime";
1087
+ import { jsx as jsx11 } from "react/jsx-runtime";
940
1088
  function AspectRatio2({ ratio, className, style, ...props }) {
941
- return /* @__PURE__ */ jsx10("div", {
1089
+ return /* @__PURE__ */ jsx11("div", {
942
1090
  "data-slot": "aspect-ratio",
943
1091
  className: cn2("relative", className),
944
1092
  style: { aspectRatio: ratio, ...style },
@@ -949,9 +1097,9 @@ function AspectRatio2({ ratio, className, style, ...props }) {
949
1097
  import { ChevronRightIcon, MoreHorizontalIcon } from "lucide-react";
950
1098
  import { mergeProps as mergeProps3 } from "@base-ui/react/merge-props";
951
1099
  import { useRender as useRender3 } from "@base-ui/react/use-render";
952
- import { jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
1100
+ import { jsx as jsx12, jsxs as jsxs8 } from "react/jsx-runtime";
953
1101
  function Breadcrumb2({ density, className, ...props }) {
954
- return /* @__PURE__ */ jsx11("nav", {
1102
+ return /* @__PURE__ */ jsx12("nav", {
955
1103
  "aria-label": "breadcrumb",
956
1104
  "data-density": density,
957
1105
  "data-slot": "breadcrumb",
@@ -960,7 +1108,7 @@ function Breadcrumb2({ density, className, ...props }) {
960
1108
  });
961
1109
  }
962
1110
  function BreadcrumbList2({ density, className, ...props }) {
963
- return /* @__PURE__ */ jsx11("ol", {
1111
+ return /* @__PURE__ */ jsx12("ol", {
964
1112
  "data-density": density,
965
1113
  "data-slot": "breadcrumb-list",
966
1114
  className: cn2("flex flex-wrap items-center gap-control-gap text-sm wrap-break-word text-muted-foreground", className),
@@ -968,19 +1116,20 @@ function BreadcrumbList2({ density, className, ...props }) {
968
1116
  });
969
1117
  }
970
1118
  function BreadcrumbItem2({ density, className, ...props }) {
971
- return /* @__PURE__ */ jsx11("li", {
1119
+ return /* @__PURE__ */ jsx12("li", {
972
1120
  "data-density": density,
973
1121
  "data-slot": "breadcrumb-item",
974
1122
  className: cn2("inline-flex items-center gap-1", className),
975
1123
  ...props
976
1124
  });
977
1125
  }
978
- function BreadcrumbLink2({ density, className, render, ...props }) {
1126
+ function BreadcrumbLink2({ analytics, density, className, render, ...props }) {
1127
+ const onClick = useAnalyticsCallback("BreadcrumbLink", analytics, { name: "ui.activate" }, props.onClick);
979
1128
  return useRender3({
980
1129
  defaultTagName: "a",
981
1130
  props: mergeProps3({
982
1131
  className: cn2("transition-colors hover:text-foreground", className)
983
- }, props),
1132
+ }, { ...props, onClick }),
984
1133
  render,
985
1134
  state: {
986
1135
  density,
@@ -989,7 +1138,7 @@ function BreadcrumbLink2({ density, className, render, ...props }) {
989
1138
  });
990
1139
  }
991
1140
  function BreadcrumbPage2({ density, className, ...props }) {
992
- return /* @__PURE__ */ jsx11("span", {
1141
+ return /* @__PURE__ */ jsx12("span", {
993
1142
  "data-density": density,
994
1143
  "data-slot": "breadcrumb-page",
995
1144
  role: "link",
@@ -1000,20 +1149,20 @@ function BreadcrumbPage2({ density, className, ...props }) {
1000
1149
  });
1001
1150
  }
1002
1151
  function BreadcrumbSeparator2({ density, children, className, ...props }) {
1003
- return /* @__PURE__ */ jsx11("li", {
1152
+ return /* @__PURE__ */ jsx12("li", {
1004
1153
  "data-density": density,
1005
1154
  "data-slot": "breadcrumb-separator",
1006
1155
  role: "presentation",
1007
1156
  "aria-hidden": "true",
1008
1157
  className: cn2("[&>svg]:size-3.5", className),
1009
1158
  ...props,
1010
- children: children ?? /* @__PURE__ */ jsx11(ChevronRightIcon, {
1159
+ children: children ?? /* @__PURE__ */ jsx12(ChevronRightIcon, {
1011
1160
  className: "rtl:rotate-180"
1012
1161
  })
1013
1162
  });
1014
1163
  }
1015
1164
  function BreadcrumbEllipsis2({ density, className, ...props }) {
1016
- return /* @__PURE__ */ jsxs7("span", {
1165
+ return /* @__PURE__ */ jsxs8("span", {
1017
1166
  "data-density": density,
1018
1167
  "data-slot": "breadcrumb-ellipsis",
1019
1168
  role: "presentation",
@@ -1021,8 +1170,8 @@ function BreadcrumbEllipsis2({ density, className, ...props }) {
1021
1170
  className: cn2("flex size-5 items-center justify-center [&>svg]:size-4", className),
1022
1171
  ...props,
1023
1172
  children: [
1024
- /* @__PURE__ */ jsx11(MoreHorizontalIcon, {}),
1025
- /* @__PURE__ */ jsx11("span", {
1173
+ /* @__PURE__ */ jsx12(MoreHorizontalIcon, {}),
1174
+ /* @__PURE__ */ jsx12("span", {
1026
1175
  className: "sr-only",
1027
1176
  children: "More"
1028
1177
  })
@@ -1033,7 +1182,7 @@ function BreadcrumbEllipsis2({ density, className, ...props }) {
1033
1182
  import { mergeProps as mergeProps4 } from "@base-ui/react/merge-props";
1034
1183
  import { useRender as useRender4 } from "@base-ui/react/use-render";
1035
1184
  import { cva } from "class-variance-authority";
1036
- import { jsx as jsx12 } from "react/jsx-runtime";
1185
+ import { jsx as jsx13 } from "react/jsx-runtime";
1037
1186
  var buttonGroupVariants2 = 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", {
1038
1187
  variants: {
1039
1188
  layout: {
@@ -1056,7 +1205,7 @@ function ButtonGroup2({
1056
1205
  layout = "content",
1057
1206
  ...props
1058
1207
  }) {
1059
- return /* @__PURE__ */ jsx12("div", {
1208
+ return /* @__PURE__ */ jsx13("div", {
1060
1209
  role: "group",
1061
1210
  "data-density": density,
1062
1211
  "data-slot": "button-group",
@@ -1084,7 +1233,7 @@ function ButtonGroupSeparator2({
1084
1233
  orientation = "vertical",
1085
1234
  ...props
1086
1235
  }) {
1087
- return /* @__PURE__ */ jsx12(Separator2, {
1236
+ return /* @__PURE__ */ jsx13(Separator2, {
1088
1237
  "data-density": density,
1089
1238
  "data-slot": "button-group-separator",
1090
1239
  orientation,
@@ -1096,9 +1245,9 @@ function ButtonGroupSeparator2({
1096
1245
  import { mergeProps as mergeProps5 } from "@base-ui/react/merge-props";
1097
1246
  import { useRender as useRender5 } from "@base-ui/react/use-render";
1098
1247
  import { cva as cva2 } from "class-variance-authority";
1099
- import { jsx as jsx13 } from "react/jsx-runtime";
1248
+ import { jsx as jsx14 } from "react/jsx-runtime";
1100
1249
  function ItemGroup2({ density, className, ...props }) {
1101
- return /* @__PURE__ */ jsx13("div", {
1250
+ return /* @__PURE__ */ jsx14("div", {
1102
1251
  role: "list",
1103
1252
  "data-density": density,
1104
1253
  "data-slot": "item-group",
@@ -1107,7 +1256,7 @@ function ItemGroup2({ density, className, ...props }) {
1107
1256
  });
1108
1257
  }
1109
1258
  function ItemSeparator2({ density, className, ...props }) {
1110
- return /* @__PURE__ */ jsx13(Separator2, {
1259
+ return /* @__PURE__ */ jsx14(Separator2, {
1111
1260
  "data-density": density,
1112
1261
  "data-slot": "item-separator",
1113
1262
  orientation: "horizontal",
@@ -1168,7 +1317,7 @@ var itemMediaVariants = cva2("flex shrink-0 items-center justify-center gap-2 gr
1168
1317
  }
1169
1318
  });
1170
1319
  function ItemMedia2({ density, className, variant = "default", ...props }) {
1171
- return /* @__PURE__ */ jsx13("div", {
1320
+ return /* @__PURE__ */ jsx14("div", {
1172
1321
  "data-density": density,
1173
1322
  "data-slot": "item-media",
1174
1323
  "data-variant": variant,
@@ -1177,7 +1326,7 @@ function ItemMedia2({ density, className, variant = "default", ...props }) {
1177
1326
  });
1178
1327
  }
1179
1328
  function ItemContent2({ density, className, ...props }) {
1180
- return /* @__PURE__ */ jsx13("div", {
1329
+ return /* @__PURE__ */ jsx14("div", {
1181
1330
  "data-density": density,
1182
1331
  "data-slot": "item-content",
1183
1332
  className: cn2("flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none", className),
@@ -1185,7 +1334,7 @@ function ItemContent2({ density, className, ...props }) {
1185
1334
  });
1186
1335
  }
1187
1336
  function ItemTitle2({ density, className, ...props }) {
1188
- return /* @__PURE__ */ jsx13("div", {
1337
+ return /* @__PURE__ */ jsx14("div", {
1189
1338
  "data-density": density,
1190
1339
  "data-slot": "item-title",
1191
1340
  className: cn2("line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4", className),
@@ -1193,7 +1342,7 @@ function ItemTitle2({ density, className, ...props }) {
1193
1342
  });
1194
1343
  }
1195
1344
  function ItemDescription2({ density, className, ...props }) {
1196
- return /* @__PURE__ */ jsx13("p", {
1345
+ return /* @__PURE__ */ jsx14("p", {
1197
1346
  "data-density": density,
1198
1347
  "data-slot": "item-description",
1199
1348
  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),
@@ -1201,7 +1350,7 @@ function ItemDescription2({ density, className, ...props }) {
1201
1350
  });
1202
1351
  }
1203
1352
  function ItemActions2({ density, className, ...props }) {
1204
- return /* @__PURE__ */ jsx13("div", {
1353
+ return /* @__PURE__ */ jsx14("div", {
1205
1354
  "data-density": density,
1206
1355
  "data-slot": "item-actions",
1207
1356
  className: cn2("flex items-center gap-2", className),
@@ -1209,7 +1358,7 @@ function ItemActions2({ density, className, ...props }) {
1209
1358
  });
1210
1359
  }
1211
1360
  function ItemHeader2({ density, className, ...props }) {
1212
- return /* @__PURE__ */ jsx13("div", {
1361
+ return /* @__PURE__ */ jsx14("div", {
1213
1362
  "data-density": density,
1214
1363
  "data-slot": "item-header",
1215
1364
  className: cn2("flex basis-full items-center justify-between gap-2", className),
@@ -1217,7 +1366,7 @@ function ItemHeader2({ density, className, ...props }) {
1217
1366
  });
1218
1367
  }
1219
1368
  function ItemFooter2({ density, className, ...props }) {
1220
- return /* @__PURE__ */ jsx13("div", {
1369
+ return /* @__PURE__ */ jsx14("div", {
1221
1370
  "data-density": density,
1222
1371
  "data-slot": "item-footer",
1223
1372
  className: cn2("flex basis-full items-center justify-between gap-2", className),
@@ -1226,9 +1375,9 @@ function ItemFooter2({ density, className, ...props }) {
1226
1375
  }
1227
1376
  // src/components/Pagination.tsx
1228
1377
  import { ChevronLeftIcon, ChevronRightIcon as ChevronRightIcon2, MoreHorizontalIcon as MoreHorizontalIcon2 } from "lucide-react";
1229
- import { jsx as jsx14, jsxs as jsxs8 } from "react/jsx-runtime";
1378
+ import { jsx as jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
1230
1379
  function Pagination2({ density, className, ...props }) {
1231
- return /* @__PURE__ */ jsx14("nav", {
1380
+ return /* @__PURE__ */ jsx15("nav", {
1232
1381
  role: "navigation",
1233
1382
  "aria-label": "pagination",
1234
1383
  "data-density": density,
@@ -1238,7 +1387,7 @@ function Pagination2({ density, className, ...props }) {
1238
1387
  });
1239
1388
  }
1240
1389
  function PaginationContent2({ density, className, ...props }) {
1241
- return /* @__PURE__ */ jsx14("ul", {
1390
+ return /* @__PURE__ */ jsx15("ul", {
1242
1391
  "data-density": density,
1243
1392
  "data-slot": "pagination-content",
1244
1393
  className: cn2("flex items-center gap-0.5", className),
@@ -1246,19 +1395,22 @@ function PaginationContent2({ density, className, ...props }) {
1246
1395
  });
1247
1396
  }
1248
1397
  function PaginationItem2({ ...props }) {
1249
- return /* @__PURE__ */ jsx14("li", {
1398
+ return /* @__PURE__ */ jsx15("li", {
1250
1399
  "data-slot": "pagination-item",
1251
1400
  ...props
1252
1401
  });
1253
1402
  }
1254
1403
  function PaginationLink2({
1404
+ analytics,
1255
1405
  density,
1256
1406
  className,
1257
1407
  isActive,
1258
1408
  size = "icon",
1259
1409
  ...props
1260
1410
  }) {
1261
- return /* @__PURE__ */ jsx14("a", {
1411
+ return /* @__PURE__ */ jsx15(AnalyticsLink, {
1412
+ component: "PaginationLink",
1413
+ analytics,
1262
1414
  "data-density": density,
1263
1415
  className: cn2(buttonVariants2({ variant: isActive ? "outline" : "ghost", size }), className),
1264
1416
  "aria-current": isActive ? "page" : undefined,
@@ -1273,18 +1425,18 @@ function PaginationPrevious2({
1273
1425
  text = "Previous",
1274
1426
  ...props
1275
1427
  }) {
1276
- return /* @__PURE__ */ jsxs8(PaginationLink2, {
1428
+ return /* @__PURE__ */ jsxs9(PaginationLink2, {
1277
1429
  density,
1278
1430
  "aria-label": "Go to previous page",
1279
1431
  size: "default",
1280
1432
  className: cn2("ps-1.5!", className),
1281
1433
  ...props,
1282
1434
  children: [
1283
- /* @__PURE__ */ jsx14(ChevronLeftIcon, {
1435
+ /* @__PURE__ */ jsx15(ChevronLeftIcon, {
1284
1436
  "data-icon": "inline-start",
1285
1437
  className: "rtl:rotate-180"
1286
1438
  }),
1287
- /* @__PURE__ */ jsx14("span", {
1439
+ /* @__PURE__ */ jsx15("span", {
1288
1440
  className: "hidden sm:block",
1289
1441
  children: text
1290
1442
  })
@@ -1292,18 +1444,18 @@ function PaginationPrevious2({
1292
1444
  });
1293
1445
  }
1294
1446
  function PaginationNext2({ density, className, text = "Next", ...props }) {
1295
- return /* @__PURE__ */ jsxs8(PaginationLink2, {
1447
+ return /* @__PURE__ */ jsxs9(PaginationLink2, {
1296
1448
  density,
1297
1449
  "aria-label": "Go to next page",
1298
1450
  size: "default",
1299
1451
  className: cn2("pe-1.5!", className),
1300
1452
  ...props,
1301
1453
  children: [
1302
- /* @__PURE__ */ jsx14("span", {
1454
+ /* @__PURE__ */ jsx15("span", {
1303
1455
  className: "hidden sm:block",
1304
1456
  children: text
1305
1457
  }),
1306
- /* @__PURE__ */ jsx14(ChevronRightIcon2, {
1458
+ /* @__PURE__ */ jsx15(ChevronRightIcon2, {
1307
1459
  "data-icon": "inline-end",
1308
1460
  className: "rtl:rotate-180"
1309
1461
  })
@@ -1311,15 +1463,15 @@ function PaginationNext2({ density, className, text = "Next", ...props }) {
1311
1463
  });
1312
1464
  }
1313
1465
  function PaginationEllipsis2({ density, className, ...props }) {
1314
- return /* @__PURE__ */ jsxs8("span", {
1466
+ return /* @__PURE__ */ jsxs9("span", {
1315
1467
  "aria-hidden": true,
1316
1468
  "data-density": density,
1317
1469
  "data-slot": "pagination-ellipsis",
1318
1470
  className: cn2("flex size-control items-center justify-center [&_svg:not([class*='size-'])]:size-4", className),
1319
1471
  ...props,
1320
1472
  children: [
1321
- /* @__PURE__ */ jsx14(MoreHorizontalIcon2, {}),
1322
- /* @__PURE__ */ jsx14("span", {
1473
+ /* @__PURE__ */ jsx15(MoreHorizontalIcon2, {}),
1474
+ /* @__PURE__ */ jsx15("span", {
1323
1475
  className: "sr-only",
1324
1476
  children: "More pages"
1325
1477
  })
@@ -1345,29 +1497,32 @@ function useDrawer() {
1345
1497
 
1346
1498
  // src/components/Drawer.tsx
1347
1499
  import { Drawer as DrawerPrimitive } from "@base-ui/react/drawer";
1348
- import { jsx as jsx15, jsxs as jsxs9 } from "react/jsx-runtime";
1500
+ import { jsx as jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
1349
1501
  function Drawer2({
1502
+ analytics,
1350
1503
  modal = true,
1351
1504
  showSwipeHandle = false,
1352
1505
  snapPoints,
1353
1506
  swipeDirection = "down",
1354
1507
  ...props
1355
1508
  }) {
1509
+ const trackedOnOpenChange = useAnalyticsCallback("Drawer", analytics, (open, _details) => ({ name: "ui.open-request", open }), props.onOpenChange);
1356
1510
  const hasSnapPoints = snapPoints != null && snapPoints.length > 0;
1357
1511
  const contextValue = useMemo2(() => ({ hasSnapPoints, modal, showSwipeHandle, swipeDirection }), [hasSnapPoints, modal, showSwipeHandle, swipeDirection]);
1358
- return /* @__PURE__ */ jsx15(DrawerContext.Provider, {
1512
+ return /* @__PURE__ */ jsx16(DrawerContext.Provider, {
1359
1513
  value: contextValue,
1360
- children: /* @__PURE__ */ jsx15(DrawerPrimitive.Root, {
1514
+ children: /* @__PURE__ */ jsx16(DrawerPrimitive.Root, {
1361
1515
  "data-slot": "drawer",
1362
1516
  modal,
1363
1517
  snapPoints,
1364
1518
  swipeDirection,
1365
- ...props
1519
+ ...props,
1520
+ onOpenChange: trackedOnOpenChange
1366
1521
  })
1367
1522
  });
1368
1523
  }
1369
1524
  function DrawerTrigger2({ ...props }) {
1370
- return /* @__PURE__ */ jsx15(DrawerPrimitive.Trigger, {
1525
+ return /* @__PURE__ */ jsx16(DrawerPrimitive.Trigger, {
1371
1526
  "data-slot": "drawer-trigger",
1372
1527
  ...props
1373
1528
  });
@@ -1375,26 +1530,26 @@ function DrawerTrigger2({ ...props }) {
1375
1530
  function DrawerPortal2({ container, ref, children, ...props }) {
1376
1531
  const resolvedContainer = usePortalContainer2(container);
1377
1532
  const portal = usePortalNode(ref);
1378
- return /* @__PURE__ */ jsx15(DrawerPrimitive.Portal, {
1533
+ return /* @__PURE__ */ jsx16(DrawerPrimitive.Portal, {
1379
1534
  "data-slot": "drawer-portal",
1380
1535
  container: resolvedContainer,
1381
1536
  ref: portal.ref,
1382
1537
  ...props,
1383
- children: /* @__PURE__ */ jsx15(PortalProvider2, {
1538
+ children: /* @__PURE__ */ jsx16(PortalProvider2, {
1384
1539
  container: portal.node,
1385
1540
  children
1386
1541
  })
1387
1542
  });
1388
1543
  }
1389
1544
  function DrawerClose2({ ...props }) {
1390
- return /* @__PURE__ */ jsx15(DrawerPrimitive.Close, {
1545
+ return /* @__PURE__ */ jsx16(DrawerPrimitive.Close, {
1391
1546
  "data-slot": "drawer-close",
1392
1547
  ...props
1393
1548
  });
1394
1549
  }
1395
1550
  function DrawerOverlay2({ density, className, ...props }) {
1396
1551
  const resolvedDensity = useDensity(density);
1397
- return /* @__PURE__ */ jsx15(DrawerPrimitive.Backdrop, {
1552
+ return /* @__PURE__ */ jsx16(DrawerPrimitive.Backdrop, {
1398
1553
  "data-density": resolvedDensity,
1399
1554
  "data-slot": "drawer-overlay",
1400
1555
  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),
@@ -1402,7 +1557,7 @@ function DrawerOverlay2({ density, className, ...props }) {
1402
1557
  });
1403
1558
  }
1404
1559
  function DrawerSwipeHandle2({ density, className, ...props }) {
1405
- return /* @__PURE__ */ jsx15("div", {
1560
+ return /* @__PURE__ */ jsx16("div", {
1406
1561
  "data-density": density,
1407
1562
  "data-slot": "drawer-swipe-handle",
1408
1563
  "aria-hidden": "true",
@@ -1415,18 +1570,18 @@ function DrawerContent2({ density, className, children, ...props }) {
1415
1570
  const direction = useDirection2();
1416
1571
  const { hasSnapPoints, modal, showSwipeHandle, swipeDirection } = useDrawer();
1417
1572
  const swipeAxis = swipeDirection === "down" || swipeDirection === "up" ? "y" : "x";
1418
- return /* @__PURE__ */ jsxs9(DrawerPortal2, {
1573
+ return /* @__PURE__ */ jsxs10(DrawerPortal2, {
1419
1574
  "data-slot": "drawer-portal",
1420
1575
  children: [
1421
- modal === true && /* @__PURE__ */ jsx15(DrawerOverlay2, {
1576
+ modal === true && /* @__PURE__ */ jsx16(DrawerOverlay2, {
1422
1577
  "data-snap-points": hasSnapPoints ? "" : undefined
1423
1578
  }),
1424
- /* @__PURE__ */ jsx15(DrawerPrimitive.Viewport, {
1579
+ /* @__PURE__ */ jsx16(DrawerPrimitive.Viewport, {
1425
1580
  dir: direction,
1426
1581
  "data-slot": "drawer-viewport",
1427
1582
  "data-modal": modal,
1428
1583
  className: "pointer-events-none fixed inset-0 select-none data-[modal=true]:pointer-events-auto",
1429
- children: /* @__PURE__ */ jsxs9(DrawerPrimitive.Popup, {
1584
+ children: /* @__PURE__ */ jsxs10(DrawerPrimitive.Popup, {
1430
1585
  "data-density": resolvedDensity,
1431
1586
  "data-slot": "drawer-popup",
1432
1587
  "data-scroll": "none",
@@ -1435,8 +1590,8 @@ function DrawerContent2({ density, className, children, ...props }) {
1435
1590
  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),
1436
1591
  ...props,
1437
1592
  children: [
1438
- showSwipeHandle && /* @__PURE__ */ jsx15(DrawerSwipeHandle2, {}),
1439
- /* @__PURE__ */ jsx15(DrawerPrimitive.Content, {
1593
+ showSwipeHandle && /* @__PURE__ */ jsx16(DrawerSwipeHandle2, {}),
1594
+ /* @__PURE__ */ jsx16(DrawerPrimitive.Content, {
1440
1595
  "data-slot": "drawer-content",
1441
1596
  "data-scroll": "none",
1442
1597
  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",
@@ -1449,7 +1604,7 @@ function DrawerContent2({ density, className, children, ...props }) {
1449
1604
  });
1450
1605
  }
1451
1606
  function DrawerHeader2({ density, className, ...props }) {
1452
- return /* @__PURE__ */ jsx15("div", {
1607
+ return /* @__PURE__ */ jsx16("div", {
1453
1608
  "data-density": density,
1454
1609
  "data-slot": "drawer-header",
1455
1610
  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),
@@ -1457,7 +1612,7 @@ function DrawerHeader2({ density, className, ...props }) {
1457
1612
  });
1458
1613
  }
1459
1614
  function DrawerFooter2({ density, className, ...props }) {
1460
- return /* @__PURE__ */ jsx15("div", {
1615
+ return /* @__PURE__ */ jsx16("div", {
1461
1616
  "data-density": density,
1462
1617
  "data-slot": "drawer-footer",
1463
1618
  className: cn2("mt-auto flex shrink-0 flex-col gap-2 p-panel pt-0", className),
@@ -1465,7 +1620,7 @@ function DrawerFooter2({ density, className, ...props }) {
1465
1620
  });
1466
1621
  }
1467
1622
  function DrawerTitle2({ density, className, ...props }) {
1468
- return /* @__PURE__ */ jsx15(DrawerPrimitive.Title, {
1623
+ return /* @__PURE__ */ jsx16(DrawerPrimitive.Title, {
1469
1624
  "data-density": density,
1470
1625
  "data-slot": "drawer-title",
1471
1626
  className: (state) => cn2(" text-base font-medium text-foreground", typeof className === "function" ? className(state) : className),
@@ -1473,7 +1628,7 @@ function DrawerTitle2({ density, className, ...props }) {
1473
1628
  });
1474
1629
  }
1475
1630
  function DrawerDescription2({ density, className, ...props }) {
1476
- return /* @__PURE__ */ jsx15(DrawerPrimitive.Description, {
1631
+ return /* @__PURE__ */ jsx16(DrawerPrimitive.Description, {
1477
1632
  "data-density": density,
1478
1633
  "data-slot": "drawer-description",
1479
1634
  className: (state) => cn2("text-sm text-balance text-muted-foreground", typeof className === "function" ? className(state) : className),
@@ -1484,29 +1639,31 @@ function DrawerDescription2({ density, className, ...props }) {
1484
1639
  import { ChevronRightIcon as ChevronRightIcon3, CheckIcon as CheckIcon2 } from "lucide-react";
1485
1640
  import { useDirection as useDirection4 } from "@base-ui/react/direction-provider";
1486
1641
  import { ContextMenu as ContextMenuPrimitive } from "@base-ui/react/context-menu";
1487
- import { jsx as jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
1488
- function ContextMenu2({ ...props }) {
1489
- return /* @__PURE__ */ jsx16(ContextMenuPrimitive.Root, {
1642
+ import { jsx as jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
1643
+ function ContextMenu2({ analytics, ...props }) {
1644
+ const trackedOnOpenChange = useAnalyticsCallback("ContextMenu", analytics, (open, _details) => ({ name: "ui.open-request", open }), props.onOpenChange);
1645
+ return /* @__PURE__ */ jsx17(ContextMenuPrimitive.Root, {
1490
1646
  "data-slot": "context-menu",
1491
- ...props
1647
+ ...props,
1648
+ onOpenChange: trackedOnOpenChange
1492
1649
  });
1493
1650
  }
1494
1651
  function ContextMenuPortal2({ container, ref, children, ...props }) {
1495
1652
  const resolvedContainer = usePortalContainer2(container);
1496
1653
  const portal = usePortalNode(ref);
1497
- return /* @__PURE__ */ jsx16(ContextMenuPrimitive.Portal, {
1654
+ return /* @__PURE__ */ jsx17(ContextMenuPrimitive.Portal, {
1498
1655
  "data-slot": "context-menu-portal",
1499
1656
  container: resolvedContainer,
1500
1657
  ref: portal.ref,
1501
1658
  ...props,
1502
- children: /* @__PURE__ */ jsx16(PortalProvider2, {
1659
+ children: /* @__PURE__ */ jsx17(PortalProvider2, {
1503
1660
  container: portal.node,
1504
1661
  children
1505
1662
  })
1506
1663
  });
1507
1664
  }
1508
1665
  function ContextMenuTrigger2({ density, className, ...props }) {
1509
- return /* @__PURE__ */ jsx16(ContextMenuPrimitive.Trigger, {
1666
+ return /* @__PURE__ */ jsx17(ContextMenuPrimitive.Trigger, {
1510
1667
  "data-density": density,
1511
1668
  "data-slot": "context-menu-trigger",
1512
1669
  className: (state) => cn2("select-none", typeof className === "function" ? className(state) : className),
@@ -1524,15 +1681,15 @@ function ContextMenuContent2({
1524
1681
  }) {
1525
1682
  const resolvedDensity = useDensity(density);
1526
1683
  const direction = useDirection4();
1527
- return /* @__PURE__ */ jsx16(ContextMenuPortal2, {
1528
- children: /* @__PURE__ */ jsx16(ContextMenuPrimitive.Positioner, {
1684
+ return /* @__PURE__ */ jsx17(ContextMenuPortal2, {
1685
+ children: /* @__PURE__ */ jsx17(ContextMenuPrimitive.Positioner, {
1529
1686
  dir: direction,
1530
1687
  className: "isolate outline-none",
1531
1688
  align,
1532
1689
  alignOffset,
1533
1690
  side,
1534
1691
  sideOffset,
1535
- children: /* @__PURE__ */ jsx16(ContextMenuPrimitive.Popup, {
1692
+ children: /* @__PURE__ */ jsx17(ContextMenuPrimitive.Popup, {
1536
1693
  dir: direction,
1537
1694
  "data-density": resolvedDensity,
1538
1695
  "data-slot": "context-menu-content",
@@ -1543,13 +1700,13 @@ function ContextMenuContent2({
1543
1700
  });
1544
1701
  }
1545
1702
  function ContextMenuGroup2({ ...props }) {
1546
- return /* @__PURE__ */ jsx16(ContextMenuPrimitive.Group, {
1703
+ return /* @__PURE__ */ jsx17(ContextMenuPrimitive.Group, {
1547
1704
  "data-slot": "context-menu-group",
1548
1705
  ...props
1549
1706
  });
1550
1707
  }
1551
1708
  function ContextMenuLabel2({ density, className, inset, ...props }) {
1552
- return /* @__PURE__ */ jsx16(ContextMenuPrimitive.GroupLabel, {
1709
+ return /* @__PURE__ */ jsx17(ContextMenuPrimitive.GroupLabel, {
1553
1710
  "data-density": density,
1554
1711
  "data-slot": "context-menu-label",
1555
1712
  "data-inset": inset,
@@ -1557,24 +1714,38 @@ function ContextMenuLabel2({ density, className, inset, ...props }) {
1557
1714
  ...props
1558
1715
  });
1559
1716
  }
1560
- function ContextMenuItem2({ density, className, inset, variant = "default", ...props }) {
1561
- return /* @__PURE__ */ jsx16(ContextMenuPrimitive.Item, {
1717
+ function ContextMenuItem2({
1718
+ analytics,
1719
+ density,
1720
+ className,
1721
+ inset,
1722
+ variant = "default",
1723
+ ...props
1724
+ }) {
1725
+ const trackedOnClick = useAnalyticsCallback("ContextMenuItem", analytics, { name: "ui.activate" }, props.onClick);
1726
+ return /* @__PURE__ */ jsx17(ContextMenuPrimitive.Item, {
1562
1727
  "data-density": density,
1563
1728
  "data-slot": "context-menu-item",
1564
1729
  "data-inset": inset,
1565
1730
  "data-variant": variant,
1566
1731
  className: (state) => cn2("group/context-menu-item relative flex cursor-default items-center gap-control-gap rounded-md px-1.5 py-1 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-inset:ps-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 focus:*:[svg]:text-accent-foreground data-[variant=destructive]:*:[svg]:text-destructive", typeof className === "function" ? className(state) : className),
1567
- ...props
1732
+ ...props,
1733
+ onClick: trackedOnClick
1568
1734
  });
1569
1735
  }
1570
- function ContextMenuSub2({ ...props }) {
1571
- return /* @__PURE__ */ jsx16(ContextMenuPrimitive.SubmenuRoot, {
1736
+ function ContextMenuSub2({
1737
+ analytics,
1738
+ ...props
1739
+ }) {
1740
+ const trackedOnOpenChange = useAnalyticsCallback("ContextMenuSub", analytics, (open, _details) => ({ name: "ui.open-request", open }), props.onOpenChange);
1741
+ return /* @__PURE__ */ jsx17(ContextMenuPrimitive.SubmenuRoot, {
1572
1742
  "data-slot": "context-menu-sub",
1573
- ...props
1743
+ ...props,
1744
+ onOpenChange: trackedOnOpenChange
1574
1745
  });
1575
1746
  }
1576
1747
  function ContextMenuSubTrigger2({ density, className, inset, children, ...props }) {
1577
- return /* @__PURE__ */ jsxs10(ContextMenuPrimitive.SubmenuTrigger, {
1748
+ return /* @__PURE__ */ jsxs11(ContextMenuPrimitive.SubmenuTrigger, {
1578
1749
  "data-density": density,
1579
1750
  "data-slot": "context-menu-sub-trigger",
1580
1751
  "data-inset": inset,
@@ -1582,14 +1753,14 @@ function ContextMenuSubTrigger2({ density, className, inset, children, ...props
1582
1753
  ...props,
1583
1754
  children: [
1584
1755
  children,
1585
- /* @__PURE__ */ jsx16(ChevronRightIcon3, {
1756
+ /* @__PURE__ */ jsx17(ChevronRightIcon3, {
1586
1757
  className: "rtl:rotate-180 ms-auto"
1587
1758
  })
1588
1759
  ]
1589
1760
  });
1590
1761
  }
1591
1762
  function ContextMenuSubContent2({ ...props }) {
1592
- return /* @__PURE__ */ jsx16(ContextMenuContent2, {
1763
+ return /* @__PURE__ */ jsx17(ContextMenuContent2, {
1593
1764
  "data-slot": "context-menu-sub-content",
1594
1765
  className: " shadow-frame border border-frame-edge",
1595
1766
  side: "inline-end",
@@ -1597,6 +1768,7 @@ function ContextMenuSubContent2({ ...props }) {
1597
1768
  });
1598
1769
  }
1599
1770
  function ContextMenuCheckboxItem2({
1771
+ analytics,
1600
1772
  density,
1601
1773
  className,
1602
1774
  children,
@@ -1604,42 +1776,49 @@ function ContextMenuCheckboxItem2({
1604
1776
  inset,
1605
1777
  ...props
1606
1778
  }) {
1607
- return /* @__PURE__ */ jsxs10(ContextMenuPrimitive.CheckboxItem, {
1779
+ const trackedOnCheckedChange = useAnalyticsCallback("ContextMenuCheckboxItem", analytics, { name: "ui.change-request" }, props.onCheckedChange);
1780
+ return /* @__PURE__ */ jsxs11(ContextMenuPrimitive.CheckboxItem, {
1608
1781
  "data-density": density,
1609
1782
  "data-slot": "context-menu-checkbox-item",
1610
1783
  "data-inset": inset,
1611
1784
  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),
1612
1785
  checked,
1613
1786
  ...props,
1787
+ onCheckedChange: trackedOnCheckedChange,
1614
1788
  children: [
1615
- /* @__PURE__ */ jsx16("span", {
1789
+ /* @__PURE__ */ jsx17("span", {
1616
1790
  className: "pointer-events-none absolute end-2",
1617
- children: /* @__PURE__ */ jsx16(ContextMenuPrimitive.CheckboxItemIndicator, {
1618
- children: /* @__PURE__ */ jsx16(CheckIcon2, {})
1791
+ children: /* @__PURE__ */ jsx17(ContextMenuPrimitive.CheckboxItemIndicator, {
1792
+ children: /* @__PURE__ */ jsx17(CheckIcon2, {})
1619
1793
  })
1620
1794
  }),
1621
1795
  children
1622
1796
  ]
1623
1797
  });
1624
1798
  }
1625
- function ContextMenuRadioGroup2({ ...props }) {
1626
- return /* @__PURE__ */ jsx16(ContextMenuPrimitive.RadioGroup, {
1799
+ function ContextMenuRadioGroup2({
1800
+ analytics,
1801
+ ...props
1802
+ }) {
1803
+ const trackedOnValueChange = useAnalyticsCallback("ContextMenuRadioGroup", analytics, { name: "ui.change-request" }, props.onValueChange);
1804
+ return /* @__PURE__ */ jsx17(ContextMenuPrimitive.RadioGroup, {
1627
1805
  "data-slot": "context-menu-radio-group",
1628
- ...props
1806
+ ...props,
1807
+ onValueChange: trackedOnValueChange
1629
1808
  });
1630
1809
  }
1631
1810
  function ContextMenuRadioItem2({ density, className, children, inset, ...props }) {
1632
- return /* @__PURE__ */ jsxs10(ContextMenuPrimitive.RadioItem, {
1811
+ return /* @__PURE__ */ jsxs11(ContextMenuPrimitive.RadioItem, {
1633
1812
  "data-density": density,
1634
1813
  "data-slot": "context-menu-radio-item",
1635
1814
  "data-inset": inset,
1636
1815
  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),
1637
1816
  ...props,
1638
1817
  children: [
1639
- /* @__PURE__ */ jsx16("span", {
1818
+ /* @__PURE__ */ jsx17("span", {
1640
1819
  className: "pointer-events-none absolute end-2",
1641
- children: /* @__PURE__ */ jsx16(ContextMenuPrimitive.RadioItemIndicator, {
1642
- children: /* @__PURE__ */ jsx16(CheckIcon2, {})
1820
+ children: /* @__PURE__ */ jsx17(ContextMenuPrimitive.RadioItemIndicator, {
1821
+ children: /* @__PURE__ */ jsx17(CheckIcon2, {})
1643
1822
  })
1644
1823
  }),
1645
1824
  children
@@ -1647,7 +1826,7 @@ function ContextMenuRadioItem2({ density, className, children, inset, ...props }
1647
1826
  });
1648
1827
  }
1649
1828
  function ContextMenuSeparator2({ density, className, ...props }) {
1650
- return /* @__PURE__ */ jsx16(ContextMenuPrimitive.Separator, {
1829
+ return /* @__PURE__ */ jsx17(ContextMenuPrimitive.Separator, {
1651
1830
  "data-density": density,
1652
1831
  "data-slot": "context-menu-separator",
1653
1832
  className: (state) => cn2("-mx-1 my-1 h-px bg-border", typeof className === "function" ? className(state) : className),
@@ -1655,7 +1834,7 @@ function ContextMenuSeparator2({ density, className, ...props }) {
1655
1834
  });
1656
1835
  }
1657
1836
  function ContextMenuShortcut2({ density, className, ...props }) {
1658
- return /* @__PURE__ */ jsx16("span", {
1837
+ return /* @__PURE__ */ jsx17("span", {
1659
1838
  "data-density": density,
1660
1839
  "data-slot": "context-menu-shortcut",
1661
1840
  className: cn2("ms-auto text-xs tracking-widest text-muted-foreground group-focus/context-menu-item:text-accent-foreground", className),
@@ -1666,35 +1845,40 @@ function ContextMenuShortcut2({ density, className, ...props }) {
1666
1845
  import { CheckIcon as CheckIcon3 } from "lucide-react";
1667
1846
  import { Menu as MenuPrimitive } from "@base-ui/react/menu";
1668
1847
  import { Menubar as MenubarPrimitive } from "@base-ui/react/menubar";
1669
- import { jsx as jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
1848
+ import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
1670
1849
  function Menubar2({ density, className, ...props }) {
1671
- return /* @__PURE__ */ jsx17(MenubarPrimitive, {
1850
+ return /* @__PURE__ */ jsx18(MenubarPrimitive, {
1672
1851
  "data-density": density,
1673
1852
  "data-slot": "menubar",
1674
1853
  className: (state) => cn2("flex h-control items-center gap-0.5 rounded-sm border p-px", typeof className === "function" ? className(state) : className),
1675
1854
  ...props
1676
1855
  });
1677
1856
  }
1678
- function MenubarMenu2({ ...props }) {
1679
- return /* @__PURE__ */ jsx17(DropdownMenu2, {
1857
+ function MenubarMenu2({
1858
+ analytics,
1859
+ ...props
1860
+ }) {
1861
+ const trackedOnOpenChange = useAnalyticsCallback("MenubarMenu", analytics, (open, _details) => ({ name: "ui.open-request", open }), props.onOpenChange);
1862
+ return /* @__PURE__ */ jsx18(DropdownMenu2, {
1680
1863
  "data-slot": "menubar-menu",
1681
- ...props
1864
+ ...props,
1865
+ onOpenChange: trackedOnOpenChange
1682
1866
  });
1683
1867
  }
1684
1868
  function MenubarGroup2({ ...props }) {
1685
- return /* @__PURE__ */ jsx17(DropdownMenuGroup2, {
1869
+ return /* @__PURE__ */ jsx18(DropdownMenuGroup2, {
1686
1870
  "data-slot": "menubar-group",
1687
1871
  ...props
1688
1872
  });
1689
1873
  }
1690
1874
  function MenubarPortal2({ ...props }) {
1691
- return /* @__PURE__ */ jsx17(DropdownMenuPortal2, {
1875
+ return /* @__PURE__ */ jsx18(DropdownMenuPortal2, {
1692
1876
  "data-slot": "menubar-portal",
1693
1877
  ...props
1694
1878
  });
1695
1879
  }
1696
1880
  function MenubarTrigger2({ density, className, ...props }) {
1697
- return /* @__PURE__ */ jsx17(DropdownMenuTrigger2, {
1881
+ return /* @__PURE__ */ jsx18(DropdownMenuTrigger2, {
1698
1882
  "data-density": density,
1699
1883
  "data-slot": "menubar-trigger",
1700
1884
  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),
@@ -1709,7 +1893,7 @@ function MenubarContent2({
1709
1893
  sideOffset = 8,
1710
1894
  ...props
1711
1895
  }) {
1712
- return /* @__PURE__ */ jsx17(DropdownMenuContent2, {
1896
+ return /* @__PURE__ */ jsx18(DropdownMenuContent2, {
1713
1897
  density,
1714
1898
  "data-slot": "menubar-content",
1715
1899
  align,
@@ -1719,17 +1903,27 @@ function MenubarContent2({
1719
1903
  ...props
1720
1904
  });
1721
1905
  }
1722
- function MenubarItem2({ density, className, inset, variant = "default", ...props }) {
1723
- return /* @__PURE__ */ jsx17(DropdownMenuItem2, {
1906
+ function MenubarItem2({
1907
+ analytics,
1908
+ density,
1909
+ className,
1910
+ inset,
1911
+ variant = "default",
1912
+ ...props
1913
+ }) {
1914
+ const trackedOnClick = useAnalyticsCallback("MenubarItem", analytics, { name: "ui.activate" }, props.onClick);
1915
+ return /* @__PURE__ */ jsx18(DropdownMenuItem2, {
1724
1916
  density,
1725
1917
  "data-slot": "menubar-item",
1726
1918
  inset,
1727
1919
  variant,
1728
1920
  className: (state) => cn2("group/menubar-item gap-control-gap rounded-md px-1.5 py-1 text-sm focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:ps-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive data-disabled:opacity-50 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive!", typeof className === "function" ? className(state) : className),
1729
- ...props
1921
+ ...props,
1922
+ onClick: trackedOnClick
1730
1923
  });
1731
1924
  }
1732
1925
  function MenubarCheckboxItem2({
1926
+ analytics,
1733
1927
  density,
1734
1928
  className,
1735
1929
  children,
@@ -1737,18 +1931,20 @@ function MenubarCheckboxItem2({
1737
1931
  inset,
1738
1932
  ...props
1739
1933
  }) {
1740
- return /* @__PURE__ */ jsxs11(MenuPrimitive.CheckboxItem, {
1934
+ const trackedOnCheckedChange = useAnalyticsCallback("MenubarCheckboxItem", analytics, { name: "ui.change-request" }, props.onCheckedChange);
1935
+ return /* @__PURE__ */ jsxs12(MenuPrimitive.CheckboxItem, {
1741
1936
  "data-density": density,
1742
1937
  "data-slot": "menubar-checkbox-item",
1743
1938
  "data-inset": inset,
1744
1939
  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", typeof className === "function" ? className(state) : className),
1745
1940
  checked,
1746
1941
  ...props,
1942
+ onCheckedChange: trackedOnCheckedChange,
1747
1943
  children: [
1748
- /* @__PURE__ */ jsx17("span", {
1944
+ /* @__PURE__ */ jsx18("span", {
1749
1945
  className: "pointer-events-none absolute start-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4",
1750
- children: /* @__PURE__ */ jsx17(MenuPrimitive.CheckboxItemIndicator, {
1751
- children: /* @__PURE__ */ jsx17(CheckIcon3, {})
1946
+ children: /* @__PURE__ */ jsx18(MenuPrimitive.CheckboxItemIndicator, {
1947
+ children: /* @__PURE__ */ jsx18(CheckIcon3, {})
1752
1948
  })
1753
1949
  }),
1754
1950
  children
@@ -1756,23 +1952,23 @@ function MenubarCheckboxItem2({
1756
1952
  });
1757
1953
  }
1758
1954
  function MenubarRadioGroup2({ ...props }) {
1759
- return /* @__PURE__ */ jsx17(DropdownMenuRadioGroup2, {
1955
+ return /* @__PURE__ */ jsx18(DropdownMenuRadioGroup2, {
1760
1956
  "data-slot": "menubar-radio-group",
1761
1957
  ...props
1762
1958
  });
1763
1959
  }
1764
1960
  function MenubarRadioItem2({ density, className, children, inset, ...props }) {
1765
- return /* @__PURE__ */ jsxs11(MenuPrimitive.RadioItem, {
1961
+ return /* @__PURE__ */ jsxs12(MenuPrimitive.RadioItem, {
1766
1962
  "data-density": density,
1767
1963
  "data-slot": "menubar-radio-item",
1768
1964
  "data-inset": inset,
1769
1965
  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),
1770
1966
  ...props,
1771
1967
  children: [
1772
- /* @__PURE__ */ jsx17("span", {
1968
+ /* @__PURE__ */ jsx18("span", {
1773
1969
  className: "pointer-events-none absolute start-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4",
1774
- children: /* @__PURE__ */ jsx17(MenuPrimitive.RadioItemIndicator, {
1775
- children: /* @__PURE__ */ jsx17(CheckIcon3, {})
1970
+ children: /* @__PURE__ */ jsx18(MenuPrimitive.RadioItemIndicator, {
1971
+ children: /* @__PURE__ */ jsx18(CheckIcon3, {})
1776
1972
  })
1777
1973
  }),
1778
1974
  children
@@ -1780,7 +1976,7 @@ function MenubarRadioItem2({ density, className, children, inset, ...props }) {
1780
1976
  });
1781
1977
  }
1782
1978
  function MenubarLabel2({ density, className, inset, ...props }) {
1783
- return /* @__PURE__ */ jsx17(DropdownMenuLabel2, {
1979
+ return /* @__PURE__ */ jsx18(DropdownMenuLabel2, {
1784
1980
  density,
1785
1981
  "data-slot": "menubar-label",
1786
1982
  inset,
@@ -1789,7 +1985,7 @@ function MenubarLabel2({ density, className, inset, ...props }) {
1789
1985
  });
1790
1986
  }
1791
1987
  function MenubarSeparator2({ density, className, ...props }) {
1792
- return /* @__PURE__ */ jsx17(DropdownMenuSeparator2, {
1988
+ return /* @__PURE__ */ jsx18(DropdownMenuSeparator2, {
1793
1989
  density,
1794
1990
  "data-slot": "menubar-separator",
1795
1991
  className: (state) => cn2("-mx-1 my-1 h-px bg-border", typeof className === "function" ? className(state) : className),
@@ -1797,7 +1993,7 @@ function MenubarSeparator2({ density, className, ...props }) {
1797
1993
  });
1798
1994
  }
1799
1995
  function MenubarShortcut2({ density, className, ...props }) {
1800
- return /* @__PURE__ */ jsx17(DropdownMenuShortcut2, {
1996
+ return /* @__PURE__ */ jsx18(DropdownMenuShortcut2, {
1801
1997
  "data-density": density,
1802
1998
  "data-slot": "menubar-shortcut",
1803
1999
  className: cn2("ms-auto text-xs tracking-widest text-muted-foreground group-focus/menubar-item:text-accent-foreground", className),
@@ -1805,13 +2001,13 @@ function MenubarShortcut2({ density, className, ...props }) {
1805
2001
  });
1806
2002
  }
1807
2003
  function MenubarSub2({ ...props }) {
1808
- return /* @__PURE__ */ jsx17(DropdownMenuSub2, {
2004
+ return /* @__PURE__ */ jsx18(DropdownMenuSub2, {
1809
2005
  "data-slot": "menubar-sub",
1810
2006
  ...props
1811
2007
  });
1812
2008
  }
1813
2009
  function MenubarSubTrigger2({ density, className, inset, ...props }) {
1814
- return /* @__PURE__ */ jsx17(DropdownMenuSubTrigger2, {
2010
+ return /* @__PURE__ */ jsx18(DropdownMenuSubTrigger2, {
1815
2011
  density,
1816
2012
  "data-slot": "menubar-sub-trigger",
1817
2013
  inset,
@@ -1820,7 +2016,7 @@ function MenubarSubTrigger2({ density, className, inset, ...props }) {
1820
2016
  });
1821
2017
  }
1822
2018
  function MenubarSubContent2({ density, className, ...props }) {
1823
- return /* @__PURE__ */ jsx17(DropdownMenuSubContent2, {
2019
+ return /* @__PURE__ */ jsx18(DropdownMenuSubContent2, {
1824
2020
  density,
1825
2021
  "data-slot": "menubar-sub-content",
1826
2022
  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),
@@ -1831,23 +2027,26 @@ function MenubarSubContent2({ density, className, ...props }) {
1831
2027
  import { ChevronDownIcon as ChevronDownIcon3 } from "lucide-react";
1832
2028
  import { NavigationMenu as NavigationMenuPrimitive } from "@base-ui/react/navigation-menu";
1833
2029
  import { cva as cva3 } from "class-variance-authority";
1834
- import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
2030
+ import { jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
1835
2031
  function NavigationMenu2({
2032
+ analytics,
1836
2033
  density,
1837
2034
  align = "start",
1838
2035
  className,
1839
2036
  children,
1840
2037
  ...props
1841
2038
  }) {
2039
+ const trackedOnValueChange = useAnalyticsCallback("NavigationMenu", analytics, { name: "ui.change-request" }, props.onValueChange);
1842
2040
  const resolvedDensity = useDensity(density);
1843
- return /* @__PURE__ */ jsxs12(NavigationMenuPrimitive.Root, {
2041
+ return /* @__PURE__ */ jsxs13(NavigationMenuPrimitive.Root, {
1844
2042
  "data-density": resolvedDensity,
1845
2043
  "data-slot": "navigation-menu",
1846
2044
  className: (state) => cn2("group/navigation-menu relative flex max-w-max flex-1 items-center justify-center", typeof className === "function" ? className(state) : className),
1847
2045
  ...props,
2046
+ onValueChange: trackedOnValueChange,
1848
2047
  children: [
1849
2048
  children,
1850
- /* @__PURE__ */ jsx18(NavigationMenuPositioner2, {
2049
+ /* @__PURE__ */ jsx19(NavigationMenuPositioner2, {
1851
2050
  density: resolvedDensity,
1852
2051
  align
1853
2052
  })
@@ -1855,7 +2054,7 @@ function NavigationMenu2({
1855
2054
  });
1856
2055
  }
1857
2056
  function NavigationMenuList2({ density, className, ...props }) {
1858
- return /* @__PURE__ */ jsx18(NavigationMenuPrimitive.List, {
2057
+ return /* @__PURE__ */ jsx19(NavigationMenuPrimitive.List, {
1859
2058
  "data-density": density,
1860
2059
  "data-slot": "navigation-menu-list",
1861
2060
  className: (state) => cn2("group flex flex-1 list-none items-center justify-center gap-0", typeof className === "function" ? className(state) : className),
@@ -1863,7 +2062,7 @@ function NavigationMenuList2({ density, className, ...props }) {
1863
2062
  });
1864
2063
  }
1865
2064
  function NavigationMenuItem2({ density, className, ...props }) {
1866
- return /* @__PURE__ */ jsx18(NavigationMenuPrimitive.Item, {
2065
+ return /* @__PURE__ */ jsx19(NavigationMenuPrimitive.Item, {
1867
2066
  "data-density": density,
1868
2067
  "data-slot": "navigation-menu-item",
1869
2068
  className: (state) => cn2("relative", typeof className === "function" ? className(state) : className),
@@ -1872,7 +2071,7 @@ function NavigationMenuItem2({ density, className, ...props }) {
1872
2071
  }
1873
2072
  var navigationMenuTriggerStyle2 = 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");
1874
2073
  function NavigationMenuTrigger2({ density, className, children, ...props }) {
1875
- return /* @__PURE__ */ jsxs12(NavigationMenuPrimitive.Trigger, {
2074
+ return /* @__PURE__ */ jsxs13(NavigationMenuPrimitive.Trigger, {
1876
2075
  "data-density": density,
1877
2076
  "data-slot": "navigation-menu-trigger",
1878
2077
  className: (state) => cn2(navigationMenuTriggerStyle2(), "group", typeof className === "function" ? className(state) : className),
@@ -1880,12 +2079,12 @@ function NavigationMenuTrigger2({ density, className, children, ...props }) {
1880
2079
  children: [
1881
2080
  children,
1882
2081
  " ",
1883
- /* @__PURE__ */ jsx18(NavigationMenuIndicator2, {})
2082
+ /* @__PURE__ */ jsx19(NavigationMenuIndicator2, {})
1884
2083
  ]
1885
2084
  });
1886
2085
  }
1887
2086
  function NavigationMenuContent2({ density, className, ...props }) {
1888
- return /* @__PURE__ */ jsx18(NavigationMenuPrimitive.Content, {
2087
+ return /* @__PURE__ */ jsx19(NavigationMenuPrimitive.Content, {
1889
2088
  "data-density": density,
1890
2089
  "data-slot": "navigation-menu-content",
1891
2090
  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),
@@ -1905,12 +2104,12 @@ function NavigationMenuPositioner2({
1905
2104
  const direction = useDirection2();
1906
2105
  const container = usePortalContainer2();
1907
2106
  const portal = usePortalNode();
1908
- return /* @__PURE__ */ jsx18(NavigationMenuPrimitive.Portal, {
2107
+ return /* @__PURE__ */ jsx19(NavigationMenuPrimitive.Portal, {
1909
2108
  container,
1910
2109
  ref: portal.ref,
1911
- children: /* @__PURE__ */ jsx18(PortalProvider2, {
2110
+ children: /* @__PURE__ */ jsx19(PortalProvider2, {
1912
2111
  container: portal.node,
1913
- children: /* @__PURE__ */ jsx18(NavigationMenuPrimitive.Positioner, {
2112
+ children: /* @__PURE__ */ jsx19(NavigationMenuPrimitive.Positioner, {
1914
2113
  dir: direction,
1915
2114
  side,
1916
2115
  sideOffset,
@@ -1918,11 +2117,11 @@ function NavigationMenuPositioner2({
1918
2117
  alignOffset,
1919
2118
  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),
1920
2119
  ...props,
1921
- children: /* @__PURE__ */ jsx18(NavigationMenuPrimitive.Popup, {
2120
+ children: /* @__PURE__ */ jsx19(NavigationMenuPrimitive.Popup, {
1922
2121
  "data-density": resolvedDensity,
1923
2122
  "data-slot": "navigation-menu-popup",
1924
2123
  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",
1925
- children: /* @__PURE__ */ jsx18(NavigationMenuPrimitive.Viewport, {
2124
+ children: /* @__PURE__ */ jsx19(NavigationMenuPrimitive.Viewport, {
1926
2125
  className: "relative size-full overflow-hidden"
1927
2126
  })
1928
2127
  })
@@ -1930,12 +2129,14 @@ function NavigationMenuPositioner2({
1930
2129
  })
1931
2130
  });
1932
2131
  }
1933
- function NavigationMenuLink2({ density, className, ...props }) {
1934
- return /* @__PURE__ */ jsx18(NavigationMenuPrimitive.Link, {
2132
+ function NavigationMenuLink2({ analytics, density, className, ...props }) {
2133
+ const trackedOnClick = useAnalyticsCallback("NavigationMenuLink", analytics, { name: "ui.activate" }, props.onClick);
2134
+ return /* @__PURE__ */ jsx19(NavigationMenuPrimitive.Link, {
1935
2135
  "data-density": density,
1936
2136
  "data-slot": "navigation-menu-link",
1937
2137
  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),
1938
- ...props
2138
+ ...props,
2139
+ onClick: trackedOnClick
1939
2140
  });
1940
2141
  }
1941
2142
  function NavigationMenuIndicator2({
@@ -1944,32 +2145,32 @@ function NavigationMenuIndicator2({
1944
2145
  children,
1945
2146
  ...props
1946
2147
  }) {
1947
- return /* @__PURE__ */ jsx18(NavigationMenuPrimitive.Icon, {
2148
+ return /* @__PURE__ */ jsx19(NavigationMenuPrimitive.Icon, {
1948
2149
  "data-density": density,
1949
2150
  "data-slot": "navigation-menu-indicator",
1950
2151
  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),
1951
2152
  ...props,
1952
- children: children ?? /* @__PURE__ */ jsx18(ChevronDownIcon3, {})
2153
+ children: children ?? /* @__PURE__ */ jsx19(ChevronDownIcon3, {})
1953
2154
  });
1954
2155
  }
1955
2156
  // src/components/Toast.tsx
1956
2157
  import { Toast as ToastPrimitive } from "@base-ui/react/toast";
1957
2158
  import { CircleCheckIcon, InfoIcon, TriangleAlertIcon, OctagonXIcon, LoaderCircleIcon, XIcon } from "lucide-react";
1958
- import { jsx as jsx19, jsxs as jsxs13, Fragment } from "react/jsx-runtime";
2159
+ import { jsx as jsx20, jsxs as jsxs14, Fragment as Fragment3 } from "react/jsx-runtime";
1959
2160
  function ToastProvider2(props) {
1960
- return /* @__PURE__ */ jsx19(ToastPrimitive.Provider, {
2161
+ return /* @__PURE__ */ jsx20(ToastPrimitive.Provider, {
1961
2162
  ...props
1962
2163
  });
1963
2164
  }
1964
2165
  function ToastPortal2({ container, ref, children, ...props }) {
1965
2166
  const resolvedContainer = usePortalContainer2(container);
1966
2167
  const portal = usePortalNode(ref);
1967
- return /* @__PURE__ */ jsx19(ToastPrimitive.Portal, {
2168
+ return /* @__PURE__ */ jsx20(ToastPrimitive.Portal, {
1968
2169
  "data-slot": "toast-portal",
1969
2170
  container: resolvedContainer,
1970
2171
  ref: portal.ref,
1971
2172
  ...props,
1972
- children: /* @__PURE__ */ jsx19(PortalProvider2, {
2173
+ children: /* @__PURE__ */ jsx20(PortalProvider2, {
1973
2174
  container: portal.node,
1974
2175
  children
1975
2176
  })
@@ -1978,7 +2179,7 @@ function ToastPortal2({ container, ref, children, ...props }) {
1978
2179
  function ToastViewport2({ density, dir, className, ...props }) {
1979
2180
  const resolvedDensity = useDensity(density);
1980
2181
  const inheritedDirection = useDirection2();
1981
- return /* @__PURE__ */ jsx19(ToastPrimitive.Viewport, {
2182
+ return /* @__PURE__ */ jsx20(ToastPrimitive.Viewport, {
1982
2183
  dir: dir ?? inheritedDirection,
1983
2184
  "data-density": resolvedDensity,
1984
2185
  "data-slot": "toast-viewport",
@@ -1987,7 +2188,7 @@ function ToastViewport2({ density, dir, className, ...props }) {
1987
2188
  });
1988
2189
  }
1989
2190
  function Toast2({ density, className, ...props }) {
1990
- return /* @__PURE__ */ jsx19(ToastPrimitive.Root, {
2191
+ return /* @__PURE__ */ jsx20(ToastPrimitive.Root, {
1991
2192
  "data-density": density,
1992
2193
  "data-slot": "toast",
1993
2194
  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),
@@ -1995,57 +2196,63 @@ function Toast2({ density, className, ...props }) {
1995
2196
  });
1996
2197
  }
1997
2198
  function ToastContent2({ className, ...props }) {
1998
- return /* @__PURE__ */ jsx19(ToastPrimitive.Content, {
2199
+ return /* @__PURE__ */ jsx20(ToastPrimitive.Content, {
1999
2200
  "data-slot": "toast-content",
2000
2201
  className: (state) => cn2("flex items-center gap-control-gap p-panel", typeof className === "function" ? className(state) : className),
2001
2202
  ...props
2002
2203
  });
2003
2204
  }
2004
2205
  function ToastTitle2({ className, ...props }) {
2005
- return /* @__PURE__ */ jsx19(ToastPrimitive.Title, {
2206
+ return /* @__PURE__ */ jsx20(ToastPrimitive.Title, {
2006
2207
  "data-slot": "toast-title",
2007
2208
  className: (state) => cn2("text-sm font-medium", typeof className === "function" ? className(state) : className),
2008
2209
  ...props
2009
2210
  });
2010
2211
  }
2011
2212
  function ToastDescription2({ className, ...props }) {
2012
- return /* @__PURE__ */ jsx19(ToastPrimitive.Description, {
2213
+ return /* @__PURE__ */ jsx20(ToastPrimitive.Description, {
2013
2214
  "data-slot": "toast-description",
2014
2215
  className: (state) => cn2("text-sm text-muted-foreground", typeof className === "function" ? className(state) : className),
2015
2216
  ...props
2016
2217
  });
2017
2218
  }
2018
2219
  function ToastAction2({
2220
+ analytics,
2019
2221
  className,
2020
- render = /* @__PURE__ */ jsx19(Button2, {
2222
+ render = /* @__PURE__ */ jsx20(Button2, {
2021
2223
  variant: "outline",
2022
2224
  size: "sm"
2023
2225
  }),
2024
2226
  ...props
2025
2227
  }) {
2026
- return /* @__PURE__ */ jsx19(ToastPrimitive.Action, {
2228
+ const trackedOnClick = useAnalyticsCallback("ToastAction", analytics, { name: "ui.activate" }, props.onClick);
2229
+ return /* @__PURE__ */ jsx20(ToastPrimitive.Action, {
2027
2230
  "data-slot": "toast-action",
2028
2231
  render,
2029
2232
  className: (state) => cn2("shrink-0", typeof className === "function" ? className(state) : className),
2030
- ...props
2233
+ ...props,
2234
+ onClick: trackedOnClick
2031
2235
  });
2032
2236
  }
2033
2237
  function ToastClose2({
2238
+ analytics,
2034
2239
  className,
2035
2240
  children,
2036
- render = /* @__PURE__ */ jsx19(Button2, {
2241
+ render = /* @__PURE__ */ jsx20(Button2, {
2037
2242
  variant: "ghost",
2038
2243
  size: "icon-sm"
2039
2244
  }),
2040
2245
  ...props
2041
2246
  }) {
2042
- return /* @__PURE__ */ jsx19(ToastPrimitive.Close, {
2247
+ const trackedOnClick = useAnalyticsCallback("ToastClose", analytics, { name: "ui.activate" }, props.onClick);
2248
+ return /* @__PURE__ */ jsx20(ToastPrimitive.Close, {
2043
2249
  "data-slot": "toast-close",
2044
2250
  "aria-label": "Close toast",
2045
2251
  render,
2046
2252
  className: (state) => cn2("relative shrink-0 text-muted-foreground hover:text-foreground", typeof className === "function" ? className(state) : className),
2047
2253
  ...props,
2048
- children: children ?? /* @__PURE__ */ jsx19(XIcon, {
2254
+ onClick: trackedOnClick,
2255
+ children: children ?? /* @__PURE__ */ jsx20(XIcon, {
2049
2256
  "aria-hidden": "true"
2050
2257
  })
2051
2258
  });
@@ -2053,24 +2260,24 @@ function ToastClose2({
2053
2260
  function ToastIcon({ type }) {
2054
2261
  switch (type) {
2055
2262
  case "success":
2056
- return /* @__PURE__ */ jsx19(CircleCheckIcon, {
2263
+ return /* @__PURE__ */ jsx20(CircleCheckIcon, {
2057
2264
  "aria-hidden": "true"
2058
2265
  });
2059
2266
  case "info":
2060
- return /* @__PURE__ */ jsx19(InfoIcon, {
2267
+ return /* @__PURE__ */ jsx20(InfoIcon, {
2061
2268
  "aria-hidden": "true"
2062
2269
  });
2063
2270
  case "warning":
2064
- return /* @__PURE__ */ jsx19(TriangleAlertIcon, {
2271
+ return /* @__PURE__ */ jsx20(TriangleAlertIcon, {
2065
2272
  "aria-hidden": "true"
2066
2273
  });
2067
2274
  case "error":
2068
- return /* @__PURE__ */ jsx19(OctagonXIcon, {
2275
+ return /* @__PURE__ */ jsx20(OctagonXIcon, {
2069
2276
  "aria-hidden": "true",
2070
2277
  className: "text-destructive"
2071
2278
  });
2072
2279
  case "loading":
2073
- return /* @__PURE__ */ jsx19(LoaderCircleIcon, {
2280
+ return /* @__PURE__ */ jsx20(LoaderCircleIcon, {
2074
2281
  "aria-hidden": "true",
2075
2282
  className: "animate-spin motion-reduce:animate-none"
2076
2283
  });
@@ -2080,41 +2287,41 @@ function ToastIcon({ type }) {
2080
2287
  }
2081
2288
  function ToastList() {
2082
2289
  const { toasts } = ToastPrimitive.useToastManager();
2083
- return /* @__PURE__ */ jsx19(Fragment, {
2084
- children: toasts.map((toastItem) => /* @__PURE__ */ jsx19(Toast2, {
2290
+ return /* @__PURE__ */ jsx20(Fragment3, {
2291
+ children: toasts.map((toastItem) => /* @__PURE__ */ jsx20(Toast2, {
2085
2292
  toast: toastItem,
2086
- children: /* @__PURE__ */ jsxs13(ToastContent2, {
2293
+ children: /* @__PURE__ */ jsxs14(ToastContent2, {
2087
2294
  children: [
2088
- /* @__PURE__ */ jsx19("span", {
2295
+ /* @__PURE__ */ jsx20("span", {
2089
2296
  "data-slot": "toast-icon",
2090
2297
  className: "shrink-0 empty:hidden [&_svg]:size-4",
2091
- children: /* @__PURE__ */ jsx19(ToastIcon, {
2298
+ children: /* @__PURE__ */ jsx20(ToastIcon, {
2092
2299
  type: toastItem.type
2093
2300
  })
2094
2301
  }),
2095
- /* @__PURE__ */ jsxs13("div", {
2302
+ /* @__PURE__ */ jsxs14("div", {
2096
2303
  className: "flex min-w-0 flex-1 flex-col gap-1",
2097
2304
  children: [
2098
- /* @__PURE__ */ jsx19(ToastTitle2, {}),
2099
- /* @__PURE__ */ jsx19(ToastDescription2, {})
2305
+ /* @__PURE__ */ jsx20(ToastTitle2, {}),
2306
+ /* @__PURE__ */ jsx20(ToastDescription2, {})
2100
2307
  ]
2101
2308
  }),
2102
- /* @__PURE__ */ jsx19(ToastAction2, {}),
2103
- /* @__PURE__ */ jsx19(ToastClose2, {})
2309
+ /* @__PURE__ */ jsx20(ToastAction2, {}),
2310
+ /* @__PURE__ */ jsx20(ToastClose2, {})
2104
2311
  ]
2105
2312
  })
2106
2313
  }, toastItem.id))
2107
2314
  });
2108
2315
  }
2109
2316
  function ToastToaster2({ children, density, ...props }) {
2110
- return /* @__PURE__ */ jsxs13(ToastProvider2, {
2317
+ return /* @__PURE__ */ jsxs14(ToastProvider2, {
2111
2318
  ...props,
2112
2319
  children: [
2113
2320
  children,
2114
- /* @__PURE__ */ jsx19(ToastPortal2, {
2115
- children: /* @__PURE__ */ jsx19(ToastViewport2, {
2321
+ /* @__PURE__ */ jsx20(ToastPortal2, {
2322
+ children: /* @__PURE__ */ jsx20(ToastViewport2, {
2116
2323
  density,
2117
- children: /* @__PURE__ */ jsx19(ToastList, {})
2324
+ children: /* @__PURE__ */ jsx20(ToastList, {})
2118
2325
  })
2119
2326
  })
2120
2327
  ]
@@ -2130,7 +2337,7 @@ function useToastManager2() {
2130
2337
  import { mergeProps as mergeProps6 } from "@base-ui/react/merge-props";
2131
2338
  import { useRender as useRender6 } from "@base-ui/react/use-render";
2132
2339
  import { cva as cva4 } from "class-variance-authority";
2133
- import { jsx as jsx20 } from "react/jsx-runtime";
2340
+ import { jsx as jsx21 } from "react/jsx-runtime";
2134
2341
  var markerVariants2 = 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", {
2135
2342
  variants: {
2136
2343
  variant: {
@@ -2149,7 +2356,7 @@ function Marker2({ density, className, variant = "default", render, ...props })
2149
2356
  });
2150
2357
  }
2151
2358
  function MarkerIcon2({ density, className, ...props }) {
2152
- return /* @__PURE__ */ jsx20("span", {
2359
+ return /* @__PURE__ */ jsx21("span", {
2153
2360
  "data-density": density,
2154
2361
  "data-slot": "marker-icon",
2155
2362
  "aria-hidden": "true",
@@ -2158,7 +2365,7 @@ function MarkerIcon2({ density, className, ...props }) {
2158
2365
  });
2159
2366
  }
2160
2367
  function MarkerContent2({ density, className, ...props }) {
2161
- return /* @__PURE__ */ jsx20("span", {
2368
+ return /* @__PURE__ */ jsx21("span", {
2162
2369
  "data-density": density,
2163
2370
  "data-slot": "marker-content",
2164
2371
  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),
@@ -2169,9 +2376,9 @@ function MarkerContent2({ density, className, ...props }) {
2169
2376
  import { mergeProps as mergeProps7 } from "@base-ui/react/merge-props";
2170
2377
  import { useRender as useRender7 } from "@base-ui/react/use-render";
2171
2378
  import { cva as cva5 } from "class-variance-authority";
2172
- import { jsx as jsx21 } from "react/jsx-runtime";
2379
+ import { jsx as jsx22 } from "react/jsx-runtime";
2173
2380
  function BubbleGroup2({ density, className, ...props }) {
2174
- return /* @__PURE__ */ jsx21("div", {
2381
+ return /* @__PURE__ */ jsx22("div", {
2175
2382
  "data-density": density,
2176
2383
  "data-slot": "bubble-group",
2177
2384
  className: cn2("flex min-w-0 flex-col gap-control-gap", className),
@@ -2193,7 +2400,7 @@ var bubbleVariants = cva5("group/bubble relative flex w-fit max-w-[80%] min-w-0
2193
2400
  defaultVariants: { variant: "default" }
2194
2401
  });
2195
2402
  function Bubble2({ density, variant = "default", align = "start", className, ...props }) {
2196
- return /* @__PURE__ */ jsx21("div", {
2403
+ return /* @__PURE__ */ jsx22("div", {
2197
2404
  "data-density": density,
2198
2405
  "data-slot": "bubble",
2199
2406
  "data-variant": variant,
@@ -2226,7 +2433,7 @@ function BubbleReactions2({
2226
2433
  className,
2227
2434
  ...props
2228
2435
  }) {
2229
- return /* @__PURE__ */ jsx21("div", {
2436
+ return /* @__PURE__ */ jsx22("div", {
2230
2437
  "data-density": density,
2231
2438
  "data-slot": "bubble-reactions",
2232
2439
  "data-align": align,
@@ -2244,9 +2451,9 @@ import { createContext as createContext2 } from "react";
2244
2451
  var MessageContext = createContext2(null);
2245
2452
 
2246
2453
  // src/components/Message.tsx
2247
- import { jsx as jsx22 } from "react/jsx-runtime";
2454
+ import { jsx as jsx23 } from "react/jsx-runtime";
2248
2455
  function MessageGroup2({ density, className, ...props }) {
2249
- return /* @__PURE__ */ jsx22("div", {
2456
+ return /* @__PURE__ */ jsx23("div", {
2250
2457
  "data-density": density,
2251
2458
  "data-slot": "message-group",
2252
2459
  className: cn2("flex min-w-0 flex-col gap-control-gap", className),
@@ -2257,9 +2464,9 @@ function Message2({ density, className, align = "start", style, ...props }) {
2257
2464
  const [footerOffset, setFooterOffset] = useState(0);
2258
2465
  const context = useMemo3(() => ({ setFooterOffset }), []);
2259
2466
  const messageStyle = { ...style, "--message-footer-offset": `${footerOffset}px` };
2260
- return /* @__PURE__ */ jsx22(MessageContext.Provider, {
2467
+ return /* @__PURE__ */ jsx23(MessageContext.Provider, {
2261
2468
  value: context,
2262
- children: /* @__PURE__ */ jsx22("div", {
2469
+ children: /* @__PURE__ */ jsx23("div", {
2263
2470
  "data-density": density,
2264
2471
  "data-slot": "message",
2265
2472
  "data-align": align,
@@ -2270,7 +2477,7 @@ function Message2({ density, className, align = "start", style, ...props }) {
2270
2477
  });
2271
2478
  }
2272
2479
  function MessageAvatar2({ density, className, ...props }) {
2273
- return /* @__PURE__ */ jsx22("div", {
2480
+ return /* @__PURE__ */ jsx23("div", {
2274
2481
  "data-density": density,
2275
2482
  "data-slot": "message-avatar",
2276
2483
  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),
@@ -2278,7 +2485,7 @@ function MessageAvatar2({ density, className, ...props }) {
2278
2485
  });
2279
2486
  }
2280
2487
  function MessageContent2({ density, className, ...props }) {
2281
- return /* @__PURE__ */ jsx22("div", {
2488
+ return /* @__PURE__ */ jsx23("div", {
2282
2489
  "data-density": density,
2283
2490
  "data-slot": "message-content",
2284
2491
  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),
@@ -2286,7 +2493,7 @@ function MessageContent2({ density, className, ...props }) {
2286
2493
  });
2287
2494
  }
2288
2495
  function MessageHeader2({ density, className, ...props }) {
2289
- return /* @__PURE__ */ jsx22("div", {
2496
+ return /* @__PURE__ */ jsx23("div", {
2290
2497
  "data-density": density,
2291
2498
  "data-slot": "message-header",
2292
2499
  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),
@@ -2328,7 +2535,7 @@ function MessageFooter2({ density, className, ...props }) {
2328
2535
  import { mergeProps as mergeProps8 } from "@base-ui/react/merge-props";
2329
2536
  import { useRender as useRender9 } from "@base-ui/react/use-render";
2330
2537
  import { cva as cva6 } from "class-variance-authority";
2331
- import { jsx as jsx23 } from "react/jsx-runtime";
2538
+ import { jsx as jsx24 } from "react/jsx-runtime";
2332
2539
  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", {
2333
2540
  variants: {
2334
2541
  size: {
@@ -2350,7 +2557,7 @@ function Attachment2({
2350
2557
  orientation = "horizontal",
2351
2558
  ...props
2352
2559
  }) {
2353
- return /* @__PURE__ */ jsx23("div", {
2560
+ return /* @__PURE__ */ jsx24("div", {
2354
2561
  "data-slot": "attachment",
2355
2562
  "data-density": density,
2356
2563
  "data-state": state,
@@ -2370,7 +2577,7 @@ var attachmentMediaVariants = cva6("relative flex aspect-square w-10 shrink-0 it
2370
2577
  defaultVariants: { variant: "icon" }
2371
2578
  });
2372
2579
  function AttachmentMedia2({ density, className, variant = "icon", ...props }) {
2373
- return /* @__PURE__ */ jsx23("div", {
2580
+ return /* @__PURE__ */ jsx24("div", {
2374
2581
  "data-slot": "attachment-media",
2375
2582
  "data-density": density,
2376
2583
  "data-variant": variant,
@@ -2379,7 +2586,7 @@ function AttachmentMedia2({ density, className, variant = "icon", ...props }) {
2379
2586
  });
2380
2587
  }
2381
2588
  function AttachmentContent2({ density, className, ...props }) {
2382
- return /* @__PURE__ */ jsx23("div", {
2589
+ return /* @__PURE__ */ jsx24("div", {
2383
2590
  "data-slot": "attachment-content",
2384
2591
  "data-density": density,
2385
2592
  className: cn2("max-w-full min-w-0 flex-1 leading-tight group-data-[orientation=vertical]/attachment:px-1", className),
@@ -2387,7 +2594,7 @@ function AttachmentContent2({ density, className, ...props }) {
2387
2594
  });
2388
2595
  }
2389
2596
  function AttachmentTitle2({ density, className, ...props }) {
2390
- return /* @__PURE__ */ jsx23("span", {
2597
+ return /* @__PURE__ */ jsx24("span", {
2391
2598
  "data-slot": "attachment-title",
2392
2599
  "data-density": density,
2393
2600
  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),
@@ -2395,7 +2602,7 @@ function AttachmentTitle2({ density, className, ...props }) {
2395
2602
  });
2396
2603
  }
2397
2604
  function AttachmentDescription2({ density, className, ...props }) {
2398
- return /* @__PURE__ */ jsx23("span", {
2605
+ return /* @__PURE__ */ jsx24("span", {
2399
2606
  "data-slot": "attachment-description",
2400
2607
  "data-density": density,
2401
2608
  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),
@@ -2403,7 +2610,7 @@ function AttachmentDescription2({ density, className, ...props }) {
2403
2610
  });
2404
2611
  }
2405
2612
  function AttachmentActions2({ density, className, ...props }) {
2406
- return /* @__PURE__ */ jsx23("div", {
2613
+ return /* @__PURE__ */ jsx24("div", {
2407
2614
  "data-slot": "attachment-actions",
2408
2615
  "data-density": density,
2409
2616
  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),
@@ -2416,7 +2623,7 @@ function AttachmentAction2({
2416
2623
  size = "icon-xs",
2417
2624
  ...props
2418
2625
  }) {
2419
- return /* @__PURE__ */ jsx23(Button2, {
2626
+ return /* @__PURE__ */ jsx24(Button2, {
2420
2627
  "data-slot": "attachment-action",
2421
2628
  variant,
2422
2629
  size,
@@ -2424,16 +2631,24 @@ function AttachmentAction2({
2424
2631
  ...props
2425
2632
  });
2426
2633
  }
2427
- function AttachmentTrigger2({ density, className, render, type, ...props }) {
2634
+ function AttachmentTrigger2({
2635
+ analytics,
2636
+ density,
2637
+ className,
2638
+ render,
2639
+ type,
2640
+ ...props
2641
+ }) {
2642
+ const onClick = useAnalyticsCallback("AttachmentTrigger", analytics, { name: "ui.activate" }, props.onClick);
2428
2643
  return useRender9({
2429
2644
  defaultTagName: "button",
2430
- props: mergeProps8({ type: render ? type : type ?? "button", className: cn2("absolute inset-0 z-10 outline-none", className) }, props),
2645
+ props: mergeProps8({ type: render ? type : type ?? "button", className: cn2("absolute inset-0 z-10 outline-none", className) }, { ...props, onClick }),
2431
2646
  render,
2432
2647
  state: { slot: "attachment-trigger", density }
2433
2648
  });
2434
2649
  }
2435
2650
  function AttachmentGroup2({ density, className, ...props }) {
2436
- return /* @__PURE__ */ jsx23("div", {
2651
+ return /* @__PURE__ */ jsx24("div", {
2437
2652
  "data-slot": "attachment-group",
2438
2653
  "data-density": density,
2439
2654
  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),
@@ -2442,8 +2657,9 @@ function AttachmentGroup2({ density, className, ...props }) {
2442
2657
  }
2443
2658
  // src/components/InlineEdit.tsx
2444
2659
  import { useEffect as useEffect2, useRef as useRef2, useState as useState2 } from "react";
2445
- import { jsx as jsx24, jsxs as jsxs14 } from "react/jsx-runtime";
2660
+ import { jsx as jsx25, jsxs as jsxs15 } from "react/jsx-runtime";
2446
2661
  function InlineEdit2({
2662
+ analytics,
2447
2663
  label,
2448
2664
  value,
2449
2665
  density,
@@ -2453,6 +2669,7 @@ function InlineEdit2({
2453
2669
  onCommit,
2454
2670
  onCancel
2455
2671
  }) {
2672
+ const track = useAnalytics2("InlineEdit", analytics);
2456
2673
  const input = useRef2(null);
2457
2674
  const isFinished = useRef2(false);
2458
2675
  const shouldCancel = useRef2(false);
@@ -2471,6 +2688,7 @@ function InlineEdit2({
2471
2688
  setError("");
2472
2689
  try {
2473
2690
  await onCommit(value);
2691
+ track({ name: "ui.commit" });
2474
2692
  } catch (error) {
2475
2693
  isFinished.current = false;
2476
2694
  setError(error instanceof Error ? error.message : "Could not save this edit.");
@@ -2478,14 +2696,15 @@ function InlineEdit2({
2478
2696
  setSaving(false);
2479
2697
  }
2480
2698
  };
2481
- return /* @__PURE__ */ jsxs14("form", {
2699
+ return /* @__PURE__ */ jsxs15("form", {
2482
2700
  className: "flex min-w-0 flex-col gap-1",
2483
2701
  onSubmit: (event) => {
2484
2702
  event.preventDefault();
2485
2703
  save();
2486
2704
  },
2487
2705
  children: [
2488
- /* @__PURE__ */ jsx24(Input2, {
2706
+ /* @__PURE__ */ jsx25(Input2, {
2707
+ analytics: false,
2489
2708
  ref: input,
2490
2709
  density,
2491
2710
  "aria-label": label,
@@ -2513,7 +2732,7 @@ function InlineEdit2({
2513
2732
  }
2514
2733
  }
2515
2734
  }),
2516
- error && /* @__PURE__ */ jsx24("p", {
2735
+ error && /* @__PURE__ */ jsx25("p", {
2517
2736
  role: "alert",
2518
2737
  className: "text-xs text-destructive",
2519
2738
  children: error
@@ -2523,30 +2742,38 @@ function InlineEdit2({
2523
2742
  }
2524
2743
  // src/components/StarRating.tsx
2525
2744
  import { Radio } from "@base-ui/react/radio";
2526
- import { RadioGroup } from "@base-ui/react/radio-group";
2527
2745
  import { StarIcon, CircleOffIcon } from "lucide-react";
2528
- import { jsx as jsx25 } from "react/jsx-runtime";
2529
- function StarRating2({ label, value, disabled, density, onValueChange }) {
2530
- return /* @__PURE__ */ jsx25(RadioGroup, {
2746
+ import { jsx as jsx26 } from "react/jsx-runtime";
2747
+ function StarRating2({
2748
+ analytics,
2749
+ label,
2750
+ value,
2751
+ disabled,
2752
+ density,
2753
+ onValueChange
2754
+ }) {
2755
+ return /* @__PURE__ */ jsx26(RadioGroup2, {
2756
+ analytics,
2531
2757
  "aria-label": label,
2532
2758
  value,
2533
2759
  disabled,
2534
2760
  "data-density": density,
2535
2761
  className: "inline-flex w-fit shrink-0 items-center gap-0.5",
2536
2762
  onValueChange,
2537
- children: [1, 2, 3, 4, 5, 0].map((star) => /* @__PURE__ */ jsx25(Radio.Root, {
2763
+ children: [1, 2, 3, 4, 5, 0].map((star) => /* @__PURE__ */ jsx26(Radio.Root, {
2538
2764
  value: star,
2539
2765
  nativeButton: true,
2540
- render: /* @__PURE__ */ jsx25("button", {
2766
+ render: /* @__PURE__ */ jsx26(AnalyticsButton, {
2767
+ component: "StarRating",
2541
2768
  type: "button"
2542
2769
  }),
2543
2770
  "aria-label": star === 0 ? "Unrated" : `${star} ${star === 1 ? "star" : "stars"}`,
2544
2771
  title: star === 0 ? "Clear rating" : `${star} stars`,
2545
2772
  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",
2546
- children: star === 0 ? /* @__PURE__ */ jsx25(CircleOffIcon, {
2773
+ children: star === 0 ? /* @__PURE__ */ jsx26(CircleOffIcon, {
2547
2774
  "aria-hidden": "true",
2548
2775
  className: "size-3"
2549
- }) : /* @__PURE__ */ jsx25(StarIcon, {
2776
+ }) : /* @__PURE__ */ jsx26(StarIcon, {
2550
2777
  "aria-hidden": "true",
2551
2778
  className: star <= value ? "size-3.5 fill-primary text-primary" : "size-3.5"
2552
2779
  })
@@ -2555,7 +2782,7 @@ function StarRating2({ label, value, disabled, density, onValueChange }) {
2555
2782
  }
2556
2783
  // src/components/ConfirmationDialog.tsx
2557
2784
  import { useState as useState3 } from "react";
2558
- import { jsx as jsx26, jsxs as jsxs15 } from "react/jsx-runtime";
2785
+ import { jsx as jsx27, jsxs as jsxs16 } from "react/jsx-runtime";
2559
2786
  function ConfirmationDialog2({
2560
2787
  open,
2561
2788
  title,
@@ -2566,7 +2793,7 @@ function ConfirmationDialog2({
2566
2793
  }) {
2567
2794
  const [isPending, setPending] = useState3(false);
2568
2795
  const [error, setError] = useState3("");
2569
- return /* @__PURE__ */ jsx26(AlertDialog2, {
2796
+ return /* @__PURE__ */ jsx27(AlertDialog2, {
2570
2797
  open,
2571
2798
  onOpenChange: (next) => {
2572
2799
  if (!isPending) {
@@ -2574,31 +2801,31 @@ function ConfirmationDialog2({
2574
2801
  onOpenChange(next);
2575
2802
  }
2576
2803
  },
2577
- children: /* @__PURE__ */ jsxs15(AlertDialogContent2, {
2804
+ children: /* @__PURE__ */ jsxs16(AlertDialogContent2, {
2578
2805
  children: [
2579
- /* @__PURE__ */ jsxs15(AlertDialogHeader2, {
2806
+ /* @__PURE__ */ jsxs16(AlertDialogHeader2, {
2580
2807
  children: [
2581
- /* @__PURE__ */ jsx26(AlertDialogTitle2, {
2808
+ /* @__PURE__ */ jsx27(AlertDialogTitle2, {
2582
2809
  children: title
2583
2810
  }),
2584
- /* @__PURE__ */ jsx26(AlertDialogDescription2, {
2811
+ /* @__PURE__ */ jsx27(AlertDialogDescription2, {
2585
2812
  children: description
2586
2813
  })
2587
2814
  ]
2588
2815
  }),
2589
- error && /* @__PURE__ */ jsx26(Alert2, {
2816
+ error && /* @__PURE__ */ jsx27(Alert2, {
2590
2817
  variant: "destructive",
2591
- children: /* @__PURE__ */ jsx26(AlertDescription2, {
2818
+ children: /* @__PURE__ */ jsx27(AlertDescription2, {
2592
2819
  children: error
2593
2820
  })
2594
2821
  }),
2595
- /* @__PURE__ */ jsxs15(AlertDialogFooter2, {
2822
+ /* @__PURE__ */ jsxs16(AlertDialogFooter2, {
2596
2823
  children: [
2597
- /* @__PURE__ */ jsx26(AlertDialogCancel2, {
2824
+ /* @__PURE__ */ jsx27(AlertDialogCancel2, {
2598
2825
  disabled: isPending,
2599
2826
  children: "Cancel"
2600
2827
  }),
2601
- /* @__PURE__ */ jsx26(Button2, {
2828
+ /* @__PURE__ */ jsx27(Button2, {
2602
2829
  variant: "destructive",
2603
2830
  disabled: isPending,
2604
2831
  onClick: async () => {
@@ -2642,32 +2869,41 @@ function useObjectURL(file) {
2642
2869
  }
2643
2870
 
2644
2871
  // src/components/ImagePicker.tsx
2645
- import { jsx as jsx27, jsxs as jsxs16 } from "react/jsx-runtime";
2646
- function ImagePicker2({ src, file, label, disabled, onFileChange, onClear }) {
2872
+ import { jsx as jsx28, jsxs as jsxs17 } from "react/jsx-runtime";
2873
+ function ImagePicker2({
2874
+ analytics,
2875
+ src,
2876
+ file,
2877
+ label,
2878
+ disabled,
2879
+ onFileChange,
2880
+ onClear
2881
+ }) {
2882
+ const track = useAnalytics2("ImagePicker", analytics);
2647
2883
  const input = useRef3(null);
2648
2884
  const preview = useObjectURL(file);
2649
2885
  const image = file === null ? undefined : preview ?? src;
2650
- return /* @__PURE__ */ jsxs16("figure", {
2886
+ return /* @__PURE__ */ jsxs17("figure", {
2651
2887
  className: "flex min-w-0 flex-col items-center gap-3",
2652
2888
  "aria-label": label,
2653
2889
  children: [
2654
- /* @__PURE__ */ jsxs16(Avatar2, {
2890
+ /* @__PURE__ */ jsxs17(Avatar2, {
2655
2891
  size: "preview",
2656
2892
  shape: "square",
2657
2893
  children: [
2658
- /* @__PURE__ */ jsx27(AvatarImage2, {
2894
+ /* @__PURE__ */ jsx28(AvatarImage2, {
2659
2895
  src: image,
2660
2896
  alt: label
2661
2897
  }),
2662
- /* @__PURE__ */ jsx27(AvatarFallback2, {
2663
- children: /* @__PURE__ */ jsx27(ImageIcon, {
2898
+ /* @__PURE__ */ jsx28(AvatarFallback2, {
2899
+ children: /* @__PURE__ */ jsx28(ImageIcon, {
2664
2900
  className: "size-12",
2665
2901
  "aria-hidden": "true"
2666
2902
  })
2667
2903
  })
2668
2904
  ]
2669
2905
  }),
2670
- /* @__PURE__ */ jsx27("input", {
2906
+ /* @__PURE__ */ jsx28("input", {
2671
2907
  ref: input,
2672
2908
  hidden: true,
2673
2909
  type: "file",
@@ -2676,27 +2912,29 @@ function ImagePicker2({ src, file, label, disabled, onFileChange, onClear }) {
2676
2912
  disabled,
2677
2913
  onChange: (event) => {
2678
2914
  const selected = event.currentTarget.files?.[0];
2679
- if (selected)
2915
+ if (selected) {
2680
2916
  onFileChange(selected);
2917
+ track({ name: "ui.commit" }, event.nativeEvent);
2918
+ }
2681
2919
  event.currentTarget.value = "";
2682
2920
  }
2683
2921
  }),
2684
- /* @__PURE__ */ jsxs16("div", {
2922
+ /* @__PURE__ */ jsxs17("div", {
2685
2923
  className: "flex flex-wrap justify-center gap-2",
2686
2924
  children: [
2687
- /* @__PURE__ */ jsxs16(Button2, {
2925
+ /* @__PURE__ */ jsxs17(Button2, {
2688
2926
  type: "button",
2689
2927
  variant: "outline",
2690
2928
  disabled,
2691
2929
  onClick: () => input.current?.click(),
2692
2930
  children: [
2693
- /* @__PURE__ */ jsx27(UploadIcon, {
2931
+ /* @__PURE__ */ jsx28(UploadIcon, {
2694
2932
  "data-icon": "inline-start"
2695
2933
  }),
2696
2934
  "Upload image"
2697
2935
  ]
2698
2936
  }),
2699
- /* @__PURE__ */ jsx27(Button2, {
2937
+ /* @__PURE__ */ jsx28(Button2, {
2700
2938
  type: "button",
2701
2939
  variant: "outline",
2702
2940
  disabled: disabled || !image,
@@ -2710,9 +2948,9 @@ function ImagePicker2({ src, file, label, disabled, onFileChange, onClear }) {
2710
2948
  }
2711
2949
  // src/components/Meter.tsx
2712
2950
  import { Meter as MeterPrimitive } from "@base-ui/react/meter";
2713
- import { jsx as jsx28 } from "react/jsx-runtime";
2951
+ import { jsx as jsx29 } from "react/jsx-runtime";
2714
2952
  function Meter2({ density, className, ...props }) {
2715
- return /* @__PURE__ */ jsx28(MeterPrimitive.Root, {
2953
+ return /* @__PURE__ */ jsx29(MeterPrimitive.Root, {
2716
2954
  "data-density": density,
2717
2955
  "data-slot": "meter",
2718
2956
  className: (state) => cn2("flex min-w-0 flex-wrap items-center gap-field-gap", typeof className === "function" ? className(state) : className),
@@ -2720,7 +2958,7 @@ function Meter2({ density, className, ...props }) {
2720
2958
  });
2721
2959
  }
2722
2960
  function MeterLabel2({ density, className, ...props }) {
2723
- return /* @__PURE__ */ jsx28(MeterPrimitive.Label, {
2961
+ return /* @__PURE__ */ jsx29(MeterPrimitive.Label, {
2724
2962
  "data-density": density,
2725
2963
  "data-slot": "meter-label",
2726
2964
  className: (state) => cn2("text-sm font-medium", typeof className === "function" ? className(state) : className),
@@ -2728,7 +2966,7 @@ function MeterLabel2({ density, className, ...props }) {
2728
2966
  });
2729
2967
  }
2730
2968
  function MeterValue2({ density, className, ...props }) {
2731
- return /* @__PURE__ */ jsx28(MeterPrimitive.Value, {
2969
+ return /* @__PURE__ */ jsx29(MeterPrimitive.Value, {
2732
2970
  "data-density": density,
2733
2971
  "data-slot": "meter-value",
2734
2972
  className: (state) => cn2("ms-auto text-sm text-muted-foreground tabular-nums", typeof className === "function" ? className(state) : className),
@@ -2736,7 +2974,7 @@ function MeterValue2({ density, className, ...props }) {
2736
2974
  });
2737
2975
  }
2738
2976
  function MeterTrack2({ density, className, ...props }) {
2739
- return /* @__PURE__ */ jsx28(MeterPrimitive.Track, {
2977
+ return /* @__PURE__ */ jsx29(MeterPrimitive.Track, {
2740
2978
  "data-density": density,
2741
2979
  "data-slot": "meter-track",
2742
2980
  className: (state) => cn2("h-1 w-full overflow-hidden rounded-sm bg-muted", typeof className === "function" ? className(state) : className),
@@ -2748,7 +2986,7 @@ function MeterIndicator2({
2748
2986
  className,
2749
2987
  ...props
2750
2988
  }) {
2751
- return /* @__PURE__ */ jsx28(MeterPrimitive.Indicator, {
2989
+ return /* @__PURE__ */ jsx29(MeterPrimitive.Indicator, {
2752
2990
  "data-density": density,
2753
2991
  "data-slot": "meter-indicator",
2754
2992
  className: (state) => cn2("h-full bg-primary transition-[width] motion-reduce:transition-none", typeof className === "function" ? className(state) : className),
@@ -2758,9 +2996,9 @@ function MeterIndicator2({
2758
2996
  // src/components/Stepper.tsx
2759
2997
  import { Tabs as TabsPrimitive } from "@base-ui/react/tabs";
2760
2998
  import { CheckIcon as CheckIcon4 } from "lucide-react";
2761
- import { jsx as jsx29 } from "react/jsx-runtime";
2999
+ import { jsx as jsx30 } from "react/jsx-runtime";
2762
3000
  function Stepper2({ density, className, ...props }) {
2763
- return /* @__PURE__ */ jsx29(TabsPrimitive.Root, {
3001
+ return /* @__PURE__ */ jsx30(TabsPrimitive.Root, {
2764
3002
  "data-density": density,
2765
3003
  "data-slot": "stepper",
2766
3004
  className: (state) => cn2("group/stepper flex min-w-0 flex-col gap-panel data-[orientation=vertical]:flex-row", typeof className === "function" ? className(state) : className),
@@ -2773,7 +3011,7 @@ function StepperList2({
2773
3011
  activateOnFocus = false,
2774
3012
  ...props
2775
3013
  }) {
2776
- return /* @__PURE__ */ jsx29(TabsPrimitive.List, {
3014
+ return /* @__PURE__ */ jsx30(TabsPrimitive.List, {
2777
3015
  "data-density": density,
2778
3016
  "data-slot": "stepper-list",
2779
3017
  activateOnFocus,
@@ -2782,7 +3020,7 @@ function StepperList2({
2782
3020
  });
2783
3021
  }
2784
3022
  function StepperTrigger2({ density, className, ...props }) {
2785
- return /* @__PURE__ */ jsx29(TabsPrimitive.Tab, {
3023
+ return /* @__PURE__ */ jsx30(TabsPrimitive.Tab, {
2786
3024
  "data-density": density,
2787
3025
  "data-slot": "stepper-trigger",
2788
3026
  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),
@@ -2790,17 +3028,17 @@ function StepperTrigger2({ density, className, ...props }) {
2790
3028
  });
2791
3029
  }
2792
3030
  function StepperIndicator2({ completed = false, children, className, ...props }) {
2793
- return /* @__PURE__ */ jsx29("span", {
3031
+ return /* @__PURE__ */ jsx30("span", {
2794
3032
  "aria-hidden": "true",
2795
3033
  "data-slot": "stepper-indicator",
2796
3034
  "data-completed": completed || undefined,
2797
3035
  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),
2798
3036
  ...props,
2799
- children: completed ? /* @__PURE__ */ jsx29(CheckIcon4, {}) : children
3037
+ children: completed ? /* @__PURE__ */ jsx30(CheckIcon4, {}) : children
2800
3038
  });
2801
3039
  }
2802
3040
  function StepperContent2({ density, className, ...props }) {
2803
- return /* @__PURE__ */ jsx29(TabsPrimitive.Panel, {
3041
+ return /* @__PURE__ */ jsx30(TabsPrimitive.Panel, {
2804
3042
  "data-density": density,
2805
3043
  "data-slot": "stepper-content",
2806
3044
  className: (state) => cn2("min-w-0 flex-1 outline-none focus-visible:ring-1 focus-visible:ring-ring", typeof className === "function" ? className(state) : className),
@@ -2808,7 +3046,7 @@ function StepperContent2({ density, className, ...props }) {
2808
3046
  });
2809
3047
  }
2810
3048
  // src/components/AppShell.tsx
2811
- import { jsx as jsx30, jsxs as jsxs17 } from "react/jsx-runtime";
3049
+ import { jsx as jsx31, jsxs as jsxs18 } from "react/jsx-runtime";
2812
3050
  function AppShell2({
2813
3051
  navigation,
2814
3052
  brand,
@@ -2821,28 +3059,29 @@ function AppShell2({
2821
3059
  label = "Application",
2822
3060
  density
2823
3061
  }) {
2824
- return /* @__PURE__ */ jsxs17(SidebarProvider2, {
3062
+ return /* @__PURE__ */ jsxs18(SidebarProvider2, {
2825
3063
  density,
2826
3064
  defaultOpen: defaultSidebarOpen,
2827
3065
  className: "relative min-h-0",
2828
3066
  style: { height },
2829
3067
  "data-scroll": "none",
2830
3068
  children: [
2831
- /* @__PURE__ */ jsxs17(Sidebar2, {
3069
+ /* @__PURE__ */ jsxs18(Sidebar2, {
2832
3070
  collapsible: "icon",
2833
3071
  position: "container",
2834
3072
  children: [
2835
- /* @__PURE__ */ jsx30(SidebarHeader2, {
3073
+ /* @__PURE__ */ jsx31(SidebarHeader2, {
2836
3074
  children: brand
2837
3075
  }),
2838
- /* @__PURE__ */ jsx30(SidebarContent2, {
2839
- children: /* @__PURE__ */ jsx30("nav", {
3076
+ /* @__PURE__ */ jsx31(SidebarContent2, {
3077
+ children: /* @__PURE__ */ jsx31("nav", {
2840
3078
  "aria-label": "Primary navigation",
2841
- children: /* @__PURE__ */ jsx30(SidebarGroup2, {
2842
- children: /* @__PURE__ */ jsx30(SidebarMenu2, {
2843
- children: navigation.map((item) => /* @__PURE__ */ jsx30(SidebarMenuItem2, {
2844
- children: /* @__PURE__ */ jsxs17(SidebarMenuButton2, {
2845
- render: /* @__PURE__ */ jsx30("a", {
3079
+ children: /* @__PURE__ */ jsx31(SidebarGroup2, {
3080
+ children: /* @__PURE__ */ jsx31(SidebarMenu2, {
3081
+ children: navigation.map((item) => /* @__PURE__ */ jsx31(SidebarMenuItem2, {
3082
+ children: /* @__PURE__ */ jsxs18(SidebarMenuButton2, {
3083
+ render: /* @__PURE__ */ jsx31(AnalyticsLink, {
3084
+ component: "AppShell",
2846
3085
  href: item.href,
2847
3086
  "aria-current": item.active ? "page" : undefined
2848
3087
  }),
@@ -2850,7 +3089,7 @@ function AppShell2({
2850
3089
  tooltip: item.label,
2851
3090
  children: [
2852
3091
  item.icon,
2853
- /* @__PURE__ */ jsx30("span", {
3092
+ /* @__PURE__ */ jsx31("span", {
2854
3093
  children: item.label
2855
3094
  })
2856
3095
  ]
@@ -2860,36 +3099,36 @@ function AppShell2({
2860
3099
  })
2861
3100
  })
2862
3101
  }),
2863
- sidebarFooter && /* @__PURE__ */ jsx30(SidebarFooter2, {
3102
+ sidebarFooter && /* @__PURE__ */ jsx31(SidebarFooter2, {
2864
3103
  children: sidebarFooter
2865
3104
  })
2866
3105
  ]
2867
3106
  }),
2868
- /* @__PURE__ */ jsxs17(SidebarInset2, {
3107
+ /* @__PURE__ */ jsxs18(SidebarInset2, {
2869
3108
  "aria-label": label,
2870
3109
  className: "min-h-0 min-w-0",
2871
3110
  "data-scroll": "none",
2872
3111
  children: [
2873
- /* @__PURE__ */ jsxs17("header", {
3112
+ /* @__PURE__ */ jsxs18("header", {
2874
3113
  "data-scroll": "none",
2875
3114
  className: "flex shrink-0 items-center gap-control-gap border-b border-border p-panel",
2876
3115
  children: [
2877
- /* @__PURE__ */ jsx30(SidebarTrigger2, {}),
2878
- /* @__PURE__ */ jsx30(Separator2, {
3116
+ /* @__PURE__ */ jsx31(SidebarTrigger2, {}),
3117
+ /* @__PURE__ */ jsx31(Separator2, {
2879
3118
  orientation: "vertical",
2880
3119
  className: "h-control"
2881
3120
  }),
2882
3121
  header
2883
3122
  ]
2884
3123
  }),
2885
- /* @__PURE__ */ jsx30(ScrollArea2, {
3124
+ /* @__PURE__ */ jsx31(ScrollArea2, {
2886
3125
  className: "min-h-0 flex-1",
2887
- children: /* @__PURE__ */ jsx30("div", {
3126
+ children: /* @__PURE__ */ jsx31("div", {
2888
3127
  className: "flex min-w-0 flex-col gap-panel p-panel",
2889
3128
  children
2890
3129
  })
2891
3130
  }),
2892
- footer && /* @__PURE__ */ jsx30("footer", {
3131
+ footer && /* @__PURE__ */ jsx31("footer", {
2893
3132
  className: "shrink-0 border-t border-border p-panel",
2894
3133
  "data-scroll": "none",
2895
3134
  children: footer
@@ -2900,32 +3139,32 @@ function AppShell2({
2900
3139
  });
2901
3140
  }
2902
3141
  // src/components/PageHeader.tsx
2903
- import { jsx as jsx31, jsxs as jsxs18 } from "react/jsx-runtime";
3142
+ import { jsx as jsx32, jsxs as jsxs19 } from "react/jsx-runtime";
2904
3143
  function PageHeader2({ title, description, breadcrumbs, actions, density }) {
2905
- return /* @__PURE__ */ jsxs18("header", {
3144
+ return /* @__PURE__ */ jsxs19("header", {
2906
3145
  "data-density": density,
2907
3146
  "data-slot": "page-header",
2908
3147
  "data-scroll": "none",
2909
3148
  className: "flex min-w-0 flex-col gap-field-gap",
2910
3149
  children: [
2911
3150
  breadcrumbs,
2912
- /* @__PURE__ */ jsxs18("div", {
3151
+ /* @__PURE__ */ jsxs19("div", {
2913
3152
  className: "flex min-w-0 flex-wrap items-start justify-between gap-panel",
2914
3153
  children: [
2915
- /* @__PURE__ */ jsxs18("div", {
3154
+ /* @__PURE__ */ jsxs19("div", {
2916
3155
  className: "min-w-0",
2917
3156
  children: [
2918
- /* @__PURE__ */ jsx31("h1", {
3157
+ /* @__PURE__ */ jsx32("h1", {
2919
3158
  className: "text-xl font-semibold text-foreground",
2920
3159
  children: title
2921
3160
  }),
2922
- description && /* @__PURE__ */ jsx31("div", {
3161
+ description && /* @__PURE__ */ jsx32("div", {
2923
3162
  className: "mt-1 text-sm text-muted-foreground",
2924
3163
  children: description
2925
3164
  })
2926
3165
  ]
2927
3166
  }),
2928
- actions && /* @__PURE__ */ jsx31("div", {
3167
+ actions && /* @__PURE__ */ jsx32("div", {
2929
3168
  className: "flex shrink-0 flex-wrap items-center gap-control-gap",
2930
3169
  children: actions
2931
3170
  })
@@ -2935,7 +3174,7 @@ function PageHeader2({ title, description, breadcrumbs, actions, density }) {
2935
3174
  });
2936
3175
  }
2937
3176
  // src/components/WorkspaceSwitcher.tsx
2938
- import { jsx as jsx32, jsxs as jsxs19 } from "react/jsx-runtime";
3177
+ import { jsx as jsx33, jsxs as jsxs20 } from "react/jsx-runtime";
2939
3178
  function WorkspaceSwitcher2({
2940
3179
  workspaces,
2941
3180
  value,
@@ -2945,7 +3184,7 @@ function WorkspaceSwitcher2({
2945
3184
  label = "Workspace",
2946
3185
  density
2947
3186
  }) {
2948
- return /* @__PURE__ */ jsxs19(Select2, {
3187
+ return /* @__PURE__ */ jsxs20(Select2, {
2949
3188
  items: workspaces,
2950
3189
  value,
2951
3190
  defaultValue: defaultValue ?? workspaces[0]?.value,
@@ -2955,15 +3194,15 @@ function WorkspaceSwitcher2({
2955
3194
  },
2956
3195
  disabled,
2957
3196
  children: [
2958
- /* @__PURE__ */ jsx32(SelectTrigger2, {
3197
+ /* @__PURE__ */ jsx33(SelectTrigger2, {
2959
3198
  "aria-label": label,
2960
3199
  density,
2961
- children: /* @__PURE__ */ jsx32(SelectValue2, {})
3200
+ children: /* @__PURE__ */ jsx33(SelectValue2, {})
2962
3201
  }),
2963
- /* @__PURE__ */ jsx32(SelectContent2, {
3202
+ /* @__PURE__ */ jsx33(SelectContent2, {
2964
3203
  density,
2965
- children: /* @__PURE__ */ jsx32(SelectGroup2, {
2966
- children: workspaces.map((workspace) => /* @__PURE__ */ jsx32(SelectItem2, {
3204
+ children: /* @__PURE__ */ jsx33(SelectGroup2, {
3205
+ children: workspaces.map((workspace) => /* @__PURE__ */ jsx33(SelectItem2, {
2967
3206
  value: workspace.value,
2968
3207
  children: workspace.label
2969
3208
  }, workspace.value))
@@ -2973,52 +3212,52 @@ function WorkspaceSwitcher2({
2973
3212
  });
2974
3213
  }
2975
3214
  // src/components/AccountMenu.tsx
2976
- import { jsx as jsx33, jsxs as jsxs20 } from "react/jsx-runtime";
3215
+ import { jsx as jsx34, jsxs as jsxs21 } from "react/jsx-runtime";
2977
3216
  function AccountMenu2({ name, email, image, onAction, density }) {
2978
- return /* @__PURE__ */ jsxs20(DropdownMenu2, {
3217
+ return /* @__PURE__ */ jsxs21(DropdownMenu2, {
2979
3218
  children: [
2980
- /* @__PURE__ */ jsxs20(DropdownMenuTrigger2, {
2981
- render: /* @__PURE__ */ jsx33(Button2, {
3219
+ /* @__PURE__ */ jsxs21(DropdownMenuTrigger2, {
3220
+ render: /* @__PURE__ */ jsx34(Button2, {
2982
3221
  variant: "ghost",
2983
3222
  density
2984
3223
  }),
2985
3224
  "aria-label": `Account menu for ${name}`,
2986
3225
  children: [
2987
- /* @__PURE__ */ jsxs20(Avatar2, {
3226
+ /* @__PURE__ */ jsxs21(Avatar2, {
2988
3227
  className: "size-control",
2989
3228
  children: [
2990
- /* @__PURE__ */ jsx33(AvatarImage2, {
3229
+ /* @__PURE__ */ jsx34(AvatarImage2, {
2991
3230
  src: image,
2992
3231
  alt: ""
2993
3232
  }),
2994
- /* @__PURE__ */ jsx33(AvatarFallback2, {
3233
+ /* @__PURE__ */ jsx34(AvatarFallback2, {
2995
3234
  children: name.slice(0, 2).toUpperCase()
2996
3235
  })
2997
3236
  ]
2998
3237
  }),
2999
- /* @__PURE__ */ jsx33("span", {
3238
+ /* @__PURE__ */ jsx34("span", {
3000
3239
  children: name
3001
3240
  })
3002
3241
  ]
3003
3242
  }),
3004
- /* @__PURE__ */ jsx33(DropdownMenuContent2, {
3243
+ /* @__PURE__ */ jsx34(DropdownMenuContent2, {
3005
3244
  density,
3006
3245
  align: "end",
3007
- children: /* @__PURE__ */ jsxs20(DropdownMenuGroup2, {
3246
+ children: /* @__PURE__ */ jsxs21(DropdownMenuGroup2, {
3008
3247
  children: [
3009
- /* @__PURE__ */ jsx33(DropdownMenuLabel2, {
3248
+ /* @__PURE__ */ jsx34(DropdownMenuLabel2, {
3010
3249
  children: email ?? name
3011
3250
  }),
3012
- /* @__PURE__ */ jsx33(DropdownMenuItem2, {
3251
+ /* @__PURE__ */ jsx34(DropdownMenuItem2, {
3013
3252
  onClick: () => onAction("profile"),
3014
3253
  children: "Profile"
3015
3254
  }),
3016
- /* @__PURE__ */ jsx33(DropdownMenuItem2, {
3255
+ /* @__PURE__ */ jsx34(DropdownMenuItem2, {
3017
3256
  onClick: () => onAction("settings"),
3018
3257
  children: "Settings"
3019
3258
  }),
3020
- /* @__PURE__ */ jsx33(DropdownMenuSeparator2, {}),
3021
- /* @__PURE__ */ jsx33(DropdownMenuItem2, {
3259
+ /* @__PURE__ */ jsx34(DropdownMenuSeparator2, {}),
3260
+ /* @__PURE__ */ jsx34(DropdownMenuItem2, {
3022
3261
  onClick: () => onAction("sign-out"),
3023
3262
  children: "Sign out"
3024
3263
  })
@@ -3029,7 +3268,7 @@ function AccountMenu2({ name, email, image, onAction, density }) {
3029
3268
  });
3030
3269
  }
3031
3270
  // src/components/StatCard.tsx
3032
- import { jsx as jsx34, jsxs as jsxs21 } from "react/jsx-runtime";
3271
+ import { jsx as jsx35, jsxs as jsxs22 } from "react/jsx-runtime";
3033
3272
  function StatCard2({
3034
3273
  label,
3035
3274
  value,
@@ -3040,40 +3279,40 @@ function StatCard2({
3040
3279
  loading = false,
3041
3280
  density
3042
3281
  }) {
3043
- return /* @__PURE__ */ jsxs21(Card2, {
3282
+ return /* @__PURE__ */ jsxs22(Card2, {
3044
3283
  density,
3045
3284
  "aria-label": label,
3046
3285
  "aria-busy": loading,
3047
3286
  children: [
3048
- /* @__PURE__ */ jsxs21(CardHeader2, {
3287
+ /* @__PURE__ */ jsxs22(CardHeader2, {
3049
3288
  children: [
3050
- /* @__PURE__ */ jsx34(CardTitle2, {
3289
+ /* @__PURE__ */ jsx35(CardTitle2, {
3051
3290
  children: label
3052
3291
  }),
3053
- description && /* @__PURE__ */ jsx34(CardDescription2, {
3292
+ description && /* @__PURE__ */ jsx35(CardDescription2, {
3054
3293
  children: description
3055
3294
  })
3056
3295
  ]
3057
3296
  }),
3058
- /* @__PURE__ */ jsx34(CardContent2, {
3059
- children: /* @__PURE__ */ jsxs21("div", {
3297
+ /* @__PURE__ */ jsx35(CardContent2, {
3298
+ children: /* @__PURE__ */ jsxs22("div", {
3060
3299
  className: "flex flex-wrap items-center justify-between gap-control-gap",
3061
3300
  children: [
3062
- loading ? /* @__PURE__ */ jsx34(Skeleton2, {
3301
+ loading ? /* @__PURE__ */ jsx35(Skeleton2, {
3063
3302
  className: "h-8 w-24",
3064
3303
  "aria-label": `Loading ${label}`
3065
- }) : /* @__PURE__ */ jsx34("div", {
3304
+ }) : /* @__PURE__ */ jsx35("div", {
3066
3305
  className: "text-2xl font-semibold tabular-nums",
3067
3306
  children: value
3068
3307
  }),
3069
- change && /* @__PURE__ */ jsx34(Badge2, {
3308
+ change && /* @__PURE__ */ jsx35(Badge2, {
3070
3309
  variant: changeIntent === "positive" ? "success" : changeIntent === "negative" ? "destructive" : "secondary",
3071
3310
  children: change
3072
3311
  })
3073
3312
  ]
3074
3313
  })
3075
3314
  }),
3076
- children && /* @__PURE__ */ jsx34(CardFooter2, {
3315
+ children && /* @__PURE__ */ jsx35(CardFooter2, {
3077
3316
  children
3078
3317
  })
3079
3318
  ]
@@ -3081,7 +3320,7 @@ function StatCard2({
3081
3320
  }
3082
3321
  // src/components/AuthForm.tsx
3083
3322
  import { useId as useId2, useState as useState5 } from "react";
3084
- import { jsx as jsx35, jsxs as jsxs22 } from "react/jsx-runtime";
3323
+ import { jsx as jsx36, jsxs as jsxs23 } from "react/jsx-runtime";
3085
3324
  function AuthForm2({
3086
3325
  mode = "sign-in",
3087
3326
  onSubmit,
@@ -3111,33 +3350,33 @@ function AuthForm2({
3111
3350
  setPending(false);
3112
3351
  }
3113
3352
  }
3114
- return /* @__PURE__ */ jsxs22(Card2, {
3353
+ return /* @__PURE__ */ jsxs23(Card2, {
3115
3354
  density,
3116
3355
  children: [
3117
- /* @__PURE__ */ jsxs22(CardHeader2, {
3356
+ /* @__PURE__ */ jsxs23(CardHeader2, {
3118
3357
  children: [
3119
- /* @__PURE__ */ jsx35(CardTitle2, {
3358
+ /* @__PURE__ */ jsx36(CardTitle2, {
3120
3359
  children: title
3121
3360
  }),
3122
- /* @__PURE__ */ jsx35(CardDescription2, {
3361
+ /* @__PURE__ */ jsx36(CardDescription2, {
3123
3362
  children: mode === "reset-password" ? "Enter your email to request a password reset." : "Enter your details to continue."
3124
3363
  })
3125
3364
  ]
3126
3365
  }),
3127
- /* @__PURE__ */ jsx35(CardContent2, {
3128
- children: /* @__PURE__ */ jsx35("form", {
3366
+ /* @__PURE__ */ jsx36(CardContent2, {
3367
+ children: /* @__PURE__ */ jsx36("form", {
3129
3368
  onSubmit: submit,
3130
3369
  "aria-label": title,
3131
3370
  "aria-busy": pending,
3132
- children: /* @__PURE__ */ jsxs22(FieldGroup2, {
3371
+ children: /* @__PURE__ */ jsxs23(FieldGroup2, {
3133
3372
  children: [
3134
- mode === "sign-up" && /* @__PURE__ */ jsxs22(Field2, {
3373
+ mode === "sign-up" && /* @__PURE__ */ jsxs23(Field2, {
3135
3374
  children: [
3136
- /* @__PURE__ */ jsx35(FieldLabel2, {
3375
+ /* @__PURE__ */ jsx36(FieldLabel2, {
3137
3376
  htmlFor: id + "-name",
3138
3377
  children: "Name"
3139
3378
  }),
3140
- /* @__PURE__ */ jsx35(Input2, {
3379
+ /* @__PURE__ */ jsx36(Input2, {
3141
3380
  id: id + "-name",
3142
3381
  name: "name",
3143
3382
  autoComplete: "name",
@@ -3146,13 +3385,13 @@ function AuthForm2({
3146
3385
  })
3147
3386
  ]
3148
3387
  }),
3149
- /* @__PURE__ */ jsxs22(Field2, {
3388
+ /* @__PURE__ */ jsxs23(Field2, {
3150
3389
  children: [
3151
- /* @__PURE__ */ jsx35(FieldLabel2, {
3390
+ /* @__PURE__ */ jsx36(FieldLabel2, {
3152
3391
  htmlFor: id + "-email",
3153
3392
  children: "Email"
3154
3393
  }),
3155
- /* @__PURE__ */ jsx35(Input2, {
3394
+ /* @__PURE__ */ jsx36(Input2, {
3156
3395
  id: id + "-email",
3157
3396
  name: "email",
3158
3397
  type: "email",
@@ -3162,13 +3401,13 @@ function AuthForm2({
3162
3401
  })
3163
3402
  ]
3164
3403
  }),
3165
- mode !== "reset-password" && /* @__PURE__ */ jsxs22(Field2, {
3404
+ mode !== "reset-password" && /* @__PURE__ */ jsxs23(Field2, {
3166
3405
  children: [
3167
- /* @__PURE__ */ jsx35(FieldLabel2, {
3406
+ /* @__PURE__ */ jsx36(FieldLabel2, {
3168
3407
  htmlFor: id + "-password",
3169
3408
  children: "Password"
3170
3409
  }),
3171
- /* @__PURE__ */ jsx35(Input2, {
3410
+ /* @__PURE__ */ jsx36(Input2, {
3172
3411
  id: id + "-password",
3173
3412
  name: "password",
3174
3413
  type: "password",
@@ -3177,27 +3416,27 @@ function AuthForm2({
3177
3416
  required: true,
3178
3417
  disabled: disabled || pending
3179
3418
  }),
3180
- mode === "sign-up" && /* @__PURE__ */ jsx35(FieldDescription2, {
3419
+ mode === "sign-up" && /* @__PURE__ */ jsx36(FieldDescription2, {
3181
3420
  children: "Use at least eight characters."
3182
3421
  })
3183
3422
  ]
3184
3423
  }),
3185
- error && /* @__PURE__ */ jsxs22(Alert2, {
3424
+ error && /* @__PURE__ */ jsxs23(Alert2, {
3186
3425
  variant: "destructive",
3187
3426
  children: [
3188
- /* @__PURE__ */ jsx35(AlertTitle2, {
3427
+ /* @__PURE__ */ jsx36(AlertTitle2, {
3189
3428
  children: "Request failed"
3190
3429
  }),
3191
- /* @__PURE__ */ jsx35(AlertDescription2, {
3430
+ /* @__PURE__ */ jsx36(AlertDescription2, {
3192
3431
  children: error
3193
3432
  })
3194
3433
  ]
3195
3434
  }),
3196
- /* @__PURE__ */ jsxs22(Button2, {
3435
+ /* @__PURE__ */ jsxs23(Button2, {
3197
3436
  type: "submit",
3198
3437
  disabled: disabled || pending,
3199
3438
  children: [
3200
- pending && /* @__PURE__ */ jsx35(Spinner2, {
3439
+ pending && /* @__PURE__ */ jsx36(Spinner2, {
3201
3440
  "data-icon": "inline-start"
3202
3441
  }),
3203
3442
  mode === "reset-password" ? "Send reset link" : title
@@ -3208,14 +3447,14 @@ function AuthForm2({
3208
3447
  })
3209
3448
  })
3210
3449
  }),
3211
- footer && /* @__PURE__ */ jsx35(CardFooter2, {
3450
+ footer && /* @__PURE__ */ jsx36(CardFooter2, {
3212
3451
  children: footer
3213
3452
  })
3214
3453
  ]
3215
3454
  });
3216
3455
  }
3217
3456
  // src/components/SettingsSection.tsx
3218
- import { jsx as jsx36, jsxs as jsxs23 } from "react/jsx-runtime";
3457
+ import { jsx as jsx37, jsxs as jsxs24 } from "react/jsx-runtime";
3219
3458
  function SettingsSection2({
3220
3459
  title,
3221
3460
  description,
@@ -3228,48 +3467,48 @@ function SettingsSection2({
3228
3467
  destructive = false,
3229
3468
  density
3230
3469
  }) {
3231
- return /* @__PURE__ */ jsx36("form", {
3470
+ return /* @__PURE__ */ jsx37("form", {
3232
3471
  "aria-label": title,
3233
3472
  onSubmit,
3234
3473
  "aria-busy": pending,
3235
- children: /* @__PURE__ */ jsxs23(Card2, {
3474
+ children: /* @__PURE__ */ jsxs24(Card2, {
3236
3475
  density,
3237
3476
  children: [
3238
- /* @__PURE__ */ jsxs23(CardHeader2, {
3477
+ /* @__PURE__ */ jsxs24(CardHeader2, {
3239
3478
  children: [
3240
- /* @__PURE__ */ jsx36(CardTitle2, {
3479
+ /* @__PURE__ */ jsx37(CardTitle2, {
3241
3480
  children: title
3242
3481
  }),
3243
- description && /* @__PURE__ */ jsx36(CardDescription2, {
3482
+ description && /* @__PURE__ */ jsx37(CardDescription2, {
3244
3483
  children: description
3245
3484
  })
3246
3485
  ]
3247
3486
  }),
3248
- /* @__PURE__ */ jsx36(CardContent2, {
3249
- children: /* @__PURE__ */ jsxs23("fieldset", {
3487
+ /* @__PURE__ */ jsx37(CardContent2, {
3488
+ children: /* @__PURE__ */ jsxs24("fieldset", {
3250
3489
  disabled: disabled || pending,
3251
3490
  className: "min-w-0 border-0 p-0",
3252
3491
  children: [
3253
- /* @__PURE__ */ jsx36("legend", {
3492
+ /* @__PURE__ */ jsx37("legend", {
3254
3493
  className: "sr-only",
3255
3494
  children: title
3256
3495
  }),
3257
- /* @__PURE__ */ jsx36(FieldGroup2, {
3496
+ /* @__PURE__ */ jsx37(FieldGroup2, {
3258
3497
  children
3259
3498
  })
3260
3499
  ]
3261
3500
  })
3262
3501
  }),
3263
- /* @__PURE__ */ jsxs23(CardFooter2, {
3502
+ /* @__PURE__ */ jsxs24(CardFooter2, {
3264
3503
  className: "flex flex-wrap items-center justify-between gap-control-gap",
3265
3504
  children: [
3266
3505
  footer,
3267
- /* @__PURE__ */ jsxs23(Button2, {
3506
+ /* @__PURE__ */ jsxs24(Button2, {
3268
3507
  type: "submit",
3269
3508
  variant: destructive ? "destructive" : "default",
3270
3509
  disabled: disabled || pending,
3271
3510
  children: [
3272
- pending && /* @__PURE__ */ jsx36(Spinner2, {
3511
+ pending && /* @__PURE__ */ jsx37(Spinner2, {
3273
3512
  "data-icon": "inline-start"
3274
3513
  }),
3275
3514
  saveLabel
@@ -3282,7 +3521,7 @@ function SettingsSection2({
3282
3521
  });
3283
3522
  }
3284
3523
  // src/components/TagInput.tsx
3285
- import { jsx as jsx37, jsxs as jsxs24 } from "react/jsx-runtime";
3524
+ import { jsx as jsx38, jsxs as jsxs25 } from "react/jsx-runtime";
3286
3525
  function TagInput2({
3287
3526
  label,
3288
3527
  options,
@@ -3295,7 +3534,7 @@ function TagInput2({
3295
3534
  density
3296
3535
  }) {
3297
3536
  const anchor = useComboboxAnchor2();
3298
- return /* @__PURE__ */ jsxs24(Combobox2, {
3537
+ return /* @__PURE__ */ jsxs25(Combobox2, {
3299
3538
  items: options,
3300
3539
  multiple: true,
3301
3540
  value,
@@ -3304,33 +3543,33 @@ function TagInput2({
3304
3543
  disabled,
3305
3544
  name,
3306
3545
  children: [
3307
- /* @__PURE__ */ jsxs24(ComboboxChips2, {
3546
+ /* @__PURE__ */ jsxs25(ComboboxChips2, {
3308
3547
  ref: anchor,
3309
3548
  density,
3310
3549
  children: [
3311
- /* @__PURE__ */ jsx37(ComboboxValue2, {
3312
- children: (values) => values.map((item) => /* @__PURE__ */ jsx37(ComboboxChip2, {
3550
+ /* @__PURE__ */ jsx38(ComboboxValue2, {
3551
+ children: (values) => values.map((item) => /* @__PURE__ */ jsx38(ComboboxChip2, {
3313
3552
  removeLabel: `Remove ${item}`,
3314
3553
  children: item
3315
3554
  }, item))
3316
3555
  }),
3317
- /* @__PURE__ */ jsx37(ComboboxChipsInput2, {
3556
+ /* @__PURE__ */ jsx38(ComboboxChipsInput2, {
3318
3557
  "aria-label": label,
3319
3558
  placeholder
3320
3559
  })
3321
3560
  ]
3322
3561
  }),
3323
- /* @__PURE__ */ jsxs24(ComboboxContent2, {
3562
+ /* @__PURE__ */ jsxs25(ComboboxContent2, {
3324
3563
  anchor,
3325
3564
  density,
3326
3565
  children: [
3327
- /* @__PURE__ */ jsx37(ComboboxEmpty2, {
3566
+ /* @__PURE__ */ jsx38(ComboboxEmpty2, {
3328
3567
  children: "No matching tags."
3329
3568
  }),
3330
- /* @__PURE__ */ jsx37(ComboboxList2, {
3331
- children: /* @__PURE__ */ jsx37(ComboboxGroup2, {
3332
- children: /* @__PURE__ */ jsx37(ComboboxCollection2, {
3333
- children: (item) => /* @__PURE__ */ jsx37(ComboboxItem2, {
3569
+ /* @__PURE__ */ jsx38(ComboboxList2, {
3570
+ children: /* @__PURE__ */ jsx38(ComboboxGroup2, {
3571
+ children: /* @__PURE__ */ jsx38(ComboboxCollection2, {
3572
+ children: (item) => /* @__PURE__ */ jsx38(ComboboxItem2, {
3334
3573
  value: item,
3335
3574
  children: item
3336
3575
  }, item)
@@ -3343,7 +3582,7 @@ function TagInput2({
3343
3582
  });
3344
3583
  }
3345
3584
  // src/components/FilterBar.tsx
3346
- import { jsx as jsx38, jsxs as jsxs25 } from "react/jsx-runtime";
3585
+ import { jsx as jsx39, jsxs as jsxs26 } from "react/jsx-runtime";
3347
3586
  function FilterBar2({
3348
3587
  label,
3349
3588
  search,
@@ -3354,38 +3593,38 @@ function FilterBar2({
3354
3593
  disabled,
3355
3594
  density
3356
3595
  }) {
3357
- return /* @__PURE__ */ jsxs25("fieldset", {
3596
+ return /* @__PURE__ */ jsxs26("fieldset", {
3358
3597
  "aria-label": label,
3359
3598
  disabled,
3360
3599
  "data-density": density,
3361
3600
  className: "flex min-w-0 flex-wrap items-center gap-2",
3362
3601
  children: [
3363
- /* @__PURE__ */ jsx38(Input2, {
3602
+ /* @__PURE__ */ jsx39(Input2, {
3364
3603
  "aria-label": `Search ${label}`,
3365
3604
  type: "search",
3366
3605
  value: search,
3367
3606
  onChange: (event) => onSearchChange(event.target.value),
3368
3607
  className: "min-w-40 flex-1"
3369
3608
  }),
3370
- filters.map((filter) => /* @__PURE__ */ jsxs25(NativeSelect2, {
3609
+ filters.map((filter) => /* @__PURE__ */ jsxs26(NativeSelect2, {
3371
3610
  "aria-label": filter.label,
3372
3611
  value: value[filter.id] ?? "",
3373
3612
  onChange: (event) => onValueChange({ ...value, [filter.id]: event.target.value }),
3374
3613
  children: [
3375
- /* @__PURE__ */ jsxs25(NativeSelectOption2, {
3614
+ /* @__PURE__ */ jsxs26(NativeSelectOption2, {
3376
3615
  value: "",
3377
3616
  children: [
3378
3617
  "All ",
3379
3618
  filter.label.toLowerCase()
3380
3619
  ]
3381
3620
  }),
3382
- filter.options.map((option) => /* @__PURE__ */ jsx38(NativeSelectOption2, {
3621
+ filter.options.map((option) => /* @__PURE__ */ jsx39(NativeSelectOption2, {
3383
3622
  value: option.value,
3384
3623
  children: option.label
3385
3624
  }, option.value))
3386
3625
  ]
3387
3626
  }, filter.id)),
3388
- /* @__PURE__ */ jsx38(Button2, {
3627
+ /* @__PURE__ */ jsx39(Button2, {
3389
3628
  type: "button",
3390
3629
  variant: "ghost",
3391
3630
  disabled: !search && !Object.values(value).some(Boolean),
@@ -3399,7 +3638,7 @@ function FilterBar2({
3399
3638
  });
3400
3639
  }
3401
3640
  // src/components/BarList.tsx
3402
- import { jsx as jsx39, jsxs as jsxs26 } from "react/jsx-runtime";
3641
+ import { jsx as jsx40, jsxs as jsxs27 } from "react/jsx-runtime";
3403
3642
  function BarList2({
3404
3643
  label,
3405
3644
  items,
@@ -3408,25 +3647,25 @@ function BarList2({
3408
3647
  density
3409
3648
  }) {
3410
3649
  const max = Math.max(1, ...items.map((item) => item.value));
3411
- return /* @__PURE__ */ jsxs26("section", {
3650
+ return /* @__PURE__ */ jsxs27("section", {
3412
3651
  "aria-label": label,
3413
3652
  "data-density": density,
3414
3653
  children: [
3415
- /* @__PURE__ */ jsx39("ul", {
3654
+ /* @__PURE__ */ jsx40("ul", {
3416
3655
  className: "grid gap-3",
3417
- children: items.map((item) => /* @__PURE__ */ jsx39("li", {
3418
- children: /* @__PURE__ */ jsxs26(Meter2, {
3656
+ children: items.map((item) => /* @__PURE__ */ jsx40("li", {
3657
+ children: /* @__PURE__ */ jsxs27(Meter2, {
3419
3658
  min: 0,
3420
3659
  max,
3421
3660
  value: item.value,
3422
3661
  "aria-label": item.label,
3423
3662
  format: { maximumFractionDigits: 2 },
3424
3663
  children: [
3425
- /* @__PURE__ */ jsxs26("div", {
3664
+ /* @__PURE__ */ jsxs27("div", {
3426
3665
  className: "mb-1 flex items-center justify-between gap-3 text-sm",
3427
3666
  children: [
3428
- /* @__PURE__ */ jsx39(MeterLabel2, {
3429
- children: onItemSelect ? /* @__PURE__ */ jsx39(Button2, {
3667
+ /* @__PURE__ */ jsx40(MeterLabel2, {
3668
+ children: onItemSelect ? /* @__PURE__ */ jsx40(Button2, {
3430
3669
  type: "button",
3431
3670
  variant: "link",
3432
3671
  className: "h-auto p-0",
@@ -3434,19 +3673,19 @@ function BarList2({
3434
3673
  children: item.label
3435
3674
  }) : item.label
3436
3675
  }),
3437
- /* @__PURE__ */ jsx39(MeterValue2, {
3676
+ /* @__PURE__ */ jsx40(MeterValue2, {
3438
3677
  children: () => valueFormatter(item.value)
3439
3678
  })
3440
3679
  ]
3441
3680
  }),
3442
- /* @__PURE__ */ jsx39(MeterTrack2, {
3443
- children: /* @__PURE__ */ jsx39(MeterIndicator2, {})
3681
+ /* @__PURE__ */ jsx40(MeterTrack2, {
3682
+ children: /* @__PURE__ */ jsx40(MeterIndicator2, {})
3444
3683
  })
3445
3684
  ]
3446
3685
  })
3447
3686
  }, item.id))
3448
3687
  }),
3449
- !items.length && /* @__PURE__ */ jsx39("p", {
3688
+ !items.length && /* @__PURE__ */ jsx40("p", {
3450
3689
  role: "status",
3451
3690
  className: "text-sm text-muted-foreground",
3452
3691
  children: "No data available."
@@ -3455,23 +3694,23 @@ function BarList2({
3455
3694
  });
3456
3695
  }
3457
3696
  // src/components/StatusTracker.tsx
3458
- import { jsx as jsx40, jsxs as jsxs27 } from "react/jsx-runtime";
3697
+ import { jsx as jsx41, jsxs as jsxs28 } from "react/jsx-runtime";
3459
3698
  var statusClasses = { success: "bg-success", warning: "bg-warning", error: "bg-destructive", unknown: "bg-muted" };
3460
3699
  function StatusTracker2({ label, items, onItemSelect, density }) {
3461
- return /* @__PURE__ */ jsx40(TooltipProvider2, {
3462
- children: /* @__PURE__ */ jsx40("div", {
3700
+ return /* @__PURE__ */ jsx41(TooltipProvider2, {
3701
+ children: /* @__PURE__ */ jsx41("div", {
3463
3702
  role: "group",
3464
3703
  "aria-label": label,
3465
3704
  "data-density": density,
3466
3705
  className: "flex min-w-0 gap-1",
3467
- children: items.map((item) => /* @__PURE__ */ jsxs27(Tooltip2, {
3706
+ children: items.map((item) => /* @__PURE__ */ jsxs28(Tooltip2, {
3468
3707
  children: [
3469
- /* @__PURE__ */ jsx40(TooltipTrigger2, {
3708
+ /* @__PURE__ */ jsx41(TooltipTrigger2, {
3470
3709
  "aria-label": `${item.label}: ${item.status}`,
3471
3710
  onClick: () => onItemSelect?.(item),
3472
3711
  className: cn2("h-8 min-w-2 flex-1 rounded-sm outline-none focus-visible:ring-2 focus-visible:ring-ring", statusClasses[item.status])
3473
3712
  }),
3474
- /* @__PURE__ */ jsxs27(TooltipContent2, {
3713
+ /* @__PURE__ */ jsxs28(TooltipContent2, {
3475
3714
  children: [
3476
3715
  item.label,
3477
3716
  ": ",
@@ -3484,7 +3723,7 @@ function StatusTracker2({ label, items, onItemSelect, density }) {
3484
3723
  });
3485
3724
  }
3486
3725
  // src/components/DashboardLayout.tsx
3487
- import { jsx as jsx41, jsxs as jsxs28 } from "react/jsx-runtime";
3726
+ import { jsx as jsx42, jsxs as jsxs29 } from "react/jsx-runtime";
3488
3727
  function DashboardLayout2({
3489
3728
  title,
3490
3729
  description,
@@ -3495,24 +3734,24 @@ function DashboardLayout2({
3495
3734
  footer,
3496
3735
  density
3497
3736
  }) {
3498
- return /* @__PURE__ */ jsxs28("div", {
3737
+ return /* @__PURE__ */ jsxs29("div", {
3499
3738
  "data-density": density,
3500
3739
  "data-scroll": "none",
3501
3740
  className: "grid min-w-0 gap-6",
3502
3741
  children: [
3503
- /* @__PURE__ */ jsx41(PageHeader2, {
3742
+ /* @__PURE__ */ jsx42(PageHeader2, {
3504
3743
  title,
3505
3744
  description,
3506
3745
  actions
3507
3746
  }),
3508
3747
  filters,
3509
- stats.length > 0 && /* @__PURE__ */ jsx41("div", {
3748
+ stats.length > 0 && /* @__PURE__ */ jsx42("div", {
3510
3749
  className: "grid gap-4 sm:grid-cols-2 xl:grid-cols-4",
3511
- children: stats.map(({ id, ...stat }) => /* @__PURE__ */ jsx41(StatCard2, {
3750
+ children: stats.map(({ id, ...stat }) => /* @__PURE__ */ jsx42(StatCard2, {
3512
3751
  ...stat
3513
3752
  }, id))
3514
3753
  }),
3515
- /* @__PURE__ */ jsx41("div", {
3754
+ /* @__PURE__ */ jsx42("div", {
3516
3755
  className: "grid min-w-0 gap-4",
3517
3756
  children
3518
3757
  }),
@@ -3521,18 +3760,18 @@ function DashboardLayout2({
3521
3760
  });
3522
3761
  }
3523
3762
  // src/components/BillingUsage.tsx
3524
- import { jsx as jsx42, jsxs as jsxs29 } from "react/jsx-runtime";
3763
+ import { jsx as jsx43, jsxs as jsxs30 } from "react/jsx-runtime";
3525
3764
  function BillingUsage2({ plan, price, period, metrics, onManage, pending, density }) {
3526
- return /* @__PURE__ */ jsxs29(Card2, {
3765
+ return /* @__PURE__ */ jsxs30(Card2, {
3527
3766
  density,
3528
3767
  "aria-label": "Billing and usage",
3529
3768
  children: [
3530
- /* @__PURE__ */ jsxs29(CardHeader2, {
3769
+ /* @__PURE__ */ jsxs30(CardHeader2, {
3531
3770
  children: [
3532
- /* @__PURE__ */ jsx42(CardTitle2, {
3771
+ /* @__PURE__ */ jsx43(CardTitle2, {
3533
3772
  children: plan
3534
3773
  }),
3535
- /* @__PURE__ */ jsxs29(CardDescription2, {
3774
+ /* @__PURE__ */ jsxs30(CardDescription2, {
3536
3775
  children: [
3537
3776
  price,
3538
3777
  " · ",
@@ -3541,32 +3780,32 @@ function BillingUsage2({ plan, price, period, metrics, onManage, pending, densit
3541
3780
  })
3542
3781
  ]
3543
3782
  }),
3544
- /* @__PURE__ */ jsx42(CardContent2, {
3783
+ /* @__PURE__ */ jsx43(CardContent2, {
3545
3784
  className: "grid gap-4",
3546
- children: metrics.map((metric) => /* @__PURE__ */ jsxs29(Meter2, {
3785
+ children: metrics.map((metric) => /* @__PURE__ */ jsxs30(Meter2, {
3547
3786
  value: metric.used,
3548
3787
  max: metric.limit,
3549
3788
  "aria-label": metric.label,
3550
3789
  children: [
3551
- /* @__PURE__ */ jsxs29("div", {
3790
+ /* @__PURE__ */ jsxs30("div", {
3552
3791
  className: "mb-2 flex items-center justify-between gap-3 text-sm",
3553
3792
  children: [
3554
- /* @__PURE__ */ jsx42(MeterLabel2, {
3793
+ /* @__PURE__ */ jsx43(MeterLabel2, {
3555
3794
  children: metric.label
3556
3795
  }),
3557
- /* @__PURE__ */ jsx42(MeterValue2, {
3796
+ /* @__PURE__ */ jsx43(MeterValue2, {
3558
3797
  children: () => `${metric.used.toLocaleString()} / ${metric.limit.toLocaleString()}${metric.unit ? ` ${metric.unit}` : ""}`
3559
3798
  })
3560
3799
  ]
3561
3800
  }),
3562
- /* @__PURE__ */ jsx42(MeterTrack2, {
3563
- children: /* @__PURE__ */ jsx42(MeterIndicator2, {})
3801
+ /* @__PURE__ */ jsx43(MeterTrack2, {
3802
+ children: /* @__PURE__ */ jsx43(MeterIndicator2, {})
3564
3803
  })
3565
3804
  ]
3566
3805
  }, metric.id))
3567
3806
  }),
3568
- /* @__PURE__ */ jsx42(CardFooter2, {
3569
- children: /* @__PURE__ */ jsx42(Button2, {
3807
+ /* @__PURE__ */ jsx43(CardFooter2, {
3808
+ children: /* @__PURE__ */ jsx43(Button2, {
3570
3809
  type: "button",
3571
3810
  variant: "outline",
3572
3811
  onClick: onManage,
@@ -3577,4 +3816,4 @@ function BillingUsage2({ plan, price, period, metrics, onManage, pending, densit
3577
3816
  ]
3578
3817
  });
3579
3818
  }
3580
- export { ButtonLink2, Accordion2, AccordionItem2, AccordionTrigger2, AccordionContent2, EmptyState3, PageMessage2, JsonViewer2, AlertDialog2, AlertDialogTrigger2, AlertDialogPortal2, AlertDialogOverlay2, AlertDialogContent2, AlertDialogHeader2, AlertDialogFooter2, AlertDialogMedia2, AlertDialogTitle2, AlertDialogDescription2, AlertDialogAction2, AlertDialogCancel2, Select2, SelectGroup2, SelectValue2, SelectTrigger2, SelectContent2, SelectLabel2, SelectItem2, SelectSeparator2, SelectScrollUpButton2, SelectScrollDownButton2, DensityProvider2, collectLayoutViolations2, LayoutGuard2, ScrollGuard2, ThemeProvider2, AspectRatio2, Breadcrumb2, BreadcrumbList2, BreadcrumbItem2, BreadcrumbLink2, BreadcrumbPage2, BreadcrumbSeparator2, BreadcrumbEllipsis2, buttonGroupVariants2, ButtonGroup2, ButtonGroupText2, ButtonGroupSeparator2, ItemGroup2, ItemSeparator2, Item2, ItemMedia2, ItemContent2, ItemTitle2, ItemDescription2, ItemActions2, ItemHeader2, ItemFooter2, Pagination2, PaginationContent2, PaginationItem2, PaginationLink2, PaginationPrevious2, PaginationNext2, PaginationEllipsis2, Drawer2, DrawerTrigger2, DrawerPortal2, DrawerClose2, DrawerOverlay2, DrawerSwipeHandle2, DrawerContent2, DrawerHeader2, DrawerFooter2, DrawerTitle2, DrawerDescription2, ContextMenu2, ContextMenuPortal2, ContextMenuTrigger2, ContextMenuContent2, ContextMenuGroup2, ContextMenuLabel2, ContextMenuItem2, ContextMenuSub2, ContextMenuSubTrigger2, ContextMenuSubContent2, ContextMenuCheckboxItem2, ContextMenuRadioGroup2, ContextMenuRadioItem2, ContextMenuSeparator2, ContextMenuShortcut2, Menubar2, MenubarMenu2, MenubarGroup2, MenubarPortal2, MenubarTrigger2, MenubarContent2, MenubarItem2, MenubarCheckboxItem2, MenubarRadioGroup2, MenubarRadioItem2, MenubarLabel2, MenubarSeparator2, MenubarShortcut2, MenubarSub2, MenubarSubTrigger2, MenubarSubContent2, NavigationMenu2, NavigationMenuList2, NavigationMenuItem2, navigationMenuTriggerStyle2, NavigationMenuTrigger2, NavigationMenuContent2, NavigationMenuPositioner2, NavigationMenuLink2, NavigationMenuIndicator2, ToastProvider2, ToastPortal2, ToastViewport2, Toast2, ToastContent2, ToastTitle2, ToastDescription2, ToastAction2, ToastClose2, ToastToaster2, createToastManager2, useToastManager2, markerVariants2, Marker2, MarkerIcon2, MarkerContent2, BubbleGroup2, Bubble2, BubbleContent2, BubbleReactions2, MessageGroup2, Message2, MessageAvatar2, MessageContent2, MessageHeader2, MessageFooter2, Attachment2, AttachmentMedia2, AttachmentContent2, AttachmentTitle2, AttachmentDescription2, AttachmentActions2, AttachmentAction2, AttachmentTrigger2, AttachmentGroup2, InlineEdit2, StarRating2, ConfirmationDialog2, ImagePicker2, Meter2, MeterLabel2, MeterValue2, MeterTrack2, MeterIndicator2, Stepper2, StepperList2, StepperTrigger2, StepperIndicator2, StepperContent2, AppShell2, PageHeader2, WorkspaceSwitcher2, AccountMenu2, StatCard2, AuthForm2, SettingsSection2, TagInput2, FilterBar2, BarList2, StatusTracker2, DashboardLayout2, BillingUsage2 };
3819
+ export { ButtonLink2, Accordion2, AccordionItem2, AccordionTrigger2, AccordionContent2, EmptyState3, PageMessage2, formatDataLabel2, DataViewer2, JsonViewer2, AlertDialog2, AlertDialogTrigger2, AlertDialogPortal2, AlertDialogOverlay2, AlertDialogContent2, AlertDialogHeader2, AlertDialogFooter2, AlertDialogMedia2, AlertDialogTitle2, AlertDialogDescription2, AlertDialogAction2, AlertDialogCancel2, Select2, SelectGroup2, SelectValue2, SelectTrigger2, SelectContent2, SelectLabel2, SelectItem2, SelectSeparator2, SelectScrollUpButton2, SelectScrollDownButton2, DensityProvider2, collectLayoutViolations2, LayoutGuard2, ScrollGuard2, ThemeProvider2, AspectRatio2, Breadcrumb2, BreadcrumbList2, BreadcrumbItem2, BreadcrumbLink2, BreadcrumbPage2, BreadcrumbSeparator2, BreadcrumbEllipsis2, buttonGroupVariants2, ButtonGroup2, ButtonGroupText2, ButtonGroupSeparator2, ItemGroup2, ItemSeparator2, Item2, ItemMedia2, ItemContent2, ItemTitle2, ItemDescription2, ItemActions2, ItemHeader2, ItemFooter2, Pagination2, PaginationContent2, PaginationItem2, PaginationLink2, PaginationPrevious2, PaginationNext2, PaginationEllipsis2, Drawer2, DrawerTrigger2, DrawerPortal2, DrawerClose2, DrawerOverlay2, DrawerSwipeHandle2, DrawerContent2, DrawerHeader2, DrawerFooter2, DrawerTitle2, DrawerDescription2, ContextMenu2, ContextMenuPortal2, ContextMenuTrigger2, ContextMenuContent2, ContextMenuGroup2, ContextMenuLabel2, ContextMenuItem2, ContextMenuSub2, ContextMenuSubTrigger2, ContextMenuSubContent2, ContextMenuCheckboxItem2, ContextMenuRadioGroup2, ContextMenuRadioItem2, ContextMenuSeparator2, ContextMenuShortcut2, Menubar2, MenubarMenu2, MenubarGroup2, MenubarPortal2, MenubarTrigger2, MenubarContent2, MenubarItem2, MenubarCheckboxItem2, MenubarRadioGroup2, MenubarRadioItem2, MenubarLabel2, MenubarSeparator2, MenubarShortcut2, MenubarSub2, MenubarSubTrigger2, MenubarSubContent2, NavigationMenu2, NavigationMenuList2, NavigationMenuItem2, navigationMenuTriggerStyle2, NavigationMenuTrigger2, NavigationMenuContent2, NavigationMenuPositioner2, NavigationMenuLink2, NavigationMenuIndicator2, ToastProvider2, ToastPortal2, ToastViewport2, Toast2, ToastContent2, ToastTitle2, ToastDescription2, ToastAction2, ToastClose2, ToastToaster2, createToastManager2, useToastManager2, markerVariants2, Marker2, MarkerIcon2, MarkerContent2, BubbleGroup2, Bubble2, BubbleContent2, BubbleReactions2, MessageGroup2, Message2, MessageAvatar2, MessageContent2, MessageHeader2, MessageFooter2, Attachment2, AttachmentMedia2, AttachmentContent2, AttachmentTitle2, AttachmentDescription2, AttachmentActions2, AttachmentAction2, AttachmentTrigger2, AttachmentGroup2, InlineEdit2, StarRating2, ConfirmationDialog2, ImagePicker2, Meter2, MeterLabel2, MeterValue2, MeterTrack2, MeterIndicator2, Stepper2, StepperList2, StepperTrigger2, StepperIndicator2, StepperContent2, AppShell2, PageHeader2, WorkspaceSwitcher2, AccountMenu2, StatCard2, AuthForm2, SettingsSection2, TagInput2, FilterBar2, BarList2, StatusTracker2, DashboardLayout2, BillingUsage2 };