پرتوپرتو

کاروسل (Carousel)

یک کامپوننت کاروسل برای نمایش محتوا به صورت اسلایدی

معرفی

کامپوننت Carousel برای نمایش مجموعه‌ای از محتوا به صورت اسلایدی استفاده می‌شود. این کامپوننت از Embla Carousel استفاده می‌کند.

استفاده

۱
۲
۳
import {
  Carousel,
  CarouselContent,
  CarouselItem,
  CarouselNext,
  CarouselPrevious,
} from '@parto/ui';

export default function MyComponent() {
  return (
    <Carousel>
      <CarouselContent>
        <CarouselItem>اسلاید 1</CarouselItem>
        <CarouselItem>اسلاید 2</CarouselItem>
        <CarouselItem>اسلاید 3</CarouselItem>
      </CarouselContent>
      <CarouselPrevious />
      <CarouselNext />
    </Carousel>
  );
}

اندازه‌بندی

نمایش چند آیتم

<Carousel
  opts={{
    align: "start",
  }}
  className="w-full max-w-sm"
>
  <CarouselContent>
    {Array.from({ length: 5 }).map((_, index) => (
      <CarouselItem key={index} className="md:basis-1/2 lg:basis-1/3">
        <div className="p-1">
          کارت {index + 1}
        </div>
      </CarouselItem>
    ))}
  </CarouselContent>
  <CarouselPrevious />
  <CarouselNext />
</Carousel>

جهت عمودی

<Carousel orientation="vertical" className="w-full max-w-xs">
  <CarouselContent className="-mt-1 h-[200px]">
    {Array.from({ length: 5 }).map((_, index) => (
      <CarouselItem key={index} className="pt-1 md:basis-1/2">
        <div className="p-1">
          کارت {index + 1}
        </div>
      </CarouselItem>
    ))}
  </CarouselContent>
  <CarouselPrevious />
  <CarouselNext />
</Carousel>

API دسترسی

import { useCarousel } from '@parto/ui';

const { api } = useCarousel();

// دسترسی به متدهای کاروسل
api?.scrollNext();
api?.scrollPrev();
api?.scrollTo(index);

Props

PropTypeDefaultتوضیحات
orientation'horizontal' | 'vertical''horizontal'جهت کاروسل
optsCarouselOptions-تنظیمات Embla
pluginsCarouselPlugin[]-افزونه‌های Embla

ویژگی‌ها

  • اسلایدشو خودکار
  • حلقه بی‌نهایت
  • لمس و کشیدن (Drag)
  • پشتیبانی از کیبورد
  • سازگار با RTL