This commit is contained in:
S. Gromov
2026-08-10 09:12:22 +03:00
parent b5db9e5158
commit 691069af8e
55 changed files with 1519 additions and 3383 deletions

View File

@@ -7,63 +7,39 @@ const viteConfigPath = fileURLToPath(new URL('../vite.config.mts', import.meta.u
const documentationSidebar = [
{
text: 'SLM Level 1',
text: 'Архитектурная модель',
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: 'Владение и структура', link: '/architecture/' },
{ text: 'Слои и группы', link: '/architecture/layers' },
{ text: 'Модули и границы', link: '/architecture/modules' },
{ text: 'Сегменты', link: '/architecture/segments' },
],
},
{
text: 'SLM Level 2',
text: 'Нормативная часть',
items: [
{ text: 'Обзор', link: '/level-2/' },
{ text: 'Терминология', link: '/level-2/terminology' },
{ text: 'Доменные пакеты', link: '/level-2/domains/' },
{ text: 'Граница пакета', link: '/level-2/domains/domain-package' },
{ text: 'Domain API', link: '/level-2/domains/domain-api' },
{ text: 'Factories, ports и adapters', link: '/level-2/domains/factory-ports-adapters' },
{ text: 'Assemblies и default', link: '/level-2/domains/assemblies' },
{ text: 'Состояние и кэш', link: '/level-2/domains/state-cache' },
{ text: 'Framework Groups', link: '/level-2/domains/framework-bindings' },
{ text: 'Realtime', link: '/level-2/domains/realtime' },
{ 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: 'Устройство правил', link: '/rules/' },
{ text: 'Реестр правил', link: '/rules/registry' },
],
},
{
text: 'Правила',
text: 'Справочные материалы',
items: [
{ text: 'Как устроены правила', link: '/rules/' },
{ text: 'Реестр Level 1', link: '/rules/level-1' },
{ text: 'Реестр Level 2', link: '/rules/level-2' },
{ text: 'Терминология', link: '/reference/terminology' },
{ text: 'Проверка архитектуры', link: '/reference/validation' },
],
},
]
export default defineConfig({
srcDir: '../DRAFT',
srcExclude: ['README.md'],
srcDir: '../docs',
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',
'README.md': 'index.md',
'architecture/README.md': 'architecture/index.md',
'rules/README.md': 'rules/index.md',
},
title: 'SLM Design',
description: 'Последовательная архитектура фронтенд-приложений SLM',
description: 'Архитектура фронтенд-приложений с явным владением ответственностями',
lang: 'ru-RU',
base: '/slm-design/',
cleanUrls: true,
@@ -87,9 +63,9 @@ export default defineConfig({
logo: '/logo.svg',
siteTitle: 'SLM Design',
nav: [
{ text: 'Level 1', link: '/level-1/' },
{ text: 'Level 2', link: '/level-2/' },
{ text: 'Архитектура', link: '/architecture/' },
{ text: 'Правила', link: '/rules/' },
{ text: 'Проверка', link: '/reference/validation' },
],
sidebar: documentationSidebar,
socialLinks: [{ icon: 'github', link: repositoryUrl }],
@@ -100,14 +76,14 @@ export default defineConfig({
disableQueryPersistence: true,
translations: {
button: {
buttonText: 'Поиск по документации',
buttonAriaLabel: 'Поиск по документации или коду правила',
buttonText: 'Найти в SLM',
buttonAriaLabel: 'Искать по архитектуре, терминам и правилам',
},
modal: {
displayDetails: 'Показать подробности',
resetButtonTitle: 'Сбросить поиск',
backButtonTitle: 'Закрыть поиск',
noResultsText: 'Ничего не найдено',
displayDetails: 'Показать контекст',
resetButtonTitle: 'Очистить запрос',
backButtonTitle: 'Закрыть',
noResultsText: 'Совпадений нет',
footer: {
selectText: 'выбрать',
navigateText: 'перейти',
@@ -117,25 +93,25 @@ export default defineConfig({
},
},
},
outline: { level: [2, 3], label: 'На этой странице' },
outline: { level: [2, 3], label: 'В этом разделе' },
notFound: {
code: '404',
title: 'Страница не найдена',
quote: 'Запрошенная страница отсутствует в опубликованной документации SLM.',
linkLabel: 'Перейти на главную',
linkText: 'Вернуться к документации',
title: 'Такой страницы нет',
quote: 'Этот путь не относится к текущей структуре документации.',
linkLabel: 'Открыть главную страницу',
linkText: 'К началу документации',
},
editLink: {
pattern: `${repositoryUrl}/edit/master/DRAFT/:path`,
text: 'Предложить изменение',
pattern: `${repositoryUrl}/edit/master/docs/:path`,
text: 'Уточнить документацию',
},
lastUpdated: {
text: 'Обновлено',
text: 'Последнее изменение',
formatOptions: { dateStyle: 'medium' },
},
docFooter: {
prev: 'Предыдущая страница',
next: 'Следующая страница',
prev: 'Назад',
next: 'Далее',
},
darkModeSwitchLabel: 'Оформление',
lightModeSwitchTitle: 'Светлая тема',
@@ -144,8 +120,8 @@ export default defineConfig({
returnToTopLabel: 'Наверх',
skipToContentLabel: 'Перейти к содержанию',
footer: {
message: 'SLM Levels 1-2',
copyright: 'Рабочий черновик архитектуры.',
message: 'Документация SLM Design',
copyright: 'Открытая архитектурная модель',
},
},
})

View File

@@ -71,7 +71,7 @@ html {
font-size: clamp(2rem, 4vw, 2.65rem);
}
.vp-doc h3[id^='slm-l'] {
.vp-doc h3[id^='slm-'] {
margin-top: 34px;
scroll-margin-top: calc(var(--vp-nav-height) + var(--vp-layout-top-height) + 24px);
color: var(--vp-c-brand-1);
@@ -81,7 +81,7 @@ html {
letter-spacing: -0.02em;
}
.vp-doc h3[id^='slm-l'] + blockquote {
.vp-doc h3[id^='slm-'] + blockquote {
position: relative;
margin: 10px 0 24px;
padding: 42px 20px 18px;
@@ -94,7 +94,7 @@ html {
line-height: 1.7;
}
.vp-doc h3[id^='slm-l'] + blockquote::before {
.vp-doc h3[id^='slm-'] + blockquote::before {
position: absolute;
top: 14px;
left: 20px;
@@ -106,23 +106,23 @@ html {
text-transform: uppercase;
}
.vp-doc h3[id^='slm-l'][id*='-a'] + blockquote::before {
content: 'Автоматическая проверка';
.vp-doc h3[id^='slm-'][id*='-a'] + blockquote::before {
content: 'Проверяется автоматически';
}
.vp-doc h3[id^='slm-l'][id*='-r'] + blockquote::before {
content: 'Проверка на ревью';
.vp-doc h3[id^='slm-'][id*='-r'] + blockquote::before {
content: 'Требует ревью';
}
.vp-doc h3[id^='slm-l'] + blockquote > p {
.vp-doc h3[id^='slm-'] + blockquote > p {
margin: 0;
}
.vp-doc h3[id^='slm-l'] + blockquote > p + p {
.vp-doc h3[id^='slm-'] + blockquote > p + p {
margin-top: 8px;
}
.vp-doc h3[id^='slm-l'] + blockquote strong:first-child {
.vp-doc h3[id^='slm-'] + blockquote strong:first-child {
color: var(--vp-c-text-1);
font-weight: 700;
}
@@ -132,7 +132,7 @@ html {
font-size: 16px;
}
.vp-doc h3[id^='slm-l'] + blockquote {
.vp-doc h3[id^='slm-'] + blockquote {
margin-inline: -8px;
padding: 42px 14px 14px;
}