Components
A sophisticated React component for displaying music portfolios, discographies, or creative project collections with stunning interactive effects. Features include text scrambling animations on hover using GSAP, dynamic background image transitions, automatic idle animations, and full support for system dark/light themes. Perfect for musicians, record labels, music producers, or creative agencies looking to showcase their work in an engaging, modern interface. The component offers a minimalist grid layout that transforms into an immersive visual experience through smooth animations and hover interactions
npx shadcn@latest add https://21st.dev/r/lovesickfromthe6ix/music-portfolioLoading preview...
import MusicPortfolio from "@/components/ui/music-portfolio";
export default function DemoOne() {
const projectsData = [
{
id: 1,
artist: "YOUNG BROKE & LONELY",
album: "LONELY BOY",
category: "SINGLE",
label: "SELF RELEASED",
year: "2024",
image: "https://i.pinimg.com/736x/9f/10/23/9f1023c3785097536e164d3ef7ac9fb6.jpg"
},
{
id: 2,
artist: "YOUNG BROKE & LONELY",
album: "IN YOUR MEMORY",
category: "SINGLE",
label: "SELF RELEASED",
year: "2024",
image: "https://i.pinimg.com/736x/bf/f0/4d/bff04d662db206377de801ec0bc42804.jpg"
},
{
id: 3,
artist: "YOUNG BROKE & LONELY",
album: "WHO AM I?",
category: "SINGLE",
label: "SELF RELEASED",
year: "2023",
image: "https://i.pinimg.com/736x/90/cf/ec/90cfec4c5230978dba450909c676fd42.jpg"
},
{
id: 4,
artist: "YOUNG BROKE & LONELY",
album: "SINGLE MOM",
category: "SINGLE",
label: "SELF RELEASED",
year: "2023",
image: "https://i.pinimg.com/736x/8a/9d/06/8a9d06bccabc53834aa311fb3beb75f6.jpg"
},
{
id: 5,
artist: "YOUNG BROKE & LONELY",
album: "GHOST",
category: "SINGLE",
label: "SELF RELEASED",
year: "2023",
image: "https://i.pinimg.com/1200x/99/0d/93/990d93d257f1f31ac12fbd161b29da8b.jpg"
},
{
id: 6,
artist: "YOUNG BROKE & LONELY",
album: "DIFFICULTY",
category: "SINGLE",
label: "SELF RELEASED",
year: "2022",
image: "https://i.pinimg.com/1200x/1c/17/6b/1c176b16985212a93a950d61793b7e18.jpg"
},
// ... more projects
];
const config = {
timeZone: "America/New_York",
timeUpdateInterval: 1000,
idleDelay: 4000,
debounceDelay: 100
};
const socialLinks = {
spotify: "https://spotify.com/your-profile",
email: "mailto:your-email@example.com",
x: "https://x.com/your-handle"
};
const location = {
latitude: "40.7128° N",
longitude: "74.0060° W",
display: true
};
const callbacks = {
onProjectHover: (project) => console.log('Hovering:', project),
onProjectLeave: () => console.log('Left project'),
onContainerLeave: () => console.log('Left container'),
onIdleStart: () => console.log('Idle animation started'),
onThemeChange: (theme) => console.log(`Theme changed to: ${theme}`)
};
return (
<MusicPortfolio
PROJECTS_DATA={projectsData}
CONFIG={config}
SOCIAL_LINKS={socialLinks}
LOCATION={location}
CALLBACKS={callbacks}
/>
);
}