60 lines
5.7 KiB
Markdown
60 lines
5.7 KiB
Markdown
# AGENTS.md
|
||
|
||
Lineform Studio — архитектурный шаблон с жесткой Swiss/brutalist эстетикой: сохраняй черно-белую сетку, крупную индексную типографику, реальные архитектурные кейсы и форму брифа как главный conversion path.
|
||
|
||
## Project Specifics
|
||
|
||
- Доменный контент лежит в `src/entities/site-content.ts`; не размазывай списки проектов и услуг по компонентам.
|
||
- `src/app` содержит только route wrappers; композиция каждой страницы живёт в отдельном widget (`src/widgets/<page>-page.tsx`). См. File Map.
|
||
- Feature-формы и узкие mock-интеракции размещай в `src/features/*/ui`.
|
||
- Не добавляй CMS, реальные заявки, карты, платежи или backend API без отдельного запроса.
|
||
- Проверка после правок: `pnpm lint` и `pnpm build`.
|
||
|
||
## Design System
|
||
|
||
Источник токенов — `src/app/globals.css` (`@theme` + `:root`/`.dark`). Шрифт — Roboto Flex (`--font-lineform`), один гарнитур на sans и mono, с включёнными `ss01`/`cv01`. Работай через семантические классы Tailwind (`bg-background`, `text-foreground`, `border-foreground`), не хардкодь hex/oklch.
|
||
|
||
Личность: **Swiss/brutalist «бумага и тушь»** — почти белый бумажный фон, near-black «ink» как граница и текст, и единственный тёплый янтарный accent как редкий сигнал. Цвета намеренно нейтральные (нулевая хрома у фона/текста/secondary) — драматизм создаёт не палитра, а сетка, масштаб типографики и толстые границы.
|
||
|
||
| Роль | Light | Характер |
|
||
|---|---|---|
|
||
| `background` | почти белый (oklch 0.985) | бумажный фон страниц |
|
||
| `foreground` | near-black ink (oklch 0.13) | текст + **границы** (`border-2 border-foreground`) |
|
||
| `primary` | near-black ink | заливка кнопок/инверсия |
|
||
| `secondary` | светло-серый | нейтральные плашки |
|
||
| `muted` / `muted-foreground` | серый | вторичный текст, фон фото |
|
||
| `accent` | тёплый янтарь (oklch 0.78 0.16 75) | единственный цветной сигнал (бейдж города) |
|
||
| `card` | чистый белый | поверхности на бумажном фоне |
|
||
|
||
Узнаваемые приёмы (держи их, это и есть «лицо» проекта):
|
||
- **Жёсткие углы:** `--radius` = 0.125rem; всё `rounded-none` (кнопки, бейджи, карточки).
|
||
- **Толстые границы и divider-ы:** `border-2 border-foreground`, `divide-y-2 divide-foreground`, `border-y-2` — структура страницы строится границами, а не тенями.
|
||
- **Никаких теней:** объём даёт инверсия `hover:bg-foreground hover:text-background`, а не drop-shadow.
|
||
- **Чертёжная типографика:** `font-black uppercase`, очень плотный `leading` (`leading-none`/`leading-[0.78]`/`leading-[0.88]`), гигантские viewport-размеры (`text-[18vw]`/`md:text-[10vw]`, до `text-9xl`), индексы вида `Index / 01`.
|
||
- **Утилитарные классы:** `.lineform-grid` — миллиметровая сетка-подложка для hero/секций; `.arch-photo` — `grayscale(1) contrast(1.08)` на всех фото (ч/б архив).
|
||
- **Широкий каркас:** контейнер `max-w-[1500px]`, многоколоночные `md:grid-cols-[...]` раскладки с фиксированными колонками-индексами.
|
||
|
||
Do / Don't:
|
||
- **Do:** держи ч/б палитру, толстые границы, индексную нумерацию, grayscale-фото и крупную uppercase-типографику; accent — только точечно.
|
||
- **Don't:** мягкие тени, скруглённые углы, цветные градиенты, цветные фото, generic-SaaS hero — это ломает «чертёжную» личность шаблона.
|
||
|
||
## File Map
|
||
|
||
| Route | Widget |
|
||
|---|---|
|
||
| `/` | `src/widgets/home-page.tsx` (`HomePage`) |
|
||
| `/work` | `src/widgets/work-page.tsx` (`WorkPage`) |
|
||
| `/work/courtyard-house` | `src/widgets/project-detail-page.tsx` (`ProjectDetailPage`) |
|
||
| `/services` | `src/widgets/services-page.tsx` (`ServicesPage`) |
|
||
| `/process` | `src/widgets/process-page.tsx` (`ProcessPage`) |
|
||
| `/studio` | `src/widgets/studio-page.tsx` (`StudioPage`) |
|
||
| `/contact` | `src/widgets/contact-page.tsx` (`ContactPage`) |
|
||
|
||
Переиспользуемые блоки:
|
||
- `src/widgets/site-shell.tsx` — `SiteShell` (sticky header + nav, обёртка всех страниц).
|
||
- `src/widgets/project-image.tsx` — `ProjectImage` (grayscale-фото проекта с индексом; Home + Project Detail).
|
||
- `src/shared/ui/page-title.tsx` — `PageTitle` (заголовочная секция `code / title / text` внутренних страниц: Work, Services, Process, Studio, Contact).
|
||
- `src/features/project-brief/ui/project-brief-form.tsx` — mock-форма брифа.
|
||
|
||
Одноразовые блоки колоцированы со своей страницей (напр. featured-секция и сетка проектов в `home-page.tsx`, список фактов студии в `studio-page.tsx`).
|