@codefast/ui 0.3.16-canary.3 → 0.4.0-canary.5

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 +112 -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 +25 -12
  26. package/dist/components/chart.d.mts +8 -3
  27. package/dist/components/chart.mjs +21 -15
  28. package/dist/components/checkbox-cards.mjs +6 -6
  29. package/dist/components/checkbox-group.mjs +6 -7
  30. package/dist/components/checkbox.d.mts +2 -2
  31. package/dist/components/checkbox.mjs +8 -9
  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 +40 -58
  174. package/src/components/chart.tsx +41 -92
  175. package/src/components/checkbox-cards.tsx +11 -30
  176. package/src/components/checkbox-group.tsx +6 -28
  177. package/src/components/checkbox.tsx +6 -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 +37 -60
  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 +74 -0
  226. package/src/css/foundation/motion.css +69 -0
  227. package/src/css/foundation/source.css +10 -0
  228. package/src/css/foundation/tokens.css +107 -0
  229. package/src/css/foundation/variants.css +121 -0
  230. package/src/css/preset.css +13 -214
  231. package/src/css/style.css +9 -1
  232. package/src/css/{amber.css → themes/amber.css} +29 -0
  233. package/src/css/{blue.css → themes/blue.css} +29 -0
  234. package/src/css/{cyan.css → themes/cyan.css} +29 -0
  235. package/src/css/{emerald.css → themes/emerald.css} +29 -0
  236. package/src/css/{fuchsia.css → themes/fuchsia.css} +29 -0
  237. package/src/css/{gray.css → themes/gray.css} +29 -0
  238. package/src/css/{green.css → themes/green.css} +29 -0
  239. package/src/css/{indigo.css → themes/indigo.css} +29 -0
  240. package/src/css/{lime.css → themes/lime.css} +29 -0
  241. package/src/css/{neutral.css → themes/neutral.css} +29 -0
  242. package/src/css/{orange.css → themes/orange.css} +29 -0
  243. package/src/css/{pink.css → themes/pink.css} +29 -0
  244. package/src/css/{purple.css → themes/purple.css} +29 -0
  245. package/src/css/{red.css → themes/red.css} +29 -0
  246. package/src/css/{rose.css → themes/rose.css} +29 -0
  247. package/src/css/{sky.css → themes/sky.css} +29 -0
  248. package/src/css/{slate.css → themes/slate.css} +29 -0
  249. package/src/css/{stone.css → themes/stone.css} +29 -0
  250. package/src/css/{teal.css → themes/teal.css} +29 -0
  251. package/src/css/{violet.css → themes/violet.css} +29 -0
  252. package/src/css/{yellow.css → themes/yellow.css} +29 -0
  253. package/src/css/{zinc.css → themes/zinc.css} +29 -0
  254. package/src/hooks/use-animated-value.ts +1 -7
  255. package/src/hooks/use-copy-to-clipboard.ts +1 -6
  256. package/src/hooks/use-is-mobile.ts +0 -2
  257. package/src/hooks/use-media-query.ts +0 -2
  258. package/src/hooks/use-mutation-observer.ts +0 -3
  259. package/src/hooks/use-pagination.ts +0 -2
  260. package/src/index.ts +39 -80
  261. package/src/primitives/checkbox-group.tsx +25 -39
  262. package/src/primitives/input-number.tsx +17 -63
  263. package/src/primitives/input.tsx +8 -24
  264. package/src/primitives/progress-circle.tsx +13 -43
  265. package/src/variants/alert.ts +3 -14
  266. package/src/variants/badge.ts +8 -35
  267. package/src/variants/button-group.ts +5 -18
  268. package/src/variants/button.ts +21 -58
  269. package/src/variants/empty.ts +2 -11
  270. package/src/variants/field.ts +6 -19
  271. package/src/variants/input-group.ts +12 -64
  272. package/src/variants/input-number.ts +65 -0
  273. package/src/variants/item.ts +10 -32
  274. package/src/variants/navigation-menu.ts +1 -8
  275. package/src/variants/progress-circle.ts +1 -2
  276. package/src/variants/scroll-area.ts +3 -9
  277. package/src/variants/separator.ts +6 -7
  278. package/src/variants/sheet.ts +6 -39
  279. package/src/variants/sidebar.ts +7 -27
  280. package/src/variants/tabs.ts +34 -0
  281. package/src/variants/toggle.ts +9 -28
