{"version":3,"file":"StatusPageAPI.KMuQCDNH.mjs","names":["React.useState"],"sources":["https:/framerusercontent.com/modules/5PgaSzzLZf2nHl7yDV0v/wkwweERCOca4GYaHMHIr/StatusPageAPI.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";const colorMap={none:\"#22c55e\",minor:\"#eab308\",major:\"#f97316\",critical:\"#ef4444\"};const initialStatus={indicator:\"none\",description:\"All systems operational\"};// Uppercase only the first letter of the first word; everything else lowercase.\nfunction sentenceCaseFirstWord(input){if(!input)return\"\";const lower=String(input).trim().toLowerCase();return lower?lower.charAt(0).toUpperCase()+lower.slice(1):lower;}/**\n * StatusIndicator\n * Props:\n *   - url: override base Statuspage URL if you ever move it\n *   - pollMs: how often to refresh (ms). Default 60 s.\n */export default function StatusIndicator({url=\"https://status.loops.so\",pollMs=6e4}){const[status,setStatus]=React.useState(initialStatus);React.useEffect(()=>{const controller=new AbortController;const fetchStatus=async()=>{try{const response=await fetch(`${url}/api/v2/summary.json`,{signal:controller.signal});if(!response.ok)throw new Error(`Status API returned ${response.status}`);const data=await response.json();if(!data?.status||typeof data.status.indicator!==\"string\"||typeof data.status.description!==\"string\"){throw new Error(\"Status API returned an invalid response\");}setStatus(data.status);}catch(error){if(error instanceof DOMException&&error.name===\"AbortError\")return;setStatus(current=>({...current,description:\"Status temporarily unavailable\"}));}};fetchStatus();const timer=window.setInterval(fetchStatus,pollMs);return()=>{controller.abort();window.clearInterval(timer);};},[url,pollMs]);const dotColor=colorMap[status.indicator]||\"var(--token-890e86c7-7c18-48ed-93d0-365df54479f6, #60646C)\";const description=sentenceCaseFirstWord(status.description);return /*#__PURE__*/_jsxs(\"a\",{href:url,target:\"_blank\",rel:\"noopener noreferrer\",style:{display:\"inline-flex\",alignItems:\"center\",gap:8,fontFamily:\"Inter, sans-serif\",userSelect:\"none\",height:16,textDecoration:\"none\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{width:6,height:6,borderRadius:\"50%\",background:dotColor}}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:14,fontWeight:400,lineHeight:\"75%\",color:\"var(--token-2a5f3230-4a8b-49e0-8e32-9494e91450f2, #60646c)\"},children:description})]});}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"StatusIndicator\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./StatusPageAPI.map"],"mappings":"yIACA,SAAS,EAAsB,EAAM,CAAC,GAAG,CAAC,EAAM,MAAM,GAAG,IAAM,EAAM,OAAO,CAAK,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,OAAO,GAAM,EAAM,OAAO,CAAC,CAAC,CAAC,YAAY,EAAE,EAAM,MAAM,CAAC,CAAQ,CAKrK,SAAwB,EAAgB,CAAC,MAAI,0BAA0B,SAAO,KAAK,CAAC,GAAK,CAAC,EAAO,GAAWA,EAAe,CAAa,EAAE,MAAoB,CAAC,IAAM,EAAW,IAAI,gBAAsB,EAAY,SAAS,CAAC,GAAG,CAAC,IAAM,EAAS,MAAM,MAAM,GAAG,EAAI,sBAAsB,CAAC,OAAO,EAAW,MAAM,CAAC,EAAE,GAAG,CAAC,EAAS,GAAG,MAAU,MAAM,uBAAuB,EAAS,QAAQ,EAAE,IAAM,EAAK,MAAM,EAAS,KAAK,EAAE,GAAG,CAAC,GAAM,QAAQ,OAAO,EAAK,OAAO,WAAY,UAAU,OAAO,EAAK,OAAO,aAAc,SAAU,MAAU,MAAM,yCAAyC,EAAG,EAAU,EAAK,MAAM,CAAE,OAAO,EAAM,CAAC,GAAG,aAAiB,cAAc,EAAM,OAAO,aAAa,OAAO,EAAU,IAAU,CAAC,GAAG,EAAQ,YAAY,gCAAgC,EAAE,CAAE,CAAC,EAAE,EAAY,EAAE,IAAM,EAAM,EAAO,YAAY,EAAY,CAAM,EAAE,UAAU,CAAC,EAAW,MAAM,EAAE,EAAO,cAAc,CAAK,CAAE,CAAE,EAAE,CAAC,EAAI,CAAM,CAAC,EAAE,IAAM,EAAS,EAAS,EAAO,YAAY,6DAAmE,EAAY,EAAsB,EAAO,WAAW,EAAE,OAAoB,EAAM,IAAI,CAAC,KAAK,EAAI,OAAO,SAAS,IAAI,sBAAsB,MAAM,CAAC,QAAQ,cAAc,WAAW,SAAS,IAAI,EAAE,WAAW,oBAAoB,WAAW,OAAO,OAAO,GAAG,eAAe,MAAM,EAAE,SAAS,CAAc,EAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,MAAM,WAAW,CAAQ,CAAC,CAAC,EAAe,EAAK,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,WAAW,IAAI,WAAW,MAAM,MAAM,4DAA4D,EAAE,SAAS,CAAW,CAAC,CAAC,CAAC,CAAC,CAAE,yBANx+C,IAA4B,EAAO,EAAS,CAAC,KAAK,UAAU,MAAM,UAAU,MAAM,UAAU,SAAS,SAAS,EAAQ,EAAc,CAAC,UAAU,OAAO,YAAY,yBAAyB"}