@codefast/ui 0.0.9 → 0.0.11

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 (434) hide show
  1. package/dist/accordion.d.mts +7 -7
  2. package/dist/accordion.d.ts +7 -7
  3. package/dist/accordion.js +42 -32
  4. package/dist/accordion.js.map +1 -1
  5. package/dist/accordion.mjs +42 -32
  6. package/dist/accordion.mjs.map +1 -1
  7. package/dist/alert-dialog.d.mts +12 -12
  8. package/dist/alert-dialog.d.ts +12 -12
  9. package/dist/alert-dialog.js +47 -75
  10. package/dist/alert-dialog.js.map +1 -1
  11. package/dist/alert-dialog.mjs +47 -75
  12. package/dist/alert-dialog.mjs.map +1 -1
  13. package/dist/alert.js +5 -30
  14. package/dist/alert.js.map +1 -1
  15. package/dist/alert.mjs +5 -30
  16. package/dist/alert.mjs.map +1 -1
  17. package/dist/aspect-ratio.d.mts +1 -1
  18. package/dist/aspect-ratio.d.ts +1 -1
  19. package/dist/aspect-ratio.js.map +1 -1
  20. package/dist/aspect-ratio.mjs.map +1 -1
  21. package/dist/avatar.d.mts +6 -6
  22. package/dist/avatar.d.ts +6 -6
  23. package/dist/avatar.js +3 -16
  24. package/dist/avatar.js.map +1 -1
  25. package/dist/avatar.mjs +3 -16
  26. package/dist/avatar.mjs.map +1 -1
  27. package/dist/badge.js +1 -5
  28. package/dist/badge.js.map +1 -1
  29. package/dist/badge.mjs +1 -5
  30. package/dist/badge.mjs.map +1 -1
  31. package/dist/blockquote.js +4 -6
  32. package/dist/blockquote.js.map +1 -1
  33. package/dist/blockquote.mjs +4 -6
  34. package/dist/blockquote.mjs.map +1 -1
  35. package/dist/box.js +4 -6
  36. package/dist/box.js.map +1 -1
  37. package/dist/box.mjs +4 -6
  38. package/dist/box.mjs.map +1 -1
  39. package/dist/breadcrumb.js +30 -67
  40. package/dist/breadcrumb.js.map +1 -1
  41. package/dist/breadcrumb.mjs +30 -67
  42. package/dist/breadcrumb.mjs.map +1 -1
  43. package/dist/button.d.mts +1 -0
  44. package/dist/button.d.ts +1 -0
  45. package/dist/button.js +3 -2
  46. package/dist/button.mjs +2 -1
  47. package/dist/calendar.js +7 -19
  48. package/dist/calendar.js.map +1 -1
  49. package/dist/calendar.mjs +6 -18
  50. package/dist/calendar.mjs.map +1 -1
  51. package/dist/card.js +8 -55
  52. package/dist/card.js.map +1 -1
  53. package/dist/card.mjs +8 -55
  54. package/dist/card.mjs.map +1 -1
  55. package/dist/carousel.js +58 -64
  56. package/dist/carousel.js.map +1 -1
  57. package/dist/carousel.mjs +57 -63
  58. package/dist/carousel.mjs.map +1 -1
  59. package/dist/checkbox-cards.d.mts +15 -0
  60. package/dist/checkbox-cards.d.ts +15 -0
  61. package/dist/checkbox-cards.js +56 -0
  62. package/dist/checkbox-cards.js.map +1 -0
  63. package/dist/checkbox-cards.mjs +56 -0
  64. package/dist/checkbox-cards.mjs.map +1 -0
  65. package/dist/checkbox-group.d.mts +13 -0
  66. package/dist/checkbox-group.d.ts +13 -0
  67. package/dist/checkbox-group.js +44 -0
  68. package/dist/checkbox-group.js.map +1 -0
  69. package/dist/checkbox-group.mjs +44 -0
  70. package/dist/checkbox-group.mjs.map +1 -0
  71. package/dist/checkbox-group.primitive.d.mts +38 -0
  72. package/dist/checkbox-group.primitive.d.ts +38 -0
  73. package/dist/checkbox-group.primitive.js +19 -0
  74. package/dist/checkbox-group.primitive.js.map +1 -0
  75. package/dist/checkbox-group.primitive.mjs +19 -0
  76. package/dist/checkbox-group.primitive.mjs.map +1 -0
  77. package/dist/checkbox.d.mts +2 -2
  78. package/dist/checkbox.d.ts +2 -2
  79. package/dist/checkbox.js +5 -1
  80. package/dist/checkbox.js.map +1 -1
  81. package/dist/checkbox.mjs +5 -1
  82. package/dist/checkbox.mjs.map +1 -1
  83. package/dist/chunk-3ZZ3SRTJ.js +148 -0
  84. package/dist/chunk-3ZZ3SRTJ.js.map +1 -0
  85. package/dist/{chunk-MJDKD2K4.mjs → chunk-6J6VPUBP.mjs} +9 -10
  86. package/dist/chunk-6J6VPUBP.mjs.map +1 -0
  87. package/dist/{chunk-PKB2G726.js → chunk-7S4DOWLB.js} +9 -10
  88. package/dist/chunk-7S4DOWLB.js.map +1 -0
  89. package/dist/{chunk-JOJW7BBY.js → chunk-BWCO2ZQQ.js} +29 -8
  90. package/dist/chunk-BWCO2ZQQ.js.map +1 -0
  91. package/dist/chunk-EWS3N4OZ.mjs +148 -0
  92. package/dist/chunk-EWS3N4OZ.mjs.map +1 -0
  93. package/dist/{chunk-PIU627A3.mjs → chunk-FGI3JA75.mjs} +1 -1
  94. package/dist/chunk-FGI3JA75.mjs.map +1 -0
  95. package/dist/{chunk-GRKABVK4.js → chunk-IVYGBU4G.js} +1 -1
  96. package/dist/chunk-IVYGBU4G.js.map +1 -0
  97. package/dist/chunk-IXEJO7ZP.js +86 -0
  98. package/dist/chunk-IXEJO7ZP.js.map +1 -0
  99. package/dist/chunk-JULVZPCS.mjs +120 -0
  100. package/dist/chunk-JULVZPCS.mjs.map +1 -0
  101. package/dist/chunk-LNSEYAPJ.js +121 -0
  102. package/dist/chunk-LNSEYAPJ.js.map +1 -0
  103. package/dist/chunk-MDSPK3M6.js +54 -0
  104. package/dist/chunk-MDSPK3M6.js.map +1 -0
  105. package/dist/chunk-MOJNV3XZ.js +120 -0
  106. package/dist/chunk-MOJNV3XZ.js.map +1 -0
  107. package/dist/chunk-OK63Q6EJ.mjs +121 -0
  108. package/dist/chunk-OK63Q6EJ.mjs.map +1 -0
  109. package/dist/chunk-V2254PQL.mjs +54 -0
  110. package/dist/chunk-V2254PQL.mjs.map +1 -0
  111. package/dist/chunk-WFXEFJRB.mjs +77 -0
  112. package/dist/chunk-WFXEFJRB.mjs.map +1 -0
  113. package/dist/chunk-XCKLBP2V.mjs +86 -0
  114. package/dist/chunk-XCKLBP2V.mjs.map +1 -0
  115. package/dist/code.js +4 -6
  116. package/dist/code.js.map +1 -1
  117. package/dist/code.mjs +4 -6
  118. package/dist/code.mjs.map +1 -1
  119. package/dist/collapsible.d.mts +3 -3
  120. package/dist/collapsible.d.ts +3 -3
  121. package/dist/collapsible.js.map +1 -1
  122. package/dist/collapsible.mjs.map +1 -1
  123. package/dist/command.d.mts +11 -10
  124. package/dist/command.d.ts +11 -10
  125. package/dist/command.js +10 -44
  126. package/dist/command.js.map +1 -1
  127. package/dist/command.mjs +10 -44
  128. package/dist/command.mjs.map +1 -1
  129. package/dist/container.js +4 -6
  130. package/dist/container.js.map +1 -1
  131. package/dist/container.mjs +4 -6
  132. package/dist/container.mjs.map +1 -1
  133. package/dist/context-menu.d.mts +18 -18
  134. package/dist/context-menu.d.ts +18 -18
  135. package/dist/context-menu.js +108 -124
  136. package/dist/context-menu.js.map +1 -1
  137. package/dist/context-menu.mjs +109 -125
  138. package/dist/context-menu.mjs.map +1 -1
  139. package/dist/data-table.d.mts +1 -1
  140. package/dist/data-table.d.ts +1 -1
  141. package/dist/data-table.js +131 -149
  142. package/dist/data-table.js.map +1 -1
  143. package/dist/data-table.mjs +120 -138
  144. package/dist/data-table.mjs.map +1 -1
  145. package/dist/dialog.d.mts +9 -9
  146. package/dist/dialog.d.ts +9 -9
  147. package/dist/dialog.js +2 -2
  148. package/dist/dialog.mjs +1 -1
  149. package/dist/drawer.d.mts +2 -2
  150. package/dist/drawer.d.ts +2 -2
  151. package/dist/drawer.js +30 -63
  152. package/dist/drawer.js.map +1 -1
  153. package/dist/drawer.mjs +30 -63
  154. package/dist/drawer.mjs.map +1 -1
  155. package/dist/dropdown-menu.d.mts +16 -16
  156. package/dist/dropdown-menu.d.ts +16 -16
  157. package/dist/dropdown-menu.js +2 -2
  158. package/dist/dropdown-menu.mjs +1 -1
  159. package/dist/em.js +4 -6
  160. package/dist/em.js.map +1 -1
  161. package/dist/em.mjs +4 -6
  162. package/dist/em.mjs.map +1 -1
  163. package/dist/form.js +23 -54
  164. package/dist/form.js.map +1 -1
  165. package/dist/form.mjs +23 -54
  166. package/dist/form.mjs.map +1 -1
  167. package/dist/heading.js +4 -6
  168. package/dist/heading.js.map +1 -1
  169. package/dist/heading.mjs +4 -6
  170. package/dist/heading.mjs.map +1 -1
  171. package/dist/hover-card.d.mts +4 -4
  172. package/dist/hover-card.d.ts +4 -4
  173. package/dist/hover-card.js +15 -13
  174. package/dist/hover-card.js.map +1 -1
  175. package/dist/hover-card.mjs +15 -13
  176. package/dist/hover-card.mjs.map +1 -1
  177. package/dist/input-otp.js +32 -37
  178. package/dist/input-otp.js.map +1 -1
  179. package/dist/input-otp.mjs +32 -37
  180. package/dist/input-otp.mjs.map +1 -1
  181. package/dist/input.js +10 -14
  182. package/dist/input.js.map +1 -1
  183. package/dist/input.mjs +10 -14
  184. package/dist/input.mjs.map +1 -1
  185. package/dist/kbd.js +14 -16
  186. package/dist/kbd.js.map +1 -1
  187. package/dist/kbd.mjs +14 -16
  188. package/dist/kbd.mjs.map +1 -1
  189. package/dist/label.d.mts +2 -2
  190. package/dist/label.d.ts +2 -2
  191. package/dist/label.js +2 -2
  192. package/dist/label.mjs +1 -1
  193. package/dist/menubar.d.mts +21 -21
  194. package/dist/menubar.d.ts +21 -21
  195. package/dist/menubar.js +73 -93
  196. package/dist/menubar.js.map +1 -1
  197. package/dist/menubar.mjs +74 -94
  198. package/dist/menubar.mjs.map +1 -1
  199. package/dist/navigation-menu.d.mts +16 -16
  200. package/dist/navigation-menu.d.ts +16 -16
  201. package/dist/navigation-menu.js +89 -93
  202. package/dist/navigation-menu.js.map +1 -1
  203. package/dist/navigation-menu.mjs +89 -93
  204. package/dist/navigation-menu.mjs.map +1 -1
  205. package/dist/pagination.js +19 -58
  206. package/dist/pagination.js.map +1 -1
  207. package/dist/pagination.mjs +19 -58
  208. package/dist/pagination.mjs.map +1 -1
  209. package/dist/popover.d.mts +7 -7
  210. package/dist/popover.d.ts +7 -7
  211. package/dist/popover.js +16 -21
  212. package/dist/popover.js.map +1 -1
  213. package/dist/popover.mjs +16 -21
  214. package/dist/popover.mjs.map +1 -1
  215. package/dist/pre.js +4 -6
  216. package/dist/pre.js.map +1 -1
  217. package/dist/pre.mjs +4 -6
  218. package/dist/pre.mjs.map +1 -1
  219. package/dist/progress.d.mts +2 -2
  220. package/dist/progress.d.ts +2 -2
  221. package/dist/progress.js +1 -4
  222. package/dist/progress.js.map +1 -1
  223. package/dist/progress.mjs +1 -4
  224. package/dist/progress.mjs.map +1 -1
  225. package/dist/quote.js +4 -6
  226. package/dist/quote.js.map +1 -1
  227. package/dist/quote.mjs +4 -6
  228. package/dist/quote.mjs.map +1 -1
  229. package/dist/radio-cards.d.mts +9 -0
  230. package/dist/radio-cards.d.ts +9 -0
  231. package/dist/radio-cards.js +36 -0
  232. package/dist/radio-cards.js.map +1 -0
  233. package/dist/radio-cards.mjs +36 -0
  234. package/dist/radio-cards.mjs.map +1 -0
  235. package/dist/radio-group.d.mts +4 -4
  236. package/dist/radio-group.d.ts +4 -4
  237. package/dist/radio-group.js +3 -9
  238. package/dist/radio-group.js.map +1 -1
  239. package/dist/radio-group.mjs +3 -9
  240. package/dist/radio-group.mjs.map +1 -1
  241. package/dist/radio.d.mts +8 -0
  242. package/dist/radio.d.ts +8 -0
  243. package/dist/radio.js +35 -0
  244. package/dist/radio.js.map +1 -0
  245. package/dist/radio.mjs +35 -0
  246. package/dist/radio.mjs.map +1 -0
  247. package/dist/resizable.d.mts +2 -2
  248. package/dist/resizable.d.ts +2 -2
  249. package/dist/resizable.js +3 -5
  250. package/dist/resizable.js.map +1 -1
  251. package/dist/resizable.mjs +3 -5
  252. package/dist/resizable.mjs.map +1 -1
  253. package/dist/scroll-area.d.mts +4 -4
  254. package/dist/scroll-area.d.ts +4 -4
  255. package/dist/scroll-area.js +23 -29
  256. package/dist/scroll-area.js.map +1 -1
  257. package/dist/scroll-area.mjs +23 -29
  258. package/dist/scroll-area.mjs.map +1 -1
  259. package/dist/section.js +4 -6
  260. package/dist/section.js.map +1 -1
  261. package/dist/section.mjs +4 -6
  262. package/dist/section.mjs.map +1 -1
  263. package/dist/segmented.d.mts +22 -0
  264. package/dist/segmented.d.ts +22 -0
  265. package/dist/segmented.js +126 -0
  266. package/dist/segmented.js.map +1 -0
  267. package/dist/segmented.mjs +126 -0
  268. package/dist/segmented.mjs.map +1 -0
  269. package/dist/select.d.mts +17 -17
  270. package/dist/select.d.ts +17 -17
  271. package/dist/select.js +2 -2
  272. package/dist/select.mjs +1 -1
  273. package/dist/separator.d.mts +2 -2
  274. package/dist/separator.d.ts +2 -2
  275. package/dist/separator.js +1 -5
  276. package/dist/separator.js.map +1 -1
  277. package/dist/separator.mjs +1 -5
  278. package/dist/separator.mjs.map +1 -1
  279. package/dist/sheet.d.mts +9 -9
  280. package/dist/sheet.d.ts +9 -9
  281. package/dist/sheet.js +35 -76
  282. package/dist/sheet.js.map +1 -1
  283. package/dist/sheet.mjs +35 -76
  284. package/dist/sheet.mjs.map +1 -1
  285. package/dist/skeleton.js +1 -7
  286. package/dist/skeleton.js.map +1 -1
  287. package/dist/skeleton.mjs +1 -7
  288. package/dist/skeleton.mjs.map +1 -1
  289. package/dist/slider.d.mts +2 -2
  290. package/dist/slider.d.ts +2 -2
  291. package/dist/slider.js +10 -5
  292. package/dist/slider.js.map +1 -1
  293. package/dist/slider.mjs +10 -5
  294. package/dist/slider.mjs.map +1 -1
  295. package/dist/sonner.js +1 -6
  296. package/dist/sonner.js.map +1 -1
  297. package/dist/sonner.mjs +1 -6
  298. package/dist/sonner.mjs.map +1 -1
  299. package/dist/spinner.d.mts +8 -0
  300. package/dist/spinner.d.ts +8 -0
  301. package/dist/spinner.js +8 -0
  302. package/dist/spinner.js.map +1 -0
  303. package/dist/spinner.mjs +8 -0
  304. package/dist/spinner.mjs.map +1 -0
  305. package/dist/strong.js +4 -6
  306. package/dist/strong.js.map +1 -1
  307. package/dist/strong.mjs +4 -6
  308. package/dist/strong.mjs.map +1 -1
  309. package/dist/styles.css +1 -1
  310. package/dist/styles.css.map +1 -1
  311. package/dist/switch.d.mts +2 -2
  312. package/dist/switch.d.ts +2 -2
  313. package/dist/switch.js +2 -1
  314. package/dist/switch.js.map +1 -1
  315. package/dist/switch.mjs +2 -1
  316. package/dist/switch.mjs.map +1 -1
  317. package/dist/table.js +22 -80
  318. package/dist/table.js.map +1 -1
  319. package/dist/table.mjs +22 -80
  320. package/dist/table.mjs.map +1 -1
  321. package/dist/tabs.d.mts +7 -7
  322. package/dist/tabs.d.ts +7 -7
  323. package/dist/tabs.js +4 -2
  324. package/dist/tabs.js.map +1 -1
  325. package/dist/tabs.mjs +4 -2
  326. package/dist/tabs.mjs.map +1 -1
  327. package/dist/text.js +4 -6
  328. package/dist/text.js.map +1 -1
  329. package/dist/text.mjs +4 -6
  330. package/dist/text.mjs.map +1 -1
  331. package/dist/textarea.js +14 -15
  332. package/dist/textarea.js.map +1 -1
  333. package/dist/textarea.mjs +14 -15
  334. package/dist/textarea.mjs.map +1 -1
  335. package/dist/toggle-group.d.mts +2 -2
  336. package/dist/toggle-group.d.ts +2 -2
  337. package/dist/toggle-group.js +41 -34
  338. package/dist/toggle-group.js.map +1 -1
  339. package/dist/toggle-group.mjs +40 -33
  340. package/dist/toggle-group.mjs.map +1 -1
  341. package/dist/toggle.d.mts +2 -2
  342. package/dist/toggle.d.ts +2 -2
  343. package/dist/toggle.js +2 -2
  344. package/dist/toggle.mjs +1 -1
  345. package/dist/tooltip.d.mts +7 -7
  346. package/dist/tooltip.d.ts +7 -7
  347. package/dist/tooltip.js +15 -20
  348. package/dist/tooltip.js.map +1 -1
  349. package/dist/tooltip.mjs +15 -20
  350. package/dist/tooltip.mjs.map +1 -1
  351. package/package.json +43 -6
  352. package/src/accordion.tsx +53 -43
  353. package/src/alert-dialog.tsx +73 -92
  354. package/src/alert.tsx +24 -41
  355. package/src/aspect-ratio.tsx +2 -1
  356. package/src/avatar.tsx +19 -36
  357. package/src/badge.tsx +3 -7
  358. package/src/blockquote.tsx +9 -8
  359. package/src/box.tsx +7 -6
  360. package/src/breadcrumb.tsx +54 -63
  361. package/src/button.tsx +42 -16
  362. package/src/calendar.tsx +6 -22
  363. package/src/card.tsx +40 -56
  364. package/src/carousel.tsx +95 -81
  365. package/src/checkbox-cards.tsx +68 -0
  366. package/src/checkbox-group.primitive.tsx +199 -0
  367. package/src/checkbox-group.tsx +57 -0
  368. package/src/checkbox.tsx +10 -6
  369. package/src/code.tsx +8 -6
  370. package/src/collapsible.tsx +4 -3
  371. package/src/command.tsx +53 -90
  372. package/src/container.tsx +8 -6
  373. package/src/context-menu.tsx +163 -175
  374. package/src/data-table.tsx +26 -43
  375. package/src/dialog.tsx +58 -77
  376. package/src/drawer.tsx +48 -78
  377. package/src/dropdown-menu.tsx +143 -154
  378. package/src/em.tsx +8 -6
  379. package/src/form.tsx +61 -86
  380. package/src/heading.tsx +8 -6
  381. package/src/hover-card.tsx +22 -20
  382. package/src/input-otp.tsx +50 -48
  383. package/src/input.tsx +14 -15
  384. package/src/kbd.tsx +18 -16
  385. package/src/label.tsx +5 -5
  386. package/src/menubar.tsx +133 -149
  387. package/src/navigation-menu.tsx +110 -114
  388. package/src/pagination.tsx +26 -48
  389. package/src/popover.tsx +29 -31
  390. package/src/pre.tsx +8 -6
  391. package/src/progress.tsx +6 -9
  392. package/src/quote.tsx +8 -6
  393. package/src/radio-cards.tsx +50 -0
  394. package/src/radio-group.tsx +14 -24
  395. package/src/radio.tsx +44 -0
  396. package/src/resizable.tsx +5 -7
  397. package/src/scroll-area.tsx +29 -40
  398. package/src/section.tsx +8 -6
  399. package/src/segmented.tsx +176 -0
  400. package/src/select.tsx +106 -115
  401. package/src/separator.tsx +7 -14
  402. package/src/sheet.tsx +50 -76
  403. package/src/skeleton.tsx +2 -6
  404. package/src/slider.tsx +12 -10
  405. package/src/sonner.tsx +3 -7
  406. package/src/spinner.tsx +71 -0
  407. package/src/strong.tsx +8 -6
  408. package/src/switch.tsx +7 -6
  409. package/src/table.tsx +60 -82
  410. package/src/tabs.tsx +20 -18
  411. package/src/text.tsx +8 -8
  412. package/src/textarea.tsx +16 -14
  413. package/src/toggle-group.tsx +59 -58
  414. package/src/toggle.tsx +14 -13
  415. package/src/tooltip.tsx +28 -30
  416. package/dist/chunk-3BDLWZ3W.js +0 -158
  417. package/dist/chunk-3BDLWZ3W.js.map +0 -1
  418. package/dist/chunk-43YGVOCO.js +0 -135
  419. package/dist/chunk-43YGVOCO.js.map +0 -1
  420. package/dist/chunk-AJLEALVP.mjs +0 -112
  421. package/dist/chunk-AJLEALVP.mjs.map +0 -1
  422. package/dist/chunk-D6NQEMTJ.js +0 -112
  423. package/dist/chunk-D6NQEMTJ.js.map +0 -1
  424. package/dist/chunk-FATZHRHR.mjs +0 -56
  425. package/dist/chunk-FATZHRHR.mjs.map +0 -1
  426. package/dist/chunk-GRKABVK4.js.map +0 -1
  427. package/dist/chunk-JOJW7BBY.js.map +0 -1
  428. package/dist/chunk-KV4VL2ZF.mjs +0 -135
  429. package/dist/chunk-KV4VL2ZF.mjs.map +0 -1
  430. package/dist/chunk-MJDKD2K4.mjs.map +0 -1
  431. package/dist/chunk-NCEN3XBK.mjs +0 -158
  432. package/dist/chunk-NCEN3XBK.mjs.map +0 -1
  433. package/dist/chunk-PIU627A3.mjs.map +0 -1
  434. package/dist/chunk-PKB2G726.js.map +0 -1
