feat: журнальная главная, страница Зеро, TG-баннер, stats, auto-publish UI

- Журнальная главная: hero, CategoryRow, PopularBlock, RecentBlock (Сегодня/Вчера/Неделя)
- ArticleCard: 3 размера (hero/regular/compact), цветной badge без дублей тегов
- ArticleCoverSVG: 6 брендовых палитр, аватар Зеро в углу вместо #ZEROPOST
- /about/zero: страница персонажа с галереей 8 поз
- Footer: TG-баннер с аватаром Зеро на каждой странице
- Конец статьи: блок «Понравилась? → Подписаться на канал»
- ChannelEditor: 4 вкладки (Настройки/Расписание/Авто-публикация/Ручная)
- AutoPublishTab: toggle, категории, delay, template, live preview
- ArticlePicker: typeahead с was_sent_to_channel / next_scheduled_at флагами
- /admin/channels/[id]/stats: график роста подписчиков (recharts)
- Dashboard: блок TG-статистики (подписчики, delta 24h/7d, постов)
- Header: упрощён до 2 пунктов desktop + расширенное мобильное меню
- AutogenPanel: корректные time-picker'ы, calcNextRun с учётом last_run_at
This commit is contained in:
Nik (Claude)
2026-06-07 14:04:09 +03:00
parent 6f7c47a258
commit 334b2f51df
32 changed files with 2492 additions and 353 deletions
+19 -1
View File
@@ -1,6 +1,7 @@
import Header from '@/components/Header';
import Footer from '@/components/Footer';
import { Sparkles } from 'lucide-react';
import { Sparkles, ArrowRight } from 'lucide-react';
import Link from 'next/link';
export const metadata = { title: 'О проекте' };
@@ -40,6 +41,23 @@ export default function AboutPage() {
Если найдёшь в статьях ошибку или странность это знак, что человеку всё ещё нужно следить за машиной. Пиши.
</p>
</div>
{/* Ссылка на страницу Зеро */}
<section className="container-narrow pb-16">
<Link
href="/about/zero"
className="flex items-center justify-between gap-4 p-5 rounded-2xl group transition-all no-underline"
style={{ background: 'rgb(var(--accent) / 0.06)', border: '1px solid rgb(var(--accent) / 0.15)' }}
>
<div className="flex items-center gap-4">
<img src="/uploads/zero-avatar.webp" alt="Зеро" className="w-14 h-14 rounded-xl object-cover shrink-0" />
<div>
<div className="font-semibold ink">Познакомьтесь с Зеро</div>
<div className="text-sm mute">ИИ-маскот блога кто он и почему от первого лица</div>
</div>
</div>
<ArrowRight className="w-5 h-5 accent group-hover:translate-x-1 transition-transform shrink-0" />
</Link>
</section>
</main>
<Footer />
</>