What problem does it solve? Web app screens often ship with bare text where imagery would help — empty states, onboarding, and error pages — or with illustrations that break dark mode, violate free-library licenses, or bloat the JavaScript bundle. This Skill provides the placement doctrine, sourcing and licensing rules, and React integration patterns to add imagery correctly. ## Core Features & Use Cases - Placement doctrine: Decides where imagery belongs (empty states, onboarding, 404/500 pages, success moments) and where it clutters (data tables, dashboards, loading states). - Sourcing and licensing: Compares unDraw, Storyset, and LottieFiles free tiers, covering attribution obligations, share-alike terms, and a record-the-license practice at adoption. - React/Vite integration: Covers inline SVG vs <img> vs Lottie embedding, token-based recoloring for light/dark themes, layout-shift prevention, and bundle discipline. - Accessibility defaults: Enforces aria-hidden/empty alt for decorative art, prefers-reduced-motion handling, and WCAG 2.2.2 pause controls for long animations. - Use Case: A React app shows a bare "No projects yet" message. Use this Skill to pick an unDraw illustration, recolor it to design tokens, embed it via SVGR with reserved dimensions, and wire reduced-motion-safe behavior. ## Quick Start Use ui-illustrations to add a licensed, dark-mode-safe illustration to the empty state on my projects page.