@codefast/ui 0.3.16-canary.2 → 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 (289) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/README.md +28 -17
  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 +14 -14
  8. package/dist/components/alert.mjs +17 -28
  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.d.mts +3 -15
  14. package/dist/components/badge.mjs +6 -48
  15. package/dist/components/breadcrumb.d.mts +1 -0
  16. package/dist/components/breadcrumb.mjs +11 -10
  17. package/dist/components/button-group.d.mts +3 -13
  18. package/dist/components/button-group.mjs +9 -31
  19. package/dist/components/button.d.mts +3 -26
  20. package/dist/components/button.mjs +9 -79
  21. package/dist/components/calendar.d.mts +6 -2
  22. package/dist/components/calendar.mjs +41 -44
  23. package/dist/components/card.d.mts +4 -2
  24. package/dist/components/card.mjs +9 -9
  25. package/dist/components/carousel.d.mts +16 -5
  26. package/dist/components/carousel.mjs +24 -11
  27. package/dist/components/chart.d.mts +9 -6
  28. package/dist/components/chart.mjs +21 -15
  29. package/dist/components/checkbox-cards.mjs +4 -4
  30. package/dist/components/checkbox-group.mjs +3 -4
  31. package/dist/components/checkbox.d.mts +2 -2
  32. package/dist/components/checkbox.mjs +6 -7
  33. package/dist/components/collapsible.d.mts +4 -4
  34. package/dist/components/collapsible.mjs +4 -5
  35. package/dist/components/command.d.mts +11 -1
  36. package/dist/components/command.mjs +35 -32
  37. package/dist/components/context-menu.d.mts +22 -15
  38. package/dist/components/context-menu.mjs +44 -39
  39. package/dist/components/dialog.d.mts +19 -23
  40. package/dist/components/dialog.mjs +48 -47
  41. package/dist/components/direction.d.mts +24 -0
  42. package/dist/components/direction.mjs +18 -0
  43. package/dist/components/drawer.d.mts +3 -21
  44. package/dist/components/drawer.mjs +19 -27
  45. package/dist/components/dropdown-menu.d.mts +22 -15
  46. package/dist/components/dropdown-menu.mjs +41 -37
  47. package/dist/components/empty.d.mts +3 -13
  48. package/dist/components/empty.mjs +8 -23
  49. package/dist/components/field.d.mts +3 -14
  50. package/dist/components/field.mjs +14 -44
  51. package/dist/components/form.d.mts +7 -10
  52. package/dist/components/form.mjs +6 -7
  53. package/dist/components/hover-card.d.mts +5 -5
  54. package/dist/components/hover-card.mjs +14 -12
  55. package/dist/components/input-group.d.mts +4 -31
  56. package/dist/components/input-group.mjs +14 -96
  57. package/dist/components/input-number.d.mts +3 -1
  58. package/dist/components/input-number.mjs +50 -28
  59. package/dist/components/input-otp.mjs +9 -7
  60. package/dist/components/input-password.mjs +1 -4
  61. package/dist/components/input-search.mjs +3 -5
  62. package/dist/components/input.mjs +1 -2
  63. package/dist/components/item.d.mts +4 -29
  64. package/dist/components/item.mjs +12 -65
  65. package/dist/components/kbd.mjs +1 -1
  66. package/dist/components/label.d.mts +2 -2
  67. package/dist/components/label.mjs +3 -4
  68. package/dist/components/menubar.d.mts +22 -16
  69. package/dist/components/menubar.mjs +54 -47
  70. package/dist/components/native-select.d.mts +5 -1
  71. package/dist/components/native-select.mjs +9 -6
  72. package/dist/components/navigation-menu.d.mts +30 -13
  73. package/dist/components/navigation-menu.mjs +35 -32
  74. package/dist/components/pagination.d.mts +7 -1
  75. package/dist/components/pagination.mjs +27 -12
  76. package/dist/components/popover.d.mts +40 -7
  77. package/dist/components/popover.mjs +46 -14
  78. package/dist/components/progress-circle.d.mts +3 -47
  79. package/dist/components/progress-circle.mjs +2 -48
  80. package/dist/components/progress.d.mts +2 -2
  81. package/dist/components/progress.mjs +5 -6
  82. package/dist/components/radio-cards.d.mts +3 -3
  83. package/dist/components/radio-cards.mjs +11 -11
  84. package/dist/components/radio-group.d.mts +3 -3
  85. package/dist/components/radio-group.mjs +9 -9
  86. package/dist/components/radio.mjs +2 -3
  87. package/dist/components/resizable.mjs +3 -8
  88. package/dist/components/scroll-area.d.mts +8 -24
  89. package/dist/components/scroll-area.mjs +16 -70
  90. package/dist/components/select.d.mts +14 -14
  91. package/dist/components/select.mjs +47 -47
  92. package/dist/components/separator.d.mts +4 -19
  93. package/dist/components/separator.mjs +6 -27
  94. package/dist/components/sheet.d.mts +18 -31
  95. package/dist/components/sheet.mjs +46 -87
  96. package/dist/components/sidebar.d.mts +3 -19
  97. package/dist/components/sidebar.mjs +48 -84
  98. package/dist/components/skeleton.mjs +1 -1
  99. package/dist/components/slider.d.mts +2 -2
  100. package/dist/components/slider.mjs +9 -11
  101. package/dist/components/sonner.mjs +11 -3
  102. package/dist/components/spinner.mjs +6 -7
  103. package/dist/components/switch.d.mts +5 -2
  104. package/dist/components/switch.mjs +7 -7
  105. package/dist/components/table.mjs +10 -10
  106. package/dist/components/tabs.d.mts +8 -5
  107. package/dist/components/tabs.mjs +18 -12
  108. package/dist/components/textarea.mjs +1 -1
  109. package/dist/components/toggle-group.d.mts +11 -7
  110. package/dist/components/toggle-group.mjs +20 -21
  111. package/dist/components/toggle.d.mts +4 -24
  112. package/dist/components/toggle.mjs +6 -45
  113. package/dist/components/tooltip.d.mts +7 -6
  114. package/dist/components/tooltip.mjs +19 -17
  115. package/dist/hooks/use-animated-value.mjs +0 -1
  116. package/dist/hooks/use-copy-to-clipboard.mjs +0 -1
  117. package/dist/hooks/use-is-mobile.mjs +0 -1
  118. package/dist/hooks/use-media-query.mjs +0 -1
  119. package/dist/hooks/use-mutation-observer.mjs +0 -1
  120. package/dist/hooks/use-pagination.mjs +0 -1
  121. package/dist/index.d.mts +38 -21
  122. package/dist/index.mjs +40 -23
  123. package/dist/lib/utils.d.mts +1 -12
  124. package/dist/lib/utils.mjs +1 -9
  125. package/dist/primitives/checkbox-group.d.mts +9 -11
  126. package/dist/primitives/checkbox-group.mjs +14 -19
  127. package/dist/primitives/input-number.d.mts +3 -4
  128. package/dist/primitives/input-number.mjs +3 -5
  129. package/dist/primitives/input.d.mts +4 -5
  130. package/dist/primitives/input.mjs +2 -3
  131. package/dist/primitives/progress-circle.d.mts +3 -4
  132. package/dist/primitives/progress-circle.mjs +2 -3
  133. package/dist/variants/alert.d.mts +18 -0
  134. package/dist/variants/alert.mjs +15 -0
  135. package/dist/variants/badge.d.mts +22 -0
  136. package/dist/variants/badge.mjs +19 -0
  137. package/dist/variants/button-group.d.mts +18 -0
  138. package/dist/variants/button-group.mjs +15 -0
  139. package/dist/variants/button.d.mts +32 -0
  140. package/dist/variants/button.mjs +34 -0
  141. package/dist/variants/empty.d.mts +18 -0
  142. package/dist/variants/empty.mjs +15 -0
  143. package/dist/variants/field.d.mts +19 -0
  144. package/dist/variants/field.mjs +16 -0
  145. package/dist/variants/input-group.d.mts +43 -0
  146. package/dist/variants/input-group.mjs +34 -0
  147. package/dist/variants/input-number.d.mts +45 -0
  148. package/dist/variants/input-number.mjs +40 -0
  149. package/dist/variants/item.d.mts +38 -0
  150. package/dist/variants/item.mjs +38 -0
  151. package/dist/variants/navigation-menu.d.mts +13 -0
  152. package/dist/variants/navigation-menu.mjs +8 -0
  153. package/dist/variants/progress-circle.d.mts +52 -0
  154. package/dist/variants/progress-circle.mjs +45 -0
  155. package/dist/variants/scroll-area.d.mts +24 -0
  156. package/dist/variants/scroll-area.mjs +58 -0
  157. package/dist/variants/separator.d.mts +23 -0
  158. package/dist/variants/separator.mjs +25 -0
  159. package/dist/variants/sheet.d.mts +20 -0
  160. package/dist/variants/sheet.mjs +17 -0
  161. package/dist/variants/sidebar.d.mts +23 -0
  162. package/dist/variants/sidebar.mjs +25 -0
  163. package/dist/variants/tabs.d.mts +18 -0
  164. package/dist/variants/tabs.mjs +15 -0
  165. package/dist/variants/toggle.d.mts +23 -0
  166. package/dist/variants/toggle.mjs +25 -0
  167. package/package.json +186 -55
  168. package/src/components/accordion.tsx +114 -0
  169. package/src/components/alert-dialog.tsx +298 -0
  170. package/src/components/alert.tsx +94 -0
  171. package/src/components/aspect-ratio.tsx +25 -0
  172. package/src/components/avatar.tsx +171 -0
  173. package/src/components/badge.tsx +35 -0
  174. package/src/components/breadcrumb.tsx +191 -0
  175. package/src/components/button-group.tsx +97 -0
  176. package/src/components/button.tsx +55 -0
  177. package/src/components/calendar.tsx +222 -0
  178. package/src/components/card.tsx +169 -0
  179. package/src/components/carousel.tsx +349 -0
  180. package/src/components/chart.tsx +536 -0
  181. package/src/components/checkbox-cards.tsx +72 -0
  182. package/src/components/checkbox-group.tsx +60 -0
  183. package/src/components/checkbox.tsx +44 -0
  184. package/src/components/collapsible.tsx +57 -0
  185. package/src/components/command.tsx +298 -0
  186. package/src/components/context-menu.tsx +410 -0
  187. package/src/components/dialog.tsx +243 -0
  188. package/src/components/direction.tsx +32 -0
  189. package/src/components/drawer.tsx +209 -0
  190. package/src/components/dropdown-menu.tsx +419 -0
  191. package/src/components/empty.tsx +155 -0
  192. package/src/components/field.tsx +329 -0
  193. package/src/components/form.tsx +258 -0
  194. package/src/components/hover-card.tsx +93 -0
  195. package/src/components/input-group.tsx +185 -0
  196. package/src/components/input-number.tsx +141 -0
  197. package/src/components/input-otp.tsx +132 -0
  198. package/src/components/input-password.tsx +50 -0
  199. package/src/components/input-search.tsx +81 -0
  200. package/src/components/input.tsx +36 -0
  201. package/src/components/item.tsx +266 -0
  202. package/src/components/kbd.tsx +47 -0
  203. package/src/components/label.tsx +36 -0
  204. package/src/components/menubar.tsx +440 -0
  205. package/src/components/native-select.tsx +87 -0
  206. package/src/components/navigation-menu.tsx +235 -0
  207. package/src/components/pagination.tsx +198 -0
  208. package/src/components/popover.tsx +170 -0
  209. package/src/components/progress-circle.tsx +185 -0
  210. package/src/components/progress.tsx +41 -0
  211. package/src/components/radio-cards.tsx +66 -0
  212. package/src/components/radio-group.tsx +59 -0
  213. package/src/components/radio.tsx +40 -0
  214. package/src/components/resizable.tsx +78 -0
  215. package/src/components/scroll-area.tsx +95 -0
  216. package/src/components/select.tsx +296 -0
  217. package/src/components/separator.tsx +60 -0
  218. package/src/components/sheet.tsx +241 -0
  219. package/src/components/sidebar.tsx +926 -0
  220. package/src/components/skeleton.tsx +35 -0
  221. package/src/components/slider.tsx +66 -0
  222. package/src/components/sonner.tsx +57 -0
  223. package/src/components/spinner.tsx +66 -0
  224. package/src/components/switch.tsx +44 -0
  225. package/src/components/table.tsx +183 -0
  226. package/src/components/tabs.tsx +110 -0
  227. package/src/components/textarea.tsx +35 -0
  228. package/src/components/toggle-group.tsx +137 -0
  229. package/src/components/toggle.tsx +30 -0
  230. package/src/components/tooltip.tsx +115 -0
  231. package/src/css/foundation/base.css +50 -0
  232. package/src/css/foundation/motion.css +36 -0
  233. package/src/css/foundation/source.css +3 -0
  234. package/src/css/foundation/tokens.css +71 -0
  235. package/src/css/foundation/variants.css +113 -0
  236. package/src/css/preset.css +5 -195
  237. package/src/css/style.css +1 -1
  238. package/src/css/{amber.css → themes/amber.css} +59 -22
  239. package/src/css/{blue.css → themes/blue.css} +59 -22
  240. package/src/css/{cyan.css → themes/cyan.css} +59 -22
  241. package/src/css/{emerald.css → themes/emerald.css} +59 -22
  242. package/src/css/{fuchsia.css → themes/fuchsia.css} +59 -22
  243. package/src/css/{gray.css → themes/gray.css} +59 -22
  244. package/src/css/{green.css → themes/green.css} +59 -22
  245. package/src/css/{indigo.css → themes/indigo.css} +59 -22
  246. package/src/css/{lime.css → themes/lime.css} +59 -22
  247. package/src/css/{neutral.css → themes/neutral.css} +59 -22
  248. package/src/css/{orange.css → themes/orange.css} +59 -22
  249. package/src/css/{pink.css → themes/pink.css} +59 -22
  250. package/src/css/{purple.css → themes/purple.css} +59 -22
  251. package/src/css/{red.css → themes/red.css} +59 -22
  252. package/src/css/{rose.css → themes/rose.css} +59 -22
  253. package/src/css/{sky.css → themes/sky.css} +59 -22
  254. package/src/css/{slate.css → themes/slate.css} +59 -22
  255. package/src/css/{stone.css → themes/stone.css} +59 -22
  256. package/src/css/{teal.css → themes/teal.css} +59 -22
  257. package/src/css/{violet.css → themes/violet.css} +59 -22
  258. package/src/css/{yellow.css → themes/yellow.css} +59 -22
  259. package/src/css/{zinc.css → themes/zinc.css} +59 -22
  260. package/src/hooks/use-animated-value.ts +91 -0
  261. package/src/hooks/use-copy-to-clipboard.ts +58 -0
  262. package/src/hooks/use-is-mobile.ts +25 -0
  263. package/src/hooks/use-media-query.ts +69 -0
  264. package/src/hooks/use-mutation-observer.ts +51 -0
  265. package/src/hooks/use-pagination.ts +164 -0
  266. package/src/index.ts +679 -0
  267. package/src/lib/utils.ts +5 -0
  268. package/src/primitives/checkbox-group.tsx +346 -0
  269. package/src/primitives/input-number.tsx +967 -0
  270. package/src/primitives/input.tsx +227 -0
  271. package/src/primitives/progress-circle.tsx +507 -0
  272. package/src/variants/alert.ts +34 -0
  273. package/src/variants/badge.ts +39 -0
  274. package/src/variants/button-group.ts +36 -0
  275. package/src/variants/button.ts +56 -0
  276. package/src/variants/empty.ts +34 -0
  277. package/src/variants/field.ts +37 -0
  278. package/src/variants/input-group.ts +80 -0
  279. package/src/variants/input-number.ts +65 -0
  280. package/src/variants/item.ts +68 -0
  281. package/src/variants/navigation-menu.ts +25 -0
  282. package/src/variants/progress-circle.ts +46 -0
  283. package/src/variants/scroll-area.ts +73 -0
  284. package/src/variants/separator.ts +40 -0
  285. package/src/variants/sheet.ts +37 -0
  286. package/src/variants/sidebar.ts +41 -0
  287. package/src/variants/tabs.ts +34 -0
  288. package/src/variants/toggle.ts +40 -0
  289. package/dist/node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/clsx.d.mts +0 -6
