{"version":3,"file":"TableofContents.CDaKtWdM.mjs","names":["useState","useState"],"sources":["https:/framerusercontent.com/modules/WoW2waxWS5o1LsnZkjQC/SqffpvdvSiK3ZQ7rHpzp/ReadingProgressBar.js","https:/framerusercontent.com/modules/a8rVVtdx6ZdnavoltNKY/y30daJstRKBO2FB6YvqW/TableofContents.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useState}from\"react\";export default function ReadingProgressBar(){const[progress,setProgress]=useState(0);useEffect(()=>{const calculateProgress=()=>{// Get the total scrollable height\nconst windowHeight=window.innerHeight;const documentHeight=document.documentElement.scrollHeight;const scrollTop=window.scrollY||document.documentElement.scrollTop;// Calculate progress percentage\nconst totalScroll=documentHeight-windowHeight;const currentProgress=totalScroll>0?scrollTop/totalScroll*100:0;setProgress(Math.min(currentProgress,100));};// Calculate on mount\ncalculateProgress();// Add scroll listener\nwindow.addEventListener(\"scroll\",calculateProgress);window.addEventListener(\"resize\",calculateProgress);// Cleanup\nreturn()=>{window.removeEventListener(\"scroll\",calculateProgress);window.removeEventListener(\"resize\",calculateProgress);};},[]);return /*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",top:0,left:0,width:\"100%\",height:\"6px\",backgroundColor:\"#ffffff\",zIndex:9999,pointerEvents:\"none\"},children:/*#__PURE__*/_jsx(\"div\",{style:{height:\"100%\",width:`${progress}%`,backgroundColor:\"#19AB60\",transition:\"width 0.2s ease-out\"}})});}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ReadingProgressBar\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ReadingProgressBar.map","import{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useState}from\"react\";import{addPropertyControls,ControlType}from\"framer\";export default function TableOfContents({fontSize=16}){const[headings,setHeadings]=useState([]);const[activeIndex,setActiveIndex]=useState(-1);useEffect(()=>{// Find all h2 elements in the blog content\nconst h2Elements=document.querySelectorAll(\"h2\");const headingData=[];h2Elements.forEach((heading,index)=>{// Create unique ID if it doesn't exist\nif(!heading.id){heading.id=`heading-${index}`;}headingData.push({id:heading.id,text:heading.textContent});});setHeadings(headingData);// Intersection Observer for active state\nconst observer=new IntersectionObserver(entries=>{entries.forEach(entry=>{if(entry.isIntersecting){const index=headingData.findIndex(h=>h.id===entry.target.id);if(index!==-1){setActiveIndex(index);}}});},{rootMargin:\"-20% 0px -35% 0px\"});h2Elements.forEach(heading=>observer.observe(heading));return()=>observer.disconnect();},[]);const handleClick=(e,id)=>{e.preventDefault();const element=document.getElementById(id);if(element){element.scrollIntoView({behavior:\"smooth\",block:\"start\"});}};if(headings.length===0){return null;}return /*#__PURE__*/_jsx(\"div\",{children:/*#__PURE__*/_jsx(\"ul\",{style:{listStyle:\"none\",padding:0,margin:0},children:headings.map((heading,index)=>/*#__PURE__*/_jsx(\"li\",{style:{marginBottom:\"8px\"},children:/*#__PURE__*/_jsx(\"a\",{href:`#${heading.id}`,onClick:e=>handleClick(e,heading.id),style:{display:\"block\",fontFamily:\"Inter, sans-serif\",fontSize:`${fontSize}px`,fontWeight:600,padding:\"2px\",textDecoration:\"none\",color:index<=activeIndex?\"#333333\":\"#999999\",transition:\"color 0.2s ease\"},children:heading.text})},heading.id))})});}addPropertyControls(TableOfContents,{fontSize:{type:ControlType.Number,title:\"Font Size\",defaultValue:16,min:10,max:32,step:1,displayStepper:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"TableOfContents\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./TableofContents.map"],"mappings":"0LAAiF,SAAwB,GAAoB,CAAC,GAAK,CAAC,EAAS,GAAaA,EAAS,EAAE,CAKpC,OALqC,MAAc,CAAC,IAAM,MAAsB,CACjN,IAAM,EAAa,EAAO,YAAkB,EAAe,SAAS,gBAAgB,aAAmB,EAAU,EAAO,SAAS,SAAS,gBAAgB,UACpJ,EAAY,EAAe,EAAmB,EAAgB,EAAY,EAAE,EAAU,EAAY,IAAI,EAAE,EAAY,KAAK,IAAI,EAAgB,IAAI,CAAC,EAGxJ,OAFA,GAAmB,CACnB,EAAO,iBAAiB,SAAS,EAAkB,CAAC,EAAO,iBAAiB,SAAS,EAAkB,KAC7F,CAAC,EAAO,oBAAoB,SAAS,EAAkB,CAAC,EAAO,oBAAoB,SAAS,EAAkB,GAAK,EAAE,CAAC,CAAqB,EAAK,MAAM,CAAC,MAAM,CAAC,SAAS,WAAW,IAAI,EAAE,KAAK,EAAE,MAAM,OAAO,OAAO,MAAM,gBAAgB,UAAU,OAAO,KAAK,cAAc,OAAO,CAAC,SAAsB,EAAK,MAAM,CAAC,MAAM,CAAC,OAAO,OAAO,MAAM,GAAG,EAAS,GAAG,gBAAgB,UAAU,WAAW,sBAAsB,CAAC,CAAC,CAAC,CAAC,sBAL/X,IAAsC,ICAoD,SAAwB,EAAgB,CAAC,WAAS,IAAI,CAAC,GAAK,CAAC,EAAS,GAAaC,EAAS,EAAE,CAAC,CAAM,CAAC,EAAY,GAAgBA,EAAS,GAAG,CAAC,MAAc,CAClS,IAAM,EAAW,SAAS,iBAAiB,KAAK,CAAO,EAAY,EAAE,CAAC,EAAW,SAAS,EAAQ,IAAQ,CAC1G,AAAgB,EAAQ,KAAG,WAAW,IAAS,EAAY,KAAK,CAAC,GAAG,EAAQ,GAAG,KAAK,EAAQ,YAAY,CAAC,EAAG,CAAC,EAAY,EAAY,CACrI,IAAM,EAAS,IAAI,qBAAqB,GAAS,CAAC,EAAQ,QAAQ,GAAO,CAAC,GAAG,EAAM,eAAe,CAAC,IAAM,EAAM,EAAY,UAAU,GAAG,EAAE,KAAK,EAAM,OAAO,GAAG,CAAI,IAAQ,IAAI,EAAe,EAAM,GAAK,EAAG,CAAC,WAAW,oBAAoB,CAAC,CAAwD,OAAvD,EAAW,QAAQ,GAAS,EAAS,QAAQ,EAAQ,CAAC,KAAW,EAAS,YAAY,EAAG,EAAE,CAAC,CAAC,IAAM,GAAa,EAAE,IAAK,CAAC,EAAE,gBAAgB,CAAC,IAAM,EAAQ,SAAS,eAAe,EAAG,CAAI,GAAS,EAAQ,eAAe,CAAC,SAAS,SAAS,MAAM,QAAQ,CAAC,EAAyC,OAAlC,EAAS,SAAS,EAAU,KAA0B,EAAK,MAAM,CAAC,SAAsB,EAAK,KAAK,CAAC,MAAM,CAAC,UAAU,OAAO,QAAQ,EAAE,OAAO,EAAE,CAAC,SAAS,EAAS,KAAK,EAAQ,IAAqB,EAAK,KAAK,CAAC,MAAM,CAAC,aAAa,MAAM,CAAC,SAAsB,EAAK,IAAI,CAAC,KAAK,IAAI,EAAQ,KAAK,QAAQ,GAAG,EAAY,EAAE,EAAQ,GAAG,CAAC,MAAM,CAAC,QAAQ,QAAQ,WAAW,oBAAoB,SAAS,GAAG,EAAS,IAAI,WAAW,IAAI,QAAQ,MAAM,eAAe,OAAO,MAAM,GAAO,EAAY,UAAU,UAAU,WAAW,kBAAkB,CAAC,SAAS,EAAQ,KAAK,CAAC,CAAC,CAAC,EAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kBAH9/B,IAAsC,IAAoD,CAGs6B,EAAoB,EAAgB,CAAC,SAAS,CAAC,KAAK,EAAY,OAAO,MAAM,YAAY,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,EAAE,eAAe,GAAK,CAAC,CAAC"}