@stevederico/skateboard-ui 3.12.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (339) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +37 -31
  3. package/dist/components/core/Command.js +33 -7
  4. package/dist/shadcn/ui/accordion.d.ts +1 -6
  5. package/dist/shadcn/ui/accordion.js +3 -17
  6. package/dist/shadcn/ui/alert-dialog.d.ts +1 -18
  7. package/dist/shadcn/ui/alert-dialog.js +3 -43
  8. package/dist/shadcn/ui/alert.d.ts +1 -13
  9. package/dist/shadcn/ui/alert.js +3 -28
  10. package/dist/shadcn/ui/aspect-ratio.d.ts +1 -4
  11. package/dist/shadcn/ui/aspect-ratio.js +3 -8
  12. package/dist/shadcn/ui/avatar.d.ts +1 -11
  13. package/dist/shadcn/ui/avatar.js +3 -24
  14. package/dist/shadcn/ui/badge.d.ts +1 -14
  15. package/dist/shadcn/ui/badge.js +3 -33
  16. package/dist/shadcn/ui/breadcrumb.d.ts +1 -10
  17. package/dist/shadcn/ui/breadcrumb.js +3 -37
  18. package/dist/shadcn/ui/button-group.d.ts +1 -13
  19. package/dist/shadcn/ui/button-group.js +3 -36
  20. package/dist/shadcn/ui/button.d.ts +1 -34
  21. package/dist/shadcn/ui/button.js +3 -53
  22. package/dist/shadcn/ui/calendar.d.ts +1 -13
  23. package/dist/shadcn/ui/calendar.js +3 -75
  24. package/dist/shadcn/ui/card.d.ts +1 -11
  25. package/dist/shadcn/ui/card.js +3 -25
  26. package/dist/shadcn/ui/checkbox.d.ts +1 -3
  27. package/dist/shadcn/ui/checkbox.js +3 -9
  28. package/dist/shadcn/ui/collapsible.d.ts +1 -5
  29. package/dist/shadcn/ui/collapsible.js +3 -13
  30. package/dist/shadcn/ui/command.d.ts +1 -19
  31. package/dist/shadcn/ui/command.js +3 -35
  32. package/dist/shadcn/ui/context-menu.d.ts +1 -29
  33. package/dist/shadcn/ui/context-menu.js +3 -52
  34. package/dist/shadcn/ui/dialog.d.ts +1 -17
  35. package/dist/shadcn/ui/dialog.js +3 -38
  36. package/dist/shadcn/ui/drawer.d.ts +1 -13
  37. package/dist/shadcn/ui/drawer.js +3 -196
  38. package/dist/shadcn/ui/dropdown-menu.d.ts +1 -29
  39. package/dist/shadcn/ui/dropdown-menu.js +3 -52
  40. package/dist/shadcn/ui/empty.d.ts +1 -14
  41. package/dist/shadcn/ui/empty.js +3 -33
  42. package/dist/shadcn/ui/field.d.ts +1 -28
  43. package/dist/shadcn/ui/field.js +3 -68
  44. package/dist/shadcn/ui/hover-card.d.ts +1 -5
  45. package/dist/shadcn/ui/hover-card.js +3 -14
  46. package/dist/shadcn/ui/input-group.d.ts +1 -28
  47. package/dist/shadcn/ui/input-group.js +3 -58
  48. package/dist/shadcn/ui/input.d.ts +1 -3
  49. package/dist/shadcn/ui/input.js +3 -8
  50. package/dist/shadcn/ui/item.d.ts +1 -34
  51. package/dist/shadcn/ui/item.js +3 -79
  52. package/dist/shadcn/ui/kbd.d.ts +1 -3
  53. package/dist/shadcn/ui/kbd.js +3 -9
  54. package/dist/shadcn/ui/label.d.ts +1 -3
  55. package/dist/shadcn/ui/label.js +3 -8
  56. package/dist/shadcn/ui/menubar.d.ts +1 -29
  57. package/dist/shadcn/ui/menubar.js +3 -57
  58. package/dist/shadcn/ui/navigation-menu.d.ts +1 -13
  59. package/dist/shadcn/ui/navigation-menu.js +3 -31
  60. package/dist/shadcn/ui/pagination.d.ts +1 -17
  61. package/dist/shadcn/ui/pagination.js +3 -27
  62. package/dist/shadcn/ui/popover.d.ts +1 -9
  63. package/dist/shadcn/ui/popover.js +3 -24
  64. package/dist/shadcn/ui/progress.d.ts +1 -7
  65. package/dist/shadcn/ui/progress.js +3 -20
  66. package/dist/shadcn/ui/radio-group.d.ts +1 -5
  67. package/dist/shadcn/ui/radio-group.js +3 -12
  68. package/dist/shadcn/ui/scroll-area.d.ts +1 -5
  69. package/dist/shadcn/ui/scroll-area.js +3 -12
  70. package/dist/shadcn/ui/select.d.ts +1 -15
  71. package/dist/shadcn/ui/select.js +3 -35
  72. package/dist/shadcn/ui/separator.d.ts +1 -3
  73. package/dist/shadcn/ui/separator.js +3 -8
  74. package/dist/shadcn/ui/sheet.d.ts +1 -14
  75. package/dist/shadcn/ui/sheet.js +3 -38
  76. package/dist/shadcn/ui/sidebar.d.ts +1 -70
  77. package/dist/shadcn/ui/sidebar.js +3 -256
  78. package/dist/shadcn/ui/skeleton.d.ts +1 -2
  79. package/dist/shadcn/ui/skeleton.js +3 -6
  80. package/dist/shadcn/ui/slider.d.ts +1 -3
  81. package/dist/shadcn/ui/slider.js +3 -12
  82. package/dist/shadcn/ui/spinner.d.ts +1 -2
  83. package/dist/shadcn/ui/spinner.js +3 -7
  84. package/dist/shadcn/ui/switch.d.ts +1 -5
  85. package/dist/shadcn/ui/switch.js +3 -8
  86. package/dist/shadcn/ui/table.d.ts +1 -10
  87. package/dist/shadcn/ui/table.js +3 -29
  88. package/dist/shadcn/ui/tabs.d.ts +1 -13
  89. package/dist/shadcn/ui/tabs.js +3 -29
  90. package/dist/shadcn/ui/textarea.d.ts +1 -3
  91. package/dist/shadcn/ui/textarea.js +3 -7
  92. package/dist/shadcn/ui/toggle-group.d.ts +1 -11
  93. package/dist/shadcn/ui/toggle-group.js +3 -25
  94. package/dist/shadcn/ui/toggle.d.ts +1 -15
  95. package/dist/shadcn/ui/toggle.js +3 -26
  96. package/dist/shadcn/ui/tooltip.d.ts +1 -6
  97. package/dist/shadcn/ui/tooltip.js +3 -17
  98. package/dist/ui/accordion.d.ts +21 -0
  99. package/dist/ui/accordion.js +67 -0
  100. package/dist/ui/alert-dialog.d.ts +32 -0
  101. package/dist/ui/alert-dialog.js +102 -0
  102. package/dist/ui/alert.d.ts +13 -0
  103. package/dist/ui/alert.js +28 -0
  104. package/dist/ui/aspect-ratio.d.ts +5 -0
  105. package/dist/ui/aspect-ratio.js +9 -0
  106. package/dist/ui/avatar.d.ts +14 -0
  107. package/dist/ui/avatar.js +49 -0
  108. package/dist/ui/badge.d.ts +22 -0
  109. package/dist/ui/badge.js +26 -0
  110. package/dist/ui/breadcrumb.d.ts +13 -0
  111. package/dist/ui/breadcrumb.js +29 -0
  112. package/dist/ui/button-group.d.ts +21 -0
  113. package/dist/ui/button-group.js +29 -0
  114. package/dist/ui/button.d.ts +38 -0
  115. package/dist/ui/button.js +49 -0
  116. package/dist/ui/calendar.d.ts +13 -0
  117. package/dist/ui/calendar.js +75 -0
  118. package/dist/ui/card.d.ts +11 -0
  119. package/dist/ui/card.js +25 -0
  120. package/dist/ui/checkbox.d.ts +17 -0
  121. package/dist/ui/checkbox.js +25 -0
  122. package/dist/ui/collapsible.d.ts +11 -0
  123. package/dist/ui/collapsible.js +40 -0
  124. package/dist/ui/command.d.ts +19 -0
  125. package/dist/ui/command.js +35 -0
  126. package/dist/ui/context-menu.d.ts +53 -0
  127. package/dist/ui/context-menu.js +372 -0
  128. package/dist/ui/dialog.d.ts +40 -0
  129. package/dist/ui/dialog.js +109 -0
  130. package/dist/ui/drawer.d.ts +36 -0
  131. package/dist/ui/drawer.js +243 -0
  132. package/dist/ui/dropdown-menu.d.ts +61 -0
  133. package/dist/ui/dropdown-menu.js +347 -0
  134. package/dist/ui/empty.d.ts +14 -0
  135. package/dist/ui/empty.js +33 -0
  136. package/dist/ui/field.d.ts +28 -0
  137. package/dist/ui/field.js +68 -0
  138. package/dist/ui/hover-card.d.ts +32 -0
  139. package/dist/ui/hover-card.js +119 -0
  140. package/dist/ui/input-group.d.ts +28 -0
  141. package/dist/ui/input-group.js +58 -0
  142. package/dist/ui/input.d.ts +3 -0
  143. package/dist/ui/input.js +7 -0
  144. package/dist/ui/item.d.ts +41 -0
  145. package/dist/ui/item.js +69 -0
  146. package/dist/ui/kbd.d.ts +4 -0
  147. package/dist/ui/kbd.js +10 -0
  148. package/dist/ui/label.d.ts +3 -0
  149. package/dist/ui/label.js +8 -0
  150. package/dist/ui/menubar.d.ts +59 -0
  151. package/dist/ui/menubar.js +397 -0
  152. package/dist/ui/navigation-menu.d.ts +24 -0
  153. package/dist/ui/navigation-menu.js +203 -0
  154. package/dist/ui/pagination.d.ts +17 -0
  155. package/dist/ui/pagination.js +36 -0
  156. package/dist/ui/popover.d.ts +25 -0
  157. package/dist/ui/popover.js +126 -0
  158. package/dist/ui/portal.d.ts +7 -0
  159. package/dist/ui/portal.js +12 -0
  160. package/dist/ui/progress.d.ts +15 -0
  161. package/dist/ui/progress.js +36 -0
  162. package/dist/ui/radio-group.d.ts +17 -0
  163. package/dist/ui/radio-group.js +66 -0
  164. package/dist/ui/scroll-area.d.ts +9 -0
  165. package/dist/ui/scroll-area.js +72 -0
  166. package/dist/ui/select.d.ts +37 -0
  167. package/dist/ui/select.js +226 -0
  168. package/dist/ui/separator.d.ts +14 -0
  169. package/dist/ui/separator.js +13 -0
  170. package/dist/ui/sheet.d.ts +31 -0
  171. package/dist/ui/sheet.js +121 -0
  172. package/dist/ui/sidebar.d.ts +86 -0
  173. package/dist/ui/sidebar.js +211 -0
  174. package/dist/ui/skeleton.d.ts +3 -0
  175. package/dist/ui/skeleton.js +7 -0
  176. package/dist/ui/slider.d.ts +18 -0
  177. package/dist/ui/slider.js +94 -0
  178. package/dist/ui/slot.d.ts +27 -0
  179. package/dist/ui/slot.js +62 -0
  180. package/dist/ui/spinner.d.ts +3 -0
  181. package/dist/ui/spinner.js +8 -0
  182. package/dist/ui/switch.d.ts +17 -0
  183. package/dist/ui/switch.js +23 -0
  184. package/dist/ui/table.d.ts +10 -0
  185. package/dist/ui/table.js +29 -0
  186. package/dist/ui/tabs.d.ts +29 -0
  187. package/dist/ui/tabs.js +96 -0
  188. package/dist/ui/textarea.d.ts +3 -0
  189. package/dist/ui/textarea.js +7 -0
  190. package/dist/ui/toggle-group.d.ts +23 -0
  191. package/dist/ui/toggle-group.js +52 -0
  192. package/dist/ui/toggle.d.ts +25 -0
  193. package/dist/ui/toggle.js +41 -0
  194. package/dist/ui/tooltip.d.ts +25 -0
  195. package/dist/ui/tooltip.js +90 -0
  196. package/dist/ui/use-controllable-state.d.ts +10 -0
  197. package/dist/ui/use-controllable-state.js +17 -0
  198. package/dist/ui/use-dismiss.d.ts +10 -0
  199. package/dist/ui/use-dismiss.js +51 -0
  200. package/dist/ui/use-floating.d.ts +42 -0
  201. package/dist/ui/use-floating.js +136 -0
  202. package/dist/ui/use-presence.d.ts +8 -0
  203. package/dist/ui/use-presence.js +48 -0
  204. package/dist/ui/use-typeahead.d.ts +19 -0
  205. package/dist/ui/use-typeahead.js +64 -0
  206. package/package.json +6 -1
  207. package/dist/shadcn/lib/base-ui/LICENSE +0 -21
  208. package/dist/shadcn/lib/base-ui/_chunk-000kmre8.js +0 -150
  209. package/dist/shadcn/lib/base-ui/_chunk-1vw45v38.js +0 -64
  210. package/dist/shadcn/lib/base-ui/_chunk-23rx7haq.js +0 -81
  211. package/dist/shadcn/lib/base-ui/_chunk-242gh8ph.js +0 -230
  212. package/dist/shadcn/lib/base-ui/_chunk-26cc610z.js +0 -6
  213. package/dist/shadcn/lib/base-ui/_chunk-2z044bba.js +0 -5890
  214. package/dist/shadcn/lib/base-ui/_chunk-3cpd1vjz.js +0 -13
  215. package/dist/shadcn/lib/base-ui/_chunk-3enq1vat.js +0 -82
  216. package/dist/shadcn/lib/base-ui/_chunk-3xpke33f.js +0 -23
  217. package/dist/shadcn/lib/base-ui/_chunk-451nqgsa.js +0 -6
  218. package/dist/shadcn/lib/base-ui/_chunk-4maf6pas.js +0 -11
  219. package/dist/shadcn/lib/base-ui/_chunk-4zhfq4d3.js +0 -16
  220. package/dist/shadcn/lib/base-ui/_chunk-5gaqyne5.js +0 -21
  221. package/dist/shadcn/lib/base-ui/_chunk-5tt5hk59.js +0 -4
  222. package/dist/shadcn/lib/base-ui/_chunk-5tze5c8q.js +0 -13
  223. package/dist/shadcn/lib/base-ui/_chunk-5xmdvndx.js +0 -225
  224. package/dist/shadcn/lib/base-ui/_chunk-6adaer33.js +0 -435
  225. package/dist/shadcn/lib/base-ui/_chunk-6ejf1z1r.js +0 -9
  226. package/dist/shadcn/lib/base-ui/_chunk-6kqramh9.js +0 -27
  227. package/dist/shadcn/lib/base-ui/_chunk-7b9dc493.js +0 -14
  228. package/dist/shadcn/lib/base-ui/_chunk-8a9vv8am.js +0 -89
  229. package/dist/shadcn/lib/base-ui/_chunk-8ctgmf06.js +0 -129
  230. package/dist/shadcn/lib/base-ui/_chunk-8ganmsbg.js +0 -54
  231. package/dist/shadcn/lib/base-ui/_chunk-8xaqxgck.js +0 -15
  232. package/dist/shadcn/lib/base-ui/_chunk-95tf2rxq.js +0 -62
  233. package/dist/shadcn/lib/base-ui/_chunk-9x63vfqj.js +0 -70
  234. package/dist/shadcn/lib/base-ui/_chunk-ase0ydtt.js +0 -9
  235. package/dist/shadcn/lib/base-ui/_chunk-b0nc8wq7.js +0 -34
  236. package/dist/shadcn/lib/base-ui/_chunk-b5ya6xds.js +0 -10
  237. package/dist/shadcn/lib/base-ui/_chunk-b6dkjkbw.js +0 -43
  238. package/dist/shadcn/lib/base-ui/_chunk-c2bz952e.js +0 -19
  239. package/dist/shadcn/lib/base-ui/_chunk-cdgfsr3q.js +0 -15
  240. package/dist/shadcn/lib/base-ui/_chunk-cdj8cpx5.js +0 -347
  241. package/dist/shadcn/lib/base-ui/_chunk-cgptgywc.js +0 -104
  242. package/dist/shadcn/lib/base-ui/_chunk-cwvtvwc7.js +0 -35
  243. package/dist/shadcn/lib/base-ui/_chunk-dan0mva4.js +0 -23
  244. package/dist/shadcn/lib/base-ui/_chunk-dzvjwv25.js +0 -0
  245. package/dist/shadcn/lib/base-ui/_chunk-e13rsb6b.js +0 -184
  246. package/dist/shadcn/lib/base-ui/_chunk-e56mpvk1.js +0 -118
  247. package/dist/shadcn/lib/base-ui/_chunk-e6k2ecs7.js +0 -48
  248. package/dist/shadcn/lib/base-ui/_chunk-ebyxgtb4.js +0 -29
  249. package/dist/shadcn/lib/base-ui/_chunk-f2wttwrf.js +0 -39
  250. package/dist/shadcn/lib/base-ui/_chunk-fdzctasg.js +0 -38
  251. package/dist/shadcn/lib/base-ui/_chunk-ffpjy0ta.js +0 -39
  252. package/dist/shadcn/lib/base-ui/_chunk-fqry7pew.js +0 -603
  253. package/dist/shadcn/lib/base-ui/_chunk-ghn1tzt8.js +0 -84
  254. package/dist/shadcn/lib/base-ui/_chunk-gy0bpkmx.js +0 -12
  255. package/dist/shadcn/lib/base-ui/_chunk-hm5h9vsk.js +0 -16
  256. package/dist/shadcn/lib/base-ui/_chunk-htdj1jps.js +0 -833
  257. package/dist/shadcn/lib/base-ui/_chunk-j29xjete.js +0 -146
  258. package/dist/shadcn/lib/base-ui/_chunk-j3qkyd10.js +0 -50
  259. package/dist/shadcn/lib/base-ui/_chunk-ktvsd5k6.js +0 -2386
  260. package/dist/shadcn/lib/base-ui/_chunk-kw8nnq00.js +0 -546
  261. package/dist/shadcn/lib/base-ui/_chunk-m307wpdj.js +0 -18
  262. package/dist/shadcn/lib/base-ui/_chunk-mnd0j7v9.js +0 -15
  263. package/dist/shadcn/lib/base-ui/_chunk-n11h505c.js +0 -32
  264. package/dist/shadcn/lib/base-ui/_chunk-p0e2qacz.js +0 -26
  265. package/dist/shadcn/lib/base-ui/_chunk-pv7b791x.js +0 -106
  266. package/dist/shadcn/lib/base-ui/_chunk-q5cg71p7.js +0 -83
  267. package/dist/shadcn/lib/base-ui/_chunk-qbezxj1g.js +0 -385
  268. package/dist/shadcn/lib/base-ui/_chunk-qmsqz6nt.js +0 -15
  269. package/dist/shadcn/lib/base-ui/_chunk-rrh8rt4v.js +0 -65
  270. package/dist/shadcn/lib/base-ui/_chunk-s5pwkz8v.js +0 -25
  271. package/dist/shadcn/lib/base-ui/_chunk-svxv97ph.js +0 -218
  272. package/dist/shadcn/lib/base-ui/_chunk-t7ppm3t0.js +0 -68
  273. package/dist/shadcn/lib/base-ui/_chunk-vg16xxmb.js +0 -52
  274. package/dist/shadcn/lib/base-ui/_chunk-vgkfmtbe.js +0 -21
  275. package/dist/shadcn/lib/base-ui/_chunk-watha94s.js +0 -14
  276. package/dist/shadcn/lib/base-ui/_chunk-wdqynnjf.js +0 -35
  277. package/dist/shadcn/lib/base-ui/_chunk-wx2nxg0p.js +0 -15
  278. package/dist/shadcn/lib/base-ui/_chunk-x11e1k9r.js +0 -0
  279. package/dist/shadcn/lib/base-ui/_chunk-x8xehj6d.js +0 -302
  280. package/dist/shadcn/lib/base-ui/_chunk-xcqbtm2f.js +0 -28
  281. package/dist/shadcn/lib/base-ui/_chunk-ytnp24gq.js +0 -328
  282. package/dist/shadcn/lib/base-ui/_chunk-yzr7eg4b.js +0 -6
  283. package/dist/shadcn/lib/base-ui/_chunk-zk4mtm9m.js +0 -9
  284. package/dist/shadcn/lib/base-ui/accordion.d.ts +0 -447
  285. package/dist/shadcn/lib/base-ui/accordion.js +0 -630
  286. package/dist/shadcn/lib/base-ui/alert-dialog.d.ts +0 -1467
  287. package/dist/shadcn/lib/base-ui/alert-dialog.js +0 -98
  288. package/dist/shadcn/lib/base-ui/avatar.d.ts +0 -123
  289. package/dist/shadcn/lib/base-ui/avatar.js +0 -235
  290. package/dist/shadcn/lib/base-ui/button.d.ts +0 -84
  291. package/dist/shadcn/lib/base-ui/button.js +0 -51
  292. package/dist/shadcn/lib/base-ui/checkbox.d.ts +0 -341
  293. package/dist/shadcn/lib/base-ui/checkbox.js +0 -501
  294. package/dist/shadcn/lib/base-ui/collapsible.d.ts +0 -291
  295. package/dist/shadcn/lib/base-ui/collapsible.js +0 -264
  296. package/dist/shadcn/lib/base-ui/context-menu.d.ts +0 -2213
  297. package/dist/shadcn/lib/base-ui/context-menu.js +0 -323
  298. package/dist/shadcn/lib/base-ui/dialog.d.ts +0 -1448
  299. package/dist/shadcn/lib/base-ui/dialog.js +0 -79
  300. package/dist/shadcn/lib/base-ui/input.d.ts +0 -506
  301. package/dist/shadcn/lib/base-ui/input.js +0 -1027
  302. package/dist/shadcn/lib/base-ui/menu.d.ts +0 -2275
  303. package/dist/shadcn/lib/base-ui/menu.js +0 -60
  304. package/dist/shadcn/lib/base-ui/menubar.d.ts +0 -48
  305. package/dist/shadcn/lib/base-ui/menubar.js +0 -156
  306. package/dist/shadcn/lib/base-ui/merge-props.d.ts +0 -70
  307. package/dist/shadcn/lib/base-ui/merge-props.js +0 -15
  308. package/dist/shadcn/lib/base-ui/navigation-menu.d.ts +0 -825
  309. package/dist/shadcn/lib/base-ui/navigation-menu.js +0 -1849
  310. package/dist/shadcn/lib/base-ui/popover.d.ts +0 -1743
  311. package/dist/shadcn/lib/base-ui/popover.js +0 -1089
  312. package/dist/shadcn/lib/base-ui/preview-card.d.ts +0 -1608
  313. package/dist/shadcn/lib/base-ui/preview-card.js +0 -919
  314. package/dist/shadcn/lib/base-ui/progress.d.ts +0 -172
  315. package/dist/shadcn/lib/base-ui/progress.js +0 -272
  316. package/dist/shadcn/lib/base-ui/radio-group.d.ts +0 -260
  317. package/dist/shadcn/lib/base-ui/radio-group.js +0 -239
  318. package/dist/shadcn/lib/base-ui/radio.d.ts +0 -176
  319. package/dist/shadcn/lib/base-ui/radio.js +0 -387
  320. package/dist/shadcn/lib/base-ui/scroll-area.d.ts +0 -241
  321. package/dist/shadcn/lib/base-ui/scroll-area.js +0 -1055
  322. package/dist/shadcn/lib/base-ui/select.d.ts +0 -1266
  323. package/dist/shadcn/lib/base-ui/select.js +0 -2450
  324. package/dist/shadcn/lib/base-ui/separator.d.ts +0 -76
  325. package/dist/shadcn/lib/base-ui/separator.js +0 -11
  326. package/dist/shadcn/lib/base-ui/slider.d.ts +0 -551
  327. package/dist/shadcn/lib/base-ui/slider.js +0 -1583
  328. package/dist/shadcn/lib/base-ui/switch.d.ts +0 -313
  329. package/dist/shadcn/lib/base-ui/switch.js +0 -326
  330. package/dist/shadcn/lib/base-ui/tabs.d.ts +0 -406
  331. package/dist/shadcn/lib/base-ui/tabs.js +0 -915
  332. package/dist/shadcn/lib/base-ui/toggle-group.d.ts +0 -235
  333. package/dist/shadcn/lib/base-ui/toggle-group.js +0 -145
  334. package/dist/shadcn/lib/base-ui/toggle.d.ts +0 -224
  335. package/dist/shadcn/lib/base-ui/toggle.js +0 -127
  336. package/dist/shadcn/lib/base-ui/tooltip.d.ts +0 -1656
  337. package/dist/shadcn/lib/base-ui/tooltip.js +0 -920
  338. package/dist/shadcn/lib/base-ui/use-render.d.ts +0 -87
  339. package/dist/shadcn/lib/base-ui/use-render.js +0 -15
