{"version":3,"file":"CaseStudyWorkInProgressGate.CM7ec7Ps.mjs","names":["_Fragment","React.useLayoutEffect","React.useEffect"],"sources":["https:/framerusercontent.com/modules/b4jT4nmxHaMUx1BuDJBo/7KmXQFsAh7NJd5yLEmKk/CaseStudyWorkInProgressGate.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";// Heading text matched to the project's /Heading 3 style (GT Standard L\n// Regular, -0.01em tracking, 1.2em line-height) so the letters breathe.\nconst WIP_TEXT=\"Work in Progress\";const DEFAULT_BACKGROUND=\"#f6f6f6\";const DEFAULT_TEXT=\"#233324\";const DEFAULT_REDIRECT_PATH=\"/index\";// The cover sits just under the site nav (which is position:fixed z-index:8),\n// matching the PageTransition \"wipe under nav\" convention. This keeps the real\n// Navigation component visible and clickable on top of the cover, while all\n// case-study content (z <= 6, plus the off-screen footer while scroll is\n// locked) stays hidden.\nconst OVERLAY_Z=7;const HEADING_STACK='\"GT Standard L Regular\", \"GT Standard L Regular Placeholder\", \"GT Standard Trial L\", Manrope, sans-serif';const OVERLAY_ID=\"mh-wip-overlay\";const STYLE_ID=\"mh-wip-overlay-style\";const SCROLL_PREV_KEY=\"__mhWipPrevOverflow\";const REMOVE_RAF_KEY=\"__mhWipRemoveRaf\";const OVERLAY_CSS=`\n#${OVERLAY_ID}{position:fixed;inset:0;display:grid;place-items:center;box-sizing:border-box;width:100vw;min-width:100vw;height:100dvh;min-height:100vh;padding:16px;overscroll-behavior:none;pointer-events:auto;}\n#${OVERLAY_ID} .mh-wip-action{color:inherit;text-decoration:none;cursor:pointer;font-family:${HEADING_STACK};font-weight:400;font-size:40px;line-height:1.2em;letter-spacing:-0.01em;text-align:center;text-transform:none;white-space:pre;max-width:calc(100vw - 32px);}\n#${OVERLAY_ID} .mh-wip-action:focus-visible{outline:1px solid currentColor;outline-offset:10px;}\n@media (max-width:1199px){#${OVERLAY_ID} .mh-wip-action{font-size:34px;}}\n@media (max-width:809px){#${OVERLAY_ID} .mh-wip-action{font-size:27px;}}\n@media (max-width:479px){#${OVERLAY_ID} .mh-wip-action{font-size:22px;}}\n`;function canUseDOM(){return typeof window!==\"undefined\"&&typeof document!==\"undefined\";}function escapeHtml(value){return value.replace(/&/g,\"&amp;\").replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\").replace(/\"/g,\"&quot;\");}function buildOverlayHTML(redirect){return`<a class=\"mh-wip-action\" href=\"${escapeHtml(redirect||DEFAULT_REDIRECT_PATH)}\" aria-label=\"${escapeHtml(`${WIP_TEXT}. Go to index`)}\">${escapeHtml(WIP_TEXT)}</a>`;}// ---------------------------------------------------------------------------\n// Imperative, body-level overlay. Kept outside React so it can be painted at\n// the earliest possible moment — at HTML parse time via the seed script on a\n// hard load, and pre-paint via a layout effect on SPA navigation.\n// ---------------------------------------------------------------------------\nfunction ensureStyle(){if(document.getElementById(STYLE_ID))return;const style=document.createElement(\"style\");style.id=STYLE_ID;style.textContent=OVERLAY_CSS;(document.head||document.documentElement).appendChild(style);}function lockScrollNow(){const win=window;if(win[SCROLL_PREV_KEY]===undefined){win[SCROLL_PREV_KEY]=document.documentElement.style.overflow;}document.documentElement.style.overflow=\"hidden\";}function unlockScroll(){const win=window;if(win[SCROLL_PREV_KEY]!==undefined){document.documentElement.style.overflow=String(win[SCROLL_PREV_KEY]||\"\");delete win[SCROLL_PREV_KEY];}}function cancelPendingRemoval(){const win=window;if(win[REMOVE_RAF_KEY]){cancelAnimationFrame(win[REMOVE_RAF_KEY]);delete win[REMOVE_RAF_KEY];}}function paintOverlay(bg,color,redirect,lockScroll){if(!canUseDOM())return;cancelPendingRemoval();let overlay=document.getElementById(OVERLAY_ID);if(!overlay){ensureStyle();overlay=document.createElement(\"div\");overlay.id=OVERLAY_ID;overlay.setAttribute(\"data-case-study-work-in-progress\",\"true\");overlay.setAttribute(\"role\",\"region\");overlay.setAttribute(\"aria-label\",WIP_TEXT);overlay.innerHTML=buildOverlayHTML(redirect);(document.body||document.documentElement).appendChild(overlay);if(lockScroll)lockScrollNow();}else{const action=overlay.querySelector(\".mh-wip-action\");if(action)action.setAttribute(\"href\",redirect||DEFAULT_REDIRECT_PATH);}overlay.style.background=bg;overlay.style.color=color;overlay.style.zIndex=String(OVERLAY_Z);}function scheduleRemoval(){if(!canUseDOM())return;const win=window;cancelPendingRemoval();// Defer one frame so a WIP -> WIP navigation (cleanup then re-paint in the\n// same commit) keeps the overlay on screen seamlessly.\nwin[REMOVE_RAF_KEY]=requestAnimationFrame(()=>{delete win[REMOVE_RAF_KEY];const overlay=document.getElementById(OVERLAY_ID);if(overlay&&overlay.parentNode)overlay.parentNode.removeChild(overlay);unlockScroll();});}// Seed script: runs at HTML parse time on a hard load / refresh / direct visit,\n// before hydration, so the cover is on screen before the unfinished case study\n// can paint. Mirrors paintOverlay() imperatively as a string.\nfunction buildSeedScript(bg,color,redirect,lockScroll){const q=JSON.stringify;return\"(function(){try{\"+\"var d=document;\"+\"if(d.getElementById(\"+q(OVERLAY_ID)+\"))return;\"+\"if(!d.getElementById(\"+q(STYLE_ID)+\")){var s=d.createElement('style');s.id=\"+q(STYLE_ID)+\";s.textContent=\"+q(OVERLAY_CSS)+\";(d.head||d.documentElement).appendChild(s);}\"+\"var o=d.createElement('div');o.id=\"+q(OVERLAY_ID)+\";o.setAttribute('data-case-study-work-in-progress','true');o.setAttribute('role','region');o.setAttribute('aria-label',\"+q(WIP_TEXT)+\");o.style.background=\"+q(bg)+\";o.style.color=\"+q(color)+\";o.style.zIndex=\"+q(String(OVERLAY_Z))+\";o.innerHTML=\"+q(buildOverlayHTML(redirect))+\";(d.body||d.documentElement).appendChild(o);\"+(lockScroll?\"try{var w=window;if(w[\"+q(SCROLL_PREV_KEY)+\"]===undefined){w[\"+q(SCROLL_PREV_KEY)+\"]=d.documentElement.style.overflow;}d.documentElement.style.overflow='hidden';}catch(e){}\":\"\")+\"}catch(e){}})()\";}const useIsomorphicLayoutEffect=canUseDOM()?React.useLayoutEffect:React.useEffect;/**\n * Case Study Work In Progress Gate\n *\n * Drop this onto any bespoke case-study page and switch Status to\n * \"Work in Progress\" to replace the published page with the 404-style\n * cream/forest screen. The cover sits just under the real site Navigation\n * (z-index 8) so the existing nav stays visible and usable, and the centered\n * \"Work in Progress\" text links to the Index page. The cover is painted at\n * HTML parse time on hard loads and pre-paint on SPA navigation, so the\n * unfinished page never flashes.\n *\n * @framerIntrinsicWidth 180\n * @framerIntrinsicHeight 60\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function CaseStudyWorkInProgressGate(props){const enabled=props.status===\"wip\";const isCanvas=RenderTarget.current()===RenderTarget.canvas;const redirect=props.redirectPath||DEFAULT_REDIRECT_PATH;const bg=props.backgroundColor||DEFAULT_BACKGROUND;const color=props.textColor||DEFAULT_TEXT;const lockScroll=props.lockScroll!==false;useIsomorphicLayoutEffect(()=>{if(!enabled||isCanvas||!canUseDOM())return;paintOverlay(bg,color,redirect,lockScroll);return()=>{scheduleRemoval();};},[enabled,isCanvas,bg,color,redirect,lockScroll]);if(isCanvas){return props.showCanvasPreview?/*#__PURE__*/_jsx(\"div\",{style:{...props.style,width:\"100%\",height:\"100%\",minWidth:180,minHeight:60,display:\"grid\",placeItems:\"center\",boxSizing:\"border-box\",padding:12,background:bg,color,border:`1px solid ${color}`,fontFamily:HEADING_STACK,fontSize:16,fontWeight:400,lineHeight:\"1.2em\",letterSpacing:\"-0.01em\",textAlign:\"center\"},children:enabled?WIP_TEXT:\"Ready\"}):/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:{...props.style,width:1,height:1,opacity:0,pointerEvents:\"none\"}});}// Live site. The visible overlay is imperative (see effect / seed script);\n// React only emits the parse-time seed script plus a hidden 1px helper.\nreturn /*#__PURE__*/_jsxs(_Fragment,{children:[enabled&&/*#__PURE__*/_jsx(\"script\",{suppressHydrationWarning:true,dangerouslySetInnerHTML:{__html:buildSeedScript(bg,color,redirect,lockScroll)}}),/*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":\"true\",style:{...props.style,width:1,height:1,opacity:0,pointerEvents:\"none\"}})]});}CaseStudyWorkInProgressGate.defaultProps={status:\"ready\",redirectPath:DEFAULT_REDIRECT_PATH,backgroundColor:DEFAULT_BACKGROUND,textColor:DEFAULT_TEXT,lockScroll:true,showCanvasPreview:true};addPropertyControls(CaseStudyWorkInProgressGate,{status:{type:ControlType.Enum,title:\"Status\",defaultValue:\"ready\",options:[\"ready\",\"wip\"],optionTitles:[\"Ready\",\"Work in Progress\"],displaySegmentedControl:true},redirectPath:{type:ControlType.String,title:\"Link\",defaultValue:DEFAULT_REDIRECT_PATH,hidden:({status})=>status!==\"wip\"},backgroundColor:{type:ControlType.Color,title:\"BG\",defaultValue:DEFAULT_BACKGROUND,hidden:({status})=>status!==\"wip\"},textColor:{type:ControlType.Color,title:\"Text\",defaultValue:DEFAULT_TEXT,hidden:({status})=>status!==\"wip\"},lockScroll:{type:ControlType.Boolean,title:\"Scroll\",defaultValue:true,enabledTitle:\"Lock\",disabledTitle:\"Allow\",hidden:({status})=>status!==\"wip\"},showCanvasPreview:{type:ControlType.Boolean,title:\"Canvas\",defaultValue:true,enabledTitle:\"Preview\",disabledTitle:\"Hide\",hidden:({status})=>status!==\"wip\"}});CaseStudyWorkInProgressGate.displayName=\"Case Study Work In Progress Gate\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CaseStudyWorkInProgressGate\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"fixed\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"60\",\"framerIntrinsicWidth\":\"180\",\"framerSupportedLayoutWidth\":\"fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CaseStudyWorkInProgressGate.map"],"mappings":"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"}