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

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-04 16:35:52 +05:00

53 lines
2.6 KiB
JavaScript

// Заполняет страницу из config.json
(function () {
var $ = function (id) { return document.getElementById(id); };
var make = function (tag, cls, text) { var n = document.createElement(tag); if (cls) n.className = cls; if (text) n.textContent = text; return n; };
var safe = function (u) { return /^https?:\/\//i.test(u) ? u : '#'; };
window.siteConfig.then(function (c) {
if (!c) return;
if (c.name) {
$('name').textContent = c.name;
document.title = c.name + ': давай общаться';
$('initials').textContent = c.name.split(/\s+/).map(function (w) { return w.charAt(0); }).join('').slice(0, 2).toUpperCase();
}
if (c.status) $('status').textContent = c.status;
if (c.tagline) {
// текст раскладывается на слова: каждое появляется по очереди (стили в css, .w)
var tg = $('tagline'); tg.textContent = '';
c.tagline.split(/\s+/).forEach(function (word, i, all) {
var w = make('span', 'w', word); w.style.setProperty('--i', i); tg.appendChild(w);
if (i < all.length - 1) tg.appendChild(document.createTextNode(' '));
});
}
(c.facts || []).forEach(function (f) {
var li = make('li'); li.appendChild(make('span', 'em', f.emoji || '')); li.appendChild(document.createTextNode(' ' + f.text));
$('facts').appendChild(li);
});
if (c.cta) $('cta').textContent = c.cta;
if (c.photo && /^\/[\w\-./]+$/.test(c.photo)) {
var img = document.createElement('img');
img.src = c.photo; img.alt = ''; img.width = 480; img.height = 480; img.fetchPriority = 'high';
$('avatar').textContent = ''; $('avatar').classList.add('has-photo'); $('avatar').appendChild(img);
}
(c.tags || []).forEach(function (t) {
var li = make('li');
li.appendChild(make('span', 'em', t.emoji || ''));
li.appendChild(document.createTextNode(' ' + t.text));
$('tags').appendChild(li);
});
var list = $('links'), mailLi = $('mail').parentNode;
(c.socials || []).forEach(function (s) {
var a = make('a', 'link');
a.href = safe(s.url); a.target = '_blank'; a.rel = 'me noopener';
a.appendChild(make('span', 'ic', (s.label || '?').charAt(0)));
a.appendChild(make('span', 'lk', s.label));
a.appendChild(make('span', 'lh', s.handle || ''));
var li = make('li'); li.appendChild(a);
list.insertBefore(li, mailLi);
});
if (c.email) { $('mail').href = 'mailto:' + c.email; $('mail').querySelector('.lh').textContent = c.email; }
}).then(window.siteReady);
})();