refactor: unify editorial section headings

This commit is contained in:
ik
2026-09-12 09:57:56 +07:00
parent fc22795b63
commit 9647667ae2
6 changed files with 30 additions and 3 deletions
@@ -0,0 +1,18 @@
---
const { eyebrow, title, description, count, id, editorial = false } = Astro.props as {
eyebrow?: string;
title: string;
description?: string;
count?: string;
id?: string;
editorial?: boolean;
};
---
<div class:list={["section-heading", { "section-heading--editorial": editorial }]}>
<div>
{eyebrow && <span class="overline">{eyebrow}</span>}
<h2 id={id}>{title}</h2>
{description && <p>{description}</p>}
</div>
{count && <span class="result-count">{count}</span>}
</div>
+2 -1
View File
@@ -1,5 +1,6 @@
---
import SourceBadge from "./SourceBadge.astro";
import SectionHeading from "./SectionHeading.astro";
import { ago, kg, type PublicObservation } from "../lib/api";
const { signals } = Astro.props as { signals: PublicObservation[] };
const groups = [...signals.reduce((map, signal) => {
@@ -17,7 +18,7 @@ const groups = [...signals.reduce((map, signal) => {
}, new Map<string, PublicObservation & { observations: PublicObservation[] }>()).values()];
---
<section class="signal-section content-grid" aria-labelledby="signals-title">
<div class="signal-heading"><div><span class="overline">Сырые данные источников</span><h2 id="signals-title">Полевые сигналы</h2><p>Показываем сразу, даже если часть полей отсутствует. Эти карточки не участвуют в расчёте активности до полного подтверждения.</p></div><span class="signal-count">{signals.length} сигналов · {groups.length} сюжетов</span></div>
<SectionHeading editorial eyebrow="Сырые данные источников" title="Полевые сигналы" id="signals-title" description="Показываем сразу, даже если часть полей отсутствует. Эти карточки не участвуют в расчёте активности до полного подтверждения." count={`${signals.length} сигналов · ${groups.length} сюжетов`} />
<div class="signal-grid">{groups.map(signal => {
const provenance = [...new Map(signal.observations.map(item => [`${item.source_system}|${item.source_url}`, item])).values()];
return <article class="signal-card" data-quality={signal.quality}>