{"version":3,"file":"NextProgramStart.CnMKILbt.mjs","names":["p"],"sources":["https:/framerusercontent.com/modules/NYC1g5cfUYUMFQUwV5pC/IR8rBoOk9MABcoH54ofy/NextProgramStart.js"],"sourcesContent":["// NextProgramStart.jsx — Framer Code Component with Text Styles (H1/H2/Body…)\n// Content example: \"Next Program Starts Wednesday,\\nSept. 10th\"\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";// ----- helpers -----\nfunction getOrdinalSuffix(i){const j=i%10,k=i%100;if(j===1&&k!==11)return\"st\";if(j===2&&k!==12)return\"nd\";if(j===3&&k!==13)return\"rd\";return\"th\";}// Sun/Mon/Tue → next Wednesday; Wed/Thu/Fri/Sat → next Monday\nfunction computeNextProgramDate(now){const d=new Date(now);const day=d.getDay()// 0..6\n;const next=new Date(d);if(day<=1){// Sunday or Monday → next Wednesday\nnext.setDate(d.getDate()+(1-day)+2);}else if(day===2){// Tuesday → next Wednesday\nnext.setDate(d.getDate()+1);}else if(day<=4){// Wednesday or Thursday → next Monday\nnext.setDate(d.getDate()+(5-day)+3);}else{// Friday or Saturday → next Monday\nnext.setDate(d.getDate()+(8-day));}return next;}const WEEKDAYS=[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"];const MONTHS=[\"Jan.\",\"Feb.\",\"Mar.\",\"Apr.\",\"May\",\"Jun.\",\"Jul.\",\"Aug.\",\"Sept.\",\"Oct.\",\"Nov.\",\"Dec.\"];// ----- component -----\nexport default function NextProgramStart(p){const props={prefix:\"Next Program Starts\",lineBreakAfterWeekday:true,// PRIMARY: Text Style (Framer predefined typography)\ntextStyle:undefined,// FALLBACKS (used when no style is chosen)\nfontToken:undefined,fontSize:28,lineHeight:1.2,// Color & layout\ncolor:\"#0F2B2A\",textAlign:\"center\",widthPx:600,paddingTop:0,paddingRight:0,paddingBottom:0,paddingLeft:0,...p};const[textParts,setTextParts]=React.useState({line1:\"\",line2:\"\"});React.useEffect(()=>{const now=new Date;const next=computeNextProgramDate(now);const weekday=WEEKDAYS[next.getDay()];const month=MONTHS[next.getMonth()];const day=next.getDate();setTextParts({line1:`${props.prefix} ${weekday},`,line2:`${month} ${day}${getOrdinalSuffix(day)}`});// run once on mount to use client timezone\n// eslint-disable-next-line react-hooks/exhaustive-deps\n},[]);// ----- derive styles (Style → fallbacks) -----\nconst styleToken=props.textStyle||{};// What a Text Style usually provides:\nconst styleFamily=styleToken.fontFamily||styleToken.family;const styleWeight=styleToken.fontWeight||styleToken.weight;const styleSize=styleToken.fontSize||styleToken.size;const styleLH=styleToken.lineHeight;const styleLS=styleToken.letterSpacing;const styleTx=styleToken.textTransform// e.g., \"uppercase\"\n;// Fallback to Font token if no style\nconst fontToken=props.fontToken||{};const tokenFamily=fontToken.family||fontToken.fontFamily;const tokenWeight=fontToken.weight||fontToken.fontWeight;const fontFamily=styleFamily||tokenFamily||'Outfit, system-ui, -apple-system, \"Segoe UI\", Roboto, Arial, sans-serif';const fontWeight=(styleWeight||tokenWeight||600).toString();const fontSize=styleSize!=null?styleSize:props.fontSize;const lineHeight=styleLH!=null?styleLH:props.lineHeight;const letterSpacing=styleLS!=null?styleLS:undefined;const textTransform=styleTx!=null?styleTx:undefined;return /*#__PURE__*/_jsxs(\"div\",{style:{width:props.widthPx,color:props.color,fontFamily,fontWeight,fontSize,lineHeight,letterSpacing,textTransform,textAlign:props.textAlign,paddingTop:props.paddingTop,paddingRight:props.paddingRight,paddingBottom:props.paddingBottom,paddingLeft:props.paddingLeft,display:\"block\"},\"aria-label\":`${textParts.line1} ${textParts.line2}`,children:[/*#__PURE__*/_jsx(\"span\",{children:textParts.line1}),props.lineBreakAfterWeekday?/*#__PURE__*/_jsx(\"br\",{}):\" \",/*#__PURE__*/_jsx(\"span\",{children:textParts.line2})]});}// ----- property controls -----\naddPropertyControls(NextProgramStart,{// Content\nprefix:{title:\"Prefix\",type:ControlType.String,defaultValue:\"Next Program Starts\"},lineBreakAfterWeekday:{title:\"Line Break\",type:ControlType.Boolean,defaultValue:true},// Text Styles (Framer’s predefined typography)\ntextStyle:{title:\"Style\",type:ControlType.Style},// Fallbacks when no Style is selected\nfontToken:{title:\"Font\",type:ControlType.Font},fontSize:{title:\"Font Size\",type:ControlType.Number,min:10,max:96,defaultValue:28},lineHeight:{title:\"Line Height\",type:ControlType.Number,min:.8,max:2,defaultValue:1.2},// Color & layout (separate from Style, like native Framer Text)\ncolor:{title:\"Color\",type:ControlType.Color,defaultValue:\"#0F2B2A\"},textAlign:{title:\"Align\",type:ControlType.SegmentedEnum,options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"],defaultValue:\"center\"},widthPx:{title:\"Width (px)\",type:ControlType.Number,min:100,max:1200,defaultValue:600},// Optional padding\npaddingTop:{title:\"Pad Top\",type:ControlType.Number,min:0,max:64,defaultValue:0},paddingRight:{title:\"Pad Right\",type:ControlType.Number,min:0,max:64,defaultValue:0},paddingBottom:{title:\"Pad Bottom\",type:ControlType.Number,min:0,max:64,defaultValue:0},paddingLeft:{title:\"Pad Left\",type:ControlType.Number,min:0,max:64,defaultValue:0}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"NextProgramStart\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./NextProgramStart.map"],"mappings":"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"}