padding-block: 0 1rem → 1.25rem 2.5rem (identisch zu DeckListGrid/.deck-row), plus ::after-Spacer ergänzt. Verhindert den Höhensprung beim Übergang Skeleton → echte Decks auf /decks und /explore. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
54 lines
983 B
Svelte
54 lines
983 B
Svelte
<script lang="ts">
|
|
interface Props {
|
|
count?: number;
|
|
}
|
|
|
|
const { count = 6 }: Props = $props();
|
|
</script>
|
|
|
|
<ul class="skeleton-row" aria-busy="true" aria-label="Lade Decks">
|
|
{#each Array.from({ length: count }) as _, i (i)}
|
|
<li class="skeleton-item animate-pulse">
|
|
<div class="skeleton-card"></div>
|
|
</li>
|
|
{/each}
|
|
</ul>
|
|
|
|
<style>
|
|
.skeleton-row {
|
|
list-style: none;
|
|
margin: 0;
|
|
padding-block: 1.25rem 2.5rem;
|
|
display: flex;
|
|
flex-direction: row;
|
|
gap: 1rem;
|
|
overflow: hidden;
|
|
|
|
width: 100dvw;
|
|
margin-left: calc(50% - 50dvw);
|
|
}
|
|
|
|
.skeleton-row::before {
|
|
content: '';
|
|
flex-shrink: 0;
|
|
width: max(1rem, calc((100dvw - 72rem) / 2 + 1rem));
|
|
}
|
|
|
|
.skeleton-row::after {
|
|
content: '';
|
|
flex-shrink: 0;
|
|
width: max(1rem, calc((100dvw - 72rem) / 2 + 1rem));
|
|
}
|
|
|
|
.skeleton-item {
|
|
flex: 0 0 auto;
|
|
width: 16rem;
|
|
}
|
|
|
|
.skeleton-card {
|
|
width: 100%;
|
|
aspect-ratio: 5 / 7;
|
|
border-radius: 0.875rem;
|
|
background: hsl(var(--color-border) / 0.5);
|
|
}
|
|
</style>
|