@gv-tech/design-system 2.2.0 → 2.4.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 (261) hide show
  1. package/.release-please-manifest.json +1 -1
  2. package/CHANGELOG.md +20 -0
  3. package/dist/App.d.ts +1 -2
  4. package/dist/App.d.ts.map +1 -1
  5. package/dist/accordion.cjs.js +2 -0
  6. package/dist/accordion.cjs.js.map +1 -0
  7. package/dist/accordion.es.js +38 -0
  8. package/dist/accordion.es.js.map +1 -0
  9. package/dist/alert-dialog.cjs.js +2 -0
  10. package/dist/alert-dialog.cjs.js.map +1 -0
  11. package/dist/alert-dialog.es.js +64 -0
  12. package/dist/alert-dialog.es.js.map +1 -0
  13. package/dist/alert.cjs.js +2 -0
  14. package/dist/alert.cjs.js.map +1 -0
  15. package/dist/alert.es.js +32 -0
  16. package/dist/alert.es.js.map +1 -0
  17. package/dist/aspect-ratio.cjs.js +2 -0
  18. package/dist/aspect-ratio.cjs.js.map +1 -0
  19. package/dist/aspect-ratio.es.js +6 -0
  20. package/dist/aspect-ratio.es.js.map +1 -0
  21. package/dist/avatar.cjs.js +2 -0
  22. package/dist/avatar.cjs.js.map +1 -0
  23. package/dist/avatar.es.js +29 -0
  24. package/dist/avatar.es.js.map +1 -0
  25. package/dist/badge.cjs.js +2 -0
  26. package/dist/badge.cjs.js.map +1 -0
  27. package/dist/badge.es.js +26 -0
  28. package/dist/badge.es.js.map +1 -0
  29. package/dist/breadcrumb.cjs.js +2 -0
  30. package/dist/breadcrumb.cjs.js.map +1 -0
  31. package/dist/breadcrumb.es.js +68 -0
  32. package/dist/breadcrumb.es.js.map +1 -0
  33. package/dist/button.cjs.js +2 -0
  34. package/dist/button.cjs.js.map +1 -0
  35. package/dist/button.es.js +39 -0
  36. package/dist/button.es.js.map +1 -0
  37. package/dist/calendar.cjs.js +2 -0
  38. package/dist/calendar.cjs.js.map +1 -0
  39. package/dist/calendar.es.js +132 -0
  40. package/dist/calendar.es.js.map +1 -0
  41. package/dist/card.cjs.js +2 -0
  42. package/dist/card.cjs.js.map +1 -0
  43. package/dist/card.es.js +34 -0
  44. package/dist/card.es.js.map +1 -0
  45. package/dist/carousel.cjs.js +2 -0
  46. package/dist/carousel.cjs.js.map +1 -0
  47. package/dist/carousel.es.js +158 -0
  48. package/dist/carousel.es.js.map +1 -0
  49. package/dist/chart.cjs.js +8 -0
  50. package/dist/chart.cjs.js.map +1 -0
  51. package/dist/chart.es.js +187 -0
  52. package/dist/chart.es.js.map +1 -0
  53. package/dist/checkbox.cjs.js +2 -0
  54. package/dist/checkbox.cjs.js.map +1 -0
  55. package/dist/checkbox.es.js +20 -0
  56. package/dist/checkbox.es.js.map +1 -0
  57. package/dist/collapsible.cjs.js +2 -0
  58. package/dist/collapsible.cjs.js.map +1 -0
  59. package/dist/collapsible.es.js +8 -0
  60. package/dist/collapsible.es.js.map +1 -0
  61. package/dist/command.cjs.js +2 -0
  62. package/dist/command.cjs.js.map +1 -0
  63. package/dist/command.es.js +86 -0
  64. package/dist/command.es.js.map +1 -0
  65. package/dist/components/docs/Sidebar.d.ts +2 -1
  66. package/dist/components/docs/Sidebar.d.ts.map +1 -1
  67. package/dist/components/ui/command.d.ts.map +1 -1
  68. package/dist/components/ui/theme-provider.d.ts +4 -0
  69. package/dist/components/ui/theme-provider.d.ts.map +1 -0
  70. package/dist/components/ui/theme-provider.test.d.ts +2 -0
  71. package/dist/components/ui/theme-provider.test.d.ts.map +1 -0
  72. package/dist/context-menu.cjs.js +2 -0
  73. package/dist/context-menu.cjs.js.map +1 -0
  74. package/dist/context-menu.es.js +121 -0
  75. package/dist/context-menu.es.js.map +1 -0
  76. package/dist/design-system.css +1 -1
  77. package/dist/dialog.cjs.js +2 -0
  78. package/dist/dialog.cjs.js.map +1 -0
  79. package/dist/dialog.es.js +65 -0
  80. package/dist/dialog.es.js.map +1 -0
  81. package/dist/drawer.cjs.js +2 -0
  82. package/dist/drawer.cjs.js.map +1 -0
  83. package/dist/drawer.es.js +54 -0
  84. package/dist/drawer.es.js.map +1 -0
  85. package/dist/dropdown-menu.cjs.js +2 -0
  86. package/dist/dropdown-menu.cjs.js.map +1 -0
  87. package/dist/dropdown-menu.es.js +123 -0
  88. package/dist/dropdown-menu.es.js.map +1 -0
  89. package/dist/form.cjs.js +2 -0
  90. package/dist/form.cjs.js.map +1 -0
  91. package/dist/form.es.js +83 -0
  92. package/dist/form.es.js.map +1 -0
  93. package/dist/hover-card.cjs.js +2 -0
  94. package/dist/hover-card.cjs.js.map +1 -0
  95. package/dist/hover-card.es.js +23 -0
  96. package/dist/hover-card.es.js.map +1 -0
  97. package/dist/index.cjs.js +1 -7
  98. package/dist/index.cjs.js.map +1 -1
  99. package/dist/index.d.ts +1 -0
  100. package/dist/index.d.ts.map +1 -1
  101. package/dist/index.es.js +285 -2446
  102. package/dist/index.es.js.map +1 -1
  103. package/dist/input.cjs.js +2 -0
  104. package/dist/input.cjs.js.map +1 -0
  105. package/dist/input.es.js +22 -0
  106. package/dist/input.es.js.map +1 -0
  107. package/dist/label.cjs.js +2 -0
  108. package/dist/label.cjs.js.map +1 -0
  109. package/dist/label.es.js +9 -0
  110. package/dist/label.es.js.map +1 -0
  111. package/dist/menubar.cjs.js +2 -0
  112. package/dist/menubar.cjs.js.map +1 -0
  113. package/dist/menubar.es.js +161 -0
  114. package/dist/menubar.es.js.map +1 -0
  115. package/dist/navigation-menu.cjs.js +2 -0
  116. package/dist/navigation-menu.cjs.js.map +1 -0
  117. package/dist/navigation-menu.es.js +96 -0
  118. package/dist/navigation-menu.es.js.map +1 -0
  119. package/dist/pages/GettingStarted.d.ts.map +1 -1
  120. package/dist/pages/components/ThemeToggleDocs.d.ts.map +1 -1
  121. package/dist/pagination.cjs.js +2 -0
  122. package/dist/pagination.cjs.js.map +1 -0
  123. package/dist/pagination.es.js +60 -0
  124. package/dist/pagination.es.js.map +1 -0
  125. package/dist/popover.cjs.js +2 -0
  126. package/dist/popover.cjs.js.map +1 -0
  127. package/dist/popover.es.js +24 -0
  128. package/dist/popover.es.js.map +1 -0
  129. package/dist/progress.cjs.js +2 -0
  130. package/dist/progress.cjs.js.map +1 -0
  131. package/dist/progress.es.js +24 -0
  132. package/dist/progress.es.js.map +1 -0
  133. package/dist/radio-group.cjs.js +2 -0
  134. package/dist/radio-group.cjs.js.map +1 -0
  135. package/dist/radio-group.es.js +23 -0
  136. package/dist/radio-group.es.js.map +1 -0
  137. package/dist/registry/command.json +1 -1
  138. package/dist/registry/index.json +14 -0
  139. package/dist/registry/search.json +1 -1
  140. package/dist/registry/search.test.json +1 -1
  141. package/dist/registry/theme-provider.json +13 -0
  142. package/dist/registry/theme-provider.test.json +13 -0
  143. package/dist/resizable.cjs.js +2 -0
  144. package/dist/resizable.cjs.js.map +1 -0
  145. package/dist/resizable.es.js +34 -0
  146. package/dist/resizable.es.js.map +1 -0
  147. package/dist/scroll-area.cjs.js +2 -0
  148. package/dist/scroll-area.cjs.js.map +1 -0
  149. package/dist/scroll-area.es.js +30 -0
  150. package/dist/scroll-area.es.js.map +1 -0
  151. package/dist/search.cjs.js +2 -0
  152. package/dist/search.cjs.js.map +1 -0
  153. package/dist/search.es.js +60 -0
  154. package/dist/search.es.js.map +1 -0
  155. package/dist/select.cjs.js +2 -0
  156. package/dist/select.cjs.js.map +1 -0
  157. package/dist/select.es.js +100 -0
  158. package/dist/select.es.js.map +1 -0
  159. package/dist/separator.cjs.js +2 -0
  160. package/dist/separator.cjs.js.map +1 -0
  161. package/dist/separator.es.js +18 -0
  162. package/dist/separator.es.js.map +1 -0
  163. package/dist/sheet.cjs.js +2 -0
  164. package/dist/sheet.cjs.js.map +1 -0
  165. package/dist/sheet.es.js +64 -0
  166. package/dist/sheet.es.js.map +1 -0
  167. package/dist/skeleton.cjs.js +2 -0
  168. package/dist/skeleton.cjs.js.map +1 -0
  169. package/dist/skeleton.es.js +9 -0
  170. package/dist/skeleton.es.js.map +1 -0
  171. package/dist/slider.cjs.js +2 -0
  172. package/dist/slider.cjs.js.map +1 -0
  173. package/dist/slider.es.js +20 -0
  174. package/dist/slider.es.js.map +1 -0
  175. package/dist/sonner.cjs.js +2 -0
  176. package/dist/sonner.cjs.js.map +1 -0
  177. package/dist/sonner.es.js +25 -0
  178. package/dist/sonner.es.js.map +1 -0
  179. package/dist/switch.cjs.js +2 -0
  180. package/dist/switch.cjs.js.map +1 -0
  181. package/dist/switch.es.js +27 -0
  182. package/dist/switch.es.js.map +1 -0
  183. package/dist/table.cjs.js +2 -0
  184. package/dist/table.cjs.js.map +1 -0
  185. package/dist/table.es.js +70 -0
  186. package/dist/table.es.js.map +1 -0
  187. package/dist/tabs.cjs.js +2 -0
  188. package/dist/tabs.cjs.js.map +1 -0
  189. package/dist/tabs.es.js +46 -0
  190. package/dist/tabs.es.js.map +1 -0
  191. package/dist/textarea.cjs.js +2 -0
  192. package/dist/textarea.cjs.js.map +1 -0
  193. package/dist/textarea.es.js +21 -0
  194. package/dist/textarea.es.js.map +1 -0
  195. package/dist/theme/tokens.d.ts +46 -0
  196. package/dist/theme/tokens.d.ts.map +1 -1
  197. package/dist/theme-provider.cjs.js +2 -0
  198. package/dist/theme-provider.cjs.js.map +1 -0
  199. package/dist/theme-provider.es.js +9 -0
  200. package/dist/theme-provider.es.js.map +1 -0
  201. package/dist/theme-toggle-CCUkxY6o.mjs +181 -0
  202. package/dist/theme-toggle-CCUkxY6o.mjs.map +1 -0
  203. package/dist/theme-toggle-Dc_nm_32.js +2 -0
  204. package/dist/theme-toggle-Dc_nm_32.js.map +1 -0
  205. package/dist/theme-toggle.cjs.js +2 -0
  206. package/dist/theme-toggle.cjs.js.map +1 -0
  207. package/dist/theme-toggle.es.js +9 -0
  208. package/dist/theme-toggle.es.js.map +1 -0
  209. package/dist/toast.cjs.js +2 -0
  210. package/dist/toast.cjs.js.map +1 -0
  211. package/dist/toast.es.js +70 -0
  212. package/dist/toast.es.js.map +1 -0
  213. package/dist/toaster-BjPc-lId.js +2 -0
  214. package/dist/toaster-BjPc-lId.js.map +1 -0
  215. package/dist/toaster-Bk6a4gIz.mjs +120 -0
  216. package/dist/toaster-Bk6a4gIz.mjs.map +1 -0
  217. package/dist/toaster.cjs.js +2 -0
  218. package/dist/toaster.cjs.js.map +1 -0
  219. package/dist/toaster.es.js +7 -0
  220. package/dist/toaster.es.js.map +1 -0
  221. package/dist/toggle-group.cjs.js +2 -0
  222. package/dist/toggle-group.cjs.js.map +1 -0
  223. package/dist/toggle-group.es.js +33 -0
  224. package/dist/toggle-group.es.js.map +1 -0
  225. package/dist/toggle.cjs.js +2 -0
  226. package/dist/toggle.cjs.js.map +1 -0
  227. package/dist/toggle.es.js +29 -0
  228. package/dist/toggle.es.js.map +1 -0
  229. package/dist/tooltip.cjs.js +2 -0
  230. package/dist/tooltip.cjs.js.map +1 -0
  231. package/dist/tooltip.es.js +23 -0
  232. package/dist/tooltip.es.js.map +1 -0
  233. package/dist/utils-C9QGdMaH.mjs +8 -0
  234. package/dist/utils-C9QGdMaH.mjs.map +1 -0
  235. package/dist/utils-CUFNKXRW.js +2 -0
  236. package/dist/utils-CUFNKXRW.js.map +1 -0
  237. package/dist/{vendor-BLvpSabH.mjs → vendor-CCQzmGyD.mjs} +1131 -1160
  238. package/dist/vendor-CCQzmGyD.mjs.map +1 -0
  239. package/dist/{vendor-n4WFhtJT.js → vendor-CIyDEr7H.js} +12 -12
  240. package/dist/vendor-CIyDEr7H.js.map +1 -0
  241. package/package.json +251 -5
  242. package/scripts/sync-exports.ts +52 -0
  243. package/scripts/sync-tokens.ts +73 -0
  244. package/scripts/{validate.js → validate.ts} +14 -8
  245. package/src/App.tsx +64 -27
  246. package/src/components/docs/ComponentShowcase.tsx +5 -5
  247. package/src/components/docs/Sidebar.tsx +3 -2
  248. package/src/components/ui/command.tsx +3 -1
  249. package/src/components/ui/search.test.tsx +2 -0
  250. package/src/components/ui/search.tsx +3 -3
  251. package/src/components/ui/theme-provider.test.tsx +47 -0
  252. package/src/components/ui/theme-provider.tsx +12 -0
  253. package/src/globals.css +22 -0
  254. package/src/index.ts +1 -0
  255. package/src/pages/ColorTokensDocs.tsx +4 -4
  256. package/src/pages/GettingStarted.tsx +43 -10
  257. package/src/pages/components/ThemeToggleDocs.tsx +155 -8
  258. package/src/theme/tokens.ts +60 -38
  259. package/vite.config.ts +27 -4
  260. package/dist/vendor-BLvpSabH.mjs.map +0 -1
  261. package/dist/vendor-n4WFhtJT.js.map +0 -1
