@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.
- package/README.md +0 -7
- package/dist/components/alert-dialog.js +55 -2
- package/dist/components/alert.js +63 -2
- package/dist/components/avatar.js +41 -2
- package/dist/components/badge.js +26 -2
- package/dist/components/button.d.ts +2 -2
- package/dist/components/button.js +49 -2
- package/dist/components/calendar.js +86 -2
- package/dist/components/card.js +61 -2
- package/dist/components/carousel.js +100 -2
- package/dist/components/checkbox.js +31 -2
- package/dist/components/collapse.js +49 -2
- package/dist/components/command-menu.js +89 -2
- package/dist/components/command.js +115 -2
- package/dist/components/confirmation-modal.js +44 -2
- package/dist/components/context-menu.js +185 -2
- package/dist/components/dialog.js +121 -2
- package/dist/components/dropdown-menu.js +48 -2
- package/dist/components/dropzone.js +44 -2
- package/dist/components/image-cropper-modal.js +250 -2
- package/dist/components/image-cropper.js +130 -2
- package/dist/components/input.js +21 -2
- package/dist/components/label.js +19 -2
- package/dist/components/loader.js +69 -2
- package/dist/components/loading-placeholder.js +24 -2
- package/dist/components/mention.js +153 -2
- package/dist/components/modal.js +135 -2
- package/dist/components/notification.js +25 -2
- package/dist/components/popover.js +23 -2
- package/dist/components/progress.js +34 -2
- package/dist/components/radio-group.js +47 -2
- package/dist/components/scroll-area.js +46 -2
- package/dist/components/select.js +130 -2
- package/dist/components/selection-bar.js +53 -2
- package/dist/components/separator.js +24 -2
- package/dist/components/sheet.js +128 -2
- package/dist/components/skeleton.js +17 -2
- package/dist/components/slider.js +32 -2
- package/dist/components/stepper/index.d.ts +4 -0
- package/dist/components/stepper/step-layout.d.ts +8 -0
- package/dist/components/stepper/stepper-modal.d.ts +26 -0
- package/dist/components/stepper/stepper.d.ts +7 -0
- package/dist/components/stepper/types.d.ts +6 -0
- package/dist/components/stepper.js +6 -2
- package/dist/components/switch.js +35 -2
- package/dist/components/table-empty.js +22 -2
- package/dist/components/table-mobile.js +91 -2
- package/dist/components/table.js +156 -2
- package/dist/components/tabs.js +46 -2
- package/dist/components/terminal.js +49 -2
- package/dist/components/textarea.js +20 -2
- package/dist/components/tooltip.js +75 -2
- package/dist/components/use-toast.js +64 -2
- package/dist/icons/icons.d.ts +8 -0
- package/dist/icons/index.d.ts +1 -0
- package/dist/icons/providers/anthropic.d.ts +2 -0
- package/dist/icons/providers/claude.d.ts +2 -0
- package/dist/icons/providers/deepseek.d.ts +2 -0
- package/dist/icons/providers/gemini.d.ts +2 -0
- package/dist/icons/providers/grok.d.ts +2 -0
- package/dist/icons/providers/index.d.ts +6 -0
- package/dist/icons/providers/openai.d.ts +2 -0
- package/dist/icons/providers/types.d.ts +4 -0
- package/dist/index.d.ts +48 -962
- package/dist/index.js +444 -2
- package/dist/lib/icons.d.ts +14 -0
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/utils.js +8 -2
- package/dist/{stepper-modal-SYU9mbXs.js → stepper-modal-JXpOXOV2.js} +90 -91
- package/dist/styles.css +1 -1
- package/package.json +180 -134
- package/dist/MonacoEditor-COZcVMEj.cjs +0 -8
- package/dist/MonacoEditor-COZcVMEj.cjs.map +0 -1
- package/dist/MonacoEditor-D3QSSKa4.js +0 -295
- package/dist/MonacoEditor-D3QSSKa4.js.map +0 -1
- package/dist/alert-dialog.d.ts +0 -18
- package/dist/alert.d.ts +0 -25
- package/dist/avatar.d.ts +0 -9
- package/dist/badge.d.ts +0 -15
- package/dist/button.d.ts +0 -16
- package/dist/calendar.d.ts +0 -21
- package/dist/card.d.ts +0 -15
- package/dist/carousel.d.ts +0 -18
- package/dist/charts.d.ts +0 -26
- package/dist/checkbox.d.ts +0 -6
- package/dist/collapse.d.ts +0 -15
- package/dist/command-menu.d.ts +0 -12
- package/dist/command.d.ts +0 -89
- package/dist/components/alert-dialog.esm.js +0 -59
- package/dist/components/alert-dialog.esm.js.map +0 -1
- package/dist/components/alert-dialog.js.map +0 -1
- package/dist/components/alert.esm.js +0 -64
- package/dist/components/alert.esm.js.map +0 -1
- package/dist/components/alert.js.map +0 -1
- package/dist/components/avatar.esm.js +0 -42
- package/dist/components/avatar.esm.js.map +0 -1
- package/dist/components/avatar.js.map +0 -1
- package/dist/components/badge.esm.js +0 -27
- package/dist/components/badge.esm.js.map +0 -1
- package/dist/components/badge.js.map +0 -1
- package/dist/components/button.esm.js +0 -48
- package/dist/components/button.esm.js.map +0 -1
- package/dist/components/button.js.map +0 -1
- package/dist/components/calendar.esm.js +0 -5562
- package/dist/components/calendar.esm.js.map +0 -1
- package/dist/components/calendar.js.map +0 -1
- package/dist/components/card.esm.js +0 -62
- package/dist/components/card.esm.js.map +0 -1
- package/dist/components/card.js.map +0 -1
- package/dist/components/carousel.esm.js +0 -101
- package/dist/components/carousel.esm.js.map +0 -1
- package/dist/components/carousel.js.map +0 -1
- package/dist/components/charts.d.ts +0 -17
- package/dist/components/charts.esm.js +0 -48
- package/dist/components/charts.esm.js.map +0 -1
- package/dist/components/charts.js +0 -2
- package/dist/components/charts.js.map +0 -1
- package/dist/components/checkbox.esm.js +0 -32
- package/dist/components/checkbox.esm.js.map +0 -1
- package/dist/components/checkbox.js.map +0 -1
- package/dist/components/collapse.esm.js +0 -50
- package/dist/components/collapse.esm.js.map +0 -1
- package/dist/components/collapse.js.map +0 -1
- package/dist/components/command-menu.esm.js +0 -90
- package/dist/components/command-menu.esm.js.map +0 -1
- package/dist/components/command-menu.js.map +0 -1
- package/dist/components/command.esm.js +0 -425
- package/dist/components/command.esm.js.map +0 -1
- package/dist/components/command.js.map +0 -1
- package/dist/components/confirmation-modal.esm.js +0 -46
- package/dist/components/confirmation-modal.esm.js.map +0 -1
- package/dist/components/confirmation-modal.js.map +0 -1
- package/dist/components/context-menu.esm.js +0 -186
- package/dist/components/context-menu.esm.js.map +0 -1
- package/dist/components/context-menu.js.map +0 -1
- package/dist/components/dialog.esm.js +0 -122
- package/dist/components/dialog.esm.js.map +0 -1
- package/dist/components/dialog.js.map +0 -1
- package/dist/components/dropdown-menu.esm.js +0 -49
- package/dist/components/dropdown-menu.esm.js.map +0 -1
- package/dist/components/dropdown-menu.js.map +0 -1
- package/dist/components/dropzone.esm.js +0 -45
- package/dist/components/dropzone.esm.js.map +0 -1
- package/dist/components/dropzone.js.map +0 -1
- package/dist/components/image-cropper-modal.esm.js +0 -251
- package/dist/components/image-cropper-modal.esm.js.map +0 -1
- package/dist/components/image-cropper-modal.js.map +0 -1
- package/dist/components/image-cropper.esm.js +0 -131
- package/dist/components/image-cropper.esm.js.map +0 -1
- package/dist/components/image-cropper.js.map +0 -1
- package/dist/components/input.esm.js +0 -22
- package/dist/components/input.esm.js.map +0 -1
- package/dist/components/input.js.map +0 -1
- package/dist/components/label.esm.js +0 -20
- package/dist/components/label.esm.js.map +0 -1
- package/dist/components/label.js.map +0 -1
- package/dist/components/loader.esm.js +0 -70
- package/dist/components/loader.esm.js.map +0 -1
- package/dist/components/loader.js.map +0 -1
- package/dist/components/loading-placeholder.esm.js +0 -25
- package/dist/components/loading-placeholder.esm.js.map +0 -1
- package/dist/components/loading-placeholder.js.map +0 -1
- package/dist/components/markdown.d.ts +0 -2
- package/dist/components/markdown.esm.js +0 -12066
- package/dist/components/markdown.esm.js.map +0 -1
- package/dist/components/markdown.js +0 -18
- package/dist/components/markdown.js.map +0 -1
- package/dist/components/mention.esm.js +0 -154
- package/dist/components/mention.esm.js.map +0 -1
- package/dist/components/mention.js.map +0 -1
- package/dist/components/modal.esm.js +0 -136
- package/dist/components/modal.esm.js.map +0 -1
- package/dist/components/modal.js.map +0 -1
- package/dist/components/monaco-editor.d.ts +0 -2
- package/dist/components/monaco-editor.esm.js +0 -9
- package/dist/components/monaco-editor.esm.js.map +0 -1
- package/dist/components/monaco-editor.js +0 -2
- package/dist/components/monaco-editor.js.map +0 -1
- package/dist/components/notification.esm.js +0 -26
- package/dist/components/notification.esm.js.map +0 -1
- package/dist/components/notification.js.map +0 -1
- package/dist/components/popover.esm.js +0 -24
- package/dist/components/popover.esm.js.map +0 -1
- package/dist/components/popover.js.map +0 -1
- package/dist/components/progress.esm.js +0 -35
- package/dist/components/progress.esm.js.map +0 -1
- package/dist/components/progress.js.map +0 -1
- package/dist/components/radio-group.esm.js +0 -48
- package/dist/components/radio-group.esm.js.map +0 -1
- package/dist/components/radio-group.js.map +0 -1
- package/dist/components/scroll-area.esm.js +0 -47
- package/dist/components/scroll-area.esm.js.map +0 -1
- package/dist/components/scroll-area.js.map +0 -1
- package/dist/components/select.esm.js +0 -131
- package/dist/components/select.esm.js.map +0 -1
- package/dist/components/select.js.map +0 -1
- package/dist/components/selection-bar.esm.js +0 -54
- package/dist/components/selection-bar.esm.js.map +0 -1
- package/dist/components/selection-bar.js.map +0 -1
- package/dist/components/separator.esm.js +0 -25
- package/dist/components/separator.esm.js.map +0 -1
- package/dist/components/separator.js.map +0 -1
- package/dist/components/sheet.esm.js +0 -129
- package/dist/components/sheet.esm.js.map +0 -1
- package/dist/components/sheet.js.map +0 -1
- package/dist/components/skeleton.esm.js +0 -18
- package/dist/components/skeleton.esm.js.map +0 -1
- package/dist/components/skeleton.js.map +0 -1
- package/dist/components/slider.esm.js +0 -33
- package/dist/components/slider.esm.js.map +0 -1
- package/dist/components/slider.js.map +0 -1
- package/dist/components/stepper.d.ts +0 -2
- package/dist/components/stepper.esm.js +0 -7
- package/dist/components/stepper.esm.js.map +0 -1
- package/dist/components/stepper.js.map +0 -1
- package/dist/components/switch.esm.js +0 -36
- package/dist/components/switch.esm.js.map +0 -1
- package/dist/components/switch.js.map +0 -1
- package/dist/components/table-empty.esm.js +0 -23
- package/dist/components/table-empty.esm.js.map +0 -1
- package/dist/components/table-empty.js.map +0 -1
- package/dist/components/table-mobile.esm.js +0 -92
- package/dist/components/table-mobile.esm.js.map +0 -1
- package/dist/components/table-mobile.js.map +0 -1
- package/dist/components/table.esm.js +0 -157
- package/dist/components/table.esm.js.map +0 -1
- package/dist/components/table.js.map +0 -1
- package/dist/components/tabs.esm.js +0 -47
- package/dist/components/tabs.esm.js.map +0 -1
- package/dist/components/tabs.js.map +0 -1
- package/dist/components/terminal.esm.js +0 -50
- package/dist/components/terminal.esm.js.map +0 -1
- package/dist/components/terminal.js.map +0 -1
- package/dist/components/textarea.esm.js +0 -21
- package/dist/components/textarea.esm.js.map +0 -1
- package/dist/components/textarea.js.map +0 -1
- package/dist/components/tooltip.esm.js +0 -76
- package/dist/components/tooltip.esm.js.map +0 -1
- package/dist/components/tooltip.js.map +0 -1
- package/dist/components/use-toast.esm.js +0 -65
- package/dist/components/use-toast.esm.js.map +0 -1
- package/dist/components/use-toast.js.map +0 -1
- package/dist/confirmation-modal.d.ts +0 -16
- package/dist/context-menu.d.ts +0 -41
- package/dist/dialog.d.ts +0 -33
- package/dist/dropdown-menu.d.ts +0 -16
- package/dist/dropzone.d.ts +0 -16
- package/dist/image-cropper-modal.d.ts +0 -14
- package/dist/image-cropper.d.ts +0 -15
- package/dist/index-DACAHwoB.js +0 -35
- package/dist/index-DACAHwoB.js.map +0 -1
- package/dist/index-Deooizx8.cjs +0 -2
- package/dist/index-Deooizx8.cjs.map +0 -1
- package/dist/index.esm.js +0 -458
- package/dist/index.esm.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/input.d.ts +0 -8
- package/dist/jsx-runtime-BYECrxsp.cjs +0 -31
- package/dist/jsx-runtime-BYECrxsp.cjs.map +0 -1
- package/dist/jsx-runtime-DGlMoOmv.js +0 -631
- package/dist/jsx-runtime-DGlMoOmv.js.map +0 -1
- package/dist/label.d.ts +0 -6
- package/dist/lib/utils.esm.js +0 -5
- package/dist/lib/utils.esm.js.map +0 -1
- package/dist/lib/utils.js.map +0 -1
- package/dist/loader.d.ts +0 -14
- package/dist/loading-placeholder.d.ts +0 -12
- package/dist/markdown.d.ts +0 -122
- package/dist/mention.d.ts +0 -29
- package/dist/modal.d.ts +0 -28
- package/dist/monaco-editor.d.ts +0 -76
- package/dist/notification.d.ts +0 -9
- package/dist/popover.d.ts +0 -10
- package/dist/progress.d.ts +0 -6
- package/dist/radio-group.d.ts +0 -8
- package/dist/scroll-area.d.ts +0 -8
- package/dist/select.d.ts +0 -31
- package/dist/selection-bar.d.ts +0 -15
- package/dist/separator.d.ts +0 -6
- package/dist/sheet.d.ts +0 -17
- package/dist/skeleton.d.ts +0 -5
- package/dist/slider.d.ts +0 -6
- package/dist/stepper-modal-CPlBpxWy.cjs +0 -2
- package/dist/stepper-modal-CPlBpxWy.cjs.map +0 -1
- package/dist/stepper-modal-SYU9mbXs.js.map +0 -1
- package/dist/stepper.d.ts +0 -75
- package/dist/switch.d.ts +0 -6
- package/dist/table-empty.d.ts +0 -13
- package/dist/table-mobile.d.ts +0 -37
- package/dist/table.d.ts +0 -37
- package/dist/tabs.d.ts +0 -12
- package/dist/terminal.d.ts +0 -47
- package/dist/textarea.d.ts +0 -8
- package/dist/tooltip.d.ts +0 -12
- package/dist/use-toast.d.ts +0 -28
- package/dist/utils-DSKoFOjv.cjs +0 -2
- package/dist/utils-DSKoFOjv.cjs.map +0 -1
- package/dist/utils-qaFjX9_3.js +0 -2279
- package/dist/utils-qaFjX9_3.js.map +0 -1
- 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;"}
|