Files
slm-design/site/.vitepress/config.mts

164 lines
5.9 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', 'domains', 'infra', 'ui', 'shared'].includes(slug)
? `layer-${slug}`
: slug
}
const documentationSidebar = [
{
text: 'SLM Level 1',
items: [
{ text: 'Обзор', link: '/level-1/' },
{ text: 'Терминология', link: '/level-1/terminology' },
{ text: 'Слои', link: '/level-1/layers' },
{ text: 'Доменные модули', link: '/level-1/domains' },
{ 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: 'SLM Level 2',
items: [
{ text: 'Обзор', link: '/level-2/' },
{ text: 'Терминология', link: '/level-2/terminology' },
{ text: 'Доменные пакеты', link: '/level-2/domains/' },
{ text: 'Граница пакета', link: '/level-2/domains/domain-package' },
{ text: 'Business module', link: '/level-2/domains/business' },
{ text: 'Factory и adapters', link: '/level-2/domains/factory-ports-adapters' },
{ text: 'Presets и среды', link: '/level-2/domains/presets' },
{ text: 'Framework Groups', link: '/level-2/domains/framework-bindings' },
{ text: 'Зависимости', link: '/level-2/dependencies' },
{ text: 'Тестирование', link: '/level-2/domains/testing' },
{ text: 'Проверка', link: '/level-2/validation' },
{ text: 'Миграция auth', link: '/level-2/domains/auth-example' },
{ text: 'Открытые вопросы', link: '/level-2/domains/open-questions' },
],
},
{
text: 'Правила',
items: [
{ text: 'Как устроены правила', link: '/rules/' },
{ text: 'Реестр Level 1', link: '/rules/level-1' },
{ text: 'Реестр Level 2', link: '/rules/level-2' },
],
},
]
export default defineConfig({
srcDir: '../DRAFT',
srcExclude: ['README.md'],
rewrites: {
'level-1/README.md': 'level-1/index.md',
'level-2/README.md': 'level-2/index.md',
'level-2/domains/README.md': 'level-2/domains/index.md',
'rules/README.md': 'rules/index.md',
},
title: 'SLM Design',
description: 'Последовательная архитектура фронтенд-приложений SLM',
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: 'Level 2', link: '/level-2/' },
{ text: 'Правила', link: '/rules/' },
],
sidebar: documentationSidebar,
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: 'Запрошенная страница отсутствует в опубликованной документации SLM.',
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 Levels 1-2',
copyright: 'Рабочий черновик архитектуры.',
},
},
})