--- import { Icon } from "astro-icon/components"; import { type NavbarLink } from "@/types/config"; import { navbarConfig } from "@/config"; import { LinkPresets } from "@constants/link-presets"; import { url } from "@utils/url"; import GridLayout from "@layouts/grid.astro"; import { siteConfig } from "@/config"; // Получаем все ссылки из navbar, включая основные и с подразделами const allLinks: NavbarLink[] = []; navbarConfig.links.forEach(link => { if (typeof link === "number") { // Это LinkPreset const preset = LinkPresets[link]; if (preset) { allLinks.push(preset); } } else { // Это NavbarLink allLinks.push(link); } }); // Добавляем ссылку на новости/ленту постов const newsLink: NavbarLink = { name: "Новости", url: "/news/", icon: "material-symbols:article", description: "Лента постов и статей", }; // Вставляем ссылку на новости в начало списка allLinks.unshift(newsLink); const pageTitle = siteConfig.title; const pageDescription = siteConfig.subtitle || ""; --- {pageTitle} {pageDescription && ( {pageDescription} )} {allLinks.map(link => { // Для ссылок с подразделами показываем саму ссылку const hasChildren = link.children && link.children.length > 0; const linkUrl = hasChildren ? link.url : (link.external ? link.url : url(link.url)); return ( {link.icon && } {link.name} {link.description && ( {link.description} )} ); })}
{pageDescription}
{link.description}