Files
nika-gallery/frontend/app/layout.tsx
T
germanandClaude Opus 4.8 ad35d4e992
Deploy / deploy (push) Failing after 5s
feat(#3): frontend scaffold (Next.js 14 App Router, TS, Tailwind, галерея)
Каркас витрины дизайнера Ники: главная (hero + сетка галереи),
страница работы (детали + место под аукцион), список аукционов,
подписка-заглушка. Клиент к backend /api с graceful-фолбэком на
демо-работы при недоступном API. Standalone-сборка + Dockerfile.
Сборка npm run build и tsc --noEmit проходят.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-05 19:42:13 +03:00

53 lines
1.6 KiB
TypeScript

import type { Metadata } from 'next';
import { Cormorant_Garamond, Inter } from 'next/font/google';
import './globals.css';
import Nav from '@/components/Nav';
import Footer from '@/components/Footer';
// Заголовочный серифный шрифт — воздушный, «галерейный».
const display = Cormorant_Garamond({
subsets: ['latin', 'cyrillic'],
weight: ['400', '500', '600'],
variable: '--font-display',
display: 'swap',
});
// Текстовый гротеск — нейтральный, для интерфейса и подписей.
const body = Inter({
subsets: ['latin', 'cyrillic'],
variable: '--font-body',
display: 'swap',
});
export const metadata: Metadata = {
title: {
default: 'Ника — галерея и аукцион',
template: '%s · Ника',
},
description:
'Галерея работ дизайнера Ники: живопись и графика, аукцион, подписка на новые работы.',
openGraph: {
title: 'Ника — галерея и аукцион',
description:
'Галерея работ дизайнера Ники: живопись и графика, аукцион, подписка.',
type: 'website',
locale: 'ru_RU',
},
};
export default function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
return (
<html lang="ru" className={`${display.variable} ${body.variable}`}>
<body className="font-sans antialiased min-h-screen flex flex-col">
<Nav />
<main className="flex-1">{children}</main>
<Footer />
</body>
</html>
);
}