{"version":3,"file":"CaseStudySidePanel.CGbh9aUc.mjs","names":["useRef","useState","p"],"sources":["https:/framerusercontent.com/modules/iqpuVmx9yqIy0a3NQsil/VlylTc2wLQhRWksZonVJ/CaseStudySidePanel.js"],"sourcesContent":["// CaseStudySidePanel ‚Äî Sticky side panel TOC for Framer case study pages.\n//\n// What it does:\n//   - Renders a vertical list of section links (Intro, Mission, etc.)\n//   - Clicking a link smooth-scrolls to that section in the page\n//   - Active state automatically tracks the section currently in view\n//     (ScrollSpy via IntersectionObserver)\n//   - Appears with your TextFadeUp animation when it enters viewport\n//   - Optionally wrapped in liquid glass material to match NavBar\n//\n// Setup:\n//   1. In Framer: Assets ‚Üí Code ‚Üí \"+\" ‚Üí New Code File. Name it\n//      \"CaseStudySidePanel\" ‚Üí paste this file ‚Üí save.\n//   2. Drop the component onto your case study page.\n//   3. For each item in the \"Sections\" array, set:\n//      - Label: what the user sees (\"Intro\", \"Mission\", \"Outcome\")\n//      - Section ID: must match the ID set on the corresponding\n//        section element in Framer.\n//   4. On the case study page itself, give each section element an ID:\n//      - Select the section frame in Framer\n//      - In the right panel under \"Identity\" ‚Üí set Name & ID\n//      - The ID is what this component scrolls to.\n/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{motion,useInView}from\"framer-motion\";import{useEffect,useRef,useState}from\"react\";// Matches the user's TextFadeUp override:\n//   ease: [0.05, 1, 0.4, 1], duration: 1.5\nconst FADE_UP_EASE=[.05,1,.4,1];function applyOpacity(color,alpha){if(!color)return`rgba(255, 255, 255, ${alpha})`;const trimmed=color.trim();if(trimmed.startsWith(\"#\")){let hex=trimmed.slice(1);if(hex.length===3){hex=hex.split(\"\").map(c=>c+c).join(\"\");}if(hex.length>=6){const r=parseInt(hex.slice(0,2),16);const g=parseInt(hex.slice(2,4),16);const b=parseInt(hex.slice(4,6),16);return`rgba(${r}, ${g}, ${b}, ${alpha})`;}}const m=trimmed.match(/rgba?\\(\\s*(\\d+)[,\\s]+(\\d+)[,\\s]+(\\d+)/);if(m)return`rgba(${m[1]}, ${m[2]}, ${m[3]}, ${alpha})`;return trimmed;}export default function CaseStudySidePanel(props){const{sections,scrollOffset,enableSticky,stickyTop,useGlassMaterial,fillColor,trackOpacity,glassBlur,glassSaturation,edgeHighlight,edgeBorder,innerShadow,shadowStrength,padding,borderRadius,fontFamily,fontSize,fontWeight,letterSpacing,titleText,showTitle,titleFontSize,titleFontWeight,titleColor,inactiveColor,activeColor,hoverColor,activeFontWeight,itemSpacing,itemPaddingV,itemPaddingH,showActiveIndicator,activeIndicatorColor,activeIndicatorWidth,enableEntranceAnimation,animationDuration,animationDelay,animationItemStagger}=props;const containerRef=useRef(null);// Skip the \"once\" gate when not in published preview ‚Äî on canvas this\n// would lock items into the post-animation state.\nconst isCanvas=RenderTarget.current()===RenderTarget.canvas;const isInView=useInView(containerRef,{once:true,margin:\"-40px\"});const[activeSection,setActiveSection]=useState(null);const[hoveredIndex,setHoveredIndex]=useState(null);// ScrollSpy ‚Äî observe all configured sections and mark the most-visible\n// one as active. Uses IntersectionObserver with a rootMargin offset\n// matching `scrollOffset` so the \"active\" section flips when the\n// section crosses just under any fixed nav.\nuseEffect(()=>{if(typeof window===\"undefined\")return;if(isCanvas)return;// skip observer on canvas ‚Äî no real scroll\nconst observed=[];sections.forEach(({sectionId})=>{if(!sectionId)return;const el=document.getElementById(sectionId);if(el)observed.push(el);});if(observed.length===0)return;// Init active section to the first observed section\nif(observed[0])setActiveSection(observed[0].id);const observer=new IntersectionObserver(entries=>{// Update active to the entry with the largest visible area\nconst visible=entries.filter(e=>e.isIntersecting).sort((a,b)=>b.intersectionRatio-a.intersectionRatio);if(visible.length>0){setActiveSection(visible[0].target.id);}},{rootMargin:`-${scrollOffset+20}px 0px -50% 0px`,threshold:[0,.1,.25,.5,.75,1]});observed.forEach(el=>observer.observe(el));return()=>observer.disconnect();},[sections,scrollOffset,isCanvas]);const scrollToSection=sectionId=>{if(typeof window===\"undefined\"||!sectionId)return;const el=document.getElementById(sectionId);if(!el){console.warn(`[CaseStudySidePanel] No element found with id=\"${sectionId}\". Set the section's ID in Framer under Identity.`);return;}const top=el.getBoundingClientRect().top+window.pageYOffset-scrollOffset;window.scrollTo({top,behavior:\"smooth\"});// Optimistically update active so the highlight commits immediately\nsetActiveSection(sectionId);};// ---- Glass material (when enabled) ‚Äî matches NavBar / GlassButton ----\nconst glassFilter=`blur(${glassBlur}px) saturate(${glassSaturation}%)`;const glassBackground=[`linear-gradient(180deg,`,`  rgba(255,255,255, ${edgeHighlight*.55}) 0%,`,`  rgba(255,255,255, ${edgeHighlight*.12}) 22%,`,`  rgba(255,255,255, 0) 50%,`,`  rgba(0,0,0, 0.04) 100%)`,`, ${applyOpacity(fillColor,trackOpacity)}`].join(\" \").replace(/\\s+/g,\" \");const glassBoxShadow=[`inset 0 1.5px 0 rgba(255, 255, 255, ${Math.min(1,edgeHighlight+.15)})`,`inset 0 -1px 0 rgba(0, 0, 0, 0.06)`,`inset 0 0 0 1px rgba(0, 0, 0, ${edgeBorder})`,`inset 0 -10px 12px -10px rgba(0, 0, 0, ${innerShadow})`,`0 1px 1px rgba(0, 0, 0, ${shadowStrength*.25})`,`0 8px 24px -8px rgba(0, 0, 0, ${shadowStrength*1.1})`,`0 24px 40px -16px rgba(0, 0, 0, ${shadowStrength*.7})`].join(\", \");// Animation: matches TextFadeUp exactly.\n// On canvas, run a single quick play so Framer designers can see the\n// state without it being permanently animated/hidden.\nconst animationProps=enableEntranceAnimation?{initial:{opacity:0,y:8,filter:\"blur(6px)\"},animate:isCanvas||isInView?{opacity:1,y:0,filter:\"blur(0px)\"}:{opacity:0,y:8,filter:\"blur(6px)\"},transition:{duration:animationDuration,ease:FADE_UP_EASE,delay:animationDelay}}:{};const itemEnter=i=>enableEntranceAnimation?{initial:{opacity:0,y:8,filter:\"blur(6px)\"},animate:isCanvas||isInView?{opacity:1,y:0,filter:\"blur(0px)\"}:{opacity:0,y:8,filter:\"blur(6px)\"},transition:{duration:animationDuration,ease:FADE_UP_EASE,delay:animationDelay+(i+(showTitle?1:0))*animationItemStagger}}:{};return /*#__PURE__*/_jsxs(motion.div,{ref:containerRef,style:{display:\"flex\",flexDirection:\"column\",gap:itemSpacing,padding:useGlassMaterial?padding:0,borderRadius:useGlassMaterial?borderRadius:0,background:useGlassMaterial?glassBackground:\"transparent\",backdropFilter:useGlassMaterial?glassFilter:undefined,WebkitBackdropFilter:useGlassMaterial?glassFilter:undefined,boxShadow:useGlassMaterial?glassBoxShadow:undefined,fontFamily,width:\"100%\",boxSizing:\"border-box\",// Sticky positioning ‚Äî keeps the panel pinned within its\n// parent scroll container as the user scrolls past it.\n// For this to work in Framer, the panel needs to live in\n// a column/stack alongside the case study content (not\n// inside a fixed-height container).\nposition:enableSticky?\"sticky\":\"static\",top:enableSticky?stickyTop:undefined,alignSelf:enableSticky?\"flex-start\":undefined},...animationProps,children:[showTitle&&titleText&&/*#__PURE__*/_jsx(motion.div,{style:{fontSize:titleFontSize,fontWeight:titleFontWeight,color:titleColor,letterSpacing,marginBottom:4},...enableEntranceAnimation?{initial:{opacity:0,y:8,filter:\"blur(6px)\"},animate:isCanvas||isInView?{opacity:1,y:0,filter:\"blur(0px)\"}:{opacity:0,y:8,filter:\"blur(6px)\"},transition:{duration:animationDuration,ease:FADE_UP_EASE,delay:animationDelay}}:{},children:titleText}),sections.map((section,i)=>{const isActive=activeSection===section.sectionId;const isHovered=hoveredIndex===i;// Color priority: active > hover > inactive\nconst itemColor=isActive?activeColor:isHovered?hoverColor:inactiveColor;return /*#__PURE__*/_jsxs(motion.button,{onClick:()=>scrollToSection(section.sectionId),onMouseEnter:()=>setHoveredIndex(i),onMouseLeave:()=>setHoveredIndex(null),type:\"button\",style:{position:\"relative\",display:\"flex\",alignItems:\"center\",border:0,background:\"transparent\",padding:`${itemPaddingV}px ${itemPaddingH}px`,paddingLeft:showActiveIndicator?itemPaddingH+activeIndicatorWidth+8:itemPaddingH,fontFamily,fontSize,fontWeight:isActive?activeFontWeight:fontWeight,letterSpacing,color:itemColor,transition:\"color 220ms cubic-bezier(0.32, 0.72, 0, 1), font-weight 220ms cubic-bezier(0.32, 0.72, 0, 1)\",cursor:\"pointer\",textAlign:\"left\",borderRadius:8,// KILL all browser default button styling that\n// creates outlines, focus boxes, and weird\n// tap highlights.\noutline:\"none\",appearance:\"none\",WebkitAppearance:\"none\",WebkitTapHighlightColor:\"transparent\",whiteSpace:\"nowrap\"},...itemEnter(i),children:[showActiveIndicator&&/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":\"true\",style:{position:\"absolute\",left:itemPaddingH,top:\"50%\",transform:\"translateY(-50%)\",width:activeIndicatorWidth,height:isActive?14:4,borderRadius:999,background:isActive?activeIndicatorColor:applyOpacity(activeIndicatorColor,.2),transition:\"height 320ms cubic-bezier(0.23, 1, 0.32, 1), background 320ms cubic-bezier(0.23, 1, 0.32, 1)\"}}),section.label]},i);})]});}addPropertyControls(CaseStudySidePanel,{// ---- Sections ----\nsections:{type:ControlType.Array,title:\"Sections\",control:{type:ControlType.Object,controls:{label:{type:ControlType.String,title:\"Label\",defaultValue:\"Intro\",description:\"What the user sees in the panel.\"},sectionId:{type:ControlType.String,title:\"Section ID\",defaultValue:\"intro\",placeholder:\"intro\",description:\"Must match the ID set on the section element in Framer (Identity ‚\\xdc\\xed Name / ID).\"}}},defaultValue:[{label:\"Intro\",sectionId:\"intro\"},{label:\"Mission\",sectionId:\"mission\"},{label:\"Process\",sectionId:\"process\"},{label:\"Outcome\",sectionId:\"outcome\"}]},// ---- Title ----\nshowTitle:{type:ControlType.Boolean,title:\"Show Title\",defaultValue:false},titleText:{type:ControlType.String,title:\"Title\",defaultValue:\"Contents\",hidden:p=>!p.showTitle},titleFontSize:{type:ControlType.Number,title:\"Title Size\",defaultValue:13,min:10,max:22,step:.5,unit:\"px\",hidden:p=>!p.showTitle},titleFontWeight:{type:ControlType.Number,title:\"Title Weight\",defaultValue:600,min:100,max:900,step:100,hidden:p=>!p.showTitle},titleColor:{type:ControlType.Color,title:\"Title Color\",defaultValue:\"rgba(0, 0, 0, 0.4)\",hidden:p=>!p.showTitle},// ---- Scroll behavior ----\nscrollOffset:{type:ControlType.Number,title:\"Scroll Offset\",defaultValue:80,min:0,max:240,step:4,unit:\"px\",description:\"Extra space above the section when scrolling to it. Set to your fixed nav height + a small buffer.\"},// ---- Sticky positioning ----\nenableSticky:{type:ControlType.Boolean,title:\"Sticky\",defaultValue:true,description:\"Pins the panel as the user scrolls. Requires the panel to live in a column/stack alongside your case study content (not a fixed-height container).\"},stickyTop:{type:ControlType.Number,title:\"Sticky Top\",defaultValue:120,min:0,max:400,step:4,unit:\"px\",description:\"Distance from the top of the viewport when the panel sticks. Should clear your fixed nav.\",hidden:p=>!p.enableSticky},// ---- Item layout ----\nitemSpacing:{type:ControlType.Number,title:\"Item Gap\",defaultValue:16,min:0,max:32,step:1,unit:\"px\",description:\"Vertical gap between items. Generous (14‚\\xc4\\xec20px) gives each item breathing room ‚\\xc4\\xee the refined look. Tight (2‚\\xc4\\xec6px) makes them cramped.\"},itemPaddingV:{type:ControlType.Number,title:\"Item Pad V\",defaultValue:6,min:0,max:24,step:1,unit:\"px\"},itemPaddingH:{type:ControlType.Number,title:\"Item Pad H\",defaultValue:0,min:0,max:24,step:1,unit:\"px\"},// ---- Typography ----\nfontFamily:{type:ControlType.String,title:\"Font\",defaultValue:\"Inter, -apple-system, BlinkMacSystemFont, sans-serif\",description:\"Explicit font family. Inter matches Framer's default body text. Change here if you use a different font on the page.\"},fontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:17,min:10,max:24,step:.5,unit:\"px\",description:\"17px matches Framer's default body text. Bump to 18-20 for a more prominent TOC.\"},fontWeight:{type:ControlType.Number,title:\"Font Weight\",defaultValue:400,min:100,max:900,step:100,description:\"Inactive items' weight. Regular (400) matches body text.\"},activeFontWeight:{type:ControlType.Number,title:\"Active Weight\",defaultValue:400,min:100,max:900,step:100,description:\"Active item's weight. Default 400 matches inactive ‚\\xc4\\xee refined sites differentiate by color alone (Caleb Wu / Apple style). Bump to 500‚\\xc4\\xec600 only if you want weight + color hierarchy.\"},letterSpacing:{type:ControlType.Number,title:\"Letter Spacing\",defaultValue:0,min:-2,max:2,step:.05,unit:\"px\"},inactiveColor:{type:ControlType.Color,title:\"Inactive Color\",defaultValue:\"rgba(0, 0, 0, 0.55)\",description:\"Inactive item color. 0.55 = clearly readable but receded. Lower (0.4) makes items feel washed out; higher (0.7+) reduces hierarchy with active.\"},activeColor:{type:ControlType.Color,title:\"Active Color\",defaultValue:\"#000\"},hoverColor:{type:ControlType.Color,title:\"Hover Color\",defaultValue:\"rgba(0, 0, 0, 0.7)\",description:\"Color on cursor hover (only for non-active items).\"},// ---- Active indicator ----\nshowActiveIndicator:{type:ControlType.Boolean,title:\"Active Indicator\",defaultValue:false,description:\"Vertical pill on the left of each item; grows when active. Off = clean text-only (color differentiation only).\"},activeIndicatorColor:{type:ControlType.Color,title:\"Indicator Color\",defaultValue:\"#000\",hidden:p=>!p.showActiveIndicator},activeIndicatorWidth:{type:ControlType.Number,title:\"Indicator Width\",defaultValue:2,min:1,max:6,step:1,unit:\"px\",hidden:p=>!p.showActiveIndicator},// ---- Glass material (optional) ----\nuseGlassMaterial:{type:ControlType.Boolean,title:\"Glass Material\",defaultValue:false,description:\"Wrap the panel in liquid glass material matching NavBar/GlassButton. Off = clean text-only TOC.\"},fillColor:{type:ControlType.Color,title:\"Fill\",defaultValue:\"#FFFFFF\",hidden:p=>!p.useGlassMaterial},trackOpacity:{type:ControlType.Number,title:\"Track Opacity\",defaultValue:.1,min:0,max:1,step:.01,hidden:p=>!p.useGlassMaterial},glassBlur:{type:ControlType.Number,title:\"Glass Blur\",defaultValue:22,min:0,max:40,step:.5,unit:\"px\",hidden:p=>!p.useGlassMaterial},glassSaturation:{type:ControlType.Number,title:\"Glass Saturation\",defaultValue:180,min:50,max:250,step:5,unit:\"%\",hidden:p=>!p.useGlassMaterial},edgeHighlight:{type:ControlType.Number,title:\"Edge Highlight\",defaultValue:.85,min:0,max:1,step:.05,hidden:p=>!p.useGlassMaterial},edgeBorder:{type:ControlType.Number,title:\"Edge Border\",defaultValue:.11,min:0,max:.3,step:.01,hidden:p=>!p.useGlassMaterial},innerShadow:{type:ControlType.Number,title:\"Inner Shadow\",defaultValue:.1,min:0,max:.3,step:.01,hidden:p=>!p.useGlassMaterial},shadowStrength:{type:ControlType.Number,title:\"Shadow Strength\",defaultValue:.22,min:0,max:.6,step:.01,hidden:p=>!p.useGlassMaterial},padding:{type:ControlType.Number,title:\"Panel Padding\",defaultValue:16,min:4,max:40,step:1,unit:\"px\",hidden:p=>!p.useGlassMaterial},borderRadius:{type:ControlType.Number,title:\"Panel Radius\",defaultValue:14,min:0,max:40,step:1,unit:\"px\",hidden:p=>!p.useGlassMaterial},// ---- Entrance animation (TextFadeUp recipe) ----\nenableEntranceAnimation:{type:ControlType.Boolean,title:\"Entrance Animation\",defaultValue:true,description:\"Fade-up with blur as the panel enters viewport. Matches your TextFadeUp override.\"},animationDuration:{type:ControlType.Number,title:\"Duration\",defaultValue:1.5,min:.2,max:3,step:.05,unit:\"s\",hidden:p=>!p.enableEntranceAnimation},animationDelay:{type:ControlType.Number,title:\"Delay\",defaultValue:0,min:0,max:2,step:.05,unit:\"s\",hidden:p=>!p.enableEntranceAnimation},animationItemStagger:{type:ControlType.Number,title:\"Item Stagger\",defaultValue:.05,min:0,max:.4,step:.01,unit:\"s\",description:\"Per-item delay added on top of the base delay. 0 = all items appear together.\",hidden:p=>!p.enableEntranceAnimation}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CaseStudySidePanel\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CaseStudySidePanel.map"],"mappings":"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"}