@gv-tech/ui-web 2.22.2 → 2.23.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 (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/chart.tsx CHANGED
@@ -1,20 +1,24 @@
1
1
  'use client';
2
+
2
3
  import * as React from 'react';
4
+ import type { TooltipValueType } from 'recharts';
3
5
  import * as RechartsPrimitive from 'recharts';
4
6
 
5
- import {
6
- ChartConfig,
7
- ChartContainerBaseProps,
8
- ChartLegendContentBaseProps,
9
- ChartTooltipContentBaseProps,
10
- } from '@gv-tech/ui-core';
11
7
  import { cn } from './lib/utils';
12
8
 
13
9
  // Format: { THEME_NAME: CSS_SELECTOR }
14
10
  const THEMES = { light: '', dark: '.dark' } as const;
15
11
 
16
- /** Safe own-property check prevents prototype-chain traversal via dynamic keys. */
17
- const hasOwnProp = (obj: object, key: string): boolean => Object.prototype.hasOwnProperty.call(obj, key);
12
+ const INITIAL_DIMENSION = { width: 320, height: 200 } as const;
13
+ type TooltipNameType = number | string;
14
+
15
+ export type ChartConfig = Record<
16
+ string,
17
+ {
18
+ label?: React.ReactNode;
19
+ icon?: React.ComponentType;
20
+ } & ({ color?: string; theme?: never } | { color?: never; theme: Record<keyof typeof THEMES, string> })
21
+ >;
18
22
 
19
23
  type ChartContextProps = {
20
24
  config: ChartConfig;
@@ -32,236 +36,212 @@ function useChart() {
32
36
  return context;
33
37
  }
34
38
 
35
- const ChartContainer = React.forwardRef<
36
- HTMLDivElement,
37
- React.ComponentProps<'div'> &
38
- ChartContainerBaseProps & {
39
- children: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>['children'];
40
- }
41
- >(
42
- (
43
- {
44
- id,
45
- className,
46
- children,
47
- config,
48
- style,
49
- role,
50
- tabIndex,
51
- 'aria-label': ariaLabel,
52
- 'aria-labelledby': ariaLabelledBy,
53
- 'aria-describedby': ariaDescribedBy,
54
- onClick,
55
- onKeyDown,
56
- onKeyUp,
57
- onFocus,
58
- onBlur,
59
- },
60
- ref,
61
- ) => {
62
- const uniqueId = React.useId();
63
- const chartId = `chart-${id || uniqueId.replace(/:/g, '')}`;
64
-
65
- return (
66
- <ChartContext.Provider value={{ config }}>
67
- <div
68
- data-chart={chartId}
69
- ref={ref}
70
- className={cn(
71
- "[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-sector]:outline-none [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-none",
72
- className,
73
- )}
74
- style={style}
75
- role={role}
76
- tabIndex={tabIndex}
77
- aria-label={ariaLabel}
78
- aria-labelledby={ariaLabelledBy}
79
- aria-describedby={ariaDescribedBy}
80
- onClick={onClick}
81
- onKeyDown={onKeyDown}
82
- onKeyUp={onKeyUp}
83
- onFocus={onFocus}
84
- onBlur={onBlur}
85
- >
86
- <ChartStyle id={chartId} config={config} />
87
- <RechartsPrimitive.ResponsiveContainer>{children}</RechartsPrimitive.ResponsiveContainer>
88
- </div>
89
- </ChartContext.Provider>
90
- );
91
- },
92
- );
93
- ChartContainer.displayName = 'Chart';
39
+ function ChartContainer({
40
+ id,
41
+ className,
42
+ children,
43
+ config,
44
+ initialDimension = INITIAL_DIMENSION,
45
+ ...props
46
+ }: React.ComponentProps<'div'> & {
47
+ config: ChartConfig;
48
+ children: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>['children'];
49
+ initialDimension?: {
50
+ width: number;
51
+ height: number;
52
+ };
53
+ }) {
54
+ const uniqueId = React.useId();
55
+ const chartId = `chart-${id ?? uniqueId.replace(/:/g, '')}`;
56
+
57
+ return (
58
+ <ChartContext.Provider value={{ config }}>
59
+ <div
60
+ data-slot="chart"
61
+ data-chart={chartId}
62
+ className={cn(
63
+ '[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke=#ccc]]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke=#ccc]]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke=#ccc]]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke=#fff]]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke=#fff]]:stroke-transparent [&_.recharts-surface]:outline-hidden',
64
+ className,
65
+ )}
66
+ {...props}
67
+ >
68
+ <ChartStyle id={chartId} config={config} />
69
+ <RechartsPrimitive.ResponsiveContainer initialDimension={initialDimension}>
70
+ {children}
71
+ </RechartsPrimitive.ResponsiveContainer>
72
+ </div>
73
+ </ChartContext.Provider>
74
+ );
75
+ }
94
76
 
95
77
  const ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {
96
- const colorConfig = Object.entries(config).filter(([, itemConfig]) => itemConfig.theme || itemConfig.color);
78
+ const colorConfig = Object.entries(config).filter(([, config]) => config.theme ?? config.color);
97
79
 
98
80
  if (!colorConfig.length) {
99
81
  return null;
100
82
  }
101
83
 
102
84
  return (
103
- <style>
104
- {Object.entries(THEMES)
105
- .map(
106
- ([theme, prefix]) => `
85
+ <style
86
+ dangerouslySetInnerHTML={{
87
+ __html: Object.entries(THEMES)
88
+ .map(
89
+ ([theme, prefix]) => `
107
90
  ${prefix} [data-chart=${id}] {
108
91
  ${colorConfig
109
92
  .map(([key, itemConfig]) => {
110
- const color =
111
- (theme in THEMES && hasOwnProp(THEMES, theme) ? itemConfig.theme?.[theme as keyof typeof THEMES] : undefined) ||
112
- itemConfig.color;
93
+ const color = itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ?? itemConfig.color;
113
94
  return color ? ` --color-${key}: ${color};` : null;
114
95
  })
115
96
  .join('\n')}
116
97
  }
117
98
  `,
118
- )
119
- .join('\n')}
120
- </style>
99
+ )
100
+ .join('\n'),
101
+ }}
102
+ />
121
103
  );
122
104
  };
123
105
 
124
106
  const ChartTooltip = RechartsPrimitive.Tooltip;
125
107
 
126
- const ChartTooltipContent = React.forwardRef<
127
- HTMLDivElement,
128
- Partial<RechartsPrimitive.TooltipContentProps> & React.ComponentProps<'div'> & ChartTooltipContentBaseProps
129
- >(
130
- (
131
- {
132
- active,
133
- payload,
134
- className,
135
- indicator = 'dot',
136
- hideLabel = false,
137
- hideIndicator = false,
138
- label,
139
- labelFormatter,
140
- labelClassName,
141
- formatter,
142
- color,
143
- nameKey,
144
- labelKey,
145
- },
146
- ref,
147
- ) => {
148
- const { config } = useChart();
149
-
150
- const tooltipLabel = React.useMemo(() => {
151
- if (hideLabel || !payload?.length) {
152
- return null;
153
- }
154
-
155
- const [item] = payload;
156
- const key = `${labelKey || item?.dataKey || item?.name || 'value'}`;
157
- const itemConfig = getPayloadConfigFromPayload(config, item, key);
158
- const value =
159
- !labelKey && typeof label === 'string'
160
- ? ((hasOwnProp(config, label) ? config[label as keyof typeof config]?.label : undefined) ?? label)
161
- : itemConfig?.label;
162
-
163
- if (labelFormatter) {
164
- return <div className={cn('font-medium', labelClassName)}>{labelFormatter(value, payload)}</div>;
165
- }
166
-
167
- if (!value) {
168
- return null;
169
- }
170
-
171
- return <div className={cn('font-medium', labelClassName)}>{value}</div>;
172
- }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);
173
-
174
- if (!active || !payload?.length) {
108
+ function ChartTooltipContent({
109
+ active,
110
+ payload,
111
+ className,
112
+ indicator = 'dot',
113
+ hideLabel = false,
114
+ hideIndicator = false,
115
+ label,
116
+ labelFormatter,
117
+ labelClassName,
118
+ formatter,
119
+ color,
120
+ nameKey,
121
+ labelKey,
122
+ }: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &
123
+ React.ComponentProps<'div'> & {
124
+ hideLabel?: boolean;
125
+ hideIndicator?: boolean;
126
+ indicator?: 'line' | 'dot' | 'dashed';
127
+ nameKey?: string;
128
+ labelKey?: string;
129
+ } & Omit<RechartsPrimitive.DefaultTooltipContentProps<TooltipValueType, TooltipNameType>, 'accessibilityLayer'>) {
130
+ const { config } = useChart();
131
+
132
+ const tooltipLabel = React.useMemo(() => {
133
+ if (hideLabel || !payload?.length) {
175
134
  return null;
176
135
  }
177
136
 
178
- const nestLabel = payload.length === 1 && indicator !== 'dot';
137
+ const [item] = payload;
138
+ const key = `${labelKey ?? item?.dataKey ?? item?.name ?? 'value'}`;
139
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
140
+ const value = !labelKey && typeof label === 'string' ? (config[label]?.label ?? label) : itemConfig?.label;
179
141
 
180
- return (
181
- <div
182
- ref={ref}
183
- className={cn(
184
- 'border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl',
185
- className,
186
- )}
187
- >
188
- {!nestLabel ? tooltipLabel : null}
189
- <div className="grid gap-1.5">
190
- {payload
191
- .filter((item: RechartsPrimitive.TooltipPayloadEntry) => item.type !== 'none')
192
- .map((item: RechartsPrimitive.TooltipPayloadEntry, index: number) => {
193
- const key = `${nameKey || item.name || item.dataKey || 'value'}`;
194
- const itemConfig = getPayloadConfigFromPayload(config, item, key);
195
- const indicatorColor = color || ((item.payload as Record<string, unknown>).fill as string) || item.color;
196
-
197
- return (
198
- <div
199
- key={typeof item.dataKey === 'function' ? index : (item.dataKey ?? index)}
200
- className={cn(
201
- '[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5',
202
- indicator === 'dot' && 'items-center',
203
- )}
204
- >
205
- {formatter && item?.value !== undefined && item.name ? (
206
- formatter(item.value, item.name, item, index, item.payload)
207
- ) : (
208
- <>
209
- {itemConfig?.icon ? (
210
- <itemConfig.icon />
211
- ) : (
212
- !hideIndicator && (
213
- <div
214
- className={cn('shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]', {
215
- 'h-2.5 w-2.5': indicator === 'dot',
216
- 'w-1': indicator === 'line',
217
- 'w-0 border-[1.5px] border-dashed bg-transparent': indicator === 'dashed',
218
- 'my-0.5': nestLabel && indicator === 'dashed',
219
- })}
220
- style={
221
- {
222
- '--color-bg': indicatorColor,
223
- '--color-border': indicatorColor,
224
- } as React.CSSProperties
225
- }
226
- />
227
- )
142
+ if (labelFormatter) {
143
+ return <div className={cn('font-medium', labelClassName)}>{labelFormatter(value, payload)}</div>;
144
+ }
145
+
146
+ if (!value) {
147
+ return null;
148
+ }
149
+
150
+ return <div className={cn('font-medium', labelClassName)}>{value}</div>;
151
+ }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);
152
+
153
+ if (!active || !payload?.length) {
154
+ return null;
155
+ }
156
+
157
+ const nestLabel = payload.length === 1 && indicator !== 'dot';
158
+
159
+ return (
160
+ <div
161
+ className={cn(
162
+ 'border-border/50 bg-background grid min-w-32 items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl',
163
+ className,
164
+ )}
165
+ >
166
+ {!nestLabel ? tooltipLabel : null}
167
+ <div className="grid gap-1.5">
168
+ {payload
169
+ .filter((item) => item.type !== 'none')
170
+ .map((item, index) => {
171
+ const key = `${nameKey ?? item.name ?? item.dataKey ?? 'value'}`;
172
+ const itemConfig = getPayloadConfigFromPayload(config, item, key);
173
+ const indicatorColor = color ?? item.payload?.fill ?? item.color;
174
+
175
+ return (
176
+ <div
177
+ key={index}
178
+ className={cn(
179
+ '[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5',
180
+ indicator === 'dot' && 'items-center',
181
+ )}
182
+ >
183
+ {formatter && item?.value !== undefined && item.name ? (
184
+ formatter(item.value, item.name, item, index, item.payload)
185
+ ) : (
186
+ <>
187
+ {itemConfig?.icon ? (
188
+ <itemConfig.icon />
189
+ ) : (
190
+ !hideIndicator && (
191
+ <div
192
+ className={cn('shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)', {
193
+ 'h-2.5 w-2.5': indicator === 'dot',
194
+ 'w-1': indicator === 'line',
195
+ 'w-0 border-[1.5px] border-dashed bg-transparent': indicator === 'dashed',
196
+ 'my-0.5': nestLabel && indicator === 'dashed',
197
+ })}
198
+ style={
199
+ {
200
+ '--color-bg': indicatorColor,
201
+ '--color-border': indicatorColor,
202
+ } as React.CSSProperties
203
+ }
204
+ />
205
+ )
206
+ )}
207
+ <div
208
+ className={cn(
209
+ 'flex flex-1 justify-between leading-none',
210
+ nestLabel ? 'items-end' : 'items-center',
228
211
  )}
229
- <div
230
- className={cn(
231
- 'flex flex-1 justify-between leading-none',
232
- nestLabel ? 'items-end' : 'items-center',
233
- )}
234
- >
235
- <div className="grid gap-1.5">
236
- {nestLabel ? tooltipLabel : null}
237
- <span className="text-muted-foreground">{itemConfig?.label || item.name}</span>
238
- </div>
239
- {item.value && (
240
- <span className="text-foreground font-mono font-medium tabular-nums">
241
- {item.value.toLocaleString()}
242
- </span>
243
- )}
212
+ >
213
+ <div className="grid gap-1.5">
214
+ {nestLabel ? tooltipLabel : null}
215
+ <span className="text-muted-foreground">{itemConfig?.label ?? item.name}</span>
244
216
  </div>
245
- </>
246
- )}
247
- </div>
248
- );
249
- })}
250
- </div>
217
+ {item.value != null && (
218
+ <span className="text-foreground font-mono font-medium tabular-nums">
219
+ {typeof item.value === 'number' ? item.value.toLocaleString() : String(item.value)}
220
+ </span>
221
+ )}
222
+ </div>
223
+ </>
224
+ )}
225
+ </div>
226
+ );
227
+ })}
251
228
  </div>
252
- );
253
- },
254
- );
255
- ChartTooltipContent.displayName = 'ChartTooltip';
229
+ </div>
230
+ );
231
+ }
256
232
 
257
233
  const ChartLegend = RechartsPrimitive.Legend;
258
234
 
259
- const ChartLegendContent = React.forwardRef<
260
- HTMLDivElement,
261
- React.ComponentProps<'div'> &
262
- Pick<RechartsPrimitive.DefaultLegendContentProps, 'payload' | 'verticalAlign'> &
263
- ChartLegendContentBaseProps
264
- >(({ className, hideIcon = false, payload, verticalAlign = 'bottom', nameKey }, ref) => {
235
+ function ChartLegendContent({
236
+ className,
237
+ hideIcon = false,
238
+ payload,
239
+ verticalAlign = 'bottom',
240
+ nameKey,
241
+ }: React.ComponentProps<'div'> & {
242
+ hideIcon?: boolean;
243
+ nameKey?: string;
244
+ } & RechartsPrimitive.DefaultLegendContentProps) {
265
245
  const { config } = useChart();
266
246
 
267
247
  if (!payload?.length) {
@@ -269,19 +249,16 @@ const ChartLegendContent = React.forwardRef<
269
249
  }
270
250
 
271
251
  return (
272
- <div
273
- ref={ref}
274
- className={cn('flex items-center justify-center gap-4', verticalAlign === 'top' ? 'pb-3' : 'pt-3', className)}
275
- >
252
+ <div className={cn('flex items-center justify-center gap-4', verticalAlign === 'top' ? 'pb-3' : 'pt-3', className)}>
276
253
  {payload
277
- .filter((item: RechartsPrimitive.LegendPayload) => item.type !== 'none')
278
- .map((item: RechartsPrimitive.LegendPayload) => {
279
- const key = `${nameKey || item.dataKey || 'value'}`;
254
+ .filter((item) => item.type !== 'none')
255
+ .map((item, index) => {
256
+ const key = `${nameKey ?? item.dataKey ?? 'value'}`;
280
257
  const itemConfig = getPayloadConfigFromPayload(config, item, key);
281
258
 
282
259
  return (
283
260
  <div
284
- key={item.value}
261
+ key={index}
285
262
  className={cn('[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3')}
286
263
  >
287
264
  {itemConfig?.icon && !hideIcon ? (
@@ -300,36 +277,33 @@ const ChartLegendContent = React.forwardRef<
300
277
  })}
301
278
  </div>
302
279
  );
303
- });
304
- ChartLegendContent.displayName = 'ChartLegend';
280
+ }
305
281
 
306
- // Helper to extract item config from a payload.
307
282
  function getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) {
308
283
  if (typeof payload !== 'object' || payload === null) {
309
284
  return undefined;
310
285
  }
311
286
 
312
287
  const payloadPayload =
313
- 'payload' in payload &&
314
- typeof (payload as { payload: unknown }).payload === 'object' &&
315
- (payload as { payload: unknown }).payload !== null
316
- ? ((payload as { payload: unknown }).payload as Record<string, unknown>)
288
+ 'payload' in payload && typeof payload.payload === 'object' && payload.payload !== null
289
+ ? payload.payload
317
290
  : undefined;
318
291
 
319
292
  let configLabelKey: string = key;
320
293
 
321
- if (hasOwnProp(payload as object, key) && typeof (payload as Record<string, unknown>)[key] === 'string') {
322
- configLabelKey = (payload as Record<string, unknown>)[key] as string;
323
- } else if (payloadPayload && hasOwnProp(payloadPayload, key) && typeof payloadPayload[key] === 'string') {
324
- configLabelKey = payloadPayload[key] as string;
294
+ if (key in payload && typeof payload[key as keyof typeof payload] === 'string') {
295
+ configLabelKey = payload[key as keyof typeof payload] as string;
296
+ } else if (
297
+ payloadPayload &&
298
+ key in payloadPayload &&
299
+ typeof payloadPayload[key as keyof typeof payloadPayload] === 'string'
300
+ ) {
301
+ configLabelKey = payloadPayload[key as keyof typeof payloadPayload] as string;
325
302
  }
326
303
 
327
- return hasOwnProp(config, configLabelKey)
328
- ? config[configLabelKey as keyof typeof config]
329
- : hasOwnProp(config, key)
330
- ? config[key as keyof typeof config]
331
- : undefined;
304
+ return configLabelKey in config ? config[configLabelKey] : config[key];
332
305
  }
333
306
 
334
307
  export { ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent };
335
- export type { ChartConfig };
308
+
309
+ // The script was manually reverted here
package/src/checkbox.tsx CHANGED
@@ -1,32 +1,32 @@
1
- 'use client';
2
- import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
3
- import { Check } from 'lucide-react';
1
+ import { Checkbox as CheckboxPrimitive } from 'radix-ui';
4
2
  import * as React from 'react';
5
3
 
6
- import type { CheckboxBaseProps } from '@gv-tech/ui-core';
4
+ import { CheckIcon } from 'lucide-react';
7
5
  import { cn } from './lib/utils';
8
6
 
9
- export interface CheckboxProps
10
- extends
11
- Omit<React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>, keyof CheckboxBaseProps>,
12
- CheckboxBaseProps {}
7
+ import type { CheckboxBaseProps } from '@gv-tech/ui-core';
13
8
 
14
- const Checkbox = React.forwardRef<React.ElementRef<typeof CheckboxPrimitive.Root>, CheckboxProps>(
15
- ({ className, ...props }, ref) => (
9
+ function Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>) {
10
+ return (
16
11
  <CheckboxPrimitive.Root
17
- ref={ref}
12
+ data-slot="checkbox"
18
13
  className={cn(
19
- 'peer border-primary focus-visible:ring-ring data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground grid h-4 w-4 shrink-0 place-content-center rounded-sm border shadow focus-visible:ring-1 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50',
14
+ 'peer border-input focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border transition-colors outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:ring-3 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:ring-3',
20
15
  className,
21
16
  )}
22
17
  {...props}
23
18
  >
24
- <CheckboxPrimitive.Indicator className={cn('grid place-content-center text-current')}>
25
- <Check className="h-4 w-4" />
19
+ <CheckboxPrimitive.Indicator
20
+ data-slot="checkbox-indicator"
21
+ className="grid place-content-center text-current transition-none [&>svg]:size-3.5"
22
+ >
23
+ <CheckIcon />
26
24
  </CheckboxPrimitive.Indicator>
27
25
  </CheckboxPrimitive.Root>
28
- ),
29
- );
30
- Checkbox.displayName = CheckboxPrimitive.Root?.displayName || 'Checkbox';
26
+ );
27
+ }
31
28
 
32
29
  export { Checkbox };
30
+
31
+ // Verify that the component satisfies the ui-core contract
32
+ const _verifyCheckboxContract: CheckboxBaseProps = {} as unknown as React.ComponentProps<typeof Checkbox>;
@@ -1,16 +1,22 @@
1
1
  'use client';
2
- import { CollapsibleBaseProps, CollapsibleContentBaseProps, CollapsibleTriggerBaseProps } from '@gv-tech/ui-core';
3
- import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
4
2
 
5
- const Collapsible = CollapsiblePrimitive.Root;
3
+ import { Collapsible as CollapsiblePrimitive } from 'radix-ui';
6
4
 
7
- const CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;
5
+ import type { CollapsibleBaseProps } from '@gv-tech/ui-core';
8
6
 
9
- const CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;
7
+ function Collapsible({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {
8
+ return <CollapsiblePrimitive.Root data-slot="collapsible" {...props} />;
9
+ }
10
+
11
+ function CollapsibleTrigger({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {
12
+ return <CollapsiblePrimitive.CollapsibleTrigger data-slot="collapsible-trigger" {...props} />;
13
+ }
14
+
15
+ function CollapsibleContent({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {
16
+ return <CollapsiblePrimitive.CollapsibleContent data-slot="collapsible-content" {...props} />;
17
+ }
10
18
 
11
19
  export { Collapsible, CollapsibleContent, CollapsibleTrigger };
12
- export type {
13
- CollapsibleContentBaseProps as CollapsibleContentProps,
14
- CollapsibleBaseProps as CollapsibleProps,
15
- CollapsibleTriggerBaseProps as CollapsibleTriggerProps,
16
- };
20
+
21
+ // Verify that the component satisfies the ui-core contract
22
+ const _verifyCollapsibleContract: CollapsibleBaseProps = {} as unknown as React.ComponentProps<typeof Collapsible>;