feat: split big file and update agents.md
This commit is contained in:
66
AGENTS.md
66
AGENTS.md
@@ -5,7 +5,7 @@ Juniper Table — seasonal restaurant template for booking-driven dining: keep m
|
||||
## Project Specifics
|
||||
|
||||
- Source content lives in \`src/entities/site-content.ts\`; keep visible copy there or directly in route JSX.
|
||||
- \`src/app\` is routing only; page composition belongs to \`src/widgets/template-ui.tsx\`.
|
||||
- \`src/app\` is routing only; композиция каждой страницы живёт в отдельном widget (\`src/widgets/<page>-page.tsx\`). См. File Map.
|
||||
- Keep cards at 8px radius or less and preserve the restaurant palette in \`src/app/globals.css\`.
|
||||
- This is a static frontend template: do not add real payments, deposits, table-management API, delivery, auth, persistence, external API calls, or backend contracts without an explicit product request.
|
||||
- Keep restaurant specificity: seating, service windows, host confirmation, allergies/dietary requests, pairing, supplier story and private dining packages.
|
||||
@@ -15,3 +15,67 @@ Juniper Table — seasonal restaurant template for booking-driven dining: keep m
|
||||
|
||||
- Кириллица обязательна для видимого текста и выбранных Google Fonts.
|
||||
- Do not flatten this into a generic cafe landing page. Every page should answer a real restaurant business question.
|
||||
|
||||
## Design System
|
||||
|
||||
Источник токенов — `src/app/globals.css` (`@theme inline` + `:root`/`.dark`). Шрифты: заголовки (`h1/h2/h3`, `.font-display`) — **Cormorant Garamond** (`--font-display`, элегантный serif), текст/UI — **Manrope** (`--font-sans`). Работай через семантические классы Tailwind (`bg-primary`, `text-foreground`, `border-border`, `text-muted-foreground`, `font-display`), никогда не хардкодь hex/oklch.
|
||||
|
||||
Личность: **тёплый сезонный fine-dining** — кремово-пергаментный фон (тёплый, hue ~75–92), глубокий приглушённый «можжевеловый» зелёный primary (hue ~145) как фирменный цвет, тёплый терракот/обожжённый оранжевый accent (hue ~34). Контраст элегантного serif-заголовка и спокойного гротеска в тексте. Тон ресторанный, тёплый, не «технологичный».
|
||||
|
||||
| Роль | Light | Характер |
|
||||
|---|---|---|
|
||||
| `background` | тёплый кремовый пергамент | основной фон страниц |
|
||||
| `foreground` | тёмный тёплый коричнево-чёрный | текст |
|
||||
| `primary` | глубокий можжевеловый зелёный | бренд: лого JT, CTA, цены, акценты; footer/CTA-панели `bg-primary text-primary-foreground` |
|
||||
| `accent` | терракот/обожжённый оранжевый | редкие тёплые точечные акценты (charts) |
|
||||
| `secondary` | тёплый светлый песочный | мягкие бейджи, плашки |
|
||||
| `muted` / `muted-foreground` | тёплый бежевый / приглушённый коричневый | вторичный текст, фон секций, hover |
|
||||
| `card` | чистый белый | панели `RestaurantPanel`, формы, таблицы |
|
||||
| `border` | тёплый бежевый | тонкие границы (1px) везде |
|
||||
|
||||
Узнаваемые приёмы (держи их — это «лицо» шаблона):
|
||||
- **Мягкие углы:** `--radius` = 0.5rem; всё на `rounded-md` (карточки, кнопки, фото-панели). Не используй острые `rounded-none` или сильно скруглённые pill-формы.
|
||||
- **`RestaurantPanel`** (`src/shared/ui/restaurant-panel.tsx`) — фирменная панель: `rounded-md border border-border bg-card` + едва заметная тёплая тень `shadow-[0_1px_0_rgba(67,44,17,0.05)]`. Используй её для секционных карточек вместо голого `div`.
|
||||
- **`Container`** (`src/shared/ui/container.tsx`) — `max-w-[1320px]` + `px-5 sm:px-8`; единый горизонтальный ритм страниц.
|
||||
- **Hero-фон:** утилита `.restaurant-tablecloth` (тёплая «скатерть» — зелёно-охровая сетка-льняная фактура 42px с mask-fade) для главного hero.
|
||||
- **Serif-дисплей:** заголовки через `font-display` (`text-4xl`…`text-[6.2rem]`, плотный `leading-[0.94]`); eyebrow-метки `text-xs font-semibold uppercase tracking-[0.18em] text-primary`.
|
||||
- **Тонкие разделители:** `Separator` и `border-b border-border` в списках блюд/пакетов; структура на линиях, не на тенях.
|
||||
|
||||
Do / Don't:
|
||||
- **Do:** держи кремово-зелёную палитру и терракотовый акцент; serif-заголовки + Manrope-текст; оборачивай секции в `Container`/`RestaurantPanel`; продавай ресторанную специфику (посадка, pairing, аллергены, тайминг вечера).
|
||||
- **Don't:** не вводи холодный синий/чёрный primary, неоновые градиенты, тяжёлые drop-shadow, острые углы или generic-SaaS hero — это ломает тёплый fine-dining тон.
|
||||
|
||||
## File Map
|
||||
|
||||
| Route | Widget |
|
||||
|---|---|
|
||||
| `/` | `src/widgets/home-page.tsx` (`HomePage`) |
|
||||
| `/menu` | `src/widgets/menu-page.tsx` (`MenuPage`) |
|
||||
| `/reservations` | `src/widgets/reservations-page.tsx` (`ReservationsPage`) |
|
||||
| `/private-events` | `src/widgets/private-events-page.tsx` (`PrivateEventsPage`) |
|
||||
| `/about` | `src/widgets/about-page.tsx` (`AboutPage`) |
|
||||
| `/contact` | `src/widgets/contact-page.tsx` (`ContactPage`) |
|
||||
|
||||
Переиспользуемые блоки:
|
||||
- `src/widgets/site-shell.tsx` — `SiteHeader` + `SiteFooter` (обёртка из `src/app/layout.tsx`).
|
||||
- `src/widgets/menu-section-board.tsx` — `MenuSectionBoard` (Home, Menu).
|
||||
- `src/widgets/dish-showcase.tsx` — `DishShowcase` (Home, Menu; локальный `DishRow` внутри).
|
||||
- `src/widgets/seating-guide.tsx` — `SeatingGuide` (Home, Reservations).
|
||||
- `src/widgets/restaurant-evening-plan.tsx` — `RestaurantEveningPlan` (Home, Reservations).
|
||||
- `src/widgets/private-events-grid.tsx` — `PrivateEventsGrid` (Home, Private events).
|
||||
- `src/widgets/testimonial-band.tsx` — `TestimonialBand` (Home, About).
|
||||
- `src/shared/ui/container.tsx` — `Container` (горизонтальный wrapper всех секций).
|
||||
- `src/shared/ui/restaurant-panel.tsx` — `RestaurantPanel` (фирменная карточка-панель).
|
||||
- `src/shared/ui/section-header.tsx` — `SectionHeader` (eyebrow + заголовок секции).
|
||||
- `src/shared/ui/inner-hero.tsx` — `InnerHero` (хедер всех внутренних страниц).
|
||||
- `src/shared/ui/info-columns.tsx` — `InfoColumns` (правила/dietary notes; используется в Menu и Reservations).
|
||||
- `src/shared/ui/cta-panel.tsx` — `CtaPanel` (Menu, Private events).
|
||||
- `src/shared/ui/split-story.tsx` — `SplitStory` (готовый props-блок image+points, сейчас не подключён ни одной страницей).
|
||||
|
||||
Одноразовые блоки колоцированы со своей страницей:
|
||||
- `PageHero` — внутри `home-page.tsx`.
|
||||
- `FeaturedGrid`, `PairingBoard` (+ `WineIcon`), `PricingTiles`, `DietaryNotes` — внутри `menu-page.tsx`.
|
||||
- `ReservationForm`, `ReservationRules` — внутри `reservations-page.tsx`.
|
||||
- `ChefStory`, `SupplierLedger`, `MetricStrip` — внутри `about-page.tsx`.
|
||||
- `IconCards`, `HoursBoard`, `ContactForm` — внутри `contact-page.tsx`.
|
||||
- `EventPlanner` — внутри `private-events-page.tsx`.
|
||||
|
||||
Reference in New Issue
Block a user