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 🙏

© 2024 – Pkg Stats / Ryan Hefner

@frost084/use-slider-hook

v1.0.4

Published

Custom hook for creating a slider with auto-scroll, loop functionality, progress tracking, and more.

Downloads

261

Readme

useSlider Hook

A custom React hook for creating sliders with auto-scroll, looping, and progress tracking, ideal for carousels and image galleries.

Features

  • Auto-scroll with customizable speed
  • Loop functionality to repeat slides
  • Bullet and slide progress tracking
  • Directional navigation (next/previous)
  • Visibility detection to pause when the slider is out of view

Installation

You can install this hook via NPM:

npm install @frost084/use-slider-hook

Usage

Import the hook in your component and configure it with options as needed.

import { useSlider } from '@frost084/use-slider-hook'

const MySliderComponent = () => {
  const {
    currentSlide,
    prevIndex,
    nextIndex,
    nextSlide,
    prevSlide,
    goToSlide,
    slideTimeProgress,
    totalProgress,
    loopProgress,
    bulletProgress,
    direction,
    sliderRef
  } = useSlider({
    autoScroll: true,       // Enable automatic slide transition
    loop: true,             // Loop back to the first slide
    speed: 3000,            // Transition duration in milliseconds
    totalSlides: 5          // Total number of slides
  })

  return (
    <div ref={sliderRef}>
      <button onClick={prevSlide}>Previous</button>
      <button onClick={nextSlide}>Next</button>
      <div>Current Slide: {currentSlide}</div>
      <div>Slide Time Progress: {slideTimeProgress}%</div>
      <div>Total Progress: {totalProgress}%</div>
      <div>Loop Progress: {loopProgress}%</div>
      <div>Bullet Progress: {bulletProgress}%</div>
      <div>Direction: {direction}</div>
    </div>
  )
}

API

Hook Options

| Option | Type | Default | Description | |--------------|---------|---------|-------------------------------------------------------| | autoScroll | boolean | false | Enables automatic slide transition | | loop | boolean | true | Enables looping of slides | | speed | number | 3000 | Time in ms for each slide transition | | totalSlides| number | 0 | Total number of slides in the slider |

Returned Values

| Value | Type | Description | |--------------------|----------|-----------------------------------------------------------------| | currentSlide | number | Index of the current slide | | prevIndex | number | Index of the previous slide | | nextIndex | number | Index of the next slide | | nextSlide | function | Function to go to the next slide | | prevSlide | function | Function to go to the previous slide | | goToSlide | function | Function to go directly to a specified slide by index | | slideTimeProgress| number | Progress of the current slide as a percentage (0 to 100) | | totalProgress | number | Progress of the entire slider as a percentage (0 to 100) | | loopProgress | number | Progress of the loop as a percentage, considering all slides in the loop | | bulletProgress | number | Progress for bullets as a percentage based on the current slide | | direction | string | Direction of the slide transition ("next" or "prev") | | sliderRef | ref | Reference to the slider container for visibility tracking |

License

This project is licensed under the MIT License.


Developed by TheFrost - Creative Frontend Developer with contributions from ChatGPT (OpenAI).