@tirth_jasoliya/ui 1.0.10 → 1.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/components/data/data-table/data-table-action-bar.cjs +1 -1
  2. package/dist/components/data/data-table/data-table-action-bar.cjs.map +1 -1
  3. package/dist/components/data/data-table/data-table-action-bar.js +1 -1
  4. package/dist/components/data/data-table/data-table-action-bar.js.map +1 -1
  5. package/dist/components/data/data-table/data-table-pagination.cjs +1 -1
  6. package/dist/components/data/data-table/data-table-pagination.cjs.map +1 -1
  7. package/dist/components/data/data-table/data-table-pagination.js +1 -1
  8. package/dist/components/data/data-table/data-table-pagination.js.map +1 -1
  9. package/dist/components/data/data-table/data-table-toolbar.cjs +1 -1
  10. package/dist/components/data/data-table/data-table-toolbar.cjs.map +1 -1
  11. package/dist/components/data/data-table/data-table-toolbar.d.cts +6 -2
  12. package/dist/components/data/data-table/data-table-toolbar.d.ts +6 -2
  13. package/dist/components/data/data-table/data-table-toolbar.js +1 -1
  14. package/dist/components/data/data-table/data-table-toolbar.js.map +1 -1
  15. package/dist/components/data/data-table/data-table-types.cjs +1 -1
  16. package/dist/components/data/data-table/data-table-types.cjs.map +1 -1
  17. package/dist/components/data/data-table/data-table-types.d.cts +48 -2
  18. package/dist/components/data/data-table/data-table-types.d.ts +48 -2
  19. package/dist/components/data/data-table/data-table.cjs +1 -1
  20. package/dist/components/data/data-table/data-table.cjs.map +1 -1
  21. package/dist/components/data/data-table/data-table.d.cts +1 -1
  22. package/dist/components/data/data-table/data-table.d.ts +1 -1
  23. package/dist/components/data/data-table/data-table.js +1 -1
  24. package/dist/components/data/data-table/data-table.js.map +1 -1
  25. package/dist/components/data/data-table/index.cjs +1 -1
  26. package/dist/components/data/data-table/index.cjs.map +1 -1
  27. package/dist/components/data/data-table/index.js +1 -1
  28. package/dist/components/data/data-table/index.js.map +1 -1
  29. package/dist/components/date-helper.cjs +3 -0
  30. package/dist/components/date-helper.cjs.map +1 -0
  31. package/dist/components/date-helper.d.cts +27 -0
  32. package/dist/components/date-helper.d.ts +27 -0
  33. package/dist/components/date-helper.js +3 -0
  34. package/dist/components/date-helper.js.map +1 -0
  35. package/dist/components/helper/date-filter.cjs +3 -0
  36. package/dist/components/helper/date-filter.cjs.map +1 -0
  37. package/dist/components/helper/date-filter.d.cts +14 -0
  38. package/dist/components/helper/date-filter.d.ts +14 -0
  39. package/dist/components/helper/date-filter.js +3 -0
  40. package/dist/components/helper/date-filter.js.map +1 -0
  41. package/dist/components/layouts/app-content.cjs +1 -1
  42. package/dist/components/layouts/app-content.cjs.map +1 -1
  43. package/dist/components/layouts/app-content.d.cts +2 -2
  44. package/dist/components/layouts/app-content.d.ts +2 -2
  45. package/dist/components/layouts/app-content.js +1 -1
  46. package/dist/components/layouts/app-content.js.map +1 -1
  47. package/dist/components/layouts/factories.cjs +1 -1
  48. package/dist/components/layouts/factories.cjs.map +1 -1
  49. package/dist/components/layouts/factories.js +1 -1
  50. package/dist/components/layouts/factories.js.map +1 -1
  51. package/dist/components/layouts/index.cjs +1 -1
  52. package/dist/components/layouts/index.cjs.map +1 -1
  53. package/dist/components/layouts/index.js +1 -1
  54. package/dist/components/layouts/index.js.map +1 -1
  55. package/dist/components/ui/calendar.cjs +3 -0
  56. package/dist/components/ui/calendar.cjs.map +1 -0
  57. package/dist/components/ui/calendar.d.cts +13 -0
  58. package/dist/components/ui/calendar.d.ts +13 -0
  59. package/dist/components/ui/calendar.js +3 -0
  60. package/dist/components/ui/calendar.js.map +1 -0
  61. package/dist/components/ui/table.cjs +1 -1
  62. package/dist/components/ui/table.cjs.map +1 -1
  63. package/dist/components/ui/table.js +1 -1
  64. package/dist/components/ui/table.js.map +1 -1
  65. package/dist/index.cjs +1 -1
  66. package/dist/index.cjs.map +1 -1
  67. package/dist/index.js +1 -1
  68. package/dist/index.js.map +1 -1
  69. package/package.json +28 -16
  70. package/dist/styles.css +0 -2
@@ -1,3 +1,3 @@
1
1
  "use client"
