@leverege/imaginarium-ui 1.2.0 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("./PluginTypes-C4a2lmPj.cjs"),w=require("./registry-CHzOVHAg.cjs"),s=require("./ImaginariumApp-B7Vlrxfd.cjs"),p=require("./PluginSetup-3m6kjRze.cjs"),g=require("./SystemConfigsContext-yOuS10VO.cjs"),t=require("react/jsx-runtime"),z=require("react-dom/client"),u=require("@leverege/plugin"),S=require("lucide-react"),i=require("./Card-CHVaz_7u.cjs"),I=require("react"),U=require("@radix-ui/react-dropdown-menu"),x=require("./PluginSetup-CQPpS_Js.cjs"),V=require("./PluginSetup-TAIbWrod.cjs"),l=require("./Label-BhnvyUcc.cjs"),P=require("./Tooltip-DQn1fHhM.cjs");function j(e){const o=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(o,n,r.get?r:{enumerable:!0,get:()=>e[n]})}}return o.default=e,Object.freeze(o)}const h=j(I),a=j(U);function G(){if(!u.Config.get("ImaginariumApp","requireAuth",!0))return null;const o=u.Config.get("ImaginariumApp","logoutPath","/api/logout");return t.jsx(i.Button,{variant:"ghost",size:"sm","aria-label":"Sign out",onClick:()=>{window.location.href=o},children:t.jsx(S.LogOut,{className:"h-4 w-4"})})}const N={id:"imaginarium.ui.LogoutItem",sort:100,component:G},M="imaginarium.ui.theme";function H(){if(typeof window>"u")return"light";const e=window.localStorage.getItem(M);return e==="light"||e==="dark"?e:window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function _(){const[e,o]=I.useState(H);I.useEffect(()=>{document.documentElement.classList.toggle("dark",e==="dark"),window.localStorage.setItem(M,e)},[e]);const n=e==="dark"?"light":"dark";return t.jsx(i.Button,{variant:"ghost",size:"sm","aria-label":`Switch to ${n} mode`,onClick:()=>o(n),children:e==="dark"?t.jsx(S.Sun,{className:"h-4 w-4"}):t.jsx(S.Moon,{className:"h-4 w-4"})})}const k={id:"imaginarium.ui.UIModeItem",sort:90,component:_},R=a.Root,A=a.Trigger,E=a.Group,$=a.Portal,K=a.Sub,Y=a.RadioGroup,F=h.forwardRef(({className:e,inset:o,children:n,...r},f)=>t.jsxs(a.SubTrigger,{ref:f,className:i.cn("flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",o&&"pl-8",e),...r,children:[n,t.jsx(S.ChevronRight,{className:"ml-auto h-4 w-4"})]}));F.displayName=a.SubTrigger.displayName;const q=h.forwardRef(({className:e,...o},n)=>t.jsx(a.SubContent,{ref:n,className:i.cn("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",e),...o}));q.displayName=a.SubContent.displayName;const b=h.forwardRef(({className:e,sideOffset:o=4,...n},r)=>t.jsx(a.Portal,{children:t.jsx(a.Content,{ref:r,sideOffset:o,className:i.cn("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",e),...n})}));b.displayName=a.Content.displayName;const v=h.forwardRef(({className:e,inset:o,...n},r)=>t.jsx(a.Item,{ref:r,className:i.cn("relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",o&&"pl-8",e),...n}));v.displayName=a.Item.displayName;const C=h.forwardRef(({className:e,children:o,checked:n,...r},f)=>t.jsxs(a.CheckboxItem,{ref:f,className:i.cn("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),checked:n,...r,children:[t.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:t.jsx(a.ItemIndicator,{children:t.jsx(S.Check,{className:"h-4 w-4"})})}),o]}));C.displayName=a.CheckboxItem.displayName;const B=h.forwardRef(({className:e,children:o,...n},r)=>t.jsxs(a.RadioItem,{ref:r,className:i.cn("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...n,children:[t.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:t.jsx(a.ItemIndicator,{children:t.jsx(S.Circle,{className:"h-2 w-2 fill-current"})})}),o]}));B.displayName=a.RadioItem.displayName;const D=h.forwardRef(({className:e,inset:o,...n},r)=>t.jsx(a.Label,{ref:r,className:i.cn("px-2 py-1.5 text-sm font-semibold",o&&"pl-8",e),...n}));D.displayName=a.Label.displayName;const T=h.forwardRef(({className:e,...o},n)=>t.jsx(a.Separator,{ref:n,className:i.cn("-mx-1 my-1 h-px bg-muted",e),...o}));T.displayName=a.Separator.displayName;const O=({className:e,...o})=>t.jsx("span",{className:i.cn("ml-auto text-xs tracking-widest opacity-60",e),...o});O.displayName="DropdownMenuShortcut";function J(){const e=g.useFilters(),o=new Set(e.hiddenSystemConfigTypes),n=new Set(e.hiddenSystemConfigTags),r=e.knownSystemConfigTypes.length>0,f=e.knownSystemConfigTags.length>0,y=e.hiddenSystemConfigTypes.length+e.hiddenSystemConfigTags.length,c=!e.showDev||y>0;return t.jsxs(R,{children:[t.jsx(A,{asChild:!0,children:t.jsxs(i.Button,{variant:c?"secondary":"ghost",size:"sm","aria-label":e.filteredOutCount>0?`Filter (${e.filteredOutCount} hidden)`:"Filter",children:[t.jsx(S.Filter,{className:"h-4 w-4"}),e.filteredOutCount>0?t.jsx("span",{className:"ml-1 inline-flex min-w-4 items-center justify-center rounded-full bg-primary px-1 py-0 text-[0.625rem] font-medium leading-4 text-primary-foreground",children:e.filteredOutCount}):null]})}),t.jsxs(b,{align:"end",className:"min-w-48",children:[t.jsx(C,{checked:e.showDev,onCheckedChange:e.setShowDev,children:"Show Development"}),r?t.jsxs(I.Fragment,{children:[t.jsx(T,{}),t.jsx(D,{children:"Types"}),e.knownSystemConfigTypes.map(d=>t.jsx(C,{checked:!o.has(d),onCheckedChange:()=>e.toggleSystemConfigType(d),children:d},d))]}):null,f?t.jsxs(I.Fragment,{children:[t.jsx(T,{}),t.jsx(D,{children:"Tags"}),e.knownSystemConfigTags.map(d=>t.jsx(C,{checked:!n.has(d),onCheckedChange:()=>e.toggleSystemConfigTag(d),children:d},d))]}):null,y>0?t.jsxs(I.Fragment,{children:[t.jsx(T,{}),t.jsx(v,{onClick:e.clearHidden,children:"Clear filters"})]}):null]})]})}const L={id:"imaginarium.ui.SystemConfigFilterItem",sort:80,component:J},Q={install(e){V.ReleaseSetup.install(e)}},W={install(e){p.SystemSetup.install(e),x.SecretSetup.install(e),Q.install(e),e.addPlugin(m.ProviderType,{id:"imaginarium.ui.FilterProvider",sort:50,component:g.FilterProvider}),e.addPlugin(m.ProviderType,{id:"imaginarium.ui.SystemConfigsProvider",sort:40,component:g.SystemConfigsProvider}),e.addPlugin(m.TopBarItemType,L),e.addPlugin(m.TopBarItemType,k),e.addPlugin(m.TopBarItemType,N),console.log("Installing built-in plugin setup!!"),e.addPlugin(m.PageType,{id:"imaginarium.RootRedirect",path:"/",element:()=>(console.log("Redirecting from / to /system-config"),window.location.replace(u.Config.get("ImaginariumApp","rootRedirect","/system-config")),null)})}},X={init(e,o){const n=e??{},r=n.config??{};for(const y of Object.keys(r)){const c=r[y];if(c)for(const d of Object.keys(c))u.Config.set(y,d,c[d])}const f=new Set(n.excludes??[]);f.size>0&&u.Plugins.addMutator((y,c)=>c&&typeof c=="object"&&f.has(c.id??"")?null:c);for(const y of n.mutators??[])u.Plugins.addMutator(y);console.log("Installing built-in plugin setup..."),W.install(u.Plugins),o.install(u.Plugins)},create(){const e=u.Config.get("ImaginariumApp","rootElement","#root"),o=u.Config.get("ImaginariumApp","apiBaseUrl","/api"),n=u.Config.get("ImaginariumApp","title","Imaginarium"),r=typeof e=="string"?document.querySelector(e):e;if(!r)throw new Error(`ImaginariumUI.create: root element not found (${String(e)})`);z.createRoot(r).render(t.jsx(s.ImaginariumApp,{apiBaseUrl:o,title:n}))}};exports.NavItemType=m.NavItemType;exports.PageType=m.PageType;exports.ProviderType=m.ProviderType;exports.TopBarItemType=m.TopBarItemType;exports.addNavItem=w.addNavItem;exports.addPage=w.addPage;exports.addProvider=w.addProvider;exports.getNavItems=w.getNavItems;exports.getPages=w.getPages;exports.getProviders=w.getProviders;exports.AppSidebar=s.AppSidebar;exports.ImaginariumApp=s.ImaginariumApp;exports.LoginPage=s.LoginPage;exports.RequireAuth=s.RequireAuth;exports.Shell=s.Shell;exports.Toast=s.Toast;exports.ToastAction=s.ToastAction;exports.ToastClose=s.ToastClose;exports.ToastDescription=s.ToastDescription;exports.ToastProvider=s.ToastProvider;exports.ToastTitle=s.ToastTitle;exports.ToastViewport=s.ToastViewport;exports.Toaster=s.Toaster;exports.ImagineSystemNavItem=p.ImagineSystemNavItem;exports.ImagineSystemNavItemId=p.ImagineSystemNavItemId;exports.ImagineSystemPage=p.ImagineSystemPage;exports.ImagineSystemPageId=p.ImagineSystemPageId;exports.ImagineSystemView=p.ImagineSystemView;exports.SystemSetup=p.SystemSetup;exports.SystemSetupDefault=p.SystemSetup;exports.TagInput=p.TagInput;exports.FilterProvider=g.FilterProvider;exports.SystemConfigsProvider=g.SystemConfigsProvider;exports.applyConfigFilters=g.applyConfigFilters;exports.isDevConfig=g.isDevConfig;exports.useFilters=g.useFilters;exports.useSystemConfigs=g.useSystemConfigs;exports.Button=i.Button;exports.Card=i.Card;exports.CardContent=i.CardContent;exports.CardDescription=i.CardDescription;exports.CardFooter=i.CardFooter;exports.CardHeader=i.CardHeader;exports.CardTitle=i.CardTitle;exports.ImaginariumApiProvider=i.ImaginariumApiProvider;exports.buttonVariants=i.buttonVariants;exports.cn=i.cn;exports.toast=i.toast;exports.useImaginariumApi=i.useImaginariumApi;exports.useToast=i.useToast;exports.SecretNavItem=x.SecretNavItem;exports.SecretPage=x.SecretPage;exports.SecretSetup=x.SecretSetup;exports.SecretView=x.SecretView;exports.Dialog=l.Dialog;exports.DialogClose=l.DialogClose;exports.DialogContent=l.DialogContent;exports.DialogDescription=l.DialogDescription;exports.DialogFooter=l.DialogFooter;exports.DialogHeader=l.DialogHeader;exports.DialogOverlay=l.DialogOverlay;exports.DialogPortal=l.DialogPortal;exports.DialogTitle=l.DialogTitle;exports.DialogTrigger=l.DialogTrigger;exports.Input=l.Input;exports.Label=l.Label;exports.Tooltip=P.Tooltip;exports.TooltipContent=P.TooltipContent;exports.TooltipProvider=P.TooltipProvider;exports.TooltipTrigger=P.TooltipTrigger;exports.DropdownMenu=R;exports.DropdownMenuCheckboxItem=C;exports.DropdownMenuContent=b;exports.DropdownMenuGroup=E;exports.DropdownMenuItem=v;exports.DropdownMenuLabel=D;exports.DropdownMenuPortal=$;exports.DropdownMenuRadioGroup=Y;exports.DropdownMenuRadioItem=B;exports.DropdownMenuSeparator=T;exports.DropdownMenuShortcut=O;exports.DropdownMenuSub=K;exports.DropdownMenuSubContent=q;exports.DropdownMenuSubTrigger=F;exports.DropdownMenuTrigger=A;exports.ImaginariumUI=X;exports.LogoutItem=N;exports.SystemConfigFilterItem=L;exports.UIModeItem=k;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("./PluginTypes-C4a2lmPj.cjs"),w=require("./registry-CHzOVHAg.cjs"),s=require("./ImaginariumApp-DpQNMjG_.cjs"),p=require("./PluginSetup-3m6kjRze.cjs"),g=require("./SystemConfigsContext-yOuS10VO.cjs"),t=require("react/jsx-runtime"),z=require("react-dom/client"),u=require("@leverege/plugin"),S=require("lucide-react"),i=require("./Card-CHVaz_7u.cjs"),I=require("react"),U=require("@radix-ui/react-dropdown-menu"),x=require("./PluginSetup-CQPpS_Js.cjs"),V=require("./PluginSetup-DoIf-dYR.cjs"),l=require("./Label-BhnvyUcc.cjs"),P=require("./Tooltip-DQn1fHhM.cjs");function j(e){const o=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(o,n,r.get?r:{enumerable:!0,get:()=>e[n]})}}return o.default=e,Object.freeze(o)}const h=j(I),a=j(U);function G(){if(!u.Config.get("ImaginariumApp","requireAuth",!0))return null;const o=u.Config.get("ImaginariumApp","logoutPath","/api/logout");return t.jsx(i.Button,{variant:"ghost",size:"sm","aria-label":"Sign out",onClick:()=>{window.location.href=o},children:t.jsx(S.LogOut,{className:"h-4 w-4"})})}const N={id:"imaginarium.ui.LogoutItem",sort:100,component:G},M="imaginarium.ui.theme";function H(){if(typeof window>"u")return"light";const e=window.localStorage.getItem(M);return e==="light"||e==="dark"?e:window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function _(){const[e,o]=I.useState(H);I.useEffect(()=>{document.documentElement.classList.toggle("dark",e==="dark"),window.localStorage.setItem(M,e)},[e]);const n=e==="dark"?"light":"dark";return t.jsx(i.Button,{variant:"ghost",size:"sm","aria-label":`Switch to ${n} mode`,onClick:()=>o(n),children:e==="dark"?t.jsx(S.Sun,{className:"h-4 w-4"}):t.jsx(S.Moon,{className:"h-4 w-4"})})}const k={id:"imaginarium.ui.UIModeItem",sort:90,component:_},R=a.Root,A=a.Trigger,E=a.Group,$=a.Portal,K=a.Sub,Y=a.RadioGroup,F=h.forwardRef(({className:e,inset:o,children:n,...r},f)=>t.jsxs(a.SubTrigger,{ref:f,className:i.cn("flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",o&&"pl-8",e),...r,children:[n,t.jsx(S.ChevronRight,{className:"ml-auto h-4 w-4"})]}));F.displayName=a.SubTrigger.displayName;const q=h.forwardRef(({className:e,...o},n)=>t.jsx(a.SubContent,{ref:n,className:i.cn("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",e),...o}));q.displayName=a.SubContent.displayName;const b=h.forwardRef(({className:e,sideOffset:o=4,...n},r)=>t.jsx(a.Portal,{children:t.jsx(a.Content,{ref:r,sideOffset:o,className:i.cn("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",e),...n})}));b.displayName=a.Content.displayName;const v=h.forwardRef(({className:e,inset:o,...n},r)=>t.jsx(a.Item,{ref:r,className:i.cn("relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",o&&"pl-8",e),...n}));v.displayName=a.Item.displayName;const C=h.forwardRef(({className:e,children:o,checked:n,...r},f)=>t.jsxs(a.CheckboxItem,{ref:f,className:i.cn("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),checked:n,...r,children:[t.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:t.jsx(a.ItemIndicator,{children:t.jsx(S.Check,{className:"h-4 w-4"})})}),o]}));C.displayName=a.CheckboxItem.displayName;const B=h.forwardRef(({className:e,children:o,...n},r)=>t.jsxs(a.RadioItem,{ref:r,className:i.cn("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),...n,children:[t.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:t.jsx(a.ItemIndicator,{children:t.jsx(S.Circle,{className:"h-2 w-2 fill-current"})})}),o]}));B.displayName=a.RadioItem.displayName;const D=h.forwardRef(({className:e,inset:o,...n},r)=>t.jsx(a.Label,{ref:r,className:i.cn("px-2 py-1.5 text-sm font-semibold",o&&"pl-8",e),...n}));D.displayName=a.Label.displayName;const T=h.forwardRef(({className:e,...o},n)=>t.jsx(a.Separator,{ref:n,className:i.cn("-mx-1 my-1 h-px bg-muted",e),...o}));T.displayName=a.Separator.displayName;const O=({className:e,...o})=>t.jsx("span",{className:i.cn("ml-auto text-xs tracking-widest opacity-60",e),...o});O.displayName="DropdownMenuShortcut";function J(){const e=g.useFilters(),o=new Set(e.hiddenSystemConfigTypes),n=new Set(e.hiddenSystemConfigTags),r=e.knownSystemConfigTypes.length>0,f=e.knownSystemConfigTags.length>0,y=e.hiddenSystemConfigTypes.length+e.hiddenSystemConfigTags.length,c=!e.showDev||y>0;return t.jsxs(R,{children:[t.jsx(A,{asChild:!0,children:t.jsxs(i.Button,{variant:c?"secondary":"ghost",size:"sm","aria-label":e.filteredOutCount>0?`Filter (${e.filteredOutCount} hidden)`:"Filter",children:[t.jsx(S.Filter,{className:"h-4 w-4"}),e.filteredOutCount>0?t.jsx("span",{className:"ml-1 inline-flex min-w-4 items-center justify-center rounded-full bg-primary px-1 py-0 text-[0.625rem] font-medium leading-4 text-primary-foreground",children:e.filteredOutCount}):null]})}),t.jsxs(b,{align:"end",className:"min-w-48",children:[t.jsx(C,{checked:e.showDev,onCheckedChange:e.setShowDev,children:"Show Development"}),r?t.jsxs(I.Fragment,{children:[t.jsx(T,{}),t.jsx(D,{children:"Types"}),e.knownSystemConfigTypes.map(d=>t.jsx(C,{checked:!o.has(d),onCheckedChange:()=>e.toggleSystemConfigType(d),children:d},d))]}):null,f?t.jsxs(I.Fragment,{children:[t.jsx(T,{}),t.jsx(D,{children:"Tags"}),e.knownSystemConfigTags.map(d=>t.jsx(C,{checked:!n.has(d),onCheckedChange:()=>e.toggleSystemConfigTag(d),children:d},d))]}):null,y>0?t.jsxs(I.Fragment,{children:[t.jsx(T,{}),t.jsx(v,{onClick:e.clearHidden,children:"Clear filters"})]}):null]})]})}const L={id:"imaginarium.ui.SystemConfigFilterItem",sort:80,component:J},Q={install(e){V.ReleaseSetup.install(e)}},W={install(e){p.SystemSetup.install(e),x.SecretSetup.install(e),Q.install(e),e.addPlugin(m.ProviderType,{id:"imaginarium.ui.FilterProvider",sort:50,component:g.FilterProvider}),e.addPlugin(m.ProviderType,{id:"imaginarium.ui.SystemConfigsProvider",sort:40,component:g.SystemConfigsProvider}),e.addPlugin(m.TopBarItemType,L),e.addPlugin(m.TopBarItemType,k),e.addPlugin(m.TopBarItemType,N),console.log("Installing built-in plugin setup!!"),e.addPlugin(m.PageType,{id:"imaginarium.RootRedirect",path:"/",element:()=>(console.log("Redirecting from / to /system-config"),window.location.replace(u.Config.get("ImaginariumApp","rootRedirect","/system-config")),null)})}},X={init(e,o){const n=e??{},r=n.config??{};for(const y of Object.keys(r)){const c=r[y];if(c)for(const d of Object.keys(c))u.Config.set(y,d,c[d])}const f=new Set(n.excludes??[]);f.size>0&&u.Plugins.addMutator((y,c)=>c&&typeof c=="object"&&f.has(c.id??"")?null:c);for(const y of n.mutators??[])u.Plugins.addMutator(y);console.log("Installing built-in plugin setup..."),W.install(u.Plugins),o.install(u.Plugins)},create(){const e=u.Config.get("ImaginariumApp","rootElement","#root"),o=u.Config.get("ImaginariumApp","apiBaseUrl","/api"),n=u.Config.get("ImaginariumApp","title","Imaginarium"),r=typeof e=="string"?document.querySelector(e):e;if(!r)throw new Error(`ImaginariumUI.create: root element not found (${String(e)})`);z.createRoot(r).render(t.jsx(s.ImaginariumApp,{apiBaseUrl:o,title:n}))}};exports.NavItemType=m.NavItemType;exports.PageType=m.PageType;exports.ProviderType=m.ProviderType;exports.TopBarItemType=m.TopBarItemType;exports.addNavItem=w.addNavItem;exports.addPage=w.addPage;exports.addProvider=w.addProvider;exports.getNavItems=w.getNavItems;exports.getPages=w.getPages;exports.getProviders=w.getProviders;exports.AppSidebar=s.AppSidebar;exports.ImaginariumApp=s.ImaginariumApp;exports.LoginPage=s.LoginPage;exports.RequireAuth=s.RequireAuth;exports.Shell=s.Shell;exports.Toast=s.Toast;exports.ToastAction=s.ToastAction;exports.ToastClose=s.ToastClose;exports.ToastDescription=s.ToastDescription;exports.ToastProvider=s.ToastProvider;exports.ToastTitle=s.ToastTitle;exports.ToastViewport=s.ToastViewport;exports.Toaster=s.Toaster;exports.ImagineSystemNavItem=p.ImagineSystemNavItem;exports.ImagineSystemNavItemId=p.ImagineSystemNavItemId;exports.ImagineSystemPage=p.ImagineSystemPage;exports.ImagineSystemPageId=p.ImagineSystemPageId;exports.ImagineSystemView=p.ImagineSystemView;exports.SystemSetup=p.SystemSetup;exports.SystemSetupDefault=p.SystemSetup;exports.TagInput=p.TagInput;exports.FilterProvider=g.FilterProvider;exports.SystemConfigsProvider=g.SystemConfigsProvider;exports.applyConfigFilters=g.applyConfigFilters;exports.isDevConfig=g.isDevConfig;exports.useFilters=g.useFilters;exports.useSystemConfigs=g.useSystemConfigs;exports.Button=i.Button;exports.Card=i.Card;exports.CardContent=i.CardContent;exports.CardDescription=i.CardDescription;exports.CardFooter=i.CardFooter;exports.CardHeader=i.CardHeader;exports.CardTitle=i.CardTitle;exports.ImaginariumApiProvider=i.ImaginariumApiProvider;exports.buttonVariants=i.buttonVariants;exports.cn=i.cn;exports.toast=i.toast;exports.useImaginariumApi=i.useImaginariumApi;exports.useToast=i.useToast;exports.SecretNavItem=x.SecretNavItem;exports.SecretPage=x.SecretPage;exports.SecretSetup=x.SecretSetup;exports.SecretView=x.SecretView;exports.Dialog=l.Dialog;exports.DialogClose=l.DialogClose;exports.DialogContent=l.DialogContent;exports.DialogDescription=l.DialogDescription;exports.DialogFooter=l.DialogFooter;exports.DialogHeader=l.DialogHeader;exports.DialogOverlay=l.DialogOverlay;exports.DialogPortal=l.DialogPortal;exports.DialogTitle=l.DialogTitle;exports.DialogTrigger=l.DialogTrigger;exports.Input=l.Input;exports.Label=l.Label;exports.Tooltip=P.Tooltip;exports.TooltipContent=P.TooltipContent;exports.TooltipProvider=P.TooltipProvider;exports.TooltipTrigger=P.TooltipTrigger;exports.DropdownMenu=R;exports.DropdownMenuCheckboxItem=C;exports.DropdownMenuContent=b;exports.DropdownMenuGroup=E;exports.DropdownMenuItem=v;exports.DropdownMenuLabel=D;exports.DropdownMenuPortal=$;exports.DropdownMenuRadioGroup=Y;exports.DropdownMenuRadioItem=B;exports.DropdownMenuSeparator=T;exports.DropdownMenuShortcut=O;exports.DropdownMenuSub=K;exports.DropdownMenuSubContent=q;exports.DropdownMenuSubTrigger=F;exports.DropdownMenuTrigger=A;exports.ImaginariumUI=X;exports.LogoutItem=N;exports.SystemConfigFilterItem=L;exports.UIModeItem=k;
2
2
  //# sourceMappingURL=index.cjs.map
