@codefast/ui 0.3.16-canary.3 → 0.4.0-canary.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 (281) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/README.md +27 -16
  3. package/dist/components/accordion.d.mts +7 -22
  4. package/dist/components/accordion.mjs +26 -29
  5. package/dist/components/alert-dialog.d.mts +27 -26
  6. package/dist/components/alert-dialog.mjs +53 -45
  7. package/dist/components/alert.d.mts +12 -2
  8. package/dist/components/alert.mjs +15 -6
  9. package/dist/components/aspect-ratio.d.mts +2 -2
  10. package/dist/components/aspect-ratio.mjs +2 -3
  11. package/dist/components/avatar.d.mts +41 -5
  12. package/dist/components/avatar.mjs +40 -10
  13. package/dist/components/badge.mjs +4 -4
  14. package/dist/components/breadcrumb.d.mts +1 -0
  15. package/dist/components/breadcrumb.mjs +11 -10
  16. package/dist/components/button-group.d.mts +1 -1
  17. package/dist/components/button-group.mjs +6 -7
  18. package/dist/components/button.d.mts +0 -1
  19. package/dist/components/button.mjs +7 -7
  20. package/dist/components/calendar.d.mts +6 -2
  21. package/dist/components/calendar.mjs +39 -43
  22. package/dist/components/card.d.mts +4 -2
  23. package/dist/components/card.mjs +9 -9
  24. package/dist/components/carousel.d.mts +16 -4
  25. package/dist/components/carousel.mjs +24 -11
  26. package/dist/components/chart.d.mts +8 -3
  27. package/dist/components/chart.mjs +21 -15
  28. package/dist/components/checkbox-cards.mjs +4 -4
  29. package/dist/components/checkbox-group.mjs +3 -4
  30. package/dist/components/checkbox.d.mts +2 -2
  31. package/dist/components/checkbox.mjs +6 -7
  32. package/dist/components/collapsible.d.mts +4 -4
  33. package/dist/components/collapsible.mjs +4 -5
  34. package/dist/components/command.d.mts +11 -1
  35. package/dist/components/command.mjs +35 -32
  36. package/dist/components/context-menu.d.mts +22 -15
  37. package/dist/components/context-menu.mjs +44 -39
  38. package/dist/components/dialog.d.mts +19 -23
  39. package/dist/components/dialog.mjs +48 -47
  40. package/dist/components/direction.d.mts +24 -0
  41. package/dist/components/direction.mjs +18 -0
  42. package/dist/components/drawer.d.mts +2 -20
  43. package/dist/components/drawer.mjs +17 -25
  44. package/dist/components/dropdown-menu.d.mts +22 -15
  45. package/dist/components/dropdown-menu.mjs +41 -37
  46. package/dist/components/empty.mjs +5 -5
  47. package/dist/components/field.d.mts +1 -1
  48. package/dist/components/field.mjs +11 -12
  49. package/dist/components/form.d.mts +6 -7
  50. package/dist/components/form.mjs +6 -7
  51. package/dist/components/hover-card.d.mts +5 -5
  52. package/dist/components/hover-card.mjs +14 -12
  53. package/dist/components/input-group.d.mts +1 -1
  54. package/dist/components/input-group.mjs +12 -7
  55. package/dist/components/input-number.d.mts +3 -1
  56. package/dist/components/input-number.mjs +49 -27
  57. package/dist/components/input-otp.mjs +9 -7
  58. package/dist/components/input-password.mjs +1 -4
  59. package/dist/components/input-search.mjs +3 -5
  60. package/dist/components/input.mjs +1 -2
  61. package/dist/components/item.mjs +9 -9
  62. package/dist/components/kbd.mjs +1 -1
  63. package/dist/components/label.d.mts +2 -2
  64. package/dist/components/label.mjs +3 -4
  65. package/dist/components/menubar.d.mts +22 -16
  66. package/dist/components/menubar.mjs +54 -47
  67. package/dist/components/native-select.d.mts +5 -1
  68. package/dist/components/native-select.mjs +9 -6
  69. package/dist/components/navigation-menu.d.mts +30 -8
  70. package/dist/components/navigation-menu.mjs +33 -23
  71. package/dist/components/pagination.d.mts +6 -0
  72. package/dist/components/pagination.mjs +26 -11
  73. package/dist/components/popover.d.mts +40 -7
  74. package/dist/components/popover.mjs +46 -14
  75. package/dist/components/progress-circle.d.mts +1 -1
  76. package/dist/components/progress-circle.mjs +1 -2
  77. package/dist/components/progress.d.mts +2 -2
  78. package/dist/components/progress.mjs +5 -6
  79. package/dist/components/radio-cards.d.mts +3 -3
  80. package/dist/components/radio-cards.mjs +11 -11
  81. package/dist/components/radio-group.d.mts +3 -3
  82. package/dist/components/radio-group.mjs +9 -9
  83. package/dist/components/radio.mjs +2 -3
  84. package/dist/components/resizable.mjs +3 -8
  85. package/dist/components/scroll-area.d.mts +5 -5
  86. package/dist/components/scroll-area.mjs +13 -10
  87. package/dist/components/select.d.mts +14 -14
  88. package/dist/components/select.mjs +47 -47
  89. package/dist/components/separator.d.mts +2 -2
  90. package/dist/components/separator.mjs +3 -4
  91. package/dist/components/sheet.d.mts +13 -14
  92. package/dist/components/sheet.mjs +41 -39
  93. package/dist/components/sidebar.d.mts +2 -3
  94. package/dist/components/sidebar.mjs +46 -46
  95. package/dist/components/skeleton.mjs +1 -1
  96. package/dist/components/slider.d.mts +2 -2
  97. package/dist/components/slider.mjs +9 -11
  98. package/dist/components/sonner.mjs +11 -3
  99. package/dist/components/spinner.mjs +6 -7
  100. package/dist/components/switch.d.mts +5 -2
  101. package/dist/components/switch.mjs +7 -7
  102. package/dist/components/table.mjs +10 -10
  103. package/dist/components/tabs.d.mts +8 -5
  104. package/dist/components/tabs.mjs +18 -12
  105. package/dist/components/textarea.mjs +1 -1
  106. package/dist/components/toggle-group.d.mts +9 -6
  107. package/dist/components/toggle-group.mjs +19 -20
  108. package/dist/components/toggle.d.mts +2 -3
  109. package/dist/components/toggle.mjs +4 -6
  110. package/dist/components/tooltip.d.mts +7 -6
  111. package/dist/components/tooltip.mjs +19 -17
  112. package/dist/hooks/use-animated-value.mjs +0 -1
  113. package/dist/hooks/use-copy-to-clipboard.mjs +0 -1
  114. package/dist/hooks/use-is-mobile.mjs +0 -1
  115. package/dist/hooks/use-media-query.mjs +0 -1
  116. package/dist/hooks/use-mutation-observer.mjs +0 -1
  117. package/dist/hooks/use-pagination.mjs +0 -1
  118. package/dist/index.d.mts +15 -13
  119. package/dist/index.mjs +18 -16
  120. package/dist/primitives/checkbox-group.d.mts +9 -10
  121. package/dist/primitives/checkbox-group.mjs +14 -19
  122. package/dist/primitives/input-number.d.mts +3 -3
  123. package/dist/primitives/input-number.mjs +3 -5
  124. package/dist/primitives/input.d.mts +4 -4
  125. package/dist/primitives/input.mjs +2 -3
  126. package/dist/primitives/progress-circle.d.mts +3 -3
  127. package/dist/primitives/progress-circle.mjs +2 -3
  128. package/dist/variants/alert.d.mts +1 -1
  129. package/dist/variants/alert.mjs +3 -13
  130. package/dist/variants/badge.d.mts +6 -4
  131. package/dist/variants/badge.mjs +7 -34
  132. package/dist/variants/button-group.d.mts +2 -2
  133. package/dist/variants/button-group.mjs +3 -14
  134. package/dist/variants/button.d.mts +12 -10
  135. package/dist/variants/button.mjs +15 -57
  136. package/dist/variants/empty.d.mts +1 -1
  137. package/dist/variants/empty.mjs +2 -7
  138. package/dist/variants/field.d.mts +3 -3
  139. package/dist/variants/field.mjs +4 -22
  140. package/dist/variants/input-group.d.mts +9 -9
  141. package/dist/variants/input-group.mjs +11 -70
  142. package/dist/variants/input-number.d.mts +45 -0
  143. package/dist/variants/input-number.mjs +40 -0
  144. package/dist/variants/item.d.mts +5 -4
  145. package/dist/variants/item.mjs +9 -31
  146. package/dist/variants/navigation-menu.d.mts +1 -1
  147. package/dist/variants/navigation-menu.mjs +1 -5
  148. package/dist/variants/progress-circle.d.mts +1 -1
  149. package/dist/variants/progress-circle.mjs +1 -5
  150. package/dist/variants/scroll-area.d.mts +2 -2
  151. package/dist/variants/scroll-area.mjs +3 -8
  152. package/dist/variants/separator.mjs +6 -6
  153. package/dist/variants/sheet.d.mts +4 -4
  154. package/dist/variants/sheet.mjs +5 -38
  155. package/dist/variants/sidebar.d.mts +4 -4
  156. package/dist/variants/sidebar.mjs +6 -23
  157. package/dist/variants/tabs.d.mts +18 -0
  158. package/dist/variants/tabs.mjs +15 -0
  159. package/dist/variants/toggle.d.mts +4 -4
  160. package/dist/variants/toggle.mjs +9 -27
  161. package/package.json +27 -44
  162. package/src/components/accordion.tsx +26 -68
  163. package/src/components/alert-dialog.tsx +70 -86
  164. package/src/components/alert.tsx +27 -19
  165. package/src/components/aspect-ratio.tsx +1 -4
  166. package/src/components/avatar.tsx +99 -12
  167. package/src/components/badge.tsx +5 -8
  168. package/src/components/breadcrumb.tsx +18 -24
  169. package/src/components/button-group.tsx +10 -20
  170. package/src/components/button.tsx +8 -19
  171. package/src/components/calendar.tsx +77 -132
  172. package/src/components/card.tsx +16 -22
  173. package/src/components/carousel.tsx +38 -56
  174. package/src/components/chart.tsx +41 -92
  175. package/src/components/checkbox-cards.tsx +10 -30
  176. package/src/components/checkbox-group.tsx +5 -28
  177. package/src/components/checkbox.tsx +5 -26
  178. package/src/components/collapsible.tsx +1 -4
  179. package/src/components/command.tsx +52 -65
  180. package/src/components/context-menu.tsx +46 -125
  181. package/src/components/dialog.tsx +49 -101
  182. package/src/components/direction.tsx +32 -0
  183. package/src/components/drawer.tsx +17 -79
  184. package/src/components/dropdown-menu.tsx +39 -118
  185. package/src/components/empty.tsx +6 -20
  186. package/src/components/field.tsx +19 -52
  187. package/src/components/form.tsx +19 -61
  188. package/src/components/hover-card.tsx +4 -27
  189. package/src/components/input-group.tsx +13 -52
  190. package/src/components/input-number.tsx +55 -75
  191. package/src/components/input-otp.tsx +19 -38
  192. package/src/components/input-password.tsx +5 -29
  193. package/src/components/input-search.tsx +6 -23
  194. package/src/components/input.tsx +1 -17
  195. package/src/components/item.tsx +17 -31
  196. package/src/components/kbd.tsx +2 -14
  197. package/src/components/label.tsx +2 -10
  198. package/src/components/menubar.tsx +34 -125
  199. package/src/components/native-select.tsx +21 -30
  200. package/src/components/navigation-menu.tsx +34 -94
  201. package/src/components/pagination.tsx +28 -34
  202. package/src/components/popover.tsx +66 -35
  203. package/src/components/progress-circle.tsx +7 -25
  204. package/src/components/progress.tsx +3 -16
  205. package/src/components/radio-cards.tsx +8 -27
  206. package/src/components/radio-group.tsx +7 -27
  207. package/src/components/radio.tsx +3 -24
  208. package/src/components/resizable.tsx +5 -26
  209. package/src/components/scroll-area.tsx +12 -32
  210. package/src/components/select.tsx +36 -59
  211. package/src/components/separator.tsx +4 -18
  212. package/src/components/sheet.tsx +37 -74
  213. package/src/components/sidebar.tsx +47 -177
  214. package/src/components/skeleton.tsx +1 -3
  215. package/src/components/slider.tsx +7 -36
  216. package/src/components/sonner.tsx +16 -6
  217. package/src/components/spinner.tsx +6 -15
  218. package/src/components/switch.tsx +8 -30
  219. package/src/components/table.tsx +18 -35
  220. package/src/components/tabs.tsx +16 -34
  221. package/src/components/textarea.tsx +1 -15
  222. package/src/components/toggle-group.tsx +34 -38
  223. package/src/components/toggle.tsx +4 -13
  224. package/src/components/tooltip.tsx +11 -37
  225. package/src/css/foundation/base.css +50 -0
  226. package/src/css/foundation/motion.css +36 -0
  227. package/src/css/foundation/source.css +3 -0
  228. package/src/css/foundation/tokens.css +71 -0
  229. package/src/css/foundation/variants.css +113 -0
  230. package/src/css/preset.css +5 -214
  231. package/src/css/style.css +1 -1
  232. package/src/hooks/use-animated-value.ts +1 -7
  233. package/src/hooks/use-copy-to-clipboard.ts +1 -6
  234. package/src/hooks/use-is-mobile.ts +0 -2
  235. package/src/hooks/use-media-query.ts +0 -2
  236. package/src/hooks/use-mutation-observer.ts +0 -3
  237. package/src/hooks/use-pagination.ts +0 -2
  238. package/src/index.ts +39 -80
  239. package/src/primitives/checkbox-group.tsx +25 -39
  240. package/src/primitives/input-number.tsx +17 -63
  241. package/src/primitives/input.tsx +8 -24
  242. package/src/primitives/progress-circle.tsx +13 -43
  243. package/src/variants/alert.ts +3 -14
  244. package/src/variants/badge.ts +8 -35
  245. package/src/variants/button-group.ts +5 -18
  246. package/src/variants/button.ts +21 -58
  247. package/src/variants/empty.ts +2 -11
  248. package/src/variants/field.ts +6 -19
  249. package/src/variants/input-group.ts +12 -64
  250. package/src/variants/input-number.ts +65 -0
  251. package/src/variants/item.ts +10 -32
  252. package/src/variants/navigation-menu.ts +1 -8
  253. package/src/variants/progress-circle.ts +1 -2
  254. package/src/variants/scroll-area.ts +3 -9
  255. package/src/variants/separator.ts +6 -7
  256. package/src/variants/sheet.ts +6 -39
  257. package/src/variants/sidebar.ts +7 -27
  258. package/src/variants/tabs.ts +34 -0
  259. package/src/variants/toggle.ts +9 -28
  260. /package/src/css/{amber.css → themes/amber.css} +0 -0
  261. /package/src/css/{blue.css → themes/blue.css} +0 -0
  262. /package/src/css/{cyan.css → themes/cyan.css} +0 -0
  263. /package/src/css/{emerald.css → themes/emerald.css} +0 -0
  264. /package/src/css/{fuchsia.css → themes/fuchsia.css} +0 -0
  265. /package/src/css/{gray.css → themes/gray.css} +0 -0
  266. /package/src/css/{green.css → themes/green.css} +0 -0
  267. /package/src/css/{indigo.css → themes/indigo.css} +0 -0
  268. /package/src/css/{lime.css → themes/lime.css} +0 -0
  269. /package/src/css/{neutral.css → themes/neutral.css} +0 -0
  270. /package/src/css/{orange.css → themes/orange.css} +0 -0
  271. /package/src/css/{pink.css → themes/pink.css} +0 -0
  272. /package/src/css/{purple.css → themes/purple.css} +0 -0
  273. /package/src/css/{red.css → themes/red.css} +0 -0
  274. /package/src/css/{rose.css → themes/rose.css} +0 -0
  275. /package/src/css/{sky.css → themes/sky.css} +0 -0
  276. /package/src/css/{slate.css → themes/slate.css} +0 -0
  277. /package/src/css/{stone.css → themes/stone.css} +0 -0
  278. /package/src/css/{teal.css → themes/teal.css} +0 -0
  279. /package/src/css/{violet.css → themes/violet.css} +0 -0
  280. /package/src/css/{yellow.css → themes/yellow.css} +0 -0
  281. /package/src/css/{zinc.css → themes/zinc.css} +0 -0
