mirror of
https://github.com/10h30/astroplate.git
synced 2026-07-18 06:03:27 +09:00
remove multilingual and create a new multilingual branch
This commit is contained in:
@@ -2,36 +2,33 @@
|
||||
import Logo from "@/components/Logo.astro";
|
||||
import ThemeSwitcher from "@/components/ThemeSwitcher.astro";
|
||||
import config from "@/config/config.json";
|
||||
import LanguageSwitcher from "@/helpers/LanguageSwitcher";
|
||||
import {
|
||||
getLangFromUrl,
|
||||
getTranslations,
|
||||
slugSelector,
|
||||
} from "@/lib/utils/languageParser";
|
||||
import type { ContentEntryMap } from "astro:content";
|
||||
import menu from "@/config/menu.json";
|
||||
import { IoSearch } from "react-icons/io5";
|
||||
|
||||
let lang = getLangFromUrl(Astro.url);
|
||||
const menu = await getTranslations(lang as keyof ContentEntryMap);
|
||||
|
||||
const { navigation_button, settings } = config;
|
||||
const { default_language } = config.settings;
|
||||
const { pathname } = Astro.url;
|
||||
const { get_started } = await getTranslations(lang as keyof ContentEntryMap);
|
||||
|
||||
const disabledLanguages = config.settings.disable_languages as string[];
|
||||
if (disabledLanguages.includes(lang)) {
|
||||
lang = default_language;
|
||||
export interface ChildNavigationLink {
|
||||
name: string;
|
||||
url: string;
|
||||
}
|
||||
|
||||
export interface NavigationLink {
|
||||
name: string;
|
||||
url: string;
|
||||
hasChildren?: boolean;
|
||||
children?: ChildNavigationLink[];
|
||||
}
|
||||
|
||||
const { main }: { main: NavigationLink[] } = menu;
|
||||
const { navigation_button, settings } = config;
|
||||
const { pathname } = Astro.url;
|
||||
---
|
||||
|
||||
<header class={`header z-30 ${settings.sticky_header && "sticky top-0"}`}>
|
||||
<nav class="navbar container">
|
||||
{/* logo */}
|
||||
<!-- logo -->
|
||||
<div class="order-0">
|
||||
<Logo />
|
||||
</div>
|
||||
{/* navbar toggler */}
|
||||
<!-- navbar toggler -->
|
||||
<input id="nav-toggle" type="checkbox" class="hidden" />
|
||||
<label
|
||||
for="nav-toggle"
|
||||
@@ -48,23 +45,21 @@ if (disabledLanguages.includes(lang)) {
|
||||
transform="rotate(45 10 10)"></polygon>
|
||||
</svg>
|
||||
</label>
|
||||
{/* /navbar toggler */}
|
||||
|
||||
<!-- /navbar toggler -->
|
||||
<ul
|
||||
id="nav-menu"
|
||||
class="navbar-nav order-3 hidden w-full pb-6 lg:order-1 lg:flex lg:w-auto lg:space-x-2 lg:pb-0 xl:space-x-8"
|
||||
>
|
||||
{
|
||||
menu?.main.map((menu: any) => (
|
||||
main.map((menu) => (
|
||||
<>
|
||||
{menu.hasChildren ? (
|
||||
<li class="nav-item nav-dropdown group relative">
|
||||
<span
|
||||
class={`nav-link inline-flex items-center ${
|
||||
menu.children?.map(({ url }) => url).includes(pathname) ||
|
||||
menu.children
|
||||
?.map(({ url }: { url: string }) =>
|
||||
slugSelector(url, lang),
|
||||
)
|
||||
?.map(({ url }) => `${url}/`)
|
||||
.includes(pathname)
|
||||
? "active"
|
||||
: ""
|
||||
@@ -76,13 +71,15 @@ if (disabledLanguages.includes(lang)) {
|
||||
</svg>
|
||||
</span>
|
||||
<ul class="nav-dropdown-list hidden group-hover:block lg:invisible lg:absolute lg:block lg:opacity-0 lg:group-hover:visible lg:group-hover:opacity-100">
|
||||
{menu.children?.map((child: any) => (
|
||||
{menu.children?.map((child) => (
|
||||
<li class="nav-dropdown-item">
|
||||
<a
|
||||
href={slugSelector(child.url, lang)}
|
||||
href={child.url}
|
||||
aria-label={child.name}
|
||||
class={`nav-dropdown-link block ${
|
||||
pathname === slugSelector(child.url, lang) && "active"
|
||||
(pathname === `${child.url}/` ||
|
||||
pathname === child.url) &&
|
||||
"active"
|
||||
}`}
|
||||
>
|
||||
{child.name}
|
||||
@@ -94,9 +91,10 @@ if (disabledLanguages.includes(lang)) {
|
||||
) : (
|
||||
<li class="nav-item">
|
||||
<a
|
||||
href={slugSelector(menu.url, lang)}
|
||||
href={menu.url}
|
||||
class={`nav-link block ${
|
||||
pathname === slugSelector(menu.url, lang) && "active"
|
||||
(pathname === `${menu.url}/` || pathname === menu.url) &&
|
||||
"active"
|
||||
}`}
|
||||
>
|
||||
{menu.name}
|
||||
@@ -106,7 +104,6 @@ if (disabledLanguages.includes(lang)) {
|
||||
</>
|
||||
))
|
||||
}
|
||||
{/* Navigation button */}
|
||||
{
|
||||
navigation_button.enable && (
|
||||
<li class="mt-4 inline-block lg:hidden">
|
||||
@@ -114,15 +111,13 @@ if (disabledLanguages.includes(lang)) {
|
||||
class="btn btn-outline-primary btn-sm"
|
||||
href={navigation_button.link}
|
||||
>
|
||||
{get_started}
|
||||
{navigation_button.label}
|
||||
</a>
|
||||
</li>
|
||||
)
|
||||
}
|
||||
</ul>
|
||||
|
||||
<div class="order-1 ml-auto flex items-center md:order-2 lg:ml-0">
|
||||
{/* Search button */}
|
||||
{
|
||||
settings.search && (
|
||||
<button
|
||||
@@ -134,20 +129,14 @@ if (disabledLanguages.includes(lang)) {
|
||||
</button>
|
||||
)
|
||||
}
|
||||
{/* Theme switcher */}
|
||||
<ThemeSwitcher className="mr-5" />
|
||||
|
||||
{/* Language switcher */}
|
||||
<LanguageSwitcher client:load lang={lang} pathname={pathname} />
|
||||
|
||||
{/* Navigation button */}
|
||||
{
|
||||
navigation_button.enable && (
|
||||
<a
|
||||
class="btn btn-outline-primary btn-sm hidden lg:inline-block"
|
||||
href={navigation_button.link}
|
||||
>
|
||||
{get_started}
|
||||
{navigation_button.label}
|
||||
</a>
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user