@arolariu/components 0.2.0 → 0.3.1

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 (281) hide show
  1. package/changelog.md +15 -0
  2. package/dist/components/ui/accordion.d.ts +4 -4
  3. package/dist/components/ui/accordion.d.ts.map +1 -1
  4. package/dist/components/ui/accordion.js +19 -27
  5. package/dist/components/ui/accordion.js.map +1 -1
  6. package/dist/components/ui/alert-dialog.d.ts +17 -11
  7. package/dist/components/ui/alert-dialog.d.ts.map +1 -1
  8. package/dist/components/ui/alert-dialog.js +38 -61
  9. package/dist/components/ui/alert-dialog.js.map +1 -1
  10. package/dist/components/ui/alert.d.ts +4 -5
  11. package/dist/components/ui/alert.d.ts.map +1 -1
  12. package/dist/components/ui/alert.js +17 -20
  13. package/dist/components/ui/alert.js.map +1 -1
  14. package/dist/components/ui/aspect-ratio.d.ts +1 -2
  15. package/dist/components/ui/aspect-ratio.d.ts.map +1 -1
  16. package/dist/components/ui/aspect-ratio.js +1 -8
  17. package/dist/components/ui/aspect-ratio.js.map +1 -1
  18. package/dist/components/ui/avatar.d.ts +3 -3
  19. package/dist/components/ui/avatar.d.ts.map +1 -1
  20. package/dist/components/ui/avatar.js +16 -19
  21. package/dist/components/ui/avatar.js.map +1 -1
  22. package/dist/components/ui/badge.d.ts +3 -3
  23. package/dist/components/ui/badge.d.ts.map +1 -1
  24. package/dist/components/ui/badge.js +7 -10
  25. package/dist/components/ui/badge.js.map +1 -1
  26. package/dist/components/ui/breadcrumb.d.ts +16 -8
  27. package/dist/components/ui/breadcrumb.d.ts.map +1 -1
  28. package/dist/components/ui/breadcrumb.js +28 -35
  29. package/dist/components/ui/breadcrumb.js.map +1 -1
  30. package/dist/components/ui/button-group.d.ts +13 -0
  31. package/dist/components/ui/button-group.d.ts.map +1 -0
  32. package/dist/components/ui/button-group.js +47 -0
  33. package/dist/components/ui/button-group.js.map +1 -0
  34. package/dist/components/ui/button.d.ts +3 -2
  35. package/dist/components/ui/button.d.ts.map +1 -1
  36. package/dist/components/ui/button.js +15 -14
  37. package/dist/components/ui/button.js.map +1 -1
  38. package/dist/components/ui/calendar.js +20 -20
  39. package/dist/components/ui/calendar.js.map +1 -1
  40. package/dist/components/ui/card.d.ts +7 -8
  41. package/dist/components/ui/card.d.ts.map +1 -1
  42. package/dist/components/ui/card.js +31 -44
  43. package/dist/components/ui/card.js.map +1 -1
  44. package/dist/components/ui/carousel.d.ts +5 -6
  45. package/dist/components/ui/carousel.d.ts.map +1 -1
  46. package/dist/components/ui/carousel.js +29 -20
  47. package/dist/components/ui/carousel.js.map +1 -1
  48. package/dist/components/ui/chart.d.ts +35 -27
  49. package/dist/components/ui/chart.d.ts.map +1 -1
  50. package/dist/components/ui/chart.js +28 -26
  51. package/dist/components/ui/chart.js.map +1 -1
  52. package/dist/components/ui/checkbox.d.ts +1 -1
  53. package/dist/components/ui/checkbox.d.ts.map +1 -1
  54. package/dist/components/ui/checkbox.js +10 -12
  55. package/dist/components/ui/checkbox.js.map +1 -1
  56. package/dist/components/ui/collapsible.d.ts +2 -4
  57. package/dist/components/ui/collapsible.d.ts.map +1 -1
  58. package/dist/components/ui/collapsible.js +31 -20
  59. package/dist/components/ui/collapsible.js.map +1 -1
  60. package/dist/components/ui/command.d.ts +78 -16
  61. package/dist/components/ui/command.d.ts.map +1 -1
  62. package/dist/components/ui/command.js +47 -72
  63. package/dist/components/ui/command.js.map +1 -1
  64. package/dist/components/ui/context-menu.d.ts +21 -19
  65. package/dist/components/ui/context-menu.d.ts.map +1 -1
  66. package/dist/components/ui/context-menu.js +57 -101
  67. package/dist/components/ui/context-menu.js.map +1 -1
  68. package/dist/components/ui/dialog.d.ts +16 -12
  69. package/dist/components/ui/dialog.d.ts.map +1 -1
  70. package/dist/components/ui/dialog.js +36 -64
  71. package/dist/components/ui/dialog.js.map +1 -1
  72. package/dist/components/ui/drawer.d.ts +19 -10
  73. package/dist/components/ui/drawer.d.ts.map +1 -1
  74. package/dist/components/ui/drawer.js +32 -57
  75. package/dist/components/ui/drawer.js.map +1 -1
  76. package/dist/components/ui/dropdown-menu.d.ts +21 -19
  77. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  78. package/dist/components/ui/dropdown-menu.js +64 -108
  79. package/dist/components/ui/dropdown-menu.js.map +1 -1
  80. package/dist/components/ui/dropdrawer.d.ts +1 -1
  81. package/dist/components/ui/dropdrawer.d.ts.map +1 -1
  82. package/dist/components/ui/dropdrawer.js +2 -5
  83. package/dist/components/ui/dropdrawer.js.map +1 -1
  84. package/dist/components/ui/empty.d.ts +13 -0
  85. package/dist/components/ui/empty.d.ts.map +1 -0
  86. package/dist/components/ui/empty.js +65 -0
  87. package/dist/components/ui/empty.js.map +1 -0
  88. package/dist/components/ui/field.d.ts +26 -0
  89. package/dist/components/ui/field.d.ts.map +1 -0
  90. package/dist/components/ui/field.js +135 -0
  91. package/dist/components/ui/field.js.map +1 -0
  92. package/dist/components/ui/form.d.ts +5 -6
  93. package/dist/components/ui/form.d.ts.map +1 -1
  94. package/dist/components/ui/form.js +29 -28
  95. package/dist/components/ui/form.js.map +1 -1
  96. package/dist/components/ui/hover-card.d.ts +3 -3
  97. package/dist/components/ui/hover-card.d.ts.map +1 -1
  98. package/dist/components/ui/hover-card.js +11 -25
  99. package/dist/components/ui/hover-card.js.map +1 -1
  100. package/dist/components/ui/input-group.d.ts +17 -0
  101. package/dist/components/ui/input-group.d.ts.map +1 -0
  102. package/dist/components/ui/input-group.js +91 -0
  103. package/dist/components/ui/input-group.js.map +1 -0
  104. package/dist/components/ui/input-otp.d.ts +30 -7
  105. package/dist/components/ui/input-otp.d.ts.map +1 -1
  106. package/dist/components/ui/input-otp.js +22 -25
  107. package/dist/components/ui/input-otp.js.map +1 -1
  108. package/dist/components/ui/input.d.ts +1 -1
  109. package/dist/components/ui/input.d.ts.map +1 -1
  110. package/dist/components/ui/input.js +6 -7
  111. package/dist/components/ui/input.js.map +1 -1
  112. package/dist/components/ui/item.d.ts +24 -0
  113. package/dist/components/ui/item.d.ts.map +1 -0
  114. package/dist/components/ui/item.js +122 -0
  115. package/dist/components/ui/item.js.map +1 -0
  116. package/dist/components/ui/kbd.d.ts +5 -0
  117. package/dist/components/ui/kbd.d.ts.map +1 -0
  118. package/dist/components/ui/kbd.js +21 -0
  119. package/dist/components/ui/kbd.js.map +1 -0
  120. package/dist/components/ui/label.d.ts +2 -1
  121. package/dist/components/ui/label.d.ts.map +1 -1
  122. package/dist/components/ui/label.js +8 -7
  123. package/dist/components/ui/label.js.map +1 -1
  124. package/dist/components/ui/menubar.d.ts +18 -16
  125. package/dist/components/ui/menubar.d.ts.map +1 -1
  126. package/dist/components/ui/menubar.js +73 -93
  127. package/dist/components/ui/menubar.js.map +1 -1
  128. package/dist/components/ui/navigation-menu.d.ts +8 -10
  129. package/dist/components/ui/navigation-menu.d.ts.map +1 -1
  130. package/dist/components/ui/navigation-menu.js +36 -55
  131. package/dist/components/ui/navigation-menu.js.map +1 -1
  132. package/dist/components/ui/pagination.d.ts +24 -9
  133. package/dist/components/ui/pagination.d.ts.map +1 -1
  134. package/dist/components/ui/pagination.js +33 -45
  135. package/dist/components/ui/pagination.js.map +1 -1
  136. package/dist/components/ui/popover.d.ts +4 -4
  137. package/dist/components/ui/popover.d.ts.map +1 -1
  138. package/dist/components/ui/popover.js +9 -25
  139. package/dist/components/ui/popover.js.map +1 -1
  140. package/dist/components/ui/progress.d.ts +1 -1
  141. package/dist/components/ui/progress.d.ts.map +1 -1
  142. package/dist/components/ui/progress.js +5 -7
  143. package/dist/components/ui/progress.js.map +1 -1
  144. package/dist/components/ui/radio-group.d.ts +2 -2
  145. package/dist/components/ui/radio-group.d.ts.map +1 -1
  146. package/dist/components/ui/radio-group.js +16 -19
  147. package/dist/components/ui/radio-group.js.map +1 -1
  148. package/dist/components/ui/resizable.d.ts +20 -4
  149. package/dist/components/ui/resizable.d.ts.map +1 -1
  150. package/dist/components/ui/resizable.js +8 -19
  151. package/dist/components/ui/resizable.js.map +1 -1
  152. package/dist/components/ui/scroll-area.d.ts +2 -2
  153. package/dist/components/ui/scroll-area.d.ts.map +1 -1
  154. package/dist/components/ui/scroll-area.js +12 -16
  155. package/dist/components/ui/scroll-area.js.map +1 -1
  156. package/dist/components/ui/select.d.ts +10 -12
  157. package/dist/components/ui/select.d.ts.map +1 -1
  158. package/dist/components/ui/select.js +54 -77
  159. package/dist/components/ui/select.js.map +1 -1
  160. package/dist/components/ui/separator.d.ts +1 -1
  161. package/dist/components/ui/separator.d.ts.map +1 -1
  162. package/dist/components/ui/separator.js +6 -7
  163. package/dist/components/ui/separator.js.map +1 -1
  164. package/dist/components/ui/sheet.d.ts +23 -11
  165. package/dist/components/ui/sheet.d.ts.map +1 -1
  166. package/dist/components/ui/sheet.js +54 -66
  167. package/dist/components/ui/sheet.js.map +1 -1
  168. package/dist/components/ui/sidebar.d.ts +34 -38
  169. package/dist/components/ui/sidebar.d.ts.map +1 -1
  170. package/dist/components/ui/sidebar.js +116 -124
  171. package/dist/components/ui/sidebar.js.map +1 -1
  172. package/dist/components/ui/skeleton.d.ts +1 -1
  173. package/dist/components/ui/skeleton.d.ts.map +1 -1
  174. package/dist/components/ui/skeleton.js +1 -2
  175. package/dist/components/ui/skeleton.js.map +1 -1
  176. package/dist/components/ui/slider.d.ts +1 -1
  177. package/dist/components/ui/slider.d.ts.map +1 -1
  178. package/dist/components/ui/slider.js +11 -30
  179. package/dist/components/ui/slider.js.map +1 -1
  180. package/dist/components/ui/sonner.d.ts +4 -2
  181. package/dist/components/ui/sonner.d.ts.map +1 -1
  182. package/dist/components/ui/sonner.js +7 -4
  183. package/dist/components/ui/sonner.js.map +1 -1
  184. package/dist/components/ui/spinner.d.ts +4 -0
  185. package/dist/components/ui/spinner.d.ts.map +1 -0
  186. package/dist/components/ui/spinner.js +16 -0
  187. package/dist/components/ui/spinner.js.map +1 -0
  188. package/dist/components/ui/switch.d.ts +2 -2
  189. package/dist/components/ui/switch.d.ts.map +1 -1
  190. package/dist/components/ui/switch.js +7 -9
  191. package/dist/components/ui/switch.js.map +1 -1
  192. package/dist/components/ui/table.d.ts +8 -8
  193. package/dist/components/ui/table.d.ts.map +1 -1
  194. package/dist/components/ui/table.js +36 -45
  195. package/dist/components/ui/table.js.map +1 -1
  196. package/dist/components/ui/tabs.d.ts +4 -4
  197. package/dist/components/ui/tabs.d.ts.map +1 -1
  198. package/dist/components/ui/tabs.js +17 -26
  199. package/dist/components/ui/tabs.js.map +1 -1
  200. package/dist/components/ui/textarea.d.ts +1 -1
  201. package/dist/components/ui/textarea.d.ts.map +1 -1
  202. package/dist/components/ui/textarea.js +6 -7
  203. package/dist/components/ui/textarea.js.map +1 -1
  204. package/dist/components/ui/toggle-group.d.ts +8 -3
  205. package/dist/components/ui/toggle-group.d.ts.map +1 -1
  206. package/dist/components/ui/toggle-group.js +11 -15
  207. package/dist/components/ui/toggle-group.js.map +1 -1
  208. package/dist/components/ui/toggle.d.ts +4 -1
  209. package/dist/components/ui/toggle.d.ts.map +1 -1
  210. package/dist/components/ui/toggle.js +7 -8
  211. package/dist/components/ui/toggle.js.map +1 -1
  212. package/dist/components/ui/tooltip.d.ts +4 -4
  213. package/dist/components/ui/tooltip.d.ts.map +1 -1
  214. package/dist/components/ui/tooltip.js +13 -38
  215. package/dist/components/ui/tooltip.js.map +1 -1
  216. package/dist/components/ui/typewriter.d.ts.map +1 -1
  217. package/dist/components/ui/typewriter.js +2 -6
  218. package/dist/components/ui/typewriter.js.map +1 -1
  219. package/dist/index.css +839 -1126
  220. package/dist/index.css.map +1 -1
  221. package/dist/index.d.ts +9 -3
  222. package/dist/index.d.ts.map +1 -1
  223. package/dist/index.js +9 -3
  224. package/package.json +37 -2
  225. package/src/components/ui/accordion.tsx +43 -44
  226. package/src/components/ui/alert-dialog.tsx +88 -99
  227. package/src/components/ui/alert.tsx +24 -25
  228. package/src/components/ui/aspect-ratio.tsx +1 -9
  229. package/src/components/ui/avatar.tsx +33 -27
  230. package/src/components/ui/badge.tsx +8 -16
  231. package/src/components/ui/breadcrumb.tsx +70 -73
  232. package/src/components/ui/button-group.tsx +69 -0
  233. package/src/components/ui/button.tsx +18 -24
  234. package/src/components/ui/calendar.tsx +20 -20
  235. package/src/components/ui/card.tsx +52 -71
  236. package/src/components/ui/carousel.tsx +145 -133
  237. package/src/components/ui/chart.tsx +174 -182
  238. package/src/components/ui/checkbox.tsx +18 -18
  239. package/src/components/ui/collapsible.tsx +2 -26
  240. package/src/components/ui/command.tsx +101 -99
  241. package/src/components/ui/context-menu.tsx +150 -193
  242. package/src/components/ui/dialog.tsx +75 -110
  243. package/src/components/ui/drawer.tsx +74 -102
  244. package/src/components/ui/dropdown-menu.tsx +153 -200
  245. package/src/components/ui/dropdrawer.tsx +0 -5
  246. package/src/components/ui/empty.tsx +86 -0
  247. package/src/components/ui/field.tsx +199 -0
  248. package/src/components/ui/form.tsx +49 -50
  249. package/src/components/ui/hover-card.tsx +18 -37
  250. package/src/components/ui/input-group.tsx +145 -0
  251. package/src/components/ui/input-otp.tsx +49 -59
  252. package/src/components/ui/input.tsx +5 -6
  253. package/src/components/ui/item.tsx +163 -0
  254. package/src/components/ui/kbd.tsx +31 -0
  255. package/src/components/ui/label.tsx +14 -12
  256. package/src/components/ui/menubar.tsx +178 -201
  257. package/src/components/ui/navigation-menu.tsx +84 -100
  258. package/src/components/ui/pagination.tsx +75 -85
  259. package/src/components/ui/popover.tsx +19 -38
  260. package/src/components/ui/progress.tsx +15 -14
  261. package/src/components/ui/radio-group.tsx +19 -13
  262. package/src/components/ui/resizable.tsx +23 -36
  263. package/src/components/ui/scroll-area.tsx +32 -35
  264. package/src/components/ui/select.tsx +112 -127
  265. package/src/components/ui/separator.tsx +17 -19
  266. package/src/components/ui/sheet.tsx +87 -108
  267. package/src/components/ui/sidebar.tsx +276 -279
  268. package/src/components/ui/skeleton.tsx +2 -3
  269. package/src/components/ui/slider.tsx +15 -40
  270. package/src/components/ui/sonner.tsx +15 -9
  271. package/src/components/ui/spinner.tsx +18 -0
  272. package/src/components/ui/switch.tsx +18 -17
  273. package/src/components/ui/table.tsx +66 -71
  274. package/src/components/ui/tabs.tsx +36 -36
  275. package/src/components/ui/textarea.tsx +5 -4
  276. package/src/components/ui/toggle-group.tsx +21 -34
  277. package/src/components/ui/toggle.tsx +14 -16
  278. package/src/components/ui/tooltip.tsx +19 -43
  279. package/src/components/ui/typewriter.tsx +3 -4
  280. package/src/index.css +6 -6
  281. package/src/index.ts +43 -4
