fix(zero): banner always renders, even without published notes

Showing the hero matters for discoverability — visitors see who Зеро is
and the TG channel link even before the first note is published.
When there are no notes, hero spans the full width (no empty grid).
This commit is contained in:
Aleksei Pavlov
2026-06-19 12:25:59 +03:00
parent 3cc5dafc08
commit 54f1088da2
+9 -9
View File
@@ -110,11 +110,10 @@ function ZeroNoteCard({ note }) {
}
export default function ZeroBlock({ notes = [], compact = false }) {
// На главной компонент скрывается полностью если нет заметок;
// на /zero — рендерится только Hero (с CTA-кнопками)
if (compact && notes.length === 0) return null;
// Баннер всегда рендерится (даже без заметок) — это лицо персонажа.
// Пустое состояние просто скрывает grid карточек, оставляя hero на всю ширину.
const items = compact ? notes.slice(0, 3) : notes;
const hasItems = items.length > 0;
return (
<section
@@ -126,13 +125,14 @@ export default function ZeroBlock({ notes = [], compact = false }) {
>
<div className="container-wide">
{compact ? (
// Главная: hero слева (5 кол), карточки справа (7 кол)
<div className="grid lg:grid-cols-12 gap-8 lg:gap-10 items-start">
<div className="lg:col-span-5 flex items-start gap-5 sm:gap-6">
// Главная: hero слева (5 кол), карточки справа (7 кол).
// Если карточек нет — hero на всю ширину.
<div className={`grid gap-8 lg:gap-10 items-start ${hasItems ? 'lg:grid-cols-12' : ''}`}>
<div className={`flex items-start gap-5 sm:gap-6 ${hasItems ? 'lg:col-span-5' : 'max-w-3xl'}`}>
<ZeroAvatar size="lg" />
<ZeroIntro size="lg" />
</div>
{items.length > 0 && (
{hasItems && (
<div className="lg:col-span-7">
<div className="grid sm:grid-cols-2 lg:grid-cols-3 gap-4">
{items.map(n => <ZeroNoteCard key={n.id} note={n} />)}
@@ -147,7 +147,7 @@ export default function ZeroBlock({ notes = [], compact = false }) {
<ZeroAvatar size="xl" />
<ZeroIntro size="xl" />
</div>
{items.length > 0 ? (
{hasItems ? (
<div className="grid sm:grid-cols-2 lg:grid-cols-3 gap-4 sm:gap-5">
{items.map(n => <ZeroNoteCard key={n.id} note={n} />)}
</div>