Lightbox.js also supports Next.js, and due to popular demand, new functionality has been added to support server-side rendering frameworks such as Next.js and Gatsby. Additionally, if you'd like to use the Next.js Image component, this feature is also available too.
If you have any queries, don't hesitate to contact us, and we'll be in touch!
In this guide, we're going to take a look at how to set up a lightbox with Next.js.
Import
Firstly, import the components required as well as the CSS file for this library:
Next, a license key will need to be initialized in order to use Lightbox.js. If you require a license key you can purchase an individual or team license here, but if your project is open-source, just contact us to get a free license key.
If you wish to purchase a license, you can get a 20% off discount with the coupon code OFFER20 at checkout.
The license key can be initialized like so:
useEffect(()=>{initLightboxJS("Insert License key","Insert plan type here");});
The two plan types are individual and team.
Usage
Create an array of images:
const images =[{src:'https://source.unsplash.com/sQZ_A17cufs/549x711',alt:'Mechanical keyboard with white keycaps.',},{src:'https://source.unsplash.com/rsAeSMzOX9Y/768x512',alt:'Mechanical keyboard with white, pastel green and red keycaps.',},{src:'https://source.unsplash.com/Z6SXt1v5tP8/768x512',alt:'Mechanical keyboard with white, pastel pink, yellow and red keycaps.',},]
Next, wrap the images you wish to include in the slideshow gallery within a SlideshowLightbox component as shown below.
images: An array of images containing src and alt attributes
lightboxIdentifier: A string value, should be equal to the data-lightboxjs data attribute passed to each image.
framework: Set to "next" for Next.js.
Data attributes
To identify the image elements, a data-lightboxjs data attribute should be added to each Next.js Image used. This should be equal to the lightboxIdentifier prop. The same group of images would have the same lightbox identifier attribute. If you wanted to add a 2nd lightbox to the page, then a different lightbox identifier would be used etc.
The lightbox looks for any images that have this data attribute and then includes them in the lightbox. So if you have nested components, the images can be identified by the lightbox as a result.
Available Themes
There are 3 themes available, which can be selected via setting the `theme` prop:
day: A light theme with a white background and gray icons
night: A dark theme with gray icons
lightbox: A theme with a semi-transparent gray background
If you'd like to change the theme of the lightbox, this can be done by passing a theme name to the theme prop, with the options including: "lightbox", "night", "day"
If you'd like to customize the background color of the lightbox, this can be done by passing a color to the color prop, as a RGB, RGBA, HEX or CSS color name value:
Each thumbnail contains a border which can be customized or removed entirely (by setting the border color to transparent). The border can be customized through specifying a color value for the `thumbnailBorder` prop, and the color can be a RGB, RGBA, HEX or CSS color name value.
By default, the thumbnails are animated in and out of the DOM using a fade-in effect. If you would prefer to switch this animation off, this can be done so by setting the `animateThumbnails` prop to `false`.