{"version":3,"file":"SharpImage.bu--khqF.mjs","names":[],"sources":["https:/framerusercontent.com/modules/6rv71x683aHPf7BBBx07/Zmt7qKPSahx7QbTkh8Iq/SharpImage.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";/**\n * Full-resolution image.\n *\n * Framer renders a Frame's `fill` image through its own <img>, which decodes at\n * roughly 1x the CSS width — so photos look soft on a retina screen. A plain\n * <img> pointed at the same Framer CDN URL decodes at full size, so this\n * component simply renders one, with an explicit srcset so phones still get a\n * smaller file.\n *\n * Drop it inside the existing image frame at 100% x 100% and clear that frame's\n * fill. The frame keeps its size, radius and appear animation.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 300\n * @framerDisableUnlink\n */export default function SharpImage(props){const{image,src=\"\",alt=\"\",position=\"center\",radius=0,style}=props;// `image` is a real Image control, so it can be bound to a Framer image\n// variable (that is how the service cards feed their photo in). `src`\n// stays for plain URL use. Whichever is set wins, image first.\nconst resolved=image&&(typeof image===\"string\"?image:image.src)||src;const resolvedAlt=alt||image&&typeof image!==\"string\"&&(image.altText||image.alt)||\"\";// NO srcset / sizes, deliberately.\n//\n// Framer's image CDN honours the Sec-CH-Width client hint and serves\n// exactly that many pixels, ignoring devicePixelRatio. A `sizes`\n// attribute makes Chromium send that hint, so the CDN returns a 1x file\n// and the photo looks soft on a retina screen — which is why every\n// Frame-fill image on this site measured 1.00x.\n//\n// With no sizes attribute the hint is not sent and the CDN returns the\n// original. These are AVIF at ~60-130KB, so serving one file to every\n// device is the right trade for a photo that is otherwise visibly soft.\nconst base=String(resolved).split(\"?\")[0];return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",overflow:\"hidden\",borderRadius:radius,...style},children:base?/*#__PURE__*/_jsx(\"img\",{src:base,alt:resolvedAlt,decoding:\"async\",style:{display:\"block\",width:\"100%\",height:\"100%\",objectFit:\"cover\",objectPosition:position,borderRadius:\"inherit\"}}):null});}addPropertyControls(SharpImage,{image:{type:ControlType.Image,title:\"Image\"},src:{type:ControlType.String,title:\"Image URL\",defaultValue:\"\"},alt:{type:ControlType.String,title:\"Alt text\",defaultValue:\"\"},position:{type:ControlType.String,title:\"Focus\",defaultValue:\"center\",description:\"object-position, e.g. 'center', 'top', '50% 30%'\"},radius:{type:ControlType.Number,title:\"Radius\",defaultValue:0,min:0,max:100,step:1}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SharpImage\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"300\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerDisableUnlink\":\"\",\"framerIntrinsicWidth\":\"400\",\"framerSupportedLayoutHeight\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SharpImage.map"],"mappings":"4JAiBG,SAAwB,EAAW,EAAM,CAAC,GAAK,CAAC,QAAM,MAAI,GAAG,MAAI,GAAG,WAAS,SAAS,SAAO,EAAE,SAAO,EAGnG,EAAS,IAAQ,OAAO,GAAQ,SAAS,EAAM,EAAM,MAAM,EAAU,EAAY,GAAK,GAAO,OAAO,GAAQ,WAAW,EAAM,SAAS,EAAM,MAAM,GAWlJ,EAAK,OAAO,CAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,OAAoB,EAAK,MAAM,CAAC,MAAM,CAAC,MAAM,OAAO,OAAO,OAAO,SAAS,SAAS,aAAa,EAAO,GAAG,CAAK,EAAE,SAAS,EAAkB,EAAK,MAAM,CAAC,IAAI,EAAK,IAAI,EAAY,SAAS,QAAQ,MAAM,CAAC,QAAQ,QAAQ,MAAM,OAAO,OAAO,OAAO,UAAU,QAAQ,eAAe,EAAS,aAAa,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAE,iBA/BhU,IAAoD,EA+B6Q,EAAoB,EAAW,CAAC,MAAM,CAAC,KAAK,EAAY,MAAM,MAAM,OAAO,EAAE,IAAI,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,aAAa,EAAE,EAAE,IAAI,CAAC,KAAK,EAAY,OAAO,MAAM,WAAW,aAAa,EAAE,EAAE,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,QAAQ,aAAa,SAAS,YAAY,kDAAkD,EAAE,OAAO,CAAC,KAAK,EAAY,OAAO,MAAM,SAAS,aAAa,EAAE,IAAI,EAAE,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC"}