From 1571b63ec314e9b2bfc52a4757862ecb88a91375 Mon Sep 17 00:00:00 2001 From: "diana.dolgolyova" Date: Mon, 13 Apr 2026 22:01:38 +0300 Subject: [PATCH] feat: separate /team and /schedule pages with Pinterest-style team grid MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add /team page with masonry grid, style filters, search, and trainer profiles - Add /schedule page as dedicated full-page schedule viewer - Landing page: replace team section with auto-scrolling photo marquee (TeamPreview) - Clicking a trainer opens modal overlay with profile (no page navigation) - "Познакомиться с командой" links to full /team gallery - Landing page: replace schedule section with compact CTA linking to /schedule - Header: support mixed route links (/team) and hash links (#about) - Sub-pages show all nav links, hash links prefixed with / - Sub-pages always use scrolled header style (readable on light theme) - Remove unused content.ts and seed.ts (DB is primary data source) - Add marquee and grid card entrance animations --- src/app/page.tsx | 26 +- src/app/schedule/page.tsx | 43 ++ src/app/styles/animations.css | 31 ++ src/app/team/page.tsx | 35 ++ src/components/layout/Header.tsx | 51 ++- src/components/sections/TeamPreview.tsx | 183 +++++++++ src/components/sections/team/TeamGrid.tsx | 256 ++++++++++++ src/data/content.ts | 478 ---------------------- src/data/seed.ts | 97 ----- src/lib/constants.ts | 2 +- 10 files changed, 612 insertions(+), 590 deletions(-) create mode 100644 src/app/schedule/page.tsx create mode 100644 src/app/team/page.tsx create mode 100644 src/components/sections/TeamPreview.tsx create mode 100644 src/components/sections/team/TeamGrid.tsx delete mode 100644 src/data/content.ts delete mode 100644 src/data/seed.ts diff --git a/src/app/page.tsx b/src/app/page.tsx index 08cb3da..ba02ba3 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,15 +1,16 @@ +import Link from "next/link"; import { Hero } from "@/components/sections/Hero"; -import { Team } from "@/components/sections/Team"; import { About } from "@/components/sections/About"; import { Classes } from "@/components/sections/Classes"; +import { TeamPreview } from "@/components/sections/TeamPreview"; import { MasterClasses } from "@/components/sections/MasterClasses"; -import { Schedule } from "@/components/sections/Schedule"; import { Pricing } from "@/components/sections/Pricing"; import { News } from "@/components/sections/News"; import { FAQ } from "@/components/sections/FAQ"; import { Contact } from "@/components/sections/Contact"; import { BackToTop } from "@/components/ui/BackToTop"; import { FloatingContact } from "@/components/ui/FloatingContact"; +import { SectionHeading } from "@/components/ui/SectionHeading"; import { Header } from "@/components/layout/Header"; import { Footer } from "@/components/layout/Footer"; import { ClientShell } from "@/components/layout/ClientShell"; @@ -26,7 +27,7 @@ export default function HomePage() { return ( <> -
+
{content?.hero && } {content?.about && ( @@ -40,16 +41,29 @@ export default function HomePage() { /> )} {content?.classes && } - {content?.team && } + {content?.team && } {openDayData && content?.popups && } - {content?.schedule && } + {content?.schedule && ( +
+
+
+ {content.schedule.title} +

+ {content.schedule.locations.length} студии · {content.schedule.locations.reduce((sum, loc) => sum + loc.days.reduce((s, d) => s + d.classes.length, 0), 0)} занятий в неделю +

+ + Смотреть расписание + +
+
+ )} {content?.pricing && } {content?.masterClasses && } {content?.news && } {content?.faq && } {content?.contact && } - +