@codefast/ui 0.0.8 → 0.0.9

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 (377) hide show
  1. package/dist/accordion.d.mts +5 -1
  2. package/dist/accordion.d.ts +5 -1
  3. package/dist/accordion.js.map +1 -1
  4. package/dist/accordion.mjs.map +1 -1
  5. package/dist/alert-dialog.d.mts +12 -3
  6. package/dist/alert-dialog.d.ts +12 -3
  7. package/dist/alert-dialog.js +3 -3
  8. package/dist/alert-dialog.js.map +1 -1
  9. package/dist/alert-dialog.mjs +1 -1
  10. package/dist/alert-dialog.mjs.map +1 -1
  11. package/dist/alert.d.mts +10 -5
  12. package/dist/alert.d.ts +10 -5
  13. package/dist/alert.js +22 -18
  14. package/dist/alert.js.map +1 -1
  15. package/dist/alert.mjs +22 -18
  16. package/dist/alert.mjs.map +1 -1
  17. package/dist/aspect-ratio.d.mts +2 -1
  18. package/dist/aspect-ratio.d.ts +2 -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 +4 -1
  22. package/dist/avatar.d.ts +4 -1
  23. package/dist/avatar.js.map +1 -1
  24. package/dist/avatar.mjs.map +1 -1
  25. package/dist/badge.d.mts +5 -2
  26. package/dist/badge.d.ts +5 -2
  27. package/dist/badge.js.map +1 -1
  28. package/dist/badge.mjs.map +1 -1
  29. package/dist/blockquote.d.mts +5 -4
  30. package/dist/blockquote.d.ts +5 -4
  31. package/dist/blockquote.js +6 -4
  32. package/dist/blockquote.js.map +1 -1
  33. package/dist/blockquote.mjs +6 -4
  34. package/dist/blockquote.mjs.map +1 -1
  35. package/dist/box.d.mts +1 -1
  36. package/dist/box.d.ts +1 -1
  37. package/dist/box.js.map +1 -1
  38. package/dist/box.mjs.map +1 -1
  39. package/dist/breadcrumb.d.mts +18 -11
  40. package/dist/breadcrumb.d.ts +18 -11
  41. package/dist/breadcrumb.js +49 -39
  42. package/dist/breadcrumb.js.map +1 -1
  43. package/dist/breadcrumb.mjs +49 -39
  44. package/dist/breadcrumb.mjs.map +1 -1
  45. package/dist/button.d.mts +3 -2
  46. package/dist/button.d.ts +3 -2
  47. package/dist/button.js +2 -2
  48. package/dist/button.mjs +1 -1
  49. package/dist/calendar.d.mts +3 -2
  50. package/dist/calendar.d.ts +3 -2
  51. package/dist/calendar.js +3 -3
  52. package/dist/calendar.js.map +1 -1
  53. package/dist/calendar.mjs +1 -1
  54. package/dist/calendar.mjs.map +1 -1
  55. package/dist/card.d.mts +13 -7
  56. package/dist/card.d.ts +13 -7
  57. package/dist/card.js +47 -37
  58. package/dist/card.js.map +1 -1
  59. package/dist/card.mjs +47 -37
  60. package/dist/card.mjs.map +1 -1
  61. package/dist/carousel.d.mts +13 -8
  62. package/dist/carousel.d.ts +13 -8
  63. package/dist/carousel.js +63 -57
  64. package/dist/carousel.js.map +1 -1
  65. package/dist/carousel.mjs +62 -56
  66. package/dist/carousel.mjs.map +1 -1
  67. package/dist/checkbox.d.mts +2 -1
  68. package/dist/checkbox.d.ts +2 -1
  69. package/dist/checkbox.js.map +1 -1
  70. package/dist/checkbox.mjs.map +1 -1
  71. package/dist/{chunk-OCLLX7EY.js → chunk-3BDLWZ3W.js} +1 -1
  72. package/dist/chunk-3BDLWZ3W.js.map +1 -0
  73. package/dist/{chunk-2D7SRYKN.js → chunk-43YGVOCO.js} +1 -1
  74. package/dist/chunk-43YGVOCO.js.map +1 -0
  75. package/dist/{chunk-EIHWTXQ4.mjs → chunk-AJLEALVP.mjs} +1 -1
  76. package/dist/chunk-AJLEALVP.mjs.map +1 -0
  77. package/dist/{chunk-LDYBRDAY.js → chunk-D6NQEMTJ.js} +1 -1
  78. package/dist/chunk-D6NQEMTJ.js.map +1 -0
  79. package/dist/{chunk-KW5FJ62U.mjs → chunk-FATZHRHR.mjs} +1 -1
  80. package/dist/chunk-FATZHRHR.mjs.map +1 -0
  81. package/dist/{chunk-RTKEO347.js → chunk-GRKABVK4.js} +1 -1
  82. package/dist/chunk-GRKABVK4.js.map +1 -0
  83. package/dist/{chunk-U2WDUCW3.js → chunk-JOJW7BBY.js} +1 -1
  84. package/dist/{chunk-U2WDUCW3.js.map → chunk-JOJW7BBY.js.map} +1 -1
  85. package/dist/{chunk-ESWGFN3R.mjs → chunk-KV4VL2ZF.mjs} +1 -1
  86. package/dist/chunk-KV4VL2ZF.mjs.map +1 -0
  87. package/dist/{chunk-T52N6ZBP.mjs → chunk-MJDKD2K4.mjs} +1 -1
  88. package/dist/{chunk-T52N6ZBP.mjs.map → chunk-MJDKD2K4.mjs.map} +1 -1
  89. package/dist/{chunk-EDVCMWDT.mjs → chunk-NCEN3XBK.mjs} +1 -1
  90. package/dist/chunk-NCEN3XBK.mjs.map +1 -0
  91. package/dist/{chunk-PTD4AMHI.mjs → chunk-PIU627A3.mjs} +1 -1
  92. package/dist/chunk-PIU627A3.mjs.map +1 -0
  93. package/dist/{chunk-5GHZ6EXI.js → chunk-PKB2G726.js} +1 -1
  94. package/dist/{chunk-5GHZ6EXI.js.map → chunk-PKB2G726.js.map} +1 -1
  95. package/dist/code.d.mts +5 -4
  96. package/dist/code.d.ts +5 -4
  97. package/dist/code.js +6 -4
  98. package/dist/code.js.map +1 -1
  99. package/dist/code.mjs +6 -4
  100. package/dist/code.mjs.map +1 -1
  101. package/dist/collapsible.d.mts +4 -1
  102. package/dist/collapsible.d.ts +4 -1
  103. package/dist/collapsible.js.map +1 -1
  104. package/dist/collapsible.mjs.map +1 -1
  105. package/dist/command.d.mts +14 -3
  106. package/dist/command.d.ts +14 -3
  107. package/dist/command.js +6 -3
  108. package/dist/command.js.map +1 -1
  109. package/dist/command.mjs +5 -2
  110. package/dist/command.mjs.map +1 -1
  111. package/dist/container.d.mts +5 -4
  112. package/dist/container.d.ts +5 -4
  113. package/dist/container.js +6 -4
  114. package/dist/container.js.map +1 -1
  115. package/dist/container.mjs +6 -4
  116. package/dist/container.mjs.map +1 -1
  117. package/dist/context-menu.d.mts +26 -11
  118. package/dist/context-menu.d.ts +26 -11
  119. package/dist/context-menu.js.map +1 -1
  120. package/dist/context-menu.mjs.map +1 -1
  121. package/dist/data-table.d.mts +10 -7
  122. package/dist/data-table.d.ts +10 -7
  123. package/dist/data-table.js +25 -25
  124. package/dist/data-table.js.map +1 -1
  125. package/dist/data-table.mjs +3 -3
  126. package/dist/data-table.mjs.map +1 -1
  127. package/dist/dialog.d.mts +11 -3
  128. package/dist/dialog.d.ts +11 -3
  129. package/dist/dialog.js +2 -2
  130. package/dist/dialog.mjs +1 -1
  131. package/dist/drawer.d.mts +12 -4
  132. package/dist/drawer.d.ts +12 -4
  133. package/dist/drawer.js.map +1 -1
  134. package/dist/drawer.mjs.map +1 -1
  135. package/dist/dropdown-menu.d.mts +25 -11
  136. package/dist/dropdown-menu.d.ts +25 -11
  137. package/dist/dropdown-menu.js +2 -2
  138. package/dist/dropdown-menu.mjs +1 -1
  139. package/dist/em.d.mts +5 -4
  140. package/dist/em.d.ts +5 -4
  141. package/dist/em.js +6 -4
  142. package/dist/em.js.map +1 -1
  143. package/dist/em.mjs +6 -4
  144. package/dist/em.mjs.map +1 -1
  145. package/dist/form.d.mts +14 -6
  146. package/dist/form.d.ts +14 -6
  147. package/dist/form.js +26 -22
  148. package/dist/form.js.map +1 -1
  149. package/dist/form.mjs +25 -21
  150. package/dist/form.mjs.map +1 -1
  151. package/dist/heading.d.mts +6 -5
  152. package/dist/heading.d.ts +6 -5
  153. package/dist/heading.js +6 -4
  154. package/dist/heading.js.map +1 -1
  155. package/dist/heading.mjs +6 -4
  156. package/dist/heading.mjs.map +1 -1
  157. package/dist/hover-card.d.mts +4 -1
  158. package/dist/hover-card.d.ts +4 -1
  159. package/dist/hover-card.js.map +1 -1
  160. package/dist/hover-card.mjs.map +1 -1
  161. package/dist/input-otp.d.mts +12 -32
  162. package/dist/input-otp.d.ts +12 -32
  163. package/dist/input-otp.js +30 -22
  164. package/dist/input-otp.js.map +1 -1
  165. package/dist/input-otp.mjs +29 -21
  166. package/dist/input-otp.mjs.map +1 -1
  167. package/dist/input.d.mts +6 -3
  168. package/dist/input.d.ts +6 -3
  169. package/dist/input.js +13 -11
  170. package/dist/input.js.map +1 -1
  171. package/dist/input.mjs +13 -11
  172. package/dist/input.mjs.map +1 -1
  173. package/dist/kbd.d.mts +5 -4
  174. package/dist/kbd.d.ts +5 -4
  175. package/dist/kbd.js +16 -14
  176. package/dist/kbd.js.map +1 -1
  177. package/dist/kbd.mjs +16 -14
  178. package/dist/kbd.mjs.map +1 -1
  179. package/dist/label.d.mts +2 -1
  180. package/dist/label.d.ts +2 -1
  181. package/dist/label.js +2 -2
  182. package/dist/label.mjs +1 -1
  183. package/dist/menubar.d.mts +27 -12
  184. package/dist/menubar.d.ts +27 -12
  185. package/dist/menubar.js.map +1 -1
  186. package/dist/menubar.mjs.map +1 -1
  187. package/dist/navigation-menu.d.mts +9 -1
  188. package/dist/navigation-menu.d.ts +9 -1
  189. package/dist/navigation-menu.js.map +1 -1
  190. package/dist/navigation-menu.mjs.map +1 -1
  191. package/dist/pagination.d.mts +13 -7
  192. package/dist/pagination.d.ts +13 -7
  193. package/dist/pagination.js +5 -3
  194. package/dist/pagination.js.map +1 -1
  195. package/dist/pagination.mjs +4 -2
  196. package/dist/pagination.mjs.map +1 -1
  197. package/dist/popover.d.mts +6 -1
  198. package/dist/popover.d.ts +6 -1
  199. package/dist/popover.js.map +1 -1
  200. package/dist/popover.mjs.map +1 -1
  201. package/dist/pre.d.mts +5 -4
  202. package/dist/pre.d.ts +5 -4
  203. package/dist/pre.js +6 -4
  204. package/dist/pre.js.map +1 -1
  205. package/dist/pre.mjs +6 -4
  206. package/dist/pre.mjs.map +1 -1
  207. package/dist/progress.d.mts +2 -1
  208. package/dist/progress.d.ts +2 -1
  209. package/dist/progress.js +1 -1
  210. package/dist/progress.js.map +1 -1
  211. package/dist/progress.mjs +1 -1
  212. package/dist/progress.mjs.map +1 -1
  213. package/dist/quote.d.mts +5 -4
  214. package/dist/quote.d.ts +5 -4
  215. package/dist/quote.js +6 -4
  216. package/dist/quote.js.map +1 -1
  217. package/dist/quote.mjs +6 -4
  218. package/dist/quote.mjs.map +1 -1
  219. package/dist/radio-group.d.mts +3 -1
  220. package/dist/radio-group.d.ts +3 -1
  221. package/dist/radio-group.js.map +1 -1
  222. package/dist/radio-group.mjs.map +1 -1
  223. package/dist/resizable.d.mts +4 -4
  224. package/dist/resizable.d.ts +4 -4
  225. package/dist/resizable.js +1 -1
  226. package/dist/resizable.js.map +1 -1
  227. package/dist/resizable.mjs +1 -1
  228. package/dist/resizable.mjs.map +1 -1
  229. package/dist/scroll-area.d.mts +4 -2
  230. package/dist/scroll-area.d.ts +4 -2
  231. package/dist/scroll-area.js +6 -6
  232. package/dist/scroll-area.js.map +1 -1
  233. package/dist/scroll-area.mjs +6 -6
  234. package/dist/scroll-area.mjs.map +1 -1
  235. package/dist/section.d.mts +5 -4
  236. package/dist/section.d.ts +5 -4
  237. package/dist/section.js +6 -4
  238. package/dist/section.js.map +1 -1
  239. package/dist/section.mjs +6 -4
  240. package/dist/section.mjs.map +1 -1
  241. package/dist/select.d.mts +11 -1
  242. package/dist/select.d.ts +11 -1
  243. package/dist/select.js +2 -2
  244. package/dist/select.mjs +1 -1
  245. package/dist/separator.d.mts +2 -1
  246. package/dist/separator.d.ts +2 -1
  247. package/dist/separator.js.map +1 -1
  248. package/dist/separator.mjs.map +1 -1
  249. package/dist/sheet.d.mts +18 -8
  250. package/dist/sheet.d.ts +18 -8
  251. package/dist/sheet.js.map +1 -1
  252. package/dist/sheet.mjs.map +1 -1
  253. package/dist/skeleton.d.mts +3 -2
  254. package/dist/skeleton.d.ts +3 -2
  255. package/dist/skeleton.js +1 -4
  256. package/dist/skeleton.js.map +1 -1
  257. package/dist/skeleton.mjs +1 -4
  258. package/dist/skeleton.mjs.map +1 -1
  259. package/dist/slider.d.mts +2 -1
  260. package/dist/slider.d.ts +2 -1
  261. package/dist/slider.js.map +1 -1
  262. package/dist/slider.mjs.map +1 -1
  263. package/dist/sonner.d.mts +1 -1
  264. package/dist/sonner.d.ts +1 -1
  265. package/dist/sonner.js.map +1 -1
  266. package/dist/sonner.mjs.map +1 -1
  267. package/dist/strong.d.mts +5 -4
  268. package/dist/strong.d.ts +5 -4
  269. package/dist/strong.js +6 -4
  270. package/dist/strong.js.map +1 -1
  271. package/dist/strong.mjs +6 -4
  272. package/dist/strong.mjs.map +1 -1
  273. package/dist/switch.d.mts +2 -1
  274. package/dist/switch.d.ts +2 -1
  275. package/dist/switch.js.map +1 -1
  276. package/dist/switch.mjs.map +1 -1
  277. package/dist/table.d.mts +17 -9
  278. package/dist/table.d.ts +17 -9
  279. package/dist/table.js +75 -58
  280. package/dist/table.js.map +1 -1
  281. package/dist/table.mjs +75 -58
  282. package/dist/table.mjs.map +1 -1
  283. package/dist/tabs.d.mts +5 -1
  284. package/dist/tabs.d.ts +5 -1
  285. package/dist/tabs.js.map +1 -1
  286. package/dist/tabs.mjs.map +1 -1
  287. package/dist/text.d.mts +1 -1
  288. package/dist/text.d.ts +1 -1
  289. package/dist/text.js.map +1 -1
  290. package/dist/text.mjs.map +1 -1
  291. package/dist/textarea.d.mts +3 -2
  292. package/dist/textarea.d.ts +3 -2
  293. package/dist/textarea.js +15 -13
  294. package/dist/textarea.js.map +1 -1
  295. package/dist/textarea.mjs +15 -13
  296. package/dist/textarea.mjs.map +1 -1
  297. package/dist/toggle-group.d.mts +4 -2
  298. package/dist/toggle-group.d.ts +4 -2
  299. package/dist/toggle-group.js +2 -2
  300. package/dist/toggle-group.js.map +1 -1
  301. package/dist/toggle-group.mjs +1 -1
  302. package/dist/toggle-group.mjs.map +1 -1
  303. package/dist/toggle.d.mts +2 -1
  304. package/dist/toggle.d.ts +2 -1
  305. package/dist/toggle.js +2 -2
  306. package/dist/toggle.mjs +1 -1
  307. package/dist/tooltip.d.mts +6 -1
  308. package/dist/tooltip.d.ts +6 -1
  309. package/dist/tooltip.js.map +1 -1
  310. package/dist/tooltip.mjs.map +1 -1
  311. package/package.json +6 -6
  312. package/src/accordion.tsx +17 -4
  313. package/src/alert-dialog.tsx +26 -7
  314. package/src/alert.tsx +35 -25
  315. package/src/aspect-ratio.tsx +2 -1
  316. package/src/avatar.tsx +13 -3
  317. package/src/badge.tsx +6 -3
  318. package/src/blockquote.tsx +11 -10
  319. package/src/box.tsx +1 -1
  320. package/src/breadcrumb.tsx +70 -60
  321. package/src/button.tsx +4 -2
  322. package/src/calendar.tsx +3 -2
  323. package/src/card.tsx +59 -52
  324. package/src/carousel.tsx +76 -72
  325. package/src/checkbox.tsx +3 -2
  326. package/src/code.tsx +10 -8
  327. package/src/collapsible.tsx +11 -1
  328. package/src/command.tsx +47 -10
  329. package/src/container.tsx +10 -10
  330. package/src/context-menu.tsx +52 -16
  331. package/src/data-table.tsx +23 -11
  332. package/src/dialog.tsx +21 -5
  333. package/src/drawer.tsx +28 -6
  334. package/src/dropdown-menu.tsx +51 -15
  335. package/src/em.tsx +10 -8
  336. package/src/form.tsx +55 -38
  337. package/src/heading.tsx +11 -11
  338. package/src/hover-card.tsx +12 -2
  339. package/src/input-otp.tsx +45 -33
  340. package/src/input.tsx +17 -15
  341. package/src/kbd.tsx +19 -17
  342. package/src/label.tsx +3 -2
  343. package/src/menubar.tsx +48 -17
  344. package/src/navigation-menu.tsx +25 -5
  345. package/src/pagination.tsx +21 -9
  346. package/src/popover.tsx +18 -2
  347. package/src/pre.tsx +10 -8
  348. package/src/progress.tsx +4 -3
  349. package/src/quote.tsx +10 -8
  350. package/src/radio-group.tsx +10 -3
  351. package/src/resizable.tsx +2 -1
  352. package/src/scroll-area.tsx +18 -11
  353. package/src/section.tsx +10 -10
  354. package/src/select.tsx +27 -7
  355. package/src/separator.tsx +3 -2
  356. package/src/sheet.tsx +23 -5
  357. package/src/skeleton.tsx +3 -5
  358. package/src/slider.tsx +3 -2
  359. package/src/sonner.tsx +1 -1
  360. package/src/strong.tsx +10 -8
  361. package/src/switch.tsx +3 -2
  362. package/src/table.tsx +90 -78
  363. package/src/tabs.tsx +17 -4
  364. package/src/text.tsx +1 -1
  365. package/src/textarea.tsx +16 -16
  366. package/src/toggle-group.tsx +14 -4
  367. package/src/toggle.tsx +3 -2
  368. package/src/tooltip.tsx +12 -2
  369. package/dist/chunk-2D7SRYKN.js.map +0 -1
  370. package/dist/chunk-EDVCMWDT.mjs.map +0 -1
  371. package/dist/chunk-EIHWTXQ4.mjs.map +0 -1
  372. package/dist/chunk-ESWGFN3R.mjs.map +0 -1
  373. package/dist/chunk-KW5FJ62U.mjs.map +0 -1
  374. package/dist/chunk-LDYBRDAY.js.map +0 -1
  375. package/dist/chunk-OCLLX7EY.js.map +0 -1
  376. package/dist/chunk-PTD4AMHI.mjs.map +0 -1
  377. package/dist/chunk-RTKEO347.js.map +0 -1