@@ -5,34 +5,40 @@ import * as React from "react";
5
5
 
6
6
  import {cn} from "@/lib/utilities";
7
7
 
8
- function Avatar({className, ...props}: React.ComponentProps<typeof AvatarPrimitive.Root>) {
9
- return (
10
- <AvatarPrimitive.Root
11
- data-slot='avatar'
12
- className={cn("relative flex size-8 shrink-0 overflow-hidden rounded-full", className)}
13
- {...props}
14
- />
15
- );
16
- }
8
+ const Avatar = React.forwardRef<
9
+ React.ComponentRef<typeof AvatarPrimitive.Root>,
10
+ React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>
11
+ >(({className, ...props}, ref) => (
12
+ <AvatarPrimitive.Root
13
+ ref={ref}
14
+ className={cn("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full", className)}
15
+ {...props}
16
+ />
17
+ ));
18
+ Avatar.displayName = AvatarPrimitive.Root.displayName;
17
19
 
18
- function AvatarImage({className, ...props}: React.ComponentProps<typeof AvatarPrimitive.Image>) {
19
- return (
20
- <AvatarPrimitive.Image
21
- data-slot='avatar-image'
22
- className={cn("aspect-square size-full", className)}
23
- {...props}
24
- />
25
- );
26
- }
20
+ const AvatarImage = React.forwardRef<
21
+ React.ComponentRef<typeof AvatarPrimitive.Image>,
22
+ React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>
23
+ >(({className, ...props}, ref) => (
24
+ <AvatarPrimitive.Image
25
+ ref={ref}
26
+ className={cn("aspect-square h-full w-full", className)}
27
+ {...props}
28
+ />
29
+ ));
30
+ AvatarImage.displayName = AvatarPrimitive.Image.displayName;
27
31
 
