{"version":3,"file":"FeatureCard.CGQgmjNc.mjs","names":["useState","useRef","useCallback","useMemo"],"sources":["https:/framerusercontent.com/modules/tbHqRRNqBnhOEy0vCDvK/lhOG48AAGaURSRoTs3gW/FeatureCard.js"],"sourcesContent":["// FeatureCard.tsx – parallax tilt, optional CTA link, adjustable icon size\n// @framerIntrinsicWidth 376\n// @framerIntrinsicHeight 316\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,useRef,useCallback,startTransition,useEffect,useMemo}from\"react\";import{addPropertyControls,ControlType}from\"framer\";export default function FeatureCard({heading=\"Feature Title\",body=\"Short description of the feature goes here.\",accentBg=\"rgba(88,70,246,.10)\",headingColor=\"#0F0F0F\",textColor=\"#667085\",iconImage,iconSize=84,maxTilt=6,padding=32,gap=24,headingFont=\"Inter, sans-serif\",bodyFont=\"Inter, sans-serif\",linkEnabled=true,linkLabel=\"Learn more →\",linkUrl=\"https://example.com\",style}){/* ---------- state & refs --------------------------------------- */const isLinkActive=linkEnabled&&linkUrl.trim().length>0;const[pressed,setPressed]=useState(false);const pressTimer=useRef(null);const cardRef=useRef(null);const frame=useRef(null);/* ---------- tap feedback --------------------------------------- */const handleDown=()=>{if(!isLinkActive)return;startTransition(()=>setPressed(true));if(pressTimer.current)clearTimeout(pressTimer.current);pressTimer.current=window.setTimeout(()=>setPressed(false),80);};const handleUp=()=>{if(!isLinkActive)return;setPressed(false);if(pressTimer.current)clearTimeout(pressTimer.current);};/* ---------- parallax tilt -------------------------------------- */const applyTilt=useCallback(e=>{if(e.pointerType===\"touch\"||!cardRef.current)return;const{left,top,width,height}=cardRef.current.getBoundingClientRect();const relX=(e.clientX-left-width/2)/(width/2);const relY=(e.clientY-top-height/2)/(height/2);const rotY=relX*maxTilt;const rotX=-relY*maxTilt;if(frame.current)cancelAnimationFrame(frame.current);frame.current=requestAnimationFrame(()=>{if(!cardRef.current)return;const scale=pressed?.97:1;cardRef.current.style.transform=`perspective(700px) rotateX(${rotX.toFixed(2)}deg) rotateY(${rotY.toFixed(2)}deg) scale(${scale})`;});},[maxTilt,pressed]);const resetTilt=()=>{if(frame.current)cancelAnimationFrame(frame.current);if(cardRef.current)cardRef.current.style.transform=pressed?\"scale(.97)\":\"\";};useEffect(()=>()=>{if(frame.current)cancelAnimationFrame(frame.current);},[]);/* ---------- fallback icon -------------------------------------- */const fallbackSVG=useMemo(()=>`<svg width=\"${iconSize}\" height=\"${iconSize}\" viewBox=\"0 0 84 84\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g stroke=\"${headingColor}\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><ellipse cx=\"42\" cy=\"22\" rx=\"24\" ry=\"10\"/><path d=\"M18 22v28c0 5.5 10.7 10 24 10s24-4.5 24-10V22\"/></g></svg>`,[headingColor,iconSize]);/* ---------- render ---------------------------------------------- */return /*#__PURE__*/_jsxs(\"div\",{ref:cardRef,\"aria-label\":`${heading} feature card`,style:{background:accentBg,borderRadius:22,padding,width:\"100%\",height:\"100%\",boxSizing:\"border-box\",display:\"flex\",flexDirection:\"column\",gap,cursor:isLinkActive?\"pointer\":\"default\",transition:\"box-shadow .18s cubic-bezier(.4,0,.2,1)\",boxShadow:pressed?\"0 4px 14px rgba(0,0,0,.08)\":undefined,...style},tabIndex:0,onPointerDown:handleDown,onPointerUp:handleUp,onPointerLeave:()=>{handleUp();resetTilt();},onPointerMove:applyTilt,children:[/*#__PURE__*/_jsx(\"div\",{style:{width:iconSize,height:iconSize},children:iconImage?/*#__PURE__*/_jsx(\"img\",{src:iconImage,width:iconSize,height:iconSize,alt:\"\",style:{objectFit:\"contain\",pointerEvents:\"none\"}}):/*#__PURE__*/_jsx(\"span\",{dangerouslySetInnerHTML:{__html:fallbackSVG},\"aria-hidden\":\"true\",style:{display:\"inline-block\",width:\"100%\",height:\"100%\"}})}),/*#__PURE__*/_jsx(\"h6\",{style:{fontFamily:headingFont,fontWeight:600,fontSize:20,lineHeight:\"28px\",color:headingColor,margin:0},children:heading}),/*#__PURE__*/_jsx(\"p\",{style:{fontFamily:bodyFont,fontWeight:400,fontSize:14,lineHeight:\"22px\",color:textColor,margin:0,maxWidth:280},children:body}),isLinkActive&&/*#__PURE__*/_jsx(\"a\",{href:linkUrl,target:\"_blank\",rel:\"noopener noreferrer\",style:{marginTop:\"auto\",fontFamily:bodyFont,fontSize:14,fontWeight:500,color:headingColor,textDecoration:\"none\",opacity:.9},children:linkLabel})]});}/* ---------- property controls ------------------------------------ */addPropertyControls(FeatureCard,{heading:{type:ControlType.String,title:\"Heading\"},body:{type:ControlType.String,title:\"Body\",displayTextArea:true},accentBg:{type:ControlType.Color,title:\"Background\"},headingColor:{type:ControlType.Color,title:\"Heading Color\"},textColor:{type:ControlType.Color,title:\"Text Color\"},iconImage:{type:ControlType.Image,title:\"Icon Image\",allowedFileTypes:[\"svg\",\"png\"]},iconSize:{type:ControlType.Number,title:\"Icon Size\",min:40,max:160,defaultValue:84,step:4},maxTilt:{type:ControlType.Number,title:\"Max Tilt\\xb0\",min:2,max:12,defaultValue:6,step:.5},padding:{type:ControlType.Number,title:\"Padding\",min:8,max:64,defaultValue:32,step:2},gap:{type:ControlType.Number,title:\"Inner Gap\",min:8,max:48,defaultValue:24,step:2},headingFont:{type:ControlType.String,title:\"Heading Font\",defaultValue:\"Inter, sans-serif\"},bodyFont:{type:ControlType.String,title:\"Body Font\",defaultValue:\"Inter, sans-serif\"},linkEnabled:{type:ControlType.Boolean,title:\"Enable Link\",defaultValue:true},linkLabel:{type:ControlType.String,title:\"Link Text\",defaultValue:\"Learn more →\",hidden:props=>!props.linkEnabled},linkUrl:{type:ControlType.String,title:\"Link URL\",defaultValue:\"https://example.com\",hidden:props=>!props.linkEnabled}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FeatureCard\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./FeatureCard.map"],"mappings":"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"}