@sth87/shadcn-design-system 0.0.27 → 0.0.29

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.
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("react/jsx-runtime"),k=require("react"),s=require("../../packages/ui/src/components/context-menu.cjs"),c=require("../../packages/ui/src/lib/utils.cjs"),h=k.forwardRef((x,C)=>{const{onOpenChange:r,modal:o=!1,children:t,trigger:u,content:d,items:l,className:b,contentClassName:j,triggerClassName:i}=x;if(t)return n.jsx(s.ContextMenu,{onOpenChange:r,modal:o,children:t});const a=g=>g.map(e=>{switch(e.type){case"separator":return n.jsx(s.ContextMenuSeparator,{},e.key);case"label":return n.jsx(s.ContextMenuLabel,{inset:e.inset,className:e.className,children:e.label},e.key);case"group":return n.jsxs(s.ContextMenuGroup,{children:[e.label&&n.jsx(s.ContextMenuLabel,{children:e.label}),a(e.children)]},e.key);case"checkbox":return n.jsxs(s.ContextMenuCheckboxItem,{checked:e.checked,disabled:e.disabled,className:e.className,onCheckedChange:e.onCheckedChange,children:[e.icon&&n.jsx("span",{className:"mr-2",children:e.icon}),e.label,e.shortcut&&n.jsx(s.ContextMenuShortcut,{children:e.shortcut})]},e.key);case"radio":return n.jsx(s.ContextMenuRadioGroup,{value:e.value||e.group,children:n.jsxs(s.ContextMenuRadioItem,{value:e.value||e.key,disabled:e.disabled,onClick:e.onClick,className:e.className,children:[e.icon&&n.jsx("span",{className:"mr-2",children:e.icon}),e.label,e.shortcut&&n.jsx(s.ContextMenuShortcut,{children:e.shortcut})]})},e.key);default:return e.children&&e.children.length>0?n.jsxs(s.ContextMenuSub,{children:[n.jsxs(s.ContextMenuSubTrigger,{disabled:e.disabled,className:c.cn(e.disabled?"opacity-50 cursor-not-allowed":"",e.className),children:[e.icon&&n.jsx("span",{className:"mr-2",children:e.icon}),e.label]}),n.jsx(s.ContextMenuSubContent,{children:a(e.children)})]},e.key):n.jsxs(s.ContextMenuItem,{disabled:e.disabled,variant:e.variant,onClick:e.onClick,className:e.className,children:[e.icon&&n.jsx("span",{className:"mr-2",children:e.icon}),e.label,e.shortcut&&n.jsx(s.ContextMenuShortcut,{children:e.shortcut})]},e.key)}}),M=u?n.jsx(s.ContextMenuTrigger,{asChild:!0,className:c.cn(i),children:u}):null,N=d||l?n.jsxs(s.ContextMenuContent,{ref:C,className:c.cn(b,j),children:[d,l&&a(l)]}):null;return n.jsxs(s.ContextMenu,{onOpenChange:r,modal:o,children:[M,N]})});h.displayName="ContextMenu";exports.default=h;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const n=require("react/jsx-runtime"),N=require("react"),s=require("../../packages/ui/src/components/context-menu.cjs"),a=require("../../packages/ui/src/lib/utils.cjs"),h=N.forwardRef((x,C)=>{const{onOpenChange:c,modal:o=!1,children:t,trigger:u,content:d,items:l,className:b,contentClassName:M,triggerClassName:j}=x;if(t)return n.jsx(s.ContextMenu,{onOpenChange:c,modal:o,children:t});const r=k=>k.map(e=>{switch(e.type){case"separator":return n.jsx(s.ContextMenuSeparator,{},e.key);case"label":return n.jsx(s.ContextMenuLabel,{inset:e.inset,className:e.className,children:e.label},e.key);case"group":return n.jsxs(s.ContextMenuGroup,{children:[e.label&&n.jsx(s.ContextMenuLabel,{children:e.label}),r(e.children)]},e.key);case"checkbox":return n.jsxs(s.ContextMenuCheckboxItem,{checked:e.checked,disabled:e.disabled,className:e.className,onCheckedChange:e.onCheckedChange,children:[e.icon,e.label,e.shortcut&&n.jsx(s.ContextMenuShortcut,{children:e.shortcut})]},e.key);case"radio":return n.jsx(s.ContextMenuRadioGroup,{value:e.value||e.group,children:n.jsxs(s.ContextMenuRadioItem,{value:e.value||e.key,disabled:e.disabled,onClick:e.onClick,className:e.className,children:[e.icon,e.label,e.shortcut&&n.jsx(s.ContextMenuShortcut,{children:e.shortcut})]})},e.key);default:return e.children&&e.children.length>0?n.jsxs(s.ContextMenuSub,{children:[n.jsxs(s.ContextMenuSubTrigger,{disabled:e.disabled,className:a.cn(e.disabled?"opacity-50 cursor-not-allowed":"",e.className),children:[e.icon,e.label]}),n.jsx(s.ContextMenuSubContent,{children:r(e.children)})]},e.key):n.jsxs(s.ContextMenuItem,{disabled:e.disabled,variant:e.variant,onClick:e.onClick,className:e.className,children:[e.icon,e.label,e.shortcut&&n.jsx(s.ContextMenuShortcut,{children:e.shortcut})]},e.key)}}),i=u?n.jsx(s.ContextMenuTrigger,{asChild:!0,className:a.cn(j),children:u}):null,g=d||l?n.jsxs(s.ContextMenuContent,{ref:C,className:a.cn(b,M),children:[d,l&&r(l)]}):null;return n.jsxs(s.ContextMenu,{onOpenChange:c,modal:o,children:[i,g]})});h.displayName="ContextMenu";exports.default=h;
2
2
  //# sourceMappingURL=ContextMenu.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenu.cjs","sources":["../../../../src/components/ContextMenu/ContextMenu.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n ContextMenu as SContextMenu,\n ContextMenuTrigger as SContextMenuTrigger,\n ContextMenuContent as SContextMenuContent,\n ContextMenuItem as SContextMenuItem,\n ContextMenuCheckboxItem as SContextMenuCheckboxItem,\n ContextMenuRadioItem as SContextMenuRadioItem,\n ContextMenuRadioGroup as SContextMenuRadioGroup,\n ContextMenuLabel as SContextMenuLabel,\n ContextMenuSeparator as SContextMenuSeparator,\n ContextMenuGroup as SContextMenuGroup,\n ContextMenuSub as SContextMenuSub,\n ContextMenuSubTrigger as SContextMenuSubTrigger,\n ContextMenuSubContent as SContextMenuSubContent,\n ContextMenuShortcut as SContextMenuShortcut,\n} from \"@dsui/ui/components/context-menu\";\nimport { cn } from \"@dsui/ui/lib/utils\";\n\nexport type ContextMenuItem =\n | {\n key: string;\n label?: string;\n icon?: React.ReactNode;\n shortcut?: string;\n children?: ContextMenuItem[];\n type?: \"item\";\n checked?: boolean;\n disabled?: boolean;\n variant?: \"default\" | \"destructive\";\n onClick?: () => void;\n className?: string;\n }\n | {\n key: string;\n type: \"checkbox\";\n label?: string;\n icon?: React.ReactNode;\n shortcut?: string;\n checked?: boolean;\n disabled?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n className?: string;\n }\n | {\n key: string;\n type: \"radio\";\n label?: string;\n icon?: React.ReactNode;\n shortcut?: string;\n group: string;\n value?: string;\n disabled?: boolean;\n onClick?: () => void;\n className?: string;\n }\n | {\n key: string;\n type: \"separator\";\n }\n | {\n key: string;\n type: \"group\";\n label?: string;\n children: ContextMenuItem[];\n disabled?: boolean;\n }\n | {\n key: string;\n type: \"label\";\n label: string;\n inset?: boolean;\n className?: string;\n };\n\nexport interface ContextMenuProps {\n // Core props\n onOpenChange?: (open: boolean) => void;\n modal?: boolean;\n\n // Content\n children?: React.ReactNode;\n trigger?: React.ReactNode;\n content?: React.ReactNode;\n items?: ContextMenuItem[];\n\n // Styling\n className?: string;\n contentClassName?: string;\n triggerClassName?: string;\n}\n\nconst ContextMenu = React.forwardRef<HTMLDivElement, ContextMenuProps>(\n (props, ref) => {\n const {\n onOpenChange,\n modal = false,\n children,\n trigger,\n content,\n items,\n className,\n contentClassName,\n triggerClassName,\n } = props;\n\n // If children are provided (compound pattern), render them directly\n if (children) {\n return (\n <SContextMenu onOpenChange={onOpenChange} modal={modal}>\n {children}\n </SContextMenu>\n );\n }\n\n // Render items if provided\n const renderItems = (menuItems: ContextMenuItem[]): React.ReactNode => {\n return menuItems.map((item) => {\n switch (item.type) {\n case \"separator\":\n return <SContextMenuSeparator key={item.key} />;\n\n case \"label\":\n return (\n <SContextMenuLabel\n key={item.key}\n inset={item.inset}\n className={item.className}\n >\n {item.label}\n </SContextMenuLabel>\n );\n\n case \"group\":\n return (\n <SContextMenuGroup key={item.key}>\n {item.label && (\n <SContextMenuLabel>{item.label}</SContextMenuLabel>\n )}\n {renderItems(item.children)}\n </SContextMenuGroup>\n );\n\n case \"checkbox\":\n return (\n <SContextMenuCheckboxItem\n key={item.key}\n checked={item.checked}\n disabled={item.disabled}\n className={item.className}\n onCheckedChange={item.onCheckedChange}\n >\n {item.icon && <span className=\"mr-2\">{item.icon}</span>}\n {item.label}\n {item.shortcut && (\n <SContextMenuShortcut>{item.shortcut}</SContextMenuShortcut>\n )}\n </SContextMenuCheckboxItem>\n );\n\n case \"radio\":\n return (\n <SContextMenuRadioGroup\n key={item.key}\n value={item.value || item.group}\n >\n <SContextMenuRadioItem\n value={item.value || item.key}\n disabled={item.disabled}\n onClick={item.onClick}\n className={item.className}\n >\n {item.icon && <span className=\"mr-2\">{item.icon}</span>}\n {item.label}\n {item.shortcut && (\n <SContextMenuShortcut>{item.shortcut}</SContextMenuShortcut>\n )}\n </SContextMenuRadioItem>\n </SContextMenuRadioGroup>\n );\n\n default: {\n // item or undefined type\n if (item.children && item.children.length > 0) {\n // Submenu\n return (\n <SContextMenuSub key={item.key}>\n <SContextMenuSubTrigger\n disabled={item.disabled}\n className={cn(\n item.disabled ? \"opacity-50 cursor-not-allowed\" : \"\",\n item.className\n )}\n >\n {item.icon && <span className=\"mr-2\">{item.icon}</span>}\n {item.label}\n </SContextMenuSubTrigger>\n <SContextMenuSubContent>\n {renderItems(item.children)}\n </SContextMenuSubContent>\n </SContextMenuSub>\n );\n } else {\n // Regular item\n return (\n <SContextMenuItem\n key={item.key}\n disabled={item.disabled}\n variant={item.variant}\n onClick={item.onClick}\n className={item.className}\n >\n {item.icon && <span className=\"mr-2\">{item.icon}</span>}\n {item.label}\n {item.shortcut && (\n <SContextMenuShortcut>{item.shortcut}</SContextMenuShortcut>\n )}\n </SContextMenuItem>\n );\n }\n }\n }\n });\n };\n\n // Props-based pattern with trigger and items\n const triggerElement = trigger ? (\n <SContextMenuTrigger asChild className={cn(triggerClassName)}>\n {trigger}\n </SContextMenuTrigger>\n ) : null;\n\n const contentElement =\n content || items ? (\n <SContextMenuContent\n ref={ref}\n className={cn(className, contentClassName)}\n >\n {content}\n {items && renderItems(items)}\n </SContextMenuContent>\n ) : null;\n\n return (\n <SContextMenu onOpenChange={onOpenChange} modal={modal}>\n {triggerElement}\n {contentElement}\n </SContextMenu>\n );\n }\n);\n\nContextMenu.displayName = \"ContextMenu\";\n\nexport default ContextMenu;\n"],"names":["ContextMenu","React","props","ref","onOpenChange","modal","children","trigger","content","items","className","contentClassName","triggerClassName","jsx","SContextMenu","renderItems","menuItems","item","SContextMenuSeparator","SContextMenuLabel","SContextMenuGroup","jsxs","SContextMenuCheckboxItem","SContextMenuShortcut","SContextMenuRadioGroup","SContextMenuRadioItem","SContextMenuSub","SContextMenuSubTrigger","cn","SContextMenuSubContent","SContextMenuItem","triggerElement","SContextMenuTrigger","contentElement","SContextMenuContent"],"mappings":"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"}
