{"version":3,"file":"ChefNote.CaZGg4bn.mjs","names":["React.useState","React.useRef","__esmMin","init_ssg_sandbox_shims","window","_e","de","p","init_npm_react_18_3_1","ce","init_framer_DcxuU94H","addPropertyControls","ControlType","ThemeFonts","CSS","useInView","v","setV","ref","io","margin","useIsMobile","m","setM","on","bp","ChefNote","props","mobile","words","picRef","seen","still","reduceMotion","effect","list","quote","raf","el","r","h","n","w","k","i","pic","image","name","style","tone","background","COL","TEXT","SEC","MAXW","GUT","flip","DISPLAY","role","T","text","linkLabel","link","TONES","TONE_OPTIONS","init_ChefNote","init_jsx_runtime","t"],"sources":["https:/framerusercontent.com/modules/Rm9OOnVfSwUpRet4gudl/48NIK0wnHB68CIM4Qyds/ChefNote.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";// Shared base for all Braise components: theme fonts, colours, spacing and small hooks.\n// (Inlined into every component at upload, because Framer code files can't import each other.)\n// Colours and fonts are CSS variables, so the owner can change them for the whole site in\n// Settings > Code > \"Braise settings (edit me)\" without touching any component.\nconst DISPLAY='var(--br-display, \"Braise Display\", \"Zodiak\", Georgia, serif)';const TEXT='var(--br-text, \"Braise Text\", \"Author\", system-ui, sans-serif)';const COL={bg:\"var(--br-page, #1A1917)\",panel:\"var(--br-panel, #242320)\",line:\"var(--br-line, #3A3834)\",mut:\"var(--br-muted, #8E8A83)\",ink:\"var(--br-text-color, #ECE6DC)\",black:\"var(--br-black, #000000)\",ok:\"var(--br-open, #8FA37E)\",warn:\"var(--br-closed, #B9826A)\"};// Five shades of charcoal: every section picks one, so neighbouring sections read as separate rooms.\nconst TONES={deep:\"var(--br-deep, #0D0C0B)\",dark:\"var(--br-dark, #141311)\",base:\"var(--br-page, #1A1917)\",raised:\"var(--br-raised, #23211F)\",light:\"var(--br-light, #2C2A27)\"};const tone=t=>TONES[t||\"base\"]||TONES.base;const TONE_OPTIONS={options:[\"deep\",\"dark\",\"base\",\"raised\",\"light\"],optionTitles:[\"Deepest\",\"Dark\",\"Base\",\"Raised\",\"Lightest\"]};const GUT=\"clamp(20px,4vw,56px)\";const SEC=\"clamp(56px,6.6vw,104px)\";const MAXW=1440;// Type scale (desktop -> phone through clamp)\nconst T={display:{fontFamily:DISPLAY,fontWeight:300,fontSize:\"clamp(52px,8.4vw,120px)\",lineHeight:.95,letterSpacing:\"-0.025em\"},h2:{fontFamily:DISPLAY,fontWeight:300,fontSize:\"clamp(34px,4.2vw,56px)\",lineHeight:1.05,letterSpacing:\"-0.02em\"},h3:{fontFamily:DISPLAY,fontWeight:400,fontSize:\"clamp(22px,1.9vw,26px)\",lineHeight:1.2,letterSpacing:\"-0.01em\"},body:{fontFamily:TEXT,fontWeight:400,fontSize:\"clamp(16px,1.25vw,18px)\",lineHeight:1.6},small:{fontFamily:TEXT,fontWeight:400,fontSize:15,lineHeight:1.45}};const CSS=`\n@font-face{font-family:\"Braise Display\";font-weight:300;font-style:normal;font-display:swap;src:url(https://framerusercontent.com/third-party-assets/fontshare/wf/IF5ZIT3FMSFNWCWOG7ZASDFHEMLSIUEE/OMOWAZNE73OKOHTUSHA6P7FH44MIVQTO/UREX64UV4XADQWU6EF6JRA5XVIEJPRP4.woff2) format(\"woff2\")}\n@font-face{font-family:\"Braise Display\";font-weight:400;font-style:normal;font-display:swap;src:url(https://framerusercontent.com/third-party-assets/fontshare/wf/ECUEQQ5BLZLFJS3PPLWOEEVS7SQONQMH/WNTXEMDDVWUVWDURRKDXCJC6G7TMP277/TBWKTFSYABV4KN4GNIJMAOQUOTYBUWB3.woff2) format(\"woff2\")}\n@font-face{font-family:\"Braise Text\";font-weight:400;font-style:normal;font-display:swap;src:url(https://framerusercontent.com/third-party-assets/fontshare/wf/UETRYMOV7YFW7JHYHVOHEDDKKQBRQ3FT/SYXMTMEWAJJEDDXMTQNSJQ2DG3V6IN2Z/S4GQQ4OYJXECEGW3QXXIXQSCERFDR6WC.woff2) format(\"woff2\")}\n@font-face{font-family:\"Braise Text\";font-weight:500;font-style:normal;font-display:swap;src:url(https://framerusercontent.com/third-party-assets/fontshare/wf/LTSH35TIMZ5MLLXHCSLOSG3NFKFIZONR/WF4NBOLSRS4ZNYNSQG4E4NROC7H2YIOE/6LYCTMFTSOH5KPOR5B2XLUTK5R6YPJEE.woff2) format(\"woff2\")}\n.br-btn{transition:background .25s,color .25s,border-color .25s}\n.br-btn:focus-visible,.br-chip:focus-visible,.br-focus:focus-visible{outline:2px solid currentColor;outline-offset:3px}\n.br-btn-solid:hover{background:#fff!important}\n.br-btn-line:hover{border-color:currentColor!important}\n`;function ThemeFonts(){return /*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:CSS}});}// Buttons: solid (linen on dark) and line (outline)\nfunction Button({href,onClick,children,line,small,type}){const st={display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",gap:10,boxSizing:\"border-box\",cursor:\"pointer\",padding:small?\"12px 18px\":\"16px 26px\",borderRadius:2,fontFamily:TEXT,fontWeight:500,fontSize:small?15:16,lineHeight:1,textDecoration:\"none\",whiteSpace:\"nowrap\",background:line?\"transparent\":COL.ink,color:line?COL.ink:COL.bg,border:`1px solid ${line?COL.line:\"transparent\"}`};const cls=\"br-btn \"+(line?\"br-btn-line\":\"br-btn-solid\");if(href)return /*#__PURE__*/_jsx(\"a\",{className:cls,href:href,style:st,children:children});return /*#__PURE__*/_jsx(\"button\",{className:cls,type:type||\"button\",onClick:onClick,style:{...st,appearance:\"none\"},children:children});}// 0..1 progress of an element moving through the viewport.\n// \"through\": 0 when its top hits the bottom of the screen, 1 when its bottom leaves the top.\n// \"top\": 0 when its top is at the top of the screen, 1 after scrolling its own height.\nfunction useScrollProgress(ref,mode=\"through\"){const[p,setP]=React.useState(0);React.useEffect(()=>{if(typeof window===\"undefined\")return;let raf=0;const on=()=>{cancelAnimationFrame(raf);raf=requestAnimationFrame(()=>{const el=ref.current;if(!el)return;const r=el.getBoundingClientRect(),h=window.innerHeight;const v=mode===\"top\"?-r.top/Math.max(1,r.height):(h-r.top)/(h+r.height);setP(Math.min(1,Math.max(0,v)));});};window.addEventListener(\"scroll\",on,{passive:true});window.addEventListener(\"resize\",on);on();return()=>{window.removeEventListener(\"scroll\",on);window.removeEventListener(\"resize\",on);cancelAnimationFrame(raf);};},[mode]);return p;}function useInView(ref,margin=\"-15%\"){const[v,setV]=React.useState(false);React.useEffect(()=>{if(typeof window===\"undefined\"||!ref.current)return;const io=new IntersectionObserver(([e])=>{if(e.isIntersecting){setV(true);io.disconnect();}},{rootMargin:`0px 0px ${margin} 0px`});io.observe(ref.current);return()=>io.disconnect();},[]);return v;}function useIsMobile(bp=810){const[m,setM]=React.useState(false);React.useEffect(()=>{if(typeof window===\"undefined\")return;const on=()=>setM(window.innerWidth<bp);on();window.addEventListener(\"resize\",on);return()=>window.removeEventListener(\"resize\",on);},[bp]);return m;}const reduceMotion=()=>typeof window!==\"undefined\"&&(!!window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches||window.BRAISE?.effects===false);const img=i=>i&&i.src?i:null;const settings=()=>typeof window!==\"undefined\"?window.BRAISE||{}:{};function money(n,currency){const c=currency||settings().currency||\"EUR\";try{return new Intl.NumberFormat(settings().locale||\"en-GB\",{style:\"currency\",currency:c,maximumFractionDigits:n%1?2:0}).format(n);}catch{return`${n} ${c}`;}}// Custom cursor that tells people what to do over an effect (\"Drag\", \"Scroll\"...). Desktop only;\n// on touch screens nothing changes. Usage: const hint = useCursorHint(\"Drag\"); <div {...hint.bind}>…</div>{hint.el}\nfunction useCursorHint(label,arrows=false,target){const el=React.useRef(null),arrow=React.useRef(null);const pos=React.useRef({x:0,y:0,tx:0,ty:0,on:false,raf:0});const[on,setOn]=React.useState(false);const loop=()=>{const p=pos.current;p.x+=(p.tx-p.x)*.22;p.y+=(p.ty-p.y)*.22;if(el.current)el.current.style.transform=`translate3d(${p.x-44}px, ${p.y-44}px, 0)`;// Optional arrow on the ring, always pointing at the target (e.g. the list to hover)\nif(arrow.current&&target?.current){const r=target.current.getBoundingClientRect();const tx=Math.min(r.right,Math.max(r.left,p.x)),ty=Math.min(r.bottom,Math.max(r.top,p.y));const inside=tx===p.x&&ty===p.y;arrow.current.style.opacity=inside?\"0\":\"1\";arrow.current.style.transform=`rotate(${Math.atan2(ty-p.y,tx-p.x)}rad)`;}if(p.on)p.raf=requestAnimationFrame(loop);};React.useEffect(()=>()=>cancelAnimationFrame(pos.current.raf),[]);const fine=typeof window!==\"undefined\"&&!!window.matchMedia?.(\"(hover: hover) and (pointer: fine)\").matches&&window.BRAISE?.cursorHints!==false;const bind=!label||!fine?{}:{onPointerEnter:e=>{if(e.pointerType!==\"mouse\")return;const p=pos.current;p.x=p.tx=e.clientX;p.y=p.ty=e.clientY;p.on=true;setOn(true);cancelAnimationFrame(p.raf);p.raf=requestAnimationFrame(loop);},onPointerMove:e=>{pos.current.tx=e.clientX;pos.current.ty=e.clientY;},onPointerLeave:()=>{pos.current.on=false;setOn(false);},style:{cursor:\"none\"}};const node=!label||!fine?null:/*#__PURE__*/_jsxs(\"div\",{ref:el,\"aria-hidden\":true,style:{position:\"fixed\",left:0,top:0,zIndex:70,width:88,height:88,borderRadius:88,pointerEvents:\"none\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",gap:6,background:\"rgba(236,230,220,.94)\",color:\"#141311\",fontFamily:TEXT,fontWeight:500,fontSize:14,letterSpacing:\"0.01em\",opacity:on?1:0,transition:\"opacity .45s ease\"},children:[arrows&&/*#__PURE__*/_jsx(\"span\",{style:{fontSize:15},children:\"‹\"}),label,arrows&&/*#__PURE__*/_jsx(\"span\",{style:{fontSize:15},children:\"›\"}),target&&/*#__PURE__*/_jsx(\"div\",{ref:arrow,style:{position:\"absolute\",inset:-22,transition:\"opacity .25s\"},children:/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",right:0,top:\"50%\",marginTop:-9,width:0,height:0,borderTop:\"9px solid transparent\",borderBottom:\"9px solid transparent\",borderLeft:\"13px solid rgba(236,230,220,.94)\"}})})]});return{bind,el:node};}// Embers rising from a fire. from/to/at = where they start (fractions of the width/height).\n// follow: sparks are drawn towards the pointer; otherwise they move out of its way.\nfunction Embers({amount=100,color=\"#F29A4A\",from=0,to=1,at=1,follow=false,spread=1}){const cv=React.useRef(null);React.useEffect(()=>{const c=cv.current;if(!c||reduceMotion()||!amount)return;const ctx=c.getContext(\"2d\");let W=0,H=0,raf=0,vis=true;const mouse={x:-9999,y:-9999,on:false};const size=()=>{W=c.clientWidth;H=c.clientHeight;c.width=W;c.height=H;};size();const n=Math.round(Math.min(90,W*H/14e3)*(amount/100));const mk=fresh=>{const sx=(from+Math.random()*(to-from))*W,sy=at*H;return{x:sx,y:fresh?sy-Math.random()*sy:sy+Math.random()*20,vx:0,r:.7+Math.random()*2.2,vy:.35+Math.random()*1.1,ph:Math.random()*6.28,life:.55+Math.random()*.45,f:Math.random()*6.28,y0:sy};};const ps=Array.from({length:n},()=>mk(true));const spr=document.createElement(\"canvas\");spr.width=spr.height=32;const s2=spr.getContext(\"2d\");const g=s2.createRadialGradient(16,16,0,16,16,16);g.addColorStop(0,\"#fff\");g.addColorStop(.18,color);g.addColorStop(1,\"rgba(0,0,0,0)\");s2.fillStyle=g;s2.fillRect(0,0,32,32);const tick=()=>{raf=requestAnimationFrame(tick);if(!vis)return;ctx.clearRect(0,0,W,H);ctx.globalCompositeOperation=\"lighter\";for(const e of ps){e.ph+=.014;e.f+=.16;e.y-=e.vy;e.x+=Math.sin(e.ph)*.4*spread+e.vx;const dx=mouse.x-e.x,dy=mouse.y-e.y,d2=dx*dx+dy*dy;if(follow&&mouse.on&&d2<16e4){e.vx+=dx*45e-5;e.y-=dy<0?.15:0;}else if(!follow&&d2<22e3){const k=(1-d2/22e3)*1.6;e.x-=dx/Math.sqrt(d2+1)*k;e.y-=dy/Math.sqrt(d2+1)*k;}e.vx*=.96;const fade=Math.min(1,(e.y+10)/(e.y0*.95+1))*e.life*(.6+.4*Math.sin(e.f));if(e.y<-10||e.x<-20||e.x>W+20||fade<=.01)Object.assign(e,mk(false));ctx.globalAlpha=Math.max(0,Math.min(1,fade));const z=e.r*7;ctx.drawImage(spr,e.x-z/2,e.y-z/2,z,z);}};const mv=ev=>{const r=c.getBoundingClientRect();mouse.x=ev.clientX-r.left;mouse.y=ev.clientY-r.top;mouse.on=mouse.x>=0&&mouse.y>=0&&mouse.x<=W&&mouse.y<=H;};const io=new IntersectionObserver(([en])=>{vis=en.isIntersecting;});io.observe(c);window.addEventListener(\"resize\",size);window.addEventListener(\"pointermove\",mv);raf=requestAnimationFrame(tick);return()=>{cancelAnimationFrame(raf);io.disconnect();window.removeEventListener(\"resize\",size);window.removeEventListener(\"pointermove\",mv);};},[amount,color,from,to,at,follow,spread]);return /*#__PURE__*/_jsx(\"canvas\",{ref:cv,\"aria-hidden\":true,style:{position:\"absolute\",inset:0,width:\"100%\",height:\"100%\",pointerEvents:\"none\"}});}/**\n * Chef Note - a few words from the kitchen. As you scroll, the words light up one by one, like embers catching.\n * The portrait is uncovered from the bottom when it comes into view.\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight auto\n * @framerIntrinsicWidth 1200\n */export default function ChefNote(props){const{quote,name,role,image,text,linkLabel,link,flip,background,effect,style}=props;const mobile=useIsMobile();const ref=React.useRef(null);const words=React.useRef([]);const picRef=React.useRef(null);const seen=useInView(picRef,\"-10%\");const still=reduceMotion()||effect===false;const list=String(quote||\"\").split(/\\s+/).filter(Boolean);React.useEffect(()=>{if(typeof window===\"undefined\"||still)return;let raf=0;const on=()=>{cancelAnimationFrame(raf);raf=requestAnimationFrame(()=>{const el=ref.current;if(!el)return;const r=el.getBoundingClientRect(),h=window.innerHeight;// words light up while the section moves from 85% to 35% of the screen height\nconst p=Math.min(1,Math.max(0,(h*.85-r.top)/(h*.5+r.height*.35)));const n=words.current.length;words.current.forEach((w,i)=>{if(w){const k=Math.min(1,Math.max(0,p*(n+4)-i)/4);w.style.opacity=String(.16+.84*k);w.style.color=k>0&&k<1?\"#F2C79A\":\"\";}});});};on();window.addEventListener(\"scroll\",on,{passive:true});window.addEventListener(\"resize\",on);return()=>{window.removeEventListener(\"scroll\",on);window.removeEventListener(\"resize\",on);cancelAnimationFrame(raf);};},[quote,still]);const pic=image?.src&&/*#__PURE__*/_jsx(\"div\",{ref:picRef,style:{overflow:\"hidden\",clipPath:seen||still?\"inset(0 0 0 0)\":\"inset(100% 0 0 0)\",transition:\"clip-path 1.4s cubic-bezier(.7,0,.2,1)\"},children:/*#__PURE__*/_jsx(\"img\",{src:image.src,srcSet:image.srcSet,alt:image.alt||name||\"\",loading:\"lazy\",style:{display:\"block\",width:\"100%\",aspectRatio:\"4/5\",objectFit:\"cover\",transform:seen||still?\"scale(1)\":\"scale(1.15)\",transition:\"transform 1.8s cubic-bezier(.2,.7,.2,1)\"}})});return /*#__PURE__*/_jsxs(\"section\",{ref:ref,style:{...style,width:\"100%\",background:tone(background),color:COL.ink,fontFamily:TEXT,fontSize:16,padding:`${SEC} 0`},children:[/*#__PURE__*/_jsx(ThemeFonts,{}),/*#__PURE__*/_jsxs(\"div\",{style:{maxWidth:MAXW,margin:\"0 auto\",padding:`0 ${GUT}`,display:\"grid\",gridTemplateColumns:mobile?\"1fr\":flip?\"minmax(0,7fr) minmax(0,4fr)\":\"minmax(0,4fr) minmax(0,7fr)\",gap:mobile?36:\"clamp(48px,7vw,112px)\",alignItems:\"center\"},children:[!flip&&pic,/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"blockquote\",{style:{margin:0,fontFamily:DISPLAY,fontWeight:300,fontSize:\"clamp(30px,3.6vw,54px)\",lineHeight:1.14,letterSpacing:\"-0.02em\",maxWidth:\"22ch\"},children:list.map((w,i)=>/*#__PURE__*/_jsxs(\"span\",{ref:el=>{words.current[i]=el;},style:{opacity:still?1:.16,transition:\"color .6s\"},children:[w,i<list.length-1?\" \":\"\"]},i))}),(name||role)&&/*#__PURE__*/_jsxs(\"p\",{style:{...T.small,fontSize:15,margin:\"32px 0 0\"},children:[name,/*#__PURE__*/_jsx(\"span\",{style:{color:COL.mut},children:role?`, ${role}`:\"\"})]}),text&&/*#__PURE__*/_jsx(\"p\",{style:{...T.body,color:COL.mut,margin:\"24px 0 0\",maxWidth:\"50ch\"},children:text}),linkLabel&&/*#__PURE__*/_jsx(\"a\",{href:link,className:\"br-focus\",style:{display:\"inline-block\",marginTop:28,color:COL.ink,fontSize:15,textUnderlineOffset:5},children:linkLabel})]}),flip&&pic]})]});}ChefNote.defaultProps={effect:true,quote:\"We cook with one fire and whatever the farms bring that week. The menu is decided on Tuesday morning.\",name:\"Jonas Holm\",role:\"head chef\",text:\"Jonas opened Braise in 2019 after ten years in kitchens across Copenhagen and San Sebasti\\xe1n. Most vegetables come from two farms within an hour of the city.\",linkLabel:\"Read our story\",link:\"/story\",flip:false,background:\"base\"};addPropertyControls(ChefNote,{quote:{type:ControlType.String,title:\"Quote\",displayTextArea:true},name:{type:ControlType.String,title:\"Name\"},role:{type:ControlType.String,title:\"Role\"},image:{type:ControlType.ResponsiveImage,title:\"Portrait\"},text:{type:ControlType.String,title:\"Text\",displayTextArea:true},linkLabel:{type:ControlType.String,title:\"Link text\"},link:{type:ControlType.String,title:\"Link\"},flip:{type:ControlType.Boolean,title:\"Photo on the right\"},background:{type:ControlType.Enum,title:\"Background\",...TONE_OPTIONS},effect:{type:ControlType.Boolean,title:\"Effect\",description:\"Off = the section stays still.\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ChefNote\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"1200\",\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ChefNote.map"],"mappings":"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"}