@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
@@ -7,89 +7,90 @@ import { cn } from "./utils";
7
7
  * Component: Breadcrumb
8
8
  * -------------------------------------------------------------------------- */
9
9
 
10
+ type BreadcrumbElement = HTMLElement;
11
+
10
12
  interface BreadcrumbProps extends React.HTMLAttributes<HTMLElement> {
11
13
  separator?: React.ReactNode;
12
14
  }
13
- const Breadcrumb = React.forwardRef<HTMLElement, BreadcrumbProps>(
14
- ({ ...props }, ref) => <nav ref={ref} aria-label="breadcrumb" {...props} />,
15
- );
15
+
16
+ const Breadcrumb = React.forwardRef<BreadcrumbElement, BreadcrumbProps>(({ ...props }, ref) => (
17
+ <nav ref={ref} aria-label="breadcrumb" {...props} />
18
+ ));
19
+
16
20
  Breadcrumb.displayName = "Breadcrumb";
17
21
 
18
22
  /* -----------------------------------------------------------------------------
19
23
  * Component: BreadcrumbList
20
24
  * -------------------------------------------------------------------------- */
21
25
 
26
+ type BreadcrumbListElement = HTMLOListElement;
22
27
  type BreadcrumbListProps = React.OlHTMLAttributes<HTMLOListElement>;
23
- const BreadcrumbList = React.forwardRef<HTMLOListElement, BreadcrumbListProps>(
24
- ({ className, ...props }, ref) => (
25
- <ol
26
- ref={ref}
27
- className={cn(
28
- "text-muted-foreground flex flex-wrap items-center gap-1.5 break-words text-sm sm:gap-2.5",
29
- className,
30
- )}
31
- {...props}
32
- />
33
- ),
34
- );
28
+
29
+ const BreadcrumbList = React.forwardRef<BreadcrumbListElement, BreadcrumbListProps>(({ className, ...props }, ref) => (
30
+ <ol
31
+ ref={ref}
32
+ className={cn(
33
+ "text-muted-foreground flex flex-wrap items-center gap-1.5 break-words text-sm",
34
+ "sm:gap-2.5",
35
+ className,
36
+ )}
37
+ {...props}
38
+ />
39
+ ));
40
+
35
41
  BreadcrumbList.displayName = "BreadcrumbList";
36
42
 
37
43
  /* -----------------------------------------------------------------------------
38
44
  * Component: BreadcrumbItem
39
45
  * -------------------------------------------------------------------------- */
40
46
 
47
+ type BreadcrumbItemElement = HTMLLIElement;
41
48
  type BreadcrumbItemProps = React.LiHTMLAttributes<HTMLLIElement>;
42
- const BreadcrumbItem = React.forwardRef<HTMLLIElement, BreadcrumbItemProps>(
43
- ({ className, ...props }, ref) => (
44
- <li
45
- ref={ref}
46
- className={cn("inline-flex items-center gap-1.5", className)}
47
- {...props}
48
- />
49
- ),
50
- );
49
+
50
+ const BreadcrumbItem = React.forwardRef<BreadcrumbItemElement, BreadcrumbItemProps>(({ className, ...props }, ref) => (
51
+ <li ref={ref} className={cn("inline-flex items-center gap-1.5", className)} {...props} />
52
+ ));
53
+
51
54
  BreadcrumbItem.displayName = "BreadcrumbItem";
52
55
 
53
56
  /* -----------------------------------------------------------------------------
54
57
  * Component: BreadcrumbLink
55
58
  * -------------------------------------------------------------------------- */
56
59
 
57
- interface BreadcrumbLinkProps
58
- extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
60
+ type BreadcrumbLinkElement = HTMLAnchorElement;
61
+
62
+ interface BreadcrumbLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
59
63
  asChild?: boolean;
60
64
  }
