react-shadcn-kit 0.1.0 → 0.2.0

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 (335) hide show
  1. package/README.md +59 -75
  2. package/dist/assets/global.css +1 -1
  3. package/dist/components/composites/action-button.d.ts +16 -0
  4. package/dist/components/composites/action-button.js +71 -0
  5. package/dist/components/composites/action-button.js.map +1 -0
  6. package/dist/components/composites/index.d.ts +8 -0
  7. package/dist/components/composites/sidebar-wrapper.d.ts +27 -0
  8. package/dist/components/composites/sidebar-wrapper.js +21 -0
  9. package/dist/components/composites/sidebar-wrapper.js.map +1 -0
  10. package/dist/{molecules → components/composites}/theme-toggle.js +3 -3
  11. package/dist/components/composites/theme-toggle.js.map +1 -0
  12. package/dist/components/composites/user-menu.js +29 -0
  13. package/dist/components/composites/user-menu.js.map +1 -0
  14. package/dist/components/marketing/hero.d.ts +12 -0
  15. package/dist/components/marketing/hero.js +87 -0
  16. package/dist/components/marketing/hero.js.map +1 -0
  17. package/dist/components/marketing/index.d.ts +6 -0
  18. package/dist/components/marketing/social-proof.d.ts +10 -0
  19. package/dist/components/marketing/social-proof.js +21 -0
  20. package/dist/components/marketing/social-proof.js.map +1 -0
  21. package/dist/components/marketing/value-props.d.ts +14 -0
  22. package/dist/components/marketing/value-props.js +25 -0
  23. package/dist/components/marketing/value-props.js.map +1 -0
  24. package/dist/{atoms → components/primitives}/accordion.js +1 -1
  25. package/dist/components/primitives/accordion.js.map +1 -0
  26. package/dist/{atoms → components/primitives}/alert-dialog.js +2 -2
  27. package/dist/components/primitives/alert-dialog.js.map +1 -0
  28. package/dist/{atoms → components/primitives}/alert.js +1 -1
  29. package/dist/components/primitives/alert.js.map +1 -0
  30. package/dist/components/primitives/aspect-ratio.js.map +1 -0
  31. package/dist/{atoms → components/primitives}/avatar.js +1 -1
  32. package/dist/components/primitives/avatar.js.map +1 -0
  33. package/dist/components/primitives/badge-variants.d.ts +3 -0
  34. package/dist/{atoms/badge.js → components/primitives/badge-variants.js} +7 -19
  35. package/dist/components/primitives/badge-variants.js.map +1 -0
  36. package/dist/components/primitives/badge.d.ts +9 -0
  37. package/dist/components/primitives/badge.js +21 -0
  38. package/dist/components/primitives/badge.js.map +1 -0
  39. package/dist/{atoms → components/primitives}/breadcrumb.js +1 -1
  40. package/dist/components/primitives/breadcrumb.js.map +1 -0
  41. package/dist/components/primitives/button-group-variants.d.ts +3 -0
  42. package/dist/components/primitives/button-group-variants.js +19 -0
  43. package/dist/components/primitives/button-group-variants.js.map +1 -0
  44. package/dist/components/primitives/button-group.d.ts +13 -0
  45. package/dist/components/primitives/button-group.js +52 -0
  46. package/dist/components/primitives/button-group.js.map +1 -0
  47. package/dist/components/primitives/button-variants.d.ts +4 -0
  48. package/dist/{atoms/button.js → components/primitives/button-variants.js} +8 -28
  49. package/dist/components/primitives/button-variants.js.map +1 -0
  50. package/dist/components/primitives/button.d.ts +9 -0
  51. package/dist/components/primitives/button.js +21 -0
  52. package/dist/components/primitives/button.js.map +1 -0
  53. package/dist/{atoms → components/primitives}/calendar.d.ts +1 -1
  54. package/dist/{atoms → components/primitives}/calendar.js +5 -4
  55. package/dist/components/primitives/calendar.js.map +1 -0
  56. package/dist/{atoms → components/primitives}/card.js +1 -1
  57. package/dist/components/primitives/card.js.map +1 -0
  58. package/dist/{atoms → components/primitives}/carousel.d.ts +1 -1
  59. package/dist/{atoms → components/primitives}/carousel.js +1 -1
  60. package/dist/components/primitives/carousel.js.map +1 -0
  61. package/dist/{atoms → components/primitives}/chart.js +1 -1
  62. package/dist/components/primitives/chart.js.map +1 -0
  63. package/dist/{atoms → components/primitives}/checkbox.js +1 -1
  64. package/dist/components/primitives/checkbox.js.map +1 -0
  65. package/dist/components/primitives/collapsible.js.map +1 -0
  66. package/dist/{atoms → components/primitives}/command.d.ts +1 -1
  67. package/dist/{atoms → components/primitives}/command.js +1 -1
  68. package/dist/components/primitives/command.js.map +1 -0
  69. package/dist/{atoms → components/primitives}/context-menu.js +1 -1
  70. package/dist/components/primitives/context-menu.js.map +1 -0
  71. package/dist/components/primitives/custom-button-variants.d.ts +5 -0
  72. package/dist/components/primitives/custom-button-variants.js +38 -0
  73. package/dist/components/primitives/custom-button-variants.js.map +1 -0
  74. package/dist/components/primitives/custom-button.d.ts +22 -0
  75. package/dist/components/primitives/custom-button.js +64 -0
  76. package/dist/components/primitives/custom-button.js.map +1 -0
  77. package/dist/{atoms → components/primitives}/dialog.js +8 -8
  78. package/dist/components/primitives/dialog.js.map +1 -0
  79. package/dist/{atoms → components/primitives}/drawer.js +1 -1
  80. package/dist/components/primitives/drawer.js.map +1 -0
  81. package/dist/{atoms → components/primitives}/dropdown-menu.js +1 -1
  82. package/dist/components/primitives/dropdown-menu.js.map +1 -0
  83. package/dist/{atoms → components/primitives}/empty.js +1 -1
  84. package/dist/components/primitives/empty.js.map +1 -0
  85. package/dist/{atoms → components/primitives}/field.d.ts +1 -1
  86. package/dist/{atoms → components/primitives}/field.js +1 -1
  87. package/dist/components/primitives/field.js.map +1 -0
  88. package/dist/components/primitives/form-context.d.ts +23 -0
  89. package/dist/components/primitives/form-context.js +26 -0
  90. package/dist/components/primitives/form-context.js.map +1 -0
  91. package/dist/components/primitives/form.d.ts +11 -0
  92. package/dist/components/primitives/form.js +85 -0
  93. package/dist/components/primitives/form.js.map +1 -0
  94. package/dist/{atoms → components/primitives}/hover-card.js +1 -1
  95. package/dist/components/primitives/hover-card.js.map +1 -0
  96. package/dist/components/primitives/index.d.ts +116 -0
  97. package/dist/{atoms → components/primitives}/input-group.d.ts +2 -2
  98. package/dist/{atoms → components/primitives}/input-group.js +1 -1
  99. package/dist/components/primitives/input-group.js.map +1 -0
  100. package/dist/{atoms → components/primitives}/input-otp.js +1 -1
  101. package/dist/components/primitives/input-otp.js.map +1 -0
  102. package/dist/{atoms → components/primitives}/input.js +1 -1
  103. package/dist/components/primitives/input.js.map +1 -0
  104. package/dist/{atoms → components/primitives}/item.d.ts +2 -2
  105. package/dist/{atoms → components/primitives}/item.js +1 -1
  106. package/dist/components/primitives/item.js.map +1 -0
  107. package/dist/{atoms → components/primitives}/kbd.js +1 -1
  108. package/dist/components/primitives/kbd.js.map +1 -0
  109. package/dist/{atoms → components/primitives}/label.js +1 -1
  110. package/dist/components/primitives/label.js.map +1 -0
  111. package/dist/components/primitives/loading-swap.d.ts +8 -0
  112. package/dist/components/primitives/loading-swap.js +25 -0
  113. package/dist/components/primitives/loading-swap.js.map +1 -0
  114. package/dist/{atoms → components/primitives}/menubar.js +1 -1
  115. package/dist/components/primitives/menubar.js.map +1 -0
  116. package/dist/components/primitives/navigation-menu-variants.d.ts +1 -0
  117. package/dist/components/primitives/navigation-menu-variants.js +8 -0
  118. package/dist/components/primitives/navigation-menu-variants.js.map +1 -0
  119. package/dist/components/primitives/navigation-menu.d.ts +13 -0
  120. package/dist/components/primitives/navigation-menu.js +102 -0
  121. package/dist/components/primitives/navigation-menu.js.map +1 -0
  122. package/dist/{atoms → components/primitives}/pagination.d.ts +1 -1
  123. package/dist/{atoms → components/primitives}/pagination.js +2 -2
  124. package/dist/components/primitives/pagination.js.map +1 -0
  125. package/dist/{atoms → components/primitives}/popover.js +1 -1
  126. package/dist/components/primitives/popover.js.map +1 -0
  127. package/dist/{atoms → components/primitives}/progress.js +1 -1
  128. package/dist/components/primitives/progress.js.map +1 -0
  129. package/dist/{atoms → components/primitives}/radio-group.js +1 -1
  130. package/dist/components/primitives/radio-group.js.map +1 -0
  131. package/dist/{atoms → components/primitives}/resizable.js +1 -1
  132. package/dist/components/primitives/resizable.js.map +1 -0
  133. package/dist/{atoms → components/primitives}/scroll-area.js +1 -1
  134. package/dist/components/primitives/scroll-area.js.map +1 -0
  135. package/dist/{atoms → components/primitives}/select.js +1 -1
  136. package/dist/components/primitives/select.js.map +1 -0
  137. package/dist/{atoms → components/primitives}/separator.js +1 -1
  138. package/dist/components/primitives/separator.js.map +1 -0
  139. package/dist/{atoms → components/primitives}/sheet.js +5 -5
  140. package/dist/components/primitives/sheet.js.map +1 -0
  141. package/dist/components/primitives/sidebar-context.d.ts +12 -0
  142. package/dist/components/primitives/sidebar-context.js +13 -0
  143. package/dist/components/primitives/sidebar-context.js.map +1 -0
  144. package/dist/components/primitives/sidebar-variants.d.ts +4 -0
  145. package/dist/components/primitives/sidebar-variants.js +25 -0
  146. package/dist/components/primitives/sidebar-variants.js.map +1 -0
  147. package/dist/components/primitives/sidebar.d.ts +56 -0
  148. package/dist/components/primitives/sidebar.js +542 -0
  149. package/dist/components/primitives/sidebar.js.map +1 -0
  150. package/dist/{atoms → components/primitives}/skeleton.js +1 -1
  151. package/dist/components/primitives/skeleton.js.map +1 -0
  152. package/dist/{atoms → components/primitives}/slider.js +1 -1
  153. package/dist/components/primitives/slider.js.map +1 -0
  154. package/dist/components/primitives/sonner.js.map +1 -0
  155. package/dist/{atoms → components/primitives}/spinner.js +1 -1
  156. package/dist/components/primitives/spinner.js.map +1 -0
  157. package/dist/{atoms → components/primitives}/switch.js +1 -1
  158. package/dist/components/primitives/switch.js.map +1 -0
  159. package/dist/{atoms → components/primitives}/table.js +1 -1
  160. package/dist/components/primitives/table.js.map +1 -0
  161. package/dist/{atoms → components/primitives}/tabs.js +1 -1
  162. package/dist/components/primitives/tabs.js.map +1 -0
  163. package/dist/{atoms → components/primitives}/textarea.js +1 -1
  164. package/dist/components/primitives/textarea.js.map +1 -0
  165. package/dist/components/primitives/theme-provider.js.map +1 -0
  166. package/dist/{atoms → components/primitives}/toggle-group.d.ts +1 -1
  167. package/dist/{atoms → components/primitives}/toggle-group.js +2 -2
  168. package/dist/components/primitives/toggle-group.js.map +1 -0
  169. package/dist/components/primitives/toggle-variants.d.ts +4 -0
  170. package/dist/{atoms/toggle.js → components/primitives/toggle-variants.js} +5 -24
  171. package/dist/components/primitives/toggle-variants.js.map +1 -0
  172. package/dist/components/primitives/toggle.d.ts +9 -0
  173. package/dist/components/primitives/toggle.js +21 -0
  174. package/dist/components/primitives/toggle.js.map +1 -0
  175. package/dist/{atoms → components/primitives}/tooltip.js +1 -1
  176. package/dist/components/primitives/tooltip.js.map +1 -0
  177. package/dist/composites/index.js +11 -0
  178. package/dist/{organisms → composites}/index.js.map +1 -1
  179. package/dist/hooks/index.d.ts +7 -0
  180. package/dist/hooks/index.js +8 -2
  181. package/dist/hooks/index.js.map +1 -1
  182. package/dist/hooks/use-aria-live.d.ts +22 -0
  183. package/dist/hooks/use-aria-live.js +18 -0
  184. package/dist/hooks/use-aria-live.js.map +1 -0
  185. package/dist/hooks/use-focus-visible.d.ts +15 -0
  186. package/dist/hooks/use-focus-visible.js +16 -0
  187. package/dist/hooks/use-focus-visible.js.map +1 -0
  188. package/dist/hooks/use-screen-reader-only.d.ts +14 -0
  189. package/dist/hooks/use-screen-reader-only.js +10 -0
  190. package/dist/hooks/use-screen-reader-only.js.map +1 -0
  191. package/dist/index.d.ts +10 -58
  192. package/dist/index.js +371 -344
  193. package/dist/index.js.map +1 -1
  194. package/dist/lib/index.d.ts +3 -0
  195. package/dist/lib/index.js +8 -2
  196. package/dist/lib/index.js.map +1 -1
  197. package/dist/lib/utils-enhanced.d.ts +27 -0
  198. package/dist/lib/utils-enhanced.js +28 -0
  199. package/dist/lib/utils-enhanced.js.map +1 -0
  200. package/dist/lib/utils-enhanced.test.d.ts +1 -0
  201. package/dist/marketing/index.js +9 -0
  202. package/dist/primitives/index.js +345 -0
  203. package/dist/{atoms → primitives}/index.js.map +1 -1
  204. package/package.json +18 -26
  205. package/dist/atoms/accordion.js.map +0 -1
  206. package/dist/atoms/alert-dialog.js.map +0 -1
  207. package/dist/atoms/alert.js.map +0 -1
  208. package/dist/atoms/aspect-ratio.js.map +0 -1
  209. package/dist/atoms/avatar.js.map +0 -1
  210. package/dist/atoms/badge.d.ts +0 -9
  211. package/dist/atoms/badge.js.map +0 -1
  212. package/dist/atoms/breadcrumb.js.map +0 -1
  213. package/dist/atoms/button-group.d.ts +0 -11
  214. package/dist/atoms/button-group.js +0 -76
  215. package/dist/atoms/button-group.js.map +0 -1
  216. package/dist/atoms/button.d.ts +0 -10
  217. package/dist/atoms/button.js.map +0 -1
  218. package/dist/atoms/calendar.js.map +0 -1
  219. package/dist/atoms/card.js.map +0 -1
  220. package/dist/atoms/carousel.js.map +0 -1
  221. package/dist/atoms/chart.js.map +0 -1
  222. package/dist/atoms/checkbox.js.map +0 -1
  223. package/dist/atoms/collapsible.js.map +0 -1
  224. package/dist/atoms/command.js.map +0 -1
  225. package/dist/atoms/context-menu.js.map +0 -1
  226. package/dist/atoms/dialog.js.map +0 -1
  227. package/dist/atoms/drawer.js.map +0 -1
  228. package/dist/atoms/dropdown-menu.js.map +0 -1
  229. package/dist/atoms/empty.js.map +0 -1
  230. package/dist/atoms/field.js.map +0 -1
  231. package/dist/atoms/form.d.ts +0 -24
  232. package/dist/atoms/form.js +0 -88
  233. package/dist/atoms/form.js.map +0 -1
  234. package/dist/atoms/hover-card.js.map +0 -1
  235. package/dist/atoms/index.d.ts +0 -54
  236. package/dist/atoms/index.js +0 -342
  237. package/dist/atoms/input-group.js.map +0 -1
  238. package/dist/atoms/input-otp.js.map +0 -1
  239. package/dist/atoms/input.js.map +0 -1
  240. package/dist/atoms/item.js.map +0 -1
  241. package/dist/atoms/kbd.js.map +0 -1
  242. package/dist/atoms/label.js.map +0 -1
  243. package/dist/atoms/menubar.js.map +0 -1
  244. package/dist/atoms/navigation-menu.d.ts +0 -14
  245. package/dist/atoms/navigation-menu.js +0 -160
  246. package/dist/atoms/navigation-menu.js.map +0 -1
  247. package/dist/atoms/pagination.js.map +0 -1
  248. package/dist/atoms/popover.js.map +0 -1
  249. package/dist/atoms/progress.js.map +0 -1
  250. package/dist/atoms/radio-group.js.map +0 -1
  251. package/dist/atoms/resizable.js.map +0 -1
  252. package/dist/atoms/scroll-area.js.map +0 -1
  253. package/dist/atoms/select.js.map +0 -1
  254. package/dist/atoms/separator.js.map +0 -1
  255. package/dist/atoms/sheet.js.map +0 -1
  256. package/dist/atoms/sidebar.d.ts +0 -70
  257. package/dist/atoms/sidebar.js +0 -573
  258. package/dist/atoms/sidebar.js.map +0 -1
  259. package/dist/atoms/skeleton.js.map +0 -1
  260. package/dist/atoms/slider.js.map +0 -1
  261. package/dist/atoms/sonner.js.map +0 -1
  262. package/dist/atoms/spinner.js.map +0 -1
  263. package/dist/atoms/switch.js.map +0 -1
  264. package/dist/atoms/table.js.map +0 -1
  265. package/dist/atoms/tabs.js.map +0 -1
  266. package/dist/atoms/textarea.js.map +0 -1
  267. package/dist/atoms/theme-provider.js.map +0 -1
  268. package/dist/atoms/toggle-group.js.map +0 -1
  269. package/dist/atoms/toggle.d.ts +0 -9
  270. package/dist/atoms/toggle.js.map +0 -1
  271. package/dist/atoms/tooltip.js.map +0 -1
  272. package/dist/default-layout.js +0 -81
  273. package/dist/default-layout.js.map +0 -1
  274. package/dist/molecules/index.d.ts +0 -3
  275. package/dist/molecules/index.js +0 -9
  276. package/dist/molecules/sidebar-theme-toggle.d.ts +0 -5
  277. package/dist/molecules/sidebar-theme-toggle.js +0 -39
  278. package/dist/molecules/sidebar-theme-toggle.js.map +0 -1
  279. package/dist/molecules/theme-toggle.js.map +0 -1
  280. package/dist/molecules/user-menu.js +0 -30
  281. package/dist/molecules/user-menu.js.map +0 -1
  282. package/dist/organisms/app-navbar.d.ts +0 -37
  283. package/dist/organisms/app-navbar.js +0 -111
  284. package/dist/organisms/app-navbar.js.map +0 -1
  285. package/dist/organisms/app-sidebar.d.ts +0 -37
  286. package/dist/organisms/app-sidebar.js +0 -159
  287. package/dist/organisms/app-sidebar.js.map +0 -1
  288. package/dist/organisms/index.d.ts +0 -2
  289. package/dist/organisms/index.js +0 -7
  290. /package/dist/{molecules → components/composites}/theme-toggle.d.ts +0 -0
  291. /package/dist/{molecules → components/composites}/user-menu.d.ts +0 -0
  292. /package/dist/{atoms → components/primitives}/accordion.d.ts +0 -0
  293. /package/dist/{atoms → components/primitives}/alert-dialog.d.ts +0 -0
  294. /package/dist/{atoms → components/primitives}/alert.d.ts +0 -0
  295. /package/dist/{atoms → components/primitives}/aspect-ratio.d.ts +0 -0
  296. /package/dist/{atoms → components/primitives}/aspect-ratio.js +0 -0
  297. /package/dist/{atoms → components/primitives}/avatar.d.ts +0 -0
  298. /package/dist/{atoms → components/primitives}/breadcrumb.d.ts +0 -0
  299. /package/dist/{atoms → components/primitives}/card.d.ts +0 -0
  300. /package/dist/{atoms → components/primitives}/chart.d.ts +0 -0
  301. /package/dist/{atoms → components/primitives}/checkbox.d.ts +0 -0
  302. /package/dist/{atoms → components/primitives}/collapsible.d.ts +0 -0
  303. /package/dist/{atoms → components/primitives}/collapsible.js +0 -0
  304. /package/dist/{atoms → components/primitives}/context-menu.d.ts +0 -0
  305. /package/dist/{atoms → components/primitives}/dialog.d.ts +0 -0
  306. /package/dist/{atoms → components/primitives}/drawer.d.ts +0 -0
  307. /package/dist/{atoms → components/primitives}/dropdown-menu.d.ts +0 -0
  308. /package/dist/{atoms → components/primitives}/empty.d.ts +0 -0
  309. /package/dist/{atoms → components/primitives}/hover-card.d.ts +0 -0
  310. /package/dist/{atoms → components/primitives}/input-otp.d.ts +0 -0
  311. /package/dist/{atoms → components/primitives}/input.d.ts +0 -0
  312. /package/dist/{atoms → components/primitives}/kbd.d.ts +0 -0
  313. /package/dist/{atoms → components/primitives}/label.d.ts +0 -0
  314. /package/dist/{atoms → components/primitives}/menubar.d.ts +0 -0
  315. /package/dist/{atoms → components/primitives}/popover.d.ts +0 -0
  316. /package/dist/{atoms → components/primitives}/progress.d.ts +0 -0
  317. /package/dist/{atoms → components/primitives}/radio-group.d.ts +0 -0
  318. /package/dist/{atoms → components/primitives}/resizable.d.ts +0 -0
  319. /package/dist/{atoms → components/primitives}/scroll-area.d.ts +0 -0
  320. /package/dist/{atoms → components/primitives}/select.d.ts +0 -0
  321. /package/dist/{atoms → components/primitives}/separator.d.ts +0 -0
  322. /package/dist/{atoms → components/primitives}/sheet.d.ts +0 -0
  323. /package/dist/{atoms → components/primitives}/skeleton.d.ts +0 -0
  324. /package/dist/{atoms → components/primitives}/slider.d.ts +0 -0
  325. /package/dist/{atoms → components/primitives}/sonner.d.ts +0 -0
  326. /package/dist/{atoms → components/primitives}/sonner.js +0 -0
  327. /package/dist/{atoms → components/primitives}/spinner.d.ts +0 -0
  328. /package/dist/{atoms → components/primitives}/switch.d.ts +0 -0
  329. /package/dist/{atoms → components/primitives}/table.d.ts +0 -0
  330. /package/dist/{atoms → components/primitives}/tabs.d.ts +0 -0
  331. /package/dist/{atoms → components/primitives}/textarea.d.ts +0 -0
  332. /package/dist/{atoms → components/primitives}/theme-provider.d.ts +0 -0
  333. /package/dist/{atoms → components/primitives}/theme-provider.js +0 -0
  334. /package/dist/{atoms → components/primitives}/tooltip.d.ts +0 -0
  335. /package/dist/{molecules → marketing}/index.js.map +0 -0