2
- import{ArrowLeftIcon as j,ChevronRight as se}from"lucide-react";import{clsx as ee}from"clsx";import{twMerge as te}from"tailwind-merge";function o(...t){return te(ee(t))}import{Slot as oe}from"radix-ui";import{cva as ne}from"class-variance-authority";import{jsx as re}from"react/jsx-runtime";var ae=ne("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 F({className:t,variant:a,size:s,asChild:e=!1,...f}){let r=e?oe.Slot:"button";return re(r,{"data-slot":"button",className:o(ae({variant:a,size:s,className:t}),"transition-none"),...f})}import{NavLink as ie}from"react-router";import{jsx as l,jsxs as m}from"react/jsx-runtime";var q=({className:t,columns:a=[],showBackButton:s=!0,meta:e={title:""}})=>{let f=()=>{if(!e.backAction||!s)return null;let n={variant:"secondary",size:"icon",className:"hover:bg-primary/20 inline-flex"};return e.backAction.href?l(ie,{to:e.backAction.href,children:m(F,{...n,children:[l(j,{className:"size-6"}),e.backAction.content]})}):m(F,{...n,onClick:e.backAction.onClick,children:[l(j,{className:"size-6"}),e.backAction.content]})},r=()=>!e.metadata||e.metadata.length===0?null:l("div",{className:"flex gap-4",children:e.metadata.map((n,u)=>n.value&&m("div",{className:"text-sm",children:[m("span",{className:"text-muted-foreground",children:[n.label," "]}),l("span",{children:n.value})]},u))}),d=()=>e.status?l("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"}[e.status.color]),children:e.status.content}):null,O={content:m("div",{className:"flex gap-2 items-center",children:[f(),m("div",{className:"flex flex-col gap-2 w-max",children:[l("h1",{className:"text-2xl font-bold tracking-tight",children:e.title}),d(),e.description&&l("p",{className:"text-muted-foreground",children:e.description}),r(),e.breadcrumbs&&e.breadcrumbs.length>0&&l("div",{className:"flex items-center text-sm text-muted-foreground",children:e.breadcrumbs.map((n,u)=>m("div",{className:"flex items-center",children:[n.href?l("span",{className:"hover:text-primary hover:underline",children:n.label}):l("span",{children:n.label}),u<e.breadcrumbs.length-1&&l(se,{className:"mx-2 h-4 w-4"})]},u))})]})]}),align:"left",width:"fill"},z={content:e.primaryActions,align:"right",width:"auto"},p=[O,...a.filter(n=>n!==void 0),z];return l("div",{className:o("flex items-center w-full gap-4 p-2",t),children:p.map((n,u)=>l("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},u))})};import{jsx as L}from"react/jsx-runtime";var E=({className:t,columns:a=[],meta:s={title:""}})=>{let e={content:L("div",{className:"flex items-center gap-4 p-2",children:s.secondaryActions}),align:"right",width:"fill"},f=[...a.filter(r=>r!==void 0),e];return L("div",{className:o("flex items-center w-full gap-4",t),children:f.map((r,d)=>L("div",{className:o("flex items-center h-full",r.className,{"justify-start":r.align==="left","justify-center":r.align==="center","justify-end":r.align==="right","flex-1":r.width==="fill"}),children:r.content},d))})};import pe,{useState as de,createContext as ce,useContext as fe}from"react";import{Dialog as y}from"radix-ui";import{XIcon as le}from"lucide-react";import{jsx as g,jsxs as H}from"react/jsx-runtime";function X({...t}){return g(y.Root,{"data-slot":"sheet",...t})}function G({...t}){return g(y.Trigger,{"data-slot":"sheet-trigger",...t})}function W({...t}){return g(y.Portal,{"data-slot":"sheet-portal",...t})}function V({className:t,...a}){return g(y.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",t),...a})}function J({className:t,children:a,side:s="right",...e}){return H(W,{children:[g(V,{}),H(y.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",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",t),...e,children:[a,H(y.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:[g(le,{className:"size-4"}),g("span",{className:"sr-only",children:"Close"})]})]})]})}import{jsx as i,jsxs as x}from"react/jsx-runtime";var K=ce(!1),D={"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"]},P={none:"p-0",tight:"p-2",default:"p-4",loose:"p-6"},ue=(t,a)=>{let[s,e]=D[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",t==="right"?"border-l":"border-r"),transform:t==="right"?"translate-x-full":"-translate-x-full",transformOpen:"translate-x-0",contentPushClass:t==="right"?s:e,sheetPushClass:t==="right"?e:s}},he="flex flex-col overflow-hidden rounded-2xl relative",me={default:"bg-background",card:"bg-background shadow-sm border",border:"bg-background border-2",transparent:"bg-transparent"},Q=t=>{let{children:a,className:s,variant:e="default",layout:f="full",header:r,footer:d,headerClassName:O,footerClassName:z,parentContainer:p=!1,padding:n=p?"none":"tight"}=t,u=fe(K),[Y,Z]=de(!1),B=pe.useCallback(v=>i("div",{className:o("flex-1 overflow-auto h-full no-scrollbar",p&&"flex",!p&&P[n]),children:v}),[n,p]),$=()=>{switch(f){case"split":{let{splitRatio:v="three-fourth",reverse:N=!1}=t;if(!Array.isArray(a)||a.length!==2)return i("div",{className:"flex items-center justify-center h-full text-red-500",children:'Error: AppContent with layout="split" requires exactly 2 children'});let[h,A]=D[v],[C,w]=N?[a[1],a[0]]:[a[0],a[1]],[R,M]=N?[A,h]:[h,A];return x("div",{className:"flex h-full gap-2",children:[i("div",{className:o(R,"overflow-auto"),children:B(C)}),i("div",{className:o(M,"overflow-auto"),children:B(w)})]})}case"with-sheet":{let{sheetContent:v,sheetWidth:N="four-fifth",sheetSide:h="right",sheetMode:A="container",sheetTrigger:C,sheetClassName:w,isSheetOpen:R,onSheetOpenChange:M,showSheetOverlay:I=!0,disableOverlay:S=!0}=t,_=R!==void 0,c=_?R:Y,T=_?M:Z;if(A==="container"){let b=ue(h,N);return x("div",{className:o("flex relative flex-1 overflow-hidden",c&&S&&["left","right"].includes(h)),children:[x("div",{className:o("h-full overflow-auto transition-all duration-500",c&&S&&["left","right"].includes(h)?b.contentPushClass:"w-full",c&&S&&"overflow-y-auto overflow-x-hidden"),children:[C&&i("div",{onClick:()=>T?.(!c),children:C}),i("div",{className:o("h-full",!p&&P[n]),children:a})]}),i("div",{className:o(b.container,"transition-all duration-500 ease-in-out",c&&S&&["left","right"].includes(h)?o(b.sheetPushClass,"overflow-y-auto"):c?b.transformOpen:o(b.transform,"hidden"),"overflow-y-auto"),children:i("div",{className:o(b.content,w,"h-full"),children:v})}),c&&I&&!S&&i("div",{className:o("absolute inset-0 bg-secondary/20 z-40","transition-opacity duration-500 ease-in-out","opacity-0",c?"opacity-100":"opacity-0"),onClick:()=>T?.(!1)})]})}return x(X,{open:c,onOpenChange:T,children:[C&&i(G,{asChild:!0,children:C}),x(W,{children:[I&&i(V,{className:"fixed inset-0 bg-secondary/50 z-50"}),i(J,{side:h,className:o("fixed bg-background border","transition-all duration-500 ease-in-out",D[N][1],w),children:v})]})]})}default:return B(a)}};return i(K.Provider,{value:!0,children:x("div",{className:o(he,me[e],P[n],u&&"flex-1",p&&"h-full",!p&&"rounded-2xl",s),children:[r&&i("div",{className:o("border-b",O,e==="card"&&!p&&"rounded-t-2xl",e==="border"&&"border-b-2",P[n]),children:r}),$(),d&&i("div",{className:o("border-t",z,e==="card"&&!p&&"rounded-b-2xl",e==="border"&&"border-t-2",P[n]),children:d})]})})};import{jsx as Ce}from"react/jsx-runtime";var ge={none:"gap-0",tight:"gap-2",default:"gap-4",loose:"gap-6","extra-loose":"gap-8"},ve={none:"p-0",tight:"p-2",default:"p-4",loose:"p-6"},U=({children:t,className:a,spacing:s="tight",padding:e="none"})=>Ce("div",{className:o("flex flex-col h-full",ge[s],ve[e],a),children:t});import{jsx as k}from"react/jsx-runtime";function nt({useTypedAppMeta:t}){return{AppHeader:r=>{let{meta:d}=t();return k(q,{...r,meta:d})},AppFooter:r=>{let{meta:d}=t();return k(E,{...r,meta:d})},AppContent:r=>k(Q,{...r}),AppContainer:r=>k(U,{...r})}}export{nt as createLayoutComponents};
2
+ import{ArrowLeftIcon as I,ChevronRight as se}from"lucide-react";import{clsx as $}from"clsx";import{twMerge as ee}from"tailwind-merge";function t(...a){return ee($(a))}import{Slot as te}from"radix-ui";import{cva as oe}from"class-variance-authority";import{jsx as ne}from"react/jsx-runtime";var ae=oe("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 F({className:a,variant:n,size:i,asChild:e=!1,...c}){let s=e?te.Slot:"button";return ne(s,{"data-slot":"button",className:t(ae({variant:n,size:i,className:a}),"transition-none"),...c})}import{NavLink as re}from"react-router";import{jsx as p,jsxs as g}from"react/jsx-runtime";var _=({className:a,columns:n=[],showBackButton:i=!0,meta:e={title:""}})=>{let c=()=>{if(!e.backAction||!i)return null;let o={variant:"secondary",size:"icon",className:"hover:bg-primary/20 inline-flex"};return e.backAction.href?p(re,{to:e.backAction.href,children:g(F,{...o,children:[p(I,{className:"size-6"}),e.backAction.content]})}):g(F,{...o,onClick:e.backAction.onClick,children:[p(I,{className:"size-6"}),e.backAction.content]})},s=()=>!e.metadata||e.metadata.length===0?null:p("div",{className:"flex gap-4",children:e.metadata.map((o,l)=>o.value&&g("div",{className:"text-sm",children:[g("span",{className:"text-muted-foreground",children:[o.label," "]}),p("span",{children:o.value})]},l))}),d=()=>e.status?p("span",{className:t("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"}[e.status.color]),children:e.status.content}):null,O={content:g("div",{className:"flex gap-2 items-center",children:[c(),g("div",{className:"flex flex-col gap-2 w-max",children:[p("h1",{className:"text-2xl font-bold tracking-tight",children:e.title}),d(),e.description&&p("p",{className:"text-muted-foreground",children:e.description}),s(),e.breadcrumbs&&e.breadcrumbs.length>0&&p("div",{className:"flex items-center text-sm text-muted-foreground",children:e.breadcrumbs.map((o,l)=>g("div",{className:"flex items-center",children:[o.href?p("span",{className:"hover:text-primary hover:underline",children:o.label}):p("span",{children:o.label}),l<e.breadcrumbs.length-1&&p(se,{className:"mx-2 h-4 w-4"})]},l))})]})]}),align:"left",width:"fill"},v={content:e.primaryActions,align:"right",width:"auto"},z=[O,...n.filter(o=>o!==void 0),v];return p("div",{className:t("flex items-center w-full gap-4 p-2",a),children:z.map((o,l)=>p("div",{className:t("flex items-center h-full",o.className,{"justify-start":o.align==="left","justify-center":o.align==="center","justify-end":o.align==="right","flex-1":o.width==="fill"}),children:o.content},l))})};import{jsx as L}from"react/jsx-runtime";var j=({className:a,columns:n=[],meta:i={title:""}})=>{let e={content:L("div",{className:"flex items-center gap-4 p-2",children:i.secondaryActions}),align:"right",width:"fill"},c=[...n.filter(s=>s!==void 0),e];return L("div",{className:t("flex items-center w-full gap-4",a),children:c.map((s,d)=>L("div",{className:t("flex items-center h-full",s.className,{"justify-start":s.align==="left","justify-center":s.align==="center","justify-end":s.align==="right","flex-1":s.width==="fill"}),children:s.content},d))})};import pe,{useState as de,createContext as ce,useContext as ue}from"react";import{Dialog as S}from"radix-ui";import{XIcon as ie}from"lucide-react";import{jsx as b,jsxs as T}from"react/jsx-runtime";function q({...a}){return b(S.Root,{"data-slot":"sheet",...a})}function H({...a}){return b(S.Portal,{"data-slot":"sheet-portal",...a})}function le({className:a,...n}){return b(S.Overlay,{"data-slot":"sheet-overlay",className:t("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",a),...n})}function E({className:a,children:n,side:i="right",...e}){return T(H,{children:[b(le,{}),T(S.Content,{"data-slot":"sheet-content",className:t("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",i==="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",i==="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",i==="top"&&"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",i==="bottom"&&"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",a),...e,children:[n,T(S.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:[b(ie,{className:"size-4"}),b("span",{className:"sr-only",children:"Close"})]})]})]})}import{Fragment as ge,jsx as r,jsxs as y}from"react/jsx-runtime";var X=ce(!1),R={"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"]},x={none:"p-0",tight:"p-2",default:"p-4",loose:"p-6"},fe=(a,n)=>{let[i,e]=R[n];return{container:"inset-y-0 z-50 transition-all duration-500 ease-in-out",content:t("h-full bg-background transition-all duration-500 ease-in-out",a==="right"?"border-l":"border-r"),transform:a==="right"?"translate-x-full":"-translate-x-full",transformOpen:"translate-x-0",contentPushClass:a==="right"?e:i,sheetPushClass:a==="right"?i:e}},he="flex flex-col overflow-hidden rounded-2xl relative",me={default:"bg-background",card:"bg-background shadow-sm border",border:"bg-background border-2",transparent:"bg-transparent"},G=a=>{let{children:n,className:i,variant:e="default",layout:c="full",header:s,footer:d,headerClassName:O,contentClassName:v,footerClassName:z,parentContainer:o=!1,padding:l=o?"none":"tight"}=a,K=ue(X),[Q,U]=de(!1),B=pe.useCallback(m=>r("div",{className:t("flex-1 overflow-auto h-full no-scrollbar",o&&"flex",!o&&x[l],v),children:m}),[l,o,v]),Y=()=>{switch(c){case"split":{let{splitRatio:m="three-fourth",reverse:C=!1}=a;if(!Array.isArray(n)||n.length!==2)return r("div",{className:"flex items-center justify-center h-full text-red-500",children:'Error: AppContent with layout="split" requires exactly 2 children'});let[u,w]=R[m],[N,P]=C?[n[1],n[0]]:[n[0],n[1]],[A,M]=C?[w,u]:[u,w];return y("div",{className:"flex h-full gap-2",children:[r("div",{className:t(A,"overflow-auto"),children:B(N)}),r("div",{className:t(M,"overflow-auto"),children:B(P)})]})}case"with-sheet":{let{sheetContent:m,sheetWidth:C="four-fifth",sheetSide:u="right",sheetMode:w="container",sheetClassName:N,isSheetOpen:P,onSheetOpenChange:A,disableOverlay:M=!0,showSheetOverlay:Z=!0}=a,W=P!==void 0&&A,f=W?P:Q,V=W?A:U;if(w==="container"){let h=fe(u,C),D=R[C][0];return M?y("div",{className:t("flex relative flex-1 overflow-hidden",v),children:[r("div",{className:t("h-full overflow-auto transition-all duration-500",f?h.contentPushClass:"w-full",f&&"overflow-y-auto overflow-x-hidden"),children:r("div",{className:t("h-full",!o&&x[l]),children:n})}),r("div",{className:t(h.container,"transition-all duration-500 ease-in-out h-full",D,f&&["left","right"].includes(u)?t(h.sheetPushClass,"overflow-y-auto"):f?h.transformOpen:t(h.transform,"hidden"),"overflow-y-auto"),children:r("div",{className:t(h.content,N,"h-full"),children:m})})]}):y("div",{className:t("flex relative flex-1 overflow-hidden",v),children:[r("div",{className:t("h-full overflow-auto w-full transition-all duration-500 relative z-10"),children:r("div",{className:t("h-full",!o&&x[l]),children:n})}),y("div",{className:t("absolute inset-0 z-20",!f&&"pointer-events-none"),children:[Z&&r("div",{className:t("absolute inset-0 bg-black/50 transition-opacity duration-500",f?"opacity-100":"opacity-0 pointer-events-none"),onClick:()=>V(!1)}),r("div",{className:t(h.container,"transition-all duration-500 backdrop-blur-2xl ease-in-out h-full absolute",D,f?"translate-x-0 opacity-100":t(u==="right"?"translate-x-full":"-translate-x-full","opacity-0 pointer-events-none"),"overflow-y-auto"),style:{[u]:0},children:r("div",{className:t(h.content,N,"h-full"),children:m})})]})]})}return y(ge,{children:[n,r(q,{open:f,onOpenChange:V,children:r(H,{children:r(E,{side:u,className:t("fixed bg-background border sm:max-w-full","transition-all duration-500 ease-in-out",R[C][0],N),children:m})})})]})}default:return B(n)}};return r(X.Provider,{value:!0,children:y("div",{className:t(he,me[e],x[l],K&&"flex-1",o&&"h-full",!o&&"rounded-2xl",i),children:[s&&r("div",{className:t("border-b",O,e==="card"&&!o&&"rounded-t-2xl",e==="border"&&"border-b-2",x[l]),children:s}),Y(),d&&r("div",{className:t("border-t",z,e==="card"&&!o&&"rounded-b-2xl",e==="border"&&"border-t-2",x[l]),children:d})]})})};import{jsx as be}from"react/jsx-runtime";var ve={none:"gap-0",tight:"gap-2",default:"gap-4",loose:"gap-6","extra-loose":"gap-8"},Ce={none:"p-0",tight:"p-2",default:"p-4",loose:"p-6"},J=({children:a,className:n,spacing:i="tight",padding:e="none"})=>be("div",{className:t("flex flex-col h-full",ve[i],Ce[e],n),children:a});import{jsx as k}from"react/jsx-runtime";function rt({useTypedAppMeta:a}){return{AppHeader:s=>{let{meta:d}=a();return k(_,{...s,meta:d})},AppFooter:s=>{let{meta:d}=a();return k(j,{...s,meta:d})},AppContent:s=>k(G,{...s}),AppContainer:s=>k(J,{...s})}}export{rt as createLayoutComponents};
3
3
  //# sourceMappingURL=factories.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/layouts/app-header.tsx","../../../src/lib/utils.ts","../../../src/components/ui/button.tsx","../../../src/components/layouts/app-footer.tsx","../../../src/components/layouts/app-content.tsx","../../../src/components/ui/sheet.tsx","../../../src/components/layouts/app-container.tsx","../../../src/components/layouts/factories.tsx"],"sourcesContent":["import { AppMeta, useAppMeta } from '../../context/index.js';\r\nimport { ArrowLeftIcon, ChevronRight } from 'lucide-react';\r\nimport { cn } from '../../lib/utils.js';\r\nimport { Button } from '../../components/ui/button.jsx';\r\nimport type { ReactNode } from 'react';\r\nimport { NavLink } from 'react-router';\r\n\r\ntype ColumnConfig = {\r\n content: ReactNode;\r\n align?: 'left' | 'center' | 'right';\r\n width?: 'auto' | 'fill';\r\n className?: string;\r\n};\r\n\r\nexport type AppHeaderProps = {\r\n className?: string;\r\n columns?: [ColumnConfig?, ColumnConfig?, ColumnConfig?];\r\n showBackButton?: boolean;\r\n meta?: AppMeta;\r\n};\r\n\r\nexport const AppHeader = ({\r\n className,\r\n columns = [],\r\n showBackButton = true,\r\n meta = { title: \"\" },\r\n}: AppHeaderProps) => {\r\n // const { meta } = useAppMeta();\r\n\r\n const renderBackAction = () => {\r\n if (!meta.backAction || !showBackButton) return null;\r\n\r\n const buttonProps = {\r\n variant: 'secondary',\r\n size: 'icon',\r\n className: 'hover:bg-primary/20 inline-flex',\r\n } as const;\r\n\r\n if (meta.backAction.href) {\r\n return (\r\n <NavLink to={meta.backAction.href}>\r\n <Button {...buttonProps}>\r\n <ArrowLeftIcon className=\"size-6\" />\r\n {meta.backAction.content}\r\n </Button>\r\n </NavLink>\r\n );\r\n }\r\n\r\n return (\r\n <Button {...buttonProps} onClick={meta.backAction.onClick}>\r\n <ArrowLeftIcon className=\"size-6\" />\r\n {meta.backAction.content}\r\n </Button>\r\n );\r\n };\r\n\r\n const renderMetadata = () => {\r\n if (!meta.metadata || meta.metadata.length === 0) return null;\r\n\r\n return (\r\n <div className=\"flex gap-4\">\r\n {meta.metadata.map((item, index) => (\r\n item.value && (\r\n <div key={index} className=\"text-sm\">\r\n <span className=\"text-muted-foreground\">{item.label} </span>\r\n <span>{item.value}</span>\r\n </div>\r\n )\r\n ))}\r\n </div>\r\n );\r\n };\r\n\r\n const renderStatus = () => {\r\n if (!meta.status) return null;\r\n\r\n const colorClasses = {\r\n success: 'bg-green-100 text-green-800',\r\n warning: 'bg-yellow-100 text-yellow-800',\r\n critical: 'bg-red-100 text-red-800',\r\n info: 'bg-blue-100 text-blue-800',\r\n default: 'bg-gray-100 text-gray-800',\r\n };\r\n\r\n return (\r\n <span className={cn(\r\n 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium',\r\n colorClasses[meta.status.color as keyof typeof colorClasses]\r\n )}>\r\n {meta.status.content}\r\n </span>\r\n );\r\n };\r\n\r\n const reservedColumn: ColumnConfig = {\r\n content: (\r\n <div className=\"flex gap-2 items-center\">\r\n {renderBackAction()}\r\n <div className=\"flex flex-col gap-2 w-max\">\r\n <h1 className=\"text-2xl font-bold tracking-tight\">{meta.title}</h1>\r\n {renderStatus()}\r\n {meta.description && (\r\n <p className=\"text-muted-foreground\">{meta.description}</p>\r\n )}\r\n {renderMetadata()}\r\n {meta.breadcrumbs && meta.breadcrumbs.length > 0 && (\r\n <div className=\"flex items-center text-sm text-muted-foreground\">\r\n {meta.breadcrumbs.map((crumb, index) => (\r\n <div key={index} className=\"flex items-center\">\r\n {crumb.href ? (\r\n <span className=\"hover:text-primary hover:underline\">\r\n {crumb.label}\r\n </span>\r\n ) : (\r\n <span>{crumb.label}</span>\r\n )}\r\n {index < meta.breadcrumbs!.length - 1 && (\r\n <ChevronRight className=\"mx-2 h-4 w-4\" />\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n ),\r\n align: 'left',\r\n width: 'fill',\r\n };\r\n\r\n const actionsColumn: ColumnConfig = {\r\n content: meta.primaryActions,\r\n align: 'right',\r\n width: 'auto',\r\n };\r\n\r\n const allColumns: ColumnConfig[] = [\r\n reservedColumn,\r\n ...columns.filter((col): col is ColumnConfig => col !== undefined),\r\n actionsColumn\r\n ];\r\n\r\n return (\r\n <div className={cn('flex items-center w-full gap-4 p-2', className)}>\r\n {allColumns.map((column, index) => (\r\n <div\r\n key={index}\r\n className={cn(\r\n 'flex items-center h-full',\r\n column.className,\r\n {\r\n 'justify-start': column.align === 'left',\r\n 'justify-center': column.align === 'center',\r\n 'justify-end': column.align === 'right',\r\n 'flex-1': column.width === 'fill',\r\n }\r\n )}\r\n >\r\n {column.content}\r\n </div>\r\n ))}\r\n </div>\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 { Slot as SlotPrimitive } from \"radix-ui\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils.js\"\n\nconst buttonVariants = cva(\n \"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\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90\",\n destructive:\n \"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\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? SlotPrimitive.Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }), \"transition-none\")}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import { AppMeta, useAppMeta } from '../../context/index.js';\r\nimport { cn } from '../../lib/utils.js';\r\n\r\ntype ColumnConfig = {\r\n content: React.ReactNode;\r\n align?: 'left' | 'center' | 'right';\r\n width?: 'auto' | 'fill';\r\n className?: string;\r\n};\r\n\r\nexport type AppFooterProps = {\r\n className?: string;\r\n columns?: [ColumnConfig?, ColumnConfig?, ColumnConfig?];\r\n meta?: AppMeta;\r\n};\r\n\r\nexport const AppFooter = ({\r\n className,\r\n columns = [],\r\n meta = { title: \"\" },\r\n}: AppFooterProps) => {\r\n // const { meta } = useAppMeta();\r\n\r\n // const renderPagination = () => {\r\n // if (!meta.pagination) return null;\r\n\r\n // return (\r\n // <div className=\"flex items-center gap-2\">\r\n // <Button\r\n // variant=\"outline\"\r\n // size=\"sm\"\r\n // disabled={!meta.pagination.hasPrevious}\r\n // onClick={meta.pagination.onPrevious}\r\n // >\r\n // <ChevronLeft className=\"h-4 w-4 mr-1\" />\r\n // {meta.pagination.previousLabel || 'Previous'}\r\n // </Button>\r\n // <Button\r\n // variant=\"outline\"\r\n // size=\"sm\"\r\n // disabled={!meta.pagination.hasNext}\r\n // onClick={meta.pagination.onNext}\r\n // >\r\n // {meta.pagination.nextLabel || 'Next'}\r\n // <ChevronRight className=\"h-4 w-4 ml-1\" />\r\n // </Button>\r\n // </div>\r\n // );\r\n // };\r\n\r\n const actionsColumn: ColumnConfig = {\r\n content: (\r\n <div className=\"flex items-center gap-4 p-2\">\r\n {/* {renderPagination()} */}\r\n {meta.secondaryActions}\r\n </div>\r\n ),\r\n align: 'right',\r\n width: 'fill',\r\n };\r\n\r\n const allColumns: ColumnConfig[] = [\r\n ...columns.filter((col): col is ColumnConfig => col !== undefined),\r\n actionsColumn\r\n ];\r\n\r\n return (\r\n <div className={cn('flex items-center w-full gap-4', className)}>\r\n {allColumns.map((column, index) => (\r\n <div\r\n key={index}\r\n className={cn(\r\n 'flex items-center h-full',\r\n column.className,\r\n {\r\n 'justify-start': column.align === 'left',\r\n 'justify-center': column.align === 'center',\r\n 'justify-end': column.align === 'right',\r\n 'flex-1': column.width === 'fill',\r\n }\r\n )}\r\n >\r\n {column.content}\r\n </div>\r\n ))}\r\n </div>\r\n );\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 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 showSheetOverlay?: boolean\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}\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\" ? contentWidth : sheetWidth,\r\n sheetPushClass: side === \"right\" ? sheetWidth : contentWidth,\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 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 )}>\r\n {content}\r\n </div>\r\n ),\r\n [padding, parentContainer]\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 sheetTrigger,\r\n sheetClassName,\r\n isSheetOpen,\r\n onSheetOpenChange,\r\n showSheetOverlay = true,\r\n disableOverlay = true,\r\n } = props as WithSheetLayoutProps\r\n\r\n const isControlled = isSheetOpen !== undefined\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\r\n return (\r\n <div className={cn(\r\n \"flex relative flex-1 overflow-hidden\",\r\n sheetOpen && disableOverlay && [\"left\", \"right\"].includes(sheetSide)\r\n )}>\r\n {/* Main content area */}\r\n <div className={cn(\r\n \"h-full overflow-auto transition-all duration-500\",\r\n sheetOpen && disableOverlay && [\"left\", \"right\"].includes(sheetSide)\r\n ? sheetClasses.contentPushClass\r\n : \"w-full\",\r\n sheetOpen && disableOverlay && \"overflow-y-auto overflow-x-hidden\"\r\n )}>\r\n {sheetTrigger && (\r\n <div onClick={() => setSheetOpen?.(!sheetOpen)}>\r\n {sheetTrigger}\r\n </div>\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\",\r\n sheetOpen && disableOverlay && [\"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\r\n {/* Container overlay */}\r\n {sheetOpen && showSheetOverlay && !disableOverlay && (\r\n <div\r\n className={cn(\r\n \"absolute inset-0 bg-secondary/20 z-40\",\r\n \"transition-opacity duration-500 ease-in-out\",\r\n \"opacity-0\",\r\n sheetOpen ? \"opacity-100\" : \"opacity-0\"\r\n )}\r\n onClick={() => setSheetOpen?.(false)}\r\n />\r\n )}\r\n </div>\r\n )\r\n }\r\n\r\n return (\r\n <Sheet open={sheetOpen} onOpenChange={setSheetOpen}>\r\n {sheetTrigger && <SheetTrigger asChild>{sheetTrigger}</SheetTrigger>}\r\n <SheetPortal>\r\n {showSheetOverlay && <SheetOverlay className=\"fixed inset-0 bg-secondary/50 z-50\" />}\r\n <SheetContent\r\n side={sheetSide}\r\n className={cn(\r\n \"fixed bg-background border\",\r\n \"transition-all duration-500 ease-in-out\",\r\n splitRatioClasses[sheetWidth][1],\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 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\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n// import { cn } from \"@/lib/utils\"\r\n// import React, { useState, createContext, useContext } from \"react\"\r\n// import {\r\n// Sheet,\r\n// SheetTrigger,\r\n// SheetContent,\r\n// SheetPortal,\r\n// SheetOverlay\r\n// } from \"@/components/ui/sheet\"\r\n\r\n// const AppContentContext = createContext(false)\r\n\r\n// type SplitRatio = \"one-half\" | \"one-third\" | \"two-third\" | \"one-fourth\" | \"three-fourth\" | \"one-fifth\" | \"four-fifth\"\r\n\r\n// type SheetSide = \"right\" | \"bottom\" | \"left\" | \"top\"\r\n// type SheetMode = \"fullscreen\" | \"container\"\r\n\r\n// type 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// headerClassName?: string\r\n// footerClassName?: string\r\n// parentContainer?: boolean\r\n// padding?: \"none\" | \"tight\" | \"default\" | \"loose\"\r\n// }\r\n\r\n// type FullLayoutProps = BaseAppContentProps & {\r\n// layout?: \"full\"\r\n// }\r\n\r\n// type SplitLayoutProps = BaseAppContentProps & {\r\n// layout: \"split\"\r\n// splitRatio?: SplitRatio\r\n// reverse?: boolean\r\n// }\r\n\r\n// type SheetOptions = {\r\n// sheetContent: React.ReactNode\r\n// sheetWidth?: SplitRatio\r\n// sheetSide?: SheetSide\r\n// sheetMode?: SheetMode\r\n// onSheetClose?: () => void\r\n// showSheetOverlay?: boolean\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// }\r\n\r\n// type WithSheetLayoutProps = BaseAppContentProps & {\r\n// layout: \"with-sheet\"\r\n// } & SheetOptions\r\n\r\n// type AppContentProps = FullLayoutProps | SplitLayoutProps | WithSheetLayoutProps\r\n\r\n// const 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\n// const 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\n// const 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\",\r\n// content: cn(\"h-full bg-background\", side === \"right\" ? \"border-l\" : \"border-r\"),\r\n// transform: side === \"right\" ? \"translate-x-full\" : \"-translate-x-full\",\r\n// transformOpen: \"translate-x-0\",\r\n// contentPushClass: side === \"right\" ? contentWidth : sheetWidth,\r\n// sheetPushClass: side === \"right\" ? sheetWidth : contentWidth,\r\n// }\r\n// }\r\n\r\n// const baseClasses = \"flex flex-col overflow-hidden rounded-2xl relative\"\r\n// const 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\n// export 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// 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\",\r\n// !parentContainer && paddingClasses[padding]\r\n// )}>\r\n// {content}\r\n// </div>\r\n// ),\r\n// [padding, parentContainer]\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-4\">\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// sheetTrigger,\r\n// sheetClassName,\r\n// isSheetOpen,\r\n// onSheetOpenChange,\r\n// showSheetOverlay = true,\r\n// disableOverlay = false,\r\n// } = props as WithSheetLayoutProps\r\n\r\n// const isControlled = isSheetOpen !== undefined\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\r\n// return (\r\n// <div className={cn(\r\n// \"flex relative flex-1 overflow-hidden\",\r\n// sheetOpen && disableOverlay && [\"left\", \"right\"].includes(sheetSide)\r\n// )}>\r\n// {/* Main content area */}\r\n// <div className={cn(\r\n// \"h-full overflow-auto transition-all duration-500\",\r\n// sheetOpen && disableOverlay && [\"left\", \"right\"].includes(sheetSide)\r\n// ? sheetClasses.contentPushClass\r\n// : \"w-full\",\r\n// sheetOpen && disableOverlay && \"overflow-y-auto overflow-x-hidden\"\r\n// )}>\r\n// {sheetTrigger && (\r\n// <div onClick={() => setSheetOpen?.(!sheetOpen)}>\r\n// {sheetTrigger}\r\n// </div>\r\n// )}\r\n// <div className={cn(!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-out\",\r\n// sheetOpen && disableOverlay && [\"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\r\n// {/* Container overlay */}\r\n// {sheetOpen && showSheetOverlay && !disableOverlay && (\r\n// <div\r\n// className={cn(\"absolute inset-0 bg-secondary/20 z-40\")}\r\n// onClick={() => setSheetOpen?.(false)}\r\n// />\r\n// )}\r\n// </div>\r\n// )\r\n// }\r\n\r\n// return (\r\n// <Sheet open={sheetOpen} onOpenChange={setSheetOpen}>\r\n// {sheetTrigger && <SheetTrigger asChild>{sheetTrigger}</SheetTrigger>}\r\n// <SheetPortal>\r\n// {showSheetOverlay && <SheetOverlay className=\"fixed inset-0 bg-secondary/50 z-50\" />}\r\n// <SheetContent\r\n// side={sheetSide}\r\n// className={cn(\r\n// \"fixed bg-background border\",\r\n// splitRatioClasses[sheetWidth][1],\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// 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\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","import { cn } from '../../lib/utils.js';\r\nimport type { ReactNode } from 'react';\r\n\r\ntype SpacingSize = 'none' | 'tight' | 'default' | 'loose' | 'extra-loose';\r\n\r\nconst spacingClasses: Record<SpacingSize, string> = {\r\n 'none': 'gap-0',\r\n 'tight': 'gap-2',\r\n 'default': 'gap-4',\r\n 'loose': 'gap-6',\r\n 'extra-loose': 'gap-8'\r\n};\r\n\r\nexport type AppContainerProps = {\r\n children: ReactNode;\r\n className?: string;\r\n spacing?: SpacingSize;\r\n padding?: 'none' | 'tight' | 'default' | 'loose';\r\n};\r\n\r\nconst paddingClasses: Record<NonNullable<AppContainerProps['padding']>, string> = {\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\nexport const AppContainer = ({\r\n children,\r\n className,\r\n spacing = 'tight',\r\n padding = 'none',\r\n}: AppContainerProps) => {\r\n return (\r\n <div className={cn(\r\n 'flex flex-col h-full',\r\n spacingClasses[spacing],\r\n paddingClasses[padding],\r\n className\r\n )}>\r\n {children}\r\n </div>\r\n );\r\n};","import type { AppMetaContextType } from '../../context/app-meta/types.js';\r\nimport { AppHeaderProps, AppHeader as BaseAppHeader } from './app-header.jsx';\r\nimport { AppFooterProps, AppFooter as BaseAppFooter } from './app-footer.jsx';\r\nimport { AppContentProps, AppContent as BaseAppContent } from './app-content.jsx';\r\nimport { AppContainerProps, AppContainer as BaseAppContainer } from './app-container.jsx';\r\n\r\nexport function createLayoutComponents<TRoute extends string>({\r\n useTypedAppMeta,\r\n}: {\r\n useTypedAppMeta: () => AppMetaContextType<TRoute>;\r\n}) {\r\n const AppHeader = (props: Omit<AppHeaderProps, 'meta'>) => {\r\n const { meta } = useTypedAppMeta();\r\n return <BaseAppHeader {...props} meta={meta} />;\r\n };\r\n\r\n const AppFooter = (props: Omit<AppFooterProps, 'meta'>) => {\r\n const { meta } = useTypedAppMeta();\r\n return <BaseAppFooter {...props} meta={meta} />;\r\n };\r\n\r\n const AppContent = (props: AppContentProps) => (\r\n <BaseAppContent {...props} />\r\n );\r\n\r\n const AppContainer = (props: AppContainerProps) => (\r\n <BaseAppContainer {...props} />\r\n );\r\n\r\n return {\r\n AppHeader,\r\n AppFooter,\r\n AppContent,\r\n AppContainer,\r\n };\r\n}"],"mappings":"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","names":["ArrowLeftIcon","ChevronRight","clsx","twMerge","cn","inputs","SlotPrimitive","cva","jsx","buttonVariants","cva","Button","className","variant","size","asChild","props","Comp","SlotPrimitive","cn","NavLink","jsx","jsxs","AppHeader","className","columns","showBackButton","meta","renderBackAction","buttonProps","Button","ArrowLeftIcon","renderMetadata","item","index","renderStatus","cn","reservedColumn","crumb","ChevronRight","actionsColumn","allColumns","col","column","jsx","AppFooter","className","columns","meta","actionsColumn","allColumns","col","cn","column","index","React","useState","createContext","useContext","SheetPrimitive","XIcon","jsx","jsxs","Sheet","props","SheetPrimitive","SheetTrigger","SheetPortal","props","jsx","SheetPrimitive","SheetOverlay","className","cn","SheetContent","children","side","jsxs","XIcon","jsx","jsxs","AppContentContext","createContext","splitRatioClasses","paddingClasses","getContainerSheetClasses","side","width","contentWidth","sheetWidth","cn","baseClasses","variantClasses","AppContent","props","children","className","variant","layout","header","footer","headerClassName","footerClassName","parentContainer","padding","isNested","useContext","internalSheetOpen","setInternalSheetOpen","useState","contentWrapper","React","content","renderContent","splitRatio","reverse","leftClass","rightClass","firstChild","secondChild","firstClass","secondClass","sheetContent","sheetSide","sheetMode","sheetTrigger","sheetClassName","isSheetOpen","onSheetOpenChange","showSheetOverlay","disableOverlay","isControlled","sheetOpen","setSheetOpen","sheetClasses","Sheet","SheetTrigger","SheetPortal","SheetOverlay","SheetContent","jsx","spacingClasses","paddingClasses","AppContainer","children","className","spacing","padding","cn","jsx","createLayoutComponents","useTypedAppMeta","props","meta","AppHeader","AppFooter","AppContent","AppContainer"]}
1
+ {"version":3,"sources":["../../../src/components/layouts/app-header.tsx","../../../src/lib/utils.ts","../../../src/components/ui/button.tsx","../../../src/components/layouts/app-footer.tsx","../../../src/components/layouts/app-content.tsx","../../../src/components/ui/sheet.tsx","../../../src/components/layouts/app-container.tsx","../../../src/components/layouts/factories.tsx"],"sourcesContent":["import { AppMeta, useAppMeta } from '../../context/index.js';\r\nimport { ArrowLeftIcon, ChevronRight } from 'lucide-react';\r\nimport { cn } from '../../lib/utils.js';\r\nimport { Button } from '../../components/ui/button.jsx';\r\nimport type { ReactNode } from 'react';\r\nimport { NavLink } from 'react-router';\r\n\r\ntype ColumnConfig = {\r\n content: ReactNode;\r\n align?: 'left' | 'center' | 'right';\r\n width?: 'auto' | 'fill';\r\n className?: string;\r\n};\r\n\r\nexport type AppHeaderProps = {\r\n className?: string;\r\n columns?: [ColumnConfig?, ColumnConfig?, ColumnConfig?];\r\n showBackButton?: boolean;\r\n meta?: AppMeta;\r\n};\r\n\r\nexport const AppHeader = ({\r\n className,\r\n columns = [],\r\n showBackButton = true,\r\n meta = { title: \"\" },\r\n}: AppHeaderProps) => {\r\n // const { meta } = useAppMeta();\r\n\r\n const renderBackAction = () => {\r\n if (!meta.backAction || !showBackButton) return null;\r\n\r\n const buttonProps = {\r\n variant: 'secondary',\r\n size: 'icon',\r\n className: 'hover:bg-primary/20 inline-flex',\r\n } as const;\r\n\r\n if (meta.backAction.href) {\r\n return (\r\n <NavLink to={meta.backAction.href}>\r\n <Button {...buttonProps}>\r\n <ArrowLeftIcon className=\"size-6\" />\r\n {meta.backAction.content}\r\n </Button>\r\n </NavLink>\r\n );\r\n }\r\n\r\n return (\r\n <Button {...buttonProps} onClick={meta.backAction.onClick}>\r\n <ArrowLeftIcon className=\"size-6\" />\r\n {meta.backAction.content}\r\n </Button>\r\n );\r\n };\r\n\r\n const renderMetadata = () => {\r\n if (!meta.metadata || meta.metadata.length === 0) return null;\r\n\r\n return (\r\n <div className=\"flex gap-4\">\r\n {meta.metadata.map((item, index) => (\r\n item.value && (\r\n <div key={index} className=\"text-sm\">\r\n <span className=\"text-muted-foreground\">{item.label} </span>\r\n <span>{item.value}</span>\r\n </div>\r\n )\r\n ))}\r\n </div>\r\n );\r\n };\r\n\r\n const renderStatus = () => {\r\n if (!meta.status) return null;\r\n\r\n const colorClasses = {\r\n success: 'bg-green-100 text-green-800',\r\n warning: 'bg-yellow-100 text-yellow-800',\r\n critical: 'bg-red-100 text-red-800',\r\n info: 'bg-blue-100 text-blue-800',\r\n default: 'bg-gray-100 text-gray-800',\r\n };\r\n\r\n return (\r\n <span className={cn(\r\n 'inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium',\r\n colorClasses[meta.status.color as keyof typeof colorClasses]\r\n )}>\r\n {meta.status.content}\r\n </span>\r\n );\r\n };\r\n\r\n const reservedColumn: ColumnConfig = {\r\n content: (\r\n <div className=\"flex gap-2 items-center\">\r\n {renderBackAction()}\r\n <div className=\"flex flex-col gap-2 w-max\">\r\n <h1 className=\"text-2xl font-bold tracking-tight\">{meta.title}</h1>\r\n {renderStatus()}\r\n {meta.description && (\r\n <p className=\"text-muted-foreground\">{meta.description}</p>\r\n )}\r\n {renderMetadata()}\r\n {meta.breadcrumbs && meta.breadcrumbs.length > 0 && (\r\n <div className=\"flex items-center text-sm text-muted-foreground\">\r\n {meta.breadcrumbs.map((crumb, index) => (\r\n <div key={index} className=\"flex items-center\">\r\n {crumb.href ? (\r\n <span className=\"hover:text-primary hover:underline\">\r\n {crumb.label}\r\n </span>\r\n ) : (\r\n <span>{crumb.label}</span>\r\n )}\r\n {index < meta.breadcrumbs!.length - 1 && (\r\n <ChevronRight className=\"mx-2 h-4 w-4\" />\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n ),\r\n align: 'left',\r\n width: 'fill',\r\n };\r\n\r\n const actionsColumn: ColumnConfig = {\r\n content: meta.primaryActions,\r\n align: 'right',\r\n width: 'auto',\r\n };\r\n\r\n const allColumns: ColumnConfig[] = [\r\n reservedColumn,\r\n ...columns.filter((col): col is ColumnConfig => col !== undefined),\r\n actionsColumn\r\n ];\r\n\r\n return (\r\n <div className={cn('flex items-center w-full gap-4 p-2', className)}>\r\n {allColumns.map((column, index) => (\r\n <div\r\n key={index}\r\n className={cn(\r\n 'flex items-center h-full',\r\n column.className,\r\n {\r\n 'justify-start': column.align === 'left',\r\n 'justify-center': column.align === 'center',\r\n 'justify-end': column.align === 'right',\r\n 'flex-1': column.width === 'fill',\r\n }\r\n )}\r\n >\r\n {column.content}\r\n </div>\r\n ))}\r\n </div>\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 { Slot as SlotPrimitive } from \"radix-ui\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils.js\"\n\nconst buttonVariants = cva(\n \"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\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90\",\n destructive:\n \"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\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant,\n size,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? SlotPrimitive.Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className }), \"transition-none\")}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import { AppMeta, useAppMeta } from '../../context/index.js';\r\nimport { cn } from '../../lib/utils.js';\r\n\r\ntype ColumnConfig = {\r\n content: React.ReactNode;\r\n align?: 'left' | 'center' | 'right';\r\n width?: 'auto' | 'fill';\r\n className?: string;\r\n};\r\n\r\nexport type AppFooterProps = {\r\n className?: string;\r\n columns?: [ColumnConfig?, ColumnConfig?, ColumnConfig?];\r\n meta?: AppMeta;\r\n};\r\n\r\nexport const AppFooter = ({\r\n className,\r\n columns = [],\r\n meta = { title: \"\" },\r\n}: AppFooterProps) => {\r\n // const { meta } = useAppMeta();\r\n\r\n // const renderPagination = () => {\r\n // if (!meta.pagination) return null;\r\n\r\n // return (\r\n // <div className=\"flex items-center gap-2\">\r\n // <Button\r\n // variant=\"outline\"\r\n // size=\"sm\"\r\n // disabled={!meta.pagination.hasPrevious}\r\n // onClick={meta.pagination.onPrevious}\r\n // >\r\n // <ChevronLeft className=\"h-4 w-4 mr-1\" />\r\n // {meta.pagination.previousLabel || 'Previous'}\r\n // </Button>\r\n // <Button\r\n // variant=\"outline\"\r\n // size=\"sm\"\r\n // disabled={!meta.pagination.hasNext}\r\n // onClick={meta.pagination.onNext}\r\n // >\r\n // {meta.pagination.nextLabel || 'Next'}\r\n // <ChevronRight className=\"h-4 w-4 ml-1\" />\r\n // </Button>\r\n // </div>\r\n // );\r\n // };\r\n\r\n const actionsColumn: ColumnConfig = {\r\n content: (\r\n <div className=\"flex items-center gap-4 p-2\">\r\n {/* {renderPagination()} */}\r\n {meta.secondaryActions}\r\n </div>\r\n ),\r\n align: 'right',\r\n width: 'fill',\r\n };\r\n\r\n const allColumns: ColumnConfig[] = [\r\n ...columns.filter((col): col is ColumnConfig => col !== undefined),\r\n actionsColumn\r\n ];\r\n\r\n return (\r\n <div className={cn('flex items-center w-full gap-4', className)}>\r\n {allColumns.map((column, index) => (\r\n <div\r\n key={index}\r\n className={cn(\r\n 'flex items-center h-full',\r\n column.className,\r\n {\r\n 'justify-start': column.align === 'left',\r\n 'justify-center': column.align === 'center',\r\n 'justify-end': column.align === 'right',\r\n 'flex-1': column.width === 'fill',\r\n }\r\n )}\r\n >\r\n {column.content}\r\n </div>\r\n ))}\r\n </div>\r\n );\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","import { cn } from '../../lib/utils.js';\r\nimport type { ReactNode } from 'react';\r\n\r\ntype SpacingSize = 'none' | 'tight' | 'default' | 'loose' | 'extra-loose';\r\n\r\nconst spacingClasses: Record<SpacingSize, string> = {\r\n 'none': 'gap-0',\r\n 'tight': 'gap-2',\r\n 'default': 'gap-4',\r\n 'loose': 'gap-6',\r\n 'extra-loose': 'gap-8'\r\n};\r\n\r\nexport type AppContainerProps = {\r\n children: ReactNode;\r\n className?: string;\r\n spacing?: SpacingSize;\r\n padding?: 'none' | 'tight' | 'default' | 'loose';\r\n};\r\n\r\nconst paddingClasses: Record<NonNullable<AppContainerProps['padding']>, string> = {\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\nexport const AppContainer = ({\r\n children,\r\n className,\r\n spacing = 'tight',\r\n padding = 'none',\r\n}: AppContainerProps) => {\r\n return (\r\n <div className={cn(\r\n 'flex flex-col h-full',\r\n spacingClasses[spacing],\r\n paddingClasses[padding],\r\n className\r\n )}>\r\n {children}\r\n </div>\r\n );\r\n};","import type { AppMetaContextType } from '../../context/app-meta/types.js';\r\nimport { AppHeaderProps, AppHeader as BaseAppHeader } from './app-header.jsx';\r\nimport { AppFooterProps, AppFooter as BaseAppFooter } from './app-footer.jsx';\r\nimport { AppContentProps, AppContent as BaseAppContent } from './app-content.jsx';\r\nimport { AppContainerProps, AppContainer as BaseAppContainer } from './app-container.jsx';\r\n\r\nexport function createLayoutComponents<TRoute extends string>({\r\n useTypedAppMeta,\r\n}: {\r\n useTypedAppMeta: () => AppMetaContextType<TRoute>;\r\n}) {\r\n const AppHeader = (props: Omit<AppHeaderProps, 'meta'>) => {\r\n const { meta } = useTypedAppMeta();\r\n return <BaseAppHeader {...props} meta={meta} />;\r\n };\r\n\r\n const AppFooter = (props: Omit<AppFooterProps, 'meta'>) => {\r\n const { meta } = useTypedAppMeta();\r\n return <BaseAppFooter {...props} meta={meta} />;\r\n };\r\n\r\n const AppContent = (props: AppContentProps) => (\r\n <BaseAppContent {...props} />\r\n );\r\n\r\n const AppContainer = (props: AppContainerProps) => (\r\n <BaseAppContainer {...props} />\r\n );\r\n\r\n return {\r\n AppHeader,\r\n AppFooter,\r\n AppContent,\r\n AppContainer,\r\n };\r\n}"],"mappings":"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","names":["ArrowLeftIcon","ChevronRight","clsx","twMerge","cn","inputs","SlotPrimitive","cva","jsx","buttonVariants","cva","Button","className","variant","size","asChild","props","Comp","SlotPrimitive","cn","NavLink","jsx","jsxs","AppHeader","className","columns","showBackButton","meta","renderBackAction","buttonProps","Button","ArrowLeftIcon","renderMetadata","item","index","renderStatus","cn","reservedColumn","crumb","ChevronRight","actionsColumn","allColumns","col","column","jsx","AppFooter","className","columns","meta","actionsColumn","allColumns","col","cn","column","index","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","jsx","spacingClasses","paddingClasses","AppContainer","children","className","spacing","padding","cn","jsx","createLayoutComponents","useTypedAppMeta","props","meta","AppHeader","AppFooter","AppContent","AppContainer"]}
@@ -1,3 +1,3 @@
1
1
  "use client"
2
- "use strict";var le=Object.create;var O=Object.defineProperty;var pe=Object.getOwnPropertyDescriptor;var de=Object.getOwnPropertyNames;var ce=Object.getPrototypeOf,fe=Object.prototype.hasOwnProperty;var ue=(e,o)=>{for(var a in o)O(e,a,{get:o[a],enumerable:!0})},G=(e,o,a,t)=>{if(o&&typeof o=="object"||typeof o=="function")for(let p of de(o))!fe.call(e,p)&&p!==a&&O(e,p,{get:()=>o[p],enumerable:!(t=pe(o,p))||t.enumerable});return e};var he=(e,o,a)=>(a=e!=null?le(ce(e)):{},G(o||!e||!e.__esModule?O(a,"default",{value:e,enumerable:!0}):a,e)),me=e=>G(O({},"__esModule",{value:!0}),e);var Se={};ue(Se,{AppContainer:()=>H,AppContent:()=>j,AppFooter:()=>q,AppHeader:()=>V,createLayoutComponents:()=>Ne});module.exports=me(Se);var J=require("clsx"),K=require("tailwind-merge");function n(...e){return(0,K.twMerge)((0,J.clsx)(e))}var Q=require("react/jsx-runtime"),ge={none:"gap-0",tight:"gap-2",default:"gap-4",loose:"gap-6","extra-loose":"gap-8"},ve={none:"p-0",tight:"p-2",default:"p-4",loose:"p-6"},H=({children:e,className:o,spacing:a="tight",padding:t="none"})=>(0,Q.jsx)("div",{className:n("flex flex-col h-full",ge[a],ve[t],o),children:e});var S=require("lucide-react");var U=require("radix-ui"),Y=require("class-variance-authority");var Z=require("react/jsx-runtime"),Ce=(0,Y.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 W({className:e,variant:o,size:a,asChild:t=!1,...p}){let s=t?U.Slot.Slot:"button";return(0,Z.jsx)(s,{"data-slot":"button",className:n(Ce({variant:o,size:a,className:e}),"transition-none"),...p})}var $=require("react-router"),i=require("react/jsx-runtime"),V=({className:e,columns:o=[],showBackButton:a=!0,meta:t={title:""}})=>{let p=()=>{if(!t.backAction||!a)return null;let r={variant:"secondary",size:"icon",className:"hover:bg-primary/20 inline-flex"};return t.backAction.href?(0,i.jsx)($.NavLink,{to:t.backAction.href,children:(0,i.jsxs)(W,{...r,children:[(0,i.jsx)(S.ArrowLeftIcon,{className:"size-6"}),t.backAction.content]})}):(0,i.jsxs)(W,{...r,onClick:t.backAction.onClick,children:[(0,i.jsx)(S.ArrowLeftIcon,{className:"size-6"}),t.backAction.content]})},s=()=>!t.metadata||t.metadata.length===0?null:(0,i.jsx)("div",{className:"flex gap-4",children:t.metadata.map((r,h)=>r.value&&(0,i.jsxs)("div",{className:"text-sm",children:[(0,i.jsxs)("span",{className:"text-muted-foreground",children:[r.label," "]}),(0,i.jsx)("span",{children:r.value})]},h))}),f=()=>t.status?(0,i.jsx)("span",{className:n("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,i.jsxs)("div",{className:"flex gap-2 items-center",children:[p(),(0,i.jsxs)("div",{className:"flex flex-col gap-2 w-max",children:[(0,i.jsx)("h1",{className:"text-2xl font-bold tracking-tight",children:t.title}),f(),t.description&&(0,i.jsx)("p",{className:"text-muted-foreground",children:t.description}),s(),t.breadcrumbs&&t.breadcrumbs.length>0&&(0,i.jsx)("div",{className:"flex items-center text-sm text-muted-foreground",children:t.breadcrumbs.map((r,h)=>(0,i.jsxs)("div",{className:"flex items-center",children:[r.href?(0,i.jsx)("span",{className:"hover:text-primary hover:underline",children:r.label}):(0,i.jsx)("span",{children:r.label}),h<t.breadcrumbs.length-1&&(0,i.jsx)(S.ChevronRight,{className:"mx-2 h-4 w-4"})]},h))})]})]}),align:"left",width:"fill"},M={content:t.primaryActions,align:"right",width:"auto"},c=[B,...o.filter(r=>r!==void 0),M];return(0,i.jsx)("div",{className:n("flex items-center w-full gap-4 p-2",e),children:c.map((r,h)=>(0,i.jsx)("div",{className:n("flex items-center h-full",r.className,{"justify-start":r.align==="left","justify-center":r.align==="center","justify-end":r.align==="right","flex-1":r.width==="fill"}),children:r.content},h))})};var g=he(require("react"),1);var v=require("radix-ui"),ee=require("lucide-react");var d=require("react/jsx-runtime");function te({...e}){return(0,d.jsx)(v.Dialog.Root,{"data-slot":"sheet",...e})}function oe({...e}){return(0,d.jsx)(v.Dialog.Trigger,{"data-slot":"sheet-trigger",...e})}function D({...e}){return(0,d.jsx)(v.Dialog.Portal,{"data-slot":"sheet-portal",...e})}function I({className:e,...o}){return(0,d.jsx)(v.Dialog.Overlay,{"data-slot":"sheet-overlay",className: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",e),...o})}function ne({className:e,children:o,side:a="right",...t}){return(0,d.jsxs)(D,{children:[(0,d.jsx)(I,{}),(0,d.jsxs)(v.Dialog.Content,{"data-slot":"sheet-content",className: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",a==="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",a==="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",a==="top"&&"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",a==="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:[o,(0,d.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,d.jsx)(ee.XIcon,{className:"size-4"}),(0,d.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}var l=require("react/jsx-runtime"),ae=(0,g.createContext)(!1),_={"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"]},P={none:"p-0",tight:"p-2",default:"p-4",loose:"p-6"},be=(e,o)=>{let[a,t]=_[o];return{container:"inset-y-0 z-50 transition-all duration-500 ease-in-out",content:n("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"?a:t,sheetPushClass:e==="right"?t:a}},xe="flex flex-col overflow-hidden rounded-2xl relative",ye={default:"bg-background",card:"bg-background shadow-sm border",border:"bg-background border-2",transparent:"bg-transparent"},j=e=>{let{children:o,className:a,variant:t="default",layout:p="full",header:s,footer:f,headerClassName:B,footerClassName:M,parentContainer:c=!1,padding:r=c?"none":"tight"}=e,h=(0,g.useContext)(ae),[re,se]=(0,g.useState)(!1),T=g.default.useCallback(C=>(0,l.jsx)("div",{className:n("flex-1 overflow-auto h-full no-scrollbar",c&&"flex",!c&&P[r]),children:C}),[r,c]),ie=()=>{switch(p){case"split":{let{splitRatio:C="three-fourth",reverse:y=!1}=e;if(!Array.isArray(o)||o.length!==2)return(0,l.jsx)("div",{className:"flex items-center justify-center h-full text-red-500",children:'Error: AppContent with layout="split" requires exactly 2 children'});let[m,w]=_[C],[b,R]=y?[o[1],o[0]]:[o[0],o[1]],[k,F]=y?[w,m]:[m,w];return(0,l.jsxs)("div",{className:"flex h-full gap-2",children:[(0,l.jsx)("div",{className:n(k,"overflow-auto"),children:T(b)}),(0,l.jsx)("div",{className:n(F,"overflow-auto"),children:T(R)})]})}case"with-sheet":{let{sheetContent:C,sheetWidth:y="four-fifth",sheetSide:m="right",sheetMode:w="container",sheetTrigger:b,sheetClassName:R,isSheetOpen:k,onSheetOpenChange:F,showSheetOverlay:E=!0,disableOverlay:N=!0}=e,X=k!==void 0,u=X?k:re,L=X?F:se;if(w==="container"){let x=be(m,y);return(0,l.jsxs)("div",{className:n("flex relative flex-1 overflow-hidden",u&&N&&["left","right"].includes(m)),children:[(0,l.jsxs)("div",{className:n("h-full overflow-auto transition-all duration-500",u&&N&&["left","right"].includes(m)?x.contentPushClass:"w-full",u&&N&&"overflow-y-auto overflow-x-hidden"),children:[b&&(0,l.jsx)("div",{onClick:()=>L?.(!u),children:b}),(0,l.jsx)("div",{className:n("h-full",!c&&P[r]),children:o})]}),(0,l.jsx)("div",{className:n(x.container,"transition-all duration-500 ease-in-out",u&&N&&["left","right"].includes(m)?n(x.sheetPushClass,"overflow-y-auto"):u?x.transformOpen:n(x.transform,"hidden"),"overflow-y-auto"),children:(0,l.jsx)("div",{className:n(x.content,R,"h-full"),children:C})}),u&&E&&!N&&(0,l.jsx)("div",{className:n("absolute inset-0 bg-secondary/20 z-40","transition-opacity duration-500 ease-in-out","opacity-0",u?"opacity-100":"opacity-0"),onClick:()=>L?.(!1)})]})}return(0,l.jsxs)(te,{open:u,onOpenChange:L,children:[b&&(0,l.jsx)(oe,{asChild:!0,children:b}),(0,l.jsxs)(D,{children:[E&&(0,l.jsx)(I,{className:"fixed inset-0 bg-secondary/50 z-50"}),(0,l.jsx)(ne,{side:m,className:n("fixed bg-background border","transition-all duration-500 ease-in-out",_[y][1],R),children:C})]})]})}default:return T(o)}};return(0,l.jsx)(ae.Provider,{value:!0,children:(0,l.jsxs)("div",{className:n(xe,ye[t],P[r],h&&"flex-1",c&&"h-full",!c&&"rounded-2xl",a),children:[s&&(0,l.jsx)("div",{className:n("border-b",B,t==="card"&&!c&&"rounded-t-2xl",t==="border"&&"border-b-2",P[r]),children:s}),ie(),f&&(0,l.jsx)("div",{className:n("border-t",M,t==="card"&&!c&&"rounded-b-2xl",t==="border"&&"border-t-2",P[r]),children:f})]})})};var z=require("react/jsx-runtime"),q=({className:e,columns:o=[],meta:a={title:""}})=>{let t={content:(0,z.jsx)("div",{className:"flex items-center gap-4 p-2",children:a.secondaryActions}),align:"right",width:"fill"},p=[...o.filter(s=>s!==void 0),t];return(0,z.jsx)("div",{className:n("flex items-center w-full gap-4",e),children:p.map((s,f)=>(0,z.jsx)("div",{className:n("flex items-center h-full",s.className,{"justify-start":s.align==="left","justify-center":s.align==="center","justify-end":s.align==="right","flex-1":s.width==="fill"}),children:s.content},f))})};var A=require("react/jsx-runtime");function Ne({useTypedAppMeta:e}){return{AppHeader:s=>{let{meta:f}=e();return(0,A.jsx)(V,{...s,meta:f})},AppFooter:s=>{let{meta:f}=e();return(0,A.jsx)(q,{...s,meta:f})},AppContent:s=>(0,A.jsx)(j,{...s}),AppContainer:s=>(0,A.jsx)(H,{...s})}}0&&(module.exports={AppContainer,AppContent,AppFooter,AppHeader,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 fe=(e,a)=>{for(var s in a)k(e,s,{get:a[s],enumerable:!0})},E=(e,a,s,t)=>{if(a&&typeof a=="object"||typeof a=="function")for(let p of pe(a))!ce.call(e,p)&&p!==s&&k(e,p,{get:()=>a[p],enumerable:!(t=le(a,p))||t.enumerable});return e};var ue=(e,a,s)=>(s=e!=null?ie(de(e)):{},E(a||!e||!e.__esModule?k(s,"default",{value:e,enumerable:!0}):s,e)),he=e=>E(k({},"__esModule",{value:!0}),e);var Se={};fe(Se,{AppContainer:()=>T,AppContent:()=>D,AppFooter:()=>I,AppHeader:()=>W,createLayoutComponents:()=>Ne});module.exports=he(Se);var X=require("clsx"),G=require("tailwind-merge");function o(...e){return(0,G.twMerge)((0,X.clsx)(e))}var J=require("react/jsx-runtime"),me={none:"gap-0",tight:"gap-2",default:"gap-4",loose:"gap-6","extra-loose":"gap-8"},ge={none:"p-0",tight:"p-2",default:"p-4",loose:"p-6"},T=({children:e,className:a,spacing:s="tight",padding:t="none"})=>(0,J.jsx)("div",{className:o("flex flex-col h-full",me[s],ge[t],a),children:e});var S=require("lucide-react");var K=require("radix-ui"),Q=require("class-variance-authority");var U=require("react/jsx-runtime"),ve=(0,Q.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 H({className:e,variant:a,size:s,asChild:t=!1,...p}){let i=t?K.Slot.Slot:"button";return(0,U.jsx)(i,{"data-slot":"button",className:o(ve({variant:a,size:s,className:e}),"transition-none"),...p})}var Y=require("react-router"),l=require("react/jsx-runtime"),W=({className:e,columns:a=[],showBackButton:s=!0,meta:t={title:""}})=>{let p=()=>{if(!t.backAction||!s)return null;let n={variant:"secondary",size:"icon",className:"hover:bg-primary/20 inline-flex"};return t.backAction.href?(0,l.jsx)(Y.NavLink,{to:t.backAction.href,children:(0,l.jsxs)(H,{...n,children:[(0,l.jsx)(S.ArrowLeftIcon,{className:"size-6"}),t.backAction.content]})}):(0,l.jsxs)(H,{...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))}),f=()=>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}),f(),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 g=ue(require("react"),1);var x=require("radix-ui"),Z=require("lucide-react");var c=require("react/jsx-runtime");function $({...e}){return(0,c.jsx)(x.Dialog.Root,{"data-slot":"sheet",...e})}function V({...e}){return(0,c.jsx)(x.Dialog.Portal,{"data-slot":"sheet-portal",...e})}function Ce({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 ee({className:e,children:a,side:s="right",...t}){return(0,c.jsxs)(V,{children:[(0,c.jsx)(Ce,{}),(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",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),...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)(Z.XIcon,{className:"size-4"}),(0,c.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}var r=require("react/jsx-runtime"),te=(0,g.createContext)(!1),O={"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"},be=(e,a)=>{let[s,t]=O[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:s,sheetPushClass:e==="right"?s:t}},xe="flex flex-col overflow-hidden rounded-2xl relative",ye={default:"bg-background",card:"bg-background shadow-sm border",border:"bg-background border-2",transparent:"bg-transparent"},D=e=>{let{children:a,className:s,variant:t="default",layout:p="full",header:i,footer:f,headerClassName:B,contentClassName:C,footerClassName:M,parentContainer:n=!1,padding:d=n?"none":"tight"}=e,oe=(0,g.useContext)(te),[ae,ne]=(0,g.useState)(!1),F=g.default.useCallback(v=>(0,r.jsx)("div",{className:o("flex-1 overflow-auto h-full no-scrollbar",n&&"flex",!n&&y[d],C),children:v}),[d,n,C]),re=()=>{switch(p){case"split":{let{splitRatio:v="three-fourth",reverse:b=!1}=e;if(!Array.isArray(a)||a.length!==2)return(0,r.jsx)("div",{className:"flex items-center justify-center h-full text-red-500",children:'Error: AppContent with layout="split" requires exactly 2 children'});let[u,P]=O[v],[N,A]=b?[a[1],a[0]]:[a[0],a[1]],[R,L]=b?[P,u]:[u,P];return(0,r.jsxs)("div",{className:"flex h-full gap-2",children:[(0,r.jsx)("div",{className:o(R,"overflow-auto"),children:F(N)}),(0,r.jsx)("div",{className:o(L,"overflow-auto"),children:F(A)})]})}case"with-sheet":{let{sheetContent:v,sheetWidth:b="four-fifth",sheetSide:u="right",sheetMode:P="container",sheetClassName:N,isSheetOpen:A,onSheetOpenChange:R,disableOverlay:L=!0,showSheetOverlay:se=!0}=e,_=A!==void 0&&R,h=_?A:ae,j=_?R:ne;if(P==="container"){let m=be(u,b),q=O[b][0];return L?(0,r.jsxs)("div",{className:o("flex relative flex-1 overflow-hidden",C),children:[(0,r.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,r.jsx)("div",{className:o("h-full",!n&&y[d]),children:a})}),(0,r.jsx)("div",{className:o(m.container,"transition-all duration-500 ease-in-out h-full",q,h&&["left","right"].includes(u)?o(m.sheetPushClass,"overflow-y-auto"):h?m.transformOpen:o(m.transform,"hidden"),"overflow-y-auto"),children:(0,r.jsx)("div",{className:o(m.content,N,"h-full"),children:v})})]}):(0,r.jsxs)("div",{className:o("flex relative flex-1 overflow-hidden",C),children:[(0,r.jsx)("div",{className:o("h-full overflow-auto w-full transition-all duration-500 relative z-10"),children:(0,r.jsx)("div",{className:o("h-full",!n&&y[d]),children:a})}),(0,r.jsxs)("div",{className:o("absolute inset-0 z-20",!h&&"pointer-events-none"),children:[se&&(0,r.jsx)("div",{className:o("absolute inset-0 bg-black/50 transition-opacity duration-500",h?"opacity-100":"opacity-0 pointer-events-none"),onClick:()=>j(!1)}),(0,r.jsx)("div",{className:o(m.container,"transition-all duration-500 backdrop-blur-2xl ease-in-out h-full absolute",q,h?"translate-x-0 opacity-100":o(u==="right"?"translate-x-full":"-translate-x-full","opacity-0 pointer-events-none"),"overflow-y-auto"),style:{[u]:0},children:(0,r.jsx)("div",{className:o(m.content,N,"h-full"),children:v})})]})]})}return(0,r.jsxs)(r.Fragment,{children:[a,(0,r.jsx)($,{open:h,onOpenChange:j,children:(0,r.jsx)(V,{children:(0,r.jsx)(ee,{side:u,className:o("fixed bg-background border sm:max-w-full","transition-all duration-500 ease-in-out",O[b][0],N),children:v})})})]})}default:return F(a)}};return(0,r.jsx)(te.Provider,{value:!0,children:(0,r.jsxs)("div",{className:o(xe,ye[t],y[d],oe&&"flex-1",n&&"h-full",!n&&"rounded-2xl",s),children:[i&&(0,r.jsx)("div",{className:o("border-b",B,t==="card"&&!n&&"rounded-t-2xl",t==="border"&&"border-b-2",y[d]),children:i}),re(),f&&(0,r.jsx)("div",{className:o("border-t",M,t==="card"&&!n&&"rounded-b-2xl",t==="border"&&"border-t-2",y[d]),children:f})]})})};var z=require("react/jsx-runtime"),I=({className:e,columns:a=[],meta:s={title:""}})=>{let t={content:(0,z.jsx)("div",{className:"flex items-center gap-4 p-2",children:s.secondaryActions}),align:"right",width:"fill"},p=[...a.filter(i=>i!==void 0),t];return(0,z.jsx)("div",{className:o("flex items-center w-full gap-4",e),children:p.map((i,f)=>(0,z.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},f))})};var w=require("react/jsx-runtime");function Ne({useTypedAppMeta:e}){return{AppHeader:i=>{let{meta:f}=e();return(0,w.jsx)(W,{...i,meta:f})},AppFooter:i=>{let{meta:f}=e();return(0,w.jsx)(I,{...i,meta:f})},AppContent:i=>(0,w.jsx)(D,{...i}),AppContainer:i=>(0,w.jsx)(T,{...i})}}0&&(module.exports={AppContainer,AppContent,AppFooter,AppHeader,createLayoutComponents});
3
3
  //# sourceMappingURL=index.cjs.map