package/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # CHANGELOG
2
2
 
3
+ 4.1.0
4
+
5
+ Add menu/select typeahead
6
+ Fix popover focus management
7
+ Fix navigation-menu keyboard entry
8
+ Fix Command combobox ARIA
9
+ Fix tabs first tab-stop
10
+ Fix radio single tab-stop
11
+ Set menu available-height
12
+ Fix sheet/drawer exit animations
13
+ Reset floating position on close
14
+ Add a11y regression tests
15
+
16
+ 4.0.0
17
+
18
+ Self-contained ui/ component tier (47 components, zero base-ui)
19
+ Remove vendored base-ui bundle (~2MB / 31k lines)
20
+ Native dialog for dialog/alert-dialog/sheet/drawer
21
+ In-house floating positioner, dismiss, presence, focus
22
+ shadcn/ui/* now linker shims re-exporting ui/*
23
+ render= and nativeButton kept as asChild compat
24
+ SelectValue renders the real selected label
25
+ Fix Slot handler composition, Button type, Escape stacking
26
+ Fix avatar fallback, separator role, tabs ids, form integration
27
+
3
28
  3.12.0
4
29
 
5
30
  Fix asChild button
package/README.md CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
  React component library for rapid application development. Built with TypeScript, TailwindCSS v4, and shadcn/ui.
4
4
 
5
- **Zero runtime npm dependencies.** Only React, React-DOM, and React Router are peer-resolved. Everything else — base-ui primitives, lucide icons, tailwind-merge, drag physics, command palette, date picker, theme provider — is vendored, ported, or recreated inside the repo.
5
+ **Zero runtime npm dependencies.** Only React, React-DOM, and React Router are peer-resolved. Everything else — the 47 UI components, lucide icons, tailwind-merge, drag physics, command palette, date picker, theme provider — is authored, ported, or recreated inside the repo.
6
+
7
+ **Self-contained components (v4.0).** Every component is now hand-written with no primitive framework underneath — the previously-vendored `@base-ui/react` bundle (~31k lines) is gone. Floating positioning, focus trapping, dismiss layers, and animations are small in-house hooks; modals use the native `<dialog>` element. The legacy `shadcn/ui/*` import paths still work — they re-export the new `ui/*` components — so existing apps need no changes.
6
8
 
7
9
  **TypeScript with full type declarations.** Source is TypeScript, compiled to plain JavaScript + `.d.ts` in `dist/` (`npm run build`). JavaScript apps consume the compiled JS exactly as before — import paths are unchanged — and TypeScript apps get real types for every export (`SkateboardConstants`, `User`, component props, `VariantProps`, typed icons).
8
10
 
@@ -37,7 +39,7 @@ That's it! You get routing, auth, layout, landing page, settings, and payments.
37
39
 
38
40
  ## Dependency Footprint
39
41
 
40
- Across the v3.x series, every npm runtime dep was either vendored, recreated, or dropped. v3.5 finished the job by vendoring `@base-ui/react`.
42
+ Across the v3.x series, every npm runtime dep was either vendored, recreated, or dropped. v3.5 finished the job by vendoring `@base-ui/react`; **v4.0 removes that vendored bundle entirely** by rewriting every component to be self-contained.
41
43
 
42
44
  | | Hard deps | Optional peer deps | Total |
43
45
  |---|---|---|---|
@@ -48,7 +50,7 @@ Across the v3.x series, every npm runtime dep was either vendored, recreated, or
48
50
  | v3.3 | 2 | 0 | 2 |
49
51
  | v3.4 | 1 | 0 | 1 |
50
52
  | v3.5 | 0 | 0 | 0 |
51
- | **Now (v3.6+)** | **0** | **0** | **0** |
53
+ | **Now (v4.0+)** | **0** | **0** | **0** |
52
54
 
53
55
  v3.10 converts the package to TypeScript — compiled JS + `.d.ts` ship in `dist/`; the dependency count is unchanged (`typescript` is a devDependency only).
54
56
 
@@ -60,15 +62,17 @@ Pre-built copies live in this repo so consumers don't pull them from npm. Refres
60
62
 
61
63
  | Source | Lives at | Refresh script |
62
64
  |---|---|---|
63
- | `@base-ui/react` + 5 transitive deps (`@floating-ui/react-dom`, `@floating-ui/utils`, `@babel/runtime`, `use-sync-external-store`, `@base-ui/utils`) | `shadcn/lib/base-ui/*.js` + `*.d.ts` (28 entry points + shared chunks) | `node scripts/vendor-base-ui.js` (requires `bun`; bump `BASE_UI_VERSION`) |
64
65
  | `lucide` icons (1700+) | `icons/*.tsx` | `node scripts/vendor-icons.js` (bump `LUCIDE_TAG`) |
65
66
  | `tailwind-merge` | `shadcn/lib/tailwind-merge.js` | `node scripts/vendor-tailwind-merge.js` (bump `TM_VERSION`) |
66
67
 
68
+ `@base-ui/react` was vendored in v3.5 and **removed in v4.0** — the 47 components are now self-contained (see _Self-contained components_ above).
69
+
67
70
  ### Ported / recreated / inlined
68
71
 
69
72
  | Replaces | Lives at | Approach |
70
73
  |---|---|---|
71
- | `vaul` (drag gesture) | `shadcn/ui/drawer.tsx` | ported — drag math copied from vaul `src/index.tsx` (MIT, Emil Kowalski); base-ui Dialog as modal shell |
74
+ | `@base-ui/react` (behavior) | `ui/*.tsx` + `ui/{use-floating,use-dismiss,use-presence,use-controllable-state,slot,portal}.tsx` | rewritten — small in-house hooks for positioning, dismiss, presence, focus; native `<dialog>` for modals |
75
+ | `vaul` (drag gesture) | `ui/drawer.tsx` | ported — drag math copied from vaul `src/index.tsx` (MIT, Emil Kowalski) on a native `<dialog>` shell |
72
76
  | `cmdk` | `components/core/Command.tsx` | rewritten drop-in |
73
77
  | `react-day-picker` | `components/core/Calendar.tsx` | rewritten drop-in |
74
78
  | `next-themes` | `components/core/ThemeProvider.tsx` | rewritten drop-in |
@@ -85,6 +89,7 @@ Pre-built copies live in this repo so consumers don't pull them from npm. Refres
85
89
  | v3.3 | `Chart` | unused; consumers can install `recharts` directly |
86
90
  | v3.4 | `vaul` | drag physics ported; `Drawer` rebuilt on base-ui Dialog |
87
91
  | v3.5 | `@base-ui/react` | vendored; see table above |
92
+ | v4.0 | `@base-ui/react` (vendored bundle) | removed; components rewritten self-contained on `ui/*` |
88
93
 
89
94
  ## Migrating to 3.0
90
95
 
@@ -118,7 +123,6 @@ Each vendored library has a script that pins a version, fetches the upstream rel
118
123
 
119
124
  | Library | Bump | Command | Host requirement |
120
125
  |---|---|---|---|
121
- | `@base-ui/react` | `BASE_UI_VERSION` in `scripts/vendor-base-ui.js` | `node scripts/vendor-base-ui.js` | [bun](https://bun.sh) |
122
126
  | `lucide` icons | `LUCIDE_TAG` in `scripts/vendor-icons.js` | `node scripts/vendor-icons.js` | Node |
123
127
  | `tailwind-merge` | `TM_VERSION` in `scripts/vendor-tailwind-merge.js` | `node scripts/vendor-tailwind-merge.js` | Node |
124
128
 
@@ -1230,56 +1234,58 @@ Import base theme and override as needed:
1230
1234
 
1231
1235
  Dark mode is automatic via CSS custom properties and the in-house `ThemeProvider` (`components/core/ThemeProvider.tsx`).
1232
1236
 
1233
- ## shadcn/ui Components
1237
+ ## Components
1238
+
1239
+ 47 self-contained components available at `@stevederico/skateboard-ui/ui/*`. The legacy `@stevederico/skateboard-ui/ui/*` paths still resolve to the same components (re-export shims), so existing imports keep working.
1234
1240
 
1235
- 47 components available at `@stevederico/skateboard-ui/shadcn/ui/*`:
1241
+ Components follow the shadcn API. `asChild` renders the styling onto a single child element; the old base-ui `render={<El/>}` / `nativeButton` props are still accepted for backward compatibility.
1236
1242
 
1237
1243
  ```javascript
1238
- import { Button } from '@stevederico/skateboard-ui/shadcn/ui/button';
1239
- import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter, CardAction } from '@stevederico/skateboard-ui/shadcn/ui/card';
1240
- import { Input } from '@stevederico/skateboard-ui/shadcn/ui/input';
1241
- import { Label } from '@stevederico/skateboard-ui/shadcn/ui/label';
1242
- import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from '@stevederico/skateboard-ui/shadcn/ui/dialog';
1243
- import { Avatar, AvatarFallback, AvatarImage } from '@stevederico/skateboard-ui/shadcn/ui/avatar';
1244
- import { Badge } from '@stevederico/skateboard-ui/shadcn/ui/badge';
1245
- import { Separator } from '@stevederico/skateboard-ui/shadcn/ui/separator';
1246
- import { ScrollArea } from '@stevederico/skateboard-ui/shadcn/ui/scroll-area';
1247
- import { Skeleton } from '@stevederico/skateboard-ui/shadcn/ui/skeleton';
1248
- import { Alert, AlertDescription, AlertTitle } from '@stevederico/skateboard-ui/shadcn/ui/alert';
1249
- import { Progress } from '@stevederico/skateboard-ui/shadcn/ui/progress';
1250
- import { Switch } from '@stevederico/skateboard-ui/shadcn/ui/switch';
1251
- import { Checkbox } from '@stevederico/skateboard-ui/shadcn/ui/checkbox';
1252
- import { Textarea } from '@stevederico/skateboard-ui/shadcn/ui/textarea';
1253
- import { Tooltip, TooltipContent, TooltipTrigger } from '@stevederico/skateboard-ui/shadcn/ui/tooltip';
1244
+ import { Button } from '@stevederico/skateboard-ui/ui/button';
1245
+ import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter, CardAction } from '@stevederico/skateboard-ui/ui/card';
1246
+ import { Input } from '@stevederico/skateboard-ui/ui/input';
1247
+ import { Label } from '@stevederico/skateboard-ui/ui/label';
1248
+ import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from '@stevederico/skateboard-ui/ui/dialog';
1249
+ import { Avatar, AvatarFallback, AvatarImage } from '@stevederico/skateboard-ui/ui/avatar';
1250
+ import { Badge } from '@stevederico/skateboard-ui/ui/badge';
1251
+ import { Separator } from '@stevederico/skateboard-ui/ui/separator';
1252
+ import { ScrollArea } from '@stevederico/skateboard-ui/ui/scroll-area';
1253
+ import { Skeleton } from '@stevederico/skateboard-ui/ui/skeleton';
1254
+ import { Alert, AlertDescription, AlertTitle } from '@stevederico/skateboard-ui/ui/alert';
1255
+ import { Progress } from '@stevederico/skateboard-ui/ui/progress';
1256
+ import { Switch } from '@stevederico/skateboard-ui/ui/switch';
1257
+ import { Checkbox } from '@stevederico/skateboard-ui/ui/checkbox';
1258
+ import { Textarea } from '@stevederico/skateboard-ui/ui/textarea';
1259
+ import { Tooltip, TooltipContent, TooltipTrigger } from '@stevederico/skateboard-ui/ui/tooltip';
1254
1260
  ```
1255
1261
 
1256
1262
  ```javascript
1257
1263
  import {
1258
1264
  Select, SelectContent, SelectItem, SelectTrigger, SelectValue,
1259
- } from '@stevederico/skateboard-ui/shadcn/ui/select';
1265
+ } from '@stevederico/skateboard-ui/ui/select';
1260
1266
 
1261
1267
  import {
1262
1268
  DropdownMenu, DropdownMenuContent, DropdownMenuItem,
1263
1269
  DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger,
1264
- } from '@stevederico/skateboard-ui/shadcn/ui/dropdown-menu';
1270
+ } from '@stevederico/skateboard-ui/ui/dropdown-menu';
1265
1271
 
1266
1272
  import {
1267
1273
  AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent,
1268
1274
  AlertDialogDescription, AlertDialogFooter, AlertDialogHeader,
1269
1275
  AlertDialogTitle, AlertDialogTrigger,
1270
- } from '@stevederico/skateboard-ui/shadcn/ui/alert-dialog';
1276
+ } from '@stevederico/skateboard-ui/ui/alert-dialog';
1271
1277
 
1272
1278
  import {
1273
1279
  Accordion, AccordionContent, AccordionItem, AccordionTrigger,
1274
- } from '@stevederico/skateboard-ui/shadcn/ui/accordion';
1280
+ } from '@stevederico/skateboard-ui/ui/accordion';
1275
1281
 
1276
1282
  import {
1277
1283
  Table, TableBody, TableCell, TableHead, TableHeader, TableRow,
1278
- } from '@stevederico/skateboard-ui/shadcn/ui/table';
1284
+ } from '@stevederico/skateboard-ui/ui/table';
1279
1285
 
1280
1286
  import {
1281
1287
  Tabs, TabsContent, TabsList, TabsTrigger,
1282
- } from '@stevederico/skateboard-ui/shadcn/ui/tabs';
1288
+ } from '@stevederico/skateboard-ui/ui/tabs';
1283
1289
  ```
1284
1290
 
1285
1291
  ### Utilities
@@ -1307,7 +1313,7 @@ All components support dark mode automatically and accept a `className` prop for
1307
1313
 
1308
1314
  ### Hard dependencies
1309
1315
 
1310
- None. `@base-ui/react` and all its transitive deps are vendored at `shadcn/lib/base-ui/`. See the dep-count table near the top of this README for the full vendoring history.
1316
+ None. As of v4.0 the components are self-contained — `@base-ui/react` is no longer vendored or required. See the dep-count table near the top of this README for the full history.
1311
1317
 
1312
1318
  ## Repository
1313
1319
 
@@ -10,6 +10,9 @@ function useCommand() {
10
10
  export function Command({ className, children, ...props }) {
11
11
  const [filter, setFilter] = useState('');
12
12
  const [selectedId, setSelectedId] = useState(null);
13
+ // Stable base id shared by the listbox container and every option, so the
14
+ // input's aria-controls / aria-activedescendant can reference them.
15
+ const listboxId = useId();
13
16
  const itemsRef = useRef(new Map()); // id -> { value, onSelect, disabled }
14
17
  const register = useCallback((id, meta) => {
15
18
  itemsRef.current.set(id, meta);
@@ -55,12 +58,18 @@ export function Command({ className, children, ...props }) {
55
58
  }, [selectedId]);
56
59
  const isVisible = useCallback((id) => visibleIds().includes(id), [visibleIds]);
57
60
  const visibleCount = visibleIds().length;
58
- const value = useMemo(() => ({ filter, setFilter, selectedId, setSelectedId, register, unregister, isVisible, visibleCount, move, triggerSelected }), [filter, selectedId, register, unregister, isVisible, visibleCount, move, triggerSelected]);
59
- return (_jsx(CommandContext.Provider, { value: value, children: _jsx("div", { role: "combobox", "aria-expanded": "true", className: className, ...props, children: children }) }));
61
+ const value = useMemo(() => ({ filter, setFilter, selectedId, setSelectedId, listboxId, register, unregister, isVisible, visibleCount, move, triggerSelected }), [filter, selectedId, listboxId, register, unregister, isVisible, visibleCount, move, triggerSelected]);
62
+ return (_jsx(CommandContext.Provider, { value: value, children: _jsx("div", { className: className, ...props, children: children }) }));
60
63
  }
61
64
  export function CommandInput({ className, placeholder, value: controlledValue, onValueChange, ...props }) {
62
- const { filter, setFilter, move, triggerSelected } = useCommand();
65
+ const { filter, setFilter, move, triggerSelected, selectedId, listboxId, visibleCount } = useCommand();
63
66
  const value = controlledValue ?? filter;
67
+ // The listbox is considered "shown"/expanded whenever it has visible options.
68
+ const isExpanded = visibleCount > 0;
69
+ // aria-activedescendant points at the DOM id of the active option (selectedId
70
+ // is rendered verbatim as each CommandItem's id). Undefined when nothing is
71
+ // active, so screen readers don't reference a missing element.
72
+ const activeDescendant = isExpanded && selectedId ? selectedId : undefined;
64
73
  const handleChange = (e) => {
65
74
  const v = e.target.value;
66
75
  setFilter(v);
@@ -80,10 +89,16 @@ export function CommandInput({ className, placeholder, value: controlledValue, o
80
89
  triggerSelected();
81
90
  }
82
91
  };
83
- return (_jsx("input", { role: "searchbox", autoComplete: "off", autoCorrect: "off", spellCheck: "false", value: value, onChange: handleChange, onKeyDown: handleKeyDown, placeholder: placeholder, className: className, ...props }));
92
+ return (
93
+ // The input is the combobox. Real DOM focus stays here during arrow
94
+ // navigation; only aria-activedescendant moves so screen readers announce
95
+ // the active option (WAI-ARIA combobox + activedescendant pattern).
96
+ _jsx("input", { role: "combobox", "aria-autocomplete": "list", "aria-expanded": isExpanded, "aria-controls": listboxId, "aria-activedescendant": activeDescendant, autoComplete: "off", autoCorrect: "off", spellCheck: "false", value: value, onChange: handleChange, onKeyDown: handleKeyDown, placeholder: placeholder, className: className, ...props }));
84
97
  }
85
98
  export function CommandList({ className, children, ...props }) {
86
- return (_jsx("div", { role: "listbox", className: className, ...props, children: children }));
99
+ const { listboxId } = useCommand();
100
+ // id matches the input's aria-controls so the combobox owns this listbox.
101
+ return (_jsx("div", { role: "listbox", id: listboxId, className: className, ...props, children: children }));
87
102
  }
88
103
  export function CommandEmpty({ className, children, ...props }) {
89
104
  const { visibleCount } = useCommand();
@@ -95,23 +110,34 @@ export function CommandGroup({ className, heading, children, ...props }) {
95
110
  return (_jsxs("div", { role: "group", className: className, ...props, children: [heading && (_jsx("div", { "cmdk-group-heading": "", role: "presentation", children: heading })), children] }));
96
111
  }
97
112
  export function CommandItem({ className, value, onSelect, disabled = false, children, ...props }) {
113
+ // This id is both the value tracked in selectedId and the option's DOM id,
114
+ // which is what the input's aria-activedescendant references.
98
115
  const id = useId();
99
116
  const { register, unregister, selectedId, setSelectedId, isVisible } = useCommand();
117
+ const optionRef = useRef(null);
100
118
  // Resolve a usable value string — fall back to children text if no value prop
101
119
  const resolvedValue = value ?? (typeof children === 'string' ? children : id);
102
120
  useEffect(() => {
103
121
  register(id, { value: String(resolvedValue), onSelect, disabled });
104
122
  return () => unregister(id);
105
123
  }, [id, resolvedValue, onSelect, disabled, register, unregister]);
124
+ const isSelected = selectedId === id;
125
+ // Focus stays on the input under the activedescendant model, so scroll the
126
+ // active option into view manually when it becomes active.
127
+ useEffect(() => {
128
+ if (isSelected)
129
+ optionRef.current?.scrollIntoView({ block: 'nearest' });
130
+ }, [isSelected]);
106
131
  if (!isVisible(id))
107
132
  return null;
108
- const isSelected = selectedId === id;
109
133
  const handleClick = () => {
110
134
  if (disabled)
111
135
  return;
112
136
  onSelect?.(String(resolvedValue));
113
137
  };
114
- return (_jsx("div", { role: "option", "aria-selected": isSelected, "data-selected": isSelected ? 'true' : undefined, "data-disabled": disabled ? 'true' : undefined, onMouseEnter: () => !disabled && setSelectedId(id), onClick: handleClick, className: className, ...props, children: children }));
138
+ return (_jsx("div", {
139
+ // Stable DOM id targeted by aria-activedescendant when this option is active.
140
+ id: id, ref: optionRef, role: "option", "aria-selected": isSelected, "data-selected": isSelected ? 'true' : undefined, "data-disabled": disabled ? 'true' : undefined, onMouseEnter: () => !disabled && setSelectedId(id), onClick: handleClick, className: className, ...props, children: children }));
115
141
  }
116
142
  export function CommandSeparator({ className, ...props }) {
117
143
  return _jsx("div", { role: "separator", className: className, ...props });
@@ -1,6 +1 @@
1
- import { Accordion as AccordionPrimitive } from "../lib/base-ui/accordion.js";
2
- declare function Accordion({ className, ...props }: AccordionPrimitive.Root.Props): import("react").JSX.Element;
3
- declare function AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props): import("react").JSX.Element;
4
- declare function AccordionTrigger({ className, children, ...props }: AccordionPrimitive.Trigger.Props): import("react").JSX.Element;
5
- declare function AccordionContent({ className, children, ...props }: AccordionPrimitive.Panel.Props): import("react").JSX.Element;
6
- export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
1
+ export * from "../../ui/accordion.js";
@@ -1,17 +1,3 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Accordion as AccordionPrimitive } from "../lib/base-ui/accordion.js";
3
- import { cn } from "../lib/utils.js";
4
- import { ChevronDownIcon, ChevronUpIcon } from "../../icons/index.js";
5
- function Accordion({ className, ...props }) {
6
- return (_jsx(AccordionPrimitive.Root, { "data-slot": "accordion", className: cn("flex w-full flex-col", className), ...props }));
7
- }
8
- function AccordionItem({ className, ...props }) {
9
- return (_jsx(AccordionPrimitive.Item, { "data-slot": "accordion-item", className: cn("not-last:border-b", className), ...props }));
10
- }
11
- function AccordionTrigger({ className, children, ...props }) {
12
- return (_jsx(AccordionPrimitive.Header, { className: "flex", children: _jsxs(AccordionPrimitive.Trigger, { "data-slot": "accordion-trigger", className: cn("cursor-pointer group/accordion-trigger relative flex flex-1 items-start justify-between rounded-md border border-transparent py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring aria-disabled:pointer-events-none aria-disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground", className), ...props, children: [children, _jsx(ChevronDownIcon, {}), _jsx(ChevronUpIcon, {})] }) }));
13
- }
14
- function AccordionContent({ className, children, ...props }) {
15
- return (_jsx(AccordionPrimitive.Panel, { "data-slot": "accordion-content", className: "overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up", ...props, children: _jsx("div", { className: cn("h-(--accordion-panel-height) pt-0 pb-4 data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4", className), children: children }) }));
16
- }
17
- export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
1
+ // Linker shim: this path now re-exports the self-contained component from
2
+ // `ui/accordion`. The legacy base-ui implementation was removed in 4.0.0.
3
+ export * from "../../ui/accordion.js";
@@ -1,18 +1 @@
1
- import * as React from "react";
2
- import { AlertDialog as AlertDialogPrimitive } from "../lib/base-ui/alert-dialog.js";
3
- import { Button } from "./button.js";
4
- declare function AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props): React.JSX.Element;
5
- declare function AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props): React.JSX.Element;
6
- declare function AlertDialogPortal({ ...props }: AlertDialogPrimitive.Portal.Props): React.JSX.Element;
7
- declare function AlertDialogOverlay({ className, ...props }: AlertDialogPrimitive.Backdrop.Props): React.JSX.Element;
8
- declare function AlertDialogContent({ className, size, ...props }: AlertDialogPrimitive.Popup.Props & {
9
- size?: "default" | "sm";
10
- }): React.JSX.Element;
11
- declare function AlertDialogHeader({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
12
- declare function AlertDialogFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
13
- declare function AlertDialogMedia({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
14
- declare function AlertDialogTitle({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Title>): React.JSX.Element;
15
- declare function AlertDialogDescription({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Description>): React.JSX.Element;
16
- declare function AlertDialogAction({ className, ...props }: React.ComponentProps<typeof Button>): React.JSX.Element;
17
- declare function AlertDialogCancel({ className, variant, size, ...props }: AlertDialogPrimitive.Close.Props & Pick<React.ComponentProps<typeof Button>, "variant" | "size">): React.JSX.Element;
18
- export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, };
1
+ export * from "../../ui/alert-dialog.js";
@@ -1,43 +1,3 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import * as React from "react";
4
- import { AlertDialog as AlertDialogPrimitive } from "../lib/base-ui/alert-dialog.js";
5
- import { cn } from "../lib/utils.js";
6
- import { Button } from "./button.js";
7
- function AlertDialog({ ...props }) {
8
- return _jsx(AlertDialogPrimitive.Root, { "data-slot": "alert-dialog", ...props });
9
- }
10
- function AlertDialogTrigger({ ...props }) {
11
- return (_jsx(AlertDialogPrimitive.Trigger, { "data-slot": "alert-dialog-trigger", className: "cursor-pointer", ...props }));
12
- }
13
- function AlertDialogPortal({ ...props }) {
14
- return (_jsx(AlertDialogPrimitive.Portal, { "data-slot": "alert-dialog-portal", ...props }));
15
- }
16
- function AlertDialogOverlay({ className, ...props }) {
17
- return (_jsx(AlertDialogPrimitive.Backdrop, { "data-slot": "alert-dialog-overlay", className: cn("fixed inset-0 isolate z-50 bg-black/10 duration-100 supports-backdrop-filter:backdrop-blur-xs data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0", className), ...props }));
18
- }
19
- function AlertDialogContent({ className, size = "default", ...props }) {
20
- return (_jsxs(AlertDialogPortal, { children: [_jsx(AlertDialogOverlay, {}), _jsx(AlertDialogPrimitive.Popup, { "data-slot": "alert-dialog-content", "data-size": size, className: cn("group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full -translate-x-1/2 -translate-y-1/2 gap-6 rounded-xl bg-background p-6 text-foreground ring-1 ring-foreground/10 duration-100 outline-none data-[size=default]:max-w-xs data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-lg data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className), ...props })] }));
21
- }
22
- function AlertDialogHeader({ className, ...props }) {
23
- return (_jsx("div", { "data-slot": "alert-dialog-header", className: cn("grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]", className), ...props }));
24
- }
25
- function AlertDialogFooter({ className, ...props }) {
26
- return (_jsx("div", { "data-slot": "alert-dialog-footer", className: cn("flex flex-col-reverse gap-2 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), ...props }));
27
- }
28
- function AlertDialogMedia({ className, ...props }) {
29
- return (_jsx("div", { "data-slot": "alert-dialog-media", className: cn("mb-2 inline-flex size-16 items-center justify-center rounded-md bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8", className), ...props }));
30
- }
31
- function AlertDialogTitle({ className, ...props }) {
32
- return (_jsx(AlertDialogPrimitive.Title, { "data-slot": "alert-dialog-title", className: cn("text-lg font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2", className), ...props }));
33
- }
34
- function AlertDialogDescription({ className, ...props }) {
35
- return (_jsx(AlertDialogPrimitive.Description, { "data-slot": "alert-dialog-description", className: cn("text-sm text-balance text-muted-foreground md:text-pretty *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground", className), ...props }));
36
- }
37
- function AlertDialogAction({ className, ...props }) {
38
- return (_jsx(Button, { "data-slot": "alert-dialog-action", className: cn(className), ...props }));
39
- }
40
- function AlertDialogCancel({ className, variant = "outline", size = "default", ...props }) {
41
- return (_jsx(AlertDialogPrimitive.Close, { "data-slot": "alert-dialog-cancel", className: cn(className), render: _jsx(Button, { variant: variant, size: size }), ...props }));
42
- }
43
- export { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, };
1
+ // Linker shim: this path now re-exports the self-contained component from
2
+ // `ui/alert-dialog`. The legacy base-ui implementation was removed in 4.0.0.
3
+ export * from "../../ui/alert-dialog.js";
@@ -1,13 +1 @@
1
- import * as React from "react";
2
- import { type VariantProps } from "../lib/cva.js";
3
- declare const alertVariants: (props?: import("../lib/cva.js").CvaProps<{
4
- variant: {
5
- default: string;
6
- destructive: string;
7
- };
8
- }> | undefined) => string;
9
- declare function Alert({ className, variant, ...props }: React.ComponentProps<"div"> & VariantProps<typeof alertVariants>): React.JSX.Element;
10
- declare function AlertTitle({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
11
- declare function AlertDescription({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
12
- declare function AlertAction({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
13
- export { Alert, AlertTitle, AlertDescription, AlertAction };
1
+ export * from "../../ui/alert.js";
@@ -1,28 +1,3 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import * as React from "react";
3
- import { cva } from "../lib/cva.js";
4
- import { cn } from "../lib/utils.js";
5
- const alertVariants = cva("group/alert relative grid w-full gap-0.5 rounded-lg border px-4 py-3 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4", {
6
- variants: {
7
- variant: {
8
- default: "bg-card text-card-foreground",
9
- destructive: "bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current",
10
- },
11
- },
12
- defaultVariants: {
13
- variant: "default",
14
- },
15
- });
16
- function Alert({ className, variant, ...props }) {
17
- return (_jsx("div", { "data-slot": "alert", role: "alert", className: cn(alertVariants({ variant }), className), ...props }));
18
- }
19
- function AlertTitle({ className, ...props }) {
20
- return (_jsx("div", { "data-slot": "alert-title", className: cn("font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground", className), ...props }));
21
- }
22
- function AlertDescription({ className, ...props }) {
23
- return (_jsx("div", { "data-slot": "alert-description", className: cn("text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4", className), ...props }));
24
- }
25
- function AlertAction({ className, ...props }) {
26
- return (_jsx("div", { "data-slot": "alert-action", className: cn("absolute top-2.5 right-3", className), ...props }));
27
- }
28
- export { Alert, AlertTitle, AlertDescription, AlertAction };
1
+ // Linker shim: this path now re-exports the self-contained component from
2
+ // `ui/alert`. The legacy base-ui implementation was removed in 4.0.0.
3
+ export * from "../../ui/alert.js";
@@ -1,4 +1 @@
1
- declare function AspectRatio({ ratio, className, ...props }: React.ComponentProps<"div"> & {
2
- ratio: number;
3
- }): import("react").JSX.Element;
4
- export { AspectRatio };
1
+ export * from "../../ui/aspect-ratio.js";
@@ -1,8 +1,3 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { cn } from "../lib/utils.js";
3
- function AspectRatio({ ratio, className, ...props }) {
4
- return (_jsx("div", { "data-slot": "aspect-ratio", style: {
5
- "--ratio": ratio,
6
- }, className: cn("relative aspect-(--ratio)", className), ...props }));
7
- }
8
- export { AspectRatio };
1
+ // Linker shim: this path now re-exports the self-contained component from
2
+ // `ui/aspect-ratio`. The legacy base-ui implementation was removed in 4.0.0.
3
+ export * from "../../ui/aspect-ratio.js";
@@ -1,11 +1 @@
1
- import * as React from "react";
2
- import { Avatar as AvatarPrimitive } from "../lib/base-ui/avatar.js";
3
- declare function Avatar({ className, size, ...props }: AvatarPrimitive.Root.Props & {
4
- size?: "default" | "sm" | "lg";
5
- }): React.JSX.Element;
6
- declare function AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props): React.JSX.Element;
7
- declare function AvatarFallback({ className, ...props }: AvatarPrimitive.Fallback.Props): React.JSX.Element;
8
- declare function AvatarBadge({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
9
- declare function AvatarGroup({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
10
- declare function AvatarGroupCount({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
11
- export { Avatar, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge, };
1
+ export * from "../../ui/avatar.js";
@@ -1,24 +1,3 @@
1
- "use client";
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- import * as React from "react";
4
- import { Avatar as AvatarPrimitive } from "../lib/base-ui/avatar.js";
5
- import { cn } from "../lib/utils.js";
6
- function Avatar({ className, size = "default", ...props }) {
7
- return (_jsx(AvatarPrimitive.Root, { "data-slot": "avatar", "data-size": size, className: cn("group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten", className), ...props }));
8
- }
9
- function AvatarImage({ className, ...props }) {
10
- return (_jsx(AvatarPrimitive.Image, { "data-slot": "avatar-image", className: cn("aspect-square size-full rounded-full object-cover", className), ...props }));
11
- }
12
- function AvatarFallback({ className, ...props }) {
13
- return (_jsx(AvatarPrimitive.Fallback, { "data-slot": "avatar-fallback", className: cn("flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs", className), ...props }));
14
- }
15
- function AvatarBadge({ className, ...props }) {
16
- return (_jsx("span", { "data-slot": "avatar-badge", className: cn("absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none", "group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden", "group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2", "group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2", className), ...props }));
17
- }
18
- function AvatarGroup({ className, ...props }) {
19
- return (_jsx("div", { "data-slot": "avatar-group", className: cn("group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background", className), ...props }));
20
- }
21
- function AvatarGroupCount({ className, ...props }) {
22
- return (_jsx("div", { "data-slot": "avatar-group-count", className: cn("relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3", className), ...props }));
23
- }
24
- export { Avatar, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge, };
1
+ // Linker shim: this path now re-exports the self-contained component from
2
+ // `ui/avatar`. The legacy base-ui implementation was removed in 4.0.0.
3
+ export * from "../../ui/avatar.js";
@@ -1,14 +1 @@
1
- import { useRender } from "../lib/base-ui/use-render.js";
2
- import { type VariantProps } from "../lib/cva.js";
3
- declare const badgeVariants: (props?: import("../lib/cva.js").CvaProps<{
4
- variant: {
5
- default: string;
6
- secondary: string;
7
- destructive: string;
8
- outline: string;
9
- ghost: string;
10
- link: string;
11
- };
12
- }> | undefined) => string;
13
- declare function Badge({ className, variant, render, ...props }: useRender.ComponentProps<"span"> & VariantProps<typeof badgeVariants>): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
14
- export { Badge, badgeVariants };
1
+ export * from "../../ui/badge.js";
@@ -1,33 +1,3 @@
1
- import { mergeProps } from "../lib/base-ui/merge-props.js";
2
- import { useRender } from "../lib/base-ui/use-render.js";
3
- import { cva } from "../lib/cva.js";
4
- import { cn } from "../lib/utils.js";
5
- const badgeVariants = cva("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!", {
6
- variants: {
7
- variant: {
8
- default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80",
9
- secondary: "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",
10
- destructive: "bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",
11
- outline: "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",
12
- ghost: "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",
13
- link: "text-primary underline-offset-4 hover:underline",
14
- },
15
- },
16
- defaultVariants: {
17
- variant: "default",
18
- },
19
- });
20
- function Badge({ className, variant = "default", render, ...props }) {
21
- return useRender({
22
- defaultTagName: "span",
23
- props: mergeProps({
24
- className: cn(badgeVariants({ variant }), className),
25
- }, props),
26
- render,
27
- state: {
28
- slot: "badge",
29
- variant,
30
- },
31
- });
32
- }
33
- export { Badge, badgeVariants };
1
+ // Linker shim: this path now re-exports the self-contained component from
2
+ // `ui/badge`. The legacy base-ui implementation was removed in 4.0.0.
3
+ export * from "../../ui/badge.js";
@@ -1,10 +1 @@
1
- import * as React from "react";
2
- import { useRender } from "../lib/base-ui/use-render.js";
3
- declare function Breadcrumb({ className, ...props }: React.ComponentProps<"nav">): React.JSX.Element;
4
- declare function BreadcrumbList({ className, ...props }: React.ComponentProps<"ol">): React.JSX.Element;
5
- declare function BreadcrumbItem({ className, ...props }: React.ComponentProps<"li">): React.JSX.Element;
6
- declare function BreadcrumbLink({ className, render, ...props }: useRender.ComponentProps<"a">): React.ReactElement<unknown, string | React.JSXElementConstructor<any>>;
7
- declare function BreadcrumbPage({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
8
- declare function BreadcrumbSeparator({ children, className, ...props }: React.ComponentProps<"li">): React.JSX.Element;
9
- declare function BreadcrumbEllipsis({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
10
- export { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, BreadcrumbEllipsis, };
1
+ export * from "../../ui/breadcrumb.js";
@@ -1,37 +1,3 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import * as React from "react";
3
- import { mergeProps } from "../lib/base-ui/merge-props.js";
4
- import { useRender } from "../lib/base-ui/use-render.js";
5
- import { cn } from "../lib/utils.js";
6
- import { ChevronRightIcon, MoreHorizontalIcon } from "../../icons/index.js";
7
- function Breadcrumb({ className, ...props }) {
8
- return (_jsx("nav", { "aria-label": "breadcrumb", "data-slot": "breadcrumb", className: cn(className), ...props }));
9
- }
10
- function BreadcrumbList({ className, ...props }) {
11
- return (_jsx("ol", { "data-slot": "breadcrumb-list", className: cn("flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground sm:gap-2.5", className), ...props }));
12
- }
13
- function BreadcrumbItem({ className, ...props }) {
14
- return (_jsx("li", { "data-slot": "breadcrumb-item", className: cn("inline-flex items-center gap-1.5", className), ...props }));
15
- }
16
- function BreadcrumbLink({ className, render, ...props }) {
17
- return useRender({
18
- defaultTagName: "a",
19
- props: mergeProps({
20
- className: cn("cursor-pointer transition-colors hover:text-foreground", className),
21
- }, props),
22
- render,
23
- state: {
24
- slot: "breadcrumb-link",
25
- },
26
- });
27
- }
28
- function BreadcrumbPage({ className, ...props }) {
29
- return (_jsx("span", { "data-slot": "breadcrumb-page", role: "link", "aria-disabled": "true", "aria-current": "page", className: cn("font-normal text-foreground", className), ...props }));
30
- }
31
- function BreadcrumbSeparator({ children, className, ...props }) {
32
- return (_jsx("li", { "data-slot": "breadcrumb-separator", role: "presentation", "aria-hidden": "true", className: cn("[&>svg]:size-3.5", className), ...props, children: children ?? (_jsx(ChevronRightIcon, {})) }));
33
- }
34
- function BreadcrumbEllipsis({ className, ...props }) {
35
- return (_jsxs("span", { "data-slot": "breadcrumb-ellipsis", role: "presentation", "aria-hidden": "true", className: cn("flex size-5 items-center justify-center [&>svg]:size-4", className), ...props, children: [_jsx(MoreHorizontalIcon, {}), _jsx("span", { className: "sr-only", children: "More" })] }));
36
- }
37
- export { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, BreadcrumbEllipsis, };
1
+ // Linker shim: this path now re-exports the self-contained component from
2
+ // `ui/breadcrumb`. The legacy base-ui implementation was removed in 4.0.0.
3
+ export * from "../../ui/breadcrumb.js";