Files
slm-design/site/.vitepress/config.mts
2026-07-30 10:05:46 +03:00

144 lines
4.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { fileURLToPath } from 'node:url'
import { defineConfig } from 'vitepress'
const repositoryUrl = 'https://github.com/gromlab-ru/slm-design'
const viteConfigPath = fileURLToPath(new URL('../vite.config.mts', import.meta.url))
function slugifyHeading(value: string) {
const slug = value
.replace(/<[^>]+>/g, '')
.replace(/`/g, '')
.trim()
.toLowerCase()
.replace(/\s+/g, '-')
.replace(/[^\p{L}\p{N}_-]/gu, '')
.replace(/-+/g, '-')
return ['app', 'compositions', 'infra', 'ui', 'shared'].includes(slug)
? `layer-${slug}`
: slug
}
const levelOneSidebar = [
{
text: 'SLM Level 1',
items: [
{ text: 'Обзор', link: '/level-1/' },
{ text: 'Терминология', link: '/level-1/terminology' },
{ text: 'Слои', link: '/level-1/layers' },
{ text: 'Зависимости', link: '/level-1/dependencies' },
{ text: 'Модули', link: '/level-1/modules' },
{ text: 'Группы', link: '/level-1/groups' },
{ text: 'Сегменты', link: '/level-1/segments' },
{ text: 'Компоненты', link: '/level-1/components' },
{ text: 'Вложенные модули', link: '/level-1/nested-modules' },
{ text: 'Жизненный цикл', link: '/level-1/lifecycle' },
{ text: 'Проверка', link: '/level-1/validation' },
],
},
{
text: 'Правила',
items: [
{ text: 'Как устроены правила', link: '/rules/' },
{ text: 'Реестр Level 1', link: '/rules/level-1' },
],
},
]
export default defineConfig({
srcDir: '../DRAFT',
srcExclude: ['README.md', 'domains/**'],
rewrites: {
'level-1/README.md': 'level-1/index.md',
'rules/README.md': 'rules/index.md',
},
title: 'SLM Design',
description: 'Базовая архитектура фронтенд-приложений SLM Level 1',
lang: 'ru-RU',
base: '/slm-design/',
cleanUrls: true,
lastUpdated: true,
sitemap: {
hostname: 'https://gromlab-ru.github.io/slm-design/',
},
head: [
['link', { rel: 'icon', type: 'image/svg+xml', href: '/slm-design/logo.svg' }],
['meta', { name: 'theme-color', content: '#d97706' }],
],
markdown: {
anchor: {
slugify: slugifyHeading,
},
},
vite: {
configFile: viteConfigPath,
},
themeConfig: {
logo: '/logo.svg',
siteTitle: 'SLM Design',
nav: [
{ text: 'Level 1', link: '/level-1/' },
{ text: 'Правила', link: '/rules/level-1' },
],
sidebar: {
'/level-1/': levelOneSidebar,
'/rules/': levelOneSidebar,
},
socialLinks: [{ icon: 'github', link: repositoryUrl }],
search: {
provider: 'local',
options: {
detailedView: false,
disableQueryPersistence: true,
translations: {
button: {
buttonText: 'Поиск по документации',
buttonAriaLabel: 'Поиск по документации или коду правила',
},
modal: {
displayDetails: 'Показать подробности',
resetButtonTitle: 'Сбросить поиск',
backButtonTitle: 'Закрыть поиск',
noResultsText: 'Ничего не найдено',
footer: {
selectText: 'выбрать',
navigateText: 'перейти',
closeText: 'закрыть',
},
},
},
},
},
outline: { level: [2, 3], label: 'На этой странице' },
notFound: {
code: '404',
title: 'Страница не найдена',
quote: 'Запрошенная страница отсутствует в документации Level 1.',
linkLabel: 'Перейти на главную',
linkText: 'Вернуться к документации',
},
editLink: {
pattern: `${repositoryUrl}/edit/master/DRAFT/:path`,
text: 'Предложить изменение',
},
lastUpdated: {
text: 'Обновлено',
formatOptions: { dateStyle: 'medium' },
},
docFooter: {
prev: 'Предыдущая страница',
next: 'Следующая страница',
},
darkModeSwitchLabel: 'Оформление',
lightModeSwitchTitle: 'Светлая тема',
darkModeSwitchTitle: 'Тёмная тема',
sidebarMenuLabel: 'Содержание',
returnToTopLabel: 'Наверх',
skipToContentLabel: 'Перейти к содержанию',
footer: {
message: 'SLM Level 1',
copyright: 'Рабочий черновик архитектуры.',
},
},
})