44 lines
1.2 KiB
Plaintext
44 lines
1.2 KiB
Plaintext
---
|
|
import { alternatePath, type Locale, t } from "@app/i18n";
|
|
import { Toaster } from "@app/ui";
|
|
import { AppShell } from "~/components/AppShell";
|
|
import { LibraryBody } from "~/components/pages/LibraryBody";
|
|
import AppLayout from "~/layouts/AppLayout.astro";
|
|
|
|
export interface Props {
|
|
locale: Locale;
|
|
}
|
|
|
|
const { locale } = Astro.props;
|
|
const other: Locale = locale === "zh-CN" ? "en" : "zh-CN";
|
|
const labels: Record<string, string> = {
|
|
"meta.brand": t(locale, "meta.brand"),
|
|
"meta.product": t(locale, "meta.product"),
|
|
"nav.library": t(locale, "nav.library"),
|
|
"nav.browse": t(locale, "nav.browse"),
|
|
"nav.mounts": t(locale, "nav.mounts"),
|
|
"nav.danmaku": t(locale, "nav.danmaku"),
|
|
};
|
|
---
|
|
|
|
<AppLayout
|
|
title={t(locale, "library.title")}
|
|
locale={locale}
|
|
nav={[]}
|
|
hideSideRail
|
|
hideFooter
|
|
brand={t(locale, "meta.product")}
|
|
switchHref={alternatePath(Astro.url.pathname, other)}
|
|
switchLabel={t(other, `locale.${other}` as never)}
|
|
seo={{
|
|
title: `${t(locale, "library.title")} · ${t(locale, "meta.brand")}`,
|
|
path: Astro.url.pathname,
|
|
robots: ["noindex", "nofollow"],
|
|
}}
|
|
>
|
|
<AppShell locale={locale} active="library" labels={labels}>
|
|
<LibraryBody locale={locale} client:load />
|
|
</AppShell>
|
|
<Toaster client:load />
|
|
</AppLayout>
|