@@ -7,99 +7,101 @@ import { cn } from "./utils";
7
7
  * Component: Breadcrumb
8
8
  * -------------------------------------------------------------------------- */
9
9
 
10
- const Breadcrumb = React.forwardRef<
11
- HTMLElement,
12
- React.HTMLAttributes<HTMLElement> & {
13
- separator?: React.ReactNode;
14
- }
15
- >(({ ...props }, ref) => <nav ref={ref} aria-label="breadcrumb" {...props} />);
10
+ interface BreadcrumbProps extends React.HTMLAttributes<HTMLElement> {
11
+ separator?: React.ReactNode;
12
+ }
13
+ const Breadcrumb = React.forwardRef<HTMLElement, BreadcrumbProps>(
14
+ ({ ...props }, ref) => <nav ref={ref} aria-label="breadcrumb" {...props} />,
15
+ );
16
16
  Breadcrumb.displayName = "Breadcrumb";
17
17
 
18
18
  /* -----------------------------------------------------------------------------
19
19
  * Component: BreadcrumbList
20
20
  * -------------------------------------------------------------------------- */
21
21
 
22
- const BreadcrumbList = React.forwardRef<
23
- HTMLOListElement,
24
- React.OlHTMLAttributes<HTMLOListElement>
25
- >(({ className, ...props }, ref) => (
26
- <ol
27
- ref={ref}
28
- className={cn(
29
- "text-muted-foreground flex flex-wrap items-center gap-1.5 break-words text-sm sm:gap-2.5",
30
- className,
31
- )}
32
- {...props}
33
- />
34
- ));
22
+ 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
+ );
35
35
  BreadcrumbList.displayName = "BreadcrumbList";
