Files
linic-wellness-shadcn/AGENTS.md

8.2 KiB
Raw Blame History

AGENTS.md

Northline Clinic — planned care clinic template: пациентский маршрут, triage-запись, подготовка к визиту, документы, privacy, специалисты и координатор без медицинских обещаний результата.

Project Specifics

  • Source content lives in src/entities/site-content.ts; keep visible copy there or directly in route JSX.
  • 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.
  • Never add diagnoses, treatment schemes, dosage advice, guaranteed outcomes, emergency-care replacement, real EHR behavior or patient-data submission.
  • After changes run pnpm lint and pnpm build.

Визуальные правки

  • Кириллица обязательна для видимого текста и выбранных Google Fonts.
  • При AI-правках сохраняйте доменные блоки этого шаблона: они отличают проект от generic landing.

Design System

Источник токенов — src/app/globals.css (@theme inline + :root/.dark). Шрифты: заголовки и .font-displayManrope (--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.tsxSiteHeader + SiteFooter (обёртка всех страниц через app/layout.tsx).
  • src/widgets/patient-journey.tsxPatientJourney (Home, Booking).
  • src/widgets/featured-grid.tsxFeaturedGrid (Home, Services).
  • src/widgets/specialist-schedule.tsxSpecialistSchedule (Home, Booking, Specialists).
  • src/widgets/patient-checklist.tsxPatientChecklist (Home, Patient info, Booking).
  • src/widgets/facility-board.tsxFacilityBoard (Home, Contacts).
  • src/widgets/safety-notes.tsxSafetyNotes (Home, Patient info, Booking).
  • src/widgets/clinical-disclaimer.tsxClinicalDisclaimer (Home, Patient info, Booking, Services).
  • src/widgets/metric-strip.tsxMetricStrip (переиспользуемый блок-кит, готов к композиции).
  • src/shared/ui/container.tsxContainer (контентная обёртка max-w-[1320px], база всех секций).
  • src/shared/ui/clinical-panel.tsxClinicalPanel (базовая карточка-панель).
  • src/shared/ui/section-header.tsxSectionHeader (eyebrow + заголовок + текст секции).
  • src/shared/ui/inner-hero.tsxInnerHero (заголовочная секция внутренних страниц).
  • src/shared/ui/icon-cards.tsxIconCards (Contacts, Services).
  • src/shared/ui/info-columns.tsxInfoColumns, src/shared/ui/split-story.tsxSplitStory (переиспользуемые 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.