@@ -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) ps-2 pe-1 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-e-(--cell-radius)", props.showWeekNumber ? "[&:nth-child(2)[data-selected=true]_button]:rounded-s-(--cell-radius)" : "[&:first-child[data-selected=true]_button]:rounded-s-(--cell-radius)", defaultClassNames.day),
36
+ range_start: cn("relative isolate z-0 rounded-s-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:end-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-e-(--cell-radius) bg-muted after:absolute after:inset-y-0 after:start-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-e-(--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-s-(--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,
@@ -4,12 +4,15 @@ import { ComponentProps, JSX } from "react";
4
4
  /**
5
5
  * @since 0.3.16-canary.0
6
6
  */
7
- type CardProps = ComponentProps<"div">;
7
+ type CardProps = ComponentProps<"div"> & {
8
+ size?: "default" | "sm";
9
+ };
8
10
  /**
9
11
  * @since 0.3.16-canary.0
10
12
  */
11
13
  declare function Card({
12
14
  className,
15
+ size,
13
16
  ...props
14
17
  }: CardProps): JSX.Element;
15
18
  /**
@@ -31,7 +34,6 @@ type CardTitleProps = ComponentProps<"div">;
31
34
  * @since 0.3.16-canary.0
32
35
  */
33
36
  declare function CardTitle({
34
- children,
35
37
  className,
36
38
  ...props
37
39
  }: CardTitleProps): JSX.Element;
@@ -4,9 +4,10 @@ import { jsx } from "react/jsx-runtime";
4
4
  /**
5
5
  * @since 0.3.16-canary.0
6
6
  */
7
- function Card({ className, ...props }) {
7
+ function Card({ className, size = "default", ...props }) {
8
8
  return /* @__PURE__ */ jsx("div", {
9
- className: cn("flex flex-col gap-6 overflow-auto py-6", "rounded-xl border", "bg-card text-card-foreground shadow-sm", className),
9
+ className: cn("group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground shadow-xs ring-1 ring-foreground/10 [--card-spacing:--spacing(6)] has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(4)] *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl", className),
10
+ "data-size": size,
10
11
  "data-slot": "card",
11
12
  ...props
12
13
  });
@@ -16,7 +17,7 @@ function Card({ className, ...props }) {
16
17
  */
17
18
  function CardHeader({ className, ...props }) {
18
19
  return /* @__PURE__ */ jsx("div", {
19
- className: cn("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5", "px-6", "has-[data-slot=card-action]:grid-cols-[1fr_auto]", "[.border-b]:pb-6", className),
20
+ className: cn("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)", className),
20
21
  "data-slot": "card-header",
21
22
  ...props
22
23
  });
@@ -24,12 +25,11 @@ function CardHeader({ className, ...props }) {
24
25
  /**
25
26
  * @since 0.3.16-canary.0
26
27
  */
27
- function CardTitle({ children, className, ...props }) {
28
+ function CardTitle({ className, ...props }) {
28
29
  return /* @__PURE__ */ jsx("div", {
29
- className: cn("leading-none font-semibold", className),
30
+ className: cn("font-heading text-base leading-normal font-medium group-data-[size=sm]/card:text-sm", className),
30
31
  "data-slot": "card-title",
31
- ...props,
32
- children
32
+ ...props
33
33
  });
34
34
  }
35
35
  /**
@@ -47,7 +47,7 @@ function CardDescription({ className, ...props }) {
47
47
  */
48
48
  function CardContent({ className, ...props }) {
49
49
  return /* @__PURE__ */ jsx("div", {
50
- className: cn("px-6", className),
50
+ className: cn("px-(--card-spacing)", className),
51
51
  "data-slot": "card-content",
52
52
  ...props
53
53
  });
@@ -57,7 +57,7 @@ function CardContent({ className, ...props }) {
57
57
  */
58
58
  function CardFooter({ className, ...props }) {
59
59
  return /* @__PURE__ */ jsx("div", {
60
- className: cn("flex items-center", "px-6", "[.border-t]:pt-6", className),
60
+ className: cn("flex items-center rounded-b-xl px-(--card-spacing) [.border-t]:pt-(--card-spacing)", className),
61
61
  "data-slot": "card-footer",
62
62
  ...props
63
63
  });
@@ -1,13 +1,13 @@
1
1
  import { Button } from "./button.mjs";
2
2
  import { ComponentProps, JSX } from "react";
3
- import { Scope } from "@radix-ui/react-context";
4
3
  import useEmblaCarousel, { UseEmblaCarouselType } from "embla-carousel-react";
4
+ import { Context } from "radix-ui/internal";
5
5
 
6
6
  //#region src/components/carousel.d.ts
7
7
  type ScopedProps<P> = P & {
8
- __scopeCarousel?: Scope;
8
+ __scopeCarousel?: Context.Scope;
9
9
  };
10
- declare const createCarouselScope: import("@radix-ui/react-context").CreateScope;
10
+ declare const createCarouselScope: Context.CreateScope;
11
11
  /**
12
12
  * @since 0.3.16-canary.0
13
13
  */
@@ -43,11 +43,23 @@ declare function Carousel({
43
43
  */
44
44
  interface CarouselContentProps extends ComponentProps<"div"> {
45
45
  classNames?: {
46
- content?: string;
46
+ /** Class applied to the flex track that holds the slides. */content?: string; /** Class applied to the scroll viewport (the `overflow-hidden` element). */
47
47
  wrapper?: string;
48
48
  };
49
49
  }
50
50
  /**
51
+ * The scroll viewport requires `overflow-hidden` (Embla hides off-screen slides
52
+ * with it), so any ring/shadow on slide content that sits OUTSIDE the slide's
53
+ * border-box is clipped where the slide meets the viewport edge. This is
54
+ * inherent to every Embla-based carousel — the active slide is flush with both
55
+ * scroll-axis edges, so left/right rings (horizontal) cannot show without
56
+ * revealing the neighbouring slide.
57
+ *
58
+ * To give content shadows/rings breathing room on the CROSS axis (top/bottom
59
+ * for horizontal carousels), add a negative-margin + matching padding via
60
+ * `classNames.wrapper`, e.g. `classNames={{ wrapper: "-my-2 py-2" }}`. This
61
+ * shifts no layout but lets the clip happen `n`px further out.
62
+ *
51
63
  * @since 0.3.16-canary.0
52
64
  */
53
65
  declare function CarouselContent({
@@ -1,14 +1,13 @@
1
- "use client";
2
1
  import { cn } from "../lib/utils.mjs";
3
2
  import { Button } from "./button.mjs";
4
- import { ArrowLeftIcon, ArrowRightIcon } from "lucide-react";
3
+ import { ChevronLeftIcon, ChevronRightIcon } from "lucide-react";
5
4
  import { jsx, jsxs } from "react/jsx-runtime";
6
5
  import { useCallback, useEffect, useState } from "react";
7
- import { createContextScope } from "@radix-ui/react-context";
8
6
  import useEmblaCarousel from "embla-carousel-react";
7
+ import { Context } from "radix-ui/internal";
9
8
  //#region src/components/carousel.tsx
10
9
  const CAROUSEL_NAME = "Carousel";
11
- const [createCarouselContext, createCarouselScope] = createContextScope(CAROUSEL_NAME);
10
+ const [createCarouselContext, createCarouselScope] = Context.createContextScope(CAROUSEL_NAME);
12
11
  const [CarouselContextProvider, useCarouselContext] = createCarouselContext(CAROUSEL_NAME);
13
12
  /**
14
13
  * @since 0.3.16-canary.0
@@ -66,8 +65,10 @@ function Carousel({ __scopeCarousel, children, className, opts, orientation, plu
66
65
  scrollNext,
67
66
  scrollPrev: scrollPrevious,
68
67
  children: /* @__PURE__ */ jsx("div", {
68
+ "aria-roledescription": "carousel",
69
69
  className: cn("relative", className),
70
70
  "data-slot": "carousel",
71
+ role: "region",
71
72
  onKeyDownCapture: handleKeyDown,
72
73
  ...props,
73
74
  children
@@ -76,6 +77,18 @@ function Carousel({ __scopeCarousel, children, className, opts, orientation, plu
76
77
  }
77
78
  const CAROUSEL_CONTENT_NAME = "CarouselContent";
78
79
  /**
80
+ * The scroll viewport requires `overflow-hidden` (Embla hides off-screen slides
81
+ * with it), so any ring/shadow on slide content that sits OUTSIDE the slide's
82
+ * border-box is clipped where the slide meets the viewport edge. This is
83
+ * inherent to every Embla-based carousel — the active slide is flush with both
84
+ * scroll-axis edges, so left/right rings (horizontal) cannot show without
85
+ * revealing the neighbouring slide.
86
+ *
87
+ * To give content shadows/rings breathing room on the CROSS axis (top/bottom
88
+ * for horizontal carousels), add a negative-margin + matching padding via
89
+ * `classNames.wrapper`, e.g. `classNames={{ wrapper: "-my-2 py-2" }}`. This
90
+ * shifts no layout but lets the clip happen `n`px further out.
91
+ *
79
92
  * @since 0.3.16-canary.0
80
93
  */
81
94
  function CarouselContent({ __scopeCarousel, className, classNames, ...props }) {
@@ -85,7 +98,7 @@ function CarouselContent({ __scopeCarousel, className, classNames, ...props }) {
85
98
  className: cn("overflow-hidden", classNames?.wrapper),
86
99
  "data-slot": "carousel-content",
87
100
  children: /* @__PURE__ */ jsx("div", {
88
- className: cn("flex", orientation === "horizontal" ? "-ml-4" : "-mt-4 flex-col", classNames?.content, className),
101
+ className: cn("flex", orientation === "horizontal" ? "-ms-4" : "-mt-4 h-full flex-col", classNames?.content, className),
89
102
  ...props
90
103
  })
91
104
  });
@@ -98,7 +111,7 @@ function CarouselItem({ __scopeCarousel, className, ...props }) {
98
111
  const { orientation } = useCarouselContext(CAROUSEL_ITEM_NAME, __scopeCarousel);
99
112
  return /* @__PURE__ */ jsx("div", {
100
113
  "aria-roledescription": "slide",
101
- className: cn("min-w-0 shrink-0 grow-0 basis-full", orientation === "horizontal" ? "pl-4" : "pt-4", className),
114
+ className: cn("min-w-0 shrink-0 grow-0 basis-full", orientation === "horizontal" ? "ps-4" : "pt-4", className),
102
115
  "data-slot": "carousel-item",
103
116
  role: "group",
104
117
  ...props
@@ -108,18 +121,18 @@ const CAROUSEL_PREVIOUS_NAME = "CarouselPrevious";
108
121
  /**
109
122
  * @since 0.3.16-canary.0
110
123
  */
111
- function CarouselPrevious({ __scopeCarousel, className, size = "icon", variant = "outline", ...props }) {
124
+ function CarouselPrevious({ __scopeCarousel, className, size = "icon-sm", variant = "outline", ...props }) {
112
125
  const { canScrollPrev, orientation, scrollPrev } = useCarouselContext(CAROUSEL_PREVIOUS_NAME, __scopeCarousel);
113
126
  return /* @__PURE__ */ jsxs(Button, {
114
127
  "aria-label": "Previous slide",
115
- className: cn("absolute", "size-8", "shadow-none", orientation === "horizontal" ? "top-1/2 -left-12 -translate-y-1/2" : "-top-12 left-1/2 -translate-x-1/2 rotate-90", className),
128
+ className: cn("absolute touch-manipulation rounded-full", orientation === "horizontal" ? "-start-12 top-1/2 -translate-y-1/2 active:not-aria-[haspopup]:translate-y-[calc(-50%+1px)]" : "start-1/2 -top-12 -translate-x-1/2 rotate-90 rtl:translate-x-1/2", className),
116
129
  "data-slot": "carousel-previous",
117
130
  disabled: !canScrollPrev,
118
131
  size,
119
132
  variant,
120
133
  onClick: scrollPrev,
121
134
  ...props,
122
- children: [/* @__PURE__ */ jsx(ArrowLeftIcon, {}), /* @__PURE__ */ jsx("span", {
135
+ children: [/* @__PURE__ */ jsx(ChevronLeftIcon, { className: "rtl:rotate-180" }), /* @__PURE__ */ jsx("span", {
123
136
  className: "sr-only",
124
137
  children: "Previous slide"
125
138
  })]
@@ -129,18 +142,18 @@ const CAROUSEL_NEXT_NAME = "CarouselNext";
129
142
  /**
130
143
  * @since 0.3.16-canary.0
131
144
  */
132
- function CarouselNext({ __scopeCarousel, className, size = "icon", variant = "outline", ...props }) {
145
+ function CarouselNext({ __scopeCarousel, className, size = "icon-sm", variant = "outline", ...props }) {
133
146
  const { canScrollNext, orientation, scrollNext } = useCarouselContext(CAROUSEL_NEXT_NAME, __scopeCarousel);
134
147
  return /* @__PURE__ */ jsxs(Button, {
135
148
  "aria-label": "Next slide",
136
- className: cn("absolute", "size-8", "shadow-none", orientation === "horizontal" ? "top-1/2 -right-12 -translate-y-1/2" : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90", className),
149
+ className: cn("absolute touch-manipulation rounded-full", orientation === "horizontal" ? "-end-12 top-1/2 -translate-y-1/2 active:not-aria-[haspopup]:translate-y-[calc(-50%+1px)]" : "start-1/2 -bottom-12 -translate-x-1/2 rotate-90 rtl:translate-x-1/2", className),
137
150
  "data-slot": "carousel-next",
138
151
  disabled: !canScrollNext,
139
152
  size,
140
153
  variant,
141
154
  onClick: scrollNext,
142
155
  ...props,
143
- children: [/* @__PURE__ */ jsx(ArrowRightIcon, {}), /* @__PURE__ */ jsx("span", {
156
+ children: [/* @__PURE__ */ jsx(ChevronRightIcon, { className: "rtl:rotate-180" }), /* @__PURE__ */ jsx("span", {
144
157
  className: "sr-only",
145
158
  children: "Next slide"
146
159
  })]
@@ -1,5 +1,5 @@
1
1
  import { ComponentProps, ComponentType, JSX, ReactNode } from "react";
2
- import { Scope } from "@radix-ui/react-context";
2
+ import { Context } from "radix-ui/internal";
3
3
  import * as RechartsPrimitive from "recharts";
4
4
  import { TooltipContentProps, TooltipProps } from "recharts";
5
5
  import { NameType, Payload, ValueType } from "recharts/types/component/DefaultTooltipContent";
@@ -25,15 +25,19 @@ type ChartConfig = Record<string, {
25
25
  theme?: never;
26
26
  })>;
27
27
  type ScopedProps<P> = P & {
28
- __scopeChart?: Scope;
28
+ __scopeChart?: Context.Scope;
29
29
  };
30
- declare const createChartScope: import("@radix-ui/react-context").CreateScope;
30
+ declare const createChartScope: Context.CreateScope;
31
31
  /**
32
32
  * @since 0.3.16-canary.0
33
33
  */
34
34
  interface ChartContainerProps extends ComponentProps<"div"> {
35
35
  children: ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>["children"];
36
36
  config: ChartConfig;
37
+ initialDimension?: {
38
+ height: number;
39
+ width: number;
40
+ };
37
41
  }
38
42
  /**
39
43
  * @since 0.3.16-canary.0
@@ -44,6 +48,7 @@ declare function ChartContainer({
44
48
  className,
45
49
  config,
46
50
  id,
51
+ initialDimension,
47
52
  ...props
48
53
  }: ScopedProps<ChartContainerProps>): JSX.Element;
49
54
  /**
@@ -1,35 +1,41 @@
1
- "use client";
2
1
  import { cn } from "../lib/utils.mjs";
3
2
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
3
  import { useId, useMemo } from "react";
5
- import { createContextScope } from "@radix-ui/react-context";
4
+ import { Context } from "radix-ui/internal";
6
5
  import * as RechartsPrimitive from "recharts";
7
6
  //#region src/components/chart.tsx
8
7
  const THEMES = {
9
8
  dark: ".dark",
10
9
  light: ""
11
10
  };
11
+ const INITIAL_DIMENSION = {
12
+ height: 200,
13
+ width: 320
14
+ };
12
15
  const CHART_PROVIDER_NAME = "ChartProvider";
13
- const [createChartContext, createChartScope] = createContextScope(CHART_PROVIDER_NAME);
16
+ const [createChartContext, createChartScope] = Context.createContextScope(CHART_PROVIDER_NAME);
14
17
  const [ChartContextProvider, useChartContext] = createChartContext(CHART_PROVIDER_NAME);
15
18
  /**
16
19
  * @since 0.3.16-canary.0
17
20
  */
18
- function ChartContainer({ __scopeChart, children, className, config, id, ...props }) {
21
+ function ChartContainer({ __scopeChart, children, className, config, id, initialDimension = INITIAL_DIMENSION, ...props }) {
19
22
  const uniqueId = useId();
20
- const chartId = `chart-${id ?? uniqueId}`;
23
+ const chartId = `chart-${id ?? uniqueId.replace(/:/g, "")}`;
21
24
  return /* @__PURE__ */ jsx(ChartContextProvider, {
22
25
  config,
23
26
  scope: __scopeChart,
24
27
  children: /* @__PURE__ */ jsxs("div", {
25
- className: cn("flex aspect-video justify-center text-xs", "[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground", "[&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50", "[&_.recharts-curve.recharts-tooltip-cursor]:stroke-border", "[&_.recharts-dot[stroke='#fff']]:stroke-transparent", "[&_.recharts-layer]:outline-hidden", "[&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border", "[&_.recharts-radial-bar-background-sector]:fill-muted", "[&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted", "[&_.recharts-reference-line_[stroke='#ccc']]:stroke-border", "[&_.recharts-sector]:outline-hidden", "[&_.recharts-sector[stroke='#fff']]:stroke-transparent", "[&_.recharts-surface]:outline-hidden", className),
28
+ className: cn("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden", className),
26
29
  "data-chart": chartId,
27
30
  "data-slot": "chart",
28
31
  ...props,
29
32
  children: [/* @__PURE__ */ jsx(ChartStyle, {
30
33
  config,
31
34
  id: chartId
32
- }), /* @__PURE__ */ jsx(RechartsPrimitive.ResponsiveContainer, { children })]
35
+ }), /* @__PURE__ */ jsx(RechartsPrimitive.ResponsiveContainer, {
36
+ initialDimension,
37
+ children
38
+ })]
33
39
  })
34
40
  });
35
41
  }
@@ -79,7 +85,7 @@ function ChartTooltipContent({ __scopeChart, active, className, color, formatter
79
85
  if (!active || payload.length === 0) return null;
80
86
  const nestLabel = payload.length === 1 && indicator !== "dot";
81
87
  return /* @__PURE__ */ jsxs("div", {
82
- className: cn("grid min-w-[8rem] items-start gap-1.5 px-2.5 py-1.5", "rounded-lg border border-border/50", "bg-background text-xs shadow-xl", className),
88
+ className: cn("grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl", className),
83
89
  children: [nestLabel ? null : tooltipLabel, /* @__PURE__ */ jsx("div", {
84
90
  className: "grid gap-1.5",
85
91
  children: payload.map((item, index) => {
@@ -87,12 +93,12 @@ function ChartTooltipContent({ __scopeChart, active, className, color, formatter
87
93
  const itemConfig = getPayloadConfigFromPayload(config, item, key);
88
94
  const indicatorColor = color ?? (isRecord(item.payload) && "fill" in item.payload && typeof item.payload.fill === "string" ? item.payload.fill : void 0) ?? item.color;
89
95
  return /* @__PURE__ */ jsx("div", {
90
- className: cn("flex w-full flex-wrap items-stretch gap-2", "[&>svg]:size-2.5 [&>svg]:text-muted-foreground", indicator === "dot" && "items-center"),
96
+ className: cn("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground", indicator === "dot" && "items-center"),
91
97
  children: formatter && item.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, [item]) : /* @__PURE__ */ jsxs(Fragment, { children: [itemConfig?.icon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx("div", {
92
- className: cn("shrink-0", "rounded-xs border-(--color-border)", "bg-(--color-bg)", {
98
+ className: cn("shrink-0 rounded-xs border-(--color-border) bg-(--color-bg)", {
93
99
  "h-2.5 w-2.5": indicator === "dot",
94
100
  "my-0.5": nestLabel && indicator === "dashed",
95
- "border-1.5 w-0 border-dashed bg-transparent": indicator === "dashed",
101
+ "w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
96
102
  "w-1": indicator === "line"
97
103
  }),
98
104
  style: {
@@ -100,7 +106,7 @@ function ChartTooltipContent({ __scopeChart, active, className, color, formatter
100
106
  "--color-border": indicatorColor
101
107
  }
102
108
  }), /* @__PURE__ */ jsxs("div", {
103
- className: cn("flex flex-1 justify-between", "leading-none", nestLabel ? "items-end" : "items-center"),
109
+ className: cn("flex flex-1 justify-between leading-none", nestLabel ? "items-end" : "items-center"),
104
110
  children: [/* @__PURE__ */ jsxs("div", {
105
111
  className: "grid gap-1.5",
106
112
  children: [nestLabel ? tooltipLabel : null, /* @__PURE__ */ jsx("span", {
@@ -108,7 +114,7 @@ function ChartTooltipContent({ __scopeChart, active, className, color, formatter
108
114
  children: itemConfig?.label ?? item.name
109
115
  })]
110
116
  }), item.value != null && /* @__PURE__ */ jsx("span", {
111
- className: cn("font-mono font-medium text-foreground", "tabular-nums"),
117
+ className: "font-mono font-medium text-foreground tabular-nums",
112
118
  children: typeof item.value === "number" ? item.value.toLocaleString() : safeToString(item.value)
113
119
  })]
114
120
  })] })
@@ -136,9 +142,9 @@ function ChartLegendContent({ __scopeChart, className, hideIcon = false, nameKey
136
142
  else if (item.dataKey != null) key = safeToString(item.dataKey);
137
143
  const itemConfig = getPayloadConfigFromPayload(config, item, key);
138
144
  return /* @__PURE__ */ jsxs("div", {
139
- className: cn("flex items-center gap-1.5", "[&>svg]:size-3 [&>svg]:text-muted-foreground"),
145
+ className: "flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground",
140
146
  children: [itemConfig?.icon && !hideIcon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : /* @__PURE__ */ jsx("div", {
141
- className: cn("size-2 shrink-0", "rounded-md"),
147
+ className: "h-2 w-2 shrink-0 rounded-xs",
142
148
  style: { backgroundColor: item.color }
143
149
  }), itemConfig?.label]
144
150
  }, nameKey ? safeToString(itemConfig?.color ?? "") : safeToString(item.value ?? ""));
@@ -1,8 +1,7 @@
1
- "use client";
2
1
  import { cn } from "../lib/utils.mjs";
3
2
  import { Label } from "./label.mjs";
4
3
  import { CheckboxGroup, CheckboxGroupIndicator, CheckboxGroupItem } from "../primitives/checkbox-group.mjs";
5
- import { CheckIcon } from "lucide-react";
4
+ import { CheckIcon, MinusIcon } from "lucide-react";
6
5
  import { jsx, jsxs } from "react/jsx-runtime";
7
6
  //#region src/components/checkbox-cards.tsx
8
7
  /**
@@ -19,15 +18,16 @@ function CheckboxCards(props) {
19
18
  */
20
19
  function CheckboxCardsItem({ checkboxClassName, children, className, ...props }) {
21
20
  return /* @__PURE__ */ jsxs(Label, {
22
- className: cn("flex items-start gap-3", "p-3", "rounded-lg border border-input", "transition", "hover:not-has-disabled:not-has-aria-checked:bg-secondary", "has-focus-visible:border-ring", "has-disabled:opacity-50", "has-aria-checked:border-primary has-aria-checked:bg-primary/10", className),
21
+ className: cn("flex items-start gap-3 rounded-md border border-input p-3 transition has-focus-visible:border-ring has-disabled:opacity-50 has-data-checked:border-primary/30 has-data-checked:bg-primary/5 has-data-indeterminate:border-primary/30 has-data-indeterminate:bg-primary/5", className),
23
22
  "data-slot": "checkbox-card",
24
23
  children: [/* @__PURE__ */ jsx(CheckboxGroupItem, {
25
- className: cn("peer flex size-4 shrink-0", "rounded-sm border border-input shadow-xs outline-hidden", "text-primary-foreground", "transition", "focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50", "aria-checked:border-primary aria-checked:bg-primary", "focus-visible:aria-checked:ring-primary/20", "dark:bg-input/30", "dark:focus-visible:aria-checked:ring-primary/40", checkboxClassName),
24
+ className: cn("peer relative flex size-4 shrink-0 items-center justify-center rounded-sm border border-input shadow-xs transition-shadow duration-control ease-snappy outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-indeterminate:border-primary data-indeterminate:bg-primary data-indeterminate:text-primary-foreground dark:data-indeterminate:bg-primary", checkboxClassName),
26
25
  "data-slot": "checkbox-card-item",
27
26
  ...props,
28
- children: /* @__PURE__ */ jsx(CheckboxGroupIndicator, {
27
+ children: /* @__PURE__ */ jsxs(CheckboxGroupIndicator, {
28
+ className: "group/checkbox-card-indicator grid animate-in place-content-center text-current duration-control-indicator ease-spring zoom-in-50 [&>svg]:size-3.5",
29
29
  "data-slot": "checkbox-card-indicator",
30
- children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-3.5" })
30
+ children: [/* @__PURE__ */ jsx(CheckIcon, { className: "group-data-indeterminate/checkbox-card-indicator:hidden" }), /* @__PURE__ */ jsx(MinusIcon, { className: "hidden group-data-indeterminate/checkbox-card-indicator:block" })]
31
31
  })
32
32
  }), children]
33
33
  });
@@ -1,8 +1,7 @@
1
- "use client";
2
1
  import { cn } from "../lib/utils.mjs";
3
2
  import { CheckboxGroup as CheckboxGroup$1, CheckboxGroupIndicator, CheckboxGroupItem as CheckboxGroupItem$1 } from "../primitives/checkbox-group.mjs";
4
- import { CheckIcon } from "lucide-react";
5
- import { jsx } from "react/jsx-runtime";
3
+ import { CheckIcon, MinusIcon } from "lucide-react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
6
5
  //#region src/components/checkbox-group.tsx
7
6
  /**
8
7
  * @since 0.3.16-canary.0
@@ -19,13 +18,13 @@ function CheckboxGroup({ className, ...props }) {
19
18
  */
20
19
  function CheckboxGroupItem({ className, ...props }) {
21
20
  return /* @__PURE__ */ jsx(CheckboxGroupItem$1, {
22
- className: cn("peer flex size-4 shrink-0 items-center justify-center", "rounded-sm border border-input shadow-xs outline-hidden", "text-primary-foreground", "transition", "hover:not-disabled:not-aria-checked:border-ring/60", "focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50", "disabled:opacity-50", "aria-checked:border-primary aria-checked:bg-primary", "focus-visible:aria-checked:ring-primary/20", "aria-invalid:border-destructive aria-invalid:ring-destructive/20", "hover:not-disabled:not-aria-checked:aria-invalid:border-destructive/60", "aria-checked:aria-invalid:bg-destructive", "dark:bg-input/30", "dark:focus-visible:aria-checked:ring-primary/40", "dark:aria-invalid:ring-destructive/40", className),
21
+ className: cn("peer relative flex size-4 shrink-0 items-center justify-center rounded-sm border border-input shadow-xs transition-shadow duration-control ease-snappy outline-none group-has-disabled/field:opacity-50 after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 aria-invalid:aria-checked:border-primary dark:bg-input/30 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 data-checked:border-primary data-checked:bg-primary data-checked:text-primary-foreground dark:data-checked:bg-primary data-indeterminate:border-primary data-indeterminate:bg-primary data-indeterminate:text-primary-foreground dark:data-indeterminate:bg-primary", className),
23
22
  "data-slot": "checkbox-group-item",
24
23
  ...props,
25
- children: /* @__PURE__ */ jsx(CheckboxGroupIndicator, {
26
- className: cn("flex items-center justify-center text-current", "transition-none"),
24
+ children: /* @__PURE__ */ jsxs(CheckboxGroupIndicator, {
25
+ className: "group/checkbox-group-indicator grid animate-in place-content-center text-current duration-control-indicator ease-spring zoom-in-50 [&>svg]:size-3.5",
27
26
  "data-slot": "checkbox-group-indicator",
28
- children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-3.5" })
27
+ children: [/* @__PURE__ */ jsx(CheckIcon, { className: "group-data-indeterminate/checkbox-group-indicator:hidden" }), /* @__PURE__ */ jsx(MinusIcon, { className: "hidden group-data-indeterminate/checkbox-group-indicator:block" })]
29
28
  })
30
29
  });
31
30
  }
@@ -1,11 +1,11 @@
1
+ import { Checkbox as Checkbox$1 } from "radix-ui";
1
2
  import { ComponentProps, JSX } from "react";
2
- import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
3
3
 
4
4
  //#region src/components/checkbox.d.ts
5
5
  /**
6
6
  * @since 0.3.16-canary.0
7
7
  */
8
- type CheckboxProps = ComponentProps<typeof CheckboxPrimitive.Root>;
8
+ type CheckboxProps = ComponentProps<typeof Checkbox$1.Root>;
9
9
  /**
10
10
  * @since 0.3.16-canary.0
11
11
  */