import { a as attr, b as attr_class, c as clsx, f as ensure_array_like, s as store_get, g as stringify, e as escape_html, u as unsubscribe_stores, i as derived } from "../../chunks/index.js"; import { o as onDestroy } from "../../chunks/index-server.js"; import { p as page } from "../../chunks/stores.js"; import { t as toasts } from "../../chunks/toast.js"; import { I as IconCheck } from "../../chunks/IconCheck.js"; import { I as IconX } from "../../chunks/IconX.js"; import { I as IconAlert } from "../../chunks/IconAlert.js"; import { t as themeMode } from "../../chunks/theme.js"; import { t, a as availableLocales, l as locale } from "../../chunks/index2.js"; import { I as IconGlobe } from "../../chunks/IconGlobe.js"; import { I as IconDeploy } from "../../chunks/IconDeploy.js"; import { I as IconSettings } from "../../chunks/IconSettings.js"; import { w as writable, g as get } from "../../chunks/index3.js"; function IconDashboard($$renderer, $$props) { const { size = 20, class: c = "" } = $$props; $$renderer.push(``); } function IconProjects($$renderer, $$props) { const { size = 20, class: c = "" } = $$props; $$renderer.push(``); } function IconInfo($$renderer, $$props) { const { size = 20, class: c = "" } = $$props; $$renderer.push(``); } function IconSun($$renderer, $$props) { const { size = 20, class: c = "" } = $$props; $$renderer.push(``); } function IconMoon($$renderer, $$props) { const { size = 20, class: c = "" } = $$props; $$renderer.push(``); } function IconMonitor($$renderer, $$props) { const { size = 20, class: c = "" } = $$props; $$renderer.push(``); } function IconMenu($$renderer, $$props) { const { size = 20, class: c = "" } = $$props; $$renderer.push(``); } function IconProxies($$renderer, $$props) { const { size = 20, class: c = "" } = $$props; $$renderer.push(``); } function IconEvents($$renderer, $$props) { const { size = 20, class: c = "" } = $$props; $$renderer.push(``); } function IconLogout($$renderer, $$props) { const { size = 24, class: className = "" } = $$props; $$renderer.push(``); } function Toast($$renderer, $$props) { $$renderer.component(($$renderer2) => { var $$store_subs; const bgMap = { success: "bg-[var(--color-success)]", error: "bg-[var(--color-danger)]", warning: "bg-[var(--color-warning)]", info: "bg-[var(--color-info)]" }; $$renderer2.push(`
`); const each_array = ensure_array_like(store_get($$store_subs ??= {}, "$toasts", toasts)); for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) { let toast = each_array[$$index]; $$renderer2.push(`
`); if (toast.type === "success") { $$renderer2.push(""); IconCheck($$renderer2, { size: 18 }); } else if (toast.type === "error") { $$renderer2.push(""); IconX($$renderer2, { size: 18 }); } else if (toast.type === "warning") { $$renderer2.push(""); IconAlert($$renderer2, { size: 18 }); } else { $$renderer2.push(""); IconInfo($$renderer2, { size: 18 }); } $$renderer2.push(`
${escape_html(toast.message)}
`); } $$renderer2.push(``); if ($$store_subs) unsubscribe_stores($$store_subs); }); } function ThemeToggle($$renderer, $$props) { $$renderer.component(($$renderer2) => { var $$store_subs; const modes = ["light", "dark", "system"]; $$renderer2.push(`
`); const each_array = ensure_array_like(modes); for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) { let mode = each_array[$$index]; $$renderer2.push(``); } $$renderer2.push(`
`); if ($$store_subs) unsubscribe_stores($$store_subs); }); } function LocaleSwitcher($$renderer, $$props) { $$renderer.component(($$renderer2) => { var $$store_subs; $$renderer2.push(`
`); IconGlobe($$renderer2, { size: 14, class: "text-[var(--text-tertiary)]" }); $$renderer2.push(`
`); const each_array = ensure_array_like(availableLocales); for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) { let loc = each_array[$$index]; $$renderer2.push(``); } $$renderer2.push(`
`); if ($$store_subs) unsubscribe_stores($$store_subs); }); } function createInstanceStatusStore() { const { subscribe, set, update: storeUpdate } = writable({ statuses: {}, lastUpdate: 0, deployStatuses: {} }); return { subscribe, /** Update an instance's status from an SSE event. */ update(payload) { storeUpdate((state) => ({ ...state, statuses: { ...state.statuses, [payload.instance_id]: payload.status }, lastUpdate: Date.now() })); }, /** Record a deploy status change from an SSE event. */ notifyDeploy(payload) { storeUpdate((state) => ({ ...state, deployStatuses: { ...state.deployStatuses, [payload.deploy_id]: payload }, lastUpdate: Date.now() })); }, /** Get the current status of an instance, or undefined if not tracked. */ getStatus(instanceId) { return get({ subscribe }).statuses[instanceId]; }, /** Reset the store (e.g., on disconnect). */ reset() { set({ statuses: {}, lastUpdate: 0, deployStatuses: {} }); } }; } createInstanceStatusStore(); function _layout($$renderer, $$props) { $$renderer.component(($$renderer2) => { var $$store_subs; const { children } = $$props; const navItems = [ { href: "/", labelKey: "nav.dashboard", icon: "dashboard" }, { href: "/projects", labelKey: "nav.projects", icon: "projects" }, { href: "/deploy", labelKey: "nav.deploy", icon: "deploy" }, { href: "/proxies", labelKey: "nav.proxies", icon: "proxies" }, { href: "/events", labelKey: "nav.events", icon: "events" }, { href: "/settings", labelKey: "nav.settings", icon: "settings" } ]; function isActive(href, pathname) { if (href === "/") return pathname === "/"; return pathname.startsWith(href); } let sseConnection = null; const isLoginPage = derived(() => store_get($$store_subs ??= {}, "$page", page).url.pathname === "/login"); onDestroy(() => { sseConnection?.close(); sseConnection = null; }); if (isLoginPage()) { $$renderer2.push(""); children($$renderer2); $$renderer2.push(``); } else { $$renderer2.push(""); $$renderer2.push(`
`); { $$renderer2.push(""); } $$renderer2.push(`
${escape_html(store_get($$store_subs ??= {}, "$t", t)("app.name"))}
`); { $$renderer2.push(""); } $$renderer2.push(`
`); ThemeToggle($$renderer2); $$renderer2.push(` `); LocaleSwitcher($$renderer2); $$renderer2.push(`

${escape_html(store_get($$store_subs ??= {}, "$t", t)("app.name"))} ${escape_html(store_get($$store_subs ??= {}, "$t", t)("app.version"))}

${escape_html(store_get($$store_subs ??= {}, "$t", t)("app.name"))}
`); children($$renderer2); $$renderer2.push(`
`); } $$renderer2.push(` `); Toast($$renderer2); $$renderer2.push(``); if ($$store_subs) unsubscribe_stores($$store_subs); }); } export { _layout as default };