@wanner.work/image
v2.0.0
Published
![image.](docs/lead.svg)
Downloads
7
Readme
image.
An opinionated image component with caching for the web.
Prerequisites
Only use this package if you are building with tailwindcss and the newest version of react.
Installation
- Install the package using pnpm:
pnpm add @wanner.work/image
. - Add the following line to your
tailwind.config.js
content configuration: (if not already present from different@wanner.work
components)"./node_modules/@wanner.work/**/*.{js,ts,jsx,tsx}"
Usage
1. Using the Image
component:
import Image from '@wanner.work/image'
export default function MyComponent() {
return (
<Image
src="https://source.unsplash.com/random"
alt="Random image"
height={500}
width={500}
/>
)
}
2. Using the Image
component with the ImageProvider
context component somewhere above the Image
component in the component tree:
import Image, { ImageProvider } from '@wanner.work/image'
export default function MyComponent() {
return (
<ImageProvider
loader={
<div className="text-white absolute h-full w-full">Loading...</div>
}
cache={{
enabled: true,
maxAge: 1000 * 60 * 60 * 24,
keyGenerator: (src) => src.split('?')[0] || src
}}
>
<Image
src="https://source.unsplash.com/random"
alt="Random image"
height={500}
width={500}
/>
</ImageProvider>
)
}
Options
useImage
hook
Input
src
(string): The source of the image.options?
(useImageOptions?): Hook options:cache?
(ImageCacheOptions?): The cache options:enabled?
(boolean?): If the caching should be enabledmaxAge?
(number?): The max age of the cache until the resources should be fetched againkeyGenerator?
((url: string) => string): If the key of the cache shouldn't just be the src url.
Output
isLoading
(boolean): Boolean to show if the image is loadingimage
(string): Either the url or the base64 data url of the image.
Image
component
src
(string): The source of the image.alt
(string): The alt text of the image.height?
(number): The height of the image. Is required iffill
isfalse
.width?
(number): The width of the image. Is required iffill
isfalse
.fill?
(boolean): Whether the image should fill its container. Defaults tofalse
.loading?
('lazy' | 'eager'): The loading strategy of the image. Defaults tolazy
.
ImageProvider
component
loader?
(ReactNode?): The loader to show while the image is loading. The custom node will be put into a container which has the exact width and height as the image will have.cache?
(ImageCacheOptions?): The cache options:enabled?
(boolean?): If the caching should be enabledmaxAge?
(number?): The max age of the cache until the resources should be fetched againkeyGenerator?
((url: string) => string): If the key of the cache shouldn't just be the src url.
Further information
Next.js
The component can be used on Next.js and exposes the 'use client' directive as it uses useEffect, states and context.