{"version":3,"file":"DynamicDateButton.C0ethUtb.mjs","names":["React.useState"],"sources":["https:/framerusercontent.com/modules/qPeQmy0Cl7JHUyRar0cR/mVCOHBfxW34vso3Putlh/DynamicDateButton.js"],"sourcesContent":["// For Header Only\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";// Format \"May 24th\" or \"May 24th 2025\"\nfunction formatDate(date,showYear){const options={month:\"long\"};const month=new Intl.DateTimeFormat(\"en-US\",options).format(date);const day=date.getDate();const year=date.getFullYear();const suffix=day===1||day===21||day===31?\"st\":day===2||day===22?\"nd\":day===3||day===23?\"rd\":\"th\";return showYear?`${month} ${day}${suffix} ${year}`:`${month} ${day}${suffix}`;}// Use local time (browser time)\nfunction getNow(){return new Date;}// Compute the next Saturday 11:59:59 PM (local time).\n// If now is already past this week's Saturday 11:59:59 PM, it returns next week's.\nfunction getNextSaturdayDeadline(now){// JS: Sunday = 0, Monday = 1, ... Saturday = 6\nconst dayOfWeek=now.getDay();const daysUntilSaturday=(6-dayOfWeek+7)%7;// Candidate: this week's Saturday at 23:59:59\nconst candidate=new Date(now.getFullYear(),now.getMonth(),now.getDate()+daysUntilSaturday,23,59,59,0);// If we've already crossed candidate, move to next week's Saturday\nif(now>candidate){candidate.setDate(candidate.getDate()+7);}return candidate;}// NAT date is T + 1 day (date of expiration + 1)\n// We keep it as a date (time not shown anyway), but normalize to avoid edge issues.\nfunction getNatDateFromDeadline(deadline){const natDate=new Date(deadline);natDate.setDate(natDate.getDate()+1)// T + 1 day\n;natDate.setHours(0,0,0,0)// normalize\n;return natDate;}// Format countdown string\nfunction formatCountdown(targetDate,now){const diff=targetDate-now;if(diff<=0)return\"0d: 0h: 0m: 0s\";const totalSeconds=Math.floor(diff/1e3);const days=Math.floor(totalSeconds/(24*60*60));const hours=Math.floor(totalSeconds%(24*60*60)/3600);const minutes=Math.floor(totalSeconds%3600/60);const seconds=totalSeconds%60;return`${days}d: ${hours}h: ${minutes}m: ${seconds}s`;}export function DynamicDeadlineText(props){const{fontSize,color,showTimer,boldTimer,fontStyle,showPrefix,showYear}=props;const[countdown,setCountdown]=React.useState(\"\");const[headerText,setHeaderText]=React.useState(\"\");React.useEffect(()=>{const update=()=>{const now=getNow();// T = next Saturday 11:59 PM (deadline/expiration)\nconst deadline=getNextSaturdayDeadline(now);// Display date = T + 1 day\nconst natDate=getNatDateFromDeadline(deadline);const natDateLabel=formatDate(natDate,showYear);setHeaderText(showPrefix?`NAT Date: ${natDateLabel}`:`${natDateLabel}`);// Countdown counts down to T (deadline)\nsetCountdown(formatCountdown(deadline,now));};update();const interval=setInterval(update,1e3);return()=>clearInterval(interval);},[showYear,showPrefix]);const isItalic=fontStyle===\"Medium Italic\";return /*#__PURE__*/_jsxs(\"div\",{style:{fontFamily:\"Satoshi, sans-serif\",fontSize:fontSize,lineHeight:\"24px\",color:color,fontWeight:500,fontStyle:isItalic?\"italic\":\"normal\",display:\"flex\",gap:\"8px\",alignItems:\"center\"},children:[/*#__PURE__*/_jsx(\"span\",{children:headerText}),showTimer&&/*#__PURE__*/_jsx(\"span\",{style:{fontFamily:\"Roboto, sans-serif\",fontVariantNumeric:\"tabular-nums\",fontWeight:boldTimer?700:600},children:countdown})]});}addPropertyControls(DynamicDeadlineText,{fontSize:{title:\"Font Size\",type:ControlType.Number,defaultValue:16,min:10,max:100,unit:\"px\"},color:{title:\"Color\",type:ControlType.Color,defaultValue:\"#000000\"},showTimer:{title:\"Show Timer\",type:ControlType.Boolean,defaultValue:true},boldTimer:{title:\"Bold Timer\",type:ControlType.Boolean,defaultValue:false,hidden:props=>!props.showTimer},fontStyle:{title:\"Font Style\",type:ControlType.Enum,options:[\"Medium\",\"Medium Italic\"],optionTitles:[\"Medium\",\"Medium Italic\"],defaultValue:\"Medium\"},showPrefix:{title:\"Show 'Phase-1 NAT is on'\",type:ControlType.Boolean,defaultValue:true},showYear:{title:\"Show Year\",type:ControlType.Boolean,defaultValue:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"DynamicDeadlineText\":{\"type\":\"reactComponent\",\"name\":\"DynamicDeadlineText\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./DynamicDateButton.map"],"mappings":"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"}