@@ -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" ? "-ml-4" : "-mt-4 h-full flex-col", classNames?.content, className),
89
102
  ...props
90
103
  })
91
104
  });
@@ -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" ? "top-1/2 -left-12 -translate-y-1/2 active:not-aria-[haspopup]:translate-y-[calc(-50%+1px)]" : "-top-12 left-1/2 -translate-x-1/2 rotate-90", 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" ? "top-1/2 -right-12 -translate-y-1/2 active:not-aria-[haspopup]:translate-y-[calc(-50%+1px)]" : "-bottom-12 left-1/2 -translate-x-1/2 rotate-90", 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,7 +1,5 @@
1
- import * as _$react from "react";
2
1
  import { ComponentProps, ComponentType, JSX, ReactNode } from "react";
3
- import * as _$_radix_ui_react_context0 from "@radix-ui/react-context";
4
- import { Scope } from "@radix-ui/react-context";
2
+ import { Context } from "radix-ui/internal";
5
3
  import * as RechartsPrimitive from "recharts";
6
4
  import { TooltipContentProps, TooltipProps } from "recharts";
7
5
  import { NameType, Payload, ValueType } from "recharts/types/component/DefaultTooltipContent";
@@ -27,15 +25,19 @@ type ChartConfig = Record<string, {
27
25
  theme?: never;
28
26
  })>;