61
- const BreadcrumbLink = React.forwardRef<HTMLAnchorElement, BreadcrumbLinkProps>(
65
+
66
+ const BreadcrumbLink = React.forwardRef<BreadcrumbLinkElement, BreadcrumbLinkProps>(
62
67
  ({ asChild, className, ...props }, ref) => {
63
- const Comp = asChild ? Slot : "a";
64
-
65
- return (
66
- <Comp
67
- ref={ref}
68
- className={cn("hover:text-foreground transition-colors", className)}
69
- {...props}
70
- />
71
- );
68
+ const Component = asChild ? Slot : "a";
69
+
70
+ return <Component ref={ref} className={cn("transition-colors", "hover:text-foreground", className)} {...props} />;
72
71
  },
73
72
  );
73
+
74
74
  BreadcrumbLink.displayName = "BreadcrumbLink";
75
75
 
76
76
  /* -----------------------------------------------------------------------------
77
77
  * Component: BreadcrumbPage
78
78
  * -------------------------------------------------------------------------- */
79
79
 
80
+ type BreadcrumbPageElement = HTMLSpanElement;
80
81
  type BreadcrumbPageProps = React.HTMLAttributes<HTMLSpanElement>;
81
- const BreadcrumbPage = React.forwardRef<HTMLSpanElement, BreadcrumbPageProps>(
82
- ({ className, ...props }, ref) => (
83
- <span
84
- ref={ref}
85
- role="link"
86
- aria-disabled="true"
87
- aria-current="page"
88
- className={cn("text-foreground font-normal", className)}
89
- {...props}
90
- />
91
- ),
92
- );
82
+
83
+ const BreadcrumbPage = React.forwardRef<BreadcrumbPageElement, BreadcrumbPageProps>(({ className, ...props }, ref) => (
84
+ <span
85
+ ref={ref}
86
+ role="link"
87
+ aria-disabled="true"
88
+ aria-current="page"
89
+ className={cn("text-foreground font-normal", className)}
90
+ {...props}
91
+ />
92
+ ));
93
+
93
94
  BreadcrumbPage.displayName = "BreadcrumbPage";
94
95
 
95
96
  /* -----------------------------------------------------------------------------
@@ -97,18 +98,10 @@ BreadcrumbPage.displayName = "BreadcrumbPage";
97
98
  * -------------------------------------------------------------------------- */
98
99
 
99
100
  type BreadcrumbSeparatorProps = React.LiHTMLAttributes<HTMLLIElement>;
100
- function BreadcrumbSeparator({
101
- children,
102
- className,
103
- ...props
104
- }: BreadcrumbSeparatorProps): React.JSX.Element {
101
+
102
+ function BreadcrumbSeparator({ children, className, ...props }: BreadcrumbSeparatorProps): React.JSX.Element {
105
103
  return (
106
- <li
107
- role="presentation"
108
- aria-hidden="true"
109
- className={cn("[&>svg]:size-3.5", className)}
110
- {...props}
111
- >
104
+ <li role="presentation" aria-hidden="true" className={cn("[&>svg]:size-3.5", className)} {...props}>
112
105
  {children ?? <ChevronRightIcon />}
113
106
  </li>
114
107
  );
@@ -119,10 +112,8 @@ function BreadcrumbSeparator({
119
112
  * -------------------------------------------------------------------------- */
120
113
 
121
114
  type BreadcrumbEllipsisProps = React.HTMLAttributes<HTMLSpanElement>;
122
- function BreadcrumbEllipsis({
123
- className,
124
- ...props
125
- }: BreadcrumbEllipsisProps): React.JSX.Element {
115
+
116
+ function BreadcrumbEllipsis({ className, ...props }: BreadcrumbEllipsisProps): React.JSX.Element {
126
117
  return (
127
118
  <span
128
119
  role="presentation"
package/src/button.tsx CHANGED
@@ -1,6 +1,9 @@
1
1
  import * as React from "react";
2
2
  import { Slot } from "@radix-ui/react-slot";
3
3
  import { type VariantProps } from "cva";
4
+ import { Fragment } from "react";
5
+ import { VisuallyHidden } from "@radix-ui/react-visually-hidden";
6
+ import { Spinner } from "./spinner";
4
7
  import { cva } from "./utils";
5
8
 
6
9
  /* -----------------------------------------------------------------------------
@@ -8,18 +11,19 @@ import { cva } from "./utils";
8
11
  * -------------------------------------------------------------------------- */
9
12
 
10
13
  const buttonVariants = cva({
11
- base: "focus-visible:ring-ring inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",
14
+ base: [
15
+ "inline-flex select-none items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors",
16
+ "disabled:pointer-events-none disabled:opacity-50",
17
+ "focus-visible:ring-ring focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2",
18
+ ],
12
19
  variants: {
13
20
  variant: {
14
21
  default: "bg-primary text-primary-foreground hover:bg-primary/90 shadow",
15
- destructive:
16
- "bg-destructive text-destructive-foreground hover:bg-destructive/90 shadow-sm",
22
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90 shadow-sm",
17
23
  ghost: "hover:bg-accent hover:text-accent-foreground",
18
24
  link: "text-primary underline-offset-4 hover:underline",
19
- outline:
20
- "border-input bg-background hover:bg-accent hover:text-accent-foreground border shadow-sm",
21
- secondary:
22
- "bg-secondary text-secondary-foreground hover:bg-secondary/80 shadow-sm",
25
+ outline: "border-input bg-background hover:bg-accent hover:text-accent-foreground border shadow-sm",
26
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80 shadow-sm",
23
27
  },
24
28
  size: {
25
29
  default: "h-10 px-4",
@@ -31,10 +35,14 @@ const buttonVariants = cva({
31
35
  "icon-sm": "size-9",
32
36
  "icon-lg": "size-11",
33
37
  },
38
+ loading: {
39
+ true: "relative",
40
+ },
34
41
  },
35
42
  defaultVariants: {
36
43
  size: "default",
37
44
  variant: "default",
45
+ loading: false,
38
46
  },
39
47
  });
40
48
 
@@ -44,26 +52,44 @@ type ButtonVariantsProps = VariantProps<typeof buttonVariants>;
44
52
  * Component: Button
45
53
  * -------------------------------------------------------------------------- */
46
54
 
47
- interface ButtonProps
48
- extends React.ButtonHTMLAttributes<HTMLButtonElement>,
49
- ButtonVariantsProps {
55
+ type ButtonElement = HTMLButtonElement;
56
+
57
+ interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, ButtonVariantsProps {
50
58
  asChild?: boolean;
51
59
  }
52
60
 
53
- const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
54
- ({ className, variant, size, asChild = false, ...props }, ref) => {
55
- const Comp = asChild ? Slot : "button";
61
+ const Button = React.forwardRef<ButtonElement, ButtonProps>(
62
+ ({ children, className, variant, size, loading = false, asChild = false, ...props }, ref) => {
63
+ const Component = asChild ? Slot : "button";
64
+ const ComponentLoading = asChild ? "span" : Fragment;
65
+ const disabled = loading || props.disabled;
56
66
 
57
67
  return (
58
- <Comp
68
+ <Component
59
69
  ref={ref}
60
70
  type={asChild ? undefined : "button"}
61
- className={buttonVariants({ variant, size, className })}
71
+ className={buttonVariants({ variant, size, loading, className })}
62
72
  {...props}
63
- />
73
+ disabled={disabled}
74
+ >
75
+ {loading ? (
76
+ <ComponentLoading>
77
+ <span aria-hidden className="invisible contents">
78
+ {children}
79
+ </span>
80
+ <VisuallyHidden>{children}</VisuallyHidden>
81
+ <span className="absolute inset-0 flex items-center justify-center">
82
+ <Spinner />
83
+ </span>
84
+ </ComponentLoading>
85
+ ) : (
86
+ children
87
+ )}
88
+ </Component>
64
89
  );
65
90
  },
66
91
  );
92
+
67
93
  Button.displayName = "Button";
68
94
 
69
95
  /* -----------------------------------------------------------------------------
package/src/calendar.tsx CHANGED
@@ -1,12 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import * as React from "react";
4
- import {
5
- type DateRange,
6
- DayPicker,
7
- type DayPickerProps,
8
- type StyledComponent,
9
- } from "react-day-picker";
4
+ import { type DateRange, DayPicker, type DayPickerProps, type StyledComponent } from "react-day-picker";
10
5
  import { ChevronLeftIcon, ChevronRightIcon } from "@radix-ui/react-icons";
11
6
  import { buttonVariants } from "./button";
12
7
  import { cn } from "./utils";
@@ -15,27 +10,17 @@ import { cn } from "./utils";
15
10
  * Component: Calendar
16
11
  * -------------------------------------------------------------------------- */
17
12
 
18
- function ChevronLeft({
19
- children: _,
20
- ...props
21
- }: StyledComponent): React.JSX.Element {
13
+ function ChevronLeft({ children: _, ...props }: StyledComponent): React.JSX.Element {
22
14
  return <ChevronLeftIcon className="size-4" {...props} />;
23
15
  }
24
16
 
25
- function ChevronRight({
26
- children: _,
27
- ...props
28
- }: StyledComponent): React.JSX.Element {
17
+ function ChevronRight({ children: _, ...props }: StyledComponent): React.JSX.Element {
29
18
  return <ChevronRightIcon className="size-4" {...props} />;
30
19
  }
31
20
 
32
21
  type CalendarProps = DayPickerProps;
33
- function Calendar({
34
- className,
35
- classNames,
36
- showOutsideDays = true,
37
- ...props
38
- }: CalendarProps): React.JSX.Element {
22
+
23
+ function Calendar({ className, classNames, showOutsideDays = true, ...props }: CalendarProps): React.JSX.Element {
39
24
  return (
40
25
  <DayPicker
41
26
  showOutsideDays={showOutsideDays}
@@ -74,8 +59,7 @@ function Calendar({
74
59
  day_outside:
75
60
  "day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30",
76
61
  day_disabled: "text-muted-foreground opacity-50",
77
- day_range_middle:
78
- "aria-selected:bg-accent aria-selected:text-accent-foreground",
62
+ day_range_middle: "aria-selected:bg-accent aria-selected:text-accent-foreground",
79
63
  day_hidden: "invisible",
80
64
  ...classNames,
81
65
  }}
package/src/card.tsx CHANGED
@@ -5,98 +5,82 @@ import { cn } from "./utils";
5
5
  * Component: Card
6
6
  * -------------------------------------------------------------------------- */
7
7
 
8
+ type CardElement = HTMLDivElement;
8
9
  type CardProps = React.HTMLAttributes<HTMLDivElement>;
9
- const Card = React.forwardRef<HTMLDivElement, CardProps>(
10
- ({ className, ...props }, ref) => (
11
- <div
12
- ref={ref}
13
- className={cn(
14
- "bg-card text-card-foreground rounded-lg border shadow-sm",
15
- className,
16
- )}
17
- {...props}
18
- />
19
- ),
20
- );
10
+
11
+ const Card = React.forwardRef<CardElement, CardProps>(({ className, ...props }, ref) => (
12
+ <div ref={ref} className={cn("bg-card text-card-foreground rounded-lg border shadow-sm", className)} {...props} />
13
+ ));
14
+
21
15
  Card.displayName = "Card";
22
16
 
23
17
  /* -----------------------------------------------------------------------------
24
18
  * Component: CardHeader
25
19
  * -------------------------------------------------------------------------- */
26
20
 
21
+ type CardHeaderElement = HTMLDivElement;
27
22
  type CardHeaderProps = React.HTMLAttributes<HTMLDivElement>;
28
- const CardHeader = React.forwardRef<HTMLDivElement, CardHeaderProps>(
29
- ({ className, ...props }, ref) => (
30
- <div
31
- ref={ref}
32
- className={cn("flex flex-col space-y-1.5 p-6", className)}
33
- {...props}
34
- />
35
- ),
36
- );
23
+
24
+ const CardHeader = React.forwardRef<CardHeaderElement, CardHeaderProps>(({ className, ...props }, ref) => (
25
+ <div ref={ref} className={cn("flex flex-col space-y-1.5 p-6", className)} {...props} />
26
+ ));
27
+
37
28
  CardHeader.displayName = "CardHeader";
38
29
 
39
30
  /* -----------------------------------------------------------------------------
40
31
  * Component: CardTitle
41
32
  * -------------------------------------------------------------------------- */
42
33
 
34
+ type CardTitleElement = HTMLParagraphElement;
43
35
  type CardTitleProps = React.HTMLAttributes<HTMLHeadingElement>;
44
- const CardTitle = React.forwardRef<HTMLParagraphElement, CardTitleProps>(
45
- ({ className, children, ...props }, ref) => (
46
- <h3
47
- ref={ref}
48
- className={cn("font-semibold leading-none tracking-tight", className)}
49
- {...props}
50
- >
51
- {children}
52
- </h3>
53
- ),
54
- );
36
+
37
+ const CardTitle = React.forwardRef<CardTitleElement, CardTitleProps>(({ className, children, ...props }, ref) => (
38
+ <h3 ref={ref} className={cn("font-semibold leading-none tracking-tight", className)} {...props}>
39
+ {children}
40
+ </h3>
41
+ ));
42
+
55
43
  CardTitle.displayName = "CardTitle";
56
44
 
57
45
  /* -----------------------------------------------------------------------------
58
46
  * Component: CardDescription
59
47
  * -------------------------------------------------------------------------- */
60
48
 
49
+ type CardDescriptionElement = HTMLParagraphElement;
61
50
  type CardDescriptionProps = React.HTMLAttributes<HTMLParagraphElement>;
62
- const CardDescription = React.forwardRef<
63
- HTMLParagraphElement,
64
- CardDescriptionProps
65
- >(({ className, ...props }, ref) => (
66
- <p
67
- ref={ref}
68
- className={cn("text-muted-foreground text-sm", className)}
69
- {...props}
70
- />
71
- ));
51
+
52
+ const CardDescription = React.forwardRef<CardDescriptionElement, CardDescriptionProps>(
53
+ ({ className, ...props }, ref) => (
54
+ <p ref={ref} className={cn("text-muted-foreground text-sm", className)} {...props} />
55
+ ),
56
+ );
57
+
72
58
  CardDescription.displayName = "CardDescription";
73
59
 
74
60
  /* -----------------------------------------------------------------------------
75
61
  * Component: CardContent
76
62
  * -------------------------------------------------------------------------- */
77
63
 
64
+ type CardContentElement = HTMLDivElement;
78
65
  type CardContentProps = React.HTMLAttributes<HTMLDivElement>;
79
- const CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(
80
- ({ className, ...props }, ref) => (
81
- <div ref={ref} className={cn("p-6 pt-0", className)} {...props} />
82
- ),
83
- );
66
+
67
+ const CardContent = React.forwardRef<CardContentElement, CardContentProps>(({ className, ...props }, ref) => (
68
+ <div ref={ref} className={cn("p-6 pt-0", className)} {...props} />
69
+ ));
70
+
84
71
  CardContent.displayName = "CardContent";
85
72
 
86
73
  /* -----------------------------------------------------------------------------
87
74
  * Component: CardFooter
88
75
  * -------------------------------------------------------------------------- */
89
76
 
77
+ type CardFooterElement = HTMLDivElement;
90
78
  type CardFooterProps = React.HTMLAttributes<HTMLDivElement>;
91
- const CardFooter = React.forwardRef<HTMLDivElement, CardFooterProps>(
92
- ({ className, ...props }, ref) => (
93
- <div
94
- ref={ref}
95
- className={cn("flex items-center p-6 pt-0", className)}
96
- {...props}
97
- />
98
- ),
99
- );
79
+
80
+ const CardFooter = React.forwardRef<CardFooterElement, CardFooterProps>(({ className, ...props }, ref) => (
81
+ <div ref={ref} className={cn("flex items-center p-6 pt-0", className)} {...props} />
82
+ ));
83
+
100
84
  CardFooter.displayName = "CardFooter";
101
85
 
102
86
  /* -----------------------------------------------------------------------------