{"version":3,"file":"StructuredData.D19mQS9j.mjs","names":["React.useMemo"],"sources":["https:/framerusercontent.com/modules/Vh8juNHd3nW04bxYWJ0L/MOJqMDLORkD0ga1D9jTF/StructuredData.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";// StructuredData (the seo owner, 2026-10-20): writes one <script type=\"application/ld+json\"> into the page's\n// server-rendered HTML, from the JSON in its \"JSON-LD\" text control, so search engines and AI assistants read who\n// makes the page and what it is about (schema.org). It draws nothing on the published page.\n//\n// Placement: one instance per page, as a direct child of the Desktop breakpoint frame, absolute at the top left, with\n// no override on the Tablet or Phone copy. Framer then renders it once in the HTML for every width; an override on a\n// copy (hidden, moved, other JSON) makes Framer write it once per breakpoint. Check the published HTML after a change:\n//   curl -s <page> | grep -c 'application/ld+json'   (must print 1)\n//\n// The JSON is parsed and written again in one line, with <, > and & escaped, so a text inside it can never close the\n// script. JSON that does not parse writes nothing on the site, and the canvas says so.\n/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n * @framerIntrinsicWidth 160\n * @framerIntrinsicHeight 28\n */export default function StructuredData(props){const{json=\"\"}=props;const out=React.useMemo(()=>{const src=json.trim();if(!src)return{ok:false,text:\"\",why:\"empty\"};try{const text=JSON.stringify(JSON.parse(src)).replace(/</g,\"\\\\u003c\").replace(/>/g,\"\\\\u003e\").replace(/&/g,\"\\\\u0026\").split(String.fromCharCode(8232)).join(\"\\\\u2028\").split(String.fromCharCode(8233)).join(\"\\\\u2029\");return{ok:true,text,why:\"\"};}catch(e){return{ok:false,text:\"\",why:String(e?.message||e).slice(0,80)};}},[json]);const onCanvas=RenderTarget.current()===RenderTarget.canvas;return /*#__PURE__*/_jsxs(\"div\",{\"aria-hidden\":\"true\",style:{...props.style,pointerEvents:\"none\"},children:[out.ok?/*#__PURE__*/_jsx(\"script\",{type:\"application/ld+json\",dangerouslySetInnerHTML:{__html:out.text}}):null,onCanvas?/*#__PURE__*/_jsx(\"div\",{style:{display:\"inline-flex\",alignItems:\"center\",height:28,padding:\"0 12px\",borderRadius:999,background:\"rgba(255,255,255,0.08)\",color:out.ok?\"#878789\":\"#f5f5f7\",font:\"500 13px/1 Inter, sans-serif\",whiteSpace:\"nowrap\"},children:out.ok?\"Structured data\":`Structured data: ${out.why===\"empty\"?\"no JSON\":\"JSON does not parse\"}`}):null]});}addPropertyControls(StructuredData,{json:{type:ControlType.String,title:\"JSON-LD\",displayTextArea:true,defaultValue:\"\",description:\"One schema.org JSON-LD object. Written once into the page's HTML; nothing shows on the page.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"StructuredData\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerIntrinsicWidth\":\"160\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"28\",\"framerSupportedLayoutHeight\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./StructuredData.map"],"mappings":"oLAgBG,SAAwB,EAAe,EAAM,CAAC,GAAK,CAAC,OAAK,IAAI,EAAY,EAAIA,MAAkB,CAAC,IAAM,EAAI,EAAK,KAAK,EAAE,GAAG,CAAC,EAAI,MAAM,CAAC,GAAG,GAAM,KAAK,GAAG,IAAI,OAAO,EAAE,GAAG,CAAsN,MAAM,CAAC,GAAG,GAAK,KAAzN,KAAK,UAAU,KAAK,MAAM,CAAG,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,QAAyB,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,MAAM,QAAyB,CAAC,CAAC,KAAK,SAA6B,EAAE,IAAI,EAAE,CAAE,OAAO,EAAE,CAAC,MAAM,CAAC,GAAG,GAAM,KAAK,GAAG,IAAI,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAE,CAAC,EAAE,CAAC,CAAI,CAAC,EAAQ,EAAS,EAAa,QAAQ,IAAI,EAAa,OAAO,OAAoB,EAAM,MAAM,CAAC,cAAc,OAAO,MAAM,CAAC,GAAG,EAAM,MAAM,cAAc,MAAM,EAAE,SAAS,CAAC,EAAI,GAAgB,EAAK,SAAS,CAAC,KAAK,sBAAsB,wBAAwB,CAAC,OAAO,EAAI,IAAI,CAAC,CAAC,EAAE,KAAK,EAAsB,EAAK,MAAM,CAAC,MAAM,CAAC,QAAQ,cAAc,WAAW,SAAS,OAAO,GAAG,QAAQ,SAAS,aAAa,IAAI,WAAW,yBAAyB,MAAM,EAAI,GAAG,UAAU,UAAU,KAAK,+BAA+B,WAAW,QAAQ,EAAE,SAAS,EAAI,GAAG,kBAAkB,oBAAoB,EAAI,MAAM,QAAQ,UAAU,uBAAuB,CAAC,EAAE,IAAI,CAAC,CAAC,CAAE,iBAhB/jC,IAA4B,IAAiE,EAgBm+B,EAAoB,EAAe,CAAC,KAAK,CAAC,KAAK,EAAY,OAAO,MAAM,UAAU,gBAAgB,GAAK,aAAa,GAAG,YAAY,8FAA8F,CAAC,CAAC"}