
Dynamic Island Toast
A pixel-faithful Apple Dynamic Island that morphs, splits, and breathes while it hosts live activities inside your app.
Grab and throw a photo collage. Frames wrap with no seam, then glide to a stop.
Infinite Image Collage is a React and Tailwind CSS draggable photo canvas you can grab and throw in any direction, in Next.js or any React app, with no dependencies. Mixed aspect ratio frames pack one repeating cell with a continuous gutter, so the wrap never shows a seam, and a throw glides before easing to a stop. Frames near the middle come forward while outer ones tilt and soften, and a drag rocks them slightly. Arrow keys pan it, and reduced motion removes the speed driven rock. Image positions are design pixels inside cellWidth and cellHeight.
Run the following command
pnpm dlx wensity@latest add infinite-image-collage
npx wensity@latest add infinite-image-collage
yarn dlx wensity@latest add infinite-image-collage
bunx wensity@latest add infinite-image-collage
Import InfiniteImageCollage from @/components/wensity/infinite-image-collage and render it anywhere in your React or Next.js app. The source lands in your own repo, so every prop, class and animation below is yours to edit.
"use client";import { InfiniteImageCollage } from "@/components/wensity/infinite-image-collage";export default function Example() {return (<InfiniteImageCollage className="h-[720px]" />);}
| Prop | Type | Default | Description |
|---|---|---|---|
images | InfiniteCollageImage[] | Sixteen Wensity photographs | Frames packed inside one repeating cell. Positions are design pixels. |
cellWidth | number | 1944 | Design width of the repeating cell, in pixels. |
cellHeight | number | 1895 | Design height of the repeating cell, in pixels. |
friction | number | 0.986 | How much speed a throw keeps while it is still moving quickly. Lower settles sooner. |
depth | number | 1 | How far the middle comes forward. 0 is flat, 1 is the reference. |
tilt | number | 1 | How far outer frames turn toward the middle. 0 is flat, 1 is the reference. |
shake | number | 1 | How hard a drag rocks and slips the frames. 0 is still, 1 is the reference. |
softness | number | 1 | Softness on frames away from the middle. 0 stays sharp. |
perspective | number | 820 | Stage perspective, in pixels. Lower makes the tilt read stronger. |
label | string | Infinite photo collage. Drag to move in any direction. | Accessible name for the canvas. |

A pixel-faithful Apple Dynamic Island that morphs, splits, and breathes while it hosts live activities inside your app.

A seamless, GPU-only logo strip that never stutters or snaps at the loop point.

A pinned cinematic section that morphs in lock-step with scroll, staying perfectly in sync whichever way you travel.

Lava lamp background for React heroes: soft gradient shapes that drift and melt.