Allow full hexagons for bottom items on the banner. Item2 (bottom left) remains a special case that is cut, but now has correct selection outline.

This commit is contained in:
2026-05-04 00:29:03 +00:00
parent 38651241d7
commit 2adb82da7b
+19 -2
View File
@@ -43,9 +43,13 @@
</div> </div>
<div class="collage-item-overlay"></div> <div class="collage-item-overlay"></div>
<!-- SVG focus outline for small hex items --> <!-- SVG focus outline for small hex items -->
<svg v-if="index !== 0" class="hex-focus-outline hex-focus-small" viewBox="0 0 86.6 100" preserveAspectRatio="none"> <svg v-if="index !== 0 && index !== 2" class="hex-focus-outline hex-focus-small" viewBox="0 0 86.6 100" preserveAspectRatio="none">
<polygon points="43.3,0 86.6,25 86.6,75 43.3,100 0,75 0,25" /> <polygon points="43.3,0 86.6,25 86.6,75 43.3,100 0,75 0,25" />
</svg> </svg>
<!-- Item 2 uses a custom flat-bottom hex outline to match its clip-path -->
<svg v-if="index === 2" class="hex-focus-outline hex-focus-small" viewBox="0 0 86.6 100" preserveAspectRatio="none">
<polygon points="43.3,0 86.6,33.333 86.6,100 0,100 0,33.333" />
</svg>
<div class="collage-item-info" v-if="index === 0"> <div class="collage-item-info" v-if="index === 0">
<h1 class="collage-title">{{ item.title }}</h1> <h1 class="collage-title">{{ item.title }}</h1>
<div class="collage-meta"> <div class="collage-meta">
@@ -509,7 +513,7 @@ function handleItemClick(item: MediaItem, index: number) {
height: 70vh; height: 70vh;
min-height: 450px; min-height: 450px;
max-height: 600px; max-height: 600px;
overflow: hidden; overflow: visible;
background: var(--bg-primary); background: var(--bg-primary);
--h: clamp(450px, 70vh, 600px); --h: clamp(450px, 70vh, 600px);
--small-w: calc(0.433 * var(--h)); /* Small hex width = 0.866 * 50% of height */ --small-w: calc(0.433 * var(--h)); /* Small hex width = 0.866 * 50% of height */
@@ -695,6 +699,19 @@ function handleItemClick(item: MediaItem, index: number) {
left: 0; left: 0;
} }
/* Keep top hex shape for left-bottom item, but flatten bottom edge to avoid overflow */
.collage-item.collage-item-2:not(.collage-featured) {
height: 37.5%;
width: var(--small-w);
clip-path: polygon(
50% 0%,
100% 33.333%,
100% 100%,
0% 100%,
0% 33.333%
);
}
/* RIGHT SIDE - Column 0 (closest to big image) */ /* RIGHT SIDE - Column 0 (closest to big image) */
/* Row 1 (top): -12.5% */ /* Row 1 (top): -12.5% */
.collage-item-3 { .collage-item-3 {