{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/vbrgDUvfdlVk6xqzLABh/9KDvwmH3NHD0FSlXKwqY/mr6vRxJzd.js"],
  "sourcesContent": ["// Generated by Framer (dc53115)\nimport siteMetadata from\"https://framerusercontent.com/modules/b9qpNvWMS0Jck9CqeSYP/i8MAAPazsZg6ybCb6UnB/siteMetadata.js\";const toString=value=>{return typeof value===\"string\"?value:String(value);};const toImageSrc=value=>{if(typeof value===\"object\"&&value!==null&&typeof value.src===\"string\"){return value.src;}return typeof value===\"string\"?value:undefined;};export default function metadata(params,activeLocale){const uw7IrFuDU=params?.uw7IrFuDU;const ITX32fZyC=params?.ITX32fZyC;return{breakpoints:[{hash:\"x7mzp7\",mediaQuery:\"(min-width: 1158px)\"},{hash:\"4lf219\",mediaQuery:\"(min-width: 818px) and (max-width: 1157px)\"},{hash:\"9qptr1\",mediaQuery:\"(max-width: 817px)\"}],customHTMLBodyEnd:'import * as React from \"react\";\\nimport { useState } from \"react\";\\n\\nexport function PasswordGate({ passwordRequired, password }) {\\n  const [input, setInput] = useState(\"\");\\n  const [unlocked, setUnlocked] = useState(false);\\n\\n  // If no password is required, unlock immediately\\n  if (!passwordRequired) {\\n    return null; // This hides the gate entirely\\n  }\\n\\n  if (unlocked) {\\n    return null; // Also hide the gate if already unlocked\\n  }\\n\\n  return (\\n    <div style=\"{{\" padding:=\"\" \"2rem\",=\"\" textalign:=\"\" \"center\"=\"\" }}=\"\">\\n      <h2>This page is password protected</h2>\\n      <input type=\"password\" placeholder=\"Enter password\" value=\"{input}\" onchange=\"{(e)\" ==\"\"> setInput(e.target.value)}\\n        style={{\\n          padding: \"0.5rem\",\\n          fontSize: \"1rem\",\\n          marginBottom: \"1rem\",\\n          width: \"200px\"\\n        }}\\n      /&gt;\\n      <br>\\n      <button onclick=\"{()\" ==\"\"> {\\n          if (input === password) {\\n            setUnlocked(true);\\n          } else {\\n            alert(\"Incorrect password\");\\n          }\\n        }}\\n        style={{\\n          padding: \"0.5rem 1rem\",\\n          fontSize: \"1rem\",\\n          cursor: \"pointer\"\\n        }}\\n      &gt;\\n        Enter\\n      </button>\\n    </div>\\n  );\\n}\\n',description:`${uw7IrFuDU!==undefined?toString(uw7IrFuDU):\"{{uw7IrFuDU}}\"}`,elements:{},framerSearch:{index:true},robots:\"max-image-preview:large\",serializationId:\"framer-TQ573\",socialImage:toImageSrc(ITX32fZyC),title:siteMetadata(params,activeLocale).title||\"Projects Detail\",viewport:\"width=device-width\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],
  "mappings": "yCAC0H,IAAMA,EAASC,GAAe,OAAOA,GAAQ,SAASA,EAAM,OAAOA,CAAK,EAAUC,EAAWD,GAAW,OAAOA,GAAQ,UAAUA,IAAQ,MAAM,OAAOA,EAAM,KAAM,SAAiBA,EAAM,IAAY,OAAOA,GAAQ,SAASA,EAAM,OAA2B,SAARE,EAA0BC,EAAOC,EAAa,CAAC,IAAMC,EAAUF,GAAQ,UAAgBG,EAAUH,GAAQ,UAAU,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,SAAS,WAAW,qBAAqB,EAAE,CAAC,KAAK,SAAS,WAAW,4CAA4C,EAAE,CAAC,KAAK,SAAS,WAAW,oBAAoB,CAAC,EAAE,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAAwvC,YAAY,GAAGE,IAAY,OAAUN,EAASM,CAAS,EAAE,eAAe,GAAG,SAAS,CAAC,EAAE,aAAa,CAAC,MAAM,EAAI,EAAE,OAAO,0BAA0B,gBAAgB,eAAe,YAAYJ,EAAWK,CAAS,EAAE,MAAMJ,EAAaC,EAAOC,CAAY,EAAE,OAAO,kBAAkB,SAAS,oBAAoB,CAAE,CAAQ,IAAMG,EAAgB,EAC/uEC,EAAqB,CAAC,QAAU,CAAC,gBAAkB,CAAC,KAAO,WAAW,YAAc,CAAC,sBAAwB,GAAG,CAAC,EAAE,QAAU,CAAC,KAAO,WAAW,YAAc,CAAC,sBAAwB,GAAG,CAAC,EAAE,mBAAqB,CAAC,KAAO,UAAU,CAAC,CAAC",
  "names": ["toString", "value", "toImageSrc", "metadata", "params", "activeLocale", "uw7IrFuDU", "ITX32fZyC", "metadataVersion", "__FramerMetadata__"]
}