1
+ {"version":3,"file":"ContextMenu.cjs","sources":["../../../../src/components/ContextMenu/ContextMenu.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n ContextMenu as SContextMenu,\n ContextMenuTrigger as SContextMenuTrigger,\n ContextMenuContent as SContextMenuContent,\n ContextMenuItem as SContextMenuItem,\n ContextMenuCheckboxItem as SContextMenuCheckboxItem,\n ContextMenuRadioItem as SContextMenuRadioItem,\n ContextMenuRadioGroup as SContextMenuRadioGroup,\n ContextMenuLabel as SContextMenuLabel,\n ContextMenuSeparator as SContextMenuSeparator,\n ContextMenuGroup as SContextMenuGroup,\n ContextMenuSub as SContextMenuSub,\n ContextMenuSubTrigger as SContextMenuSubTrigger,\n ContextMenuSubContent as SContextMenuSubContent,\n ContextMenuShortcut as SContextMenuShortcut,\n} from \"@dsui/ui/components/context-menu\";\nimport { cn } from \"@dsui/ui/lib/utils\";\n\nexport type ContextMenuItem =\n | {\n key: string;\n label?: string;\n icon?: React.ReactNode;\n shortcut?: string;\n children?: ContextMenuItem[];\n type?: \"item\";\n checked?: boolean;\n disabled?: boolean;\n variant?: \"default\" | \"destructive\";\n onClick?: () => void;\n className?: string;\n }\n | {\n key: string;\n type: \"checkbox\";\n label?: string;\n icon?: React.ReactNode;\n shortcut?: string;\n checked?: boolean;\n disabled?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n className?: string;\n }\n | {\n key: string;\n type: \"radio\";\n label?: string;\n icon?: React.ReactNode;\n shortcut?: string;\n group: string;\n value?: string;\n disabled?: boolean;\n onClick?: () => void;\n className?: string;\n }\n | {\n key: string;\n type: \"separator\";\n }\n | {\n key: string;\n type: \"group\";\n label?: string;\n children: ContextMenuItem[];\n disabled?: boolean;\n }\n | {\n key: string;\n type: \"label\";\n label: string;\n inset?: boolean;\n className?: string;\n };\n\nexport interface ContextMenuProps {\n // Core props\n onOpenChange?: (open: boolean) => void;\n modal?: boolean;\n\n // Content\n children?: React.ReactNode;\n trigger?: React.ReactNode;\n content?: React.ReactNode;\n items?: ContextMenuItem[];\n\n // Styling\n className?: string;\n contentClassName?: string;\n triggerClassName?: string;\n}\n\nconst ContextMenu = React.forwardRef<HTMLDivElement, ContextMenuProps>(\n (props, ref) => {\n const {\n onOpenChange,\n modal = false,\n children,\n trigger,\n content,\n items,\n className,\n contentClassName,\n triggerClassName,\n } = props;\n\n // If children are provided (compound pattern), render them directly\n if (children) {\n return (\n <SContextMenu onOpenChange={onOpenChange} modal={modal}>\n {children}\n </SContextMenu>\n );\n }\n\n // Render items if provided\n const renderItems = (menuItems: ContextMenuItem[]): React.ReactNode => {\n return menuItems.map((item) => {\n switch (item.type) {\n case \"separator\":\n return <SContextMenuSeparator key={item.key} />;\n\n case \"label\":\n return (\n <SContextMenuLabel\n key={item.key}\n inset={item.inset}\n className={item.className}\n >\n {item.label}\n </SContextMenuLabel>\n );\n\n case \"group\":\n return (\n <SContextMenuGroup key={item.key}>\n {item.label && (\n <SContextMenuLabel>{item.label}</SContextMenuLabel>\n )}\n {renderItems(item.children)}\n </SContextMenuGroup>\n );\n\n case \"checkbox\":\n return (\n <SContextMenuCheckboxItem\n key={item.key}\n checked={item.checked}\n disabled={item.disabled}\n className={item.className}\n onCheckedChange={item.onCheckedChange}\n >\n {item.icon}\n {item.label}\n {item.shortcut && (\n <SContextMenuShortcut>{item.shortcut}</SContextMenuShortcut>\n )}\n </SContextMenuCheckboxItem>\n );\n\n case \"radio\":\n return (\n <SContextMenuRadioGroup\n key={item.key}\n value={item.value || item.group}\n >\n <SContextMenuRadioItem\n value={item.value || item.key}\n disabled={item.disabled}\n onClick={item.onClick}\n className={item.className}\n >\n {item.icon}\n {item.label}\n {item.shortcut && (\n <SContextMenuShortcut>{item.shortcut}</SContextMenuShortcut>\n )}\n </SContextMenuRadioItem>\n </SContextMenuRadioGroup>\n );\n\n default: {\n // item or undefined type\n if (item.children && item.children.length > 0) {\n // Submenu\n return (\n <SContextMenuSub key={item.key}>\n <SContextMenuSubTrigger\n disabled={item.disabled}\n className={cn(\n item.disabled ? \"opacity-50 cursor-not-allowed\" : \"\",\n item.className\n )}\n >\n {item.icon}\n {item.label}\n </SContextMenuSubTrigger>\n <SContextMenuSubContent>\n {renderItems(item.children)}\n </SContextMenuSubContent>\n </SContextMenuSub>\n );\n } else {\n // Regular item\n return (\n <SContextMenuItem\n key={item.key}\n disabled={item.disabled}\n variant={item.variant}\n onClick={item.onClick}\n className={item.className}\n >\n {item.icon}\n {item.label}\n {item.shortcut && (\n <SContextMenuShortcut>{item.shortcut}</SContextMenuShortcut>\n )}\n </SContextMenuItem>\n );\n }\n }\n }\n });\n };\n\n // Props-based pattern with trigger and items\n const triggerElement = trigger ? (\n <SContextMenuTrigger asChild className={cn(triggerClassName)}>\n {trigger}\n </SContextMenuTrigger>\n ) : null;\n\n const contentElement =\n content || items ? (\n <SContextMenuContent\n ref={ref}\n className={cn(className, contentClassName)}\n >\n {content}\n {items && renderItems(items)}\n </SContextMenuContent>\n ) : null;\n\n return (\n <SContextMenu onOpenChange={onOpenChange} modal={modal}>\n {triggerElement}\n {contentElement}\n </SContextMenu>\n );\n }\n);\n\nContextMenu.displayName = \"ContextMenu\";\n\nexport default ContextMenu;\n"],"names":["ContextMenu","React","props","ref","onOpenChange","modal","children","trigger","content","items","className","contentClassName","triggerClassName","jsx","SContextMenu","renderItems","menuItems","item","SContextMenuSeparator","SContextMenuLabel","SContextMenuGroup","jsxs","SContextMenuCheckboxItem","SContextMenuShortcut","SContextMenuRadioGroup","SContextMenuRadioItem","SContextMenuSub","SContextMenuSubTrigger","cn","SContextMenuSubContent","SContextMenuItem","triggerElement","SContextMenuTrigger","contentElement","SContextMenuContent"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),b=require("react"),s=require("../../packages/ui/src/components/dialog.cjs"),c=require("../../packages/ui/src/components/alert-dialog.cjs"),I=require("../../packages/ui/src/components/scroll-area.cjs"),t=require("../../packages/ui/src/lib/utils.cjs"),W=require("../../utils/animations.cjs"),y=require("lucide-react"),S=require("../Button/Button.cjs"),X={dialog:null,confirm:e.jsx("div",{className:"size-12 flex items-center justify-center rounded-full bg-success/10 mx-auto mb-4",children:e.jsx(y.CheckCircle2,{className:"size-6 text-success"})}),alert:e.jsx("div",{className:"size-12 flex items-center justify-center rounded-full bg-error/10 mx-auto mb-4",children:e.jsx(y.AlertCircle,{className:"size-5 text-error"})}),info:e.jsx("div",{className:"size-12 flex items-center justify-center rounded-full bg-blue-500/10 mx-auto mb-4",children:e.jsx(y.Info,{className:"size-5 text-blue-500"})}),warning:e.jsx("div",{className:"size-12 flex items-center justify-center rounded-full bg-warning/10 mx-auto mb-4",children:e.jsx(y.AlertTriangle,{className:"size-5 text-warning"})})},Y={dialog:"",confirm:"border-blue-500/20",alert:"border-red-500/20",info:"border-blue-500/20",warning:"border-yellow-500/20"},Z={sm:"sm:max-w-sm",md:"sm:max-w-md",lg:"sm:max-w-lg",xl:"sm:max-w-xl","2xl":"sm:max-w-2xl","3xl":"sm:max-w-3xl","4xl":"sm:max-w-4xl",full:"sm:max-w-[95vw] h-[95vh]"},$={center:"!top-[50%] !left-[50%] !translate-x-[-50%] !translate-y-[-50%]",top:"!top-4 !left-[50%] !translate-x-[-50%] !translate-y-0",bottom:"!top-auto !bottom-4 !left-[50%] !translate-x-[-50%] !translate-y-0",left:"!left-4 !top-[50%] !translate-x-0 !translate-y-[-50%]",right:"!left-auto !right-4 !top-[50%] !translate-x-0 !translate-y-[-50%]","top-left":"!top-4 !left-4 !translate-x-0 !translate-y-0","top-right":"!top-4 !left-auto !right-4 !translate-x-0 !translate-y-0","bottom-left":"!top-auto !bottom-4 !left-4 !translate-x-0 !translate-y-0","bottom-right":"!top-auto !bottom-4 !left-auto !right-4 !translate-x-0 !translate-y-0"},E=b.forwardRef((K,v)=>{const{variant:C="dialog",open:w,onOpenChange:A,title:l,description:a,children:u,trigger:f,footer:n,closeOnEsc:z=!0,closeOnOutside:_=!0,showCloseButton:P=!0,position:G="center",size:J="md",fullscreen:k=!1,scrollable:q=!0,stickyHeader:o=!1,stickyFooter:i=!1,animation:m,className:T,contentClassName:B,headerClassName:L,titleClassName:g,descriptionClassName:h,footerClassName:Q,confirmButton:x,cancelButton:d,showIcon:U=!0,backdropFilter:F=0,overlay:O="dark"}=K,V=b.useMemo(()=>m?W.animationClass(m):{className:""},[m]),M=t.cn("!p-0 !gap-0 flex flex-col",Z[k?"full":J],$[G],Y[C],V.className,k?"h-[95vh]":"max-h-[min(600px,80vh)]"),p=t.cn("px-6 pt-6 text-left",!q&&"contents space-y-0",L),j=t.cn("px-6 pb-6 sm:justify-end",!q&&"border-t py-4",Q),N=U?X[C]:null,R=b.useMemo(()=>l||N||a?e.jsxs(c.AlertDialogHeader,{className:t.cn("flex items-center gap-2 py-4",{"border-b":o},p),children:[(l||N)&&e.jsxs(c.AlertDialogTitle,{className:t.cn(g),children:[N,l]}),a&&e.jsx(c.AlertDialogDescription,{className:h,children:a})]}):null,[l,N,a,p,g,h,o]),H=b.useMemo(()=>{const r={variant:"solid",color:"primary",...x,text:x?.text??"Confirm"},D={variant:"outline",...d,text:d?.text??"Cancel"};return n||x||d?e.jsx(c.AlertDialogFooter,{className:t.cn("py-4",{"border-t":i},j),children:n||e.jsxs(e.Fragment,{children:[d&&e.jsx(S.default,{...D,onClick:()=>{D.onClick?.()},children:D.text}),x&&e.jsx(S.default,{...r,onClick:()=>{r.onClick?.()},children:r.text})]})}):null},[n,j,x,d,i]);return C!=="dialog"?e.jsxs(c.AlertDialog,{open:w,onOpenChange:A,children:[f&&e.jsx(c.AlertDialogTrigger,{asChild:!0,children:f}),e.jsxs(c.AlertDialogContent,{ref:v,className:t.cn(T,M),onEscapeKeyDown:r=>!z&&r.preventDefault(),noDefaultAnimation:!!m,backdropFilter:F,overlay:O,children:[o&&R,e.jsxs(I.ScrollArea,{className:"flex max-h-full flex-col overflow-hidden",children:[!o&&R,u&&e.jsx("div",{className:t.cn("px-6 py-4",B),children:u}),!i&&H]}),i&&H]})]}):e.jsxs(s.Dialog,{open:w,onOpenChange:A,children:[f&&e.jsx(s.DialogTrigger,{asChild:!0,children:f}),e.jsxs(s.DialogContent,{ref:v,className:t.cn(T,M),showCloseButton:P,onEscapeKeyDown:r=>!z&&r.preventDefault(),onInteractOutside:r=>!_&&r.preventDefault(),noDefaultAnimation:!!m,backdropFilter:F,overlay:O,children:[o&&(l||a)&&e.jsxs(s.DialogHeader,{className:t.cn({"py-4 border-b":o},p),children:[l&&e.jsx(s.DialogTitle,{className:g,children:l}),a&&e.jsx(s.DialogDescription,{className:h,children:a})]}),e.jsxs(I.ScrollArea,{className:"flex max-h-full flex-col overflow-hidden",children:[!o&&(l||a)&&e.jsxs(s.DialogHeader,{className:t.cn("py-4",p),children:[l&&e.jsx(s.DialogTitle,{className:g,children:l}),a&&e.jsx(s.DialogDescription,{className:h,children:a})]}),u&&e.jsx("div",{className:t.cn("px-6 py-4",B),children:u}),!i&&n&&e.jsx(s.DialogFooter,{className:t.cn("py-4",j),children:n})]}),i&&n&&e.jsx(s.DialogFooter,{className:t.cn({"py-4 border-t":i},j),children:n})]})]})});E.displayName="Dialog";exports.default=E;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),b=require("react"),s=require("../../packages/ui/src/components/dialog.cjs"),c=require("../../packages/ui/src/components/alert-dialog.cjs"),I=require("../../packages/ui/src/components/scroll-area.cjs"),t=require("../../packages/ui/src/lib/utils.cjs"),W=require("../../utils/animations.cjs"),y=require("lucide-react"),S=require("../Button/Button.cjs"),X={dialog:null,confirm:e.jsx("div",{className:"size-12 flex items-center justify-center rounded-full bg-success/10 mx-auto mb-4",children:e.jsx(y.CheckCircle2,{className:"size-6 text-success"})}),alert:e.jsx("div",{className:"size-12 flex items-center justify-center rounded-full bg-error/10 mx-auto mb-4",children:e.jsx(y.AlertCircle,{className:"size-5 text-error"})}),info:e.jsx("div",{className:"size-12 flex items-center justify-center rounded-full bg-blue-500/10 mx-auto mb-4",children:e.jsx(y.Info,{className:"size-5 text-blue-500"})}),warning:e.jsx("div",{className:"size-12 flex items-center justify-center rounded-full bg-warning/10 mx-auto mb-4",children:e.jsx(y.AlertTriangle,{className:"size-5 text-warning"})})},Y={dialog:"",confirm:"border-blue-500/20",alert:"border-red-500/20",info:"border-blue-500/20",warning:"border-yellow-500/20"},Z={sm:"sm:max-w-sm",md:"sm:max-w-md",lg:"sm:max-w-lg",xl:"sm:max-w-xl","2xl":"sm:max-w-2xl max-h-[90vh]","3xl":"sm:max-w-3xl max-h-[90vh]","4xl":"sm:max-w-4xl max-h-[90vh]",full:"sm:max-w-[95vw] h-[98vh]"},$={center:"!top-[50%] !left-[50%] !translate-x-[-50%] !translate-y-[-50%]",top:"!top-4 !left-[50%] !translate-x-[-50%] !translate-y-0",bottom:"!top-auto !bottom-4 !left-[50%] !translate-x-[-50%] !translate-y-0",left:"!left-4 !top-[50%] !translate-x-0 !translate-y-[-50%]",right:"!left-auto !right-4 !top-[50%] !translate-x-0 !translate-y-[-50%]","top-left":"!top-4 !left-4 !translate-x-0 !translate-y-0","top-right":"!top-4 !left-auto !right-4 !translate-x-0 !translate-y-0","bottom-left":"!top-auto !bottom-4 !left-4 !translate-x-0 !translate-y-0","bottom-right":"!top-auto !bottom-4 !left-auto !right-4 !translate-x-0 !translate-y-0"},E=b.forwardRef((K,v)=>{const{variant:C="dialog",open:w,onOpenChange:A,title:l,description:a,children:u,trigger:f,footer:n,closeOnEsc:z=!0,closeOnOutside:_=!0,showCloseButton:P=!0,position:G="center",size:J="md",fullscreen:k=!1,scrollable:q=!0,stickyHeader:o=!1,stickyFooter:i=!1,animation:m,className:T,contentClassName:B,headerClassName:L,titleClassName:h,descriptionClassName:g,footerClassName:Q,confirmButton:x,cancelButton:d,showIcon:U=!0,backdropFilter:F=0,overlay:O="dark"}=K,V=b.useMemo(()=>m?W.animationClass(m):{className:""},[m]),M=t.cn("!p-0 !gap-0 flex flex-col",Z[k?"full":J],$[G],Y[C],V.className,k?"h-[98vh]":"max-h-[90vh]"),p=t.cn("px-6 pt-6 text-left",!q&&"contents space-y-0",L),j=t.cn("px-6 pb-6 sm:justify-end",!q&&"border-t py-4",Q),N=U?X[C]:null,R=b.useMemo(()=>l||N||a?e.jsxs(c.AlertDialogHeader,{className:t.cn("flex items-center gap-2 py-4",{"border-b":o},p),children:[(l||N)&&e.jsxs(c.AlertDialogTitle,{className:t.cn(h),children:[N,l]}),a&&e.jsx(c.AlertDialogDescription,{className:g,children:a})]}):null,[l,N,a,p,h,g,o]),H=b.useMemo(()=>{const r={variant:"solid",color:"primary",...x,text:x?.text??"Confirm"},D={variant:"outline",...d,text:d?.text??"Cancel"};return n||x||d?e.jsx(c.AlertDialogFooter,{className:t.cn("py-4",{"border-t":i},j),children:n||e.jsxs(e.Fragment,{children:[d&&e.jsx(S.default,{...D,onClick:()=>{D.onClick?.()},children:D.text}),x&&e.jsx(S.default,{...r,onClick:()=>{r.onClick?.()},children:r.text})]})}):null},[n,j,x,d,i]);return C!=="dialog"?e.jsxs(c.AlertDialog,{open:w,onOpenChange:A,children:[f&&e.jsx(c.AlertDialogTrigger,{asChild:!0,children:f}),e.jsxs(c.AlertDialogContent,{ref:v,className:t.cn(T,M),onEscapeKeyDown:r=>!z&&r.preventDefault(),noDefaultAnimation:!!m,backdropFilter:F,overlay:O,children:[o&&R,e.jsxs(I.ScrollArea,{className:"flex max-h-full flex-col overflow-hidden",children:[!o&&R,u&&e.jsx("div",{className:t.cn("px-6 py-4",B),children:u}),!i&&H]}),i&&H]})]}):e.jsxs(s.Dialog,{open:w,onOpenChange:A,children:[f&&e.jsx(s.DialogTrigger,{asChild:!0,children:f}),e.jsxs(s.DialogContent,{ref:v,className:t.cn(T,M),showCloseButton:P,onEscapeKeyDown:r=>!z&&r.preventDefault(),onInteractOutside:r=>!_&&r.preventDefault(),noDefaultAnimation:!!m,backdropFilter:F,overlay:O,children:[o&&(l||a)&&e.jsxs(s.DialogHeader,{className:t.cn({"py-4 border-b":o},p),children:[l&&e.jsx(s.DialogTitle,{className:h,children:l}),a&&e.jsx(s.DialogDescription,{className:g,children:a})]}),e.jsxs(I.ScrollArea,{className:"flex max-h-full flex-col overflow-hidden",children:[!o&&(l||a)&&e.jsxs(s.DialogHeader,{className:t.cn("py-4",p),children:[l&&e.jsx(s.DialogTitle,{className:h,children:l}),a&&e.jsx(s.DialogDescription,{className:g,children:a})]}),u&&e.jsx("div",{className:t.cn("px-6 py-4",B),children:u}),!i&&n&&e.jsx(s.DialogFooter,{className:t.cn("py-4",j),children:n})]}),i&&n&&e.jsx(s.DialogFooter,{className:t.cn({"py-4 border-t":i},j),children:n})]})]})});E.displayName="Dialog";exports.default=E;
2
2
  //# sourceMappingURL=Dialog.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.cjs","sources":["../../../../src/components/Dialog/Dialog.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport {\n Dialog as SDialog,\n DialogContent as SDialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@dsui/ui/components/dialog\";\nimport {\n AlertDialog,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"@dsui/ui/components/alert-dialog\";\nimport { ScrollArea } from \"@dsui/ui/components/scroll-area\";\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport type { BasicAnimation } from \"@/types/variables\";\nimport { animationClass } from \"@/utils/animations\";\nimport { AlertTriangle, Info, CheckCircle2, AlertCircle } from \"lucide-react\";\nimport Button, { type ButtonProps } from \"../Button/Button\";\n\nexport type DialogVariant = \"dialog\" | \"confirm\" | \"alert\" | \"info\" | \"warning\";\nexport type DialogSize =\n | \"sm\"\n | \"md\"\n | \"lg\"\n | \"xl\"\n | \"2xl\"\n | \"3xl\"\n | \"4xl\"\n | \"full\";\nexport type DialogPosition =\n | \"center\"\n | \"top\"\n | \"bottom\"\n | \"left\"\n | \"right\"\n | \"top-left\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-right\";\n\nexport interface DialogButtonConfig extends Omit<ButtonProps, \"children\"> {\n text?: React.ReactNode;\n onClick?: () => void;\n}\n\nexport interface DialogProps {\n // Core props\n variant?: DialogVariant;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n\n // Content\n title?: React.ReactNode;\n description?: React.ReactNode;\n children?: React.ReactNode;\n trigger?: React.ReactNode;\n footer?: React.ReactNode;\n\n // Behavior\n closeOnEsc?: boolean;\n closeOnOutside?: boolean;\n showCloseButton?: boolean;\n\n // Layout\n position?: DialogPosition;\n size?: DialogSize;\n fullscreen?: boolean;\n scrollable?: boolean;\n stickyHeader?: boolean;\n stickyFooter?: boolean;\n\n // Animation\n animation?: BasicAnimation;\n\n // Styling\n className?: string;\n contentClassName?: string;\n headerClassName?: string;\n titleClassName?: string;\n descriptionClassName?: string;\n footerClassName?: string;\n overlayClassName?: string;\n\n // Overlay\n backdropFilter?: number;\n overlay?: \"dark\" | \"light\";\n\n // Alert/Confirm buttons\n confirmButton?: DialogButtonConfig;\n cancelButton?: DialogButtonConfig;\n\n // Alert/Confirm specific\n showIcon?: boolean;\n}\n\nconst variantIcons = {\n dialog: null,\n confirm: (\n <div className=\"size-12 flex items-center justify-center rounded-full bg-success/10 mx-auto mb-4\">\n <CheckCircle2 className=\"size-6 text-success\" />\n </div>\n ),\n alert: (\n <div className=\"size-12 flex items-center justify-center rounded-full bg-error/10 mx-auto mb-4\">\n <AlertCircle className=\"size-5 text-error\" />\n </div>\n ),\n info: (\n <div className=\"size-12 flex items-center justify-center rounded-full bg-blue-500/10 mx-auto mb-4\">\n <Info className=\"size-5 text-blue-500\" />\n </div>\n ),\n warning: (\n <div className=\"size-12 flex items-center justify-center rounded-full bg-warning/10 mx-auto mb-4\">\n <AlertTriangle className=\"size-5 text-warning\" />\n </div>\n ),\n};\n\nconst variantColors = {\n dialog: \"\",\n confirm: \"border-blue-500/20\",\n alert: \"border-red-500/20\",\n info: \"border-blue-500/20\",\n warning: \"border-yellow-500/20\",\n};\n\nconst sizeClasses: Record<DialogSize, string> = {\n sm: \"sm:max-w-sm\",\n md: \"sm:max-w-md\",\n lg: \"sm:max-w-lg\",\n xl: \"sm:max-w-xl\",\n \"2xl\": \"sm:max-w-2xl\",\n \"3xl\": \"sm:max-w-3xl\",\n \"4xl\": \"sm:max-w-4xl\",\n full: \"sm:max-w-[95vw] h-[95vh]\",\n};\n\nconst positionClasses: Record<DialogPosition, string> = {\n center: \"!top-[50%] !left-[50%] !translate-x-[-50%] !translate-y-[-50%]\",\n top: \"!top-4 !left-[50%] !translate-x-[-50%] !translate-y-0\",\n bottom: \"!top-auto !bottom-4 !left-[50%] !translate-x-[-50%] !translate-y-0\",\n left: \"!left-4 !top-[50%] !translate-x-0 !translate-y-[-50%]\",\n right: \"!left-auto !right-4 !top-[50%] !translate-x-0 !translate-y-[-50%]\",\n \"top-left\": \"!top-4 !left-4 !translate-x-0 !translate-y-0\",\n \"top-right\": \"!top-4 !left-auto !right-4 !translate-x-0 !translate-y-0\",\n \"bottom-left\": \"!top-auto !bottom-4 !left-4 !translate-x-0 !translate-y-0\",\n \"bottom-right\":\n \"!top-auto !bottom-4 !left-auto !right-4 !translate-x-0 !translate-y-0\",\n};\n\nconst Dialog = React.forwardRef<HTMLDivElement, DialogProps>((props, ref) => {\n const {\n variant = \"dialog\",\n open,\n onOpenChange,\n title,\n description,\n children,\n trigger,\n footer,\n closeOnEsc = true,\n closeOnOutside = true,\n showCloseButton = true,\n position = \"center\",\n size = \"md\",\n fullscreen = false,\n scrollable = true,\n stickyHeader = false,\n stickyFooter = false,\n animation,\n className,\n contentClassName,\n headerClassName,\n titleClassName,\n descriptionClassName,\n footerClassName,\n // overlayClassName, // Not used in current implementation\n confirmButton,\n cancelButton,\n showIcon = true,\n backdropFilter = 0,\n overlay = \"dark\",\n } = props;\n\n const animationResult = useMemo(() => {\n return animation ? animationClass(animation) : { className: \"\" };\n }, [animation]);\n\n const contentClasses = cn(\n // Remove default padding and gap to allow custom header/footer\n \"!p-0 !gap-0 flex flex-col\",\n sizeClasses[fullscreen ? \"full\" : size],\n positionClasses[position],\n variantColors[variant],\n animationResult.className,\n fullscreen ? \"h-[95vh]\" : \"max-h-[min(600px,80vh)]\"\n );\n\n const headerClasses = cn(\n \"px-6 pt-6 text-left\",\n !scrollable && \"contents space-y-0\",\n headerClassName\n );\n\n const footerClasses = cn(\n \"px-6 pb-6 sm:justify-end\",\n !scrollable && \"border-t py-4\",\n footerClassName\n );\n\n const icon = showIcon ? variantIcons[variant] : null;\n\n const headerComponents = useMemo(() => {\n return title || icon || description ? (\n <AlertDialogHeader\n className={cn(\n \"flex items-center gap-2 py-4\",\n { \"border-b\": stickyHeader },\n headerClasses\n )}\n >\n {(title || icon) && (\n <AlertDialogTitle className={cn(titleClassName)}>\n {icon}\n {title}\n </AlertDialogTitle>\n )}\n {description && (\n <AlertDialogDescription className={descriptionClassName}>\n {description}\n </AlertDialogDescription>\n )}\n </AlertDialogHeader>\n ) : null;\n }, [\n title,\n icon,\n description,\n headerClasses,\n titleClassName,\n descriptionClassName,\n stickyHeader,\n ]);\n\n const footerComponents = useMemo(() => {\n // Merge configs with defaults\n const mergedConfirmButton: DialogButtonConfig = {\n variant: \"solid\",\n color: \"primary\",\n ...confirmButton,\n text: confirmButton?.text ?? \"Confirm\",\n };\n\n const mergedCancelButton: DialogButtonConfig = {\n variant: \"outline\",\n ...cancelButton,\n text: cancelButton?.text ?? \"Cancel\",\n };\n\n return footer || confirmButton || cancelButton ? (\n <AlertDialogFooter\n className={cn(\"py-4\", { \"border-t\": stickyFooter }, footerClasses)}\n >\n {footer || (\n <>\n {cancelButton && (\n <Button\n {...mergedCancelButton}\n onClick={() => {\n mergedCancelButton.onClick?.();\n }}\n >\n {mergedCancelButton.text}\n </Button>\n )}\n {confirmButton && (\n <Button\n {...mergedConfirmButton}\n onClick={() => {\n mergedConfirmButton.onClick?.();\n }}\n >\n {mergedConfirmButton.text}\n </Button>\n )}\n </>\n )}\n </AlertDialogFooter>\n ) : null;\n }, [footer, footerClasses, confirmButton, cancelButton, stickyFooter]);\n\n // For alert-style dialogs (confirm, alert, info, warning)\n if (variant !== \"dialog\") {\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n {trigger && <AlertDialogTrigger asChild>{trigger}</AlertDialogTrigger>}\n <AlertDialogContent\n ref={ref}\n className={cn(className, contentClasses)}\n onEscapeKeyDown={(e) => !closeOnEsc && e.preventDefault()}\n noDefaultAnimation={!!animation}\n backdropFilter={backdropFilter}\n overlay={overlay}\n >\n {stickyHeader && headerComponents}\n\n <ScrollArea className=\"flex max-h-full flex-col overflow-hidden\">\n {!stickyHeader && headerComponents}\n {children && (\n <div className={cn(\"px-6 py-4\", contentClassName)}>\n {children}\n </div>\n )}\n {!stickyFooter && footerComponents}\n </ScrollArea>\n\n {stickyFooter && footerComponents}\n </AlertDialogContent>\n </AlertDialog>\n );\n }\n\n // Regular dialog\n return (\n <SDialog open={open} onOpenChange={onOpenChange}>\n {trigger && <DialogTrigger asChild>{trigger}</DialogTrigger>}\n <SDialogContent\n ref={ref}\n className={cn(className, contentClasses)}\n showCloseButton={showCloseButton}\n onEscapeKeyDown={(e) => !closeOnEsc && e.preventDefault()}\n onInteractOutside={(e) => !closeOnOutside && e.preventDefault()}\n noDefaultAnimation={!!animation}\n backdropFilter={backdropFilter}\n overlay={overlay}\n >\n {stickyHeader && (title || description) && (\n <DialogHeader\n className={cn({ \"py-4 border-b\": stickyHeader }, headerClasses)}\n >\n {title && (\n <DialogTitle className={titleClassName}>{title}</DialogTitle>\n )}\n {description && (\n <DialogDescription className={descriptionClassName}>\n {description}\n </DialogDescription>\n )}\n </DialogHeader>\n )}\n <ScrollArea className=\"flex max-h-full flex-col overflow-hidden\">\n {!stickyHeader && (title || description) && (\n <DialogHeader className={cn(\"py-4\", headerClasses)}>\n {title && (\n <DialogTitle className={titleClassName}>{title}</DialogTitle>\n )}\n {description && (\n <DialogDescription className={descriptionClassName}>\n {description}\n </DialogDescription>\n )}\n </DialogHeader>\n )}\n {children && (\n <div className={cn(\"px-6 py-4\", contentClassName)}>{children}</div>\n )}\n {!stickyFooter && footer && (\n <DialogFooter className={cn(\"py-4\", footerClasses)}>\n {footer}\n </DialogFooter>\n )}\n </ScrollArea>\n {stickyFooter && footer && (\n <DialogFooter\n className={cn({ \"py-4 border-t\": stickyFooter }, footerClasses)}\n >\n {footer}\n </DialogFooter>\n )}\n </SDialogContent>\n </SDialog>\n );\n});\n\nDialog.displayName = \"Dialog\";\n\nexport default Dialog;\n"],"names":["variantIcons","jsx","CheckCircle2","AlertCircle","Info","AlertTriangle","variantColors","sizeClasses","positionClasses","Dialog","React","props","ref","variant","open","onOpenChange","title","description","children","trigger","footer","closeOnEsc","closeOnOutside","showCloseButton","position","size","fullscreen","scrollable","stickyHeader","stickyFooter","animation","className","contentClassName","headerClassName","titleClassName","descriptionClassName","footerClassName","confirmButton","cancelButton","showIcon","backdropFilter","overlay","animationResult","useMemo","animationClass","contentClasses","cn","headerClasses","footerClasses","icon","headerComponents","jsxs","AlertDialogHeader","AlertDialogTitle","AlertDialogDescription","footerComponents","mergedConfirmButton","mergedCancelButton","AlertDialogFooter","Fragment","Button","AlertDialog","AlertDialogTrigger","AlertDialogContent","e","ScrollArea","SDialog","DialogTrigger","SDialogContent","DialogHeader","DialogTitle","DialogDescription","DialogFooter"],"mappings":"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"}
