6.7 KiB
AGENTS.md
Common Ground — editorial impact/NKO шаблон: сохраняй newsroom-структуру, публичный ledger, кампании с бюджетом, истории людей, волонтерские смены и проверяемые документы.
Project Specifics
- Кампании, метрики, ledger, истории, смены, документы, партнеры и бюджет описаны в
src/entities/site-content.ts. src/app— только route wrappers; композиция каждой страницы живёт в отдельном widget (src/widgets/<page>-page.tsx). См. File Map.- Mock-пожертвования держи в
src/features/*/ui; не добавляй реальные платежи, CRM, donor accounts или API без запроса. - Не делай generic charity landing: каждая страница должна усиливать доверие через цель, прогресс, документы, ответственного, место или конкретную смену.
- Избегай мягкой декоративной благотворительности; стиль должен ощущаться как редакция, полевой desk и публичная отчетность.
- Проверка после правок:
pnpm lintиpnpm build.
Design System
Источник токенов — src/app/globals.css (@theme + :root/.dark). Шрифт — Noto Serif (--font-commonground), один serif-гарнитур на sans и mono, с включёнными ss01/cv01/tnum (табличные цифры для ledger). Работай через семантические классы Tailwind (bg-card, text-foreground, text-primary, border-foreground), не хардкодь hex/oklch.
Личность: newsroom / полевой выпуск — тёплый газетный кремовый фон с лёгкой бумажной зернистостью, тёмно-коричневый «ink» как текст и границы, глубокий teal primary как «редакционный» сигнал, мягкий зелёный secondary (надежда/поле) и тёплый терракотовый accent. Это не charity-пастель: ощущение печатной редакции и публичной отчётности.
| Роль | Light | Характер |
|---|---|---|
background |
газетный кремовый (oklch 0.96 0.018 83) | бумажный фон с зерном-сеткой |
foreground |
тёмно-коричневый ink (oklch 0.17 0.025 65) | текст + границы (border-2 border-foreground) |
primary |
глубокий teal (oklch 0.43 0.095 218) | акценты, цифры ledger, кнопки, иконки |
secondary |
мягкий зелёный (oklch 0.83 0.09 145) | бейджи региона/роли, hero-glow |
muted / muted-foreground |
тёплый серо-бежевый | вторичный текст |
accent |
терракота (oklch 0.73 0.105 50) | редкий тёплый сигнал |
card |
почти белый кремовый | карточки кампаний, ledger, документы |
Узнаваемые приёмы (держи их, это и есть «лицо» проекта):
- Серифная типографика: Noto Serif +
font-black— газетные заголовки, очень плотныйleading(leading-[0.88]/leading-[0.96]), крупные размеры (доtext-8xl). Тело текста тоже serif. - Толстые границы:
border-2 border-foreground,divide-y-2 divide-foreground— карточки, таблицы ledger и доски смен очерчены, а не растворены. - Hard offset shadow:
shadow-[8px_8px_0_var(--foreground)]на ключевых aside-блоках (hero-выпуск, партнёрская проверка). - Double-rule плашки: утилита
.impact-rule— двойная типографская линейка сверху/снизу для рубрик-капителей (text-sm font-black uppercase). - Газетная подложка:
.newsprint— тонкая сетка-растр для hero/title-секций; глобальный фон body тоже несёт зелёный radial-glow + вертикальный растр. - Скромный radius:
--radius= 0.18rem; элементы почти прямоугольные, но не абсолютно острые. - Ledger-first доверие: табличные цифры (
tnum), прогресс-бары целей и процентов бюджета, проверяемые блоки документов.
Do / Don't:
- Do: держи serif-заголовки, толстые границы, double-rule рубрики, публичный ledger и прогресс-бары; цифры — через
text-primary. - Don't: sans-заголовки, мягкие тени, скруглённые «pill»-карточки, пастельные градиенты, generic-charity hero — это ломает newsroom-личность.
File Map
| Route | Widget |
|---|---|
/ |
src/widgets/home-page.tsx (HomePage) |
/campaigns |
src/widgets/campaigns-page.tsx (CampaignsPage) |
/campaigns/clean-water |
src/widgets/campaign-detail-page.tsx (CampaignDetailPage) |
/impact |
src/widgets/impact-page.tsx (ImpactPage) |
/stories |
src/widgets/stories-page.tsx (StoriesPage) |
/volunteer |
src/widgets/volunteer-page.tsx (VolunteerPage) |
/transparency |
src/widgets/transparency-page.tsx (TransparencyPage) |
Переиспользуемые блоки:
src/widgets/site-shell.tsx—SiteShell(header + nav + footer, обёртка всех страниц).src/widgets/campaign-card.tsx—CampaignCard(Home featured + Campaigns grid).src/widgets/ledger-table.tsx—LedgerTable(Home + Impact).src/shared/ui/editorial-title.tsx—EditorialTitle(заголовочная секция внутренних страниц: Campaigns, Impact, Stories, Volunteer, Transparency).src/shared/lib/campaign.ts—formatRub,campaignProgress(CampaignCard + Campaign Detail).src/features/donation-panel/ui/donation-panel.tsx— mock-панель пожертвования.
Одноразовые блоки колоцированы со своей страницей: MetricCard в impact-page.tsx, StoryCard в stories-page.tsx, DocumentCard в transparency-page.tsx.