@codefast/ui 0.0.3 → 0.0.4

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 (351) hide show
  1. package/dist/accordion.d.mts +9 -0
  2. package/dist/accordion.d.ts +9 -0
  3. package/dist/accordion.js +2 -0
  4. package/dist/accordion.js.map +1 -0
  5. package/dist/accordion.mjs +2 -0
  6. package/dist/accordion.mjs.map +1 -0
  7. package/dist/alert-dialog.d.mts +16 -0
  8. package/dist/alert-dialog.d.ts +16 -0
  9. package/dist/alert-dialog.js +2 -0
  10. package/dist/alert-dialog.js.map +1 -0
  11. package/dist/alert-dialog.mjs +2 -0
  12. package/dist/alert-dialog.mjs.map +1 -0
  13. package/dist/alert.d.mts +64 -0
  14. package/dist/alert.d.ts +64 -0
  15. package/dist/alert.js +2 -0
  16. package/dist/alert.js.map +1 -0
  17. package/dist/alert.mjs +2 -0
  18. package/dist/alert.mjs.map +1 -0
  19. package/dist/aspect-ratio.d.mts +6 -0
  20. package/dist/aspect-ratio.d.ts +6 -0
  21. package/dist/aspect-ratio.js +2 -0
  22. package/dist/aspect-ratio.js.map +1 -0
  23. package/dist/aspect-ratio.mjs +2 -0
  24. package/dist/aspect-ratio.mjs.map +1 -0
  25. package/dist/avatar.d.mts +8 -0
  26. package/dist/avatar.d.ts +8 -0
  27. package/dist/avatar.js +2 -0
  28. package/dist/avatar.js.map +1 -0
  29. package/dist/avatar.mjs +2 -0
  30. package/dist/avatar.mjs.map +1 -0
  31. package/dist/badge.d.mts +62 -0
  32. package/dist/badge.d.ts +62 -0
  33. package/dist/badge.js +2 -0
  34. package/dist/badge.js.map +1 -0
  35. package/dist/badge.mjs +2 -0
  36. package/dist/badge.mjs.map +1 -0
  37. package/dist/breadcrumb.d.mts +15 -0
  38. package/dist/breadcrumb.d.ts +15 -0
  39. package/dist/breadcrumb.js +2 -0
  40. package/dist/breadcrumb.js.map +1 -0
  41. package/dist/breadcrumb.mjs +2 -0
  42. package/dist/breadcrumb.mjs.map +1 -0
  43. package/dist/button.d.mts +2 -2
  44. package/dist/button.d.ts +2 -2
  45. package/dist/button.js +1 -1
  46. package/dist/button.js.map +1 -1
  47. package/dist/button.mjs +1 -1
  48. package/dist/button.mjs.map +1 -1
  49. package/dist/calendar.d.mts +7 -0
  50. package/dist/calendar.d.ts +7 -0
  51. package/dist/calendar.js +2 -0
  52. package/dist/calendar.js.map +1 -0
  53. package/dist/calendar.mjs +2 -0
  54. package/dist/calendar.mjs.map +1 -0
  55. package/dist/card.d.mts +9 -7
  56. package/dist/card.d.ts +9 -7
  57. package/dist/card.js +1 -1
  58. package/dist/card.js.map +1 -1
  59. package/dist/card.mjs +1 -1
  60. package/dist/card.mjs.map +1 -1
  61. package/dist/carousel.d.mts +22 -0
  62. package/dist/carousel.d.ts +22 -0
  63. package/dist/carousel.js +2 -0
  64. package/dist/carousel.js.map +1 -0
  65. package/dist/carousel.mjs +2 -0
  66. package/dist/carousel.mjs.map +1 -0
  67. package/dist/checkbox.d.mts +6 -0
  68. package/dist/checkbox.d.ts +6 -0
  69. package/dist/checkbox.js +2 -0
  70. package/dist/checkbox.js.map +1 -0
  71. package/dist/checkbox.mjs +2 -0
  72. package/dist/checkbox.mjs.map +1 -0
  73. package/dist/chunk-4ZL55G6C.js +2 -0
  74. package/dist/chunk-4ZL55G6C.js.map +1 -0
  75. package/dist/chunk-76AASLTX.mjs +2 -0
  76. package/dist/chunk-76AASLTX.mjs.map +1 -0
  77. package/dist/chunk-7UVSBFQU.js +2 -0
  78. package/dist/chunk-7UVSBFQU.js.map +1 -0
  79. package/dist/chunk-BP7PEVLB.js +2 -0
  80. package/dist/chunk-BP7PEVLB.js.map +1 -0
  81. package/dist/chunk-BPCLLQ62.mjs +2 -0
  82. package/dist/chunk-BPCLLQ62.mjs.map +1 -0
  83. package/dist/chunk-CAGY2ZSE.js +2 -0
  84. package/dist/chunk-CAGY2ZSE.js.map +1 -0
  85. package/dist/chunk-JTI7KCLO.mjs +2 -0
  86. package/dist/chunk-JTI7KCLO.mjs.map +1 -0
  87. package/dist/{chunk-33V4YP7I.js → chunk-QZCQ42BP.js} +2 -2
  88. package/dist/chunk-QZCQ42BP.js.map +1 -0
  89. package/dist/chunk-WZ4XIF6U.mjs +2 -0
  90. package/dist/chunk-WZ4XIF6U.mjs.map +1 -0
  91. package/dist/chunk-YQJHVJVX.mjs +2 -0
  92. package/dist/chunk-YQJHVJVX.mjs.map +1 -0
  93. package/dist/collapsible.d.mts +8 -0
  94. package/dist/collapsible.d.ts +8 -0
  95. package/dist/collapsible.js +2 -0
  96. package/dist/collapsible.js.map +1 -0
  97. package/dist/collapsible.mjs +2 -0
  98. package/dist/collapsible.mjs.map +1 -0
  99. package/dist/command.d.mts +89 -0
  100. package/dist/command.d.ts +89 -0
  101. package/dist/command.js +2 -0
  102. package/dist/command.js.map +1 -0
  103. package/dist/command.mjs +2 -0
  104. package/dist/command.mjs.map +1 -0
  105. package/dist/context-menu.d.mts +26 -0
  106. package/dist/context-menu.d.ts +26 -0
  107. package/dist/context-menu.js +2 -0
  108. package/dist/context-menu.js.map +1 -0
  109. package/dist/context-menu.mjs +2 -0
  110. package/dist/context-menu.mjs.map +1 -0
  111. package/dist/dialog.d.mts +15 -0
  112. package/dist/dialog.d.ts +15 -0
  113. package/dist/dialog.js +2 -0
  114. package/dist/dialog.mjs +2 -0
  115. package/dist/drawer.d.mts +18 -0
  116. package/dist/drawer.d.ts +18 -0
  117. package/dist/drawer.js +2 -0
  118. package/dist/drawer.js.map +1 -0
  119. package/dist/drawer.mjs +2 -0
  120. package/dist/drawer.mjs.map +1 -0
  121. package/dist/dropdown-menu.d.mts +26 -0
  122. package/dist/dropdown-menu.d.ts +26 -0
  123. package/dist/dropdown-menu.js +2 -0
  124. package/dist/dropdown-menu.js.map +1 -0
  125. package/dist/dropdown-menu.mjs +2 -0
  126. package/dist/dropdown-menu.mjs.map +1 -0
  127. package/dist/form.d.mts +27 -0
  128. package/dist/form.d.ts +27 -0
  129. package/dist/form.js +2 -0
  130. package/dist/form.js.map +1 -0
  131. package/dist/form.mjs +2 -0
  132. package/dist/form.mjs.map +1 -0
  133. package/dist/hover-card.d.mts +8 -0
  134. package/dist/hover-card.d.ts +8 -0
  135. package/dist/hover-card.js +2 -0
  136. package/dist/hover-card.js.map +1 -0
  137. package/dist/hover-card.mjs +2 -0
  138. package/dist/hover-card.mjs.map +1 -0
  139. package/dist/input-otp.d.mts +36 -0
  140. package/dist/input-otp.d.ts +36 -0
  141. package/dist/input-otp.js +2 -0
  142. package/dist/input-otp.js.map +1 -0
  143. package/dist/input-otp.mjs +2 -0
  144. package/dist/input-otp.mjs.map +1 -0
  145. package/dist/input.d.mts +5 -0
  146. package/dist/input.d.ts +5 -0
  147. package/dist/input.js +2 -0
  148. package/dist/input.js.map +1 -0
  149. package/dist/input.mjs +2 -0
  150. package/dist/input.mjs.map +1 -0
  151. package/dist/label.d.mts +6 -0
  152. package/dist/label.d.ts +6 -0
  153. package/dist/label.js +2 -0
  154. package/dist/label.js.map +1 -0
  155. package/dist/label.mjs +2 -0
  156. package/dist/label.mjs.map +1 -0
  157. package/dist/menubar.d.mts +30 -0
  158. package/dist/menubar.d.ts +30 -0
  159. package/dist/menubar.js +2 -0
  160. package/dist/menubar.js.map +1 -0
  161. package/dist/menubar.mjs +2 -0
  162. package/dist/menubar.mjs.map +1 -0
  163. package/dist/navigation-menu.d.mts +68 -0
  164. package/dist/navigation-menu.d.ts +68 -0
  165. package/dist/navigation-menu.js +2 -0
  166. package/dist/navigation-menu.js.map +1 -0
  167. package/dist/navigation-menu.mjs +2 -0
  168. package/dist/navigation-menu.mjs.map +1 -0
  169. package/dist/pagination.d.mts +16 -0
  170. package/dist/pagination.d.ts +16 -0
  171. package/dist/pagination.js +2 -0
  172. package/dist/pagination.js.map +1 -0
  173. package/dist/pagination.mjs +2 -0
  174. package/dist/pagination.mjs.map +1 -0
  175. package/dist/popover.d.mts +9 -0
  176. package/dist/popover.d.ts +9 -0
  177. package/dist/popover.js +2 -0
  178. package/dist/popover.js.map +1 -0
  179. package/dist/popover.mjs +2 -0
  180. package/dist/popover.mjs.map +1 -0
  181. package/dist/progress.d.mts +6 -0
  182. package/dist/progress.d.ts +6 -0
  183. package/dist/progress.js +2 -0
  184. package/dist/progress.js.map +1 -0
  185. package/dist/progress.mjs +2 -0
  186. package/dist/progress.mjs.map +1 -0
  187. package/dist/radio-group.d.mts +7 -0
  188. package/dist/radio-group.d.ts +7 -0
  189. package/dist/radio-group.js +2 -0
  190. package/dist/radio-group.js.map +1 -0
  191. package/dist/radio-group.mjs +2 -0
  192. package/dist/radio-group.mjs.map +1 -0
  193. package/dist/resizable.d.mts +26 -0
  194. package/dist/resizable.d.ts +26 -0
  195. package/dist/resizable.js +2 -0
  196. package/dist/resizable.js.map +1 -0
  197. package/dist/resizable.mjs +2 -0
  198. package/dist/resizable.mjs.map +1 -0
  199. package/dist/scroll-area.d.mts +7 -0
  200. package/dist/scroll-area.d.ts +7 -0
  201. package/dist/scroll-area.js +2 -0
  202. package/dist/scroll-area.js.map +1 -0
  203. package/dist/scroll-area.mjs +2 -0
  204. package/dist/scroll-area.mjs.map +1 -0
  205. package/dist/select.d.mts +15 -0
  206. package/dist/select.d.ts +15 -0
  207. package/dist/select.js +2 -0
  208. package/dist/select.js.map +1 -0
  209. package/dist/select.mjs +2 -0
  210. package/dist/select.mjs.map +1 -0
  211. package/dist/separator.d.mts +6 -0
  212. package/dist/separator.d.ts +6 -0
  213. package/dist/separator.js +2 -0
  214. package/dist/separator.js.map +1 -0
  215. package/dist/separator.mjs +2 -0
  216. package/dist/separator.mjs.map +1 -0
  217. package/dist/sheet.d.mts +75 -0
  218. package/dist/sheet.d.ts +75 -0
  219. package/dist/sheet.js +2 -0
  220. package/dist/sheet.js.map +1 -0
  221. package/dist/sheet.mjs +2 -0
  222. package/dist/sheet.mjs.map +1 -0
  223. package/dist/skeleton.d.mts +5 -0
  224. package/dist/skeleton.d.ts +5 -0
  225. package/dist/skeleton.js +2 -0
  226. package/dist/skeleton.js.map +1 -0
  227. package/dist/skeleton.mjs +2 -0
  228. package/dist/skeleton.mjs.map +1 -0
  229. package/dist/slider.d.mts +6 -0
  230. package/dist/slider.d.ts +6 -0
  231. package/dist/slider.js +2 -0
  232. package/dist/slider.js.map +1 -0
  233. package/dist/slider.mjs +2 -0
  234. package/dist/slider.mjs.map +1 -0
  235. package/dist/sonner.d.mts +8 -0
  236. package/dist/sonner.d.ts +8 -0
  237. package/dist/sonner.js +2 -0
  238. package/dist/sonner.js.map +1 -0
  239. package/dist/sonner.mjs +2 -0
  240. package/dist/sonner.mjs.map +1 -0
  241. package/dist/styles.css +1 -1
  242. package/dist/styles.css.map +1 -1
  243. package/dist/switch.d.mts +6 -0
  244. package/dist/switch.d.ts +6 -0
  245. package/dist/switch.js +2 -0
  246. package/dist/switch.js.map +1 -0
  247. package/dist/switch.mjs +2 -0
  248. package/dist/switch.mjs.map +1 -0
  249. package/dist/table.d.mts +12 -0
  250. package/dist/table.d.ts +12 -0
  251. package/dist/table.js +2 -0
  252. package/dist/table.js.map +1 -0
  253. package/dist/table.mjs +2 -0
  254. package/dist/table.mjs.map +1 -0
  255. package/dist/tabs.d.mts +9 -0
  256. package/dist/tabs.d.ts +9 -0
  257. package/dist/tabs.js +2 -0
  258. package/dist/tabs.js.map +1 -0
  259. package/dist/tabs.mjs +2 -0
  260. package/dist/tabs.mjs.map +1 -0
  261. package/dist/textarea.d.mts +5 -0
  262. package/dist/textarea.d.ts +5 -0
  263. package/dist/textarea.js +2 -0
  264. package/dist/textarea.js.map +1 -0
  265. package/dist/textarea.mjs +2 -0
  266. package/dist/textarea.mjs.map +1 -0
  267. package/dist/toggle-group.d.mts +10 -0
  268. package/dist/toggle-group.d.ts +10 -0
  269. package/dist/toggle-group.js +2 -0
  270. package/dist/toggle-group.js.map +1 -0
  271. package/dist/toggle-group.mjs +2 -0
  272. package/dist/toggle-group.mjs.map +1 -0
  273. package/dist/toggle.d.mts +66 -0
  274. package/dist/toggle.d.ts +66 -0
  275. package/dist/toggle.js +2 -0
  276. package/dist/toggle.js.map +1 -0
  277. package/dist/toggle.mjs +2 -0
  278. package/dist/toggle.mjs.map +1 -0
  279. package/dist/tooltip.d.mts +11 -0
  280. package/dist/tooltip.d.ts +11 -0
  281. package/dist/tooltip.js +2 -0
  282. package/dist/tooltip.js.map +1 -0
  283. package/dist/tooltip.mjs +2 -0
  284. package/dist/tooltip.mjs.map +1 -0
  285. package/dist/{cva.d.mts → utils.d.mts} +2 -2
  286. package/dist/{cva.d.ts → utils.d.ts} +2 -2
  287. package/dist/utils.js +2 -0
  288. package/dist/utils.js.map +1 -0
  289. package/dist/utils.mjs +2 -0
  290. package/dist/utils.mjs.map +1 -0
  291. package/package.json +259 -18
  292. package/src/accordion.tsx +80 -0
  293. package/src/alert-dialog.tsx +190 -0
  294. package/src/alert.tsx +78 -0
  295. package/src/aspect-ratio.tsx +15 -0
  296. package/src/avatar.tsx +65 -0
  297. package/src/badge.tsx +43 -0
  298. package/src/breadcrumb.tsx +148 -0
  299. package/src/button.tsx +3 -3
  300. package/src/calendar.tsx +95 -0
  301. package/src/card.tsx +112 -25
  302. package/src/carousel.tsx +281 -0
  303. package/src/checkbox.tsx +36 -0
  304. package/src/collapsible.tsx +27 -0
  305. package/src/command.tsx +214 -0
  306. package/src/context-menu.tsx +290 -0
  307. package/src/dialog.tsx +176 -0
  308. package/src/drawer.tsx +164 -0
  309. package/src/dropdown-menu.tsx +290 -0
  310. package/src/form.tsx +225 -0
  311. package/src/hover-card.tsx +54 -0
  312. package/src/input-otp.tsx +100 -0
  313. package/src/input.tsx +30 -0
  314. package/src/label.tsx +29 -0
  315. package/src/menubar.tsx +326 -0
  316. package/src/navigation-menu.tsx +189 -0
  317. package/src/pagination.tsx +162 -0
  318. package/src/popover.tsx +62 -0
  319. package/src/progress.tsx +35 -0
  320. package/src/radio-group.tsx +54 -0
  321. package/src/resizable.tsx +67 -0
  322. package/src/scroll-area.tsx +60 -0
  323. package/src/select.tsx +216 -0
  324. package/src/separator.tsx +38 -0
  325. package/src/sheet.tsx +209 -0
  326. package/src/skeleton.tsx +24 -0
  327. package/src/slider.tsx +35 -0
  328. package/src/sonner.tsx +41 -0
  329. package/src/switch.tsx +38 -0
  330. package/src/table.tsx +155 -0
  331. package/src/tabs.tsx +75 -0
  332. package/src/textarea.tsx +29 -0
  333. package/src/toggle-group.tsx +70 -0
  334. package/src/toggle.tsx +56 -0
  335. package/src/tooltip.tsx +84 -0
  336. package/src/{cva.ts → utils.ts} +5 -1
  337. package/tailwind.config.ts +39 -70
  338. package/dist/chunk-33V4YP7I.js.map +0 -1
  339. package/dist/chunk-JVQ3OM5P.mjs +0 -2
  340. package/dist/chunk-JVQ3OM5P.mjs.map +0 -1
  341. package/dist/code.d.mts +0 -3
  342. package/dist/code.d.ts +0 -3
  343. package/dist/code.js +0 -2
  344. package/dist/code.js.map +0 -1
  345. package/dist/code.mjs +0 -2
  346. package/dist/code.mjs.map +0 -1
  347. package/dist/cva.js +0 -2
  348. package/dist/cva.mjs +0 -2
  349. package/src/code.tsx +0 -5
  350. /package/dist/{cva.js.map → dialog.js.map} +0 -0
  351. /package/dist/{cva.mjs.map → dialog.mjs.map} +0 -0