36
36
 
37
37
  /* -----------------------------------------------------------------------------
38
38
  * Component: BreadcrumbItem
39
39
  * -------------------------------------------------------------------------- */
40
40
 
41
- const BreadcrumbItem = React.forwardRef<
42
- HTMLLIElement,
43
- React.LiHTMLAttributes<HTMLLIElement>
44
- >(({ className, ...props }, ref) => (
45
- <li
46
- ref={ref}
47
- className={cn("inline-flex items-center gap-1.5", className)}
48
- {...props}
49
- />
50
- ));
41
+ 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
+ );
51
51
  BreadcrumbItem.displayName = "BreadcrumbItem";
52
52
 
53
53
  /* -----------------------------------------------------------------------------
54
54
  * Component: BreadcrumbLink
55
55
  * -------------------------------------------------------------------------- */
56
56
 
57
- const BreadcrumbLink = React.forwardRef<
58
- HTMLAnchorElement,
59
- React.AnchorHTMLAttributes<HTMLAnchorElement> & {
60
- asChild?: boolean;
61
- }
62
- >(({ 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
- );
72
- });
57
+ interface BreadcrumbLinkProps
58
+ extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
59
+ asChild?: boolean;
60
+ }
61
+ const BreadcrumbLink = React.forwardRef<HTMLAnchorElement, BreadcrumbLinkProps>(
62
+ ({ 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
+ );
72
+ },
73
+ );
73
74
  BreadcrumbLink.displayName = "BreadcrumbLink";
