{"version":3,"file":"FeatureCard.DhzjTUbQ.mjs","names":[],"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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"}