Сайт-визитка: главная, архитектура, проекты

- Главная: фото, факты, соцсети, форма связи, анимации
- Архитектура: карточки проектов и отдельные страницы (Тихий двор, павильон, «Лофт»)
- Проекты: Aman's World (скриншоты, описание) и хоумлаб
- Меню из config.json, шаблон новых страниц, черновики training/work/fixed
- Чистый HTML/CSS/JS без сборки, шрифты и картинки локально

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-04 16:35:52 +05:00
co-authored by Claude Sonnet 5.5
commit 152f1d60b5
94 changed files with 1517 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
// Верхнее меню из config.json: pages. На главной показывается, только если есть страницы; на остальных всегда.
(function () {
window.siteConfig.then(function (c) {
var nav = document.getElementById('topnav');
if (nav && c) {
var pages = (c.pages || []).filter(function (p) { return !p.draft; }); // черновики в меню не попадают
var norm = function (p) { return p.replace(/\/+$/, '') + '/'; };
var here = norm(location.pathname);
var home = here === '/';
if (pages.length || !home) {
var brand = document.createElement('a');
brand.className = 'brand'; brand.href = '/';
var parts = (c.name || 'Главная').split(' ');
brand.appendChild(document.createTextNode(parts[0]));
if (parts.length > 1) { var rest = document.createElement('span'); rest.className = 'brand-rest'; rest.textContent = ' ' + parts.slice(1).join(' '); brand.appendChild(rest); }
nav.appendChild(brand);
var ul = document.createElement('ul');
pages.forEach(function (p) {
if (!/^\/[\w\-./]*$/.test(p.url)) return; // только внутренние адреса
var a = document.createElement('a');
a.className = 'pill'; a.href = p.url; a.textContent = p.label;
var u = norm(p.url);
if (u === here || (u !== '/' && here.indexOf(u) === 0)) a.setAttribute('aria-current', 'page');
var li = document.createElement('li'); li.appendChild(a); ul.appendChild(li);
});
nav.appendChild(ul);
document.body.classList.add('has-nav');
}
}
}).then(window.siteReady);
})();