29
27
  type ScopedProps<P> = P & {
30
- __scopeChart?: Scope;
28
+ __scopeChart?: Context.Scope;
31
29
  };
32
- declare const createChartScope: _$_radix_ui_react_context0.CreateScope;
30
+ declare const createChartScope: Context.CreateScope;
33
31
  /**
34
32
  * @since 0.3.16-canary.0
35
33
  */
36
34
  interface ChartContainerProps extends ComponentProps<"div"> {
37
35
  children: ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>["children"];
38
36
  config: ChartConfig;
37
+ initialDimension?: {
38
+ height: number;
39
+ width: number;
40
+ };
39
41
  }
40
42
  /**
41
43
  * @since 0.3.16-canary.0
@@ -46,6 +48,7 @@ declare function ChartContainer({
46
48
  className,
47
49
  config,
48
50
  id,
51
+ initialDimension,
49
52
  ...props
50
53
  }: ScopedProps<ChartContainerProps>): JSX.Element;
51
54
  /**
@@ -109,7 +112,7 @@ type ChartLegendProps = ComponentProps<typeof RechartsPrimitive.Legend>;
109
112
  /**
110
113
  * @since 0.3.16-canary.0
111
114
  */
112
- declare const ChartLegend: _$react.MemoExoticComponent<(outsideProps: RechartsPrimitive.LegendProps) => React.ReactPortal | null>;
115
+ declare const ChartLegend: typeof RechartsPrimitive.Legend;
113
116
  /**
114
117
  * @since 0.3.16-canary.0
115
118
  */
