Component guide
FROM PLAYGROUND TO YOUR PAGE

Carousel, Glass
& Dither.

Three ways to give your page a little movement. See each effect beside its instructions, adjust it in the playground, and copy the code into your site.

Open the playground

Choose it. Then copy both parts.

You can explore all three effects in your browser. To add one to your site, use an existing React project with TypeScript support for the downloaded .tsx file.

  1. Select Carousel, Glass, or Dither at the top of the playground, then choose a version and adjust its controls.
  2. Compare Before with After. Switch back to After to export the effect.
  3. Choose Download .tsx for the complete component. Save it next to your example file.
  4. Select Usage → Copy code for the short example that imports the component and applies your settings.
Using the sample photos?

Unzip the download and copy its public/images contents into your project’s public/images folder. Carousel uses photo-1.png through photo-8.png; Dither uses dither.jpg.

Download sample images

Glass: start with a torus.

A glass shape bends the backdrop as it turns. Drag the live torus beside this section to see its surface from another angle.

  1. Open Glass and choose Torus, Sphere, or Cross.
  2. Adjust Frost for a cloudier surface and Chromatic for colored edges.
  3. Set the speed, then compare Before and After to see what the glass effect adds.
GlassA refracting torus with a text backdrop.
Customize Glass
Shape
Use "Torus", "Sphere", or "X" in the code. The playground calls X “Cross.”
Glass finish
Start with frost: 6 and chromatic: 40, then adjust by eye. Lower frost keeps the backdrop clearer.
Backdrop
Change the text, textColor, and font in the example. Put essential page text outside the graphic too.

Save GlassIcon.tsx beside this example. Keep an explicit width and height so the canvas has space to render.

Download GlassIcon.tsx
GlassExample.tsx
"use client";

import GlassIcon from './GlassIcon';

export default function GlassExample() {
  return (
    <GlassIcon
      shape="Torus"
      speed={17}
      size={72}
      background="#e9eff6"
      glass={{ frost: 6, chromatic: 40 }}
      orient={{ angleX: 24, angleY: -22, angleZ: -12 }}
      backdrop={{
        type: 'Text', text: 'fluid.', textColor: '#334d7a',
        font: { fontFamily: 'Georgia, serif', fontSize: 180, fontStyle: 'italic' },
      }}
      style={{ width: '100%', height: 520 }}
    />
  );
}

Dither: reveal the photo underneath.

Give a photo a patterned surface, then uncover the color with your pointer. Move across the live image beside this section to try the reveal.

  1. Open Dither and choose Ordered, Lines, or Noise.
  2. Increase Dot size for a coarser texture. Reduce it to keep more image detail.
  3. Adjust Reveal radius to change the area around the pointer. Before shows the original photo.
DitherMove over the patterned image to reveal its color.
Customize Dither
Pattern
Ordered maps to "bayer8". The other values are "lines" and "noise".
Reveal edge
revealRadius sets the area uncovered around the pointer; revealSoftness blends the edge.
Wave
Add wave={false} to remove the animated wave while keeping the pointer reveal.

Save DitherReveal.tsx beside this example. Put the sample dither.jpg in public/images, or change the image path and description to use your own photo.

Download DitherReveal.tsx
DitherExample.tsx
"use client";

import DitherReveal from './DitherReveal';

export default function DitherExample() {
  return (
    <DitherReveal
      image={{ src: '/images/dither.jpg', alt: 'Two hands in orange and purple light.' }}
      ditherStyle="bayer8"
      dotSize={5}
      revealRadius={135}
      revealSoftness={40}
      waveSpeed={52}
      waveDensity={25}
      style={{ width: '100%', height: 520 }}
    />
  );
}

Bring your chosen effect into your page.

Render your example from the page where you want the effect. A usage snippet imports the renderer, so keep the full downloaded component and its images in the right locations. In a Next.js App Router project, keep the included "use client" boundary.

Add my chosen effect
Add the attached Carousel, Glass, or Dither component and usage snippet to my existing React site at [where it should appear]. Preserve my chosen settings and the site's existing layout.

Use the complete attached .tsx source and keep the usage import working. Put local image assets in public/images. Use a responsive width and an explicit height. For RoundCarousel, put the height on its outer container.

Provide a static fallback and respect prefers-reduced-motion. Keep essential text outside the graphic. For hover effects, add a keyboard-accessible Show original control and verify touch behavior. Check for missing images, WebGL support where needed, and cleanup when navigating away.

Here is the usage snippet:
[Paste the code copied from the playground here]
Make it yours: replace anything in [brackets].

Pause controls freeze these previews. Exported code keeps the animation settings; add a pause control or static fallback when integrating it into your page.

Choose your component

Common questions

Why is my example blank?

Check that the full component file exists and the import matches its filename. Give the component a width and height; RoundCarousel needs the height on its parent. For Carousel and Dither, check that each image URL opens on your site. Glass and Dither also need WebGL support.

Does Before export the animated version?

Before exports a flat image row, basic shape, or plain image. Switch back to After before downloading the animated source and copying its Usage example.

Can I use these on a plain HTML page?

The downloads and usage examples are React components. A plain HTML site needs a JavaScript adaptation; give the source and your site files to your coding assistant or developer.

Sources & notes

Guide and playground integration by toolandtea. Round Carousel, Glass Icon, and Dither Reveal retain the Originkit attribution in the supplied component source. The live examples use the same renderers as the playground.