Audio Player
sv11-twango/audio-playerFreeComponent
A compound audio player with play/pause, progress scrubbing, duration, time, and playback-speed controls.
Live preview
live · rendered by the registry
Rendered by sv11-twango on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add http://sv11.ui.twango.dev/r/audio-player.jsonSource
1<script lang="ts" module>2 import type { Snippet } from "svelte";34 export type AudioPlayerProps = {5 /**6 * Sub-components that read the shared player state via context7 * (e.g. `<AudioPlayer.Button />`, `<AudioPlayer.Progress />`).8 */9 children?: Snippet;10 };11</script>1213<script lang="ts">14 import { setAudioPlayer } from "./context.svelte.js";1516 let { children }: AudioPlayerProps = $props();1718 const player = setAudioPlayer();1920 let audioEl: HTMLAudioElement | null = $state(null);2122 $effect(() => {23 player.audio = audioEl;24 });2526 $effect(() => {27 let raf: number | null = null;28 const tick = () => {29 const el = player.audio;30 if (el) {31 player.time = el.currentTime;32 player.readyState = el.readyState;33 player.networkState = el.networkState;34 player.paused = el.paused;35 player.error = el.error;36 player.playbackRate = el.playbackRate;37 const d = el.duration;38 if (Number.isFinite(d) && player.duration !== d) {39 player.duration = d;40 }41 }42 raf = requestAnimationFrame(tick);43 };44 raf = requestAnimationFrame(tick);45 return () => {46 if (raf !== null) cancelAnimationFrame(raf);47 };48 });49</script>5051<audio52 bind:this={audioEl}53 data-slot="audio-player"54 ondurationchange={(e) => {55 const d = e.currentTarget.duration;56 player.duration = Number.isFinite(d) ? d : undefined;57 }}58 onloadedmetadata={(e) => {59 const d = e.currentTarget.duration;60 player.duration = Number.isFinite(d) ? d : undefined;61 }}62 onplay={() => (player.paused = false)}63 onpause={() => (player.paused = true)}64 onerror={() => (player.error = audioEl?.error ?? null)}65 class="hidden"66 crossorigin="anonymous"67></audio>68{@render children?.()}
What it pulls in
npm packages
Other registry items
More from sv11-twango
All 29 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Bar Visualizerbar-visualizer | sv11-twango | Components | Free | no deps | |
| Conversationconversation | sv11-twango | Components | Free | 2 deps | |
| Conversation Barconversation-bar | sv11-twango | Components | Free | 1 dep | |
| Live Waveformlive-waveform | sv11-twango | Components | Free | no deps | |
| Matrixmatrix | sv11-twango | Components | Free | no deps | |
| Messagemessage | sv11-twango | Components | Free | 2 deps | |
| Mic Selectormic-selector | sv11-twango | Components | Free | 1 dep | |
| Orborb | sv11-twango | Components | Free | 4 deps |
