diff --git a/src/lib/block-types.ts b/src/lib/block-types.ts
index f0c555f..2560e0f 100644
--- a/src/lib/block-types.ts
+++ b/src/lib/block-types.ts
@@ -236,8 +236,8 @@ export interface PostOverviewBlockData {
excludeTag?: string[];
/** Max. Anzahl Einträge. */
numberItems?: number;
- /** "list" | "cards". */
- design?: "list" | "cards";
+ /** "list" | "cards" | "carousel". */
+ design?: "list" | "cards" | "carousel";
layout?: BlockLayout;
/** Nach resolvePostOverviewBlocks: geladene/gefilterte Posts (PostEntry[]). */
postsResolved?: unknown[];
diff --git a/src/lib/components/Carousel.svelte b/src/lib/components/Carousel.svelte
new file mode 100644
index 0000000..c97da05
--- /dev/null
+++ b/src/lib/components/Carousel.svelte
@@ -0,0 +1,111 @@
+
+
+
(paused = true)}
+ onmouseleave={() => (paused = false)}
+>
+
+ {#if showArrows && count > 1}
+
+ {/if}
+
+
+ {#each { length: count } as _, i}
+
+ {@render item(i)}
+
+ {/each}
+
+
+ {#if showArrows && count > 1}
+
+ {/if}
+
+
+ {#if count > 1}
+
+ {#each { length: count } as _, i}
+
+ {/each}
+
+ {/if}
+
diff --git a/src/lib/components/blocks/PostOverviewBlock.svelte b/src/lib/components/blocks/PostOverviewBlock.svelte
index 3456de2..21e61cd 100644
--- a/src/lib/components/blocks/PostOverviewBlock.svelte
+++ b/src/lib/components/blocks/PostOverviewBlock.svelte
@@ -1,6 +1,7 @@
(paused = true)}
- onmouseleave={() => (paused = false)}
- role="region"
- aria-roledescription="carousel"
- aria-label={block.headline ?? "Zitat-Karussell"}
>
{#if block.headline}
{block.headline}
@@ -83,58 +32,15 @@
{#if quotes.length === 0}
Keine Zitate vorhanden.
{:else}
-
- {#if showArrows && quotes.length > 1}
-
- {/if}
-
-
- {#each quotes as q, i (i)}
-
-
-
- {/each}
-
-
- {#if showArrows && quotes.length > 1}
-
- {/if}
-
-
- {#if quotes.length > 1}
-
- {#each quotes as _, i}
-
- {/each}
-
- {/if}
+
+ {#snippet item(i)}
+
+ {/snippet}
+
{/if}