@definable/ui 0.1.8 → 0.1.10
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/dist/MonacoEditor-COZcVMEj.cjs +8 -0
- package/dist/MonacoEditor-COZcVMEj.cjs.map +1 -0
- package/dist/MonacoEditor-D3QSSKa4.js +295 -0
- package/dist/MonacoEditor-D3QSSKa4.js.map +1 -0
- package/dist/alert.d.ts +7 -0
- package/dist/badge.d.ts +1 -1
- package/dist/command.d.ts +13 -13
- package/dist/components/alert.d.ts +7 -0
- package/dist/components/alert.esm.js +35 -22
- package/dist/components/alert.esm.js.map +1 -1
- package/dist/components/alert.js +1 -1
- package/dist/components/alert.js.map +1 -1
- package/dist/components/badge.d.ts +1 -1
- package/dist/components/command.d.ts +13 -13
- package/dist/components/modal.esm.js +55 -44
- package/dist/components/modal.esm.js.map +1 -1
- package/dist/components/modal.js +1 -1
- package/dist/components/modal.js.map +1 -1
- package/dist/components/monaco-editor.esm.js +6 -292
- package/dist/components/monaco-editor.esm.js.map +1 -1
- package/dist/components/monaco-editor.js +1 -7
- package/dist/components/monaco-editor.js.map +1 -1
- package/dist/components/selection-bar.esm.js +7 -7
- package/dist/components/selection-bar.esm.js.map +1 -1
- package/dist/components/selection-bar.js +1 -1
- package/dist/components/selection-bar.js.map +1 -1
- package/dist/components/stepper.esm.js +4 -211
- package/dist/components/stepper.esm.js.map +1 -1
- package/dist/components/stepper.js +1 -1
- package/dist/components/stepper.js.map +1 -1
- package/dist/index.d.ts +464 -1
- package/dist/index.esm.js +455 -111
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/stepper-modal-CPlBpxWy.cjs +2 -0
- package/dist/stepper-modal-CPlBpxWy.cjs.map +1 -0
- package/dist/stepper-modal-SYU9mbXs.js +214 -0
- package/dist/stepper-modal-SYU9mbXs.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/utils-DSKoFOjv.cjs.map +1 -1
- package/dist/utils-qaFjX9_3.js.map +1 -1
- package/package.json +6 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { j as a } from "../jsx-runtime-DGlMoOmv.js";
|
|
2
|
-
import * as
|
|
3
|
-
import { c as
|
|
4
|
-
import { c as
|
|
5
|
-
|
|
2
|
+
import * as i from "react";
|
|
3
|
+
import { c as p } from "../index-DACAHwoB.js";
|
|
4
|
+
import { c as s } from "../utils-qaFjX9_3.js";
|
|
5
|
+
import { ConfirmationModal as v } from "./confirmation-modal.esm.js";
|
|
6
|
+
const x = p(
|
|
6
7
|
"relative w-full rounded-lg border p-4",
|
|
7
8
|
{
|
|
8
9
|
variants: {
|
|
@@ -15,37 +16,49 @@ const l = d(
|
|
|
15
16
|
variant: "default"
|
|
16
17
|
}
|
|
17
18
|
}
|
|
18
|
-
),
|
|
19
|
+
), g = i.forwardRef(({ className: t, variant: r, isOpen: e, onClose: d, onConfirm: o, title: l, description: n, confirmText: m, cancelText: c, ...f }, u) => e !== void 0 && d && o && l && n ? /* @__PURE__ */ a.jsx(
|
|
20
|
+
v,
|
|
21
|
+
{
|
|
22
|
+
isOpen: e,
|
|
23
|
+
onClose: d,
|
|
24
|
+
onConfirm: o,
|
|
25
|
+
title: l,
|
|
26
|
+
description: n,
|
|
27
|
+
confirmText: m,
|
|
28
|
+
cancelText: c,
|
|
29
|
+
type: r === "destructive" ? "danger" : "warning"
|
|
30
|
+
}
|
|
31
|
+
) : /* @__PURE__ */ a.jsx(
|
|
19
32
|
"div",
|
|
20
33
|
{
|
|
21
|
-
ref:
|
|
34
|
+
ref: u,
|
|
22
35
|
role: "alert",
|
|
23
|
-
className:
|
|
24
|
-
...
|
|
36
|
+
className: s(x({ variant: r }), t),
|
|
37
|
+
...f
|
|
25
38
|
}
|
|
26
39
|
));
|
|
27
|
-
|
|
28
|
-
const
|
|
40
|
+
g.displayName = "Alert";
|
|
41
|
+
const b = i.forwardRef(({ className: t, ...r }, e) => /* @__PURE__ */ a.jsx(
|
|
29
42
|
"h5",
|
|
30
43
|
{
|
|
31
|
-
ref:
|
|
32
|
-
className:
|
|
33
|
-
...
|
|
44
|
+
ref: e,
|
|
45
|
+
className: s("mb-1 font-medium leading-none tracking-tight", t),
|
|
46
|
+
...r
|
|
34
47
|
}
|
|
35
48
|
));
|
|
36
|
-
|
|
37
|
-
const
|
|
49
|
+
b.displayName = "AlertTitle";
|
|
50
|
+
const j = i.forwardRef(({ className: t, ...r }, e) => /* @__PURE__ */ a.jsx(
|
|
38
51
|
"div",
|
|
39
52
|
{
|
|
40
|
-
ref:
|
|
41
|
-
className:
|
|
42
|
-
...
|
|
53
|
+
ref: e,
|
|
54
|
+
className: s("text-sm [&_p]:leading-relaxed", t),
|
|
55
|
+
...r
|
|
43
56
|
}
|
|
44
57
|
));
|
|
45
|
-
|
|
58
|
+
j.displayName = "AlertDescription";
|
|
46
59
|
export {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
60
|
+
g as Alert,
|
|
61
|
+
j as AlertDescription,
|
|
62
|
+
b as AlertTitle
|
|
50
63
|
};
|
|
51
64
|
//# sourceMappingURL=alert.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert.esm.js","sources":["../../src/components/alert.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { cva, VariantProps } from \"class-variance-authority\"\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border p-4\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface AlertProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof alertVariants> {}\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n AlertProps\n>(({ className, variant, ...props }, ref) => (\n <div\n
|
|
1
|
+
{"version":3,"file":"alert.esm.js","sources":["../../src/components/alert.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { cva, VariantProps } from \"class-variance-authority\"\nimport { cn } from \"@/lib/utils\"\nimport { ConfirmationModal } from \"./confirmation-modal\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border p-4\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface AlertProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof alertVariants> {\n // For confirmation dialog functionality\n isOpen?: boolean\n onClose?: () => void\n onConfirm?: () => void\n title?: string\n description?: string\n confirmText?: string\n cancelText?: string\n}\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n AlertProps\n>(({ className, variant, isOpen, onClose, onConfirm, title, description, confirmText, cancelText, ...props }, ref) => {\n // If used as a confirmation dialog\n if (isOpen !== undefined && onClose && onConfirm && title && description) {\n return (\n <ConfirmationModal\n isOpen={isOpen}\n onClose={onClose}\n onConfirm={onConfirm}\n title={title}\n description={description}\n confirmText={confirmText}\n cancelText={cancelText}\n type={variant === \"destructive\" ? \"danger\" : \"warning\"}\n />\n )\n }\n\n // Default static alert behavior\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n )\n})\nAlert.displayName = \"Alert\"\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\n {...props}\n />\n))\nAlertTitle.displayName = \"AlertTitle\"\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\n {...props}\n />\n))\nAlertDescription.displayName = \"AlertDescription\"\n\nexport { Alert, AlertTitle, AlertDescription }"],"names":["alertVariants","cva","Alert","React","className","variant","isOpen","onClose","onConfirm","title","description","confirmText","cancelText","props","ref","jsx","ConfirmationModal","cn","AlertTitle","AlertDescription"],"mappings":";;;;;AAKA,MAAMA,IAAgBC;AAAA,EACpB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,aACE;AAAA,MAAA;AAAA,IACJ;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ,GAeMC,IAAQC,EAAM,WAGlB,CAAC,EAAE,WAAAC,GAAW,SAAAC,GAAS,QAAAC,GAAQ,SAAAC,GAAS,WAAAC,GAAW,OAAAC,GAAO,aAAAC,GAAa,aAAAC,GAAa,YAAAC,GAAY,GAAGC,EAAA,GAASC,MAExGR,MAAW,UAAaC,KAAWC,KAAaC,KAASC,IAEzDK,gBAAAA,EAAAA;AAAAA,EAACC;AAAA,EAAA;AAAA,IACC,QAAAV;AAAA,IACA,SAAAC;AAAA,IACA,WAAAC;AAAA,IACA,OAAAC;AAAA,IACA,aAAAC;AAAA,IACA,aAAAC;AAAA,IACA,YAAAC;AAAA,IACA,MAAMP,MAAY,gBAAgB,WAAW;AAAA,EAAA;AAAA,IAOjDU,gBAAAA,EAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,MAAK;AAAA,IACL,WAAWG,EAAGjB,EAAc,EAAE,SAAAK,EAAA,CAAS,GAAGD,CAAS;AAAA,IAClD,GAAGS;AAAA,EAAA;AAAA,CAGT;AACDX,EAAM,cAAc;AAEpB,MAAMgB,IAAaf,EAAM,WAGvB,CAAC,EAAE,WAAAC,GAAW,GAAGS,EAAA,GAASC,MAC1BC,gBAAAA,EAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,WAAWG,EAAG,gDAAgDb,CAAS;AAAA,IACtE,GAAGS;AAAA,EAAA;AACN,CACD;AACDK,EAAW,cAAc;AAEzB,MAAMC,IAAmBhB,EAAM,WAG7B,CAAC,EAAE,WAAAC,GAAW,GAAGS,EAAA,GAASC,MAC1BC,gBAAAA,EAAAA;AAAAA,EAAC;AAAA,EAAA;AAAA,IACC,KAAAD;AAAA,IACA,WAAWG,EAAG,iCAAiCb,CAAS;AAAA,IACvD,GAAGS;AAAA,EAAA;AACN,CACD;AACDM,EAAiB,cAAc;"}
|
package/dist/components/alert.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("../jsx-runtime-BYECrxsp.cjs"),b=require("react"),j=require("../index-Deooizx8.cjs"),i=require("../utils-DSKoFOjv.cjs"),v=require("./confirmation-modal.js");function R(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const s=R(b),y=j.cva("relative w-full rounded-lg border p-4",{variants:{variant:{default:"bg-background text-foreground",destructive:"border-destructive/50 text-destructive dark:border-destructive"}},defaultVariants:{variant:"default"}}),d=s.forwardRef(({className:e,variant:r,isOpen:t,onClose:n,onConfirm:o,title:l,description:c,confirmText:m,cancelText:p,...x},g)=>t!==void 0&&n&&o&&l&&c?a.jsxRuntimeExports.jsx(v.ConfirmationModal,{isOpen:t,onClose:n,onConfirm:o,title:l,description:c,confirmText:m,cancelText:p,type:r==="destructive"?"danger":"warning"}):a.jsxRuntimeExports.jsx("div",{ref:g,role:"alert",className:i.cn(y({variant:r}),e),...x}));d.displayName="Alert";const u=s.forwardRef(({className:e,...r},t)=>a.jsxRuntimeExports.jsx("h5",{ref:t,className:i.cn("mb-1 font-medium leading-none tracking-tight",e),...r}));u.displayName="AlertTitle";const f=s.forwardRef(({className:e,...r},t)=>a.jsxRuntimeExports.jsx("div",{ref:t,className:i.cn("text-sm [&_p]:leading-relaxed",e),...r}));f.displayName="AlertDescription";exports.Alert=d;exports.AlertDescription=f;exports.AlertTitle=u;
|
|
2
2
|
//# sourceMappingURL=alert.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert.js","sources":["../../src/components/alert.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { cva, VariantProps } from \"class-variance-authority\"\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border p-4\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface AlertProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof alertVariants> {}\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n AlertProps\n>(({ className, variant, ...props }, ref) => (\n <div\n
|
|
1
|
+
{"version":3,"file":"alert.js","sources":["../../src/components/alert.tsx"],"sourcesContent":["import * as React from \"react\"\nimport { cva, VariantProps } from \"class-variance-authority\"\nimport { cn } from \"@/lib/utils\"\nimport { ConfirmationModal } from \"./confirmation-modal\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border p-4\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface AlertProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof alertVariants> {\n // For confirmation dialog functionality\n isOpen?: boolean\n onClose?: () => void\n onConfirm?: () => void\n title?: string\n description?: string\n confirmText?: string\n cancelText?: string\n}\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n AlertProps\n>(({ className, variant, isOpen, onClose, onConfirm, title, description, confirmText, cancelText, ...props }, ref) => {\n // If used as a confirmation dialog\n if (isOpen !== undefined && onClose && onConfirm && title && description) {\n return (\n <ConfirmationModal\n isOpen={isOpen}\n onClose={onClose}\n onConfirm={onConfirm}\n title={title}\n description={description}\n confirmText={confirmText}\n cancelText={cancelText}\n type={variant === \"destructive\" ? \"danger\" : \"warning\"}\n />\n )\n }\n\n // Default static alert behavior\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n )\n})\nAlert.displayName = \"Alert\"\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\n {...props}\n />\n))\nAlertTitle.displayName = \"AlertTitle\"\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\n {...props}\n />\n))\nAlertDescription.displayName = \"AlertDescription\"\n\nexport { Alert, AlertTitle, AlertDescription }"],"names":["alertVariants","cva","Alert","React","className","variant","isOpen","onClose","onConfirm","title","description","confirmText","cancelText","props","ref","jsx","ConfirmationModal","cn","AlertTitle","AlertDescription"],"mappings":"uhBAKMA,EAAgBC,EAAAA,IACpB,wCACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,gCACT,YACE,gEAAA,CACJ,EAEF,gBAAiB,CACf,QAAS,SAAA,CACX,CAEJ,EAeMC,EAAQC,EAAM,WAGlB,CAAC,CAAE,UAAAC,EAAW,QAAAC,EAAS,OAAAC,EAAQ,QAAAC,EAAS,UAAAC,EAAW,MAAAC,EAAO,YAAAC,EAAa,YAAAC,EAAa,WAAAC,EAAY,GAAGC,CAAA,EAASC,IAExGR,IAAW,QAAaC,GAAWC,GAAaC,GAASC,EAEzDK,EAAAA,kBAAAA,IAACC,EAAAA,kBAAA,CACC,OAAAV,EACA,QAAAC,EACA,UAAAC,EACA,MAAAC,EACA,YAAAC,EACA,YAAAC,EACA,WAAAC,EACA,KAAMP,IAAY,cAAgB,SAAW,SAAA,CAAA,EAOjDU,EAAAA,kBAAAA,IAAC,MAAA,CACC,IAAAD,EACA,KAAK,QACL,UAAWG,EAAAA,GAAGjB,EAAc,CAAE,QAAAK,CAAA,CAAS,EAAGD,CAAS,EAClD,GAAGS,CAAA,CAAA,CAGT,EACDX,EAAM,YAAc,QAEpB,MAAMgB,EAAaf,EAAM,WAGvB,CAAC,CAAE,UAAAC,EAAW,GAAGS,CAAA,EAASC,IAC1BC,EAAAA,kBAAAA,IAAC,KAAA,CACC,IAAAD,EACA,UAAWG,EAAAA,GAAG,+CAAgDb,CAAS,EACtE,GAAGS,CAAA,CACN,CACD,EACDK,EAAW,YAAc,aAEzB,MAAMC,EAAmBhB,EAAM,WAG7B,CAAC,CAAE,UAAAC,EAAW,GAAGS,CAAA,EAASC,IAC1BC,EAAAA,kBAAAA,IAAC,MAAA,CACC,IAAAD,EACA,UAAWG,EAAAA,GAAG,gCAAiCb,CAAS,EACvD,GAAGS,CAAA,CACN,CACD,EACDM,EAAiB,YAAc"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { VariantProps } from 'class-variance-authority';
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
declare const badgeVariants: (props?: ({
|
|
4
|
-
variant?: "default" | "
|
|
4
|
+
variant?: "default" | "outline" | "secondary" | "destructive" | null | undefined;
|
|
5
5
|
} & import('class-variance-authority/dist/types').ClassProp) | undefined) => string;
|
|
6
6
|
export interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
|
|
7
7
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
declare const Command: React.ForwardRefExoticComponent<Omit<{
|
|
3
3
|
children?: React.ReactNode;
|
|
4
|
-
} & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.HTMLAttributes<HTMLDivElement
|
|
4
|
+
} & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
5
5
|
ref?: React.Ref<HTMLDivElement>;
|
|
6
6
|
} & {
|
|
7
7
|
asChild?: boolean;
|
|
8
|
-
}, keyof React.HTMLAttributes<HTMLDivElement> | "asChild"
|
|
8
|
+
}, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
|
|
9
9
|
label?: string;
|
|
10
10
|
shouldFilter?: boolean;
|
|
11
11
|
filter?: (value: string, search: string, keywords?: string[]) => number;
|
|
@@ -25,51 +25,51 @@ declare const CommandInput: React.ForwardRefExoticComponent<Omit<Omit<Pick<Pick<
|
|
|
25
25
|
ref?: React.Ref<HTMLInputElement>;
|
|
26
26
|
} & {
|
|
27
27
|
asChild?: boolean;
|
|
28
|
-
}, "
|
|
28
|
+
}, "key" | "asChild" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "onChange" | "type" | "value"> & {
|
|
29
29
|
value?: string;
|
|
30
30
|
onValueChange?: (search: string) => void;
|
|
31
31
|
} & React.RefAttributes<HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
|
|
32
32
|
declare const CommandList: React.ForwardRefExoticComponent<Omit<{
|
|
33
33
|
children?: React.ReactNode;
|
|
34
|
-
} & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.HTMLAttributes<HTMLDivElement
|
|
34
|
+
} & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
35
35
|
ref?: React.Ref<HTMLDivElement>;
|
|
36
36
|
} & {
|
|
37
37
|
asChild?: boolean;
|
|
38
|
-
}, keyof React.HTMLAttributes<HTMLDivElement> | "asChild"
|
|
38
|
+
}, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
|
|
39
39
|
label?: string;
|
|
40
40
|
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
41
41
|
declare const CommandEmpty: React.ForwardRefExoticComponent<Omit<{
|
|
42
42
|
children?: React.ReactNode;
|
|
43
|
-
} & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.HTMLAttributes<HTMLDivElement
|
|
43
|
+
} & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
44
44
|
ref?: React.Ref<HTMLDivElement>;
|
|
45
45
|
} & {
|
|
46
46
|
asChild?: boolean;
|
|
47
|
-
}, keyof React.HTMLAttributes<HTMLDivElement> | "asChild"
|
|
47
|
+
}, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
48
48
|
declare const CommandGroup: React.ForwardRefExoticComponent<Omit<{
|
|
49
49
|
children?: React.ReactNode;
|
|
50
|
-
} & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.HTMLAttributes<HTMLDivElement
|
|
50
|
+
} & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
51
51
|
ref?: React.Ref<HTMLDivElement>;
|
|
52
52
|
} & {
|
|
53
53
|
asChild?: boolean;
|
|
54
|
-
}, keyof React.HTMLAttributes<HTMLDivElement> | "asChild"
|
|
54
|
+
}, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild">, "value" | "heading"> & {
|
|
55
55
|
heading?: React.ReactNode;
|
|
56
56
|
value?: string;
|
|
57
57
|
forceMount?: boolean;
|
|
58
58
|
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
59
|
-
declare const CommandSeparator: React.ForwardRefExoticComponent<Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.HTMLAttributes<HTMLDivElement
|
|
59
|
+
declare const CommandSeparator: React.ForwardRefExoticComponent<Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
60
60
|
ref?: React.Ref<HTMLDivElement>;
|
|
61
61
|
} & {
|
|
62
62
|
asChild?: boolean;
|
|
63
|
-
}, keyof React.HTMLAttributes<HTMLDivElement> | "asChild"
|
|
63
|
+
}, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild"> & {
|
|
64
64
|
alwaysRender?: boolean;
|
|
65
65
|
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
66
66
|
declare const CommandItem: React.ForwardRefExoticComponent<Omit<{
|
|
67
67
|
children?: React.ReactNode;
|
|
68
|
-
} & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, keyof React.HTMLAttributes<HTMLDivElement
|
|
68
|
+
} & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
69
69
|
ref?: React.Ref<HTMLDivElement>;
|
|
70
70
|
} & {
|
|
71
71
|
asChild?: boolean;
|
|
72
|
-
}, keyof React.HTMLAttributes<HTMLDivElement> | "asChild"
|
|
72
|
+
}, "key" | keyof React.HTMLAttributes<HTMLDivElement> | "asChild">, "onSelect" | "disabled" | "value"> & {
|
|
73
73
|
disabled?: boolean;
|
|
74
74
|
onSelect?: (value: string) => void;
|
|
75
75
|
value?: string;
|
|
@@ -1,75 +1,86 @@
|
|
|
1
1
|
import { j as e } from "../jsx-runtime-DGlMoOmv.js";
|
|
2
|
-
import { createPortal as
|
|
3
|
-
import { AnimatePresence as g, motion as
|
|
2
|
+
import { createPortal as w } from "react-dom";
|
|
3
|
+
import { AnimatePresence as g, motion as m } from "framer-motion";
|
|
4
4
|
import { X as N } from "lucide-react";
|
|
5
|
-
import { c as
|
|
6
|
-
import { useCallback as k, useEffect as
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
5
|
+
import { c as s } from "../utils-qaFjX9_3.js";
|
|
6
|
+
import { useCallback as k, useEffect as W } from "react";
|
|
7
|
+
const E = (t) => {
|
|
8
|
+
switch (t) {
|
|
9
|
+
case "sm":
|
|
10
|
+
return { width: "100%", maxWidth: "384px" };
|
|
11
|
+
case "md":
|
|
12
|
+
return { width: "100%", maxWidth: "448px" };
|
|
13
|
+
case "lg":
|
|
14
|
+
return { width: "100%", maxWidth: "512px" };
|
|
15
|
+
case "xl":
|
|
16
|
+
return { width: "100%", maxWidth: "70%" };
|
|
17
|
+
case "2xl":
|
|
18
|
+
return { width: "80%", maxWidth: "1200px" };
|
|
19
|
+
case "3xl":
|
|
20
|
+
return { width: "90%", maxWidth: "1600px" };
|
|
21
|
+
case "full":
|
|
22
|
+
return { width: "100%" };
|
|
23
|
+
default:
|
|
24
|
+
return { width: "100%", maxWidth: "448px" };
|
|
25
|
+
}
|
|
15
26
|
};
|
|
16
|
-
function
|
|
27
|
+
function D({
|
|
17
28
|
isOpen: t,
|
|
18
|
-
onClose:
|
|
19
|
-
title:
|
|
20
|
-
description:
|
|
21
|
-
icon:
|
|
29
|
+
onClose: r,
|
|
30
|
+
title: d,
|
|
31
|
+
description: i,
|
|
32
|
+
icon: a,
|
|
22
33
|
children: o,
|
|
23
|
-
footer:
|
|
34
|
+
footer: l,
|
|
24
35
|
size: x = "md",
|
|
25
36
|
showClose: u = !0,
|
|
26
|
-
className:
|
|
27
|
-
isContentScrollable:
|
|
28
|
-
mainClassName:
|
|
29
|
-
contentClassName:
|
|
30
|
-
header:
|
|
37
|
+
className: h,
|
|
38
|
+
isContentScrollable: f = !0,
|
|
39
|
+
mainClassName: p,
|
|
40
|
+
contentClassName: b,
|
|
41
|
+
header: n,
|
|
31
42
|
zIndexClassName: j = "z-[50]"
|
|
32
43
|
}) {
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
}, [t,
|
|
36
|
-
|
|
37
|
-
const
|
|
44
|
+
const c = k((v) => {
|
|
45
|
+
v.key === "Escape" && t && r();
|
|
46
|
+
}, [t, r]);
|
|
47
|
+
W(() => (document.addEventListener("keydown", c), () => document.removeEventListener("keydown", c)), [c]);
|
|
48
|
+
const y = /* @__PURE__ */ e.jsx(g, { children: t && /* @__PURE__ */ e.jsx("div", { className: s("fixed inset-0 z-50 overflow-hidden", j), children: /* @__PURE__ */ e.jsxs("div", { className: s("min-h-full flex items-center justify-center p-4", p), children: [
|
|
38
49
|
/* @__PURE__ */ e.jsx(
|
|
39
|
-
|
|
50
|
+
m.div,
|
|
40
51
|
{
|
|
41
52
|
initial: { opacity: 0 },
|
|
42
53
|
animate: { opacity: 1 },
|
|
43
54
|
exit: { opacity: 0 },
|
|
44
55
|
className: "fixed inset-0 bg-background/80 backdrop-blur-sm",
|
|
45
|
-
onClick:
|
|
56
|
+
onClick: r
|
|
46
57
|
}
|
|
47
58
|
),
|
|
48
59
|
/* @__PURE__ */ e.jsxs(
|
|
49
|
-
|
|
60
|
+
m.div,
|
|
50
61
|
{
|
|
51
62
|
initial: { opacity: 0, scale: 0.95 },
|
|
52
63
|
animate: { opacity: 1, scale: 1 },
|
|
53
64
|
exit: { opacity: 0, scale: 0.95 },
|
|
54
65
|
transition: { duration: 0.1, ease: "easeOut" },
|
|
55
|
-
className:
|
|
66
|
+
className: s(
|
|
56
67
|
"relative transform rounded-lg bg-background shadow-xl border border-border flex flex-col max-h-[85vh]",
|
|
57
|
-
|
|
58
|
-
f
|
|
68
|
+
h
|
|
59
69
|
),
|
|
70
|
+
style: E(x),
|
|
60
71
|
children: [
|
|
61
|
-
(
|
|
62
|
-
|
|
63
|
-
|
|
72
|
+
(d || i || a || n) && /* @__PURE__ */ e.jsxs("div", { className: "flex-shrink-0 flex items-center justify-between p-2 border-b border-border", children: [
|
|
73
|
+
n || /* @__PURE__ */ e.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
74
|
+
a && /* @__PURE__ */ e.jsx("div", { className: "h-8 w-8 rounded-lg flex items-center justify-center", children: a }),
|
|
64
75
|
/* @__PURE__ */ e.jsxs("div", { children: [
|
|
65
|
-
|
|
66
|
-
|
|
76
|
+
d && /* @__PURE__ */ e.jsx("h2", { className: "text-sm font-small", children: d }),
|
|
77
|
+
i && /* @__PURE__ */ e.jsx("p", { className: "text-sm text-muted-foreground", children: i })
|
|
67
78
|
] })
|
|
68
79
|
] }),
|
|
69
80
|
u && /* @__PURE__ */ e.jsx(
|
|
70
81
|
"button",
|
|
71
82
|
{
|
|
72
|
-
onClick:
|
|
83
|
+
onClick: r,
|
|
73
84
|
className: "p-1.5 rounded-md hover:bg-muted text-muted-foreground",
|
|
74
85
|
children: /* @__PURE__ */ e.jsxs("div", { className: "flex justify-center items-center", children: [
|
|
75
86
|
/* @__PURE__ */ e.jsx(N, { className: "h-4 w-4" }),
|
|
@@ -78,15 +89,15 @@ function M({
|
|
|
78
89
|
}
|
|
79
90
|
)
|
|
80
91
|
] }),
|
|
81
|
-
/* @__PURE__ */ e.jsx("div", { className:
|
|
82
|
-
|
|
92
|
+
/* @__PURE__ */ e.jsx("div", { className: s("flex-1 min-h-0", f ? "overflow-y-auto" : "", b), children: o }),
|
|
93
|
+
l && /* @__PURE__ */ e.jsx("div", { className: "flex-shrink-0 flex items-center justify-end gap-2 px-4 py-3 border-t border-border bg-muted/50", children: l })
|
|
83
94
|
]
|
|
84
95
|
}
|
|
85
96
|
)
|
|
86
97
|
] }) }) });
|
|
87
|
-
return y
|
|
98
|
+
return w(y, document.body);
|
|
88
99
|
}
|
|
89
100
|
export {
|
|
90
|
-
|
|
101
|
+
D as Modal
|
|
91
102
|
};
|
|
92
103
|
//# sourceMappingURL=modal.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modal.esm.js","sources":["../../src/components/modal.tsx"],"sourcesContent":["import { createPortal } from 'react-dom';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { X } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { useEffect, useCallback } from 'react';\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n title?: string;\n description?: string | React.ReactNode;\n icon?: React.ReactNode;\n children: React.ReactNode;\n footer?: React.ReactNode;\n size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full' | '3xl';\n showClose?: boolean;\n className?: string;\n mainClassName?: string;\n isContentScrollable?: boolean;\n header?: React.ReactNode;\n headerClassName?: string;\n contentClassName?: string;\n zIndexClassName?: string;\n}\n\nconst
|
|
1
|
+
{"version":3,"file":"modal.esm.js","sources":["../../src/components/modal.tsx"],"sourcesContent":["import { createPortal } from 'react-dom';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { X } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { useEffect, useCallback } from 'react';\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n title?: string;\n description?: string | React.ReactNode;\n icon?: React.ReactNode;\n children: React.ReactNode;\n footer?: React.ReactNode;\n size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full' | '3xl';\n showClose?: boolean;\n className?: string;\n mainClassName?: string;\n isContentScrollable?: boolean;\n header?: React.ReactNode;\n headerClassName?: string;\n contentClassName?: string;\n zIndexClassName?: string;\n}\n\nconst getSizeStyles = (size: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full' | '3xl') => {\n switch (size) {\n case 'sm':\n return { width: '100%', maxWidth: '384px' }; // max-w-sm equivalent\n case 'md':\n return { width: '100%', maxWidth: '448px' }; // max-w-md equivalent\n case 'lg':\n return { width: '100%', maxWidth: '512px' }; // max-w-lg equivalent\n case 'xl':\n return { width: '100%', maxWidth: '70%' };\n case '2xl':\n return { width: '80%', maxWidth: '1200px' };\n case '3xl':\n return { width: '90%', maxWidth: '1600px' };\n case 'full':\n return { width: '100%' };\n default:\n return { width: '100%', maxWidth: '448px' };\n }\n};\n\nexport function Modal({\n isOpen,\n onClose,\n title,\n description,\n icon,\n children,\n footer,\n size = 'md',\n showClose = true,\n className,\n isContentScrollable = true,\n mainClassName,\n contentClassName,\n header,\n zIndexClassName = 'z-[50]'\n}: ModalProps) {\n const handleKeyDown = useCallback((e: KeyboardEvent) => {\n if (e.key === 'Escape' && isOpen) {\n onClose();\n }\n }, [isOpen, onClose]);\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [handleKeyDown]);\n\n const content = (\n <AnimatePresence>\n {isOpen && (\n <div className={cn(\"fixed inset-0 z-50 overflow-hidden\", zIndexClassName)}>\n <div className={cn(\"min-h-full flex items-center justify-center p-4\", mainClassName)}>\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n className=\"fixed inset-0 bg-background/80 backdrop-blur-sm\"\n onClick={onClose}\n />\n \n <motion.div\n initial={{ opacity: 0, scale: 0.95 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.95 }}\n transition={{ duration: 0.1, ease: \"easeOut\" }}\n className={cn(\n \"relative transform rounded-lg bg-background shadow-xl border border-border flex flex-col max-h-[85vh]\",\n className\n )}\n style={getSizeStyles(size)}\n >\n {/* Header - Fixed */}\n {(title || description || icon || header) && (\n <div className=\"flex-shrink-0 flex items-center justify-between p-2 border-b border-border\">\n \n {header ? header: (\n <div className=\"flex items-center gap-3\">\n {icon && (\n <div className=\"h-8 w-8 rounded-lg flex items-center justify-center\">\n {icon}\n </div>\n )}\n <div>\n {title && <h2 className=\"text-sm font-small\">{title}</h2>}\n {description && <p className=\"text-sm text-muted-foreground\">{description}</p>}\n </div>\n </div>\n )}\n {showClose && (\n <button\n onClick={onClose}\n className=\"p-1.5 rounded-md hover:bg-muted text-muted-foreground\"\n >\n <div className=\"flex justify-center items-center\">\n <X className=\"h-4 w-4\" />\n <kbd className=\"ml-2 text-[10px] text-muted-foreground bg-muted px-1.5 py-0.5 rounded\">\n ESC\n </kbd>\n </div>\n </button>\n )}\n </div>\n )}\n\n {/* Content - Scrollable */}\n <div className={cn(\"flex-1 min-h-0\", isContentScrollable ? 'overflow-y-auto' : '', contentClassName )}>\n {children}\n </div>\n\n {/* Footer - Fixed */}\n {footer && (\n <div className=\"flex-shrink-0 flex items-center justify-end gap-2 px-4 py-3 border-t border-border bg-muted/50\">\n {footer}\n </div>\n )}\n </motion.div>\n </div>\n </div>\n )}\n </AnimatePresence>\n );\n\n return createPortal(content, document.body);\n}"],"names":["getSizeStyles","size","Modal","isOpen","onClose","title","description","icon","children","footer","showClose","className","isContentScrollable","mainClassName","contentClassName","header","zIndexClassName","handleKeyDown","useCallback","e","useEffect","content","jsx","AnimatePresence","cn","jsxs","motion","X","createPortal"],"mappings":";;;;;;AAyBA,MAAMA,IAAgB,CAACC,MAA6D;AAClF,UAAQA,GAAA;AAAA,IACN,KAAK;AACH,aAAO,EAAE,OAAO,QAAQ,UAAU,QAAA;AAAA,IACpC,KAAK;AACH,aAAO,EAAE,OAAO,QAAQ,UAAU,QAAA;AAAA,IACpC,KAAK;AACH,aAAO,EAAE,OAAO,QAAQ,UAAU,QAAA;AAAA,IACpC,KAAK;AACH,aAAO,EAAE,OAAO,QAAQ,UAAU,MAAA;AAAA,IACpC,KAAK;AACH,aAAO,EAAE,OAAO,OAAO,UAAU,SAAA;AAAA,IACnC,KAAK;AACH,aAAO,EAAE,OAAO,OAAO,UAAU,SAAA;AAAA,IACnC,KAAK;AACH,aAAO,EAAE,OAAO,OAAA;AAAA,IAClB;AACE,aAAO,EAAE,OAAO,QAAQ,UAAU,QAAA;AAAA,EAAQ;AAEhD;AAEO,SAASC,EAAM;AAAA,EACpB,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,MAAAR,IAAO;AAAA,EACP,WAAAS,IAAY;AAAA,EACZ,WAAAC;AAAA,EACA,qBAAAC,IAAsB;AAAA,EACtB,eAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,QAAAC;AAAA,EACA,iBAAAC,IAAkB;AACpB,GAAe;AACb,QAAMC,IAAgBC,EAAY,CAACC,MAAqB;AACtD,IAAIA,EAAE,QAAQ,YAAYhB,KACxBC,EAAA;AAAA,EAEJ,GAAG,CAACD,GAAQC,CAAO,CAAC;AAEpB,EAAAgB,EAAU,OACR,SAAS,iBAAiB,WAAWH,CAAa,GAC3C,MAAM,SAAS,oBAAoB,WAAWA,CAAa,IACjE,CAACA,CAAa,CAAC;AAElB,QAAMI,IACJC,gBAAAA,MAACC,GAAA,EACE,UAAApB,KACCmB,gBAAAA,MAAC,SAAI,WAAWE,EAAG,sCAAsCR,CAAe,GACtE,UAAAS,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAWD,EAAG,mDAAmDX,CAAa,GACjF,UAAA;AAAA,IAAAS,gBAAAA,EAAAA;AAAAA,MAACI,EAAO;AAAA,MAAP;AAAA,QACC,SAAS,EAAE,SAAS,EAAA;AAAA,QACpB,SAAS,EAAE,SAAS,EAAA;AAAA,QACpB,MAAM,EAAE,SAAS,EAAA;AAAA,QACjB,WAAU;AAAA,QACV,SAAStB;AAAA,MAAA;AAAA,IAAA;AAAA,IAGXqB,gBAAAA,EAAAA;AAAAA,MAACC,EAAO;AAAA,MAAP;AAAA,QACC,SAAS,EAAE,SAAS,GAAG,OAAO,KAAA;AAAA,QAC9B,SAAS,EAAE,SAAS,GAAG,OAAO,EAAA;AAAA,QAC9B,MAAM,EAAE,SAAS,GAAG,OAAO,KAAA;AAAA,QAC3B,YAAY,EAAE,UAAU,KAAK,MAAM,UAAA;AAAA,QACnC,WAAWF;AAAA,UACT;AAAA,UACAb;AAAA,QAAA;AAAA,QAEF,OAAOX,EAAcC,CAAI;AAAA,QAGvB,UAAA;AAAA,WAAAI,KAASC,KAAeC,KAAQQ,MAChCU,gBAAAA,OAAC,OAAA,EAAI,WAAU,8EAEZ,UAAA;AAAA,YAAAV,KACCU,gBAAAA,OAAC,OAAA,EAAI,WAAU,2BACZ,UAAA;AAAA,cAAAlB,KACCe,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,uDACZ,UAAAf,GACH;AAAA,qCAED,OAAA,EACE,UAAA;AAAA,gBAAAF,KAASiB,gBAAAA,EAAAA,IAAC,MAAA,EAAG,WAAU,sBAAsB,UAAAjB,GAAM;AAAA,gBACnDC,KAAegB,gBAAAA,EAAAA,IAAC,KAAA,EAAE,WAAU,iCAAiC,UAAAhB,EAAA,CAAY;AAAA,cAAA,EAAA,CAC5E;AAAA,YAAA,GACF;AAAA,YAEDI,KACCY,gBAAAA,EAAAA;AAAAA,cAAC;AAAA,cAAA;AAAA,gBACC,SAASlB;AAAA,gBACT,WAAU;AAAA,gBAEV,UAAAqB,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,oCACb,UAAA;AAAA,kBAAAH,gBAAAA,EAAAA,IAACK,GAAA,EAAE,WAAU,UAAA,CAAU;AAAA,kBACvBL,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,yEAAwE,UAAA,MAAA,CAEvF;AAAA,gBAAA,EAAA,CACF;AAAA,cAAA;AAAA,YAAA;AAAA,UACF,GAEJ;AAAA,UAIFA,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAWE,EAAG,kBAAkBZ,IAAsB,oBAAoB,IAAIE,CAAiB,GACjG,UAAAN,EAAA,CACH;AAAA,UAGCC,KACCa,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,kGACZ,UAAAb,EAAA,CACH;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAEJ,EAAA,CACF,GACF,GAEJ;AAGF,SAAOmB,EAAaP,GAAS,SAAS,IAAI;AAC5C;"}
|
package/dist/components/modal.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../jsx-runtime-BYECrxsp.cjs"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../jsx-runtime-BYECrxsp.cjs"),R=require("react-dom"),c=require("framer-motion"),g=require("lucide-react"),r=require("../utils-DSKoFOjv.cjs"),m=require("react"),w=t=>{switch(t){case"sm":return{width:"100%",maxWidth:"384px"};case"md":return{width:"100%",maxWidth:"448px"};case"lg":return{width:"100%",maxWidth:"512px"};case"xl":return{width:"100%",maxWidth:"70%"};case"2xl":return{width:"80%",maxWidth:"1200px"};case"3xl":return{width:"90%",maxWidth:"1600px"};case"full":return{width:"100%"};default:return{width:"100%",maxWidth:"448px"}}};function N({isOpen:t,onClose:s,title:i,description:n,icon:x,children:l,footer:o,size:u="md",showClose:h=!0,className:j,isContentScrollable:p=!0,mainClassName:f,contentClassName:b,header:d,zIndexClassName:y="z-[50]"}){const a=m.useCallback(v=>{v.key==="Escape"&&t&&s()},[t,s]);m.useEffect(()=>(document.addEventListener("keydown",a),()=>document.removeEventListener("keydown",a)),[a]);const E=e.jsxRuntimeExports.jsx(c.AnimatePresence,{children:t&&e.jsxRuntimeExports.jsx("div",{className:r.cn("fixed inset-0 z-50 overflow-hidden",y),children:e.jsxRuntimeExports.jsxs("div",{className:r.cn("min-h-full flex items-center justify-center p-4",f),children:[e.jsxRuntimeExports.jsx(c.motion.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},className:"fixed inset-0 bg-background/80 backdrop-blur-sm",onClick:s}),e.jsxRuntimeExports.jsxs(c.motion.div,{initial:{opacity:0,scale:.95},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.95},transition:{duration:.1,ease:"easeOut"},className:r.cn("relative transform rounded-lg bg-background shadow-xl border border-border flex flex-col max-h-[85vh]",j),style:w(u),children:[(i||n||x||d)&&e.jsxRuntimeExports.jsxs("div",{className:"flex-shrink-0 flex items-center justify-between p-2 border-b border-border",children:[d||e.jsxRuntimeExports.jsxs("div",{className:"flex items-center gap-3",children:[x&&e.jsxRuntimeExports.jsx("div",{className:"h-8 w-8 rounded-lg flex items-center justify-center",children:x}),e.jsxRuntimeExports.jsxs("div",{children:[i&&e.jsxRuntimeExports.jsx("h2",{className:"text-sm font-small",children:i}),n&&e.jsxRuntimeExports.jsx("p",{className:"text-sm text-muted-foreground",children:n})]})]}),h&&e.jsxRuntimeExports.jsx("button",{onClick:s,className:"p-1.5 rounded-md hover:bg-muted text-muted-foreground",children:e.jsxRuntimeExports.jsxs("div",{className:"flex justify-center items-center",children:[e.jsxRuntimeExports.jsx(g.X,{className:"h-4 w-4"}),e.jsxRuntimeExports.jsx("kbd",{className:"ml-2 text-[10px] text-muted-foreground bg-muted px-1.5 py-0.5 rounded",children:"ESC"})]})})]}),e.jsxRuntimeExports.jsx("div",{className:r.cn("flex-1 min-h-0",p?"overflow-y-auto":"",b),children:l}),o&&e.jsxRuntimeExports.jsx("div",{className:"flex-shrink-0 flex items-center justify-end gap-2 px-4 py-3 border-t border-border bg-muted/50",children:o})]})]})})});return R.createPortal(E,document.body)}exports.Modal=N;
|
|
2
2
|
//# sourceMappingURL=modal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modal.js","sources":["../../src/components/modal.tsx"],"sourcesContent":["import { createPortal } from 'react-dom';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { X } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { useEffect, useCallback } from 'react';\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n title?: string;\n description?: string | React.ReactNode;\n icon?: React.ReactNode;\n children: React.ReactNode;\n footer?: React.ReactNode;\n size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full' | '3xl';\n showClose?: boolean;\n className?: string;\n mainClassName?: string;\n isContentScrollable?: boolean;\n header?: React.ReactNode;\n headerClassName?: string;\n contentClassName?: string;\n zIndexClassName?: string;\n}\n\nconst
|
|
1
|
+
{"version":3,"file":"modal.js","sources":["../../src/components/modal.tsx"],"sourcesContent":["import { createPortal } from 'react-dom';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { X } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { useEffect, useCallback } from 'react';\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n title?: string;\n description?: string | React.ReactNode;\n icon?: React.ReactNode;\n children: React.ReactNode;\n footer?: React.ReactNode;\n size?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full' | '3xl';\n showClose?: boolean;\n className?: string;\n mainClassName?: string;\n isContentScrollable?: boolean;\n header?: React.ReactNode;\n headerClassName?: string;\n contentClassName?: string;\n zIndexClassName?: string;\n}\n\nconst getSizeStyles = (size: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full' | '3xl') => {\n switch (size) {\n case 'sm':\n return { width: '100%', maxWidth: '384px' }; // max-w-sm equivalent\n case 'md':\n return { width: '100%', maxWidth: '448px' }; // max-w-md equivalent\n case 'lg':\n return { width: '100%', maxWidth: '512px' }; // max-w-lg equivalent\n case 'xl':\n return { width: '100%', maxWidth: '70%' };\n case '2xl':\n return { width: '80%', maxWidth: '1200px' };\n case '3xl':\n return { width: '90%', maxWidth: '1600px' };\n case 'full':\n return { width: '100%' };\n default:\n return { width: '100%', maxWidth: '448px' };\n }\n};\n\nexport function Modal({\n isOpen,\n onClose,\n title,\n description,\n icon,\n children,\n footer,\n size = 'md',\n showClose = true,\n className,\n isContentScrollable = true,\n mainClassName,\n contentClassName,\n header,\n zIndexClassName = 'z-[50]'\n}: ModalProps) {\n const handleKeyDown = useCallback((e: KeyboardEvent) => {\n if (e.key === 'Escape' && isOpen) {\n onClose();\n }\n }, [isOpen, onClose]);\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [handleKeyDown]);\n\n const content = (\n <AnimatePresence>\n {isOpen && (\n <div className={cn(\"fixed inset-0 z-50 overflow-hidden\", zIndexClassName)}>\n <div className={cn(\"min-h-full flex items-center justify-center p-4\", mainClassName)}>\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n className=\"fixed inset-0 bg-background/80 backdrop-blur-sm\"\n onClick={onClose}\n />\n \n <motion.div\n initial={{ opacity: 0, scale: 0.95 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.95 }}\n transition={{ duration: 0.1, ease: \"easeOut\" }}\n className={cn(\n \"relative transform rounded-lg bg-background shadow-xl border border-border flex flex-col max-h-[85vh]\",\n className\n )}\n style={getSizeStyles(size)}\n >\n {/* Header - Fixed */}\n {(title || description || icon || header) && (\n <div className=\"flex-shrink-0 flex items-center justify-between p-2 border-b border-border\">\n \n {header ? header: (\n <div className=\"flex items-center gap-3\">\n {icon && (\n <div className=\"h-8 w-8 rounded-lg flex items-center justify-center\">\n {icon}\n </div>\n )}\n <div>\n {title && <h2 className=\"text-sm font-small\">{title}</h2>}\n {description && <p className=\"text-sm text-muted-foreground\">{description}</p>}\n </div>\n </div>\n )}\n {showClose && (\n <button\n onClick={onClose}\n className=\"p-1.5 rounded-md hover:bg-muted text-muted-foreground\"\n >\n <div className=\"flex justify-center items-center\">\n <X className=\"h-4 w-4\" />\n <kbd className=\"ml-2 text-[10px] text-muted-foreground bg-muted px-1.5 py-0.5 rounded\">\n ESC\n </kbd>\n </div>\n </button>\n )}\n </div>\n )}\n\n {/* Content - Scrollable */}\n <div className={cn(\"flex-1 min-h-0\", isContentScrollable ? 'overflow-y-auto' : '', contentClassName )}>\n {children}\n </div>\n\n {/* Footer - Fixed */}\n {footer && (\n <div className=\"flex-shrink-0 flex items-center justify-end gap-2 px-4 py-3 border-t border-border bg-muted/50\">\n {footer}\n </div>\n )}\n </motion.div>\n </div>\n </div>\n )}\n </AnimatePresence>\n );\n\n return createPortal(content, document.body);\n}"],"names":["getSizeStyles","size","Modal","isOpen","onClose","title","description","icon","children","footer","showClose","className","isContentScrollable","mainClassName","contentClassName","header","zIndexClassName","handleKeyDown","useCallback","e","useEffect","content","jsx","AnimatePresence","cn","jsxs","motion","X","createPortal"],"mappings":"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"}
|