PageSourceSearch

https://badcopbadcopmusic.com/assets/Music-BaVUCpR8.js

js badcopbadcopmusic.com collected 2026-10-07 11:12:45 UTC 6,394 bytes, 1 lines download raw bytes

1import{j as e,e as a}from"./ui-_Sz9abWb.js";import{r as s}from"./vendor-CE3ienG7.js";import{t,u as l,N as i,a as o,B as r,S as c}from"./index-BVo1QWX0.js";import{m as d}from"./motion-nMRbpUIt.js";import{k as n,l as p,B as m}from"./shadcn-ui-ClWfs4uY.js";const b=()=>e.jsx(d.div,{className:"w-full max-w-4xl mx-auto mb-12 text-center",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.6},children:e.jsx("h1",{className:"text-5xl font-bold mb-4 text-black neon-glow font-calder-dark-grit-shadow",children:"MUSIC"})});var f=s.forwardRef(((s,t)=>{const{ratio:l=1,style:i,...o}=s;return e.jsx("div",{style:{position:"relative",width:"100%",paddingBottom:100/l+"%"},"data-radix-aspect-ratio-wrapper":"",children:e.jsx(a.div,{...o,ref:t,style:{...i,position:"absolute",top:0,right:0,bottom:0,left:0}})})}));f.displayName="AspectRatio";const h=f,x=({album:a})=>{const[l,i]=s.useState(!1),[o,r]=s.useState(!1);return e.jsx(d.div,{variants:{hidden:{opacity:0,y:20},visible:{opacity:1,y:0,transition:{duration:.5}}},className:"h-full",children:e.jsx(n,{className:"bg-[#1f2b41]/50 backdrop-blur-sm border-[#45a9a3] h-full transition-all duration-300 hover:shadow-[0_0_15px_rgba(126,205,232,0.5)] vintage-border overflow-hidden",children:e.jsxs("div",{className:"flex flex-col h-full",children:[e.jsx("div",{className:"relative group overflow-hidden",children:e.jsxs(h,{ratio:1,className:"bg-black/20",children:[l?e.jsx("div",{className:"w-full h-full flex items-center justify-center bg-black/50 text-white",children:e.jsx(p,{className:"w-16 h-16 text-[#7ecde8]/70"})}):e.jsx("img",{src:a.cover,alt:`${a.title} album cover`,className:"w-full h-full object-cover transition-transform duration-500 group-hover:scale-105 "+(o?"opacity-100":"opacity-0"),loading:"lazy",onError:()=>{i(!0),t({title:"Image Load Error",description:`Could not load cover for "${a.title}"`,variant:"destructive"})},onLoad:()=>{r(!0)}}),!o&&!l&&e.jsx("div",{className:"absolute inset-0 flex items-center justify-center bg-black/20",children:e.jsxs("div",{className:"animate-pulse flex space-x-2",children:[e.jsx("div",{className:"w-3 h-3 bg-[#7ecde8] rounded-full"}),e.jsx("div",{className:"w-3 h-3 bg-[#7ecde8] rounded-full"}),e.jsx("div",{className:"w-3 h-3 bg-[#7ecde8] rounded-full"})]})})]})}),e.jsxs("div",{className:"p-4 pb-6",children:[e.jsx("h3",{className:"text-lg font-bold text-[#7ecde8] font-calder-dark text-center mb-3 whitespace-nowrap overflow-hidden text-ellipsis",children:a.title}),(a.releaseDate||a.label)&&e.jsxs("div",{className:"text-center text-[#f8f7f2] text-sm mb-3",children:[a.releaseDate&&e.jsx("p",{className:"opacity-90",children:a.releaseDate}),a.label&&e.jsx("p",{className:"opacity-80",children:a.label})]}),a.spotifyUrl&&e.jsx("div",{className:"flex justify-center",children:e.jsx(d.div,{initial:{scale:.8,opacity:0}
1,whileHover:{scale:1.05},whileTap:{scale:.95},animate:{scale:1,opacity:1},transition:{delay:.1},children:e.jsx("a",{href:a.spotifyUrl,target:"_blank",rel:"noopener noreferrer","aria-label":`Listen to ${a.title} on Spotify`,children:e.jsxs(m,{className:"bg-[#1DB954] hover:bg-[#1DB954]/80 text-white",children:[e.jsx(p,{className:"mr-2 h-5 w-5"}),"Listen on Spotify"]})})})})]})]})})})},u=({albums:a})=>e.jsx(d.div,{className:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-6 mb-16",initial:"hidden",animate:"visible",variants:{visible:{transition:{staggerChildren:.12}}},children:a.map((a=>e.jsx(x,{album:a},a.id)))}),v=[{id:1,title:"LIGHTEN UP",cover:"/lovable-uploads/adb94d69-c813-4a7c-991e-a7339b3822d9.png",description:"Lighten Up - Latest release from Bad Cop / Bad Cop",spotifyUrl:"https://open.spotify.com/artist/226ZwHRFmxyMqgXCoEkUbq?si=nnFPPmqdSTaN8Fb1bOjKaA",releaseDate:"September 19, 2025",label:"Fat Wreck Chords"},{id:7,title:"SAFE AND LEGAL",cover:"/lovable-uploads/ba36148a-1c12-4c4d-a224-4c00fe451c20.png",description:"Safe and Legal - Political punk anthems",spotifyUrl:"https://open.spotify.com/album/7iT34l51vHsGJ40fMvZpDA?si=fDZS6tXRTlKld6MRN67yOg",releaseDate:"October 10, 2023",label:"Fat Wreck Chords"},{id:6,title:"SHATTERED",cover:"/lovable-uploads/4270680b-3452-47a9-8464-8d04f693291d.png",description:"Shattered - Intense punk rock experience",spotifyUrl:"https://open.spotify.com/album/8M5GhQrJhJdJfgKJh",releaseDate:"July 25, 2023",label:"Fat Wreck Chords"},{id:2,title:"THE RIDE",cover:"/lovable-uploads/d9ca2695-cf9b-4ae8-a44b-0a1d9e4b8d43.png",description:"The latest album from Bad Cop / Bad Cop",spotifyUrl:"https://open.spotify.com/album/08vbfB41sIipROtvXj9LWD?si=JUpc8o__SaSP3r_xzm4XrQ",releaseDate:"June 19, 2020",label:"Fat Wreck Chords"},{id:4,title:"BAD COP BAD COP (EP)",cover:"/lovable-uploads/c49e3a08-23fc-492d-8bf7-5a8be1e1d37c.png",description:"Bad Cop/Bad Cop EP - Raw and honest punk rock",spotifyUrl:"https://open.spotify.com/album/5P8FCVplZCiFMMTqLVmqGi?si=xtPRAt-CTgC21vYgPKxPWA",releaseDate:"April 26, 2019",label:"Fat Wreck Chords"},{id:3,title:"WARRIORS",cover:"/lovable-uploads/977cb8fb-40b1-44e6-ba30-13505dad4700.png",description:"Warriors - A powerful collection of punk anthems",spotifyUrl:"https://open.spotify.com/album/2PNMwU8deGSm3ZylzdOcZQ?si=NUefv0UjScylwCENeq0emQ",releaseDate:"June 16, 2017",label:"Fat Wreck Chords"},{id:4,title:"NOT SORRY",cover:"/lovable-uploads/5a1aecca-fc24-48be-94c2-d856ec8621b7.png",description:"Not Sorry - Raw and honest punk rock",spotifyUrl:"https://open.spotify.com/album/1UiOKBVFYQiT0yPym5MVvm?si=uc6WdxlKTbq6QfpEVv_ipA",releaseDate:"June 16, 2015",label:"Fat Wreck Chords"},{id:5,title:"BOSS LADY (EP)",cover:"/lovable-uploads/07cf4b58-c150-4a6e-878f-1335af11a5b9.png",description:"Boss Lady EP - Empowering punk rock anthems",spotifyUrl:"https://open.spotify.com/album/2L8YYffmOHcQBMdFY01lHn?si=tpGiZG_VTC-FyS3XRWnQng",releaseDate:"May 13, 2014",label:"Fat Wreck Chords"}],g=()=>e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-6 mb-16",children:[...Array(8)].map(((a,s)=>e.jsx("div",{className:"bg-[#1f2b41]/30 rounded-lg h-[300px] animate-pulse"},s)))}),y=()=>{const a=l();return e.jsxs("div",{className:"min-h-screen text-[#f8f7f2]",children:[e.jsx(i,{}),e.jsx(o,{}),e.jsxs("div",{className:"pt-40 md:pt-48 container mx-auto px-4 relative z-40",children:[e.jsx(b,{}),e.jsx(s.Suspense,{fallback:e.jsx(g,{}),children:e.jsx(u,{albums:v})}),!a&&e.jsx(r,{})]}),e.jsx(c,{})]})};export{y as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.