@akshar-technosoft/ui 1.0.18 → 1.0.20
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/components/data/data-table/data-table-toolbar.cjs +1 -1
- package/dist/components/data/data-table/data-table-toolbar.cjs.map +1 -1
- package/dist/components/data/data-table/data-table-toolbar.d.cts +4 -1
- package/dist/components/data/data-table/data-table-toolbar.d.ts +4 -1
- package/dist/components/data/data-table/data-table-toolbar.js +1 -1
- package/dist/components/data/data-table/data-table-toolbar.js.map +1 -1
- package/dist/components/data/data-table/data-table-types.cjs.map +1 -1
- package/dist/components/data/data-table/data-table-types.d.cts +1 -0
- package/dist/components/data/data-table/data-table-types.d.ts +1 -0
- package/dist/components/data/data-table/data-table.cjs +1 -1
- package/dist/components/data/data-table/data-table.cjs.map +1 -1
- package/dist/components/data/data-table/data-table.js +1 -1
- package/dist/components/data/data-table/data-table.js.map +1 -1
- package/dist/components/data/data-table/index.cjs +1 -1
- package/dist/components/data/data-table/index.cjs.map +1 -1
- package/dist/components/data/data-table/index.js +1 -1
- package/dist/components/data/data-table/index.js.map +1 -1
- package/dist/components/layouts/app-content.cjs +1 -1
- package/dist/components/layouts/app-content.cjs.map +1 -1
- package/dist/components/layouts/app-content.js +1 -1
- package/dist/components/layouts/app-content.js.map +1 -1
- package/dist/components/layouts/factories.cjs +1 -1
- package/dist/components/layouts/factories.cjs.map +1 -1
- package/dist/components/layouts/factories.js +1 -1
- package/dist/components/layouts/factories.js.map +1 -1
- package/dist/components/layouts/index.cjs +1 -1
- package/dist/components/layouts/index.cjs.map +1 -1
- package/dist/components/layouts/index.js +1 -1
- package/dist/components/layouts/index.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client"
|
|
2
|
-
"use strict";var Q=Object.create;var P=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames;var Z=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var $=(e,o)=>{for(var s in o)P(e,s,{get:o[s],enumerable:!0})},z=(e,o,s,n)=>{if(o&&typeof o=="object"||typeof o=="function")for(let p of Y(o))!_.call(e,p)&&p!==s&&P(e,p,{get:()=>o[p],enumerable:!(n=U(o,p))||n.enumerable});return e};var j=(e,o,s)=>(s=e!=null?Q(Z(e)):{},z(o||!e||!e.__esModule?P(s,"default",{value:e,enumerable:!0}):s,e)),ee=e=>z(P({},"__esModule",{value:!0}),e);var re={};$(re,{AppContent:()=>ne});module.exports=ee(re);var
|
|
2
|
+
"use strict";var Q=Object.create;var P=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames;var Z=Object.getPrototypeOf,_=Object.prototype.hasOwnProperty;var $=(e,o)=>{for(var s in o)P(e,s,{get:o[s],enumerable:!0})},z=(e,o,s,n)=>{if(o&&typeof o=="object"||typeof o=="function")for(let p of Y(o))!_.call(e,p)&&p!==s&&P(e,p,{get:()=>o[p],enumerable:!(n=U(o,p))||n.enumerable});return e};var j=(e,o,s)=>(s=e!=null?Q(Z(e)):{},z(o||!e||!e.__esModule?P(s,"default",{value:e,enumerable:!0}):s,e)),ee=e=>z(P({},"__esModule",{value:!0}),e);var re={};$(re,{AppContent:()=>ne});module.exports=ee(re);var I=require("clsx"),M=require("tailwind-merge");function a(...e){return(0,M.twMerge)((0,I.clsx)(e))}var c=j(require("react"),1);var v=require("radix-ui"),B=require("lucide-react");var r=require("react/jsx-runtime");function D({...e}){return(0,r.jsx)(v.Dialog.Root,{"data-slot":"sheet",...e})}function O({...e}){return(0,r.jsx)(v.Dialog.Portal,{"data-slot":"sheet-portal",...e})}function te({className:e,...o}){return(0,r.jsx)(v.Dialog.Overlay,{"data-slot":"sheet-overlay",className:a("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",e),...o})}function F({className:e,children:o,side:s="right",...n}){return(0,r.jsxs)(O,{children:[(0,r.jsx)(te,{}),(0,r.jsxs)(v.Dialog.Content,{"data-slot":"sheet-content",className:a("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",s==="right"&&"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",s==="left"&&"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",s==="top"&&"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",s==="bottom"&&"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",e),...n,children:[o,(0,r.jsxs)(v.Dialog.Close,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",children:[(0,r.jsx)(B.XIcon,{className:"size-4"}),(0,r.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}var t=require("react/jsx-runtime"),V=(0,c.createContext)(!1),N={"one-half":["w-1/2","w-1/2"],"one-third":["w-1/3","w-2/3"],"two-third":["w-2/3","w-1/3"],"one-fourth":["w-1/4","w-3/4"],"three-fourth":["w-3/4","w-1/4"],"one-fifth":["w-1/5","w-4/5"],"four-fifth":["w-4/5","w-1/5"]},C={none:"p-0",tight:"p-2",default:"p-4",loose:"p-6"},oe=(e,o)=>{let[s,n]=N[o];return{container:"inset-y-0 z-50 transition-all duration-500 ease-in-out",content:a("h-full bg-background transition-all duration-500 ease-in-out",e==="right"?"border-l":"border-r"),transform:e==="right"?"translate-x-full":"-translate-x-full",transformOpen:"translate-x-0",contentPushClass:e==="right"?n:s,sheetPushClass:e==="right"?s:n}},ae="flex flex-col overflow-hidden rounded-2xl relative",se={default:"bg-background",card:"bg-background shadow-sm border",border:"bg-background border-2",transparent:"bg-transparent"},ne=e=>{let{children:o,className:s,variant:n="default",layout:p="full",header:k,footer:A,headerClassName:q,contentClassName:b,footerClassName:E,parentContainer:i=!1,padding:u=i?"none":"tight"}=e,H=(0,c.useContext)(V),[X,G]=(0,c.useState)(!1),w=c.default.useCallback(f=>(0,t.jsx)("div",{className:a("flex-1 overflow-auto h-full no-scrollbar",i&&"flex",!i&&C[u],b),children:f}),[u,i,b]),J=()=>{switch(p){case"split":{let{splitRatio:f="three-fourth",reverse:m=!1}=e;if(!Array.isArray(o)||o.length!==2)return(0,t.jsx)("div",{className:"flex items-center justify-center h-full text-red-500",children:'Error: AppContent with layout="split" requires exactly 2 children'});let[l,S]=N[f],[g,y]=m?[o[1],o[0]]:[o[0],o[1]],[x,R]=m?[S,l]:[l,S];return(0,t.jsxs)("div",{className:"flex h-full gap-2",children:[(0,t.jsx)("div",{className:a(x,"overflow-auto"),children:w(g)}),(0,t.jsx)("div",{className:a(R,"overflow-auto"),children:w(y)})]})}case"with-sheet":{let{sheetContent:f,sheetWidth:m="four-fifth",sheetSide:l="right",sheetMode:S="container",sheetClassName:g,isSheetOpen:y,onSheetOpenChange:x,disableOverlay:R=!0,showSheetOverlay:K=!0}=e,W=y!==void 0&&x,d=W?y:X,L=W?x:G;if(S==="container"){let h=oe(l,m),T=N[m][0];return R?(0,t.jsxs)("div",{className:a("flex relative flex-1 overflow-hidden",b),children:[(0,t.jsx)("div",{className:a("h-full overflow-auto transition-all duration-500",d?h.contentPushClass:"w-full",d&&"overflow-y-auto overflow-x-hidden"),children:(0,t.jsx)("div",{className:a("h-full",!i&&C[u]),children:o})}),(0,t.jsx)("div",{className:a(h.container,"transition-all duration-500 ease-in-out h-full",T,d&&["left","right"].includes(l)?a(h.sheetPushClass,"overflow-y-auto"):d?h.transformOpen:a(h.transform,"hidden"),"overflow-y-auto"),children:(0,t.jsx)("div",{className:a(h.content,g,"h-full"),children:f})})]}):(0,t.jsxs)("div",{tabIndex:-1,className:a("flex relative flex-1 overflow-hidden",b),children:[(0,t.jsx)("div",{className:a("h-full overflow-auto w-full transition-all duration-500 relative z-10"),children:(0,t.jsx)("div",{className:a("h-full",!i&&C[u]),children:o})}),(0,t.jsxs)("div",{tabIndex:-1,className:a("absolute inset-0 z-20",!d&&"pointer-events-none"),children:[K&&(0,t.jsx)("div",{className:a("absolute inset-0 bg-black/50 transition-opacity duration-500",d?"opacity-100":"opacity-0 pointer-events-none"),onClick:()=>L(!1)}),(0,t.jsx)("div",{className:a(h.container,"transition-all duration-500 backdrop-blur-2xl ease-in-out h-full absolute",T,d?"translate-x-0 opacity-100":a(l==="right"?"translate-x-full":"-translate-x-full","opacity-0 pointer-events-none"),"overflow-y-auto"),style:{[l]:0},tabIndex:-1,children:(0,t.jsx)("div",{className:a(h.content,g,"h-full"),children:f})})]})]})}return(0,t.jsxs)(t.Fragment,{children:[o,(0,t.jsx)(D,{open:d,onOpenChange:L,children:(0,t.jsx)(O,{children:(0,t.jsx)(F,{side:l,className:a("fixed bg-background border sm:max-w-full","transition-all duration-500 ease-in-out",N[m][0],g),children:f})})})]})}default:return w(o)}};return(0,t.jsx)(V.Provider,{value:!0,children:(0,t.jsxs)("div",{className:a(ae,se[n],C[u],H&&"flex-1",i&&"h-full",!i&&"rounded-2xl",s),children:[k&&(0,t.jsx)("div",{className:a("border-b",q,n==="card"&&!i&&"rounded-t-2xl",n==="border"&&"border-b-2",C[u]),children:k}),J(),A&&(0,t.jsx)("div",{className:a("border-t",E,n==="card"&&!i&&"rounded-b-2xl",n==="border"&&"border-t-2",C[u]),children:A})]})})};0&&(module.exports={AppContent});
|
|
3
3
|
//# sourceMappingURL=app-content.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/layouts/app-content.tsx","../../../src/lib/utils.ts","../../../src/components/ui/sheet.tsx"],"sourcesContent":["import { cn } from \"../../lib/utils.js\"\r\nimport React, { useState, createContext, useContext } from \"react\"\r\nimport {\r\n Sheet,\r\n SheetTrigger,\r\n SheetContent,\r\n SheetPortal,\r\n SheetOverlay\r\n} from \"../../components/ui/sheet.jsx\"\r\n\r\nconst AppContentContext = createContext(false)\r\n\r\ntype SplitRatio = \"one-half\" | \"one-third\" | \"two-third\" | \"one-fourth\" | \"three-fourth\" | \"one-fifth\" | \"four-fifth\"\r\n\r\ntype SheetSide = \"right\" | \"bottom\" | \"left\" | \"top\"\r\ntype SheetMode = \"fullscreen\" | \"container\"\r\n\r\ntype BaseAppContentProps = {\r\n children: React.ReactNode\r\n className?: string\r\n variant?: \"default\" | \"card\" | \"border\" | \"transparent\"\r\n header?: React.ReactNode\r\n footer?: React.ReactNode\r\n contentClassName?: string\r\n headerClassName?: string\r\n footerClassName?: string\r\n parentContainer?: boolean\r\n padding?: \"none\" | \"tight\" | \"default\" | \"loose\"\r\n}\r\n\r\ntype FullLayoutProps = BaseAppContentProps & {\r\n layout?: \"full\"\r\n}\r\n\r\ntype SplitLayoutProps = BaseAppContentProps & {\r\n layout: \"split\"\r\n splitRatio?: SplitRatio\r\n reverse?: boolean\r\n}\r\n\r\ntype SheetOptions = {\r\n sheetContent: React.ReactNode\r\n sheetWidth?: SplitRatio\r\n sheetSide?: SheetSide\r\n sheetMode?: SheetMode\r\n onSheetClose?: () => void\r\n sheetClassName?: string\r\n isSheetOpen?: boolean\r\n onSheetOpenChange?: (open: boolean) => void\r\n // sheetTrigger?: React.ReactNode\r\n disableOverlay?: boolean\r\n showSheetOverlay?: boolean\r\n}\r\n\r\ntype WithSheetLayoutProps = BaseAppContentProps & {\r\n layout: \"with-sheet\"\r\n} & SheetOptions\r\n\r\nexport type AppContentProps = FullLayoutProps | SplitLayoutProps | WithSheetLayoutProps\r\n\r\nconst splitRatioClasses: Record<SplitRatio, [string, string]> = {\r\n \"one-half\": [\"w-1/2\", \"w-1/2\"],\r\n \"one-third\": [\"w-1/3\", \"w-2/3\"],\r\n \"two-third\": [\"w-2/3\", \"w-1/3\"],\r\n \"one-fourth\": [\"w-1/4\", \"w-3/4\"],\r\n \"three-fourth\": [\"w-3/4\", \"w-1/4\"],\r\n \"one-fifth\": [\"w-1/5\", \"w-4/5\"],\r\n \"four-fifth\": [\"w-4/5\", \"w-1/5\"],\r\n}\r\n\r\nconst paddingClasses = {\r\n none: \"p-0\",\r\n tight: \"p-2\",\r\n default: \"p-4\",\r\n loose: \"p-6\",\r\n}\r\n\r\nconst getContainerSheetClasses = (side: SheetSide, width: SplitRatio) => {\r\n const [contentWidth, sheetWidth] = splitRatioClasses[width]\r\n\r\n return {\r\n container: \"inset-y-0 z-50 transition-all duration-500 ease-in-out\",\r\n content: cn(\r\n \"h-full bg-background transition-all duration-500 ease-in-out\",\r\n side === \"right\" ? \"border-l\" : \"border-r\"\r\n ),\r\n transform: side === \"right\" ? \"translate-x-full\" : \"-translate-x-full\",\r\n transformOpen: \"translate-x-0\",\r\n contentPushClass: side === \"right\" ? sheetWidth : contentWidth,\r\n sheetPushClass: side === \"right\" ? contentWidth : sheetWidth,\r\n }\r\n}\r\n\r\nconst baseClasses = \"flex flex-col overflow-hidden rounded-2xl relative\"\r\nconst variantClasses = {\r\n default: \"bg-background\",\r\n card: \"bg-background shadow-sm border\",\r\n border: \"bg-background border-2\",\r\n transparent: \"bg-transparent\",\r\n}\r\n\r\nexport const AppContent = (props: AppContentProps) => {\r\n const {\r\n children,\r\n className,\r\n variant = \"default\",\r\n layout = \"full\",\r\n header,\r\n footer,\r\n headerClassName,\r\n contentClassName,\r\n footerClassName,\r\n parentContainer = false,\r\n padding = parentContainer ? \"none\" : \"tight\",\r\n } = props\r\n\r\n const isNested = useContext(AppContentContext)\r\n const [internalSheetOpen, setInternalSheetOpen] = useState(false)\r\n\r\n const contentWrapper = React.useCallback(\r\n (content: React.ReactNode) => (\r\n <div className={cn(\r\n \"flex-1 overflow-auto h-full no-scrollbar\",\r\n parentContainer && \"flex\",\r\n !parentContainer && paddingClasses[padding],\r\n contentClassName\r\n )}>\r\n {content}\r\n </div>\r\n ),\r\n [padding, parentContainer, contentClassName]\r\n )\r\n\r\n const renderContent = () => {\r\n switch (layout) {\r\n case \"split\": {\r\n const { splitRatio = \"three-fourth\", reverse = false } = props as SplitLayoutProps\r\n if (!Array.isArray(children) || children.length !== 2) {\r\n return (\r\n <div className=\"flex items-center justify-center h-full text-red-500\">\r\n Error: AppContent with layout=\"split\" requires exactly 2 children\r\n </div>\r\n )\r\n }\r\n\r\n const [leftClass, rightClass] = splitRatioClasses[splitRatio]\r\n const [firstChild, secondChild] = reverse ? [children[1], children[0]] : [children[0], children[1]]\r\n const [firstClass, secondClass] = reverse ? [rightClass, leftClass] : [leftClass, rightClass]\r\n\r\n return (\r\n <div className=\"flex h-full gap-2\">\r\n <div className={cn(firstClass, \"overflow-auto\")}>\r\n {contentWrapper(firstChild)}\r\n </div>\r\n <div className={cn(secondClass, \"overflow-auto\")}>\r\n {contentWrapper(secondChild)}\r\n </div>\r\n </div>\r\n )\r\n }\r\n\r\n case \"with-sheet\": {\r\n const {\r\n sheetContent,\r\n sheetWidth = \"four-fifth\",\r\n sheetSide = \"right\",\r\n sheetMode = \"container\",\r\n sheetClassName,\r\n isSheetOpen,\r\n onSheetOpenChange,\r\n disableOverlay = true,\r\n showSheetOverlay = true,\r\n } = props as WithSheetLayoutProps;\r\n\r\n const isControlled = isSheetOpen !== undefined && onSheetOpenChange;\r\n const sheetOpen = isControlled ? isSheetOpen : internalSheetOpen;\r\n const setSheetOpen = isControlled ? onSheetOpenChange : setInternalSheetOpen;\r\n\r\n if (sheetMode === \"container\") {\r\n const sheetClasses = getContainerSheetClasses(sheetSide, sheetWidth);\r\n const sheetWidthClass = splitRatioClasses[sheetWidth][0];\r\n\r\n // Separate rendering for overlay mode vs push mode\r\n if (disableOverlay) {\r\n // Push mode - sheet pushes content\r\n return (\r\n <div className={cn(\"flex relative flex-1 overflow-hidden\", contentClassName)}>\r\n {/* Main content area */}\r\n <div className={cn(\r\n \"h-full overflow-auto transition-all duration-500\",\r\n sheetOpen\r\n ? sheetClasses.contentPushClass\r\n : \"w-full\",\r\n sheetOpen && \"overflow-y-auto overflow-x-hidden\"\r\n )}>\r\n <div className={cn(\"h-full\", !parentContainer && paddingClasses[padding])}>\r\n {children}\r\n </div>\r\n </div>\r\n\r\n {/* Container sheet */}\r\n <div\r\n className={cn(\r\n sheetClasses.container,\r\n \"transition-all duration-500 ease-in-out h-full\",\r\n sheetWidthClass,\r\n sheetOpen && [\"left\", \"right\"].includes(sheetSide)\r\n ? cn(sheetClasses.sheetPushClass, \"overflow-y-auto\")\r\n : sheetOpen\r\n ? sheetClasses.transformOpen\r\n : cn(sheetClasses.transform, \"hidden\"),\r\n \"overflow-y-auto\"\r\n )}\r\n >\r\n <div className={cn(sheetClasses.content, sheetClassName, \"h-full\")}>\r\n {sheetContent}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n } else {\r\n // Overlay mode - sheet overlays content with dark background\r\n return (\r\n <div className={cn(\"flex relative flex-1 overflow-hidden\", contentClassName)}>\r\n {/* Main content area (always full width) */}\r\n <div className={cn(\r\n \"h-full overflow-auto w-full transition-all duration-500 relative z-10\"\r\n )}>\r\n <div className={cn(\"h-full\", !parentContainer && paddingClasses[padding])}>\r\n {children}\r\n </div>\r\n </div>\r\n\r\n {/* Container for sheet and overlay */}\r\n <div className={cn(\r\n \"absolute inset-0 z-20\",\r\n !sheetOpen && \"pointer-events-none\"\r\n )}>\r\n {/* Overlay layer */}\r\n {showSheetOverlay && (\r\n <div\r\n className={cn(\r\n \"absolute inset-0 bg-black/50 transition-opacity duration-500\",\r\n sheetOpen ? \"opacity-100\" : \"opacity-0 pointer-events-none\"\r\n )}\r\n onClick={() => setSheetOpen(false)}\r\n />\r\n )}\r\n\r\n {/* Container sheet */}\r\n <div\r\n className={cn(\r\n sheetClasses.container,\r\n \"transition-all duration-500 backdrop-blur-2xl ease-in-out h-full absolute\",\r\n sheetWidthClass,\r\n sheetOpen\r\n ? \"translate-x-0 opacity-100\"\r\n : cn(\r\n sheetSide === \"right\" ? \"translate-x-full\" : \"-translate-x-full\",\r\n \"opacity-0 pointer-events-none\"\r\n ),\r\n \"overflow-y-auto\"\r\n )}\r\n style={{ [sheetSide]: 0 }}\r\n >\r\n <div className={cn(sheetClasses.content, sheetClassName, \"h-full\")}>\r\n {sheetContent}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {children}\r\n <Sheet open={sheetOpen} onOpenChange={setSheetOpen}>\r\n <SheetPortal>\r\n <SheetContent\r\n side={sheetSide}\r\n className={cn(\r\n \"fixed bg-background border sm:max-w-full\",\r\n \"transition-all duration-500 ease-in-out\",\r\n splitRatioClasses[sheetWidth][0],\r\n sheetClassName\r\n )}\r\n >\r\n {sheetContent}\r\n </SheetContent>\r\n </SheetPortal>\r\n </Sheet>\r\n </>\r\n );\r\n }\r\n\r\n default:\r\n return contentWrapper(children)\r\n }\r\n }\r\n\r\n return (\r\n <AppContentContext.Provider value={true}>\r\n <div className={cn(\r\n baseClasses,\r\n variantClasses[variant],\r\n paddingClasses[padding],\r\n isNested && \"flex-1\",\r\n parentContainer && \"h-full\",\r\n !parentContainer && \"rounded-2xl\",\r\n className\r\n )}>\r\n {header && (\r\n <div\r\n className={cn(\r\n \"border-b\",\r\n headerClassName,\r\n variant === \"card\" && !parentContainer && \"rounded-t-2xl\",\r\n variant === \"border\" && \"border-b-2\",\r\n paddingClasses[padding]\r\n )}\r\n >\r\n {header}\r\n </div>\r\n )}\r\n {renderContent()}\r\n {footer && (\r\n <div\r\n className={cn(\r\n \"border-t\",\r\n footerClassName,\r\n variant === \"card\" && !parentContainer && \"rounded-b-2xl\",\r\n variant === \"border\" && \"border-t-2\",\r\n paddingClasses[padding]\r\n )}\r\n >\r\n {footer}\r\n </div>\r\n )}\r\n </div>\r\n </AppContentContext.Provider>\r\n )\r\n}\r\n","import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}","import * as React from \"react\"\nimport { Dialog as SheetPrimitive } from \"radix-ui\"\nimport { XIcon } from \"lucide-react\"\nimport { cn } from \"../../lib/utils.js\"\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetOverlay,\n SheetPortal,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n"],"mappings":"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","names":["app_content_exports","__export","AppContent","__toCommonJS","import_clsx","import_tailwind_merge","cn","inputs","import_react","import_radix_ui","import_lucide_react","import_jsx_runtime","Sheet","props","SheetPrimitive","SheetPortal","props","SheetPrimitive","SheetOverlay","className","cn","SheetContent","children","side","import_jsx_runtime","AppContentContext","splitRatioClasses","paddingClasses","getContainerSheetClasses","side","width","contentWidth","sheetWidth","cn","baseClasses","variantClasses","AppContent","props","children","className","variant","layout","header","footer","headerClassName","contentClassName","footerClassName","parentContainer","padding","isNested","internalSheetOpen","setInternalSheetOpen","contentWrapper","React","content","renderContent","splitRatio","reverse","leftClass","rightClass","firstChild","secondChild","firstClass","secondClass","sheetContent","sheetSide","sheetMode","sheetClassName","isSheetOpen","onSheetOpenChange","disableOverlay","showSheetOverlay","isControlled","sheetOpen","setSheetOpen","sheetClasses","sheetWidthClass","Sheet","SheetPortal","SheetContent"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/layouts/app-content.tsx","../../../src/lib/utils.ts","../../../src/components/ui/sheet.tsx"],"sourcesContent":["import { cn } from \"../../lib/utils.js\"\r\nimport React, { useState, createContext, useContext } from \"react\"\r\nimport {\r\n Sheet,\r\n SheetTrigger,\r\n SheetContent,\r\n SheetPortal,\r\n SheetOverlay\r\n} from \"../../components/ui/sheet.jsx\"\r\n\r\nconst AppContentContext = createContext(false)\r\n\r\ntype SplitRatio = \"one-half\" | \"one-third\" | \"two-third\" | \"one-fourth\" | \"three-fourth\" | \"one-fifth\" | \"four-fifth\"\r\n\r\ntype SheetSide = \"right\" | \"bottom\" | \"left\" | \"top\"\r\ntype SheetMode = \"fullscreen\" | \"container\"\r\n\r\ntype BaseAppContentProps = {\r\n children: React.ReactNode\r\n className?: string\r\n variant?: \"default\" | \"card\" | \"border\" | \"transparent\"\r\n header?: React.ReactNode\r\n footer?: React.ReactNode\r\n contentClassName?: string\r\n headerClassName?: string\r\n footerClassName?: string\r\n parentContainer?: boolean\r\n padding?: \"none\" | \"tight\" | \"default\" | \"loose\"\r\n}\r\n\r\ntype FullLayoutProps = BaseAppContentProps & {\r\n layout?: \"full\"\r\n}\r\n\r\ntype SplitLayoutProps = BaseAppContentProps & {\r\n layout: \"split\"\r\n splitRatio?: SplitRatio\r\n reverse?: boolean\r\n}\r\n\r\ntype SheetOptions = {\r\n sheetContent: React.ReactNode\r\n sheetWidth?: SplitRatio\r\n sheetSide?: SheetSide\r\n sheetMode?: SheetMode\r\n onSheetClose?: () => void\r\n sheetClassName?: string\r\n isSheetOpen?: boolean\r\n onSheetOpenChange?: (open: boolean) => void\r\n // sheetTrigger?: React.ReactNode\r\n disableOverlay?: boolean\r\n showSheetOverlay?: boolean\r\n}\r\n\r\ntype WithSheetLayoutProps = BaseAppContentProps & {\r\n layout: \"with-sheet\"\r\n} & SheetOptions\r\n\r\nexport type AppContentProps = FullLayoutProps | SplitLayoutProps | WithSheetLayoutProps\r\n\r\nconst splitRatioClasses: Record<SplitRatio, [string, string]> = {\r\n \"one-half\": [\"w-1/2\", \"w-1/2\"],\r\n \"one-third\": [\"w-1/3\", \"w-2/3\"],\r\n \"two-third\": [\"w-2/3\", \"w-1/3\"],\r\n \"one-fourth\": [\"w-1/4\", \"w-3/4\"],\r\n \"three-fourth\": [\"w-3/4\", \"w-1/4\"],\r\n \"one-fifth\": [\"w-1/5\", \"w-4/5\"],\r\n \"four-fifth\": [\"w-4/5\", \"w-1/5\"],\r\n}\r\n\r\nconst paddingClasses = {\r\n none: \"p-0\",\r\n tight: \"p-2\",\r\n default: \"p-4\",\r\n loose: \"p-6\",\r\n}\r\n\r\nconst getContainerSheetClasses = (side: SheetSide, width: SplitRatio) => {\r\n const [contentWidth, sheetWidth] = splitRatioClasses[width]\r\n\r\n return {\r\n container: \"inset-y-0 z-50 transition-all duration-500 ease-in-out\",\r\n content: cn(\r\n \"h-full bg-background transition-all duration-500 ease-in-out\",\r\n side === \"right\" ? \"border-l\" : \"border-r\"\r\n ),\r\n transform: side === \"right\" ? \"translate-x-full\" : \"-translate-x-full\",\r\n transformOpen: \"translate-x-0\",\r\n contentPushClass: side === \"right\" ? sheetWidth : contentWidth,\r\n sheetPushClass: side === \"right\" ? contentWidth : sheetWidth,\r\n }\r\n}\r\n\r\nconst baseClasses = \"flex flex-col overflow-hidden rounded-2xl relative\"\r\nconst variantClasses = {\r\n default: \"bg-background\",\r\n card: \"bg-background shadow-sm border\",\r\n border: \"bg-background border-2\",\r\n transparent: \"bg-transparent\",\r\n}\r\n\r\nexport const AppContent = (props: AppContentProps) => {\r\n const {\r\n children,\r\n className,\r\n variant = \"default\",\r\n layout = \"full\",\r\n header,\r\n footer,\r\n headerClassName,\r\n contentClassName,\r\n footerClassName,\r\n parentContainer = false,\r\n padding = parentContainer ? \"none\" : \"tight\",\r\n } = props\r\n\r\n const isNested = useContext(AppContentContext)\r\n const [internalSheetOpen, setInternalSheetOpen] = useState(false)\r\n\r\n const contentWrapper = React.useCallback(\r\n (content: React.ReactNode) => (\r\n <div className={cn(\r\n \"flex-1 overflow-auto h-full no-scrollbar\",\r\n parentContainer && \"flex\",\r\n !parentContainer && paddingClasses[padding],\r\n contentClassName\r\n )}>\r\n {content}\r\n </div>\r\n ),\r\n [padding, parentContainer, contentClassName]\r\n )\r\n\r\n const renderContent = () => {\r\n switch (layout) {\r\n case \"split\": {\r\n const { splitRatio = \"three-fourth\", reverse = false } = props as SplitLayoutProps\r\n if (!Array.isArray(children) || children.length !== 2) {\r\n return (\r\n <div className=\"flex items-center justify-center h-full text-red-500\">\r\n Error: AppContent with layout=\"split\" requires exactly 2 children\r\n </div>\r\n )\r\n }\r\n\r\n const [leftClass, rightClass] = splitRatioClasses[splitRatio]\r\n const [firstChild, secondChild] = reverse ? [children[1], children[0]] : [children[0], children[1]]\r\n const [firstClass, secondClass] = reverse ? [rightClass, leftClass] : [leftClass, rightClass]\r\n\r\n return (\r\n <div className=\"flex h-full gap-2\">\r\n <div className={cn(firstClass, \"overflow-auto\")}>\r\n {contentWrapper(firstChild)}\r\n </div>\r\n <div className={cn(secondClass, \"overflow-auto\")}>\r\n {contentWrapper(secondChild)}\r\n </div>\r\n </div>\r\n )\r\n }\r\n\r\n case \"with-sheet\": {\r\n const {\r\n sheetContent,\r\n sheetWidth = \"four-fifth\",\r\n sheetSide = \"right\",\r\n sheetMode = \"container\",\r\n sheetClassName,\r\n isSheetOpen,\r\n onSheetOpenChange,\r\n disableOverlay = true,\r\n showSheetOverlay = true,\r\n } = props as WithSheetLayoutProps;\r\n\r\n const isControlled = isSheetOpen !== undefined && onSheetOpenChange;\r\n const sheetOpen = isControlled ? isSheetOpen : internalSheetOpen;\r\n const setSheetOpen = isControlled ? onSheetOpenChange : setInternalSheetOpen;\r\n\r\n if (sheetMode === \"container\") {\r\n const sheetClasses = getContainerSheetClasses(sheetSide, sheetWidth);\r\n const sheetWidthClass = splitRatioClasses[sheetWidth][0];\r\n\r\n // Separate rendering for overlay mode vs push mode\r\n if (disableOverlay) {\r\n // Push mode - sheet pushes content\r\n return (\r\n <div className={cn(\"flex relative flex-1 overflow-hidden\", contentClassName)}>\r\n {/* Main content area */}\r\n <div className={cn(\r\n \"h-full overflow-auto transition-all duration-500\",\r\n sheetOpen\r\n ? sheetClasses.contentPushClass\r\n : \"w-full\",\r\n sheetOpen && \"overflow-y-auto overflow-x-hidden\"\r\n )}>\r\n <div className={cn(\"h-full\", !parentContainer && paddingClasses[padding])}>\r\n {children}\r\n </div>\r\n </div>\r\n\r\n {/* Container sheet */}\r\n <div\r\n className={cn(\r\n sheetClasses.container,\r\n \"transition-all duration-500 ease-in-out h-full\",\r\n sheetWidthClass,\r\n sheetOpen && [\"left\", \"right\"].includes(sheetSide)\r\n ? cn(sheetClasses.sheetPushClass, \"overflow-y-auto\")\r\n : sheetOpen\r\n ? sheetClasses.transformOpen\r\n : cn(sheetClasses.transform, \"hidden\"),\r\n \"overflow-y-auto\"\r\n )}\r\n >\r\n <div className={cn(sheetClasses.content, sheetClassName, \"h-full\")}>\r\n {sheetContent}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n } else {\r\n // Overlay mode - sheet overlays content with dark background\r\n return (\r\n <div tabIndex={-1} className={cn(\"flex relative flex-1 overflow-hidden\", contentClassName)}>\r\n {/* Main content area (always full width) */}\r\n <div className={cn(\r\n \"h-full overflow-auto w-full transition-all duration-500 relative z-10\"\r\n )}>\r\n <div className={cn(\"h-full\", !parentContainer && paddingClasses[padding])}>\r\n {children}\r\n </div>\r\n </div>\r\n\r\n {/* Container for sheet and overlay */}\r\n <div\r\n tabIndex={-1}\r\n className={cn(\r\n \"absolute inset-0 z-20\",\r\n !sheetOpen && \"pointer-events-none\"\r\n )}>\r\n {/* Overlay layer */}\r\n {showSheetOverlay && (\r\n <div\r\n className={cn(\r\n \"absolute inset-0 bg-black/50 transition-opacity duration-500\",\r\n sheetOpen ? \"opacity-100\" : \"opacity-0 pointer-events-none\"\r\n )}\r\n onClick={() => setSheetOpen(false)}\r\n />\r\n )}\r\n\r\n {/* Container sheet */}\r\n <div\r\n className={cn(\r\n sheetClasses.container,\r\n \"transition-all duration-500 backdrop-blur-2xl ease-in-out h-full absolute\",\r\n sheetWidthClass,\r\n sheetOpen\r\n ? \"translate-x-0 opacity-100\"\r\n : cn(\r\n sheetSide === \"right\" ? \"translate-x-full\" : \"-translate-x-full\",\r\n \"opacity-0 pointer-events-none\"\r\n ),\r\n \"overflow-y-auto\"\r\n )}\r\n style={{ [sheetSide]: 0 }}\r\n tabIndex={-1}\r\n >\r\n <div className={cn(sheetClasses.content, sheetClassName, \"h-full\")}>\r\n {sheetContent}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {children}\r\n <Sheet open={sheetOpen} onOpenChange={setSheetOpen}>\r\n <SheetPortal>\r\n <SheetContent\r\n side={sheetSide}\r\n className={cn(\r\n \"fixed bg-background border sm:max-w-full\",\r\n \"transition-all duration-500 ease-in-out\",\r\n splitRatioClasses[sheetWidth][0],\r\n sheetClassName\r\n )}\r\n >\r\n {sheetContent}\r\n </SheetContent>\r\n </SheetPortal>\r\n </Sheet>\r\n </>\r\n );\r\n }\r\n\r\n default:\r\n return contentWrapper(children)\r\n }\r\n }\r\n\r\n return (\r\n <AppContentContext.Provider value={true}>\r\n <div className={cn(\r\n baseClasses,\r\n variantClasses[variant],\r\n paddingClasses[padding],\r\n isNested && \"flex-1\",\r\n parentContainer && \"h-full\",\r\n !parentContainer && \"rounded-2xl\",\r\n className\r\n )}>\r\n {header && (\r\n <div\r\n className={cn(\r\n \"border-b\",\r\n headerClassName,\r\n variant === \"card\" && !parentContainer && \"rounded-t-2xl\",\r\n variant === \"border\" && \"border-b-2\",\r\n paddingClasses[padding]\r\n )}\r\n >\r\n {header}\r\n </div>\r\n )}\r\n {renderContent()}\r\n {footer && (\r\n <div\r\n className={cn(\r\n \"border-t\",\r\n footerClassName,\r\n variant === \"card\" && !parentContainer && \"rounded-b-2xl\",\r\n variant === \"border\" && \"border-t-2\",\r\n paddingClasses[padding]\r\n )}\r\n >\r\n {footer}\r\n </div>\r\n )}\r\n </div>\r\n </AppContentContext.Provider>\r\n )\r\n}\r\n","import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}","import * as React from \"react\"\nimport { Dialog as SheetPrimitive } from \"radix-ui\"\nimport { XIcon } from \"lucide-react\"\nimport { cn } from \"../../lib/utils.js\"\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetOverlay,\n SheetPortal,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n"],"mappings":"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","names":["app_content_exports","__export","AppContent","__toCommonJS","import_clsx","import_tailwind_merge","cn","inputs","import_react","import_radix_ui","import_lucide_react","import_jsx_runtime","Sheet","props","SheetPrimitive","SheetPortal","props","SheetPrimitive","SheetOverlay","className","cn","SheetContent","children","side","import_jsx_runtime","AppContentContext","splitRatioClasses","paddingClasses","getContainerSheetClasses","side","width","contentWidth","sheetWidth","cn","baseClasses","variantClasses","AppContent","props","children","className","variant","layout","header","footer","headerClassName","contentClassName","footerClassName","parentContainer","padding","isNested","internalSheetOpen","setInternalSheetOpen","contentWrapper","React","content","renderContent","splitRatio","reverse","leftClass","rightClass","firstChild","secondChild","firstClass","secondClass","sheetContent","sheetSide","sheetMode","sheetClassName","isSheetOpen","onSheetOpenChange","disableOverlay","showSheetOverlay","isControlled","sheetOpen","setSheetOpen","sheetClasses","sheetWidthClass","Sheet","SheetPortal","SheetContent"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client"
|
|
2
|
-
import{clsx as X}from"clsx";import{twMerge as G}from"tailwind-merge";function e(...o){return G(X(o))}import Q,{useState as U,createContext as Y,useContext as Z}from"react";import{Dialog as C}from"radix-ui";import{XIcon as J}from"lucide-react";import{jsx as u,jsxs as w}from"react/jsx-runtime";function T({...o}){return u(C.Root,{"data-slot":"sheet",...o})}function R({...o}){return u(C.Portal,{"data-slot":"sheet-portal",...o})}function K({className:o,...a}){return u(C.Overlay,{"data-slot":"sheet-overlay",className:e("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",o),...a})}function z({className:o,children:a,side:r="right",...s}){return w(R,{children:[u(K,{}),w(C.Content,{"data-slot":"sheet-content",className:e("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",r==="right"&&"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",r==="left"&&"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",r==="top"&&"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",r==="bottom"&&"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",o),...s,children:[a,w(C.Close,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",children:[u(J,{className:"size-4"}),u("span",{className:"sr-only",children:"Close"})]})]})]})}import{Fragment as ee,jsx as t,jsxs as m}from"react/jsx-runtime";var
|
|
2
|
+
import{clsx as X}from"clsx";import{twMerge as G}from"tailwind-merge";function e(...o){return G(X(o))}import Q,{useState as U,createContext as Y,useContext as Z}from"react";import{Dialog as C}from"radix-ui";import{XIcon as J}from"lucide-react";import{jsx as u,jsxs as w}from"react/jsx-runtime";function T({...o}){return u(C.Root,{"data-slot":"sheet",...o})}function R({...o}){return u(C.Portal,{"data-slot":"sheet-portal",...o})}function K({className:o,...a}){return u(C.Overlay,{"data-slot":"sheet-overlay",className:e("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",o),...a})}function z({className:o,children:a,side:r="right",...s}){return w(R,{children:[u(K,{}),w(C.Content,{"data-slot":"sheet-content",className:e("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",r==="right"&&"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",r==="left"&&"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",r==="top"&&"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",r==="bottom"&&"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",o),...s,children:[a,w(C.Close,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",children:[u(J,{className:"size-4"}),u("span",{className:"sr-only",children:"Close"})]})]})]})}import{Fragment as ee,jsx as t,jsxs as m}from"react/jsx-runtime";var I=Y(!1),x={"one-half":["w-1/2","w-1/2"],"one-third":["w-1/3","w-2/3"],"two-third":["w-2/3","w-1/3"],"one-fourth":["w-1/4","w-3/4"],"three-fourth":["w-3/4","w-1/4"],"one-fifth":["w-1/5","w-4/5"],"four-fifth":["w-4/5","w-1/5"]},f={none:"p-0",tight:"p-2",default:"p-4",loose:"p-6"},_=(o,a)=>{let[r,s]=x[a];return{container:"inset-y-0 z-50 transition-all duration-500 ease-in-out",content:e("h-full bg-background transition-all duration-500 ease-in-out",o==="right"?"border-l":"border-r"),transform:o==="right"?"translate-x-full":"-translate-x-full",transformOpen:"translate-x-0",contentPushClass:o==="right"?s:r,sheetPushClass:o==="right"?r:s}},$="flex flex-col overflow-hidden rounded-2xl relative",j={default:"bg-background",card:"bg-background shadow-sm border",border:"bg-background border-2",transparent:"bg-transparent"},fe=o=>{let{children:a,className:r,variant:s="default",layout:M="full",header:O,footer:k,headerClassName:B,contentClassName:g,footerClassName:D,parentContainer:n=!1,padding:h=n?"none":"tight"}=o,F=Z(I),[V,q]=U(!1),P=Q.useCallback(c=>t("div",{className:e("flex-1 overflow-auto h-full no-scrollbar",n&&"flex",!n&&f[h],g),children:c}),[h,n,g]),E=()=>{switch(M){case"split":{let{splitRatio:c="three-fourth",reverse:p=!1}=o;if(!Array.isArray(a)||a.length!==2)return t("div",{className:"flex items-center justify-center h-full text-red-500",children:'Error: AppContent with layout="split" requires exactly 2 children'});let[i,b]=x[c],[v,S]=p?[a[1],a[0]]:[a[0],a[1]],[y,N]=p?[b,i]:[i,b];return m("div",{className:"flex h-full gap-2",children:[t("div",{className:e(y,"overflow-auto"),children:P(v)}),t("div",{className:e(N,"overflow-auto"),children:P(S)})]})}case"with-sheet":{let{sheetContent:c,sheetWidth:p="four-fifth",sheetSide:i="right",sheetMode:b="container",sheetClassName:v,isSheetOpen:S,onSheetOpenChange:y,disableOverlay:N=!0,showSheetOverlay:H=!0}=o,A=S!==void 0&&y,l=A?S:V,W=A?y:q;if(b==="container"){let d=_(i,p),L=x[p][0];return N?m("div",{className:e("flex relative flex-1 overflow-hidden",g),children:[t("div",{className:e("h-full overflow-auto transition-all duration-500",l?d.contentPushClass:"w-full",l&&"overflow-y-auto overflow-x-hidden"),children:t("div",{className:e("h-full",!n&&f[h]),children:a})}),t("div",{className:e(d.container,"transition-all duration-500 ease-in-out h-full",L,l&&["left","right"].includes(i)?e(d.sheetPushClass,"overflow-y-auto"):l?d.transformOpen:e(d.transform,"hidden"),"overflow-y-auto"),children:t("div",{className:e(d.content,v,"h-full"),children:c})})]}):m("div",{tabIndex:-1,className:e("flex relative flex-1 overflow-hidden",g),children:[t("div",{className:e("h-full overflow-auto w-full transition-all duration-500 relative z-10"),children:t("div",{className:e("h-full",!n&&f[h]),children:a})}),m("div",{tabIndex:-1,className:e("absolute inset-0 z-20",!l&&"pointer-events-none"),children:[H&&t("div",{className:e("absolute inset-0 bg-black/50 transition-opacity duration-500",l?"opacity-100":"opacity-0 pointer-events-none"),onClick:()=>W(!1)}),t("div",{className:e(d.container,"transition-all duration-500 backdrop-blur-2xl ease-in-out h-full absolute",L,l?"translate-x-0 opacity-100":e(i==="right"?"translate-x-full":"-translate-x-full","opacity-0 pointer-events-none"),"overflow-y-auto"),style:{[i]:0},tabIndex:-1,children:t("div",{className:e(d.content,v,"h-full"),children:c})})]})]})}return m(ee,{children:[a,t(T,{open:l,onOpenChange:W,children:t(R,{children:t(z,{side:i,className:e("fixed bg-background border sm:max-w-full","transition-all duration-500 ease-in-out",x[p][0],v),children:c})})})]})}default:return P(a)}};return t(I.Provider,{value:!0,children:m("div",{className:e($,j[s],f[h],F&&"flex-1",n&&"h-full",!n&&"rounded-2xl",r),children:[O&&t("div",{className:e("border-b",B,s==="card"&&!n&&"rounded-t-2xl",s==="border"&&"border-b-2",f[h]),children:O}),E(),k&&t("div",{className:e("border-t",D,s==="card"&&!n&&"rounded-b-2xl",s==="border"&&"border-t-2",f[h]),children:k})]})})};export{fe as AppContent};
|
|
3
3
|
//# sourceMappingURL=app-content.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/lib/utils.ts","../../../src/components/layouts/app-content.tsx","../../../src/components/ui/sheet.tsx"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}","import { cn } from \"../../lib/utils.js\"\r\nimport React, { useState, createContext, useContext } from \"react\"\r\nimport {\r\n Sheet,\r\n SheetTrigger,\r\n SheetContent,\r\n SheetPortal,\r\n SheetOverlay\r\n} from \"../../components/ui/sheet.jsx\"\r\n\r\nconst AppContentContext = createContext(false)\r\n\r\ntype SplitRatio = \"one-half\" | \"one-third\" | \"two-third\" | \"one-fourth\" | \"three-fourth\" | \"one-fifth\" | \"four-fifth\"\r\n\r\ntype SheetSide = \"right\" | \"bottom\" | \"left\" | \"top\"\r\ntype SheetMode = \"fullscreen\" | \"container\"\r\n\r\ntype BaseAppContentProps = {\r\n children: React.ReactNode\r\n className?: string\r\n variant?: \"default\" | \"card\" | \"border\" | \"transparent\"\r\n header?: React.ReactNode\r\n footer?: React.ReactNode\r\n contentClassName?: string\r\n headerClassName?: string\r\n footerClassName?: string\r\n parentContainer?: boolean\r\n padding?: \"none\" | \"tight\" | \"default\" | \"loose\"\r\n}\r\n\r\ntype FullLayoutProps = BaseAppContentProps & {\r\n layout?: \"full\"\r\n}\r\n\r\ntype SplitLayoutProps = BaseAppContentProps & {\r\n layout: \"split\"\r\n splitRatio?: SplitRatio\r\n reverse?: boolean\r\n}\r\n\r\ntype SheetOptions = {\r\n sheetContent: React.ReactNode\r\n sheetWidth?: SplitRatio\r\n sheetSide?: SheetSide\r\n sheetMode?: SheetMode\r\n onSheetClose?: () => void\r\n sheetClassName?: string\r\n isSheetOpen?: boolean\r\n onSheetOpenChange?: (open: boolean) => void\r\n // sheetTrigger?: React.ReactNode\r\n disableOverlay?: boolean\r\n showSheetOverlay?: boolean\r\n}\r\n\r\ntype WithSheetLayoutProps = BaseAppContentProps & {\r\n layout: \"with-sheet\"\r\n} & SheetOptions\r\n\r\nexport type AppContentProps = FullLayoutProps | SplitLayoutProps | WithSheetLayoutProps\r\n\r\nconst splitRatioClasses: Record<SplitRatio, [string, string]> = {\r\n \"one-half\": [\"w-1/2\", \"w-1/2\"],\r\n \"one-third\": [\"w-1/3\", \"w-2/3\"],\r\n \"two-third\": [\"w-2/3\", \"w-1/3\"],\r\n \"one-fourth\": [\"w-1/4\", \"w-3/4\"],\r\n \"three-fourth\": [\"w-3/4\", \"w-1/4\"],\r\n \"one-fifth\": [\"w-1/5\", \"w-4/5\"],\r\n \"four-fifth\": [\"w-4/5\", \"w-1/5\"],\r\n}\r\n\r\nconst paddingClasses = {\r\n none: \"p-0\",\r\n tight: \"p-2\",\r\n default: \"p-4\",\r\n loose: \"p-6\",\r\n}\r\n\r\nconst getContainerSheetClasses = (side: SheetSide, width: SplitRatio) => {\r\n const [contentWidth, sheetWidth] = splitRatioClasses[width]\r\n\r\n return {\r\n container: \"inset-y-0 z-50 transition-all duration-500 ease-in-out\",\r\n content: cn(\r\n \"h-full bg-background transition-all duration-500 ease-in-out\",\r\n side === \"right\" ? \"border-l\" : \"border-r\"\r\n ),\r\n transform: side === \"right\" ? \"translate-x-full\" : \"-translate-x-full\",\r\n transformOpen: \"translate-x-0\",\r\n contentPushClass: side === \"right\" ? sheetWidth : contentWidth,\r\n sheetPushClass: side === \"right\" ? contentWidth : sheetWidth,\r\n }\r\n}\r\n\r\nconst baseClasses = \"flex flex-col overflow-hidden rounded-2xl relative\"\r\nconst variantClasses = {\r\n default: \"bg-background\",\r\n card: \"bg-background shadow-sm border\",\r\n border: \"bg-background border-2\",\r\n transparent: \"bg-transparent\",\r\n}\r\n\r\nexport const AppContent = (props: AppContentProps) => {\r\n const {\r\n children,\r\n className,\r\n variant = \"default\",\r\n layout = \"full\",\r\n header,\r\n footer,\r\n headerClassName,\r\n contentClassName,\r\n footerClassName,\r\n parentContainer = false,\r\n padding = parentContainer ? \"none\" : \"tight\",\r\n } = props\r\n\r\n const isNested = useContext(AppContentContext)\r\n const [internalSheetOpen, setInternalSheetOpen] = useState(false)\r\n\r\n const contentWrapper = React.useCallback(\r\n (content: React.ReactNode) => (\r\n <div className={cn(\r\n \"flex-1 overflow-auto h-full no-scrollbar\",\r\n parentContainer && \"flex\",\r\n !parentContainer && paddingClasses[padding],\r\n contentClassName\r\n )}>\r\n {content}\r\n </div>\r\n ),\r\n [padding, parentContainer, contentClassName]\r\n )\r\n\r\n const renderContent = () => {\r\n switch (layout) {\r\n case \"split\": {\r\n const { splitRatio = \"three-fourth\", reverse = false } = props as SplitLayoutProps\r\n if (!Array.isArray(children) || children.length !== 2) {\r\n return (\r\n <div className=\"flex items-center justify-center h-full text-red-500\">\r\n Error: AppContent with layout=\"split\" requires exactly 2 children\r\n </div>\r\n )\r\n }\r\n\r\n const [leftClass, rightClass] = splitRatioClasses[splitRatio]\r\n const [firstChild, secondChild] = reverse ? [children[1], children[0]] : [children[0], children[1]]\r\n const [firstClass, secondClass] = reverse ? [rightClass, leftClass] : [leftClass, rightClass]\r\n\r\n return (\r\n <div className=\"flex h-full gap-2\">\r\n <div className={cn(firstClass, \"overflow-auto\")}>\r\n {contentWrapper(firstChild)}\r\n </div>\r\n <div className={cn(secondClass, \"overflow-auto\")}>\r\n {contentWrapper(secondChild)}\r\n </div>\r\n </div>\r\n )\r\n }\r\n\r\n case \"with-sheet\": {\r\n const {\r\n sheetContent,\r\n sheetWidth = \"four-fifth\",\r\n sheetSide = \"right\",\r\n sheetMode = \"container\",\r\n sheetClassName,\r\n isSheetOpen,\r\n onSheetOpenChange,\r\n disableOverlay = true,\r\n showSheetOverlay = true,\r\n } = props as WithSheetLayoutProps;\r\n\r\n const isControlled = isSheetOpen !== undefined && onSheetOpenChange;\r\n const sheetOpen = isControlled ? isSheetOpen : internalSheetOpen;\r\n const setSheetOpen = isControlled ? onSheetOpenChange : setInternalSheetOpen;\r\n\r\n if (sheetMode === \"container\") {\r\n const sheetClasses = getContainerSheetClasses(sheetSide, sheetWidth);\r\n const sheetWidthClass = splitRatioClasses[sheetWidth][0];\r\n\r\n // Separate rendering for overlay mode vs push mode\r\n if (disableOverlay) {\r\n // Push mode - sheet pushes content\r\n return (\r\n <div className={cn(\"flex relative flex-1 overflow-hidden\", contentClassName)}>\r\n {/* Main content area */}\r\n <div className={cn(\r\n \"h-full overflow-auto transition-all duration-500\",\r\n sheetOpen\r\n ? sheetClasses.contentPushClass\r\n : \"w-full\",\r\n sheetOpen && \"overflow-y-auto overflow-x-hidden\"\r\n )}>\r\n <div className={cn(\"h-full\", !parentContainer && paddingClasses[padding])}>\r\n {children}\r\n </div>\r\n </div>\r\n\r\n {/* Container sheet */}\r\n <div\r\n className={cn(\r\n sheetClasses.container,\r\n \"transition-all duration-500 ease-in-out h-full\",\r\n sheetWidthClass,\r\n sheetOpen && [\"left\", \"right\"].includes(sheetSide)\r\n ? cn(sheetClasses.sheetPushClass, \"overflow-y-auto\")\r\n : sheetOpen\r\n ? sheetClasses.transformOpen\r\n : cn(sheetClasses.transform, \"hidden\"),\r\n \"overflow-y-auto\"\r\n )}\r\n >\r\n <div className={cn(sheetClasses.content, sheetClassName, \"h-full\")}>\r\n {sheetContent}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n } else {\r\n // Overlay mode - sheet overlays content with dark background\r\n return (\r\n <div className={cn(\"flex relative flex-1 overflow-hidden\", contentClassName)}>\r\n {/* Main content area (always full width) */}\r\n <div className={cn(\r\n \"h-full overflow-auto w-full transition-all duration-500 relative z-10\"\r\n )}>\r\n <div className={cn(\"h-full\", !parentContainer && paddingClasses[padding])}>\r\n {children}\r\n </div>\r\n </div>\r\n\r\n {/* Container for sheet and overlay */}\r\n <div className={cn(\r\n \"absolute inset-0 z-20\",\r\n !sheetOpen && \"pointer-events-none\"\r\n )}>\r\n {/* Overlay layer */}\r\n {showSheetOverlay && (\r\n <div\r\n className={cn(\r\n \"absolute inset-0 bg-black/50 transition-opacity duration-500\",\r\n sheetOpen ? \"opacity-100\" : \"opacity-0 pointer-events-none\"\r\n )}\r\n onClick={() => setSheetOpen(false)}\r\n />\r\n )}\r\n\r\n {/* Container sheet */}\r\n <div\r\n className={cn(\r\n sheetClasses.container,\r\n \"transition-all duration-500 backdrop-blur-2xl ease-in-out h-full absolute\",\r\n sheetWidthClass,\r\n sheetOpen\r\n ? \"translate-x-0 opacity-100\"\r\n : cn(\r\n sheetSide === \"right\" ? \"translate-x-full\" : \"-translate-x-full\",\r\n \"opacity-0 pointer-events-none\"\r\n ),\r\n \"overflow-y-auto\"\r\n )}\r\n style={{ [sheetSide]: 0 }}\r\n >\r\n <div className={cn(sheetClasses.content, sheetClassName, \"h-full\")}>\r\n {sheetContent}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {children}\r\n <Sheet open={sheetOpen} onOpenChange={setSheetOpen}>\r\n <SheetPortal>\r\n <SheetContent\r\n side={sheetSide}\r\n className={cn(\r\n \"fixed bg-background border sm:max-w-full\",\r\n \"transition-all duration-500 ease-in-out\",\r\n splitRatioClasses[sheetWidth][0],\r\n sheetClassName\r\n )}\r\n >\r\n {sheetContent}\r\n </SheetContent>\r\n </SheetPortal>\r\n </Sheet>\r\n </>\r\n );\r\n }\r\n\r\n default:\r\n return contentWrapper(children)\r\n }\r\n }\r\n\r\n return (\r\n <AppContentContext.Provider value={true}>\r\n <div className={cn(\r\n baseClasses,\r\n variantClasses[variant],\r\n paddingClasses[padding],\r\n isNested && \"flex-1\",\r\n parentContainer && \"h-full\",\r\n !parentContainer && \"rounded-2xl\",\r\n className\r\n )}>\r\n {header && (\r\n <div\r\n className={cn(\r\n \"border-b\",\r\n headerClassName,\r\n variant === \"card\" && !parentContainer && \"rounded-t-2xl\",\r\n variant === \"border\" && \"border-b-2\",\r\n paddingClasses[padding]\r\n )}\r\n >\r\n {header}\r\n </div>\r\n )}\r\n {renderContent()}\r\n {footer && (\r\n <div\r\n className={cn(\r\n \"border-t\",\r\n footerClassName,\r\n variant === \"card\" && !parentContainer && \"rounded-b-2xl\",\r\n variant === \"border\" && \"border-t-2\",\r\n paddingClasses[padding]\r\n )}\r\n >\r\n {footer}\r\n </div>\r\n )}\r\n </div>\r\n </AppContentContext.Provider>\r\n )\r\n}\r\n","import * as React from \"react\"\nimport { Dialog as SheetPrimitive } from \"radix-ui\"\nimport { XIcon } from \"lucide-react\"\nimport { cn } from \"../../lib/utils.js\"\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetOverlay,\n SheetPortal,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n"],"mappings":"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","names":["clsx","twMerge","cn","inputs","React","useState","createContext","useContext","SheetPrimitive","XIcon","jsx","jsxs","Sheet","props","SheetPrimitive","SheetPortal","props","jsx","SheetPrimitive","SheetOverlay","className","cn","SheetContent","children","side","jsxs","XIcon","Fragment","jsx","jsxs","AppContentContext","createContext","splitRatioClasses","paddingClasses","getContainerSheetClasses","side","width","contentWidth","sheetWidth","cn","baseClasses","variantClasses","AppContent","props","children","className","variant","layout","header","footer","headerClassName","contentClassName","footerClassName","parentContainer","padding","isNested","useContext","internalSheetOpen","setInternalSheetOpen","useState","contentWrapper","React","content","renderContent","splitRatio","reverse","leftClass","rightClass","firstChild","secondChild","firstClass","secondClass","sheetContent","sheetSide","sheetMode","sheetClassName","isSheetOpen","onSheetOpenChange","disableOverlay","showSheetOverlay","isControlled","sheetOpen","setSheetOpen","sheetClasses","sheetWidthClass","Sheet","SheetPortal","SheetContent"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/lib/utils.ts","../../../src/components/layouts/app-content.tsx","../../../src/components/ui/sheet.tsx"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\r\nimport { twMerge } from \"tailwind-merge\";\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}","import { cn } from \"../../lib/utils.js\"\r\nimport React, { useState, createContext, useContext } from \"react\"\r\nimport {\r\n Sheet,\r\n SheetTrigger,\r\n SheetContent,\r\n SheetPortal,\r\n SheetOverlay\r\n} from \"../../components/ui/sheet.jsx\"\r\n\r\nconst AppContentContext = createContext(false)\r\n\r\ntype SplitRatio = \"one-half\" | \"one-third\" | \"two-third\" | \"one-fourth\" | \"three-fourth\" | \"one-fifth\" | \"four-fifth\"\r\n\r\ntype SheetSide = \"right\" | \"bottom\" | \"left\" | \"top\"\r\ntype SheetMode = \"fullscreen\" | \"container\"\r\n\r\ntype BaseAppContentProps = {\r\n children: React.ReactNode\r\n className?: string\r\n variant?: \"default\" | \"card\" | \"border\" | \"transparent\"\r\n header?: React.ReactNode\r\n footer?: React.ReactNode\r\n contentClassName?: string\r\n headerClassName?: string\r\n footerClassName?: string\r\n parentContainer?: boolean\r\n padding?: \"none\" | \"tight\" | \"default\" | \"loose\"\r\n}\r\n\r\ntype FullLayoutProps = BaseAppContentProps & {\r\n layout?: \"full\"\r\n}\r\n\r\ntype SplitLayoutProps = BaseAppContentProps & {\r\n layout: \"split\"\r\n splitRatio?: SplitRatio\r\n reverse?: boolean\r\n}\r\n\r\ntype SheetOptions = {\r\n sheetContent: React.ReactNode\r\n sheetWidth?: SplitRatio\r\n sheetSide?: SheetSide\r\n sheetMode?: SheetMode\r\n onSheetClose?: () => void\r\n sheetClassName?: string\r\n isSheetOpen?: boolean\r\n onSheetOpenChange?: (open: boolean) => void\r\n // sheetTrigger?: React.ReactNode\r\n disableOverlay?: boolean\r\n showSheetOverlay?: boolean\r\n}\r\n\r\ntype WithSheetLayoutProps = BaseAppContentProps & {\r\n layout: \"with-sheet\"\r\n} & SheetOptions\r\n\r\nexport type AppContentProps = FullLayoutProps | SplitLayoutProps | WithSheetLayoutProps\r\n\r\nconst splitRatioClasses: Record<SplitRatio, [string, string]> = {\r\n \"one-half\": [\"w-1/2\", \"w-1/2\"],\r\n \"one-third\": [\"w-1/3\", \"w-2/3\"],\r\n \"two-third\": [\"w-2/3\", \"w-1/3\"],\r\n \"one-fourth\": [\"w-1/4\", \"w-3/4\"],\r\n \"three-fourth\": [\"w-3/4\", \"w-1/4\"],\r\n \"one-fifth\": [\"w-1/5\", \"w-4/5\"],\r\n \"four-fifth\": [\"w-4/5\", \"w-1/5\"],\r\n}\r\n\r\nconst paddingClasses = {\r\n none: \"p-0\",\r\n tight: \"p-2\",\r\n default: \"p-4\",\r\n loose: \"p-6\",\r\n}\r\n\r\nconst getContainerSheetClasses = (side: SheetSide, width: SplitRatio) => {\r\n const [contentWidth, sheetWidth] = splitRatioClasses[width]\r\n\r\n return {\r\n container: \"inset-y-0 z-50 transition-all duration-500 ease-in-out\",\r\n content: cn(\r\n \"h-full bg-background transition-all duration-500 ease-in-out\",\r\n side === \"right\" ? \"border-l\" : \"border-r\"\r\n ),\r\n transform: side === \"right\" ? \"translate-x-full\" : \"-translate-x-full\",\r\n transformOpen: \"translate-x-0\",\r\n contentPushClass: side === \"right\" ? sheetWidth : contentWidth,\r\n sheetPushClass: side === \"right\" ? contentWidth : sheetWidth,\r\n }\r\n}\r\n\r\nconst baseClasses = \"flex flex-col overflow-hidden rounded-2xl relative\"\r\nconst variantClasses = {\r\n default: \"bg-background\",\r\n card: \"bg-background shadow-sm border\",\r\n border: \"bg-background border-2\",\r\n transparent: \"bg-transparent\",\r\n}\r\n\r\nexport const AppContent = (props: AppContentProps) => {\r\n const {\r\n children,\r\n className,\r\n variant = \"default\",\r\n layout = \"full\",\r\n header,\r\n footer,\r\n headerClassName,\r\n contentClassName,\r\n footerClassName,\r\n parentContainer = false,\r\n padding = parentContainer ? \"none\" : \"tight\",\r\n } = props\r\n\r\n const isNested = useContext(AppContentContext)\r\n const [internalSheetOpen, setInternalSheetOpen] = useState(false)\r\n\r\n const contentWrapper = React.useCallback(\r\n (content: React.ReactNode) => (\r\n <div className={cn(\r\n \"flex-1 overflow-auto h-full no-scrollbar\",\r\n parentContainer && \"flex\",\r\n !parentContainer && paddingClasses[padding],\r\n contentClassName\r\n )}>\r\n {content}\r\n </div>\r\n ),\r\n [padding, parentContainer, contentClassName]\r\n )\r\n\r\n const renderContent = () => {\r\n switch (layout) {\r\n case \"split\": {\r\n const { splitRatio = \"three-fourth\", reverse = false } = props as SplitLayoutProps\r\n if (!Array.isArray(children) || children.length !== 2) {\r\n return (\r\n <div className=\"flex items-center justify-center h-full text-red-500\">\r\n Error: AppContent with layout=\"split\" requires exactly 2 children\r\n </div>\r\n )\r\n }\r\n\r\n const [leftClass, rightClass] = splitRatioClasses[splitRatio]\r\n const [firstChild, secondChild] = reverse ? [children[1], children[0]] : [children[0], children[1]]\r\n const [firstClass, secondClass] = reverse ? [rightClass, leftClass] : [leftClass, rightClass]\r\n\r\n return (\r\n <div className=\"flex h-full gap-2\">\r\n <div className={cn(firstClass, \"overflow-auto\")}>\r\n {contentWrapper(firstChild)}\r\n </div>\r\n <div className={cn(secondClass, \"overflow-auto\")}>\r\n {contentWrapper(secondChild)}\r\n </div>\r\n </div>\r\n )\r\n }\r\n\r\n case \"with-sheet\": {\r\n const {\r\n sheetContent,\r\n sheetWidth = \"four-fifth\",\r\n sheetSide = \"right\",\r\n sheetMode = \"container\",\r\n sheetClassName,\r\n isSheetOpen,\r\n onSheetOpenChange,\r\n disableOverlay = true,\r\n showSheetOverlay = true,\r\n } = props as WithSheetLayoutProps;\r\n\r\n const isControlled = isSheetOpen !== undefined && onSheetOpenChange;\r\n const sheetOpen = isControlled ? isSheetOpen : internalSheetOpen;\r\n const setSheetOpen = isControlled ? onSheetOpenChange : setInternalSheetOpen;\r\n\r\n if (sheetMode === \"container\") {\r\n const sheetClasses = getContainerSheetClasses(sheetSide, sheetWidth);\r\n const sheetWidthClass = splitRatioClasses[sheetWidth][0];\r\n\r\n // Separate rendering for overlay mode vs push mode\r\n if (disableOverlay) {\r\n // Push mode - sheet pushes content\r\n return (\r\n <div className={cn(\"flex relative flex-1 overflow-hidden\", contentClassName)}>\r\n {/* Main content area */}\r\n <div className={cn(\r\n \"h-full overflow-auto transition-all duration-500\",\r\n sheetOpen\r\n ? sheetClasses.contentPushClass\r\n : \"w-full\",\r\n sheetOpen && \"overflow-y-auto overflow-x-hidden\"\r\n )}>\r\n <div className={cn(\"h-full\", !parentContainer && paddingClasses[padding])}>\r\n {children}\r\n </div>\r\n </div>\r\n\r\n {/* Container sheet */}\r\n <div\r\n className={cn(\r\n sheetClasses.container,\r\n \"transition-all duration-500 ease-in-out h-full\",\r\n sheetWidthClass,\r\n sheetOpen && [\"left\", \"right\"].includes(sheetSide)\r\n ? cn(sheetClasses.sheetPushClass, \"overflow-y-auto\")\r\n : sheetOpen\r\n ? sheetClasses.transformOpen\r\n : cn(sheetClasses.transform, \"hidden\"),\r\n \"overflow-y-auto\"\r\n )}\r\n >\r\n <div className={cn(sheetClasses.content, sheetClassName, \"h-full\")}>\r\n {sheetContent}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n } else {\r\n // Overlay mode - sheet overlays content with dark background\r\n return (\r\n <div tabIndex={-1} className={cn(\"flex relative flex-1 overflow-hidden\", contentClassName)}>\r\n {/* Main content area (always full width) */}\r\n <div className={cn(\r\n \"h-full overflow-auto w-full transition-all duration-500 relative z-10\"\r\n )}>\r\n <div className={cn(\"h-full\", !parentContainer && paddingClasses[padding])}>\r\n {children}\r\n </div>\r\n </div>\r\n\r\n {/* Container for sheet and overlay */}\r\n <div\r\n tabIndex={-1}\r\n className={cn(\r\n \"absolute inset-0 z-20\",\r\n !sheetOpen && \"pointer-events-none\"\r\n )}>\r\n {/* Overlay layer */}\r\n {showSheetOverlay && (\r\n <div\r\n className={cn(\r\n \"absolute inset-0 bg-black/50 transition-opacity duration-500\",\r\n sheetOpen ? \"opacity-100\" : \"opacity-0 pointer-events-none\"\r\n )}\r\n onClick={() => setSheetOpen(false)}\r\n />\r\n )}\r\n\r\n {/* Container sheet */}\r\n <div\r\n className={cn(\r\n sheetClasses.container,\r\n \"transition-all duration-500 backdrop-blur-2xl ease-in-out h-full absolute\",\r\n sheetWidthClass,\r\n sheetOpen\r\n ? \"translate-x-0 opacity-100\"\r\n : cn(\r\n sheetSide === \"right\" ? \"translate-x-full\" : \"-translate-x-full\",\r\n \"opacity-0 pointer-events-none\"\r\n ),\r\n \"overflow-y-auto\"\r\n )}\r\n style={{ [sheetSide]: 0 }}\r\n tabIndex={-1}\r\n >\r\n <div className={cn(sheetClasses.content, sheetClassName, \"h-full\")}>\r\n {sheetContent}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {children}\r\n <Sheet open={sheetOpen} onOpenChange={setSheetOpen}>\r\n <SheetPortal>\r\n <SheetContent\r\n side={sheetSide}\r\n className={cn(\r\n \"fixed bg-background border sm:max-w-full\",\r\n \"transition-all duration-500 ease-in-out\",\r\n splitRatioClasses[sheetWidth][0],\r\n sheetClassName\r\n )}\r\n >\r\n {sheetContent}\r\n </SheetContent>\r\n </SheetPortal>\r\n </Sheet>\r\n </>\r\n );\r\n }\r\n\r\n default:\r\n return contentWrapper(children)\r\n }\r\n }\r\n\r\n return (\r\n <AppContentContext.Provider value={true}>\r\n <div className={cn(\r\n baseClasses,\r\n variantClasses[variant],\r\n paddingClasses[padding],\r\n isNested && \"flex-1\",\r\n parentContainer && \"h-full\",\r\n !parentContainer && \"rounded-2xl\",\r\n className\r\n )}>\r\n {header && (\r\n <div\r\n className={cn(\r\n \"border-b\",\r\n headerClassName,\r\n variant === \"card\" && !parentContainer && \"rounded-t-2xl\",\r\n variant === \"border\" && \"border-b-2\",\r\n paddingClasses[padding]\r\n )}\r\n >\r\n {header}\r\n </div>\r\n )}\r\n {renderContent()}\r\n {footer && (\r\n <div\r\n className={cn(\r\n \"border-t\",\r\n footerClassName,\r\n variant === \"card\" && !parentContainer && \"rounded-b-2xl\",\r\n variant === \"border\" && \"border-t-2\",\r\n paddingClasses[padding]\r\n )}\r\n >\r\n {footer}\r\n </div>\r\n )}\r\n </div>\r\n </AppContentContext.Provider>\r\n )\r\n}\r\n","import * as React from \"react\"\nimport { Dialog as SheetPrimitive } from \"radix-ui\"\nimport { XIcon } from \"lucide-react\"\nimport { cn } from \"../../lib/utils.js\"\n\nfunction Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>) {\n return <SheetPrimitive.Root data-slot=\"sheet\" {...props} />\n}\n\nfunction SheetTrigger({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Trigger>) {\n return <SheetPrimitive.Trigger data-slot=\"sheet-trigger\" {...props} />\n}\n\nfunction SheetClose({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Close>) {\n return <SheetPrimitive.Close data-slot=\"sheet-close\" {...props} />\n}\n\nfunction SheetPortal({\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Portal>) {\n return <SheetPrimitive.Portal data-slot=\"sheet-portal\" {...props} />\n}\n\nfunction SheetOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Overlay>) {\n return (\n <SheetPrimitive.Overlay\n data-slot=\"sheet-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SheetContent({\n className,\n children,\n side = \"right\",\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Content> & {\n side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n}) {\n return (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n data-slot=\"sheet-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n side === \"right\" &&\n \"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm\",\n side === \"left\" &&\n \"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm\",\n side === \"top\" &&\n \"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b\",\n side === \"bottom\" &&\n \"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t\",\n className\n )}\n {...props}\n >\n {children}\n <SheetPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none\">\n <XIcon className=\"size-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n </SheetPrimitive.Content>\n </SheetPortal>\n )\n}\n\nfunction SheetHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-header\"\n className={cn(\"flex flex-col gap-1.5 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sheet-footer\"\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetTitle({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Title>) {\n return (\n <SheetPrimitive.Title\n data-slot=\"sheet-title\"\n className={cn(\"text-foreground font-semibold\", className)}\n {...props}\n />\n )\n}\n\nfunction SheetDescription({\n className,\n ...props\n}: React.ComponentProps<typeof SheetPrimitive.Description>) {\n return (\n <SheetPrimitive.Description\n data-slot=\"sheet-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetOverlay,\n SheetPortal,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n"],"mappings":"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","names":["clsx","twMerge","cn","inputs","React","useState","createContext","useContext","SheetPrimitive","XIcon","jsx","jsxs","Sheet","props","SheetPrimitive","SheetPortal","props","jsx","SheetPrimitive","SheetOverlay","className","cn","SheetContent","children","side","jsxs","XIcon","Fragment","jsx","jsxs","AppContentContext","createContext","splitRatioClasses","paddingClasses","getContainerSheetClasses","side","width","contentWidth","sheetWidth","cn","baseClasses","variantClasses","AppContent","props","children","className","variant","layout","header","footer","headerClassName","contentClassName","footerClassName","parentContainer","padding","isNested","useContext","internalSheetOpen","setInternalSheetOpen","useState","contentWrapper","React","content","renderContent","splitRatio","reverse","leftClass","rightClass","firstChild","secondChild","firstClass","secondClass","sheetContent","sheetSide","sheetMode","sheetClassName","isSheetOpen","onSheetOpenChange","disableOverlay","showSheetOverlay","isControlled","sheetOpen","setSheetOpen","sheetClasses","sheetWidthClass","Sheet","SheetPortal","SheetContent"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client"
|
|
2
|
-
"use strict";var ie=Object.create;var k=Object.defineProperty;var le=Object.getOwnPropertyDescriptor;var pe=Object.getOwnPropertyNames;var de=Object.getPrototypeOf,ce=Object.prototype.hasOwnProperty;var ue=(e,a)=>{for(var r in a)k(e,r,{get:a[r],enumerable:!0})},I=(e,a,r,t)=>{if(a&&typeof a=="object"||typeof a=="function")for(let p of pe(a))!ce.call(e,p)&&p!==r&&k(e,p,{get:()=>a[p],enumerable:!(t=le(a,p))||t.enumerable});return e};var fe=(e,a,r)=>(r=e!=null?ie(de(e)):{},I(a||!e||!e.__esModule?k(r,"default",{value:e,enumerable:!0}):r,e)),he=e=>I(k({},"__esModule",{value:!0}),e);var Se={};ue(Se,{createLayoutComponents:()=>Ne});module.exports=he(Se);var S=require("lucide-react");var _=require("clsx"),j=require("tailwind-merge");function o(...e){return(0,j.twMerge)((0,_.clsx)(e))}var q=require("radix-ui"),E=require("class-variance-authority");var X=require("react/jsx-runtime"),me=(0,E.cva)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function T({className:e,variant:a,size:r,asChild:t=!1,...p}){let i=t?q.Slot.Slot:"button";return(0,X.jsx)(i,{"data-slot":"button",className:o(me({variant:a,size:r,className:e}),"transition-none"),...p})}var G=require("react-router"),l=require("react/jsx-runtime"),J=({className:e,columns:a=[],showBackButton:r=!0,meta:t={title:""}})=>{let p=()=>{if(!t.backAction||!r)return null;let n={variant:"secondary",size:"icon",className:"hover:bg-primary/20 inline-flex"};return t.backAction.href?(0,l.jsx)(G.NavLink,{to:t.backAction.href,children:(0,l.jsxs)(T,{...n,children:[(0,l.jsx)(S.ArrowLeftIcon,{className:"size-6"}),t.backAction.content]})}):(0,l.jsxs)(T,{...n,onClick:t.backAction.onClick,children:[(0,l.jsx)(S.ArrowLeftIcon,{className:"size-6"}),t.backAction.content]})},i=()=>!t.metadata||t.metadata.length===0?null:(0,l.jsx)("div",{className:"flex gap-4",children:t.metadata.map((n,d)=>n.value&&(0,l.jsxs)("div",{className:"text-sm",children:[(0,l.jsxs)("span",{className:"text-muted-foreground",children:[n.label," "]}),(0,l.jsx)("span",{children:n.value})]},d))}),u=()=>t.status?(0,l.jsx)("span",{className:o("inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium",{success:"bg-green-100 text-green-800",warning:"bg-yellow-100 text-yellow-800",critical:"bg-red-100 text-red-800",info:"bg-blue-100 text-blue-800",default:"bg-gray-100 text-gray-800"}[t.status.color]),children:t.status.content}):null,B={content:(0,l.jsxs)("div",{className:"flex gap-2 items-center",children:[p(),(0,l.jsxs)("div",{className:"flex flex-col gap-2 w-max",children:[(0,l.jsx)("h1",{className:"text-2xl font-bold tracking-tight",children:t.title}),u(),t.description&&(0,l.jsx)("p",{className:"text-muted-foreground",children:t.description}),i(),t.breadcrumbs&&t.breadcrumbs.length>0&&(0,l.jsx)("div",{className:"flex items-center text-sm text-muted-foreground",children:t.breadcrumbs.map((n,d)=>(0,l.jsxs)("div",{className:"flex items-center",children:[n.href?(0,l.jsx)("span",{className:"hover:text-primary hover:underline",children:n.label}):(0,l.jsx)("span",{children:n.label}),d<t.breadcrumbs.length-1&&(0,l.jsx)(S.ChevronRight,{className:"mx-2 h-4 w-4"})]},d))})]})]}),align:"left",width:"fill"},C={content:t.primaryActions,align:"right",width:"auto"},M=[B,...a.filter(n=>n!==void 0),C];return(0,l.jsx)("div",{className:o("flex items-center w-full gap-4 p-2",e),children:M.map((n,d)=>(0,l.jsx)("div",{className:o("flex items-center h-full",n.className,{"justify-start":n.align==="left","justify-center":n.align==="center","justify-end":n.align==="right","flex-1":n.width==="fill"}),children:n.content},d))})};var O=require("react/jsx-runtime"),K=({className:e,columns:a=[],meta:r={title:""}})=>{let t={content:(0,O.jsx)("div",{className:"flex items-center gap-4 p-2",children:r.secondaryActions}),align:"right",width:"fill"},p=[...a.filter(i=>i!==void 0),t];return(0,O.jsx)("div",{className:o("flex items-center w-full gap-4",e),children:p.map((i,u)=>(0,O.jsx)("div",{className:o("flex items-center h-full",i.className,{"justify-start":i.align==="left","justify-center":i.align==="center","justify-end":i.align==="right","flex-1":i.width==="fill"}),children:i.content},u))})};var g=fe(require("react"),1);var x=require("radix-ui"),Q=require("lucide-react");var c=require("react/jsx-runtime");function U({...e}){return(0,c.jsx)(x.Dialog.Root,{"data-slot":"sheet",...e})}function H({...e}){return(0,c.jsx)(x.Dialog.Portal,{"data-slot":"sheet-portal",...e})}function ge({className:e,...a}){return(0,c.jsx)(x.Dialog.Overlay,{"data-slot":"sheet-overlay",className:o("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",e),...a})}function Y({className:e,children:a,side:r="right",...t}){return(0,c.jsxs)(H,{children:[(0,c.jsx)(ge,{}),(0,c.jsxs)(x.Dialog.Content,{"data-slot":"sheet-content",className:o("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",r==="right"&&"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",r==="left"&&"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",r==="top"&&"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",r==="bottom"&&"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",e),...t,children:[a,(0,c.jsxs)(x.Dialog.Close,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",children:[(0,c.jsx)(Q.XIcon,{className:"size-4"}),(0,c.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}var s=require("react/jsx-runtime"),Z=(0,g.createContext)(!1),z={"one-half":["w-1/2","w-1/2"],"one-third":["w-1/3","w-2/3"],"two-third":["w-2/3","w-1/3"],"one-fourth":["w-1/4","w-3/4"],"three-fourth":["w-3/4","w-1/4"],"one-fifth":["w-1/5","w-4/5"],"four-fifth":["w-4/5","w-1/5"]},y={none:"p-0",tight:"p-2",default:"p-4",loose:"p-6"},ve=(e,a)=>{let[r,t]=z[a];return{container:"inset-y-0 z-50 transition-all duration-500 ease-in-out",content:o("h-full bg-background transition-all duration-500 ease-in-out",e==="right"?"border-l":"border-r"),transform:e==="right"?"translate-x-full":"-translate-x-full",transformOpen:"translate-x-0",contentPushClass:e==="right"?t:r,sheetPushClass:e==="right"?r:t}},Ce="flex flex-col overflow-hidden rounded-2xl relative",be={default:"bg-background",card:"bg-background shadow-sm border",border:"bg-background border-2",transparent:"bg-transparent"},$=e=>{let{children:a,className:r,variant:t="default",layout:p="full",header:i,footer:u,headerClassName:B,contentClassName:C,footerClassName:M,parentContainer:n=!1,padding:d=n?"none":"tight"}=e,oe=(0,g.useContext)(Z),[ae,ne]=(0,g.useState)(!1),F=g.default.useCallback(v=>(0,s.jsx)("div",{className:o("flex-1 overflow-auto h-full no-scrollbar",n&&"flex",!n&&y[d],C),children:v}),[d,n,C]),se=()=>{switch(p){case"split":{let{splitRatio:v="three-fourth",reverse:b=!1}=e;if(!Array.isArray(a)||a.length!==2)return(0,s.jsx)("div",{className:"flex items-center justify-center h-full text-red-500",children:'Error: AppContent with layout="split" requires exactly 2 children'});let[f,P]=z[v],[N,A]=b?[a[1],a[0]]:[a[0],a[1]],[R,L]=b?[P,f]:[f,P];return(0,s.jsxs)("div",{className:"flex h-full gap-2",children:[(0,s.jsx)("div",{className:o(R,"overflow-auto"),children:F(N)}),(0,s.jsx)("div",{className:o(L,"overflow-auto"),children:F(A)})]})}case"with-sheet":{let{sheetContent:v,sheetWidth:b="four-fifth",sheetSide:f="right",sheetMode:P="container",sheetClassName:N,isSheetOpen:A,onSheetOpenChange:R,disableOverlay:L=!0,showSheetOverlay:re=!0}=e,W=A!==void 0&&R,h=W?A:ae,V=W?R:ne;if(P==="container"){let m=ve(f,b),D=z[b][0];return L?(0,s.jsxs)("div",{className:o("flex relative flex-1 overflow-hidden",C),children:[(0,s.jsx)("div",{className:o("h-full overflow-auto transition-all duration-500",h?m.contentPushClass:"w-full",h&&"overflow-y-auto overflow-x-hidden"),children:(0,s.jsx)("div",{className:o("h-full",!n&&y[d]),children:a})}),(0,s.jsx)("div",{className:o(m.container,"transition-all duration-500 ease-in-out h-full",D,h&&["left","right"].includes(f)?o(m.sheetPushClass,"overflow-y-auto"):h?m.transformOpen:o(m.transform,"hidden"),"overflow-y-auto"),children:(0,s.jsx)("div",{className:o(m.content,N,"h-full"),children:v})})]}):(0,s.jsxs)("div",{className:o("flex relative flex-1 overflow-hidden",C),children:[(0,s.jsx)("div",{className:o("h-full overflow-auto w-full transition-all duration-500 relative z-10"),children:(0,s.jsx)("div",{className:o("h-full",!n&&y[d]),children:a})}),(0,s.jsxs)("div",{className:o("absolute inset-0 z-20",!h&&"pointer-events-none"),children:[re&&(0,s.jsx)("div",{className:o("absolute inset-0 bg-black/50 transition-opacity duration-500",h?"opacity-100":"opacity-0 pointer-events-none"),onClick:()=>V(!1)}),(0,s.jsx)("div",{className:o(m.container,"transition-all duration-500 backdrop-blur-2xl ease-in-out h-full absolute",D,h?"translate-x-0 opacity-100":o(f==="right"?"translate-x-full":"-translate-x-full","opacity-0 pointer-events-none"),"overflow-y-auto"),style:{[f]:0},children:(0,s.jsx)("div",{className:o(m.content,N,"h-full"),children:v})})]})]})}return(0,s.jsxs)(s.Fragment,{children:[a,(0,s.jsx)(U,{open:h,onOpenChange:V,children:(0,s.jsx)(H,{children:(0,s.jsx)(Y,{side:f,className:o("fixed bg-background border sm:max-w-full","transition-all duration-500 ease-in-out",z[b][0],N),children:v})})})]})}default:return F(a)}};return(0,s.jsx)(Z.Provider,{value:!0,children:(0,s.jsxs)("div",{className:o(Ce,be[t],y[d],oe&&"flex-1",n&&"h-full",!n&&"rounded-2xl",r),children:[i&&(0,s.jsx)("div",{className:o("border-b",B,t==="card"&&!n&&"rounded-t-2xl",t==="border"&&"border-b-2",y[d]),children:i}),se(),u&&(0,s.jsx)("div",{className:o("border-t",M,t==="card"&&!n&&"rounded-b-2xl",t==="border"&&"border-t-2",y[d]),children:u})]})})};var te=require("react/jsx-runtime"),xe={none:"gap-0",tight:"gap-2",default:"gap-4",loose:"gap-6","extra-loose":"gap-8"},ye={none:"p-0",tight:"p-2",default:"p-4",loose:"p-6"},ee=({children:e,className:a,spacing:r="tight",padding:t="none"})=>(0,te.jsx)("div",{className:o("flex flex-col h-full",xe[r],ye[t],a),children:e});var w=require("react/jsx-runtime");function Ne({useTypedAppMeta:e}){return{AppHeader:i=>{let{meta:u}=e();return(0,w.jsx)(J,{...i,meta:u})},AppFooter:i=>{let{meta:u}=e();return(0,w.jsx)(K,{...i,meta:u})},AppContent:i=>(0,w.jsx)($,{...i}),AppContainer:i=>(0,w.jsx)(ee,{...i})}}0&&(module.exports={createLayoutComponents});
|
|
2
|
+
"use strict";var ie=Object.create;var k=Object.defineProperty;var le=Object.getOwnPropertyDescriptor;var pe=Object.getOwnPropertyNames;var de=Object.getPrototypeOf,ce=Object.prototype.hasOwnProperty;var ue=(e,a)=>{for(var r in a)k(e,r,{get:a[r],enumerable:!0})},D=(e,a,r,t)=>{if(a&&typeof a=="object"||typeof a=="function")for(let p of pe(a))!ce.call(e,p)&&p!==r&&k(e,p,{get:()=>a[p],enumerable:!(t=le(a,p))||t.enumerable});return e};var fe=(e,a,r)=>(r=e!=null?ie(de(e)):{},D(a||!e||!e.__esModule?k(r,"default",{value:e,enumerable:!0}):r,e)),he=e=>D(k({},"__esModule",{value:!0}),e);var Se={};ue(Se,{createLayoutComponents:()=>Ne});module.exports=he(Se);var S=require("lucide-react");var _=require("clsx"),j=require("tailwind-merge");function o(...e){return(0,j.twMerge)((0,_.clsx)(e))}var q=require("radix-ui"),E=require("class-variance-authority");var X=require("react/jsx-runtime"),me=(0,E.cva)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function T({className:e,variant:a,size:r,asChild:t=!1,...p}){let i=t?q.Slot.Slot:"button";return(0,X.jsx)(i,{"data-slot":"button",className:o(me({variant:a,size:r,className:e}),"transition-none"),...p})}var G=require("react-router"),l=require("react/jsx-runtime"),J=({className:e,columns:a=[],showBackButton:r=!0,meta:t={title:""}})=>{let p=()=>{if(!t.backAction||!r)return null;let n={variant:"secondary",size:"icon",className:"hover:bg-primary/20 inline-flex"};return t.backAction.href?(0,l.jsx)(G.NavLink,{to:t.backAction.href,children:(0,l.jsxs)(T,{...n,children:[(0,l.jsx)(S.ArrowLeftIcon,{className:"size-6"}),t.backAction.content]})}):(0,l.jsxs)(T,{...n,onClick:t.backAction.onClick,children:[(0,l.jsx)(S.ArrowLeftIcon,{className:"size-6"}),t.backAction.content]})},i=()=>!t.metadata||t.metadata.length===0?null:(0,l.jsx)("div",{className:"flex gap-4",children:t.metadata.map((n,d)=>n.value&&(0,l.jsxs)("div",{className:"text-sm",children:[(0,l.jsxs)("span",{className:"text-muted-foreground",children:[n.label," "]}),(0,l.jsx)("span",{children:n.value})]},d))}),u=()=>t.status?(0,l.jsx)("span",{className:o("inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium",{success:"bg-green-100 text-green-800",warning:"bg-yellow-100 text-yellow-800",critical:"bg-red-100 text-red-800",info:"bg-blue-100 text-blue-800",default:"bg-gray-100 text-gray-800"}[t.status.color]),children:t.status.content}):null,B={content:(0,l.jsxs)("div",{className:"flex gap-2 items-center",children:[p(),(0,l.jsxs)("div",{className:"flex flex-col gap-2 w-max",children:[(0,l.jsx)("h1",{className:"text-2xl font-bold tracking-tight",children:t.title}),u(),t.description&&(0,l.jsx)("p",{className:"text-muted-foreground",children:t.description}),i(),t.breadcrumbs&&t.breadcrumbs.length>0&&(0,l.jsx)("div",{className:"flex items-center text-sm text-muted-foreground",children:t.breadcrumbs.map((n,d)=>(0,l.jsxs)("div",{className:"flex items-center",children:[n.href?(0,l.jsx)("span",{className:"hover:text-primary hover:underline",children:n.label}):(0,l.jsx)("span",{children:n.label}),d<t.breadcrumbs.length-1&&(0,l.jsx)(S.ChevronRight,{className:"mx-2 h-4 w-4"})]},d))})]})]}),align:"left",width:"fill"},C={content:t.primaryActions,align:"right",width:"auto"},M=[B,...a.filter(n=>n!==void 0),C];return(0,l.jsx)("div",{className:o("flex items-center w-full gap-4 p-2",e),children:M.map((n,d)=>(0,l.jsx)("div",{className:o("flex items-center h-full",n.className,{"justify-start":n.align==="left","justify-center":n.align==="center","justify-end":n.align==="right","flex-1":n.width==="fill"}),children:n.content},d))})};var O=require("react/jsx-runtime"),K=({className:e,columns:a=[],meta:r={title:""}})=>{let t={content:(0,O.jsx)("div",{className:"flex items-center gap-4 p-2",children:r.secondaryActions}),align:"right",width:"fill"},p=[...a.filter(i=>i!==void 0),t];return(0,O.jsx)("div",{className:o("flex items-center w-full gap-4",e),children:p.map((i,u)=>(0,O.jsx)("div",{className:o("flex items-center h-full",i.className,{"justify-start":i.align==="left","justify-center":i.align==="center","justify-end":i.align==="right","flex-1":i.width==="fill"}),children:i.content},u))})};var g=fe(require("react"),1);var x=require("radix-ui"),Q=require("lucide-react");var c=require("react/jsx-runtime");function U({...e}){return(0,c.jsx)(x.Dialog.Root,{"data-slot":"sheet",...e})}function H({...e}){return(0,c.jsx)(x.Dialog.Portal,{"data-slot":"sheet-portal",...e})}function ge({className:e,...a}){return(0,c.jsx)(x.Dialog.Overlay,{"data-slot":"sheet-overlay",className:o("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",e),...a})}function Y({className:e,children:a,side:r="right",...t}){return(0,c.jsxs)(H,{children:[(0,c.jsx)(ge,{}),(0,c.jsxs)(x.Dialog.Content,{"data-slot":"sheet-content",className:o("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500",r==="right"&&"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",r==="left"&&"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",r==="top"&&"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",r==="bottom"&&"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",e),...t,children:[a,(0,c.jsxs)(x.Dialog.Close,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",children:[(0,c.jsx)(Q.XIcon,{className:"size-4"}),(0,c.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}var s=require("react/jsx-runtime"),Z=(0,g.createContext)(!1),z={"one-half":["w-1/2","w-1/2"],"one-third":["w-1/3","w-2/3"],"two-third":["w-2/3","w-1/3"],"one-fourth":["w-1/4","w-3/4"],"three-fourth":["w-3/4","w-1/4"],"one-fifth":["w-1/5","w-4/5"],"four-fifth":["w-4/5","w-1/5"]},y={none:"p-0",tight:"p-2",default:"p-4",loose:"p-6"},ve=(e,a)=>{let[r,t]=z[a];return{container:"inset-y-0 z-50 transition-all duration-500 ease-in-out",content:o("h-full bg-background transition-all duration-500 ease-in-out",e==="right"?"border-l":"border-r"),transform:e==="right"?"translate-x-full":"-translate-x-full",transformOpen:"translate-x-0",contentPushClass:e==="right"?t:r,sheetPushClass:e==="right"?r:t}},Ce="flex flex-col overflow-hidden rounded-2xl relative",be={default:"bg-background",card:"bg-background shadow-sm border",border:"bg-background border-2",transparent:"bg-transparent"},$=e=>{let{children:a,className:r,variant:t="default",layout:p="full",header:i,footer:u,headerClassName:B,contentClassName:C,footerClassName:M,parentContainer:n=!1,padding:d=n?"none":"tight"}=e,oe=(0,g.useContext)(Z),[ae,ne]=(0,g.useState)(!1),F=g.default.useCallback(v=>(0,s.jsx)("div",{className:o("flex-1 overflow-auto h-full no-scrollbar",n&&"flex",!n&&y[d],C),children:v}),[d,n,C]),se=()=>{switch(p){case"split":{let{splitRatio:v="three-fourth",reverse:b=!1}=e;if(!Array.isArray(a)||a.length!==2)return(0,s.jsx)("div",{className:"flex items-center justify-center h-full text-red-500",children:'Error: AppContent with layout="split" requires exactly 2 children'});let[f,P]=z[v],[N,A]=b?[a[1],a[0]]:[a[0],a[1]],[R,L]=b?[P,f]:[f,P];return(0,s.jsxs)("div",{className:"flex h-full gap-2",children:[(0,s.jsx)("div",{className:o(R,"overflow-auto"),children:F(N)}),(0,s.jsx)("div",{className:o(L,"overflow-auto"),children:F(A)})]})}case"with-sheet":{let{sheetContent:v,sheetWidth:b="four-fifth",sheetSide:f="right",sheetMode:P="container",sheetClassName:N,isSheetOpen:A,onSheetOpenChange:R,disableOverlay:L=!0,showSheetOverlay:re=!0}=e,W=A!==void 0&&R,h=W?A:ae,V=W?R:ne;if(P==="container"){let m=ve(f,b),I=z[b][0];return L?(0,s.jsxs)("div",{className:o("flex relative flex-1 overflow-hidden",C),children:[(0,s.jsx)("div",{className:o("h-full overflow-auto transition-all duration-500",h?m.contentPushClass:"w-full",h&&"overflow-y-auto overflow-x-hidden"),children:(0,s.jsx)("div",{className:o("h-full",!n&&y[d]),children:a})}),(0,s.jsx)("div",{className:o(m.container,"transition-all duration-500 ease-in-out h-full",I,h&&["left","right"].includes(f)?o(m.sheetPushClass,"overflow-y-auto"):h?m.transformOpen:o(m.transform,"hidden"),"overflow-y-auto"),children:(0,s.jsx)("div",{className:o(m.content,N,"h-full"),children:v})})]}):(0,s.jsxs)("div",{tabIndex:-1,className:o("flex relative flex-1 overflow-hidden",C),children:[(0,s.jsx)("div",{className:o("h-full overflow-auto w-full transition-all duration-500 relative z-10"),children:(0,s.jsx)("div",{className:o("h-full",!n&&y[d]),children:a})}),(0,s.jsxs)("div",{tabIndex:-1,className:o("absolute inset-0 z-20",!h&&"pointer-events-none"),children:[re&&(0,s.jsx)("div",{className:o("absolute inset-0 bg-black/50 transition-opacity duration-500",h?"opacity-100":"opacity-0 pointer-events-none"),onClick:()=>V(!1)}),(0,s.jsx)("div",{className:o(m.container,"transition-all duration-500 backdrop-blur-2xl ease-in-out h-full absolute",I,h?"translate-x-0 opacity-100":o(f==="right"?"translate-x-full":"-translate-x-full","opacity-0 pointer-events-none"),"overflow-y-auto"),style:{[f]:0},tabIndex:-1,children:(0,s.jsx)("div",{className:o(m.content,N,"h-full"),children:v})})]})]})}return(0,s.jsxs)(s.Fragment,{children:[a,(0,s.jsx)(U,{open:h,onOpenChange:V,children:(0,s.jsx)(H,{children:(0,s.jsx)(Y,{side:f,className:o("fixed bg-background border sm:max-w-full","transition-all duration-500 ease-in-out",z[b][0],N),children:v})})})]})}default:return F(a)}};return(0,s.jsx)(Z.Provider,{value:!0,children:(0,s.jsxs)("div",{className:o(Ce,be[t],y[d],oe&&"flex-1",n&&"h-full",!n&&"rounded-2xl",r),children:[i&&(0,s.jsx)("div",{className:o("border-b",B,t==="card"&&!n&&"rounded-t-2xl",t==="border"&&"border-b-2",y[d]),children:i}),se(),u&&(0,s.jsx)("div",{className:o("border-t",M,t==="card"&&!n&&"rounded-b-2xl",t==="border"&&"border-t-2",y[d]),children:u})]})})};var te=require("react/jsx-runtime"),xe={none:"gap-0",tight:"gap-2",default:"gap-4",loose:"gap-6","extra-loose":"gap-8"},ye={none:"p-0",tight:"p-2",default:"p-4",loose:"p-6"},ee=({children:e,className:a,spacing:r="tight",padding:t="none"})=>(0,te.jsx)("div",{className:o("flex flex-col h-full",xe[r],ye[t],a),children:e});var w=require("react/jsx-runtime");function Ne({useTypedAppMeta:e}){return{AppHeader:i=>{let{meta:u}=e();return(0,w.jsx)(J,{...i,meta:u})},AppFooter:i=>{let{meta:u}=e();return(0,w.jsx)(K,{...i,meta:u})},AppContent:i=>(0,w.jsx)($,{...i}),AppContainer:i=>(0,w.jsx)(ee,{...i})}}0&&(module.exports={createLayoutComponents});
|
|
3
3
|
//# sourceMappingURL=factories.cjs.map
|