Шрифты Golos Text и Martian Mono через next/font, токены @theme, все блоки по плану: первый экран со штампом даты ближайшей обжарки, лента недели, этикетки сортов, подписка, кто мы, доставка, форма, подвал. Три фото Unsplash локально, priority только у первого экрана. LeadForm перекрашена под токены, логика и data-атрибуты те же. В site.ts и form.ts добавлены служебные подписи для вёрстки.
34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
import { About } from '@/components/sections/About';
|
|
import { Catalog } from '@/components/sections/Catalog';
|
|
import { Delivery } from '@/components/sections/Delivery';
|
|
import { Footer } from '@/components/sections/Footer';
|
|
import { Freshness } from '@/components/sections/Freshness';
|
|
import { Header } from '@/components/sections/Header';
|
|
import { Hero } from '@/components/sections/Hero';
|
|
import { LeadSection } from '@/components/sections/LeadSection';
|
|
import { Subscription } from '@/components/sections/Subscription';
|
|
import { formatShortDate, getRoastWeek } from '@/lib/roastWeek';
|
|
|
|
// дата ближайшей обжарки пересчитывается раз в час
|
|
export const revalidate = 3600;
|
|
|
|
export default function Page() {
|
|
const week = getRoastWeek();
|
|
const roastDate = formatShortDate(week.roast);
|
|
return (
|
|
<>
|
|
<Header />
|
|
<main id="top">
|
|
<Hero roastDate={roastDate} />
|
|
<Freshness week={week} />
|
|
<Catalog roastDate={roastDate} />
|
|
<Subscription />
|
|
<About />
|
|
<Delivery />
|
|
<LeadSection />
|
|
</main>
|
|
<Footer />
|
|
</>
|
|
);
|
|
}
|