@@ -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,4 +1,3 @@
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";
@@ -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", 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 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", checkboxClassName),
26
25
  "data-slot": "checkbox-card-item",
27
26
  ...props,
28
27
  children: /* @__PURE__ */ jsx(CheckboxGroupIndicator, {
28
+ className: "grid place-content-center text-current transition-none [&>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, {})
31
31
  })
32
32
  }), children]
33
33
  });
@@ -1,4 +1,3 @@
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
3
  import { CheckIcon } from "lucide-react";
@@ -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 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", className),
23
22
  "data-slot": "checkbox-group-item",
24
23
  ...props,
25
24
  children: /* @__PURE__ */ jsx(CheckboxGroupIndicator, {
26
- className: cn("flex items-center justify-center text-current", "transition-none"),
25
+ className: "grid place-content-center text-current transition-none [&>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, {})
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
  */
@@ -1,21 +1,20 @@
1
- "use client";
2
1
  import { cn } from "../lib/utils.mjs";
3
2
  import { CheckIcon } from "lucide-react";
3
+ import { Checkbox as Checkbox$1 } from "radix-ui";
4
4
  import { jsx } from "react/jsx-runtime";
5
- import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
6
5
  //#region src/components/checkbox.tsx
7
6
  /**
8
7
  * @since 0.3.16-canary.0
9
8
  */
10
9
  function Checkbox({ className, ...props }) {
11
- return /* @__PURE__ */ jsx(CheckboxPrimitive.Root, {
12
- 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", "aria-checked:focus-visible: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:aria-checked:focus-visible:ring-primary/40", "dark:aria-invalid:ring-destructive/40", className),
10
+ return /* @__PURE__ */ jsx(Checkbox$1.Root, {
11
+ className: cn("peer relative flex size-4 shrink-0 items-center justify-center rounded-sm border border-input shadow-xs transition-shadow 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", className),
13
12
  "data-slot": "checkbox",
14
13
  ...props,
15
- children: /* @__PURE__ */ jsx(CheckboxPrimitive.Indicator, {
16
- className: cn("flex items-center justify-center text-current", "transition-none"),
14
+ children: /* @__PURE__ */ jsx(Checkbox$1.Indicator, {
15
+ className: "grid place-content-center text-current transition-none [&>svg]:size-3.5",
17
16
  "data-slot": "checkbox-indicator",
18
- children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-3.5" })
17
+ children: /* @__PURE__ */ jsx(CheckIcon, {})
19
18
  })
20
19
  });
21
20
  }
@@ -1,11 +1,11 @@
1
+ import { Collapsible as Collapsible$1 } from "radix-ui";
1
2
  import { ComponentProps, JSX } from "react";
2
- import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
3
3
 
4
4
  //#region src/components/collapsible.d.ts
5
5
  /**
6
6
  * @since 0.3.16-canary.0
7
7
  */
8
- type CollapsibleProps = ComponentProps<typeof CollapsiblePrimitive.Root>;
8
+ type CollapsibleProps = ComponentProps<typeof Collapsible$1.Root>;
9
9
  /**
10
10
  * @since 0.3.16-canary.0
11
11
  */
@@ -15,7 +15,7 @@ declare function Collapsible({
15
15
  /**
16
16
  * @since 0.3.16-canary.0
17
17
  */
18
- type CollapsibleTriggerProps = ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>;
18
+ type CollapsibleTriggerProps = ComponentProps<typeof Collapsible$1.CollapsibleTrigger>;
19
19
  /**
20
20
  * @since 0.3.16-canary.0
21
21
  */
@@ -25,7 +25,7 @@ declare function CollapsibleTrigger({
25
25
  /**
26
26
  * @since 0.3.16-canary.0
27
27
  */
28
- type CollapsibleContentProps = ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>;
28
+ type CollapsibleContentProps = ComponentProps<typeof Collapsible$1.CollapsibleContent>;
29
29
  /**
30
30
  * @since 0.3.16-canary.0
31
31
  */
@@ -1,12 +1,11 @@
1
- "use client";
1
+ import { Collapsible as Collapsible$1 } from "radix-ui";
2
2
  import { jsx } from "react/jsx-runtime";
3
- import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
4
3
  //#region src/components/collapsible.tsx
5
4
  /**
6
5
  * @since 0.3.16-canary.0
7
6
  */
8
7
  function Collapsible({ ...props }) {
9
- return /* @__PURE__ */ jsx(CollapsiblePrimitive.Root, {
8
+ return /* @__PURE__ */ jsx(Collapsible$1.Root, {
10
9
  "data-slot": "collapsible",
11
10
  ...props
12
11
  });
@@ -15,7 +14,7 @@ function Collapsible({ ...props }) {
15
14
  * @since 0.3.16-canary.0
16
15
  */
17
16
  function CollapsibleTrigger({ ...props }) {
18
- return /* @__PURE__ */ jsx(CollapsiblePrimitive.CollapsibleTrigger, {
17
+ return /* @__PURE__ */ jsx(Collapsible$1.CollapsibleTrigger, {
19
18
  "data-slot": "collapsible-trigger",
20
19
  ...props
21
20
  });
@@ -24,7 +23,7 @@ function CollapsibleTrigger({ ...props }) {
24
23
  * @since 0.3.16-canary.0
25
24
  */
26
25
  function CollapsibleContent({ ...props }) {
27
- return /* @__PURE__ */ jsx(CollapsiblePrimitive.CollapsibleContent, {
26
+ return /* @__PURE__ */ jsx(Collapsible$1.CollapsibleContent, {
28
27
  "data-slot": "collapsible-content",
29
28
  ...props
30
29
  });
@@ -17,12 +17,21 @@ declare function Command({
17
17
  /**
18
18
  * @since 0.3.16-canary.0
19
19
  */
20
- type CommandDialogProps = ComponentProps<typeof Dialog>;
20
+ interface CommandDialogProps extends ComponentProps<typeof Dialog> {
21
+ className?: string;
22
+ description?: string;
23
+ showCloseButton?: boolean;
24
+ title?: string;
25
+ }
21
26
  /**
22
27
  * @since 0.3.16-canary.0
23
28
  */
24
29
  declare function CommandDialog({
25
30
  children,
31
+ className,
32
+ description,
33
+ showCloseButton,
34
+ title,
26
35
  ...props
27
36
  }: CommandDialogProps): JSX.Element;
28
37
  /**
@@ -88,6 +97,7 @@ type CommandItemProps = ComponentProps<typeof Command$1.Item>;
88
97
  * @since 0.3.16-canary.0
89
98
  */
90
99
  declare function CommandItem({
100
+ children,
91
101
  className,
92
102
  ...props
93
103
  }: CommandItemProps): JSX.Element;
@@ -1,9 +1,8 @@
1
- "use client";
2
1
  import { cn } from "../lib/utils.mjs";
3
- import { Dialog, DialogContent, DialogDescription, DialogTitle } from "./dialog.mjs";
4
- import { SearchIcon } from "lucide-react";
2
+ import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "./dialog.mjs";
3
+ import { InputGroup, InputGroupAddon } from "./input-group.mjs";
4
+ import { CheckIcon, SearchIcon } from "lucide-react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
- import { VisuallyHidden } from "@radix-ui/react-visually-hidden";
7
6
  import { Command as Command$1 } from "cmdk";
8
7
  //#region src/components/command.tsx
9
8
  /**
@@ -11,7 +10,7 @@ import { Command as Command$1 } from "cmdk";
11
10
  */
12
11
  function Command({ className, ...props }) {
13
12
  return /* @__PURE__ */ jsx(Command$1, {
14
- className: cn("flex flex-col overflow-hidden", "rounded-[inherit]", "bg-popover text-popover-foreground outline-hidden", className),
13
+ className: cn("flex size-full flex-col overflow-hidden rounded-xl! bg-popover p-1 text-popover-foreground", className),
15
14
  "data-slot": "command",
16
15
  ...props
17
16
  });
@@ -19,33 +18,36 @@ function Command({ className, ...props }) {
19
18
  /**
20
19
  * @since 0.3.16-canary.0
21
20
  */
22
- function CommandDialog({ children, ...props }) {
23
- return /* @__PURE__ */ jsx(Dialog, {
21
+ function CommandDialog({ children, className, description = "Search for a command to run...", showCloseButton = false, title = "Command Palette", ...props }) {
22
+ return /* @__PURE__ */ jsxs(Dialog, {
24
23
  "data-slot": "command-dialog",
25
24
  ...props,
26
- children: /* @__PURE__ */ jsxs(DialogContent, {
27
- className: cn("rounded-t-lg", "sm:rounded-lg"),
25
+ children: [/* @__PURE__ */ jsxs(DialogHeader, {
26
+ className: "sr-only",
27
+ children: [/* @__PURE__ */ jsx(DialogTitle, { children: title }), /* @__PURE__ */ jsx(DialogDescription, { children: description })]
28
+ }), /* @__PURE__ */ jsx(DialogContent, {
29
+ className: cn("top-1/3 translate-y-0 overflow-hidden rounded-xl p-0", className),
28
30
  "data-slot": "command-dialog-content",
29
- children: [/* @__PURE__ */ jsxs(VisuallyHidden, { children: [/* @__PURE__ */ jsx(DialogTitle, { children: "Search command" }), /* @__PURE__ */ jsx(DialogDescription, { children: "Use the search bar to find and select the desired command." })] }), /* @__PURE__ */ jsx(Command, {
30
- className: cn("[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground", "[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0", "[&_[cmdk-input]]:h-12"),
31
- children
32
- })]
33
- })
31
+ showCloseButton,
32
+ children
33
+ })]
34
34
  });
35
35
  }
36
36
  /**
37
37
  * @since 0.3.16-canary.0
38
38
  */
39
39
  function CommandInput({ className, ...props }) {
40
- return /* @__PURE__ */ jsxs("div", {
41
- "cmdk-input-wrapper": true,
42
- className: cn("flex items-center gap-2", "px-3", "border-b"),
40
+ return /* @__PURE__ */ jsx("div", {
41
+ className: "p-1 pb-0",
43
42
  "data-slot": "command-input-wrapper",
44
- children: [/* @__PURE__ */ jsx(SearchIcon, { className: cn("size-4 shrink-0", "opacity-50") }), /* @__PURE__ */ jsx(Command$1.Input, {
45
- className: cn("flex h-10 w-full", "text-base", "outline-hidden", "placeholder:text-muted-foreground", "disabled:opacity-50", "md:text-sm", className),
46
- "data-slot": "command-input",
47
- ...props
48
- })]
43
+ children: /* @__PURE__ */ jsxs(InputGroup, {
44
+ className: "h-8! rounded-lg! border-input/30 bg-input/30 shadow-none! *:data-[slot=input-group-addon]:pl-2!",
45
+ children: [/* @__PURE__ */ jsx(Command$1.Input, {
46
+ className: cn("w-full text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50", className),
47
+ "data-slot": "command-input",
48
+ ...props
49
+ }), /* @__PURE__ */ jsx(InputGroupAddon, { children: /* @__PURE__ */ jsx(SearchIcon, { className: "size-4 shrink-0 opacity-50" }) })]
50
+ })
49
51
  });
50
52
  }
51
53
  /**
@@ -53,7 +55,7 @@ function CommandInput({ className, ...props }) {
53
55
  */
54
56
  function CommandList({ className, ...props }) {
55
57
  return /* @__PURE__ */ jsx(Command$1.List, {
56
- className: cn("max-h-75 overflow-x-hidden overflow-y-auto", className),
58
+ className: cn("max-h-72 scroll-py-1 scrollbar-none overflow-x-hidden overflow-y-auto outline-none", className),
57
59
  "data-slot": "command-list",
58
60
  ...props
59
61
  });
@@ -63,7 +65,7 @@ function CommandList({ className, ...props }) {
63
65
  */
64
66
  function CommandEmpty({ className, ...props }) {
65
67
  return /* @__PURE__ */ jsx(Command$1.Empty, {
66
- className: cn("py-6", "text-center text-sm", className),
68
+ className: cn("py-6 text-center text-sm", className),
67
69
  "data-slot": "command-empty",
68
70
  ...props
69
71
  });
@@ -73,7 +75,7 @@ function CommandEmpty({ className, ...props }) {
73
75
  */
74
76
  function CommandGroup({ className, ...props }) {
75
77
  return /* @__PURE__ */ jsx(Command$1.Group, {
76
- className: cn("overflow-hidden p-1 text-foreground", "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground", className),
78
+ className: cn("overflow-hidden p-1 text-foreground **:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:py-1.5 **:[[cmdk-group-heading]]:text-xs **:[[cmdk-group-heading]]:font-medium **:[[cmdk-group-heading]]:text-muted-foreground", className),
77
79
  "data-slot": "command-group",
78
80
  ...props
79
81
  });
@@ -83,7 +85,7 @@ function CommandGroup({ className, ...props }) {
83
85
  */
84
86
  function CommandSeparator({ className, ...props }) {
85
87
  return /* @__PURE__ */ jsx(Command$1.Separator, {
86
- className: cn("-mx-1 h-px", "bg-border", className),
88
+ className: cn("-mx-1 h-px w-auto bg-border", className),
87
89
  "data-slot": "command-separator",
88
90
  ...props
89
91
  });
@@ -91,11 +93,12 @@ function CommandSeparator({ className, ...props }) {
91
93
  /**
92
94
  * @since 0.3.16-canary.0
93
95
  */
94
- function CommandItem({ className, ...props }) {
95
- return /* @__PURE__ */ jsx(Command$1.Item, {
96
- className: cn("group/command-item relative flex items-center gap-x-2", "px-2 py-1.5", "rounded-sm outline-hidden", "text-sm", "cursor-default select-none", "aria-disabled:opacity-50", "aria-selected:bg-accent aria-selected:text-accent-foreground", "[&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", "[&_svg:not([class*='text-'])]:text-muted-foreground", className),
96
+ function CommandItem({ children, className, ...props }) {
97
+ return /* @__PURE__ */ jsxs(Command$1.Item, {
98
+ className: cn("group/command-item relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none in-data-[slot=dialog-content]:rounded-lg! data-selected:bg-muted data-selected:text-foreground data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 data-selected:**:[svg]:text-foreground", className),
97
99
  "data-slot": "command-item",
98
- ...props
100
+ ...props,
101
+ children: [children, /* @__PURE__ */ jsx(CheckIcon, { className: "ml-auto opacity-0 group-has-data-[slot=command-shortcut]/command-item:hidden group-data-checked/command-item:opacity-100" })]
99
102
  });
100
103
  }
101
104
  /**
@@ -103,7 +106,7 @@ function CommandItem({ className, ...props }) {
103
106
  */
104
107
  function CommandLoading({ className, ...props }) {
105
108
  return /* @__PURE__ */ jsx(Command$1.Loading, {
106
- className: cn("flex justify-center", "p-2", className),
109
+ className: cn("flex justify-center p-2", className),
107
110
  "data-slot": "command-loading",
108
111
  ...props
109
112
  });
@@ -113,7 +116,7 @@ function CommandLoading({ className, ...props }) {
113
116
  */
114
117
  function CommandShortcut({ className, ...props }) {
115
118
  return /* @__PURE__ */ jsx("span", {
116
- className: cn("ml-auto", "text-xs tracking-widest text-muted-foreground", className),
119
+ className: cn("ml-auto text-xs tracking-widest text-muted-foreground group-data-selected/command-item:text-foreground", className),
117
120
  "data-slot": "command-shortcut",
118
121
  ...props
119
122
  });