Files
MediaManager/web/src/lib/components/ui/carousel/carousel-content.svelte
maxDorninger dfa58b8f71 format files
2025-08-11 21:40:13 +02:00

45 lines
1.0 KiB
Svelte

<script lang="ts">
import emblaCarouselSvelte from 'embla-carousel-svelte';
import type { WithElementRef } from 'bits-ui';
import type { HTMLAttributes } from 'svelte/elements';
import { getEmblaContext } from './context.js';
import { cn } from '$lib/utils.js';
let {
ref = $bindable(null),
class: className,
children,
...restProps
}: WithElementRef<HTMLAttributes<HTMLDivElement>> = $props();
const emblaCtx = getEmblaContext('<Carousel.Content/>');
</script>
<!-- svelte-ignore event_directive_deprecated -->
<div
class="overflow-hidden"
use:emblaCarouselSvelte={{
options: {
container: '[data-embla-container]',
slides: '[data-embla-slide]',
...emblaCtx.options,
axis: emblaCtx.orientation === 'horizontal' ? 'x' : 'y'
},
plugins: emblaCtx.plugins
}}
on:emblaInit={emblaCtx.onInit}
>
<div
bind:this={ref}
class={cn(
'flex',
emblaCtx.orientation === 'horizontal' ? '-ml-4' : '-mt-4 flex-col',
className
)}
data-embla-container=""
{...restProps}
>
{@render children?.()}
</div>
</div>