{"version":3,"file":"SiteHeader.Cm4QUI39.mjs","names":["canonicalPath","RENAMED_PATHS","React.useState","React.useRef","HEAD_FONT","BODY_FONT","resolveLink","NEWSLETTER_URL","LINK_FALLBACKS","canonicalPath","RENAMED_PATHS","HEAD_FONT","BODY_FONT","resolveLink","c","_Fragment","React.useState","React.useRef","React.useCallback"],"sources":["https:/framerusercontent.com/modules/tJGF9E9x08vlgPovoEKL/Mu7d8exH5jvYWX5okbnv/NextStepsBubble.js","https:/framerusercontent.com/modules/aBeaQkpFFc83QlXkjuwl/YZQlD3hz6c4fOLxmJCId/SiteFooter.js","https:/framerusercontent.com/modules/dLj5NeEesSgao78sd2q5/dGux5Tvj27KsLc9AFMnl/SiteHeader.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{motion,AnimatePresence}from\"framer-motion\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";const HEAD_FONT=\"'Montserrat', 'Helvetica Neue', sans-serif\";const BODY_FONT=\"'Archivo', 'Helvetica Neue', sans-serif\";// The bubble is solid brand blue, not a gradient (Jack, 2026-08-26). Instances\n// snapshot props at insert time, so the fill is resolved from this constant\n// rather than the old color1/color2 pair some instances still carry.\nconst BRAND_BLUE=\"#4d9ee9\";// Circle diameter. Instances also snapshot the size prop, so the 88 that\n// shipped instances carry is read as \"never set by hand\" and resolved to the\n// current default (Jack, 2026-09-01: a bit smaller). A client-picked value\n// other than 88 always wins.\nconst CIRCLE_SIZE=76;const LEGACY_CIRCLE_SIZE=88;// The church's MailChimp hosted signup form, supplied by Lorenzo on\n// 2026-10-02. This replaces a mailto: that was standing in until they\n// confirmed a destination — a mailto hands off to whatever the visitor's\n// machine treats as a mail handler, which on the review call opened an\n// account-setup prompt for one person and a compose window for another.\nconst NEWSLETTER_URL=\"https://mailchi.mp/therocc/newsletter-signup\";// river-oaks-church.churchcenter.com is the real subdomain. The shorter\n// riveroaks.churchcenter.com belongs to a different church and 404s; it was\n// live on several buttons until 2026-08-17, so it is rewritten at render\n// below rather than only corrected in these defaults.\nconst CC=\"https://river-oaks-church.churchcenter.com\";const DEAD_CC=\"riveroaks.churchcenter.com\";// Baptism goes to the church's own signup form (Jack, 2026-09-01), not the\n// generic registrations index. Instances snapshot Quick Links at insert time,\n// so any stored Baptism row is rewritten at render — see resolveLink.\nconst BAPTISM_URL=`${CC}/people/forms/1068727`;const BAPTISM_LABELS=[\"Baptism\",\"Baptisms\"];// Quick-link order from the 2026-08-18 review call: the pastor's four priorities\n// (Weekly Bulletin, Serve, Groups, Baptism) lead, and the rest of the\n// 2026-07-28 set follows underneath.\n//\n// Trimmed on the 2026-09-30 review call from eleven items to eight: Lorenzo\n// asked for Get Support, Prayer Guide and Request a Wedding Officiant to come\n// out, and Zach kept Newsletter Signup when it was briefly in the same group.\n// Request Prayer now lands on /prayer, which holds both the guide and the\n// request form, so the standalone Prayer Guide row is redundant.\n//\n// Instances snapshot Array props at insert time, so any stored set that still\n// carries a removed item or is missing a call addition is replaced wholesale\n// at render. A client edit that keeps all the call labels wins.\nconst CANONICAL_LINKS=[{label:\"Weekly Bulletin\",description:\"This week's events & announcements\",link:\"/bulletin\"},{label:\"Serve\",description:\"Saturate Murfreesboro with His love\",link:\"/saturate-murfreesboro\"},{label:\"Find a Group\",description:\"Do life together\",link:\"/groups\"},{label:\"Baptism\",description:\"Take your next step of obedience\",link:BAPTISM_URL},{label:\"Plan Your Visit\",description:\"Sundays 8, 9:30 & 11AM\",link:\"/visitriveroaks\"},{label:\"Give\",description:\"Simple & secure\",link:\"/give\"},{label:\"Request Prayer\",description:\"We'd love to pray for you\",link:\"/prayer\"},{label:\"Newsletter Signup\",description:\"Stay in the loop each week\",link:NEWSLETTER_URL}];const REMOVED_LABELS=[\"RO KiDS\",\"Students\",\"Pre-Register Your Kids\",// Removed on the 2026-09-30 call.\n\"Get Support\",\"Prayer Guide\",\"Request a Wedding Officiant\"];const CALL_LABELS=[\"Weekly Bulletin\",\"Serve\",\"Baptism\"];function healLinks(links){if(!Array.isArray(links)||links.length===0)return CANONICAL_LINKS;const labels=links.map(l=>(l?.label||\"\").trim());const hasRemoved=labels.some(l=>REMOVED_LABELS.includes(l));const hasAllCall=CALL_LABELS.every(cl=>labels.includes(cl));return hasRemoved||!hasAllCall?CANONICAL_LINKS:links;}// Fallback destinations by label — used when an instance has no link set\n// (older instances stored empty links; client-set values always win). Labels\n// that are no longer in CANONICAL_LINKS are kept here on purpose, so that a\n// row re-added by hand in the Quick Links panel still resolves somewhere real.\nconst LINK_FALLBACKS={\"Weekly Bulletin\":\"/bulletin\",\"Bulletin\":\"/bulletin\",\"Plan Your Visit\":\"/visitriveroaks\",\"Visit\":\"/visitriveroaks\",\"New Here?\":\"/visitriveroaks\",\"RO KiDS\":\"/kids\",\"Kids\":\"/kids\",\"Students\":\"/students\",\"Find a Group\":\"/groups\",\"Groups\":\"/groups\",\"Give\":\"/give\",\"Serve\":\"/saturate-murfreesboro\",\"Baptism\":BAPTISM_URL,\"Baptisms\":BAPTISM_URL,\"Request Prayer\":\"/prayer\",\"Prayer\":\"/prayer\",\"Prayer Guide\":\"/prayer\",\"Request a Wedding Officiant\":`${CC}/people/forms/1171270`,\"Get Involved\":\"/saturate-murfreesboro\",\"Get Support\":\"/care\",\"Newsletter Signup\":NEWSLETTER_URL};// Slugs that moved after instances had already snapshotted them. The first\n// three went to the old site's addresses so the search equity carried over;\n// /prayer-guide became /prayer on the 2026-09-30 call, when it absorbed the\n// prayer request form. Stored props still point at the retired paths, so they\n// are rewritten at render, the same way the dead Church Center subdomain is.\nconst RENAMED_PATHS={\"/visit\":\"/visitriveroaks\",\"/staff\":\"/our-staff\",\"/about\":\"/who-we-are\",\"/prayer-guide\":\"/prayer\"};function canonicalPath(path){const cut=path.search(/[#?]/);const base=cut===-1?path:path.slice(0,cut);const tail=cut===-1?\"\":path.slice(cut);return(RENAMED_PATHS[base]||base)+tail;}const resolveLink=l=>{const label=(l.label||\"\").trim();// Every instance's Baptism row points at the signup form, whatever the\n// stored snapshot says, so all pages move together.\nif(BAPTISM_LABELS.includes(label))return BAPTISM_URL;const raw=l.link||LINK_FALLBACKS[label]||\"#\";const fixed=raw.includes(DEAD_CC)?raw.replace(DEAD_CC,\"river-oaks-church.churchcenter.com\"):raw;return canonicalPath(fixed);};/**\n * Floating \"Next Steps\" quick-action bubble.\n * Self-positions fixed in the bottom-right corner of the viewport at runtime —\n * place it anywhere in the page flow (it takes up no space).\n *\n * On phones it still rides a little above the desktop resting spot so the\n * free-plan \"Made in Framer\" badge in the same corner stays clear, but only\n * by 24px (Jack, 2026-09-01) instead of the old 56px, which floated it too\n * far up the screen.\n *\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n * @framerIntrinsicWidth 92\n * @framerIntrinsicHeight 92\n */export default function NextStepsBubble(props){const{label,heading,links=[],color,size,teaserEnabled,teaserTitle,teaserText,teaserLink}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const[open,setOpen]=React.useState(false);const[teaser,setTeaser]=React.useState(false);const[isPhone,setIsPhone]=React.useState(false);const rootRef=React.useRef(null);const quickLinks=healLinks(links);// The circle carries the label on two lines, so it is split once here\n// rather than relying on the browser to break it in a fixed-width circle.\nconst words=String(label||\"Next Steps\").trim().split(/\\s+/);const line1=words.slice(0,Math.ceil(words.length/2)).join(\" \");const line2=words.slice(Math.ceil(words.length/2)).join(\" \");React.useEffect(()=>{if(typeof window===\"undefined\"||!window.matchMedia)return;const mq=window.matchMedia(\"(max-width: 809px)\");const onMq=()=>setIsPhone(mq.matches);onMq();mq.addEventListener(\"change\",onMq);return()=>mq.removeEventListener(\"change\",onMq);},[]);React.useEffect(()=>{if(typeof document===\"undefined\"||!open)return;const onDown=e=>{if(rootRef.current&&!rootRef.current.contains(e.target)){setOpen(false);}};const onKey=e=>{if(e.key===\"Escape\")setOpen(false);};document.addEventListener(\"mousedown\",onDown);document.addEventListener(\"touchstart\",onDown);document.addEventListener(\"keydown\",onKey);return()=>{document.removeEventListener(\"mousedown\",onDown);document.removeEventListener(\"touchstart\",onDown);document.removeEventListener(\"keydown\",onKey);};},[open]);// The campaign peek (\"Click here\" → this week's bulletin) slides out of\n// the circle a beat after the page settles, and stays dismissed for the\n// rest of the browsing session so it never nags.\nReact.useEffect(()=>{if(isCanvas||!teaserEnabled||typeof window===\"undefined\")return;try{if(window.sessionStorage.getItem(\"ro-teaser-dismissed\")===\"1\")return;}catch(e){// Private browsing can throw on sessionStorage; show it anyway.\n}const t=window.setTimeout(()=>setTeaser(true),1400);return()=>clearTimeout(t);},[isCanvas,teaserEnabled]);const dismissTeaser=()=>{setTeaser(false);try{window.sessionStorage.setItem(\"ro-teaser-dismissed\",\"1\");}catch(e){// Nothing to do — the peek simply reappears next page load.\n}};const fill=color||BRAND_BLUE;const storedSize=Number(size);const dim=Math.max(56,!storedSize||storedSize===LEGACY_CIRCLE_SIZE?CIRCLE_SIZE:storedSize);const bubble=/*#__PURE__*/_jsxs(\"div\",{ref:rootRef,style:{position:isCanvas?\"relative\":\"fixed\",bottom:isCanvas?undefined:isPhone?\"calc(max(20px, env(safe-area-inset-bottom)) + 24px)\":\"max(20px, env(safe-area-inset-bottom))\",right:20,zIndex:9995,display:\"flex\",flexDirection:\"column\",alignItems:\"flex-end\"},children:[/*#__PURE__*/_jsx(AnimatePresence,{children:open&&/*#__PURE__*/_jsxs(motion.div,{role:\"menu\",initial:{opacity:0,y:16,scale:.96},animate:{opacity:1,y:0,scale:1},exit:{opacity:0,y:12,scale:.97},transition:{duration:.22,ease:[.22,1,.36,1]},style:{position:\"absolute\",bottom:\"calc(100% + 14px)\",right:0,width:\"min(340px, calc(100vw - 40px))\",background:\"#ffffff\",borderRadius:22,boxShadow:\"0 24px 70px rgba(0,0,0,0.22), 0 4px 16px rgba(0,0,0,0.10)\",overflow:\"hidden\",transformOrigin:\"bottom right\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{background:fill,padding:\"18px 22px\",color:\"#ffffff\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontFamily:HEAD_FONT,fontWeight:700,fontSize:18},children:heading}),/*#__PURE__*/_jsx(\"div\",{style:{fontFamily:BODY_FONT,fontSize:13.5,opacity:.92,marginTop:4},children:\"Wherever you are, there's a next step for you.\"})]}),/*#__PURE__*/_jsx(\"div\",{style:{padding:10,maxHeight:\"55vh\",overflowY:\"auto\"},children:quickLinks.map((l,i)=>/*#__PURE__*/_jsxs(\"a\",{role:\"menuitem\",href:resolveLink(l),onClick:()=>setOpen(false),style:{display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",gap:12,padding:\"14px 14px\",borderRadius:14,textDecoration:\"none\",color:\"#000000\",transition:\"background 0.18s ease\"},onMouseEnter:e=>e.currentTarget.style.background=\"#f0f6fd\",onMouseLeave:e=>e.currentTarget.style.background=\"transparent\",children:[/*#__PURE__*/_jsxs(\"span\",{children:[/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",fontFamily:HEAD_FONT,fontWeight:700,fontSize:15.5},children:l.label}),l.description?/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",fontFamily:BODY_FONT,fontSize:13,color:\"#555555\",marginTop:2},children:l.description}):null]}),/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,style:{fontFamily:BODY_FONT,fontSize:16,color:fill,flexShrink:0},children:\"→\"})]},i))})]})}),/*#__PURE__*/_jsx(AnimatePresence,{children:teaser&&!open&&/*#__PURE__*/_jsxs(motion.div,{initial:{opacity:0,x:24,scale:.94},animate:{opacity:1,x:0,scale:1},exit:{opacity:0,x:16,scale:.96},transition:{duration:.34,ease:[.22,1,.36,1]},style:{position:\"absolute\",bottom:Math.round(dim/2-26),right:dim+12,display:\"flex\",alignItems:\"center\",gap:10,padding:\"12px 14px\",width:\"max-content\",maxWidth:\"min(260px, calc(100vw - 130px))\",background:\"#ffffff\",borderRadius:16,boxShadow:\"0 14px 40px rgba(0,0,0,0.20)\",transformOrigin:\"right center\"},children:[/*#__PURE__*/_jsxs(\"a\",{href:teaserLink||\"/bulletin\",onClick:dismissTeaser,style:{textDecoration:\"none\",display:\"block\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",fontFamily:HEAD_FONT,fontWeight:700,fontSize:14.5,color:\"#000000\",lineHeight:1.2},children:teaserTitle}),/*#__PURE__*/_jsxs(\"span\",{style:{display:\"block\",fontFamily:BODY_FONT,fontSize:13,color:fill,fontWeight:600,marginTop:3},children:[teaserText,\" →\"]})]}),/*#__PURE__*/_jsx(\"button\",{\"aria-label\":\"Dismiss\",onClick:dismissTeaser,style:{width:26,height:26,flexShrink:0,alignSelf:\"flex-start\",borderRadius:999,border:\"none\",background:\"#f2f2f2\",color:\"#555555\",fontSize:12,lineHeight:1,cursor:\"pointer\",fontFamily:BODY_FONT},children:\"✕\"})]})}),/*#__PURE__*/_jsx(motion.button,{\"aria-label\":open?\"Close next steps menu\":\"Open next steps menu\",\"aria-expanded\":open,onClick:()=>!isCanvas&&setOpen(!open),whileHover:{scale:1.05},whileTap:{scale:.95},style:{display:\"flex\",flexDirection:\"column\",alignItems:\"center\",justifyContent:\"center\",gap:1,width:dim,height:dim,padding:0,// A true circle, per the 2026-08-18 review.\nborderRadius:\"50%\",border:\"none\",background:fill,color:\"#ffffff\",fontFamily:HEAD_FONT,fontWeight:700,fontSize:12,lineHeight:1.12,letterSpacing:\"0.01em\",textTransform:\"uppercase\",cursor:\"pointer\",boxShadow:\"0 12px 34px rgba(62,127,187,0.45)\"},children:/*#__PURE__*/_jsx(AnimatePresence,{mode:\"wait\",initial:false,children:open?/*#__PURE__*/_jsx(motion.span,{\"aria-hidden\":true,initial:{opacity:0,rotate:-45},animate:{opacity:1,rotate:0},exit:{opacity:0,rotate:45},transition:{duration:.18},style:{fontSize:24,fontWeight:400,fontFamily:BODY_FONT,lineHeight:1},children:\"✕\"},\"close\"):/*#__PURE__*/_jsxs(motion.span,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.18},style:{display:\"block\",textAlign:\"center\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\"},children:line1}),line2?/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\"},children:line2}):null]},\"label\")})})]});if(isCanvas)return bubble;// Zero-footprint anchor: the bubble is fixed to the viewport, so its slot\n// in the page flow takes no space.\nreturn /*#__PURE__*/_jsx(\"div\",{style:{width:0,height:0,overflow:\"visible\"},children:bubble});}addPropertyControls(NextStepsBubble,{label:{type:ControlType.String,title:\"Button Label\",defaultValue:\"Next Steps\"},heading:{type:ControlType.String,title:\"Panel Heading\",defaultValue:\"Take a Next Step\"},size:{type:ControlType.Number,title:\"Circle Size\",defaultValue:CIRCLE_SIZE,min:56,max:120,step:2,displayStepper:true},links:{type:ControlType.Array,title:\"Quick Links\",control:{type:ControlType.Object,controls:{label:{type:ControlType.String,defaultValue:\"Plan Your Visit\"},description:{type:ControlType.String,defaultValue:\"\"},link:{type:ControlType.String,defaultValue:\"/visitriveroaks\"}}},defaultValue:CANONICAL_LINKS},teaserEnabled:{type:ControlType.Boolean,title:\"Show Peek\",defaultValue:true,description:\"Small promo that slides out beside the circle\"},teaserTitle:{type:ControlType.String,title:\"Peek Title\",defaultValue:\"This week's bulletin\"},teaserText:{type:ControlType.String,title:\"Peek Link Text\",defaultValue:\"Click here\"},teaserLink:{type:ControlType.String,title:\"Peek Link\",defaultValue:\"/bulletin\"},color:{type:ControlType.Color,title:\"Bubble Color\",defaultValue:BRAND_BLUE}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"NextStepsBubble\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"92\",\"framerSupportedLayoutWidth\":\"auto\",\"framerIntrinsicWidth\":\"92\",\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./NextStepsBubble.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";const HEAD_FONT=\"'Montserrat', 'Helvetica Neue', sans-serif\";const BODY_FONT=\"'Archivo', 'Helvetica Neue', sans-serif\";// Same artwork the header uses. Kept as a String default rather than a\n// ResponsiveImage control so every existing footer instance picks it up\n// without a per-page edit (the MCP cannot write image props).\nconst LOGO_URL=\"https://framerusercontent.com/images/XG6THANgbxV5jVaNAx3dHva2qXM.png?width=2200&height=458\";// Newsletter destination is not confirmed by the client yet; a mailto is the\n// only address guaranteed to reach a human until they supply the signup form.\nconst NEWSLETTER_URL=\"mailto:office@riveroaks.church?subject=Newsletter%20sign-up\";// River Oaks' real social accounts, verified 2026-08-23.\n//\n// An earlier build used the handle \"riveroakstn\" for both Facebook and\n// Instagram. Neither exists: Facebook returns \"This content isn't available\n// right now\" and Instagram returns \"Profile isn't available\". The live\n// riveroaks.church site points at facebook.com/RiverOaksChurch and\n// instagram.com/riveroaks.church, and both resolve to the real Murfreesboro\n// accounts.\n//\n// The footer appears on every page and each instance stores its own copy of\n// these URLs, which the MCP cannot rewrite, so the handle is corrected at\n// render time. Same approach as the Church Center host fix in BrandButton.\n// Duplicated in SocialRow.tsx: Framer rejects code files that do not export\n// a component, so there is nowhere shared to put it.\nconst SOCIAL_FIXES=[[/\\/\\/(?:www\\.)?facebook\\.com\\/riveroakstn\\/?$/i,\"//www.facebook.com/RiverOaksChurch\"],[/\\/\\/(?:www\\.)?instagram\\.com\\/riveroakstn\\/?$/i,\"//www.instagram.com/riveroaks.church\"]];function correctSocial(url){if(!url)return url;for(const[re,to]of SOCIAL_FIXES){if(re.test(url))return url.replace(re,to);}return url;}// Canonical link sets from the 2026-07-28 client call, revised 2026-08-17.\n//\n// The Weekly Bulletin is now the single events destination, so the old\n// standalone \"Events\" entry is gone from here: it pointed at a second,\n// parallel calendar and the client asked not to maintain two. Anything that\n// still stores the old label is routed to the bulletin by LINK_FALLBACKS\n// below, so no stored instance can produce a dead end.\nconst CANONICAL_EXPLORE=[{label:\"About\",link:\"/who-we-are\"},{label:\"Give\",link:\"/give\"},{label:\"Weekly Bulletin\",link:\"/bulletin\"},{label:\"Kids\",link:\"/kids\"},{label:\"Students\",link:\"/students\"},{label:\"Saturate Murfreesboro\",link:\"/saturate-murfreesboro\"},{label:\"Groups\",link:\"/groups\"},{label:\"Resources\",link:\"/resources\"},{label:\"Care\",link:\"/care\"},{label:\"Sermons\",link:\"/sermons\"},{label:\"Sermon Notes\",link:\"/sermon-notes\"},{label:\"Staff\",link:\"/our-staff\"}];const CANONICAL_NEXT_STEPS=[{label:\"Plan Your Visit\",link:\"/visitriveroaks\"},{label:\"Serve\",link:\"/saturate-murfreesboro\"},{label:\"Give\",link:\"/give\"},{label:\"Request Prayer\",link:\"/you-matter\"},{label:\"Get Support\",link:\"/care\"},{label:\"Newsletter Signup\",link:NEWSLETTER_URL}];const EXPLORE_CALL_LABELS=[\"Weekly Bulletin\",\"Resources\",\"Care\",\"Sermon Notes\"];const NEXT_CALL_LABELS=[\"Serve\",\"Newsletter Signup\"];// Instances snapshot Array props at insert time and the MCP cannot rewrite\n// them, so a stored set is trusted only when it carries EVERY label the\n// current canonical set introduced. Missing one means the instance predates\n// that revision and is replaced wholesale; a client who has genuinely edited\n// the footer keeps all the labels, so their edit survives.\n//\n// This has to be \"every\", not \"some\": with \"some\", an instance stored after\n// an earlier revision would satisfy the check on an old label and silently\n// keep a menu that is missing everything added since.\nfunction heal(list,canonical,callLabels){if(!Array.isArray(list)||list.length===0)return canonical;const labels=list.map(l=>(l?.label||\"\").trim());return callLabels.every(c=>labels.includes(c))?list:canonical;}// Fallback destinations by label — used when an instance has no link set\n// (older instances stored empty links; client-set values always win).\nconst LINK_FALLBACKS={\"Visit\":\"/visitriveroaks\",\"Kids\":\"/kids\",\"Students\":\"/students\",\"Groups\":\"/groups\",\"Sermons\":\"/sermons\",\"Sermon Notes\":\"/sermon-notes\",// Retired page: the bulletin is the events destination now.\n\"Events\":\"/bulletin\",\"Staff\":\"/our-staff\",\"Give\":\"/give\",\"About\":\"/who-we-are\",\"Weekly Bulletin\":\"/bulletin\",\"Resources\":\"/resources\",\"Care\":\"/care\",\"Serve\":\"/saturate-murfreesboro\",\"Newsletter Signup\":NEWSLETTER_URL,\"Request Prayer\":\"/you-matter\",\"Plan Your Visit\":\"/visitriveroaks\",\"Pre-Register Your Kids\":\"/kids\",\"Get Involved\":\"/saturate-murfreesboro\",\"Find Support\":\"/saturate-murfreesboro\",\"Get Support\":\"/care\",\"Saturate Murfreesboro\":\"/saturate-murfreesboro\"};// A stored \"/events\" link is rewritten too, not just a missing one: the\n// retired page must not be reachable from the footer of any page whose\n// instance still holds the old value.\nconst RETIRED_LINKS={\"/events\":\"/bulletin\"};// Three slugs moved to the old site's addresses so the search equity carries\n// over. Instances snapshot Array props at insert time, so stored props still\n// point at the retired paths — they are rewritten here rather than only\n// corrected in the defaults above.\nconst RENAMED_PATHS={\"/visit\":\"/visitriveroaks\",\"/staff\":\"/our-staff\",\"/about\":\"/who-we-are\"};function canonicalPath(path){const cut=path.search(/[#?]/);const base=cut===-1?path:path.slice(0,cut);const tail=cut===-1?\"\":path.slice(cut);return(RENAMED_PATHS[base]||base)+tail;}const resolveLink=l=>{const stored=(l.link||\"\").trim();const target=stored||LINK_FALLBACKS[(l.label||\"\").trim()]||\"#\";return canonicalPath(RETIRED_LINKS[target]||target);};// Phone layout: the whole footer centres, matching the rest of the site.\nconst FOOTER_CSS=`\n@media (max-width: 809px) {\n  .ro-footer, .ro-footer a, .ro-footer p, .ro-footer div, .ro-footer span { text-align: center; }\n  .ro-footer .ro-foot-cols { justify-content: center; }\n  .ro-footer .ro-foot-brand { align-items: center; }\n  .ro-footer .ro-foot-brand p { margin-left: auto; margin-right: auto; }\n  .ro-footer .ro-foot-socials { justify-content: center; }\n  .ro-footer .ro-foot-col { flex: 1 1 100%; }\n  .ro-footer .ro-foot-legal { justify-content: center; flex-direction: column; gap: 8px; }\n}\n`;/**\n * Site footer — dark, warm, with logo, address, service times, links, socials.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n * @framerIntrinsicWidth 1200\n */export default function SiteFooter(props){const{tagline,address,email,serviceTimes,mapsLink,logoUrl,logoHeight,logoWhite,links=[],nextSteps=[],instagram,facebook,youtube,accent,style}=props;const year=new Date().getFullYear();const exploreLinks=heal(links,CANONICAL_EXPLORE,EXPLORE_CALL_LABELS);const nextStepLinks=heal(nextSteps,CANONICAL_NEXT_STEPS,NEXT_CALL_LABELS);const colTitle={fontFamily:HEAD_FONT,fontWeight:700,fontSize:13,letterSpacing:\"0.14em\",textTransform:\"uppercase\",color:\"rgba(255,255,255,0.55)\",marginBottom:18};const linkStyle={display:\"block\",fontFamily:BODY_FONT,fontSize:15.5,color:\"rgba(255,255,255,0.88)\",textDecoration:\"none\",padding:\"7px 0\"};const socials=[{url:instagram,label:\"Instagram\",d:\"M12 2.2c3.2 0 3.6 0 4.9.1 1.2.1 1.8.2 2.2.4.6.2 1 .5 1.4.9.4.4.7.8.9 1.4.2.4.4 1 .4 2.2.1 1.3.1 1.7.1 4.9s0 3.6-.1 4.9c-.1 1.2-.2 1.8-.4 2.2-.2.6-.5 1-.9 1.4-.4.4-.8.7-1.4.9-.4.2-1 .4-2.2.4-1.3.1-1.7.1-4.9.1s-3.6 0-4.9-.1c-1.2-.1-1.8-.2-2.2-.4-.6-.2-1-.5-1.4-.9-.4-.4-.7-.8-.9-1.4-.2-.4-.4-1-.4-2.2-.1-1.3-.1-1.7-.1-4.9s0-3.6.1-4.9c.1-1.2.2-1.8.4-2.2.2-.6.5-1 .9-1.4.4-.4.8-.7 1.4-.9.4-.2 1-.4 2.2-.4 1.3-.1 1.7-.1 4.9-.1zm0 2c-3.1 0-3.5 0-4.8.1-1.1.1-1.4.2-1.7.3-.4.2-.7.3-1 .6-.3.3-.5.6-.6 1-.1.3-.3.6-.3 1.7-.1 1.3-.1 1.6-.1 4.8s0 3.5.1 4.8c.1 1.1.2 1.4.3 1.7.2.4.3.7.6 1 .3.3.6.5 1 .6.3.1.6.3 1.7.3 1.3.1 1.6.1 4.8.1s3.5 0 4.8-.1c1.1-.1 1.4-.2 1.7-.3.4-.2.7-.3 1-.6.3-.3.5-.6.6-1 .1-.3.3-.6.3-1.7.1-1.3.1-1.6.1-4.8s0-3.5-.1-4.8c-.1-1.1-.2-1.4-.3-1.7-.2-.4-.3-.7-.6-1-.3-.3-.6-.5-1-.6-.3-.1-.6-.3-1.7-.3-1.3-.1-1.6-.1-4.8-.1zm0 3.3a4.5 4.5 0 110 9 4.5 4.5 0 010-9zm0 2a2.5 2.5 0 100 5 2.5 2.5 0 000-5zm4.7-2.9a1.05 1.05 0 110 2.1 1.05 1.05 0 010-2.1z\"},{url:facebook,label:\"Facebook\",d:\"M13.5 21v-7h2.4l.4-3h-2.8V9.1c0-.9.2-1.5 1.5-1.5h1.4V4.9c-.3 0-1.2-.1-2.2-.1-2.2 0-3.7 1.3-3.7 3.8V11H8v3h2.5v7h3z\"},{url:youtube,label:\"YouTube\",d:\"M21.6 7.2s-.2-1.4-.8-2c-.7-.8-1.6-.8-2-.9C16 4 12 4 12 4s-4 0-6.8.3c-.4.1-1.2.1-2 .9-.6.6-.8 2-.8 2S2 8.9 2 10.6v1.6c0 1.7.2 3.4.2 3.4s.2 1.4.8 2c.7.8 1.7.7 2.1.8 1.6.2 6.9.3 6.9.3s4 0 6.8-.3c.4-.1 1.2-.1 2-.9.6-.6.8-2 .8-2s.2-1.7.2-3.4v-1.6c0-1.7-.2-3.4-.2-3.4zM10 14.6V8.9l5.3 2.9-5.3 2.8z\"}].filter(s=>s.url);const src=logoUrl||LOGO_URL;return /*#__PURE__*/_jsxs(\"footer\",{className:\"ro-footer\",style:{width:\"100%\",boxSizing:\"border-box\",background:\"#000000\",color:\"#ffffff\",padding:\"clamp(48px, 7vw, 88px) clamp(20px, 5vw, 64px) 32px\",...style},children:[/*#__PURE__*/_jsx(\"style\",{children:FOOTER_CSS}),/*#__PURE__*/_jsxs(\"div\",{className:\"ro-foot-cols\",style:{display:\"flex\",flexWrap:\"wrap\",gap:\"48px 64px\",justifyContent:\"space-between\",maxWidth:1200,margin:\"0 auto\"},children:[/*#__PURE__*/_jsxs(\"div\",{className:\"ro-foot-brand\",style:{flex:\"2 1 300px\",minWidth:260,display:\"flex\",flexDirection:\"column\",alignItems:\"flex-start\"},children:[/*#__PURE__*/_jsx(\"a\",{href:\"/\",\"aria-label\":\"River Oaks Church home\",children:/*#__PURE__*/_jsx(\"img\",{src:src,alt:\"River Oaks Church\",style:{height:logoHeight,width:\"auto\",display:\"block\",// The artwork is dark-on-transparent; the footer is\n// black, so knock it back to solid white.\nfilter:logoWhite?\"brightness(0) invert(1)\":\"none\"}})}),/*#__PURE__*/_jsx(\"p\",{style:{fontFamily:BODY_FONT,fontSize:16,lineHeight:1.55,color:\"rgba(255,255,255,0.8)\",margin:\"22px 0 26px\",maxWidth:380},children:tagline}),/*#__PURE__*/_jsx(\"a\",{href:mapsLink,target:\"_blank\",rel:\"noopener noreferrer\",style:{...linkStyle,padding:0,marginBottom:8},children:address}),email?/*#__PURE__*/_jsx(\"a\",{href:`mailto:${email}`,style:{...linkStyle,padding:0,marginBottom:8},children:email}):null,/*#__PURE__*/_jsx(\"div\",{style:{fontFamily:HEAD_FONT,fontWeight:700,fontSize:15,color:accent,marginTop:6},children:serviceTimes}),socials.length>0&&/*#__PURE__*/_jsx(\"div\",{className:\"ro-foot-socials\",style:{display:\"flex\",gap:12,marginTop:26,width:\"100%\"},children:socials.map((s,i)=>/*#__PURE__*/_jsx(\"a\",{href:correctSocial(s.url),\"aria-label\":s.label,target:\"_blank\",rel:\"noopener noreferrer\",style:{width:44,height:44,flexShrink:0,borderRadius:999,background:\"rgba(255,255,255,0.1)\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:/*#__PURE__*/_jsx(\"svg\",{width:\"20\",height:\"20\",viewBox:\"0 0 24 24\",\"aria-hidden\":true,children:/*#__PURE__*/_jsx(\"path\",{d:s.d,fill:\"#ffffff\"})})},i))})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"ro-foot-col\",style:{flex:\"1 1 160px\"},children:[/*#__PURE__*/_jsx(\"div\",{style:colTitle,children:\"Explore\"}),exploreLinks.map((l,i)=>/*#__PURE__*/_jsx(\"a\",{href:resolveLink(l),style:linkStyle,children:l.label},i))]}),/*#__PURE__*/_jsxs(\"div\",{className:\"ro-foot-col\",style:{flex:\"1 1 160px\"},children:[/*#__PURE__*/_jsx(\"div\",{style:colTitle,children:\"Next Steps\"}),nextStepLinks.map((l,i)=>/*#__PURE__*/_jsx(\"a\",{href:resolveLink(l),style:linkStyle,children:l.label},i))]})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"ro-foot-legal\",style:{maxWidth:1200,margin:\"56px auto 0\",paddingTop:24,borderTop:\"1px solid rgba(255,255,255,0.12)\",display:\"flex\",flexWrap:\"wrap\",gap:12,justifyContent:\"space-between\",fontFamily:BODY_FONT,fontSize:13.5,color:\"rgba(255,255,255,0.55)\"},children:[/*#__PURE__*/_jsxs(\"span\",{children:[\"\\xa9 \",year,\" River Oaks Church \\xb7 Murfreesboro, TN\"]}),/*#__PURE__*/_jsx(\"span\",{children:\"Love God and Love Others.\"})]})]});}addPropertyControls(SiteFooter,{logoUrl:{type:ControlType.String,title:\"Logo URL\",defaultValue:LOGO_URL,description:\"Same artwork as the header logo\"},logoHeight:{type:ControlType.Number,title:\"Logo Height\",min:24,max:120,step:2,defaultValue:52},logoWhite:{type:ControlType.Boolean,title:\"White Logo\",defaultValue:true,description:\"Knock the dark artwork back to white for the black footer\"},tagline:{type:ControlType.String,displayTextArea:true,title:\"Tagline\",defaultValue:\"A people rooted in Jesus, saturating Murfreesboro with His love.\"},address:{type:ControlType.String,title:\"Address\",defaultValue:\"210 Rucker Lane, Murfreesboro, TN 37128\"},email:{type:ControlType.String,title:\"Email\",defaultValue:\"office@riveroaks.church\"},serviceTimes:{type:ControlType.String,title:\"Service Times\",defaultValue:\"Sundays \\xb7 8AM, 9:30AM & 11AM\"},mapsLink:{type:ControlType.String,title:\"Maps Link\",defaultValue:\"https://maps.google.com/?q=210+Rucker+Lane+Murfreesboro+TN+37128\"},links:{type:ControlType.Array,title:\"Explore Links\",control:{type:ControlType.Object,controls:{label:{type:ControlType.String,defaultValue:\"Visit\"},link:{type:ControlType.String,defaultValue:\"/visitriveroaks\"}}},defaultValue:CANONICAL_EXPLORE},nextSteps:{type:ControlType.Array,title:\"Next Step Links\",control:{type:ControlType.Object,controls:{label:{type:ControlType.String,defaultValue:\"Give\"},link:{type:ControlType.String,defaultValue:\"/give\"}}},defaultValue:CANONICAL_NEXT_STEPS},instagram:{type:ControlType.String,title:\"Instagram\",defaultValue:\"https://www.instagram.com/riveroaks.church\"},facebook:{type:ControlType.String,title:\"Facebook\",defaultValue:\"https://www.facebook.com/RiverOaksChurch\"},youtube:{type:ControlType.String,title:\"YouTube\",defaultValue:\"https://www.youtube.com/@RiverOaksChurchMurfreesboro\"},accent:{type:ControlType.Color,title:\"Accent\",defaultValue:\"#71b2ee\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SiteFooter\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"1200\",\"framerSupportedLayoutWidth\":\"any\",\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SiteFooter.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{createPortal}from\"react-dom\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";const HEAD_FONT=\"'Montserrat', 'Helvetica Neue', sans-serif\";const BODY_FONT=\"'Archivo', 'Helvetica Neue', sans-serif\";// ---------------------------------------------------------------------------\n// Promo ticker (added 2026-10-13)\n//\n// WHY IT LIVES IN THE HEADER rather than as its own component: the client\n// asked for a strip that sits above every page and stays put while scrolling.\n// The header is already fixed to the top of the viewport on all 26 pages, so\n// hanging the strip off it means one edit instead of 26 instances, and no\n// z-index negotiation between two separately-fixed elements. The whole lockup\n// scrolls as one unit because it IS one element.\n//\n// Colours are sampled from the Fall Nights artwork itself, not guessed: the\n// lettering runs #ED9F05 gold at the top through #EE6403 to #D80C02 deep red\n// at the bottom. Laid out left-to-right here, because a vertical gradient on a\n// 32px strip is invisible.\n//\n// Two messages alternate (2026-10-13 client request): the detail line and an\n// invitation, so the strip reads as a rhythm rather than one long sentence.\n// Both are optional — clear either and the other simply repeats.\n//\n// SPACING: the star is its own flex item with equal margin on both sides, and\n// the text segments carry no horizontal padding. An earlier version hung the\n// star inside the text segment, which left it 22px from the message before it\n// and 44px from the one after — close enough to look like a mistake.\n//\n// Dates are compared in the church's timezone so the strip retires itself the\n// day after the event. A promo that outlives its event is worse than none.\n// ---------------------------------------------------------------------------\nconst PROMO_DARK=\"#C01A05\";const PROMO_MID=\"#EE6403\";const PROMO_LIGHT=\"#F2A006\";// How many times the message cycle is repeated in each half of the track. The\n// track is two identical halves translated exactly -50%, so the seam is\n// invisible; three cycles is enough to span an ultrawide viewport.\nconst PROMO_CYCLES=3;function todayCentral(){try{return new Intl.DateTimeFormat(\"en-CA\",{timeZone:\"America/Chicago\",year:\"numeric\",month:\"2-digit\",day:\"2-digit\"}).format(new Date);}catch{return new Date().toISOString().slice(0,10);}}const isDate=s=>/^\\d{4}-\\d{2}-\\d{2}$/.test(s);function promoShowing(enabled,startDate,endDate){if(!enabled)return false;const today=todayCentral();const start=(startDate||\"\").trim();const end=(endDate||\"\").trim();if(isDate(start)&&today<start)return false;if(isDate(end)&&today>end)return false;return true;}// Site-wide styles, injected once by the header (present on every page):\n// branded keyboard focus ring, prefers-reduced-motion kill switch, the\n// center-out underline hover for desktop nav links, phone type scale, and the\n// scroll-reveal used across sections, grids, and cards.\n//\n// Phone rules deliberately do NOT touch alignment: canvas layers keep the\n// alignment they were given in the Framer editor at every breakpoint.\nconst GLOBAL_A11Y_CSS=`\n:focus-visible { outline: 3px solid #4d9ee9 !important; outline-offset: 2px; border-radius: 4px; }\n@media (prefers-reduced-motion: reduce) {\n  *, *::before, *::after {\n    animation-duration: 0.01ms !important;\n    animation-iteration-count: 1 !important;\n    transition-duration: 0.01ms !important;\n    scroll-behavior: auto !important;\n  }\n  .ro-rv { opacity: 1 !important; transform: none !important; }\n}\n.ro-nav-link { position: relative; }\n.ro-nav-link::after {\n  content: \"\";\n  position: absolute;\n  left: 50%;\n  bottom: -6px;\n  width: 0;\n  height: 2px;\n  background: #4d9ee9;\n  border-radius: 2px;\n  transform: translateX(-50%);\n  transition: width 0.25s ease;\n}\n.ro-nav-link:hover::after { width: 100%; }\n.ro-nav-link[aria-expanded=\"true\"]::after { width: 100%; }\n\n/* ---- Promo ticker ---------------------------------------------------- */\n.ro-promo {\n  position: relative;\n  overflow: hidden;\n  display: block;\n  text-decoration: none;\n  background: linear-gradient(90deg, ${PROMO_DARK} 0%, ${PROMO_MID} 42%, ${PROMO_LIGHT} 68%, ${PROMO_MID} 100%);\n}\n.ro-promo-track {\n  display: flex;\n  align-items: center;\n  width: max-content;\n  animation: ro-promo-roll 42s linear infinite;\n  will-change: transform;\n}\n/* Pausing on hover is the difference between a promo and an irritation —\n   it lets someone actually finish reading the date. */\n.ro-promo:hover .ro-promo-track,\n.ro-promo:focus-visible .ro-promo-track { animation-play-state: paused; }\n.ro-promo-seg {\n  display: inline-flex;\n  align-items: center;\n  padding: 8px 0;\n  white-space: nowrap;\n  font-family: ${HEAD_FONT};\n  font-weight: 700;\n  font-size: 12.5px;\n  letter-spacing: 0.1em;\n  text-transform: uppercase;\n  color: #ffffff;\n}\n/* Equal margin either side is what actually centres it between messages.\n   The uppercase text sits on its cap height, so the glyph is nudged a\n   hair to sit on the optical centre rather than the baseline. */\n.ro-promo-star {\n  display: inline-flex;\n  align-items: center;\n  margin: 0 26px;\n  opacity: 0.72;\n  font-size: 10px;\n  line-height: 1;\n  color: #ffffff;\n  transform: translateY(-0.5px);\n}\n@keyframes ro-promo-roll {\n  from { transform: translate3d(0, 0, 0); }\n  to   { transform: translate3d(-50%, 0, 0); }\n}\n/* Motion off: stop the roll and centre a single readable line instead of\n   leaving the strip frozen mid-scroll with a half-word showing. */\n@media (prefers-reduced-motion: reduce) {\n  .ro-promo-track { animation: none !important; width: 100% !important; justify-content: center; }\n  .ro-promo-seg:not(:first-child), .ro-promo-star { display: none !important; }\n}\n.ro-sr {\n  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;\n  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;\n}\n\n/* The header is fixed, so an in-page anchor would otherwise land with its\n   heading tucked underneath the bar. */\n[id] { scroll-margin-top: 96px; }\n\n/* Scroll reveal. The class is only ever added by JS, so with scripting off\n   or if the observer never runs, everything stays visible. */\n.ro-rv {\n  opacity: 0;\n  transform: translateY(22px);\n  transition: opacity 0.7s cubic-bezier(0.22, 1, 0.36, 1),\n              transform 0.7s cubic-bezier(0.22, 1, 0.36, 1);\n  will-change: opacity, transform;\n}\n.ro-rv-card { transform: translateY(26px) scale(0.985); }\n.ro-rv-in { opacity: 1 !important; transform: none !important; }\n\n@media (max-width: 809px) {\n  .ro-rv { transform: translateY(16px); } h1.framer-text, h1 .framer-text { font-size: clamp(30px, 8.4vw, 48px) !important; line-height: 1.06 !important; } h2.framer-text, h2 .framer-text { font-size: clamp(25px, 6.6vw, 36px) !important; } h3.framer-text, h3 .framer-text { font-size: clamp(21px, 5.4vw, 26px) !important; }\n  .ro-promo-seg { font-size: 11px; padding: 7px 0; letter-spacing: 0.08em; }\n  .ro-promo-star { margin: 0 18px; }\n}\n\n/* ------------------------------------------------------------------\n   Phone refinements.\n\n   These cut across several code components, which is why they live in\n   this one site-wide layer rather than in each component: the rules are\n   about the phone breakpoint, not about any single component's design.\n   Every selector is anchored to a class or ARIA attribute the component\n   already emits, and most carry !important because the value being\n   overridden is an inline style, which nothing else can beat.\n\n   Figures below are measured at 375px against the 2026-08-11 build.\n   ------------------------------------------------------------------ */\n@media (max-width: 809px) {\n  /* Groups filters. Thirteen chips at desktop sizing stacked seven rows\n     deep, so the first group card sat below the fold on a phone. Compact\n     chips take the block from 375px to 302px and six rows, which puts a\n     real group card on screen with the filters. They stay 42px tall: the\n     audience skews older and these are the page's primary control, so\n     shrinking them further to save another row is a bad trade. */\n  button[aria-pressed] {\n    padding: 11px 15px !important;\n    font-size: 13px !important;\n  }\n\n  /* Shared cards. 40px of padding on a 375px screen left a 295px measure,\n     which stretched every card; 24px takes a typical card from 647px to\n     592px and the homepage from 14410px to 14058px. */\n  .ro-fcard { padding: 24px !important; }\n  /* Long eyebrows (\"GROUPS \\xb7 EVERY AGE AND STAGE\") wrapped to two lines at\n     desktop tracking and pushed the title down. */\n  .ro-fcard [data-ro-eyebrow] {\n    font-size: 11.5px !important;\n    letter-spacing: 0.1em !important;\n  }\n\n  /* Sermon hero meta. \"with Pastor Sean Myers \\xb7 SUN \\xb7 8.9.2026\" was\n     breaking with \"SUN \\xb7\" stranded at the end of the first line. */\n  .ro-sermon-lockup p { text-wrap: balance; }\n\n  /* Carousel pagination dots were 9px squares. Still small, but a 14px\n     minimum is tappable without the hit areas of adjacent dots\n     overlapping, which is what a full 44px target would do at this pitch. */\n  button[aria-label^=\"Go to story\"] {\n    min-width: 14px !important;\n    min-height: 14px !important;\n  }\n\n  /* Footer contact links sat at 25px tall. Framer writes padding:0 inline\n     on these, so without !important the override does not land at all;\n     with it they measure 45px. */\n  footer a[href^=\"mailto:\"],\n  footer a[href^=\"https://maps.google\"] {\n    display: inline-block !important;\n    padding: 10px 0 !important;\n  }\n}\n`;// Menu restructure from the 2026-08-18 review call: \"About\" became\n// \"New Here?\", the five ministry destinations collapsed behind a single\n// \"Ministries\" item, and the top level is held to six.\n//\n// Staff was added to the top level before the 2026-09-30 review call and\n// signed off on it. It lives here as well as in the per-page Nav Links so\n// that an instance with no stored array — which falls back to this list —\n// still renders the full six. It is a plain default, not forced: removing\n// Staff from a page's Nav Links panel still removes it from that page.\n//\n// Instances snapshot the Nav Links array at insert time, so the canonical set\n// lives here: any stored array that predates the call (detectably: no\n// \"Ministries\" item) is replaced wholesale at render. A client edit that\n// keeps Ministries always wins.\nconst CANONICAL_NAV=[{label:\"New Here?\",link:\"/visitriveroaks\"},{label:\"Ministries\",link:\"\"},{label:\"Weekly Bulletin\",link:\"/bulletin\"},{label:\"Resources\",link:\"/resources\"},{label:\"Give\",link:\"/give\"},{label:\"Staff\",link:\"/our-staff\"}];// Submenus are keyed by the parent item's label. They live in code rather\n// than in a nested Array control because Framer drops nested array\n// defaultValues the same way it drops Link defaults inside arrays\n// (MEMORY/attempts.md). Add a ministry here and every page picks it up.\n// \"Legacy Generation 50+\" is the client's rename of Encore (build-out PDF).\nconst DROPDOWNS={Ministries:[{label:\"Kids\",link:\"/kids\"},{label:\"Students\",link:\"/students\"},{label:\"Young Adults\",link:\"/young-adults\"},{label:\"Legacy Generation 50+\",link:\"/encore\"},{label:\"Groups\",link:\"/groups\"},{label:\"Saturate Murfreesboro\",link:\"/saturate-murfreesboro\"},{label:\"Care\",link:\"/care\"}]};function healNav(links){if(!Array.isArray(links)||links.length===0)return CANONICAL_NAV;const labels=links.map(l=>(l?.label||\"\").trim());const isStale=!labels.includes(\"Ministries\");return isStale?CANONICAL_NAV:links.filter(l=>(l?.label||\"\").trim()!==\"Sermons\");}// Existing instances store dead link values from the old ControlType.Link\n// array bug — resolve by label so the header self-heals; client-set links win.\nconst NAV_FALLBACKS={Visit:\"/visitriveroaks\",\"New Here?\":\"/visitriveroaks\",\"New Here\":\"/visitriveroaks\",Kids:\"/kids\",\"RO Kids\":\"/kids\",Students:\"/students\",\"RO Students\":\"/students\",\"Young Adults\":\"/young-adults\",Encore:\"/encore\",\"Encore \\xb7 55+\":\"/encore\",\"55+\":\"/encore\",\"Legacy Generation 50+\":\"/encore\",Groups:\"/groups\",\"Saturate Murfreesboro\":\"/saturate-murfreesboro\",Sermons:\"/sermons\",Give:\"/give\",Events:\"/events\",Staff:\"/our-staff\",\"Our Staff\":\"/our-staff\",Home:\"/\",About:\"/who-we-are\",\"Weekly Bulletin\":\"/bulletin\",Resources:\"/resources\",Care:\"/care\"};// Slugs that moved after instances had already snapshotted them.\nconst RENAMED_PATHS={\"/visit\":\"/visitriveroaks\",\"/staff\":\"/our-staff\",\"/about\":\"/who-we-are\",\"/prayer-guide\":\"/prayer\"};function canonicalPath(path){const cut=path.search(/[#?]/);const base=cut===-1?path:path.slice(0,cut);const tail=cut===-1?\"\":path.slice(cut);return(RENAMED_PATHS[base]||base)+tail;}function resolveLink(l){if(l?.link&&l.link!==\"#\")return canonicalPath(l.link);return NAV_FALLBACKS[l?.label?.trim?.()]||\"#\";}function submenuFor(l){return DROPDOWNS[(l?.label||\"\").trim()]||null;}// The page root is the ancestor of the footer with the most direct children —\n// its children are the page's sections. Walking up from a known landmark is\n// stabler than guessing at Framer's generated class names.\nfunction findPageRoot(){let node=document.querySelector(\"footer\");if(!node)return null;let best=null;let bestCount=0;while(node&&node.parentElement){const p=node.parentElement;if(p.tagName===\"BODY\"||p.tagName===\"HTML\")break;if(p.children.length>bestCount){bestCount=p.children.length;best=p;}node=p;}return bestCount>=3?best:null;}function Chevron({color,open}){return /*#__PURE__*/_jsx(\"svg\",{width:\"10\",height:\"7\",viewBox:\"0 0 10 7\",fill:\"none\",\"aria-hidden\":\"true\",style:{transform:open?\"rotate(180deg)\":\"none\",transition:\"transform 0.22s ease\",flexShrink:0},children:/*#__PURE__*/_jsx(\"path\",{d:\"M1 1.5L5 5.5L9 1.5\",stroke:color,strokeWidth:\"1.6\",strokeLinecap:\"round\",strokeLinejoin:\"round\"})});}/** The rolling strip. Messages and stars are siblings in one flat flex row,\n *  so the star sits on the true midpoint between two messages. The whole\n *  cycle is repeated into two identical halves; translating the track exactly\n *  -50% lands the second half where the first began, so the loop has no\n *  visible seam. Screen readers get one clean pass of each message — the\n *  repeats are hidden from them, or the announcement is read six times. */function PromoTicker({messages,link}){const half=[];for(let c=0;c<PROMO_CYCLES;c++){messages.forEach((m,i)=>{half.push(/*#__PURE__*/_jsx(\"span\",{className:\"ro-promo-seg\",children:m},`t-${c}-${i}`));half.push(/*#__PURE__*/_jsx(\"span\",{className:\"ro-promo-star\",\"aria-hidden\":\"true\",children:\"✦\"},`s-${c}-${i}`));});}const inner=/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"span\",{className:\"ro-sr\",children:messages.join(\". \")}),/*#__PURE__*/_jsxs(\"div\",{className:\"ro-promo-track\",\"aria-hidden\":\"true\",children:[half,half]})]});if(link){return /*#__PURE__*/_jsx(\"a\",{className:\"ro-promo\",href:link,\"aria-label\":messages.join(\". \"),children:inner});}return /*#__PURE__*/_jsx(\"div\",{className:\"ro-promo\",role:\"region\",\"aria-label\":\"Announcement\",children:inner});}/** Desktop nav item — a plain link, or a hover/focus dropdown when the\n *  label has a submenu registered in DROPDOWNS. */function DesktopNavItem({item,fg}){const kids=submenuFor(item);const[open,setOpen]=React.useState(false);const wrap=React.useRef(null);const linkStyle={fontFamily:BODY_FONT,fontWeight:500,fontSize:14.5,whiteSpace:\"nowrap\",color:fg,textDecoration:\"none\",opacity:.92};if(!kids){return /*#__PURE__*/_jsx(\"a\",{href:resolveLink(item),className:\"ro-nav-link\",style:linkStyle,children:item.label});}return /*#__PURE__*/_jsxs(\"div\",{ref:wrap,style:{position:\"relative\",display:\"flex\"},onMouseEnter:()=>setOpen(true),onMouseLeave:()=>setOpen(false),onBlur:e=>{if(!wrap.current?.contains(e.relatedTarget))setOpen(false);},children:[/*#__PURE__*/_jsxs(\"button\",{className:\"ro-nav-link\",\"aria-expanded\":open,\"aria-haspopup\":\"true\",onClick:()=>setOpen(o=>!o),onFocus:()=>setOpen(true),style:{...linkStyle,display:\"flex\",alignItems:\"center\",gap:6,background:\"none\",border:\"none\",padding:0,cursor:\"pointer\"},children:[item.label,/*#__PURE__*/_jsx(Chevron,{color:fg,open:open})]}),open&&// The 14px of padding is a deliberate hover bridge between the\n// trigger and the panel, so the menu survives the gap.\n/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",top:\"100%\",left:\"50%\",transform:\"translateX(-50%)\",paddingTop:14,zIndex:20},children:/*#__PURE__*/_jsx(\"div\",{style:{background:\"#ffffff\",borderRadius:18,padding:8,minWidth:236,boxShadow:\"0 18px 50px rgba(0,0,0,0.15), 0 2px 6px rgba(0,0,0,0.06)\",border:\"1px solid rgba(0,0,0,0.05)\",animation:\"ro-dd-in 0.2s cubic-bezier(0.22,1,0.36,1) both\"},children:kids.map((k,i)=>/*#__PURE__*/_jsx(\"a\",{href:resolveLink(k),style:{display:\"block\",padding:\"12px 16px\",borderRadius:12,fontFamily:BODY_FONT,fontWeight:500,fontSize:15,color:\"#000000\",textDecoration:\"none\",whiteSpace:\"nowrap\",transition:\"background 0.18s ease, color 0.18s ease\"},onMouseEnter:e=>{const t=e.currentTarget;t.style.background=\"rgba(77,158,233,0.1)\";t.style.color=\"#3e7fbb\";},onMouseLeave:e=>{const t=e.currentTarget;t.style.background=\"transparent\";t.style.color=\"#000000\";},children:k.label},i))})})]});}/**\n * River Oaks site header with responsive mobile menu and optional promo\n * ticker. Self-positions fixed to the top of the viewport at runtime —\n * place it anywhere in the page flow (it takes up no space).\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n * @framerIntrinsicWidth 1200\n */export default function SiteHeader(props){const{logoText,logoImage,logoUrl,links=[],ctaLabel,ctaLink,overDark,accent,reveal,promoEnabled=true,promoText,promoText2,promoLink,promoStart=\"\",promoEnd=\"\",style}=props;const navLinks=healNav(links);const isCanvas=RenderTarget.current()===RenderTarget.canvas;const[scrolled,setScrolled]=React.useState(false);const[open,setOpen]=React.useState(false);const[closing,setClosing]=React.useState(false);const[expanded,setExpanded]=React.useState(null);const[isMobile,setIsMobile]=React.useState(false);// Clearing either message leaves the other repeating on its own, rather\n// than rendering an empty gap in the loop.\nconst promoMessages=[promoText,promoText2].map(m=>(m||\"\").trim()).filter(Boolean);const showPromo=promoShowing(!!promoEnabled,promoStart,promoEnd)&&promoMessages.length>0;// The overlay plays a blue sweep on the way in and reverses it on the way\n// out. React would unmount before an exit animation could run, so the\n// close is staged: mark closing, let the CSS run, then unmount.\nconst closeMenu=React.useCallback(()=>{setClosing(true);window.setTimeout(()=>{setOpen(false);setClosing(false);setExpanded(null);},380);},[]);React.useEffect(()=>{if(typeof window===\"undefined\")return;const onScroll=()=>setScrolled(window.scrollY>24);// Six top-level items fit a laptop comfortably, so the hamburger is\n// back to a true tablet-and-down breakpoint.\nconst mq=window.matchMedia(\"(max-width: 1023px)\");const onMq=()=>setIsMobile(mq.matches);onScroll();onMq();window.addEventListener(\"scroll\",onScroll,{passive:true});mq.addEventListener(\"change\",onMq);return()=>{window.removeEventListener(\"scroll\",onScroll);mq.removeEventListener(\"change\",onMq);};},[]);// Scroll reveal across every page: sections rise as you reach them, and\n// cards inside a grid stagger in. Framer's own appear animations are left\n// alone (anything carrying data-framer-appear-id, or sitting inside one,\n// is skipped) so the two never fight over the same element.\nReact.useEffect(()=>{if(isCanvas||!reveal||typeof window===\"undefined\")return;if(!(\"IntersectionObserver\"in window))return;if(window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches)return;const armed=new Set;const show=el=>el.classList.add(\"ro-rv-in\");const io=new IntersectionObserver(entries=>{for(const e of entries){if(!e.isIntersecting)continue;show(e.target);io.unobserve(e.target);}},{rootMargin:\"0px 0px -8% 0px\",threshold:.05});const skip=el=>armed.has(el)||el.classList.contains(\"ro-rv\")||el.closest(\"[data-framer-appear-id]\")!==null||el.closest(\"header, footer, [role='dialog']\")!==null;const add=(el,card,i)=>{if(skip(el))return;armed.add(el);el.classList.add(\"ro-rv\");if(card){el.classList.add(\"ro-rv-card\");el.style.transitionDelay=`${Math.min(i,5)*70}ms`;}// Anything already on screen at arm time reveals immediately, so\n// the first viewport never sits blank waiting for a scroll.\nconst r=el.getBoundingClientRect();if(r.top<window.innerHeight*.9&&r.bottom>0){requestAnimationFrame(()=>show(el));return;}io.observe(el);};const arm=()=>{// Sections: the page root's direct children, minus the header slot\n// and the hero, which must be there on first paint.\nconst root=findPageRoot();if(root){Array.from(root.children).forEach((el,i)=>{if(i<2)return;if(el.getBoundingClientRect().height<60)return;add(el,false,0);});}// Cards: direct children of any canvas grid, staggered per grid.\ndocument.querySelectorAll('[class*=\"framer-\"]').forEach(el=>{if(getComputedStyle(el).display!==\"grid\")return;Array.from(el.children).forEach((k,i)=>add(k,true,i));});};const timers=[90,600,1600].map(d=>window.setTimeout(arm,d));// Safety net: whatever happens, nothing stays hidden.\nconst failsafe=window.setTimeout(()=>{document.querySelectorAll(\".ro-rv:not(.ro-rv-in)\").forEach(el=>show(el));},6e3);return()=>{timers.forEach(clearTimeout);clearTimeout(failsafe);io.disconnect();};},[isCanvas,reveal]);React.useEffect(()=>{if(typeof document===\"undefined\")return;document.body.style.overflow=open?\"hidden\":\"\";const onKey=e=>{if(e.key===\"Escape\"&&open)closeMenu();};document.addEventListener(\"keydown\",onKey);return()=>{document.body.style.overflow=\"\";document.removeEventListener(\"keydown\",onKey);};},[open,closeMenu]);const solid=scrolled||!overDark;const fg=solid?\"#000000\":\"#ffffff\";const src=logoImage?.src||logoUrl;// Item index drives the entrance stagger. Ministries expands in place, so\n// its children have to be counted too or the items below it pop early.\nlet stagger=0;const menu=open&&!isCanvas&&typeof document!==\"undefined\"?/*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(\"div\",{role:\"dialog\",\"aria-modal\":\"true\",\"aria-label\":\"Site menu\",style:{position:\"fixed\",inset:0,zIndex:99998,overflow:\"hidden\"},children:[/*#__PURE__*/_jsx(\"style\",{children:MENU_CSS}),/*#__PURE__*/_jsx(\"div\",{className:closing?\"ro-sweep ro-sweep-out\":\"ro-sweep\"}),/*#__PURE__*/_jsxs(\"div\",{className:closing?\"ro-menu-body ro-menu-body-out\":\"ro-menu-body\",children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"space-between\",alignItems:\"center\",marginBottom:32,flexShrink:0},children:[/*#__PURE__*/_jsx(Logo,{src:src,logoText:logoText,color:\"#ffffff\"}),/*#__PURE__*/_jsx(\"button\",{\"aria-label\":\"Close menu\",onClick:closeMenu,style:{width:48,height:48,borderRadius:999,border:\"1.5px solid rgba(255,255,255,0.45)\",background:\"rgba(255,255,255,0.12)\",color:\"#ffffff\",fontSize:20,lineHeight:1,cursor:\"pointer\",fontFamily:BODY_FONT},children:\"✕\"})]}),/*#__PURE__*/_jsx(\"nav\",{style:{display:\"flex\",flexDirection:\"column\",flex:1},children:navLinks.map((l,i)=>{const kids=submenuFor(l);const isOpen=expanded===l.label;const row=stagger++;const rowStyle={fontFamily:HEAD_FONT,fontWeight:700,fontSize:27,color:\"#ffffff\",textDecoration:\"none\",// The audience skews older and this is the\n// primary way around the site on a phone,\n// so every row clears 44px.\npadding:\"14px 0\",borderBottom:\"1px solid rgba(255,255,255,0.22)\",textAlign:\"center\",animation:`ro-menu-item 0.4s ${.28+.045*row}s cubic-bezier(0.22,1,0.36,1) both`};if(!kids){return /*#__PURE__*/_jsx(\"a\",{href:resolveLink(l),onClick:closeMenu,style:rowStyle,children:l.label},i);}// Reserve stagger slots for the children so\n// the rows below keep their rhythm.\nconst childBase=stagger;stagger+=kids.length;return /*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsxs(\"button\",{\"aria-expanded\":isOpen,onClick:()=>setExpanded(isOpen?null:l.label),style:{...rowStyle,width:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\",gap:10,background:\"none\",border:\"none\",borderBottom:\"1px solid rgba(255,255,255,0.22)\",cursor:\"pointer\"},children:[l.label,/*#__PURE__*/_jsx(Chevron,{color:\"#ffffff\",open:isOpen})]}),isOpen&&/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flexDirection:\"column\",background:\"rgba(0,0,0,0.14)\"},children:kids.map((k,j)=>/*#__PURE__*/_jsx(\"a\",{href:resolveLink(k),onClick:closeMenu,style:{fontFamily:BODY_FONT,fontWeight:500,fontSize:18,color:\"#ffffff\",textDecoration:\"none\",padding:\"14px 0\",textAlign:\"center\",borderBottom:\"1px solid rgba(255,255,255,0.14)\",animation:`ro-menu-item 0.32s ${.03*j}s cubic-bezier(0.22,1,0.36,1) both`},children:k.label},j))}),/*#__PURE__*/_jsx(\"span\",{hidden:true,\"data-stagger-base\":childBase})]},i);})}),/*#__PURE__*/_jsx(\"a\",{href:ctaLink||\"/visitriveroaks\",onClick:closeMenu,style:{marginTop:28,flexShrink:0,display:\"block\",textAlign:\"center\",padding:\"18px\",borderRadius:999,background:\"#ffffff\",color:\"#3e7fbb\",fontFamily:HEAD_FONT,fontWeight:700,fontSize:17,textDecoration:\"none\",animation:`ro-menu-item 0.4s ${.28+.045*stagger}s cubic-bezier(0.22,1,0.36,1) both`},children:ctaLabel})]})]}),document.body):null;// The nav bar itself. Positioning now lives on the wrapper below, so the\n// ticker and the bar travel together as one fixed lockup.\nconst bar=/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",width:\"100%\",boxSizing:\"border-box\",padding:isMobile?\"12px 16px\":\"14px 28px\",display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",gap:20,background:solid?\"rgba(255,255,255,0.9)\":\"rgba(0,0,0,0)\",backdropFilter:solid?\"blur(14px)\":\"none\",WebkitBackdropFilter:solid?\"blur(14px)\":\"none\",borderBottom:solid?\"1px solid rgba(0,0,0,0.06)\":\"1px solid rgba(0,0,0,0)\",transition:\"background 0.3s ease, border 0.3s ease\"},children:[/*#__PURE__*/_jsx(\"a\",{href:\"/\",style:{textDecoration:\"none\",flexShrink:0},children:/*#__PURE__*/_jsx(Logo,{src:src,logoText:logoText,color:fg})}),!isMobile&&/*#__PURE__*/_jsx(\"nav\",{style:{display:\"flex\",alignItems:\"center\",gap:26},children:navLinks.map((l,i)=>/*#__PURE__*/_jsx(DesktopNavItem,{item:l,fg:fg},i))}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:12,flexShrink:0},children:[!isMobile&&/*#__PURE__*/_jsx(\"a\",{href:ctaLink||\"/visitriveroaks\",style:{padding:\"12px 22px\",borderRadius:999,background:accent,color:\"#ffffff\",fontFamily:HEAD_FONT,fontWeight:700,fontSize:14,whiteSpace:\"nowrap\",textDecoration:\"none\",transition:\"background 0.25s ease\"},onMouseEnter:e=>e.currentTarget.style.background=\"#3e7fbb\",onMouseLeave:e=>e.currentTarget.style.background=accent,children:ctaLabel}),isMobile&&/*#__PURE__*/_jsxs(\"button\",{\"aria-label\":\"Open menu\",\"aria-expanded\":open,onClick:()=>setOpen(true),style:{display:\"flex\",flexDirection:\"column\",justifyContent:\"center\",gap:5,width:48,height:48,padding:12,borderRadius:999,border:\"none\",background:solid?\"#f2f2f2\":\"rgba(255,255,255,0.18)\",cursor:\"pointer\",boxSizing:\"border-box\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{height:2,background:fg,borderRadius:2}}),/*#__PURE__*/_jsx(\"span\",{style:{height:2,background:fg,borderRadius:2}}),/*#__PURE__*/_jsx(\"span\",{style:{height:2,background:fg,borderRadius:2}})]})]}),menu]});// Ticker and bar share one fixed wrapper, so the strip stays pinned while\n// scrolling without a second fixed element to keep in sync.\nconst lockup=/*#__PURE__*/_jsxs(\"div\",{style:{position:isCanvas?\"relative\":\"fixed\",top:0,left:0,right:0,zIndex:9990,width:isCanvas?\"100%\":undefined,...style},children:[!isCanvas&&/*#__PURE__*/_jsx(\"style\",{children:GLOBAL_A11Y_CSS}),showPromo?/*#__PURE__*/_jsx(PromoTicker,{messages:promoMessages,link:promoLink}):null,bar]});if(isCanvas)return lockup;// Zero-footprint anchor: the lockup is fixed to the viewport, so its slot\n// in the page flow takes no space.\nreturn /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:0,overflow:\"visible\"},children:lockup});}// Kept as CSS keyframes rather than framer-motion: these run inside a portal\n// during a route-blocking overlay, and keyframes are immune to the\n// requestAnimationFrame throttling that freezes JS animation in a background\n// or hidden tab (MEMORY/attempts.md, 2026-07-16).\nconst MENU_CSS=`\n@keyframes ro-sweep-in {\n  from { transform: translate3d(105%, 0, 0) skewX(-6deg); }\n  to   { transform: translate3d(0, 0, 0) skewX(0deg); }\n}\n@keyframes ro-sweep-out {\n  from { transform: translate3d(0, 0, 0) skewX(0deg); }\n  to   { transform: translate3d(105%, 0, 0) skewX(-6deg); }\n}\n@keyframes ro-menu-item {\n  from { opacity: 0; transform: translateY(14px); }\n  to   { opacity: 1; transform: none; }\n}\n@keyframes ro-menu-fade-out {\n  from { opacity: 1; }\n  to   { opacity: 0; }\n}\n@keyframes ro-dd-in {\n  from { opacity: 0; transform: translateY(-6px); }\n  to   { opacity: 1; transform: none; }\n}\n.ro-sweep {\n  position: absolute;\n  inset: -2px -8% -2px -2px;\n  background: linear-gradient(158deg, #3e7fbb 0%, #4d9ee9 44%, #71b2ee 72%, #3d8c62 100%);\n  animation: ro-sweep-in 0.44s cubic-bezier(0.76, 0, 0.24, 1) both;\n  will-change: transform;\n}\n.ro-sweep-out { animation: ro-sweep-out 0.36s cubic-bezier(0.76, 0, 0.24, 1) both; }\n.ro-menu-body {\n  position: absolute;\n  inset: 0;\n  display: flex;\n  flex-direction: column;\n  padding: 24px;\n  box-sizing: border-box;\n  overflow-y: auto;\n}\n.ro-menu-body-out { animation: ro-menu-fade-out 0.18s ease both; }\n@media (prefers-reduced-motion: reduce) {\n  .ro-sweep, .ro-sweep-out, .ro-menu-body-out { animation: none !important; transform: none !important; }\n}\n`;function Logo({src,logoText,color}){if(src){return /*#__PURE__*/_jsx(\"img\",{src:src,alt:logoText||\"River Oaks Church\",style:{height:40,width:\"auto\",display:\"block\",// The artwork is dark; over an unscrolled dark hero it needs\n// to read white, same as the nav links beside it.\nfilter:color===\"#ffffff\"?\"brightness(0) invert(1)\":\"none\",transition:\"filter 0.3s ease\"}});}return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",lineHeight:1},children:[/*#__PURE__*/_jsx(\"span\",{style:{fontFamily:HEAD_FONT,fontWeight:800,fontSize:19,letterSpacing:\"0.02em\",color,textTransform:\"uppercase\"},children:logoText}),/*#__PURE__*/_jsx(\"span\",{style:{fontFamily:HEAD_FONT,fontWeight:500,fontSize:10,letterSpacing:\"0.42em\",color,textTransform:\"uppercase\",opacity:.75,marginTop:3},children:\"Church\"})]});}addPropertyControls(SiteHeader,{logoText:{type:ControlType.String,title:\"Logo Text\",defaultValue:\"River Oaks\"},logoImage:{type:ControlType.ResponsiveImage,title:\"Logo Image\"},logoUrl:{type:ControlType.String,title:\"Logo URL\",defaultValue:\"https://framerusercontent.com/images/XG6THANgbxV5jVaNAx3dHva2qXM.png?width=2200&height=458\",description:\"Used when no Logo Image is set\"},links:{type:ControlType.Array,title:\"Nav Links\",control:{type:ControlType.Object,controls:{label:{type:ControlType.String,defaultValue:\"New Here?\"},// String, not Link: ControlType.Link inside Array controls drops\n// string defaultValues (see MEMORY/attempts.md).\nlink:{type:ControlType.String,defaultValue:\"/visitriveroaks\"}}},defaultValue:CANONICAL_NAV,description:\"An item labelled Ministries opens the ministry dropdown (contents live in SiteHeader.tsx)\"},ctaLabel:{type:ControlType.String,title:\"CTA Label\",defaultValue:\"Plan Your Visit\"},ctaLink:{type:ControlType.Link,title:\"CTA Link\"},promoEnabled:{type:ControlType.Boolean,title:\"Promo Strip\",defaultValue:true,description:\"Rolling banner pinned above the nav on every page\"},promoText:{type:ControlType.String,title:\"Promo Text 1\",defaultValue:\"Fall Nights — Sun, Oct 25 — 4–7 PM\"},promoText2:{type:ControlType.String,title:\"Promo Text 2\",defaultValue:\"You Are Invited\",description:\"Alternates with the first. Clear it to show only one message\"},promoLink:{type:ControlType.String,title:\"Promo Link\",defaultValue:\"/bulletin\",description:\"Where the strip goes when clicked. Clear it to make the strip non-clickable\"},promoStart:{type:ControlType.String,title:\"Promo Start\",defaultValue:\"\",description:\"YYYY-MM-DD in Central time. Empty = show now\"},promoEnd:{type:ControlType.String,title:\"Promo End\",defaultValue:\"2026-10-25\",description:\"YYYY-MM-DD. Last day shown; empty = never expires\"},overDark:{type:ControlType.Boolean,title:\"Over Dark Hero\",defaultValue:true,description:\"Transparent with white text until the page is scrolled\"},reveal:{type:ControlType.Boolean,title:\"Scroll Reveal\",defaultValue:true,description:\"Sections and cards rise into view site-wide\"},accent:{type:ControlType.Color,title:\"Accent\",defaultValue:\"#4d9ee9\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SiteHeader\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"any\",\"framerIntrinsicWidth\":\"1200\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SiteHeader.map"],"mappings":"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"}