@gv-tech/ui-web 2.22.2 → 2.23.1

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 (468) hide show
  1. package/dist/accordion-Dd8Hrexd.mjs +244 -0
  2. package/dist/accordion-DdSOiVyo.js +1 -0
  3. package/dist/accordion.cjs +1 -1
  4. package/dist/accordion.d.ts +5 -7
  5. package/dist/accordion.d.ts.map +1 -1
  6. package/dist/accordion.mjs +1 -2
  7. package/dist/alert-dialog-B7zX3gJX.js +7 -0
  8. package/dist/alert-dialog-BQoG5g_w.mjs +213 -0
  9. package/dist/alert-dialog.cjs +1 -1
  10. package/dist/alert-dialog.d.ts +17 -21
  11. package/dist/alert-dialog.d.ts.map +1 -1
  12. package/dist/alert-dialog.mjs +2 -4
  13. package/dist/alert.cjs +1 -1
  14. package/dist/alert.d.ts +8 -8
  15. package/dist/alert.d.ts.map +1 -1
  16. package/dist/alert.mjs +37 -29
  17. package/dist/{aspect-ratio-CFWobEnT.mjs → aspect-ratio-DnChDaBi.mjs} +10 -4
  18. package/dist/{aspect-ratio-D9dApiWv.js → aspect-ratio-QD1ZXP2B.js} +1 -1
  19. package/dist/aspect-ratio.cjs +1 -1
  20. package/dist/aspect-ratio.d.ts +2 -4
  21. package/dist/aspect-ratio.d.ts.map +1 -1
  22. package/dist/aspect-ratio.mjs +1 -1
  23. package/dist/avatar-C4onD8-4.mjs +127 -0
  24. package/dist/avatar-ki_M47qG.js +1 -0
  25. package/dist/avatar.cjs +1 -1
  26. package/dist/avatar.d.ts +10 -7
  27. package/dist/avatar.d.ts.map +1 -1
  28. package/dist/avatar.mjs +2 -3
  29. package/dist/badge.cjs +1 -1
  30. package/dist/badge.d.ts +4 -5
  31. package/dist/badge.d.ts.map +1 -1
  32. package/dist/badge.mjs +17 -13
  33. package/dist/breadcrumb.cjs +1 -1
  34. package/dist/breadcrumb.d.ts +9 -17
  35. package/dist/breadcrumb.d.ts.map +1 -1
  36. package/dist/breadcrumb.mjs +67 -58
  37. package/dist/button-group.cjs +1 -0
  38. package/dist/button-group.d.ts +11 -0
  39. package/dist/button-group.d.ts.map +1 -0
  40. package/dist/button-group.mjs +39 -0
  41. package/dist/button.cjs +1 -1
  42. package/dist/button.d.ts +3 -5
  43. package/dist/button.d.ts.map +1 -1
  44. package/dist/button.mjs +33 -26
  45. package/dist/calendar-D9sapvfY.js +1 -0
  46. package/dist/{calendar-DtFx4qdT.mjs → calendar-Dg6VGycy.mjs} +631 -625
  47. package/dist/calendar.cjs +1 -1
  48. package/dist/calendar.d.ts +5 -5
  49. package/dist/calendar.d.ts.map +1 -1
  50. package/dist/calendar.mjs +1 -2
  51. package/dist/card.cjs +1 -1
  52. package/dist/card.d.ts +10 -10
  53. package/dist/card.d.ts.map +1 -1
  54. package/dist/card.mjs +53 -40
  55. package/dist/carousel-6oFHLN7R.js +1 -0
  56. package/dist/{carousel-PQJ97GjQ.mjs → carousel-DbDoNdqJ.mjs} +54 -59
  57. package/dist/carousel.cjs +1 -1
  58. package/dist/carousel.d.ts +18 -13
  59. package/dist/carousel.d.ts.map +1 -1
  60. package/dist/carousel.mjs +2 -4
  61. package/dist/chart.cjs +3 -3
  62. package/dist/chart.d.ts +35 -7
  63. package/dist/chart.d.ts.map +1 -1
  64. package/dist/chart.mjs +64 -71
  65. package/dist/checkbox-BLgY82mB.js +1 -0
  66. package/dist/{checkbox-BOmSuATv.mjs → checkbox-Bts_zfqd.mjs} +32 -29
  67. package/dist/checkbox.cjs +1 -1
  68. package/dist/checkbox.d.ts +2 -5
  69. package/dist/checkbox.d.ts.map +1 -1
  70. package/dist/checkbox.mjs +1 -2
  71. package/dist/collapsible.cjs +1 -1
  72. package/dist/collapsible.d.ts +4 -6
  73. package/dist/collapsible.d.ts.map +1 -1
  74. package/dist/collapsible.mjs +21 -3
  75. package/dist/combobox-6qNx9Wbb.js +4 -0
  76. package/dist/combobox-yDMqxM_J.mjs +5522 -0
  77. package/dist/combobox.cjs +1 -0
  78. package/dist/combobox.d.ts +21 -0
  79. package/dist/combobox.d.ts.map +1 -0
  80. package/dist/combobox.mjs +4 -0
  81. package/dist/command-C6wJ5giF.mjs +576 -0
  82. package/dist/command-DCrPL1iW.js +1 -0
  83. package/dist/command.cjs +1 -1
  84. package/dist/command.d.ts +16 -80
  85. package/dist/command.d.ts.map +1 -1
  86. package/dist/command.mjs +1 -2
  87. package/dist/context-menu-CydUpD4W.mjs +349 -0
  88. package/dist/context-menu-DQ7XuuG5.js +1 -0
  89. package/dist/context-menu.cjs +1 -1
  90. package/dist/context-menu.d.ts +29 -21
  91. package/dist/context-menu.d.ts.map +1 -1
  92. package/dist/context-menu.mjs +1 -2
  93. package/dist/dialog.cjs +1 -1
  94. package/dist/dialog.d.ts +15 -17
  95. package/dist/dialog.d.ts.map +1 -1
  96. package/dist/dialog.mjs +89 -43
  97. package/dist/direction.cjs +1 -0
  98. package/dist/direction.d.ts +7 -0
  99. package/dist/direction.d.ts.map +1 -0
  100. package/dist/direction.mjs +15 -0
  101. package/dist/dist-1C8JOpVg.js +1 -0
  102. package/dist/{dist-CTaBktQl.mjs → dist-B1OcuinL.mjs} +93 -92
  103. package/dist/dist-BGZDG175.mjs +199 -0
  104. package/dist/dist-BPBwSSyk.mjs +8 -0
  105. package/dist/{dist-BTlmz3JV.js → dist-BPX1UGAz2.js} +1 -1
  106. package/dist/dist-BRsDdVlJ.js +1 -0
  107. package/dist/{dist-_LAgxsbh.mjs → dist-BWwCr-xN.mjs} +10 -9
  108. package/dist/dist-BYdcKuDi.mjs +16 -0
  109. package/dist/{dist-DCKyUINZ.mjs → dist-BlB11V_z.mjs} +1 -1
  110. package/dist/dist-CCXBcfM3.js +1 -0
  111. package/dist/{dist--EFQaGUD.mjs → dist-CDU9vno-.mjs} +4 -4
  112. package/dist/dist-CJolxugc.js +1 -0
  113. package/dist/dist-CQhWBhaI.mjs +91 -0
  114. package/dist/dist-CRLbUj9C.js +1 -0
  115. package/dist/dist-CWElW7UD.js +1 -0
  116. package/dist/{dist-NIAlh3KC.js → dist-CXbzwSnE.js} +1 -1
  117. package/dist/{dist-C5EZ0AD6.mjs → dist-CYj6O95k.mjs} +42 -41
  118. package/dist/{dist-Bjlzl0jN.mjs → dist-Cacc4QIh.mjs} +13 -10
  119. package/dist/dist-ChuP-5Gb.js +1 -0
  120. package/dist/dist-CiM892Rg.js +1 -0
  121. package/dist/{dist-Doq7FY_P.js → dist-CuMQq0hV.js} +1 -1
  122. package/dist/dist-DMnXk8Uo.js +1 -0
  123. package/dist/{dist-CRmJFaEL.mjs → dist-DPBTfUqI.mjs} +18 -17
  124. package/dist/dist-DR0lXVFG.js +1 -0
  125. package/dist/dist-Da7BU5sd.js +5 -0
  126. package/dist/{dist-D_tuvB-W.mjs → dist-Dz3LbuDd.mjs} +8 -9
  127. package/dist/{dist-9gQKRtL7.mjs → dist-GhACpuJb2.mjs} +1 -1
  128. package/dist/dist-o4zlRoDG.js +1 -0
  129. package/dist/{dist-DdVp13bp.mjs → dist-rGeQfsgN.mjs} +1 -1
  130. package/dist/{dist-BQOrag93.mjs → dist-tvb2Wafb.mjs} +22 -21
  131. package/dist/drawer.cjs +1 -1
  132. package/dist/drawer.d.ts +10 -21
  133. package/dist/drawer.d.ts.map +1 -1
  134. package/dist/drawer.mjs +74 -45
  135. package/dist/dropdown-menu-BoJvZ3Fj.js +1 -0
  136. package/dist/dropdown-menu-CriaO1_i.mjs +347 -0
  137. package/dist/dropdown-menu.cjs +1 -1
  138. package/dist/dropdown-menu.d.ts +27 -21
  139. package/dist/dropdown-menu.d.ts.map +1 -1
  140. package/dist/dropdown-menu.mjs +1 -1
  141. package/dist/empty.cjs +1 -0
  142. package/dist/empty.d.ts +13 -0
  143. package/dist/empty.d.ts.map +1 -0
  144. package/dist/empty.mjs +60 -0
  145. package/dist/{es2015-DkZq_IIO.mjs → es2015-BhmbVcui.mjs} +2 -2
  146. package/dist/{es2015-Ca60p53M.js → es2015-D22cM8Q_.js} +1 -1
  147. package/dist/field.cjs +1 -0
  148. package/dist/field.d.ts +18 -0
  149. package/dist/field.d.ts.map +1 -0
  150. package/dist/field.mjs +109 -0
  151. package/dist/floating-ui.react-dom-DgS_bqyY.mjs +1089 -0
  152. package/dist/floating-ui.react-dom-DpCJEf_x.js +1 -0
  153. package/dist/form.cjs +1 -1
  154. package/dist/form.mjs +8 -8
  155. package/dist/hooks/use-mobile.d.ts +2 -0
  156. package/dist/hooks/use-mobile.d.ts.map +1 -0
  157. package/dist/hooks/use-theme.d.ts +16 -0
  158. package/dist/hooks/use-theme.d.ts.map +1 -1
  159. package/dist/{hover-card-BOk3-K0k.mjs → hover-card-CJ-ibpbC.mjs} +53 -33
  160. package/dist/hover-card-CK5SjVLL.js +1 -0
  161. package/dist/hover-card.cjs +1 -1
  162. package/dist/hover-card.d.ts +4 -6
  163. package/dist/hover-card.d.ts.map +1 -1
  164. package/dist/hover-card.mjs +1 -2
  165. package/dist/index.cjs +1 -1
  166. package/dist/index.d.ts +14 -43
  167. package/dist/index.d.ts.map +1 -1
  168. package/dist/index.mjs +66 -54
  169. package/dist/input-group.cjs +1 -0
  170. package/dist/input-group.d.ts +18 -0
  171. package/dist/input-group.d.ts.map +1 -0
  172. package/dist/input-group.mjs +78 -0
  173. package/dist/input-otp-BH_9dVhh.mjs +391 -0
  174. package/dist/input-otp-BibboKMt.js +20 -0
  175. package/dist/input-otp.cjs +1 -0
  176. package/dist/input-otp.d.ts +9 -0
  177. package/dist/input-otp.d.ts.map +1 -0
  178. package/dist/input-otp.mjs +4 -0
  179. package/dist/input.cjs +1 -1
  180. package/dist/input.d.ts +1 -4
  181. package/dist/input.d.ts.map +1 -1
  182. package/dist/input.mjs +11 -11
  183. package/dist/item.cjs +1 -0
  184. package/dist/item.d.ts +25 -0
  185. package/dist/item.d.ts.map +1 -0
  186. package/dist/item.mjs +118 -0
  187. package/dist/kbd.cjs +1 -0
  188. package/dist/kbd.d.ts +5 -0
  189. package/dist/kbd.d.ts.map +1 -0
  190. package/dist/kbd.mjs +20 -0
  191. package/dist/label-BXMSoyyu.js +1 -0
  192. package/dist/label-C8GNfPU0.mjs +25 -0
  193. package/dist/label.cjs +1 -1
  194. package/dist/label.d.ts +2 -5
  195. package/dist/label.d.ts.map +1 -1
  196. package/dist/label.mjs +1 -2
  197. package/dist/menubar-BcyqIJgy.mjs +441 -0
  198. package/dist/menubar-DPxokWFI.js +1 -0
  199. package/dist/menubar.cjs +1 -1
  200. package/dist/menubar.d.ts +25 -19
  201. package/dist/menubar.d.ts.map +1 -1
  202. package/dist/menubar.mjs +1 -1
  203. package/dist/native-select.cjs +1 -0
  204. package/dist/native-select.d.ts +8 -0
  205. package/dist/native-select.d.ts.map +1 -0
  206. package/dist/native-select.mjs +39 -0
  207. package/dist/navigation-menu-2yE2MUu-.js +1 -0
  208. package/dist/navigation-menu-N8gkxEXE.mjs +628 -0
  209. package/dist/navigation-menu.cjs +1 -1
  210. package/dist/navigation-menu.d.ts +11 -11
  211. package/dist/navigation-menu.d.ts.map +1 -1
  212. package/dist/navigation-menu.mjs +1 -2
  213. package/dist/pagination.cjs +1 -1
  214. package/dist/pagination.d.ts +13 -26
  215. package/dist/pagination.d.ts.map +1 -1
  216. package/dist/pagination.mjs +76 -59
  217. package/dist/popover-D1AO-E8p.js +1 -0
  218. package/dist/popover-wQACF3ut.mjs +245 -0
  219. package/dist/popover.cjs +1 -1
  220. package/dist/popover.d.ts +9 -8
  221. package/dist/popover.d.ts.map +1 -1
  222. package/dist/popover.mjs +2 -3
  223. package/dist/{progress-30ehxjKg.mjs → progress-DPWSEWa5.mjs} +19 -14
  224. package/dist/{progress-BqWHea4f.js → progress-ShXZwOfj.js} +2 -2
  225. package/dist/progress.cjs +1 -1
  226. package/dist/progress.d.ts +2 -4
  227. package/dist/progress.d.ts.map +1 -1
  228. package/dist/progress.mjs +1 -1
  229. package/dist/radio-group-CQbZCQmj.mjs +199 -0
  230. package/dist/radio-group-DAEi5vW_.js +1 -0
  231. package/dist/radio-group.cjs +1 -1
  232. package/dist/radio-group.d.ts +3 -8
  233. package/dist/radio-group.d.ts.map +1 -1
  234. package/dist/radio-group.mjs +1 -2
  235. package/dist/resizable-Cv-mKMKP.js +1 -0
  236. package/dist/{resizable-DhOcAmNX.mjs → resizable-DJSE3e5L.mjs} +310 -282
  237. package/dist/resizable.cjs +1 -1
  238. package/dist/resizable.d.ts +6 -7
  239. package/dist/resizable.d.ts.map +1 -1
  240. package/dist/resizable.mjs +1 -1
  241. package/dist/{scroll-area-DJcPs0_v.mjs → scroll-area-8QcqkHnC.mjs} +69 -58
  242. package/dist/scroll-area-Cqqinhxf.js +1 -0
  243. package/dist/scroll-area.cjs +1 -1
  244. package/dist/scroll-area.d.ts +3 -5
  245. package/dist/scroll-area.d.ts.map +1 -1
  246. package/dist/scroll-area.mjs +1 -2
  247. package/dist/search.cjs +1 -1
  248. package/dist/search.d.ts +1 -1
  249. package/dist/search.d.ts.map +1 -1
  250. package/dist/search.mjs +15 -14
  251. package/dist/select-DdUveoSA.js +1 -0
  252. package/dist/{select-D4bxRFq5.mjs → select-yoeH35x2.mjs} +279 -245
  253. package/dist/select.cjs +1 -1
  254. package/dist/select.d.ts +13 -13
  255. package/dist/select.d.ts.map +1 -1
  256. package/dist/select.mjs +1 -1
  257. package/dist/{separator-DZACUutC.mjs → separator-BU1ea5gl.mjs} +14 -10
  258. package/dist/separator-DBjErwHf.js +1 -0
  259. package/dist/separator.cjs +1 -1
  260. package/dist/separator.d.ts +2 -4
  261. package/dist/separator.d.ts.map +1 -1
  262. package/dist/separator.mjs +1 -2
  263. package/dist/sheet.cjs +1 -1
  264. package/dist/sheet.d.ts +13 -26
  265. package/dist/sheet.d.ts.map +1 -1
  266. package/dist/sheet.mjs +84 -54
  267. package/dist/shim-B5sEfNEJ.js +1 -0
  268. package/dist/shim-DX33EwUw.mjs +91 -0
  269. package/dist/sidebar-B-sWccYh.mjs +355 -0
  270. package/dist/sidebar-DIW-1cin.js +1 -0
  271. package/dist/sidebar.cjs +1 -0
  272. package/dist/sidebar.d.ts +45 -0
  273. package/dist/sidebar.d.ts.map +1 -0
  274. package/dist/sidebar.mjs +5 -0
  275. package/dist/skeleton.cjs +1 -1
  276. package/dist/skeleton.d.ts +1 -4
  277. package/dist/skeleton.d.ts.map +1 -1
  278. package/dist/skeleton.mjs +2 -3
  279. package/dist/{slider-DTdrUy_s.mjs → slider-CCPXejUF.mjs} +81 -59
  280. package/dist/slider-w05gD_Ix.js +1 -0
  281. package/dist/slider.cjs +1 -1
  282. package/dist/slider.d.ts +2 -4
  283. package/dist/slider.d.ts.map +1 -1
  284. package/dist/slider.mjs +1 -1
  285. package/dist/sonner.cjs +1 -1
  286. package/dist/sonner.d.ts +1 -5
  287. package/dist/sonner.d.ts.map +1 -1
  288. package/dist/sonner.mjs +23 -16
  289. package/dist/spinner.cjs +1 -0
  290. package/dist/spinner.d.ts +4 -0
  291. package/dist/spinner.d.ts.map +1 -0
  292. package/dist/spinner.mjs +15 -0
  293. package/dist/support-fab.cjs +1 -1
  294. package/dist/support-fab.mjs +1 -1
  295. package/dist/switch-CDBqsWQa.mjs +112 -0
  296. package/dist/switch-X2WBJsUu.js +1 -0
  297. package/dist/switch.cjs +1 -1
  298. package/dist/switch.d.ts +4 -4
  299. package/dist/switch.d.ts.map +1 -1
  300. package/dist/switch.mjs +1 -1
  301. package/dist/table.cjs +1 -1
  302. package/dist/table.d.ts +8 -10
  303. package/dist/table.d.ts.map +1 -1
  304. package/dist/table.mjs +62 -54
  305. package/dist/tabs-DzvgrVzk.js +1 -0
  306. package/dist/tabs-KDeHjVQU.mjs +160 -0
  307. package/dist/tabs.cjs +1 -1
  308. package/dist/tabs.d.ts +10 -8
  309. package/dist/tabs.d.ts.map +1 -1
  310. package/dist/tabs.mjs +2 -2
  311. package/dist/text.d.ts +1 -1
  312. package/dist/textarea.cjs +1 -1
  313. package/dist/textarea.d.ts +1 -4
  314. package/dist/textarea.d.ts.map +1 -1
  315. package/dist/textarea.mjs +10 -10
  316. package/dist/{theme-toggle-Dtze9fyN.js → theme-toggle-C2Y4bIM3.js} +1 -1
  317. package/dist/{theme-toggle-DAHBgdy0.mjs → theme-toggle-clE-HpSS.mjs} +9 -9
  318. package/dist/theme-toggle.cjs +1 -1
  319. package/dist/theme-toggle.mjs +1 -2
  320. package/dist/toast-1keyrzem.js +1 -0
  321. package/dist/{toast-G9LdgDDE.mjs → toast-DVI6jPq5.mjs} +102 -101
  322. package/dist/toast.cjs +1 -1
  323. package/dist/toast.d.ts.map +1 -1
  324. package/dist/toast.mjs +1 -1
  325. package/dist/{toaster-WQJjavlc.mjs → toaster-Czhz-ktg.mjs} +1 -1
  326. package/dist/{toaster-CKD4CKAZ.js → toaster-DfDb2-aI.js} +1 -1
  327. package/dist/toaster.cjs +1 -1
  328. package/dist/toaster.mjs +1 -1
  329. package/dist/toggle-BGkq5XDM.js +1 -0
  330. package/dist/toggle-BfIIdlA6.mjs +58 -0
  331. package/dist/toggle-group-CbqgoPFU.mjs +167 -0
  332. package/dist/toggle-group-D7hR4BT2.js +1 -0
  333. package/dist/toggle-group.cjs +1 -1
  334. package/dist/toggle-group.d.ts +7 -9
  335. package/dist/toggle-group.d.ts.map +1 -1
  336. package/dist/toggle-group.mjs +1 -1
  337. package/dist/toggle.cjs +1 -1
  338. package/dist/toggle.d.ts +6 -5
  339. package/dist/toggle.d.ts.map +1 -1
  340. package/dist/toggle.mjs +2 -19
  341. package/dist/tooltip-CAIbshMk.js +1 -0
  342. package/dist/{tooltip-BHEcM7lO.mjs → tooltip-D_o8Z-Ya.mjs} +106 -90
  343. package/dist/tooltip.cjs +1 -1
  344. package/dist/tooltip.d.ts +5 -10
  345. package/dist/tooltip.d.ts.map +1 -1
  346. package/dist/tooltip.mjs +1 -1
  347. package/package.json +8 -6
  348. package/src/accordion.tsx +58 -51
  349. package/src/alert-dialog.tsx +140 -93
  350. package/src/alert.tsx +44 -33
  351. package/src/aspect-ratio.tsx +10 -4
  352. package/src/avatar.tsx +92 -37
  353. package/src/badge.tsx +24 -14
  354. package/src/breadcrumb.tsx +73 -85
  355. package/src/button-group.tsx +78 -0
  356. package/src/button.tsx +46 -24
  357. package/src/calendar.tsx +52 -40
  358. package/src/card.tsx +67 -42
  359. package/src/carousel.tsx +164 -174
  360. package/src/chart.tsx +206 -232
  361. package/src/checkbox.tsx +17 -17
  362. package/src/collapsible.tsx +16 -10
  363. package/src/combobox.tsx +282 -0
  364. package/src/command.tsx +123 -120
  365. package/src/context-menu.tsx +206 -179
  366. package/src/dialog.tsx +111 -65
  367. package/src/direction.tsx +18 -0
  368. package/src/drawer.tsx +75 -78
  369. package/src/dropdown-menu.tsx +211 -180
  370. package/src/empty.tsx +83 -0
  371. package/src/field.tsx +217 -0
  372. package/src/hooks/use-mobile.ts +19 -0
  373. package/src/hover-card.tsx +33 -27
  374. package/src/index.ts +108 -154
  375. package/src/input-group.tsx +143 -0
  376. package/src/input-otp.tsx +81 -0
  377. package/src/input.tsx +8 -8
  378. package/src/item.tsx +185 -0
  379. package/src/kbd.tsx +21 -0
  380. package/src/label.tsx +17 -14
  381. package/src/menubar.tsx +211 -199
  382. package/src/native-select.tsx +54 -0
  383. package/src/navigation-menu.tsx +115 -110
  384. package/src/pagination.tsx +65 -80
  385. package/src/popover.tsx +53 -41
  386. package/src/progress.tsx +22 -20
  387. package/src/radio-group.tsx +22 -34
  388. package/src/resizable.tsx +34 -49
  389. package/src/scroll-area.tsx +43 -35
  390. package/src/search.tsx +12 -9
  391. package/src/select.tsx +138 -133
  392. package/src/separator.tsx +25 -18
  393. package/src/sheet.tsx +97 -127
  394. package/src/sidebar.tsx +660 -0
  395. package/src/skeleton.tsx +7 -6
  396. package/src/slider.tsx +51 -19
  397. package/src/sonner.tsx +22 -12
  398. package/src/spinner.tsx +10 -0
  399. package/src/support-fab.tsx +1 -1
  400. package/src/switch.tsx +28 -21
  401. package/src/table.tsx +61 -87
  402. package/src/tabs.tsx +75 -56
  403. package/src/textarea.tsx +8 -10
  404. package/src/toast.tsx +5 -0
  405. package/src/toggle-group.tsx +76 -40
  406. package/src/toggle.tsx +35 -15
  407. package/src/tooltip.tsx +41 -43
  408. package/dist/accordion-BTF24dQU.js +0 -1
  409. package/dist/accordion-DHTV2Am8.mjs +0 -221
  410. package/dist/alert-dialog-Bwn2-Uyf.mjs +0 -164
  411. package/dist/alert-dialog-DBMX5E0-.js +0 -7
  412. package/dist/avatar-BI7s8omb.js +0 -1
  413. package/dist/avatar-hzlewncL.mjs +0 -185
  414. package/dist/calendar-ykdYhTj9.js +0 -1
  415. package/dist/carousel-DSmAn1nc.js +0 -1
  416. package/dist/checkbox-dK6DJKeV.js +0 -1
  417. package/dist/command-CDSbHz4C.js +0 -1
  418. package/dist/command-j0rZqZ7B.mjs +0 -531
  419. package/dist/context-menu-BWgLbKLP.js +0 -1
  420. package/dist/context-menu-CWSzssAO.mjs +0 -292
  421. package/dist/dist-B28N93_W.js +0 -1
  422. package/dist/dist-B43Kk7ii.js +0 -1
  423. package/dist/dist-BTPL2C0R.js +0 -1
  424. package/dist/dist-BjEG16aJ.mjs +0 -111
  425. package/dist/dist-BlKAvKHD.js +0 -1
  426. package/dist/dist-C3Z3atn0.mjs +0 -10
  427. package/dist/dist-C4q8IPk4.mjs +0 -28
  428. package/dist/dist-CPglx4om.js +0 -1
  429. package/dist/dist-CV2U2xFR.js +0 -1
  430. package/dist/dist-Cv9YaN1n.mjs +0 -61
  431. package/dist/dist-DAe-fOIM.mjs +0 -25
  432. package/dist/dist-DQAJMTj0.js +0 -1
  433. package/dist/dist-DaCPM8ia.js +0 -1
  434. package/dist/dist-DasmYflz.js +0 -1
  435. package/dist/dist-DneYUKe0.js +0 -1
  436. package/dist/dist-Du2jbEkG.mjs +0 -1282
  437. package/dist/dist-Dw6-GQAn.js +0 -1
  438. package/dist/dist-DwGlbIjj.js +0 -5
  439. package/dist/dist-Dzjlf9ug.js +0 -1
  440. package/dist/dist-GaBUW_Tu.js +0 -1
  441. package/dist/dropdown-menu-Bz5LlLjl.js +0 -1
  442. package/dist/dropdown-menu-Cp1qpOLk.mjs +0 -288
  443. package/dist/hover-card-CyKIuXGH.js +0 -1
  444. package/dist/label-DGuuPl_e.mjs +0 -22
  445. package/dist/label-gVkdll-j.js +0 -1
  446. package/dist/menubar-DNrIQhY5.mjs +0 -410
  447. package/dist/menubar-DkjAo6qJ.js +0 -1
  448. package/dist/navigation-menu-1cmCEi0j.mjs +0 -602
  449. package/dist/navigation-menu-qPt8hpr5.js +0 -1
  450. package/dist/popover-CbM1tqdC.mjs +0 -201
  451. package/dist/popover-DGTgqdKX.js +0 -1
  452. package/dist/radio-group-BGThTiQM.mjs +0 -193
  453. package/dist/radio-group-ClFpAswm.js +0 -1
  454. package/dist/resizable-D09wr7tV.js +0 -1
  455. package/dist/scroll-area-W_aOLOdE.js +0 -1
  456. package/dist/select-BQtkQBiD.js +0 -1
  457. package/dist/separator-BmkhoDge.js +0 -1
  458. package/dist/slider-Bkluwc3b.js +0 -1
  459. package/dist/switch-DENAxyga.js +0 -1
  460. package/dist/switch-DbsdyQVg.mjs +0 -103
  461. package/dist/tabs-C9sMowgZ.mjs +0 -136
  462. package/dist/tabs-DeK-zpy4.js +0 -1
  463. package/dist/toast-BtXY2QTe.js +0 -1
  464. package/dist/toggle-group-B0H9TwdD.mjs +0 -155
  465. package/dist/toggle-group-CAyztsIl.js +0 -1
  466. package/dist/tooltip-CKcMl7tK.js +0 -1
  467. /package/dist/{dist-C_45sBzc.js → dist-C_45sBzc2.js} +0 -0
  468. /package/dist/{dist-DGzGsPqo.mjs → dist-DGzGsPqo2.mjs} +0 -0