package/lib/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { a as C, T as y, P as N } from "./PluginTypes-DsLT43Y8.js";
2
2
  import { N as Te } from "./PluginTypes-DsLT43Y8.js";
3
3
  import { a as Ne, b as ve, c as De, g as Pe, d as ke, e as Me } from "./registry-8kQ494RA.js";
4
- import { I as v } from "./ImaginariumApp-DJ0f2GWB.js";
5
- import { A as Ae, L as Fe, R as Le, S as ze, T as Be, a as Oe, b as je, c as Ue, d as Ee, e as qe, f as Ge, g as He } from "./ImaginariumApp-DJ0f2GWB.js";
4
+ import { I as v } from "./ImaginariumApp-Bp1toCAd.js";
5
+ import { A as Ae, L as Fe, R as Le, S as ze, T as Be, a as Oe, b as je, c as Ue, d as Ee, e as qe, f as Ge, g as He } from "./ImaginariumApp-Bp1toCAd.js";
6
6
  import { S as D } from "./PluginSetup-NL8jYfpN.js";
7
7
  import { I as $e, a as _e, b as Ke, c as Ye, d as Je, T as Qe } from "./PluginSetup-NL8jYfpN.js";
8
8
  import { a as P, F as k, S as M } from "./SystemConfigsContext-D0hXRSH-.js";
