{"version":3,"file":"OpenStatus.pElt3CPn.mjs","names":["useState"],"sources":["https:/framerusercontent.com/modules/e9KzY0SPUfISCpB37Bhx/tu7VRaPFQvAuE1dRJdke/OpenStatus.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useEffect,useState}from\"react\";// \"Open now · until 4pm\" / \"Closed · opens Mon 7am\" pill. Works out the\n// status in the shop's time zone, so it's right for visitors anywhere.\n// Hours are \"HH:MM-HH:MM\" per day; leave a day empty when closed.\nconst DAYS=[\"sun\",\"mon\",\"tue\",\"wed\",\"thu\",\"fri\",\"sat\"];const DAY_NAMES=[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"];function parse(range){const m=range.trim().match(/^(\\d{1,2}):(\\d{2})\\s*-\\s*(\\d{1,2}):(\\d{2})$/);if(!m)return null;return[Number(m[1])*60+Number(m[2]),Number(m[3])*60+Number(m[4])];}function formatTime(minutes){const h=Math.floor(minutes/60);const m=minutes%60;const suffix=h>=12?\"pm\":\"am\";const h12=h%12===0?12:h%12;return m?`${h12}:${String(m).padStart(2,\"0\")}${suffix}`:`${h12}${suffix}`;}// Current day index (0 = Sunday) and minutes past midnight in the time zone.\nfunction nowIn(timeZone){const parts=new Intl.DateTimeFormat(\"en-GB\",{timeZone,weekday:\"short\",hour:\"2-digit\",minute:\"2-digit\",hourCycle:\"h23\"}).formatToParts(new Date);const get=type=>parts.find(p=>p.type===type)?.value??\"\";return{day:DAY_NAMES.indexOf(get(\"weekday\")),minutes:Number(get(\"hour\"))*60+Number(get(\"minute\"))};}export function status(props,now=nowIn(props.timeZone)){const today=parse(props[DAYS[now.day]]??\"\");if(today&&now.minutes>=today[0]&&now.minutes<today[1]){return{open:true,label:`Open now \\xb7 until ${formatTime(today[1])}`};}if(today&&now.minutes<today[0]){return{open:false,label:`Closed \\xb7 opens at ${formatTime(today[0])}`};}for(let i=1;i<=7;i++){const day=(now.day+i)%7;const hours=parse(props[DAYS[day]]??\"\");if(hours){const when=i===1?\"tomorrow\":DAY_NAMES[day];return{open:false,label:`Closed \\xb7 opens ${when} ${formatTime(hours[0])}`};}}return{open:false,label:\"Closed\"};}/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function OpenStatus(props){const[state,setState]=useState(()=>status(props));useEffect(()=>{setState(status(props));const timer=setInterval(()=>setState(status(props)),6e4);return()=>clearInterval(timer);},[props.mon,props.tue,props.wed,props.thu,props.fri,props.sat,props.sun,props.timeZone]);return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"inline-flex\",alignItems:\"center\",gap:8,padding:\"7px 14px\",borderRadius:999,background:props.background,border:`1px solid ${props.borderColor}`,color:props.textColor,whiteSpace:\"nowrap\",...props.font},children:[/*#__PURE__*/_jsx(\"span\",{style:{width:9,height:9,borderRadius:\"50%\",flex:\"none\",background:state.open?props.openColor:props.closedColor,boxShadow:state.open?`0 0 0 4px ${props.openColor}33`:\"none\"}}),state.label]});}const day=(title,defaultValue)=>({type:ControlType.String,title,defaultValue,placeholder:\"Closed\",...title===\"Monday\"&&{description:\"Format 07:00-16:00. Leave empty when closed.\"}});OpenStatus.defaultProps={mon:\"07:00-16:00\",tue:\"07:00-16:00\",wed:\"07:00-16:00\",thu:\"07:00-16:00\",fri:\"07:00-16:00\",sat:\"07:00-16:00\",sun:\"\",timeZone:\"Europe/London\",openColor:\"#3f9a57\",closedColor:\"#9c8f82\",textColor:\"#2e2019\",background:\"#fffcf6\",borderColor:\"#dccbb0\"};addPropertyControls(OpenStatus,{mon:day(\"Monday\",\"07:00-16:00\"),tue:day(\"Tuesday\",\"07:00-16:00\"),wed:day(\"Wednesday\",\"07:00-16:00\"),thu:day(\"Thursday\",\"07:00-16:00\"),fri:day(\"Friday\",\"07:00-16:00\"),sat:day(\"Saturday\",\"07:00-16:00\"),sun:day(\"Sunday\",\"\"),timeZone:{type:ControlType.String,title:\"Time zone\",defaultValue:\"Europe/London\"},font:{type:ControlType.Font,title:\"Font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontSize:15,variant:\"Bold\",lineHeight:\"1.4em\"}},textColor:{type:ControlType.Color,title:\"Text\",defaultValue:\"#2e2019\"},background:{type:ControlType.Color,title:\"Background\",defaultValue:\"#fffcf6\"},borderColor:{type:ControlType.Color,title:\"Border\",defaultValue:\"#dccbb0\"},openColor:{type:ControlType.Color,title:\"Open dot\",defaultValue:\"#3f9a57\"},closedColor:{type:ControlType.Color,title:\"Closed dot\",defaultValue:\"#9c8f82\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"OpenStatus\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"auto\"}},\"status\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./OpenStatus.map"],"mappings":"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"}