@definable/ui 0.1.13 → 0.1.15

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 (300) hide show
  1. package/README.md +0 -7
  2. package/dist/components/alert-dialog.js +55 -2
  3. package/dist/components/alert.js +63 -2
  4. package/dist/components/avatar.js +41 -2
  5. package/dist/components/badge.js +26 -2
  6. package/dist/components/button.d.ts +2 -2
  7. package/dist/components/button.js +49 -2
  8. package/dist/components/calendar.js +86 -2
  9. package/dist/components/card.js +61 -2
  10. package/dist/components/carousel.js +100 -2
  11. package/dist/components/checkbox.js +31 -2
  12. package/dist/components/collapse.js +49 -2
  13. package/dist/components/command-menu.js +89 -2
  14. package/dist/components/command.js +115 -2
  15. package/dist/components/confirmation-modal.js +44 -2
  16. package/dist/components/context-menu.js +185 -2
  17. package/dist/components/dialog.js +121 -2
  18. package/dist/components/dropdown-menu.js +48 -2
  19. package/dist/components/dropzone.js +44 -2
  20. package/dist/components/image-cropper-modal.js +250 -2
  21. package/dist/components/image-cropper.js +130 -2
  22. package/dist/components/input.js +21 -2
  23. package/dist/components/label.js +19 -2
  24. package/dist/components/loader.js +69 -2
  25. package/dist/components/loading-placeholder.js +24 -2
  26. package/dist/components/mention.js +153 -2
  27. package/dist/components/modal.js +135 -2
  28. package/dist/components/notification.js +25 -2
  29. package/dist/components/popover.js +23 -2
  30. package/dist/components/progress.js +34 -2
  31. package/dist/components/radio-group.js +47 -2
  32. package/dist/components/scroll-area.js +46 -2
  33. package/dist/components/select.js +130 -2
  34. package/dist/components/selection-bar.js +53 -2
  35. package/dist/components/separator.js +24 -2
  36. package/dist/components/sheet.js +128 -2
  37. package/dist/components/skeleton.js +17 -2
  38. package/dist/components/slider.js +32 -2
  39. package/dist/components/stepper/index.d.ts +4 -0
  40. package/dist/components/stepper/step-layout.d.ts +8 -0
  41. package/dist/components/stepper/stepper-modal.d.ts +26 -0
  42. package/dist/components/stepper/stepper.d.ts +7 -0
  43. package/dist/components/stepper/types.d.ts +6 -0
  44. package/dist/components/stepper.js +6 -2
  45. package/dist/components/switch.js +35 -2
  46. package/dist/components/table-empty.js +22 -2
  47. package/dist/components/table-mobile.js +91 -2
  48. package/dist/components/table.js +156 -2
  49. package/dist/components/tabs.js +46 -2
  50. package/dist/components/terminal.js +49 -2
  51. package/dist/components/textarea.js +20 -2
  52. package/dist/components/tooltip.js +75 -2
  53. package/dist/components/use-toast.js +64 -2
  54. package/dist/icons/icons.d.ts +8 -0
  55. package/dist/icons/index.d.ts +1 -0
  56. package/dist/icons/providers/anthropic.d.ts +2 -0
  57. package/dist/icons/providers/claude.d.ts +2 -0
  58. package/dist/icons/providers/deepseek.d.ts +2 -0
  59. package/dist/icons/providers/gemini.d.ts +2 -0
  60. package/dist/icons/providers/grok.d.ts +2 -0
  61. package/dist/icons/providers/index.d.ts +6 -0
  62. package/dist/icons/providers/openai.d.ts +2 -0
  63. package/dist/icons/providers/types.d.ts +4 -0
  64. package/dist/index.d.ts +48 -962
  65. package/dist/index.js +444 -2
  66. package/dist/lib/icons.d.ts +14 -0
  67. package/dist/lib/index.d.ts +2 -0
  68. package/dist/lib/utils.js +8 -2
  69. package/dist/{stepper-modal-SYU9mbXs.js → stepper-modal-JXpOXOV2.js} +90 -91
  70. package/dist/styles.css +1 -1
  71. package/package.json +180 -134
  72. package/dist/MonacoEditor-COZcVMEj.cjs +0 -8
  73. package/dist/MonacoEditor-COZcVMEj.cjs.map +0 -1
  74. package/dist/MonacoEditor-D3QSSKa4.js +0 -295
  75. package/dist/MonacoEditor-D3QSSKa4.js.map +0 -1
  76. package/dist/alert-dialog.d.ts +0 -18
  77. package/dist/alert.d.ts +0 -25
  78. package/dist/avatar.d.ts +0 -9
  79. package/dist/badge.d.ts +0 -15
  80. package/dist/button.d.ts +0 -16
  81. package/dist/calendar.d.ts +0 -21
  82. package/dist/card.d.ts +0 -15
  83. package/dist/carousel.d.ts +0 -18
  84. package/dist/charts.d.ts +0 -26
  85. package/dist/checkbox.d.ts +0 -6
  86. package/dist/collapse.d.ts +0 -15
  87. package/dist/command-menu.d.ts +0 -12
  88. package/dist/command.d.ts +0 -89
  89. package/dist/components/alert-dialog.esm.js +0 -59
  90. package/dist/components/alert-dialog.esm.js.map +0 -1
  91. package/dist/components/alert-dialog.js.map +0 -1
  92. package/dist/components/alert.esm.js +0 -64
  93. package/dist/components/alert.esm.js.map +0 -1
  94. package/dist/components/alert.js.map +0 -1
  95. package/dist/components/avatar.esm.js +0 -42
  96. package/dist/components/avatar.esm.js.map +0 -1
  97. package/dist/components/avatar.js.map +0 -1
  98. package/dist/components/badge.esm.js +0 -27
  99. package/dist/components/badge.esm.js.map +0 -1
  100. package/dist/components/badge.js.map +0 -1
  101. package/dist/components/button.esm.js +0 -48
  102. package/dist/components/button.esm.js.map +0 -1
  103. package/dist/components/button.js.map +0 -1
  104. package/dist/components/calendar.esm.js +0 -5562
  105. package/dist/components/calendar.esm.js.map +0 -1
  106. package/dist/components/calendar.js.map +0 -1
  107. package/dist/components/card.esm.js +0 -62
  108. package/dist/components/card.esm.js.map +0 -1
  109. package/dist/components/card.js.map +0 -1
  110. package/dist/components/carousel.esm.js +0 -101
  111. package/dist/components/carousel.esm.js.map +0 -1
  112. package/dist/components/carousel.js.map +0 -1
  113. package/dist/components/charts.d.ts +0 -17
  114. package/dist/components/charts.esm.js +0 -48
  115. package/dist/components/charts.esm.js.map +0 -1
  116. package/dist/components/charts.js +0 -2
  117. package/dist/components/charts.js.map +0 -1
  118. package/dist/components/checkbox.esm.js +0 -32
  119. package/dist/components/checkbox.esm.js.map +0 -1
  120. package/dist/components/checkbox.js.map +0 -1
  121. package/dist/components/collapse.esm.js +0 -50
  122. package/dist/components/collapse.esm.js.map +0 -1
  123. package/dist/components/collapse.js.map +0 -1
  124. package/dist/components/command-menu.esm.js +0 -90
  125. package/dist/components/command-menu.esm.js.map +0 -1
  126. package/dist/components/command-menu.js.map +0 -1
  127. package/dist/components/command.esm.js +0 -425
  128. package/dist/components/command.esm.js.map +0 -1
  129. package/dist/components/command.js.map +0 -1
  130. package/dist/components/confirmation-modal.esm.js +0 -46
  131. package/dist/components/confirmation-modal.esm.js.map +0 -1
  132. package/dist/components/confirmation-modal.js.map +0 -1
  133. package/dist/components/context-menu.esm.js +0 -186
  134. package/dist/components/context-menu.esm.js.map +0 -1
  135. package/dist/components/context-menu.js.map +0 -1
  136. package/dist/components/dialog.esm.js +0 -122
  137. package/dist/components/dialog.esm.js.map +0 -1
  138. package/dist/components/dialog.js.map +0 -1
  139. package/dist/components/dropdown-menu.esm.js +0 -49
  140. package/dist/components/dropdown-menu.esm.js.map +0 -1
  141. package/dist/components/dropdown-menu.js.map +0 -1
  142. package/dist/components/dropzone.esm.js +0 -45
  143. package/dist/components/dropzone.esm.js.map +0 -1
  144. package/dist/components/dropzone.js.map +0 -1
  145. package/dist/components/image-cropper-modal.esm.js +0 -251
  146. package/dist/components/image-cropper-modal.esm.js.map +0 -1
  147. package/dist/components/image-cropper-modal.js.map +0 -1
  148. package/dist/components/image-cropper.esm.js +0 -131
  149. package/dist/components/image-cropper.esm.js.map +0 -1
  150. package/dist/components/image-cropper.js.map +0 -1
  151. package/dist/components/input.esm.js +0 -22
  152. package/dist/components/input.esm.js.map +0 -1
  153. package/dist/components/input.js.map +0 -1
  154. package/dist/components/label.esm.js +0 -20
  155. package/dist/components/label.esm.js.map +0 -1
  156. package/dist/components/label.js.map +0 -1
  157. package/dist/components/loader.esm.js +0 -70
  158. package/dist/components/loader.esm.js.map +0 -1
  159. package/dist/components/loader.js.map +0 -1
  160. package/dist/components/loading-placeholder.esm.js +0 -25
  161. package/dist/components/loading-placeholder.esm.js.map +0 -1
  162. package/dist/components/loading-placeholder.js.map +0 -1
  163. package/dist/components/markdown.d.ts +0 -2
  164. package/dist/components/markdown.esm.js +0 -12066
  165. package/dist/components/markdown.esm.js.map +0 -1
  166. package/dist/components/markdown.js +0 -18
  167. package/dist/components/markdown.js.map +0 -1
  168. package/dist/components/mention.esm.js +0 -154
  169. package/dist/components/mention.esm.js.map +0 -1
  170. package/dist/components/mention.js.map +0 -1
  171. package/dist/components/modal.esm.js +0 -136
  172. package/dist/components/modal.esm.js.map +0 -1
  173. package/dist/components/modal.js.map +0 -1
  174. package/dist/components/monaco-editor.d.ts +0 -2
  175. package/dist/components/monaco-editor.esm.js +0 -9
  176. package/dist/components/monaco-editor.esm.js.map +0 -1
  177. package/dist/components/monaco-editor.js +0 -2
  178. package/dist/components/monaco-editor.js.map +0 -1
  179. package/dist/components/notification.esm.js +0 -26
  180. package/dist/components/notification.esm.js.map +0 -1
  181. package/dist/components/notification.js.map +0 -1
  182. package/dist/components/popover.esm.js +0 -24
  183. package/dist/components/popover.esm.js.map +0 -1
  184. package/dist/components/popover.js.map +0 -1
  185. package/dist/components/progress.esm.js +0 -35
  186. package/dist/components/progress.esm.js.map +0 -1
  187. package/dist/components/progress.js.map +0 -1
  188. package/dist/components/radio-group.esm.js +0 -48
  189. package/dist/components/radio-group.esm.js.map +0 -1
  190. package/dist/components/radio-group.js.map +0 -1
  191. package/dist/components/scroll-area.esm.js +0 -47
  192. package/dist/components/scroll-area.esm.js.map +0 -1
  193. package/dist/components/scroll-area.js.map +0 -1
  194. package/dist/components/select.esm.js +0 -131
  195. package/dist/components/select.esm.js.map +0 -1
  196. package/dist/components/select.js.map +0 -1
  197. package/dist/components/selection-bar.esm.js +0 -54
  198. package/dist/components/selection-bar.esm.js.map +0 -1
  199. package/dist/components/selection-bar.js.map +0 -1
  200. package/dist/components/separator.esm.js +0 -25
  201. package/dist/components/separator.esm.js.map +0 -1
  202. package/dist/components/separator.js.map +0 -1
  203. package/dist/components/sheet.esm.js +0 -129
  204. package/dist/components/sheet.esm.js.map +0 -1
  205. package/dist/components/sheet.js.map +0 -1
  206. package/dist/components/skeleton.esm.js +0 -18
  207. package/dist/components/skeleton.esm.js.map +0 -1
  208. package/dist/components/skeleton.js.map +0 -1
  209. package/dist/components/slider.esm.js +0 -33
  210. package/dist/components/slider.esm.js.map +0 -1
  211. package/dist/components/slider.js.map +0 -1
  212. package/dist/components/stepper.d.ts +0 -2
  213. package/dist/components/stepper.esm.js +0 -7
  214. package/dist/components/stepper.esm.js.map +0 -1
  215. package/dist/components/stepper.js.map +0 -1
  216. package/dist/components/switch.esm.js +0 -36
  217. package/dist/components/switch.esm.js.map +0 -1
  218. package/dist/components/switch.js.map +0 -1
  219. package/dist/components/table-empty.esm.js +0 -23
  220. package/dist/components/table-empty.esm.js.map +0 -1
  221. package/dist/components/table-empty.js.map +0 -1
  222. package/dist/components/table-mobile.esm.js +0 -92
  223. package/dist/components/table-mobile.esm.js.map +0 -1
  224. package/dist/components/table-mobile.js.map +0 -1
  225. package/dist/components/table.esm.js +0 -157
  226. package/dist/components/table.esm.js.map +0 -1
  227. package/dist/components/table.js.map +0 -1
  228. package/dist/components/tabs.esm.js +0 -47
  229. package/dist/components/tabs.esm.js.map +0 -1
  230. package/dist/components/tabs.js.map +0 -1
  231. package/dist/components/terminal.esm.js +0 -50
  232. package/dist/components/terminal.esm.js.map +0 -1
  233. package/dist/components/terminal.js.map +0 -1
  234. package/dist/components/textarea.esm.js +0 -21
  235. package/dist/components/textarea.esm.js.map +0 -1
  236. package/dist/components/textarea.js.map +0 -1
  237. package/dist/components/tooltip.esm.js +0 -76
  238. package/dist/components/tooltip.esm.js.map +0 -1
  239. package/dist/components/tooltip.js.map +0 -1
  240. package/dist/components/use-toast.esm.js +0 -65
  241. package/dist/components/use-toast.esm.js.map +0 -1
  242. package/dist/components/use-toast.js.map +0 -1
  243. package/dist/confirmation-modal.d.ts +0 -16
  244. package/dist/context-menu.d.ts +0 -41
  245. package/dist/dialog.d.ts +0 -33
  246. package/dist/dropdown-menu.d.ts +0 -16
  247. package/dist/dropzone.d.ts +0 -16
  248. package/dist/image-cropper-modal.d.ts +0 -14
  249. package/dist/image-cropper.d.ts +0 -15
  250. package/dist/index-DACAHwoB.js +0 -35
  251. package/dist/index-DACAHwoB.js.map +0 -1
  252. package/dist/index-Deooizx8.cjs +0 -2
  253. package/dist/index-Deooizx8.cjs.map +0 -1
  254. package/dist/index.esm.js +0 -458
  255. package/dist/index.esm.js.map +0 -1
  256. package/dist/index.js.map +0 -1
  257. package/dist/input.d.ts +0 -8
  258. package/dist/jsx-runtime-BYECrxsp.cjs +0 -31
  259. package/dist/jsx-runtime-BYECrxsp.cjs.map +0 -1
  260. package/dist/jsx-runtime-DGlMoOmv.js +0 -631
  261. package/dist/jsx-runtime-DGlMoOmv.js.map +0 -1
  262. package/dist/label.d.ts +0 -6
  263. package/dist/lib/utils.esm.js +0 -5
  264. package/dist/lib/utils.esm.js.map +0 -1
  265. package/dist/lib/utils.js.map +0 -1
  266. package/dist/loader.d.ts +0 -14
  267. package/dist/loading-placeholder.d.ts +0 -12
  268. package/dist/markdown.d.ts +0 -122
  269. package/dist/mention.d.ts +0 -29
  270. package/dist/modal.d.ts +0 -28
  271. package/dist/monaco-editor.d.ts +0 -76
  272. package/dist/notification.d.ts +0 -9
  273. package/dist/popover.d.ts +0 -10
  274. package/dist/progress.d.ts +0 -6
  275. package/dist/radio-group.d.ts +0 -8
  276. package/dist/scroll-area.d.ts +0 -8
  277. package/dist/select.d.ts +0 -31
  278. package/dist/selection-bar.d.ts +0 -15
  279. package/dist/separator.d.ts +0 -6
  280. package/dist/sheet.d.ts +0 -17
  281. package/dist/skeleton.d.ts +0 -5
  282. package/dist/slider.d.ts +0 -6
  283. package/dist/stepper-modal-CPlBpxWy.cjs +0 -2
  284. package/dist/stepper-modal-CPlBpxWy.cjs.map +0 -1
  285. package/dist/stepper-modal-SYU9mbXs.js.map +0 -1
  286. package/dist/stepper.d.ts +0 -75
  287. package/dist/switch.d.ts +0 -6
  288. package/dist/table-empty.d.ts +0 -13
  289. package/dist/table-mobile.d.ts +0 -37
  290. package/dist/table.d.ts +0 -37
  291. package/dist/tabs.d.ts +0 -12
  292. package/dist/terminal.d.ts +0 -47
  293. package/dist/textarea.d.ts +0 -8
  294. package/dist/tooltip.d.ts +0 -12
  295. package/dist/use-toast.d.ts +0 -28
  296. package/dist/utils-DSKoFOjv.cjs +0 -2
  297. package/dist/utils-DSKoFOjv.cjs.map +0 -1
  298. package/dist/utils-qaFjX9_3.js +0 -2279
  299. package/dist/utils-qaFjX9_3.js.map +0 -1
  300. package/dist/utils.d.ts +0 -5