package/src/slider.tsx CHANGED
@@ -1,27 +1,59 @@
1
1
  'use client';
2
2
 
3
- import * as SliderPrimitive from '@radix-ui/react-slider';
3
+ import { Slider as SliderPrimitive } from 'radix-ui';
4
4
  import * as React from 'react';
5
5
 
6
- import { SliderBaseProps } from '@gv-tech/ui-core';
7
6
  import { cn } from './lib/utils';
8
7
 
9
- const Slider = React.forwardRef<
10
- React.ElementRef<typeof SliderPrimitive.Root>,
11
- React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root> & SliderBaseProps
12
- >(({ className, ...props }, ref) => (
13
- <SliderPrimitive.Root
14
- ref={ref}
15
- className={cn('relative flex w-full touch-none items-center select-none', className)}
16
- {...props}
17
- >
18
- <SliderPrimitive.Track className="bg-primary/20 relative h-1.5 w-full grow overflow-hidden rounded-full">
19
- <SliderPrimitive.Range className="bg-primary absolute h-full" />
20
- </SliderPrimitive.Track>
21
- <SliderPrimitive.Thumb className="border-primary/50 bg-background focus-visible:ring-ring block h-4 w-4 rounded-full border shadow transition-colors focus-visible:ring-1 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50" />
22
- </SliderPrimitive.Root>
23
- ));
24
- Slider.displayName = SliderPrimitive.Root?.displayName || 'Slider';
8
+ import type { SliderBaseProps } from '@gv-tech/ui-core';
9
+
10
+ function Slider({
11
+ className,
12
+ defaultValue,
13
+ value,
14
+ min = 0,
15
+ max = 100,
16
+ ...props
17
+ }: React.ComponentProps<typeof SliderPrimitive.Root>) {
18
+ const _values = React.useMemo(
19
+ () => (Array.isArray(value) ? value : Array.isArray(defaultValue) ? defaultValue : [min, max]),
20
+ [value, defaultValue, min, max],
21
+ );
22
+
23
+ return (
24
+ <SliderPrimitive.Root
25
+ data-slot="slider"
26
+ defaultValue={defaultValue}
27
+ value={value}
28
+ min={min}
29
+ max={max}
30
+ className={cn(
31
+ 'relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-40 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col',
32
+ className,
33
+ )}
34
+ {...props}
35
+ >
36
+ <SliderPrimitive.Track
37
+ data-slot="slider-track"
38
+ className="bg-muted relative grow overflow-hidden rounded-full data-[orientation=horizontal]:h-1 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1"
39
+ >
40
+ <SliderPrimitive.Range
41
+ data-slot="slider-range"
42
+ className="bg-primary absolute select-none data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full"
43
+ />
44
+ </SliderPrimitive.Track>
45
+ {Array.from({ length: _values.length }, (_, index) => (
46
+ <SliderPrimitive.Thumb
47
+ data-slot="slider-thumb"
48
+ key={index}
49
+ className="border-ring ring-ring/50 relative block size-3 shrink-0 rounded-full border bg-white transition-[color,box-shadow] select-none after:absolute after:-inset-2 hover:ring-3 focus-visible:ring-3 focus-visible:outline-hidden active:ring-3 disabled:pointer-events-none disabled:opacity-50"
50
+ />
51
+ ))}
52
+ </SliderPrimitive.Root>
53
+ );
54
+ }
25
55
 