@@ -22,7 +22,6 @@ type AlertTitleProps = ComponentProps<"div">;
22
22
  * @since 0.3.16-canary.0
23
23
  */
24
24
  declare function AlertTitle({
25
- children,
26
25
  className,
27
26
  ...props
28
27
  }: AlertTitleProps): JSX.Element;
@@ -37,5 +36,16 @@ declare function AlertDescription({
37
36
  className,
38
37
  ...props
39
38
  }: AlertDescriptionProps): JSX.Element;
39
+ /**
40
+ * @since 0.3.16-canary.0
41
+ */
42
+ type AlertActionProps = ComponentProps<"div">;
43
+ /**
44
+ * @since 0.3.16-canary.0
45
+ */
46
+ declare function AlertAction({
47
+ className,
48
+ ...props
49
+ }: AlertActionProps): JSX.Element;
40
50
  //#endregion
41
- export { Alert, AlertDescription, type AlertDescriptionProps, type AlertProps, AlertTitle, type AlertTitleProps };
51
+ export { Alert, AlertAction, type AlertActionProps, AlertDescription, type AlertDescriptionProps, type AlertProps, AlertTitle, type AlertTitleProps };
@@ -19,12 +19,11 @@ function Alert({ className, variant, ...props }) {
19
19
  /**
20
20
  * @since 0.3.16-canary.0
21
21
  */
22
- function AlertTitle({ children, className, ...props }) {
22
+ function AlertTitle({ className, ...props }) {
23
23
  return /* @__PURE__ */ jsx("div", {
24
- className: cn("col-start-2 min-h-4", "line-clamp-1 font-medium tracking-tight", className),
24
+ className: cn("font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground", className),
25
25
  "data-slot": "alert-title",
26
- ...props,
27
- children
26
+ ...props
28
27
  });
29
28
  }
30
29
  /**
@@ -32,10 +31,20 @@ function AlertTitle({ children, className, ...props }) {
32
31
  */
33
32
  function AlertDescription({ className, ...props }) {
34
33
  return /* @__PURE__ */ jsx("div", {
35
- className: cn("col-start-2 grid justify-items-start gap-1 text-sm text-muted-foreground", "[&_p]:leading-relaxed", className),
34
+ className: cn("text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4", className),
36
35
  "data-slot": "alert-description",
37
36
  ...props
38
37
  });
39
38
  }
39
+ /**
40
+ * @since 0.3.16-canary.0
41
+ */
42
+ function AlertAction({ className, ...props }) {
43
+ return /* @__PURE__ */ jsx("div", {
44
+ className: cn("absolute top-2.5 right-3", className),
45
+ "data-slot": "alert-action",
46
+ ...props
47
+ });
48
+ }
40
49
  //#endregion
41
- export { Alert, AlertDescription, AlertTitle };
50
+ export { Alert, AlertAction, AlertDescription, AlertTitle };
@@ -1,11 +1,11 @@
1
- import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio";
1
+ import { AspectRatio as AspectRatio$1 } from "radix-ui";
2
2
  import { ComponentProps, JSX } from "react";
3
3
 
4
4
  //#region src/components/aspect-ratio.d.ts
5
5
  /**
6
6
  * @since 0.3.16-canary.0
7
7
  */
8
- type AspectRatioProps = ComponentProps<typeof AspectRatioPrimitive.Root>;
8
+ type AspectRatioProps = ComponentProps<typeof AspectRatio$1.Root>;
9
9
  /**
10
10
  * @since 0.3.16-canary.0
11
11
  */
@@ -1,12 +1,11 @@
1
- "use client";
1
+ import { AspectRatio as AspectRatio$1 } from "radix-ui";
2
2
  import { jsx } from "react/jsx-runtime";
3
- import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio";
4
3
  //#region src/components/aspect-ratio.tsx
5
4
  /**
6
5
  * @since 0.3.16-canary.0
7
6
  */
8
7
  function AspectRatio({ ...props }) {
9
- return /* @__PURE__ */ jsx(AspectRatioPrimitive.Root, {
8
+ return /* @__PURE__ */ jsx(AspectRatio$1.Root, {
10
9
  "data-slot": "aspect-ratio",
11
10
  ...props
12
11
  });
@@ -1,22 +1,25 @@
1
- import * as AvatarPrimitive from "@radix-ui/react-avatar";
1
+ import { Avatar as Avatar$1 } from "radix-ui";
2
2
  import { ComponentProps, JSX } from "react";
3
3
 
4
4
  //#region src/components/avatar.d.ts
5
5
  /**
6
6
  * @since 0.3.16-canary.0
7
7
  */
8
- type AvatarProps = ComponentProps<typeof AvatarPrimitive.Root>;
8
+ type AvatarProps = ComponentProps<typeof Avatar$1.Root> & {
9
+ size?: "default" | "sm" | "lg";
10
+ };
9
11
  /**
10
12
  * @since 0.3.16-canary.0
11
13
  */
12
14
  declare function Avatar({
13
15
  className,
16
+ size,
14
17
  ...props
15
18
  }: AvatarProps): JSX.Element;
16
19
  /**
17
20
  * @since 0.3.16-canary.0
18
21
  */
19
- type AvatarImageProps = ComponentProps<typeof AvatarPrimitive.Image>;
22
+ type AvatarImageProps = ComponentProps<typeof Avatar$1.Image>;
20
23
  /**
21
24
  * @since 0.3.16-canary.0
22
25
  */
@@ -27,7 +30,7 @@ declare function AvatarImage({
27
30
  /**
28
31
  * @since 0.3.16-canary.0
29
32
  */
30
- type AvatarFallbackProps = ComponentProps<typeof AvatarPrimitive.Fallback>;
33
+ type AvatarFallbackProps = ComponentProps<typeof Avatar$1.Fallback>;
31
34
  /**
32
35
  * @since 0.3.16-canary.0
33
36
  */
@@ -35,5 +38,38 @@ declare function AvatarFallback({
35
38
  className,
36
39
  ...props
37
40
  }: AvatarFallbackProps): JSX.Element;
41
+ /**
42
+ * @since 0.3.16-canary.0
43
+ */
44
+ type AvatarBadgeProps = ComponentProps<"span">;
45
+ /**
46
+ * @since 0.3.16-canary.0
47
+ */
48
+ declare function AvatarBadge({
49
+ className,
50
+ ...props
51
+ }: AvatarBadgeProps): JSX.Element;
52
+ /**
53
+ * @since 0.3.16-canary.0
54
+ */
55
+ type AvatarGroupProps = ComponentProps<"div">;
56
+ /**
57
+ * @since 0.3.16-canary.0
58
+ */
59
+ declare function AvatarGroup({
60
+ className,
61
+ ...props
62
+ }: AvatarGroupProps): JSX.Element;
63
+ /**
64
+ * @since 0.3.16-canary.0
65
+ */
66
+ type AvatarGroupCountProps = ComponentProps<"div">;
67
+ /**
68
+ * @since 0.3.16-canary.0
69
+ */
70
+ declare function AvatarGroupCount({
71
+ className,
72
+ ...props
73
+ }: AvatarGroupCountProps): JSX.Element;
38
74
  //#endregion
39
- export { Avatar, AvatarFallback, type AvatarFallbackProps, AvatarImage, type AvatarImageProps, type AvatarProps };
75
+ export { Avatar, AvatarBadge, type AvatarBadgeProps, AvatarFallback, type AvatarFallbackProps, AvatarGroup, AvatarGroupCount, type AvatarGroupCountProps, type AvatarGroupProps, AvatarImage, type AvatarImageProps, type AvatarProps };
@@ -1,14 +1,14 @@
1
- "use client";
2
1
  import { cn } from "../lib/utils.mjs";
2
+ import { Avatar as Avatar$1 } from "radix-ui";
3
3
  import { jsx } from "react/jsx-runtime";
4
- import * as AvatarPrimitive from "@radix-ui/react-avatar";
5
4
  //#region src/components/avatar.tsx
6
5
  /**
7
6
  * @since 0.3.16-canary.0
8
7
  */
9
- function Avatar({ className, ...props }) {
10
- return /* @__PURE__ */ jsx(AvatarPrimitive.Root, {
11
- className: cn("relative flex size-8 shrink-0 overflow-hidden", "rounded-full", className),
8
+ function Avatar({ className, size = "default", ...props }) {
9
+ return /* @__PURE__ */ jsx(Avatar$1.Root, {
10
+ className: cn("group/avatar relative flex size-8 shrink-0 rounded-full select-none after:absolute after:inset-0 after:rounded-full after:border after:border-border after:mix-blend-darken data-[size=lg]:size-10 data-[size=sm]:size-6 dark:after:mix-blend-lighten", className),
11
+ "data-size": size,
12
12
  "data-slot": "avatar",
13
13
  ...props
14
14
  });
@@ -17,8 +17,8 @@ function Avatar({ className, ...props }) {
17
17
  * @since 0.3.16-canary.0
18
18
  */
19
19
  function AvatarImage({ className, ...props }) {
20
- return /* @__PURE__ */ jsx(AvatarPrimitive.Image, {
21
- className: cn("aspect-square size-full", className),
20
+ return /* @__PURE__ */ jsx(Avatar$1.Image, {
21
+ className: cn("aspect-square size-full rounded-full object-cover", className),
22
22
  "data-slot": "avatar-image",
23
23
  ...props
24
24
  });
@@ -27,11 +27,41 @@ function AvatarImage({ className, ...props }) {
27
27
  * @since 0.3.16-canary.0
28
28
  */
29
29
  function AvatarFallback({ className, ...props }) {
30
- return /* @__PURE__ */ jsx(AvatarPrimitive.Fallback, {
31
- className: cn("flex size-full items-center justify-center", "rounded-full", "bg-muted", className),
30
+ return /* @__PURE__ */ jsx(Avatar$1.Fallback, {
31
+ className: cn("flex size-full items-center justify-center rounded-full bg-muted text-sm text-muted-foreground group-data-[size=sm]/avatar:text-xs", className),
32
32
  "data-slot": "avatar-fallback",
33
33
  ...props
34
34
  });
35
35
  }
36
+ /**
37
+ * @since 0.3.16-canary.0
38
+ */
39
+ function AvatarBadge({ className, ...props }) {
40
+ return /* @__PURE__ */ jsx("span", {
41
+ className: cn("absolute right-0 bottom-0 z-10 inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground bg-blend-color ring-2 ring-background select-none", "group-data-[size=sm]/avatar:size-2 group-data-[size=sm]/avatar:[&>svg]:hidden", "group-data-[size=default]/avatar:size-2.5 group-data-[size=default]/avatar:[&>svg]:size-2", "group-data-[size=lg]/avatar:size-3 group-data-[size=lg]/avatar:[&>svg]:size-2", className),
42
+ "data-slot": "avatar-badge",
43
+ ...props
44
+ });
45
+ }
46
+ /**
47
+ * @since 0.3.16-canary.0
48
+ */
49
+ function AvatarGroup({ className, ...props }) {
50
+ return /* @__PURE__ */ jsx("div", {
51
+ className: cn("group/avatar-group flex -space-x-2 *:data-[slot=avatar]:ring-2 *:data-[slot=avatar]:ring-background", className),
52
+ "data-slot": "avatar-group",
53
+ ...props
54
+ });
55
+ }
56
+ /**
57
+ * @since 0.3.16-canary.0
58
+ */
59
+ function AvatarGroupCount({ className, ...props }) {
60
+ return /* @__PURE__ */ jsx("div", {
61
+ className: cn("relative flex size-8 shrink-0 items-center justify-center rounded-full bg-muted text-sm text-muted-foreground ring-2 ring-background group-has-data-[size=lg]/avatar-group:size-10 group-has-data-[size=sm]/avatar-group:size-6 [&>svg]:size-4 group-has-data-[size=lg]/avatar-group:[&>svg]:size-5 group-has-data-[size=sm]/avatar-group:[&>svg]:size-3", className),
62
+ "data-slot": "avatar-group-count",
63
+ ...props
64
+ });
65
+ }
36
66
  //#endregion
37
- export { Avatar, AvatarFallback, AvatarImage };
67
+ export { Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage };
@@ -1,18 +1,18 @@
1
- "use client";
2
1
  import { badgeVariants } from "../variants/badge.mjs";
3
- import { Slot } from "@radix-ui/react-slot";
2
+ import { Slot } from "radix-ui";
4
3
  import { jsx } from "react/jsx-runtime";
5
4
  //#region src/components/badge.tsx
6
5
  /**
7
6
  * @since 0.3.16-canary.0
8
7
  */
9
- function Badge({ asChild, className, variant, ...props }) {
10
- return /* @__PURE__ */ jsx(asChild ? Slot : "span", {
8
+ function Badge({ asChild = false, className, variant = "default", ...props }) {
9
+ return /* @__PURE__ */ jsx(asChild ? Slot.Root : "span", {
11
10
  className: badgeVariants({
12
11
  className,
13
12
  variant
14
13
  }),
15
14
  "data-slot": "badge",
15
+ "data-variant": variant,
16
16
  ...props
17
17
  });
18
18
  }
@@ -69,6 +69,7 @@ type BreadcrumbSeparatorProps = ComponentProps<"li">;
69
69
  */
70
70
  declare function BreadcrumbSeparator({
71
71
  children,
72
+ className,
72
73
  ...props
73
74
  }: BreadcrumbSeparatorProps): JSX.Element;
74
75
  /**
@@ -1,7 +1,6 @@
1
- "use client";
2
1
  import { cn } from "../lib/utils.mjs";
3
- import { Slot } from "@radix-ui/react-slot";
4
- import { ChevronRightIcon, EllipsisIcon } from "lucide-react";
2
+ import { ChevronRightIcon, MoreHorizontalIcon } from "lucide-react";
3
+ import { Slot } from "radix-ui";
5
4
  import { jsx, jsxs } from "react/jsx-runtime";
6
5
  //#region src/components/breadcrumb.tsx
7
6
  /**
@@ -19,7 +18,7 @@ function Breadcrumb({ ...props }) {
19
18
  */
20
19
  function BreadcrumbList({ className, ...props }) {
21
20
  return /* @__PURE__ */ jsx("ol", {
22
- className: cn("flex flex-wrap items-center gap-1.5 text-sm break-words text-muted-foreground", "sm:gap-2", className),
21
+ className: cn("flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground sm:gap-2.5", className),
23
22
  "data-slot": "breadcrumb-list",
24
23
  ...props
25
24
  });
@@ -38,8 +37,8 @@ function BreadcrumbItem({ className, ...props }) {
38
37
  * @since 0.3.16-canary.0
39
38
  */
40
39
  function BreadcrumbLink({ asChild, className, ...props }) {
41
- return /* @__PURE__ */ jsx(asChild ? Slot : "a", {
42
- className: cn("transition-colors motion-reduce:transition-none", "hover:text-foreground", className),
40
+ return /* @__PURE__ */ jsx(asChild ? Slot.Root : "a", {
41
+ className: cn("transition-colors hover:text-foreground", className),
43
42
  "data-slot": "breadcrumb-link",
44
43
  ...props
45
44
  });
@@ -53,19 +52,21 @@ function BreadcrumbPage({ className, ...props }) {
53
52
  "aria-disabled": "true",
54
53
  className: cn("font-normal text-foreground", className),
55
54
  "data-slot": "breadcrumb-page",
55
+ role: "link",
56
56
  ...props
57
57
  });
58
58
  }
59
59
  /**
60
60
  * @since 0.3.16-canary.0
61
61
  */
62
- function BreadcrumbSeparator({ children, ...props }) {
62
+ function BreadcrumbSeparator({ children, className, ...props }) {
63
63
  return /* @__PURE__ */ jsx("li", {
64
64
  "aria-hidden": "true",
65
+ className: cn("[&>svg]:size-3.5", className),
65
66
  "data-slot": "breadcrumb-separator",
66
67
  role: "presentation",
67
68
  ...props,
68
- children: children ?? /* @__PURE__ */ jsx(ChevronRightIcon, { className: "size-3.5" })
69
+ children: children ?? /* @__PURE__ */ jsx(ChevronRightIcon, { className: "rtl:rotate-180" })
69
70
  });
70
71
  }
71
72
  /**
@@ -74,11 +75,11 @@ function BreadcrumbSeparator({ children, ...props }) {
74
75
  function BreadcrumbEllipsis({ className, ...props }) {
75
76
  return /* @__PURE__ */ jsxs("span", {
76
77
  "aria-hidden": "true",
77
- className: cn("flex size-4 items-center justify-center", className),
78
+ className: cn("flex size-5 items-center justify-center [&>svg]:size-4", className),
78
79
  "data-slot": "breadcrumb-ellipsis",
79
80
  role: "presentation",
80
81
  ...props,
81
- children: [/* @__PURE__ */ jsx(EllipsisIcon, { className: "size-4" }), /* @__PURE__ */ jsx("span", {
82
+ children: [/* @__PURE__ */ jsx(MoreHorizontalIcon, {}), /* @__PURE__ */ jsx("span", {
82
83
  className: "sr-only",
83
84
  children: "More"
84
85
  })]
@@ -1,5 +1,5 @@
1
- import { ButtonGroupVariants } from "../variants/button-group.mjs";
2
1
  import { Separator } from "./separator.mjs";
2
+ import { ButtonGroupVariants } from "../variants/button-group.mjs";
3
3
  import { ComponentProps, JSX } from "react";
4
4
 
5
5
  //#region src/components/button-group.d.ts
@@ -1,8 +1,7 @@
1
- "use client";
2
1
  import { cn } from "../lib/utils.mjs";
2
+ import { Separator as Separator$1 } from "./separator.mjs";
3
3
  import { buttonGroupVariants } from "../variants/button-group.mjs";
4
- import { Separator } from "./separator.mjs";
5
- import { Slot } from "@radix-ui/react-slot";
4
+ import { Slot } from "radix-ui";
6
5
  import { jsx } from "react/jsx-runtime";
7
6
  //#region src/components/button-group.tsx
8
7
  /**
@@ -24,8 +23,8 @@ function ButtonGroup({ className, orientation, ...props }) {
24
23
  * @since 0.3.16-canary.0
25
24
  */
26
25
  function ButtonGroupText({ asChild = false, className, ...props }) {
27
- return /* @__PURE__ */ jsx(asChild ? Slot : "div", {
28
- className: cn("flex items-center gap-2", "px-4", "rounded-lg border", "bg-muted shadow-xs", "text-sm font-medium", "[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", className),
26
+ return /* @__PURE__ */ jsx(asChild ? Slot.Root : "div", {
27
+ className: cn("flex items-center gap-2 rounded-md border bg-muted px-2.5 text-sm font-medium shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", className),
29
28
  ...props
30
29
  });
31
30
  }
@@ -33,8 +32,8 @@ function ButtonGroupText({ asChild = false, className, ...props }) {
33
32
  * @since 0.3.16-canary.0
34
33
  */
35
34
  function ButtonGroupSeparator({ className, orientation = "vertical", ...props }) {
36
- return /* @__PURE__ */ jsx(Separator, {
37
- className: cn("relative self-stretch", "bg-input", "data-vertical:h-auto", "!m-0", className),
35
+ return /* @__PURE__ */ jsx(Separator$1, {
36
+ className: cn("relative self-stretch bg-input data-horizontal:mx-px data-horizontal:w-auto data-vertical:my-px data-vertical:h-auto", className),
38
37
  "data-slot": "button-group-separator",
39
38
  orientation,
40
39
  ...props
@@ -14,7 +14,6 @@ type ButtonProps = ComponentProps<"button"> & ButtonVariants & {
14
14
  */
15
15
  declare function Button({
16
16
  asChild,
17
- children,
18
17
  className,
19
18
  size,
20
19
  type,
@@ -1,22 +1,22 @@
1
1
  import { buttonVariants } from "../variants/button.mjs";
2
- import { Slot } from "@radix-ui/react-slot";
2
+ import { Slot } from "radix-ui";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  //#region src/components/button.tsx
5
5
  /**
6
6
  * @since 0.3.16-canary.0
7
7
  */
8
- function Button({ asChild = false, children, className, size, type = "button", variant, ...props }) {
9
- const Comp = asChild ? Slot : "button";
8
+ function Button({ asChild = false, className, size, type = "button", variant, ...props }) {
9
+ const Comp = asChild ? Slot.Root : "button";
10
10
  if (asChild) return /* @__PURE__ */ jsx(Comp, {
11
11
  className: buttonVariants({
12
12
  className,
13
13
  size,
14
14
  variant
15
15
  }),
16
+ "data-size": size,
16
17
  "data-slot": "button",
17
18
  "data-variant": variant,
18
- ...props,
19
- children
19
+ ...props
20
20
  });
21
21
  return /* @__PURE__ */ jsx("button", {
22
22
  className: buttonVariants({
@@ -24,11 +24,11 @@ function Button({ asChild = false, children, className, size, type = "button", v
24
24
  size,
25
25
  variant
26
26
  }),
27
+ "data-size": size,
27
28
  "data-slot": "button",
28
29
  "data-variant": variant,
29
30
  type,
30
- ...props,
31
- children
31
+ ...props
32
32
  });
33
33
  }
34
34
  //#endregion
@@ -1,6 +1,6 @@
1
1
  import { Button } from "./button.mjs";
2
+ import { DayButton, DayPicker, Locale } from "@daypicker/react";
2
3
  import { ComponentProps, JSX } from "react";
3
- import { DayButton, DayPicker } from "react-day-picker";
4
4
 
5
5
  //#region src/components/calendar.d.ts
6
6
  /**
@@ -19,19 +19,23 @@ declare function Calendar({
19
19
  classNames,
20
20
  components,
21
21
  formatters,
22
+ locale,
22
23
  showOutsideDays,
23
24
  ...props
24
25
  }: CalendarProps): JSX.Element;
25
26
  /**
26
27
  * @since 0.3.16-canary.0
27
28
  */
28
- type CalendarDayButtonProps = ComponentProps<typeof DayButton>;
29
+ type CalendarDayButtonProps = ComponentProps<typeof DayButton> & {
30
+ locale?: Partial<Locale>;
31
+ };
29
32
  /**
30
33
  * @since 0.3.16-canary.0
31
34
  */
32
35
  declare function CalendarDayButton({
33
36
  className,
34
37
  day,
38
+ locale,
35
39
  modifiers,
36
40
  ...props
37
41
  }: CalendarDayButtonProps): JSX.Element;
@@ -1,76 +1,73 @@
1
- "use client";
2
1
  import { cn } from "../lib/utils.mjs";
3
2
  import { buttonVariants } from "../variants/button.mjs";
4
3
  import { Button } from "./button.mjs";
5
4
  import { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from "lucide-react";
6
5
  import { jsx } from "react/jsx-runtime";
6
+ import { DayPicker, getDefaultClassNames } from "@daypicker/react";
7
7
  import { useEffect, useRef } from "react";
8
- import { DayPicker, getDefaultClassNames } from "react-day-picker";
9
8
  //#region src/components/calendar.tsx
10
9
  /**
11
10
  * @since 0.3.16-canary.0
12
11
  */
13
- function Calendar({ buttonVariant = "ghost", captionLayout = "label", className, classNames, components, formatters, showOutsideDays = true, ...props }) {
12
+ function Calendar({ buttonVariant = "ghost", captionLayout = "label", className, classNames, components, formatters, locale, showOutsideDays = true, ...props }) {
14
13
  const defaultClassNames = getDefaultClassNames();
15
14
  return /* @__PURE__ */ jsx(DayPicker, {
16
15
  captionLayout,
17
- className: cn("group/calendar", "p-3", "bg-background", "in-data-[slot=card-content]:bg-transparent", "in-data-[slot=popover-content]:bg-transparent", "rtl:**:[.rdp-button_next>svg]:rotate-180", "rtl:**:[.rdp-button_previous>svg]:rotate-180", "[--cell-size:--spacing(8)]", className),
16
+ className: cn("group/calendar bg-background p-3 [--cell-radius:var(--radius-md)] [--cell-size:--spacing(8)] in-data-[slot=card-content]:bg-transparent in-data-[slot=popover-content]:bg-transparent", String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`, String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`, className),
18
17
  classNames: {
19
- button_next: buttonVariants({
20
- variant: buttonVariant,
21
- className: ["size-(--cell-size) p-0 select-none aria-disabled:opacity-50", defaultClassNames.button_next]
22
- }),
23
- button_previous: buttonVariants({
24
- variant: buttonVariant,
25
- className: ["size-(--cell-size) p-0 select-none aria-disabled:opacity-50", defaultClassNames.button_previous]
26
- }),
27
- caption_label: cn("font-medium", "select-none", captionLayout === "label" ? "text-sm" : "flex h-8 items-center gap-1 rounded-md pr-1 pl-2 text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground", defaultClassNames.caption_label),
28
- day: cn("group/day relative", "aspect-square h-full w-full p-0 text-center", "select-none", "[&:last-child[data-selected=true]_button]:rounded-r-md", props.showWeekNumber ? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-md" : "[&:first-child[data-selected=true]_button]:rounded-l-md", defaultClassNames.day),
29
- disabled: cn("opacity-50", "text-muted-foreground", defaultClassNames.disabled),
30
- dropdown: cn("absolute inset-0", "bg-popover", "opacity-0", defaultClassNames.dropdown),
31
- dropdown_root: cn("relative", "rounded-md border border-input shadow-xs", "has-focus:border-ring has-focus:ring-3 has-focus:ring-ring/50", defaultClassNames.dropdown_root),
32
- dropdowns: cn("flex h-(--cell-size) w-full items-center justify-center gap-1.5", "text-sm font-medium", defaultClassNames.dropdowns),
33
- hidden: cn("invisible", defaultClassNames.hidden),
34
- month: cn("flex w-full flex-col gap-4", defaultClassNames.month),
35
- month_caption: cn("flex h-(--cell-size) w-full items-center justify-center", "px-(--cell-size)", defaultClassNames.month_caption),
36
- months: cn("relative flex flex-col gap-4", "md:flex-row", defaultClassNames.months),
37
- nav: cn("absolute flex w-full items-center justify-between gap-1", "inset-x-0 top-0", defaultClassNames.nav),
38
- outside: cn("text-muted-foreground", "aria-selected:text-muted-foreground", defaultClassNames.outside),
39
- range_end: cn("rounded-r-md", "bg-accent", defaultClassNames.range_end),
40
- range_middle: cn("rounded-none", defaultClassNames.range_middle),
41
- range_start: cn("rounded-l-md", "bg-accent", defaultClassNames.range_start),
42
18
  root: cn("w-fit", defaultClassNames.root),
43
- month_grid: "w-full border-collapse",
44
- today: cn("rounded-md", "bg-accent text-accent-foreground", "data-selected:rounded-none", defaultClassNames.today),
45
- week: cn("flex w-full", "mt-2", defaultClassNames.week),
46
- week_number: cn("text-[0.8rem] text-muted-foreground", "select-none", defaultClassNames.week_number),
47
- week_number_header: cn("w-(--cell-size)", "select-none", defaultClassNames.week_number_header),
48
- weekday: cn("flex-1", "rounded-md", "text-[0.8rem] font-normal text-muted-foreground", "select-none", defaultClassNames.weekday),
19
+ months: cn("relative flex flex-col gap-4 md:flex-row", defaultClassNames.months),
20
+ month: cn("flex w-full flex-col gap-4", defaultClassNames.month),
21
+ nav: cn("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1", defaultClassNames.nav),
22
+ button_previous: cn(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) p-0 select-none aria-disabled:opacity-50", defaultClassNames.button_previous),
23
+ button_next: cn(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) p-0 select-none aria-disabled:opacity-50", defaultClassNames.button_next),
24
+ month_caption: cn("flex h-(--cell-size) w-full items-center justify-center px-(--cell-size)", defaultClassNames.month_caption),
25
+ dropdowns: cn("flex h-(--cell-size) w-full items-center justify-center gap-1.5 text-sm font-medium", defaultClassNames.dropdowns),
26
+ dropdown_root: cn("relative rounded-(--cell-radius) border border-input shadow-xs has-focus:border-ring has-focus:ring-3 has-focus:ring-ring/50", defaultClassNames.dropdown_root),
27
+ dropdown: cn("absolute inset-0 bg-popover opacity-0", defaultClassNames.dropdown),
28
+ caption_label: cn("font-medium select-none", captionLayout === "label" ? "text-sm" : "flex h-8 items-center gap-1 rounded-(--cell-radius) pr-1 pl-2 text-sm [&>svg]:size-3.5 [&>svg]:text-muted-foreground", defaultClassNames.caption_label),
29
+ month_grid: cn("w-full border-collapse", defaultClassNames.month_grid),
49
30
  weekdays: cn("flex", defaultClassNames.weekdays),
31
+ weekday: cn("flex-1 rounded-(--cell-radius) text-[0.8rem] font-normal text-muted-foreground select-none", defaultClassNames.weekday),
32
+ week: cn("mt-2 flex w-full", defaultClassNames.week),
33
+ week_number_header: cn("w-(--cell-size) select-none", defaultClassNames.week_number_header),
34
+ week_number: cn("text-[0.8rem] text-muted-foreground select-none", defaultClassNames.week_number),
35
+ day: cn("group/day relative aspect-square h-full w-full rounded-(--cell-radius) p-0 text-center select-none [&:last-child[data-selected=true]_button]:rounded-r-(--cell-radius)", props.showWeekNumber ? "[&:nth-child(2)[data-selected=true]_button]:rounded-l-(--cell-radius)" : "[&:first-child[data-selected=true]_button]:rounded-l-(--cell-radius)", defaultClassNames.day),
36
+ range_start: cn("relative isolate z-0 rounded-l-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:right-0 after:w-4 after:bg-muted", defaultClassNames.range_start),
37
+ range_middle: cn("rounded-none", defaultClassNames.range_middle),
38
+ range_end: cn("relative isolate z-0 rounded-r-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:left-0 after:w-4 after:bg-muted", defaultClassNames.range_end),
39
+ today: cn("rounded-(--cell-radius) bg-muted text-foreground data-[selected=true]:rounded-none", defaultClassNames.today),
40
+ outside: cn("text-muted-foreground aria-selected:text-muted-foreground", defaultClassNames.outside),
41
+ disabled: cn("text-muted-foreground opacity-50", defaultClassNames.disabled),
42
+ hidden: cn("invisible", defaultClassNames.hidden),
50
43
  ...classNames
51
44
  },
52
45
  components: {
53
46
  Chevron: CalendarChevron,
54
- DayButton: CalendarDayButton,
47
+ DayButton: (dayButtonProps) => /* @__PURE__ */ jsx(CalendarDayButton, {
48
+ locale,
49
+ ...dayButtonProps
50
+ }),
55
51
  Root: CalendarRoot,
56
52
  WeekNumber: CalendarWeekNumber,
57
53
  ...components
58
54
  },
59
55
  formatters: {
60
- formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" }),
56
+ formatMonthDropdown: (date) => date.toLocaleString(locale?.code, { month: "short" }),
61
57
  ...formatters
62
58
  },
59
+ locale,
63
60
  showOutsideDays,
64
61
  ...props
65
62
  });
66
63
  }
67
64
  function CalendarChevron({ className, orientation, ...props }) {
68
65
  if (orientation === "left") return /* @__PURE__ */ jsx(ChevronLeftIcon, {
69
- className: cn("size-4", className),
66
+ className: cn("size-4 rtl:rotate-180", className),
70
67
  ...props
71
68
  });
72
69
  if (orientation === "right") return /* @__PURE__ */ jsx(ChevronRightIcon, {
73
- className: cn("size-4", className),
70
+ className: cn("size-4 rtl:rotate-180", className),
74
71
  ...props
75
72
  });
76
73
  return /* @__PURE__ */ jsx(ChevronDownIcon, {
@@ -78,10 +75,9 @@ function CalendarChevron({ className, orientation, ...props }) {
78
75
  ...props
79
76
  });
80
77
  }
81
- function CalendarRoot({ className, rootRef, ...props }) {
78
+ function CalendarRoot({ rootRef, ...props }) {
82
79
  return /* @__PURE__ */ jsx("div", {
83
80
  ref: rootRef,
84
- className: cn(className),
85
81
  "data-slot": "calendar",
86
82
  ...props
87
83
  });
@@ -90,7 +86,7 @@ function CalendarWeekNumber({ children, ...props }) {
90
86
  return /* @__PURE__ */ jsx("td", {
91
87
  ...props,
92
88
  children: /* @__PURE__ */ jsx("div", {
93
- className: cn("flex size-(--cell-size) items-center justify-center", "text-center"),
89
+ className: "flex size-(--cell-size) items-center justify-center text-center",
94
90
  children
95
91
  })
96
92
  });
@@ -98,7 +94,7 @@ function CalendarWeekNumber({ children, ...props }) {
98
94
  /**
99
95
  * @since 0.3.16-canary.0
100
96
  */
101
- function CalendarDayButton({ className, day, modifiers, ...props }) {
97
+ function CalendarDayButton({ className, day, locale, modifiers, ...props }) {
102
98
  const defaultClassNames = getDefaultClassNames();
103
99
  const ref = useRef(null);
104
100
  useEffect(() => {
@@ -106,8 +102,8 @@ function CalendarDayButton({ className, day, modifiers, ...props }) {
106
102
  }, [modifiers.focused]);
107
103
  return /* @__PURE__ */ jsx(Button, {
108
104
  ref,
109
- className: cn("flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal", "group-data-focused/day:relative group-data-focused/day:z-10 group-data-focused/day:border-ring group-data-focused/day:ring-3 group-data-focused/day:ring-ring/50", "data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground", "data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground", "data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground", "data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground", "dark:hover:text-accent-foreground", "[&>span]:text-xs [&>span]:opacity-70", defaultClassNames.day, className),
110
- "data-day": day.date.toLocaleDateString(),
105
+ className: cn("relative isolate z-10 flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 border-0 leading-none font-normal group-data-focused/day:relative group-data-focused/day:z-10 group-data-focused/day:border-ring group-data-focused/day:ring-3 group-data-focused/day:ring-ring/50 data-[range-end=true]:rounded-(--cell-radius) data-[range-end=true]:rounded-r-(--cell-radius) data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-middle=true]:rounded-none data-[range-middle=true]:bg-muted data-[range-middle=true]:text-foreground data-[range-start=true]:rounded-(--cell-radius) data-[range-start=true]:rounded-l-(--cell-radius) data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground dark:hover:text-foreground [&>span]:text-xs [&>span]:opacity-70", defaultClassNames.day, className),
106
+ "data-day": day.date.toLocaleDateString(locale?.code),
111
107
  "data-range-end": modifiers.range_end,
112
108
  "data-range-middle": modifiers.range_middle,
113
109
  "data-range-start": modifiers.range_start,