@@ -0,0 +1,62 @@
1
+ "use client";
2
+
3
+ import * as React from "react";
4
+ import * as PopoverPrimitive from "@radix-ui/react-popover";
5
+ import { cn } from "./utils";
6
+
7
+ /* -----------------------------------------------------------------------------
8
+ * Component: Popover
9
+ * -------------------------------------------------------------------------- */
10
+
11
+ const Popover = PopoverPrimitive.Root;
12
+
13
+ /* -----------------------------------------------------------------------------
14
+ * Component: PopoverTrigger
15
+ * -------------------------------------------------------------------------- */
16
+
17
+ const PopoverTrigger = PopoverPrimitive.Trigger;
18
+
19
+ /* -----------------------------------------------------------------------------
20
+ * Component: PopoverAnchor
21
+ * -------------------------------------------------------------------------- */
22
+
23
+ const PopoverAnchor = PopoverPrimitive.Anchor;
24
+
25
+ /* -----------------------------------------------------------------------------
26
+ * Component: PopoverContent
27
+ * -------------------------------------------------------------------------- */
28
+
29
+ const PopoverContent = React.forwardRef<
30
+ React.ElementRef<typeof PopoverPrimitive.Content>,
31
+ PopoverPrimitive.PopoverContentProps
32
+ >(({ className, align = "center", sideOffset = 4, ...props }, ref) => (
33
+ <PopoverPrimitive.Portal>
34
+ <PopoverPrimitive.Content
35
+ ref={ref}
36
+ align={align}
37
+ sideOffset={sideOffset}
38
+ className={cn(
39
+ "bg-popover text-popover-foreground z-50 w-72 rounded-md border p-4 shadow-md outline-none",
40
+ "data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
41
+ "data-[state=open]:data-[side=top]:slide-in-from-bottom-2",
42
+ "data-[state=open]:data-[side=right]:slide-in-from-left-2",
43
+ "data-[state=open]:data-[side=bottom]:slide-in-from-top-2",
44
+ "data-[state=open]:data-[side=left]:slide-in-from-right-2",
45
+ "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
46
+ "data-[state=closed]:data-[side=top]:slide-out-to-bottom-2",
47
+ "data-[state=closed]:data-[side=left]:slide-out-to-right-2",
48
+ "data-[state=closed]:data-[side=bottom]:slide-out-to-top-2",
49
+ "data-[state=closed]:data-[side=right]:slide-out-to-left-2",
50
+ className,
51
+ )}
52
+ {...props}
53
+ />
54
+ </PopoverPrimitive.Portal>
55
+ ));
56
+ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
57
+
58
+ /* -----------------------------------------------------------------------------
59
+ * Exports
60
+ * -------------------------------------------------------------------------- */
61
+
62
+ export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };
@@ -0,0 +1,35 @@
1
+ "use client";
2
+
3
+ import * as React from "react";
4
+ import * as ProgressPrimitive from "@radix-ui/react-progress";
5
+ import { cn } from "./utils";
6
+
7
+ /* -----------------------------------------------------------------------------
8
+ * Component: Progress
9
+ * -------------------------------------------------------------------------- */
10
+
11
+ const Progress = React.forwardRef<
12
+ React.ElementRef<typeof ProgressPrimitive.Root>,
13
+ ProgressPrimitive.ProgressProps
14
+ >(({ className, value, ...props }, ref) => (
15
+ <ProgressPrimitive.Root
16
+ ref={ref}
17
+ className={cn(
18
+ "bg-primary/20 relative h-2 w-full overflow-hidden rounded-full",
19
+ className,
20
+ )}
21
+ {...props}
22
+ >
23
+ <ProgressPrimitive.Indicator
24
+ className="bg-primary h-full w-full flex-1 transition-all"
25
+ style={{ transform: `translateX(-${100 - (value || 0)}%)` }}
26
+ />
27
+ </ProgressPrimitive.Root>
28
+ ));
29
+ Progress.displayName = ProgressPrimitive.Root.displayName;
30
+
31
+ /* -----------------------------------------------------------------------------
32
+ * Exports
33
+ * -------------------------------------------------------------------------- */
34
+
35
+ export { Progress };
@@ -0,0 +1,54 @@
1
+ "use client";
2
+
3
+ import * as React from "react";
4
+ import { DotFilledIcon } from "@radix-ui/react-icons";
5
+ import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
6
+ import { cn } from "./utils";
7
+
8
+ /* -----------------------------------------------------------------------------
9
+ * Component: RadioGroup
10
+ * -------------------------------------------------------------------------- */
11
+
12
+ const RadioGroup = React.forwardRef<
13
+ React.ElementRef<typeof RadioGroupPrimitive.Root>,
14
+ RadioGroupPrimitive.RadioGroupProps
15
+ >(({ className, ...props }, ref) => {
16
+ return (
17
+ <RadioGroupPrimitive.Root
18
+ className={cn("grid gap-2", className)}
19
+ {...props}
20
+ ref={ref}
21
+ />
22
+ );
23
+ });
24
+ RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
25
+
26
+ /* -----------------------------------------------------------------------------
27
+ * Component: RadioGroupItem
28
+ * -------------------------------------------------------------------------- */
29
+
30
+ const RadioGroupItem = React.forwardRef<
31
+ React.ElementRef<typeof RadioGroupPrimitive.Item>,
32
+ RadioGroupPrimitive.RadioGroupItemProps
33
+ >(({ className, ...props }, ref) => {
34
+ return (
35
+ <RadioGroupPrimitive.Item
36
+ ref={ref}
37
+ className={cn(
38
+ "border-compound text-compound-foreground ring-offset-background focus-visible:ring-ring group aspect-square size-4 rounded-full border focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
39
+ "aria-checked:border-primary",
40
+ className,
41
+ )}
42
+ {...props}
43
+ >
44
+ <RadioGroupPrimitive.Indicator className="after:bg-primary relative flex h-full w-full items-center justify-center after:block after:size-2.5 after:rounded-full" />
45
+ </RadioGroupPrimitive.Item>
46
+ );
47
+ });
48
+ RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
49
+
50
+ /* -----------------------------------------------------------------------------
51
+ * Exports
52
+ * -------------------------------------------------------------------------- */
53
+
54
+ export { RadioGroup, RadioGroupItem };
@@ -0,0 +1,67 @@
1
+ "use client";
2
+
3
+ import { DragHandleDots2Icon } from "@radix-ui/react-icons";
4
+ import * as ResizablePrimitive from "react-resizable-panels";
5
+ import { cn } from "./utils";
6
+
7
+ /* -----------------------------------------------------------------------------
8
+ * Component: ResizablePanelGroup
9
+ * -------------------------------------------------------------------------- */
10
+
11
+ function ResizablePanelGroup({
12
+ className,
13
+ ...props
14
+ }: ResizablePrimitive.PanelGroupProps): React.JSX.Element {
15
+ return (
16
+ <ResizablePrimitive.PanelGroup
17
+ className={cn(
18
+ "flex h-full w-full",
19
+ "data-[panel-group-direction=vertical]:flex-col",
20
+ className,
21
+ )}
22
+ {...props}
23
+ />
24
+ );
25
+ }
26
+
27
+ /* -----------------------------------------------------------------------------
28
+ * Component: ResizablePanel
29
+ * -------------------------------------------------------------------------- */
30
+
31
+ const ResizablePanel = ResizablePrimitive.Panel;
32
+
33
+ /* -----------------------------------------------------------------------------
34
+ * Component: ResizableHandle
35
+ * -------------------------------------------------------------------------- */
36
+
37
+ function ResizableHandle({
38
+ withHandle,
39
+ className,
40
+ ...props
41
+ }: ResizablePrimitive.PanelResizeHandleProps & {
42
+ withHandle?: boolean;
43
+ }): React.JSX.Element {
44
+ return (
45
+ <ResizablePrimitive.PanelResizeHandle
46
+ className={cn(
47
+ "bg-border focus-visible:ring-ring 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-1 focus-visible:ring-offset-1",
48
+ "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",
49
+ "[&[data-panel-group-direction=vertical]>div]:rotate-90",
50
+ className,
51
+ )}
52
+ {...props}
53
+ >
54
+ {withHandle ? (
55
+ <div className="bg-border z-10 flex h-4 w-3 items-center justify-center rounded-sm border">
56
+ <DragHandleDots2Icon className="size-2.5" />
57
+ </div>
58
+ ) : null}
59
+ </ResizablePrimitive.PanelResizeHandle>
60
+ );
61
+ }
62
+
63
+ /* -----------------------------------------------------------------------------
64
+ * Exports
65
+ * -------------------------------------------------------------------------- */
66
+
67
+ export { ResizablePanelGroup, ResizablePanel, ResizableHandle };
@@ -0,0 +1,60 @@
1
+ "use client";
2
+
3
+ import * as React from "react";
4
+ import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
5
+ import { cn } from "./utils";
6
+
7
+ /* -----------------------------------------------------------------------------
8
+ * Component: ScrollArea
9
+ * -------------------------------------------------------------------------- */
10
+
11
+ const ScrollArea = React.forwardRef<
12
+ React.ElementRef<typeof ScrollAreaPrimitive.Root>,
13
+ ScrollAreaPrimitive.ScrollAreaProps
14
+ >(({ className, children, ...props }, ref) => (
15
+ <ScrollAreaPrimitive.Root
16
+ ref={ref}
17
+ className={cn("relative overflow-hidden", className)}
18
+ {...props}
19
+ >
20
+ <ScrollAreaPrimitive.Viewport className="size-full rounded-[inherit]">
21
+ {children}
22
+ </ScrollAreaPrimitive.Viewport>
23
+ <ScrollBar orientation="vertical" />
24
+ <ScrollBar orientation="horizontal" />
25
+ <ScrollAreaPrimitive.Corner />
26
+ </ScrollAreaPrimitive.Root>
27
+ ));
28
+ ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
29
+
30
+ /* -----------------------------------------------------------------------------
31
+ * Component: ScrollBar
32
+ * -------------------------------------------------------------------------- */
33
+
34
+ const ScrollBar = React.forwardRef<
35
+ React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,
36
+ ScrollAreaPrimitive.ScrollAreaScrollbarProps
37
+ >(({ className, orientation = "vertical", ...props }, ref) => (
38
+ <ScrollAreaPrimitive.ScrollAreaScrollbar
39
+ ref={ref}
40
+ orientation={orientation}
41
+ className={cn(
42
+ "flex touch-none select-none transition-colors",
43
+ orientation === "vertical" &&
44
+ "h-full w-2.5 border-l border-l-transparent p-px",
45
+ orientation === "horizontal" &&
46
+ "h-2.5 flex-col border-t border-t-transparent p-px",
47
+ className,
48
+ )}
49
+ {...props}
50
+ >
51
+ <ScrollAreaPrimitive.ScrollAreaThumb className="bg-border relative flex-1 rounded-full" />
52
+ </ScrollAreaPrimitive.ScrollAreaScrollbar>
53
+ ));
54
+ ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
55
+
56
+ /* -----------------------------------------------------------------------------
57
+ * Exports
58
+ * -------------------------------------------------------------------------- */
59
+
60
+ export { ScrollArea, ScrollBar };
package/src/select.tsx ADDED
@@ -0,0 +1,216 @@
1
+ "use client";
2
+
3
+ import * as React from "react";
4
+ import {
5
+ CaretSortIcon,
6
+ CheckIcon,
7
+ ChevronDownIcon,
8
+ ChevronUpIcon,
9
+ } from "@radix-ui/react-icons";
10
+ import * as SelectPrimitive from "@radix-ui/react-select";
11
+ import { cn } from "./utils";
12
+
13
+ /* -----------------------------------------------------------------------------
14
+ * Component: Select
15
+ * -------------------------------------------------------------------------- */
16
+
17
+ const Select = SelectPrimitive.Root;
18
+
19
+ /* -----------------------------------------------------------------------------
20
+ * Component: SelectGroup
21
+ * -------------------------------------------------------------------------- */
22
+
23
+ const SelectGroup = SelectPrimitive.Group;
24
+
25
+ /* -----------------------------------------------------------------------------
26
+ * Component: SelectValue
27
+ * -------------------------------------------------------------------------- */
28
+
29
+ const SelectValue = SelectPrimitive.Value;
30
+
31
+ /* -----------------------------------------------------------------------------
32
+ * Component: SelectTrigger
33
+ * -------------------------------------------------------------------------- */
34
+
35
+ const SelectTrigger = React.forwardRef<
36
+ React.ElementRef<typeof SelectPrimitive.Trigger>,
37
+ SelectPrimitive.SelectTriggerProps
38
+ >(({ className, children, ...props }, ref) => (
39
+ <SelectPrimitive.Trigger
40
+ ref={ref}
41
+ className={cn(
42
+ "border-input ring-offset-background placeholder:text-muted-foreground focus:ring-ring flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border bg-transparent px-3 py-2 text-sm shadow-sm focus:outline-none focus:ring-1 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
43
+ className,
44
+ )}
45
+ {...props}
46
+ >
47
+ {children}
48
+ <SelectPrimitive.Icon asChild>
49
+ <CaretSortIcon className="size-4 opacity-50" />
50
+ </SelectPrimitive.Icon>
51
+ </SelectPrimitive.Trigger>
52
+ ));
53
+ SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
54
+
55
+ /* -----------------------------------------------------------------------------
56
+ * Component: SelectScrollUpButton
57
+ * -------------------------------------------------------------------------- */
58
+
59
+ const SelectScrollUpButton = React.forwardRef<
60
+ React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,
61
+ SelectPrimitive.SelectScrollUpButtonProps
62
+ >(({ className, ...props }, ref) => (
63
+ <SelectPrimitive.ScrollUpButton
64
+ ref={ref}
65
+ className={cn(
66
+ "flex cursor-default items-center justify-center py-1",
67
+ className,
68
+ )}
69
+ {...props}
70
+ >
71
+ <ChevronUpIcon />
72
+ </SelectPrimitive.ScrollUpButton>
73
+ ));
74
+ SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
75
+
76
+ /* -----------------------------------------------------------------------------
77
+ * Component: SelectScrollDownButton
78
+ * -------------------------------------------------------------------------- */
79
+
80
+ const SelectScrollDownButton = React.forwardRef<
81
+ React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,
82
+ SelectPrimitive.SelectScrollDownButtonProps
83
+ >(({ className, ...props }, ref) => (
84
+ <SelectPrimitive.ScrollDownButton
85
+ ref={ref}
86
+ className={cn(
87
+ "flex cursor-default items-center justify-center py-1",
88
+ className,
89
+ )}
90
+ {...props}
91
+ >
92
+ <ChevronDownIcon />
93
+ </SelectPrimitive.ScrollDownButton>
94
+ ));
95
+ SelectScrollDownButton.displayName =
96
+ SelectPrimitive.ScrollDownButton.displayName;
97
+
98
+ /* -----------------------------------------------------------------------------
99
+ * Component: SelectContent
100
+ * -------------------------------------------------------------------------- */
101
+
102
+ const SelectContent = React.forwardRef<
103
+ React.ElementRef<typeof SelectPrimitive.Content>,
104
+ SelectPrimitive.SelectContentProps
105
+ >(({ className, children, position = "popper", ...props }, ref) => (
106
+ <SelectPrimitive.Portal>
107
+ <SelectPrimitive.Content
108
+ ref={ref}
109
+ className={cn(
110
+ "bg-popover text-popover-foreground relative z-50 max-h-[var(--radix-select-content-available-height)] min-w-[8rem] overflow-hidden rounded-md border shadow-md",
111
+ "data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
112
+ "data-[state=open]:data-[side=top]:slide-in-from-bottom-2",
113
+ "data-[state=open]:data-[side=right]:slide-in-from-left-2",
114
+ "data-[state=open]:data-[side=bottom]:slide-in-from-top-2",
115
+ "data-[state=open]:data-[side=left]:slide-in-from-right-2",
116
+ "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
117
+ "data-[state=closed]:data-[side=top]:slide-out-to-bottom-2",
118
+ "data-[state=closed]:data-[side=left]:slide-out-to-right-2",
119
+ "data-[state=closed]:data-[side=bottom]:slide-out-to-top-2",
120
+ "data-[state=closed]:data-[side=right]:slide-out-to-left-2",
121
+ position === "popper" && [
122
+ "data-[side=top]:-translate-y-1",
123
+ "data-[side=right]:translate-x-1",
124
+ "data-[side=bottom]:translate-y-1",
125
+ "data-[side=left]:-translate-x-1",
126
+ ],
127
+ className,
128
+ )}
129
+ position={position}
130
+ {...props}
131
+ >
132
+ <SelectScrollUpButton />
133
+ <SelectPrimitive.Viewport className="p-1">
134
+ {children}
135
+ </SelectPrimitive.Viewport>
136
+ <SelectScrollDownButton />
137
+ </SelectPrimitive.Content>
138
+ </SelectPrimitive.Portal>
139
+ ));
140
+ SelectContent.displayName = SelectPrimitive.Content.displayName;
141
+
142
+ /* -----------------------------------------------------------------------------
143
+ * Component: SelectLabel
144
+ * -------------------------------------------------------------------------- */
145
+
146
+ const SelectLabel = React.forwardRef<
147
+ React.ElementRef<typeof SelectPrimitive.Label>,
148
+ SelectPrimitive.SelectLabelProps
149
+ >(({ className, ...props }, ref) => (
150
+ <SelectPrimitive.Label
151
+ ref={ref}
152
+ className={cn("px-2 py-1.5 text-sm font-semibold", className)}
153
+ {...props}
154
+ />
155
+ ));
156
+ SelectLabel.displayName = SelectPrimitive.Label.displayName;
157
+
158
+ /* -----------------------------------------------------------------------------
159
+ * Component: SelectItem
160
+ * -------------------------------------------------------------------------- */
161
+
162
+ const SelectItem = React.forwardRef<
163
+ React.ElementRef<typeof SelectPrimitive.Item>,
164
+ SelectPrimitive.SelectItemProps
165
+ >(({ className, children, ...props }, ref) => (
166
+ <SelectPrimitive.Item
167
+ ref={ref}
168
+ className={cn(
169
+ "focus:bg-accent focus:text-accent-foreground relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none",
170
+ "aria-disabled:pointer-events-none aria-disabled:opacity-50",
171
+ className,
172
+ )}
173
+ {...props}
174
+ >
175
+ <span className="absolute right-2 flex h-3.5 w-3.5 items-center justify-center">
176
+ <SelectPrimitive.ItemIndicator>
177
+ <CheckIcon className="size-4" />
178
+ </SelectPrimitive.ItemIndicator>
179
+ </span>
180
+ <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>
181
+ </SelectPrimitive.Item>
182
+ ));
183
+ SelectItem.displayName = SelectPrimitive.Item.displayName;
184
+
185
+ /* -----------------------------------------------------------------------------
186
+ * Component: SelectSeparator
187
+ * -------------------------------------------------------------------------- */
188
+
189
+ const SelectSeparator = React.forwardRef<
190
+ React.ElementRef<typeof SelectPrimitive.Separator>,
191
+ SelectPrimitive.SelectSeparatorProps
192
+ >(({ className, ...props }, ref) => (
193
+ <SelectPrimitive.Separator
194
+ ref={ref}
195
+ className={cn("bg-muted -mx-1 my-1 h-px", className)}
196
+ {...props}
197
+ />
198
+ ));
199
+ SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
200
+
201
+ /* -----------------------------------------------------------------------------
202
+ * Exports
203
+ * -------------------------------------------------------------------------- */
204
+
205
+ export {
206
+ Select,
207
+ SelectGroup,
208
+ SelectValue,
209
+ SelectTrigger,
210
+ SelectContent,
211
+ SelectLabel,
212
+ SelectItem,
213
+ SelectSeparator,
214
+ SelectScrollUpButton,
215
+ SelectScrollDownButton,
216
+ };
@@ -0,0 +1,38 @@
1
+ "use client";
2
+
3
+ import * as React from "react";
4
+ import * as SeparatorPrimitive from "@radix-ui/react-separator";
5
+ import { cn } from "./utils";
6
+
7
+ /* -----------------------------------------------------------------------------
8
+ * Component: Separator
9
+ * -------------------------------------------------------------------------- */
10
+
11
+ const Separator = React.forwardRef<
12
+ React.ElementRef<typeof SeparatorPrimitive.Root>,
13
+ SeparatorPrimitive.SeparatorProps
14
+ >(
15
+ (
16
+ { className, orientation = "horizontal", decorative = true, ...props },
17
+ ref,
18
+ ) => (
19
+ <SeparatorPrimitive.Root
20
+ ref={ref}
21
+ decorative={decorative}
22
+ orientation={orientation}
23
+ className={cn(
24
+ "bg-border shrink-0",
25
+ orientation === "horizontal" ? "h-px w-full" : "h-full w-px",
26
+ className,
27
+ )}
28
+ {...props}
29
+ />
30
+ ),
31
+ );
32
+ Separator.displayName = SeparatorPrimitive.Root.displayName;
33
+
34
+ /* -----------------------------------------------------------------------------
35
+ * Exports
36
+ * -------------------------------------------------------------------------- */
37
+
38
+ export { Separator };