@@ -18,7 +18,7 @@ import { useState as U, useEffect as E, Fragment as w } from "react";
18
18
  import * as n from "@radix-ui/react-dropdown-menu";
19
19
  import { b as q } from "./PluginSetup-Co-WnS3V.js";
20
20
  import { S as gt, a as ft, c as ht } from "./PluginSetup-Co-WnS3V.js";
21
- import { g as G } from "./PluginSetup-RmtTRKtb.js";
21
+ import { g as G } from "./PluginSetup-BQk4FFh9.js";
22
22
  import { D as wt, f as St, a as It, d as Ct, e as bt, b as Tt, g as xt, h as Nt, c as vt, i as Dt, I as Pt, L as kt } from "./Label-v0wUXs4O.js";
23
23
  import { T as Rt, a as At, b as Ft, c as Lt } from "./Tooltip-CIwKmgzA.js";
24
24
  function H() {
package/lib/release.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./PluginSetup-TAIbWrod.cjs"),s=require("react/jsx-runtime"),y=require("react"),p=require("@tanstack/react-query"),C=require("lucide-react"),i=require("./Card-CHVaz_7u.cjs");function v({releaseId:o,destConfigId:d,destName:f,apiPath:h="/releases",onPushed:r}){const{toast:a}=i.useToast(),{fetchJson:R}=i.useImaginariumApi(),c=p.useQueryClient(),[P,n]=y.useState(!1),u=f??d,l=p.useMutation({mutationFn:()=>R(`${h}/${o}/push`,{method:"POST",body:JSON.stringify({destConfigId:d})}),onSuccess:t=>{var m;c.invalidateQueries({queryKey:["imaginarium","releases"]}),c.invalidateQueries({queryKey:["imaginarium","release-pushes",o]});const g=((m=t.results)==null?void 0:m.filter(S=>!S.ok).length)??0;t.status==="success"?a({title:"Push complete",description:`Pushed to ${u}.`}):t.status==="partial"?a({title:"Push finished with errors",description:`${g} item${g===1?"":"s"} failed — check push history.`,variant:"destructive"}):a({title:"Push failed",description:`Nothing was applied to ${u}.`,variant:"destructive"}),n(!1),r==null||r(t)},onError:t=>{a({title:"Push failed",description:t.message,variant:"destructive"}),n(!1)}});return P?s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsxs("span",{className:"text-sm text-muted-foreground",children:["Push included items to ",u,"?"]}),s.jsx(i.Button,{variant:"destructive",size:"sm",onClick:()=>l.mutate(),disabled:l.isPending,children:l.isPending?"Pushing…":"Confirm push"}),s.jsx(i.Button,{variant:"ghost",size:"sm",onClick:()=>n(!1),disabled:l.isPending,children:"Cancel"})]}):s.jsxs(i.Button,{variant:"default",size:"sm",onClick:()=>n(!0),children:[s.jsx(C.Send,{}),"Push to ",u]})}exports.ClusterSelect=e.ClusterSelect;exports.CreateReleaseModal=e.CreateReleaseModal;exports.DiffPanel=e.DiffPanel;exports.EntityTag=e.EntityTag;exports.IgnoreButton=e.IgnoreButton;exports.IgnoredPill=e.IgnoredPill;exports.IgnoredTab=e.IgnoredTab;exports.PreviouslySkippedBadge=e.PreviouslySkippedBadge;exports.PushDialog=e.PushDialog;exports.ReleaseDetail=e.ReleaseDetail;exports.ReleaseDiffPanel=e.ReleaseDiffPanel;exports.ReleaseList=e.ReleaseList;exports.ReleaseSetup=e.ReleaseSetup;exports.ReleaseStatusBadge=e.ReleaseStatusBadge;exports.ReleaseView=e.ReleaseView;exports.ResetExclusionsButton=e.ResetExclusionsButton;exports.StatusMatrix=e.StatusMatrix;exports.Toggle=e.Toggle;exports.TranslationsTab=e.TranslationsTab;exports.buildItemTree=e.buildItemTree;exports.buildPushResultMap=e.buildPushResultMap;exports.computeDependsOn=e.computeDependsOn;exports.filterItems=e.filterItems;exports.groupStatusRows=e.groupStatusRows;exports.includedChildCounts=e.includedChildCounts;exports.pushResultFor=e.pushResultFor;exports.typeCounts=e.typeCounts;exports.unmetDependencies=e.unmetDependencies;exports.PushButton=v;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./PluginSetup-DoIf-dYR.cjs"),s=require("react/jsx-runtime"),y=require("react"),p=require("@tanstack/react-query"),C=require("lucide-react"),i=require("./Card-CHVaz_7u.cjs");function v({releaseId:o,destConfigId:d,destName:f,apiPath:h="/releases",onPushed:r}){const{toast:a}=i.useToast(),{fetchJson:R}=i.useImaginariumApi(),c=p.useQueryClient(),[P,n]=y.useState(!1),u=f??d,l=p.useMutation({mutationFn:()=>R(`${h}/${o}/push`,{method:"POST",body:JSON.stringify({destConfigId:d})}),onSuccess:t=>{var m;c.invalidateQueries({queryKey:["imaginarium","releases"]}),c.invalidateQueries({queryKey:["imaginarium","release-pushes",o]});const g=((m=t.results)==null?void 0:m.filter(S=>!S.ok).length)??0;t.status==="success"?a({title:"Push complete",description:`Pushed to ${u}.`}):t.status==="partial"?a({title:"Push finished with errors",description:`${g} item${g===1?"":"s"} failed — check push history.`,variant:"destructive"}):a({title:"Push failed",description:`Nothing was applied to ${u}.`,variant:"destructive"}),n(!1),r==null||r(t)},onError:t=>{a({title:"Push failed",description:t.message,variant:"destructive"}),n(!1)}});return P?s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsxs("span",{className:"text-sm text-muted-foreground",children:["Push included items to ",u,"?"]}),s.jsx(i.Button,{variant:"destructive",size:"sm",onClick:()=>l.mutate(),disabled:l.isPending,children:l.isPending?"Pushing…":"Confirm push"}),s.jsx(i.Button,{variant:"ghost",size:"sm",onClick:()=>n(!1),disabled:l.isPending,children:"Cancel"})]}):s.jsxs(i.Button,{variant:"default",size:"sm",onClick:()=>n(!0),children:[s.jsx(C.Send,{}),"Push to ",u]})}exports.ClusterSelect=e.ClusterSelect;exports.CreateReleaseModal=e.CreateReleaseModal;exports.DiffPanel=e.DiffPanel;exports.EntityTag=e.EntityTag;exports.IgnoreButton=e.IgnoreButton;exports.IgnoredPill=e.IgnoredPill;exports.IgnoredTab=e.IgnoredTab;exports.PreviouslySkippedBadge=e.PreviouslySkippedBadge;exports.PushDialog=e.PushDialog;exports.ReleaseDetail=e.ReleaseDetail;exports.ReleaseDiffPanel=e.ReleaseDiffPanel;exports.ReleaseList=e.ReleaseList;exports.ReleaseSetup=e.ReleaseSetup;exports.ReleaseStatusBadge=e.ReleaseStatusBadge;exports.ReleaseView=e.ReleaseView;exports.ResetExclusionsButton=e.ResetExclusionsButton;exports.StatusMatrix=e.StatusMatrix;exports.Toggle=e.Toggle;exports.TranslationsTab=e.TranslationsTab;exports.buildItemTree=e.buildItemTree;exports.buildPushResultMap=e.buildPushResultMap;exports.computeDependsOn=e.computeDependsOn;exports.filterItems=e.filterItems;exports.groupStatusRows=e.groupStatusRows;exports.includedChildCounts=e.includedChildCounts;exports.pushResultFor=e.pushResultFor;exports.typeCounts=e.typeCounts;exports.unmetDependencies=e.unmetDependencies;exports.PushButton=v;
2
2
  //# sourceMappingURL=release.cjs.map
