Track Row

Pro

List row for songs, episodes and chapters with artwork or a number, badges, progress and duration. The playing row shows live equaliser bars, and finished episodes are marked Played.

Preview

Installation

npx @lumioui/cli add pro/track-row

Usage

import { TrackEqualizer, TrackRow, TrackRowSeparator } from "@/components/ui/track-row/track-row";
<TrackRow />

Also exported: TrackEqualizer, TrackRowSeparator.

Examples

Album tracklist

An album page in neutral ink.

Audiobook chapters

A book's chapter list in teal, as one grouped inset section.

Playlist with artwork

A commute playlist in pink.

Podcast episodes

A show's episode feed in pink.

API reference

TrackEqualizer

Prop Type Default
playing* boolean

Bars move only while true; they settle into a still chord when false.

—
tone "accent" | "onArt"

accent bars on the canvas, or white bars over artwork.

"accent"
ignite boolean

Bars grow up from the baseline on mount, 60ms apart. Default false.

false
level SharedValue<number>

Receives the middle bar's height (0–1) every frame — for light that follows the music.

—
className string —

TrackRow

Prop Type Default
title* string —
subtitle string

Artist, show or book line.

—
meta string

Leading caption on the subtitle line — release date, "Chapter 4".

—
index number | string

Track number shown in the leading slot (album / chapter lists).

—
artwork ImageSourcePropType

Artwork shown in the leading slot instead of a number.

—
state TrackRowState

Now-playing state: equaliser replaces the number / covers the artwork.

"idle"
explicit boolean —
downloaded boolean —
duration number | string

Seconds, or a preformatted string ("18 min left").

—
progress number

0–1 listened progress — draws a short bar under the subtitle.

—
played boolean

Fully listened: title dims, a check replaces the number, "Played" shows.

—
titleLines number

Title line clamp. Default 1 (episode feeds use 2).

1
onPress () => void —
onMorePress () => void —
trailing React.ReactNode

Replaces the duration + more button.

—
disabled boolean —
className string —