{"version":3,"file":"CardStack_2.BKLPzvt4.mjs","names":["React.useState","React.useCallback"],"sources":["https:/framerusercontent.com/modules/vT1rRLxGjXoeIGmk1Epd/YZHadCZKQyhNNyOOGUaw/CardStack_2.js"],"sourcesContent":["// CardStack component for Framer with image upload and reordering\nimport{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{motion}from\"framer-motion\";import{addPropertyControls,ControlType}from\"framer\";/**\n * CardStack\n *\n * A stack of cards with images that can be uploaded and rearranged in Framer Studio.\n *\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n * @framerIntrinsicWidth 352\n * @framerIntrinsicHeight 198\n */let idCounter=0;const genId=()=>`card_${Date.now().toString(36)}_${idCounter++}`;function toObjList(arr){return(arr.length?arr:[placeholderImage]).map(img=>{if(typeof img===\"string\")return{id:genId(),src:img,alt:\"\"};if(img&&typeof img===\"object\"&&img.src)return{id:genId(),...img};return{id:genId(),src:placeholderImage.src,alt:placeholderImage.alt};});}const placeholderImage={src:\"data:image/svg+xml;utf8,\"+encodeURIComponent(`<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 90'><rect fill='#ddd' width='160' height='90'/><path d='M0 0L160 90M160 0L0 90' stroke='#aaa' stroke-width='4'/></svg>`),alt:\"Placeholder\"};export default function CardStack(props){const{images=[],offset=10,scaleStep=.06,dimStep=.15,stiff=170,damp=26,style={},...rest}=props;const[cards,setCards]=React.useState(toObjList(images));const[isDragging,setIsDragging]=React.useState(false);React.useEffect(()=>{const prev=cards.slice();const next=[];const srcList=images.length?images:[placeholderImage];srcList.forEach(img=>{const src=typeof img===\"string\"?img:img.src;const idx=prev.findIndex(c=>c.src===src);if(idx>-1){next.push(prev.splice(idx,1)[0]);}else{if(typeof img===\"object\"&&img.src)next.push({id:genId(),...img});else next.push({id:genId(),src,alt:\"\"});}});setCards(next);// eslint-disable-next-line\n},[JSON.stringify(images)]);const moveToEnd=React.useCallback(i=>{setCards(prev=>[...prev.slice(i+1),prev[i]]);},[]);// Auto-rotate cards every 3 seconds\nReact.useEffect(()=>{const interval=setInterval(()=>{if(!isDragging&&cards.length>1){moveToEnd(0);}},2e3);return()=>clearInterval(interval);},[cards.length,isDragging,moveToEnd]);const handleCardClick=React.useCallback(index=>{if(!isDragging){moveToEnd(index);}},[isDragging,moveToEnd]);const spring=stiff||damp?{type:\"spring\",stiffness:stiff,damping:damp,mass:.5}:undefined;const wrapperStyle={...style,position:\"relative\",width:style.width??250,aspectRatio:props.ratio??\"16 / 9\",overflow:\"visible\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",zIndex:0};delete wrapperStyle.height;return /*#__PURE__*/_jsx(\"div\",{...rest,style:wrapperStyle,children:/*#__PURE__*/_jsx(\"ul\",{style:{position:\"relative\",width:\"100%\",height:\"100%\",margin:0,padding:0},children:cards.map(({id,src,alt},i)=>{const front=i===0;const brightness=Math.max(.1,1-i*dimStep);const baseZ=cards.length-i;const isVisible=i<3;if(!isVisible)return null;return /*#__PURE__*/_jsx(motion.li,{layout:true,style:{position:\"absolute\",width:\"100%\",height:\"100%\",borderRadius:props.borderRadius??8,listStyle:\"none\",cursor:front?\"grab\":\"default\",overflow:\"hidden\",touchAction:\"none\",zIndex:baseZ},animate:{top:`${i*offset}%`,scale:1-i*scaleStep,filter:`brightness(${brightness})`},transition:spring,drag:front?\"y\":false,dragConstraints:{top:0,bottom:0},dragElastic:.1,dragMomentum:false,dragTransition:{bounceStiffness:600,bounceDamping:40},onDragStart:()=>setIsDragging(true),onDragEnd:(e,info)=>{setIsDragging(false);if(Math.abs(info.offset.y)>10){moveToEnd(i);}},onClick:front?()=>handleCardClick(i):undefined,onTap:front?()=>handleCardClick(i):undefined,whileDrag:front?{zIndex:cards.length,cursor:\"grabbing\",scale:1-i*scaleStep+.05,rotate:2}:{},whileHover:front?{scale:1-i*scaleStep+.02}:{},children:/*#__PURE__*/_jsx(\"img\",{src:src,alt:alt||\"Card image\",style:{width:\"100%\",height:\"100%\",objectFit:\"cover\",pointerEvents:\"none\",display:\"block\"}})},id);})})});}addPropertyControls(CardStack,{images:{title:\"Cards\",type:ControlType.Array,control:{type:ControlType.ResponsiveImage},maxCount:10,defaultValue:[{src:\"https://framerusercontent.com/images/GfGkADagM4KEibNcIiRUWlfrR0.jpg\",alt:\"Gradient 1 - Blue\"},{src:\"https://framerusercontent.com/images/aNsAT3jCvt4zglbWCUoFe33Q.jpg\",alt:\"Gradient 2 - Purple\"}]},ratio:{title:\"Aspect Ratio\",type:ControlType.Enum,options:[\"16 / 9\",\"4 / 3\",\"1 / 1\",\"3 / 4\",\"9 / 16\"],optionTitles:[\"16:9\",\"4:3\",\"1:1\",\"3:4\",\"9:16\"],defaultValue:\"16 / 9\"},borderRadius:{title:\"Corner Radius\",type:ControlType.Number,defaultValue:8,min:0,max:64,step:1,displayStepper:true},offset:{title:\"Offset\",type:ControlType.Number,defaultValue:8,min:0,max:60,step:1,displayStepper:true,unit:\"%\",description:\"Vertical shift between cards\"},scaleStep:{title:\"Scale\",type:ControlType.Number,defaultValue:.06,min:0,max:.2,step:.005,displayStepper:true},dimStep:{title:\"Dim\",type:ControlType.Number,defaultValue:.15,min:0,max:1,step:.02,displayStepper:true},stiff:{title:\"Stiffness\",type:ControlType.Number,defaultValue:300,min:0,max:600,step:10,displayStepper:true},damp:{title:\"Damping\",type:ControlType.Number,defaultValue:35,min:0,max:60,step:2,displayStepper:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CardStack\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CardStack_2.map"],"mappings":"oOAUoF,SAAS,EAAU,EAAI,CAAC,OAAO,EAAI,OAAO,EAAI,CAAC,CAAgB,EAAA,CAAG,IAAI,GAAS,OAAO,GAAM,SAAe,CAAC,GAAG,EAAM,EAAE,IAAI,EAAI,IAAI,EAAE,EAAK,GAAK,OAAO,GAAM,UAAU,EAAI,IAAU,CAAC,GAAG,EAAM,EAAE,GAAG,CAAG,EAAQ,CAAC,GAAG,EAAM,EAAE,IAAI,EAAiB,IAAI,IAAI,EAAiB,GAAG,CAAG,CAAE,CAAiR,SAAwB,EAAU,EAAM,CAAC,GAAK,CAAC,SAAO,CAAC,EAAE,SAAO,GAAG,YAAU,IAAI,UAAQ,IAAI,QAAM,IAAI,OAAK,GAAG,QAAM,CAAC,EAAE,GAAG,GAAM,EAAW,CAAC,EAAM,GAAUA,EAAe,EAAU,CAAM,CAAC,EAAO,CAAC,EAAW,GAAeA,EAAe,EAAK,EAAE,MAAoB,CAAC,IAAM,EAAK,EAAM,MAAM,EAAQ,EAAK,CAAC,GAAgB,EAAO,OAAO,EAAO,CAAC,CAAgB,EAAA,CAAU,QAAQ,GAAK,CAAC,IAAM,EAAI,OAAO,GAAM,SAAS,EAAI,EAAI,IAAU,EAAI,EAAK,UAAU,GAAG,EAAE,MAAM,CAAG,EAAK,EAAI,GAAI,EAAK,KAAK,EAAK,OAAO,EAAI,CAAC,CAAC,CAAC,EAAE,EAAW,OAAO,GAAM,UAAU,EAAI,IAAI,EAAK,KAAK,CAAC,GAAG,EAAM,EAAE,GAAG,CAAG,CAAC,EAAO,EAAK,KAAK,CAAC,GAAG,EAAM,EAAE,MAAI,IAAI,EAAE,CAAC,CAAG,CAAC,EAAE,EAAS,CAAI,CACnvC,EAAE,CAAC,KAAK,UAAU,CAAM,CAAC,CAAC,EAAE,IAAM,EAAUC,EAAkB,GAAG,CAAC,EAAS,GAAM,CAAC,GAAG,EAAK,MAAM,EAAE,CAAC,EAAE,EAAK,EAAE,CAAC,CAAE,EAAE,CAAC,CAAC,EACnH,MAAoB,CAAC,IAAM,EAAS,gBAAgB,CAAI,CAAC,GAAY,EAAM,OAAO,GAAG,EAAU,CAAC,CAAG,EAAE,GAAG,EAAE,UAAU,cAAc,CAAQ,CAAE,EAAE,CAAC,EAAM,OAAO,EAAW,CAAS,CAAC,EAAE,IAAM,EAAgBA,EAAkB,GAAO,CAAK,GAAY,EAAU,CAAK,CAAG,EAAE,CAAC,EAAW,CAAS,CAAC,EAAQ,EAAO,GAAO,EAAK,CAAC,KAAK,SAAS,UAAU,EAAM,QAAQ,EAAK,KAAK,EAAE,EAAE,IAAA,GAAgB,EAAa,CAAC,GAAG,EAAM,SAAS,WAAW,MAAM,EAAM,OAAO,IAAI,YAAY,EAAM,OAAO,SAAS,SAAS,UAAU,QAAQ,OAAO,WAAW,SAAS,eAAe,SAAS,OAAO,CAAC,EAA6B,OAA3B,OAAO,EAAa,OAA2B,EAAK,MAAM,CAAC,GAAG,EAAK,MAAM,EAAa,SAAsB,EAAK,KAAK,CAAC,MAAM,CAAC,SAAS,WAAW,MAAM,OAAO,OAAO,OAAO,OAAO,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAM,KAAK,CAAC,KAAG,MAAI,OAAK,IAAI,CAAC,IAAM,EAAM,IAAI,EAAQ,EAAW,KAAK,IAAI,GAAG,EAAE,EAAE,CAAO,EAAQ,EAAM,EAAM,OAAO,EAAgD,OAA9B,EAAE,EAAgD,EAAK,EAAO,GAAG,CAAC,OAAO,GAAK,MAAM,CAAC,SAAS,WAAW,MAAM,OAAO,OAAO,OAAO,aAAa,EAAM,cAAc,EAAE,UAAU,OAAO,OAAO,EAAM,OAAO,UAAU,SAAS,SAAS,YAAY,OAAO,OAAO,CAAK,EAAE,QAAQ,CAAC,IAAI,GAAG,EAAE,EAAO,GAAG,MAAM,EAAE,EAAE,EAAU,OAAO,cAAc,EAAW,EAAE,EAAE,WAAW,EAAO,KAAK,EAAM,IAAI,GAAM,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,aAAa,GAAM,eAAe,CAAC,gBAAgB,IAAI,cAAc,EAAE,EAAE,gBAAgB,EAAc,EAAI,EAAE,WAAW,EAAE,IAAO,CAAC,EAAc,EAAK,EAAK,KAAK,IAAI,EAAK,OAAO,CAAC,EAAE,IAAI,EAAU,CAAC,CAAG,EAAE,QAAQ,MAAU,EAAgB,CAAC,EAAE,IAAA,GAAU,MAAM,MAAU,EAAgB,CAAC,EAAE,IAAA,GAAU,UAAU,EAAM,CAAC,OAAO,EAAM,OAAO,OAAO,WAAW,MAAM,EAAE,EAAE,EAAU,IAAI,OAAO,CAAC,EAAE,CAAC,EAAE,WAAW,EAAM,CAAC,MAAM,EAAE,EAAE,EAAU,GAAG,EAAE,CAAC,EAAE,SAAsB,EAAK,MAAM,CAAK,MAAI,IAAI,GAAK,aAAa,MAAM,CAAC,MAAM,OAAO,OAAO,OAAO,UAAU,QAAQ,cAAc,OAAO,QAAQ,OAAO,CAAC,CAAC,CAAC,EAAE,CAAE,EAAt+B,IAAw+B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,uBAXr2D,IAA4B,IAAkC,IAAoD,EASrJ,EAAU,EAAQ,MAAU,QAAQ,KAAK,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,GAAG,MAAqS,EAAiB,CAAC,IAAI,4RAAiO,IAAI,aAAa,EAE6xC,EAAoB,EAAU,CAAC,OAAO,CAAC,MAAM,QAAQ,KAAK,EAAY,MAAM,QAAQ,CAAC,KAAK,EAAY,eAAe,EAAE,SAAS,GAAG,aAAa,CAAC,CAAC,IAAI,sEAAsE,IAAI,mBAAmB,EAAE,CAAC,IAAI,oEAAoE,IAAI,qBAAqB,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,eAAe,KAAK,EAAY,KAAK,QAAQ,CAAC,SAAS,QAAQ,QAAQ,QAAQ,QAAQ,EAAE,aAAa,CAAC,OAAO,MAAM,MAAM,MAAM,MAAM,EAAE,aAAa,QAAQ,EAAE,aAAa,CAAC,MAAM,gBAAgB,KAAK,EAAY,OAAO,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,eAAe,EAAI,EAAE,OAAO,CAAC,MAAM,SAAS,KAAK,EAAY,OAAO,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,eAAe,GAAK,KAAK,IAAI,YAAY,8BAA8B,EAAE,UAAU,CAAC,MAAM,QAAQ,KAAK,EAAY,OAAO,aAAa,IAAI,IAAI,EAAE,IAAI,GAAG,KAAK,KAAK,eAAe,EAAI,EAAE,QAAQ,CAAC,MAAM,MAAM,KAAK,EAAY,OAAO,aAAa,IAAI,IAAI,EAAE,IAAI,EAAE,KAAK,IAAI,eAAe,EAAI,EAAE,MAAM,CAAC,MAAM,YAAY,KAAK,EAAY,OAAO,aAAa,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,GAAG,eAAe,EAAI,EAAE,KAAK,CAAC,MAAM,UAAU,KAAK,EAAY,OAAO,aAAa,GAAG,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,eAAe,EAAI,CAAC,CAAC"}