feat: add slider

This commit is contained in:
2025-06-05 09:23:35 +03:00
parent 8085b3bbde
commit 0ba1538520
11 changed files with 156 additions and 6 deletions

View File

@@ -1 +0,0 @@
reusable components

1
src/widgets/index.ts Normal file
View File

@@ -0,0 +1 @@
export { LicenseSlider } from './license-slider';

View File

@@ -0,0 +1 @@
export { default as LicenseSlider } from './license-slider';

View File

@@ -0,0 +1,9 @@
.Slider {
display: flex;
flex-direction: row;
justify-content: space-between;
}
.Slide {
cursor: pointer;
}

View File

@@ -0,0 +1,43 @@
'use client';
import s from './license-slider.module.scss';
import Image from 'next/image';
import { StaticImport } from 'next/dist/shared/lib/get-img-props';
import { clsx } from 'clsx';
import { Swiper, SwiperSlide } from 'swiper/react';
import 'swiper/css';
type LicenseSliderProps = {
className?: string;
images: {
id: string;
name: string;
image: string | StaticImport;
}[];
};
const mockFullSizeImage = 'images/empty-image.jpg';
export default function LicenseSlider({
className,
images,
}: LicenseSliderProps) {
return (
<Swiper
className={clsx(s.Slider, className)}
slidesPerView={3}
onSlideChange={() => console.log('slide change')}
onSwiper={(swiper) => console.log(swiper)}
>
{images.map(({ id, name, image }) => (
<SwiperSlide key={id}>
<a href={mockFullSizeImage} target='_blank'>
<Image className={s.Slide} src={image} alt={name} />
</a>
</SwiperSlide>
))}
</Swiper>
);
}