{"version":3,"file":"ContentCard.C6MkR63Z.mjs","names":["useState","useRef"],"sources":["https:/framerusercontent.com/modules/Wxwt2QNKluc8tP5KbK2h/PEGL0Qm1udbMehTTNCyD/ContentCard.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,useEffect,useRef}from\"react\";import{addPropertyControls,ControlType}from\"framer\";/**\n * ContentCard — ONE card for every CMS list (blog, recipes, future). Replaces the\n * separate Blog/Recipe grid + featured cards. Set `variant` (grid | featured) and\n * `linkBase` (\"/resources/blog/\" or \"/resources/recipes/\"), then bind the generic\n * fields per collection:\n *   Blog:   eyebrow->Tag Label, byline->Author>Title, minutes->Reading Time\n *           (minutesSuffix \"min read\"), title/image/excerpt/slug.\n *   Recipe: eyebrow->Cuisine Type, tags->Dietary, minutes->Total Time\n *           (minutesSuffix \"min\"), title/image->Hero Image/excerpt/slug.\n * Builds its own link = linkBase + slug + \"/\". Dark-mode aware (smco .dark class).\n */const FOREST=\"#1B3A2F\";const SAGE=\"#96C0A5\";const FONT=\"'Urbanist', -apple-system, BlinkMacSystemFont, sans-serif\";// Hub index pages whose CMS detail route is a direct child of the hub path\n// (/resources/recipes/ -> /resources/recipes/:slug). See HUB-BASE RESOLUTION below.\nconst HUB_PATH_RE=/^\\/resources\\/(?:blog|recipes|playbook)\\/$/;// ── MOBILE / TABLET LAYOUT REPAIR (2026-08-12) ────────────────────────────────\n// The phone overflow on /resources/recipes/ and /resources/blog/ is NOT declared\n// in this file. This card's own shell has always been `width: \"100%\"`. What blows\n// past the viewport is the Framer canvas sizing ABOVE the card:\n//\n//   /resources/recipes/  grid  .framer-19llnlq          grid-template-columns:\n//                                                       320px 320px 320px, gap 20px\n//                                                       -> 1000px wide, left -312\n//                        featured .framer-l2lbo3-container  983px wide, left -304\n//   /resources/blog/     featured .framer-1goj4a  and\n//                                 .framer-19abfnb-container 1003px wide, left -314\n//\n// The page wrapper is 375px with `overflow-x: clip`, so none of it is scrollable —\n// two of every three recipe cards and ~80% of each featured card are simply gone.\n//\n// Those widths live on Framer nodes that the MCP API cannot address (nodes nested\n// inside a Collection List), so the only lever this component has is to relax them\n// from the inside: tag its own Framer container plus any ancestor that MEASURES\n// wider than the viewport, and let a stylesheet that is entirely inside max-width\n// media queries do the rest. Desktop cannot be affected — every selector below is\n// media-gated, so a tag applied at any width is inert above 880px.\n//\n// Note on the featured variant's inline `flex: \"1 1 440px\"` / `\"1 1 360px\"` with\n// `minWidth: 280` (combined 560px floor): that declaration is correct on its own —\n// in a 337px content box it would wrap and each column would take the full width.\n// It never fires today only because the container handed to it is 983px, not 100%.\n// The `.smco-cc-fmedia` / `.smco-cc-fbody` rules below force the stack anyway so\n// the featured layout can never again depend on an upstream container width.\n//\n// Breakpoints: 880px for structural collapse so iPad portrait (810px) gets the\n// mobile layout instead of a crushed desktop one; 767px for phone-only type and\n// padding compaction. The file previously had no breakpoint at all, so there is no\n// intermediate 641-767px design to break.\nconst MOBILE_STYLE_ID=\"smco-contentcard-mobile-2026-08-12\";const MOBILE_CSS=`\n/* SMCo ContentCard — mobile & tablet layout repair (2026-08-12).\n   Every rule lives inside a max-width media query: desktop is unchanged.\n   Classes are attached at runtime by useMobileLayoutRepair(). */\n\n@media (max-width: 880px) {\n  /* This card's own Framer container (983px / 1003px on the featured slots,\n     320px in the recipe grid) and any ancestor measured wider than the viewport. */\n  .smco-cc-self,\n  .smco-cc-fluid {\n    width: 100% !important;\n    max-width: 100% !important;\n    min-width: 0 !important;\n  }\n\n  /* A multi-track grid that overflows — the recipe grid's 320px 320px 320px.\n     auto-fit keeps 2-3 columns at iPad portrait and collapses to 1 on a phone,\n     instead of hard-forcing a single wasteful column at 810px. */\n  .smco-cc-grid1 {\n    grid-template-columns: repeat(auto-fit, minmax(min(260px, 100%), 1fr)) !important;\n    width: 100% !important;\n    max-width: 100% !important;\n  }\n\n  /* Featured variant stacks image over copy. Overrides the inline flex bases. */\n  .smco-cc-featured { flex-wrap: wrap !important; min-width: 0 !important; }\n  .smco-cc-featured > .smco-cc-fmedia,\n  .smco-cc-featured > .smco-cc-fbody {\n    flex: 1 1 100% !important;\n    width: 100% !important;\n    min-width: 0 !important;\n  }\n\n  .smco-cc-grid { min-width: 0 !important; }\n}\n\n@media (max-width: 767px) {\n  /* Phone-only compaction. clamp(28px, 4vw, 52px) resolves to its 28px FLOOR at\n     400px (4vw = 16px), which spends 56px of a ~337px content box on padding. */\n  .smco-cc-featured > .smco-cc-fbody {\n    padding: 22px 20px 24px !important;\n    gap: 14px !important;\n  }\n  .smco-cc-featured > .smco-cc-fmedia { min-height: 200px !important; }\n  /* TYPE SCALE LIFT (2026-08-16): .smco-cc-fexcerpt 15.5px -> 16px. */\n  .smco-cc-fexcerpt { font-size: 16px !important; }\n}\n`;// Injected once per document. Called at module scope so the rules are present\n// before first paint on the client, and again from the effect as a safety net.\nfunction ensureMobileStyles(){try{if(typeof document===\"undefined\"||!document.head)return;if(document.getElementById(MOBILE_STYLE_ID))return;const el=document.createElement(\"style\");el.id=MOBILE_STYLE_ID;el.textContent=MOBILE_CSS;document.head.appendChild(el);}catch(e){// Layout repair must never break the render.\n}}ensureMobileStyles();// Ancestors are shared between sibling cards, so a class added by card #1 must not\n// be stripped when card #1 alone unmounts. Reference-count every tag.\nconst CLASS_REFS=typeof WeakMap!==\"undefined\"?new WeakMap:null;function retainClass(el,cls){el.classList.add(cls);if(!CLASS_REFS)return;const m=CLASS_REFS.get(el)||{};m[cls]=(m[cls]||0)+1;CLASS_REFS.set(el,m);}function releaseClass(el,cls){if(!CLASS_REFS){el.classList.remove(cls);return;}const m=CLASS_REFS.get(el);if(!m||!m[cls]){el.classList.remove(cls);return;}m[cls]-=1;if(m[cls]<=0){delete m[cls];el.classList.remove(cls);}CLASS_REFS.set(el,m);}// Tags this card's Framer container plus every overflowing ancestor. Tags are\n// STICKY for the lifetime of the card: re-measuring after the fix has landed would\n// report \"no longer overflowing\" and untag, which would flip-flop the layout on\n// every resize tick. Nothing is ever untagged except on unmount, and every rule is\n// media-gated so a stale tag is inert on desktop.\nfunction useMobileLayoutRepair(rootRef){useEffect(()=>{ensureMobileStyles();const root=rootRef.current;if(!root||typeof window===\"undefined\")return;const applied=[];const add=(el,cls)=>{if(!el)return;for(let i=0;i<applied.length;i++){if(applied[i][0]===el&&applied[i][1]===cls)return;}retainClass(el,cls);applied.push([el,cls]);};const scan=()=>{try{const vw=document.documentElement.clientWidth||window.innerWidth||0;if(!vw)return;// The card's own Framer container is always safe to make fluid —\n// the card inside it is width:100% by definition.\nconst own=root.parentElement;if(own&&own!==document.body)add(own,\"smco-cc-self\");let el=own;let hops=0;while(el&&el!==document.body&&el!==document.documentElement&&hops<6){// +1px tolerance for sub-pixel rounding.\nconst overflows=el.offsetWidth>vw+1;if(overflows){add(el,\"smco-cc-fluid\");const cs=window.getComputedStyle(el);if(cs.display===\"grid\"||cs.display===\"inline-grid\"){const tracks=(cs.gridTemplateColumns||\"\").trim().split(/\\s+/).filter(Boolean);// Only rewrite a grid that is BOTH overflowing and\n// multi-track — a grid already collapsed for mobile is\n// left exactly as its designer set it.\nif(tracks.length>1&&tracks[0]!==\"none\")add(el,\"smco-cc-grid1\");}}el=el.parentElement;hops++;}}catch(e){// Never let layout repair break the page.\n}};scan();let t=null;const onResize=()=>{clearTimeout(t);t=setTimeout(scan,150);};window.addEventListener(\"resize\",onResize);window.addEventListener(\"orientationchange\",onResize);return()=>{clearTimeout(t);window.removeEventListener(\"resize\",onResize);window.removeEventListener(\"orientationchange\",onResize);applied.forEach(pair=>releaseClass(pair[0],pair[1]));};},[]);}// Canonical SMCo theme hook — reads the Nav's `.dark` class on <html> (NOT prefers OS).\nfunction useDarkMode(){const[dark,setDark]=useState(false);useEffect(()=>{if(typeof document===\"undefined\")return;const root=document.documentElement;const read=()=>setDark(root.classList.contains(\"dark\")||root.getAttribute(\"data-theme\")===\"dark\");read();const on=()=>read();document.addEventListener(\"smco-theme-change\",on);const mo=typeof MutationObserver!==\"undefined\"?new MutationObserver(read):null;mo&&mo.observe(root,{attributes:true,attributeFilter:[\"class\",\"data-theme\"]});return()=>{document.removeEventListener(\"smco-theme-change\",on);mo&&mo.disconnect();};},[]);return dark;}export default function ContentCard(props){const{variant,linkBase,title,image,eyebrow,tags,byline,minutes,minutesSuffix,excerpt,slug,style}=props;const dark=useDarkMode();const[hover,setHover]=useState(false);// ── NESTED-ANCHOR GUARD (2026-08-09) ──────────────────────────────────────\n// This card used to render its root as <a href={href}>. Every CMS list on the\n// site wraps it in a Framer link already — <BlogPost link=\"/resources/blog/:slug\">\n// and <Recipe link=\"/resources/recipes/:slug\"> — so every card shipped as an\n// <a> inside an <a>. That is invalid HTML, and Framer's publish-time validator\n// treats it as a hard error: it aborts the ENTIRE optimization pass. No WebP,\n// no AVIF, no srcset, no lazy-loading — site-wide, on every image, not just\n// these pages. That is what put the red ERROR badge on the published site and\n// why a 2 MB PNG was being served to phones at full size.\n//\n// Fix: never render an <a> during SSR. Render a <div>, then on the client check\n// whether we are already inside an anchor. If we are (the normal CMS case), do\n// nothing — the wrapper handles navigation and owns the crawlable href. If we\n// are NOT (a standalone instance dropped straight onto a canvas), take over\n// navigation ourselves so the card still works.\n//\n// Do not \"simplify\" this back to an <a>. It will silently break image\n// optimization for the whole site again.\nconst rootRef=useRef(null);const[standalone,setStandalone]=useState(false);useEffect(()=>{const el=rootRef.current;if(!el||typeof el.closest!==\"function\")return;setStandalone(!el.closest(\"a\"));},[]);// See MOBILE / TABLET LAYOUT REPAIR (2026-08-12) above.\nuseMobileLayoutRepair(rootRef);const cardBg=dark?\"#15211C\":\"#FFFFFF\";const headInk=dark?\"#DCEBE0\":FOREST;const muted=dark?\"#9DB0A6\":\"#6B7A72\";const accent=dark?\"#B7D8C5\":\"#2E6B53\";const hairline=dark?\"rgba(255,255,255,0.10)\":\"rgba(27,58,47,0.12)\";// ── HUB-BASE RESOLUTION (2026-08-10) ──────────────────────────────────────\n// This only affects STANDALONE cards (see the guard above) — the ones that are\n// not wrapped in a Framer CMS link and therefore have to navigate from JS using\n// `linkBase`. The featured card on /resources/recipes/ is exactly that case, and\n// its instance carries linkBase=\"/resources/blog/\", so it sent every visitor to\n// /resources/blog/<recipe-slug>/ — a 404. That prop cannot be corrected through\n// the Framer MCP API (nodes nested inside a Collection List are not addressable),\n// so the base is resolved here instead.\n//\n// A hub index page's own path IS the correct base for its CMS detail route\n// (/resources/recipes/ -> /resources/recipes/:slug), so on those three hub pages\n// the URL is trusted over the prop. Everywhere else `linkBase` still wins exactly\n// as before, and wrapped cards are untouched — their href comes from the link\n// wrapper, not from here. Safe during SSR: `standalone` is false until the client\n// effect runs, and no href is ever written into the rendered markup.\nconst propBase=(linkBase||\"/\").trim();const rawPath=typeof window!==\"undefined\"?window.location.pathname:\"\";const pagePath=rawPath&&!rawPath.endsWith(\"/\")?rawPath+\"/\":rawPath;const base=HUB_PATH_RE.test(pagePath)?pagePath:propBase;const href=slug&&slug.trim()?base+(base.endsWith(\"/\")?\"\":\"/\")+slug.trim()+\"/\":\"\";const imgUrl=image&&image.trim()||\"\";const featured=variant===\"featured\";// Only ever navigate from here when nothing above us is already a link.\nconst canNavigate=standalone&&!!href;const go=()=>{if(canNavigate&&typeof window!==\"undefined\")window.location.href=href;};const navProps=canNavigate?{role:\"link\",tabIndex:0,onClick:go,onKeyDown:e=>{if(e.key===\"Enter\"||e.key===\" \"){e.preventDefault();go();}}}:{};const meta=[byline&&byline.trim()?byline.trim():\"\",minutes&&minutes>0?`${minutes} ${(minutesSuffix||\"min\").trim()}`:\"\",(tags||\"\").split(\",\").map(x=>x.trim()).filter(Boolean).join(\", \")].filter(Boolean);// TYPE SCALE LIFT (2026-08-16): chip fontSize featured 11 -> 13, grid 10.5 -> 13.\n// letterSpacing 0.12em -> 0.10em buys back the width the larger size costs, so the\n// \"Featured · <Tag>\" eyebrow still sets on one line.\nconst chip=text=>/*#__PURE__*/_jsx(\"span\",{style:{alignSelf:\"flex-start\",fontSize:13,fontWeight:700,letterSpacing:\"0.10em\",textTransform:\"uppercase\",color:FOREST,background:SAGE,borderRadius:999,padding:featured?\"5px 13px\":\"5px 11px\"},children:text});// TYPE SCALE LIFT (2026-08-16): metaRow fontSize featured 13 -> 14, grid 12.5 -> 14.\nconst metaRow=meta.length>0?/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",alignItems:\"center\",flexWrap:\"wrap\",gap:8,fontSize:14,fontWeight:600,color:muted},children:meta.map((m,i)=>/*#__PURE__*/_jsxs(\"span\",{style:{display:\"inline-flex\",alignItems:\"center\",gap:8},children:[i>0?/*#__PURE__*/_jsx(\"span\",{style:{opacity:.5},children:\"\\xb7\"}):null,m]},i))}):null;// TYPE SCALE LIFT (2026-08-16): cta fontSize featured 15 -> 16, grid 14 -> 16.\nconst cta=/*#__PURE__*/_jsx(\"span\",{style:{marginTop:featured?4:\"auto\",paddingTop:featured?0:4,fontSize:16,fontWeight:700,color:accent},children:\"Read more →\"});const shell={display:\"flex\",textDecoration:\"none\",cursor:\"pointer\",background:cardBg,border:`1px solid ${hairline}`,overflow:\"hidden\",width:\"100%\",fontFamily:FONT,transition:\"transform 320ms cubic-bezier(0.16,1,0.3,1), box-shadow 320ms cubic-bezier(0.16,1,0.3,1)\",...style};if(featured){return /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,...navProps,className:\"smco-cc-featured\",onMouseEnter:()=>setHover(true),onMouseLeave:()=>setHover(false),style:{...shell,flexWrap:\"wrap\",borderRadius:22,boxShadow:hover?\"0 20px 50px rgba(150,192,165,0.20)\":\"0 10px 34px rgba(14,32,24,0.10)\"},children:[/*#__PURE__*/_jsx(\"div\",{className:\"smco-cc-fmedia\",style:{flex:\"1 1 440px\",minWidth:280,minHeight:300,background:imgUrl?`url(\"${imgUrl}\") center/cover no-repeat`:\"linear-gradient(160deg, #96C0A5 0%, #3F5A49 100%)\"}}),/*#__PURE__*/_jsxs(\"div\",{className:\"smco-cc-fbody\",style:{flex:\"1 1 360px\",minWidth:280,padding:\"clamp(28px, 4vw, 52px)\",display:\"flex\",flexDirection:\"column\",justifyContent:\"center\",gap:16},children:[chip(eyebrow?\"Featured \\xb7 \"+eyebrow:\"Featured\"),/*#__PURE__*/_jsx(\"h2\",{style:{margin:0,fontSize:\"clamp(26px, 3vw, 40px)\",fontWeight:800,lineHeight:1.1,letterSpacing:\"-0.02em\",color:headInk},children:title}),excerpt?/*#__PURE__*/_jsx(\"p\",{className:\"smco-cc-fexcerpt\",style:{margin:0,fontSize:17,lineHeight:1.6,color:muted},children:excerpt}):null,metaRow,cta]})]});}return /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,...navProps,className:\"smco-cc-grid\",onMouseEnter:()=>setHover(true),onMouseLeave:()=>setHover(false),style:{...shell,flexDirection:\"column\",borderRadius:18,boxShadow:hover?\"0 18px 44px rgba(150,192,165,0.18)\":\"0 4px 14px rgba(14,14,14,0.05)\",transform:hover?\"translateY(-4px)\":\"translateY(0)\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",width:\"100%\",aspectRatio:\"3 / 2\",background:imgUrl?`url(\"${imgUrl}\") center/cover no-repeat`:\"linear-gradient(160deg, #96C0A5 0%, #3F5A49 100%)\"},children:eyebrow?/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",top:14,left:14},children:chip(eyebrow)}):null}),/*#__PURE__*/_jsxs(\"div\",{style:{padding:\"16px 20px 20px\",display:\"flex\",flexDirection:\"column\",gap:9,flex:1},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:20,fontWeight:700,lineHeight:1.22,letterSpacing:\"-0.01em\",color:headInk},children:title}),excerpt?/*#__PURE__*/_jsx(\"div\",{style:{fontSize:16,fontWeight:400,lineHeight:1.55,color:muted},children:excerpt}):null,metaRow,cta]})]});}ContentCard.defaultProps={variant:\"grid\",linkBase:\"/resources/blog/\",title:\"How to Temper Chocolate for a Glossy, Snappy Finish\",image:\"\",eyebrow:\"Recipes & Technique\",tags:\"\",byline:\"Therese Ludwig\",minutes:11,minutesSuffix:\"min read\",excerpt:\"The one step that turns dull, streaky chocolate into a mirror shine and a clean snap.\",slug:\"how-to-temper-chocolate-expert-techniques-for-perfect-results\"};addPropertyControls(ContentCard,{variant:{type:ControlType.Enum,title:\"Variant\",options:[\"grid\",\"featured\"],optionTitles:[\"Grid\",\"Featured\"],defaultValue:\"grid\",displaySegmentedControl:true},linkBase:{type:ControlType.String,title:\"Link Base\",defaultValue:\"/resources/blog/\"},title:{type:ControlType.String,title:\"Title\",defaultValue:\"\"},image:{type:ControlType.Image,title:\"Image\"},eyebrow:{type:ControlType.String,title:\"Eyebrow (Tag/Cuisine)\",defaultValue:\"\"},tags:{type:ControlType.String,title:\"Extra tags (comma)\",defaultValue:\"\"},byline:{type:ControlType.String,title:\"Byline (Author)\",defaultValue:\"\"},minutes:{type:ControlType.Number,title:\"Minutes\",defaultValue:0,displayStepper:true},minutesSuffix:{type:ControlType.String,title:\"Minutes suffix\",defaultValue:\"min read\"},excerpt:{type:ControlType.String,title:\"Excerpt\",displayTextArea:true,defaultValue:\"\"},slug:{type:ControlType.String,title:\"Slug\",defaultValue:\"\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ContentCard\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ContentCard.map"],"mappings":"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"}