package/lib/release.js CHANGED
@@ -1,4 +1,4 @@
1
- import { C as E, a as M, D as N, E as j, I as z, b as O, c as Q, P as F, d as J, R as K, e as A, f as L, g as V, h as G, i as H, j as U, S as W, T as X, k as Y, l as Z, m as _, n as ee, o as se, p as te, q as ae, r as ie, t as ne, u as re } from "./PluginSetup-RmtTRKtb.js";
1
+ import { C as E, a as M, D as N, E as j, I as z, b as O, c as Q, P as F, d as J, R as K, e as A, f as L, g as V, h as G, i as H, j as U, S as W, T as X, k as Y, l as Z, m as _, n as ee, o as se, p as te, q as ae, r as ie, t as ne, u as re } from "./PluginSetup-BQk4FFh9.js";
2
2
  import { jsxs as r, jsx as l } from "react/jsx-runtime";
3
3
  import { useState as C } from "react";
4
4
  import { useQueryClient as y, useMutation as R } from "@tanstack/react-query";
package/lib/shell.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./ImaginariumApp-B7Vlrxfd.cjs");exports.AppSidebar=e.AppSidebar;exports.ImaginariumApp=e.ImaginariumApp;exports.Shell=e.Shell;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./ImaginariumApp-DpQNMjG_.cjs");exports.AppSidebar=e.AppSidebar;exports.ImaginariumApp=e.ImaginariumApp;exports.Shell=e.Shell;
2
2
  //# sourceMappingURL=shell.cjs.map
