# Atelier UI > React animation and WebGL effect components you own as source — no runtime `atelier-ui` package, but peer dependencies are installed via npm. Atelier UI is an open-source library of visual effects and animations built with React. Instead of importing from a versioned package, you copy the component's TypeScript source file directly into your project. You own the code and can modify it freely. The CLI (`npx atelier-ui add `) handles this: it copies the source file(s), copies any shared internal utilities (hooks, assets), and runs your package manager to install peer npm dependencies (e.g. `three`, `motion`). Some components (canvas-based and pure CSS ones) have **zero npm dependencies** — you get a single `.tsx` file and that is all. Others require peer packages that must be installed: - **WebGL components** require: `three`, `@react-three/fiber`, `@react-three/drei` — and some add `@react-three/postprocessing`, `postprocessing` - **Motion-based components** require: `motion` - **Canvas/CSS components** require: nothing — pure browser APIs The library is built on Tailwind CSS v4, React Three Fiber (R3F), GLSL shaders, the Motion animation library, and the native Canvas 2D API. WebGL-based components share a single `` placed once at the app root. It bridges the DOM React tree with the R3F Canvas via a `useSyncExternalStore`-based teleport — components like `CurveMedia` or `LiquidMedia` can live anywhere in the DOM tree and push their Three.js meshes into the Canvas without being nested inside it. **Two tiers:** Free components are fully open. Pro components require a license key (`ATELIER_PRO_KEY` in `.env.local`). Both tiers use the same CLI and installation flow. **CLI:** `npx atelier-ui add ` — copies source files, copies shared utilities, and installs peer npm deps automatically. ## Getting Started - [Installation](https://atelier-ui.com/docs/getting-started/installation): Set up Tailwind CSS v4, the R3F Canvas with ``, add a Pro license key if needed, then install components via CLI or manual copy - [Contribution](https://atelier-ui.com/docs/getting-started/contribution): Project structure, how to scaffold a new component (`pnpm scafold-new`), how to write docs, demo controls format, and testing conventions ## WebGL Architecture (shared primitives) These are internal utilities required by WebGL components. Install `webgl-portal` first for any WebGL effect. - [WebglPortal](https://atelier-ui.com/docs/components/webgl-portal): The required root component. Place it inside a fullscreen fixed `` at the app root. All WebGL components teleport their R3F meshes here from anywhere in the DOM tree. Dependencies: `three`, `@react-three/fiber` - [WebglImage](https://atelier-ui.com/docs/components/webgl-image): DOM-aligned WebGL plane that mirrors a standard `` element. Accepts a `material` render prop to inject custom shaders. Used as the base for `CurveMedia` and `LiquidMedia`. Dependencies: `three`, `@react-three/fiber`, `@react-three/drei` - [WebglText](https://atelier-ui.com/docs/components/webgl-text): DOM-aligned WebGL plane that rasterizes text onto a canvas texture, then renders it as a WebGL mesh. Dependencies: `three`, `@react-three/fiber`, `@react-three/drei` ## Components — Cursor - [FluidDistortion](https://atelier-ui.com/docs/components/cursor/fluid-distortion): GPU-accelerated full-screen fluid simulation that reacts to cursor movement. Based on Navier–Stokes pressure solver running entirely on the GPU via R3F postprocessing. Key props: `fluidColor`, `intensity` (0–10), `force` (mouse velocity multiplier), `radius` (fluid spread), `curl`, `swirl`, `velocityDissipation`, `densityDissipation`, `pressure`, `rainbow` (direction-based color mode). Dependencies: `three`, `@react-three/fiber`, `@react-three/drei`, `@react-three/postprocessing`, `postprocessing` - [LiquidMedia](https://atelier-ui.com/docs/components/cursor/liquid-media): SEO-friendly `` or `