npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

astro-swiper

v2.6.1

Published

Astro component for swiper, dedicated to slider / carousel / photo swiper / slide, including thumbnails

Readme

Astro Swiper

Astro Swiper - native component for Swiper. Use for slides, carousel, photo swiper.

Check demo

Installation

npm install astro-swiper
pnpm add astro-swiper
bun install astro-swiper

Usage

Carousel with loop, 3 pictures, 1 second interval:

---
import { Swiper, SwiperWrapper, SwiperSlide } from "astro-swiper";
---

<Swiper
  options={{
    loop: true,   // check options at https://swiperjs.com/swiper-api
    autoplay: {
      delay: 700,
      disableOnInteraction: false,
      waitForTransition: false
    }
  }}>
  <SwiperWrapper>
    <SwiperSlide>
      <img src="https://picsum.photos/455/256?nb=1" alt="" />
    </SwiperSlide>
    <SwiperSlide>
      <img src="https://picsum.photos/455/256?nb=2" alt="" />
    </SwiperSlide>
    <SwiperSlide>
      <img src="https://picsum.photos/455/256?nb=3" alt="" />
    </SwiperSlide>
  </SwiperWrapper>
</Swiper>

<style>
  .swiper {
    max-width: 455px;
    aspect-ratio: 16/9;
  }

  img {
    width: 100%;
  }
</style>

Examples

Check the online doc for a fullset of examples, including navigation and thumbnails. Full code is provided.

You can also look at how others are using astro-swiper in public github repo:

API

<Swiper/>

Main Swiper element. Inherits all HTMLAttributes<'div'> (class...) attributes. | Name | Type | Default | Description | | ---- | -----|-------- | -----------| | options | SwiperOptions | Swiperjs default | cf. Swiperjs doc | | options.astro | Cf. below description | undefined | astro specific options | | addDefaultClass | Boolean | true | Add class .swiper when true |

options.astro is as follows: | Name | Type | Default | Description | | ---- | -----|-------- | -----------| | useCustomElement | boolean | true | when false, use a <div> to be as close as possible to swiperjs default. Use a custom element <astro-swiper> otherwise. | | thumbSwiperUniqueSelector | string starting with # or . | undefined | unique selector of the thumbnail swiper to link with, when using the thumbs module. When a thumbnail swiper is build, this parameter is provided on the main slider (the one with big slides, not the one to track the progress) and equal the unique selector of the thumbnail swiper (the one to track the progress). It is used to link the main swiper with the thumbnail swiper when using the thumbs module. | | intersectionObserver.initSwiper | boolean | false | true to initialize the swiper when the element appears in the screen | | intersectionObserver.disconnectOnInit | boolean | false | true to disconnect the observer once the swiper is initialized | | intersectionObserver.controlAutoplay | boolean | false | true to start and stop the autoplay when the swiper appears and disappears from the screen, respectively | | intersectionObserver.options | Intersection Observer Init options | undefined | cf. mdn docs |

<SwiperWrapper/>

Wrapper of all slides. Inherits all HTMLAttributes<'div'> (class...) attributes. | Name | Type | Default | Description | | ---- | -----|-------- | -----------| | addDefaultClass | Boolean | true | Add class .swiper-wrapper when true |

<SwiperSlide/>

A single slide. Inherits all HTMLAttributes<'div'> (class...) attributes. | Name | Type | Default | Description | | ---- | -----|-------- | -----------| | addDefaultClass | Boolean | true | Add class .swiper-slide when true |

<SwiperPagination/>

Pagination dots. Inherits all HTMLAttributes<'div'> (class...) attributes. | Name | Type | Default | Description | | ---- | -----|-------- | -----------| | addDefaultClass | Boolean | true | Add class .swiper-pagination when true |

<SwiperButtonPrev/> and <SwiperButtonNext/>

Navigation arrows. Inherits all HTMLAttributes<'div'> (class...) attributes. | Name | Type | Default | Description | | ---- | -----|-------- | -----------| | addDefaultClass | Boolean | true | Add class .swiper-button-prev or swiper-button-next when true |

<SwiperScrollbar/>

Scrollbar. Inherits all HTMLAttributes<'div'> (class...) attributes. | Name | Type | Default | Description | | ---- | -----|-------- | -----------| | addDefaultClass | Boolean | true | Add class .swiper-scrollbar when true |

<SwiperLazyPreloader/>

Slide lazy loader. To be used inside a <SwiperSlide/>. Inherits all HTMLAttributes<'div'> (class...) attributes. | Name | Type | Default | Description | | ---- | -----|-------- | -----------| | addDefaultClass | Boolean | true | Add class .swiper-lazy-preloader when true |

getSwiperFromUniqueSelector()

Function to be used in script part, to be able to retrieve the swiper instance given a unique selector (starting with a . or a #), once the load event is fired. This allows to use functions and events in swiper.

Here is a snipset of the Custom Pagination Demo:

<Swiper
  class="swiper-demo-pagination-custom"
  options={{
    ...
    init: false,  // init in the script part
  }}
>
  ...
  <SwiperPagination />
</Swiper>

<script>
  import type { PaginationOptions } from 'astro-swiper/swiper';
  import { getSwiperFromUniqueSelector } from 'astro-swiper'
  window.addEventListener('load', () => {
    const swiper = getSwiperFromUniqueSelector('.swiper-demo-pagination-custom');
    (swiper!.params.pagination as PaginationOptions)!.renderBullet = function (index: number, className: string) {
      return '<span class="' + className + '">' + (index + 1) + "</span>";
    }
    swiper!.init()
  })
</script>

Swiper types

Swiper types are available importing types from astro-swiper/swiper, such as

import type { PaginationOptions } from 'astro-swiper/swiper';

Help needed?

Do you need help to integrate astro-swiper in your astro template / component? I'll be happy to help!

  • mention me with @pascal-brand38 in an issue on your own github repo
  • or fill a GitHub issue in astro-swiper github

Support us

Let's star the project as you like it.