{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "transcript-viewer-demo", "registryDependencies": [ "https://ui.elevenlabs.io/r/transcript-viewer.json", "https://ui.elevenlabs.io/r/scrub-bar.json" ], "files": [ { "path": "examples/transcript-viewer-demo.tsx", "content": "\"use client\"\n\nimport { useEffect, useState } from \"react\"\nimport { PauseIcon, PlayIcon } from \"lucide-react\"\n\nimport {\n TranscriptViewerAudio,\n TranscriptViewerContainer,\n TranscriptViewerPlayPauseButton,\n TranscriptViewerScrubBar,\n TranscriptViewerWords,\n type CharacterAlignmentResponseModel,\n} from \"@/components/ui/transcript-viewer\"\n\nimport { Skeleton } from \"../ui/skeleton\"\n\nconst TranscriptViewerDemo = () => {\n const audioSrc = \"/sounds/transcript-viewer/transcript-viewer-audio.mp3\"\n const [alignment, setAlignment] = useState<\n CharacterAlignmentResponseModel | undefined\n >(undefined)\n\n useEffect(() => {\n fetch(\"/sounds/transcript-viewer/transcript-viewer-alignment.json\")\n .then((res) => res.json())\n .then((data) => setAlignment(data))\n }, [])\n\n return (\n
\n \n \n {alignment ? (\n <>\n \n
\n \n
\n \n ) : (\n
\n \n \n \n
\n \n \n
\n
\n )}\n \n {({ isPlaying }) => (\n <>\n {isPlaying ? (\n <>\n Pause\n \n ) : (\n <>\n Play\n \n )}\n \n )}\n \n \n
\n )\n}\nexport default TranscriptViewerDemo\n", "type": "registry:example" } ], "type": "registry:example" }