74
75
 
75
76
  /* -----------------------------------------------------------------------------
76
77
  * Component: BreadcrumbPage
77
78
  * -------------------------------------------------------------------------- */
78
79
 
79
- const BreadcrumbPage = React.forwardRef<
80
- HTMLSpanElement,
81
- React.HTMLAttributes<HTMLSpanElement>
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
- ));
80
+ 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
+ );
92
93
  BreadcrumbPage.displayName = "BreadcrumbPage";
93
94
 
94
95
  /* -----------------------------------------------------------------------------
95
96
  * Component: BreadcrumbSeparator
96
97
  * -------------------------------------------------------------------------- */
97
98
 
99
+ type BreadcrumbSeparatorProps = React.LiHTMLAttributes<HTMLLIElement>;
98
100
  function BreadcrumbSeparator({
99
101
  children,
100
102
  className,
101
103
  ...props
102
- }: React.LiHTMLAttributes<HTMLLIElement>): React.JSX.Element {
104
+ }: BreadcrumbSeparatorProps): React.JSX.Element {
103
105
  return (
104
106
  <li
105
107
  role="presentation"
@@ -116,10 +118,11 @@ function BreadcrumbSeparator({
116
118
  * Component: BreadcrumbEllipsis
117
119
  * -------------------------------------------------------------------------- */
118
120
 
121
+ type BreadcrumbEllipsisProps = React.HTMLAttributes<HTMLSpanElement>;
119
122
  function BreadcrumbEllipsis({
120
123
  className,
121
124
  ...props
122
- }: React.HTMLAttributes<HTMLSpanElement>): React.JSX.Element {
125
+ }: BreadcrumbEllipsisProps): React.JSX.Element {
123
126
  return (
124
127
  <span
125
128
  role="presentation"
@@ -145,4 +148,11 @@ export {
145
148
  BreadcrumbPage,
146
149
  BreadcrumbSeparator,
147
150
  BreadcrumbEllipsis,
151
+ type BreadcrumbProps,
152
+ type BreadcrumbListProps,
153
+ type BreadcrumbItemProps,
154
+ type BreadcrumbLinkProps,
155
+ type BreadcrumbPageProps,
156
+ type BreadcrumbSeparatorProps,
157
+ type BreadcrumbEllipsisProps,
148
158
  };
package/src/button.tsx CHANGED
@@ -38,13 +38,15 @@ const buttonVariants = cva({
38
38
  },
39
39
  });
40
40
 
41
+ type ButtonVariantsProps = VariantProps<typeof buttonVariants>;
42
+
41
43
  /* -----------------------------------------------------------------------------
42
44
  * Component: Button
43
45
  * -------------------------------------------------------------------------- */
44
46
 
45
47
  interface ButtonProps
46
48
  extends React.ButtonHTMLAttributes<HTMLButtonElement>,
47
- VariantProps<typeof buttonVariants> {
49
+ ButtonVariantsProps {
48
50
  asChild?: boolean;
49
51
  }
50
52
 
@@ -68,4 +70,4 @@ Button.displayName = "Button";
68
70
  * Exports
69
71
  * -------------------------------------------------------------------------- */
70
72
 
71
- export { Button, buttonVariants, type ButtonProps };
73
+ export { Button, buttonVariants, type ButtonProps, type ButtonVariantsProps };
package/src/calendar.tsx CHANGED
@@ -29,12 +29,13 @@ function ChevronRight({
29
29
  return <ChevronRightIcon className="size-4" {...props} />;
30
30
  }
31
31
 
32
+ type CalendarProps = DayPickerProps;
32
33
  function Calendar({
33
34
  className,
34
35
  classNames,
35
36
  showOutsideDays = true,
36
37
  ...props
37
- }: DayPickerProps): React.JSX.Element {
38
+ }: CalendarProps): React.JSX.Element {
38
39
  return (
39
40
  <DayPicker
40
41
  showOutsideDays={showOutsideDays}
@@ -91,4 +92,4 @@ function Calendar({
91
92
  * Exports
92
93
  * -------------------------------------------------------------------------- */
93
94
 
94
- export { Calendar, type DateRange };
95
+ export { Calendar, type CalendarProps, type DateRange };
package/src/card.tsx CHANGED
@@ -5,62 +5,63 @@ import { cn } from "./utils";
5
5
  * Component: Card
6
6
  * -------------------------------------------------------------------------- */
7
7
 
8
- const Card = React.forwardRef<
9
- HTMLDivElement,
10
- React.HTMLAttributes<HTMLDivElement>
11
- >(({ className, ...props }, ref) => (
12
- <div
13
- ref={ref}
14
- className={cn(
15
- "bg-card text-card-foreground rounded-lg border shadow-sm",
16
- className,
17
- )}
18
- {...props}
19
- />
20
- ));
8
+ 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
+ );
21
21
  Card.displayName = "Card";
22
22
 
23
23
  /* -----------------------------------------------------------------------------
24
24
  * Component: CardHeader
25
25
  * -------------------------------------------------------------------------- */
26
26
 
27
- const CardHeader = React.forwardRef<
28
- HTMLDivElement,
29
- React.HTMLAttributes<HTMLDivElement>
30
- >(({ className, ...props }, ref) => (
31
- <div
32
- ref={ref}
33
- className={cn("flex flex-col space-y-1.5 p-6", className)}
34
- {...props}
35
- />
36
- ));
27
+ 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
+ );
37
37
  CardHeader.displayName = "CardHeader";
38
38
 
39
39
  /* -----------------------------------------------------------------------------
40
40
  * Component: CardTitle
41
41
  * -------------------------------------------------------------------------- */
42
42
 
43
- const CardTitle = React.forwardRef<
44
- HTMLParagraphElement,
45
- React.HTMLAttributes<HTMLHeadingElement>
46
- >(({ className, children, ...props }, ref) => (
47
- <h3
48
- ref={ref}
49
- className={cn("font-semibold leading-none tracking-tight", className)}
50
- {...props}
51
- >
52
- {children}
53
- </h3>
54
- ));
43
+ 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
+ );
55
55
  CardTitle.displayName = "CardTitle";
56
56
 
57
57
  /* -----------------------------------------------------------------------------
58
58
  * Component: CardDescription
59
59
  * -------------------------------------------------------------------------- */
60
60
 
61
+ type CardDescriptionProps = React.HTMLAttributes<HTMLParagraphElement>;
61
62
  const CardDescription = React.forwardRef<
62
63
  HTMLParagraphElement,
63
- React.HTMLAttributes<HTMLParagraphElement>
64
+ CardDescriptionProps
64
65
  >(({ className, ...props }, ref) => (
65
66
  <p
66
67
  ref={ref}
@@ -74,28 +75,28 @@ CardDescription.displayName = "CardDescription";
74
75
  * Component: CardContent
75
76
  * -------------------------------------------------------------------------- */
76
77
 
77
- const CardContent = React.forwardRef<
78
- HTMLDivElement,
79
- React.HTMLAttributes<HTMLDivElement>
80
- >(({ className, ...props }, ref) => (
81
- <div ref={ref} className={cn("p-6 pt-0", className)} {...props} />
82
- ));
78
+ 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
+ );
83
84
  CardContent.displayName = "CardContent";
84
85
 
85
86
  /* -----------------------------------------------------------------------------
86
87
  * Component: CardFooter
87
88
  * -------------------------------------------------------------------------- */
88
89
 
89
- const CardFooter = React.forwardRef<
90
- HTMLDivElement,
91
- React.HTMLAttributes<HTMLDivElement>
92
- >(({ className, ...props }, ref) => (
93
- <div
94
- ref={ref}
95
- className={cn("flex items-center p-6 pt-0", className)}
96
- {...props}
97
- />
98
- ));
90
+ 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
+ );
99
100
  CardFooter.displayName = "CardFooter";
100
101
 
101
102
  /* -----------------------------------------------------------------------------
@@ -109,4 +110,10 @@ export {
109
110
  CardTitle,
110
111
  CardDescription,
111
112
  CardContent,
113
+ type CardProps,
114
+ type CardHeaderProps,
115
+ type CardFooterProps,
116
+ type CardTitleProps,
117
+ type CardDescriptionProps,
118
+ type CardContentProps,
112
119
  };
package/src/carousel.tsx CHANGED
@@ -6,7 +6,7 @@ import useEmblaCarousel, {
6
6
  } from "embla-carousel-react";
7
7
  import { ArrowLeftIcon, ArrowRightIcon } from "@radix-ui/react-icons";
8
8
  import { cn } from "./utils";
9
- import { Button } from "./button";
9
+ import { Button, type ButtonProps } from "./button";
10
10
 
11
11
  /* -----------------------------------------------------------------------------
12
12
  * Context: Carousel
@@ -17,7 +17,7 @@ type UseCarouselParameters = Parameters<typeof useEmblaCarousel>;
17
17
  type CarouselOptions = UseCarouselParameters[0];
18
18
  type CarouselPlugin = UseCarouselParameters[1];
19
19
 
20
- interface CarouselProps {
20
+ interface BaseCarouselProps {
21
21
  opts?: CarouselOptions;
22
22
  plugins?: CarouselPlugin;
23
23
  orientation?: "horizontal" | "vertical";
@@ -31,7 +31,7 @@ type CarouselContextProps = {
31
31
  scrollNext: () => void;
32
32
  canScrollPrev: boolean;
33
33
  canScrollNext: boolean;
34
- } & CarouselProps;
34
+ } & BaseCarouselProps;
35
35
 
36
36
  const CarouselContext = React.createContext<CarouselContextProps | null>(null);
37
37
 
@@ -49,10 +49,8 @@ function useCarousel(): CarouselContextProps {
49
49
  * Component: Carousel
50
50
  * -------------------------------------------------------------------------- */
51
51
 
52
- const Carousel = React.forwardRef<
53
- HTMLDivElement,
54
- React.HTMLAttributes<HTMLDivElement> & CarouselProps
55
- >(
52
+ type CarouselProps = React.HTMLAttributes<HTMLDivElement> & BaseCarouselProps;
53
+ const Carousel = React.forwardRef<HTMLDivElement, CarouselProps>(
56
54
  (
57
55
  { orientation, opts, setApi, plugins, className, children, ...props },
58
56
  ref,
@@ -153,61 +151,62 @@ Carousel.displayName = "Carousel";
153
151
  * Component: CarouselContent
154
152
  * -------------------------------------------------------------------------- */
155
153
 
156
- const CarouselContent = React.forwardRef<
157
- HTMLDivElement,
158
- React.HTMLAttributes<HTMLDivElement>
159
- >(({ className, ...props }, ref) => {
160
- const { carouselRef, orientation } = useCarousel();
154
+ type CarouselContentProps = React.HTMLAttributes<HTMLDivElement>;
155
+ const CarouselContent = React.forwardRef<HTMLDivElement, CarouselContentProps>(
156
+ ({ className, ...props }, ref) => {
157
+ const { carouselRef, orientation } = useCarousel();
161
158
 
162
- return (
163
- <div ref={carouselRef} className="overflow-hidden">
164
- <div
165
- ref={ref}
166
- className={cn(
167
- "flex",
168
- orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
169
- className,
170
- )}
171
- {...props}
172
- />
173
- </div>
174
- );
175
- });
159
+ return (
160
+ <div ref={carouselRef} className="overflow-hidden">
161
+ <div
162
+ ref={ref}
163
+ className={cn(
164
+ "flex",
165
+ orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col",
166
+ className,
167
+ )}
168
+ {...props}
169
+ />
170
+ </div>
171
+ );
172
+ },
173
+ );
176
174
  CarouselContent.displayName = "CarouselContent";
177
175
 
178
176
  /* -----------------------------------------------------------------------------
179
177
  * Component: CarouselItem
180
178
  * -------------------------------------------------------------------------- */
181
179
 
182
- const CarouselItem = React.forwardRef<
183
- HTMLDivElement,
184
- React.HTMLAttributes<HTMLDivElement>
185
- >(({ className, ...props }, ref) => {
186
- const { orientation } = useCarousel();
180
+ type CarouselItemProps = React.HTMLAttributes<HTMLDivElement>;
181
+ const CarouselItem = React.forwardRef<HTMLDivElement, CarouselItemProps>(
182
+ ({ className, ...props }, ref) => {
183
+ const { orientation } = useCarousel();
187
184
 
188
- return (
189
- <div
190
- ref={ref}
191
- role="group"
192
- aria-roledescription="slide"
193
- className={cn(
194
- "min-w-0 shrink-0 grow-0 basis-full",
195
- orientation === "horizontal" ? "pl-4" : "pt-4",
196
- className,
197
- )}
198
- {...props}
199
- />
200
- );
201
- });
185
+ return (
186
+ <div
187
+ ref={ref}
188
+ role="group"
189
+ aria-roledescription="slide"
190
+ className={cn(
191
+ "min-w-0 shrink-0 grow-0 basis-full",
192
+ orientation === "horizontal" ? "pl-4" : "pt-4",
193
+ className,
194
+ )}
195
+ {...props}
196
+ />
197
+ );
198
+ },
199
+ );
202
200
  CarouselItem.displayName = "CarouselItem";
203
201
 
204
202
  /* -----------------------------------------------------------------------------
205
203
  * Component: CarouselPrevious
206
204
  * -------------------------------------------------------------------------- */
207
205
 
206
+ type CarouselPreviousProps = ButtonProps;
208
207
  const CarouselPrevious = React.forwardRef<
209
208
  HTMLButtonElement,
210
- React.ComponentProps<typeof Button>
209
+ CarouselPreviousProps
211
210
  >(({ className, variant = "outline", size = "icon", ...props }, ref) => {
212
211
  const { orientation, scrollPrev, canScrollPrev } = useCarousel();
213
212
 
@@ -238,33 +237,33 @@ CarouselPrevious.displayName = "CarouselPrevious";
238
237
  * Component: CarouselNext
239
238
  * -------------------------------------------------------------------------- */
240
239
 
241
- const CarouselNext = React.forwardRef<
242
- HTMLButtonElement,
243
- React.ComponentProps<typeof Button>
244
- >(({ className, variant = "outline", size = "icon", ...props }, ref) => {
245
- const { orientation, scrollNext, canScrollNext } = useCarousel();
240
+ type CarouselNextProps = ButtonProps;
241
+ const CarouselNext = React.forwardRef<HTMLButtonElement, CarouselNextProps>(
242
+ ({ className, variant = "outline", size = "icon", ...props }, ref) => {
243
+ const { orientation, scrollNext, canScrollNext } = useCarousel();
246
244
 
247
- return (
248
- <Button
249
- ref={ref}
250
- variant={variant}
251
- size={size}
252
- className={cn(
253
- "absolute size-8 rounded-full",
254
- orientation === "horizontal"
255
- ? "-right-12 top-1/2 -translate-y-1/2"
256
- : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90",
257
- className,
258
- )}
259
- disabled={!canScrollNext}
260
- onClick={scrollNext}
261
- {...props}
262
- >
263
- <ArrowRightIcon className="size-4" />
264
- <span className="sr-only">Next slide</span>
265
- </Button>
266
- );
267
- });
245
+ return (
246
+ <Button
247
+ ref={ref}
248
+ variant={variant}
249
+ size={size}
250
+ className={cn(
251
+ "absolute size-8 rounded-full",
252
+ orientation === "horizontal"
253
+ ? "-right-12 top-1/2 -translate-y-1/2"
254
+ : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90",
255
+ className,
256
+ )}
257
+ disabled={!canScrollNext}
258
+ onClick={scrollNext}
259
+ {...props}
260
+ >
261
+ <ArrowRightIcon className="size-4" />
262
+ <span className="sr-only">Next slide</span>
263
+ </Button>
264
+ );
265
+ },
266
+ );
268
267
  CarouselNext.displayName = "CarouselNext";
269
268
 
270
269
  /* -----------------------------------------------------------------------------
@@ -278,4 +277,9 @@ export {
278
277
  CarouselItem,
279
278
  CarouselPrevious,
280
279
  CarouselNext,
280
+ type CarouselProps,
281
+ type CarouselContentProps,
282
+ type CarouselItemProps,
283
+ type CarouselPreviousProps,
284
+ type CarouselNextProps,
281
285
  };
package/src/checkbox.tsx CHANGED
@@ -9,9 +9,10 @@ import { cn } from "./utils";
9
9
  * Component: Checkbox
10
10
  * -------------------------------------------------------------------------- */
11
11
 
12
+ type CheckboxProps = CheckboxPrimitive.CheckboxProps;
12
13
  const Checkbox = React.forwardRef<
13
14
  React.ElementRef<typeof CheckboxPrimitive.Root>,
14
- CheckboxPrimitive.CheckboxProps
15
+ CheckboxProps
15
16
  >(({ className, ...props }, ref) => (
16
17
  <CheckboxPrimitive.Root
17
18
  ref={ref}
@@ -32,4 +33,4 @@ Checkbox.displayName = CheckboxPrimitive.Root.displayName;
32
33
  * Exports
33
34
  * -------------------------------------------------------------------------- */
34
35
 
35
- export { Checkbox };
36
+ export { Checkbox, type CheckboxProps };
package/src/code.tsx CHANGED
@@ -5,18 +5,20 @@ import { Slot } from "@radix-ui/react-slot";
5
5
  * Component: Code
6
6
  * -------------------------------------------------------------------------- */
7
7
 
8
- const Code = React.forwardRef<
9
- HTMLElement,
10
- React.HTMLAttributes<HTMLElement> & { asChild?: boolean }
11
- >(({ asChild, ...props }, ref) => {
12
- const Comp = asChild ? Slot : "code";
8
+ interface CodeProps extends React.HTMLAttributes<HTMLElement> {
9
+ asChild?: boolean;
10
+ }
11
+ const Code = React.forwardRef<HTMLElement, CodeProps>(
12
+ ({ asChild, ...props }, ref) => {
13
+ const Comp = asChild ? Slot : "code";
13
14
 
14
- return <Comp ref={ref} {...props} />;
15
- });
15
+ return <Comp ref={ref} {...props} />;
16
+ },
17
+ );
16
18
  Code.displayName = "Code";
17
19
 
18
20
  /* -----------------------------------------------------------------------------
19
21
  * Exports
20
22
  * -------------------------------------------------------------------------- */
21
23
 
22
- export { Code };
24
+ export { Code, type CodeProps };