# Skecher UI — Complete component context Copy polished React motion components with live previews, source code, dependencies, and shadcn registry commands. Skecher UI is a source-owned shadcn registry. Install a component, then adapt its copied source inside the consuming application. Components do not call an LLM provider or expose API keys; applications own model requests, server-side credentials, persistence, and safety policy. ## Integration rules for coding agents 1. Prefer the registry install command over recreating a component. 2. Preserve the component's accessible labels, keyboard behavior, reduced-motion behavior, and controlled-state API. 3. Keep provider SDKs and secret keys in the consuming application's server boundary. 4. Use component callbacks and controlled props to connect application data or streamed model output. 5. Check the component's documented dependencies and required assets before implementation. ## Component index - [Streaming Text](https://skecher-ui.com/llms/streaming-text): A soft word-by-word text reveal for hero copy, onboarding moments, empty states, and editorial interfaces that need a polished animated entrance. - [Morphing Text](https://skecher-ui.com/llms/text-morphing): A text morphing effect for hero copy, onboarding moments, empty states, and editorial interfaces that need a polished animated entrance. - [Liquid Glass Social](https://skecher-ui.com/llms/liquid-glass-social): A polished animated UI primitive for expressive product interfaces. - [Image Glide](https://skecher-ui.com/llms/image-glide): A clean image interaction component with pointer depth, soft image transitions, and a compact thumbnail rail. - [Image Density Grid](https://skecher-ui.com/llms/image-density-grid): A percentage-controlled image grid that reflows every frame into a denser or sparser layout with layout motion, soft blur, and a temporary glow during density changes. - [Morphing Action Dock](https://skecher-ui.com/llms/morphing-action-dock): A floating action dock that merges into one compact surface and splits into contextual actions on hover, focus, or pin. - [Gooey Toolbar](https://skecher-ui.com/llms/gooey-toolbar): A polished animated UI primitive for expressive product interfaces. - [Dock](https://skecher-ui.com/llms/dock): A macOS-style magnifying dock powered by shared motion values and spring-smoothed icon sizing. - [Liquid Morphology](https://skecher-ui.com/llms/liquid-morphology-slideshow): A WebGL image slideshow for landing-page backgrounds with liquid glass, frost, ripple, plasma, and timeshift shader transitions. - [Magazine Scroller](https://skecher-ui.com/llms/magazine-scroller): A polished animated UI primitive for expressive product interfaces. - [Ai Chat Box](https://skecher-ui.com/llms/ai-chat-box): A morphing AI chat composer with configurable models, actions, messages, labels, and controlled state hooks. - [AI Orb](https://skecher-ui.com/llms/ai-orb): A responsive circular Three.js plasma orb with a configurable surface, strand shape, motion, and pointer-driven depth. - [Dither Credit Card](https://skecher-ui.com/llms/dither-credit-card): A responsive payment card with an animated two-color dither field, selectable pointer physics, and carefully scaled card details. - [Snap Text](https://skecher-ui.com/llms/snap-text): A spring-driven scroll-snap narrative with a transitioning portrait prefix, curved outlined rows, and a compact sequence counter. - [Scroll Reveal Text](https://skecher-ui.com/llms/scroll-reveal-text): A sticky scroll narrative that progressively fills muted multiline text with a crisp foreground color using clip-path. - [Sliding Panel](https://skecher-ui.com/llms/sliding-panel): A generic keyed-content viewport for direction-aware transitions between tabs, steps, filters, or any ordered React view. - [Interactive Grid Hero](https://skecher-ui.com/llms/interactive-grid-hero): A full-page field of responsive square cells that softly round and brighten within a focused radius around the cursor. - [Morph Stack](https://skecher-ui.com/llms/morph-stack): A composable three-plate stack that fans into a spring-driven perspective view on hover. - [Expandable Mobile Nav](https://skecher-ui.com/llms/expandable-mobile-nav): A bottom-anchored navigation shell with expandable labels and composable per-item panels. - [Velocity Tabs](https://skecher-ui.com/llms/velocity-tabs): An accessible tab selector with a spring-driven indicator that stretches and softens in response to movement velocity. - [Add to Cart](https://skecher-ui.com/llms/add-to-cart): An interactive product grid with curved add-to-cart flights, a responsive cart stack, and an animated currency total. - [Apple Mail Tabs](https://skecher-ui.com/llms/apple-mail-tabs): A colorful mail category selector inspired by Apple Mail, with compact inactive tabs and an expanded active label. - [Morph Menu](https://skecher-ui.com/llms/morph-menu): A measured action menu that morphs between compact and expanded states with configurable directional movement. - [Spring Slider](https://skecher-ui.com/llms/spring-slider): A pill-track slider with a spring-driven fill and thumb, tick markers for each step, and a tooltip that blurs in and out as you drag. --- # Streaming Text — Skecher UI A soft word-by-word text reveal for hero copy, onboarding moments, empty states, and editorial interfaces that need a polished animated entrance. ## Install ```bash bunx --bun shadcn@latest add CoDesign-Spa27/skecher-ui/streaming-text ``` ## Dependencies - motion ## Implementation guidance - No additional implementation constraints are documented. ## Usage ```tsx import { BlurredText } from "@/components/ui/streaming-text"; export default function StreamingTextExample() { return ( ); } ``` ## Source files - components/ui-components/streaming-text.tsx — Animated text component ## Canonical resources - Documentation: https://skecher-ui.com/docs/streaming-text - Registry item with complete source: https://skecher-ui.com/r/streaming-text.json - Component AI context: https://skecher-ui.com/llms/streaming-text --- # Morphing Text — Skecher UI A text morphing effect for hero copy, onboarding moments, empty states, and editorial interfaces that need a polished animated entrance. ## Install ```bash bunx --bun shadcn@latest add CoDesign-Spa27/skecher-ui/text-morphing ``` ## Dependencies - motion ## Implementation guidance - No additional implementation constraints are documented. ## Usage ```tsx import { MorphingText } from "@/components/ui/text-morphing"; const statusMessages = [ "Analyzing your workspace...", "Finding useful patterns...", "Preparing your answer...", ]; export default function MorphingTextExample() { return ( ); } ``` ## Source files - components/ui-components/text-morphing.tsx — Morphing text component ## Canonical resources - Documentation: https://skecher-ui.com/docs/text-morphing - Registry item with complete source: https://skecher-ui.com/r/text-morphing.json - Component AI context: https://skecher-ui.com/llms/text-morphing --- # Liquid Glass Social — Skecher UI A polished animated UI primitive for expressive product interfaces. ## Install ```bash bunx --bun shadcn@latest add CoDesign-Spa27/skecher-ui/liquid-glass-social ``` ## Dependencies - motion ## Implementation guidance - No additional implementation constraints are documented. ## Usage ```tsx import { Social } from "@/components/ui/liquid-glass-social"; export default function SocialLinksExample() { return (
); } ``` ## Source files - components/ui-components/liquid-glass-social.tsx — Liquid Glass Social component ## Canonical resources - Documentation: https://skecher-ui.com/docs/liquid-glass-social - Registry item with complete source: https://skecher-ui.com/r/liquid-glass-social.json - Component AI context: https://skecher-ui.com/llms/liquid-glass-social --- # Image Glide — Skecher UI A clean image interaction component with pointer depth, soft image transitions, and a compact thumbnail rail. ## Install ```bash bunx --bun shadcn@latest add CoDesign-Spa27/skecher-ui/image-glide ``` ## Dependencies - motion ## Implementation guidance - No additional implementation constraints are documented. ## Usage ```tsx "use client"; import { useState } from "react"; import { ImageGlide } from "@/components/ui/image-glide"; const images = [ { src: "/images/gallery/forest.jpg", alt: "Sunlight passing through a green forest", title: "Morning light", description: "A quiet trail at the start of the day.", }, { src: "/images/gallery/coast.jpg", alt: "Rocky coastline beside a blue sea", title: "Open coast", description: "Wind and water shaping the shoreline.", }, { src: "/images/gallery/desert.jpg", alt: "Soft desert dunes at sunset", title: "Last glow", description: "Warm light settling over the dunes.", }, ]; export default function ImageGlideExample() { const [activeIndex, setActiveIndex] = useState(0); return (
); } ``` ## Source files - components/ui-components/image-glide.tsx — Image Glide component ## Canonical resources - Documentation: https://skecher-ui.com/docs/image-glide - Registry item with complete source: https://skecher-ui.com/r/image-glide.json - Component AI context: https://skecher-ui.com/llms/image-glide --- # Image Density Grid — Skecher UI A percentage-controlled image grid that reflows every frame into a denser or sparser layout with layout motion, soft blur, and a temporary glow during density changes. ## Install ```bash bunx --bun shadcn@latest add CoDesign-Spa27/skecher-ui/image-density-grid ``` ## Dependencies - motion ## Implementation guidance - No additional implementation constraints are documented. ## Usage ```tsx import { ImageDensityGrid } from "@/components/ui/image-density-grid"; const images = [ { id: "one", src: "/images/gallery/one.jpg", alt: "Abstract blue artwork" }, { id: "two", src: "/images/gallery/two.jpg", alt: "Red architectural detail" }, { id: "three", src: "/images/gallery/three.jpg", alt: "Green landscape" }, { id: "four", src: "/images/gallery/four.jpg", alt: "Monochrome portrait" }, ]; export default function ImageDensityGridExample() { return ( ); } ``` ## Source files - components/ui-components/image-density-grid.tsx — Image Density Grid component ## Canonical resources - Documentation: https://skecher-ui.com/docs/image-density-grid - Registry item with complete source: https://skecher-ui.com/r/image-density-grid.json - Component AI context: https://skecher-ui.com/llms/image-density-grid --- # Morphing Action Dock — Skecher UI A floating action dock that merges into one compact surface and splits into contextual actions on hover, focus, or pin. ## Install ```bash bunx --bun shadcn@latest add CoDesign-Spa27/skecher-ui/morphing-action-dock ``` ## Dependencies - motion - lucide-react ## Implementation guidance - No additional implementation constraints are documented. ## Usage ```tsx "use client"; import { Compass, Feather, FlameKindling } from "lucide-react"; import { MorphingActionDock } from "@/components/ui/morphing-action-dock"; const actions = [ { id: "explore", label: "Explore", icon: Compass, tone: "from-slate-950 via-slate-800 to-slate-700", eyebrow: "Find direction", paragraph: "Move from a broad idea to a clear next step.", cue: "Explore the workspace", }, { id: "write", label: "Write", icon: Feather, tone: "from-neutral-950 via-neutral-800 to-stone-700", eyebrow: "Shape the draft", paragraph: "Turn the selected direction into useful copy.", cue: "Start a new draft", }, { id: "launch", label: "Launch", icon: FlameKindling, tone: "from-zinc-950 via-zinc-800 to-orange-950", eyebrow: "Ship with confidence", paragraph: "Review the final details and publish your work.", cue: "Prepare the release", }, ]; export default function MorphingActionDockExample() { return ( ); } ``` ## Source files - components/ui-components/morphing-action-dock.tsx — Morphing Action Dock component ## Canonical resources - Documentation: https://skecher-ui.com/docs/morphing-action-dock - Registry item with complete source: https://skecher-ui.com/r/morphing-action-dock.json - Component AI context: https://skecher-ui.com/llms/morphing-action-dock --- # Gooey Toolbar — Skecher UI A polished animated UI primitive for expressive product interfaces. ## Install ```bash bunx --bun shadcn@latest add CoDesign-Spa27/skecher-ui/gooey-toolbar ``` ## Dependencies - motion - nucleo-ui-essential-fill-duo-18 - tailwind-merge - clsx ## Implementation guidance - No additional implementation constraints are documented. ## Usage ```tsx import { GooeyToolbar } from "@/components/ui/gooey-toolbar"; export default function GooeyToolbarExample() { return (
); } ``` ## Source files - components/ui-components/gooey-toolbar.tsx — Gooey Toolbar component ## Canonical resources - Documentation: https://skecher-ui.com/docs/gooey-toolbar - Registry item with complete source: https://skecher-ui.com/r/gooey-toolbar.json - Component AI context: https://skecher-ui.com/llms/gooey-toolbar --- # Dock — Skecher UI A macOS-style magnifying dock powered by shared motion values and spring-smoothed icon sizing. ## Install ```bash bunx --bun shadcn@latest add CoDesign-Spa27/skecher-ui/dock ``` ## Dependencies - motion ## Implementation guidance - No additional implementation constraints are documented. ## Usage ```tsx "use client"; import { Bell, Home, Search, Settings } from "lucide-react"; import { Dock } from "@/components/ui/dock"; const iconClassName = "size-full"; export default function DockExample() { return ( }, { id: "search", label: "Search", icon: }, { id: "notifications", label: "Notifications", icon: , onClick: () => window.alert("Notifications opened"), }, { id: "settings", label: "Settings", icon: }, ]} baseSize={44} maxSize={76} influence={130} className="mx-auto" /> ); } ``` ## Source files - components/ui-components/dock.tsx — Magnifying dock component ## Canonical resources - Documentation: https://skecher-ui.com/docs/dock - Registry item with complete source: https://skecher-ui.com/r/dock.json - Component AI context: https://skecher-ui.com/llms/dock --- # Liquid Morphology — Skecher UI A WebGL image slideshow for landing-page backgrounds with liquid glass, frost, ripple, plasma, and timeshift shader transitions. ## Install ```bash bunx --bun shadcn@latest add CoDesign-Spa27/skecher-ui/liquid-morphology-slideshow ``` ## Dependencies - None beyond React. ## Implementation guidance - No additional implementation constraints are documented. ## Usage ```tsx import { LiquidMorphologySlideshow } from "@/components/ui/liquid-morphology-slideshow"; const slides = [ { title: "Northern light", src: "/images/slides/northern-light.jpg", alt: "Green aurora over a mountain range", category: "Expedition", description: "Field journal", }, { title: "Open water", src: "/images/slides/open-water.jpg", alt: "Sunlight reflecting across the ocean", category: "Travel", description: "Coastal study", }, ]; export default function LiquidMorphologyExample() { return ( ); } ``` ## Source files - components/ui-components/liquid-morphology-slideshow.tsx — Liquid Morphology Slideshow component ## Canonical resources - Documentation: https://skecher-ui.com/docs/liquid-morphology-slideshow - Registry item with complete source: https://skecher-ui.com/r/liquid-morphology-slideshow.json - Component AI context: https://skecher-ui.com/llms/liquid-morphology-slideshow --- # Magazine Scroller — Skecher UI A polished animated UI primitive for expressive product interfaces. ## Install ```bash bunx --bun shadcn@latest add CoDesign-Spa27/skecher-ui/magazine-scroller ``` ## Dependencies - None beyond React. ## Implementation guidance - No additional implementation constraints are documented. ## Usage ```tsx import { MagazineScroller } from "@/components/ui/magazine-scroller"; const covers = [ { src: "/images/covers/edition-01.jpg", alt: "Edition 01 magazine cover" }, { src: "/images/covers/edition-02.jpg", alt: "Edition 02 magazine cover" }, { src: "/images/covers/edition-03.jpg", alt: "Edition 03 magazine cover" }, { src: "/images/covers/edition-04.jpg", alt: "Edition 04 magazine cover" }, ]; export default function MagazineScrollerExample() { return ( ); } ``` ## Source files - components/ui-components/magazine-scroller.tsx — Magazine Scroller component ## Canonical resources - Documentation: https://skecher-ui.com/docs/magazine-scroller - Registry item with complete source: https://skecher-ui.com/r/magazine-scroller.json - Component AI context: https://skecher-ui.com/llms/magazine-scroller --- # Ai Chat Box — Skecher UI A morphing AI chat composer with configurable models, actions, messages, labels, and controlled state hooks. ## Install ```bash bunx --bun shadcn@latest add CoDesign-Spa27/skecher-ui/ai-chat-box ``` ## Dependencies - lucide-react - motion ## Implementation guidance - No additional implementation constraints are documented. ## Usage ```tsx "use client"; import { Brain, Sparkles, Zap } from "lucide-react"; import { useState } from "react"; import { AiChatBox, type AiChatMessage, type AiChatModel, } from "@/components/ui/ai-chat-box"; const models: AiChatModel[] = [ { id: "balanced", name: "Balanced", description: "Useful for most everyday tasks", capability: "General", icon: Sparkles, }, { id: "reasoning", name: "Reasoning", description: "Best for complex planning", capability: "Deep", icon: Brain, }, { id: "fast", name: "Fast", description: "Quick drafts and summaries", capability: "Quick", icon: Zap, }, ]; export default function AiChatBoxExample() { const [messages, setMessages] = useState([]); return ( { console.info("Send", message.text, "with", model?.name); }} labels={{ empty: "What can I help you build?", input: "Describe your idea", send: "Send message", }} maxLength={2000} submitOnEnter className="mx-auto max-w-3xl" /> ); } ``` ## Source files - components/ui-components/ai-chat-box.tsx — Ai Chat Box component ## Canonical resources - Documentation: https://skecher-ui.com/docs/ai-chat-box - Registry item with complete source: https://skecher-ui.com/r/ai-chat-box.json - Component AI context: https://skecher-ui.com/llms/ai-chat-box --- # AI Orb — Skecher UI A responsive circular Three.js plasma orb with a configurable surface, strand shape, motion, and pointer-driven depth. ## Install ```bash bunx --bun shadcn@latest add CoDesign-Spa27/skecher-ui/ai-orb ``` ## Dependencies - None beyond React. ## Implementation guidance - No additional implementation constraints are documented. ## Usage ```tsx import { AiOrb } from "@/components/ui/ai-orb"; export default function AiOrbExample() { return (
); } ``` ## Source files - components/ui-components/ai-orb.tsx — AI Orb component ## Canonical resources - Documentation: https://skecher-ui.com/docs/ai-orb - Registry item with complete source: https://skecher-ui.com/r/ai-orb.json - Component AI context: https://skecher-ui.com/llms/ai-orb --- # Dither Credit Card — Skecher UI A responsive payment card with an animated two-color dither field, selectable pointer physics, and carefully scaled card details. ## Install ```bash bunx --bun shadcn@latest add CoDesign-Spa27/skecher-ui/dither-credit-card ``` ## Dependencies - @paper-design/shaders-react - motion ## Implementation guidance - No additional implementation constraints are documented. ## Usage ```tsx import { DitherCreditCard } from "@/components/ui/dither-credit-card"; export default function DitherCreditCardExample() { return (
); } ``` ## Source files - components/ui-components/dither-credit-card.tsx — Dither Credit Card component ## Canonical resources - Documentation: https://skecher-ui.com/docs/dither-credit-card - Registry item with complete source: https://skecher-ui.com/r/dither-credit-card.json - Component AI context: https://skecher-ui.com/llms/dither-credit-card --- # Snap Text — Skecher UI A spring-driven scroll-snap narrative with a transitioning portrait prefix, curved outlined rows, and a compact sequence counter. ## Install ```bash bunx --bun shadcn@latest add CoDesign-Spa27/skecher-ui/snap-text ``` ## Dependencies - motion ## Implementation guidance - No additional implementation constraints are documented. ## Usage ```tsx "use client"; import { useState } from "react"; import { SnapText } from "@/components/ui/snap-text"; const steps = [ "Research the problem.", "Shape the direction.", "Build the system.", "Test every detail.", ]; const images = [ "/images/process/research.jpg", "/images/process/direction.jpg", "/images/process/build.jpg", "/images/process/test.jpg", ]; const colors = ["#8CD7C0", "#FFD873", "#FF5768", "#6C89C5"]; export default function SnapTextExample() { const [activeIndex, setActiveIndex] = useState(0); return ( {String(activeIndex + 1).padStart(2, "0")} / {String(steps.length).padStart(2, "0")} } itemHeight={96} indent={28} inactiveColor="#737373" spring={{ stiffness: 280, damping: 30, mass: 0.8 }} className="h-[42rem]" /> ); } ``` ## Source files - components/ui-components/snap-text.tsx — Snap Text component ## Canonical resources - Documentation: https://skecher-ui.com/docs/snap-text - Registry item with complete source: https://skecher-ui.com/r/snap-text.json - Component AI context: https://skecher-ui.com/llms/snap-text --- # Scroll Reveal Text — Skecher UI A sticky scroll narrative that progressively fills muted multiline text with a crisp foreground color using clip-path. ## Install ```bash bunx --bun shadcn@latest add CoDesign-Spa27/skecher-ui/scroll-reveal-text ``` ## Dependencies - motion ## Implementation guidance - No additional implementation constraints are documented. ## Usage ```tsx import { ScrollRevealText } from "@/components/ui/scroll-reveal-text"; const lines = [ "Design should guide attention.", "Motion should explain change.", "Every detail should feel intentional.", ]; export default function ScrollRevealTextExample() { return ( ); } ``` ## Source files - components/ui-components/scroll-reveal-text.tsx — Scroll Reveal Text component ## Canonical resources - Documentation: https://skecher-ui.com/docs/scroll-reveal-text - Registry item with complete source: https://skecher-ui.com/r/scroll-reveal-text.json - Component AI context: https://skecher-ui.com/llms/scroll-reveal-text --- # Sliding Panel — Skecher UI A generic keyed-content viewport for direction-aware transitions between tabs, steps, filters, or any ordered React view. ## Install ```bash bunx --bun shadcn@latest add CoDesign-Spa27/skecher-ui/sliding-panel ``` ## Dependencies - motion ## Implementation guidance - No additional implementation constraints are documented. ## Usage ```tsx "use client"; import { type ComponentProps, useState } from "react"; import { Skeleton } from "@/components/ui/skeleton"; import { SlidingPanel, type SlidingPanelDirection, } from "@/components/ui/sliding-panel"; import { cn } from "@/lib/utils"; type PanelIndex = 0 | 1; const OVERVIEW_BARS = [34, 58, 45, 76, 62, 88, 70, 96] as const; const ACTIVITY_ROWS = [82, 68, 76, 58] as const; function LoadingBar({ className, ...props }: ComponentProps) { return (