siroka postavitev z dvema novicama se ponovi po vsaki tretji vrstici, ne le na koncu mreze

This commit is contained in:
2026-08-31 13:48:52 +02:00
parent 39426459df
commit 2a043e3ad6
+19
View File
@@ -957,6 +957,19 @@ export default function Home() {
return rows;
}, [gridItems]);
// Siroka postavitev z dvema novicama: prej samo na koncu mreze, zdaj po
// vsaki tretji vrstici. Clanke jemljemo izza omejitve naslovnice, da se
// nobeden ne ponovi.
const widePairs = useMemo(() => {
const vMrezi = new Set(spaced.slice(0, 48).map((a) => a.id));
const ostanek = spaced.filter((a) => !vMrezi.has(a.id));
const pari: Article[][] = [];
for (let i = 0; i + 1 < ostanek.length && pari.length < 6; i += 2) {
pari.push([ostanek[i], ostanek[i + 1]]);
}
return pari;
}, [spaced]);
const widePickedArticles = useMemo(() => {
if (!articles || articles.length < 3) return [];
const carouselIds = new Set(articles.slice(0, 9).map((a) => a.id));
@@ -1058,6 +1071,12 @@ export default function Home() {
? <MediumCard key={item.key} article={item.article} focalPoints={focalPoints} />
: null
)}
{ri > 0 && (ri + 1) % 3 === 0 && widePairs[Math.floor(ri / 3) % Math.max(1, widePairs.length)] && (
<div className="sm:col-span-2 lg:col-span-4 grid grid-cols-1 sm:grid-cols-2 gap-4">
<WideCardClassic article={widePairs[Math.floor(ri / 3) % widePairs.length][0]} focalPoints={focalPoints} />
<WideCardClassic article={widePairs[Math.floor(ri / 3) % widePairs.length][1]} focalPoints={focalPoints} />
</div>
)}
{ri === gridRows.length - 1 && widePickedArticles.length > 0 && (
<div className="sm:col-span-2 lg:col-span-4 grid grid-cols-1 sm:grid-cols-2 gap-4">
<WideCardClassic article={widePickedArticles[0]} focalPoints={focalPoints} />