@@ -0,0 +1,24 @@
1
+ import { j as r, aC as s, aD as t } from "./vendor-CCQzmGyD.mjs";
2
+ import * as i from "react";
3
+ import { c as m } from "./utils-C9QGdMaH.mjs";
4
+ const f = i.forwardRef(({ className: l, value: a, ...o }, e) => /* @__PURE__ */ r.jsx(
5
+ s,
6
+ {
7
+ ref: e,
8
+ className: m("relative h-2 w-full overflow-hidden rounded-full bg-primary/20", l),
9
+ value: a,
10
+ ...o,
11
+ children: /* @__PURE__ */ r.jsx(
12
+ t,
13
+ {
14
+ className: "h-full w-full flex-1 bg-primary transition-all",
15
+ style: { transform: `translateX(-${100 - (a || 0)}%)` }
16
+ }
17
+ )
18
+ }
19
+ ));
20
+ f.displayName = s.displayName;
21
+ export {
22
+ f as Progress
23
+ };
24
+ //# sourceMappingURL=progress.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.es.js","sources":["../src/components/ui/progress.tsx"],"sourcesContent":["import * as ProgressPrimitive from '@radix-ui/react-progress';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst Progress = React.forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\n>(({ className, value, ...props }, ref) => (\n <ProgressPrimitive.Root\n ref={ref}\n className={cn('relative h-2 w-full overflow-hidden rounded-full bg-primary/20', className)}\n value={value}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className=\"h-full w-full flex-1 bg-primary transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n));\nProgress.displayName = ProgressPrimitive.Root.displayName;\n\nexport { Progress };\n"],"names":["Progress","React","className","value","props","ref","jsx","ProgressPrimitive.Root","cn","ProgressPrimitive.Indicator"],"mappings":";;;AAKA,MAAMA,IAAWC,EAAM,WAGrB,CAAC,EAAE,WAAAC,GAAW,OAAAC,GAAO,GAAGC,KAASC,MACjCC,gBAAAA,EAAAA;AAAAA,EAACC;AAAAA,EAAA;AAAA,IACC,KAAAF;AAAA,IACA,WAAWG,EAAG,kEAAkEN,CAAS;AAAA,IACzF,OAAAC;AAAA,IACC,GAAGC;AAAA,IAEJ,UAAAE,gBAAAA,EAAAA;AAAAA,MAACG;AAAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO,EAAE,WAAW,eAAe,OAAON,KAAS,EAAE,KAAA;AAAA,MAAK;AAAA,IAAA;AAAA,EAC5D;AACF,CACD;AACDH,EAAS,cAAcO,EAAuB;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./vendor-CIyDEr7H.js"),l=require("react"),a=require("./utils-CUFNKXRW.js");function u(r){const o=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const t in r)if(t!=="default"){const s=Object.getOwnPropertyDescriptor(r,t);Object.defineProperty(o,t,s.get?s:{enumerable:!0,get:()=>r[t]})}}return o.default=r,Object.freeze(o)}const i=u(l),n=i.forwardRef(({className:r,...o},t)=>e.jsxRuntimeExports.jsx(e.Root2$6,{className:a.cn("grid gap-2",r),...o,ref:t}));n.displayName=e.Root2$6.displayName;const c=i.forwardRef(({className:r,...o},t)=>e.jsxRuntimeExports.jsx(e.Item2$1,{ref:t,className:a.cn("aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",r),...o,children:e.jsxRuntimeExports.jsx(e.Indicator$2,{className:"flex items-center justify-center",children:e.jsxRuntimeExports.jsx(e.Circle,{className:"h-3.5 w-3.5 fill-primary"})})}));c.displayName=e.Item2$1.displayName;exports.RadioGroup=n;exports.RadioGroupItem=c;
2
+ //# sourceMappingURL=radio-group.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group.cjs.js","sources":["../src/components/ui/radio-group.tsx"],"sourcesContent":["import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport { Circle } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return <RadioGroupPrimitive.Root className={cn('grid gap-2', className)} {...props} ref={ref} />;\n});\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n 'aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <Circle className=\"h-3.5 w-3.5 fill-primary\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n});\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n\nexport { RadioGroup, RadioGroupItem };\n"],"names":["RadioGroup","React","className","props","ref","jsx","RadioGroupPrimitive.Root","cn","RadioGroupItem","RadioGroupPrimitive.Item","RadioGroupPrimitive.Indicator","Circle"],"mappings":"scAMMA,EAAaC,EAAM,WAGvB,CAAC,CAAE,UAAAC,EAAW,GAAGC,CAAA,EAASC,IACnBC,wBAACC,EAAAA,QAAA,CAAyB,UAAWC,EAAAA,GAAG,aAAcL,CAAS,EAAI,GAAGC,EAAO,IAAAC,EAAU,CAC/F,EACDJ,EAAW,YAAcM,EAAAA,QAAyB,YAElD,MAAME,EAAiBP,EAAM,WAG3B,CAAC,CAAE,UAAAC,EAAW,GAAGC,CAAA,EAASC,IAExBC,EAAAA,kBAAAA,IAACI,EAAAA,QAAA,CACC,IAAAL,EACA,UAAWG,EAAAA,GACT,+LACAL,CAAA,EAED,GAAGC,EAEJ,SAAAE,EAAAA,kBAAAA,IAACK,cAAA,CAA8B,UAAU,mCACvC,SAAAL,EAAAA,kBAAAA,IAACM,EAAAA,OAAA,CAAO,UAAU,0BAAA,CAA2B,CAAA,CAC/C,CAAA,CAAA,CAGL,EACDH,EAAe,YAAcC,EAAAA,QAAyB"}
@@ -0,0 +1,23 @@
1
+ import { j as a, aE as i, aF as o, aG as d, V as c } from "./vendor-CCQzmGyD.mjs";
2
+ import * as t from "react";
3
+ import { c as l } from "./utils-C9QGdMaH.mjs";
4
+ const m = t.forwardRef(({ className: r, ...s }, e) => /* @__PURE__ */ a.jsx(i, { className: l("grid gap-2", r), ...s, ref: e }));
5
+ m.displayName = i.displayName;
6
+ const n = t.forwardRef(({ className: r, ...s }, e) => /* @__PURE__ */ a.jsx(
7
+ o,
8
+ {
9
+ ref: e,
10
+ className: l(
11
+ "aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
12
+ r
13
+ ),
14
+ ...s,
15
+ children: /* @__PURE__ */ a.jsx(d, { className: "flex items-center justify-center", children: /* @__PURE__ */ a.jsx(c, { className: "h-3.5 w-3.5 fill-primary" }) })
16
+ }
17
+ ));
18
+ n.displayName = o.displayName;
19
+ export {
20
+ m as RadioGroup,
21
+ n as RadioGroupItem
22
+ };
23
+ //# sourceMappingURL=radio-group.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group.es.js","sources":["../src/components/ui/radio-group.tsx"],"sourcesContent":["import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport { Circle } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return <RadioGroupPrimitive.Root className={cn('grid gap-2', className)} {...props} ref={ref} />;\n});\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName;\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n 'aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <Circle className=\"h-3.5 w-3.5 fill-primary\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n});\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;\n\nexport { RadioGroup, RadioGroupItem };\n"],"names":["RadioGroup","React","className","props","ref","jsx","RadioGroupPrimitive.Root","cn","RadioGroupItem","RadioGroupPrimitive.Item","RadioGroupPrimitive.Indicator","Circle"],"mappings":";;;AAMA,MAAMA,IAAaC,EAAM,WAGvB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MACnBC,gBAAAA,MAACC,GAAA,EAAyB,WAAWC,EAAG,cAAcL,CAAS,GAAI,GAAGC,GAAO,KAAAC,GAAU,CAC/F;AACDJ,EAAW,cAAcM,EAAyB;AAElD,MAAME,IAAiBP,EAAM,WAG3B,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC,MAExBC,gBAAAA,EAAAA;AAAAA,EAACI;AAAAA,EAAA;AAAA,IACC,KAAAL;AAAA,IACA,WAAWG;AAAA,MACT;AAAA,MACAL;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,IAEJ,UAAAE,gBAAAA,EAAAA,IAACK,GAAA,EAA8B,WAAU,oCACvC,UAAAL,gBAAAA,EAAAA,IAACM,GAAA,EAAO,WAAU,2BAAA,CAA2B,EAAA,CAC/C;AAAA,EAAA;AAAA,CAGL;AACDH,EAAe,cAAcC,EAAyB;"}
@@ -6,7 +6,7 @@
6
6
  "files": [
7
7
  {
8
8
  "path": "ui/command.tsx",
9
- "content": "'use client';\n\nimport { type DialogProps } from '@radix-ui/react-dialog';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { Search } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Dialog, DialogContent } from '@/components/ui/dialog';\nimport { cn } from '@/lib/utils';\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n 'flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground',\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\nconst CommandDialog = ({ children, ...props }: DialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0\">\n <Command className=\"[&_[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-group]]:px-2 [&_[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\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n 'flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n />\n </div>\n));\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn('max-h-[300px] overflow-y-auto overflow-x-hidden', className)}\n {...props}\n />\n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => <CommandPrimitive.Empty ref={ref} className=\"py-6 text-center text-sm\" {...props} />);\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n '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',\n className,\n )}\n {...props}\n />\n));\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator ref={ref} className={cn('-mx-1 h-px bg-border', className)} {...props} />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\n className,\n )}\n {...props}\n />\n));\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return <span className={cn('ml-auto text-xs tracking-widest text-muted-foreground', className)} {...props} />;\n};\nCommandShortcut.displayName = 'CommandShortcut';\n\nexport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n CommandShortcut,\n};\n",
9
+ "content": "'use client';\n\nimport { type DialogProps } from '@radix-ui/react-dialog';\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { Search } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Dialog, DialogContent, DialogDescription, DialogTitle } from '@/components/ui/dialog';\nimport { cn } from '@/lib/utils';\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n 'flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground',\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\nconst CommandDialog = ({ children, ...props }: DialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0\">\n <DialogTitle className=\"sr-only\">Search</DialogTitle>\n <DialogDescription className=\"sr-only\">Search for documentation and components.</DialogDescription>\n <Command className=\"[&_[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-group]]:px-2 [&_[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\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n 'flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n />\n </div>\n));\n\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn('max-h-[300px] overflow-y-auto overflow-x-hidden', className)}\n {...props}\n />\n));\n\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => <CommandPrimitive.Empty ref={ref} className=\"py-6 text-center text-sm\" {...props} />);\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n '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',\n className,\n )}\n {...props}\n />\n));\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator ref={ref} className={cn('-mx-1 h-px bg-border', className)} {...props} />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\n className,\n )}\n {...props}\n />\n));\n\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return <span className={cn('ml-auto text-xs tracking-widest text-muted-foreground', className)} {...props} />;\n};\nCommandShortcut.displayName = 'CommandShortcut';\n\nexport {\n Command,\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n CommandShortcut,\n};\n",
10
10
  "type": "registry:ui"
11
11
  }
12
12
  ]
