{"version":3,"file":"CommunityCalendar.Ctb6tJFV.mjs","names":["useState","_Fragment","useRef"],"sources":["https:/framerusercontent.com/modules/fmEcCbHaWzmhxMAl18YR/fR0cItnbh4XESKBQVHDY/CommunityCalendar.js"],"sourcesContent":["// ─────────────────────────────────────────────────────────────────────────────\n// Community Calendar — Framer Code Component\n// File: Community Events/CommunityCalendar.tsx\n// Last modified: 2026-07-24 EST | Author: Claude (inbox-worker routine, Eric directive)\n// Latest change (Eric, 2026-07-24): TODAY-BUTTON FIX ON THE ONGOING TAB. Eric reported\n//   the \"Today\" button works on the List and Calendar tabs but does nothing on the\n//   Ongoing Programs tab on his iPhone. Root cause: the scroll-to-today useEffect\n//   early-returned `if (!onList)`, so on Ongoing the button only bumped a nonce that\n//   re-fired an effect which then bailed — a dead button. The effect now runs on List\n//   OR Ongoing (both render [data-datekey] anchors since the 2026-05-21 date-grouped\n//   Ongoing layout), scrolling the active list to today / the soonest-upcoming group.\n//   Also added an iOS-robustness fallback (anchor.scrollIntoView, block:\"nearest\") so\n//   the jump works whether the inner overflow:auto div or the page is the scroller on\n//   iOS Safari, without regressing the working desktop/List path. Confirmed live\n//   (pre-fix, dead button) with e2e/scripts/calendar-today-ongoing-diagnose.mjs.\n//   NOTE: needs to be pasted into Framer + Published + tested on a real iPhone (Eric's\n//   Framer Server API push + Publish; code components are not tied to the git branch).\n// Prior change (Jim, 2026-07-19): LISTING TITLES BOLD. Jim asked \"Shouldn't the\n//   titles of the listings in the calendar be in bold type?\" They rendered at\n//   tokens.bodyWeight (400 = normal), so the event title did not stand out from the\n//   date line/description in each list row. The list-card title (EventCard, inList)\n//   is now fontWeight 700, so every listing title is bold across the List tab, the\n//   Ongoing tab, and the tap-a-day event list. The detail-panel title was already\n//   bold. NOTE: needs to be pasted into Framer + tested on a real iPhone (Eric's\n//   Framer Server API push + Publish; code components are not tied to the git branch).\n// Prior change (Jim, 2026-07-18): TODAY-BUTTON FIX. The \"Today\" button did nothing\n//   on the List view (the default tab, and what shows on a phone) because goToday\n//   only reset the month-grid's month/year, which the today-forward list ignores.\n//   Jim reported it \"appears not to work\" on an iPhone. goToday now also bumps a\n//   goTodayNonce so the scroll-to-today effect re-fires and the list jumps back to\n//   today's events. NOTE: needs to be pasted into Framer + tested on a real iPhone.\n// Prior change (Eric, 2026-07-05): Scope-toggle wording + order, and a subline.\n//   (1) Renamed the \"Community\" toggle tab to \"Jewish Community\" (short: \"Jewish\")\n//   — the underlying scope value \"community\" is unchanged; label only. Chose\n//   \"Community\" over \"Events\" because the slice also includes ongoing programs.\n//   (2) Reordered the toggle to Jewish Community / Arts & Culture / All Events\n//   (All Events moved last). Order is display-only; scope logic is value-based.\n//   (3) Turned on the existing subheading (was off/empty) with default text\n//   \"Toggle to see Jewish Community, Arts & Culture, or All Events.\" shown under\n//   the \"Community Calendar\" title. Edited + saved directly via the @framer/agent\n//   CLI (framer.getCodeFile → setFileContent).\n//   (4) FLICKER FIX. The scope toggle AND the view tabs (navBtnStyle) changed the\n//   active tab's fontWeight 400->700, which resized the label and reflowed the row\n//   on every switch — the flicker Eric saw. Weight is now a constant 600 (active\n//   still reads via fill + white text), and transitions target only color props,\n//   not `all`.\n//   (5) SUBLINE RENDER FIX. The subline now renders whenever the scope toggle is\n//   shown, not only when showSubheading is true — a component instance placed\n//   before the subheading feature had showSubheading=false / subheading=\"\" stored\n//   on it, and a code default cannot override an instance's saved prop, so the\n//   line never appeared live. Falls back to the toggle description text.\n// Prior change: Two follow-ups to the Calendar Scope work (Eric, 2026-07-04):\n//   (1) ON-PAGE SCOPE TOGGLE. The calendarScope prop is kept, but it now sets the\n//   INITIAL scope; a new on-page segmented toggle (All Events / Community / Arts &\n//   Culture) lets a viewer switch scope live in the calendar itself, not only via\n//   the Framer property control. Driven by activeScope state (seeded from the prop).\n//   A showScopeToggle prop (default true) hides the toggle on a page that should\n//   stay locked to one scope.\n//   (2) CROSS-LISTING. An event can now appear on BOTH the Community and Arts\n//   calendars by tagging it with a cross-list marker (\"Both Calendars\"). The marker\n//   is a routing signal only: it is stripped from the reader-facing tag chips and\n//   from search so it never shows publicly. Used for the Proctors Free Family Fun\n//   movies (family-friendly arts films that belong on both calendars).\n// Prior (2026-07-04): Added a \"Calendar Scope\" prop (calendarScope: all | community |\n//   arts-only) so one component can serve TWO Framer pages — a general Community\n//   calendar (\"community\" = every category except \"Arts & Culture\") and a separate\n//   Arts calendar (\"arts-only\" = only \"Arts & Culture\"). Default \"all\" keeps the\n//   original behavior. Scope is applied once as `scopedRecords`, which now feeds\n//   the chip rows, the List/Calendar/Ongoing tabs, and the \"N of M events\" count.\n//   Requested by Jim (differentiate the summer arts shows onto an ARTS calendar).\n// Prior (2026-06-18): Removed the \"No events found.\" placeholder from the List/Ongoing\n//   empty state. When no filter is active and there are no events, the calendar\n//   now renders nothing instead of the placeholder text. The filter-feedback\n//   message (\"No events match your filters.\") is kept since it explains WHY the\n//   list is empty. Calendar-day sidebar empty states are unchanged.\n// Prior (2026-06-17): Rich-text descriptions. The Airtable `description` field is now\n//   a richText field; added renderRich() to render a safe inline Markdown subset\n//   (**bold**, *italic* / _italic_, __underline__ / <u>, [label](url)) to React\n//   nodes in BOTH the list preview and the detail sidebar. Drives the house style\n//   of italic film titles (Berkshire Jewish Film Festival listings, etc.). No raw\n//   HTML injection (no dangerouslySetInnerHTML); newlines still preserved via\n//   pre-wrap (sidebar) / line-clamp (list). NOTE: this is a paste-source file -\n//   it is not live until pasted into the Framer Code Component and republished.\n// Prior (2026-06-01): Mobile responsive - the search bar + category/audience chip\n//   rows now collapse behind a single \"Search & Filters\" toggle button on\n//   narrow viewports (containerWidth < 600). Default collapsed to reclaim\n//   vertical space on phones; a count badge on the button shows how many\n//   filter dimensions are active while collapsed. The active-filter summary\n//   row (\"X of Y events\" + Clear filters) stays visible so users still see\n//   that filters are applied. Wider viewports are unchanged (panel always\n//   shown, no button). Tabs + month nav stay visible at every width.\n// Prior (2026-05-21): Ongoing Programs tab now renders with the same date-grouped\n//   layout as the List tab (bold next-upcoming-date header + horizontal\n//   divider + 2-col EventCard grid per group), instead of a single flat grid.\n//   Re-applies the layout from the earlier reverted commit now that the\n//   listCols-stale-on-tab-switch bug is fixed.\n// Prior (2026-05-21): Fix List tab dropping to 1 column after switching between\n//   List and Ongoing tabs. Replaced the per-tab listContainerRef-driven\n//   ResizeObserver (which got stuck watching unmounted containers on tab\n//   swap) with a pure derived value off the always-mounted outer\n//   containerWidth: `const listCols = containerWidth < 480 ? 1 : 2`.\n// Prior (2026-05-21): Added 'Ongoing Programs' tab (deduped recurring series sorted\n//   by next upcoming occurrence). List + Calendar tabs now hide recurring\n//   events entirely — those live in the Ongoing tab. Previous boolean state\n//   `listViewOpen` was promoted to a tri-state `activeTab` enum.\n//\n// === What this is ===\n// A Framer Code Component for the JW community calendar.  Fetches events from\n// the jw-events-api Cloudflare Worker (which proxies the Airtable Community\n// Events base), and renders a calendar grid + list view with detail sidebar.\n//\n// === Architecture ===\n// Browser → jw-events-api Worker → Airtable Community Events base.\n// The Worker holds the Airtable PAT server-side; the browser never sees it.\n//\n// === Setup in Framer ===\n//   1. Create a Code Component, replace its contents with this file.\n//   2. In the component props panel, leave \"API Base URL\" as the default\n//      (https://jw-events-api.eric-belozovsky.workers.dev) unless the Worker\n//      has been redeployed somewhere else.\n//   3. Set \"Container Height\" to the height you want the calendar to fill.\n//      Both List and Calendar views scroll internally to fit this height.\n//\n// === What changed in this version (vs the prior PAT-embedded version) ===\n//   1. No more apiKey prop. Fetch comes from a server-side Worker.\n//   2. Renders registration_url / registration_phone / registration_email\n//      (clickable links) in the event detail.\n//   3. Renders submitter_name / submitter_email / submitter_phone (the public\n//      accountability contact, per Community Events rule R1).\n//   4. Renders image_url or image_attachment[0] as a hero in the detail view\n//      and as a thumbnail in the list card.\n//   5. Renders organizer (resolved to the linked Organization's name + website).\n//   6. List view shows TODAY-FORWARD events across all months (no longer\n//      month-scoped). Calendar view stays month-scoped because the grid IS a\n//      month.\n//   7. Audience filter chips alongside category chips. AND across the two\n//      filter rows (event must match active category AND have at least one\n//      active audience).\n//   8. Fixed container height (configurable prop). Both views scroll inside.\n//   9. Robust auto-scroll-to-today on list view: if today has no events,\n//      scrolls to the NEXT date that has events.\n//\n// ─────────────────────────────────────────────────────────────────────────────\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useState,useEffect,useRef}from\"react\";// ─── Config ──────────────────────────────────────────────────────────────────\nconst API_DEFAULT_URL=\"https://jw-events-api.eric-belozovsky.workers.dev\";const MONTH_NAMES=[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"];const DAY_NAMES=[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"];// Fallback palette — overridden at runtime by Categories table\nconst CATEGORY_PALETTE={\"Jewish Life\":\"#C0392B\",\"Classes & Study\":\"#B8652E\",\"Arts & Culture\":\"#7B3F9E\",\"Museums & Galleries\":\"#C8A820\",\"Business & Technology\":\"#4B6CB7\",\"Fitness & Recreation\":\"#108BE3\",\"Tzedakah & Fundraisers\":\"#2D6A4F\",\"Youth & Family\":\"#CB15CF\",\"Senior Programs\":\"#E3103E\"};// ─── Cross-listing ───────────────────────────────────────────────────────────\n// An event tagged with one of these markers (case-insensitive) shows on BOTH the\n// Community and the Arts calendars, whatever its single category — so a family-\n// friendly arts film can appear on the general Community calendar too. The marker\n// is a routing signal, NOT a public label: it is stripped from the reader-facing\n// tag chips (see EventDetail) and from search, so a reader never sees it.\n// Canonical tag to set in Airtable: \"Both Calendars\".\nconst CROSS_LIST_MARKERS=[\"both calendars\",\"community + arts\",\"community and arts\",\"arts + community\",\"cross-list\"];function isCrossListMarker(tag){return CROSS_LIST_MARKERS.includes(String(tag).trim().toLowerCase());}function isCrossListed(f){const t=Array.isArray(f?.tags)?f.tags:f?.tags?[f.tags]:[];return t.some(isCrossListMarker);}// Tags with any cross-list marker removed — the list a reader should see.\nfunction visibleTags(f){const t=Array.isArray(f?.tags)?f.tags:f?.tags?[f.tags]:[];return t.filter(x=>!isCrossListMarker(x));}// ─── Helpers ─────────────────────────────────────────────────────────────────\nfunction daysInMonth(y,m){return new Date(y,m+1,0).getDate();}function firstWeekday(y,m){return new Date(y,m,1).getDay();}function sameDay(a,b){return a.getFullYear()===b.getFullYear()&&a.getMonth()===b.getMonth()&&a.getDate()===b.getDate();}function toDateKey(d){return`${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,\"0\")}-${String(d.getDate()).padStart(2,\"0\")}`;}function parseDate(str){if(!str)return null;try{const d=new Date(str);return isNaN(d.getTime())?null:d;}catch{return null;}}function fmtTime(d){if(!d)return\"\";return d.toLocaleTimeString([],{hour:\"numeric\",minute:\"2-digit\"});}function fmtDateLong(d){return d.toLocaleDateString([],{weekday:\"long\",month:\"long\",day:\"numeric\",year:\"numeric\"});}function fmtDateShort(d){return d.toLocaleDateString([],{weekday:\"short\",month:\"short\",day:\"numeric\"});}function catColor(category,fallback,overrides){return overrides&&category&&overrides[category]||CATEGORY_PALETTE[category]||fallback;}// Extract first usable image URL from an event's fields.\n// Priority: image_url → image_attachment[0].thumbnails.large.url → image_attachment[0].url\nfunction eventImageUrl(f,size=\"large\"){if(f?.image_url)return f.image_url;const att=Array.isArray(f?.image_attachment)?f.image_attachment[0]:null;if(!att)return null;return att?.thumbnails?.[size]?.url||att?.url||null;}// Extract the flyer URL. Prefer the first attachment uploaded via the form\n// (f.flyer[0].url, a signed Airtable CDN URL). Fall back to the manually-\n// entered flyer_url for cases where the flyer is hosted elsewhere\n// (Google Drive, org site, etc.).\nfunction eventFlyerUrl(f){const att=Array.isArray(f?.flyer)?f.flyer[0]:null;if(att?.url)return att.url;if(f?.flyer_url)return f.flyer_url;return null;}// True if the event is part of a recurring series (any non-empty recurrence_type other than \"None\").\nfunction isRecurring(f){const t=f?.recurrence_type;if(!t)return false;if(typeof t===\"string\")return t!==\"None\";return true;}// Returns all events in the same recurring series as the given event (excluding the event itself).\n// Sorted chronologically by start_datetime.\nfunction siblingsInSeries(event,allEvents){const seriesIds=Array.isArray(event?.fields?.recurrence_series)?event.fields.recurrence_series:[];if(seriesIds.length===0)return[];const myId=event.id;return allEvents.filter(r=>{if(r.id===myId)return false;const rsIds=Array.isArray(r.fields?.recurrence_series)?r.fields.recurrence_series:[];return rsIds.some(id=>seriesIds.includes(id));}).sort((a,b)=>{const da=a.fields?.start_datetime||\"\";const db=b.fields?.start_datetime||\"\";return da<db?-1:da>db?1:0;});}// Resolve organizer / venue display name from the *_resolved fields the Worker attaches.\nfunction organizerName(f){const resolved=Array.isArray(f?.organizer_resolved)?f.organizer_resolved:[];return resolved.map(o=>o?.name).filter(Boolean).join(\", \");}function organizerSite(f){const resolved=Array.isArray(f?.organizer_resolved)?f.organizer_resolved:[];for(const o of resolved)if(o?.website)return o.website;return null;}// Short venue name (for compact EventCard rows). Pulls from venue_name_cached\n// when available (lookup field), else first venue_resolved.name, else \"\".\nfunction venueDisplay(f){if(f?.venue_name_cached){return Array.isArray(f.venue_name_cached)?f.venue_name_cached.join(\", \"):f.venue_name_cached;}const resolved=Array.isArray(f?.venue_resolved)?f.venue_resolved:[];return resolved.map(v=>v?.name).filter(Boolean).join(\" / \");}function venueDetails(f){const resolved=Array.isArray(f?.venue_resolved)?f.venue_resolved:[];return resolved.map(v=>{const cityStateZip=[v?.city,v?.state,v?.zip].filter(Boolean).join(v?.state?\", \":\" \").replace(/, ([A-Z]{2}) /,\" $1 \")// \"Delmar, NY 12054\" not \"Delmar, NY, 12054\"\n;return{id:v?.id,name:v?.name||\"\",addressLine:v?.address||\"\",cityStateZip,mapUrl:v?.map_url,website:v?.website,accessibility:v?.accessibility_notes};}).filter(vd=>vd.name||vd.addressLine||vd.cityStateZip);}// ─── Worker fetch ────────────────────────────────────────────────────────────\nasync function fetchJson(url){const r=await fetch(url,{credentials:\"omit\"});if(!r.ok){const body=await r.text();throw new Error(`Fetch ${url} ${r.status}: ${body.slice(0,200)}`);}return r.json();}// ── renderRich: inline rich-text for the Airtable `description` field ─────────\n// `description` is a richText field; the API returns it as light Markdown. We\n// render a safe inline subset to React nodes (NO dangerouslySetInnerHTML):\n//   **bold**   *italic* / _italic_   __underline__   [label](url)\n//   plus literal <b>/<strong>, <i>/<em>, <u> tags.\n// Newlines survive via the container's white-space: pre-wrap (sidebar) or get\n// line-clamped (list preview). Any unmatched text renders verbatim.\nfunction renderRich(text,linkColor=\"#2563EB\"){if(text==null||text===\"\")return null;const rules=[// Links first so their label text isn't re-scanned for emphasis markers.\n{re:/\\[([^\\]]+)\\]\\(([^)\\s]+)\\)/,inner:m=>m[1],wrap:(kids,m,key)=>/*#__PURE__*/_jsx(\"a\",{href:m[2],target:\"_blank\",rel:\"noopener noreferrer\",style:{color:linkColor,textDecoration:\"underline\",wordBreak:\"break-word\"},children:kids},key)},// Double-delimiter forms BEFORE single so ** / __ win over * / _.\n{re:/\\*\\*([\\s\\S]+?)\\*\\*/,inner:m=>m[1],wrap:(k,_m,key)=>/*#__PURE__*/_jsx(\"strong\",{children:k},key)},{re:/__([\\s\\S]+?)__/,inner:m=>m[1],wrap:(k,_m,key)=>/*#__PURE__*/_jsx(\"u\",{children:k},key)},{re:/<(?:b|strong)>([\\s\\S]+?)<\\/(?:b|strong)>/i,inner:m=>m[1],wrap:(k,_m,key)=>/*#__PURE__*/_jsx(\"strong\",{children:k},key)},{re:/<u>([\\s\\S]+?)<\\/u>/i,inner:m=>m[1],wrap:(k,_m,key)=>/*#__PURE__*/_jsx(\"u\",{children:k},key)},{re:/<(?:i|em)>([\\s\\S]+?)<\\/(?:i|em)>/i,inner:m=>m[1],wrap:(k,_m,key)=>/*#__PURE__*/_jsx(\"em\",{children:k},key)},{re:/\\*([\\s\\S]+?)\\*/,inner:m=>m[1],wrap:(k,_m,key)=>/*#__PURE__*/_jsx(\"em\",{children:k},key)},{re:/_([\\s\\S]+?)_/,inner:m=>m[1],wrap:(k,_m,key)=>/*#__PURE__*/_jsx(\"em\",{children:k},key)}];const out=[];let rest=text;let key=0;let guard=0;while(rest.length>0&&guard++<1e4){let best=null;for(const rule of rules){const m=rule.re.exec(rest);if(m&&(best===null||m.index<best.idx))best={idx:m.index,rule,m};}if(best===null){out.push(rest);break;}if(best.idx>0)out.push(rest.slice(0,best.idx));out.push(best.rule.wrap(renderRich(best.rule.inner(best.m),linkColor),best.m,\"rt\"+key++));rest=rest.slice(best.idx+best.m[0].length);}return out;}// ── EventCard ─────────────────────────────────────────────────────────────────\n// inList = true → list view variant (date line + truncated description + optional thumb)\n// narrow = true → chip stacks above title instead of floating right (< 480px)\nfunction EventCard({event,tokens,primaryColor,radius,categoryColors,inList=false,showDescription=false,showImage=true,narrow=false,onClick}){const f=event.fields;const start=parseDate(f.start_datetime);const color=catColor(f.category,primaryColor,categoryColors);const thumb=showImage?eventImageUrl(f,\"small\"):null;const venue=venueDisplay(f);const recurring=isRecurring(f);const recurringLabel=recurring?typeof f.recurrence_type===\"string\"?f.recurrence_type:\"Recurring\":null;return /*#__PURE__*/_jsxs(\"div\",{onClick:onClick,style:{borderRadius:radius,padding:\"12px 14px\",marginBottom:inList?0:8,borderLeft:`4px solid ${color}`,backgroundColor:tokens.surface,cursor:\"pointer\",display:\"flex\",gap:12,transition:\"opacity 0.12s\",height:inList?\"100%\":\"auto\",boxSizing:\"border-box\",alignItems:\"flex-start\"},children:[inList&&thumb&&/*#__PURE__*/_jsx(\"img\",{src:thumb,alt:\"\",style:{width:72,height:72,objectFit:\"cover\",borderRadius:6,flexShrink:0,backgroundColor:tokens.surface}}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:4,flex:1,minWidth:0},children:[inList&&start&&/*#__PURE__*/_jsxs(\"div\",{style:{fontSize:tokens.bodySize-3,fontWeight:700,color,fontFamily:tokens.font,textTransform:\"uppercase\",letterSpacing:\"0.06em\",marginBottom:2,display:\"flex\",alignItems:\"center\",gap:6,flexWrap:\"wrap\"},children:[/*#__PURE__*/_jsxs(\"span\",{children:[fmtDateShort(start),!f.all_day&&` \\xb7 ${fmtTime(start)}`]}),recurring&&/*#__PURE__*/_jsxs(\"span\",{title:`Recurring (${recurringLabel})`,style:{fontSize:9,padding:\"1px 6px\",borderRadius:999,backgroundColor:color+\"18\",color,border:`1px solid ${color}40`,letterSpacing:\"0.04em\"},children:[\"↻ \",recurringLabel]})]}),f.category&&narrow&&/*#__PURE__*/_jsx(\"span\",{style:{alignSelf:\"flex-start\",fontSize:10,fontWeight:700,padding:\"3px 8px\",borderRadius:999,backgroundColor:color+\"22\",color,fontFamily:tokens.font,flexShrink:0,letterSpacing:\"0.03em\"},children:f.category}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",justifyContent:\"space-between\",alignItems:\"flex-start\",gap:8},children:[/*#__PURE__*/_jsx(\"div\",{style:{// Listing titles are bold so they are the scannable\n// anchor of each list row (Jim, 2026-07-19). This is\n// the List / Ongoing / selected-day list card title.\nfontWeight:700,fontSize:tokens.bodySize,color:tokens.text,fontFamily:tokens.font,lineHeight:1.4,wordBreak:\"break-word\",overflowWrap:\"break-word\",flex:1,minWidth:0},children:f.title||\"Untitled Event\"}),f.category&&!narrow&&/*#__PURE__*/_jsx(\"span\",{style:{fontSize:10,fontWeight:700,padding:\"3px 8px\",borderRadius:999,backgroundColor:color+\"22\",color,whiteSpace:\"nowrap\",fontFamily:tokens.font,flexShrink:0,letterSpacing:\"0.03em\",marginTop:1},children:f.category})]}),!inList&&/*#__PURE__*/_jsxs(\"div\",{style:{fontSize:tokens.bodySize-2,color:tokens.muted,fontFamily:tokens.font,display:\"flex\",alignItems:\"center\",gap:6,flexWrap:\"wrap\"},children:[/*#__PURE__*/_jsxs(\"span\",{children:[f.all_day?\"All day\":start?fmtTime(start):\"\",venue?` \\xb7 ${venue}`:\"\"]}),recurring&&/*#__PURE__*/_jsxs(\"span\",{title:`Recurring (${recurringLabel})`,style:{fontSize:9,padding:\"1px 6px\",borderRadius:999,backgroundColor:color+\"18\",color,border:`1px solid ${color}40`,letterSpacing:\"0.04em\"},children:[\"↻ \",recurringLabel]})]}),inList&&venue&&/*#__PURE__*/_jsx(\"div\",{style:{fontSize:tokens.bodySize-2,color:tokens.muted,fontFamily:tokens.font},children:venue}),inList&&showDescription&&f.description&&/*#__PURE__*/_jsx(\"div\",{style:{fontSize:tokens.bodySize-2,color:tokens.muted,fontFamily:tokens.font,lineHeight:1.55,marginTop:4,display:\"-webkit-box\",WebkitLineClamp:2,WebkitBoxOrient:\"vertical\",overflow:\"hidden\"},children:renderRich(f.description)})]})]});}// ── InfoRow (label + value, with optional link) ──────────────────────────────\nfunction InfoRow({label,children,tokens}){return /*#__PURE__*/_jsxs(\"div\",{style:{marginBottom:12},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:tokens.bodySize-3,fontWeight:700,color:tokens.muted,fontFamily:tokens.font,textTransform:\"uppercase\",letterSpacing:\"0.07em\",marginBottom:3},children:label}),/*#__PURE__*/_jsx(\"div\",{style:{fontSize:tokens.bodySize-1,fontWeight:tokens.bodyWeight,color:tokens.text,fontFamily:tokens.font,lineHeight:1.5},children:children})]});}// ── EventDetail (sidebar full-detail view) ───────────────────────────────────\nfunction EventDetail({event,tokens,primaryColor,linkColor,showDescription,showTags,showVenue,showCost,showAudience,showImage,showOrganizer,showRegistration,showSubmitter,showFlyer,radius,categoryColors,allEvents,onSelectEvent,onBack}){const f=event.fields;const start=parseDate(f.start_datetime);const end=parseDate(f.end_datetime);const color=catColor(f.category,primaryColor,categoryColors);// visibleTags drops any cross-list routing marker (e.g. \"Both Calendars\") so\n// the reader never sees it as a tag chip.\nconst tags=visibleTags(f);const audience=f.audience?Array.isArray(f.audience)?f.audience:[f.audience]:[];const heroImage=showImage?eventImageUrl(f,\"large\"):null;const venue=venueDisplay(f);const venueRows=venueDetails(f);const orgName=organizerName(f);const orgSite=organizerSite(f);const recurring=isRecurring(f);const recurringLabel=recurring?typeof f.recurrence_type===\"string\"?f.recurrence_type:\"Recurring\":null;const siblings=recurring?siblingsInSeries(event,allEvents):[];const[seriesOpen,setSeriesOpen]=useState(false);// Back-button label: surfaces the date the user came from so the action\n// is unambiguous (\"← Return to Fri, May 15 event list\" instead of the\n// generic \"Back to events\").\nconst backLabel=start?`← Return to ${fmtDateShort(start)} event list`:\"← Back to events\";const hasRegistration=showRegistration&&(f.registration_url||f.registration_phone||f.registration_email);const hasSubmitter=showSubmitter&&(f.submitter_name||f.submitter_email||f.submitter_phone);return /*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"button\",{onClick:onBack,style:{background:\"none\",border:\"none\",cursor:\"pointer\",color:primaryColor,fontSize:13,fontFamily:tokens.font,fontWeight:600,padding:\"0 0 16px\",display:\"flex\",alignItems:\"center\",gap:4},children:backLabel}),heroImage&&/*#__PURE__*/_jsx(\"img\",{src:heroImage,alt:f.title||\"\",style:{width:\"100%\",maxHeight:240,objectFit:\"cover\",borderRadius:radius,marginBottom:14,display:\"block\"}}),/*#__PURE__*/_jsxs(\"div\",{style:{borderLeft:`4px solid ${color}`,paddingLeft:16},children:[/*#__PURE__*/_jsx(\"h2\",{style:{margin:\"0 0 6px\",fontSize:tokens.bodySize+6,fontWeight:700,color:tokens.text,fontFamily:tokens.headingFont,lineHeight:1.25},children:f.title||\"Untitled Event\"}),/*#__PURE__*/_jsxs(\"div\",{style:{fontSize:tokens.bodySize-1,color:tokens.muted,fontFamily:tokens.font,marginBottom:12},children:[start&&fmtDateLong(start),!f.all_day&&start&&/*#__PURE__*/_jsxs(\"span\",{children:[\" \\xb7 \",[fmtTime(start),end&&fmtTime(end)].filter(Boolean).join(\" - \")]}),f.all_day&&\" \\xb7 All day event\"]}),f.category&&/*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-block\",fontSize:tokens.bodySize-3,fontWeight:700,padding:\"4px 12px\",borderRadius:999,backgroundColor:color+\"22\",color,fontFamily:tokens.font,marginBottom:16,letterSpacing:\"0.04em\"},children:f.category}),showDescription&&f.description&&/*#__PURE__*/_jsx(\"p\",{style:{fontSize:tokens.bodySize,fontWeight:tokens.bodyWeight,color:tokens.text,lineHeight:1.65,fontFamily:tokens.font,margin:\"0 0 16px\",whiteSpace:\"pre-wrap\"},children:renderRich(f.description,linkColor)}),recurring&&/*#__PURE__*/_jsx(InfoRow,{label:\"Recurring schedule\",tokens:tokens,children:/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:6},children:[/*#__PURE__*/_jsxs(\"span\",{style:{display:\"inline-flex\",alignItems:\"center\",gap:6,alignSelf:\"flex-start\",fontSize:tokens.bodySize-2,padding:\"3px 10px\",borderRadius:999,backgroundColor:color+\"18\",color,border:`1px solid ${color}40`,fontWeight:600},children:[\"↻ \",recurringLabel]}),siblings.length>0&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"button\",{onClick:()=>setSeriesOpen(o=>!o),style:{background:\"none\",border:\"none\",padding:0,cursor:\"pointer\",color:linkColor,fontSize:tokens.bodySize-2,fontFamily:tokens.font,fontWeight:600,textAlign:\"left\",textDecoration:\"underline\",alignSelf:\"flex-start\"},children:seriesOpen?`Hide other ${siblings.length} dates`:`See all ${siblings.length+1} dates in this series`}),seriesOpen&&/*#__PURE__*/_jsx(\"ul\",{style:{listStyle:\"none\",padding:0,margin:\"4px 0 0\",maxHeight:240,overflowY:\"auto\",border:`1px solid ${tokens.border}`,borderRadius:radius},children:siblings.map((occ,idx)=>{const occStart=parseDate(occ.fields?.start_datetime);return /*#__PURE__*/_jsxs(\"li\",{onClick:()=>onSelectEvent(occ),style:{padding:\"8px 12px\",cursor:\"pointer\",borderTop:idx===0?\"none\":`1px solid ${tokens.border}`,fontSize:tokens.bodySize-2,color:tokens.text,fontFamily:tokens.font,display:\"flex\",justifyContent:\"space-between\",alignItems:\"center\",gap:8,transition:\"background 0.12s\"},onMouseEnter:e=>e.currentTarget.style.backgroundColor=tokens.surface,onMouseLeave:e=>e.currentTarget.style.backgroundColor=\"transparent\",children:[/*#__PURE__*/_jsx(\"span\",{style:{fontWeight:600},children:occStart?fmtDateShort(occStart):\"?\"}),/*#__PURE__*/_jsx(\"span\",{style:{color:tokens.muted,fontSize:tokens.bodySize-3},children:occStart&&!occ.fields?.all_day?fmtTime(occStart):\"\"})]},occ.id);})})]})]})}),showOrganizer&&orgName&&/*#__PURE__*/_jsx(InfoRow,{label:\"Organizer\",tokens:tokens,children:orgSite?/*#__PURE__*/_jsx(\"a\",{href:orgSite,target:\"_blank\",rel:\"noopener noreferrer\",style:{color:linkColor,textDecoration:\"underline\"},children:orgName}):orgName}),showOrganizer&&orgSite&&/*#__PURE__*/_jsx(InfoRow,{label:\"Website (for more info)\",tokens:tokens,children:/*#__PURE__*/_jsx(\"a\",{href:orgSite,target:\"_blank\",rel:\"noopener noreferrer\",style:{color:linkColor,textDecoration:\"underline\",wordBreak:\"break-all\"},children:orgSite.replace(/^https?:\\/\\//,\"\").replace(/\\/$/,\"\")})}),showVenue&&(f.is_online||venueRows.length>0||venue)&&/*#__PURE__*/_jsx(InfoRow,{label:\"Venue\",tokens:tokens,children:f.is_online?/* Online event: just the venue name + the Zoom URL *//*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:4},children:[/*#__PURE__*/_jsx(\"span\",{style:{fontWeight:600},children:venue||\"Online (Zoom)\"}),f.registration_url?/*#__PURE__*/_jsxs(\"a\",{href:f.registration_url,target:\"_blank\",rel:\"noopener noreferrer\",style:{color:linkColor,textDecoration:\"underline\",wordBreak:\"break-all\",fontSize:tokens.bodySize-1},children:[\"Join:\",\" \",f.registration_url.replace(/^https?:\\/\\//,\"\")]}):/*#__PURE__*/_jsx(\"span\",{style:{fontSize:tokens.bodySize-2,color:tokens.muted,fontStyle:\"italic\"},children:\"Link provided at registration.\"})]}):venueRows.length>0?/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:10},children:venueRows.map((vd,i)=>/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:2},children:[vd.name&&/*#__PURE__*/_jsx(\"span\",{style:{fontWeight:600},children:vd.name}),vd.addressLine&&/*#__PURE__*/_jsx(\"span\",{children:vd.addressLine}),vd.cityStateZip&&/*#__PURE__*/_jsx(\"span\",{children:vd.cityStateZip}),vd.mapUrl&&/*#__PURE__*/_jsx(\"a\",{href:vd.mapUrl,target:\"_blank\",rel:\"noopener noreferrer\",style:{color:linkColor,textDecoration:\"underline\",fontSize:tokens.bodySize-2,marginTop:2,alignSelf:\"flex-start\"},children:\"Get directions ↗\"}),vd.accessibility&&/*#__PURE__*/_jsxs(\"span\",{style:{fontSize:tokens.bodySize-3,color:tokens.muted,fontStyle:\"italic\",marginTop:2},children:[\"Accessibility:\",\" \",vd.accessibility]})]},vd.id||i))}):/* Fallback: no resolved linked record, just the cached name */venue}),showAudience&&audience.length>0&&/*#__PURE__*/_jsx(InfoRow,{label:\"Audience\",tokens:tokens,children:audience.join(\", \")}),showCost&&(f.cost_display||f.cost_member||f.cost_nonmember)&&/*#__PURE__*/_jsxs(InfoRow,{label:\"Cost\",tokens:tokens,children:[f.cost_display,f.cost_member&&` \\xb7 Member: ${f.cost_member}`,f.cost_nonmember&&` \\xb7 Non-member: ${f.cost_nonmember}`]}),(()=>{const flyerUrl=eventFlyerUrl(f);if(!showFlyer||!flyerUrl)return null;return /*#__PURE__*/_jsx(InfoRow,{label:\"Flyer\",tokens:tokens,children:/*#__PURE__*/_jsx(\"a\",{href:flyerUrl,target:\"_blank\",rel:\"noopener noreferrer\",style:{color:linkColor,textDecoration:\"underline\",wordBreak:\"break-all\"},children:\"View flyer ↗\"})});})(),hasRegistration&&/*#__PURE__*/_jsx(InfoRow,{label:\"RSVP / Register\",tokens:tokens,children:/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:4},children:[f.registration_url&&/*#__PURE__*/_jsx(\"a\",{href:f.registration_url,target:\"_blank\",rel:\"noopener noreferrer\",style:{color:linkColor,textDecoration:\"underline\",wordBreak:\"break-all\"},children:f.registration_url.replace(/^https?:\\/\\//,\"\")}),f.registration_phone&&/*#__PURE__*/_jsx(\"a\",{href:`tel:${f.registration_phone.replace(/[^+\\d]/g,\"\")}`,style:{color:linkColor,textDecoration:\"underline\"},children:f.registration_phone}),f.registration_email&&/*#__PURE__*/_jsx(\"a\",{href:`mailto:${f.registration_email}`,style:{color:linkColor,textDecoration:\"underline\"},children:f.registration_email})]})}),hasSubmitter&&/*#__PURE__*/_jsx(InfoRow,{label:\"Posted by\",tokens:tokens,children:/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:4},children:[f.submitter_name&&/*#__PURE__*/_jsx(\"span\",{children:f.submitter_name}),f.submitter_email&&/*#__PURE__*/_jsx(\"a\",{href:`mailto:${f.submitter_email}`,style:{color:linkColor,textDecoration:\"underline\"},children:f.submitter_email}),f.submitter_phone&&/*#__PURE__*/_jsx(\"a\",{href:`tel:${f.submitter_phone.replace(/[^+\\d]/g,\"\")}`,style:{color:linkColor,textDecoration:\"underline\"},children:f.submitter_phone})]})}),showTags&&tags.length>0&&/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flexWrap:\"wrap\",gap:6,marginTop:8},children:tags.map((tag,i)=>/*#__PURE__*/_jsx(\"span\",{style:{fontSize:tokens.bodySize-3,padding:\"3px 10px\",borderRadius:999,backgroundColor:tokens.surface,border:`1px solid ${tokens.border}`,color:tokens.muted,fontFamily:tokens.font},children:tag},i))})]})]});}// ─── Main Component ───────────────────────────────────────────────────────────\nexport default function CommunityCalendar({// Data\napiBaseUrl=API_DEFAULT_URL,// Which slice of the calendar this instance shows INITIALLY. Lets the SAME\n// component serve two Framer pages: a general Community calendar and a separate\n// Arts calendar. \"all\" = every event (default, the original behavior);\n// \"arts-only\" = only the \"Arts & Culture\" category; \"community\" = everything\n// EXCEPT \"Arts & Culture\" (so the arts shows live on the Arts page, not here).\n// With showScopeToggle on (the default), this is just the STARTING scope — the\n// viewer can switch it live from the on-page toggle.\ncalendarScope=\"all\",// Show the on-page scope toggle (Jewish Community / Arts & Culture / All Events)\n// so a viewer can switch which slice they see right in the calendar, not only\n// via this property control. Turn OFF to lock a page to its calendarScope.\nshowScopeToggle=true,// Heading\nheading=\"Community Calendar\",showHeading=true,headingAlign=\"center\",subheading=\"Toggle to see Jewish Community, Arts & Culture, or All Events.\",showSubheading=true,// Layout\ncontainerHeight=720,sidebarWidth=320,// Colors\nprimaryColor=\"#4F46E5\",bgColor=\"#FFFFFF\",surfaceColor=\"#F9FAFB\",mutedColor=\"#6B7280\",borderColor=\"#E5E7EB\",todayRingColor=\"#4F46E5\",eventDotColor=\"#4F46E5\",selectedDayBg=\"#EEF2FF\",modalBgColor=\"#FFFFFF\",overlayColor=\"rgba(0,0,0,0.55)\",// Typography\nfontFamily=\"Inter, system-ui, sans-serif\",bodyFontFamily=\"Inter, system-ui, sans-serif\",headingFontSize=28,headingFontWeight=\"700\",headingColor=\"#111827\",bodyFontSize=14,bodyFontWeight=\"400\",bodyTextColor=\"#111827\",// Shape\nborderRadius=16,cellBorderRadius=8,// Filter chip style\nchipFont=\"Inter, system-ui, sans-serif\",chipFontSize=11,chipBorderColor=\"#E5E7EB\",chipTextColor=\"#6B7280\",// Audience chip colors (TRUE = filter is ON, FALSE = filter is OFF)\naudienceActiveBg=\"#EEF2FF\",audienceActiveText=\"#4F46E5\",audienceInactiveBg=\"#FFFFFF\",audienceInactiveText=\"#6B7280\",// Color used for ALL clickable links in the event detail panel: organizer\n// website, event website, registration URL, mailto:, tel:. Defaults to a\n// clear blue so links read as links.\nlinkColor=\"#2563EB\",// Search & filter\nshowSearch=true,showFilters=true,showAudienceFilter=true,// Field toggles (event detail panel)\nshowDescription=true,showTags=true,showVenue=true,showCost=true,showAudience=true,showImage=true,showOrganizer=true,showRegistration=true,showSubmitter=true,showFlyer=true}){const[records,setRecords]=useState([]);// ── Scope (Community / Arts / All) ────────────────────────────────────────\n// activeScope is the slice the viewer is currently looking at. It is seeded\n// from the calendarScope prop (the page's default) and can be switched live\n// via the on-page scope toggle. Applied once here as scopedRecords so every\n// downstream derivation — the chip rows, the List/Calendar/Ongoing tabs, and\n// the \"N of M events\" count — operates on the same scoped universe.\n// A cross-listed event (see isCrossListed) shows in BOTH the Community and\n// Arts scopes regardless of its single category.\nconst ARTS_CATEGORY=\"Arts & Culture\";const[activeScope,setActiveScope]=useState(calendarScope);// Keep the live scope in sync if the prop is changed in the Framer editor.\nuseEffect(()=>{setActiveScope(calendarScope);},[calendarScope]);const inScope=f=>{if(activeScope===\"all\")return true;if(isCrossListed(f))return true// cross-listed → on both calendars\n;const isArts=f?.category===ARTS_CATEGORY;return activeScope===\"arts-only\"?isArts:!isArts;};const scopedRecords=records.filter(r=>inScope(r.fields||{}));const[categoryColors,setCategoryColors]=useState({});const[loading,setLoading]=useState(false);const[fetchError,setFetchError]=useState(null);const resolveFont=(f,fallback=\"Inter, system-ui, sans-serif\")=>f&&typeof f===\"object\"?f.fontFamily||fallback:f||fallback;const resolvedFontFamily=resolveFont(fontFamily);const resolvedBodyFontFamily=resolveFont(bodyFontFamily);const resolvedChipFont=resolveFont(chipFont);const today=new Date;const[year,setYear]=useState(today.getFullYear());const[month,setMonth]=useState(today.getMonth());const[selectedDay,setSelectedDay]=useState(null);const[activeEvent,setActiveEvent]=useState(null);const[panelOpen,setPanelOpen]=useState(false);const[searchQuery,setSearchQuery]=useState(\"\");// Tabs: \"list\" (default, today-forward one-offs) | \"calendar\" (month grid) |\n// \"ongoing\" (recurring series, deduped to one card per series).\n// List + Calendar hide recurring events; Ongoing shows ONLY recurring,\n// deduped by recurrence_series and sorted by next upcoming occurrence.\nconst[activeTab,setActiveTab]=useState(\"list\");const onList=activeTab===\"list\";const onCalendar=activeTab===\"calendar\";const onOngoing=activeTab===\"ongoing\";const[activeCategories,setActiveCategories]=useState(new Set);const[activeAudiences,setActiveAudiences]=useState(new Set);// Mobile only: the search bar + filter chip rows collapse behind a toggle\n// button. Default collapsed; only consulted when mobileFilters is true.\nconst[filtersExpanded,setFiltersExpanded]=useState(false);// ── List view container ref (used for auto-scroll-to-today, NOT for column count) ──\nconst listContainerRef=useRef(null);// Bumped by the \"Today\" button so the scroll-to-today effect re-fires on the\n// list view even when today's month/year is already selected (2026-07-18).\nconst[goTodayNonce,setGoTodayNonce]=useState(0);// ── Container width for responsive day labels + list/ongoing column count ──\n// We watch the always-mounted outer container, not the per-tab inner one,\n// so the column count never goes stale when tabs swap and the inner ref\n// re-points to a different element. listCols is a pure derived value.\nconst containerRef=useRef(null);const[containerWidth,setContainerWidth]=useState(800);useEffect(()=>{const el=containerRef.current;if(!el)return;const ro=new ResizeObserver(entries=>{setContainerWidth(entries[0].contentRect.width);});ro.observe(el);return()=>ro.disconnect();},[]);// Derived 1- / 2-column count for List + Ongoing tabs. Outer container is\n// 80% of page width, then the list region applies 16px of horizontal padding\n// on each side, so the inner list region is ~32px narrower than this value.\n// Threshold of 480 against the outer width therefore lights up 1-column at\n// an inner width around 448 — comfortably biased toward 2 columns on any\n// viewport wider than a phone in portrait.\nconst listCols=containerWidth<480?1:2;// On narrow viewports the search bar + category/audience chip rows eat a lot\n// of vertical space, so they collapse behind a single \"Search & Filters\"\n// toggle button. 600px (against the 80%-width container) captures phones and\n// small tablets in portrait; wider viewports always show the full filter panel.\nconst mobileFilters=containerWidth<600;const dayLabels=containerWidth<420?[\"S\",\"M\",\"T\",\"W\",\"T\",\"F\",\"S\"]:DAY_NAMES;// Trigger slide-in after selectedDay mounts\nuseEffect(()=>{if(selectedDay)requestAnimationFrame(()=>setPanelOpen(true));},[selectedDay]);// Slide out then unmount\nconst closePanel=()=>{setPanelOpen(false);setTimeout(()=>{setSelectedDay(null);setActiveEvent(null);},300);};// ── Fetch events + categories from the Worker proxy ──────────────────────\nuseEffect(()=>{if(!apiBaseUrl){setFetchError(\"Set the API Base URL in the component properties panel.\");return;}setLoading(true);setFetchError(null);Promise.all([fetchJson(`${apiBaseUrl.replace(/\\/+$/,\"\")}/events`),fetchJson(`${apiBaseUrl.replace(/\\/+$/,\"\")}/categories`)]).then(([eventsResp,catsResp])=>{setRecords(Array.isArray(eventsResp?.records)?eventsResp.records:[]);const colors={};for(const rec of catsResp?.records||[]){const f=rec.fields||{};if(f.name&&f[\"Hex Code Color\"]){colors[f.name]=\"#\"+String(f[\"Hex Code Color\"]).trim().replace(/^#/,\"\");}}setCategoryColors(colors);setLoading(false);}).catch(e=>{setFetchError(e.message);setLoading(false);});},[apiBaseUrl]);// ── Unique categories + audiences for chip rows ──────────────────────────\nconst allCategories=Array.from(new Set(scopedRecords.map(r=>r.fields?.category).filter(Boolean))).sort();const allAudiences=Array.from(new Set(scopedRecords.flatMap(r=>{const a=r.fields?.audience;return Array.isArray(a)?a:a?[a]:[];}))).sort();// Auto-select all categories + audiences on first load so the component isn't blank\nconst hasAutoSelectedCats=useRef(false);const hasAutoSelectedAuds=useRef(false);useEffect(()=>{if(hasAutoSelectedCats.current||allCategories.length===0)return;setActiveCategories(new Set(allCategories));hasAutoSelectedCats.current=true;},[allCategories.join(\",\")]);useEffect(()=>{if(hasAutoSelectedAuds.current||allAudiences.length===0)return;setActiveAudiences(new Set(allAudiences));hasAutoSelectedAuds.current=true;},[allAudiences.join(\",\")]);const allCatsSelected=allCategories.length>0&&allCategories.every(c=>activeCategories.has(c));const allAudsSelected=allAudiences.length>0&&allAudiences.every(a=>activeAudiences.has(a));// ── Filtering ────────────────────────────────────────────────────────────\n// Calendar view: scope to the displayed month.\n// List view: today-forward, no month scope.\n// Ongoing view: no month scope (uses its own next-upcoming dedup logic).\n// List + Calendar hide recurring events (those appear only in the Ongoing tab).\nconst todayMidnight=new Date(today.getFullYear(),today.getMonth(),today.getDate());// Shared filter logic — category, audience, search, and (optionally) month scope.\n// Used by both filteredRecords (List + Calendar tabs) and the ongoingPrograms\n// derivation below so all three tabs honor the same chip + search state.\nconst passesFilters=(rec,opts)=>{const f=rec.fields||{};// Category filter\nif(activeCategories.size===0)return false;if(!allCatsSelected&&!activeCategories.has(f.category))return false;// Audience filter — AND across rows, OR within audience selections\nif(showAudienceFilter&&!allAudsSelected){if(activeAudiences.size===0)return false;const recAud=Array.isArray(f.audience)?f.audience:f.audience?[f.audience]:[];if(!recAud.some(a=>activeAudiences.has(a)))return false;}const start=parseDate(f.start_datetime);if(!start)return false;// Calendar tab scopes to the displayed month. List + Ongoing do not.\nif(opts.applyMonthScope){if(start.getFullYear()!==year||start.getMonth()!==month)return false;}// Search\nif(searchQuery.trim()){const q=searchQuery.toLowerCase();const haystack=[f.title,f.description,f.venue_name_cached,f.category,organizerName(f),...visibleTags(f),...Array.isArray(f.audience)?f.audience:f.audience?[f.audience]:[]].filter(Boolean).join(\" \").toLowerCase();if(!haystack.includes(q))return false;}return true;};const filteredRecords=scopedRecords.filter(rec=>{const f=rec.fields||{};// Recurring events live in the Ongoing Programs tab only.\nif(isRecurring(f))return false;return passesFilters(rec,{applyMonthScope:onCalendar});});// ── Ongoing Programs: one card per recurring series, sorted by next upcoming ──\n// The Worker already filters out series PARENT rows, so `records` contains\n// only individual occurrences. Group by recurrence_series[0] and pick the\n// earliest occurrence with start >= now. Series with no future occurrences\n// are intentionally excluded — that matches the literal meaning of \"ongoing\".\nconst ongoingPrograms=(()=>{const now=new Date;const seriesMap=new Map;for(const rec of scopedRecords){const f=rec.fields||{};if(!isRecurring(f))continue;if(!passesFilters(rec,{applyMonthScope:false}))continue;const start=parseDate(f.start_datetime);if(!start||start<now)continue;const seriesIds=Array.isArray(f.recurrence_series)?f.recurrence_series:[];// Fallback key so events flagged recurring but missing a series link\n// still dedupe sensibly on title.\nconst seriesKey=seriesIds[0]||`no-series-${f.title||rec.id}`;const existing=seriesMap.get(seriesKey);if(!existing){seriesMap.set(seriesKey,rec);continue;}const existingStart=parseDate(existing.fields?.start_datetime);if(existingStart&&start<existingStart)seriesMap.set(seriesKey,rec);}return Array.from(seriesMap.values()).sort((a,b)=>{const da=a.fields?.start_datetime||\"\";const db=b.fields?.start_datetime||\"\";return da<db?-1:da>db?1:0;});})();// Group the deduped Ongoing series by their next-upcoming date so the\n// Ongoing tab renders with the same date-header + divider layout as List.\nconst ongoingDateGroups=[];for(const rec of ongoingPrograms){const d=parseDate(rec.fields?.start_datetime);if(!d)continue;const key=toDateKey(d);const existing=ongoingDateGroups.find(g=>g.key===key);if(existing)existing.events.push(rec);else ongoingDateGroups.push({key,date:d,events:[rec]});}const hasActiveFilter=searchQuery.trim().length>0||activeCategories.size>0&&!allCatsSelected||showAudienceFilter&&activeAudiences.size>0&&!allAudsSelected;// Count of active filter dimensions, shown as a badge on the mobile toggle\n// button so users see at a glance that filters are applied while collapsed.\nconst activeFilterCount=(searchQuery.trim().length>0?1:0)+(activeCategories.size>0&&!allCatsSelected?1:0)+(showAudienceFilter&&activeAudiences.size>0&&!allAudsSelected?1:0);// Whether there's any filter UI worth showing/collapsing at all.\nconst hasFilterUI=showSearch||showFilters&&allCategories.length>0||showAudienceFilter&&allAudiences.length>0;// Index filtered events by date key (for calendar grid dots + selected-day list)\nconst eventsByDay={};for(const rec of filteredRecords){const startStr=rec.fields?.start_datetime;if(!startStr)continue;const d=parseDate(startStr);if(!d)continue;const key=toDateKey(d);if(!eventsByDay[key])eventsByDay[key]=[];eventsByDay[key].push(rec);}// For calendar grid layout\nconst totalDays=daysInMonth(year,month);const leadingBlanks=firstWeekday(year,month);const cells=[...Array(leadingBlanks).fill(null),...Array.from({length:totalDays},(_,i)=>i+1)];const selKey=selectedDay?toDateKey(selectedDay):null;const selEvents=selKey?eventsByDay[selKey]||[]:[];// The explicitly-selected event's date. When an event is opened directly\n// (List/Ongoing card, or a day-list row), `activeEvent` drives the panel —\n// independent of `selEvents`, which only holds the day's NON-recurring\n// events. A recurring event (Ongoing tab) is absent from selEvents, so the\n// panel must key off activeEvent, not selEvents, or its detail never shows.\nconst activeEventStart=activeEvent?parseDate(activeEvent.fields?.start_datetime):null;const tokens={font:resolvedBodyFontFamily,headingFont:resolvedFontFamily,headingColor,bodySize:bodyFontSize,bodyWeight:bodyFontWeight,text:bodyTextColor,muted:mutedColor,border:borderColor,bg:bgColor,surface:surfaceColor,primary:primaryColor};const prevMonth=()=>{setSelectedDay(null);setActiveEvent(null);if(month===0){setMonth(11);setYear(y=>y-1);}else setMonth(m=>m-1);};const nextMonth=()=>{setSelectedDay(null);setActiveEvent(null);if(month===11){setMonth(0);setYear(y=>y+1);}else setMonth(m=>m+1);};const goToday=()=>{setYear(today.getFullYear());setMonth(today.getMonth());setSelectedDay(null);setActiveEvent(null);// The month/year setters above only move the Calendar (month-grid) tab. On\n// the List and Ongoing tabs there is no month scope, so those setters have\n// no visible effect and \"Today\" looked dead. Bump a nonce so the\n// scroll-to-today effect re-runs and the active list (List OR Ongoing) jumps\n// back to today / the soonest-upcoming group.\n// (List: reported by Jim on iPhone 2026-07-18. Ongoing: reported by Eric\n// 2026-07-24 — the effect used to early-return on the Ongoing tab.)\nsetGoTodayNonce(n=>n+1);};const navBtnStyle=(active=false)=>({background:active?primaryColor:\"none\",border:`1px solid ${active?primaryColor:borderColor}`,borderRadius:8,padding:\"4px 14px\",cursor:\"pointer\",fontSize:bodyFontSize-1,color:active?\"#fff\":bodyTextColor,fontFamily:resolvedBodyFontFamily,// Constant weight (was active ? 700 : 400): the 400->700 swap on select\n    // changed the label width and reflowed the row — the flicker on tab\n    // switch. Active state now reads from background + text color. (2026-07-05)\n    fontWeight:600,height:28,whiteSpace:\"nowrap\",transition:\"background 0.15s, color 0.15s, border-color 0.15s\"});// ── Build sorted date groups for list view (today-forward) ───────────────\nconst sortedRecords=[...filteredRecords].sort((a,b)=>{const da=a.fields?.start_datetime||\"\";const db=b.fields?.start_datetime||\"\";return da<db?-1:da>db?1:0;});const dateGroups=[];for(const rec of sortedRecords){const d=parseDate(rec.fields?.start_datetime);if(!d)continue;const key=toDateKey(d);const existing=dateGroups.find(g=>g.key===key);if(existing)existing.events.push(rec);else dateGroups.push({key,date:d,events:[rec]});}// ── Auto-scroll the active list to today (List + Ongoing tabs) ───────────\n// Robust to \"today has no events\" — scrolls to the first date group whose\n// date is on or after today. Fires on tab-open, filter change, and every\n// \"Today\" tap (goTodayNonce). Serves BOTH the List tab (today-forward one-offs)\n// AND the Ongoing Programs tab (recurring series grouped by next-upcoming date):\n// both render [data-datekey] anchors inside listContainerRef, so the same logic\n// works for each.\n//\n// Before 2026-07-24 this effect early-returned `if (!onList)`, so on the Ongoing\n// tab tapping \"Today\" did nothing — a dead button. Eric reported (2026-07-24)\n// that Today works on the List and Calendar tabs but not on Ongoing on his\n// iPhone; that is exactly this guard. Confirmed live with\n// e2e/scripts/calendar-today-ongoing-diagnose.mjs (scrolled the Ongoing list to\n// the bottom, tapped Today, container did not move). The old \"Ongoing has a flat\n// list with no date headers\" note was stale — since 2026-05-21 the Ongoing tab\n// renders the same date-grouped layout as List, so it has anchors too.\nconst todayKey=toDateKey(today);const scrollGroups=onOngoing?ongoingDateGroups:dateGroups;const firstGroupKey=scrollGroups[0]?.key||\"\";useEffect(()=>{// List + Ongoing have a scrollable [data-datekey] list to jump; Calendar\n// uses its own month grid (goToday resets its month/year state instead).\nif(!onList&&!onOngoing)return;const container=listContainerRef.current;if(!container)return;// Defer to next frame so DOM headers are in place\nconst timer=setTimeout(()=>{// Find anchor: today's key, else the first group on/after today's\n// midnight, else the very first group (soonest-upcoming = the top,\n// which is the natural \"Today\" target on the Ongoing tab).\nlet anchor=container.querySelector(`[data-datekey=\"${todayKey}\"]`);if(!anchor){for(const g of scrollGroups){if(g.date>=todayMidnight){anchor=container.querySelector(`[data-datekey=\"${g.key}\"]`);if(anchor)break;}}}if(!anchor&&firstGroupKey){anchor=container.querySelector(`[data-datekey=\"${firstGroupKey}\"]`);}if(!anchor)return;// Primary path — scroll the inner overflow:auto container by a computed\n// offset so the anchor sits ~8px below its top. Unchanged: this is what\n// already works on desktop and on the List tab (Eric confirms List is\n// fine on his phone), so we do not regress it.\nconst containerRect=container.getBoundingClientRect();const targetRect=anchor.getBoundingClientRect();const scrollTarget=container.scrollTop+(targetRect.top-containerRect.top)-8;container.scrollTo({top:Math.max(0,scrollTarget),behavior:\"smooth\"});// iOS-robustness fallback (Eric, 2026-07-24) — on some iOS Safari\n// layouts the page itself is the effective scroller, not this inner\n// overflow:auto div, so the computed scrollTop above is ignored and the\n// button reads as dead. scrollIntoView scrolls whichever ancestor is\n// actually scrollable. block:\"nearest\" makes it a no-op when the\n// computed scroll already positioned the anchor, so the working\n// desktop/List case never double-jumps.\nanchor.scrollIntoView({behavior:\"smooth\",block:\"nearest\"});},140);return()=>clearTimeout(timer);// Re-run when either list tab opens, today changes, the first visible group\n// changes, filters change the date set, or the user taps \"Today\" (nonce).\n// eslint-disable-next-line react-hooks/exhaustive-deps\n},[onList,onOngoing,todayKey,firstGroupKey,hasActiveFilter,goTodayNonce]);// ─── Render ──────────────────────────────────────────────────────────────\nreturn /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:{fontFamily:resolvedBodyFontFamily,color:bodyTextColor,backgroundColor:bgColor,borderRadius,width:\"80%\",height:containerHeight,margin:\"0 auto\",boxSizing:\"border-box\",display:\"flex\",flexDirection:\"column\",overflow:\"hidden\",position:\"relative\",border:`1px solid ${borderColor}`,textAlign:\"left\"},children:[showHeading&&/*#__PURE__*/_jsxs(\"div\",{style:{padding:\"22px 20px 18px\",borderBottom:`1px solid ${borderColor}`,width:\"100%\",boxSizing:\"border-box\",flexShrink:0},children:[/*#__PURE__*/_jsx(\"h1\",{style:{margin:0,fontSize:headingFontSize,fontWeight:headingFontWeight,color:headingColor,fontFamily:resolvedFontFamily,lineHeight:1.15,textAlign:headingAlign,width:\"100%\"},children:heading}),(()=>{// Subline under the title. Prefer an explicit `subheading`;\n// otherwise, whenever the scope toggle is shown, fall back\n// to a description of it. Rendering must NOT depend solely on\n// the `showSubheading` prop: a component instance placed\n// before this feature has showSubheading=false / subheading=\"\"\n// saved on it, and a code-side default does not override an\n// instance's stored prop value — so the line never appeared.\n// Tying the fallback to showScopeToggle makes it show. (2026-07-05)\nconst line=subheading||(showScopeToggle?\"Toggle to see Jewish Community, Arts & Culture, or All Events.\":\"\");if(!((showSubheading||showScopeToggle)&&line))return null;return /*#__PURE__*/_jsx(\"p\",{style:{margin:\"5px 0 0\",color:mutedColor,fontSize:14,fontFamily:resolvedBodyFontFamily,textAlign:headingAlign},children:line});})()]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:8,padding:\"12px 16px\",borderBottom:`1px solid ${borderColor}`,boxSizing:\"border-box\",flexShrink:0},children:[showScopeToggle&&/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",justifyContent:\"center\",width:\"100%\"},children:/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",border:`1px solid ${borderColor}`,borderRadius:8,overflow:\"hidden\",maxWidth:\"100%\"},children:[{value:\"community\",full:\"Jewish Community\",short:\"Jewish\"},{value:\"arts-only\",full:\"Arts & Culture\",short:\"Arts\"},{value:\"all\",full:\"All Events\",short:\"All\"}].map((opt,i,arr)=>{const active=activeScope===opt.value;return /*#__PURE__*/_jsx(\"button\",{onClick:()=>setActiveScope(opt.value),style:{background:active?primaryColor:\"transparent\",border:\"none\",borderRight:i<arr.length-1?`1px solid ${borderColor}`:\"none\",padding:\"5px 16px\",cursor:\"pointer\",fontSize:bodyFontSize-1,color:active?\"#fff\":bodyTextColor,fontFamily:resolvedBodyFontFamily,// Constant weight prevents the label\n// width reflow/flicker on tab switch\n// (was active ? 700 : 400). (2026-07-05)\nfontWeight:600,height:30,whiteSpace:\"nowrap\",transition:\"background 0.15s, color 0.15s\"},children:containerWidth<480?opt.short:opt.full},opt.value);})})}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",justifyContent:\"center\",gap:8},children:[/*#__PURE__*/_jsx(\"button\",{onClick:prevMonth,disabled:!onCalendar,style:{background:\"none\",border:`1px solid ${borderColor}`,borderRadius:8,width:30,height:30,cursor:onCalendar?\"pointer\":\"default\",opacity:onCalendar?1:.4,fontSize:16,color:bodyTextColor,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",flexShrink:0},children:\"‹\"}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:15,fontWeight:700,fontFamily:resolvedFontFamily,color:headingColor,whiteSpace:\"nowrap\",userSelect:\"none\",minWidth:120,textAlign:\"center\",opacity:onCalendar?1:.5},children:onCalendar?`${MONTH_NAMES[month]} ${year}`:onOngoing?\"Ongoing programs\":\"All events\"}),/*#__PURE__*/_jsx(\"button\",{onClick:nextMonth,disabled:!onCalendar,style:{background:\"none\",border:`1px solid ${borderColor}`,borderRadius:8,width:30,height:30,cursor:onCalendar?\"pointer\":\"default\",opacity:onCalendar?1:.4,fontSize:16,color:bodyTextColor,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",flexShrink:0},children:\"›\"})]}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:6,alignItems:\"center\",flexWrap:\"wrap\"},children:[/*#__PURE__*/_jsx(\"button\",{onClick:goToday,style:navBtnStyle(),children:\"Today\"}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",border:`1px solid ${borderColor}`,borderRadius:8,overflow:\"hidden\"},children:[/*#__PURE__*/_jsx(\"button\",{onClick:()=>setActiveTab(\"list\"),style:{background:onList?primaryColor:\"transparent\",border:\"none\",borderRight:`1px solid ${borderColor}`,padding:\"4px 14px\",cursor:\"pointer\",fontSize:bodyFontSize-1,color:onList?\"#fff\":bodyTextColor,fontFamily:resolvedBodyFontFamily,fontWeight:600,height:28,whiteSpace:\"nowrap\",transition:\"background 0.15s, color 0.15s\"},children:\"List\"}),/*#__PURE__*/_jsx(\"button\",{onClick:()=>setActiveTab(\"calendar\"),style:{background:onCalendar?primaryColor:\"transparent\",border:\"none\",borderRight:`1px solid ${borderColor}`,padding:\"4px 14px\",cursor:\"pointer\",fontSize:bodyFontSize-1,color:onCalendar?\"#fff\":bodyTextColor,fontFamily:resolvedBodyFontFamily,fontWeight:600,height:28,whiteSpace:\"nowrap\",transition:\"background 0.15s, color 0.15s\"},children:\"Calendar\"}),/*#__PURE__*/_jsx(\"button\",{onClick:()=>setActiveTab(\"ongoing\"),style:{background:onOngoing?primaryColor:\"transparent\",border:\"none\",padding:\"4px 14px\",cursor:\"pointer\",fontSize:bodyFontSize-1,color:onOngoing?\"#fff\":bodyTextColor,fontFamily:resolvedBodyFontFamily,fontWeight:600,height:28,whiteSpace:\"nowrap\",transition:\"background 0.15s, color 0.15s\"},children:containerWidth<480?\"Ongoing\":\"Ongoing Programs\"})]})]})]}),mobileFilters&&hasFilterUI&&/*#__PURE__*/_jsx(\"div\",{style:{padding:\"10px 16px\",borderBottom:filtersExpanded?\"none\":`1px solid ${borderColor}`,flexShrink:0},children:/*#__PURE__*/_jsxs(\"button\",{onClick:()=>setFiltersExpanded(o=>!o),\"aria-expanded\":filtersExpanded,style:{width:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",gap:8,backgroundColor:surfaceColor,border:`1px solid ${activeFilterCount>0||filtersExpanded?primaryColor:borderColor}`,borderRadius:8,padding:\"9px 14px\",cursor:\"pointer\",fontFamily:resolvedBodyFontFamily,fontSize:bodyFontSize-1,fontWeight:700,color:bodyTextColor,transition:\"border-color 0.15s\"},children:[/*#__PURE__*/_jsxs(\"span\",{style:{display:\"flex\",alignItems:\"center\",gap:8,minWidth:0},children:[/*#__PURE__*/_jsx(\"svg\",{width:\"13\",height:\"13\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2.5\",strokeLinecap:\"round\",strokeLinejoin:\"round\",style:{flexShrink:0,color:mutedColor},children:/*#__PURE__*/_jsx(\"polygon\",{points:\"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\"})}),/*#__PURE__*/_jsx(\"span\",{children:\"Search & Filters\"}),activeFilterCount>0&&/*#__PURE__*/_jsx(\"span\",{style:{fontSize:chipFontSize-1,fontWeight:700,minWidth:18,height:18,padding:\"0 5px\",borderRadius:999,backgroundColor:primaryColor,color:\"#fff\",display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",lineHeight:1,flexShrink:0},children:activeFilterCount})]}),/*#__PURE__*/_jsx(\"span\",{style:{fontSize:11,color:mutedColor,lineHeight:1,flexShrink:0,transition:\"transform 0.15s\",transform:filtersExpanded?\"rotate(180deg)\":\"none\"},children:\"▼\"})]})}),(!mobileFilters||filtersExpanded)&&/*#__PURE__*/_jsxs(_Fragment,{children:[showSearch&&/*#__PURE__*/_jsx(\"div\",{style:{padding:\"10px 16px\",borderBottom:allCategories.length>0&&showFilters||allAudiences.length>0&&showAudienceFilter?\"none\":`1px solid ${borderColor}`,flexShrink:0},children:/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:8,backgroundColor:surfaceColor,borderRadius:8,padding:\"7px 12px\",border:`1px solid ${searchQuery?primaryColor:borderColor}`,transition:\"border-color 0.15s\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{color:mutedColor,fontSize:15,lineHeight:1,flexShrink:0},children:\"⌕\"}),/*#__PURE__*/_jsx(\"input\",{value:searchQuery,onChange:e=>setSearchQuery(e.target.value),placeholder:\"Search events…\",style:{border:\"none\",background:\"none\",flex:1,fontSize:bodyFontSize-1,color:bodyTextColor,fontFamily:resolvedBodyFontFamily,outline:\"none\",minWidth:0}}),searchQuery&&/*#__PURE__*/_jsx(\"button\",{onClick:()=>setSearchQuery(\"\"),style:{background:\"none\",border:\"none\",cursor:\"pointer\",color:mutedColor,fontSize:16,lineHeight:1,padding:0,flexShrink:0},children:\"\\xd7\"})]})}),showFilters&&allCategories.length>0&&/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexWrap:\"wrap\",justifyContent:\"center\",gap:6,padding:\"8px 16px 8px\",borderBottom:showAudienceFilter&&allAudiences.length>0?\"none\":`1px solid ${borderColor}`,flexShrink:0},children:[/*#__PURE__*/_jsx(\"button\",{onClick:()=>setActiveCategories(allCatsSelected?new Set:new Set(allCategories)),style:{padding:\"4px 14px\",borderRadius:999,border:`1.5px solid ${allCatsSelected?primaryColor:chipBorderColor}`,backgroundColor:allCatsSelected?primaryColor+\"18\":\"transparent\",color:allCatsSelected?primaryColor:chipTextColor,fontSize:chipFontSize,fontWeight:700,cursor:\"pointer\",whiteSpace:\"nowrap\",fontFamily:resolvedChipFont,flexShrink:0,transition:\"color 0.15s, border-color 0.15s, background-color 0.15s\"},children:\"All categories\"}),allCategories.map(cat=>{const active=activeCategories.has(cat);const color=catColor(cat,primaryColor,categoryColors);return /*#__PURE__*/_jsx(\"button\",{onClick:()=>{const next=new Set(activeCategories);if(active)next.delete(cat);else next.add(cat);setActiveCategories(next);},style:{padding:\"4px 12px\",borderRadius:999,border:`1.5px solid ${active?color:chipBorderColor}`,backgroundColor:active?color+\"22\":\"transparent\",color:active?color:chipTextColor,fontSize:chipFontSize,fontWeight:700,cursor:\"pointer\",whiteSpace:\"nowrap\",fontFamily:resolvedChipFont,flexShrink:0,transition:\"color 0.15s, border-color 0.15s, background-color 0.15s\"},children:cat},cat);})]}),showAudienceFilter&&allAudiences.length>0&&/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexWrap:\"wrap\",justifyContent:\"center\",gap:6,padding:\"4px 16px 10px\",borderBottom:`1px solid ${borderColor}`,flexShrink:0},children:[/*#__PURE__*/_jsx(\"button\",{onClick:()=>setActiveAudiences(allAudsSelected?new Set:new Set(allAudiences)),style:{padding:\"3px 12px\",borderRadius:999,border:`1.5px solid ${allAudsSelected?audienceActiveText:audienceInactiveText}`,backgroundColor:allAudsSelected?audienceActiveBg:audienceInactiveBg,color:allAudsSelected?audienceActiveText:audienceInactiveText,fontSize:chipFontSize-1,fontWeight:700,cursor:\"pointer\",whiteSpace:\"nowrap\",fontFamily:resolvedChipFont,flexShrink:0,transition:\"color 0.15s, border-color 0.15s, background-color 0.15s\"},children:\"All audiences\"}),allAudiences.map(aud=>{const active=activeAudiences.has(aud);return /*#__PURE__*/_jsx(\"button\",{onClick:()=>{const next=new Set(activeAudiences);if(active)next.delete(aud);else next.add(aud);setActiveAudiences(next);},style:{padding:\"3px 10px\",borderRadius:999,border:`1.5px solid ${active?audienceActiveText:audienceInactiveText}`,backgroundColor:active?audienceActiveBg:audienceInactiveBg,color:active?audienceActiveText:audienceInactiveText,fontSize:chipFontSize-1,fontWeight:700,cursor:\"pointer\",whiteSpace:\"nowrap\",fontFamily:resolvedChipFont,flexShrink:0,transition:\"color 0.15s, border-color 0.15s, background-color 0.15s\"},children:aud},aud);})]})]}),hasActiveFilter&&/*#__PURE__*/_jsxs(\"div\",{style:{padding:\"4px 16px 6px\",display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",gap:8,flexShrink:0},children:[/*#__PURE__*/_jsxs(\"span\",{style:{fontSize:bodyFontSize-3,color:mutedColor,fontFamily:resolvedBodyFontFamily},children:[filteredRecords.length,\" of \",scopedRecords.length,\" \",\"events\"]}),/*#__PURE__*/_jsx(\"button\",{onClick:()=>{setSearchQuery(\"\");setActiveCategories(new Set(allCategories));setActiveAudiences(new Set(allAudiences));},style:{background:\"none\",border:\"none\",cursor:\"pointer\",fontSize:bodyFontSize-3,color:primaryColor,fontFamily:resolvedBodyFontFamily,fontWeight:600,padding:0},children:\"Clear filters\"})]}),onList&&/*#__PURE__*/_jsx(\"div\",{ref:listContainerRef,style:{flex:1,minHeight:0,overflowY:\"auto\",overflowX:\"hidden\",padding:\"12px 16px 24px\"},children:dateGroups.length===0?// When a filter excludes everything, tell the user why.\n// With no filter active we render nothing rather than a\n// \"No events found.\" placeholder (cleaner empty calendar).\nhasActiveFilter?/*#__PURE__*/_jsx(\"p\",{style:{color:mutedColor,textAlign:\"center\",fontSize:bodyFontSize,fontFamily:resolvedBodyFontFamily,padding:\"32px 0\",margin:0},children:\"No events match your filters.\"}):null:dateGroups.map(({key,date,events},groupIdx)=>/*#__PURE__*/_jsxs(\"div\",{\"data-datekey\":key,style:{marginBottom:groupIdx<dateGroups.length-1?20:0},children:[/*#__PURE__*/_jsxs(\"div\",{style:{fontSize:bodyFontSize+1,fontWeight:700,color:sameDay(date,today)?primaryColor:headingColor,fontFamily:resolvedFontFamily,paddingBottom:6},children:[fmtDateLong(date),sameDay(date,today)&&/*#__PURE__*/_jsx(\"span\",{style:{fontSize:10,fontWeight:700,marginLeft:8,padding:\"2px 8px\",borderRadius:999,backgroundColor:primaryColor+\"20\",color:primaryColor,letterSpacing:\"0.06em\",textTransform:\"uppercase\",verticalAlign:\"middle\"},children:\"Today\"})]}),/*#__PURE__*/_jsx(\"div\",{style:{height:1,backgroundColor:borderColor,marginBottom:10}}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"grid\",gridTemplateColumns:`repeat(${listCols}, 1fr)`,gap:8,alignItems:\"start\"},children:events.map(ev=>{const evDate=parseDate(ev.fields?.start_datetime);return /*#__PURE__*/_jsx(EventCard,{event:ev,tokens:tokens,primaryColor:primaryColor,radius:cellBorderRadius,categoryColors:categoryColors,inList:true,showDescription:showDescription,showImage:showImage,narrow:containerWidth<480,onClick:()=>{if(evDate){setSelectedDay(evDate);setActiveEvent(ev);}}},ev.id);})})]},key))}),onOngoing&&/*#__PURE__*/_jsx(\"div\",{ref:listContainerRef,style:{flex:1,minHeight:0,overflowY:\"auto\",overflowX:\"hidden\",padding:\"12px 16px 24px\"},children:ongoingDateGroups.length===0?/*#__PURE__*/_jsx(\"p\",{style:{color:mutedColor,textAlign:\"center\",fontSize:bodyFontSize,fontFamily:resolvedBodyFontFamily,padding:\"32px 0\",margin:0},children:hasActiveFilter?\"No ongoing programs match your filters.\":\"No ongoing programs found.\"}):ongoingDateGroups.map(({key,date,events},groupIdx)=>/*#__PURE__*/_jsxs(\"div\",{\"data-datekey\":key,style:{marginBottom:groupIdx<ongoingDateGroups.length-1?20:0},children:[/*#__PURE__*/_jsxs(\"div\",{style:{fontSize:bodyFontSize+1,fontWeight:700,color:sameDay(date,today)?primaryColor:headingColor,fontFamily:resolvedFontFamily,paddingBottom:6},children:[fmtDateLong(date),sameDay(date,today)&&/*#__PURE__*/_jsx(\"span\",{style:{fontSize:10,fontWeight:700,marginLeft:8,padding:\"2px 8px\",borderRadius:999,backgroundColor:primaryColor+\"20\",color:primaryColor,letterSpacing:\"0.06em\",textTransform:\"uppercase\",verticalAlign:\"middle\"},children:\"Today\"})]}),/*#__PURE__*/_jsx(\"div\",{style:{height:1,backgroundColor:borderColor,marginBottom:10}}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"grid\",gridTemplateColumns:`repeat(${listCols}, 1fr)`,gap:8,alignItems:\"start\"},children:events.map(ev=>{const evDate=parseDate(ev.fields?.start_datetime);return /*#__PURE__*/_jsx(EventCard,{event:ev,tokens:tokens,primaryColor:primaryColor,radius:cellBorderRadius,categoryColors:categoryColors,inList:true,showDescription:showDescription,showImage:showImage,narrow:containerWidth<480,onClick:()=>{if(evDate){setSelectedDay(evDate);setActiveEvent(ev);}}},ev.id);})})]},key))}),onCalendar&&/*#__PURE__*/_jsx(\"div\",{style:{display:\"grid\",gridTemplateColumns:\"repeat(7, 1fr)\",padding:\"10px 16px 4px\",gap:4,flexShrink:0},children:dayLabels.map((d,i)=>/*#__PURE__*/_jsx(\"div\",{style:{textAlign:\"center\",fontSize:11,fontWeight:700,color:mutedColor,fontFamily:resolvedBodyFontFamily,textTransform:\"uppercase\",letterSpacing:\"0.06em\",padding:\"2px 0\"},children:d},i))}),onCalendar&&/*#__PURE__*/_jsx(\"div\",{style:{display:\"grid\",gridTemplateColumns:\"repeat(7, 1fr)\",gap:4,padding:\"2px 12px 16px\",flex:1,minHeight:0,overflowY:\"auto\"},children:cells.map((day,i)=>{if(!day)return /*#__PURE__*/_jsx(\"div\",{},`blank-${i}`);const cellDate=new Date(year,month,day);const key=toDateKey(cellDate);const dayEvents=eventsByDay[key]||[];const isToday=sameDay(cellDate,today);const isSelected=selectedDay!=null&&sameDay(cellDate,selectedDay);const hasEvents=dayEvents.length>0;return /*#__PURE__*/_jsxs(\"div\",{onClick:()=>{setSelectedDay(cellDate);setActiveEvent(null);},style:{borderRadius:cellBorderRadius,padding:\"6px 4px 8px\",minHeight:58,cursor:hasEvents?\"pointer\":\"default\",backgroundColor:isSelected?selectedDayBg:\"transparent\",border:isToday?`2px solid ${todayRingColor}`:\"2px solid transparent\",display:\"flex\",flexDirection:\"column\",alignItems:\"center\",gap:5,transition:\"background 0.12s\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{fontSize:13,fontWeight:isToday?800:400,color:isToday?primaryColor:bodyTextColor,width:26,height:26,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",borderRadius:\"50%\",fontFamily:resolvedBodyFontFamily,flexShrink:0},children:day}),hasEvents&&/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",gap:2,flexWrap:\"wrap\",justifyContent:\"center\",maxWidth:36},children:[dayEvents.slice(0,3).map((ev,idx)=>/*#__PURE__*/_jsx(\"span\",{style:{width:6,height:6,borderRadius:\"50%\",backgroundColor:catColor(ev.fields?.category,eventDotColor,categoryColors),display:\"inline-block\",flexShrink:0}},idx)),dayEvents.length>3&&/*#__PURE__*/_jsxs(\"span\",{style:{fontSize:9,color:mutedColor,lineHeight:\"6px\",fontFamily:resolvedBodyFontFamily},children:[\"+\",dayEvents.length-3]})]})]},key);})}),loading&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",inset:0,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",backgroundColor:bgColor+\"cc\",fontSize:bodyFontSize,color:mutedColor,fontFamily:resolvedBodyFontFamily,borderRadius},children:\"Loading events…\"}),!loading&&fetchError&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",bottom:16,left:16,right:16,backgroundColor:\"#FEF2F2\",border:\"1px solid #FECACA\",borderRadius:8,padding:\"10px 14px\",fontSize:12,color:\"#B91C1C\",fontFamily:resolvedBodyFontFamily,zIndex:5},children:fetchError}),selectedDay&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"div\",{onClick:closePanel,style:{position:\"absolute\",inset:0,backgroundColor:overlayColor,zIndex:20,borderRadius,opacity:panelOpen?1:0,transition:\"opacity 0.3s ease\"}}),/*#__PURE__*/_jsxs(\"div\",{onClick:e=>e.stopPropagation(),style:{position:\"absolute\",top:0,right:0,height:\"100%\",width:`min(${sidebarWidth}px, 100%)`,backgroundColor:modalBgColor,display:\"flex\",flexDirection:\"column\",zIndex:21,transform:panelOpen?\"translateX(0)\":\"translateX(100%)\",transition:\"transform 0.3s cubic-bezier(0.32, 0.72, 0, 1)\",boxShadow:\"-8px 0 32px rgba(0,0,0,0.18)\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{padding:\"14px 16px 12px\",borderBottom:`1px solid ${borderColor}`,display:\"flex\",justifyContent:\"space-between\",alignItems:\"center\",flexShrink:0},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:bodyFontSize-2,color:mutedColor,fontFamily:resolvedBodyFontFamily},children:activeEvent?activeEventStart?fmtDateLong(activeEventStart):\"Event details\":selEvents.length===0?\"No events\":`${selEvents.length} event${selEvents.length!==1?\"s\":\"\"}`}),/*#__PURE__*/_jsx(\"button\",{onClick:closePanel,style:{background:\"none\",border:\"none\",cursor:\"pointer\",fontSize:22,color:mutedColor,padding:\"2px 6px\",borderRadius:6,lineHeight:1,flexShrink:0},children:\"\\xd7\"})]}),/*#__PURE__*/_jsx(\"div\",{style:{overflowY:\"auto\",padding:\"16px 16px 24px\",flex:1,minHeight:0},children:!activeEvent&&selEvents.length===0?/*#__PURE__*/_jsx(\"p\",{style:{color:mutedColor,textAlign:\"center\",fontSize:bodyFontSize,fontFamily:resolvedBodyFontFamily,padding:\"32px 0\",margin:0},children:hasActiveFilter?\"No matching events for this day.\":\"No events scheduled for this day.\"}):activeEvent?/*#__PURE__*/_jsx(EventDetail,{event:activeEvent,tokens:tokens,primaryColor:primaryColor,linkColor:linkColor,allEvents:scopedRecords,onSelectEvent:ev=>{const d=parseDate(ev.fields?.start_datetime);if(d)setSelectedDay(d);setActiveEvent(ev);},showDescription:showDescription,showTags:showTags,showVenue:showVenue,showCost:showCost,showAudience:showAudience,showImage:showImage,showOrganizer:showOrganizer,showRegistration:showRegistration,showSubmitter:showSubmitter,showFlyer:showFlyer,radius:cellBorderRadius,categoryColors:categoryColors,onBack:()=>setActiveEvent(null)}):/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:bodyFontSize+4,fontWeight:700,color:headingColor,fontFamily:resolvedFontFamily,lineHeight:1.2,marginBottom:10},children:fmtDateLong(selectedDay)}),/*#__PURE__*/_jsx(\"div\",{style:{height:1,backgroundColor:borderColor,marginBottom:14}}),selEvents.map((ev,idx)=>/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(EventCard,{event:ev,tokens:tokens,primaryColor:primaryColor,radius:cellBorderRadius,categoryColors:categoryColors,showImage:showImage,narrow:containerWidth<480,onClick:()=>setActiveEvent(ev)}),idx<selEvents.length-1&&/*#__PURE__*/_jsx(\"div\",{style:{height:1,backgroundColor:borderColor,margin:\"10px 0\"}})]},ev.id))]})})]})]})]});}// ─── Framer Prop Controls ─────────────────────────────────────────────────────\naddPropertyControls(CommunityCalendar,{apiBaseUrl:{type:ControlType.String,title:\"API URL\",defaultValue:API_DEFAULT_URL,placeholder:\"https://jw-events-api.eric-belozovsky.workers.dev\",description:\"Base URL of the jw-events-api Cloudflare Worker. The Worker holds the Airtable PAT; the browser never sees it. Default is the production deployment.\"},calendarScope:{type:ControlType.Enum,title:\"Calendar Scope\",options:[\"all\",\"community\",\"arts-only\"],optionTitles:[\"All events\",\"Community (no Arts)\",\"Arts & Culture only\"],defaultValue:\"all\",description:'The STARTING scope for this page. With the on-page toggle on (below), the viewer can still switch it live. Use one component on two pages: Community page to \"Community (no Arts)\", Arts page to \"Arts & Culture only\". \"All events\" is the original behavior.'},showScopeToggle:{type:ControlType.Boolean,title:\"Scope Toggle\",defaultValue:true,enabledTitle:\"Show\",disabledTitle:\"Hide\",description:\"Show the on-page All / Community / Arts toggle so viewers can switch scope in the calendar itself. Turn off to lock this page to its Calendar Scope above.\"},// Heading\nshowHeading:{type:ControlType.Boolean,title:\"Show Heading\",defaultValue:true},heading:{type:ControlType.String,title:\"Heading\",defaultValue:\"Community Calendar\",hidden:props=>!props.showHeading},headingAlign:{type:ControlType.Enum,title:\"Heading Align\",options:[\"left\",\"center\",\"right\"],optionTitles:[\"Left\",\"Center\",\"Right\"],defaultValue:\"center\",displaySegmentedControl:true,hidden:props=>!props.showHeading},showSubheading:{type:ControlType.Boolean,title:\"Subheading\",defaultValue:true,hidden:props=>!props.showHeading},subheading:{type:ControlType.String,title:\"Subheading Text\",defaultValue:\"Toggle to see Jewish Community, Arts & Culture, or All Events.\",hidden:props=>!props.showHeading||!props.showSubheading},// Layout\ncontainerHeight:{type:ControlType.Number,title:\"Container Height\",defaultValue:720,min:320,max:1600,step:10,displayStepper:true,unit:\"px\",description:\"Fixed height of the calendar. Both List and Calendar views scroll internally to fit.\"},sidebarWidth:{type:ControlType.Number,title:\"Sidebar Width\",defaultValue:320,min:200,max:600,step:4,displayStepper:true,unit:\"px\",description:\"Max width of the event sidebar. Caps at 100% on small screens.\"},// Typography\nfontFamily:{type:ControlType.Font,title:\"Heading Font\",controls:\"basic\",defaultValue:{fontFamily:\"Inter\"}},headingFontSize:{type:ControlType.Number,title:\"Heading Size\",defaultValue:28,min:10,max:72,step:1,displayStepper:true,unit:\"px\",hidden:props=>!props.showHeading},headingFontWeight:{type:ControlType.Enum,title:\"Heading Weight\",options:[\"400\",\"500\",\"600\",\"700\",\"800\",\"900\"],optionTitles:[\"Regular\",\"Medium\",\"SemiBold\",\"Bold\",\"ExtraBold\",\"Black\"],defaultValue:\"700\",hidden:props=>!props.showHeading},headingColor:{type:ControlType.Color,title:\"Heading Color\",defaultValue:\"#111827\"},bodyFontFamily:{type:ControlType.Font,title:\"Body Font\",controls:\"basic\",defaultValue:{fontFamily:\"Inter\"}},bodyFontSize:{type:ControlType.Number,title:\"Body Size\",defaultValue:14,min:10,max:24,step:1,displayStepper:true,unit:\"px\"},bodyFontWeight:{type:ControlType.Enum,title:\"Body Weight\",options:[\"400\",\"500\",\"600\",\"700\"],optionTitles:[\"Regular\",\"Medium\",\"SemiBold\",\"Bold\"],defaultValue:\"400\"},bodyTextColor:{type:ControlType.Color,title:\"Body Text Color\",defaultValue:\"#111827\"},// Colors\nprimaryColor:{type:ControlType.Color,title:\"Primary\",defaultValue:\"#4F46E5\"},bgColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#FFFFFF\"},surfaceColor:{type:ControlType.Color,title:\"Surface\",defaultValue:\"#F9FAFB\"},mutedColor:{type:ControlType.Color,title:\"Muted Text\",defaultValue:\"#6B7280\"},borderColor:{type:ControlType.Color,title:\"Border\",defaultValue:\"#E5E7EB\"},todayRingColor:{type:ControlType.Color,title:\"Today Ring\",defaultValue:\"#4F46E5\"},eventDotColor:{type:ControlType.Color,title:\"Event Dot\",defaultValue:\"#4F46E5\"},selectedDayBg:{type:ControlType.Color,title:\"Selected Day\",defaultValue:\"#EEF2FF\"},modalBgColor:{type:ControlType.Color,title:\"Modal BG\",defaultValue:\"#FFFFFF\"},overlayColor:{type:ControlType.Color,title:\"Overlay\",defaultValue:\"rgba(0,0,0,0.55)\"},// Shape\nborderRadius:{type:ControlType.Number,title:\"Corner Radius\",defaultValue:16,min:0,max:48,step:1,displayStepper:true,unit:\"px\"},cellBorderRadius:{type:ControlType.Number,title:\"Cell Radius\",defaultValue:8,min:0,max:24,step:1,displayStepper:true,unit:\"px\"},// Search & Filter\nshowSearch:{type:ControlType.Boolean,title:\"Search Bar\",defaultValue:true},showFilters:{type:ControlType.Boolean,title:\"Category Filter\",defaultValue:true},showAudienceFilter:{type:ControlType.Boolean,title:\"Audience Filter\",defaultValue:true},// Filter Chip Style\nchipFont:{type:ControlType.Font,title:\"Chip Font\",controls:\"basic\",defaultValue:{fontFamily:\"Inter\"},hidden:props=>!props.showFilters&&!props.showAudienceFilter},chipFontSize:{type:ControlType.Number,title:\"Chip Size\",defaultValue:11,min:8,max:18,step:1,displayStepper:true,unit:\"px\",hidden:props=>!props.showFilters&&!props.showAudienceFilter},chipBorderColor:{type:ControlType.Color,title:\"Chip Border\",defaultValue:\"#E5E7EB\",hidden:props=>!props.showFilters&&!props.showAudienceFilter},chipTextColor:{type:ControlType.Color,title:\"Chip Text\",defaultValue:\"#6B7280\",hidden:props=>!props.showFilters&&!props.showAudienceFilter},// Audience chip colors (TRUE = filter ON, FALSE = filter OFF)\naudienceActiveBg:{type:ControlType.Color,title:\"Audience On BG\",defaultValue:\"#EEF2FF\",description:\"Background when the audience filter chip is ON (TRUE).\",hidden:props=>!props.showAudienceFilter},audienceActiveText:{type:ControlType.Color,title:\"Audience On Text\",defaultValue:\"#4F46E5\",description:\"Text + border color when the audience filter chip is ON (TRUE).\",hidden:props=>!props.showAudienceFilter},audienceInactiveBg:{type:ControlType.Color,title:\"Audience Off BG\",defaultValue:\"#FFFFFF\",description:\"Background when the audience filter chip is OFF (FALSE).\",hidden:props=>!props.showAudienceFilter},audienceInactiveText:{type:ControlType.Color,title:\"Audience Off Text\",defaultValue:\"#6B7280\",description:\"Text + border color when the audience filter chip is OFF (FALSE).\",hidden:props=>!props.showAudienceFilter},// Link color (applies to every clickable text in the event detail panel)\nlinkColor:{type:ControlType.Color,title:\"Link Color\",defaultValue:\"#2563EB\",description:\"Color of clickable links in the expanded event sidebar — website, RSVP URL, email (mailto:), phone (tel:). Defaults to a clear blue.\"},// Event detail fields\nshowDescription:{type:ControlType.Boolean,title:\"Description\",defaultValue:true},showImage:{type:ControlType.Boolean,title:\"Image\",defaultValue:true},showOrganizer:{type:ControlType.Boolean,title:\"Organizer\",defaultValue:true},showVenue:{type:ControlType.Boolean,title:\"Venue\",defaultValue:true},showAudience:{type:ControlType.Boolean,title:\"Audience\",defaultValue:true},showCost:{type:ControlType.Boolean,title:\"Cost\",defaultValue:true},showFlyer:{type:ControlType.Boolean,title:\"Flyer Link\",defaultValue:true},showRegistration:{type:ControlType.Boolean,title:\"Registration\",defaultValue:true},showSubmitter:{type:ControlType.Boolean,title:\"Posted-by Contact\",defaultValue:true},showTags:{type:ControlType.Boolean,title:\"Tags\",defaultValue:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CommunityCalendar\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CommunityCalendar.map"],"mappings":"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"}