@codefast/ui 0.0.2 → 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 (348) 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 +65 -4
  44. package/dist/button.d.ts +65 -4
  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-QZCQ42BP.js +2 -0
  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.js.map +1 -0
  115. package/dist/dialog.mjs +2 -0
  116. package/dist/dialog.mjs.map +1 -0
  117. package/dist/drawer.d.mts +18 -0
  118. package/dist/drawer.d.ts +18 -0
  119. package/dist/drawer.js +2 -0
  120. package/dist/drawer.js.map +1 -0
  121. package/dist/drawer.mjs +2 -0
  122. package/dist/drawer.mjs.map +1 -0
  123. package/dist/dropdown-menu.d.mts +26 -0
  124. package/dist/dropdown-menu.d.ts +26 -0
  125. package/dist/dropdown-menu.js +2 -0
  126. package/dist/dropdown-menu.js.map +1 -0
  127. package/dist/dropdown-menu.mjs +2 -0
  128. package/dist/dropdown-menu.mjs.map +1 -0
  129. package/dist/form.d.mts +27 -0
  130. package/dist/form.d.ts +27 -0
  131. package/dist/form.js +2 -0
  132. package/dist/form.js.map +1 -0
  133. package/dist/form.mjs +2 -0
  134. package/dist/form.mjs.map +1 -0
  135. package/dist/hover-card.d.mts +8 -0
  136. package/dist/hover-card.d.ts +8 -0
  137. package/dist/hover-card.js +2 -0
  138. package/dist/hover-card.js.map +1 -0
  139. package/dist/hover-card.mjs +2 -0
  140. package/dist/hover-card.mjs.map +1 -0
  141. package/dist/input-otp.d.mts +36 -0
  142. package/dist/input-otp.d.ts +36 -0
  143. package/dist/input-otp.js +2 -0
  144. package/dist/input-otp.js.map +1 -0
  145. package/dist/input-otp.mjs +2 -0
  146. package/dist/input-otp.mjs.map +1 -0
  147. package/dist/input.d.mts +5 -0
  148. package/dist/input.d.ts +5 -0
  149. package/dist/input.js +2 -0
  150. package/dist/input.js.map +1 -0
  151. package/dist/input.mjs +2 -0
  152. package/dist/input.mjs.map +1 -0
  153. package/dist/label.d.mts +6 -0
  154. package/dist/label.d.ts +6 -0
  155. package/dist/label.js +2 -0
  156. package/dist/label.js.map +1 -0
  157. package/dist/label.mjs +2 -0
  158. package/dist/label.mjs.map +1 -0
  159. package/dist/menubar.d.mts +30 -0
  160. package/dist/menubar.d.ts +30 -0
  161. package/dist/menubar.js +2 -0
  162. package/dist/menubar.js.map +1 -0
  163. package/dist/menubar.mjs +2 -0
  164. package/dist/menubar.mjs.map +1 -0
  165. package/dist/navigation-menu.d.mts +68 -0
  166. package/dist/navigation-menu.d.ts +68 -0
  167. package/dist/navigation-menu.js +2 -0
  168. package/dist/navigation-menu.js.map +1 -0
  169. package/dist/navigation-menu.mjs +2 -0
  170. package/dist/navigation-menu.mjs.map +1 -0
  171. package/dist/pagination.d.mts +16 -0
  172. package/dist/pagination.d.ts +16 -0
  173. package/dist/pagination.js +2 -0
  174. package/dist/pagination.js.map +1 -0
  175. package/dist/pagination.mjs +2 -0
  176. package/dist/pagination.mjs.map +1 -0
  177. package/dist/popover.d.mts +9 -0
  178. package/dist/popover.d.ts +9 -0
  179. package/dist/popover.js +2 -0
  180. package/dist/popover.js.map +1 -0
  181. package/dist/popover.mjs +2 -0
  182. package/dist/popover.mjs.map +1 -0
  183. package/dist/progress.d.mts +6 -0
  184. package/dist/progress.d.ts +6 -0
  185. package/dist/progress.js +2 -0
  186. package/dist/progress.js.map +1 -0
  187. package/dist/progress.mjs +2 -0
  188. package/dist/progress.mjs.map +1 -0
  189. package/dist/radio-group.d.mts +7 -0
  190. package/dist/radio-group.d.ts +7 -0
  191. package/dist/radio-group.js +2 -0
  192. package/dist/radio-group.js.map +1 -0
  193. package/dist/radio-group.mjs +2 -0
  194. package/dist/radio-group.mjs.map +1 -0
  195. package/dist/resizable.d.mts +26 -0
  196. package/dist/resizable.d.ts +26 -0
  197. package/dist/resizable.js +2 -0
  198. package/dist/resizable.js.map +1 -0
  199. package/dist/resizable.mjs +2 -0
  200. package/dist/resizable.mjs.map +1 -0
  201. package/dist/scroll-area.d.mts +7 -0
  202. package/dist/scroll-area.d.ts +7 -0
  203. package/dist/scroll-area.js +2 -0
  204. package/dist/scroll-area.js.map +1 -0
  205. package/dist/scroll-area.mjs +2 -0
  206. package/dist/scroll-area.mjs.map +1 -0
  207. package/dist/select.d.mts +15 -0
  208. package/dist/select.d.ts +15 -0
  209. package/dist/select.js +2 -0
  210. package/dist/select.js.map +1 -0
  211. package/dist/select.mjs +2 -0
  212. package/dist/select.mjs.map +1 -0
  213. package/dist/separator.d.mts +6 -0
  214. package/dist/separator.d.ts +6 -0
  215. package/dist/separator.js +2 -0
  216. package/dist/separator.js.map +1 -0
  217. package/dist/separator.mjs +2 -0
  218. package/dist/separator.mjs.map +1 -0
  219. package/dist/sheet.d.mts +75 -0
  220. package/dist/sheet.d.ts +75 -0
  221. package/dist/sheet.js +2 -0
  222. package/dist/sheet.js.map +1 -0
  223. package/dist/sheet.mjs +2 -0
  224. package/dist/sheet.mjs.map +1 -0
  225. package/dist/skeleton.d.mts +5 -0
  226. package/dist/skeleton.d.ts +5 -0
  227. package/dist/skeleton.js +2 -0
  228. package/dist/skeleton.js.map +1 -0
  229. package/dist/skeleton.mjs +2 -0
  230. package/dist/skeleton.mjs.map +1 -0
  231. package/dist/slider.d.mts +6 -0
  232. package/dist/slider.d.ts +6 -0
  233. package/dist/slider.js +2 -0
  234. package/dist/slider.js.map +1 -0
  235. package/dist/slider.mjs +2 -0
  236. package/dist/slider.mjs.map +1 -0
  237. package/dist/sonner.d.mts +8 -0
  238. package/dist/sonner.d.ts +8 -0
  239. package/dist/sonner.js +2 -0
  240. package/dist/sonner.js.map +1 -0
  241. package/dist/sonner.mjs +2 -0
  242. package/dist/sonner.mjs.map +1 -0
  243. package/dist/styles.css +1 -1
  244. package/dist/styles.css.map +1 -1
  245. package/dist/switch.d.mts +6 -0
  246. package/dist/switch.d.ts +6 -0
  247. package/dist/switch.js +2 -0
  248. package/dist/switch.js.map +1 -0
  249. package/dist/switch.mjs +2 -0
  250. package/dist/switch.mjs.map +1 -0
  251. package/dist/table.d.mts +12 -0
  252. package/dist/table.d.ts +12 -0
  253. package/dist/table.js +2 -0
  254. package/dist/table.js.map +1 -0
  255. package/dist/table.mjs +2 -0
  256. package/dist/table.mjs.map +1 -0
  257. package/dist/tabs.d.mts +9 -0
  258. package/dist/tabs.d.ts +9 -0
  259. package/dist/tabs.js +2 -0
  260. package/dist/tabs.js.map +1 -0
  261. package/dist/tabs.mjs +2 -0
  262. package/dist/tabs.mjs.map +1 -0
  263. package/dist/textarea.d.mts +5 -0
  264. package/dist/textarea.d.ts +5 -0
  265. package/dist/textarea.js +2 -0
  266. package/dist/textarea.js.map +1 -0
  267. package/dist/textarea.mjs +2 -0
  268. package/dist/textarea.mjs.map +1 -0
  269. package/dist/toggle-group.d.mts +10 -0
  270. package/dist/toggle-group.d.ts +10 -0
  271. package/dist/toggle-group.js +2 -0
  272. package/dist/toggle-group.js.map +1 -0
  273. package/dist/toggle-group.mjs +2 -0
  274. package/dist/toggle-group.mjs.map +1 -0
  275. package/dist/toggle.d.mts +66 -0
  276. package/dist/toggle.d.ts +66 -0
  277. package/dist/toggle.js +2 -0
  278. package/dist/toggle.js.map +1 -0
  279. package/dist/toggle.mjs +2 -0
  280. package/dist/toggle.mjs.map +1 -0
  281. package/dist/tooltip.d.mts +11 -0
  282. package/dist/tooltip.d.ts +11 -0
  283. package/dist/tooltip.js +2 -0
  284. package/dist/tooltip.js.map +1 -0
  285. package/dist/tooltip.mjs +2 -0
  286. package/dist/tooltip.mjs.map +1 -0
  287. package/dist/utils.d.mts +5 -3
  288. package/dist/utils.d.ts +5 -3
  289. package/dist/utils.js +1 -1
  290. package/dist/utils.mjs +1 -1
  291. package/package.json +261 -19
  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 +63 -21
  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/utils.ts +10 -5
  337. package/tailwind.config.ts +101 -1
  338. package/dist/chunk-LZ5T3FQ5.js +0 -2
  339. package/dist/chunk-LZ5T3FQ5.js.map +0 -1
  340. package/dist/chunk-ULRAQPD3.mjs +0 -2
  341. package/dist/chunk-ULRAQPD3.mjs.map +0 -1
  342. package/dist/code.d.mts +0 -3
  343. package/dist/code.d.ts +0 -3
  344. package/dist/code.js +0 -2
  345. package/dist/code.js.map +0 -1
  346. package/dist/code.mjs +0 -2
  347. package/dist/code.mjs.map +0 -1
  348. package/src/code.tsx +0 -5