@@ -587,6 +587,20 @@
587
587
  ],
588
588
  "type": "registry:ui"
589
589
  },
590
+ {
591
+ "name": "theme-provider.test",
592
+ "files": [
593
+ "ui/theme-provider.test.tsx"
594
+ ],
595
+ "type": "registry:ui"
596
+ },
597
+ {
598
+ "name": "theme-provider",
599
+ "files": [
600
+ "ui/theme-provider.tsx"
601
+ ],
602
+ "type": "registry:ui"
603
+ },
590
604
  {
591
605
  "name": "theme-toggle.test",
592
606
  "files": [
@@ -6,7 +6,7 @@
6
6
  "files": [
7
7
  {
8
8
  "path": "ui/search.tsx",
9
- "content": "'use client';\n\nimport { Button } from '@/components/ui/button';\nimport {\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/ui/command';\nimport { cn } from '@/lib/utils';\nimport { Search as SearchIcon } from 'lucide-react';\nimport * as React from 'react';\n\nexport interface SearchProps {\n children?: React.ReactNode;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport function Search({ children, open: customOpen, onOpenChange }: SearchProps) {\n const [open, setOpen] = React.useState(false);\n\n const isControlled = customOpen !== undefined;\n const isOpen = isControlled ? customOpen : open;\n\n const setIsOpen = React.useCallback(\n (value: boolean | ((prev: boolean) => boolean)) => {\n if (isControlled) {\n const nextValue = typeof value === 'function' ? value(isOpen) : value;\n onOpenChange?.(nextValue);\n } else {\n setOpen(value);\n }\n },\n [isControlled, isOpen, onOpenChange],\n );\n\n React.useEffect(() => {\n const down = (e: KeyboardEvent) => {\n if (e.key === 'k' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n setIsOpen((prev) => !prev);\n }\n };\n\n document.addEventListener('keydown', down);\n return () => document.removeEventListener('keydown', down);\n }, [setIsOpen]);\n\n return (\n <CommandDialog open={isOpen} onOpenChange={setIsOpen}>\n {children}\n </CommandDialog>\n );\n}\n\nexport interface SearchTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n className?: string;\n placeholder?: string;\n variant?: 'default' | 'compact';\n}\n\nexport const SearchTrigger = React.forwardRef<HTMLButtonElement, SearchTriggerProps>(\n ({ className, placeholder = 'Search docs...', variant = 'default', ...props }, ref) => {\n return (\n <Button\n variant=\"outline\"\n className={cn(\n 'relative h-9 text-sm text-muted-foreground transition-all transition-colors',\n variant === 'default'\n ? 'w-full justify-start sm:pr-12 md:w-40 lg:w-64'\n : 'w-9 justify-center px-0 sm:w-24 sm:justify-start sm:px-3 sm:pr-12',\n className,\n )}\n ref={ref}\n {...props}\n >\n <span className=\"inline-flex items-center gap-2\">\n <SearchIcon className=\"h-4 w-4 shrink-0\" />\n {variant === 'default' && <span className=\"truncate\">{placeholder}</span>}\n </span>\n <kbd className=\"pointer-events-none absolute right-1.5 top-1.5 hidden h-6 select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium opacity-100 sm:flex\">\n <span className=\"text-xs\">⌘</span>K\n </kbd>\n </Button>\n );\n },\n);\nSearchTrigger.displayName = 'SearchTrigger';\n\nexport { CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList };\n",
9
+ "content": "'use client';\n\nimport { Button } from '@/components/ui/button';\nimport {\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/ui/command';\nimport { cn } from '@/lib/utils';\nimport { Search as SearchIcon } from 'lucide-react';\nimport * as React from 'react';\n\nexport interface SearchProps {\n children?: React.ReactNode;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport function Search({ children, open: customOpen, onOpenChange }: SearchProps) {\n const [open, setOpen] = React.useState(false);\n\n const isControlled = customOpen !== undefined;\n const isOpen = isControlled ? customOpen : open;\n\n const setIsOpen = React.useCallback(\n (value: boolean | ((prev: boolean) => boolean)) => {\n if (isControlled) {\n const nextValue = typeof value === 'function' ? value(isOpen) : value;\n onOpenChange?.(nextValue);\n } else {\n setOpen(value);\n }\n },\n [isControlled, isOpen, onOpenChange],\n );\n\n React.useEffect(() => {\n const down = (e: KeyboardEvent) => {\n if (e.key === 'k' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n setIsOpen((prev) => !prev);\n }\n };\n\n document.addEventListener('keydown', down);\n return () => document.removeEventListener('keydown', down);\n }, [setIsOpen]);\n\n return (\n <CommandDialog open={isOpen} onOpenChange={setIsOpen}>\n {children}\n </CommandDialog>\n );\n}\n\nexport interface SearchTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n className?: string;\n placeholder?: string;\n variant?: 'default' | 'compact';\n}\n\nexport const SearchTrigger = React.forwardRef<HTMLButtonElement, SearchTriggerProps>(\n ({ className, placeholder = 'Search docs...', variant = 'default', ...props }, ref) => {\n return (\n <Button\n variant=\"outline\"\n className={cn(\n 'relative h-9 text-sm text-muted-foreground transition-all transition-colors',\n variant === 'default'\n ? 'w-full justify-start pr-12'\n : 'w-9 justify-center px-0 md:w-40 md:justify-start md:px-3 md:pr-12 lg:w-64',\n className,\n )}\n ref={ref}\n {...props}\n >\n <span className=\"inline-flex items-center gap-2\">\n <SearchIcon className=\"h-4 w-4 shrink-0\" />\n <span className={cn('truncate', variant === 'compact' && 'hidden md:inline')}>{placeholder}</span>\n </span>\n <kbd className=\"pointer-events-none absolute right-1.5 top-1.5 hidden h-6 select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium opacity-100 sm:flex\">\n <span className=\"text-xs\">⌘</span>K\n </kbd>\n </Button>\n );\n },\n);\nSearchTrigger.displayName = 'SearchTrigger';\n\nexport { CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList };\n",
10
10
  "type": "registry:ui"
11
11
  }
12
12
  ]
@@ -6,7 +6,7 @@
6
6
  "files": [
7
7
  {
8
8
  "path": "ui/search.test.tsx",
9
- "content": "import { fireEvent, render, screen } from '@testing-library/react';\nimport * as React from 'react';\nimport { describe, expect, it, vi } from 'vitest';\nimport { CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, Search, SearchTrigger } from './search';\n\n// Mock CommandDialog since it uses Radix Dialog which might need a portal\nvi.mock('@/components/ui/dialog', () => ({\n Dialog: ({ children, open }: { children: React.ReactNode; open: boolean }) => (open ? <div>{children}</div> : null),\n DialogContent: ({ children }: { children: React.ReactNode }) => <div>{children}</div>,\n DialogPortal: ({ children }: { children: React.ReactNode }) => <div>{children}</div>,\n DialogOverlay: () => null,\n}));\n\ndescribe('Search', () => {\n it('renders search trigger', () => {\n render(<SearchTrigger />);\n expect(screen.getByText('Search docs...')).toBeInTheDocument();\n });\n\n it('opens search dialog when trigger is clicked (controlled)', () => {\n const onOpenChange = vi.fn();\n render(\n <Search open={false} onOpenChange={onOpenChange}>\n <CommandInput placeholder=\"Search...\" />\n </Search>,\n );\n\n // The dialog should be closed initially\n expect(screen.queryByPlaceholderText('Search...')).not.toBeInTheDocument();\n });\n\n it('responds to keyboard shortcuts', () => {\n render(\n <Search>\n <CommandInput placeholder=\"Search...\" />\n <CommandList>\n <CommandItem>Result 1</CommandItem>\n </CommandList>\n </Search>,\n );\n\n // Simulate Cmd+K\n fireEvent.keyDown(document, { key: 'k', metaKey: true });\n\n // Check if dialog content is visible\n expect(screen.getByPlaceholderText('Search...')).toBeInTheDocument();\n });\n\n it('filters results correctly', () => {\n render(\n <Search open={true}>\n <CommandInput placeholder=\"Search...\" />\n <CommandList>\n <CommandEmpty>No results.</CommandEmpty>\n <CommandGroup heading=\"Components\">\n <SearchItem>Button</SearchItem>\n <SearchItem>Input</SearchItem>\n </CommandGroup>\n </CommandList>\n </Search>,\n );\n\n const input = screen.getByPlaceholderText('Search...');\n fireEvent.change(input, { target: { value: 'But' } });\n\n expect(screen.getByText('Button')).toBeInTheDocument();\n // cmdk removes non-matching items from the DOM\n expect(screen.queryByText('Input')).not.toBeInTheDocument();\n });\n});\n\n// Helper component for testing\nfunction SearchItem({ children }: { children: React.ReactNode }) {\n return <CommandItem>{children}</CommandItem>;\n}\n",
9
+ "content": "import { fireEvent, render, screen } from '@testing-library/react';\nimport * as React from 'react';\nimport { describe, expect, it, vi } from 'vitest';\nimport { CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, Search, SearchTrigger } from './search';\n\n// Mock CommandDialog since it uses Radix Dialog which might need a portal\nvi.mock('@/components/ui/dialog', () => ({\n Dialog: ({ children, open }: { children: React.ReactNode; open: boolean }) => (open ? <div>{children}</div> : null),\n DialogContent: ({ children }: { children: React.ReactNode }) => <div>{children}</div>,\n DialogPortal: ({ children }: { children: React.ReactNode }) => <div>{children}</div>,\n DialogOverlay: () => null,\n DialogTitle: ({ children }: { children: React.ReactNode }) => <h2>{children}</h2>,\n DialogDescription: ({ children }: { children: React.ReactNode }) => <p>{children}</p>,\n}));\n\ndescribe('Search', () => {\n it('renders search trigger', () => {\n render(<SearchTrigger />);\n expect(screen.getByText('Search docs...')).toBeInTheDocument();\n });\n\n it('opens search dialog when trigger is clicked (controlled)', () => {\n const onOpenChange = vi.fn();\n render(\n <Search open={false} onOpenChange={onOpenChange}>\n <CommandInput placeholder=\"Search...\" />\n </Search>,\n );\n\n // The dialog should be closed initially\n expect(screen.queryByPlaceholderText('Search...')).not.toBeInTheDocument();\n });\n\n it('responds to keyboard shortcuts', () => {\n render(\n <Search>\n <CommandInput placeholder=\"Search...\" />\n <CommandList>\n <CommandItem>Result 1</CommandItem>\n </CommandList>\n </Search>,\n );\n\n // Simulate Cmd+K\n fireEvent.keyDown(document, { key: 'k', metaKey: true });\n\n // Check if dialog content is visible\n expect(screen.getByPlaceholderText('Search...')).toBeInTheDocument();\n });\n\n it('filters results correctly', () => {\n render(\n <Search open={true}>\n <CommandInput placeholder=\"Search...\" />\n <CommandList>\n <CommandEmpty>No results.</CommandEmpty>\n <CommandGroup heading=\"Components\">\n <SearchItem>Button</SearchItem>\n <SearchItem>Input</SearchItem>\n </CommandGroup>\n </CommandList>\n </Search>,\n );\n\n const input = screen.getByPlaceholderText('Search...');\n fireEvent.change(input, { target: { value: 'But' } });\n\n expect(screen.getByText('Button')).toBeInTheDocument();\n // cmdk removes non-matching items from the DOM\n expect(screen.queryByText('Input')).not.toBeInTheDocument();\n });\n});\n\n// Helper component for testing\nfunction SearchItem({ children }: { children: React.ReactNode }) {\n return <CommandItem>{children}</CommandItem>;\n}\n",
10
10
  "type": "registry:ui"
11
11
  }
12
12
  ]
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "theme-provider",
3
+ "type": "registry:ui",
4
+ "dependencies": [],
5
+ "registryDependencies": [],
6
+ "files": [
7
+ {
8
+ "path": "ui/theme-provider.tsx",
9
+ "content": "import type { ThemeProviderProps as NextThemesProviderProps } from 'next-themes';\nimport { ThemeProvider as NextThemesProvider } from 'next-themes';\n\nexport type ThemeProviderProps = NextThemesProviderProps;\n\nexport function ThemeProvider({ children, ...props }: ThemeProviderProps) {\n return (\n <NextThemesProvider attribute=\"class\" defaultTheme=\"system\" enableSystem {...props}>\n {children}\n </NextThemesProvider>\n );\n}\n",
10
+ "type": "registry:ui"
11
+ }
12
+ ]
13
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "theme-provider.test",
3
+ "type": "registry:ui",
4
+ "dependencies": [],
5
+ "registryDependencies": [],
6
+ "files": [
7
+ {
8
+ "path": "ui/theme-provider.test.tsx",
9
+ "content": "import { ThemeProvider } from '@/components/ui/theme-provider';\nimport { render, screen } from '@testing-library/react';\nimport { describe, expect, it } from 'vitest';\n\ndescribe('ThemeProvider', () => {\n it('renders children correctly', () => {\n render(\n <ThemeProvider>\n <div data-testid=\"child\">Hello</div>\n </ThemeProvider>,\n );\n expect(screen.getByTestId('child')).toBeInTheDocument();\n expect(screen.getByTestId('child')).toHaveTextContent('Hello');\n });\n\n it('applies class attribute to html element by default', () => {\n render(\n <ThemeProvider>\n <div>Content</div>\n </ThemeProvider>,\n );\n // next-themes applies the attribute to the html element;\n // in jsdom the attribute should be set to 'class' by default\n const html = document.documentElement;\n // The attribute prop controls how the theme class is toggled.\n // We verify the provider renders without error, which confirms the defaults are valid.\n expect(html).toBeDefined();\n });\n\n it('allows overriding default props', () => {\n render(\n <ThemeProvider defaultTheme=\"dark\" enableSystem={false}>\n <div data-testid=\"child\">Dark Mode</div>\n </ThemeProvider>,\n );\n expect(screen.getByTestId('child')).toBeInTheDocument();\n });\n\n it('passes additional next-themes props through', () => {\n render(\n <ThemeProvider storageKey=\"my-app-theme\" themes={['light', 'dark', 'ocean']}>\n <div data-testid=\"child\">Custom themes</div>\n </ThemeProvider>,\n );\n expect(screen.getByTestId('child')).toBeInTheDocument();\n });\n});\n",
10
+ "type": "registry:ui"
11
+ }
12
+ ]
13
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./vendor-CIyDEr7H.js"),i=require("./utils-CUFNKXRW.js"),l=({className:t,direction:a,...r})=>e.jsxRuntimeExports.jsx(e.Dt,{orientation:a,className:i.cn("flex h-full w-full data-[panel-group-direction=vertical]:flex-col",t),...r}),n=e.Nt,s=({withHandle:t,className:a,...r})=>e.jsxRuntimeExports.jsx(e.Ft,{className:i.cn("relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90",a),...r,children:t&&e.jsxRuntimeExports.jsx("div",{className:"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border",children:e.jsxRuntimeExports.jsx(e.GripVertical,{className:"h-2.5 w-2.5"})})});exports.ResizableHandle=s;exports.ResizablePanel=n;exports.ResizablePanelGroup=l;
2
+ //# sourceMappingURL=resizable.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resizable.cjs.js","sources":["../src/components/ui/resizable.tsx"],"sourcesContent":["import { GripVertical } from 'lucide-react';\nimport * as React from 'react';\nimport { Group, Panel, Separator } from 'react-resizable-panels';\n\nimport { cn } from '@/lib/utils';\n\nconst ResizablePanelGroup = ({\n className,\n direction,\n ...props\n}: React.ComponentProps<typeof Group> & {\n direction: 'horizontal' | 'vertical';\n}) => (\n <Group\n orientation={direction}\n className={cn('flex h-full w-full data-[panel-group-direction=vertical]:flex-col', className)}\n {...props}\n />\n);\n\nconst ResizablePanel = Panel;\n\nconst ResizableHandle = ({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof Separator> & {\n withHandle?: boolean;\n}) => (\n <Separator\n className={cn(\n 'relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90',\n className,\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border\">\n <GripVertical className=\"h-2.5 w-2.5\" />\n </div>\n )}\n </Separator>\n);\n\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup };\n"],"names":["ResizablePanelGroup","className","direction","props","jsx","Group","cn","ResizablePanel","Panel","ResizableHandle","withHandle","Separator","GripVertical"],"mappings":"yJAMMA,EAAsB,CAAC,CAC3B,UAAAC,EACA,UAAAC,EACA,GAAGC,CACL,IAGEC,EAAAA,kBAAAA,IAACC,EAAAA,GAAA,CACC,YAAaH,EACb,UAAWI,EAAAA,GAAG,oEAAqEL,CAAS,EAC3F,GAAGE,CAAA,CACN,EAGII,EAAiBC,EAAAA,GAEjBC,EAAkB,CAAC,CACvB,WAAAC,EACA,UAAAT,EACA,GAAGE,CACL,IAGEC,EAAAA,kBAAAA,IAACO,EAAAA,GAAA,CACC,UAAWL,EAAAA,GACT,0oBACAL,CAAA,EAED,GAAGE,EAEH,SAAAO,2BACE,MAAA,CAAI,UAAU,4EACb,SAAAN,EAAAA,kBAAAA,IAACQ,EAAAA,aAAA,CAAa,UAAU,aAAA,CAAc,CAAA,CACxC,CAAA,CAEJ"}
@@ -0,0 +1,34 @@
1
+ import { aH as l, j as e, aI as n, aJ as s, aK as o } from "./vendor-CCQzmGyD.mjs";
2
+ import { c as i } from "./utils-C9QGdMaH.mjs";
3
+ const d = ({
4
+ className: a,
5
+ direction: t,
6
+ ...r
7
+ }) => /* @__PURE__ */ e.jsx(
8
+ o,
9
+ {
10
+ orientation: t,
11
+ className: i("flex h-full w-full data-[panel-group-direction=vertical]:flex-col", a),
12
+ ...r
13
+ }
14
+ ), p = l, u = ({
15
+ withHandle: a,
16
+ className: t,
17
+ ...r
18
+ }) => /* @__PURE__ */ e.jsx(
19
+ n,
20
+ {
21
+ className: i(
22
+ "relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90",
23
+ t
24
+ ),
25
+ ...r,
26
+ children: a && /* @__PURE__ */ e.jsx("div", { className: "z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border", children: /* @__PURE__ */ e.jsx(s, { className: "h-2.5 w-2.5" }) })
27
+ }
28
+ );
29
+ export {
30
+ u as ResizableHandle,
31
+ p as ResizablePanel,
32
+ d as ResizablePanelGroup
33
+ };
34
+ //# sourceMappingURL=resizable.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resizable.es.js","sources":["../src/components/ui/resizable.tsx"],"sourcesContent":["import { GripVertical } from 'lucide-react';\nimport * as React from 'react';\nimport { Group, Panel, Separator } from 'react-resizable-panels';\n\nimport { cn } from '@/lib/utils';\n\nconst ResizablePanelGroup = ({\n className,\n direction,\n ...props\n}: React.ComponentProps<typeof Group> & {\n direction: 'horizontal' | 'vertical';\n}) => (\n <Group\n orientation={direction}\n className={cn('flex h-full w-full data-[panel-group-direction=vertical]:flex-col', className)}\n {...props}\n />\n);\n\nconst ResizablePanel = Panel;\n\nconst ResizableHandle = ({\n withHandle,\n className,\n ...props\n}: React.ComponentProps<typeof Separator> & {\n withHandle?: boolean;\n}) => (\n <Separator\n className={cn(\n 'relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90',\n className,\n )}\n {...props}\n >\n {withHandle && (\n <div className=\"z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border\">\n <GripVertical className=\"h-2.5 w-2.5\" />\n </div>\n )}\n </Separator>\n);\n\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup };\n"],"names":["ResizablePanelGroup","className","direction","props","jsx","Group","cn","ResizablePanel","Panel","ResizableHandle","withHandle","Separator","GripVertical"],"mappings":";;AAMA,MAAMA,IAAsB,CAAC;AAAA,EAC3B,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,MAGEC,gBAAAA,EAAAA;AAAAA,EAACC;AAAAA,EAAA;AAAA,IACC,aAAaH;AAAA,IACb,WAAWI,EAAG,qEAAqEL,CAAS;AAAA,IAC3F,GAAGE;AAAA,EAAA;AACN,GAGII,IAAiBC,GAEjBC,IAAkB,CAAC;AAAA,EACvB,YAAAC;AAAA,EACA,WAAAT;AAAA,EACA,GAAGE;AACL,MAGEC,gBAAAA,EAAAA;AAAAA,EAACO;AAAAA,EAAA;AAAA,IACC,WAAWL;AAAA,MACT;AAAA,MACAL;AAAA,IAAA;AAAA,IAED,GAAGE;AAAA,IAEH,UAAAO,2BACE,OAAA,EAAI,WAAU,6EACb,UAAAN,gBAAAA,EAAAA,IAACQ,GAAA,EAAa,WAAU,cAAA,CAAc,EAAA,CACxC;AAAA,EAAA;AAEJ;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./vendor-CIyDEr7H.js"),i=require("react"),a=require("./utils-CUFNKXRW.js");function u(r){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const l in r)if(l!=="default"){const o=Object.getOwnPropertyDescriptor(r,l);Object.defineProperty(t,l,o.get?o:{enumerable:!0,get:()=>r[l]})}}return t.default=r,Object.freeze(t)}const n=u(i),c=n.forwardRef(({className:r,children:t,...l},o)=>e.jsxRuntimeExports.jsxs(e.Root$5,{ref:o,className:a.cn("relative overflow-hidden",r),...l,children:[e.jsxRuntimeExports.jsx(e.Viewport$1,{className:"h-full w-full rounded-[inherit]",children:t}),e.jsxRuntimeExports.jsx(s,{}),e.jsxRuntimeExports.jsx(e.Corner,{})]}));c.displayName=e.Root$5.displayName;const s=n.forwardRef(({className:r,orientation:t="vertical",...l},o)=>e.jsxRuntimeExports.jsx(e.ScrollAreaScrollbar,{ref:o,orientation:t,className:a.cn("flex touch-none select-none transition-colors",t==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",t==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",r),...l,children:e.jsxRuntimeExports.jsx(e.ScrollAreaThumb,{className:"relative flex-1 rounded-full bg-border"})}));s.displayName=e.ScrollAreaScrollbar.displayName;exports.ScrollArea=c;exports.ScrollBar=s;
2
+ //# sourceMappingURL=scroll-area.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll-area.cjs.js","sources":["../src/components/ui/scroll-area.tsx"],"sourcesContent":["import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root ref={ref} className={cn('relative overflow-hidden', className)} {...props}>\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">{children}</ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = 'vertical', ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n 'flex touch-none select-none transition-colors',\n orientation === 'vertical' && 'h-full w-2.5 border-l border-l-transparent p-[1px]',\n orientation === 'horizontal' && 'h-2.5 flex-col border-t border-t-transparent p-[1px]',\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\n\nexport { ScrollArea, ScrollBar };\n"],"names":["ScrollArea","React","className","children","props","ref","ScrollAreaPrimitive.Root","cn","jsx","ScrollAreaPrimitive.Viewport","ScrollBar","ScrollAreaPrimitive.Corner","orientation","ScrollAreaPrimitive.ScrollAreaScrollbar","ScrollAreaPrimitive.ScrollAreaThumb"],"mappings":"scAKMA,EAAaC,EAAM,WAGvB,CAAC,CAAE,UAAAC,EAAW,SAAAC,EAAU,GAAGC,CAAA,EAASC,6BACnCC,EAAAA,OAAA,CAAyB,IAAAD,EAAU,UAAWE,EAAAA,GAAG,2BAA4BL,CAAS,EAAI,GAAGE,EAC5F,SAAA,CAAAI,EAAAA,kBAAAA,IAACC,EAAAA,WAAA,CAA6B,UAAU,kCAAmC,SAAAN,CAAA,CAAS,0BACnFO,EAAA,EAAU,EACXF,EAAAA,kBAAAA,IAACG,EAAAA,OAAA,CAAA,CAA2B,CAAA,EAC9B,CACD,EACDX,EAAW,YAAcM,EAAAA,OAAyB,YAElD,MAAMI,EAAYT,EAAM,WAGtB,CAAC,CAAE,UAAAC,EAAW,YAAAU,EAAc,WAAY,GAAGR,GAASC,IACpDG,EAAAA,kBAAAA,IAACK,EAAAA,oBAAA,CACC,IAAAR,EACA,YAAAO,EACA,UAAWL,EAAAA,GACT,gDACAK,IAAgB,YAAc,qDAC9BA,IAAgB,cAAgB,uDAChCV,CAAA,EAED,GAAGE,EAEJ,SAAAI,EAAAA,kBAAAA,IAACM,EAAAA,gBAAA,CAAoC,UAAU,wCAAA,CAAyC,CAAA,CAC1F,CACD,EACDJ,EAAU,YAAcG,EAAAA,oBAAwC"}
@@ -0,0 +1,30 @@
1
+ import { j as r, aL as o, aM as i, aN as m, aO as t, aP as p } from "./vendor-CCQzmGyD.mjs";
2
+ import * as c from "react";
3
+ import { c as d } from "./utils-C9QGdMaH.mjs";
4
+ const f = c.forwardRef(({ className: e, children: a, ...l }, s) => /* @__PURE__ */ r.jsxs(o, { ref: s, className: d("relative overflow-hidden", e), ...l, children: [
5
+ /* @__PURE__ */ r.jsx(i, { className: "h-full w-full rounded-[inherit]", children: a }),
6
+ /* @__PURE__ */ r.jsx(n, {}),
7
+ /* @__PURE__ */ r.jsx(m, {})
8
+ ] }));
9
+ f.displayName = o.displayName;
10
+ const n = c.forwardRef(({ className: e, orientation: a = "vertical", ...l }, s) => /* @__PURE__ */ r.jsx(
11
+ t,
12
+ {
13
+ ref: s,
14
+ orientation: a,
15
+ className: d(
16
+ "flex touch-none select-none transition-colors",
17
+ a === "vertical" && "h-full w-2.5 border-l border-l-transparent p-[1px]",
18
+ a === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-[1px]",
19
+ e
20
+ ),
21
+ ...l,
22
+ children: /* @__PURE__ */ r.jsx(p, { className: "relative flex-1 rounded-full bg-border" })
23
+ }
24
+ ));
25
+ n.displayName = t.displayName;
26
+ export {
27
+ f as ScrollArea,
28
+ n as ScrollBar
29
+ };
30
+ //# sourceMappingURL=scroll-area.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll-area.es.js","sources":["../src/components/ui/scroll-area.tsx"],"sourcesContent":["import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root ref={ref} className={cn('relative overflow-hidden', className)} {...props}>\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">{children}</ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = 'vertical', ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n 'flex touch-none select-none transition-colors',\n orientation === 'vertical' && 'h-full w-2.5 border-l border-l-transparent p-[1px]',\n orientation === 'horizontal' && 'h-2.5 flex-col border-t border-t-transparent p-[1px]',\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\n\nexport { ScrollArea, ScrollBar };\n"],"names":["ScrollArea","React","className","children","props","ref","ScrollAreaPrimitive.Root","cn","jsx","ScrollAreaPrimitive.Viewport","ScrollBar","ScrollAreaPrimitive.Corner","orientation","ScrollAreaPrimitive.ScrollAreaScrollbar","ScrollAreaPrimitive.ScrollAreaThumb"],"mappings":";;;AAKA,MAAMA,IAAaC,EAAM,WAGvB,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GAASC,6BACnCC,GAAA,EAAyB,KAAAD,GAAU,WAAWE,EAAG,4BAA4BL,CAAS,GAAI,GAAGE,GAC5F,UAAA;AAAA,EAAAI,gBAAAA,EAAAA,IAACC,GAAA,EAA6B,WAAU,mCAAmC,UAAAN,EAAA,CAAS;AAAA,wBACnFO,GAAA,EAAU;AAAA,EACXF,gBAAAA,EAAAA,IAACG,GAAA,CAAA,CAA2B;AAAA,GAC9B,CACD;AACDX,EAAW,cAAcM,EAAyB;AAElD,MAAMI,IAAYT,EAAM,WAGtB,CAAC,EAAE,WAAAC,GAAW,aAAAU,IAAc,YAAY,GAAGR,KAASC,MACpDG,gBAAAA,EAAAA;AAAAA,EAACK;AAAAA,EAAA;AAAA,IACC,KAAAR;AAAA,IACA,aAAAO;AAAA,IACA,WAAWL;AAAA,MACT;AAAA,MACAK,MAAgB,cAAc;AAAA,MAC9BA,MAAgB,gBAAgB;AAAA,MAChCV;AAAA,IAAA;AAAA,IAED,GAAGE;AAAA,IAEJ,UAAAI,gBAAAA,EAAAA,IAACM,GAAA,EAAoC,WAAU,yCAAA,CAAyC;AAAA,EAAA;AAC1F,CACD;AACDJ,EAAU,cAAcG,EAAwC;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./vendor-CIyDEr7H.js"),j=require("./button.cjs.js"),i=require("./command.cjs.js"),p=require("./utils-CUFNKXRW.js"),g=require("react");function h(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const e in t)if(e!=="default"){const o=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(n,e,o.get?o:{enumerable:!0,get:()=>t[e]})}}return n.default=t,Object.freeze(n)}const c=h(g);function y({children:t,open:n,onOpenChange:e}){const[o,m]=c.useState(!1),d=n!==void 0,u=d?n:o,l=c.useCallback(r=>{if(d){const a=typeof r=="function"?r(u):r;e?.(a)}else m(r)},[d,u,e]);return c.useEffect(()=>{const r=a=>{a.key==="k"&&(a.metaKey||a.ctrlKey)&&(a.preventDefault(),l(f=>!f))};return document.addEventListener("keydown",r),()=>document.removeEventListener("keydown",r)},[l]),s.jsxRuntimeExports.jsx(i.CommandDialog,{open:u,onOpenChange:l,children:t})}const x=c.forwardRef(({className:t,placeholder:n="Search docs...",variant:e="default",...o},m)=>s.jsxRuntimeExports.jsxs(j.Button,{variant:"outline",className:p.cn("relative h-9 text-sm text-muted-foreground transition-all transition-colors",e==="default"?"w-full justify-start pr-12":"w-9 justify-center px-0 md:w-40 md:justify-start md:px-3 md:pr-12 lg:w-64",t),ref:m,...o,children:[s.jsxRuntimeExports.jsxs("span",{className:"inline-flex items-center gap-2",children:[s.jsxRuntimeExports.jsx(s.Search,{className:"h-4 w-4 shrink-0"}),s.jsxRuntimeExports.jsx("span",{className:p.cn("truncate",e==="compact"&&"hidden md:inline"),children:n})]}),s.jsxRuntimeExports.jsxs("kbd",{className:"pointer-events-none absolute right-1.5 top-1.5 hidden h-6 select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium opacity-100 sm:flex",children:[s.jsxRuntimeExports.jsx("span",{className:"text-xs",children:"⌘"}),"K"]})]}));x.displayName="SearchTrigger";exports.CommandEmpty=i.CommandEmpty;exports.CommandGroup=i.CommandGroup;exports.CommandInput=i.CommandInput;exports.CommandItem=i.CommandItem;exports.CommandList=i.CommandList;exports.Search=y;exports.SearchTrigger=x;
2
+ //# sourceMappingURL=search.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.cjs.js","sources":["../src/components/ui/search.tsx"],"sourcesContent":["'use client';\n\nimport { Button } from '@/components/ui/button';\nimport {\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/ui/command';\nimport { cn } from '@/lib/utils';\nimport { Search as SearchIcon } from 'lucide-react';\nimport * as React from 'react';\n\nexport interface SearchProps {\n children?: React.ReactNode;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport function Search({ children, open: customOpen, onOpenChange }: SearchProps) {\n const [open, setOpen] = React.useState(false);\n\n const isControlled = customOpen !== undefined;\n const isOpen = isControlled ? customOpen : open;\n\n const setIsOpen = React.useCallback(\n (value: boolean | ((prev: boolean) => boolean)) => {\n if (isControlled) {\n const nextValue = typeof value === 'function' ? value(isOpen) : value;\n onOpenChange?.(nextValue);\n } else {\n setOpen(value);\n }\n },\n [isControlled, isOpen, onOpenChange],\n );\n\n React.useEffect(() => {\n const down = (e: KeyboardEvent) => {\n if (e.key === 'k' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n setIsOpen((prev) => !prev);\n }\n };\n\n document.addEventListener('keydown', down);\n return () => document.removeEventListener('keydown', down);\n }, [setIsOpen]);\n\n return (\n <CommandDialog open={isOpen} onOpenChange={setIsOpen}>\n {children}\n </CommandDialog>\n );\n}\n\nexport interface SearchTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n className?: string;\n placeholder?: string;\n variant?: 'default' | 'compact';\n}\n\nexport const SearchTrigger = React.forwardRef<HTMLButtonElement, SearchTriggerProps>(\n ({ className, placeholder = 'Search docs...', variant = 'default', ...props }, ref) => {\n return (\n <Button\n variant=\"outline\"\n className={cn(\n 'relative h-9 text-sm text-muted-foreground transition-all transition-colors',\n variant === 'default'\n ? 'w-full justify-start pr-12'\n : 'w-9 justify-center px-0 md:w-40 md:justify-start md:px-3 md:pr-12 lg:w-64',\n className,\n )}\n ref={ref}\n {...props}\n >\n <span className=\"inline-flex items-center gap-2\">\n <SearchIcon className=\"h-4 w-4 shrink-0\" />\n <span className={cn('truncate', variant === 'compact' && 'hidden md:inline')}>{placeholder}</span>\n </span>\n <kbd className=\"pointer-events-none absolute right-1.5 top-1.5 hidden h-6 select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium opacity-100 sm:flex\">\n <span className=\"text-xs\">⌘</span>K\n </kbd>\n </Button>\n );\n },\n);\nSearchTrigger.displayName = 'SearchTrigger';\n\nexport { CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList };\n"],"names":["Search","children","customOpen","onOpenChange","open","setOpen","React","isControlled","isOpen","setIsOpen","value","nextValue","down","e","prev","CommandDialog","SearchTrigger","className","placeholder","variant","props","ref","jsxs","Button","cn","jsx","SearchIcon"],"mappings":"igBAqBO,SAASA,EAAO,CAAE,SAAAC,EAAU,KAAMC,EAAY,aAAAC,GAA6B,CAChF,KAAM,CAACC,EAAMC,CAAO,EAAIC,EAAM,SAAS,EAAK,EAEtCC,EAAeL,IAAe,OAC9BM,EAASD,EAAeL,EAAaE,EAErCK,EAAYH,EAAM,YACrBI,GAAkD,CACjD,GAAIH,EAAc,CAChB,MAAMI,EAAY,OAAOD,GAAU,WAAaA,EAAMF,CAAM,EAAIE,EAChEP,IAAeQ,CAAS,CAC1B,MACEN,EAAQK,CAAK,CAEjB,EACA,CAACH,EAAcC,EAAQL,CAAY,CAAA,EAGrCG,OAAAA,EAAM,UAAU,IAAM,CACpB,MAAMM,EAAQC,GAAqB,CAC7BA,EAAE,MAAQ,MAAQA,EAAE,SAAWA,EAAE,WACnCA,EAAE,eAAA,EACFJ,EAAWK,GAAS,CAACA,CAAI,EAE7B,EAEA,gBAAS,iBAAiB,UAAWF,CAAI,EAClC,IAAM,SAAS,oBAAoB,UAAWA,CAAI,CAC3D,EAAG,CAACH,CAAS,CAAC,0BAGXM,EAAAA,cAAA,CAAc,KAAMP,EAAQ,aAAcC,EACxC,SAAAR,EACH,CAEJ,CAQO,MAAMe,EAAgBV,EAAM,WACjC,CAAC,CAAE,UAAAW,EAAW,YAAAC,EAAc,iBAAkB,QAAAC,EAAU,UAAW,GAAGC,CAAA,EAASC,IAE3EC,EAAAA,kBAAAA,KAACC,EAAAA,OAAA,CACC,QAAQ,UACR,UAAWC,EAAAA,GACT,8EACAL,IAAY,UACR,6BACA,4EACJF,CAAA,EAEF,IAAAI,EACC,GAAGD,EAEJ,SAAA,CAAAE,EAAAA,kBAAAA,KAAC,OAAA,CAAK,UAAU,iCACd,SAAA,CAAAG,EAAAA,kBAAAA,IAACC,EAAAA,OAAA,CAAW,UAAU,kBAAA,CAAmB,EACzCD,EAAAA,kBAAAA,IAAC,QAAK,UAAWD,KAAG,WAAYL,IAAY,WAAa,kBAAkB,EAAI,SAAAD,CAAA,CAAY,CAAA,EAC7F,EACAI,EAAAA,kBAAAA,KAAC,MAAA,CAAI,UAAU,gLACb,SAAA,CAAAG,EAAAA,kBAAAA,IAAC,OAAA,CAAK,UAAU,UAAU,SAAA,IAAC,EAAO,GAAA,CAAA,CACpC,CAAA,CAAA,CAAA,CAIR,EACAT,EAAc,YAAc"}
@@ -0,0 +1,60 @@
1
+ import { j as t, aW as u } from "./vendor-CCQzmGyD.mjs";
2
+ import { Button as x } from "./button.es.js";
3
+ import { CommandDialog as h } from "./command.es.js";
4
+ import { CommandEmpty as b, CommandGroup as E, CommandInput as v, CommandItem as I, CommandList as K } from "./command.es.js";
5
+ import { c as p } from "./utils-C9QGdMaH.mjs";
6
+ import * as r from "react";
7
+ function k({ children: a, open: o, onOpenChange: s }) {
8
+ const [m, i] = r.useState(!1), c = o !== void 0, d = c ? o : m, l = r.useCallback(
9
+ (e) => {
10
+ if (c) {
11
+ const n = typeof e == "function" ? e(d) : e;
12
+ s?.(n);
13
+ } else
14
+ i(e);
15
+ },
16
+ [c, d, s]
17
+ );
18
+ return r.useEffect(() => {
19
+ const e = (n) => {
20
+ n.key === "k" && (n.metaKey || n.ctrlKey) && (n.preventDefault(), l((f) => !f));
21
+ };
22
+ return document.addEventListener("keydown", e), () => document.removeEventListener("keydown", e);
23
+ }, [l]), /* @__PURE__ */ t.jsx(h, { open: d, onOpenChange: l, children: a });
24
+ }
25
+ const j = r.forwardRef(
26
+ ({ className: a, placeholder: o = "Search docs...", variant: s = "default", ...m }, i) => /* @__PURE__ */ t.jsxs(
27
+ x,
28
+ {
29
+ variant: "outline",
30
+ className: p(
31
+ "relative h-9 text-sm text-muted-foreground transition-all transition-colors",
32
+ s === "default" ? "w-full justify-start pr-12" : "w-9 justify-center px-0 md:w-40 md:justify-start md:px-3 md:pr-12 lg:w-64",
33
+ a
34
+ ),
35
+ ref: i,
36
+ ...m,
37
+ children: [
38
+ /* @__PURE__ */ t.jsxs("span", { className: "inline-flex items-center gap-2", children: [
39
+ /* @__PURE__ */ t.jsx(u, { className: "h-4 w-4 shrink-0" }),
40
+ /* @__PURE__ */ t.jsx("span", { className: p("truncate", s === "compact" && "hidden md:inline"), children: o })
41
+ ] }),
42
+ /* @__PURE__ */ t.jsxs("kbd", { className: "pointer-events-none absolute right-1.5 top-1.5 hidden h-6 select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium opacity-100 sm:flex", children: [
43
+ /* @__PURE__ */ t.jsx("span", { className: "text-xs", children: "⌘" }),
44
+ "K"
45
+ ] })
46
+ ]
47
+ }
48
+ )
49
+ );
50
+ j.displayName = "SearchTrigger";
51
+ export {
52
+ b as CommandEmpty,
53
+ E as CommandGroup,
54
+ v as CommandInput,
55
+ I as CommandItem,
56
+ K as CommandList,
57
+ k as Search,
58
+ j as SearchTrigger
59
+ };
60
+ //# sourceMappingURL=search.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.es.js","sources":["../src/components/ui/search.tsx"],"sourcesContent":["'use client';\n\nimport { Button } from '@/components/ui/button';\nimport {\n CommandDialog,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/ui/command';\nimport { cn } from '@/lib/utils';\nimport { Search as SearchIcon } from 'lucide-react';\nimport * as React from 'react';\n\nexport interface SearchProps {\n children?: React.ReactNode;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n}\n\nexport function Search({ children, open: customOpen, onOpenChange }: SearchProps) {\n const [open, setOpen] = React.useState(false);\n\n const isControlled = customOpen !== undefined;\n const isOpen = isControlled ? customOpen : open;\n\n const setIsOpen = React.useCallback(\n (value: boolean | ((prev: boolean) => boolean)) => {\n if (isControlled) {\n const nextValue = typeof value === 'function' ? value(isOpen) : value;\n onOpenChange?.(nextValue);\n } else {\n setOpen(value);\n }\n },\n [isControlled, isOpen, onOpenChange],\n );\n\n React.useEffect(() => {\n const down = (e: KeyboardEvent) => {\n if (e.key === 'k' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n setIsOpen((prev) => !prev);\n }\n };\n\n document.addEventListener('keydown', down);\n return () => document.removeEventListener('keydown', down);\n }, [setIsOpen]);\n\n return (\n <CommandDialog open={isOpen} onOpenChange={setIsOpen}>\n {children}\n </CommandDialog>\n );\n}\n\nexport interface SearchTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n className?: string;\n placeholder?: string;\n variant?: 'default' | 'compact';\n}\n\nexport const SearchTrigger = React.forwardRef<HTMLButtonElement, SearchTriggerProps>(\n ({ className, placeholder = 'Search docs...', variant = 'default', ...props }, ref) => {\n return (\n <Button\n variant=\"outline\"\n className={cn(\n 'relative h-9 text-sm text-muted-foreground transition-all transition-colors',\n variant === 'default'\n ? 'w-full justify-start pr-12'\n : 'w-9 justify-center px-0 md:w-40 md:justify-start md:px-3 md:pr-12 lg:w-64',\n className,\n )}\n ref={ref}\n {...props}\n >\n <span className=\"inline-flex items-center gap-2\">\n <SearchIcon className=\"h-4 w-4 shrink-0\" />\n <span className={cn('truncate', variant === 'compact' && 'hidden md:inline')}>{placeholder}</span>\n </span>\n <kbd className=\"pointer-events-none absolute right-1.5 top-1.5 hidden h-6 select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium opacity-100 sm:flex\">\n <span className=\"text-xs\">⌘</span>K\n </kbd>\n </Button>\n );\n },\n);\nSearchTrigger.displayName = 'SearchTrigger';\n\nexport { CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList };\n"],"names":["Search","children","customOpen","onOpenChange","open","setOpen","React","isControlled","isOpen","setIsOpen","value","nextValue","down","e","prev","CommandDialog","SearchTrigger","className","placeholder","variant","props","ref","jsxs","Button","cn","jsx","SearchIcon"],"mappings":";;;;;;AAqBO,SAASA,EAAO,EAAE,UAAAC,GAAU,MAAMC,GAAY,cAAAC,KAA6B;AAChF,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAM,SAAS,EAAK,GAEtCC,IAAeL,MAAe,QAC9BM,IAASD,IAAeL,IAAaE,GAErCK,IAAYH,EAAM;AAAA,IACtB,CAACI,MAAkD;AACjD,UAAIH,GAAc;AAChB,cAAMI,IAAY,OAAOD,KAAU,aAAaA,EAAMF,CAAM,IAAIE;AAChE,QAAAP,IAAeQ,CAAS;AAAA,MAC1B;AACE,QAAAN,EAAQK,CAAK;AAAA,IAEjB;AAAA,IACA,CAACH,GAAcC,GAAQL,CAAY;AAAA,EAAA;AAGrC,SAAAG,EAAM,UAAU,MAAM;AACpB,UAAMM,IAAO,CAACC,MAAqB;AACjC,MAAIA,EAAE,QAAQ,QAAQA,EAAE,WAAWA,EAAE,aACnCA,EAAE,eAAA,GACFJ,EAAU,CAACK,MAAS,CAACA,CAAI;AAAA,IAE7B;AAEA,oBAAS,iBAAiB,WAAWF,CAAI,GAClC,MAAM,SAAS,oBAAoB,WAAWA,CAAI;AAAA,EAC3D,GAAG,CAACH,CAAS,CAAC,yBAGXM,GAAA,EAAc,MAAMP,GAAQ,cAAcC,GACxC,UAAAR,GACH;AAEJ;AAQO,MAAMe,IAAgBV,EAAM;AAAA,EACjC,CAAC,EAAE,WAAAW,GAAW,aAAAC,IAAc,kBAAkB,SAAAC,IAAU,WAAW,GAAGC,EAAA,GAASC,MAE3EC,gBAAAA,EAAAA;AAAAA,IAACC;AAAA,IAAA;AAAA,MACC,SAAQ;AAAA,MACR,WAAWC;AAAA,QACT;AAAA,QACAL,MAAY,YACR,+BACA;AAAA,QACJF;AAAA,MAAA;AAAA,MAEF,KAAAI;AAAA,MACC,GAAGD;AAAA,MAEJ,UAAA;AAAA,QAAAE,gBAAAA,EAAAA,KAAC,QAAA,EAAK,WAAU,kCACd,UAAA;AAAA,UAAAG,gBAAAA,EAAAA,IAACC,GAAA,EAAW,WAAU,mBAAA,CAAmB;AAAA,UACzCD,gBAAAA,EAAAA,IAAC,UAAK,WAAWD,EAAG,YAAYL,MAAY,aAAa,kBAAkB,GAAI,UAAAD,EAAA,CAAY;AAAA,QAAA,GAC7F;AAAA,QACAI,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,iLACb,UAAA;AAAA,UAAAG,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,WAAU,UAAA,KAAC;AAAA,UAAO;AAAA,QAAA,EAAA,CACpC;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;AACAT,EAAc,cAAc;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./vendor-CIyDEr7H.js"),f=require("react"),r=require("./utils-CUFNKXRW.js");function j(s){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(s){for(const t in s)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(s,t);Object.defineProperty(a,t,o.get?o:{enumerable:!0,get:()=>s[t]})}}return a.default=s,Object.freeze(a)}const n=j(f),g=e.Root2$8,h=e.Group,S=e.Value,c=n.forwardRef(({className:s,children:a,...t},o)=>e.jsxRuntimeExports.jsxs(e.Trigger$7,{ref:o,className:r.cn("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",s),...t,children:[a,e.jsxRuntimeExports.jsx(e.Icon,{asChild:!0,children:e.jsxRuntimeExports.jsx(e.ChevronDown,{className:"h-4 w-4 opacity-50"})})]}));c.displayName=e.Trigger$7.displayName;const l=n.forwardRef(({className:s,...a},t)=>e.jsxRuntimeExports.jsx(e.ScrollUpButton,{ref:t,className:r.cn("flex cursor-default items-center justify-center py-1",s),...a,children:e.jsxRuntimeExports.jsx(e.ChevronUp,{className:"h-4 w-4"})}));l.displayName=e.ScrollUpButton.displayName;const i=n.forwardRef(({className:s,...a},t)=>e.jsxRuntimeExports.jsx(e.ScrollDownButton,{ref:t,className:r.cn("flex cursor-default items-center justify-center py-1",s),...a,children:e.jsxRuntimeExports.jsx(e.ChevronDown,{className:"h-4 w-4"})}));i.displayName=e.ScrollDownButton.displayName;const d=n.forwardRef(({className:s,children:a,position:t="popper",...o},x)=>e.jsxRuntimeExports.jsx(e.Portal$2,{children:e.jsxRuntimeExports.jsxs(e.Content2$7,{ref:x,className:r.cn("relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md 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 origin-[--radix-select-content-transform-origin]",t==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",s),position:t,...o,children:[e.jsxRuntimeExports.jsx(l,{}),e.jsxRuntimeExports.jsx(e.Viewport$2,{className:r.cn("p-1",t==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:a}),e.jsxRuntimeExports.jsx(i,{})]})}));d.displayName=e.Content2$7.displayName;const p=n.forwardRef(({className:s,...a},t)=>e.jsxRuntimeExports.jsx(e.Label,{ref:t,className:r.cn("px-2 py-1.5 text-sm font-semibold",s),...a}));p.displayName=e.Label.displayName;const m=n.forwardRef(({className:s,children:a,...t},o)=>e.jsxRuntimeExports.jsxs(e.Item$2,{ref:o,className:r.cn("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",s),...t,children:[e.jsxRuntimeExports.jsx("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsxRuntimeExports.jsx(e.ItemIndicator,{children:e.jsxRuntimeExports.jsx(e.Check,{className:"h-4 w-4"})})}),e.jsxRuntimeExports.jsx(e.ItemText,{children:a})]}));m.displayName=e.Item$2.displayName;const u=n.forwardRef(({className:s,...a},t)=>e.jsxRuntimeExports.jsx(e.Separator,{ref:t,className:r.cn("-mx-1 my-1 h-px bg-muted",s),...a}));u.displayName=e.Separator.displayName;exports.Select=g;exports.SelectContent=d;exports.SelectGroup=h;exports.SelectItem=m;exports.SelectLabel=p;exports.SelectScrollDownButton=i;exports.SelectScrollUpButton=l;exports.SelectSeparator=u;exports.SelectTrigger=c;exports.SelectValue=S;
2
+ //# sourceMappingURL=select.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.cjs.js","sources":["../src/components/ui/select.tsx"],"sourcesContent":["import * as SelectPrimitive from '@radix-ui/react-select';\nimport { Check, ChevronDown, ChevronUp } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n 'flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1',\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn('flex cursor-default items-center justify-center py-1', className)}\n {...props}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn('flex cursor-default items-center justify-center py-1', className)}\n {...props}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = 'popper', ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n 'relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md 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 origin-[--radix-select-content-transform-origin]',\n position === 'popper' &&\n 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n 'p-1',\n position === 'popper' &&\n 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]',\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label ref={ref} className={cn('px-2 py-1.5 text-sm font-semibold', className)} {...props} />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator ref={ref} className={cn('-mx-1 my-1 h-px bg-muted', className)} {...props} />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n"],"names":["Select","SelectPrimitive.Root","SelectGroup","SelectPrimitive.Group","SelectValue","SelectPrimitive.Value","SelectTrigger","React","className","children","props","ref","jsxs","SelectPrimitive.Trigger","cn","jsx","SelectPrimitive.Icon","ChevronDown","SelectScrollUpButton","SelectPrimitive.ScrollUpButton","ChevronUp","SelectScrollDownButton","SelectPrimitive.ScrollDownButton","SelectContent","position","SelectPrimitive.Portal","SelectPrimitive.Content","SelectPrimitive.Viewport","SelectLabel","SelectPrimitive.Label","SelectItem","SelectPrimitive.Item","SelectPrimitive.ItemIndicator","Check","SelectPrimitive.ItemText","SelectSeparator","SelectPrimitive.Separator"],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ import { j as e, bj as d, bk as w, C as n, bl as i, bm as y, bn as c, bo as g, bp as m, bq as N, br as p, bs as f, bt as j, w as S, bu as v, bv as u, bw as R, bx as C, by as I } from "./vendor-CCQzmGyD.mjs";
2
+ import * as r from "react";
3
+ import { c as o } from "./utils-C9QGdMaH.mjs";
4
+ const G = R, L = C, q = I, B = r.forwardRef(({ className: t, children: s, ...a }, l) => /* @__PURE__ */ e.jsxs(
5
+ d,
6
+ {
7
+ ref: l,
8
+ className: o(
9
+ "flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
10
+ t
11
+ ),
12
+ ...a,
13
+ children: [
14
+ s,
15
+ /* @__PURE__ */ e.jsx(w, { asChild: !0, children: /* @__PURE__ */ e.jsx(n, { className: "h-4 w-4 opacity-50" }) })
16
+ ]
17
+ }
18
+ ));
19
+ B.displayName = d.displayName;
20
+ const x = r.forwardRef(({ className: t, ...s }, a) => /* @__PURE__ */ e.jsx(
21
+ i,
22
+ {
23
+ ref: a,
24
+ className: o("flex cursor-default items-center justify-center py-1", t),
25
+ ...s,
26
+ children: /* @__PURE__ */ e.jsx(y, { className: "h-4 w-4" })
27
+ }
28
+ ));
29
+ x.displayName = i.displayName;
30
+ const b = r.forwardRef(({ className: t, ...s }, a) => /* @__PURE__ */ e.jsx(
31
+ c,
32
+ {
33
+ ref: a,
34
+ className: o("flex cursor-default items-center justify-center py-1", t),
35
+ ...s,
36
+ children: /* @__PURE__ */ e.jsx(n, { className: "h-4 w-4" })
37
+ }
38
+ ));
39
+ b.displayName = c.displayName;
40
+ const k = r.forwardRef(({ className: t, children: s, position: a = "popper", ...l }, h) => /* @__PURE__ */ e.jsx(g, { children: /* @__PURE__ */ e.jsxs(
41
+ m,
42
+ {
43
+ ref: h,
44
+ className: o(
45
+ "relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md 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 origin-[--radix-select-content-transform-origin]",
46
+ a === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
47
+ t
48
+ ),
49
+ position: a,
50
+ ...l,
51
+ children: [
52
+ /* @__PURE__ */ e.jsx(x, {}),
53
+ /* @__PURE__ */ e.jsx(
54
+ N,
55
+ {
56
+ className: o(
57
+ "p-1",
58
+ a === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
59
+ ),
60
+ children: s
61
+ }
62
+ ),
63
+ /* @__PURE__ */ e.jsx(b, {})
64
+ ]
65
+ }
66
+ ) }));
67
+ k.displayName = m.displayName;
68
+ const z = r.forwardRef(({ className: t, ...s }, a) => /* @__PURE__ */ e.jsx(p, { ref: a, className: o("px-2 py-1.5 text-sm font-semibold", t), ...s }));
69
+ z.displayName = p.displayName;
70
+ const D = r.forwardRef(({ className: t, children: s, ...a }, l) => /* @__PURE__ */ e.jsxs(
71
+ f,
72
+ {
73
+ ref: l,
74
+ className: o(
75
+ "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
76
+ t
77
+ ),
78
+ ...a,
79
+ children: [
80
+ /* @__PURE__ */ e.jsx("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ e.jsx(j, { children: /* @__PURE__ */ e.jsx(S, { className: "h-4 w-4" }) }) }),
81
+ /* @__PURE__ */ e.jsx(v, { children: s })
82
+ ]
83
+ }
84
+ ));
85
+ D.displayName = f.displayName;
86
+ const T = r.forwardRef(({ className: t, ...s }, a) => /* @__PURE__ */ e.jsx(u, { ref: a, className: o("-mx-1 my-1 h-px bg-muted", t), ...s }));
87
+ T.displayName = u.displayName;
88
+ export {
89
+ G as Select,
90
+ k as SelectContent,
91
+ L as SelectGroup,
92
+ D as SelectItem,
93
+ z as SelectLabel,
94
+ b as SelectScrollDownButton,
95
+ x as SelectScrollUpButton,
96
+ T as SelectSeparator,
97
+ B as SelectTrigger,
98
+ q as SelectValue
99
+ };
100
+ //# sourceMappingURL=select.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.es.js","sources":["../src/components/ui/select.tsx"],"sourcesContent":["import * as SelectPrimitive from '@radix-ui/react-select';\nimport { Check, ChevronDown, ChevronUp } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n 'flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1',\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn('flex cursor-default items-center justify-center py-1', className)}\n {...props}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n));\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn('flex cursor-default items-center justify-center py-1', className)}\n {...props}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n));\nSelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = 'popper', ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n 'relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md 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 origin-[--radix-select-content-transform-origin]',\n position === 'popper' &&\n 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',\n className,\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n 'p-1',\n position === 'popper' &&\n 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]',\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label ref={ref} className={cn('px-2 py-1.5 text-sm font-semibold', className)} {...props} />\n));\nSelectLabel.displayName = SelectPrimitive.Label.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator ref={ref} className={cn('-mx-1 my-1 h-px bg-muted', className)} {...props} />\n));\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName;\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n"],"names":["Select","SelectPrimitive.Root","SelectGroup","SelectPrimitive.Group","SelectValue","SelectPrimitive.Value","SelectTrigger","React","className","children","props","ref","jsxs","SelectPrimitive.Trigger","cn","jsx","SelectPrimitive.Icon","ChevronDown","SelectScrollUpButton","SelectPrimitive.ScrollUpButton","ChevronUp","SelectScrollDownButton","SelectPrimitive.ScrollDownButton","SelectContent","position","SelectPrimitive.Portal","SelectPrimitive.Content","SelectPrimitive.Viewport","SelectLabel","SelectPrimitive.Label","SelectItem","SelectPrimitive.Item","SelectPrimitive.ItemIndicator","Check","SelectPrimitive.ItemText","SelectSeparator","SelectPrimitive.Separator"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./vendor-CIyDEr7H.js"),l=require("react"),s=require("./utils-CUFNKXRW.js");function u(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const i=u(l),n=i.forwardRef(({className:e,orientation:t="horizontal",decorative:r=!0,...o},c)=>a.jsxRuntimeExports.jsx(a.Root$7,{ref:c,decorative:r,orientation:t,className:s.cn("shrink-0 bg-border",t==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",e),...o}));n.displayName=a.Root$7.displayName;exports.Separator=n;
2
+ //# sourceMappingURL=separator.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"separator.cjs.js","sources":["../src/components/ui/separator.tsx"],"sourcesContent":["import * as SeparatorPrimitive from '@radix-ui/react-separator';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn('shrink-0 bg-border', orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]', className)}\n {...props}\n />\n));\nSeparator.displayName = SeparatorPrimitive.Root.displayName;\n\nexport { Separator };\n"],"names":["Separator","React","className","orientation","decorative","props","ref","jsx","SeparatorPrimitive.Root","cn"],"mappings":"scAKMA,EAAYC,EAAM,WAGtB,CAAC,CAAE,UAAAC,EAAW,YAAAC,EAAc,aAAc,WAAAC,EAAa,GAAM,GAAGC,CAAA,EAASC,IACzEC,EAAAA,kBAAAA,IAACC,EAAAA,OAAA,CACC,IAAAF,EACA,WAAAF,EACA,YAAAD,EACA,UAAWM,EAAAA,GAAG,qBAAsBN,IAAgB,aAAe,iBAAmB,iBAAkBD,CAAS,EAChH,GAAGG,CAAA,CACN,CACD,EACDL,EAAU,YAAcQ,EAAAA,OAAwB"}