{"version":3,"file":"RelatedRatesGrid.BGNDrM-R.mjs","names":["useMemo","useState","_Fragment"],"sources":["https:/framerusercontent.com/modules/6sDUIoVd1k216YK6DPO5/APXvaIitaPw7O0cy7WdF/RelatedRatesGrid.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useEffect,useMemo,useState}from\"react\";import{addPropertyControls,ControlType}from\"framer\";const DEFAULT_PAIRS=[{from:\"CHF\",to:\"EUR\",link:\"\"},{from:\"CHF\",to:\"USD\",link:\"\"},{from:\"CHF\",to:\"GBP\",link:\"\"},{from:\"CHF\",to:\"AUD\",link:\"\"},{from:\"CHF\",to:\"CAD\",link:\"\"},{from:\"CHF\",to:\"JPY\",link:\"\"},{from:\"CHF\",to:\"SGD\",link:\"\"},{from:\"CHF\",to:\"HKD\",link:\"\"}];function normalizeCurrency(code){return String(code||\"\").trim().toUpperCase().replace(/[^A-Z]/g,\"\").slice(0,3);}function formatRateValue(value){const n=Number(value);if(!Number.isFinite(n))return\"—\";const fixed=n.toFixed(6).replace(/(\\.\\d*?[1-9])0+$|\\.0+$/,\"$1\");const[intPart,decimalPart]=fixed.split(\".\");const formattedInt=intPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g,\"'\");return decimalPart?`${formattedInt}.${decimalPart}`:formattedInt;}function flagUrl(code){const currency=normalizeCurrency(code);if(!currency)return\"\";return`https://assets.swissfx.com/Flags/${currency}.svg`;}function cleanPairs(pairs){const source=Array.isArray(pairs)&&pairs.length>0?pairs:DEFAULT_PAIRS;return source.map(pair=>{const from=normalizeCurrency(pair?.from);const to=normalizeCurrency(pair?.to);const link=String(pair?.link||\"\").trim();return{from,to,link};}).filter(pair=>pair.from.length===3&&pair.to.length===3).slice(0,8);}export default function RelatedRatesGrid(props){const{pairs,title,showTitle,cardBackground,sectionBackground,textColor}=props;const normalizedPairs=useMemo(()=>cleanPairs(pairs),[pairs]);const pairKey=normalizedPairs.map(pair=>`${pair.from}-${pair.to}-${pair.link}`).join(\"|\");const[rates,setRates]=useState([]);const[loading,setLoading]=useState(false);const[hoveredIndex,setHoveredIndex]=useState(null);useEffect(()=>{if(normalizedPairs.length===0)return;let cancelled=false;async function loadRates(){setLoading(true);try{const rows=await Promise.all(normalizedPairs.map(async(pair,index)=>{const res=await fetch(`https://api.swissfx.com/convert?amount=1&from=${encodeURIComponent(pair.from)}&to=${encodeURIComponent(pair.to)}`);if(!res.ok){return{...pair,index,rate:\"—\"};}const data=await res.json();const rawRate=data?.swissFXRate??data?.swissFxRate??data?.SwissFXRate??data?.rate??data?.midRate;return{...pair,index,rate:formatRateValue(rawRate)};}));if(!cancelled)setRates(rows);}catch(err){console.error(\"Related rates error:\",err);if(!cancelled)setRates([]);}finally{if(!cancelled)setLoading(false);}}loadRates();return()=>{cancelled=true;};},[pairKey]);return /*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",padding:24,borderRadius:16,background:sectionBackground,fontFamily:\"inherit\",color:textColor,...props.style},children:[showTitle&&/*#__PURE__*/_jsx(\"div\",{style:{fontSize:22,fontWeight:600,marginBottom:16},children:title}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"grid\",gridTemplateColumns:\"repeat(auto-fit, minmax(150px, 1fr))\",gap:12},children:normalizedPairs.map((pair,index)=>{const item=rates.find(rate=>rate.index===index);const hasLink=pair.link.length>0;const isHovered=hoveredIndex===index&&hasLink;const cardStyle={display:\"block\",textDecoration:\"none\",color:\"inherit\",background:cardBackground,border:isHovered?\"1px solid rgba(5, 6, 87, 0.45)\":\"1px solid #D9DDF0\",borderRadius:12,padding:16,cursor:hasLink?\"pointer\":\"default\",transform:isHovered?\"translateY(-2px)\":\"translateY(0)\",boxShadow:isHovered?\"0 10px 24px rgba(5, 6, 87, 0.12)\":\"0 0 0 rgba(0, 0, 0, 0)\",transition:\"transform 160ms ease, box-shadow 160ms ease, border-color 160ms ease\"};const content=/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:8,marginBottom:10,fontSize:14,fontWeight:600},children:[/*#__PURE__*/_jsx(\"img\",{src:flagUrl(pair.to),alt:pair.to,style:{width:28,height:28,borderRadius:\"50%\",objectFit:\"cover\",flexShrink:0}}),pair.from,\"/\",pair.to]}),/*#__PURE__*/_jsx(\"div\",{style:{fontSize:24,fontWeight:600,lineHeight:1.2},children:loading?\"…\":item?.rate??\"—\"})]});if(hasLink){return /*#__PURE__*/_jsx(\"a\",{href:pair.link,style:cardStyle,onMouseEnter:()=>setHoveredIndex(index),onMouseLeave:()=>setHoveredIndex(null),children:content},`${pair.from}-${pair.to}-${index}`);}return /*#__PURE__*/_jsx(\"div\",{style:cardStyle,children:content},`${pair.from}-${pair.to}-${index}`);})})]});}RelatedRatesGrid.defaultProps={title:\"Related currency rates\",showTitle:true,pairs:DEFAULT_PAIRS,sectionBackground:\"#F3F4FB\",cardBackground:\"#FFFFFF\",textColor:\"#050657\"};addPropertyControls(RelatedRatesGrid,{showTitle:{type:ControlType.Boolean,title:\"Show Title\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\"},title:{type:ControlType.String,title:\"Title\",defaultValue:\"Related currency rates\",hidden(props){return props.showTitle===false;}},pairs:{type:ControlType.Array,title:\"Pairs\",maxCount:8,control:{type:ControlType.Object,controls:{from:{type:ControlType.String,title:\"From\",defaultValue:\"CHF\",placeholder:\"CHF\"},to:{type:ControlType.String,title:\"To\",defaultValue:\"EUR\",placeholder:\"EUR\"},link:{type:ControlType.Link,title:\"Link\"}}},defaultValue:DEFAULT_PAIRS},sectionBackground:{type:ControlType.Color,title:\"Section BG\",defaultValue:\"#F3F4FB\"},cardBackground:{type:ControlType.Color,title:\"Card BG\",defaultValue:\"#FFFFFF\"},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#050657\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"RelatedRatesGrid\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./RelatedRatesGrid.map"],"mappings":"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"}