SkillAgentSearch skills...

Canvas Ui

A library of creative canvas components. Real HTML with WebGL effects running over it. React, Vue, Svelte, vanilla.

Install / Use

npx skills add DavidHDev/canvas-ui

Installs into whichever agent you are using.

README

<div align="center"> <a href="https://canvasui.dev"> <img src=".github/readme.gif" alt="Canvas UI" width="100%" /> </a> <br /> <br /> <p> <b>An open source library of creative, framework-agnostic components drawn on canvas.</b><br /> Fluid simulations, shader effects, and 3D scenes that run over your live, fully interactive interface. </p> <p> <a href="https://canvasui.dev"><b>canvasui.dev</b></a> · <a href="https://canvasui.dev/docs">Docs</a> · <a href="https://canvasui.dev/components">Components</a> · <a href="https://canvasui.dev/playground">Playground</a> · <a href="https://canvasui.dev/docs/installation">Installation</a> </p> <p> <a href="https://github.com/DavidHDev/canvas-ui/stargazers"><picture><source media="(prefers-color-scheme: dark)" srcset="https://shieldcn.dev/github/stars/DavidHDev/canvas-ui.svg?variant=secondary&size=sm&mode=dark" /><img alt="GitHub stars" src="https://shieldcn.dev/github/stars/DavidHDev/canvas-ui.svg?variant=secondary&size=sm&mode=light" /></picture></a> <a href="https://github.com/DavidHDev/canvas-ui/actions/workflows/ci.yml"><picture><source media="(prefers-color-scheme: dark)" srcset="https://shieldcn.dev/github/ci/DavidHDev/canvas-ui.svg?variant=secondary&size=sm&mode=dark" /><img alt="CI status" src="https://shieldcn.dev/github/ci/DavidHDev/canvas-ui.svg?variant=secondary&size=sm&mode=light" /></picture></a> <a href="https://canvasui.dev/components"><picture><source media="(prefers-color-scheme: dark)" srcset="https://shieldcn.dev/badge/components-33.svg?variant=secondary&size=sm&logo=shadcnui&mode=dark" /><img alt="33 components" src="https://shieldcn.dev/badge/components-33.svg?variant=secondary&size=sm&logo=shadcnui&mode=light" /></picture></a> <a href="LICENSE.md"><picture><source media="(prefers-color-scheme: dark)" srcset="https://shieldcn.dev/badge/license-MIT_+_Commons_Clause.svg?variant=secondary&size=sm&logo=opensourceinitiative&mode=dark" /><img alt="License: MIT + Commons Clause" src="https://shieldcn.dev/badge/license-MIT_+_Commons_Clause.svg?variant=secondary&size=sm&logo=opensourceinitiative&mode=light" /></picture></a> </p> <p> <picture><source media="(prefers-color-scheme: dark)" srcset="https://shieldcn.dev/badge/React.svg?variant=secondary&size=sm&logo=react&logoColor=61DAFB&mode=dark" /><img alt="React" src="https://shieldcn.dev/badge/React.svg?variant=secondary&size=sm&logo=react&logoColor=61DAFB&mode=light" /></picture> <picture><source media="(prefers-color-scheme: dark)" srcset="https://shieldcn.dev/badge/Vue.svg?variant=secondary&size=sm&logo=vuedotjs&logoColor=4FC08D&mode=dark" /><img alt="Vue" src="https://shieldcn.dev/badge/Vue.svg?variant=secondary&size=sm&logo=vuedotjs&logoColor=4FC08D&mode=light" /></picture> <picture><source media="(prefers-color-scheme: dark)" srcset="https://shieldcn.dev/badge/Svelte.svg?variant=secondary&size=sm&logo=svelte&logoColor=FF3E00&mode=dark" /><img alt="Svelte" src="https://shieldcn.dev/badge/Svelte.svg?variant=secondary&size=sm&logo=svelte&logoColor=FF3E00&mode=light" /></picture> <picture><source media="(prefers-color-scheme: dark)" srcset="https://shieldcn.dev/badge/Solid.svg?variant=secondary&size=sm&logo=solid&logoColor=4F88C6&mode=dark" /><img alt="Solid" src="https://shieldcn.dev/badge/Solid.svg?variant=secondary&size=sm&logo=solid&logoColor=4F88C6&mode=light" /></picture> <picture><source media="(prefers-color-scheme: dark)" srcset="https://shieldcn.dev/badge/Preact.svg?variant=secondary&size=sm&logo=preact&logoColor=673AB8&mode=dark" /><img alt="Preact" src="https://shieldcn.dev/badge/Preact.svg?variant=secondary&size=sm&logo=preact&logoColor=673AB8&mode=light" /></picture> <picture><source media="(prefers-color-scheme: dark)" srcset="https://shieldcn.dev/badge/TypeScript.svg?variant=secondary&size=sm&logo=typescript&logoColor=3178C6&mode=dark" /><img alt="TypeScript" src="https://shieldcn.dev/badge/TypeScript.svg?variant=secondary&size=sm&logo=typescript&logoColor=3178C6&mode=light" /></picture> </p> </div>