package/lib/shell.js CHANGED
@@ -1,4 +1,4 @@
1
- import { A as r, I as e, S as i } from "./ImaginariumApp-DJ0f2GWB.js";
1
+ import { A as r, I as e, S as i } from "./ImaginariumApp-Bp1toCAd.js";
2
2
  export {
3
3
  r as AppSidebar,
4
4
  e as ImaginariumApp,
@@ -61,8 +61,8 @@
61
61
  --popover: 0 0% 14%;
62
62
  --popover-foreground: 0 0% 95%;
63
63
  --popover-border: 0 0% 17%;
64
- --primary: 217 91% 35%;
65
- --primary-foreground: 217 91% 98%;
64
+ --primary: 217 91% 62%;
65
+ --primary-foreground: 217 40% 12%;
66
66
  --secondary: 0 0% 17%;
67
67
  --secondary-foreground: 0 0% 95%;
68
68
  --muted: 0 0% 16%;
@@ -72,7 +72,7 @@
72
72
  --destructive: 0 84% 35%;
73
73
  --destructive-foreground: 0 84% 98%;
74
74
  --input: 0 0% 24%;
75
- --ring: 217 91% 45%;
75
+ --ring: 217 91% 62%;
76
76
 
77
77
  --primary-border: hsl(var(--primary));
78
78
  --primary-border: hsl(from hsl(var(--primary)) h s calc(l + var(--opaque-button-border-intensity)) / alpha);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leverege/imaginarium-ui",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "description": "Reusable UI library and plugin framework for Imaginarium apps",
5
5
  "type": "module",
6
6
  "main": "./lib/index.cjs",
@@ -195,7 +195,7 @@ export default function ReleaseDetail( { releaseId, onBack }: ReleaseDetailProps
195
195
 
196
196
  const nameById = useMemo( () => {
197
197
  const map = new Map<string, string>()
198
- configs.forEach( ( c ) => map.set( c.id, c.displayName ) )
198
+ configs.forEach( ( c ) => map.set( String( c.id ), c.displayName ) )
199
199
  return map
200
200
  }, [ configs ] )
201
201
  const displayName = ( id: string ) => nameById.get( id ) ?? id
@@ -36,7 +36,7 @@ export default function ReleaseList( { onOpen }: ReleaseListProps ) {
36
36
  // cluster id → displayName lookup.
37
37
  const nameById = useMemo( () => {
38
38
  const map = new Map<string, string>()
39
- configs.forEach( ( c ) => map.set( c.id, c.displayName ) )
39
+ configs.forEach( ( c ) => map.set( String( c.id ), c.displayName ) )
40
40
  return map
41
41
  }, [ configs ] )
42
42
 
@@ -43,7 +43,7 @@ function GatedShell( { title, titleIcon, navRightSlot, shellFallback, children }
43
43
  children?: ReactNode
44
44
  } ) {
45
45
  return withProviders(
46
- <div className="flex min-h-screen bg-background text-foreground">
46
+ <div className="flex h-screen overflow-hidden bg-background text-foreground">
47
47
  <AppSidebar title={title} titleIcon={titleIcon} rightSlot={navRightSlot} />
48
48
  <Shell fallback={shellFallback}>{children}</Shell>
49
49
  </div>,
@@ -61,8 +61,8 @@
61
61
  --popover: 0 0% 14%;
62
62
  --popover-foreground: 0 0% 95%;
63
63
  --popover-border: 0 0% 17%;
64
- --primary: 217 91% 35%;
65
- --primary-foreground: 217 91% 98%;
64
+ --primary: 217 91% 62%;
65
+ --primary-foreground: 217 40% 12%;
66
66
  --secondary: 0 0% 17%;
67
67
  --secondary-foreground: 0 0% 95%;
68
68
  --muted: 0 0% 16%;
@@ -72,7 +72,7 @@
72
72
  --destructive: 0 84% 35%;
73
73
  --destructive-foreground: 0 84% 98%;
74
74
  --input: 0 0% 24%;
75
- --ring: 217 91% 45%;
75
+ --ring: 217 91% 62%;
76
76
 
77
77
  --primary-border: hsl(var(--primary));
78
78
  --primary-border: hsl(from hsl(var(--primary)) h s calc(l + var(--opaque-button-border-intensity)) / alpha);