{"version":3,"file":"YC_CookieBanner.DKluJgv7.mjs","names":["useState","p"],"sources":["https:/framerusercontent.com/modules/IN8fwYS6hJqlkGXMdBxQ/okxhP53PatXhfphj8Q34/YC_CookieBanner.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useState,useEffect}from\"react\";/**\n * YC_CookieBanner - Yellow Cookie consent banner + Google Analytics gate.\n *\n * WHAT IT DOES\n * - Google Analytics does not load until the visitor clicks Accept.\n *   Before consent there is no gtag script, no request to Google, and no\n *   _ga cookie. This is conditional loading, the strictest gate.\n * - Reject is as prominent as Accept. Analytics is off until chosen.\n *   On the first layer, Reject sits on the left and Accept on the right.\n * - The choice is stored in localStorage (yc_consent_v1) and can be\n *   reopened and changed at any time.\n * - Exposes window[settingsFnName] (default \"openCookieSettings\") so the\n *   footer \"Cookie Settings\" link reopens this panel.\n * - The whole banner is sized at 80% of the original (20% smaller).\n *\n * REQUIRED SETUP (see the notes handed to Haik)\n * 1. Remove the GA4 Measurement ID from Framer's built-in Analytics field,\n *    otherwise Framer loads GA before consent and this gate is bypassed.\n * 2. Paste that same G-XXXXXXX id into the \"GA Measurement ID\" control here.\n * 3. Place this component on every page (like the footer).\n *\n * All copy is editable via the property controls at the bottom.\n * Inline link syntax in any text field: [label](/slug) or [label](https://...).\n */// ---- Locked design tokens ----\nconst YELLOW=\"#F0B429\";const DARK=\"#2A2824\";const CREAM=\"#FFF8EC\";const GOLD=\"#C9A227\";const FONT=\"'Barlow Condensed', 'Barlow', system-ui, sans-serif\";const STORAGE_KEY=\"yc_consent_v1\";// Yellow Cookie's Google Analytics id. Used whenever the \"GA Measurement ID\"\n// field arrives empty or malformed, so Analytics never silently switches off.\nconst GA_ID=\"G-SJ6NTY7VK5\";const CONSENT_VERSION=1;// Module-level guard so GA is injected at most once per page load.\nlet gaInjected=false;// The banner text uses Barlow Condensed 400, 500 and 800. Waiting for these\n// before the banner appears means its text never redraws in a new font,\n// so the banner keeps its height and nothing on screen jumps. After 3\n// seconds it shows regardless, so a slow font never hides the choice.\nfunction whenBannerFontsReady(){if(typeof document===\"undefined\")return Promise.resolve();const fonts=document.fonts;if(!fonts||typeof fonts.load!==\"function\")return Promise.resolve();const deadline=Date.now()+3e3;// fonts.load answers with an empty list while the font's stylesheet has\n// not arrived yet, so ask again shortly until the font itself is in.\nconst loadFace=async face=>{while(Date.now()<deadline){try{const got=await fonts.load(`${face} 'Barlow Condensed'`);if(got.length>0)return;}catch(e){return;}await new Promise(resolve=>setTimeout(resolve,150));}};const timeout=new Promise(resolve=>setTimeout(resolve,3e3));return Promise.race([Promise.all([\"400 13px\",\"500 12px\",\"800 18px\"].map(loadFace)).then(()=>undefined),timeout]);}function readConsent(){if(typeof window===\"undefined\")return null;try{const raw=window.localStorage.getItem(STORAGE_KEY);if(!raw)return null;const parsed=JSON.parse(raw);if(!parsed||parsed.v!==CONSENT_VERSION)return null;return parsed;}catch{return null;}}function writeConsent(analytics){if(typeof window===\"undefined\")return;try{const value={analytics,ts:Date.now(),v:CONSENT_VERSION};window.localStorage.setItem(STORAGE_KEY,JSON.stringify(value));}catch{// storage unavailable; consent simply will not persist\n}}// Trims spaces and line breaks from the panel value and checks it looks like\n// a GA4 id (G-XXXXXXXXXX). Anything else falls back to GA_ID.\nfunction cleanGaId(raw){const id=String(raw??\"\").trim().toUpperCase();return/^G-[A-Z0-9]{6,}$/.test(id)?id:GA_ID;}function injectGA(rawId){if(typeof window===\"undefined\"||typeof document===\"undefined\")return;if(gaInjected)return;// Google's tag is already on the page (for example the Google Analytics\n// script in Framer's Site Settings > Code). It already counts this visit,\n// so loading a second copy would count every visit twice.\nif(document.getElementById(\"yc-ga-src\")||document.querySelector('script[src*=\"googletagmanager.com/gtag/js\"]')){gaInjected=true;return;}const id=cleanGaId(rawId);const w=window;w.dataLayer=w.dataLayer||[];// Exactly Google's own snippet. Google's script only reads what is\n// pushed as the function's \"arguments\"; a plain list is ignored, and\n// then no visit reaches Analytics.\nfunction gtag(){// eslint-disable-next-line prefer-rest-params\nw.dataLayer.push(arguments);}w.gtag=w.gtag||gtag;const script=document.createElement(\"script\");script.id=\"yc-ga-src\";script.async=true;script.src=\"https://www.googletagmanager.com/gtag/js?id=\"+encodeURIComponent(id);document.head.appendChild(script);w.gtag(\"js\",new Date);w.gtag(\"config\",id);gaInjected=true;}function clearGACookies(){if(typeof document===\"undefined\"||typeof location===\"undefined\")return;const names=document.cookie.split(\";\").map(c=>c.split(\"=\")[0].trim()).filter(n=>n===\"_ga\"||n===\"_gid\"||n.startsWith(\"_ga_\"));const host=location.hostname;const parts=host.split(\".\");const root=parts.length>1?\".\"+parts.slice(-2).join(\".\"):host;const domains=[host,\".\"+host,root];for(const name of names){for(const d of domains){document.cookie=`${name}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${d}`;}document.cookie=`${name}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`;}}// ---- Inline [label](href) parsing ----\nfunction renderInline(text){const nodes=[];const re=/\\[([^\\]]+)\\]\\(([^)]+)\\)/g;let last=0;let key=0;let match;while((match=re.exec(text))!==null){if(match.index>last)nodes.push(text.slice(last,match.index));const label=match[1];const href=match[2];const external=/^https?:\\/\\//.test(href);nodes.push(/*#__PURE__*/_jsx(\"a\",{href:href,target:external?\"_blank\":undefined,rel:external?\"noopener noreferrer\":undefined,style:{color:YELLOW,textDecoration:\"underline\"},children:label},`lnk-${key++}`));last=match.index+match[0].length;}if(last<text.length)nodes.push(text.slice(last));return nodes;}export default function YC_CookieBanner(props){const{gaMeasurementId=GA_ID,settingsFnName=\"openCookieSettings\",previewInEditor=false,title=\"Cookies at Yellow Cookie\",message=DEFAULT_MESSAGE,acceptLabel=\"Accept\",rejectLabel=\"Reject\",customizeLabel=\"Manage options\",settingsTitle=\"Your cookie choices\",settingsIntro=DEFAULT_SETTINGS_INTRO,necessaryTitle=\"Strictly necessary\",necessaryDesc=DEFAULT_NECESSARY_DESC,analyticsTitle=\"Analytics\",analyticsDesc=DEFAULT_ANALYTICS_DESC,saveLabel=\"Save choices\",alwaysOnLabel=\"Always on\"}=props;const[mounted,setMounted]=useState(false);const[view,setView]=useState(\"hidden\");const[analyticsOn,setAnalyticsOn]=useState(false);const[dismissed,setDismissed]=useState(false);useEffect(()=>{let alive=true;setMounted(true);const existing=readConsent();if(existing){setAnalyticsOn(existing.analytics===\"granted\");if(existing.analytics===\"granted\")injectGA(gaMeasurementId);setView(\"hidden\");}else{// Appears once its fonts are ready (see whenBannerFontsReady).\nwhenBannerFontsReady().then(()=>{if(alive)setView(\"banner\");});}const w=window;w[settingsFnName]=()=>{const current=readConsent();setAnalyticsOn(current?.analytics===\"granted\");setDismissed(false);setView(\"settings\");};return()=>{alive=false;try{delete w[settingsFnName];}catch{w[settingsFnName]=undefined;}};},[gaMeasurementId,settingsFnName]);const acceptAll=()=>{writeConsent(\"granted\");injectGA(gaMeasurementId);setAnalyticsOn(true);setDismissed(true);setView(\"hidden\");};const rejectAll=()=>{writeConsent(\"denied\");clearGACookies();setAnalyticsOn(false);setDismissed(true);setView(\"hidden\");};const savePrefs=()=>{if(analyticsOn){writeConsent(\"granted\");injectGA(gaMeasurementId);}else{writeConsent(\"denied\");clearGACookies();}setDismissed(true);setView(\"hidden\");};// previewInEditor only forces the banner open on the Framer editor\n// canvas, so the toggle can never make the live site nag on every page.\n// On the published site inEditor is always false, so stored consent is\n// honored and the banner shows once, then stays gone across pages.\nconst inEditor=RenderTarget.current()===RenderTarget.canvas;const showPreview=previewInEditor&&inEditor;const activeView=dismissed?\"hidden\":showPreview?view===\"settings\"?\"settings\":\"banner\":view;if(!mounted&&!showPreview)return null;if(activeView===\"hidden\")return null;return /*#__PURE__*/_jsx(\"div\",{style:{position:\"fixed\",left:0,right:0,bottom:0,zIndex:2147483e3,display:\"flex\",justifyContent:\"center\",padding:13,boxSizing:\"border-box\",fontFamily:FONT,pointerEvents:\"none\"},children:/*#__PURE__*/_jsx(\"div\",{role:\"dialog\",\"aria-label\":activeView===\"settings\"?settingsTitle:title,style:{pointerEvents:\"auto\",width:\"100%\",maxWidth:448,background:DARK,color:CREAM,borderRadius:13,boxShadow:\"0 14px 40px rgba(0,0,0,0.35)\",border:`1px solid rgba(240,180,41,0.35)`,padding:18,boxSizing:\"border-box\"},children:activeView===\"banner\"?/*#__PURE__*/_jsx(BannerLayer,{title:title,message:message,acceptLabel:acceptLabel,rejectLabel:rejectLabel,customizeLabel:customizeLabel,onAccept:acceptAll,onReject:rejectAll,onCustomize:()=>setView(\"settings\")}):/*#__PURE__*/_jsx(SettingsLayer,{settingsTitle:settingsTitle,settingsIntro:settingsIntro,necessaryTitle:necessaryTitle,necessaryDesc:necessaryDesc,analyticsTitle:analyticsTitle,analyticsDesc:analyticsDesc,alwaysOnLabel:alwaysOnLabel,saveLabel:saveLabel,acceptLabel:acceptLabel,rejectLabel:rejectLabel,analyticsOn:analyticsOn,setAnalyticsOn:setAnalyticsOn,onSave:savePrefs,onAccept:acceptAll,onReject:rejectAll})})});}// ---- First layer ----\n// Button order: Reject (left) then Accept (right), both equal width.\nfunction BannerLayer(p){return /*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"div\",{style:{fontWeight:800,fontSize:18,letterSpacing:\"0.01em\",marginBottom:6},children:p.title}),/*#__PURE__*/_jsx(\"div\",{style:{fontWeight:400,fontSize:13,lineHeight:1.55,color:\"rgba(255,248,236,0.9)\",marginBottom:14},children:renderInline(p.message)}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:8,flexWrap:\"wrap\"},children:[/*#__PURE__*/_jsx(SecondaryButton,{label:p.rejectLabel,onClick:p.onReject}),/*#__PURE__*/_jsx(PrimaryButton,{label:p.acceptLabel,onClick:p.onAccept})]}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",onClick:p.onCustomize,style:{marginTop:11,background:\"transparent\",border:\"none\",color:CREAM,fontFamily:FONT,fontWeight:500,fontSize:12,textDecoration:\"underline\",cursor:\"pointer\",padding:0},children:p.customizeLabel})]});}// ---- Settings layer ----\nfunction SettingsLayer(p){return /*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"div\",{style:{fontWeight:800,fontSize:18,marginBottom:5},children:p.settingsTitle}),/*#__PURE__*/_jsx(\"div\",{style:{fontWeight:400,fontSize:12,lineHeight:1.5,color:\"rgba(255,248,236,0.85)\",marginBottom:13},children:renderInline(p.settingsIntro)}),/*#__PURE__*/_jsx(Row,{title:p.necessaryTitle,desc:p.necessaryDesc,right:/*#__PURE__*/_jsx(\"span\",{style:{fontWeight:500,fontSize:11,color:GOLD,whiteSpace:\"nowrap\"},children:p.alwaysOnLabel})}),/*#__PURE__*/_jsx(Row,{title:p.analyticsTitle,desc:p.analyticsDesc,right:/*#__PURE__*/_jsx(Toggle,{on:p.analyticsOn,onChange:()=>p.setAnalyticsOn(!p.analyticsOn),label:p.analyticsTitle})}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:8,flexWrap:\"wrap\",marginTop:14},children:[/*#__PURE__*/_jsx(SecondaryButton,{label:p.rejectLabel,onClick:p.onReject}),/*#__PURE__*/_jsx(PrimaryButton,{label:p.saveLabel,onClick:p.onSave})]})]});}function Row(p){return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"flex-start\",justifyContent:\"space-between\",gap:11,padding:\"11px 0\",borderTop:\"1px solid rgba(255,248,236,0.14)\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{flex:1},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontWeight:800,fontSize:14,marginBottom:3},children:p.title}),/*#__PURE__*/_jsx(\"div\",{style:{fontWeight:400,fontSize:11,lineHeight:1.5,color:\"rgba(255,248,236,0.8)\"},children:renderInline(p.desc)})]}),/*#__PURE__*/_jsx(\"div\",{style:{paddingTop:2},children:p.right})]});}function Toggle(p){return /*#__PURE__*/_jsx(\"button\",{type:\"button\",role:\"switch\",\"aria-checked\":p.on,\"aria-label\":p.label,onClick:p.onChange,style:{width:42,height:24,borderRadius:999,border:\"none\",cursor:\"pointer\",background:p.on?YELLOW:\"rgba(255,248,236,0.28)\",position:\"relative\",transition:\"background 160ms ease\",padding:0},children:/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",top:2,left:p.on?20:2,width:20,height:20,borderRadius:\"50%\",background:p.on?DARK:CREAM,transition:\"left 160ms ease\"}})});}function PrimaryButton(p){return /*#__PURE__*/_jsx(\"button\",{type:\"button\",onClick:p.onClick,style:{flex:\"1 1 112px\",background:YELLOW,color:DARK,border:\"none\",borderRadius:8,fontFamily:FONT,fontWeight:800,fontSize:14,letterSpacing:\"0.01em\",padding:\"10px 14px\",cursor:\"pointer\"},children:p.label});}function SecondaryButton(p){return /*#__PURE__*/_jsx(\"button\",{type:\"button\",onClick:p.onClick,style:{flex:\"1 1 112px\",background:\"transparent\",color:CREAM,border:`2px solid ${CREAM}`,borderRadius:8,fontFamily:FONT,fontWeight:800,fontSize:14,letterSpacing:\"0.01em\",padding:\"8px 14px\",cursor:\"pointer\"},children:p.label});}// ---- Editable defaults ----\nconst DEFAULT_MESSAGE=\"We use a functional cookie to keep your cart working. Read more in our [Privacy Statement](/privacy).\";const DEFAULT_SETTINGS_INTRO=\"Necessary items keep the shop working and are always on. Analytics is optional and stays off until you turn it on.\";const DEFAULT_NECESSARY_DESC=\"Keeps your shopping cart and the site working. These are needed for Yellow Cookie to function.\";const DEFAULT_ANALYTICS_DESC=\"Google Analytics helps us see how the site is used so we can make it better. Turn this on to allow it.\";addPropertyControls(YC_CookieBanner,{gaMeasurementId:{type:ControlType.String,title:\"GA Measurement ID\",placeholder:\"G-XXXXXXXXXX\",defaultValue:\"G-SJ6NTY7VK5\"},settingsFnName:{type:ControlType.String,title:\"Settings Fn Name\",defaultValue:\"openCookieSettings\"},previewInEditor:{type:ControlType.Boolean,title:\"Preview In Editor\",defaultValue:false},title:{type:ControlType.String,title:\"Title\",defaultValue:\"Cookies at Yellow Cookie\"},message:{type:ControlType.String,title:\"Message\",displayTextArea:true,defaultValue:DEFAULT_MESSAGE},acceptLabel:{type:ControlType.String,title:\"Accept Label\",defaultValue:\"Accept\"},rejectLabel:{type:ControlType.String,title:\"Reject Label\",defaultValue:\"Reject\"},customizeLabel:{type:ControlType.String,title:\"Manage Label\",defaultValue:\"Manage options\"},settingsTitle:{type:ControlType.String,title:\"Settings Title\",defaultValue:\"Your cookie choices\"},settingsIntro:{type:ControlType.String,title:\"Settings Intro\",displayTextArea:true,defaultValue:DEFAULT_SETTINGS_INTRO},necessaryTitle:{type:ControlType.String,title:\"Necessary Title\",defaultValue:\"Strictly necessary\"},necessaryDesc:{type:ControlType.String,title:\"Necessary Desc\",displayTextArea:true,defaultValue:DEFAULT_NECESSARY_DESC},analyticsTitle:{type:ControlType.String,title:\"Analytics Title\",defaultValue:\"Analytics\"},analyticsDesc:{type:ControlType.String,title:\"Analytics Desc\",displayTextArea:true,defaultValue:DEFAULT_ANALYTICS_DESC},saveLabel:{type:ControlType.String,title:\"Save Label\",defaultValue:\"Save choices\"},alwaysOnLabel:{type:ControlType.String,title:\"Always On Label\",defaultValue:\"Always on\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"YC_CookieBanner\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./YC_CookieBanner.map"],"mappings":"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"}