feat: split big file and update agents.md

This commit is contained in:
2026-06-18 23:16:20 +03:00
parent d8786937af
commit 7c2edbdb52
31 changed files with 1006 additions and 874 deletions

View File

@@ -5,7 +5,7 @@ Northline Clinic — planned care clinic template: пациентский мар
## 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` — только route wrappers; композиция каждой страницы живёт в отдельном widget (`src/widgets/<page>-page.tsx`). Header/footer — `src/widgets/site-shell.tsx`. См. File Map.
- Keep cards at 8px radius or less and preserve the selected palette in `src/app/globals.css`.
- This is a static frontend template: do not add real payments, auth, persistence, external API calls, or backend contracts without an explicit product request.
- Keep the domain specific: planned care, triage, preparation, diagnostic route, result review, insurance/privacy and non-emergency boundaries. Do not flatten it into generic wellness cards.
@@ -16,3 +16,63 @@ Northline Clinic — planned care clinic template: пациентский мар
- Кириллица обязательна для видимого текста и выбранных Google Fonts.
- При AI-правках сохраняйте доменные блоки этого шаблона: они отличают проект от generic landing.
## Design System
Источник токенов — `src/app/globals.css` (`@theme inline` + `:root`/`.dark`). Шрифты: заголовки и `.font-display`**Manrope** (`--font-display`), body — **Source Sans 3** (`--font-sans`); mono замаплен на display. Работай через семантические классы Tailwind (`bg-primary`, `text-muted-foreground`, `border-border`, `border-primary/30`), не хардкодь hex/oklch.
Личность: **calm clinical / planned care** — тёплый кремово-бежевый фон (low-chroma), приглушённый сине-зелёный teal `primary` (oklch 0.46 0.07 173) как доверие и навигация, мягкий мятный `secondary`, тёплый терракотовый `accent` (oklch 0.72 0.12 34) для редких сигналов. Текст — тёмный teal-ink, а не чистый чёрный. Никакой «больничной» стерильности и никакого агрессивного маркетинга — спокойная, аккуратная среда.
| Роль | Light | Характер |
|---|---|---|
| `background` | тёплый кремово-бежевый (0.976) | основной фон страниц |
| `foreground` | тёмный teal-ink (0.18) | текст |
| `primary` | приглушённый teal | доверие: иконки, CTA, бейджи (`text-primary`), eyebrow, `border-primary/30` |
| `secondary` | мягкий мятный | вторичные бейджи (теги маршрутов) |
| `accent` | тёплый терракот | редкий сигнал (используется сдержанно) |
| `muted` | тёплый серо-бежевый | чипы, фон-плашки, вторичный текст |
| `card` | почти белый тёплый (0.995) | панели `ClinicalPanel` |
| `border` | мягкий тёплый серый | тонкие границы (`border border-border`) |
Узнаваемые приёмы (держи их, это и есть «лицо» проекта):
- **Мягкие, но не круглые углы:** `--radius` = 0.5rem; почти всё — `rounded-md`. Спокойная гладкость без пузырей.
- **`ClinicalPanel` как базовый блок:** `rounded-md border border-border bg-card shadow-[0_1px_0_rgba(24,74,68,0.05)]` — почти плоская карточка с едва заметной teal-линией снизу. Это основной строительный кирпич контента.
- **Тонкие границы, плоскость:** `border border-border` (1px), без жёстких теней и offset-shadow. Глубина — минимальная.
- **Цветная семантика teal:** иконки, цифры-метрики, eyebrow и активные подписи — `text-primary`; границы-акценты — `border-primary/30`.
- **Типографика:** заголовки — `font-semibold` (не black), `text-5xl`/`text-6xl`, спокойный `leading-tight`/`leading-[1.04]`; eyebrow — `uppercase tracking-[0.16em] text-primary`.
- **Safety-блоки:** предупреждения о неэкстренном характере — `border-amber-200 bg-amber-50 text-amber-900/950` (единственное место с янтарём, намеренно).
- **Фон-фактура:** `.clinic-soft-grid` — мягкая teal/терракотовая сетка под hero с маской снизу; контент в `Container` (`max-w-[1320px]`), фото — `object-cover` БЕЗ grayscale (живые, тёплые снимки).
Do / Don't:
- **Do:** держи спокойную кремово-teal палитру, плоские `ClinicalPanel`, тонкие границы, доменный язык (маршрут, подготовка, координатор, неэкстренный формат), amber только для safety.
- **Don't:** яркие/насыщенные цвета, жёсткие тени, grayscale-фото, `font-black`, агрессивные CTA, медицинские обещания/диагнозы — это ломает доверительную клиническую личность.
## File Map
| Route | Widget |
|---|---|
| `/` | `src/widgets/home-page.tsx` (`HomePage`) |
| `/services` | `src/widgets/services-page.tsx` (`ServicesPage`) |
| `/specialists` | `src/widgets/specialists-page.tsx` (`SpecialistsPage`) |
| `/booking` | `src/widgets/booking-page.tsx` (`BookingPage`) |
| `/patient-info` | `src/widgets/patient-info-page.tsx` (`PatientInfoPage`) |
| `/contacts` | `src/widgets/contacts-page.tsx` (`ContactsPage`) |
Переиспользуемые блоки:
- `src/widgets/site-shell.tsx``SiteHeader` + `SiteFooter` (обёртка всех страниц через `app/layout.tsx`).
- `src/widgets/patient-journey.tsx``PatientJourney` (Home, Booking).
- `src/widgets/featured-grid.tsx``FeaturedGrid` (Home, Services).
- `src/widgets/specialist-schedule.tsx``SpecialistSchedule` (Home, Booking, Specialists).
- `src/widgets/patient-checklist.tsx``PatientChecklist` (Home, Patient info, Booking).
- `src/widgets/facility-board.tsx``FacilityBoard` (Home, Contacts).
- `src/widgets/safety-notes.tsx``SafetyNotes` (Home, Patient info, Booking).
- `src/widgets/clinical-disclaimer.tsx``ClinicalDisclaimer` (Home, Patient info, Booking, Services).
- `src/widgets/metric-strip.tsx``MetricStrip` (переиспользуемый блок-кит, готов к композиции).
- `src/shared/ui/container.tsx``Container` (контентная обёртка `max-w-[1320px]`, база всех секций).
- `src/shared/ui/clinical-panel.tsx``ClinicalPanel` (базовая карточка-панель).
- `src/shared/ui/section-header.tsx``SectionHeader` (eyebrow + заголовок + текст секции).
- `src/shared/ui/inner-hero.tsx``InnerHero` (заголовочная секция внутренних страниц).
- `src/shared/ui/icon-cards.tsx``IconCards` (Contacts, Services).
- `src/shared/ui/info-columns.tsx``InfoColumns`, `src/shared/ui/split-story.tsx``SplitStory` (переиспользуемые presentational-блоки-кит).
Одноразовые блоки колоцированы со своей страницей: `PageHero`/`TestimonialBand` в `home-page.tsx`, `ServiceMatrix`/`PricingTiles` в `services-page.tsx`, `DoctorGrid`/`CtaPanel` в `specialists-page.tsx`, `ReservationForm` в `booking-page.tsx`, `InsurancePanel` в `patient-info-page.tsx`, `ContactForm` в `contacts-page.tsx`.