What makes it different

Most components use the experimental HTML-in-canvas API to read and redraw your live DOM. Text stays selectable, links stay clickable, and the page becomes a texture that fire, fluid, and glass distort in real time.

Where it is not supported, components fall back to WebGL overlays, so every visitor gets a working page.

<table> <tr> <td align="center">🎨</td> <td><b>33 components</b> and counting: Liquid, Glass, Shatter, Force Field, Decrypt Reveal, and more</td> </tr> <tr> <td align="center">🧩</td> <td><b>Framework agnostic</b>: every component ships for React, Solid, Preact, Vue, Svelte, and vanilla</td> </tr> <tr> <td align="center">📋</td> <td><b>Copy, do not install</b>: source lands in your repo via a shadcn-compatible registry</td> </tr> <tr> <td align="center">⚡</td> <td><b>Zero config</b>: self-contained, with sensible defaults and typed props</td> </tr> <tr> <td align="center">🤖</td> <td><b>MCP ready</b>: let your AI assistant find and install components for you</td> </tr> </table>

Quick start

Add a component with the shadcn CLI (run npx shadcn@latest init first if you have not):

npx shadcn@latest add @canvas-ui/liquid-react

Swap liquid for any component, react for solid, preact, vue, svelte, or vanilla. Source lands in components/canvasui/, yours to edit.

import { Liquid } from "@/components/canvasui/Liquid";

export default function Page() {
  return (
    <Liquid>
      <YourEntirePage />
    </Liquid>
  );
}

Most components wrap your content. The subtree stays live and interactive; the effect runs on top.

See the installation guide for manual setup.

Components

Every component ships for all six targets. Compare them in the playground.

<details open> <summary><b>🌊 Fluid &amp; motion</b></summary>

| Component | What it does | Component | What it does | | --------------------------------------------------------- | ------------------------------------ | --------------------------------------------------------------------- | -------------------------------------- | | Liquid | Pointer-driven fluid simulation | Ripple | Water ripples from every click | | Cloth | Fabric rippling in the wind | Droplets | Rain running down the screen | | Bubble | Metaball droplet trailing the cursor | Displacement | Grid that ripples away from the cursor |

</details> <details open> <summary><b>🔥 Fire &amp; energy</b></summary>

| Component | What it does | Component | What it does | | ------------------------------------------------------------------- | ----------------------------------- | ----------------------------------------------------------------- | ----------------------------------- | | Blaze | Sparks, smoke, and heat distortion | Flame Wrap | Border of fire around any element | | Force Field | Energy shield with click shockwaves | Laser | Beam that reveals content on scroll |

</details> <details open> <summary><b>💎 Glass &amp; optics</b></summary>

| Component | What it does | Component | What it does | | ----------------------------------------------------------- | ----------------------------------------- | --------------------------------------------------------- | --------------------------------------------- | | Glass | Crystal-ball lens that follows the cursor | Frost | Ice that melts under the cursor and refreezes | | Magnify | Sci-fi scanner lens with a HUD reticle | Bend | Folds the page like the face of a cube | | Peel | Peels back to reveal a second layer | Clouds | Mist parted by cursor wind |

</details> <details open> <summary><b>📼 Retro &amp; glitch</b></summary>

| Component | What it does | Component | What it does | | ------------------------------------------------------------------------- | --------------------------------------- | ----------------------------------------------------------------- | ------------------------------------- | | VHS | Worn tape wave, chroma bleed, and grain | Glitch | Broadcast tearing with RGB splits | | Retro Dither | D

Related Skills

View on GitHub
GitHub Stars3.6k
CategoryDesign
Updated36m ago
Forks178

Languages

TypeScript

Security Score

85/100

Audited on Aug 8, 2026

No findings