26
56
  export { Slider };
27
- export type { SliderBaseProps as SliderProps };
57
+
58
+ // Verify that the component satisfies the ui-core contract
59
+ const _verifySliderContract: SliderBaseProps = {} as unknown as React.ComponentProps<typeof Slider>;
package/src/sonner.tsx CHANGED
@@ -1,11 +1,8 @@
1
- 'use client';
2
-
3
- import { SonnerBaseProps } from '@gv-tech/ui-core';
1
+ import { CircleCheckIcon, InfoIcon, Loader2Icon, OctagonXIcon, TriangleAlertIcon } from 'lucide-react';
4
2
  import { useTheme } from 'next-themes';
5
- import * as React from 'react';
6
- import { Toaster as Sonner } from 'sonner';
3
+ import { Toaster as Sonner, type ToasterProps } from 'sonner';
7
4
 
8
- type ToasterProps = React.ComponentProps<typeof Sonner> & SonnerBaseProps;
5
+ import type { SonnerBaseProps } from '@gv-tech/ui-core';
9
6
 
10
7
  const Toaster = ({ ...props }: ToasterProps) => {
11
8
  const { theme = 'system' } = useTheme();
@@ -14,13 +11,24 @@ const Toaster = ({ ...props }: ToasterProps) => {
14
11
  <Sonner
15
12
  theme={theme as ToasterProps['theme']}
16
13
  className="toaster group"
14
+ icons={{
15
+ success: <CircleCheckIcon className="size-4" />,
16
+ info: <InfoIcon className="size-4" />,
17
+ warning: <TriangleAlertIcon className="size-4" />,
18
+ error: <OctagonXIcon className="size-4" />,
19
+ loading: <Loader2Icon className="size-4 animate-spin" />,
20
+ }}
21
+ style={
22
+ {
23
+ '--normal-bg': 'var(--popover)',
24
+ '--normal-text': 'var(--popover-foreground)',
25
+ '--normal-border': 'var(--border)',
26
+ '--border-radius': 'var(--radius)',
27
+ } as React.CSSProperties
28
+ }
17
29
  toastOptions={{
18
30
  classNames: {
19
- toast:
20
- 'group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg',
21
- description: 'group-[.toast]:text-muted-foreground',
22
- actionButton: 'group-[.toast]:bg-primary group-[.toast]:text-primary-foreground',
23
- cancelButton: 'group-[.toast]:bg-muted group-[.toast]:text-muted-foreground',
31
+ toast: 'cn-toast',
24
32
  },
25
33
  }}
26
34
  {...props}
@@ -29,4 +37,6 @@ const Toaster = ({ ...props }: ToasterProps) => {
29
37
  };
30
38
 
31
39
  export { Toaster };
32
- export type { ToasterProps };
40
+
41
+ // Verify that the component satisfies the ui-core contract
42
+ const _verifySonnerContract: SonnerBaseProps = {} as unknown as React.ComponentProps<typeof Sonner>;
@@ -0,0 +1,10 @@
1
+ import { Loader2Icon } from 'lucide-react';
2
+ import { cn } from './lib/utils';
3
+
4
+ import type { SpinnerBaseProps } from '@gv-tech/ui-core';
5
+
6
+ function Spinner({ className, ...props }: React.ComponentProps<'svg'> & SpinnerBaseProps) {
7
+ return <Loader2Icon role="status" aria-label="Loading" className={cn('size-4 animate-spin', className)} {...props} />;
8
+ }
9
+
10
+ export { Spinner };
@@ -138,7 +138,7 @@ export function SupportFab({
138
138
  aria-label="Support this project"
139
139
  type={type ?? 'button'}
140
140
  className={cn(
141
- 'inline-flex h-14 w-14 rounded-full border border-black/15 bg-[#ffdd00] text-black shadow-[0_16px_36px_-18px_rgba(0,0,0,0.8)] transition hover:-translate-y-0.5 hover:scale-105 hover:bg-[#ffe347] focus-visible:ring-2 focus-visible:ring-offset-2 active:translate-y-0 active:scale-95',
141
+ 'inline-flex h-14 w-14 items-center justify-center rounded-full border border-black/15 bg-[#ffdd00] text-black shadow-[0_16px_36px_-18px_rgba(0,0,0,0.8)] transition hover:-translate-y-0.5 hover:scale-105 hover:bg-[#ffe347] focus-visible:ring-2 focus-visible:ring-offset-2 active:translate-y-0 active:scale-95',
142
142
  buttonClassName,
143
143
  className,
144
144
  )}
package/src/switch.tsx CHANGED
@@ -1,31 +1,38 @@
1
1
  'use client';
2
2
 
3
- import * as SwitchPrimitives from '@radix-ui/react-switch';
3
+ import { Switch as SwitchPrimitive } from 'radix-ui';
4
4
  import * as React from 'react';
5
5
 
6
- import { SwitchBaseProps } from '@gv-tech/ui-core';
7
6
  import { cn } from './lib/utils';
8
7
 
9
- const Switch = React.forwardRef<
10
- React.ElementRef<typeof SwitchPrimitives.Root>,
11
- React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root> & SwitchBaseProps
12
- >(({ className, ...props }, ref) => (
13
- <SwitchPrimitives.Root
14
- className={cn(
15
- 'peer focus-visible:ring-ring focus-visible:ring-offset-background data-[state=checked]:bg-primary data-[state=unchecked]:bg-input inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50',
16
- className,
17
- )}
18
- {...props}
19
- ref={ref}
20
- >
21
- <SwitchPrimitives.Thumb
8
+ import type { SwitchBaseProps } from '@gv-tech/ui-core';
9
+
10
+ function Switch({
11
+ className,
12
+ size = 'default',
13
+ ...props
14
+ }: React.ComponentProps<typeof SwitchPrimitive.Root> & {
15
+ size?: 'sm' | 'default';
16
+ }) {
17
+ return (
18
+ <SwitchPrimitive.Root
19
+ data-slot="switch"
20
+ data-size={size}
22
21
  className={cn(
23
- 'bg-background pointer-events-none block h-4 w-4 rounded-full shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0',
22
+ 'peer group/switch focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-input/80 relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:ring-3 aria-invalid:ring-3 data-disabled:cursor-not-allowed data-disabled:opacity-50 data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px]',
23
+ className,
24
24
  )}
25
- />
26
- </SwitchPrimitives.Root>
27
- ));
28
- Switch.displayName = SwitchPrimitives.Root?.displayName || 'Switch';
25
+ {...props}
26
+ >
27
+ <SwitchPrimitive.Thumb
28
+ data-slot="switch-thumb"
29
+ className="bg-background dark:data-[state=checked]:bg-primary-foreground dark:data-[state=unchecked]:bg-foreground pointer-events-none block rounded-full ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-[state=checked]:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-[state=checked]:translate-x-[calc(100%-2px)] group-data-[size=default]/switch:data-[state=unchecked]:translate-x-0 group-data-[size=sm]/switch:data-[state=unchecked]:translate-x-0 rtl:group-data-[size=default]/switch:data-[state=checked]:-translate-x-[calc(100%-2px)] rtl:group-data-[size=sm]/switch:data-[state=checked]:-translate-x-[calc(100%-2px)] rtl:group-data-[size=default]/switch:data-[state=unchecked]:-translate-x-0 rtl:group-data-[size=sm]/switch:data-[state=unchecked]:-translate-x-0"
30
+ />
31
+ </SwitchPrimitive.Root>
32
+ );
33
+ }
29
34
 
30
35
  export { Switch };
31
- export type { SwitchBaseProps as SwitchProps };
36
+
37
+ // Verify that the component satisfies the ui-core contract
38
+ const _verifySwitchContract: SwitchBaseProps = {} as unknown as React.ComponentProps<typeof Switch>;
package/src/table.tsx CHANGED
@@ -1,104 +1,78 @@
1
- 'use client';
2
-
3
1
  import * as React from 'react';
4
2
 
5
- import {
6
- TableBaseProps,
7
- TableBodyBaseProps,
8
- TableCaptionBaseProps,
9
- TableCellBaseProps,
10
- TableFooterBaseProps,
11
- TableHeadBaseProps,
12
- TableHeaderBaseProps,
13
- TableRowBaseProps,
14
- } from '@gv-tech/ui-core';
15
3
  import { cn } from './lib/utils';
16
4
 
17
- const Table = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement> & TableBaseProps>(
18
- ({ className, ...props }, ref) => (
19
- <div className="relative w-full overflow-auto">
20
- <table ref={ref} className={cn('w-full caption-bottom text-sm', className)} {...props} />
5
+ import type { TableBaseProps } from '@gv-tech/ui-core';
6
+
7
+ function Table({ className, ...props }: React.ComponentProps<'table'>) {
8
+ return (
9
+ <div data-slot="table-container" className="relative w-full overflow-x-auto">
10
+ <table data-slot="table" className={cn('w-full caption-bottom text-sm', className)} {...props} />
21
11
  </div>
22
- ),
23
- );
24
- Table.displayName = 'Table';
12
+ );
13
+ }
25
14
 
26
- const TableHeader = React.forwardRef<
27
- HTMLTableSectionElement,
28
- React.HTMLAttributes<HTMLTableSectionElement> & TableHeaderBaseProps
29
- >(({ className, ...props }, ref) => <thead ref={ref} className={cn('[&_tr]:border-b', className)} {...props} />);
30
- TableHeader.displayName = 'TableHeader';
15
+ function TableHeader({ className, ...props }: React.ComponentProps<'thead'>) {
16
+ return <thead data-slot="table-header" className={cn('[&_tr]:border-b', className)} {...props} />;
17
+ }
31
18
 
32
- const TableBody = React.forwardRef<
33
- HTMLTableSectionElement,
34
- React.HTMLAttributes<HTMLTableSectionElement> & TableBodyBaseProps
35
- >(({ className, ...props }, ref) => (
36
- <tbody ref={ref} className={cn('[&_tr:last-child]:border-0', className)} {...props} />
37
- ));
38
- TableBody.displayName = 'TableBody';
19
+ function TableBody({ className, ...props }: React.ComponentProps<'tbody'>) {
20
+ return <tbody data-slot="table-body" className={cn('[&_tr:last-child]:border-0', className)} {...props} />;
21
+ }
39
22
 
40
- const TableFooter = React.forwardRef<
41
- HTMLTableSectionElement,
42
- React.HTMLAttributes<HTMLTableSectionElement> & TableFooterBaseProps
43
- >(({ className, ...props }, ref) => (
44
- <tfoot ref={ref} className={cn('bg-muted/50 border-t font-medium [&>tr]:last:border-b-0', className)} {...props} />
45
- ));
46
- TableFooter.displayName = 'TableFooter';
23
+ function TableFooter({ className, ...props }: React.ComponentProps<'tfoot'>) {
24
+ return (
25
+ <tfoot
26
+ data-slot="table-footer"
27
+ className={cn('bg-muted/50 border-t font-medium [&>tr]:last:border-b-0', className)}
28
+ {...props}
29
+ />
30
+ );
31
+ }
47
32
 
48
- const TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement> & TableRowBaseProps>(
49
- ({ className, ...props }, ref) => (
33
+ function TableRow({ className, ...props }: React.ComponentProps<'tr'>) {
34
+ return (
50
35
  <tr
51
- ref={ref}
52
- className={cn('hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors', className)}
36
+ data-slot="table-row"
37
+ className={cn(
38
+ 'hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors',
39
+ className,
40
+ )}
53
41
  {...props}
54
42
  />
55
- ),
56
- );
57
- TableRow.displayName = 'TableRow';
43
+ );
44
+ }
58
45
 
59
- const TableHead = React.forwardRef<
60
- HTMLTableCellElement,
61
- React.ThHTMLAttributes<HTMLTableCellElement> & TableHeadBaseProps
62
- >(({ className, ...props }, ref) => (
63
- <th
64
- ref={ref}
65
- className={cn(
66
- 'text-muted-foreground h-10 px-2 text-left align-middle font-medium [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',
67
- className,
68
- )}
69
- {...props}
70
- />
71
- ));
72
- TableHead.displayName = 'TableHead';
46
+ function TableHead({ className, ...props }: React.ComponentProps<'th'>) {
47
+ return (
48
+ <th
49
+ data-slot="table-head"
50
+ className={cn(
51
+ 'text-foreground h-10 px-2 text-start align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pe-0',
52
+ className,
53
+ )}
54
+ {...props}
55
+ />
56
+ );
57
+ }
73
58
 
74
- const TableCell = React.forwardRef<
75
- HTMLTableCellElement,
76
- React.TdHTMLAttributes<HTMLTableCellElement> & TableCellBaseProps
77
- >(({ className, ...props }, ref) => (
78
- <td
79
- ref={ref}
80
- className={cn('p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]', className)}
81
- {...props}
82
- />
83
- ));
84
- TableCell.displayName = 'TableCell';
59
+ function TableCell({ className, ...props }: React.ComponentProps<'td'>) {
60
+ return (
61
+ <td
62
+ data-slot="table-cell"
63
+ className={cn('p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pe-0', className)}
64
+ {...props}
65
+ />
66
+ );
67
+ }
85
68
 
86
- const TableCaption = React.forwardRef<
87
- HTMLTableCaptionElement,
88
- React.HTMLAttributes<HTMLTableCaptionElement> & TableCaptionBaseProps
89
- >(({ className, ...props }, ref) => (
90
- <caption ref={ref} className={cn('text-muted-foreground mt-4 text-sm', className)} {...props} />
91
- ));
92
- TableCaption.displayName = 'TableCaption';
69
+ function TableCaption({ className, ...props }: React.ComponentProps<'caption'>) {
70
+ return (
71
+ <caption data-slot="table-caption" className={cn('text-muted-foreground mt-4 text-sm', className)} {...props} />
72
+ );
73
+ }
93
74
 
94
75
  export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow };
95
- export type {
96
- TableBodyBaseProps as TableBodyProps,
97
- TableCaptionBaseProps as TableCaptionProps,
98
- TableCellBaseProps as TableCellProps,
99
- TableFooterBaseProps as TableFooterProps,
100
- TableHeaderBaseProps as TableHeaderProps,
101
- TableHeadBaseProps as TableHeadProps,
102
- TableBaseProps as TableProps,
103
- TableRowBaseProps as TableRowProps,
104
- };
76
+
77
+ // Verify that the component satisfies the ui-core contract
78
+ const _verifyTableContract: TableBaseProps = {} as unknown as React.ComponentProps<typeof Table>;
package/src/tabs.tsx CHANGED
@@ -1,62 +1,81 @@
1
1
  'use client';
2
2
 
3
- import * as TabsPrimitive from '@radix-ui/react-tabs';
3
+ import { cva, type VariantProps } from 'class-variance-authority';
4
+ import { Tabs as TabsPrimitive } from 'radix-ui';
4
5
  import * as React from 'react';
5
6
 
6
- import { TabsBaseProps, TabsContentBaseProps, TabsListBaseProps, TabsTriggerBaseProps } from '@gv-tech/ui-core';
7
7
  import { cn } from './lib/utils';
8
8
 
9
- const Tabs = TabsPrimitive.Root;
10
-
11
- const TabsList = React.forwardRef<
12
- React.ElementRef<typeof TabsPrimitive.List>,
13
- React.ComponentPropsWithoutRef<typeof TabsPrimitive.List> & TabsListBaseProps
14
- >(({ className, ...props }, ref) => (
15
- <TabsPrimitive.List
16
- ref={ref}
17
- className={cn(
18
- 'bg-muted text-muted-foreground inline-flex h-9 items-center justify-center rounded-lg p-1',
19
- className,
20
- )}
21
- {...props}
22
- />
23
- ));
24
- TabsList.displayName = TabsPrimitive.List?.displayName || 'TabsList';
25
-
26
- const TabsTrigger = React.forwardRef<
27
- React.ElementRef<typeof TabsPrimitive.Trigger>,
28
- React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger> & TabsTriggerBaseProps
29
- >(({ className, ...props }, ref) => (
30
- <TabsPrimitive.Trigger
31
- ref={ref}
32
- className={cn(
33
- 'ring-offset-background focus-visible:ring-ring data-[state=active]:bg-background data-[state=active]:text-foreground inline-flex items-center justify-center rounded-md px-3 py-1 text-sm font-medium whitespace-nowrap transition-all focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow',
34
- className,
35
- )}
36
- {...props}
37
- />
38
- ));
39
- TabsTrigger.displayName = TabsPrimitive.Trigger?.displayName || 'TabsTrigger';
40
-
41
- const TabsContent = React.forwardRef<
42
- React.ElementRef<typeof TabsPrimitive.Content>,
43
- React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content> & TabsContentBaseProps
44
- >(({ className, ...props }, ref) => (
45
- <TabsPrimitive.Content
46
- ref={ref}
47
- className={cn(
48
- 'ring-offset-background focus-visible:ring-ring mt-2 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none',
49
- className,
50
- )}
51
- {...props}
52
- />
53
- ));
54
- TabsContent.displayName = TabsPrimitive.Content?.displayName || 'TabsContent';
55
-
56
- export { Tabs, TabsContent, TabsList, TabsTrigger };
57
- export type {
58
- TabsContentBaseProps as TabsContentProps,
59
- TabsListBaseProps as TabsListProps,
60
- TabsBaseProps as TabsProps,
61
- TabsTriggerBaseProps as TabsTriggerProps,
62
- };
9
+ import type { TabsBaseProps } from '@gv-tech/ui-core';
10
+
11
+ function Tabs({ className, orientation = 'horizontal', ...props }: React.ComponentProps<typeof TabsPrimitive.Root>) {
12
+ return (
13
+ <TabsPrimitive.Root
14
+ data-slot="tabs"
15
+ data-orientation={orientation}
16
+ className={cn('group/tabs flex gap-2 data-[orientation=horizontal]:flex-col', className)}
17
+ {...props}
18
+ />
19
+ );
20
+ }
21
+
22
+ const tabsListVariants = cva(
23
+ 'group/tabs-list inline-flex w-fit items-center justify-center rounded-lg p-[3px] text-muted-foreground group-data-[orientation=horizontal]/tabs:h-8 group-data-[orientation=vertical]/tabs:h-fit group-data-[orientation=vertical]/tabs:flex-col data-[variant=line]:rounded-none',
24
+ {
25
+ variants: {
26
+ variant: {
27
+ default: 'bg-muted',
28
+ line: 'gap-1 bg-transparent p-0',
29
+ },
30
+ },
31
+ defaultVariants: {
32
+ variant: 'default',
33
+ },
34
+ },
35
+ );
36
+
37
+ function TabsList({
38
+ className,
39
+ variant = 'default',
40
+ ...props
41
+ }: React.ComponentProps<typeof TabsPrimitive.List> & VariantProps<typeof tabsListVariants>) {
42
+ return (
43
+ <TabsPrimitive.List
44
+ data-slot="tabs-list"
45
+ data-variant={variant}
46
+ className={cn(tabsListVariants({ variant }), className)}
47
+ {...props}
48
+ />
49
+ );
50
+ }
51
+
52
+ function TabsTrigger({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Trigger>) {
53
+ return (
54
+ <TabsPrimitive.Trigger
55
+ data-slot="tabs-trigger"
56
+ className={cn(
57
+ 'text-foreground/60 hover:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:text-muted-foreground dark:hover:text-foreground relative inline-flex h-[calc(100%-1px)] items-center justify-center gap-1.5 rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:justify-start group-data-[variant=default]/tabs-list:flex-1 focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 has-data-[icon=inline-end]:pe-1 has-data-[icon=inline-start]:ps-1 group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=size-])]:size-4',
58
+ 'group-data-[variant=line]/tabs-list:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:border-transparent dark:group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent',
59
+ 'data-[state=active]:bg-background data-[state=active]:text-foreground dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 dark:data-[state=active]:text-foreground',
60
+ 'after:bg-foreground after:absolute after:opacity-0 after:transition-opacity group-data-[orientation=horizontal]/tabs:after:inset-x-0 group-data-[orientation=horizontal]/tabs:after:bottom-[-1px] group-data-[orientation=horizontal]/tabs:after:h-0.5 group-data-[orientation=vertical]/tabs:after:inset-y-0 group-data-[orientation=vertical]/tabs:after:-end-[1px] group-data-[orientation=vertical]/tabs:after:w-0.5 group-data-[variant=line]/tabs-list:data-[state=active]:after:opacity-100',
61
+ className,
62
+ )}
63
+ {...props}
64
+ />
65
+ );
66
+ }
67
+
68
+ function TabsContent({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Content>) {
69
+ return (
70
+ <TabsPrimitive.Content
71
+ data-slot="tabs-content"
72
+ className={cn('flex-1 text-sm outline-none', className)}
73
+ {...props}
74
+ />
75
+ );
76
+ }
77
+
78
+ export { Tabs, TabsContent, TabsList, tabsListVariants, TabsTrigger };
79
+
80
+ // Verify that the component satisfies the ui-core contract
81
+ const _verifyTabsContract: TabsBaseProps = {} as unknown as React.ComponentProps<typeof Tabs>;
package/src/textarea.tsx CHANGED
@@ -1,25 +1,23 @@
1
- 'use client';
2
-
3
1
  import * as React from 'react';
4
2
 
5
- import { TextareaBaseProps } from '@gv-tech/ui-core';
6
3
  import { cn } from './lib/utils';
7
4
 
8
- export interface TextareaProps
9
- extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, keyof TextareaBaseProps>, TextareaBaseProps {}
5
+ import type { TextareaBaseProps } from '@gv-tech/ui-core';
10
6
 
11
- const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(({ className, ...props }, ref) => {
7
+ function Textarea({ className, ...props }: React.ComponentProps<'textarea'>) {
12
8
  return (
13
9
  <textarea
10
+ data-slot="textarea"
14
11
  className={cn(
15
- 'border-input placeholder:text-muted-foreground focus-visible:ring-ring flex min-h-[60px] w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-sm focus-visible:ring-1 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',
12
+ 'border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 disabled:bg-input/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 flex field-sizing-content min-h-16 w-full rounded-lg border bg-transparent px-2.5 py-2 text-base transition-colors outline-none focus-visible:ring-3 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:ring-3 md:text-sm',
16
13
  className,
17
14
  )}
18
- ref={ref}
19
15
  {...props}
20
16
  />
21
17
  );
22
- });
23
- Textarea.displayName = 'Textarea';
18
+ }
24
19
 
25
20
  export { Textarea };
21
+
22
+ // Verify that the component satisfies the ui-core contract
23
+ const _verifyTextareaContract: TextareaBaseProps = {} as unknown as React.ComponentProps<typeof Textarea>;
package/src/toast.tsx CHANGED
@@ -6,6 +6,8 @@ import * as React from 'react';
6
6
 
7
7
  import { cn } from './lib/utils';
8
8
 
9
+ import type { ToastBaseProps } from '@gv-tech/ui-core';
10
+
9
11
  const ToastProvider = ToastPrimitives.Provider;
10
12
 
11
13
  const ToastViewport = React.forwardRef<
@@ -110,3 +112,6 @@ export {
110
112
  type ToastActionElement,
111
113
  type ToastProps,
112
114
  };
115
+
116
+ // Verify that the component satisfies the ui-core contract
117
+ const _verifyToastContract: ToastBaseProps = {} as unknown as React.ComponentProps<typeof Toast>;