{"version":3,"file":"SillageNotePyramid.D2P2iIVz.mjs","names":["React.useRef","React.useState","__esmMin","init_ssg_sandbox_shims","window","_e","de","p","init_npm_react_18_3_1","ce","init_framer_B1b760uK","ControlType","addPropertyControls","SillageNotePyramid","props","rootRef","spineRef","shown","setShown","isStatic","setIsStatic","rm","line","raf","queued","cur","update","el","r","vh","target","onScroll","late","seenHidden","done","show","io","entries","settle","safety","rows","topNotes","heartNotes","baseNotes","EASE","i","SANS","GOLD","SERIF","BONE","concentration","size","init_SillageNotePyramid","init_jsx_runtime"],"sources":["https:/framerusercontent.com/modules/1IObhwcHWMsg84XLZxqk/i4uJXCTmueYeAIvPP5tr/SillageNotePyramid.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";// SILLAGE — note pyramid: top / heart / base notes reveal staggered on scroll.\nconst BONE=\"#EDE4D3\";const GOLD=\"#B99659\";const SERIF=\"'Cormorant Garamond', 'Times New Roman', serif\";const SANS=\"'Switzer', -apple-system, 'Helvetica Neue', sans-serif\";const EASE=\"cubic-bezier(.16,1,.3,1)\";/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n * @framerIntrinsicWidth 640\n */export default function SillageNotePyramid(props){const{topNotes,heartNotes,baseNotes,concentration,size}=props;const rootRef=React.useRef(null);const spineRef=React.useRef(null);const[shown,setShown]=React.useState(false);const[isStatic,setIsStatic]=React.useState(false);// gold spine: a hairline that draws itself DOWN the pyramid, scrubbed by\n// scroll (stroke-dashoffset mutated directly — no re-renders).\nReact.useEffect(()=>{const rm=window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;const line=spineRef.current;if(!line)return;if(rm){line.style.strokeDashoffset=\"0\";return;}let raf=0;let queued=false;let cur=1;const update=()=>{queued=false;const el=rootRef.current;if(!el)return;const r=el.getBoundingClientRect();const vh=window.innerHeight;const p=Math.max(0,Math.min(1,(vh*.88-r.top)/(r.height*.95)));const target=1-p;cur+=(target-cur)*.16;if(Math.abs(target-cur)<.003)cur=target;line.style.strokeDashoffset=cur.toFixed(4);if(cur!==target&&!queued){queued=true;raf=requestAnimationFrame(update);}};const onScroll=()=>{if(!queued){queued=true;raf=requestAnimationFrame(update);}};window.addEventListener(\"scroll\",onScroll,{passive:true});window.addEventListener(\"resize\",onScroll);onScroll();const late=setTimeout(onScroll,800);return()=>{window.removeEventListener(\"scroll\",onScroll);window.removeEventListener(\"resize\",onScroll);cancelAnimationFrame(raf);clearTimeout(late);};},[]);React.useEffect(()=>{const rm=window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches;if(rm){setIsStatic(true);setShown(true);return;}const el=rootRef.current;if(!el)return;let seenHidden=false;let done=false;const show=()=>{if(done)return;done=true;setShown(true);};const io=new IntersectionObserver(entries=>{const en=entries[0];if(!en.isIntersecting){seenHidden=true;return;}if(seenHidden){show();io.disconnect();}},{threshold:.08,rootMargin:\"0px 0px 60px 0px\"}// 10-23: was 260px band — elements inside the band at load never revealed\n);io.observe(el);const settle=setTimeout(()=>{const r=el.getBoundingClientRect();const vh=window.innerHeight;if(r.top<vh+60&&r.bottom>0)show()// 10-23 r3: anything in or just below view at load reveals now\n;else seenHidden=true;},typeof window!==\"undefined\"&&window.innerWidth<1e3?0:420);const safety=setTimeout(()=>{const r=el.getBoundingClientRect();if(r.top<window.innerHeight&&r.bottom>0)show();},4200);return()=>{io.disconnect();clearTimeout(settle);clearTimeout(safety);};},[]);const rows=[{label:\"Top\",notes:topNotes,w:120},{label:\"Heart\",notes:heartNotes,w:210},{label:\"Base\",notes:baseNotes,w:300}];return /*#__PURE__*/_jsxs(\"div\",{ref:rootRef,style:{width:\"100%\",display:\"flex\",flexDirection:\"column\",alignItems:\"center\",gap:0,position:\"relative\",...props.style},children:[/*#__PURE__*/_jsx(\"svg\",{\"aria-hidden\":true,width:\"2\",height:\"100%\",viewBox:\"0 0 2 100\",preserveAspectRatio:\"none\",style:{position:\"absolute\",left:\"50%\",top:0,height:\"calc(100% - 64px)\",transform:\"translateX(-50%)\",pointerEvents:\"none\"},children:/*#__PURE__*/_jsx(\"line\",{ref:spineRef,x1:\"1\",y1:\"0\",x2:\"1\",y2:\"100\",pathLength:1,stroke:\"rgba(185,150,89,0.34)\",strokeWidth:\"1\",strokeDasharray:\"1\",strokeDashoffset:\"1\",vectorEffect:\"non-scaling-stroke\"})}),rows.map((r,i)=>/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",alignItems:\"center\",zIndex:1,padding:\"26px 0\",opacity:shown?1:0,transform:shown?\"translateY(0px)\":\"translateY(30px)\",transition:isStatic?\"none\":`opacity 0.6s ${EASE} ${.1*i}s, transform 0.7s ${EASE} ${.1*i}s`},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontFamily:SANS,fontSize:12,letterSpacing:\"0.3em\",textTransform:\"uppercase\",color:GOLD,marginBottom:12},children:r.label}),/*#__PURE__*/_jsx(\"div\",{style:{fontFamily:SERIF,fontWeight:400,fontSize:\"clamp(24px, 3vw, 34px)\",lineHeight:1.2,color:BONE,textAlign:\"center\"},children:r.notes}),/*#__PURE__*/_jsx(\"div\",{style:{width:r.w,maxWidth:\"70vw\",height:1,marginTop:24,background:\"rgba(185,150,89,0.5)\",transform:shown?\"scaleX(1)\":\"scaleX(0)\",transformOrigin:\"50% 50%\",transition:isStatic?\"none\":`transform 0.8s ${EASE} ${.12+.1*i}s`}})]},i)),/*#__PURE__*/_jsxs(\"div\",{style:{marginTop:22,fontFamily:SANS,fontSize:12,letterSpacing:\"0.18em\",textTransform:\"uppercase\",color:\"rgb(214,206,192)\",position:\"relative\",zIndex:1,opacity:shown?1:0,transition:isStatic?\"none\":`opacity 0.5s ${EASE} 0.25s`},children:[concentration,\" \\xb7 \",size]})]});}SillageNotePyramid.defaultProps={topNotes:\"Bergamot, Pink Pepper\",heartNotes:\"Leather Accord, Iris Pallida\",baseNotes:\"Incense, Vetiver, Labdanum\",concentration:\"Extrait de Parfum\",size:\"50 ml\"};addPropertyControls(SillageNotePyramid,{topNotes:{type:ControlType.String,title:\"Top Notes\",defaultValue:\"Bergamot, Pink Pepper\"},heartNotes:{type:ControlType.String,title:\"Heart Notes\",defaultValue:\"Leather Accord, Iris Pallida\"},baseNotes:{type:ControlType.String,title:\"Base Notes\",defaultValue:\"Incense, Vetiver, Labdanum\"},concentration:{type:ControlType.String,title:\"Concentration\",defaultValue:\"Extrait de Parfum\"},size:{type:ControlType.String,title:\"Size\",defaultValue:\"50 ml\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SillageNotePyramid\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"640\",\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SillageNotePyramid.map"],"mappings":"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"}