Skip to content
Blinding Lights artwork
Queued01/03

Blinding Lights

The Weeknd · After Hours

Home/Components/

Mugen Liquid Player

An expandable glass record deck with real audio previews and album artwork. Track changes stay liquid inside the sleeve, the scrubber trails like rubber, and the edge beam wakes only while media is buffering or playing.

Interaction Types
Play real audio — the square sleeve rounds into a record and keeps its rotation position when paused
Change tracks — the outgoing and incoming artwork marble together at their contact seam
Drag or keyboard-seek the progress rail — its liquid thumb stretches, trails, and settles
Expand the compact deck to reveal larger artwork and an interactive up-next queue
How to use
'use client';

import { MugenLiquidPlayer } from "@/components/mugen-liquid-player";

const tracks = [{
  id: "afterimage",
  title: "Afterimage",
  artist: "Mugen Studies",
  artwork: "/music/afterimage.jpg",
  audioSrc: "/music/afterimage-preview.mp3",
  externalUrl: "https://open.spotify.com/track/...",
}];

export default function Demo() {
  return <MugenLiquidPlayer tracks={tracks} provider="spotify" />;
}
Component Props
PropTypeDefaultDescription
tracksMugenTrack[]—Track title, artist, artwork, audioSrc, and optional album/external URL
initialTracknumber0Initially selected track index
variant"default" | "compact""default"Full player or embedded preview density
provider"spotify" | "local""spotify"Provider mark shown in the status line
theme"dark" | "light""dark"Obsidian or porcelain surface treatment
autoAdvancebooleantrueAdvance to the next queued track when media ends
defaultVolumenumber0.72Initial audio volume from 0 to 1
expandablebooleanfalseAdds a control that opens the full glass deck and its up-next queue
expandedboolean—Controlled expanded state
defaultExpandedbooleanfalseInitial expanded state when uncontrolled
onTrackChange(track, index) => void—Called after a queue navigation
onPlaybackChange(playing) => void—Called from actual media play and pause events
onExpandedChange(expanded) => void—Called when the glass deck opens or closes
onLikeChange(track: MugenTrack, liked: boolean) => void—Called when a track is liked or unliked