matrix-demo
elevenlabs/matrix-demoFreeExample
shadcn/ui publishes no description for this item.
Install it
npx shadcn@latest add https://raw.githubusercontent.com/elevenlabs/ui/main/apps/www/public/r/matrix-demo.jsonSource
1"use client"23import { useEffect, useState } from "react"45import {6 Matrix,7 pulse,8 snake,9 wave,10 type Frame,11} from "@/components/ui/matrix"1213const Example = () => {14 const [mode, setMode] = useState<15 "individual" | "focus" | "expand" | "unified" | "collapse" | "burst"16 >("individual")17 const [unifiedFrame, setUnifiedFrame] = useState(0)18 const [expandProgress, setExpandProgress] = useState(0)19 const [collapseProgress, setCollapseProgress] = useState(0)2021 useEffect(() => {22 let timeout: NodeJS.Timeout2324 if (mode === "individual") {25 timeout = setTimeout(() => setMode("focus"), 4000)26 } else if (mode === "focus") {27 timeout = setTimeout(() => setMode("expand"), 2000)28 } else if (mode === "expand") {29 timeout = setTimeout(() => setMode("unified"), 2500)30 } else if (mode === "unified") {31 timeout = setTimeout(() => setMode("collapse"), 4000)32 } else if (mode === "collapse") {33 timeout = setTimeout(() => setMode("burst"), 2500)34 } else if (mode === "burst") {35 timeout = setTimeout(() => setMode("individual"), 800)36 }3738 return () => clearTimeout(timeout)39 }, [mode])4041 useEffect(() => {42 if (mode !== "unified") return4344 let frame = 045 const animate = setInterval(() => {46 frame += 147 setUnifiedFrame(frame)48 }, 50)4950 return () => clearInterval(animate)51 }, [mode])5253 useEffect(() => {54 if (mode !== "expand") {55 setExpandProgress(0)56 return57 }5859 let start = 060 const duration = 250061 let animationFrame: number6263 const animate = (timestamp: number) => {64 if (start === 0) start = timestamp65 const elapsed = timestamp - start66 const progress = Math.min(elapsed / duration, 1)6768 setExpandProgress(progress)6970 if (progress < 1) {71 animationFrame = requestAnimationFrame(animate)72 }73 }7475 animationFrame = requestAnimationFrame(animate)76 return () => cancelAnimationFrame(animationFrame)77 }, [mode])7879 useEffect(() => {80 if (mode !== "collapse") {81 setCollapseProgress(0)82 return83 }8485 let start = 086 const duration = 250087 let animationFrame: number8889 const animate = (timestamp: number) => {90 if (start === 0) start = timestamp91 const elapsed = timestamp - start92 const progress = Math.min(elapsed / duration, 1)9394 setCollapseProgress(progress)9596 if (progress < 1) {97 animationFrame = requestAnimationFrame(animate)98 }99 }100101// … truncated
What it pulls in
Other registry items
Files it writes
More from shadcn/ui
All 50 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| audio-player-demoaudio-player-demo | shadcn/ui | Examples | Free | no deps | |
| bar-visualizer-demobar-visualizer-demo | shadcn/ui | Examples | Free | no deps | |
| conversation-bar-democonversation-bar-demo | shadcn/ui | Examples | Free | no deps | |
| conversation-democonversation-demo | shadcn/ui | Examples | Free | no deps | |
| live-waveform-demolive-waveform-demo | shadcn/ui | Examples | Free | no deps | |
| message-demomessage-demo | shadcn/ui | Examples | Free | no deps | |
| mic-selector-demomic-selector-demo | shadcn/ui | Examples | Free | no deps | |
| orb-demoorb-demo | shadcn/ui | Examples | Free | no deps |
