{"version":3,"file":"CircularProgressGraph.CahdJ89S.mjs","names":["useState","useRef","useMemo","useCallback","useMemo","useRef","useState"],"sources":["https:/framerusercontent.com/modules/QKvMr3VOlFJf9quHO91P/ysfdb8rPnB6k4Wk6xXhx/CalcEngineFree.js","https:/framerusercontent.com/modules/rcVLn0NXgXbjHE8r247h/sw0c26HC516SvzSLPkGY/CircularProgressGraph.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useState,useEffect,useRef,useCallback,useMemo}from\"react\";// --- Utility Functions ---\nfunction accentToRGBA(accentColor,opacity){if(accentColor.startsWith(\"#\")){const hex=accentColor.slice(1);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}, ${opacity})`;}const match=accentColor.match(/(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)/);if(match){return`rgba(${match[1]}, ${match[2]}, ${match[3]}, ${opacity})`;}return`rgba(99, 102, 241, ${opacity})`;}function evaluateFormula(formula,inputs){if(!formula||!formula.trim())return 0;try{const paramNames=Object.keys(inputs);const paramValues=Object.values(inputs);const mathHelpers={round:Math.round,ceil:Math.ceil,floor:Math.floor,min:Math.min,max:Math.max,abs:Math.abs};const helperNames=Object.keys(mathHelpers);const helperValues=Object.values(mathHelpers);const fn=new Function(...paramNames,...helperNames,`\"use strict\"; return (${formula})`);const result=fn(...paramValues,...helperValues);if(typeof result!==\"number\"||!isFinite(result))return 0;return result;}catch{return 0;}}function formatResult(value,format,locale,currencyCode,decimalPlaces){const resolvedLocale=locale===\"custom\"?\"en-US\":locale;const options={minimumFractionDigits:decimalPlaces,maximumFractionDigits:decimalPlaces};if(format===\"currency\"){options.style=\"currency\";options.currency=currencyCode||\"USD\";}else if(format===\"compact\"){options.notation=\"compact\";options.compactDisplay=\"short\";}try{let formatted=new Intl.NumberFormat(resolvedLocale,options).format(value);if(format===\"percent\"){formatted=formatted+\"%\";}return formatted;}catch{return value.toFixed(decimalPlaces);}}function formatSliderValue(value,step){const decimals=step<1?String(step).split(\".\")[1]?.length||0:0;return value.toLocaleString(undefined,{minimumFractionDigits:decimals,maximumFractionDigits:decimals});}// --- Hooks ---\nfunction useAnimatedValue(target,duration,enabled){const[display,setDisplay]=useState(target);const prevRef=useRef(target);const rafRef=useRef(null);useEffect(()=>{if(!enabled){setDisplay(target);prevRef.current=target;return;}if(rafRef.current!==null){cancelAnimationFrame(rafRef.current);}const from=prevRef.current;const startTime=performance.now();const animate=now=>{const elapsed=now-startTime;const progress=Math.min(elapsed/(duration*1e3),1);const eased=1-Math.pow(1-progress,3);const current=from+(target-from)*eased;setDisplay(current);if(progress<1){rafRef.current=requestAnimationFrame(animate);}else{prevRef.current=target;rafRef.current=null;}};rafRef.current=requestAnimationFrame(animate);return()=>{if(rafRef.current!==null){cancelAnimationFrame(rafRef.current);rafRef.current=null;}prevRef.current=target;};},[target,duration,enabled]);return display;}function CalcSlider({value,min,max,step,filledColor,trackColor,onChange}){const range=max-min;const percent=range>0?(value-min)/range*100:0;return /*#__PURE__*/_jsx(\"input\",{type:\"range\",className:\"sc-calcfree-slider\",min:min,max:max,step:step,value:value,onChange:e=>onChange(Number(e.target.value)),\"aria-valuemin\":min,\"aria-valuemax\":max,\"aria-valuenow\":value,style:{width:\"100%\",height:6,appearance:\"none\",WebkitAppearance:\"none\",outline:\"none\",borderRadius:3,cursor:\"pointer\",background:`linear-gradient(to right, ${filledColor} 0%, ${filledColor} ${percent}%, ${trackColor} ${percent}%, ${trackColor} 100%)`,margin:0}});}function EditableValue({value,min,max,step,prefix,suffix,textColor,fontFamily,fontSize,textTransform,letterSpacing,onChange}){const[editing,setEditing]=useState(false);const[draft,setDraft]=useState(String(value));const inputRef=useRef(null);useEffect(()=>{if(editing&&inputRef.current){inputRef.current.select();}},[editing]);if(editing){return /*#__PURE__*/_jsx(\"input\",{ref:inputRef,type:\"number\",value:draft,min:min,max:max,step:step,onChange:e=>setDraft(e.target.value),onBlur:()=>{setEditing(false);const num=Number(draft);if(!isNaN(num)){onChange(Math.min(max,Math.max(min,num)));}},onKeyDown:e=>{if(e.key===\"Enter\")e.target.blur();if(e.key===\"Escape\"){setDraft(String(value));setEditing(false);}},style:{width:80,textAlign:\"right\",fontSize:fontSize,fontWeight:600,color:textColor,border:\"1px solid #D1D5DB\",borderRadius:6,padding:\"2px 8px\",outline:\"none\",fontVariantNumeric:\"tabular-nums\",fontFamily:fontFamily||\"inherit\",textTransform:textTransform,letterSpacing:letterSpacing,background:\"transparent\"}});}return /*#__PURE__*/_jsxs(\"span\",{onClick:()=>{setDraft(String(value));setEditing(true);},style:{fontSize:fontSize,fontWeight:600,color:textColor,cursor:\"text\",fontVariantNumeric:\"tabular-nums\",fontFamily:fontFamily||undefined,textTransform:textTransform,letterSpacing:letterSpacing,userSelect:\"none\"},title:\"Click to edit\",children:[prefix,formatSliderValue(value,step),suffix]});}// --- Main Component ---\n/**\n * @framerIntrinsicWidth 520\n * @framerIntrinsicHeight 420\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function CalcEngineFree(props){const{inputs,formula,resultLabel,resultDescription,resultFormat,currencyCode,locale,customLocale,decimalPlaces,animateResult,animationDuration,fontFamily,labelFontFamily,labelFontSize,labelTextTransform,labelLetterSpacing,valueFontFamily,valueFontSize,valueTextTransform,valueLetterSpacing,resultLabelFontFamily,resultLabelFontSize,resultDescFontFamily,resultDescFontSize,resultFontSize,accentColor,bgColor,textColor,labelColor,sliderValueColor,sliderFilledColor,sliderTrackColor,showShadow,containerPadding,inputGap,resultSpacing,borderRadius,style}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;// --- Reduced motion ---\nconst[reducedMotion,setReducedMotion]=useState(false);useEffect(()=>{if(typeof window===\"undefined\")return;const mq=window.matchMedia(\"(prefers-reduced-motion: reduce)\");setReducedMotion(mq.matches);const handler=e=>setReducedMotion(e.matches);mq.addEventListener(\"change\",handler);return()=>mq.removeEventListener(\"change\",handler);},[]);const shouldAnimate=animateResult&&!reducedMotion&&!isCanvas;// --- State management ---\nconst inputStructureKey=useMemo(()=>inputs.map(i=>`${i.variableName}:${i.defaultValue}`).join(\",\"),[inputs]);const[values,setValues]=useState(()=>{const initial={};inputs.forEach(input=>{const def=input.defaultValue??input.min??0;initial[input.variableName]=Math.min(input.max,Math.max(input.min,def));});return initial;});useEffect(()=>{const newState={};inputs.forEach(input=>{const def=input.defaultValue??input.min??0;newState[input.variableName]=Math.min(input.max,Math.max(input.min,def));});setValues(newState);},[inputStructureKey]);const updateValue=useCallback((variableName,value)=>{setValues(prev=>({...prev,[variableName]:value}));},[]);// --- Calculation ---\nconst rawResult=useMemo(()=>evaluateFormula(formula,values),[formula,values]);const animatedResult=useAnimatedValue(rawResult,animationDuration,shouldAnimate);const resolvedLocale=locale===\"custom\"?customLocale||\"en-US\":locale;const formattedResult=formatResult(shouldAnimate?animatedResult:rawResult,resultFormat,resolvedLocale,currencyCode,decimalPlaces);// --- Gradient ---\nconst resultGradient=`linear-gradient(135deg, ${accentToRGBA(accentColor,.04)}, ${accentToRGBA(accentColor,.08)})`;// --- Injected CSS ---\nconst injectedCSS=`\n.sc-calcfree-slider::-webkit-slider-thumb {\n  -webkit-appearance: none;\n  appearance: none;\n  width: 20px;\n  height: 20px;\n  border-radius: 50%;\n  background: #FFFFFF;\n  border: 2px solid var(--sc-slider-filled);\n  box-shadow: 0 1px 3px rgba(0,0,0,0.15);\n  cursor: pointer;\n  transition: transform 0.15s ease-out, box-shadow 0.15s ease-out;\n}\n.sc-calcfree-slider::-webkit-slider-thumb:hover {\n  transform: scale(1.15);\n  box-shadow: 0 2px 6px rgba(0,0,0,0.2);\n}\n.sc-calcfree-slider::-webkit-slider-thumb:active {\n  transform: scale(1.05);\n}\n.sc-calcfree-slider::-moz-range-thumb {\n  width: 20px;\n  height: 20px;\n  border-radius: 50%;\n  background: #FFFFFF;\n  border: 2px solid var(--sc-slider-filled);\n  box-shadow: 0 1px 3px rgba(0,0,0,0.15);\n  cursor: pointer;\n  transition: transform 0.15s ease-out, box-shadow 0.15s ease-out;\n}\n.sc-calcfree-slider::-moz-range-thumb:hover {\n  transform: scale(1.15);\n  box-shadow: 0 2px 6px rgba(0,0,0,0.2);\n}\n.sc-calcfree-slider::-moz-range-track {\n  background: transparent;\n  border: none;\n}\n@media (max-width: 480px) {\n  .sc-calcfree-result-value {\n    font-size: 32px !important;\n  }\n  .sc-calcfree-container {\n    padding: 24px !important;\n  }\n}\n`;return /*#__PURE__*/_jsx(\"div\",{style:{...style,padding:16,boxSizing:\"border-box\"},children:/*#__PURE__*/_jsxs(\"div\",{className:\"sc-calcfree-container\",style:{\"--sc-accent\":accentColor,\"--sc-slider-filled\":sliderFilledColor||accentColor,background:bgColor,borderRadius:borderRadius,padding:containerPadding,boxShadow:showShadow!==false?\"0 1px 3px rgba(0,0,0,0.06), 0 8px 32px rgba(0,0,0,0.04)\":\"none\",border:\"1px solid rgba(0,0,0,0.06)\",fontFamily:fontFamily||\"-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",position:\"relative\",boxSizing:\"border-box\",width:\"100%\",height:\"100%\"},children:[/*#__PURE__*/_jsx(\"style\",{children:injectedCSS}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:inputGap},children:inputs.map((input,index)=>{const currentValue=values[input.variableName]??input.defaultValue??input.min??0;return /*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"space-between\",alignItems:\"center\",marginBottom:10},children:[/*#__PURE__*/_jsx(\"label\",{style:{fontSize:labelFontSize,fontWeight:500,textTransform:labelTextTransform,letterSpacing:labelLetterSpacing,color:labelColor,fontFamily:labelFontFamily||undefined,margin:0,padding:0},children:input.label}),/*#__PURE__*/_jsx(EditableValue,{value:currentValue,min:input.min,max:input.max,step:input.step,prefix:input.unitPrefix||\"\",suffix:input.unitSuffix||\"\",textColor:sliderValueColor||textColor,fontFamily:valueFontFamily,fontSize:valueFontSize,textTransform:valueTextTransform,letterSpacing:valueLetterSpacing,onChange:v=>updateValue(input.variableName,v)})]}),/*#__PURE__*/_jsx(CalcSlider,{value:currentValue,min:input.min,max:input.max,step:input.step,filledColor:sliderFilledColor||accentColor,trackColor:sliderTrackColor||\"#E5E7EB\",onChange:v=>updateValue(input.variableName,v)})]},input.variableName||index);})}),/*#__PURE__*/_jsxs(\"div\",{className:\"sc-calcfree-result\",style:{marginTop:resultSpacing,padding:24,borderRadius:12,background:resultGradient,textAlign:\"center\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:resultLabelFontSize,fontWeight:500,color:labelColor,fontFamily:resultLabelFontFamily||undefined,marginBottom:8},children:resultLabel}),/*#__PURE__*/_jsx(\"div\",{className:\"sc-calcfree-result-value\",style:{fontSize:resultFontSize,fontWeight:700,color:accentColor,fontVariantNumeric:\"tabular-nums\",lineHeight:1.2},children:formattedResult}),resultDescription&&/*#__PURE__*/_jsx(\"div\",{style:{fontSize:resultDescFontSize,color:labelColor,fontFamily:resultDescFontFamily||undefined,marginTop:8,maxWidth:360,marginLeft:\"auto\",marginRight:\"auto\",lineHeight:1.5},children:resultDescription})]})]})});}// --- Property Controls ---\naddPropertyControls(CalcEngineFree,{// -- SECTION: INPUTS --\ninputs:{type:ControlType.Array,title:\"Calculator Inputs\",maxCount:4,control:{type:ControlType.Object,controls:{variableName:{type:ControlType.String,title:\"Variable Name\",placeholder:\"monthlySpend\",description:\"Use this name in the formula. Letters only, no spaces.\"},label:{type:ControlType.String,title:\"Label\",placeholder:\"Monthly Software Spend\"},min:{type:ControlType.Number,title:\"Min Value\",defaultValue:0},max:{type:ControlType.Number,title:\"Max Value\",defaultValue:100},step:{type:ControlType.Number,title:\"Step\",defaultValue:1,min:.01},defaultValue:{type:ControlType.Number,title:\"Default Value\",defaultValue:50},unitPrefix:{type:ControlType.String,title:\"Unit Prefix\",placeholder:\"$\",description:\"Shown before the value (e.g., $)\"},unitSuffix:{type:ControlType.String,title:\"Unit Suffix\",placeholder:\"%\",description:\"Shown after the value (e.g., %, hrs, /mo)\"}}},defaultValue:[{variableName:\"monthlySpend\",label:\"Monthly Software Spend\",min:500,max:5e4,step:500,defaultValue:5e3,unitPrefix:\"$\",unitSuffix:\"\"},{variableName:\"savingsPercent\",label:\"Expected Savings\",min:5,max:80,step:5,defaultValue:30,unitPrefix:\"\",unitSuffix:\"%\"},{variableName:\"years\",label:\"Time Period\",min:1,max:5,step:1,defaultValue:1,unitPrefix:\"\",unitSuffix:\" year(s)\"}]},// -- SECTION: FORMULA --\nformula:{type:ControlType.String,title:\"Formula\",placeholder:\"monthlySpend * (savingsPercent / 100) * years * 12\",displayTextArea:true,defaultValue:\"monthlySpend * (savingsPercent / 100) * years * 12\",description:\"JavaScript expression using input variable names. Available: round(), ceil(), floor(), min(), max(), abs()\"},// -- SECTION: RESULT --\nresultLabel:{type:ControlType.String,title:\"Result Label\",defaultValue:\"Your Projected Savings\"},resultDescription:{type:ControlType.String,title:\"Result Description\",defaultValue:\"Based on your current spend and expected efficiency gains\",displayTextArea:true},resultFormat:{type:ControlType.Enum,title:\"Number Format\",options:[\"currency\",\"decimal\",\"percent\",\"compact\"],optionTitles:[\"Currency ($1,234)\",\"Number (1,234)\",\"Percent (12%)\",\"Compact (1.2K)\"],defaultValue:\"currency\"},currencyCode:{type:ControlType.String,title:\"Currency Code\",defaultValue:\"USD\",placeholder:\"USD, EUR, GBP, JPY...\",description:\"ISO 4217 code. Common: USD, EUR, GBP, JPY, CAD, AUD, CHF, CNY, INR, BRL. Full list: en.wikipedia.org/wiki/ISO_4217\",hidden:props=>props.resultFormat!==\"currency\"},locale:{type:ControlType.Enum,title:\"Number Locale\",options:[\"en-US\",\"en-GB\",\"de-DE\",\"fr-FR\",\"ja-JP\",\"custom\"],optionTitles:[\"English (US)\",\"English (UK)\",\"German\",\"French\",\"Japanese\",\"Custom\"],defaultValue:\"en-US\"},customLocale:{type:ControlType.String,title:\"Custom Locale Code\",placeholder:\"pt-BR\",hidden:props=>props.locale!==\"custom\"},decimalPlaces:{type:ControlType.Number,title:\"Decimal Places\",defaultValue:0,min:0,max:4,step:1,displayStepper:true},// -- SECTION: ANIMATION --\nanimateResult:{type:ControlType.Boolean,title:\"Animate Result\",defaultValue:true,enabledTitle:\"Animated\",disabledTitle:\"Instant\"},animationDuration:{type:ControlType.Number,title:\"Animation Duration\",defaultValue:.6,min:.2,max:2,step:.1,unit:\"s\",hidden:props=>!props.animateResult},// -- SECTION: TYPOGRAPHY --\nfontFamily:{type:ControlType.String,title:\"Font Family\",defaultValue:\"-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif\",description:\"Global CSS font-family. Per-section fonts below override this.\"},// Input Label Typography\nlabelFontFamily:{type:ControlType.String,title:\"Label Font\",defaultValue:\"\",placeholder:\"Inherit from global\",description:\"Font family for input labels. Leave empty to inherit.\"},labelFontSize:{type:ControlType.Number,title:\"Label Size\",defaultValue:12,min:8,max:24,step:1,unit:\"px\"},labelTextTransform:{type:ControlType.Enum,title:\"Label Transform\",options:[\"uppercase\",\"none\",\"lowercase\",\"capitalize\"],optionTitles:[\"UPPERCASE\",\"None\",\"lowercase\",\"Capitalize\"],defaultValue:\"uppercase\"},labelLetterSpacing:{type:ControlType.String,title:\"Label Spacing\",defaultValue:\"0.05em\",placeholder:\"0.05em\",description:\"CSS letter-spacing (e.g., 0.05em, 1px)\"},// Input Value Typography\nvalueFontFamily:{type:ControlType.String,title:\"Value Font\",defaultValue:\"\",placeholder:\"Inherit from global\",description:\"Font family for slider values. Leave empty to inherit.\"},valueFontSize:{type:ControlType.Number,title:\"Value Size\",defaultValue:14,min:10,max:28,step:1,unit:\"px\"},valueTextTransform:{type:ControlType.Enum,title:\"Value Transform\",options:[\"none\",\"uppercase\",\"lowercase\",\"capitalize\"],optionTitles:[\"None\",\"UPPERCASE\",\"lowercase\",\"Capitalize\"],defaultValue:\"none\"},valueLetterSpacing:{type:ControlType.String,title:\"Value Spacing\",defaultValue:\"0em\",placeholder:\"0em\",description:\"CSS letter-spacing (e.g., 0em, 1px)\"},// Result Typography\nresultLabelFontFamily:{type:ControlType.String,title:\"Result Label Font\",defaultValue:\"\",placeholder:\"Inherit from global\",description:\"Font family for the result label text.\"},resultLabelFontSize:{type:ControlType.Number,title:\"Result Label Size\",defaultValue:14,min:10,max:28,step:1,unit:\"px\"},resultDescFontFamily:{type:ControlType.String,title:\"Result Desc Font\",defaultValue:\"\",placeholder:\"Inherit from global\",description:\"Font family for the result description text.\"},resultDescFontSize:{type:ControlType.Number,title:\"Result Desc Size\",defaultValue:13,min:10,max:24,step:1,unit:\"px\"},resultFontSize:{type:ControlType.Number,title:\"Result Value Size\",defaultValue:40,min:16,max:72,step:2,unit:\"px\"},// -- SECTION: COLORS --\naccentColor:{type:ControlType.Color,title:\"Accent Color\",defaultValue:\"#6366F1\"},bgColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#FFFFFF\"},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#111827\"},labelColor:{type:ControlType.Color,title:\"Label Color\",defaultValue:\"#6B7280\"},sliderValueColor:{type:ControlType.Color,title:\"Slider Value Color\",defaultValue:\"#111827\",description:\"Color of the editable number next to each slider\"},sliderFilledColor:{type:ControlType.Color,title:\"Slider Filled Color\",defaultValue:\"#6366F1\",description:\"Color of the filled portion of the slider track\"},sliderTrackColor:{type:ControlType.Color,title:\"Slider Track Color\",defaultValue:\"#E5E7EB\",description:\"Color of the unfilled portion of the slider track\"},// -- SECTION: SPACING & APPEARANCE --\nshowShadow:{type:ControlType.Boolean,title:\"Drop Shadow\",defaultValue:true,enabledTitle:\"Visible\",disabledTitle:\"Hidden\"},containerPadding:{type:ControlType.Number,title:\"Container Padding\",defaultValue:32,min:8,max:64,step:4,unit:\"px\"},inputGap:{type:ControlType.Number,title:\"Input Gap\",defaultValue:24,min:8,max:48,step:4,unit:\"px\"},resultSpacing:{type:ControlType.Number,title:\"Result Spacing\",defaultValue:28,min:8,max:56,step:4,unit:\"px\",description:\"Space between inputs and result section\"},borderRadius:{type:ControlType.Number,title:\"Border Radius\",defaultValue:16,min:0,max:32,step:2,unit:\"px\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CalcEngineFree\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"420\",\"framerSupportedLayoutHeight\":\"any\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"520\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CalcEngineFree.map","// Circular Graph component with customizable stroke, fill, value, font, and animation toggle\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useMemo,useRef,useLayoutEffect,useState}from\"react\";import{useInView}from\"framer-motion\";/**\n * Circular Graph\n *\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n */export default function CircularProgressGraph(props){const{value=66,strokeWidth=2,strokeColor=\"#fff\",fillColor=\"#FFB347\",valueFont={fontSize:32,variant:\"Bold\",letterSpacing:\"-0.04em\",lineHeight:\"1em\"},textStyle=\"Custom\",animate=true,animationDuration=.9,style={}}=props;// Determine which font style to use\nconst appliedFont=useMemo(()=>{if(textStyle&&textStyle!==\"Custom\"&&textStyleMap[textStyle]){return textStyleMap[textStyle];}return valueFont;},[textStyle,valueFont]);// Sizing\n// Responsive sizing\nconst containerRef=useRef(null);const[containerSize,setContainerSize]=useState({width:180,height:220});useLayoutEffect(()=>{if(!containerRef.current)return;const node=containerRef.current;function update(){setContainerSize({width:node.offsetWidth,height:node.offsetHeight});}update();// @ts-ignore\nconst ro=new(window.ResizeObserver||window.MozResizeObserver||window.WebKitResizeObserver)(update);ro.observe(node);return()=>ro.disconnect();},[]);// Reserve space for text below the SVG\nconst textMargin=16;const minTextHeight=32;const textHeight=Math.max(minTextHeight,containerSize.height*.13);const availableHeight=Math.max(0,containerSize.height-textHeight-textMargin);const size=Math.max(0,Math.min(containerSize.width,availableHeight));const radius=(size-strokeWidth)/2;const center=size/2;// Clamp value\nconst percent=Math.max(0,Math.min(100,value));// Animation for appear effect and counter\nconst[animatedPercent,setAnimatedPercent]=useState(animate?0:percent);const[displayedValue,setDisplayedValue]=useState(animate?0:percent);// In-view detection\nconst inViewRef=useRef(null);const isInView=useInView(inViewRef,{once:true,margin:\"-20% 0px -20% 0px\"});useLayoutEffect(()=>{if(!animate){setAnimatedPercent(percent);setDisplayedValue(percent);return;}if(!isInView)return;let frame;let start=null;const duration=Math.max(.1,animationDuration)*1e3// ms\n;const from=0;const to=percent;function step(ts){if(start===null)start=ts;const elapsed=ts-start;let t=Math.min(1,elapsed/duration);// ease-out cubic\nt=1-Math.pow(1-t,3);const current=from+(to-from)*t;setAnimatedPercent(current);setDisplayedValue(Math.round(current));if(t<1){frame=requestAnimationFrame(step);}else{setAnimatedPercent(to);setDisplayedValue(Math.round(to));}}frame=requestAnimationFrame(step);return()=>cancelAnimationFrame(frame);},[percent,animate,isInView,animationDuration]);// Ensure innerRadius is always between 0 and maxInnerRadius\nconst maxInnerRadius=Math.max(0,radius-strokeWidth*2);const innerRadius=maxInnerRadius*(animatedPercent/100);// Anchor the bottom of the inner circle to the bottom of the outer circle\n// If innerRadius is 0, innerCenterY should be at the bottom; if max, at center\nconst innerCenterY=center+radius-innerRadius;// Use solid fill color for inner circle\nconst fill=fillColor;// Calculate y positions for lines (in px, relative to SVG)\n// Top line at the top of the inner circle (animated)\nconst topY=innerCenterY-innerRadius;// Bottom line at the bottom of the outer circle\nconst bottomY=center+radius;// Calculate SVG vertical offset to center it in the available space\nconst svgTop=Math.max(0,(containerSize.height-textHeight-textMargin-size)/2);return /*#__PURE__*/_jsxs(\"div\",{ref:el=>{containerRef.current=el;inViewRef.current=el;},style:{...style,width:\"100%\",height:\"100%\",minHeight:120,position:\"relative\",background:\"transparent\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:0,width:\"100%\",height:1,background:strokeColor,top:svgTop+topY,zIndex:2}}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",left:0,width:\"100%\",height:1,background:strokeColor,top:svgTop+bottomY,zIndex:2}}),/*#__PURE__*/_jsx(\"div\",{style:{width:size,height:size,position:\"absolute\",left:\"50%\",top:svgTop,transform:\"translateX(-50%)\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:/*#__PURE__*/_jsxs(\"svg\",{width:size,height:size,style:{display:\"block\",position:\"relative\",zIndex:1},children:[/*#__PURE__*/_jsx(\"circle\",{cx:center,cy:center,r:radius,stroke:strokeColor,strokeWidth:strokeWidth,fill:\"none\",style:{paintOrder:\"stroke\"}}),/*#__PURE__*/_jsx(\"circle\",{cx:center,cy:innerCenterY,r:innerRadius,fill:fill,style:{}})]})}),/*#__PURE__*/_jsxs(\"div\",{style:{position:\"absolute\",left:0,width:\"100%\",top:svgTop+size+textMargin,color:strokeColor,textAlign:\"center\",userSelect:\"none\",...appliedFont,fontSize:appliedFont.fontSize||Math.max(20,size*.22)},children:[displayedValue,\"%\"]})]});}const textStyles=[{key:\"Custom\",title:\"Custom\"},{key:\"heading1\",title:\"Heading 1\"},{key:\"heading2\",title:\"Heading 2\"},{key:\"heading3\",title:\"Heading 3\"},{key:\"heading4\",title:\"Heading 4\"},{key:\"paragraph\",title:\"Paragraph\"},{key:\"buttonText\",title:\"Button Text\"}];const textStyleMap={heading1:{fontSize:\"40px\",variant:\"Bold\",letterSpacing:\"-0.04em\",lineHeight:\"1em\"},heading2:{fontSize:\"32px\",variant:\"Semibold\",letterSpacing:\"-0.03em\",lineHeight:\"1em\"},heading3:{fontSize:\"22px\",variant:\"Semibold\",letterSpacing:\"-0.01em\",lineHeight:\"1.2em\"},heading4:{fontSize:\"15px\",variant:\"Medium\",letterSpacing:\"-0.01em\",lineHeight:\"1em\"},paragraph:{fontSize:\"15px\",variant:\"Medium\",letterSpacing:\"-0.01em\",lineHeight:\"1.3em\"},buttonText:{variant:\"Semibold\",fontSize:\"14px\",letterSpacing:\"-0.01em\",lineHeight:\"1em\"}};addPropertyControls(CircularProgressGraph,{value:{type:ControlType.Number,title:\"Value\",min:0,max:100,defaultValue:66,unit:\"%\",displayStepper:true},strokeWidth:{type:ControlType.Number,title:\"Stroke Width\",min:1,max:16,defaultValue:2,unit:\"px\",displayStepper:true},strokeColor:{type:ControlType.Color,title:\"Stroke Color\",defaultValue:\"#FFFFFF\"},fillColor:{type:ControlType.Color,title:\"Fill Color\",defaultValue:\"#FFB347\"},textStyle:{type:ControlType.Enum,title:\"Text Style\",options:textStyles.map(s=>s.key),optionTitles:textStyles.map(s=>s.title),defaultValue:\"Custom\"},valueFont:{type:ControlType.Font,title:\"Value Font\",defaultValue:{fontSize:32,variant:\"Bold\",letterSpacing:\"-0.04em\",lineHeight:\"1em\"},controls:\"extended\",defaultFontType:\"sans-serif\",hidden:props=>props.textStyle&&props.textStyle!==\"Custom\"},animate:{type:ControlType.Boolean,title:\"Animate\",defaultValue:true,enabledTitle:\"On\",disabledTitle:\"Off\"},animationDuration:{type:ControlType.Number,title:\"Anim Duration\",min:.1,max:10,step:.1,defaultValue:.9,unit:\"s\",displayStepper:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CircularProgressGraph\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CircularProgressGraph.map"],"mappings":"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"}