1
+ {"version":3,"file":"Dialog.cjs","sources":["../../../../src/components/Dialog/Dialog.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport {\n Dialog as SDialog,\n DialogContent as SDialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@dsui/ui/components/dialog\";\nimport {\n AlertDialog,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogTitle,\n AlertDialogTrigger,\n} from \"@dsui/ui/components/alert-dialog\";\nimport { ScrollArea } from \"@dsui/ui/components/scroll-area\";\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport type { BasicAnimation } from \"@/types/variables\";\nimport { animationClass } from \"@/utils/animations\";\nimport { AlertTriangle, Info, CheckCircle2, AlertCircle } from \"lucide-react\";\nimport Button, { type ButtonProps } from \"../Button/Button\";\n\nexport type DialogVariant = \"dialog\" | \"confirm\" | \"alert\" | \"info\" | \"warning\";\nexport type DialogSize =\n | \"sm\"\n | \"md\"\n | \"lg\"\n | \"xl\"\n | \"2xl\"\n | \"3xl\"\n | \"4xl\"\n | \"full\";\nexport type DialogPosition =\n | \"center\"\n | \"top\"\n | \"bottom\"\n | \"left\"\n | \"right\"\n | \"top-left\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-right\";\n\nexport interface DialogButtonConfig extends Omit<ButtonProps, \"children\"> {\n text?: React.ReactNode;\n onClick?: () => void;\n}\n\nexport interface DialogProps {\n // Core props\n variant?: DialogVariant;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n\n // Content\n title?: React.ReactNode;\n description?: React.ReactNode;\n children?: React.ReactNode;\n trigger?: React.ReactNode;\n footer?: React.ReactNode;\n\n // Behavior\n closeOnEsc?: boolean;\n closeOnOutside?: boolean;\n showCloseButton?: boolean;\n\n // Layout\n position?: DialogPosition;\n size?: DialogSize;\n fullscreen?: boolean;\n scrollable?: boolean;\n stickyHeader?: boolean;\n stickyFooter?: boolean;\n\n // Animation\n animation?: BasicAnimation;\n\n // Styling\n className?: string;\n contentClassName?: string;\n headerClassName?: string;\n titleClassName?: string;\n descriptionClassName?: string;\n footerClassName?: string;\n overlayClassName?: string;\n\n // Overlay\n backdropFilter?: number;\n overlay?: \"dark\" | \"light\";\n\n // Alert/Confirm buttons\n confirmButton?: DialogButtonConfig;\n cancelButton?: DialogButtonConfig;\n\n // Alert/Confirm specific\n showIcon?: boolean;\n}\n\nconst variantIcons = {\n dialog: null,\n confirm: (\n <div className=\"size-12 flex items-center justify-center rounded-full bg-success/10 mx-auto mb-4\">\n <CheckCircle2 className=\"size-6 text-success\" />\n </div>\n ),\n alert: (\n <div className=\"size-12 flex items-center justify-center rounded-full bg-error/10 mx-auto mb-4\">\n <AlertCircle className=\"size-5 text-error\" />\n </div>\n ),\n info: (\n <div className=\"size-12 flex items-center justify-center rounded-full bg-blue-500/10 mx-auto mb-4\">\n <Info className=\"size-5 text-blue-500\" />\n </div>\n ),\n warning: (\n <div className=\"size-12 flex items-center justify-center rounded-full bg-warning/10 mx-auto mb-4\">\n <AlertTriangle className=\"size-5 text-warning\" />\n </div>\n ),\n};\n\nconst variantColors = {\n dialog: \"\",\n confirm: \"border-blue-500/20\",\n alert: \"border-red-500/20\",\n info: \"border-blue-500/20\",\n warning: \"border-yellow-500/20\",\n};\n\nconst sizeClasses: Record<DialogSize, string> = {\n sm: \"sm:max-w-sm\",\n md: \"sm:max-w-md\",\n lg: \"sm:max-w-lg\",\n xl: \"sm:max-w-xl\",\n \"2xl\": \"sm:max-w-2xl max-h-[90vh]\",\n \"3xl\": \"sm:max-w-3xl max-h-[90vh]\",\n \"4xl\": \"sm:max-w-4xl max-h-[90vh]\",\n full: \"sm:max-w-[95vw] h-[98vh]\",\n};\n\nconst positionClasses: Record<DialogPosition, string> = {\n center: \"!top-[50%] !left-[50%] !translate-x-[-50%] !translate-y-[-50%]\",\n top: \"!top-4 !left-[50%] !translate-x-[-50%] !translate-y-0\",\n bottom: \"!top-auto !bottom-4 !left-[50%] !translate-x-[-50%] !translate-y-0\",\n left: \"!left-4 !top-[50%] !translate-x-0 !translate-y-[-50%]\",\n right: \"!left-auto !right-4 !top-[50%] !translate-x-0 !translate-y-[-50%]\",\n \"top-left\": \"!top-4 !left-4 !translate-x-0 !translate-y-0\",\n \"top-right\": \"!top-4 !left-auto !right-4 !translate-x-0 !translate-y-0\",\n \"bottom-left\": \"!top-auto !bottom-4 !left-4 !translate-x-0 !translate-y-0\",\n \"bottom-right\":\n \"!top-auto !bottom-4 !left-auto !right-4 !translate-x-0 !translate-y-0\",\n};\n\nconst Dialog = React.forwardRef<HTMLDivElement, DialogProps>((props, ref) => {\n const {\n variant = \"dialog\",\n open,\n onOpenChange,\n title,\n description,\n children,\n trigger,\n footer,\n closeOnEsc = true,\n closeOnOutside = true,\n showCloseButton = true,\n position = \"center\",\n size = \"md\",\n fullscreen = false,\n scrollable = true,\n stickyHeader = false,\n stickyFooter = false,\n animation,\n className,\n contentClassName,\n headerClassName,\n titleClassName,\n descriptionClassName,\n footerClassName,\n // overlayClassName, // Not used in current implementation\n confirmButton,\n cancelButton,\n showIcon = true,\n backdropFilter = 0,\n overlay = \"dark\",\n } = props;\n\n const animationResult = useMemo(() => {\n return animation ? animationClass(animation) : { className: \"\" };\n }, [animation]);\n\n const contentClasses = cn(\n // Remove default padding and gap to allow custom header/footer\n \"!p-0 !gap-0 flex flex-col\",\n sizeClasses[fullscreen ? \"full\" : size],\n positionClasses[position],\n variantColors[variant],\n animationResult.className,\n fullscreen ? \"h-[98vh]\" : \"max-h-[90vh]\"\n );\n\n const headerClasses = cn(\n \"px-6 pt-6 text-left\",\n !scrollable && \"contents space-y-0\",\n headerClassName\n );\n\n const footerClasses = cn(\n \"px-6 pb-6 sm:justify-end\",\n !scrollable && \"border-t py-4\",\n footerClassName\n );\n\n const icon = showIcon ? variantIcons[variant] : null;\n\n const headerComponents = useMemo(() => {\n return title || icon || description ? (\n <AlertDialogHeader\n className={cn(\n \"flex items-center gap-2 py-4\",\n { \"border-b\": stickyHeader },\n headerClasses\n )}\n >\n {(title || icon) && (\n <AlertDialogTitle className={cn(titleClassName)}>\n {icon}\n {title}\n </AlertDialogTitle>\n )}\n {description && (\n <AlertDialogDescription className={descriptionClassName}>\n {description}\n </AlertDialogDescription>\n )}\n </AlertDialogHeader>\n ) : null;\n }, [\n title,\n icon,\n description,\n headerClasses,\n titleClassName,\n descriptionClassName,\n stickyHeader,\n ]);\n\n const footerComponents = useMemo(() => {\n // Merge configs with defaults\n const mergedConfirmButton: DialogButtonConfig = {\n variant: \"solid\",\n color: \"primary\",\n ...confirmButton,\n text: confirmButton?.text ?? \"Confirm\",\n };\n\n const mergedCancelButton: DialogButtonConfig = {\n variant: \"outline\",\n ...cancelButton,\n text: cancelButton?.text ?? \"Cancel\",\n };\n\n return footer || confirmButton || cancelButton ? (\n <AlertDialogFooter\n className={cn(\"py-4\", { \"border-t\": stickyFooter }, footerClasses)}\n >\n {footer || (\n <>\n {cancelButton && (\n <Button\n {...mergedCancelButton}\n onClick={() => {\n mergedCancelButton.onClick?.();\n }}\n >\n {mergedCancelButton.text}\n </Button>\n )}\n {confirmButton && (\n <Button\n {...mergedConfirmButton}\n onClick={() => {\n mergedConfirmButton.onClick?.();\n }}\n >\n {mergedConfirmButton.text}\n </Button>\n )}\n </>\n )}\n </AlertDialogFooter>\n ) : null;\n }, [footer, footerClasses, confirmButton, cancelButton, stickyFooter]);\n\n // For alert-style dialogs (confirm, alert, info, warning)\n if (variant !== \"dialog\") {\n return (\n <AlertDialog open={open} onOpenChange={onOpenChange}>\n {trigger && <AlertDialogTrigger asChild>{trigger}</AlertDialogTrigger>}\n <AlertDialogContent\n ref={ref}\n className={cn(className, contentClasses)}\n onEscapeKeyDown={(e) => !closeOnEsc && e.preventDefault()}\n noDefaultAnimation={!!animation}\n backdropFilter={backdropFilter}\n overlay={overlay}\n >\n {stickyHeader && headerComponents}\n\n <ScrollArea className=\"flex max-h-full flex-col overflow-hidden\">\n {!stickyHeader && headerComponents}\n {children && (\n <div className={cn(\"px-6 py-4\", contentClassName)}>\n {children}\n </div>\n )}\n {!stickyFooter && footerComponents}\n </ScrollArea>\n\n {stickyFooter && footerComponents}\n </AlertDialogContent>\n </AlertDialog>\n );\n }\n\n // Regular dialog\n return (\n <SDialog open={open} onOpenChange={onOpenChange}>\n {trigger && <DialogTrigger asChild>{trigger}</DialogTrigger>}\n <SDialogContent\n ref={ref}\n className={cn(className, contentClasses)}\n showCloseButton={showCloseButton}\n onEscapeKeyDown={(e) => !closeOnEsc && e.preventDefault()}\n onInteractOutside={(e) => !closeOnOutside && e.preventDefault()}\n noDefaultAnimation={!!animation}\n backdropFilter={backdropFilter}\n overlay={overlay}\n >\n {stickyHeader && (title || description) && (\n <DialogHeader\n className={cn({ \"py-4 border-b\": stickyHeader }, headerClasses)}\n >\n {title && (\n <DialogTitle className={titleClassName}>{title}</DialogTitle>\n )}\n {description && (\n <DialogDescription className={descriptionClassName}>\n {description}\n </DialogDescription>\n )}\n </DialogHeader>\n )}\n <ScrollArea className=\"flex max-h-full flex-col overflow-hidden\">\n {!stickyHeader && (title || description) && (\n <DialogHeader className={cn(\"py-4\", headerClasses)}>\n {title && (\n <DialogTitle className={titleClassName}>{title}</DialogTitle>\n )}\n {description && (\n <DialogDescription className={descriptionClassName}>\n {description}\n </DialogDescription>\n )}\n </DialogHeader>\n )}\n {children && (\n <div className={cn(\"px-6 py-4\", contentClassName)}>{children}</div>\n )}\n {!stickyFooter && footer && (\n <DialogFooter className={cn(\"py-4\", footerClasses)}>\n {footer}\n </DialogFooter>\n )}\n </ScrollArea>\n {stickyFooter && footer && (\n <DialogFooter\n className={cn({ \"py-4 border-t\": stickyFooter }, footerClasses)}\n >\n {footer}\n </DialogFooter>\n )}\n </SDialogContent>\n </SDialog>\n );\n});\n\nDialog.displayName = \"Dialog\";\n\nexport default Dialog;\n"],"names":["variantIcons","jsx","CheckCircle2","AlertCircle","Info","AlertTriangle","variantColors","sizeClasses","positionClasses","Dialog","React","props","ref","variant","open","onOpenChange","title","description","children","trigger","footer","closeOnEsc","closeOnOutside","showCloseButton","position","size","fullscreen","scrollable","stickyHeader","stickyFooter","animation","className","contentClassName","headerClassName","titleClassName","descriptionClassName","footerClassName","confirmButton","cancelButton","showIcon","backdropFilter","overlay","animationResult","useMemo","animationClass","contentClasses","cn","headerClasses","footerClasses","icon","headerComponents","jsxs","AlertDialogHeader","AlertDialogTitle","AlertDialogDescription","footerComponents","mergedConfirmButton","mergedCancelButton","AlertDialogFooter","Fragment","Button","AlertDialog","AlertDialogTrigger","AlertDialogContent","e","ScrollArea","SDialog","DialogTrigger","SDialogContent","DialogHeader","DialogTitle","DialogDescription","DialogFooter"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),u=require("@radix-ui/react-context-menu"),i=require("lucide-react"),s=require("../lib/utils.cjs");function d(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const a in t)if(a!=="default"){const r=Object.getOwnPropertyDescriptor(t,a);Object.defineProperty(n,a,r.get?r:{enumerable:!0,get:()=>t[a]})}}return n.default=t,Object.freeze(n)}const o=d(u);function c({...t}){return e.jsx(o.Root,{"data-slot":"context-menu",...t})}function l({...t}){return e.jsx(o.Trigger,{"data-slot":"context-menu-trigger",...t})}function x({...t}){return e.jsx(o.Group,{"data-slot":"context-menu-group",...t})}function m({...t}){return e.jsx(o.Portal,{"data-slot":"context-menu-portal",...t})}function f({...t}){return e.jsx(o.Sub,{"data-slot":"context-menu-sub",...t})}function g({...t}){return e.jsx(o.RadioGroup,{"data-slot":"context-menu-radio-group",...t})}function p({className:t,inset:n,children:a,...r}){return e.jsxs(o.SubTrigger,{"data-slot":"context-menu-sub-trigger","data-inset":n,className:s.cn("focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...r,children:[a,e.jsx(i.ChevronRightIcon,{className:"ml-auto"})]})}function v({className:t,...n}){return e.jsx(o.SubContent,{"data-slot":"context-menu-sub-content",className:s.cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg",t),...n})}function b({className:t,...n}){return e.jsx(o.Portal,{children:e.jsx(o.Content,{"data-slot":"context-menu-content",updatePositionStrategy:"always",className:s.cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",t),...n})})}function C({className:t,inset:n,variant:a="default",...r}){return e.jsx(o.Item,{"data-slot":"context-menu-item","data-inset":n,"data-variant":a,className:s.cn("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...r})}function h({className:t,children:n,checked:a,...r}){return e.jsxs(o.CheckboxItem,{"data-slot":"context-menu-checkbox-item",className:s.cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),checked:a,...r,children:[e.jsx("span",{className:"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",children:e.jsx(o.ItemIndicator,{children:e.jsx(i.CheckIcon,{className:"size-4"})})}),n]})}function M({className:t,children:n,...a}){return e.jsxs(o.RadioItem,{"data-slot":"context-menu-radio-item",className:s.cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a,children:[e.jsx("span",{className:"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",children:e.jsx(o.ItemIndicator,{children:e.jsx(i.CircleIcon,{className:"size-2 fill-current"})})}),n]})}function j({className:t,inset:n,...a}){return e.jsx(o.Label,{"data-slot":"context-menu-label","data-inset":n,className:s.cn("text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",t),...a})}function y({className:t,...n}){return e.jsx(o.Separator,{"data-slot":"context-menu-separator",className:s.cn("bg-border -mx-1 my-1 h-px",t),...n})}function z({className:t,...n}){return e.jsx("span",{"data-slot":"context-menu-shortcut",className:s.cn("text-muted-foreground ml-auto text-xs tracking-widest",t),...n})}exports.ContextMenu=c;exports.ContextMenuCheckboxItem=h;exports.ContextMenuContent=b;exports.ContextMenuGroup=x;exports.ContextMenuItem=C;exports.ContextMenuLabel=j;exports.ContextMenuPortal=m;exports.ContextMenuRadioGroup=g;exports.ContextMenuRadioItem=M;exports.ContextMenuSeparator=y;exports.ContextMenuShortcut=z;exports.ContextMenuSub=f;exports.ContextMenuSubContent=v;exports.ContextMenuSubTrigger=p;exports.ContextMenuTrigger=l;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),u=require("@radix-ui/react-context-menu"),i=require("lucide-react"),s=require("../lib/utils.cjs");function d(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const a in t)if(a!=="default"){const r=Object.getOwnPropertyDescriptor(t,a);Object.defineProperty(n,a,r.get?r:{enumerable:!0,get:()=>t[a]})}}return n.default=t,Object.freeze(n)}const o=d(u);function c({...t}){return e.jsx(o.Root,{"data-slot":"context-menu",...t})}function l({...t}){return e.jsx(o.Trigger,{"data-slot":"context-menu-trigger",...t})}function x({...t}){return e.jsx(o.Group,{"data-slot":"context-menu-group",...t})}function m({...t}){return e.jsx(o.Portal,{"data-slot":"context-menu-portal",...t})}function f({...t}){return e.jsx(o.Sub,{"data-slot":"context-menu-sub",...t})}function g({...t}){return e.jsx(o.RadioGroup,{"data-slot":"context-menu-radio-group",...t})}function p({className:t,inset:n,children:a,...r}){return e.jsxs(o.SubTrigger,{"data-slot":"context-menu-sub-trigger","data-inset":n,className:s.cn("focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 gap-2",t),...r,children:[a,e.jsx(i.ChevronRightIcon,{className:"ml-auto"})]})}function v({className:t,...n}){return e.jsx(o.SubContent,{"data-slot":"context-menu-sub-content",className:s.cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg",t),...n})}function b({className:t,...n}){return e.jsx(o.Portal,{children:e.jsx(o.Content,{"data-slot":"context-menu-content",updatePositionStrategy:"always",className:s.cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",t),...n})})}function C({className:t,inset:n,variant:a="default",...r}){return e.jsx(o.Item,{"data-slot":"context-menu-item","data-inset":n,"data-variant":a,className:s.cn("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...r})}function h({className:t,children:n,checked:a,...r}){return e.jsxs(o.CheckboxItem,{"data-slot":"context-menu-checkbox-item",className:s.cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),checked:a,...r,children:[e.jsx("span",{className:"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",children:e.jsx(o.ItemIndicator,{children:e.jsx(i.CheckIcon,{className:"size-4"})})}),n]})}function M({className:t,children:n,...a}){return e.jsxs(o.RadioItem,{"data-slot":"context-menu-radio-item",className:s.cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...a,children:[e.jsx("span",{className:"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",children:e.jsx(o.ItemIndicator,{children:e.jsx(i.CircleIcon,{className:"size-2 fill-current"})})}),n]})}function j({className:t,inset:n,...a}){return e.jsx(o.Label,{"data-slot":"context-menu-label","data-inset":n,className:s.cn("text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",t),...a})}function y({className:t,...n}){return e.jsx(o.Separator,{"data-slot":"context-menu-separator",className:s.cn("bg-border -mx-1 my-1 h-px",t),...n})}function z({className:t,...n}){return e.jsx("span",{"data-slot":"context-menu-shortcut",className:s.cn("text-muted-foreground ml-auto text-xs tracking-widest",t),...n})}exports.ContextMenu=c;exports.ContextMenuCheckboxItem=h;exports.ContextMenuContent=b;exports.ContextMenuGroup=x;exports.ContextMenuItem=C;exports.ContextMenuLabel=j;exports.ContextMenuPortal=m;exports.ContextMenuRadioGroup=g;exports.ContextMenuRadioItem=M;exports.ContextMenuSeparator=y;exports.ContextMenuShortcut=z;exports.ContextMenuSub=f;exports.ContextMenuSubContent=v;exports.ContextMenuSubTrigger=p;exports.ContextMenuTrigger=l;
2
2
  //# sourceMappingURL=context-menu.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"context-menu.cjs","sources":["../../../../../../../../packages/ui/src/components/context-menu.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"@dsui/ui/lib/utils\";\n\nfunction ContextMenu({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />;\n}\n\nfunction ContextMenuTrigger({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return (\n <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />\n );\n}\n\nfunction ContextMenuGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n );\n}\n\nfunction ContextMenuPortal({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n );\n}\n\nfunction ContextMenuSub({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />;\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n}\n\nfunction ContextMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n updatePositionStrategy=\"always\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n );\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn(\n \"text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction ContextMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"context-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n};\n"],"names":["ContextMenu","props","ContextMenuPrimitive","ContextMenuTrigger","ContextMenuGroup","ContextMenuPortal","ContextMenuSub","ContextMenuRadioGroup","jsx","ContextMenuSubTrigger","className","inset","children","jsxs","cn","ChevronRightIcon","ContextMenuSubContent","ContextMenuContent","ContextMenuItem","variant","ContextMenuCheckboxItem","checked","CheckIcon","ContextMenuRadioItem","CircleIcon","ContextMenuLabel","ContextMenuSeparator","ContextMenuShortcut"],"mappings":"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"}
1
+ {"version":3,"file":"context-menu.cjs","sources":["../../../../../../../../packages/ui/src/components/context-menu.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"@dsui/ui/lib/utils\";\n\nfunction ContextMenu({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />;\n}\n\nfunction ContextMenuTrigger({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return (\n <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />\n );\n}\n\nfunction ContextMenuGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n );\n}\n\nfunction ContextMenuPortal({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n );\n}\n\nfunction ContextMenuSub({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />;\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 gap-2\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n}\n\nfunction ContextMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n updatePositionStrategy=\"always\"\n className={cn(\n \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n className\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n );\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn(\n \"text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction ContextMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"context-menu-shortcut\"\n className={cn(\n \"text-muted-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n};\n"],"names":["ContextMenu","props","ContextMenuPrimitive","ContextMenuTrigger","ContextMenuGroup","ContextMenuPortal","ContextMenuSub","ContextMenuRadioGroup","jsx","ContextMenuSubTrigger","className","inset","children","jsxs","cn","ChevronRightIcon","ContextMenuSubContent","ContextMenuContent","ContextMenuItem","variant","ContextMenuCheckboxItem","checked","CheckIcon","ContextMenuRadioItem","CircleIcon","ContextMenuLabel","ContextMenuSeparator","ContextMenuShortcut"],"mappings":"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"}