1.1.22 • Published 5 months ago

@stasies/js-carousel v1.1.22

Weekly downloads
-
License
MIT
Repository
-
Last release
5 months ago

🚀 JS-Carousel Component

A lightweight, customizable, and performant js-carousel. Supports dragging functionality via translateX.

✨ Features

  • Infinite scrolling for seamless transitions
  • Customizable slides using <slide-component>
  • Draggable support (using translateX for smooth motion)
  • Responsive breakpoints for different screen sizes
  • Autoplay support with configurable interval

📦 Installation

npm install @stasies/js-carousel

🚀 Usage

Attributes

AttributeTypeDefaultDescription
autoplayfalse | numberfalsefalse disables autoplay, a number sets autoplay interval in ms
wrapAroundbooleantrueEnables infinite loop
breakpointsobject{0: {slidesToShow: 1, slidesToScroll: 1}}Defines responsive breakpoints where the key is the screen width
gapnumber0Sets gaps between slides (in px)
pauseonhoverbooleantruetrue stops autoplay on hover

Basic Example

<carousel-component
  autoplay="3000"
  wraparound="true"
  gap="8"
  pauseonhover="true"
>
  <slide-component>Slide 1</slide-component>
  <slide-component>Slide 2</slide-component>
  <slide-component>Slide 3</slide-component>
</carousel-component>

JavaScript Usage

const carousel = document.querySelector("carousel-component");
carousel.breakpoints = {
  1600: {
    slidesToShow: 3,
    slidesToScroll: 1,
  },
  0: {
    slidesToShow: 1,
    slidesToScroll: 1,
  },
};
carousel.next(); // switch to the next slide
carousel.prev(); //switch to the previous slide
carousel.jump(index); //jump to the slide with index

Next (React) Example

"use client";
import "@stasies/js-carousel";
import { useEffect, useRef } from "react";

export default function Carousel() {
  const carousel = useRef();

  useEffect(() => {
    carousel.current.breakpoints = {
      1200: {
        slidesToShow: 2,
        slidesToScroll: 1,
      },
      0: {
        slidesToShow: 1,
        slidesToScroll: 1,
      },
    };
  });

  return (
    <carousel-component
      ref={carousel}
      gap={10}
      autoplay={2000}
      wraparound={true}
    >
      <slide-component>slide 1</slide-component>
      <slide-component>slide 2</slide-component>
      <slide-component>slide 3</slide-component>
      <slide-component>slide 4</slide-component>
      <slide-component>slide 5</slide-component>
    </carousel-component>
  );
}

Nuxt (Vue) Example

import "@stasies/js-carousel";

const carousel = ref();

onMounted(() => {
  carousel.value.breakpoints = {
    0: {
      slidesToShow: 1,
      slidesToScroll: 1,
    },
  };
});
<template>
  <div class="carousel__wrapper">
    <carousel-component ref="carousel" :wraparound="true" :autoplay="false">
      <slide-component> 1 </slide-component>
      <slide-component> 2 </slide-component>
      <slide-component> 3 </slide-component>
    </carousel-component>
    <button @click="carousel.prev()">prev</button>
    <button @click="carousel.next()">next</button>
  </div>
</template>

📄 License

MIT License © 2025 Stasies

1.1.22

5 months ago

1.1.20

5 months ago

1.1.19

5 months ago

1.1.18

5 months ago

1.1.17

5 months ago

1.1.16

5 months ago

1.1.15

5 months ago

1.1.14

5 months ago

1.1.13

5 months ago

1.1.12

5 months ago

1.1.11

5 months ago

1.1.10

5 months ago

1.1.9

5 months ago

1.1.8

5 months ago

1.1.7

5 months ago

1.1.6

5 months ago

1.1.5

5 months ago

1.1.4

5 months ago

1.1.0

5 months ago

1.0.9

5 months ago

1.0.8

5 months ago

1.0.7

5 months ago

1.0.6

5 months ago

1.0.5

5 months ago

1.0.4

5 months ago

1.1.3

5 months ago

1.1.2

5 months ago

1.1.1

5 months ago

1.0.2

5 months ago

1.0.1

5 months ago

1.0.0

5 months ago