@@ -1,47 +0,0 @@
1
- import { j as e } from "../jsx-runtime-DGlMoOmv.js";
2
- import * as c from "react";
3
- import * as r from "@radix-ui/react-scroll-area";
4
- import { c as t } from "../utils-qaFjX9_3.js";
5
- const d = c.forwardRef(({ className: o, children: l, ...a }, s) => /* @__PURE__ */ e.jsxs(
6
- r.Root,
7
- {
8
- ref: s,
9
- className: t("relative overflow-hidden", o),
10
- ...a,
11
- children: [
12
- /* @__PURE__ */ e.jsx(r.Viewport, { className: "h-full w-full rounded-[inherit]", children: l }),
13
- /* @__PURE__ */ e.jsx(i, {}),
14
- /* @__PURE__ */ e.jsx(r.Corner, {})
15
- ]
16
- }
17
- ));
18
- d.displayName = r.Root.displayName;
19
- const i = c.forwardRef(({ className: o, orientation: l = "vertical", ...a }, s) => /* @__PURE__ */ e.jsx(
20
- r.ScrollAreaScrollbar,
21
- {
22
- ref: s,
23
- orientation: l,
24
- className: t(
25
- "flex touch-none select-none transition-colors",
26
- l === "vertical" && "h-full w-1.5 border-l border-l-transparent p-[1px] hover:w-2",
27
- l === "horizontal" && "h-1.5 flex-col border-t border-t-transparent p-[1px] hover:h-2",
28
- o
29
- ),
30
- ...a,
31
- children: /* @__PURE__ */ e.jsx(
32
- r.ScrollAreaThumb,
33
- {
34
- className: t(
35
- "relative flex-1 rounded-full bg-border/40 hover:bg-border/70 transition-all duration-150",
36
- "data-[state=dragging]:bg-border/70"
37
- )
38
- }
39
- )
40
- }
41
- ));
42
- i.displayName = r.ScrollAreaScrollbar.displayName;
43
- export {
44
- d as ScrollArea,
45
- i as ScrollBar
46
- };
47
- //# sourceMappingURL=scroll-area.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scroll-area.esm.js","sources":["../../src/components/scroll-area.tsx"],"sourcesContent":["import * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\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\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </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\" &&\n \"h-full w-1.5 border-l border-l-transparent p-[1px] hover:w-2\",\n orientation === \"horizontal\" &&\n \"h-1.5 flex-col border-t border-t-transparent p-[1px] hover:h-2\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb \n className={cn(\n \"relative flex-1 rounded-full bg-border/40 hover:bg-border/70 transition-all duration-150\",\n \"data-[state=dragging]:bg-border/70\"\n )} \n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n))\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName\n\nexport { ScrollArea, ScrollBar } "],"names":["ScrollArea","React","className","children","props","ref","jsxs","ScrollAreaPrimitive","cn","jsx","ScrollBar","orientation"],"mappings":";;;;AAIA,MAAMA,IAAaC,EAAM,WAGvB,CAAC,EAAE,WAAAC,GAAW,UAAAC,GAAU,GAAGC,KAASC,MACpCC,gBAAAA,EAAAA;AAAAA,EAACC,EAAoB;AAAA,EAApB;AAAA,IACC,KAAAF;AAAA,IACA,WAAWG,EAAG,4BAA4BN,CAAS;AAAA,IAClD,GAAGE;AAAA,IAEJ,UAAA;AAAA,MAAAK,gBAAAA,EAAAA,IAACF,EAAoB,UAApB,EAA6B,WAAU,mCACrC,UAAAJ,GACH;AAAA,4BACCO,GAAA,EAAU;AAAA,MACXD,gBAAAA,MAACF,EAAoB,QAApB,CAAA,CAA2B;AAAA,IAAA;AAAA,EAAA;AAC9B,CACD;AACDP,EAAW,cAAcO,EAAoB,KAAK;AAElD,MAAMG,IAAYT,EAAM,WAGtB,CAAC,EAAE,WAAAC,GAAW,aAAAS,IAAc,YAAY,GAAGP,KAASC,MACpDI,gBAAAA,EAAAA;AAAAA,EAACF,EAAoB;AAAA,EAApB;AAAA,IACC,KAAAF;AAAA,IACA,aAAAM;AAAA,IACA,WAAWH;AAAA,MACT;AAAA,MACAG,MAAgB,cACd;AAAA,MACFA,MAAgB,gBACd;AAAA,MACFT;AAAA,IAAA;AAAA,IAED,GAAGE;AAAA,IAEJ,UAAAK,gBAAAA,EAAAA;AAAAA,MAACF,EAAoB;AAAA,MAApB;AAAA,QACC,WAAWC;AAAA,UACT;AAAA,UACA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EACF;AACF,CACD;AACDE,EAAU,cAAcH,EAAoB,oBAAoB;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"scroll-area.js","sources":["../../src/components/scroll-area.tsx"],"sourcesContent":["import * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\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\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </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\" &&\n \"h-full w-1.5 border-l border-l-transparent p-[1px] hover:w-2\",\n orientation === \"horizontal\" &&\n \"h-1.5 flex-col border-t border-t-transparent p-[1px] hover:h-2\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb \n className={cn(\n \"relative flex-1 rounded-full bg-border/40 hover:bg-border/70 transition-all duration-150\",\n \"data-[state=dragging]:bg-border/70\"\n )} \n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n))\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName\n\nexport { ScrollArea, ScrollBar } "],"names":["ScrollArea","React","className","children","props","ref","jsxs","ScrollAreaPrimitive","cn","jsx","ScrollBar","orientation"],"mappings":"+fAIMA,EAAaC,EAAM,WAGvB,CAAC,CAAE,UAAAC,EAAW,SAAAC,EAAU,GAAGC,GAASC,IACpCC,EAAAA,kBAAAA,KAACC,EAAoB,KAApB,CACC,IAAAF,EACA,UAAWG,EAAAA,GAAG,2BAA4BN,CAAS,EAClD,GAAGE,EAEJ,SAAA,CAAAK,EAAAA,kBAAAA,IAACF,EAAoB,SAApB,CAA6B,UAAU,kCACrC,SAAAJ,EACH,0BACCO,EAAA,EAAU,EACXD,wBAACF,EAAoB,OAApB,CAAA,CAA2B,CAAA,CAAA,CAC9B,CACD,EACDP,EAAW,YAAcO,EAAoB,KAAK,YAElD,MAAMG,EAAYT,EAAM,WAGtB,CAAC,CAAE,UAAAC,EAAW,YAAAS,EAAc,WAAY,GAAGP,GAASC,IACpDI,EAAAA,kBAAAA,IAACF,EAAoB,oBAApB,CACC,IAAAF,EACA,YAAAM,EACA,UAAWH,EAAAA,GACT,gDACAG,IAAgB,YACd,+DACFA,IAAgB,cACd,iEACFT,CAAA,EAED,GAAGE,EAEJ,SAAAK,EAAAA,kBAAAA,IAACF,EAAoB,gBAApB,CACC,UAAWC,EAAAA,GACT,2FACA,oCAAA,CACF,CAAA,CACF,CACF,CACD,EACDE,EAAU,YAAcH,EAAoB,oBAAoB"}
@@ -1,131 +0,0 @@
1
- import { j as e } from "../jsx-runtime-DGlMoOmv.js";
2
- import * as a from "react";
3
- import * as t from "@radix-ui/react-select";
4
- import { ChevronDown as w, Search as j, Check as N } from "lucide-react";
5
- import { c as i } from "../utils-qaFjX9_3.js";
6
- import { Input as S } from "./input.esm.js";
7
- const v = t.Root, P = t.Group, D = t.Value, C = a.forwardRef(({ className: s, children: o, ...r }, n) => /* @__PURE__ */ e.jsxs(
8
- t.Trigger,
9
- {
10
- ref: n,
11
- className: i(
12
- "flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
13
- s
14
- ),
15
- ...r,
16
- children: [
17
- o,
18
- /* @__PURE__ */ e.jsx(t.Icon, { asChild: !0, children: /* @__PURE__ */ e.jsx(w, { className: "h-4 w-4 opacity-50" }) })
19
- ]
20
- }
21
- ));
22
- C.displayName = t.Trigger.displayName;
23
- const h = a.forwardRef(({ className: s, children: o, position: r = "popper", searchable: n, onSearch: c, searchPlaceholder: m = "Search...", ...p }, d) => {
24
- const [x, g] = a.useState(""), f = a.useRef(null);
25
- a.useEffect(() => {
26
- n && f.current && setTimeout(() => {
27
- var l;
28
- (l = f.current) == null || l.focus();
29
- }, 50);
30
- }, [n]);
31
- const b = (l) => {
32
- g(l.target.value), c && c(l.target.value);
33
- }, u = (l) => {
34
- l.stopPropagation();
35
- }, y = (l) => {
36
- l.stopPropagation();
37
- };
38
- return /* @__PURE__ */ e.jsx(t.Portal, { children: /* @__PURE__ */ e.jsxs(
39
- t.Content,
40
- {
41
- ref: d,
42
- className: i(
43
- "relative z-50 min-w-[8rem] overflow-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",
44
- r === "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",
45
- s
46
- ),
47
- position: r,
48
- ...p,
49
- children: [
50
- n && /* @__PURE__ */ e.jsx(
51
- "div",
52
- {
53
- className: "px-2 py-1.5 sticky top-0 bg-popover z-10 border-b",
54
- onClick: u,
55
- children: /* @__PURE__ */ e.jsxs("div", { className: "relative", children: [
56
- /* @__PURE__ */ e.jsx(j, { className: "absolute left-2 top-1/2 transform -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground" }),
57
- /* @__PURE__ */ e.jsx(
58
- S,
59
- {
60
- ref: f,
61
- value: x,
62
- onChange: b,
63
- onClick: u,
64
- onKeyDown: y,
65
- placeholder: m,
66
- className: "h-7 text-xs pl-7"
67
- }
68
- )
69
- ] })
70
- }
71
- ),
72
- /* @__PURE__ */ e.jsx(
73
- t.Viewport,
74
- {
75
- className: i(
76
- "p-1",
77
- r === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"
78
- ),
79
- children: o
80
- }
81
- )
82
- ]
83
- }
84
- ) });
85
- });
86
- h.displayName = t.Content.displayName;
87
- const R = a.forwardRef(({ className: s, ...o }, r) => /* @__PURE__ */ e.jsx(
88
- t.Label,
89
- {
90
- ref: r,
91
- className: i("py-1.5 pl-8 pr-2 text-sm font-semibold", s),
92
- ...o
93
- }
94
- ));
95
- R.displayName = t.Label.displayName;
96
- const I = a.forwardRef(({ className: s, children: o, ...r }, n) => /* @__PURE__ */ e.jsxs(
97
- t.Item,
98
- {
99
- ref: n,
100
- className: i(
101
- "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
102
- s
103
- ),
104
- ...r,
105
- children: [
106
- /* @__PURE__ */ e.jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ e.jsx(t.ItemIndicator, { children: /* @__PURE__ */ e.jsx(N, { className: "h-4 w-4" }) }) }),
107
- /* @__PURE__ */ e.jsx(t.ItemText, { children: o })
108
- ]
109
- }
110
- ));
111
- I.displayName = t.Item.displayName;
112
- const V = a.forwardRef(({ children: s, searchPlaceholder: o, ...r }, n) => {
113
- const [c, m] = a.useState(""), p = a.Children.map(s, (d) => a.isValidElement(d) && d.type === h ? a.cloneElement(d, {
114
- searchable: !0,
115
- onSearch: m,
116
- searchPlaceholder: o
117
- }) : d);
118
- return /* @__PURE__ */ e.jsx(v, { ...r, children: p });
119
- });
120
- V.displayName = "SearchableSelect";
121
- export {
122
- V as SearchableSelect,
123
- v as Select,
124
- h as SelectContent,
125
- P as SelectGroup,
126
- I as SelectItem,
127
- R as SelectLabel,
128
- C as SelectTrigger,
129
- D as SelectValue
130
- };
131
- //# sourceMappingURL=select.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"select.esm.js","sources":["../../src/components/select.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown, Search } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport { Input } from \"./input\"\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-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\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\ninterface SelectContentProps extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content> {\n searchable?: boolean;\n onSearch?: (value: string) => void;\n searchPlaceholder?: string;\n}\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n SelectContentProps\n>(({ className, children, position = \"popper\", searchable, onSearch, searchPlaceholder = \"Search...\", ...props }, ref) => {\n const [searchValue, setSearchValue] = React.useState(\"\")\n const searchInputRef = React.useRef<HTMLInputElement>(null)\n \n // Focus search input when content opens\n React.useEffect(() => {\n if (searchable && searchInputRef.current) {\n setTimeout(() => {\n searchInputRef.current?.focus()\n }, 50)\n }\n }, [searchable])\n \n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setSearchValue(e.target.value)\n if (onSearch) {\n onSearch(e.target.value)\n }\n }\n \n const handleSearchClick = (e: React.MouseEvent) => {\n e.stopPropagation()\n }\n \n const handleSearchKeyDown = (e: React.KeyboardEvent) => {\n // Prevent select keyboard navigation from interfering with search input\n e.stopPropagation()\n }\n \n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 min-w-[8rem] overflow-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\",\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 {searchable && (\n <div \n className=\"px-2 py-1.5 sticky top-0 bg-popover z-10 border-b\"\n onClick={handleSearchClick}\n >\n <div className=\"relative\">\n <Search className=\"absolute left-2 top-1/2 transform -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground\" />\n <Input\n ref={searchInputRef}\n value={searchValue}\n onChange={handleSearchChange}\n onClick={handleSearchClick}\n onKeyDown={handleSearchKeyDown}\n placeholder={searchPlaceholder}\n className=\"h-7 text-xs pl-7\"\n />\n </div>\n </div>\n )}\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 </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\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\n ref={ref}\n className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n {...props}\n />\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-8 pr-2 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 left-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\n// Create a searchable select component that filters items based on search input\ninterface SearchableSelectProps extends React.ComponentPropsWithoutRef<typeof Select> {\n children: React.ReactNode;\n searchPlaceholder?: string;\n}\n\nconst SearchableSelect = React.forwardRef<\n React.ElementRef<typeof Select>,\n SearchableSelectProps\n>(({ children, searchPlaceholder, ...props }, ref) => {\n const [searchValue, setSearchValue] = React.useState(\"\")\n \n // Clone children and filter based on search value\n const filteredChildren = React.Children.map(children, (child) => {\n if (React.isValidElement(child) && child.type === SelectContent) {\n return React.cloneElement(child as React.ReactElement<SelectContentProps>, {\n searchable: true,\n onSearch: setSearchValue,\n searchPlaceholder,\n })\n }\n return child\n })\n \n return (\n <Select {...props}>\n {filteredChildren}\n </Select>\n )\n})\nSearchableSelect.displayName = \"SearchableSelect\"\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectTrigger,\n SelectValue,\n SearchableSelect,\n} "],"names":["Select","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","React","className","children","props","ref","jsxs","cn","jsx","ChevronDown","SelectContent","position","searchable","onSearch","searchPlaceholder","searchValue","setSearchValue","searchInputRef","_a","handleSearchChange","e","handleSearchClick","handleSearchKeyDown","Search","Input","SelectLabel","SelectItem","Check","SearchableSelect","filteredChildren","child"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"select.js","sources":["../../src/components/select.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown, Search } from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\nimport { Input } from \"./input\"\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-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\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\ninterface SelectContentProps extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content> {\n searchable?: boolean;\n onSearch?: (value: string) => void;\n searchPlaceholder?: string;\n}\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n SelectContentProps\n>(({ className, children, position = \"popper\", searchable, onSearch, searchPlaceholder = \"Search...\", ...props }, ref) => {\n const [searchValue, setSearchValue] = React.useState(\"\")\n const searchInputRef = React.useRef<HTMLInputElement>(null)\n \n // Focus search input when content opens\n React.useEffect(() => {\n if (searchable && searchInputRef.current) {\n setTimeout(() => {\n searchInputRef.current?.focus()\n }, 50)\n }\n }, [searchable])\n \n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setSearchValue(e.target.value)\n if (onSearch) {\n onSearch(e.target.value)\n }\n }\n \n const handleSearchClick = (e: React.MouseEvent) => {\n e.stopPropagation()\n }\n \n const handleSearchKeyDown = (e: React.KeyboardEvent) => {\n // Prevent select keyboard navigation from interfering with search input\n e.stopPropagation()\n }\n \n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 min-w-[8rem] overflow-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\",\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 {searchable && (\n <div \n className=\"px-2 py-1.5 sticky top-0 bg-popover z-10 border-b\"\n onClick={handleSearchClick}\n >\n <div className=\"relative\">\n <Search className=\"absolute left-2 top-1/2 transform -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground\" />\n <Input\n ref={searchInputRef}\n value={searchValue}\n onChange={handleSearchChange}\n onClick={handleSearchClick}\n onKeyDown={handleSearchKeyDown}\n placeholder={searchPlaceholder}\n className=\"h-7 text-xs pl-7\"\n />\n </div>\n </div>\n )}\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 </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\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\n ref={ref}\n className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n {...props}\n />\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-8 pr-2 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 left-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\n// Create a searchable select component that filters items based on search input\ninterface SearchableSelectProps extends React.ComponentPropsWithoutRef<typeof Select> {\n children: React.ReactNode;\n searchPlaceholder?: string;\n}\n\nconst SearchableSelect = React.forwardRef<\n React.ElementRef<typeof Select>,\n SearchableSelectProps\n>(({ children, searchPlaceholder, ...props }, ref) => {\n const [searchValue, setSearchValue] = React.useState(\"\")\n \n // Clone children and filter based on search value\n const filteredChildren = React.Children.map(children, (child) => {\n if (React.isValidElement(child) && child.type === SelectContent) {\n return React.cloneElement(child as React.ReactElement<SelectContentProps>, {\n searchable: true,\n onSearch: setSearchValue,\n searchPlaceholder,\n })\n }\n return child\n })\n \n return (\n <Select {...props}>\n {filteredChildren}\n </Select>\n )\n})\nSearchableSelect.displayName = \"SearchableSelect\"\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectTrigger,\n SelectValue,\n SearchableSelect,\n} "],"names":["Select","SelectPrimitive","SelectGroup","SelectValue","SelectTrigger","React","className","children","props","ref","jsxs","cn","jsx","ChevronDown","SelectContent","position","searchable","onSearch","searchPlaceholder","searchValue","setSearchValue","searchInputRef","_a","handleSearchChange","e","handleSearchClick","handleSearchKeyDown","Search","Input","SelectLabel","SelectItem","Check","SearchableSelect","filteredChildren","child"],"mappings":"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"}
@@ -1,54 +0,0 @@
1
- import { j as s } from "../jsx-runtime-DGlMoOmv.js";
2
- import { AnimatePresence as n, motion as o } from "framer-motion";
3
- import { Check as x, X as d, Download as h, Trash as j } from "lucide-react";
4
- import { Button as e } from "./button.esm.js";
5
- function N({
6
- selectedCount: c,
7
- onEnable: i,
8
- onDisable: r,
9
- onDelete: a,
10
- onDownload: t,
11
- onCancel: m,
12
- show: l
13
- }) {
14
- return /* @__PURE__ */ s.jsx(n, { children: l && /* @__PURE__ */ s.jsx(
15
- o.div,
16
- {
17
- initial: { y: 100, opacity: 0 },
18
- animate: { y: 0, opacity: 1 },
19
- exit: { y: 100, opacity: 0 },
20
- className: "fixed bottom-4 left-1/2 -translate-x-1/2 w-fit bg-background rounded-lg border shadow-lg z-50",
21
- children: /* @__PURE__ */ s.jsxs("div", { className: "flex items-center gap-6 px-4 py-2", children: [
22
- /* @__PURE__ */ s.jsxs("div", { className: "flex items-center gap-2 text-sm font-medium", children: [
23
- /* @__PURE__ */ s.jsx("span", { className: "bg-primary text-primary-foreground w-8 h-8 rounded-lg flex items-center justify-center", children: c }),
24
- "Selected"
25
- ] }),
26
- /* @__PURE__ */ s.jsx("div", { className: "h-4 w-px bg-border" }),
27
- /* @__PURE__ */ s.jsxs("div", { className: "flex items-center gap-2", children: [
28
- i && /* @__PURE__ */ s.jsxs(e, { variant: "ghost", size: "sm", onClick: i, children: [
29
- /* @__PURE__ */ s.jsx(x, { className: "mr-2 h-4 w-4" }),
30
- "Enable"
31
- ] }),
32
- r && /* @__PURE__ */ s.jsxs(e, { variant: "ghost", size: "sm", onClick: r, children: [
33
- /* @__PURE__ */ s.jsx(d, { className: "mr-2 h-4 w-4" }),
34
- "Disable"
35
- ] }),
36
- t && /* @__PURE__ */ s.jsxs(e, { variant: "ghost", size: "sm", onClick: t, children: [
37
- /* @__PURE__ */ s.jsx(h, { className: "mr-2 h-4 w-4" }),
38
- "Download"
39
- ] }),
40
- a && /* @__PURE__ */ s.jsxs(e, { variant: "ghost", size: "sm", className: "text-destructive", onClick: a, children: [
41
- /* @__PURE__ */ s.jsx(j, { className: "mr-2 h-4 w-4" }),
42
- "Delete"
43
- ] })
44
- ] }),
45
- /* @__PURE__ */ s.jsx("div", { className: "h-4 w-px bg-border" }),
46
- /* @__PURE__ */ s.jsx(e, { variant: "ghost", size: "sm", onClick: m, children: "Cancel" })
47
- ] })
48
- }
49
- ) });
50
- }
51
- export {
52
- N as SelectionBar
53
- };
54
- //# sourceMappingURL=selection-bar.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"selection-bar.esm.js","sources":["../../src/components/selection-bar.tsx"],"sourcesContent":["import { motion, AnimatePresence } from \"framer-motion\"\nimport { Check, X, Trash, Download } from \"lucide-react\"\nimport { Button } from \"./button\"\n\ninterface SelectionBarProps {\n selectedCount: number\n onEnable?: () => void\n onDisable?: () => void\n onDelete?: () => void\n onDownload?: () => void\n onCancel: () => void\n show: boolean\n}\n\nexport function SelectionBar({ \n selectedCount, \n onEnable,\n onDisable,\n onDelete,\n onDownload,\n onCancel,\n show \n}: SelectionBarProps) {\n return (\n <AnimatePresence>\n {show && (\n <motion.div\n initial={{ y: 100, opacity: 0 }}\n animate={{ y: 0, opacity: 1 }}\n exit={{ y: 100, opacity: 0 }}\n className=\"fixed bottom-4 left-1/2 -translate-x-1/2 w-fit bg-background rounded-lg border shadow-lg z-50\"\n >\n <div className=\"flex items-center gap-6 px-4 py-2\">\n <div className=\"flex items-center gap-2 text-sm font-medium\">\n <span className=\"bg-primary text-primary-foreground w-8 h-8 rounded-lg flex items-center justify-center\">\n {selectedCount}\n </span>\n Selected\n </div>\n \n <div className=\"h-4 w-px bg-border\" />\n \n <div className=\"flex items-center gap-2\">\n {onEnable && (\n <Button variant=\"ghost\" size=\"sm\" onClick={onEnable}>\n <Check className=\"mr-2 h-4 w-4\" />\n Enable\n </Button>\n )}\n {onDisable && (\n <Button variant=\"ghost\" size=\"sm\" onClick={onDisable}>\n <X className=\"mr-2 h-4 w-4\" />\n Disable\n </Button>\n )}\n {onDownload && (\n <Button variant=\"ghost\" size=\"sm\" onClick={onDownload}>\n <Download className=\"mr-2 h-4 w-4\" />\n Download\n </Button>\n )}\n {onDelete && (\n <Button variant=\"ghost\" size=\"sm\" className=\"text-destructive\" onClick={onDelete}>\n <Trash className=\"mr-2 h-4 w-4\" />\n Delete\n </Button>\n )}\n </div>\n \n <div className=\"h-4 w-px bg-border\" />\n \n <Button variant=\"ghost\" size=\"sm\" onClick={onCancel}>\n Cancel\n </Button>\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n )\n} "],"names":["SelectionBar","selectedCount","onEnable","onDisable","onDelete","onDownload","onCancel","show","jsx","AnimatePresence","motion","jsxs","Button","Check","X","Download","Trash"],"mappings":";;;;AAcO,SAASA,EAAa;AAAA,EAC3B,eAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC;AACF,GAAsB;AACpB,SACEC,gBAAAA,EAAAA,IAACC,KACE,UAAAF,KACCC,gBAAAA,EAAAA;AAAAA,IAACE,EAAO;AAAA,IAAP;AAAA,MACC,SAAS,EAAE,GAAG,KAAK,SAAS,EAAA;AAAA,MAC5B,SAAS,EAAE,GAAG,GAAG,SAAS,EAAA;AAAA,MAC1B,MAAM,EAAE,GAAG,KAAK,SAAS,EAAA;AAAA,MACzB,WAAU;AAAA,MAEV,UAAAC,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,qCACb,UAAA;AAAA,QAAAA,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,+CACb,UAAA;AAAA,UAAAH,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,0FACb,UAAAP,GACH;AAAA,UAAO;AAAA,QAAA,GAET;AAAA,QAEAO,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,qBAAA,CAAqB;AAAA,QAEpCG,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,2BACZ,UAAA;AAAA,UAAAT,4BACEU,GAAA,EAAO,SAAQ,SAAQ,MAAK,MAAK,SAASV,GACzC,UAAA;AAAA,YAAAM,gBAAAA,EAAAA,IAACK,GAAA,EAAM,WAAU,eAAA,CAAe;AAAA,YAAE;AAAA,UAAA,GAEpC;AAAA,UAEDV,4BACES,GAAA,EAAO,SAAQ,SAAQ,MAAK,MAAK,SAAST,GACzC,UAAA;AAAA,YAAAK,gBAAAA,EAAAA,IAACM,GAAA,EAAE,WAAU,eAAA,CAAe;AAAA,YAAE;AAAA,UAAA,GAEhC;AAAA,UAEDT,4BACEO,GAAA,EAAO,SAAQ,SAAQ,MAAK,MAAK,SAASP,GACzC,UAAA;AAAA,YAAAG,gBAAAA,EAAAA,IAACO,GAAA,EAAS,WAAU,eAAA,CAAe;AAAA,YAAE;AAAA,UAAA,GAEvC;AAAA,UAEDX,KACCO,gBAAAA,EAAAA,KAACC,GAAA,EAAO,SAAQ,SAAQ,MAAK,MAAK,WAAU,oBAAmB,SAASR,GACtE,UAAA;AAAA,YAAAI,gBAAAA,EAAAA,IAACQ,GAAA,EAAM,WAAU,eAAA,CAAe;AAAA,YAAE;AAAA,UAAA,EAAA,CAEpC;AAAA,QAAA,GAEJ;AAAA,QAEAR,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,qBAAA,CAAqB;AAAA,QAEpCA,gBAAAA,EAAAA,IAACI,KAAO,SAAQ,SAAQ,MAAK,MAAK,SAASN,GAAU,UAAA,SAAA,CAErD;AAAA,MAAA,EAAA,CACF;AAAA,IAAA;AAAA,EAAA,GAGN;AAEJ;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"selection-bar.js","sources":["../../src/components/selection-bar.tsx"],"sourcesContent":["import { motion, AnimatePresence } from \"framer-motion\"\nimport { Check, X, Trash, Download } from \"lucide-react\"\nimport { Button } from \"./button\"\n\ninterface SelectionBarProps {\n selectedCount: number\n onEnable?: () => void\n onDisable?: () => void\n onDelete?: () => void\n onDownload?: () => void\n onCancel: () => void\n show: boolean\n}\n\nexport function SelectionBar({ \n selectedCount, \n onEnable,\n onDisable,\n onDelete,\n onDownload,\n onCancel,\n show \n}: SelectionBarProps) {\n return (\n <AnimatePresence>\n {show && (\n <motion.div\n initial={{ y: 100, opacity: 0 }}\n animate={{ y: 0, opacity: 1 }}\n exit={{ y: 100, opacity: 0 }}\n className=\"fixed bottom-4 left-1/2 -translate-x-1/2 w-fit bg-background rounded-lg border shadow-lg z-50\"\n >\n <div className=\"flex items-center gap-6 px-4 py-2\">\n <div className=\"flex items-center gap-2 text-sm font-medium\">\n <span className=\"bg-primary text-primary-foreground w-8 h-8 rounded-lg flex items-center justify-center\">\n {selectedCount}\n </span>\n Selected\n </div>\n \n <div className=\"h-4 w-px bg-border\" />\n \n <div className=\"flex items-center gap-2\">\n {onEnable && (\n <Button variant=\"ghost\" size=\"sm\" onClick={onEnable}>\n <Check className=\"mr-2 h-4 w-4\" />\n Enable\n </Button>\n )}\n {onDisable && (\n <Button variant=\"ghost\" size=\"sm\" onClick={onDisable}>\n <X className=\"mr-2 h-4 w-4\" />\n Disable\n </Button>\n )}\n {onDownload && (\n <Button variant=\"ghost\" size=\"sm\" onClick={onDownload}>\n <Download className=\"mr-2 h-4 w-4\" />\n Download\n </Button>\n )}\n {onDelete && (\n <Button variant=\"ghost\" size=\"sm\" className=\"text-destructive\" onClick={onDelete}>\n <Trash className=\"mr-2 h-4 w-4\" />\n Delete\n </Button>\n )}\n </div>\n \n <div className=\"h-4 w-px bg-border\" />\n \n <Button variant=\"ghost\" size=\"sm\" onClick={onCancel}>\n Cancel\n </Button>\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n )\n} "],"names":["SelectionBar","selectedCount","onEnable","onDisable","onDelete","onDownload","onCancel","show","jsx","AnimatePresence","motion","jsxs","Button","Check","X","Download","Trash"],"mappings":"6MAcO,SAASA,EAAa,CAC3B,cAAAC,EACA,SAAAC,EACA,UAAAC,EACA,SAAAC,EACA,WAAAC,EACA,SAAAC,EACA,KAAAC,CACF,EAAsB,CACpB,OACEC,EAAAA,kBAAAA,IAACC,EAAAA,iBACE,SAAAF,GACCC,EAAAA,kBAAAA,IAACE,EAAAA,OAAO,IAAP,CACC,QAAS,CAAE,EAAG,IAAK,QAAS,CAAA,EAC5B,QAAS,CAAE,EAAG,EAAG,QAAS,CAAA,EAC1B,KAAM,CAAE,EAAG,IAAK,QAAS,CAAA,EACzB,UAAU,gGAEV,SAAAC,EAAAA,kBAAAA,KAAC,MAAA,CAAI,UAAU,oCACb,SAAA,CAAAA,EAAAA,kBAAAA,KAAC,MAAA,CAAI,UAAU,8CACb,SAAA,CAAAH,EAAAA,kBAAAA,IAAC,OAAA,CAAK,UAAU,yFACb,SAAAP,EACH,EAAO,UAAA,EAET,EAEAO,EAAAA,kBAAAA,IAAC,MAAA,CAAI,UAAU,oBAAA,CAAqB,EAEpCG,EAAAA,kBAAAA,KAAC,MAAA,CAAI,UAAU,0BACZ,SAAA,CAAAT,4BACEU,SAAA,CAAO,QAAQ,QAAQ,KAAK,KAAK,QAASV,EACzC,SAAA,CAAAM,EAAAA,kBAAAA,IAACK,EAAAA,MAAA,CAAM,UAAU,cAAA,CAAe,EAAE,QAAA,EAEpC,EAEDV,4BACES,SAAA,CAAO,QAAQ,QAAQ,KAAK,KAAK,QAAST,EACzC,SAAA,CAAAK,EAAAA,kBAAAA,IAACM,EAAAA,EAAA,CAAE,UAAU,cAAA,CAAe,EAAE,SAAA,EAEhC,EAEDT,4BACEO,SAAA,CAAO,QAAQ,QAAQ,KAAK,KAAK,QAASP,EACzC,SAAA,CAAAG,EAAAA,kBAAAA,IAACO,EAAAA,SAAA,CAAS,UAAU,cAAA,CAAe,EAAE,UAAA,EAEvC,EAEDX,GACCO,EAAAA,kBAAAA,KAACC,EAAAA,OAAA,CAAO,QAAQ,QAAQ,KAAK,KAAK,UAAU,mBAAmB,QAASR,EACtE,SAAA,CAAAI,EAAAA,kBAAAA,IAACQ,EAAAA,MAAA,CAAM,UAAU,cAAA,CAAe,EAAE,QAAA,CAAA,CAEpC,CAAA,EAEJ,EAEAR,EAAAA,kBAAAA,IAAC,MAAA,CAAI,UAAU,oBAAA,CAAqB,EAEpCA,EAAAA,kBAAAA,IAACI,EAAAA,QAAO,QAAQ,QAAQ,KAAK,KAAK,QAASN,EAAU,SAAA,QAAA,CAErD,CAAA,CAAA,CACF,CAAA,CAAA,EAGN,CAEJ"}
@@ -1,25 +0,0 @@
1
- import { j as p } from "../jsx-runtime-DGlMoOmv.js";
2
- import * as e from "react";
3
- import * as o from "@radix-ui/react-separator";
4
- import { c as i } from "../utils-qaFjX9_3.js";
5
- const l = e.forwardRef(
6
- ({ className: a, orientation: r = "horizontal", decorative: t = !0, ...m }, s) => /* @__PURE__ */ p.jsx(
7
- o.Root,
8
- {
9
- ref: s,
10
- decorative: t,
11
- orientation: r,
12
- className: i(
13
- "shrink-0 bg-border",
14
- r === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
15
- a
16
- ),
17
- ...m
18
- }
19
- )
20
- );
21
- l.displayName = o.Root.displayName;
22
- export {
23
- l as Separator
24
- };
25
- //# sourceMappingURL=separator.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"separator.esm.js","sources":["../../src/components/separator.tsx"],"sourcesContent":["import * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\nimport { cn } from \"@/lib/utils\"\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator } "],"names":["Separator","React","className","orientation","decorative","props","ref","jsx","SeparatorPrimitive","cn"],"mappings":";;;;AAIA,MAAMA,IAAYC,EAAM;AAAA,EAItB,CACE,EAAE,WAAAC,GAAW,aAAAC,IAAc,cAAc,YAAAC,IAAa,IAAM,GAAGC,KAC/DC,MAEAC,gBAAAA,EAAAA;AAAAA,IAACC,EAAmB;AAAA,IAAnB;AAAA,MACC,KAAAF;AAAA,MACA,YAAAF;AAAA,MACA,aAAAD;AAAA,MACA,WAAWM;AAAA,QACT;AAAA,QACAN,MAAgB,eAAe,mBAAmB;AAAA,QAClDD;AAAA,MAAA;AAAA,MAED,GAAGG;AAAA,IAAA;AAAA,EAAA;AAGV;AACAL,EAAU,cAAcQ,EAAmB,KAAK;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"separator.js","sources":["../../src/components/separator.tsx"],"sourcesContent":["import * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\nimport { cn } from \"@/lib/utils\"\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator } "],"names":["Separator","React","className","orientation","decorative","props","ref","jsx","SeparatorPrimitive","cn"],"mappings":"6fAIMA,EAAYC,EAAM,WAItB,CACE,CAAE,UAAAC,EAAW,YAAAC,EAAc,aAAc,WAAAC,EAAa,GAAM,GAAGC,GAC/DC,IAEAC,EAAAA,kBAAAA,IAACC,EAAmB,KAAnB,CACC,IAAAF,EACA,WAAAF,EACA,YAAAD,EACA,UAAWM,EAAAA,GACT,qBACAN,IAAgB,aAAe,iBAAmB,iBAClDD,CAAA,EAED,GAAGG,CAAA,CAAA,CAGV,EACAL,EAAU,YAAcQ,EAAmB,KAAK"}
@@ -1,129 +0,0 @@
1
- import { j as e } from "../jsx-runtime-DGlMoOmv.js";
2
- import { Minimize2 as S, Maximize2 as A, X as F } from "lucide-react";
3
- import { Button as h } from "./button.esm.js";
4
- import { useState as B, useRef as I, useEffect as d } from "react";
5
- import { c as m } from "../utils-qaFjX9_3.js";
6
- import { AnimatePresence as M, motion as p } from "framer-motion";
7
- import { createPortal as X } from "react-dom";
8
- let s = [];
9
- function T({
10
- isOpen: i,
11
- onClose: n,
12
- children: y,
13
- header: b,
14
- footer: u,
15
- className: g,
16
- enableFullscreen: j = !0,
17
- position: c = "right",
18
- headerClassName: v = ""
19
- }) {
20
- const [r, N] = B(!1), a = I(null);
21
- if (d(() => (i ? s.push(a) : s = s.filter((t) => t !== a), () => {
22
- s = s.filter((t) => t !== a);
23
- }), [i]), d(() => {
24
- const t = (o) => {
25
- var x;
26
- const L = s.some(
27
- (f) => f.current && f.current.contains(o.target)
28
- ), R = (x = o.target) == null ? void 0 : x.closest("[data-sheet-close]");
29
- !L && !R && a.current && !a.current.contains(o.target) && n();
30
- };
31
- return i && !r && document.addEventListener("mousedown", t), () => {
32
- document.removeEventListener("mousedown", t);
33
- };
34
- }, [i, r, n]), d(() => {
35
- const t = (o) => {
36
- o.key === "Escape" && i && s[s.length - 1] === a && n();
37
- };
38
- return document.addEventListener("keydown", t), () => document.removeEventListener("keydown", t);
39
- }, [i, n]), !i) return null;
40
- const k = (t) => {
41
- t.stopPropagation(), n();
42
- }, w = /* @__PURE__ */ e.jsxs("div", { className: "flex flex-col h-full", children: [
43
- /* @__PURE__ */ e.jsxs("div", { className: m(
44
- "flex items-center justify-between py-4 px-4 h-header border-b border-border/50",
45
- v
46
- ), children: [
47
- /* @__PURE__ */ e.jsx("div", { className: "text-sm font-medium", children: b }),
48
- /* @__PURE__ */ e.jsxs("div", { className: "flex items-center gap-1 ml-auto", children: [
49
- j && /* @__PURE__ */ e.jsx(
50
- h,
51
- {
52
- variant: "ghost",
53
- size: "icon",
54
- className: "h-7 w-7",
55
- onClick: (t) => {
56
- t.stopPropagation(), N(!r);
57
- },
58
- children: r ? /* @__PURE__ */ e.jsx(S, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ e.jsx(A, { className: "h-3.5 w-3.5" })
59
- }
60
- ),
61
- /* @__PURE__ */ e.jsx(
62
- h,
63
- {
64
- variant: "ghost",
65
- size: "icon",
66
- className: "h-7 w-7",
67
- onClick: k,
68
- "data-sheet-close": "true",
69
- children: /* @__PURE__ */ e.jsx(F, { className: "h-3.5 w-3.5" })
70
- }
71
- )
72
- ] })
73
- ] }),
74
- /* @__PURE__ */ e.jsx("div", { className: "flex-1 overflow-auto", children: y }),
75
- u && /* @__PURE__ */ e.jsx("div", { className: "border-t border-border/50 py-2 px-3", children: /* @__PURE__ */ e.jsx("div", { className: "text-sm", children: u }) })
76
- ] }), E = () => c === "left" ? {
77
- initial: { x: -100, opacity: 0 },
78
- animate: { x: 0, opacity: 1 },
79
- exit: { x: -100, opacity: 0 }
80
- } : c === "bottom" ? {
81
- initial: { y: 100, opacity: 0 },
82
- animate: { y: 0, opacity: 1 },
83
- exit: { y: 100, opacity: 0 }
84
- } : {
85
- initial: { x: 100, opacity: 0 },
86
- animate: { x: 0, opacity: 1 },
87
- exit: { x: 100, opacity: 0 }
88
- }, P = () => r ? "inset-4 rounded-lg" : c === "left" ? "inset-y-0 left-0 border-r" : c === "bottom" ? "inset-x-0 bottom-0 border-t" : "inset-y-0 right-0 border-l", l = E(), z = P(), C = /* @__PURE__ */ e.jsx(M, { children: i && /* @__PURE__ */ e.jsxs(e.Fragment, { children: [
89
- /* @__PURE__ */ e.jsx(
90
- p.div,
91
- {
92
- initial: { opacity: 0 },
93
- animate: { opacity: 1 },
94
- exit: { opacity: 0 },
95
- onClick: (t) => {
96
- t.stopPropagation(), n();
97
- },
98
- className: m(
99
- "fixed inset-0 z-[100] bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
100
- r ? "block" : "hidden"
101
- )
102
- }
103
- ),
104
- /* @__PURE__ */ e.jsx(
105
- p.div,
106
- {
107
- ref: a,
108
- initial: l.initial,
109
- animate: l.animate,
110
- exit: l.exit,
111
- transition: {
112
- duration: 0.3,
113
- ease: [0.32, 0.72, 0, 1]
114
- },
115
- className: m(
116
- "fixed z-[100] bg-background shadow-lg flex flex-col border-border/50",
117
- z,
118
- g
119
- ),
120
- children: w
121
- }
122
- )
123
- ] }) });
124
- return X(C, document.body);
125
- }
126
- export {
127
- T as Sheet
128
- };
129
- //# sourceMappingURL=sheet.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sheet.esm.js","sources":["../../src/components/sheet.tsx"],"sourcesContent":["import { X, Maximize2, Minimize2 } from \"lucide-react\"\nimport { Button } from \"./button\"\nimport { useState, useRef, useEffect } from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { motion, AnimatePresence } from \"framer-motion\"\nimport { createPortal } from \"react-dom\"\n\ninterface SheetProps {\n isOpen: boolean\n onClose: () => void\n children: React.ReactNode\n header?: React.ReactNode\n footer?: React.ReactNode\n className?: string\n enableFullscreen?: boolean\n position?: 'left' | 'right' | 'bottom'\n headerClassName?: string\n}\n\n// Create a global registry of open sheets to prevent closing multiple sheets\nlet openSheetRefs: React.RefObject<HTMLDivElement>[] = [];\n\nexport function Sheet({ \n isOpen, \n onClose, \n children, \n header, \n footer, \n className, \n enableFullscreen = true,\n position = 'right',\n headerClassName = ''\n}: SheetProps) {\n const [isFullscreen, setIsFullscreen] = useState(false)\n const sheetRef = useRef<HTMLDivElement>(null)\n\n // When the sheet opens, add its ref to the registry\n useEffect(() => {\n if (isOpen) {\n openSheetRefs.push(sheetRef);\n } else {\n // Remove the ref when sheet closes\n openSheetRefs = openSheetRefs.filter(ref => ref !== sheetRef);\n }\n \n return () => {\n // Cleanup when component unmounts\n openSheetRefs = openSheetRefs.filter(ref => ref !== sheetRef);\n };\n }, [isOpen]);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n // If we clicked inside any open sheet, don't close any sheets\n const clickedInsideAnySheet = openSheetRefs.some(ref => \n ref.current && ref.current.contains(event.target as Node)\n );\n\n // Check if clicked on the close button\n const isCloseButton = (event.target as Element)?.closest('[data-sheet-close]');\n \n // Only close if not clicked inside any sheet and not clicking a close button\n if (!clickedInsideAnySheet && !isCloseButton && sheetRef.current && !sheetRef.current.contains(event.target as Node)) {\n onClose();\n }\n }\n\n if (isOpen && !isFullscreen) {\n document.addEventListener('mousedown', handleClickOutside)\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [isOpen, isFullscreen, onClose])\n\n useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && isOpen) {\n // Only close the topmost sheet (last one in the registry)\n if (openSheetRefs[openSheetRefs.length - 1] === sheetRef) {\n onClose();\n }\n }\n }\n\n document.addEventListener('keydown', handleEscape)\n return () => document.removeEventListener('keydown', handleEscape)\n }, [isOpen, onClose])\n\n if (!isOpen) return null\n\n const handleCloseClick = (e: React.MouseEvent) => {\n e.stopPropagation(); // Prevent event from bubbling to parent sheets\n onClose();\n };\n\n const content = (\n <div className=\"flex flex-col h-full\">\n <div className={cn(\n \"flex items-center justify-between py-4 px-4 h-header border-b border-border/50\",\n headerClassName\n )}>\n <div className=\"text-sm font-medium\">{header}</div>\n <div className=\"flex items-center gap-1 ml-auto\">\n {enableFullscreen && (\n <Button \n variant=\"ghost\" \n size=\"icon\" \n className=\"h-7 w-7\"\n onClick={(e) => {\n e.stopPropagation();\n setIsFullscreen(!isFullscreen);\n }}\n >\n {isFullscreen ? (\n <Minimize2 className=\"h-3.5 w-3.5\" />\n ) : (\n <Maximize2 className=\"h-3.5 w-3.5\" />\n )}\n </Button>\n )}\n <Button \n variant=\"ghost\" \n size=\"icon\" \n className=\"h-7 w-7\"\n onClick={handleCloseClick}\n data-sheet-close=\"true\"\n >\n <X className=\"h-3.5 w-3.5\" />\n </Button>\n </div>\n </div>\n\n <div className=\"flex-1 overflow-auto\">\n {children}\n </div>\n\n {footer && (\n <div className=\"border-t border-border/50 py-2 px-3\">\n <div className=\"text-sm\">{footer}</div>\n </div>\n )}\n </div>\n )\n\n // Determine animation properties based on position\n const getAnimationProps = () => {\n if (position === 'left') {\n return {\n initial: { x: -100, opacity: 0 },\n animate: { x: 0, opacity: 1 },\n exit: { x: -100, opacity: 0 },\n }\n } else if (position === 'bottom') {\n return {\n initial: { y: 100, opacity: 0 },\n animate: { y: 0, opacity: 1 },\n exit: { y: 100, opacity: 0 },\n }\n } else { // right (default)\n return {\n initial: { x: 100, opacity: 0 },\n animate: { x: 0, opacity: 1 },\n exit: { x: 100, opacity: 0 },\n }\n }\n }\n\n // Determine position classes based on position\n const getPositionClasses = () => {\n if (isFullscreen) {\n return \"inset-4 rounded-lg\"\n } else if (position === 'left') {\n return \"inset-y-0 left-0 border-r\"\n } else if (position === 'bottom') {\n return \"inset-x-0 bottom-0 border-t\"\n } else { // right (default)\n return \"inset-y-0 right-0 border-l\"\n }\n }\n\n const animationProps = getAnimationProps()\n const positionClasses = getPositionClasses()\n\n const sheetContent = (\n <AnimatePresence>\n {isOpen && (\n <>\n {/* Backdrop */}\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n onClick={(e) => {\n e.stopPropagation();\n onClose();\n }}\n className={cn(\n \"fixed inset-0 z-[100] bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n isFullscreen ? \"block\" : \"hidden\"\n )}\n />\n\n {/* Sheet/Modal */}\n <motion.div\n ref={sheetRef}\n initial={animationProps.initial}\n animate={animationProps.animate}\n exit={animationProps.exit}\n transition={{ \n duration: 0.3,\n ease: [0.32, 0.72, 0, 1]\n }}\n className={cn(\n \"fixed z-[100] bg-background shadow-lg flex flex-col border-border/50\",\n positionClasses,\n className\n )}\n >\n {content}\n </motion.div>\n </>\n )}\n </AnimatePresence>\n )\n\n return createPortal(sheetContent, document.body)\n} "],"names":["openSheetRefs","Sheet","isOpen","onClose","children","header","footer","className","enableFullscreen","position","headerClassName","isFullscreen","setIsFullscreen","useState","sheetRef","useRef","useEffect","ref","handleClickOutside","event","clickedInsideAnySheet","isCloseButton","_a","handleEscape","handleCloseClick","e","content","jsxs","cn","jsx","Button","Minimize2","Maximize2","X","getAnimationProps","getPositionClasses","animationProps","positionClasses","sheetContent","AnimatePresence","Fragment","motion","createPortal"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sheet.js","sources":["../../src/components/sheet.tsx"],"sourcesContent":["import { X, Maximize2, Minimize2 } from \"lucide-react\"\nimport { Button } from \"./button\"\nimport { useState, useRef, useEffect } from \"react\"\nimport { cn } from \"@/lib/utils\"\nimport { motion, AnimatePresence } from \"framer-motion\"\nimport { createPortal } from \"react-dom\"\n\ninterface SheetProps {\n isOpen: boolean\n onClose: () => void\n children: React.ReactNode\n header?: React.ReactNode\n footer?: React.ReactNode\n className?: string\n enableFullscreen?: boolean\n position?: 'left' | 'right' | 'bottom'\n headerClassName?: string\n}\n\n// Create a global registry of open sheets to prevent closing multiple sheets\nlet openSheetRefs: React.RefObject<HTMLDivElement>[] = [];\n\nexport function Sheet({ \n isOpen, \n onClose, \n children, \n header, \n footer, \n className, \n enableFullscreen = true,\n position = 'right',\n headerClassName = ''\n}: SheetProps) {\n const [isFullscreen, setIsFullscreen] = useState(false)\n const sheetRef = useRef<HTMLDivElement>(null)\n\n // When the sheet opens, add its ref to the registry\n useEffect(() => {\n if (isOpen) {\n openSheetRefs.push(sheetRef);\n } else {\n // Remove the ref when sheet closes\n openSheetRefs = openSheetRefs.filter(ref => ref !== sheetRef);\n }\n \n return () => {\n // Cleanup when component unmounts\n openSheetRefs = openSheetRefs.filter(ref => ref !== sheetRef);\n };\n }, [isOpen]);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n // If we clicked inside any open sheet, don't close any sheets\n const clickedInsideAnySheet = openSheetRefs.some(ref => \n ref.current && ref.current.contains(event.target as Node)\n );\n\n // Check if clicked on the close button\n const isCloseButton = (event.target as Element)?.closest('[data-sheet-close]');\n \n // Only close if not clicked inside any sheet and not clicking a close button\n if (!clickedInsideAnySheet && !isCloseButton && sheetRef.current && !sheetRef.current.contains(event.target as Node)) {\n onClose();\n }\n }\n\n if (isOpen && !isFullscreen) {\n document.addEventListener('mousedown', handleClickOutside)\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside)\n }\n }, [isOpen, isFullscreen, onClose])\n\n useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && isOpen) {\n // Only close the topmost sheet (last one in the registry)\n if (openSheetRefs[openSheetRefs.length - 1] === sheetRef) {\n onClose();\n }\n }\n }\n\n document.addEventListener('keydown', handleEscape)\n return () => document.removeEventListener('keydown', handleEscape)\n }, [isOpen, onClose])\n\n if (!isOpen) return null\n\n const handleCloseClick = (e: React.MouseEvent) => {\n e.stopPropagation(); // Prevent event from bubbling to parent sheets\n onClose();\n };\n\n const content = (\n <div className=\"flex flex-col h-full\">\n <div className={cn(\n \"flex items-center justify-between py-4 px-4 h-header border-b border-border/50\",\n headerClassName\n )}>\n <div className=\"text-sm font-medium\">{header}</div>\n <div className=\"flex items-center gap-1 ml-auto\">\n {enableFullscreen && (\n <Button \n variant=\"ghost\" \n size=\"icon\" \n className=\"h-7 w-7\"\n onClick={(e) => {\n e.stopPropagation();\n setIsFullscreen(!isFullscreen);\n }}\n >\n {isFullscreen ? (\n <Minimize2 className=\"h-3.5 w-3.5\" />\n ) : (\n <Maximize2 className=\"h-3.5 w-3.5\" />\n )}\n </Button>\n )}\n <Button \n variant=\"ghost\" \n size=\"icon\" \n className=\"h-7 w-7\"\n onClick={handleCloseClick}\n data-sheet-close=\"true\"\n >\n <X className=\"h-3.5 w-3.5\" />\n </Button>\n </div>\n </div>\n\n <div className=\"flex-1 overflow-auto\">\n {children}\n </div>\n\n {footer && (\n <div className=\"border-t border-border/50 py-2 px-3\">\n <div className=\"text-sm\">{footer}</div>\n </div>\n )}\n </div>\n )\n\n // Determine animation properties based on position\n const getAnimationProps = () => {\n if (position === 'left') {\n return {\n initial: { x: -100, opacity: 0 },\n animate: { x: 0, opacity: 1 },\n exit: { x: -100, opacity: 0 },\n }\n } else if (position === 'bottom') {\n return {\n initial: { y: 100, opacity: 0 },\n animate: { y: 0, opacity: 1 },\n exit: { y: 100, opacity: 0 },\n }\n } else { // right (default)\n return {\n initial: { x: 100, opacity: 0 },\n animate: { x: 0, opacity: 1 },\n exit: { x: 100, opacity: 0 },\n }\n }\n }\n\n // Determine position classes based on position\n const getPositionClasses = () => {\n if (isFullscreen) {\n return \"inset-4 rounded-lg\"\n } else if (position === 'left') {\n return \"inset-y-0 left-0 border-r\"\n } else if (position === 'bottom') {\n return \"inset-x-0 bottom-0 border-t\"\n } else { // right (default)\n return \"inset-y-0 right-0 border-l\"\n }\n }\n\n const animationProps = getAnimationProps()\n const positionClasses = getPositionClasses()\n\n const sheetContent = (\n <AnimatePresence>\n {isOpen && (\n <>\n {/* Backdrop */}\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n onClick={(e) => {\n e.stopPropagation();\n onClose();\n }}\n className={cn(\n \"fixed inset-0 z-[100] bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n isFullscreen ? \"block\" : \"hidden\"\n )}\n />\n\n {/* Sheet/Modal */}\n <motion.div\n ref={sheetRef}\n initial={animationProps.initial}\n animate={animationProps.animate}\n exit={animationProps.exit}\n transition={{ \n duration: 0.3,\n ease: [0.32, 0.72, 0, 1]\n }}\n className={cn(\n \"fixed z-[100] bg-background shadow-lg flex flex-col border-border/50\",\n positionClasses,\n className\n )}\n >\n {content}\n </motion.div>\n </>\n )}\n </AnimatePresence>\n )\n\n return createPortal(sheetContent, document.body)\n} "],"names":["openSheetRefs","Sheet","isOpen","onClose","children","header","footer","className","enableFullscreen","position","headerClassName","isFullscreen","setIsFullscreen","useState","sheetRef","useRef","useEffect","ref","handleClickOutside","event","clickedInsideAnySheet","isCloseButton","_a","handleEscape","handleCloseClick","e","content","jsxs","cn","jsx","Button","Minimize2","Maximize2","X","getAnimationProps","getPositionClasses","animationProps","positionClasses","sheetContent","AnimatePresence","Fragment","motion","createPortal"],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import { j as m } from "../jsx-runtime-DGlMoOmv.js";
2
- import { c as o } from "../utils-qaFjX9_3.js";
3
- function s({
4
- className: e,
5
- ...t
6
- }) {
7
- return /* @__PURE__ */ m.jsx(
8
- "div",
9
- {
10
- className: o("animate-pulse rounded-md bg-muted/60", e),
11
- ...t
12
- }
13
- );
14
- }
15
- export {
16
- s as Skeleton
17
- };
18
- //# sourceMappingURL=skeleton.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skeleton.esm.js","sources":["../../src/components/skeleton.tsx"],"sourcesContent":["import { cn } from \"@/lib/utils\"\n\nfunction Skeleton({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"animate-pulse rounded-md bg-muted/60\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton } "],"names":["Skeleton","className","props","jsx","cn"],"mappings":";;AAEA,SAASA,EAAS;AAAA,EAChB,WAAAC;AAAA,EACA,GAAGC;AACL,GAAyC;AACvC,SACEC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAG,wCAAwCH,CAAS;AAAA,MAC9D,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"skeleton.js","sources":["../../src/components/skeleton.tsx"],"sourcesContent":["import { cn } from \"@/lib/utils\"\n\nfunction Skeleton({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn(\"animate-pulse rounded-md bg-muted/60\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton } "],"names":["Skeleton","className","props","jsx","cn"],"mappings":"kKAEA,SAASA,EAAS,CAChB,UAAAC,EACA,GAAGC,CACL,EAAyC,CACvC,OACEC,EAAAA,kBAAAA,IAAC,MAAA,CACC,UAAWC,EAAAA,GAAG,uCAAwCH,CAAS,EAC9D,GAAGC,CAAA,CAAA,CAGV"}
@@ -1,33 +0,0 @@
1
- import { j as e } from "../jsx-runtime-DGlMoOmv.js";
2
- import * as a from "react";
3
- import * as r from "@radix-ui/react-slider";
4
- import { c as t } from "../utils-qaFjX9_3.js";
5
- const n = a.forwardRef(({ className: s, ...o }, l) => {
6
- var i;
7
- return /* @__PURE__ */ e.jsxs(
8
- r.Root,
9
- {
10
- ref: l,
11
- className: t(
12
- "relative flex w-full touch-none select-none items-center",
13
- s
14
- ),
15
- ...o,
16
- children: [
17
- /* @__PURE__ */ e.jsx(r.Track, { className: "relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20", children: /* @__PURE__ */ e.jsx(
18
- "div",
19
- {
20
- className: "absolute h-full bg-primary",
21
- style: { width: `${(((i = o.value) == null ? void 0 : i[0]) || 0) * 100}%` }
22
- }
23
- ) }),
24
- /* @__PURE__ */ e.jsx(r.Thumb, { className: "block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 hover:scale-110 active:scale-90" })
25
- ]
26
- }
27
- );
28
- });
29
- n.displayName = r.Root.displayName;
30
- export {
31
- n as Slider
32
- };
33
- //# sourceMappingURL=slider.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"slider.esm.js","sources":["../../src/components/slider.tsx"],"sourcesContent":["import * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\nimport { cn } from \"@/lib/utils\"\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SliderPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex w-full touch-none select-none items-center\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20\">\n <div\n className=\"absolute h-full bg-primary\"\n style={{ width: `${(props.value?.[0] || 0) * 100}%` }}\n />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 hover:scale-110 active:scale-90\" />\n </SliderPrimitive.Root>\n))\nSlider.displayName = SliderPrimitive.Root.displayName\n\nexport { Slider } "],"names":["Slider","React","className","props","ref","jsxs","SliderPrimitive","cn","jsx","_a"],"mappings":";;;;AAIA,MAAMA,IAASC,EAAM,WAGnB,CAAC,EAAE,WAAAC,GAAW,GAAGC,EAAA,GAASC;;AAC1BC,yBAAAA,EAAAA;AAAAA,IAACC,EAAgB;AAAA,IAAhB;AAAA,MACC,KAAAF;AAAA,MACA,WAAWG;AAAA,QACT;AAAA,QACAL;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,MAEJ,UAAA;AAAA,QAAAK,gBAAAA,EAAAA,IAACF,EAAgB,OAAhB,EAAsB,WAAU,yEAC/B,UAAAE,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,OAAO,EAAE,OAAO,MAAIC,IAAAN,EAAM,UAAN,gBAAAM,EAAc,OAAM,KAAK,GAAG,IAAA;AAAA,UAAI;AAAA,QAAA,GAExD;AAAA,QACAD,gBAAAA,EAAAA,IAACF,EAAgB,OAAhB,EAAsB,WAAU,sPAAA,CAAsP;AAAA,MAAA;AAAA,IAAA;AAAA,EACzR;AAAA,CACD;AACDN,EAAO,cAAcM,EAAgB,KAAK;"}