Node.js 18.x / 20+ is required.
Tested on React 18.2.0 and NextJS 14.1.0.
npm install @madzadev/audio-player
import Player from "@madzadev/audio-player";
import "@madzadev/audio-player/dist/index.css";
const tracks = [
{
url: "https://audioplayer.madza.dev/Madza-Chords_of_Life.mp3",
title: "Madza - Chords of Life",
tags: ["house"],
},
{
url: "https://audioplayer.madza.dev/Madza-Late_Night_Drive.mp3",
title: "Madza - Late Night Drive",
tags: ["dnb"],
},
{
url: "https://audioplayer.madza.dev/Madza-Persistence.mp3",
title: "Madza - Persistence",
tags: ["dubstep"],
},
];
<Player trackList={tracks} />
The only mandatory prop is trackList
for audio source.
It requires to pass in an array consisting of objects with url
, title
and tags
keys.
There are multiple optional props you can use to configure the player.
The default values of them are displayed below.
<Player
trackList={tracks}
includeTags={true}
includeSearch={true}
showPlaylist={true}
sortTracks={true}
autoPlayNextTrack={true}
/>
You can customize the design of the player by editing the colors
object below.
Include only those properties, that you want to customize.
const colors = {
tagsBackground: "#3e32e4",
tagsText: "#ffffff",
tagsBackgroundHoverActive: "#6e65f1",
tagsTextHoverActive: "#ffffff",
searchBackground: "#18191f",
searchText: "#ffffff",
searchPlaceHolder: "#575a77",
playerBackground: "#18191f",
titleColor: "#ffffff",
timeColor: "#ffffff",
progressSlider: "#3e32e4",
progressUsed: "#ffffff",
progressLeft: "#151616",
bufferLoaded: "#1f212b",
volumeSlider: "#3e32e4",
volumeUsed: "#ffffff",
volumeLeft: "#151616",
playlistBackground: "#18191f",
playlistText: "#575a77",
playlistBackgroundHoverActive: "#18191f",
playlistTextHoverActive: "#ffffff",
};
<Player trackList={tracks} customColorScheme={colors} />
The audio files can be stored and accessed both locally in your project via file path (e.g., public/yourtrack.mp3
) or using external host and providing direct URL to the source (e.g., https://website.com/yourtrack.mp3
).
This project is under MIT license, so be free to check it out and contribute!