Files
dedinit.ru/openspec/changes/theme-toggle-first-post-card/design.md
T
estorozhenko 57840211f0 fix: переключатель темы вправо у меню + карточка первого поста + подключение typewriter.css через extend_head
- assets/css/extended/typewriter.css: flex-order в .nav (logo | menu | toggle), article.first-entry как .post-entry (фон/рамка/скругление/отступ)
- layouts/partials/extend_head.html (новый): resources.Get typewriter.css — Hugo НЕ подхватывает корневой assets/css/extended через resources.Match темы, поэтому прошлый CSS не применялся (JS работал, стили нет)
- openspec: change theme-toggle-first-post-card (proposal/design/specs/tasks)

ВАЖНО: прошлый деплой typewriter-эффекта был неполным — CSS не подключался. Этот коммит чинит оба бага + курсор.
2026-09-19 18:04:15 +00:00

72 lines
3.0 KiB
Markdown
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.
# Design: Переключатель темы справа + карточка первого поста
## Context
- Тема rDedInit (PaperMod). Шапка: `themes/rDedInit/layouts/partials/header.html`,
контейнер `.nav` — `display:flex; flex-wrap:wrap; justify-content:space-between`.
- DOM-порядок в `.nav`: `<div class="logo">` → `<div class="logo-switches">`
(theme-toggle + lang-switch) → `<ul id="menu">`.
- `.post-entry` (все посты, кроме первого) имеет:
`background:var(--entry); border:1px solid var(--border);
border-radius:var(--radius); padding:var(--gap)`.
- `.first-entry` (первый пост) — НЕ имеет этих свойств (только flex/min-height).
## Changes (все в `assets/css/extended/typewriter.css`)
Этот файл подключён на всех страницах через
`layouts/partials/extend_head.html` (корневой override хука темы):
```css
.nav { flex-wrap: nowrap; }
.nav > .logo { order: 0; margin-inline-end: auto; }
.nav > #menu { order: 1; margin-inline-start: auto; }
.nav > .logo-switches { order: 2; margin-inline-start: 8px; }
article.first-entry {
background: var(--entry);
border-radius: var(--radius);
border: 1px solid var(--border);
padding: var(--gap);
}
```
### Почему flex order, а не изменение темы
- Не трогаем `themes/rDedInit/` — обновления темы не затрут правки.
- DOM не меняется, меняется только визуальный порядок — переключатель
уходит вправо за меню, логотип остаётся слева.
### Важное открытие (2026-09-19)
`resources.Match "css/extended/*.css"` в теме ищет ТОЛЬКО в
`themes/rDedInit/assets/`, НЕ в корне сайта. Поэтому прошлый CSS
`assets/css/extended/typewriter.css` не подхватывался Hugo (JS работал,
стили — нет). Исправлено через `layouts/partials/extend_head.html`:
`resources.Get "css/extended/typewriter.css" | minify | fingerprint`
(корневой override хука `{{- partial "extend_head.html" . }}`, который
тема вызывает в head.html:149).
## Apply
```bash
make build
```
## Verify
```bash
# CSS подключён в head всех страниц
grep -o 'typewriter.min.[^"]*\.css' public/index.html
# order-правила
grep -o 'order:[012]' public/css/extended/typewriter.min.*.css
# карточка первого поста
grep -o 'article.first-entry{[^}]*}' public/css/extended/typewriter.min.*.css
```
В браузере на `/`: солнышко — крайнее справа; первый пост — карточка с
фоном/рамкой как у остальных.
## Rollback
Удалить два блока CSS из `typewriter.css` (или `git checkout` файла),
пересобрать — вернётся поведение темы по умолчанию.