From c27985614ebd507c20e80865c2382e8da7039928 Mon Sep 17 00:00:00 2001 From: Alexey Pavlov Date: Sun, 31 May 2026 10:05:28 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=B1=D0=BB=D0=BE=D0=BA=20=C2=AB=D0=A1?= =?UTF-8?q?=D0=B5=D0=B9=D1=87=D0=B0=D1=81=C2=BB=20+=20=C2=AB=D0=97=D0=B0?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D0=BA=D0=B8=20=D1=80=D0=B5=D0=B4=D0=B0=D0=BA?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=B0=C2=BB=20+=20ArticleMeta?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - NowBlock: live indicator (последняя статья / идёт генерация) + bar-чарт за 7 дней - NotesBlock: карточки заметок редактора с pin - /notes: отдельная страница со всеми заметками - ArticleMeta: раскрывающийся блок «Как сделана эта статья» на странице статьи - В шапку добавлена ссылка «Заметки» (desktop и mobile) --- app/blog/[slug]/page.js | 5 +- app/notes/page.js | 35 +++++++++++ app/page.js | 28 +++++++-- components/ArticleMeta.js | 50 ++++++++++++++++ components/Header.js | 6 ++ components/NotesBlock.js | 53 +++++++++++++++++ components/NowBlock.js | 121 ++++++++++++++++++++++++++++++++++++++ lib/engine.js | 10 ++++ 8 files changed, 300 insertions(+), 8 deletions(-) create mode 100644 app/notes/page.js create mode 100644 components/ArticleMeta.js create mode 100644 components/NotesBlock.js create mode 100644 components/NowBlock.js diff --git a/app/blog/[slug]/page.js b/app/blog/[slug]/page.js index b4fa6eb..87358e0 100644 --- a/app/blog/[slug]/page.js +++ b/app/blog/[slug]/page.js @@ -5,6 +5,7 @@ import Footer from '@/components/Footer'; import ReadingProgress from '@/components/ReadingProgress'; import ScrollToTop from '@/components/ScrollToTop'; import ShareButton from '@/components/ShareButton'; +import ArticleMeta from '@/components/ArticleMeta'; import ArticleCard from '@/components/ArticleCard'; import { getArticle, listArticles } from '@/lib/engine'; import { renderMarkdown, formatDate } from '@/lib/markdown'; @@ -108,9 +109,7 @@ export default async function ArticlePage({ params }) { dangerouslySetInnerHTML={{ __html: html }} /> -
-

Статья сгенерирована ИИ под редакторским присмотром.

-
+ {related.length > 0 && ( diff --git a/app/notes/page.js b/app/notes/page.js new file mode 100644 index 0000000..8d4970a --- /dev/null +++ b/app/notes/page.js @@ -0,0 +1,35 @@ +import Header from '@/components/Header'; +import Footer from '@/components/Footer'; +import NotesBlock from '@/components/NotesBlock'; +import { listNotes } from '@/lib/engine'; +import { MessageCircle } from 'lucide-react'; + +export const dynamic = 'force-dynamic'; +export const metadata = { title: 'Заметки редактора' }; + +export default async function NotesPage() { + const notes = await listNotes({ limit: 100 }); + return ( + <> +
+
+
+
+ За кулисами +
+

+ Заметки редактора +

+

+ Короткие мысли, наблюдения, технические заметки и комментарии человека, который следит за блогом. Не статьи — просто записи на полях. +

+
+ +
+