Форматтера у фронтенда не было: стиль держался вручную и успел разъехаться в 50 файлах. Ставим Prettier с настройками под уже сложившийся стиль (без точек с запятой, одинарные кавычки, ширина 100 — подобрана замером: при 100 расходится меньше файлов, чем при 96 или 110) и прогоняем его по коду. `src/routeTree.gen.ts` исключён — его переписывает плагин роутера. Чтобы форматирование больше не расходилось незаметно, добавлены проверки в CI: `csharpier check` для бэкенда (его отсутствие и позволило накопиться 79 неотформатированным файлам) и `prettier --check` для фронтенда. Версии форматтеров прибиты точно, без кареток: минорка меняет вывод и красит CI на файлах, которых никто не трогал. `.editorconfig` задаёт редакторам те же отступы и LF ещё до форматтера; значения совпадают с настройками csharpier и Prettier намеренно — оба его читают. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
47 lines
1.5 KiB
TypeScript
47 lines
1.5 KiB
TypeScript
import { createFileRoute, Link } from '@tanstack/react-router'
|
|
import { useTranslation } from 'react-i18next'
|
|
import { Tv } from 'lucide-react'
|
|
import { useAuthStore } from '@/features/auth/store'
|
|
import { Button } from '@/shared/ui/button'
|
|
|
|
export const Route = createFileRoute('/')({ component: HomePage })
|
|
|
|
function HomePage() {
|
|
const { t } = useTranslation()
|
|
const { user } = useAuthStore()
|
|
|
|
return (
|
|
<div className="flex flex-col items-center gap-8 py-16 text-center">
|
|
<div className="crt-panel flex h-40 w-full max-w-md items-center justify-center rounded-md">
|
|
<Tv className="crt-glow h-16 w-16" strokeWidth={1} />
|
|
</div>
|
|
|
|
<div className="flex flex-col gap-2">
|
|
<h1 className="crt-glow text-4xl font-bold tracking-[0.2em]">{t('home.title')}</h1>
|
|
<p className="text-sm uppercase tracking-[0.3em] text-muted-foreground">
|
|
{t('home.subtitle')}
|
|
</p>
|
|
</div>
|
|
|
|
<p className="max-w-md text-muted-foreground">{t('home.tagline')}</p>
|
|
|
|
<div className="flex gap-3">
|
|
{user ? (
|
|
<Button asChild size="lg">
|
|
<Link to="/dashboard">{t('home.cta')}</Link>
|
|
</Button>
|
|
) : (
|
|
<>
|
|
<Button asChild size="lg">
|
|
<Link to="/login">{t('home.cta')}</Link>
|
|
</Button>
|
|
<Button asChild size="lg" variant="outline">
|
|
<Link to="/register">{t('home.ctaRegister')}</Link>
|
|
</Button>
|
|
</>
|
|
)}
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|