@@ -8,35 +8,29 @@ import { cn } from "./utils";
8
8
  * Component: RadioGroup
9
9
  * -------------------------------------------------------------------------- */
10
10
 
11
- type RadioGroupProps = RadioGroupPrimitive.RadioGroupProps;
12
- const RadioGroup = React.forwardRef<
13
- React.ElementRef<typeof RadioGroupPrimitive.Root>,
14
- RadioGroupProps
15
- >(({ className, ...props }, ref) => {
16
- return (
17
- <RadioGroupPrimitive.Root
18
- className={cn("grid gap-2", className)}
19
- {...props}
20
- ref={ref}
21
- />
22
- );
11
+ type RadioGroupElement = React.ElementRef<typeof RadioGroupPrimitive.Root>;
12
+ type RadioGroupProps = React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>;
13
+
14
+ const RadioGroup = React.forwardRef<RadioGroupElement, RadioGroupProps>(({ className, ...props }, ref) => {
15
+ return <RadioGroupPrimitive.Root className={cn("grid gap-2", className)} {...props} ref={ref} />;
23
16
  });
17
+
24
18
  RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
25
19
 
26
20
  /* -----------------------------------------------------------------------------
27
21
  * Component: RadioGroupItem
28
22
  * -------------------------------------------------------------------------- */
29
23
 
30
- type RadioGroupItemProps = RadioGroupPrimitive.RadioGroupItemProps;
31
- const RadioGroupItem = React.forwardRef<
32
- React.ElementRef<typeof RadioGroupPrimitive.Item>,
33
- RadioGroupItemProps
34
- >(({ className, ...props }, ref) => {
24
+ type RadioGroupItemElement = React.ElementRef<typeof RadioGroupPrimitive.Item>;
25
+ type RadioGroupItemProps = React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>;
26
+
27
+ const RadioGroupItem = React.forwardRef<RadioGroupItemElement, RadioGroupItemProps>(({ className, ...props }, ref) => {
35
28
  return (
36
29
  <RadioGroupPrimitive.Item
37
30
  ref={ref}
38
31
  className={cn(
39
- "border-compound text-compound-foreground focus-visible:ring-offset-background focus-visible:ring-ring aria-checked:border-primary group aspect-square size-4 rounded-full border focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
32
+ "border-compound/70 hover:border-compound text-compound-foreground aria-checked:border-primary group peer aspect-square size-4 rounded-full border disabled:cursor-not-allowed disabled:opacity-50",
33
+ "focus-visible:ring-ring focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2",
40
34
  className,
41
35
  )}
42
36
  {...props}
@@ -49,15 +43,11 @@ const RadioGroupItem = React.forwardRef<
49
43
  </RadioGroupPrimitive.Item>
50
44
  );
51
45
  });
46
+
52
47
  RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
53
48
 
54
49
  /* -----------------------------------------------------------------------------
55
50
  * Exports
56
51
  * -------------------------------------------------------------------------- */
57
52
 
58
- export {
59
- RadioGroup,
60
- RadioGroupItem,
61
- type RadioGroupProps,
62
- type RadioGroupItemProps,
63
- };
53
+ export { RadioGroup, RadioGroupItem, type RadioGroupProps, type RadioGroupItemProps };
package/src/radio.tsx ADDED
@@ -0,0 +1,44 @@
1
+ "use client";
2
+
3
+ import * as React from "react";
4
+ import { composeEventHandlers } from "@radix-ui/primitive";
5
+ import { cn } from "./utils";
6
+
7
+ /* -----------------------------------------------------------------------------
8
+ * Component: Radio
9
+ * -------------------------------------------------------------------------- */
10
+
11
+ type RadioElement = HTMLInputElement;
12
+
13
+ interface RadioProps extends React.InputHTMLAttributes<HTMLInputElement> {
14
+ onValueChange?: (value: string) => void;
15
+ }
16
+
17
+ const Radio = React.forwardRef<RadioElement, RadioProps>(({ className, onValueChange, onChange, ...props }, ref) => {
18
+ return (
19
+ <input
20
+ ref={ref}
21
+ type="radio"
22
+ onChange={composeEventHandlers(onChange, (event) => onValueChange?.(event.currentTarget.value))}
23
+ className={cn(
24
+ "peer relative flex appearance-none items-center justify-center rounded-full",
25
+ "disabled:cursor-not-allowed disabled:opacity-50",
26
+ "before:border-compound/70 before:size-4 before:rounded-full before:border",
27
+ "hover:before:border-compound",
28
+ "checked:before:border-primary",
29
+ "checked:after:bg-primary checked:after:absolute checked:after:size-2.5 checked:after:rounded-full",
30
+ "focus-visible:ring-ring focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2",
31
+ className,
32
+ )}
33
+ {...props}
34
+ />
35
+ );
36
+ });
37
+
38
+ Radio.displayName = "Radio";
39
+
40
+ /* -----------------------------------------------------------------------------
41
+ * Exports
42
+ * -------------------------------------------------------------------------- */
43
+
44
+ export { Radio };
package/src/resizable.tsx CHANGED
@@ -12,13 +12,10 @@ import { cn } from "./utils";
12
12
  function ResizablePanelGroup({
13
13
  className,
14
14
  ...props
15
- }: ResizablePrimitive.PanelGroupProps): React.JSX.Element {
15
+ }: React.ComponentProps<typeof ResizablePrimitive.PanelGroup>): React.JSX.Element {
16
16
  return (
17
17
  <ResizablePrimitive.PanelGroup
18
- className={cn(
19
- "flex h-full w-full data-[panel-group-direction=vertical]:flex-col",
20
- className,
21
- )}
18
+ className={cn("flex h-full w-full", "data-[panel-group-direction=vertical]:flex-col", className)}
22
19
  {...props}
23
20
  />
24
21
  );
@@ -38,13 +35,14 @@ function ResizableHandle({
38
35
  withHandle,
39
36
  className,
40
37
  ...props
41
- }: ResizablePrimitive.PanelResizeHandleProps & {
38
+ }: React.ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {
42
39
  withHandle?: boolean;
43
40
  }): React.JSX.Element {
44
41
  return (
45
42
  <ResizablePrimitive.PanelResizeHandle
46
43
  className={cn(
47
- "bg-border focus-visible:ring-ring focus-visible:ring-offset-background relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90",
44
+ "bg-border relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90",
45
+ "focus-visible:ring-ring focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2",
48
46
  className,
49
47
  )}
50
48
  {...props}
@@ -8,60 +8,49 @@ import { cn } from "./utils";
8
8
  * Component: ScrollArea
9
9
  * -------------------------------------------------------------------------- */
10
10
 
11
- type ScrollAreaProps = ScrollAreaPrimitive.ScrollAreaProps;
12
- const ScrollArea = React.forwardRef<
13
- React.ElementRef<typeof ScrollAreaPrimitive.Root>,
14
- ScrollAreaProps
15
- >(({ className, children, ...props }, ref) => (
16
- <ScrollAreaPrimitive.Root
17
- ref={ref}
18
- className={cn("relative overflow-hidden", className)}
19
- {...props}
20
- >
21
- <ScrollAreaPrimitive.Viewport className="size-full rounded-[inherit]">
22
- {children}
23
- </ScrollAreaPrimitive.Viewport>
11
+ type ScrollAreaElement = React.ElementRef<typeof ScrollAreaPrimitive.Root>;
12
+ type ScrollAreaProps = React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>;
13
+
14
+ const ScrollArea = React.forwardRef<ScrollAreaElement, ScrollAreaProps>(({ className, children, ...props }, ref) => (
15
+ <ScrollAreaPrimitive.Root ref={ref} className={cn("relative overflow-hidden", className)} {...props}>
16
+ <ScrollAreaPrimitive.Viewport className="size-full rounded-[inherit]">{children}</ScrollAreaPrimitive.Viewport>
24
17
  <ScrollAreaScrollbar orientation="vertical" />
25
18
  <ScrollAreaScrollbar orientation="horizontal" />
26
19
  <ScrollAreaPrimitive.Corner />
27
20
  </ScrollAreaPrimitive.Root>
28
21
  ));
22
+
29
23
  ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
30
24
 
31
25
  /* -----------------------------------------------------------------------------
32
26
  * Component: ScrollAreaScrollbar
33
27
  * -------------------------------------------------------------------------- */
34
28
 
35
- type ScrollAreaScrollbarProps = ScrollAreaPrimitive.ScrollAreaScrollbarProps;
36
- const ScrollAreaScrollbar = React.forwardRef<
37
- React.ElementRef<typeof ScrollAreaPrimitive.Scrollbar>,
38
- ScrollAreaScrollbarProps
39
- >(({ className, orientation = "vertical", ...props }, ref) => (
40
- <ScrollAreaPrimitive.Scrollbar
41
- ref={ref}
42
- orientation={orientation}
43
- className={cn(
44
- "flex touch-none select-none transition-colors",
45
- orientation === "vertical" &&
46
- "h-full w-2.5 border-l border-l-transparent p-px",
47
- orientation === "horizontal" &&
48
- "h-2.5 flex-col border-t border-t-transparent p-px",
49
- className,
50
- )}
51
- {...props}
52
- >
53
- <ScrollAreaPrimitive.ScrollAreaThumb className="bg-border relative flex-1 rounded-full" />
54
- </ScrollAreaPrimitive.Scrollbar>
55
- ));
29
+ type ScrollAreaScrollbarElement = React.ElementRef<typeof ScrollAreaPrimitive.Scrollbar>;
30
+ type ScrollAreaScrollbarProps = React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Scrollbar>;
31
+
32
+ const ScrollAreaScrollbar = React.forwardRef<ScrollAreaScrollbarElement, ScrollAreaScrollbarProps>(
33
+ ({ className, orientation = "vertical", ...props }, ref) => (
34
+ <ScrollAreaPrimitive.Scrollbar
35
+ ref={ref}
36
+ orientation={orientation}
37
+ className={cn(
38
+ "flex touch-none select-none transition-colors",
39
+ orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent p-px",
40
+ orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-px",
41
+ className,
42
+ )}
43
+ {...props}
44
+ >
45
+ <ScrollAreaPrimitive.ScrollAreaThumb className="bg-border relative flex-1 rounded-full" />
46
+ </ScrollAreaPrimitive.Scrollbar>
47
+ ),
48
+ );
49
+
56
50
  ScrollAreaScrollbar.displayName = ScrollAreaPrimitive.Scrollbar.displayName;
57
51
 
58
52
  /* -----------------------------------------------------------------------------
59
53
  * Exports
60
54
  * -------------------------------------------------------------------------- */
61
55
 
62
- export {
63
- ScrollArea,
64
- ScrollAreaScrollbar,
65
- type ScrollAreaProps,
66
- type ScrollAreaScrollbarProps,
67
- };
56
+ export { ScrollArea, ScrollAreaScrollbar, type ScrollAreaProps, type ScrollAreaScrollbarProps };
package/src/section.tsx CHANGED
@@ -5,16 +5,18 @@ import { Slot } from "@radix-ui/react-slot";
5
5
  * Component: Section
6
6
  * -------------------------------------------------------------------------- */
7
7
 
8
+ type SectionElement = HTMLElement;
9
+
8
10
  interface SectionProps extends React.HTMLAttributes<HTMLElement> {
9
11
  asChild?: boolean;
10
12
  }
11
- const Section = React.forwardRef<HTMLElement, SectionProps>(
12
- ({ asChild, ...props }, ref) => {
13
- const Comp = asChild ? Slot : "section";
14
13
 
15
- return <Comp ref={ref} {...props} />;
16
- },
17
- );
14
+ const Section = React.forwardRef<SectionElement, SectionProps>(({ asChild, ...props }, ref) => {
15
+ const Component = asChild ? Slot : "section";
16
+
17
+ return <Component ref={ref} {...props} />;
18
+ });
19
+
18
20
  Section.displayName = "Section";
19
21
 
20
22
  /* -----------------------------------------------------------------------------
@@ -0,0 +1,176 @@
1
+ "use client";
2
+
3
+ import * as React from "react";
4
+ import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
5
+ import { useControllableState } from "@radix-ui/react-use-controllable-state";
6
+ import { createContextScope, type Scope } from "@radix-ui/react-context";
7
+ import { composeEventHandlers } from "@radix-ui/primitive";
8
+ import { cn } from "./utils";
9
+
10
+ type RemovedProps = "value" | "asChild" | "defaultChecked" | "defaultValue";
11
+
12
+ /* -----------------------------------------------------------------------------
13
+ * Component: Segmented
14
+ * -------------------------------------------------------------------------- */
15
+
16
+ const SEGMENTED_NAME = "Segmented";
17
+
18
+ type ScopedProps<P> = P & { __scopeSegmented?: Scope };
19
+
20
+ const [createSegmentedContext] = createContextScope(SEGMENTED_NAME);
21
+
22
+ interface Offset {
23
+ left: number;
24
+ top: number;
25
+ }
26
+
27
+ interface SegmentedContextValue {
28
+ offset: Offset;
29
+ setOffset: React.Dispatch<React.SetStateAction<Offset>>;
30
+ }
31
+
32
+ const [SegmentedProvider, useSegmentedContext] = createSegmentedContext<SegmentedContextValue>(SEGMENTED_NAME);
33
+
34
+ type SegmentedElement = React.ElementRef<typeof ToggleGroupPrimitive.Root>;
35
+ type SegmentedProps = Omit<
36
+ React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root>,
37
+ RemovedProps | "disabled" | "type" | "onValueChange"
38
+ > & {
39
+ value?: string;
40
+ defaultValue?: string;
41
+ onValueChange?: (value: string) => void;
42
+ };
43
+
44
+ const Segmented = React.forwardRef<SegmentedElement, SegmentedProps>(
45
+ (
46
+ {
47
+ __scopeSegmented,
48
+ children,
49
+ className,
50
+ value: valueProp,
51
+ onValueChange: onValueChangeProp,
52
+ defaultValue: defaultValueProp,
53
+ ...props
54
+ }: ScopedProps<SegmentedProps>,
55
+ ref,
56
+ ) => {
57
+ const [value, setValue] = useControllableState({
58
+ prop: valueProp,
59
+ onChange: onValueChangeProp,
60
+ defaultProp: defaultValueProp,
61
+ });
62
+ const childCount = React.Children.count(children);
63
+ const [offset, setOffset] = React.useState<Offset>({
64
+ left: 0,
65
+ top: 0,
66
+ });
67
+
68
+ return (
69
+ <SegmentedProvider scope={__scopeSegmented} offset={offset} setOffset={setOffset}>
70
+ <ToggleGroupPrimitive.Root
71
+ ref={ref}
72
+ className={cn(
73
+ "bg-background relative isolate inline-grid h-10 min-w-max auto-cols-fr grid-flow-col items-stretch rounded-md border text-center align-top shadow-sm",
74
+ className,
75
+ )}
76
+ value={value}
77
+ onValueChange={(valueChanged) => {
78
+ if (valueChanged) {
79
+ setValue(valueChanged);
80
+ }
81
+ }}
82
+ type="single"
83
+ {...props}
84
+ style={
85
+ {
86
+ "--offset-left": `${offset.left.toString()}px`,
87
+ "--offset-top": `${offset.top.toString()}px`,
88
+ ...props.style,
89
+ } as React.CSSProperties
90
+ }
91
+ >
92
+ {children}
93
+ <div
94
+ className={cn(
95
+ "pointer-events-none absolute -z-[1] h-full translate-x-[var(--offset-left)] transition-transform",
96
+ "before:bg-accent before:absolute before:inset-0 before:rounded",
97
+ )}
98
+ style={
99
+ {
100
+ width: `calc(100% / ${childCount.toString()})`,
101
+ } as React.CSSProperties
102
+ }
103
+ />
104
+ </ToggleGroupPrimitive.Root>
105
+ </SegmentedProvider>
106
+ );
107
+ },
108
+ );
109
+
110
+ Segmented.displayName = SEGMENTED_NAME;
111
+
112
+ /* -----------------------------------------------------------------------------
113
+ * Component: SegmentedItem
114
+ * -------------------------------------------------------------------------- */
115
+
116
+ const SEGMENTED_ITEM_NAME = "SegmentedItem";
117
+
118
+ type SegmentedItemElement = React.ElementRef<typeof ToggleGroupPrimitive.Item>;
119
+ type SegmentedItemProps = Omit<
120
+ React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item>,
121
+ RemovedProps | "disabled" | "type"
122
+ > & {
123
+ value: string;
124
+ };
125
+
126
+ const SegmentedItem = React.forwardRef<SegmentedItemElement, SegmentedItemProps>(
127
+ ({ __scopeSegmented, children, className, onClick, ...props }: ScopedProps<SegmentedItemProps>, ref) => {
128
+ const { setOffset } = useSegmentedContext(SEGMENTED_ITEM_NAME, __scopeSegmented);
129
+
130
+ return (
131
+ <ToggleGroupPrimitive.Item
132
+ ref={ref}
133
+ className={cn(
134
+ "group flex select-none items-stretch rounded text-sm first:rounded-l-[inherit] [&:nth-last-child(2)]:rounded-r-[inherit]",
135
+ "hover:bg-accent/30",
136
+ "group-aria-checked:text-accent-foreground",
137
+ className,
138
+ )}
139
+ onClick={composeEventHandlers(onClick, (event) => {
140
+ setOffset({
141
+ left: event.currentTarget.offsetLeft,
142
+ top: event.currentTarget.offsetTop,
143
+ });
144
+ })}
145
+ {...props}
146
+ >
147
+ {/* Separator */}
148
+ <span
149
+ className={cn(
150
+ "bg-border my-1.5 w-px transition",
151
+ "group-first:opacity-0",
152
+ "group-[:where([data-state=on])+*]:opacity-0 group-aria-checked:opacity-0",
153
+ "group-focus-visible:opacity-0 group-[&:focus-visible+*]:opacity-0",
154
+ "group-[:where([data-state=on])+*]:scale-0 group-aria-checked:scale-0",
155
+ "group-focus-visible:scale-0 group-[&:focus-visible+*]:scale-0",
156
+ )}
157
+ />
158
+ {/* Label */}
159
+ <span className="flex grow items-center justify-center gap-2 px-3 py-1 [&_svg]:shrink-0">
160
+ {/* LabelActive */}
161
+ <span className="font-medium opacity-0 transition-opacity group-aria-checked:opacity-100">{children}</span>
162
+ {/* LabelInactive */}
163
+ <span className="absolute opacity-100 transition-opacity group-aria-checked:opacity-0">{children}</span>
164
+ </span>
165
+ </ToggleGroupPrimitive.Item>
166
+ );
167
+ },
168
+ );
169
+
170
+ SegmentedItem.displayName = SEGMENTED_ITEM_NAME;
171
+
172
+ /* -----------------------------------------------------------------------------
173
+ * Exports
174
+ * -------------------------------------------------------------------------- */
175
+
176
+ export { Segmented, SegmentedItem, type SegmentedProps, type SegmentedItemProps };