@@ -0,0 +1,52 @@
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import * as s from "react";
3
+ import { Slot as p } from "@radix-ui/react-slot";
4
+ import { cn as n } from "../../lib/utils.js";
5
+ import { Separator as m } from "./separator.js";
6
+ import { buttonGroupVariants as u } from "./button-group-variants.js";
7
+ const i = s.forwardRef(
8
+ ({ className: o, orientation: t, ...r }, a) => /* @__PURE__ */ e(
9
+ "div",
10
+ {
11
+ ref: a,
12
+ role: "group",
13
+ "data-slot": "button-group",
14
+ "data-orientation": t || "horizontal",
15
+ className: n(u({ orientation: t }), o),
16
+ ...r
17
+ }
18
+ )
19
+ ), d = s.forwardRef(
20
+ ({ className: o, asChild: t = !1, ...r }, a) => /* @__PURE__ */ e(
21
+ t ? p : "div",
22
+ {
23
+ ref: a,
24
+ className: n(
25
+ "bg-muted flex items-center gap-2 rounded-md border px-4 text-sm font-medium shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
26
+ o
27
+ ),
28
+ ...r
29
+ }
30
+ )
31
+ ), l = s.forwardRef(({ className: o, orientation: t = "vertical", ...r }, a) => /* @__PURE__ */ e(
32
+ m,
33
+ {
34
+ ref: a,
35
+ "data-slot": "button-group-separator",
36
+ orientation: t,
37
+ className: n(
38
+ "bg-input relative m-0! self-stretch data-[orientation=vertical]:h-auto",
39
+ o
40
+ ),
41
+ ...r
42
+ }
43
+ ));
44
+ i.displayName = "ButtonGroup";
45
+ d.displayName = "ButtonGroupText";
46
+ l.displayName = "ButtonGroupSeparator";
47
+ export {
48
+ i as ButtonGroup,
49
+ l as ButtonGroupSeparator,
50
+ d as ButtonGroupText
51
+ };
52
+ //# sourceMappingURL=button-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button-group.js","sources":["../../../src/components/primitives/button-group.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { Separator } from \"../primitives/separator\";\nimport { buttonGroupVariants } from \"./button-group-variants\";\n\ninterface ButtonGroupProps\n extends React.ComponentProps<\"div\">,\n VariantProps<typeof buttonGroupVariants> {}\n\nconst ButtonGroup = React.forwardRef<HTMLDivElement, ButtonGroupProps>(\n ({ className, orientation, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation || \"horizontal\"}\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...props}\n />\n );\n },\n);\n\ninterface ButtonGroupTextProps extends React.ComponentProps<\"div\"> {\n asChild?: boolean;\n}\n\nconst ButtonGroupText = React.forwardRef<HTMLDivElement, ButtonGroupTextProps>(\n ({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <Comp\n ref={ref}\n className={cn(\n \"bg-muted flex items-center gap-2 rounded-md border px-4 text-sm font-medium shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n },\n);\n\nconst ButtonGroupSeparator = React.forwardRef<\n React.ElementRef<typeof Separator>,\n React.ComponentPropsWithoutRef<typeof Separator>\n>(({ className, orientation = \"vertical\", ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n \"bg-input relative m-0! self-stretch data-[orientation=vertical]:h-auto\",\n className,\n )}\n {...props}\n />\n );\n});\n\nButtonGroup.displayName = \"ButtonGroup\";\nButtonGroupText.displayName = \"ButtonGroupText\";\nButtonGroupSeparator.displayName = \"ButtonGroupSeparator\";\n\nexport { ButtonGroup, ButtonGroupSeparator, ButtonGroupText };\nexport type { ButtonGroupProps, ButtonGroupTextProps };\n"],"names":["jsx","React","Slot","cn","Separator","buttonGroupVariants","ButtonGroup","className","orientation","props","ref","ButtonGroupText","asChild","ButtonGroupSeparator"],"mappings":"AAaA,SAAA,OAAAA,SAAA;AAAA,YAAAC,OAAA;AAAA,SAAA,QAAAC,SAAA;AAAA,SAAA,MAAAC,SAAA;AAAA,SAAA,aAAAC,SAAA;AAAA,SAAA,uBAAAC,SAAA;AAAA,MAAMC,IAAcL,EAAM;AAAA,EACxB,CAAC,EAAE,WAAAM,GAAW,aAAAC,GAAa,GAAGC,EAAA,GAASC,MAEnC,gBAAAV;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAU;AAAA,MACA,MAAK;AAAA,MACL,aAAU;AAAA,MACV,oBAAkBF,KAAe;AAAA,MACjC,WAAWL,EAAGE,EAAoB,EAAE,aAAAG,EAAA,CAAa,GAAGD,CAAS;AAAA,MAC5D,GAAGE;AAAA,IAAA;AAAA,EAAA;AAIZ,GAMME,IAAkBV,EAAM;AAAA,EAC5B,CAAC,EAAE,WAAAM,GAAW,SAAAK,IAAU,IAAO,GAAGH,EAAA,GAASC,MAIvC,gBAAAV;AAAA,IAHWY,IAAUV,IAAO;AAAA,IAG3B;AAAA,MACC,KAAAQ;AAAA,MACA,WAAWP;AAAA,QACT;AAAA,QACAI;AAAA,MAAA;AAAA,MAED,GAAGE;AAAA,IAAA;AAAA,EAAA;AAIZ,GAEMI,IAAuBZ,EAAM,WAGjC,CAAC,EAAE,WAAAM,GAAW,aAAAC,IAAc,YAAY,GAAGC,EAAA,GAASC,MAElD,gBAAAV;AAAA,EAACI;AAAA,EAAA;AAAA,IACC,KAAAM;AAAA,IACA,aAAU;AAAA,IACV,aAAAF;AAAA,IACA,WAAWL;AAAA,MACT;AAAA,MACAI;AAAA,IAAA;AAAA,IAED,GAAGE;AAAA,EAAA;AAAA,CAGT;AAEDH,EAAY,cAAc;AAC1BK,EAAgB,cAAc;AAC9BE,EAAqB,cAAc;"}
@@ -0,0 +1,4 @@
1
+ export declare const buttonVariants: (props?: ({
2
+ variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
3
+ size?: "default" | "sm" | "lg" | "icon" | "icon-sm" | "icon-lg" | null | undefined;
4
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
@@ -1,16 +1,13 @@
1
- import { jsx as o } from "react/jsx-runtime";
2
- import { Slot as s } from "@radix-ui/react-slot";
3
- import { cva as a } from "class-variance-authority";
4
- import { cn as d } from "../lib/utils.js";
5
- const c = a(
6
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
1
+ import { cva as e } from "class-variance-authority";
2
+ const i = e(
3
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive cursor-pointer",
7
4
  {
8
5
  variants: {
9
6
  variant: {
10
- default: "bg-primary text-primary-foreground hover:bg-primary/90",
11
- destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
7
+ default: "bg-primary text-primary-foreground hover:bg-primary/90 shadow-sm",
8
+ destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60 shadow-sm",
12
9
  outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
13
- secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
10
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80 shadow-sm",
14
11
  ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
15
12
  link: "text-primary underline-offset-4 hover:underline"
16
13
  },
@@ -29,24 +26,7 @@ const c = a(
29
26
  }
30
27
  }
31
28
  );
32
- function b({
33
- className: e,
34
- variant: r,
35
- size: t,
36
- asChild: i = !1,
37
- ...n
38
- }) {
39
- return /* @__PURE__ */ o(
40
- i ? s : "button",
41
- {
42
- "data-slot": "button",
43
- className: d(c({ variant: r, size: t, className: e })),
44
- ...n
45
- }
46
- );
47
- }
48
29
  export {
49
- b as Button,
50
- c as buttonVariants
30
+ i as buttonVariants
51
31
  };
52
- //# sourceMappingURL=button.js.map
32
+ //# sourceMappingURL=button-variants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button-variants.js","sources":["../../../src/components/primitives/button-variants.ts"],"sourcesContent":["import { cva } from \"class-variance-authority\";\n\nexport const buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive cursor-pointer\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90 shadow-sm\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60 shadow-sm\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80 shadow-sm\",\n ghost: \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n"],"names":["buttonVariants","cva"],"mappings":";AAEO,MAAMA,IAAiBC;AAAA,EAC5B;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,aACE;AAAA,QACF,SACE;AAAA,QACF,WAAW;AAAA,QACX,OAAO;AAAA,QACP,MAAM;AAAA,MAAA;AAAA,MAER,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,WAAW;AAAA,QACX,WAAW;AAAA,MAAA;AAAA,IACb;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ;"}
@@ -0,0 +1,9 @@
1
+ import { VariantProps } from 'class-variance-authority';
2
+ import { buttonVariants } from './button-variants';
3
+ import * as React from "react";
4
+ interface ButtonProps extends React.ComponentProps<"button">, VariantProps<typeof buttonVariants> {
5
+ asChild?: boolean;
6
+ }
7
+ declare const Button: React.ForwardRefExoticComponent<Omit<ButtonProps, "ref"> & React.RefAttributes<HTMLButtonElement>>;
8
+ export { Button };
9
+ export type { ButtonProps };
@@ -0,0 +1,21 @@
1
+ import { jsx as s } from "react/jsx-runtime";
2
+ import * as p from "react";
3
+ import { Slot as f } from "@radix-ui/react-slot";
4
+ import { cn as e } from "../../lib/utils.js";
5
+ import { buttonVariants as i } from "./button-variants.js";
6
+ const u = p.forwardRef(
7
+ ({ className: t, variant: o, size: r, asChild: m = !1, ...a }, n) => /* @__PURE__ */ s(
8
+ m ? f : "button",
9
+ {
10
+ ref: n,
11
+ "data-slot": "button",
12
+ className: e(i({ variant: o, size: r, className: t })),
13
+ ...a
14
+ }
15
+ )
16
+ );
17
+ u.displayName = "Button";
18
+ export {
19
+ u as Button
20
+ };
21
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","sources":["../../../src/components/primitives/button.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"@/lib/utils\";\nimport { buttonVariants } from \"./button-variants\";\n\ninterface ButtonProps extends React.ComponentProps<\"button\">, VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n ref={ref}\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n );\n },\n);\n\nButton.displayName = \"Button\";\n\nexport { Button };\nexport type { ButtonProps };\n"],"names":["jsx","React","Slot","cn","buttonVariants","Button","className","variant","size","asChild","props","ref"],"mappings":"AAYA,SAAA,OAAAA,SAAA;AAAA,YAAAC,OAAA;AAAA,SAAA,QAAAC,SAAA;AAAA,SAAA,MAAAC,SAAA;AAAA,SAAA,kBAAAC,SAAA;AAAA,MAAMC,IAASJ,EAAM;AAAA,EACnB,CAAC,EAAE,WAAAK,GAAW,SAAAC,GAAS,MAAAC,GAAM,SAAAC,IAAU,IAAO,GAAGC,EAAA,GAASC,MAItD,gBAAAX;AAAA,IAHWS,IAAUP,IAAO;AAAA,IAG3B;AAAA,MACC,KAAAS;AAAA,MACA,aAAU;AAAA,MACV,WAAWR,EAAGC,EAAe,EAAE,SAAAG,GAAS,MAAAC,GAAM,WAAAF,EAAA,CAAW,CAAC;AAAA,MACzD,GAAGI;AAAA,IAAA;AAAA,EAAA;AAIZ;AAEAL,EAAO,cAAc;"}
@@ -1,5 +1,5 @@
1
1
  import { DayButton, DayPicker } from 'react-day-picker';
2
- import { Button } from './button';
2
+ import { Button } from '../primitives/button';
3
3
  import * as React from "react";
4
4
  declare function Calendar({ className, classNames, showOutsideDays, captionLayout, buttonVariant, formatters, components, ...props }: React.ComponentProps<typeof DayPicker> & {
5
5
  buttonVariant?: React.ComponentProps<typeof Button>["variant"];
@@ -2,9 +2,10 @@ import { jsx as n } from "react/jsx-runtime";
2
2
  import * as m from "react";
3
3
  import { ChevronLeftIcon as b, ChevronRightIcon as h, ChevronDownIcon as w } from "lucide-react";
4
4
  import { getDefaultClassNames as p, DayPicker as _ } from "react-day-picker";
5
- import { cn as e } from "../lib/utils.js";
6
- import { buttonVariants as f, Button as y } from "./button.js";
7
- function j({
5
+ import { cn as e } from "../../lib/utils.js";
6
+ import { Button as y } from "./button.js";
7
+ import { buttonVariants as f } from "./button-variants.js";
8
+ function R({
8
9
  className: c,
9
10
  classNames: i,
10
11
  showOutsideDays: r = !0,
@@ -139,7 +140,7 @@ function v({
139
140
  );
140
141
  }
141
142
  export {
142
- j as Calendar,
143
+ R as Calendar,
143
144
  v as CalendarDayButton
144
145
  };
145
146
  //# sourceMappingURL=calendar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.js","sources":["../../../src/components/primitives/calendar.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\nimport { DayButton, DayPicker, getDefaultClassNames } from \"react-day-picker\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"../primitives/button\";\nimport { buttonVariants } from \"../primitives/button-variants\";\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"];\n}) {\n const defaultClassNames = getDefaultClassNames();\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className,\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) => date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\"flex gap-4 flex-col md:flex-row relative\", defaultClassNames.months),\n month: cn(\"flex flex-col w-full gap-4\", defaultClassNames.month),\n nav: cn(\n \"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\",\n defaultClassNames.nav,\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_previous,\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_next,\n ),\n month_caption: cn(\n \"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\",\n defaultClassNames.month_caption,\n ),\n dropdowns: cn(\n \"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5\",\n defaultClassNames.dropdowns,\n ),\n dropdown_root: cn(\n \"relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md\",\n defaultClassNames.dropdown_root,\n ),\n dropdown: cn(\"absolute bg-popover inset-0 opacity-0\", defaultClassNames.dropdown),\n caption_label: cn(\n \"select-none font-medium\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5\",\n defaultClassNames.caption_label,\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none\",\n defaultClassNames.weekday,\n ),\n week: cn(\"flex w-full mt-2\", defaultClassNames.week),\n week_number_header: cn(\"select-none w-(--cell-size)\", defaultClassNames.week_number_header),\n week_number: cn(\n \"text-[0.8rem] select-none text-muted-foreground\",\n defaultClassNames.week_number,\n ),\n day: cn(\n \"relative w-full h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\"\n : \"[&:first-child[data-selected=true]_button]:rounded-l-md\",\n defaultClassNames.day,\n ),\n range_start: cn(\"rounded-l-md bg-accent\", defaultClassNames.range_start),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\"rounded-r-md bg-accent\", defaultClassNames.range_end),\n today: cn(\n \"bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none\",\n defaultClassNames.today,\n ),\n outside: cn(\n \"text-muted-foreground aria-selected:text-muted-foreground\",\n defaultClassNames.outside,\n ),\n disabled: cn(\"text-muted-foreground opacity-50\", defaultClassNames.disabled),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return <div data-slot=\"calendar\" ref={rootRef} className={cn(className)} {...props} />;\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />;\n }\n\n if (orientation === \"right\") {\n return <ChevronRightIcon className={cn(\"size-4\", className)} {...props} />;\n }\n\n return <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />;\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n );\n },\n ...components,\n }}\n {...props}\n />\n );\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames();\n\n const ref = React.useRef<HTMLButtonElement>(null);\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus();\n }, [modifiers.focused]);\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n \"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Calendar, CalendarDayButton };\n"],"names":["jsx","React","ChevronLeftIcon","ChevronRightIcon","ChevronDownIcon","getDefaultClassNames","DayPicker","cn","Button","buttonVariants","Calendar","className","classNames","showOutsideDays","captionLayout","buttonVariant","formatters","components","props","defaultClassNames","date","rootRef","orientation","CalendarDayButton","children","day","modifiers","ref"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as a } from "react/jsx-runtime";
2
- import { cn as o } from "../lib/utils.js";
2
+ import { cn as o } from "../../lib/utils.js";
3
3
  function n({ className: t, ...r }) {
4
4
  return /* @__PURE__ */ a(
5
5
  "div",
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.js","sources":["../../../src/components/primitives/card.tsx"],"sourcesContent":["import * as React from \"react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Card({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"leading-none font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\"col-start-2 row-span-2 row-start-1 self-start justify-self-end\", className)}\n {...props}\n />\n );\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div data-slot=\"card-content\" className={cn(\"px-6\", className)} {...props} />;\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center px-6 [.border-t]:pt-6\", className)}\n {...props}\n />\n );\n}\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent };\n"],"names":["Card","className","props","jsx","cn","CardHeader","CardTitle","CardDescription","CardAction","CardContent","CardFooter"],"mappings":";;AAIA,SAASA,EAAK,EAAE,WAAAC,GAAW,GAAGC,KAAsC;AAClE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAH;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASG,EAAW,EAAE,WAAAJ,GAAW,GAAGC,KAAsC;AACxE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAH;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASI,EAAU,EAAE,WAAAL,GAAW,GAAGC,KAAsC;AACvE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,8BAA8BH,CAAS;AAAA,MACpD,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASK,EAAgB,EAAE,WAAAN,GAAW,GAAGC,KAAsC;AAC7E,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,iCAAiCH,CAAS;AAAA,MACvD,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASM,EAAW,EAAE,WAAAP,GAAW,GAAGC,KAAsC;AACxE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,kEAAkEH,CAAS;AAAA,MACxF,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;AAEA,SAASO,EAAY,EAAE,WAAAR,GAAW,GAAGC,KAAsC;AACzE,SAAO,gBAAAC,EAAC,OAAA,EAAI,aAAU,gBAAe,WAAWC,EAAG,QAAQH,CAAS,GAAI,GAAGC,EAAA,CAAO;AACpF;AAEA,SAASQ,EAAW,EAAE,WAAAT,GAAW,GAAGC,KAAsC;AACxE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,2CAA2CH,CAAS;AAAA,MACjE,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -1,5 +1,5 @@
1
1
  import { default as useEmblaCarousel, UseEmblaCarouselType } from 'embla-carousel-react';
2
- import { Button } from './button';
2
+ import { Button } from '../primitives/button';
3
3
  import * as React from "react";
4
4
  type CarouselApi = UseEmblaCarouselType[1];
5
5
  type UseCarouselParameters = Parameters<typeof useEmblaCarousel>;
@@ -2,7 +2,7 @@ import { jsx as a, jsxs as h } from "react/jsx-runtime";
2
2
  import * as l from "react";
3
3
  import k from "embla-carousel-react";
4
4
  import { ArrowLeft as z, ArrowRight as g } from "lucide-react";
5
- import { cn as d } from "../lib/utils.js";
5
+ import { cn as d } from "../../lib/utils.js";
6
6
  import { Button as v } from "./button.js";
7
7
  const N = l.createContext(null);
8
8
  function m() {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"carousel.js","sources":["../../../src/components/primitives/carousel.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport useEmblaCarousel, { type UseEmblaCarouselType } from \"embla-carousel-react\";\nimport { ArrowLeft, ArrowRight } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\nimport { Button } from \"../primitives/button\";\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\ntype CarouselProps = {\n opts?: CarouselOptions;\n plugins?: CarouselPlugin;\n orientation?: \"horizontal\" | \"vertical\";\n setApi?: (api: CarouselApi) => void;\n};\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n api: ReturnType<typeof useEmblaCarousel>[1];\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n} & CarouselProps;\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\");\n }\n\n return context;\n}\n\nfunction Carousel({\n orientation = \"horizontal\",\n opts,\n setApi,\n plugins,\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & CarouselProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\n },\n plugins,\n );\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\n const [canScrollNext, setCanScrollNext] = React.useState(false);\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return;\n setCanScrollPrev(api.canScrollPrev());\n setCanScrollNext(api.canScrollNext());\n }, []);\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n scrollPrev();\n } else if (event.key === \"ArrowRight\") {\n event.preventDefault();\n scrollNext();\n }\n },\n [scrollPrev, scrollNext],\n );\n\n React.useEffect(() => {\n if (!api || !setApi) return;\n setApi(api);\n }, [api, setApi]);\n\n React.useEffect(() => {\n if (!api) return;\n onSelect(api);\n api.on(\"reInit\", onSelect);\n api.on(\"select\", onSelect);\n\n return () => {\n api?.off(\"select\", onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation: orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn(\"relative\", className)}\n role=\"region\"\n aria-roledescription=\"carousel\"\n data-slot=\"carousel\"\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n}\n\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div ref={carouselRef} className=\"overflow-hidden\" data-slot=\"carousel-content\">\n <div\n className={cn(\"flex\", orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\", className)}\n {...props}\n />\n </div>\n );\n}\n\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\n const { orientation } = useCarousel();\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n data-slot=\"carousel-item\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CarouselPrevious({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-previous\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -left-12 -translate-y-1/2\"\n : \"-top-12 left-1/2 -translate-x-1/2 rotate-90\",\n className,\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ArrowLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n}\n\nfunction CarouselNext({\n className,\n variant = \"outline\",\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n data-slot=\"carousel-next\"\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\"\n ? \"top-1/2 -right-12 -translate-y-1/2\"\n : \"-bottom-12 left-1/2 -translate-x-1/2 rotate-90\",\n className,\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ArrowRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n}\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n};\n"],"names":["jsx","jsxs","React","useEmblaCarousel","ArrowLeft","ArrowRight","cn","Button","CarouselContext","useCarousel","context","Carousel","orientation","opts","setApi","plugins","className","children","props","carouselRef","api","canScrollPrev","setCanScrollPrev","canScrollNext","setCanScrollNext","onSelect","scrollPrev","scrollNext","handleKeyDown","event","CarouselContent","CarouselItem","CarouselPrevious","variant","size","CarouselNext"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as s, jsxs as f, Fragment as P } from "react/jsx-runtime";
2
2
  import * as v from "react";
3
3
  import * as _ from "recharts";
4
- import { cn as l } from "../lib/utils.js";
4
+ import { cn as l } from "../../lib/utils.js";
5
5
  const T = { light: "", dark: ".dark" }, j = v.createContext(null);
6
6
  function y() {
7
7
  const c = v.useContext(j);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart.js","sources":["../../../src/components/primitives/chart.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as RechartsPrimitive from \"recharts\";\n\nimport { cn } from \"@/lib/utils\";\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const;\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode;\n icon?: React.ComponentType;\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n );\n};\n\ntype ChartContextProps = {\n config: ChartConfig;\n};\n\n// Type for chart payload items\ninterface ChartPayloadItem {\n type?: \"none\";\n dataKey?: string;\n name?: string;\n value?: number | string;\n color?: string;\n payload?: Record<string, unknown>;\n fill?: string;\n [key: string]: unknown;\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nfunction useChart() {\n const context = React.useContext(ChartContext);\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\");\n }\n\n return context;\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig;\n children: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>[\"children\"];\n}) {\n const uniqueId = React.useId();\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"[&_.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-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 flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className,\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>{children}</RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(([, config]) => config.theme || config.color);\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color = itemConfig.theme?.[theme as keyof typeof itemConfig.theme] || itemConfig.color;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .join(\"\\n\")}\n}\n`,\n )\n .join(\"\\n\"),\n }}\n />\n );\n};\n\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean;\n hideIndicator?: boolean;\n indicator?: \"line\" | \"dot\" | \"dashed\";\n nameKey?: string;\n labelKey?: string;\n payload?: ChartPayloadItem[];\n label?: string;\n }) {\n const { config } = useChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey || item?.dataKey || item?.name || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label;\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>{labelFormatter(value, payload)}</div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>;\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\";\n\n return (\n <div\n className={cn(\n \"border-border/50 bg-background grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl\",\n className,\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload\n .filter((item: ChartPayloadItem) => item.type !== \"none\")\n .map((item: ChartPayloadItem, index: number) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const indicatorColor = color || item.payload?.fill || item.color;\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5\",\n indicator === \"dot\" && \"items-center\",\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n },\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\",\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"text-foreground font-mono font-medium tabular-nums\">\n {typeof item.value === \"number\"\n ? item.value.toLocaleString()\n : item.value}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> &\n Pick<RechartsPrimitive.LegendProps, \"verticalAlign\"> & {\n hideIcon?: boolean;\n nameKey?: string;\n payload?: ChartPayloadItem[];\n }) {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className,\n )}\n >\n {payload\n .filter((item: ChartPayloadItem) => item.type !== \"none\")\n .map((item: ChartPayloadItem) => {\n const key = `${nameKey || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n key={item.value}\n className={cn(\n \"[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3\",\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n );\n })}\n </div>\n );\n}\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n \"payload\" in payload && typeof payload.payload === \"object\" && payload.payload !== null\n ? payload.payload\n : undefined;\n\n let configLabelKey: string = key;\n\n if (key in payload && typeof payload[key as keyof typeof payload] === \"string\") {\n configLabelKey = payload[key as keyof typeof payload] as string;\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[key as keyof typeof payloadPayload] as string;\n }\n\n return configLabelKey in config ? config[configLabelKey] : config[key as keyof typeof config];\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n};\n"],"names":["THEMES","ChartContext","React","useChart","context","ChartContainer","id","className","children","config","props","uniqueId","chartId","jsxs","cn","jsx","ChartStyle","RechartsPrimitive","colorConfig","theme","prefix","key","itemConfig","color","ChartTooltip","ChartTooltipContent","active","payload","indicator","hideLabel","hideIndicator","label","labelFormatter","labelClassName","formatter","nameKey","labelKey","tooltipLabel","item","getPayloadConfigFromPayload","value","nestLabel","index","indicatorColor","Fragment","ChartLegend","ChartLegendContent","hideIcon","verticalAlign","payloadPayload","configLabelKey"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as r } from "react/jsx-runtime";
2
2
  import * as e from "@radix-ui/react-checkbox";
3
3
  import { CheckIcon as t } from "lucide-react";
4
- import { cn as o } from "../lib/utils.js";
4
+ import { cn as o } from "../../lib/utils.js";
5
5
  function s({ className: i, ...a }) {
6
6
  return /* @__PURE__ */ r(
7
7
  e.Root,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.js","sources":["../../../src/components/primitives/checkbox.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { CheckIcon } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction Checkbox({ className, ...props }: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"grid place-content-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n"],"names":["Checkbox","className","props","jsx","CheckboxPrimitive","cn","CheckIcon"],"mappings":";;;;AAQA,SAASA,EAAS,EAAE,WAAAC,GAAW,GAAGC,KAA8D;AAC9F,SACE,gBAAAC;AAAA,IAACC,EAAkB;AAAA,IAAlB;AAAA,MACC,aAAU;AAAA,MACV,WAAWC;AAAA,QACT;AAAA,QACAJ;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,MAEJ,UAAA,gBAAAC;AAAA,QAACC,EAAkB;AAAA,QAAlB;AAAA,UACC,aAAU;AAAA,UACV,WAAU;AAAA,UAEV,UAAA,gBAAAD,EAACG,GAAA,EAAU,WAAU,WAAA,CAAW;AAAA,QAAA;AAAA,MAAA;AAAA,IAClC;AAAA,EAAA;AAGN;"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collapsible.js","sources":["../../../src/components/primitives/collapsible.tsx"],"sourcesContent":["import * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\";\n\nfunction Collapsible({ ...props }: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {\n return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />;\n}\n\nfunction CollapsibleTrigger({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {\n return <CollapsiblePrimitive.CollapsibleTrigger data-slot=\"collapsible-trigger\" {...props} />;\n}\n\nfunction CollapsibleContent({\n ...props\n}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {\n return <CollapsiblePrimitive.CollapsibleContent data-slot=\"collapsible-content\" {...props} />;\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n"],"names":["jsx","CollapsiblePrimitive","Collapsible","props","CollapsibleTrigger","CollapsibleContent"],"mappings":"AAEA,SAAA,OAAAA,SAAA;AAAA,YAAAC,OAAA;AAAA,SAASC,EAAY,EAAE,GAAGC,KAAiE;AACzF,2BAAQF,EAAqB,MAArB,EAA0B,aAAU,eAAe,GAAGE,GAAO;AACvE;AAEA,SAASC,EAAmB;AAAA,EAC1B,GAAGD;AACL,GAAyE;AACvE,2BAAQF,EAAqB,oBAArB,EAAwC,aAAU,uBAAuB,GAAGE,GAAO;AAC7F;AAEA,SAASE,EAAmB;AAAA,EAC1B,GAAGF;AACL,GAAyE;AACvE,2BAAQF,EAAqB,oBAArB,EAAwC,aAAU,uBAAuB,GAAGE,GAAO;AAC7F;"}
@@ -1,5 +1,5 @@
1
1
  import { Command as CommandPrimitive } from 'cmdk';
2
- import { Dialog } from './dialog';
2
+ import { Dialog } from '../primitives/dialog';
3
3
  import * as React from "react";
4
4
  declare function Command({ className, ...props }: React.ComponentProps<typeof CommandPrimitive>): import("react/jsx-runtime").JSX.Element;
5
5
  declare function CommandDialog({ title, description, children, className, showCloseButton, ...props }: React.ComponentProps<typeof Dialog> & {
@@ -1,7 +1,7 @@
1
1
  import { jsx as o, jsxs as d } from "react/jsx-runtime";
2
2
  import { Command as n } from "cmdk";
3
3
  import { SearchIcon as i } from "lucide-react";
4
- import { cn as a } from "../lib/utils.js";
4
+ import { cn as a } from "../../lib/utils.js";
5
5
  import { Dialog as l, DialogHeader as u, DialogTitle as p, DialogDescription as g, DialogContent as f } from "./dialog.js";
6
6
  function h({ className: e, ...t }) {
7
7
  return /* @__PURE__ */ o(
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sources":["../../../src/components/primitives/command.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { SearchIcon } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\nimport {\n Dialog,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from \"../primitives/dialog\";\n\nfunction Command({ className, ...props }: React.ComponentProps<typeof CommandPrimitive>) {\n return (\n <CommandPrimitive\n data-slot=\"command\"\n className={cn(\n \"bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandDialog({\n title = \"Command Palette\",\n description = \"Search for a command to run...\",\n children,\n className,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof Dialog> & {\n title?: string;\n description?: string;\n className?: string;\n showCloseButton?: boolean;\n}) {\n return (\n <Dialog {...props}>\n <DialogHeader className=\"sr-only\">\n <DialogTitle>{title}</DialogTitle>\n <DialogDescription>{description}</DialogDescription>\n </DialogHeader>\n <DialogContent\n className={cn(\"overflow-hidden p-0\", className)}\n showCloseButton={showCloseButton}\n >\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n );\n}\n\nfunction CommandInput({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Input>) {\n return (\n <div data-slot=\"command-input-wrapper\" className=\"flex h-9 items-center gap-2 border-b px-3\">\n <SearchIcon className=\"size-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n data-slot=\"command-input\"\n className={cn(\n \"placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction CommandList({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.List>) {\n return (\n <CommandPrimitive.List\n data-slot=\"command-list\"\n className={cn(\"max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto\", className)}\n {...props}\n />\n );\n}\n\nfunction CommandEmpty({ ...props }: React.ComponentProps<typeof CommandPrimitive.Empty>) {\n return (\n <CommandPrimitive.Empty\n data-slot=\"command-empty\"\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n );\n}\n\nfunction CommandGroup({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Group>) {\n return (\n <CommandPrimitive.Group\n data-slot=\"command-group\"\n className={cn(\n \"text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof CommandPrimitive.Separator>) {\n return (\n <CommandPrimitive.Separator\n data-slot=\"command-separator\"\n className={cn(\"bg-border -mx-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction CommandItem({ className, ...props }: React.ComponentProps<typeof CommandPrimitive.Item>) {\n return (\n <CommandPrimitive.Item\n data-slot=\"command-item\"\n className={cn(\n \"data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction CommandShortcut({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"command-shortcut\"\n className={cn(\"text-muted-foreground ml-auto text-xs tracking-widest\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n"],"names":["Command","className","props","jsx","CommandPrimitive","cn","CommandDialog","title","description","children","showCloseButton","jsxs","Dialog","DialogHeader","DialogTitle","DialogDescription","DialogContent","CommandInput","SearchIcon","CommandList","CommandEmpty","CommandGroup","CommandSeparator","CommandItem","CommandShortcut"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as e, jsxs as i } from "react/jsx-runtime";
2
2
  import * as o from "@radix-ui/react-context-menu";
3
3
  import { CheckIcon as d, CircleIcon as u, ChevronRightIcon as c } from "lucide-react";
4
- import { cn as s } from "../lib/utils.js";
4
+ import { cn as s } from "../../lib/utils.js";
5
5
  function x({ ...t }) {
6
6
  return /* @__PURE__ */ e(o.Root, { "data-slot": "context-menu", ...t });
7
7
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-menu.js","sources":["../../../src/components/primitives/context-menu.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"@/lib/utils\";\n\nfunction ContextMenu({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />;\n}\n\nfunction ContextMenuTrigger({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />;\n}\n\nfunction ContextMenuGroup({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />;\n}\n\nfunction ContextMenuPortal({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />;\n}\n\nfunction ContextMenuSub({ ...props }: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />;\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return <ContextMenuPrimitive.RadioGroup data-slot=\"context-menu-radio-group\" {...props} />;\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n}\n\nfunction ContextMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className,\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n );\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn(\"text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\", className)}\n {...props}\n />\n );\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction ContextMenuShortcut({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"context-menu-shortcut\"\n className={cn(\"text-muted-foreground ml-auto text-xs tracking-widest\", className)}\n {...props}\n />\n );\n}\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n};\n"],"names":["jsx","jsxs","ContextMenuPrimitive","CheckIcon","CircleIcon","ChevronRightIcon","cn","ContextMenu","props","ContextMenuTrigger","ContextMenuGroup","ContextMenuPortal","ContextMenuSub","ContextMenuRadioGroup","ContextMenuSubTrigger","className","inset","children","ContextMenuSubContent","ContextMenuContent","ContextMenuItem","variant","ContextMenuCheckboxItem","checked","ContextMenuRadioItem","ContextMenuLabel","ContextMenuSeparator","ContextMenuShortcut"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare const customButtonVariants: (props?: ({
2
+ variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
3
+ effect?: "none" | "expandIcon" | "ringHover" | "underline" | "hoverUnderline" | null | undefined;
4
+ size?: "default" | "sm" | "lg" | "icon" | null | undefined;
5
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
@@ -0,0 +1,38 @@
1
+ import { cva as e } from "class-variance-authority";
2
+ const t = e(
3
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-lg text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 cursor-pointer overflow-hidden",
4
+ {
5
+ variants: {
6
+ variant: {
7
+ default: "bg-primary text-primary-foreground hover:bg-primary/90 shadow-sm",
8
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90 shadow-sm",
9
+ outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground shadow-sm",
10
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80 shadow-sm",
11
+ ghost: "hover:bg-accent hover:text-accent-foreground",
12
+ link: "text-primary underline-offset-4 hover:underline"
13
+ },
14
+ effect: {
15
+ none: "",
16
+ expandIcon: "group gap-0 relative",
17
+ ringHover: "transition-all duration-300 hover:ring-2 hover:ring-primary/90 hover:ring-offset-2",
18
+ underline: "relative !no-underline after:absolute after:bg-primary after:bottom-2 after:h-[1px] after:w-2/3 after:origin-bottom-right after:scale-x-100 hover:after:origin-bottom-right hover:after:scale-x-0 after:transition-transform after:ease-in-out after:duration-300",
19
+ hoverUnderline: "relative !no-underline after:absolute after:bg-primary after:bottom-2 after:h-[1px] after:w-2/3 after:origin-bottom-right after:scale-x-0 hover:after:origin-bottom-right hover:after:scale-x-100 after:transition-transform after:ease-in-out after:duration-300"
20
+ },
21
+ size: {
22
+ default: "h-10 px-5",
23
+ sm: "h-9 px-4",
24
+ lg: "h-11 px-6",
25
+ icon: "size-10"
26
+ }
27
+ },
28
+ defaultVariants: {
29
+ variant: "default",
30
+ size: "default",
31
+ effect: "none"
32
+ }
33
+ }
34
+ );
35
+ export {
36
+ t as customButtonVariants
37
+ };
38
+ //# sourceMappingURL=custom-button-variants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-button-variants.js","sources":["../../../src/components/primitives/custom-button-variants.ts"],"sourcesContent":["import { cva } from \"class-variance-authority\";\n\nexport const customButtonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-lg text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 cursor-pointer overflow-hidden\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90 shadow-sm\",\n destructive: \"bg-destructive text-destructive-foreground hover:bg-destructive/90 shadow-sm\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground shadow-sm\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80 shadow-sm\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n effect: {\n none: \"\",\n expandIcon: \"group gap-0 relative\",\n ringHover:\n \"transition-all duration-300 hover:ring-2 hover:ring-primary/90 hover:ring-offset-2\",\n underline:\n \"relative !no-underline after:absolute after:bg-primary after:bottom-2 after:h-[1px] after:w-2/3 after:origin-bottom-right after:scale-x-100 hover:after:origin-bottom-right hover:after:scale-x-0 after:transition-transform after:ease-in-out after:duration-300\",\n hoverUnderline:\n \"relative !no-underline after:absolute after:bg-primary after:bottom-2 after:h-[1px] after:w-2/3 after:origin-bottom-right after:scale-x-0 hover:after:origin-bottom-right hover:after:scale-x-100 after:transition-transform after:ease-in-out after:duration-300\",\n },\n size: {\n default: \"h-10 px-5\",\n sm: \"h-9 px-4\",\n lg: \"h-11 px-6\",\n icon: \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n effect: \"none\",\n },\n },\n);\n"],"names":["customButtonVariants","cva"],"mappings":";AAEO,MAAMA,IAAuBC;AAAA,EAClC;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,aAAa;AAAA,QACb,SACE;AAAA,QACF,WAAW;AAAA,QACX,OAAO;AAAA,QACP,MAAM;AAAA,MAAA;AAAA,MAER,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,YAAY;AAAA,QACZ,WACE;AAAA,QACF,WACE;AAAA,QACF,gBACE;AAAA,MAAA;AAAA,MAEJ,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,MACN,QAAQ;AAAA,IAAA;AAAA,EACV;AAEJ;"}
@@ -0,0 +1,22 @@
1
+ import { VariantProps } from 'class-variance-authority';
2
+ import { customButtonVariants } from './custom-button-variants';
3
+ import * as React from "react";
4
+ interface CustomButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof customButtonVariants> {
5
+ asChild?: boolean;
6
+ loading?: boolean;
7
+ loadingText?: string;
8
+ loadingIcon?: React.ElementType;
9
+ loadingIconPlacement?: "left" | "right";
10
+ icon?: React.ElementType;
11
+ iconPlacement?: "left" | "right";
12
+ }
13
+ /**
14
+ * CustomButton
15
+ *
16
+ * An enhanced button component with premium animations, loading states,
17
+ * and accessibility baked in. Supports icons with flexible placement
18
+ * and various visual effects like expansion and ring hovers.
19
+ */
20
+ declare const CustomButton: React.ForwardRefExoticComponent<CustomButtonProps & React.RefAttributes<HTMLButtonElement>>;
21
+ export { CustomButton };
22
+ export type { CustomButtonProps };
@@ -0,0 +1,64 @@
1
+ import { jsxs as S, jsx as t } from "react/jsx-runtime";
2
+ import * as x from "react";
3
+ import { Slot as A, Slottable as L } from "@radix-ui/react-slot";
4
+ import { Spinner as R } from "./spinner.js";
5
+ import { cn as i } from "../../lib/utils.js";
6
+ import { customButtonVariants as D } from "./custom-button-variants.js";
7
+ const V = x.forwardRef(
8
+ ({
9
+ className: u,
10
+ variant: m,
11
+ effect: n,
12
+ size: f,
13
+ asChild: v = !1,
14
+ loading: r,
15
+ loadingText: e,
16
+ loadingIcon: h = R,
17
+ loadingIconPlacement: d = "left",
18
+ icon: b,
19
+ iconPlacement: y = "left",
20
+ children: s,
21
+ disabled: N,
22
+ "aria-label": w,
23
+ ...C
24
+ }, I) => {
25
+ const j = v ? A : "button", a = r || N, B = w || (typeof s == "string" ? void 0 : r ? e : void 0), c = (o) => {
26
+ const l = r ? h : b;
27
+ if (!l || r && d !== o || !r && y !== o) return null;
28
+ const p = /* @__PURE__ */ t(l, { "aria-hidden": "true", className: i(r && !e && "animate-spin") });
29
+ return n === "expandIcon" ? /* @__PURE__ */ t(
30
+ "span",
31
+ {
32
+ className: i(
33
+ "transition-all duration-200 opacity-0 w-0 overflow-hidden inline-flex items-center justify-center",
34
+ o === "left" ? "group-hover:opacity-100 group-hover:w-5 group-hover:pr-1" : "group-hover:opacity-100 group-hover:w-5 group-hover:pl-1"
35
+ ),
36
+ children: p
37
+ }
38
+ ) : p;
39
+ };
40
+ return /* @__PURE__ */ S(
41
+ j,
42
+ {
43
+ ref: I,
44
+ className: i(D({ variant: m, effect: n, size: f, className: u })),
45
+ disabled: a,
46
+ "aria-busy": r || void 0,
47
+ "aria-disabled": a || void 0,
48
+ "aria-label": B,
49
+ ...C,
50
+ children: [
51
+ c("left"),
52
+ /* @__PURE__ */ t(L, { children: r && e ? /* @__PURE__ */ t("span", { className: "inline-flex items-center gap-2", children: e }) : s }),
53
+ c("right"),
54
+ r && /* @__PURE__ */ t("span", { className: "sr-only", "aria-live": "polite", children: e || "Loading..." })
55
+ ]
56
+ }
57
+ );
58
+ }
59
+ );
60
+ V.displayName = "CustomButton";
61
+ export {
62
+ V as CustomButton
63
+ };
64
+ //# sourceMappingURL=custom-button.js.map