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

@wedgekit/lightbox

v3.0.2

Published

A lightbox is a type of modal that takes up the whole viewing area and dims and blurs the background content. The lightbox is typically used to display some type of slideshow of content such as images or videos.

Downloads

64

Readme

Lightbox

A lightbox is a type of modal that takes up the whole viewing area and dims and blurs the background content. The lightbox is typically used to display some type of slideshow of content such as images or videos.

The lightbox has three components: a header that display information about the content, a content area to display content, and a footer that provides functionality for manipulating the content

Usage

import Button from '@wedgekit/button';
import Lightbox from '@wedgekit/lightbox';

const Example = () => {
  const [lightboxIndex, setLightboxIndex] = React.useState(0);
  const [showLightbox, setShowLightbox] = React.useState(false);

  return (
    <>
      <Button
        onClick={() => {
          setShowLightbox(true);
        }}
      >
        Open Lightbox
      </Button>
      {showLightbox && (
        <Lightbox
          onChange={(index, e) => setLightboxIndex(index)}
          index={lightboxIndex}
          label="Preview Contents"
          onExit={() => setShowLightbox(false)}
        >
          <img src="https://picsum.photos/400/600" />
          <img src="https://picsum.photos/600/900" />
        </Lightbox>
      )}
    </>
  );
};

render(<Example />);

Props

children

Type: JSX.Element

Required: ✅

Children is an array of content shown in the Lightbox. These elements are typically <iframe>, <video>, or <img>

className

Type: string

Required: ❌

This is exposed but is only here so that styled-components will be able to style components correctly. Please do not use this unless you really know what you are doing.

footer

Type: JSX.Element

Required: ❌

JSX that renders as the footer of the Lightbox.

header

Type: JSX.Element

Required: ❌

JSX that renders as the header of the Lightbox.

index

Type: number

Required: ✅

Current index of the content being viewed

label

Type: string

Required: ✅

Aria compliant text for all child components to be 'labeled-by', required on all wedgekit components.

loop

Type: boolean

Required: ❌

Determines whether or not the Lightbox will loop the elements in the array by connecting the 0th element to the last element

onChange

Type: {(index: number, e: React.SyntheticEvent) => void}

Required: ✅

Event notifying a change in the Lightbox content. e.target.dataset.pageChange will return the direction of lightbox content change either next or previous

onExit

Type: () => void

Required: ✅

Function that will fire when the Lightbox is closed.

Default Lightbox Components

@wedgekit/lightbox offers default stylings for frequently used subcomponents of Lightbox. DefaultHeader, DefaultFooter, and DefaultPreviewUnavailable can be consumed like so:

import Button from '@wedgekit/button';
import Lightbox, { DefaultFooter, DefaultHeader } from '@wedgekit/lightbox';

const Example = () => {
  const [lightboxIndex, setLightboxIndex] = React.useState(0);
  const [showLightbox, setShowLightbox] = React.useState(false);

  return (
    <>
      <Button
        onClick={() => {
          setShowLightbox(true);
        }}
      >
        Open Lightbox
      </Button>
      {showLightbox && (
        <Lightbox
          footer={<DefaultFooter />}
          header={
            <DefaultHeader
              title="Lightbox Header"
              header={lightboxIndex}
              onExit={() => {
                setShowLightbox(false);
              }}
            />
          }
          index={lightboxIndex}
          label="Preview Contents"
          onChange={(index, e) => setLightboxIndex(index)}
          onExit={() => setShowLightbox(false)}
        >
          <img src="https://picsum.photos/400/600" />
          <img src="https://picsum.photos/600/900" />
        </Lightbox>
      )}
    </>
  );
};

render(<Example />);