Files

5.7 KiB
Raw Permalink Blame History

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-photograyscale(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.tsxSiteShell (sticky header + nav, обёртка всех страниц).
  • src/widgets/project-image.tsxProjectImage (grayscale-фото проекта с индексом; Home + Project Detail).
  • src/shared/ui/page-title.tsxPageTitle (заголовочная секция 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).