@@ -0,0 +1,189 @@
1
+ "use client";
2
+
3
+ import * as React from "react";
4
+ import { ChevronDownIcon } from "@radix-ui/react-icons";
5
+ import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
6
+ import { cn, cva } from "./utils";
7
+
8
+ /* -----------------------------------------------------------------------------
9
+ * Variant: NavigationMenu
10
+ * -------------------------------------------------------------------------- */
11
+
12
+ const navigationMenuTriggerStyle = cva({
13
+ base: [
14
+ "bg-background hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground group inline-flex h-9 w-max items-center justify-center rounded-md px-4 py-2 text-sm font-medium transition-colors focus:outline-none disabled:pointer-events-none disabled:opacity-50",
15
+ "data-[state=open]:bg-accent/50",
16
+ "data-[active]:bg-accent/50",
17
+ ],
18
+ });
19
+
20
+ /* -----------------------------------------------------------------------------
21
+ * Component: NavigationMenu
22
+ * -------------------------------------------------------------------------- */
23
+
24
+ const NavigationMenu = React.forwardRef<
25
+ React.ElementRef<typeof NavigationMenuPrimitive.Root>,
26
+ NavigationMenuPrimitive.NavigationMenuProps
27
+ >(({ className, children, ...props }, ref) => (
28
+ <NavigationMenuPrimitive.Root
29
+ ref={ref}
30
+ className={cn(
31
+ "relative z-10 flex max-w-max flex-1 items-center justify-center",
32
+ className,
33
+ )}
34
+ {...props}
35
+ >
36
+ {children}
37
+ <NavigationMenuViewport />
38
+ </NavigationMenuPrimitive.Root>
39
+ ));
40
+ NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
41
+
42
+ /* -----------------------------------------------------------------------------
43
+ * Component: NavigationMenuList
44
+ * -------------------------------------------------------------------------- */
45
+
46
+ const NavigationMenuList = React.forwardRef<
47
+ React.ElementRef<typeof NavigationMenuPrimitive.List>,
48
+ NavigationMenuPrimitive.NavigationMenuListProps
49
+ >(({ className, ...props }, ref) => (
50
+ <NavigationMenuPrimitive.List
51
+ ref={ref}
52
+ className={cn(
53
+ "group flex flex-1 list-none items-center justify-center space-x-1",
54
+ className,
55
+ )}
56
+ {...props}
57
+ />
58
+ ));
59
+ NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName;
60
+
61
+ /* -----------------------------------------------------------------------------
62
+ * Component: NavigationMenuItem
63
+ * -------------------------------------------------------------------------- */
64
+
65
+ const NavigationMenuItem = NavigationMenuPrimitive.Item;
66
+
67
+ /* -----------------------------------------------------------------------------
68
+ * Component: NavigationMenuContent
69
+ * -------------------------------------------------------------------------- */
70
+
71
+ const NavigationMenuTrigger = React.forwardRef<
72
+ React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,
73
+ NavigationMenuPrimitive.NavigationMenuTriggerProps
74
+ >(({ className, children, ...props }, ref) => (
75
+ <NavigationMenuPrimitive.Trigger
76
+ ref={ref}
77
+ className={navigationMenuTriggerStyle({
78
+ className: cn("group", className),
79
+ })}
80
+ {...props}
81
+ >
82
+ {children}{" "}
83
+ <ChevronDownIcon
84
+ className={cn(
85
+ "relative top-px ml-1 h-3 w-3 transition duration-300",
86
+ "group-data-[state=open]:rotate-180",
87
+ )}
88
+ aria-hidden="true"
89
+ />
90
+ </NavigationMenuPrimitive.Trigger>
91
+ ));
92
+ NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
93
+
94
+ /* -----------------------------------------------------------------------------
95
+ * Component: NavigationMenuContent
96
+ * -------------------------------------------------------------------------- */
97
+
98
+ const NavigationMenuContent = React.forwardRef<
99
+ React.ElementRef<typeof NavigationMenuPrimitive.Content>,
100
+ NavigationMenuPrimitive.NavigationMenuContentProps
101
+ >(({ className, ...props }, ref) => (
102
+ <NavigationMenuPrimitive.Content
103
+ ref={ref}
104
+ className={cn(
105
+ "left-0 top-0 w-full md:absolute md:w-auto",
106
+ "data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in",
107
+ "data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52",
108
+ "data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out",
109
+ "data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52",
110
+ className,
111
+ )}
112
+ {...props}
113
+ />
114
+ ));
115
+ NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
116
+
117
+ /* -----------------------------------------------------------------------------
118
+ * Component: NavigationMenuLink
119
+ * -------------------------------------------------------------------------- */
120
+
121
+ const NavigationMenuLink = NavigationMenuPrimitive.Link;
122
+
123
+ /* -----------------------------------------------------------------------------
124
+ * Component: NavigationMenuViewport
125
+ * -------------------------------------------------------------------------- */
126
+
127
+ const NavigationMenuViewport = React.forwardRef<
128
+ React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,
129
+ NavigationMenuPrimitive.NavigationMenuViewportProps
130
+ >(({ className, ...props }, ref) => (
131
+ <div
132
+ className={cn(
133
+ "perspective-[2000px] absolute left-0 top-full flex justify-center",
134
+ )}
135
+ >
136
+ <NavigationMenuPrimitive.Viewport
137
+ className={cn(
138
+ "bg-popover text-popover-foreground relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full origin-[top_center] overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]",
139
+ "data-[state=open]:animate-in data-[state=open]:zoom-in-90",
140
+ "data-[state=closed]:animate-out data-[state=closed]:zoom-out-95",
141
+ className,
142
+ )}
143
+ ref={ref}
144
+ {...props}
145
+ />
146
+ </div>
147
+ ));
148
+ NavigationMenuViewport.displayName =
149
+ NavigationMenuPrimitive.Viewport.displayName;
150
+
151
+ /* -----------------------------------------------------------------------------
152
+ * Component: NavigationMenuIndicator
153
+ * -------------------------------------------------------------------------- */
154
+
155
+ const NavigationMenuIndicator = React.forwardRef<
156
+ React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,
157
+ NavigationMenuPrimitive.NavigationMenuIndicatorProps
158
+ >(({ className, ...props }, ref) => (
159
+ <NavigationMenuPrimitive.Indicator
160
+ ref={ref}
161
+ className={cn(
162
+ "top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden transition",
163
+ "data-[state=visible]:animate-in data-[state=visible]:fade-in",
164
+ "data-[state=hidden]:animate-out data-[state=hidden]:fade-out",
165
+ className,
166
+ )}
167
+ {...props}
168
+ >
169
+ <div className="bg-border relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm shadow-md" />
170
+ </NavigationMenuPrimitive.Indicator>
171
+ ));
172
+ NavigationMenuIndicator.displayName =
173
+ NavigationMenuPrimitive.Indicator.displayName;
174
+
175
+ /* -----------------------------------------------------------------------------
176
+ * Exports
177
+ * -------------------------------------------------------------------------- */
178
+
179
+ export {
180
+ navigationMenuTriggerStyle,
181
+ NavigationMenu,
182
+ NavigationMenuList,
183
+ NavigationMenuItem,
184
+ NavigationMenuContent,
185
+ NavigationMenuTrigger,
186
+ NavigationMenuLink,
187
+ NavigationMenuIndicator,
188
+ NavigationMenuViewport,
189
+ };
@@ -0,0 +1,162 @@
1
+ import * as React from "react";
2
+ import {
3
+ ChevronLeftIcon,
4
+ ChevronRightIcon,
5
+ DotsHorizontalIcon,
6
+ } from "@radix-ui/react-icons";
7
+ import { cn } from "./utils";
8
+ import { type ButtonProps, buttonVariants } from "./button";
9
+
10
+ /* -----------------------------------------------------------------------------
11
+ * Component: Pagination
12
+ * -------------------------------------------------------------------------- */
13
+
14
+ function Pagination({
15
+ className,
16
+ ...props
17
+ }: React.ComponentProps<"nav">): React.JSX.Element {
18
+ return (
19
+ <nav
20
+ role="navigation"
21
+ aria-label="pagination"
22
+ className={cn("mx-auto flex w-full justify-center", className)}
23
+ {...props}
24
+ />
25
+ );
26
+ }
27
+
28
+ /* -----------------------------------------------------------------------------
29
+ * Component: PaginationContent
30
+ * -------------------------------------------------------------------------- */
31
+
32
+ const PaginationContent = React.forwardRef<
33
+ HTMLUListElement,
34
+ React.HTMLAttributes<HTMLUListElement>
35
+ >(({ className, ...props }, ref) => (
36
+ <ul
37
+ ref={ref}
38
+ className={cn("flex flex-row items-center gap-1", className)}
39
+ {...props}
40
+ />
41
+ ));
42
+ PaginationContent.displayName = "PaginationContent";
43
+
44
+ /* -----------------------------------------------------------------------------
45
+ * Component: PaginationItem
46
+ * -------------------------------------------------------------------------- */
47
+
48
+ const PaginationItem = React.forwardRef<
49
+ HTMLLIElement,
50
+ React.LiHTMLAttributes<HTMLLIElement>
51
+ >(({ className, ...props }, ref) => (
52
+ <li ref={ref} className={cn("", className)} {...props} />
53
+ ));
54
+ PaginationItem.displayName = "PaginationItem";
55
+
56
+ /* -----------------------------------------------------------------------------
57
+ * Component: PaginationLink
58
+ * -------------------------------------------------------------------------- */
59
+
60
+ interface PaginationLinkProps
61
+ extends React.AnchorHTMLAttributes<HTMLAnchorElement>,
62
+ Pick<ButtonProps, "size"> {
63
+ isActive?: boolean;
64
+ }
65
+
66
+ function PaginationLink({
67
+ className,
68
+ isActive,
69
+ size = "icon",
70
+ children,
71
+ ...props
72
+ }: PaginationLinkProps): React.JSX.Element {
73
+ return (
74
+ <a
75
+ aria-current={isActive ? "page" : undefined}
76
+ className={buttonVariants({
77
+ variant: isActive ? "outline" : "ghost",
78
+ size,
79
+ className,
80
+ })}
81
+ {...props}
82
+ >
83
+ {children}
84
+ </a>
85
+ );
86
+ }
87
+
88
+ /* -----------------------------------------------------------------------------
89
+ * Component: PaginationPrevious
90
+ * -------------------------------------------------------------------------- */
91
+
92
+ function PaginationPrevious({
93
+ className,
94
+ ...props
95
+ }: PaginationLinkProps): React.JSX.Element {
96
+ return (
97
+ <PaginationLink
98
+ aria-label="Go to previous page"
99
+ size="default"
100
+ className={cn("gap-1 pl-2.5", className)}
101
+ {...props}
102
+ >
103
+ <ChevronLeftIcon className="size-4" />
104
+ <span>Previous</span>
105
+ </PaginationLink>
106
+ );
107
+ }
108
+
109
+ /* -----------------------------------------------------------------------------
110
+ * Component: PaginationNext
111
+ * -------------------------------------------------------------------------- */
112
+
113
+ function PaginationNext({
114
+ className,
115
+ ...props
116
+ }: PaginationLinkProps): React.JSX.Element {
117
+ return (
118
+ <PaginationLink
119
+ aria-label="Go to next page"
120
+ size="default"
121
+ className={cn("gap-1 pr-2.5", className)}
122
+ {...props}
123
+ >
124
+ <span>Next</span>
125
+ <ChevronRightIcon className="size-4" />
126
+ </PaginationLink>
127
+ );
128
+ }
129
+
130
+ /* -----------------------------------------------------------------------------
131
+ * Component: PaginationEllipsis
132
+ * -------------------------------------------------------------------------- */
133
+
134
+ function PaginationEllipsis({
135
+ className,
136
+ ...props
137
+ }: React.HTMLAttributes<HTMLSpanElement>): React.JSX.Element {
138
+ return (
139
+ <span
140
+ aria-hidden
141
+ className={cn("flex h-9 w-9 items-center justify-center", className)}
142
+ {...props}
143
+ >
144
+ <DotsHorizontalIcon className="size-4" />
145
+ <span className="sr-only">More pages</span>
146
+ </span>
147
+ );
148
+ }
149
+
150
+ /* -----------------------------------------------------------------------------
151
+ * Exports
152
+ * -------------------------------------------------------------------------- */
153
+
154
+ export {
155
+ Pagination,
156
+ PaginationContent,
157
+ PaginationLink,
158
+ PaginationItem,
159
+ PaginationPrevious,
160
+ PaginationNext,
161
+ PaginationEllipsis,
162
+ };
@@ -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 };