From b1c09aa53f1583472a07a6400b6f1d4361eaab82 Mon Sep 17 00:00:00 2001 From: Alexey Pavlov Date: Sun, 31 May 2026 09:17:08 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=BE=D0=B6=D0=B8=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=81=D0=B0=D0=B9=D1=82=D0=B0=20=E2=80=94?= =?UTF-8?q?=20=D0=BE=D0=B1=D0=BB=D0=BE=D0=B6=D0=BA=D0=B8,=20hero-=D1=84?= =?UTF-8?q?=D0=BE=D0=BD,=20=D1=81=D1=82=D0=B0=D1=82=D0=B8=D1=81=D1=82?= =?UTF-8?q?=D0=B8=D0=BA=D0=B0,=20=D0=B0=D0=BD=D0=B8=D0=BC=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ArticleCard: реальные обложки с fallback на детерминированный градиент по id статьи - HeroBackground: 3 анимированных blob'а + dot-grid + плавный fade к контенту - Stats компонент: 4 карточки — статьи / минуты чтения / токены / просмотры - Reveal компонент: IntersectionObserver-based fade-in при скролле, respect prefers-reduced-motion - next.config: rewrites /uploads/* → engine, чтобы картинки работали с относительными путями - На странице статьи — обложка над контентом --- app/blog/[slug]/page.js | 11 +++ app/page.js | 117 ++++++++++++++++++------------- components/ArticleCard.js | 130 +++++++++++++++++++++++++---------- components/HeroBackground.js | 70 +++++++++++++++++++ components/Reveal.js | 50 ++++++++++++++ components/Stats.js | 42 +++++++++++ lib/engine.js | 8 +++ next.config.js | 8 +++ 8 files changed, 352 insertions(+), 84 deletions(-) create mode 100644 components/HeroBackground.js create mode 100644 components/Reveal.js create mode 100644 components/Stats.js diff --git a/app/blog/[slug]/page.js b/app/blog/[slug]/page.js index 6e3ba85..89180ac 100644 --- a/app/blog/[slug]/page.js +++ b/app/blog/[slug]/page.js @@ -65,6 +65,17 @@ export default async function ArticlePage({ params }) { )} + {article.cover_url && ( +
+ {article.title} +
+ )} +
{/* Hero */} -
-
-
- - Блог, который ведёт ИИ -
-

- Практический ИИ.
- Без воды и хайпа. -

-

- Промпты, кейсы, инструменты и разборы. Всё пишет ИИ — кроме редакторских заметок. Если хочешь так же вести свой Telegram-канал — попробуй наш сервис. -

-
- - Читать статьи - - - Получить ассистента - -
+
+ +
+ +
+
+ + Блог, который ведёт ИИ +
+

+ Практический ИИ.
+ Без воды и хайпа. +

+

+ Промпты, кейсы, инструменты и разборы. Всё пишет ИИ — кроме редакторских заметок. Если хочешь так же вести свой Telegram-канал — попробуй наш сервис. +

+
+ + Читать статьи + + + Получить ассистента + +
+
+
+ {/* Stats */} + +
+ +
+
+ {/* Featured */} {featured && ( -
- -
+ +
+ +
+
)} {/* Rest */} {rest.length > 0 && ( -
-

- Последние материалы -

-
- {rest.map(a => )} -
-
+ +
+

+ Последние материалы +

+
+ {rest.map(a => )} +
+
+
)} {articles.length === 0 && ( @@ -80,16 +101,18 @@ export default async function HomePage() { {/* Tags */} {tags.length > 0 && ( -
-

Темы

-
- {tags.map(t => ( - - #{t.tag} ({t.cnt}) - - ))} -
-
+ +
+

Темы

+
+ {tags.map(t => ( + + #{t.tag} ({t.cnt}) + + ))} +
+
+
)}