28
- function AvatarFallback({className, ...props}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {
29
- return (
30
- <AvatarPrimitive.Fallback
31
- data-slot='avatar-fallback'
32
- className={cn("flex size-full items-center justify-center rounded-full bg-neutral-100 dark:bg-neutral-800", className)}
33
- {...props}
34
- />
35
- );
36
- }
32
+ const AvatarFallback = React.forwardRef<
33
+ React.ComponentRef<typeof AvatarPrimitive.Fallback>,
34
+ React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>
35
+ >(({className, ...props}, ref) => (
36
+ <AvatarPrimitive.Fallback
37
+ ref={ref}
38
+ className={cn("flex h-full w-full items-center justify-center rounded-full bg-neutral-100 dark:bg-neutral-800", className)}
39
+ {...props}
40
+ />
41
+ ));
42
+ AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;
37
43
 
38
44
  export {Avatar, AvatarFallback, AvatarImage};
@@ -1,24 +1,22 @@
1
1
  "use client";
2
2
 
3
- import {Slot} from "@radix-ui/react-slot";
4
3
  import {cva, type VariantProps} from "class-variance-authority";
5
4
  import * as React from "react";
6
5
 
7
6
  import {cn} from "@/lib/utilities";
8
7
 
9
8
  const badgeVariants = cva(
10
- "inline-flex items-center justify-center rounded-md border border-neutral-200 px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-neutral-950 focus-visible:ring-neutral-950/50 focus-visible:ring-[3px] aria-invalid:ring-red-500/20 dark:aria-invalid:ring-red-500/40 aria-invalid:border-red-500 transition-[color,box-shadow] overflow-hidden dark:border-neutral-800 dark:focus-visible:border-neutral-300 dark:focus-visible:ring-neutral-300/50 dark:aria-invalid:ring-red-900/20 dark:dark:aria-invalid:ring-red-900/40 dark:aria-invalid:border-red-900",
9
+ "inline-flex items-center rounded-md border border-neutral-200 px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-neutral-950 focus:ring-offset-2 dark:border-neutral-800 dark:focus:ring-neutral-300",
11
10
  {
12
11
  variants: {
13
12
  variant: {
14
13
  default:
15
- "border-transparent bg-neutral-900 text-neutral-50 [a&]:hover:bg-neutral-900/90 dark:bg-neutral-50 dark:text-neutral-900 dark:[a&]:hover:bg-neutral-50/90",
14
+ "border-transparent bg-neutral-900 text-neutral-50 shadow hover:bg-neutral-900/80 dark:bg-neutral-50 dark:text-neutral-900 dark:hover:bg-neutral-50/80",
16
15
  secondary:
17
- "border-transparent bg-neutral-100 text-neutral-900 [a&]:hover:bg-neutral-100/90 dark:bg-neutral-800 dark:text-neutral-50 dark:[a&]:hover:bg-neutral-800/90",
16
+ "border-transparent bg-neutral-100 text-neutral-900 hover:bg-neutral-100/80 dark:bg-neutral-800 dark:text-neutral-50 dark:hover:bg-neutral-800/80",
18
17
  destructive:
19
- "border-transparent bg-red-500 text-white [a&]:hover:bg-red-500/90 focus-visible:ring-red-500/20 dark:focus-visible:ring-red-500/40 dark:bg-red-500/60 dark:bg-red-900 dark:[a&]:hover:bg-red-900/90 dark:focus-visible:ring-red-900/20 dark:dark:focus-visible:ring-red-900/40 dark:dark:bg-red-900/60",
20
- outline:
21
- "text-neutral-950 [a&]:hover:bg-neutral-100 [a&]:hover:text-neutral-900 dark:text-neutral-50 dark:[a&]:hover:bg-neutral-800 dark:[a&]:hover:text-neutral-50",
18
+ "border-transparent bg-red-500 text-neutral-50 shadow hover:bg-red-500/80 dark:bg-red-900 dark:text-neutral-50 dark:hover:bg-red-900/80",
19
+ outline: "text-neutral-950 dark:text-neutral-50",
22
20
  },
23
21
  },
24
22
  defaultVariants: {
@@ -27,17 +25,11 @@ const badgeVariants = cva(
27
25
  },
28
26
  );
29
27
 
30
- function Badge({
31
- className,
32
- variant,
33
- asChild = false,
34
- ...props
35
- }: React.ComponentProps<"span"> & VariantProps<typeof badgeVariants> & {asChild?: boolean}) {
36
- const Comp = asChild ? Slot : "span";
28
+ export interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {}
37
29
 
30
+ function Badge({className, variant, ...props}: BadgeProps) {
38
31
  return (
39
- <Comp
40
- data-slot='badge'
32
+ <div
41
33
  className={cn(badgeVariants({variant}), className)}
42
34
  {...props}
43
35
  />
@@ -6,92 +6,89 @@ import * as React from "react";
6
6
 
7
7
  import {cn} from "@/lib/utilities";
8
8
 
9
- function Breadcrumb({...props}: Readonly<React.ComponentProps<"nav">>) {
10
- return (
11
- <nav
12
- aria-label='breadcrumb'
13
- data-slot='breadcrumb'
14
- {...props}
15
- />
16
- );
17
- }
9
+ const Breadcrumb = React.forwardRef<
10
+ HTMLElement,
11
+ React.ComponentPropsWithoutRef<"nav"> & {
12
+ separator?: React.ReactNode;
13
+ }
14
+ >(({...props}, ref) => (
15
+ <nav
16
+ ref={ref}
17
+ aria-label='breadcrumb'
18
+ {...props}
19
+ />
20
+ ));
21
+ Breadcrumb.displayName = "Breadcrumb";
18
22
 
19
- function BreadcrumbList({className, ...props}: Readonly<React.ComponentProps<"ol">>) {
20
- return (
21
- <ol
22
- data-slot='breadcrumb-list'
23
- className={cn("flex flex-wrap items-center gap-1.5 text-sm break-words text-neutral-500 sm:gap-2.5 dark:text-neutral-400", className)}
24
- {...props}
25
- />
26
- );
27
- }
23
+ const BreadcrumbList = React.forwardRef<HTMLOListElement, React.ComponentPropsWithoutRef<"ol">>(({className, ...props}, ref) => (
24
+ <ol
25
+ ref={ref}
26
+ className={cn("flex flex-wrap items-center gap-1.5 text-sm break-words text-neutral-500 sm:gap-2.5 dark:text-neutral-400", className)}
27
+ {...props}
28
+ />
29
+ ));
30
+ BreadcrumbList.displayName = "BreadcrumbList";
28
31
 
29
- function BreadcrumbItem({className, ...props}: Readonly<React.ComponentProps<"li">>) {
30
- return (
31
- <li
32
- data-slot='breadcrumb-item'
33
- className={cn("inline-flex items-center gap-1.5", className)}
34
- {...props}
35
- />
36
- );
37
- }
32
+ const BreadcrumbItem = React.forwardRef<HTMLLIElement, React.ComponentPropsWithoutRef<"li">>(({className, ...props}, ref) => (
33
+ <li
34
+ ref={ref}
35
+ className={cn("inline-flex items-center gap-1.5", className)}
36
+ {...props}
37
+ />
38
+ ));
39
+ BreadcrumbItem.displayName = "BreadcrumbItem";
38
40
 
39
- function BreadcrumbLink({
40
- asChild,
41
- className,
42
- ...props
43
- }: React.ComponentProps<"a"> & {
44
- asChild?: boolean;
45
- }) {
41
+ const BreadcrumbLink = React.forwardRef<
42
+ HTMLAnchorElement,
43
+ React.ComponentPropsWithoutRef<"a"> & {
44
+ asChild?: boolean;
45
+ }
46
+ >(({asChild, className, ...props}, ref) => {
46
47
  const Comp = asChild ? Slot : "a";
47
48
 
48
49
  return (
49
50
  <Comp
50
- data-slot='breadcrumb-link'
51
+ ref={ref}
51
52
  className={cn("transition-colors hover:text-neutral-950 dark:hover:text-neutral-50", className)}
52
53
  {...props}
53
54
  />
54
55
  );
55
- }
56
+ });
57
+ BreadcrumbLink.displayName = "BreadcrumbLink";
56
58
 
57
- function BreadcrumbPage({className, ...props}: React.ComponentProps<"span">) {
58
- return (
59
- <span
60
- data-slot='breadcrumb-page'
61
- role='link'
62
- aria-disabled='true'
63
- aria-current='page'
64
- className={cn("font-normal text-neutral-950 dark:text-neutral-50", className)}
65
- {...props}
66
- />
67
- );
68
- }
59
+ const BreadcrumbPage = React.forwardRef<HTMLSpanElement, React.ComponentPropsWithoutRef<"span">>(({className, ...props}, ref) => (
60
+ <span
61
+ ref={ref}
62
+ role='link'
63
+ aria-disabled='true'
64
+ aria-current='page'
65
+ className={cn("font-normal text-neutral-950 dark:text-neutral-50", className)}
66
+ {...props}
67
+ />
68
+ ));
69
+ BreadcrumbPage.displayName = "BreadcrumbPage";
69
70
 
70
- function BreadcrumbSeparator({children, className, ...props}: Readonly<React.ComponentProps<"li">>) {
71
- return (
72
- <li
73
- data-slot='breadcrumb-separator'
74
- role='presentation'
75
- aria-hidden='true'
76
- className={cn("[&>svg]:size-3.5", className)}
77
- {...props}>
78
- {children ?? <ChevronRight />}
79
- </li>
80
- );
81
- }
71
+ const BreadcrumbSeparator = ({children, className, ...props}: React.ComponentProps<"li">) => (
72
+ <li
73
+ role='presentation'
74
+ aria-hidden='true'
75
+ className={cn("[&>svg]:h-3.5 [&>svg]:w-3.5", className)}
76
+ {...props}>
77
+ {children ?? <ChevronRight />}
78
+ </li>
79
+ );
80
+ BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
82
81
 
83
- function BreadcrumbEllipsis({className, ...props}: Readonly<React.ComponentProps<"span">>) {
84
- return (
85
- <span
86
- data-slot='breadcrumb-ellipsis'
87
- role='presentation'
88
- aria-hidden='true'
89
- className={cn("flex size-9 items-center justify-center", className)}
90
- {...props}>
91
- <MoreHorizontal className='size-4' />
92
- <span className='sr-only'>More</span>
93
- </span>
94
- );
95
- }
82
+ const BreadcrumbEllipsis = ({className, ...props}: React.ComponentProps<"span">) => (
83
+ <span
84
+ role='presentation'
85
+ aria-hidden='true'
86
+ className={cn("flex h-9 w-9 items-center justify-center", className)}
87
+ {...props}>
88
+ <MoreHorizontal className='h-4 w-4' />
89
+ <span className='sr-only'>More</span>
90
+ </span>
91
+ );
92
+ BreadcrumbEllipsis.displayName = "BreadcrumbElipssis";
96
93
 
97
94
  export {Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator};
@@ -0,0 +1,69 @@
1
+ "use client";
2
+
3
+ import {Slot} from "@radix-ui/react-slot";
4
+ import {cva, type VariantProps} from "class-variance-authority";
5
+ import * as React from "react";
6
+
7
+ import {Separator} from "@/components/ui/separator";
8
+ import {cn} from "@/lib/utilities";
9
+
10
+ const buttonGroupVariants = cva(
11
+ "flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1",
12
+ {
13
+ variants: {
14
+ orientation: {
15
+ horizontal: "[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none",
16
+ vertical:
17
+ "flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none",
18
+ },
19
+ },
20
+ defaultVariants: {
21
+ orientation: "horizontal",
22
+ },
23
+ },
24
+ );
25
+
26
+ function ButtonGroup({className, orientation, ...props}: React.ComponentProps<"div"> & VariantProps<typeof buttonGroupVariants>) {
27
+ return (
28
+ <div
29
+ role='group'
30
+ data-slot='button-group'
31
+ data-orientation={orientation}
32
+ className={cn(buttonGroupVariants({orientation}), className)}
33
+ {...props}
34
+ />
35
+ );
36
+ }
37
+
38
+ function ButtonGroupText({
39
+ className,
40
+ asChild = false,
41
+ ...props
42
+ }: React.ComponentProps<"div"> & {
43
+ asChild?: boolean;
44
+ }) {
45
+ const Comp = asChild ? Slot : "div";
46
+
47
+ return (
48
+ <Comp
49
+ className={cn(
50
+ "flex items-center gap-2 rounded-md border border-neutral-200 bg-neutral-100 px-4 text-sm font-medium shadow-xs dark:border-neutral-800 dark:bg-neutral-800 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
51
+ className,
52
+ )}
53
+ {...props}
54
+ />
55
+ );
56
+ }
57
+
58
+ function ButtonGroupSeparator({className, orientation = "vertical", ...props}: React.ComponentProps<typeof Separator>) {
59
+ return (
60
+ <Separator
61
+ data-slot='button-group-separator'
62
+ orientation={orientation}
63
+ className={cn("relative !m-0 self-stretch bg-neutral-200 data-[orientation=vertical]:h-auto dark:bg-neutral-800", className)}
64
+ {...props}
65
+ />
66
+ );
67
+ }
68
+
69
+ export {ButtonGroup, ButtonGroupSeparator, ButtonGroupText, buttonGroupVariants};
@@ -7,27 +7,26 @@ import * as React from "react";
7
7
  import {cn} from "@/lib/utilities";
8
8
 
9
9
  const buttonVariants = cva(
10
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-neutral-950 focus-visible:ring-neutral-950/50 focus-visible:ring-[3px] aria-invalid:ring-red-500/20 dark:aria-invalid:ring-red-500/40 aria-invalid:border-red-500 dark:focus-visible:border-neutral-300 dark:focus-visible:ring-neutral-300/50 dark:aria-invalid:ring-red-900/20 dark:dark:aria-invalid:ring-red-900/40 dark:aria-invalid:border-red-900",
10
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-neutral-950 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 dark:focus-visible:ring-neutral-300",
11
11
  {
12
12
  variants: {
13
13
  variant: {
14
14
  default:
15
- "bg-neutral-900 text-neutral-50 shadow-xs hover:bg-neutral-900/90 dark:bg-neutral-50 dark:text-neutral-900 dark:hover:bg-neutral-50/90",
15
+ "bg-neutral-900 text-neutral-50 shadow hover:bg-neutral-900/90 dark:bg-neutral-50 dark:text-neutral-900 dark:hover:bg-neutral-50/90",
16
16
  destructive:
17
- "bg-red-500 text-white shadow-xs hover:bg-red-500/90 focus-visible:ring-red-500/20 dark:focus-visible:ring-red-500/40 dark:bg-red-500/60 dark:bg-red-900 dark:hover:bg-red-900/90 dark:focus-visible:ring-red-900/20 dark:dark:focus-visible:ring-red-900/40 dark:dark:bg-red-900/60",
17
+ "bg-red-500 text-neutral-50 shadow-sm hover:bg-red-500/90 dark:bg-red-900 dark:text-neutral-50 dark:hover:bg-red-900/90",
18
18
  outline:
19
- "border bg-white shadow-xs hover:bg-neutral-100 hover:text-neutral-900 dark:bg-neutral-200/30 dark:border-neutral-200 dark:hover:bg-neutral-200/50 dark:bg-neutral-950 dark:hover:bg-neutral-800 dark:hover:text-neutral-50 dark:dark:bg-neutral-800/30 dark:dark:border-neutral-800 dark:dark:hover:bg-neutral-800/50",
19
+ "border border-neutral-200 bg-white shadow-sm hover:bg-neutral-100 hover:text-neutral-900 dark:border-neutral-800 dark:bg-neutral-950 dark:hover:bg-neutral-800 dark:hover:text-neutral-50",
20
20
  secondary:
21
- "bg-neutral-100 text-neutral-900 shadow-xs hover:bg-neutral-100/80 dark:bg-neutral-800 dark:text-neutral-50 dark:hover:bg-neutral-800/80",
22
- ghost:
23
- "hover:bg-neutral-100 hover:text-neutral-900 dark:hover:bg-neutral-100/50 dark:hover:bg-neutral-800 dark:hover:text-neutral-50 dark:dark:hover:bg-neutral-800/50",
21
+ "bg-neutral-100 text-neutral-900 shadow-sm hover:bg-neutral-100/80 dark:bg-neutral-800 dark:text-neutral-50 dark:hover:bg-neutral-800/80",
22
+ ghost: "hover:bg-neutral-100 hover:text-neutral-900 dark:hover:bg-neutral-800 dark:hover:text-neutral-50",
24
23
  link: "text-neutral-900 underline-offset-4 hover:underline dark:text-neutral-50",
25
24
  },
26
25
  size: {
27
- default: "h-9 px-4 py-2 has-[>svg]:px-3",
28
- sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
29
- lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
30
- icon: "size-9",
26
+ default: "h-9 px-4 py-2",
27
+ sm: "h-8 rounded-md px-3 text-xs",
28
+ lg: "h-10 rounded-md px-8",
29
+ icon: "h-9 w-9",
31
30
  },
32
31
  },
33
32
  defaultVariants: {
@@ -37,25 +36,20 @@ const buttonVariants = cva(
37
36
  },
38
37
  );
39
38
 
40
- function Button({
41
- className,
42
- variant,
43
- size,
44
- asChild = false,
45
- ...props
46
- }: React.ComponentProps<"button">
47
- & VariantProps<typeof buttonVariants> & {
48
- asChild?: boolean;
49
- }) {
50
- const Comp = asChild ? Slot : "button";
39
+ export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
40
+ asChild?: boolean;
41
+ }
51
42
 
43
+ const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(({className, variant, size, asChild = false, ...props}, ref) => {
44
+ const Comp = asChild ? Slot : "button";
52
45
  return (
53
46
  <Comp
54
- data-slot='button'
55
47
  className={cn(buttonVariants({variant, size, className}))}
48
+ ref={ref}
56
49
  {...props}
57
50
  />
58
51
  );
59
- }
52
+ });
53
+ Button.displayName = "Button";
60
54
 
61
55
  export {Button, buttonVariants};
@@ -27,7 +27,7 @@ function Calendar({
27
27
  <DayPicker
28
28
  showOutsideDays={showOutsideDays}
29
29
  className={cn(
30
- "group/calendar bg-white p-3 [--cell-size:--spacing(8)] dark:bg-neutral-950 [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",
30
+ "group/calendar bg-white p-3 [--cell-size:2rem] dark:bg-neutral-950 [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",
31
31
  String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
32
32
  String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
33
33
  className,
@@ -39,49 +39,49 @@ function Calendar({
39
39
  }}
40
40
  classNames={{
41
41
  root: cn("w-fit", defaultClassNames.root),
42
- months: cn("flex gap-4 flex-col md:flex-row relative", defaultClassNames.months),
43
- month: cn("flex flex-col w-full gap-4", defaultClassNames.month),
44
- nav: cn("flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between", defaultClassNames.nav),
42
+ months: cn("relative flex flex-col gap-4 md:flex-row", defaultClassNames.months),
43
+ month: cn("flex w-full flex-col gap-4", defaultClassNames.month),
44
+ nav: cn("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1", defaultClassNames.nav),
45
45
  button_previous: cn(
46
46
  buttonVariants({variant: buttonVariant}),
47
- "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none",
47
+ "h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",
48
48
  defaultClassNames.button_previous,
49
49
  ),
50
50
  button_next: cn(
51
51
  buttonVariants({variant: buttonVariant}),
52
- "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none",
52
+ "h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",
53
53
  defaultClassNames.button_next,
54
54
  ),
55
- month_caption: cn("flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)", defaultClassNames.month_caption),
56
- dropdowns: cn("w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5", defaultClassNames.dropdowns),
55
+ month_caption: cn("flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]", defaultClassNames.month_caption),
56
+ dropdowns: cn("flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium", defaultClassNames.dropdowns),
57
57
  dropdown_root: cn(
58
- "relative has-focus:border-neutral-950 border border-neutral-200 shadow-xs has-focus:ring-neutral-950/50 has-focus:ring-[3px] rounded-md dark:has-focus:border-neutral-300 dark:border-neutral-800 dark:has-focus:ring-neutral-300/50",
58
+ "has-focus:border-neutral-950 border-neutral-200 shadow-xs has-focus:ring-neutral-950/50 has-focus:ring-[3px] relative rounded-md border dark:has-focus:border-neutral-300 dark:border-neutral-800 dark:has-focus:ring-neutral-300/50",
59
59
  defaultClassNames.dropdown_root,
60
60
  ),
61
- dropdown: cn("absolute bg-white inset-0 opacity-0 dark:bg-neutral-950", defaultClassNames.dropdown),
61
+ dropdown: cn("bg-white absolute inset-0 opacity-0 dark:bg-neutral-950", defaultClassNames.dropdown),
62
62
  caption_label: cn(
63
63
  "select-none font-medium",
64
64
  captionLayout === "label"
65
65
  ? "text-sm"
66
- : "rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-neutral-500 [&>svg]:size-3.5 dark:[&>svg]:text-neutral-400",
66
+ : "[&>svg]:text-neutral-500 flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5 dark:[&>svg]:text-neutral-400",
67
67
  defaultClassNames.caption_label,
68
68
  ),
69
69
  table: "w-full border-collapse",
70
70
  weekdays: cn("flex", defaultClassNames.weekdays),
71
71
  weekday: cn(
72
- "text-neutral-500 rounded-md flex-1 font-normal text-[0.8rem] select-none dark:text-neutral-400",
72
+ "text-neutral-500 flex-1 select-none rounded-md text-[0.8rem] font-normal dark:text-neutral-400",
73
73
  defaultClassNames.weekday,
74
74
  ),
75
- week: cn("flex w-full mt-2", defaultClassNames.week),
76
- week_number_header: cn("select-none w-(--cell-size)", defaultClassNames.week_number_header),
77
- week_number: cn("text-[0.8rem] select-none text-neutral-500 dark:text-neutral-400", defaultClassNames.week_number),
75
+ week: cn("mt-2 flex w-full", defaultClassNames.week),
76
+ week_number_header: cn("w-[--cell-size] select-none", defaultClassNames.week_number_header),
77
+ week_number: cn("text-neutral-500 select-none text-[0.8rem] dark:text-neutral-400", defaultClassNames.week_number),
78
78
  day: cn(
79
- "relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none",
79
+ "group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md",
80
80
  defaultClassNames.day,
81
81
  ),
82
- range_start: cn("rounded-l-md bg-neutral-100 dark:bg-neutral-800", defaultClassNames.range_start),
82
+ range_start: cn("bg-neutral-100 rounded-l-md dark:bg-neutral-800", defaultClassNames.range_start),
83
83
  range_middle: cn("rounded-none", defaultClassNames.range_middle),
84
- range_end: cn("rounded-r-md bg-neutral-100 dark:bg-neutral-800", defaultClassNames.range_end),
84
+ range_end: cn("bg-neutral-100 rounded-r-md dark:bg-neutral-800", defaultClassNames.range_end),
85
85
  today: cn(
86
86
  "bg-neutral-100 text-neutral-900 rounded-md data-[selected=true]:rounded-none dark:bg-neutral-800 dark:text-neutral-50",
87
87
  defaultClassNames.today,
@@ -135,7 +135,7 @@ function Calendar({
135
135
  WeekNumber: ({children, ...props}) => {
136
136
  return (
137
137
  <td {...props}>
138
- <div className='flex size-(--cell-size) items-center justify-center text-center'>{children}</div>
138
+ <div className='flex size-[--cell-size] items-center justify-center text-center'>{children}</div>
139
139
  </td>
140
140
  );
141
141
  },
@@ -165,7 +165,7 @@ function CalendarDayButton({className, day, modifiers, ...props}: React.Componen
165
165
  data-range-end={modifiers["range_end"]}
166
166
  data-range-middle={modifiers["range_middle"]}
167
167
  className={cn(
168
- "group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-end=true]:bg-neutral-900 data-[range-end=true]:text-neutral-50 data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-neutral-100 data-[range-middle=true]:text-neutral-900 data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md data-[range-start=true]:bg-neutral-900 data-[range-start=true]:text-neutral-50 data-[selected-single=true]:bg-neutral-900 data-[selected-single=true]:text-neutral-50 dark:dark:hover:text-neutral-50 dark:hover:text-neutral-900 dark:data-[range-end=true]:bg-neutral-50 dark:data-[range-end=true]:text-neutral-900 dark:data-[range-middle=true]:bg-neutral-800 dark:data-[range-middle=true]:text-neutral-50 dark:data-[range-start=true]:bg-neutral-50 dark:data-[range-start=true]:text-neutral-900 dark:data-[selected-single=true]:bg-neutral-50 dark:data-[selected-single=true]:text-neutral-900 [&>span]:text-xs [&>span]:opacity-70",
168
+ "group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:bg-neutral-900 data-[range-end=true]:text-neutral-50 data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-neutral-100 data-[range-middle=true]:text-neutral-900 data-[range-start=true]:rounded-md data-[range-start=true]:bg-neutral-900 data-[range-start=true]:text-neutral-50 data-[selected-single=true]:bg-neutral-900 data-[selected-single=true]:text-neutral-50 dark:data-[range-end=true]:bg-neutral-50 dark:data-[range-end=true]:text-neutral-900 dark:data-[range-middle=true]:bg-neutral-800 dark:data-[range-middle=true]:text-neutral-50 dark:data-[range-start=true]:bg-neutral-50 dark:data-[range-start=true]:text-neutral-900 dark:data-[selected-single=true]:bg-neutral-50 dark:data-[selected-single=true]:text-neutral-900 [&>span]:text-xs [&>span]:opacity-70",
169
169
  defaultClassNames.day,
170
170
  className,
171
171
  )}