UNPKG

mongoku

Version:

[![CI](https://github.com/huggingface/Mongoku/actions/workflows/ci.yml/badge.svg)](https://github.com/huggingface/Mongoku/actions/workflows/ci.yml)

182 lines (179 loc) 10.9 kB
import './async-DUoD1OpG.js'; import { h as head, a as attr, e as escape_html, b as ensure_array_like, c as attr_class, s as stringify, d as derived, f as clsx } from './root-otUAnOAR.js'; import { r as resolve } from './server2-D_y4YbpC.js'; import { p as page } from './index2-B0RgZaJY.js'; import { n as notificationStore } from './notifications.svelte-CIqkoPWX.js'; import './client-COtw9Xqw.js'; import './server-Crjo4w1q.js'; import './routing-EDfUNu8L.js'; import 'zod'; import './state.svelte-Bj5yxNNk.js'; import './client2-BIa3wTXU.js'; import './utils-BQzn9ikS.js'; import './index-CtYzvcG6.js'; import './exports-B5ORJhfK.js'; const breadcrumbs = { get items() { const list = page.data.breadcrumbs ?? []; return list.reduce( (prev, curr) => [ ...prev, { label: curr.label, href: `${prev.at(-1)?.href ?? ""}${curr.path}` } ], [] ); } }; function Breadcrumbs($$renderer, $$props) { $$renderer.component(($$renderer2) => { if (breadcrumbs.items.length > 0) { $$renderer2.push("<!--[0-->"); $$renderer2.push(`<nav aria-label="Breadcrumb" class="hidden md:flex items-center gap-1 text-sm"><!--[-->`); const each_array = ensure_array_like(breadcrumbs.items); for (let index = 0, $$length = each_array.length; index < $$length; index++) { let crumb = each_array[index]; if (crumb.href && index < breadcrumbs.items.length - 1) { $$renderer2.push("<!--[0-->"); $$renderer2.push(`<a${attr("href", resolve(crumb.href))} class="px-2 py-1 rounded-md hover:bg-[var(--color-3)] transition no-underline" style="color: var(--text);">${escape_html(crumb.label)}</a>`); } else { $$renderer2.push("<!--[-1-->"); $$renderer2.push(`<span aria-current="page" class="px-2 py-1 rounded-md font-medium" style="color: var(--text);">${escape_html(crumb.label)}</span>`); } $$renderer2.push(`<!--]--> `); if (index < breadcrumbs.items.length - 1) { $$renderer2.push("<!--[0-->"); $$renderer2.push(`<span style="color: var(--text-secondary);">/</span>`); } else { $$renderer2.push("<!--[-1-->"); } $$renderer2.push(`<!--]-->`); } $$renderer2.push(`<!--]--></nav>`); } else { $$renderer2.push("<!--[-1-->"); } $$renderer2.push(`<!--]-->`); }); } function IconClose($$renderer, $$props) { let { class: className = "w-4 h-4" } = $$props; $$renderer.push(`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"${attr_class(clsx(className))}><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>`); } function Notifications($$renderer, $$props) { $$renderer.component(($$renderer2) => { $$renderer2.push(`<div class="notifications svelte-2qov3s"><!--[-->`); const each_array = ensure_array_like(notificationStore.items); for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) { let notification = each_array[$$index]; $$renderer2.push(`<div${attr_class(`notification notification-${stringify(notification.type)}`, "svelte-2qov3s")}><span>${escape_html(notification.message)}</span> <button aria-label="Dismiss notification" class="svelte-2qov3s">`); IconClose($$renderer2, { class: "w-[18px] h-[18px]" }); $$renderer2.push(`<!----></button></div>`); } $$renderer2.push(`<!--]--></div>`); }); } function OriginWarning($$renderer, $$props) { $$renderer.component(($$renderer2) => { { $$renderer2.push("<!--[-1-->"); } $$renderer2.push(`<!--]-->`); }); } function PageSwitcher($$renderer, $$props) { $$renderer.component(($$renderer2) => { const { class: className } = $$props; const categories = derived(() => (page.data.categories ?? []).map((x) => ({ ...x, href: page.url.pathname.split("/").slice(0, -1).join("/") + "/" + x.key }))); const currentPath = derived(() => page.url.pathname.split("/").pop()); if (categories().length) { $$renderer2.push("<!--[0-->"); $$renderer2.push(`<div${attr_class(`hidden sm:flex rounded-lg border border-[var(--border-color)] overflow-hidden bg-[var(--light-background)] shadow-sm ${stringify(className)}`)}><!--[-->`); const each_array = ensure_array_like(categories()); for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) { let category = each_array[$$index]; const isActive = currentPath() === category.key; if (isActive) { $$renderer2.push("<!--[0-->"); $$renderer2.push(`<span class="px-3 py-1.5 text-[13px] font-medium bg-[var(--color-1)] shadow-[inset_0_-1px_0_rgba(0,0,0,0.06)] cursor-default" style="color: var(--text);">${escape_html(category.label)}</span>`); } else { $$renderer2.push("<!--[-1-->"); $$renderer2.push(`<a data-sveltekit-reload=""${attr("href", resolve(category.href))} class="px-3 py-1.5 text-[13px] hover:bg-[var(--color-3)] transition no-underline" style="color: var(--text-secondary);">${escape_html(category.label)}</a>`); } $$renderer2.push(`<!--]-->`); } $$renderer2.push(`<!--]--></div>`); } else { $$renderer2.push("<!--[-1-->"); } $$renderer2.push(`<!--]-->`); }); } function sunIcon($$renderer) { $$renderer.push(`<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2m0 16v2m10-10h-2M4 12H2m15.364-7.364-1.414 1.414M8.05 16.95l-1.414 1.414m0-12.728L8.05 6.364m10.607 10.607 1.414 1.414"></path></svg>`); } function moonIcon($$renderer) { $$renderer.push(`<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path></svg>`); } function systemIcon($$renderer) { $$renderer.push(`<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6"><rect x="2" y="3" width="20" height="14" rx="2" ry="2"></rect><line x1="8" y1="21" x2="16" y2="21"></line><line x1="12" y1="17" x2="12" y2="21"></line></svg>`); } function ThemeSwitcher($$renderer, $$props) { $$renderer.component(($$renderer2) => { $$renderer2.push(`<div class="theme-switcher inline-flex rounded-lg border border-[var(--border-color)] bg-[var(--light-background)] overflow-hidden text-sm font-medium svelte-u8uo5a" style="color: var(--text);"><button class="inline-flex items-center gap-2 px-2.5 py-1.5 hover:bg-[var(--color-3)] transition cursor-pointer svelte-u8uo5a" aria-label="Toggle theme"><span class="theme-content theme-light inline-flex items-center gap-2 svelte-u8uo5a">`); sunIcon($$renderer2); $$renderer2.push(`<!----> <span class="hidden sm:inline text-[13px]" style="color: var(--text-secondary);">Light</span></span> <span class="theme-content theme-dark inline-flex items-center gap-2 svelte-u8uo5a">`); moonIcon($$renderer2); $$renderer2.push(`<!----> <span class="hidden sm:inline text-[13px]" style="color: var(--text-secondary);">Dark</span></span> <span class="theme-content theme-system-light inline-flex items-center gap-2 svelte-u8uo5a">`); sunIcon($$renderer2); $$renderer2.push(`<!----></span> <span class="theme-content theme-system-dark inline-flex items-center gap-2 svelte-u8uo5a">`); moonIcon($$renderer2); $$renderer2.push(`<!----></span></button> <div class="w-px bg-[var(--border-color)]"></div> <button class="inline-flex items-center gap-2 px-2.5 py-1.5 hover:bg-[var(--color-3)] transition cursor-pointer svelte-u8uo5a" aria-label="Switch to system theme">`); systemIcon($$renderer2); $$renderer2.push(`<!----> <span class="theme-text-system hidden sm:inline text-[13px] svelte-u8uo5a" style="color: var(--text-secondary);">System</span></button></div>`); }); } function _layout($$renderer, $$props) { $$renderer.component(($$renderer2) => { let { children, data } = $$props; const pageTitle = derived(() => { const items = breadcrumbs.items.slice(-2).reverse(); if (items.length === 0) { return "Mongoku"; } return items.map((b) => b.label).join(" - "); }); head("12qhfyh", $$renderer2, ($$renderer3) => { $$renderer3.title(($$renderer4) => { $$renderer4.push(`<title>${escape_html(pageTitle())}</title>`); }); }); $$renderer2.push(`<div style="min-height: 100vh"><header class="sticky top-0 z-50 border-b border-[var(--border-color)] bg-[var(--background-color)]/80"><div class="max-w-[96rem] mx-auto px-4 sm:px-6 lg:px-8"><div class="h-14 flex items-center gap-3"><a${attr("href", resolve("/"))} class="inline-flex items-center gap-2 group no-underline hover:no-underline"><span class="inline-flex items-center justify-center w-7 h-7 rounded-md bg-black dark:bg-white text-white dark:text-black text-sm font-semibold select-none">M</span> <span class="text-lg font-semibold tracking-tight" style="color: var(--text);">Mongoku</span></a> <div class="hidden md:block w-px h-5 bg-[var(--border-color)]"></div> `); Breadcrumbs($$renderer2); $$renderer2.push(`<!----> <div class="ml-auto flex items-center gap-2">`); PageSwitcher($$renderer2, { class: "" }); $$renderer2.push(`<!----> `); ThemeSwitcher($$renderer2); $$renderer2.push(`<!----> `); if (data.oauthEnabled && data.user) { $$renderer2.push("<!--[0-->"); $$renderer2.push(`<div class="hidden md:block w-px h-5 bg-[var(--border-color)]"></div> <div class="flex items-center gap-1.5"><span class="text-xs text-[var(--text-muted)] max-w-32 truncate"${attr("title", data.user.email)}>${escape_html(data.user.name || data.user.email || "User")}</span> <form method="POST"${attr("action", resolve("/auth/logout"))}><button type="submit" class="inline-flex items-center justify-center rounded-md px-2 py-1 text-xs text-[var(--text-muted)] hover:text-[var(--text)] hover:bg-[var(--hover-background)] transition-colors cursor-pointer">Log out</button></form></div>`); } else { $$renderer2.push("<!--[-1-->"); } $$renderer2.push(`<!--]--></div></div></div></header> `); OriginWarning($$renderer2, { serverOrigin: data.serverOrigin, readOnly: data.readOnly }); $$renderer2.push(`<!----> <main class="max-w-[96rem] mx-auto px-4 sm:px-6 lg:px-8 py-6 md:py-10">`); Notifications($$renderer2); $$renderer2.push(`<!----> <div class="flex flex-col gap-6">`); children($$renderer2); $$renderer2.push(`<!----></div></main> <div></div></div>`); }); } export { _layout as default }; //# sourceMappingURL=_layout.svelte-CLPxHDiP.js.map