From 9d0a8233514bf5bfb5a3d39543f4b538ea195877 Mon Sep 17 00:00:00 2001 From: Loyyd Date: Thu, 11 Jun 2026 09:54:39 +0200 Subject: [PATCH] checks --- README.md | 24 +- docs/SITE-STRUCTURE.md | 25 +- package.json | 3 +- scripts/audit-static-links.mjs | 202 ++++++++++++ src/components/SiteLayout.astro | 69 +++++ src/components/TwoColumnPage.astro | 20 ++ src/content/pages/about.html | 22 ++ src/content/pages/contact.html | 13 + src/content/pages/events.html | 465 ++++++++++++++++++++++++++++ src/content/pages/index.html | 100 ++++++ src/content/pages/services.html | 22 ++ src/content/pages/the-founders.html | 13 + src/content/pages/videos.html | 48 +++ src/lib/static-pages.ts | 13 + src/pages/[...route].ts | 4 +- src/pages/about.astro | 13 + src/pages/contact.astro | 14 + src/pages/events.astro | 49 +++ src/pages/index.astro | 18 ++ src/pages/index.html.ts | 12 - src/pages/services.astro | 13 + src/pages/the-founders.astro | 14 + src/pages/videos.astro | 13 + 23 files changed, 1158 insertions(+), 31 deletions(-) create mode 100644 scripts/audit-static-links.mjs create mode 100644 src/components/SiteLayout.astro create mode 100644 src/components/TwoColumnPage.astro create mode 100644 src/content/pages/about.html create mode 100644 src/content/pages/contact.html create mode 100644 src/content/pages/events.html create mode 100644 src/content/pages/index.html create mode 100644 src/content/pages/services.html create mode 100644 src/content/pages/the-founders.html create mode 100644 src/content/pages/videos.html create mode 100644 src/pages/about.astro create mode 100644 src/pages/contact.astro create mode 100644 src/pages/events.astro create mode 100644 src/pages/index.astro delete mode 100644 src/pages/index.html.ts create mode 100644 src/pages/services.astro create mode 100644 src/pages/the-founders.astro create mode 100644 src/pages/videos.astro diff --git a/README.md b/README.md index dd564ce5..6d5e69fe 100644 --- a/README.md +++ b/README.md @@ -4,14 +4,16 @@ Local static website files built with Astro. ## Project Structure -- `website/` - top-level static pages +- `website/` - exported HTML source pages and archive pages - `content/` - extracted Markdown content archive for speeches and blog posts -- `src/pages/` - Astro endpoints that generate static HTML from `website/` -- `src/components/` - Astro components for the shared layout migration path +- `src/content/pages/` - preserved HTML body fragments for migrated public pages +- `src/pages/` - Astro routes for migrated public pages plus the static archive catch-all +- `src/components/` - Astro components for shared page layout - `dist/` - generated static output from `npm run build` -- `website/index.html` - homepage -- `website/about.html` - about page -- `website/contact.html` - contact page with the form +- `src/pages/index.astro` - homepage route generated from migrated content +- `src/pages/about.astro` - about page route generated from migrated content +- `src/pages/contact.astro` - contact page route generated from migrated content +- `website/index.html`, `website/about.html`, `website/contact.html` - original exported source for migrated public pages - `website/blog/YYYY/MM/DD/` - dated blog post pages - `website/blog/categories/` - blog category archive pages - `website/blog/tags/` - blog tag archive pages @@ -43,12 +45,22 @@ Check that the generated site builds successfully: npm run check ``` +Run the static link and media audit against the generated `dist/` output: + +```bash +npm run audit:links +``` + Regenerate Markdown content from the exported post HTML: ```bash npm run extract:content ``` +The important public pages are now Astro routes that reuse shared layout +components. The large blog and speech archive is still served from the exported +HTML through `src/pages/[...route].ts`. + The repeated exported inline styles have been moved into `css/theme.css` and `css/site.css`. Tiny one-page WordPress block-support styles may still remain inline when they only apply to a single page. diff --git a/docs/SITE-STRUCTURE.md b/docs/SITE-STRUCTURE.md index 72731a46..4fca9bd8 100644 --- a/docs/SITE-STRUCTURE.md +++ b/docs/SITE-STRUCTURE.md @@ -20,10 +20,12 @@ is kept in `website/`, while Astro emits the served site into `dist/`. - `content/speeches/mrs-hak-ja-han-moon/*.md` - extracted Mrs. Hak Ja Han Moon speeches - `content/blog//*.md` - extracted non-speech blog content by publish year - `content/README.md` - content archive notes -- `src/pages/index.html.ts` - Astro endpoint for the home page -- `src/pages/[...route].ts` - Astro endpoint for all other existing HTML pages -- `src/lib/static-pages.ts` - maps `website/` files to Astro static routes -- `src/components/` - Astro shared layout components for ongoing migration +- `src/content/pages/*.html` - preserved body fragments for migrated public pages +- `src/pages/index.astro` - Astro home page route +- `src/pages/about.astro`, `src/pages/contact.astro`, `src/pages/events.astro`, `src/pages/services.astro`, `src/pages/videos.astro`, `src/pages/the-founders.astro` - migrated public page routes +- `src/pages/[...route].ts` - Astro endpoint for the remaining exported HTML archive pages +- `src/lib/static-pages.ts` - maps `website/` files to Astro static routes and excludes migrated pages from the catch-all +- `src/components/` - Astro shared layout components - `dist/` - generated site output, ignored by git - `css/` - site-level stylesheets - `css/theme.css` - extracted Parabola inline theme settings @@ -41,13 +43,16 @@ is kept in `website/`, while Astro emits the served site into `dist/`. ## Shared Layout -The current source pages remain static HTML, but common navigation, sidebar, and -footer markup is generated from `scripts/components.mjs`. Run -`npm run render:layout` after editing those components. +The important public pages now render through Astro components: +`src/components/SiteLayout.astro` owns the document shell, header, navigation, +and footer, while `src/components/TwoColumnPage.astro` wraps standard +content/sidebar pages. Their preserved page bodies live in +`src/content/pages/`. -Astro components in `src/components/` are available for the next migration step: -converting individual pages from exported HTML into `.astro` or Markdown content -while reusing the same layout structure. +The large blog and speech archive remains static exported HTML served through +`src/pages/[...route].ts`. Common navigation, sidebar, and footer markup for +those exported files is still generated from `scripts/components.mjs`; run +`npm run render:layout` after editing those legacy components. ## Content Archive diff --git a/package.json b/package.json index 5e69bab1..93f603c6 100644 --- a/package.json +++ b/package.json @@ -8,9 +8,10 @@ "prepare:source": "npm run organize && npm run clean:wp && npm run render:layout", "dev": "npm run prepare:source && astro dev --host 0.0.0.0", "build": "npm run prepare:source && astro build && node scripts/copy-static-assets.mjs", + "audit:links": "node scripts/audit-static-links.mjs", "preview": "astro preview --host 0.0.0.0", "start": "npm run preview", - "check": "npm run build" + "check": "npm run build && npm run audit:links" }, "devDependencies": { "astro": "^6.4.6" diff --git a/scripts/audit-static-links.mjs b/scripts/audit-static-links.mjs new file mode 100644 index 00000000..098e4fc6 --- /dev/null +++ b/scripts/audit-static-links.mjs @@ -0,0 +1,202 @@ +import fs from "node:fs"; +import path from "node:path"; + +const repoRoot = process.cwd(); +const distRoot = path.join(repoRoot, "dist"); +const htmlAttributes = ["href", "src", "poster", "action"]; +const assetExtensions = new Set([ + ".avif", + ".css", + ".gif", + ".ico", + ".jpeg", + ".jpg", + ".js", + ".pdf", + ".png", + ".svg", + ".webp", + ".woff", + ".woff2", + ".ttf", + ".eot", +]); +const ignoredProtocols = /^[a-z][a-z0-9+.-]*:/i; +const htmlAttributePattern = new RegExp( + `\\b(${htmlAttributes.join("|")})\\s*=\\s*(["'])(.*?)\\2`, + "gis", +); +const srcsetPattern = /\bsrcset\s*=\s*(["'])(.*?)\1/gis; +const cssUrlPattern = /url\(\s*(?:"([^"]*)"|'([^']*)'|([^'")]*))\s*\)/gi; + +if (!fs.existsSync(distRoot)) { + console.error("dist/ does not exist. Run `npm run build` before auditing."); + process.exit(1); +} + +const files = listFiles(distRoot); +const htmlFiles = files.filter((file) => file.endsWith(".html")); +const cssFiles = files.filter((file) => file.endsWith(".css")); +const problems = []; +let checked = 0; + +for (const file of htmlFiles) { + const content = fs.readFileSync(file, "utf8"); + + for (const match of content.matchAll(htmlAttributePattern)) { + checked += checkReference({ + sourceFile: file, + rawReference: match[3], + sourceKind: match[1].toLowerCase(), + }); + } + + for (const match of content.matchAll(srcsetPattern)) { + for (const entry of parseSrcset(match[2])) { + checked += checkReference({ + sourceFile: file, + rawReference: entry, + sourceKind: "srcset", + }); + } + } +} + +for (const file of cssFiles) { + const content = fs.readFileSync(file, "utf8"); + + for (const match of content.matchAll(cssUrlPattern)) { + checked += checkReference({ + sourceFile: file, + rawReference: match[1] ?? match[2] ?? match[3], + sourceKind: "css url()", + }); + } +} + +if (problems.length > 0) { + console.error(`Static link/media audit found ${problems.length} problem(s):`); + + for (const problem of problems) { + console.error( + `- ${path.relative(repoRoot, problem.sourceFile)}: ${problem.sourceKind}="${problem.rawReference}" -> ${problem.reason}`, + ); + } + + process.exit(1); +} + +console.log( + `Static link/media audit passed: checked ${checked} local reference(s) in ${htmlFiles.length} HTML file(s) and ${cssFiles.length} CSS file(s).`, +); + +function listFiles(dir) { + return fs.readdirSync(dir, { withFileTypes: true }).flatMap((entry) => { + const fullPath = path.join(dir, entry.name); + return entry.isDirectory() ? listFiles(fullPath) : fullPath; + }); +} + +function checkReference({ sourceFile, rawReference, sourceKind }) { + const reference = normalizeReference(rawReference); + + if (!reference) { + return 0; + } + + const target = resolveTargetPath(sourceFile, reference); + + if (!target) { + return 0; + } + + const exists = fs.existsSync(target); + if (!exists) { + problems.push({ + sourceFile, + sourceKind, + rawReference, + reason: `missing ${describeReference(reference)} at ${path.relative(repoRoot, target)}`, + }); + return 1; + } + + if (isHtmlLikeReference(reference) && fs.statSync(target).isFile()) { + return 1; + } + + if (fs.statSync(target).isDirectory()) { + const indexFile = path.join(target, "index.html"); + if (!fs.existsSync(indexFile)) { + problems.push({ + sourceFile, + sourceKind, + rawReference, + reason: `directory has no index.html at ${path.relative(repoRoot, target)}`, + }); + } + } + + return 1; +} + +function normalizeReference(rawReference) { + if (!rawReference) { + return ""; + } + + const trimmed = rawReference.trim(); + if ( + trimmed === "" || + trimmed.startsWith("#") || + trimmed.startsWith("data:") || + trimmed.startsWith("blob:") || + trimmed.startsWith("//") || + trimmed.startsWith("?") + ) { + return ""; + } + + if (ignoredProtocols.test(trimmed)) { + return ""; + } + + return decodeURI(trimmed.split("#")[0].split("?")[0]); +} + +function resolveTargetPath(sourceFile, reference) { + if (reference.startsWith("/")) { + return path.join(distRoot, reference); + } + + return path.resolve(path.dirname(sourceFile), reference); +} + +function isHtmlLikeReference(reference) { + return path.extname(reference) === "" || reference.endsWith(".html"); +} + +function describeReference(reference) { + const extension = path.extname(reference).toLowerCase(); + + if (extension === ".pdf") { + return "PDF"; + } + + if ([".avif", ".gif", ".jpeg", ".jpg", ".png", ".svg", ".webp"].includes(extension)) { + return "image"; + } + + if (assetExtensions.has(extension)) { + return "asset"; + } + + return "internal link"; +} + +function parseSrcset(value) { + return value + .split(",") + .map((candidate) => candidate.trim().split(/\s+/)[0]) + .filter(Boolean); +} diff --git a/src/components/SiteLayout.astro b/src/components/SiteLayout.astro new file mode 100644 index 00000000..210b2e0c --- /dev/null +++ b/src/components/SiteLayout.astro @@ -0,0 +1,69 @@ +--- +import SiteFooter from "./SiteFooter.astro"; +import SiteNav from "./SiteNav.astro"; + +const { + title, + bodyClass, + pathname, + canonical, + parabolaSettings = { masonry: "0", magazine: "0", mobile: "1", fitvids: "1" }, +} = Astro.props; +const parabolaSettingsScript = `var parabola_settings = ${JSON.stringify(parabolaSettings)};`; +--- + + + + + + + + + <meta name="robots" content="max-image-preview:large" /> + <link rel="stylesheet" id="content-blocks-css" href="/css/block-library.css?ver=6.6.5" type="text/css" media="all" /> + <link rel="stylesheet" id="pdfprnt_frontend-css" href="/assets/vendor/pdf/css/frontend.css?ver=2.4.0" type="text/css" media="all" /> + <link rel="stylesheet" id="parabola-fonts-css" href="/assets/theme/parabola/fonts/fontfaces.css?ver=2.4.1" type="text/css" media="all" /> + <link rel="stylesheet" id="parabola-style-css" href="/assets/theme/parabola/style.css?ver=2.4.1" type="text/css" media="all" /> + <link rel="stylesheet" id="familyfedie-theme-css" href="/css/theme.css" type="text/css" media="all" /> + <link rel="stylesheet" id="familyfedie-site-css" href="/css/site.css" type="text/css" media="all" /> + <link rel="stylesheet" id="parabola-mobile-css" href="/assets/theme/parabola/styles/style-mobile.css?ver=2.4.1" type="text/css" media="all" /> + <script is:inline type="text/javascript" src="/js/jquery.min.js?ver=2.0.2" id="jquery-js"></script> + <script is:inline type="text/javascript" id="parabola-frontend-js-extra" set:html={parabolaSettingsScript}></script> + <script is:inline type="text/javascript" src="/assets/theme/parabola/js/frontend.js?ver=2.4.1" id="parabola-frontend-js"></script> + {canonical && <link rel="canonical" href={canonical} />} + </head> + <body class={bodyClass}> + <div id="toTop"> </div> + <div id="wrapper" class="hfeed"> + <div id="header-full"> + <header id="header"> + <div id="masthead"> + <div id="branding" role="banner"> + <img id="bg_image" alt="FFWPU Ireland" title="FFWPU Ireland" src="/assets/uploads/2013/10/BannerFamilyFed_23_10c1.jpg" /> + <div id="header-container"> + <a href="/index.html" id="linky"></a> + </div> + <div style="clear:both;"></div> + </div> + <a id="nav-toggle"><span> </span></a> + <SiteNav pathname={pathname} /> + </div> + <div style="clear:both;height:1px;width:1px;"> </div> + </header> + </div> + + <slot /> + + <SiteFooter /> + </div> + + <script is:inline> + (function (body) { + "use strict"; + body.className = body.className.replace(/\btribe-no-js\b/, "tribe-js"); + })(document.body); + </script> + <script type="text/javascript">var cryout_global_content_width = 800;</script> + <slot name="scripts" /> + </body> +</html> diff --git a/src/components/TwoColumnPage.astro b/src/components/TwoColumnPage.astro new file mode 100644 index 00000000..008bd11a --- /dev/null +++ b/src/components/TwoColumnPage.astro @@ -0,0 +1,20 @@ +--- +import SiteSidebar from "./SiteSidebar.astro"; + +const { articleHtml } = Astro.props; +--- + +<div id="main"> + <div id="forbottom"> + <div style="clear:both;"> </div> + + <section id="container" class="two-columns-right"> + <div id="content" role="main"> + <Fragment set:html={articleHtml} /> + </div> + <SiteSidebar /> + </section> + + <div style="clear:both;"></div> + </div> +</div> diff --git a/src/content/pages/about.html b/src/content/pages/about.html new file mode 100644 index 00000000..88cfac73 --- /dev/null +++ b/src/content/pages/about.html @@ -0,0 +1,22 @@ +<div id="post-29" class="post-29 page type-page status-publish hentry"> + <h1 class="entry-title">About Us</h1> + + <div class="entry-content"> + <p>The Family Federation for World Peace and Unification (Family Fed, or FFWPU) is an international religious organization started by Rev. Sun Myung Moon. Originally called the Holy Spirit Association for the Unification of World Christianity (HSA-UWC), the name was changed in 1994 to reflect the changing nature of our activities.</p> +<p>Commonly known as the Unification Church, FFWPU is committed to creating God-centered families based on our central teachings, summed up in the Exposition of the Divine Principle and the various speeches and talks given by Rev. Sun Myung Moon and his wife, Rev. Hak Ja Han. Our focus is on strengthening families and resolving conflict, from the individual to the international level.</p> +<h3 dir="ltr"><b>Short Introduction to the Divine Principle</b></h3> +<p dir="ltr">Is religion necessary? Yes.</p> +<p dir="ltr">Do the established religions need to make necessary adjustments according to human development? Yes.</p> +<p dir="ltr">It is simple.</p> +<p><b>Science</b> itself deals with the tangible, measurable, physical reality. It deals with the limited world of matter in a testable, logical manner. The how questions. Studying science leads to enlightenment about, and mastery of, the material world.</p> +<p><b>Religion</b> deals with the intangible elements of life such as purpose, meaning, and value. It deals with the world of the ultimate. The why questions. Pursuit of religion leads to enlightenment about, and mastery of, the world of the mind and spirit.</p> +<p>The <b>human being</b> has to cope with both realities, the tangible and the intangible. The limited and the ultimate. The body and the mind. The how and the why.</p> +<p>Here is where a combination of the two, a<b> logical yet ultimate</b> system or Truth needs to be presented.</p> +<h5>For this, check out the <b>Divine Principle</b>, the teachings of Rev. Sun Myung Moon.</h5> +<p><a href="http://www.unification.net/dp96/dp96-1-1.html#Chap1" target="_blank" rel="noopener">The Principle of Creation</a> – Here is its presentation on the being of <b>God, </b>the process of creation and the purpose of life.</p> +<p dir="ltr"><a href="http://www.unification.net/dp96/dp96-1-2.html#Chap2" target="_blank" rel="noopener">The Human Fall</a> – Here is its presentation of the <b>human condition</b>, a contradictory state that desires both good and evil.</p> +<p>For the full DP online, visit <a href="http://www.unification.net/dp96/" target="_blank" rel="noopener">Exposition of the Divine Principle</a></p> +<p>Given, this presentation is bible based and primarily geared toward a Christian audience. But the underlying truth it suggests, beyond the biblical references, is solid and deserves to be considered.</p> +<h3>Click <a href="/speeches/index.html">here</a> to see speeches by Rev. Dr. Sun Myung Moon.</h3> + </div><!-- .entry-content --> + </div><!-- #post-## --> diff --git a/src/content/pages/contact.html b/src/content/pages/contact.html new file mode 100644 index 00000000..5b0ba8fa --- /dev/null +++ b/src/content/pages/contact.html @@ -0,0 +1,13 @@ +<div id="post-63" class="post-63 page type-page status-publish hentry"> + <h1 class="entry-title">Contact</h1> + + <div class="entry-content"> + <p>We’re conveniently located in Dublin City Centre, directly across from the James Joyce Center. Feel free to drop by anytime, since most days someone is around to offer you a cup of tea and a friendly chat about our beliefs.</p> +<p>Our address is:</p> +<p><strong>19 North Great Georges St.</strong><br /><strong> Dublin 1, Ireland</strong></p> +<p>Feel free to email us any questions you may have or to book an appointment to hear our lecture series of the Divine Principle or to organize a religious event at our church center: <a href="mailto:info@unification.ie">info@unification.ie</a></p> + + +<p><a class="button" href="mailto:info@unification.ie">Email us</a></p> + </div><!-- .entry-content --> + </div><!-- #post-## --> diff --git a/src/content/pages/events.html b/src/content/pages/events.html new file mode 100644 index 00000000..37ce94b3 --- /dev/null +++ b/src/content/pages/events.html @@ -0,0 +1,465 @@ +<div id="main"> + <div id="forbottom" > + + <div style="clear:both;"> </div> + + <div + class="tribe-common tribe-events tribe-events-view tribe-events-view--month" data-js="tribe-events-view" + data-view-rest-url="" + data-view-rest-method="POST" + data-view-manage-url="1" + data-view-breakpoint-pointer="6e6a5b20-7663-44a2-8449-8386cd314112" + > + <div class="tribe-common-l-container tribe-events-l-container"> + <div + class="tribe-events-view-loader tribe-common-a11y-hidden" + role="alert" + aria-live="polite" +> + <span class="tribe-events-view-loader__text tribe-common-a11y-visual-hide"> + Loading view. </span> + <div class="tribe-events-view-loader__dots tribe-common-c-loader"> + <svg class="tribe-common-c-svgicon tribe-common-c-svgicon--dot tribe-common-c-loader__dot tribe-common-c-loader__dot--first" viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg"><circle cx="7.5" cy="7.5" r="7.5"/></svg> + <svg class="tribe-common-c-svgicon tribe-common-c-svgicon--dot tribe-common-c-loader__dot tribe-common-c-loader__dot--second" viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg"><circle cx="7.5" cy="7.5" r="7.5"/></svg> + <svg class="tribe-common-c-svgicon tribe-common-c-svgicon--dot tribe-common-c-loader__dot tribe-common-c-loader__dot--third" viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg"><circle cx="7.5" cy="7.5" r="7.5"/></svg> + </div> +</div> + + + <script data-js="tribe-events-view-data" type="application/json"> + {"slug":"month","prev_url":"\/events\/month\/2026-05\/","next_url":"\/events\/month\/2026-07\/","view_class":"Tribe\\Events\\Views\\V2\\Views\\Month_View","view_slug":"month","view_label":"Month","title":"FFWPU Ireland","events":{"2026-06-01":[],"2026-06-02":[],"2026-06-03":[],"2026-06-04":[],"2026-06-05":[],"2026-06-06":[],"2026-06-07":[],"2026-06-08":[],"2026-06-09":[],"2026-06-10":[],"2026-06-11":[],"2026-06-12":[],"2026-06-13":[],"2026-06-14":[],"2026-06-15":[],"2026-06-16":[],"2026-06-17":[],"2026-06-18":[],"2026-06-19":[],"2026-06-20":[],"2026-06-21":[],"2026-06-22":[],"2026-06-23":[],"2026-06-24":[],"2026-06-25":[],"2026-06-26":[],"2026-06-27":[],"2026-06-28":[],"2026-06-29":[],"2026-06-30":[],"2026-07-01":[],"2026-07-02":[],"2026-07-03":[],"2026-07-04":[],"2026-07-05":[]},"url":"\/events\/month\/","url_event_date":false,"bar":{"keyword":"","date":""},"today":"2026-06-09 00:00:00","now":"2026-06-09 02:33:21","rest_url":"","rest_method":"POST","rest_nonce":"","should_manage_url":true,"today_url":"\/events\/month\/","today_title":"Click to select the current month","today_label":"This Month","prev_label":"May","next_label":"Jul","date_formats":{"compact":"n\/j\/Y","month_and_year_compact":"n\/j\/Y","month_and_year":"F Y","time_range_separator":" - ","date_time_separator":" @ "},"messages":{"notice":["There are no upcoming events."]},"start_of_week":"1","header_title":"","header_title_element":"h1","content_title":"","breadcrumbs":[],"before_events":"","after_events":"\n<!--\nThis calendar is powered by The Events Calendar.\nhttp:\/\/evnt.is\/18wn\n-->\n","display_events_bar":true,"disable_event_search":false,"live_refresh":true,"ical":{"display_link":true,"link":{"url":"\/events\/month\/?ical=1","text":"Export Events","title":"Use this to share calendar data with Google Calendar, Apple iCal and other compatible apps"}},"container_classes":["tribe-common","tribe-events","tribe-events-view","tribe-events-view--month"],"container_data":[],"is_past":false,"breakpoints":{"xsmall":500,"medium":768,"full":960},"breakpoint_pointer":"6e6a5b20-7663-44a2-8449-8386cd314112","is_initial_load":true,"public_views":{"month":{"view_class":"Tribe\\Events\\Views\\V2\\Views\\Month_View","view_url":"\/events\/month\/","view_label":"Month"}},"show_latest_past":true,"today_date":"2026-06-09","grid_date":"2026-06-09","formatted_grid_date":"June 2026","formatted_grid_date_mobile":"6\/2026","days":{"2026-06-01":{"date":"2026-06-01","is_start_of_week":true,"year_number":"2026","month_number":"06","day_number":"1","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-01\/"},"2026-06-02":{"date":"2026-06-02","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"2","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-02\/"},"2026-06-03":{"date":"2026-06-03","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"3","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-03\/"},"2026-06-04":{"date":"2026-06-04","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"4","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-04\/"},"2026-06-05":{"date":"2026-06-05","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"5","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-05\/"},"2026-06-06":{"date":"2026-06-06","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"6","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-06\/"},"2026-06-07":{"date":"2026-06-07","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"7","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-07\/"},"2026-06-08":{"date":"2026-06-08","is_start_of_week":true,"year_number":"2026","month_number":"06","day_number":"8","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-08\/"},"2026-06-09":{"date":"2026-06-09","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"9","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-09\/"},"2026-06-10":{"date":"2026-06-10","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"10","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-10\/"},"2026-06-11":{"date":"2026-06-11","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"11","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-11\/"},"2026-06-12":{"date":"2026-06-12","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"12","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-12\/"},"2026-06-13":{"date":"2026-06-13","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"13","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-13\/"},"2026-06-14":{"date":"2026-06-14","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"14","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-14\/"},"2026-06-15":{"date":"2026-06-15","is_start_of_week":true,"year_number":"2026","month_number":"06","day_number":"15","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-15\/"},"2026-06-16":{"date":"2026-06-16","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"16","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-16\/"},"2026-06-17":{"date":"2026-06-17","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"17","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-17\/"},"2026-06-18":{"date":"2026-06-18","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"18","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-18\/"},"2026-06-19":{"date":"2026-06-19","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"19","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-19\/"},"2026-06-20":{"date":"2026-06-20","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"20","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-20\/"},"2026-06-21":{"date":"2026-06-21","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"21","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-21\/"},"2026-06-22":{"date":"2026-06-22","is_start_of_week":true,"year_number":"2026","month_number":"06","day_number":"22","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-22\/"},"2026-06-23":{"date":"2026-06-23","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"23","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-23\/"},"2026-06-24":{"date":"2026-06-24","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"24","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-24\/"},"2026-06-25":{"date":"2026-06-25","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"25","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-25\/"},"2026-06-26":{"date":"2026-06-26","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"26","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-26\/"},"2026-06-27":{"date":"2026-06-27","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"27","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-27\/"},"2026-06-28":{"date":"2026-06-28","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"28","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-28\/"},"2026-06-29":{"date":"2026-06-29","is_start_of_week":true,"year_number":"2026","month_number":"06","day_number":"29","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-29\/"},"2026-06-30":{"date":"2026-06-30","is_start_of_week":false,"year_number":"2026","month_number":"06","day_number":"30","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-06-30\/"},"2026-07-01":{"date":"2026-07-01","is_start_of_week":false,"year_number":"2026","month_number":"07","day_number":"1","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-07-01\/"},"2026-07-02":{"date":"2026-07-02","is_start_of_week":false,"year_number":"2026","month_number":"07","day_number":"2","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-07-02\/"},"2026-07-03":{"date":"2026-07-03","is_start_of_week":false,"year_number":"2026","month_number":"07","day_number":"3","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-07-03\/"},"2026-07-04":{"date":"2026-07-04","is_start_of_week":false,"year_number":"2026","month_number":"07","day_number":"4","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-07-04\/"},"2026-07-05":{"date":"2026-07-05","is_start_of_week":false,"year_number":"2026","month_number":"07","day_number":"5","events":[],"featured_events":[],"multiday_events":[],"found_events":0,"more_events":0,"day_url":"\/events\/2026-07-05\/"}},"next_month":"7","prev_month":"5","next_rel":"noindex","prev_rel":"noindex","mobile_messages":{"notice":{"no-events-in-day":"There are no events on this day."}},"grid_start_date":"2026-06-01","subscribe_links":{"gcal":{"label":"Google Calendar","single_label":"Add to Google Calendar","visible":true,"block_slug":"hasGoogleCalendar"},"ical":{"label":"iCalendar","single_label":"Add to iCalendar","visible":true,"block_slug":"hasiCal"},"outlook-365":{"label":"Outlook 365","single_label":"Outlook 365","visible":true,"block_slug":"hasOutlook365"},"outlook-live":{"label":"Outlook Live","single_label":"Outlook Live","visible":true,"block_slug":"hasOutlookLive"},"ics":{"label":"Export .ics file","single_label":"Export .ics file","visible":true,"block_slug":null},"outlook-ics":{"label":"Export Outlook .ics file","single_label":"Export Outlook .ics file","visible":true,"block_slug":null}},"_context":{"slug":"month"},"text":"Loading...","classes":["tribe-common-c-loader__dot","tribe-common-c-loader__dot--third"]}</script> + + + +<header class="tribe-events-header tribe-events-header--has-event-search" > + <div class="tribe-events-header__messages tribe-events-c-messages tribe-common-b2 tribe-common-c-loader__dot tribe-common-c-loader__dot--third" > + <div class="tribe-events-c-messages__message tribe-events-c-messages__message--notice" role="alert"> + <ul class="tribe-events-c-messages__message-list"> + <li + class="tribe-events-c-messages__message-list-item" + data-key="0" > + There are no upcoming events. </li> + </ul> + </div> + </div> + + <div class="tribe-events-header__messages tribe-events-c-messages tribe-common-b2 tribe-events-header__messages--mobile" > + <div class="tribe-events-c-messages__message tribe-events-c-messages__message--notice" role="alert"> + <ul class="tribe-events-c-messages__message-list"> + <li + class="tribe-events-c-messages__message-list-item" + data-key="0" > + There are no upcoming events. </li> + </ul> + </div> + </div> + + + + <div + class="tribe-events-header__events-bar tribe-events-c-events-bar tribe-events-c-events-bar--border" data-js="tribe-events-events-bar" +> + + <h2 class="tribe-common-a11y-visual-hide"> + Events Search and Views Navigation </h2> + + <button + class="tribe-events-c-events-bar__search-button" + aria-controls="tribe-events-search-container" + aria-expanded="false" + data-js="tribe-events-search-button" +> + <svg class="tribe-common-c-svgicon tribe-common-c-svgicon--search tribe-events-c-events-bar__search-button-icon-svg" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M11.164 10.133L16 14.97 14.969 16l-4.836-4.836a6.225 6.225 0 01-3.875 1.352 6.24 6.24 0 01-4.427-1.832A6.272 6.272 0 010 6.258 6.24 6.24 0 011.831 1.83 6.272 6.272 0 016.258 0c1.67 0 3.235.658 4.426 1.831a6.272 6.272 0 011.832 4.427c0 1.422-.48 2.773-1.352 3.875zM6.258 1.458c-1.28 0-2.49.498-3.396 1.404-1.866 1.867-1.866 4.925 0 6.791a4.774 4.774 0 003.396 1.405c1.28 0 2.489-.498 3.395-1.405 1.867-1.866 1.867-4.924 0-6.79a4.774 4.774 0 00-3.395-1.405z"/></svg> + <span class="tribe-events-c-events-bar__search-button-text tribe-common-a11y-visual-hide"> + Search </span> +</button> + + <div + class="tribe-events-c-events-bar__search-container" + id="tribe-events-search-container" + data-js="tribe-events-search-container" + > + <div + class="tribe-events-c-events-bar__search" + id="tribe-events-events-bar-search" + data-js="tribe-events-events-bar-search" +> + <form + class="tribe-events-c-search tribe-events-c-events-bar__search-form" + method="get" + data-js="tribe-events-view-form" + role="search" + > + <input type="hidden" name="tribe-events-views[url]" value="/events/month/" /> + + <div class="tribe-events-c-search__input-group"> + <div + class="tribe-common-form-control-text tribe-events-c-search__input-control tribe-events-c-search__input-control--keyword" + data-js="tribe-events-events-bar-input-control" +> + <label class="tribe-common-form-control-text__label" for="tribe-events-events-bar-keyword"> + Enter Keyword. Search for Events by Keyword. </label> + <input + class="tribe-common-form-control-text__input tribe-events-c-search__input" + data-js="tribe-events-events-bar-input-control-input" + type="text" + id="tribe-events-events-bar-keyword" + name="tribe-events-views[tribe-bar-search]" + value="" + placeholder="Search for events" + aria-label="Enter Keyword. Search for events by Keyword." + /> + <svg class="tribe-common-c-svgicon tribe-common-c-svgicon--search tribe-events-c-search__input-control-icon-svg" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M11.164 10.133L16 14.97 14.969 16l-4.836-4.836a6.225 6.225 0 01-3.875 1.352 6.24 6.24 0 01-4.427-1.832A6.272 6.272 0 010 6.258 6.24 6.24 0 011.831 1.83 6.272 6.272 0 016.258 0c1.67 0 3.235.658 4.426 1.831a6.272 6.272 0 011.832 4.427c0 1.422-.48 2.773-1.352 3.875zM6.258 1.458c-1.28 0-2.49.498-3.396 1.404-1.866 1.867-1.866 4.925 0 6.791a4.774 4.774 0 003.396 1.405c1.28 0 2.489-.498 3.395-1.405 1.867-1.866 1.867-4.924 0-6.79a4.774 4.774 0 00-3.395-1.405z"/></svg> +</div> + </div> + + <button + class="tribe-common-c-btn tribe-events-c-search__button" + type="submit" + name="submit-bar" +> + Find Events</button> + </form> +</div> + </div> + + <div class="tribe-events-c-events-bar__views"> + <h3 class="tribe-common-a11y-visual-hide"> + Event Views Navigation </h3> + <div class="tribe-events-c-view-selector tribe-events-c-view-selector--labels tribe-events-c-view-selector--tabs" data-js="tribe-events-view-selector"> + <button + class="tribe-events-c-view-selector__button tribe-common-c-btn__clear" + data-js="tribe-events-view-selector-button" + > + <span class="tribe-events-c-view-selector__button-icon"> + <svg class="tribe-common-c-svgicon tribe-common-c-svgicon--month tribe-events-c-view-selector__button-icon-svg" viewBox="0 0 18 19" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M0 .991v17.04c0 .236.162.428.361.428h17.175c.2 0 .361-.192.361-.429V.991c0-.237-.162-.428-.361-.428H.36C.161.563 0 .754 0 .99zm.985.803H16.89v2.301H.985v-2.3zM16.89 5.223H.985v12H16.89v-12zM6.31 7.366v.857c0 .237.192.429.429.429h.857a.429.429 0 00.428-.429v-.857a.429.429 0 00-.428-.429H6.74a.429.429 0 00-.429.429zm3.429.857v-.857c0-.237.191-.429.428-.429h.857c.237 0 .429.192.429.429v.857a.429.429 0 01-.429.429h-.857a.429.429 0 01-.428-.429zm3.428-.857v.857c0 .237.192.429.429.429h.857a.429.429 0 00.428-.429v-.857a.429.429 0 00-.428-.429h-.857a.429.429 0 00-.429.429zm-6.857 4.286v-.858c0-.236.192-.428.429-.428h.857c.236 0 .428.192.428.428v.858a.429.429 0 01-.428.428H6.74a.429.429 0 01-.429-.428zm3.429-.858v.858c0 .236.191.428.428.428h.857a.429.429 0 00.429-.428v-.858a.429.429 0 00-.429-.428h-.857a.428.428 0 00-.428.428zm3.428.858v-.858c0-.236.192-.428.429-.428h.857c.236 0 .428.192.428.428v.858a.429.429 0 01-.428.428h-.857a.429.429 0 01-.429-.428zm-10.286-.858v.858c0 .236.192.428.429.428h.857a.429.429 0 00.429-.428v-.858a.429.429 0 00-.429-.428h-.857a.429.429 0 00-.429.428zm0 4.286v-.857c0-.237.192-.429.429-.429h.857c.237 0 .429.192.429.429v.857a.429.429 0 01-.429.429h-.857a.429.429 0 01-.429-.429zm3.429-.857v.857c0 .237.192.429.429.429h.857a.429.429 0 00.428-.429v-.857a.429.429 0 00-.428-.429H6.74a.429.429 0 00-.429.429zm3.429.857v-.857c0-.237.191-.429.428-.429h.857c.237 0 .429.192.429.429v.857a.429.429 0 01-.429.429h-.857a.429.429 0 01-.428-.429z" class="tribe-common-c-svgicon__svg-fill"/></svg> </span> + <span class="tribe-events-c-view-selector__button-text tribe-common-a11y-visual-hide"> + Month </span> + <svg class="tribe-common-c-svgicon tribe-common-c-svgicon--caret-down tribe-events-c-view-selector__button-icon-caret-svg" viewBox="0 0 10 7" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.008.609L5 4.6 8.992.61l.958.958L5 6.517.05 1.566l.958-.958z" class="tribe-common-c-svgicon__svg-fill"/></svg> + </button> + <div + class="tribe-events-c-view-selector__content" + id="tribe-events-view-selector-content" + data-js="tribe-events-view-selector-list-container" +> + <ul class="tribe-events-c-view-selector__list"> + <li class="tribe-events-c-view-selector__list-item tribe-events-c-view-selector__list-item--month tribe-events-c-view-selector__list-item--active"> + <a + href="#" + class="tribe-events-c-view-selector__list-item-link" + data-js="tribe-events-view-link" + > + <span class="tribe-events-c-view-selector__list-item-icon"> + <svg class="tribe-common-c-svgicon tribe-common-c-svgicon--month tribe-events-c-view-selector__list-item-icon-svg" viewBox="0 0 18 19" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M0 .991v17.04c0 .236.162.428.361.428h17.175c.2 0 .361-.192.361-.429V.991c0-.237-.162-.428-.361-.428H.36C.161.563 0 .754 0 .99zm.985.803H16.89v2.301H.985v-2.3zM16.89 5.223H.985v12H16.89v-12zM6.31 7.366v.857c0 .237.192.429.429.429h.857a.429.429 0 00.428-.429v-.857a.429.429 0 00-.428-.429H6.74a.429.429 0 00-.429.429zm3.429.857v-.857c0-.237.191-.429.428-.429h.857c.237 0 .429.192.429.429v.857a.429.429 0 01-.429.429h-.857a.429.429 0 01-.428-.429zm3.428-.857v.857c0 .237.192.429.429.429h.857a.429.429 0 00.428-.429v-.857a.429.429 0 00-.428-.429h-.857a.429.429 0 00-.429.429zm-6.857 4.286v-.858c0-.236.192-.428.429-.428h.857c.236 0 .428.192.428.428v.858a.429.429 0 01-.428.428H6.74a.429.429 0 01-.429-.428zm3.429-.858v.858c0 .236.191.428.428.428h.857a.429.429 0 00.429-.428v-.858a.429.429 0 00-.429-.428h-.857a.428.428 0 00-.428.428zm3.428.858v-.858c0-.236.192-.428.429-.428h.857c.236 0 .428.192.428.428v.858a.429.429 0 01-.428.428h-.857a.429.429 0 01-.429-.428zm-10.286-.858v.858c0 .236.192.428.429.428h.857a.429.429 0 00.429-.428v-.858a.429.429 0 00-.429-.428h-.857a.429.429 0 00-.429.428zm0 4.286v-.857c0-.237.192-.429.429-.429h.857c.237 0 .429.192.429.429v.857a.429.429 0 01-.429.429h-.857a.429.429 0 01-.429-.429zm3.429-.857v.857c0 .237.192.429.429.429h.857a.429.429 0 00.428-.429v-.857a.429.429 0 00-.428-.429H6.74a.429.429 0 00-.429.429zm3.429.857v-.857c0-.237.191-.429.428-.429h.857c.237 0 .429.192.429.429v.857a.429.429 0 01-.429.429h-.857a.429.429 0 01-.428-.429z" class="tribe-common-c-svgicon__svg-fill"/></svg> </span> + <span class="tribe-events-c-view-selector__list-item-text"> + Month </span> + </a> +</li> + </ul> +</div> + </div> +</div> + +</div> + + + <div class="tribe-events-c-top-bar tribe-events-header__top-bar"> + + <nav class="tribe-events-c-top-bar__nav tribe-common-a11y-hidden"> + <ul class="tribe-events-c-top-bar__nav-list"> + <li class="tribe-events-c-top-bar__nav-list-item"> + <a + href="#" + class="tribe-common-c-btn-icon tribe-common-c-btn-icon--caret-left tribe-events-c-top-bar__nav-link tribe-events-c-top-bar__nav-link--prev" + aria-label="Previous month" + title="Previous month" + data-js="tribe-events-view-link" + rel="noindex" + > + <svg class="tribe-common-c-svgicon tribe-common-c-svgicon--caret-left tribe-common-c-btn-icon__icon-svg tribe-events-c-top-bar__nav-link-icon-svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 16" aria-hidden="true"><path d="M9.7 14.4l-1.5 1.5L.3 8 8.2.1l1.5 1.5L3.3 8l6.4 6.4z"/></svg> + </a> +</li> + + </ul> +</nav> + + <a + href="#" + class="tribe-common-c-btn-border-small tribe-events-c-top-bar__today-button tribe-common-a11y-hidden" + data-js="tribe-events-view-link" + aria-label="Click to select the current month" + title="Click to select the current month" +> + This Month</a> + + <div class="tribe-events-c-top-bar__datepicker"> + <button + class="tribe-common-c-btn__clear tribe-common-h3 tribe-common-h--alt tribe-events-c-top-bar__datepicker-button" + data-js="tribe-events-top-bar-datepicker-button" + type="button" + aria-label="Click to toggle datepicker" + title="Click to toggle datepicker" + > + <time + datetime="2026-06" + class="tribe-events-c-top-bar__datepicker-time" + > + <span class="tribe-events-c-top-bar__datepicker-mobile"> + 6/2026 </span> + <span class="tribe-events-c-top-bar__datepicker-desktop tribe-common-a11y-hidden"> + June 2026 </span> + </time> + <svg class="tribe-common-c-svgicon tribe-common-c-svgicon--caret-down tribe-events-c-top-bar__datepicker-button-icon-svg" viewBox="0 0 10 7" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.008.609L5 4.6 8.992.61l.958.958L5 6.517.05 1.566l.958-.958z" class="tribe-common-c-svgicon__svg-fill"/></svg> + </button> + <label + class="tribe-events-c-top-bar__datepicker-label tribe-common-a11y-visual-hide" + for="tribe-events-top-bar-date" + > + Select date. </label> + <input + type="text" + class="tribe-events-c-top-bar__datepicker-input tribe-common-a11y-visual-hide" + data-js="tribe-events-top-bar-date" + id="tribe-events-top-bar-date" + name="tribe-events-views[tribe-bar-date]" + value="6/9/2026" + tabindex="-1" + autocomplete="off" + readonly="readonly" + /> + <div class="tribe-events-c-top-bar__datepicker-container" data-js="tribe-events-top-bar-datepicker-container"></div> + <template class="tribe-events-c-top-bar__datepicker-template-prev-icon"> + <svg class="tribe-common-c-svgicon tribe-common-c-svgicon--caret-left tribe-events-c-top-bar__datepicker-nav-icon-svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 16" aria-hidden="true"><path d="M9.7 14.4l-1.5 1.5L.3 8 8.2.1l1.5 1.5L3.3 8l6.4 6.4z"/></svg> + </template> + <template class="tribe-events-c-top-bar__datepicker-template-next-icon"> + <svg class="tribe-common-c-svgicon tribe-common-c-svgicon--caret-right tribe-events-c-top-bar__datepicker-nav-icon-svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 16" aria-hidden="true"><path d="M.3 1.6L1.8.1 9.7 8l-7.9 7.9-1.5-1.5L6.7 8 .3 1.6z"/></svg> + </template> +</div> + + <div class="tribe-events-c-top-bar__actions tribe-common-a11y-hidden"> + </div> + +</div> +</header> + + + <div + class="tribe-events-calendar-month" + role="grid" + aria-labelledby="tribe-events-calendar-header" + aria-readonly="true" + data-js="tribe-events-month-grid" + > + + + + </div> + + <div class="tribe-events-header__messages tribe-events-c-messages tribe-common-b2 tribe-events-header__messages--mobile" > + <div class="tribe-events-c-messages__message tribe-events-c-messages__message--notice" role="alert"> + <ul class="tribe-events-c-messages__message-list"> + <li + class="tribe-events-c-messages__message-list-item" + data-key="0" > + There are no upcoming events. </li> + </ul> + </div> + </div> + + + <div class="tribe-events-calendar-latest-past"> + + <h2 class="tribe-events-calendar-latest-past__heading tribe-common-h5 tribe-common-h3--min-medium"> + Latest Past Events</h2> + + + <div class="tribe-common-g-row tribe-events-calendar-latest-past__event-row" > + + <div class="tribe-events-calendar-latest-past__event-date-tag tribe-common-g-col"> + <time class="tribe-events-calendar-latest-past__event-date-tag-datetime" datetime="2015-03-25" aria-hidden="true"> + <span class="tribe-events-calendar-latest-past__event-date-tag-month"> + Mar </span> + <span class="tribe-events-calendar-latest-past__event-date-tag-daynum tribe-common-h5 tribe-common-h4--min-medium"> + 25 </span> + <span class="tribe-events-calendar-latest-past__event-date-tag-year"> + 2015 </span> + </time> +</div> + + <div class="tribe-events-calendar-latest-past__event-wrapper tribe-common-g-col"> + <article class="tribe-events-calendar-latest-past__event tribe-common-g-row tribe-common-g-row--gutters post-500 tribe_events type-tribe_events status-publish hentry tribe_events_cat-ahn-shi-il cat_ahn-shi-il" > + + <div class="tribe-events-calendar-latest-past__event-details tribe-common-g-col"> + + <header class="tribe-events-calendar-latest-past__event-header"> + <div class="tribe-events-calendar-latest-past__event-datetime-wrapper tribe-common-b2"> + <time class="tribe-events-calendar-latest-past__event-datetime" datetime="2015-03-25"> + <span class="tribe-event-date-start">March 25, 2015</span> </time> + </div> + <h3 class="tribe-events-calendar-latest-past__event-title tribe-common-h6 tribe-common-h4--min-medium"> + <a + href="#" + title="Ahn Shi Il" + rel="bookmark" + class="tribe-events-calendar-latest-past__event-title-link tribe-common-anchor-thin" + > + Ahn Shi Il </a> +</h3> + </header> + + + </div> + </article> + </div> + +</div> + + + <div class="tribe-common-g-row tribe-events-calendar-latest-past__event-row" > + + <div class="tribe-events-calendar-latest-past__event-date-tag tribe-common-g-col"> + <time class="tribe-events-calendar-latest-past__event-date-tag-datetime" datetime="2015-03-17" aria-hidden="true"> + <span class="tribe-events-calendar-latest-past__event-date-tag-month"> + Mar </span> + <span class="tribe-events-calendar-latest-past__event-date-tag-daynum tribe-common-h5 tribe-common-h4--min-medium"> + 17 </span> + <span class="tribe-events-calendar-latest-past__event-date-tag-year"> + 2015 </span> + </time> +</div> + + <div class="tribe-events-calendar-latest-past__event-wrapper tribe-common-g-col"> + <article class="tribe-events-calendar-latest-past__event tribe-common-g-row tribe-common-g-row--gutters post-499 tribe_events type-tribe_events status-publish hentry tribe_events_cat-ahn-shi-il cat_ahn-shi-il" > + + <div class="tribe-events-calendar-latest-past__event-details tribe-common-g-col"> + + <header class="tribe-events-calendar-latest-past__event-header"> + <div class="tribe-events-calendar-latest-past__event-datetime-wrapper tribe-common-b2"> + <time class="tribe-events-calendar-latest-past__event-datetime" datetime="2015-03-17"> + <span class="tribe-event-date-start">March 17, 2015</span> </time> + </div> + <h3 class="tribe-events-calendar-latest-past__event-title tribe-common-h6 tribe-common-h4--min-medium"> + <a + href="#" + title="Ahn Shi Il" + rel="bookmark" + class="tribe-events-calendar-latest-past__event-title-link tribe-common-anchor-thin" + > + Ahn Shi Il </a> +</h3> + </header> + + + </div> + </article> + </div> + +</div> + + + <div class="tribe-common-g-row tribe-events-calendar-latest-past__event-row" > + + <div class="tribe-events-calendar-latest-past__event-date-tag tribe-common-g-col"> + <time class="tribe-events-calendar-latest-past__event-date-tag-datetime" datetime="2015-03-09" aria-hidden="true"> + <span class="tribe-events-calendar-latest-past__event-date-tag-month"> + Mar </span> + <span class="tribe-events-calendar-latest-past__event-date-tag-daynum tribe-common-h5 tribe-common-h4--min-medium"> + 9 </span> + <span class="tribe-events-calendar-latest-past__event-date-tag-year"> + 2015 </span> + </time> +</div> + + <div class="tribe-events-calendar-latest-past__event-wrapper tribe-common-g-col"> + <article class="tribe-events-calendar-latest-past__event tribe-common-g-row tribe-common-g-row--gutters post-497 tribe_events type-tribe_events status-publish hentry tribe_events_cat-ahn-shi-il cat_ahn-shi-il" > + + <div class="tribe-events-calendar-latest-past__event-details tribe-common-g-col"> + + <header class="tribe-events-calendar-latest-past__event-header"> + <div class="tribe-events-calendar-latest-past__event-datetime-wrapper tribe-common-b2"> + <time class="tribe-events-calendar-latest-past__event-datetime" datetime="2015-03-09"> + <span class="tribe-event-date-start">March 9, 2015</span> </time> + </div> + <h3 class="tribe-events-calendar-latest-past__event-title tribe-common-h6 tribe-common-h4--min-medium"> + <a + href="#" + title="Ahn Shi Il" + rel="bookmark" + class="tribe-events-calendar-latest-past__event-title-link tribe-common-anchor-thin" + > + Ahn Shi Il </a> +</h3> + </header> + + + </div> + </article> + </div> + +</div> + + +</div> + + <div class="tribe-events-after-html"> + +<!-- +This calendar is powered by The Events Calendar. +http://evnt.is/18wn +--> +</div> + + </div> + +</div> + +<script class="tribe-events-breakpoints"> + ( function () { + var completed = false; + + function initBreakpoints() { + if ( completed ) { + // This was fired already and completed no need to attach to the event listener. + document.removeEventListener( 'DOMContentLoaded', initBreakpoints ); + return; + } + + if ( 'undefined' === typeof window.tribe ) { + return; + } + + if ( 'undefined' === typeof window.tribe.events ) { + return; + } + + if ( 'undefined' === typeof window.tribe.events.views ) { + return; + } + + if ( 'undefined' === typeof window.tribe.events.views.breakpoints ) { + return; + } + + if ( 'function' !== typeof (window.tribe.events.views.breakpoints.setup) ) { + return; + } + + var container = document.querySelectorAll( '[data-view-breakpoint-pointer="6e6a5b20-7663-44a2-8449-8386cd314112"]' ); + if ( ! container ) { + return; + } + + window.tribe.events.views.breakpoints.setup( container ); + completed = true; + // This was fired already and completed no need to attach to the event listener. + document.removeEventListener( 'DOMContentLoaded', initBreakpoints ); + } + + // Try to init the breakpoints right away. + initBreakpoints(); + document.addEventListener( 'DOMContentLoaded', initBreakpoints ); + })(); +</script> +<script data-js='tribe-events-view-nonce-data' type='application/json'>{"_tec_view_rest_nonce_primary":"bfc5182d3a","_tec_view_rest_nonce_secondary":""}</script> <div style="clear:both;"></div> + </div> <!-- #forbottom --> + </div><!-- #main --> diff --git a/src/content/pages/index.html b/src/content/pages/index.html new file mode 100644 index 00000000..cfeb8d99 --- /dev/null +++ b/src/content/pages/index.html @@ -0,0 +1,100 @@ +<div id="main"> + <div id="forbottom" > + + <div style="clear:both;"> </div> + + <script type="text/javascript"> + jQuery(document).ready(function() { + // Slider creation + jQuery('#slider').nivoSlider({ + effect: 'slideInLeft', + animSpeed: 750, + directionNavHide: false, beforeChange: function(){ + //jQuery('.nivo-caption').slideUp(300); + + }, + afterChange: function(){ + //jQuery('.nivo-caption').slideDown(500); + }, + + + pauseTime: 5000 }); + }); + </script> + <div id="frontpage"> + <div class="slider-wrapper theme-default slider-numbers"> + <div class="ribbon"></div> + <div id="slider" class="nivoSlider"> + <a href='/the-founders.html'> + <img src='/assets/uploads/2013/10/TrueParentsSlider.jpg' alt="" /> + </a> <a href='/about-us-organizations.html'> + <img src='/assets/uploads/2013/10/Little-Angels-Presentationlight1.jpg' alt="The Little Angels" title="#caption1" /> + </a> <a href='/the-founders.html'> + <img src='/assets/uploads/2013/10/father-Seung-Hwa_Presentation.jpg' alt="Rev. Sun Myung Moon" title="#caption2" /> + </a> </div> + <div id="caption0" class="nivo-html-caption"> + <h3></h3><div class="slide-text"></div> + </div> + <div id="caption1" class="nivo-html-caption"> + <h3>The Little Angels</h3><div class="slide-text"></div> + </div> + <div id="caption2" class="nivo-html-caption"> + <h3>Rev. Sun Myung Moon</h3><div class="slide-text"></div> + </div> + </div> <div id="front-columns"> + + <div class="ppcolumn column1" id="column1"> + <a href="/the-founders.html" > + <div class="column-image"> + <img src="/assets/uploads/2013/10/True_Parents.jpg" id="columnImage1" alt="Founders of FFWPU International" /> + <h3 class='column-header-image'>Founders of FFWPU International</h3> + </div> + </a> <!-- link --> + + + <div class="column-text"> Find out more about the life of the founders of the Family Federation for World Peace - Rev. Dr. Sun Myung Moon and Dr. Hak Ja Han Moon <div class="columnmore"> + <a href="/the-founders.html" >Read more »</a> + </div> + </div> <!-- column-text--> + + </div> <!-- column --> + + + + <div class="ppcolumn column2" id="column2"> + <a href="/videos.html" > + <div class="column-image"> + <img src="/assets/uploads/2013/10/DP-Screenshot.jpg" id="columnImage2" alt="The Divine Principle and Other teachings." /> + <h3 class='column-header-image'>The Divine Principle and Other teachings.</h3> + </div> + </a> <!-- link --> + + + <div class="column-text"> The Divine Principle is the FFWPU's main teaching. Watch a presentation video and find more about our teachings. <div class="columnmore"> + <a href="/videos.html" >Read more »</a> + </div> + </div> <!-- column-text--> + + </div> <!-- column --> + + + + <div class="ppcolumn column3" id="column3"> + <a href="/about-us-organizations.html" > + <div class="column-image"> + <img src="/assets/uploads/2013/10/UPF-Prayer-Evening.jpg" id="columnImage3" alt="Activities and Organizations" /> + <h3 class='column-header-image'>Activities and Organizations</h3> + </div> + </a> <!-- link --> + + + <div class="column-text"> Discover all the partnering organizations and paths for culture and peace - that include sports, dance, art, UPF, FFWPU, IRFF, WFWPU <div class="columnmore"> + <a href="/about-us-organizations.html" >Read more »</a> + </div> + </div> <!-- column-text--> + + </div> <!-- column --> + + </div> </div> <!-- frontpage --> <div style="clear:both;"></div> + </div> <!-- #forbottom --> + </div><!-- #main --> diff --git a/src/content/pages/services.html b/src/content/pages/services.html new file mode 100644 index 00000000..07f35b14 --- /dev/null +++ b/src/content/pages/services.html @@ -0,0 +1,22 @@ +<div id="post-33" class="post-33 page type-page status-publish hentry"> + <h1 class="entry-title">Sunday Services</h1> + + <div class="entry-content"> + <p> </p> +<p> </p> +<p>Every Sunday we have video uploads of our Sunday Service at 11am. You can watch it below.</p> +<p><strong>Previous Sunday Services in 2019</strong></p> +<p>March 3, 2019 <a href="https://youtu.be/oXO_dP4UiOM" target="_blank" rel="noopener">“Our Way Will Prevail”</a> (Ely)</p> +<p>February 24, 2019 <a href="https://www.youtube.com/watch?v=M318vZlTuG0" target="_blank" rel="noopener">“Testimony from Korea”</a> (John)</p> +<p>February 3, 2019 <a href="https://www.youtube.com/watch?v=sxu4tRD90Us" target="_blank" rel="noopener">“Mission Impossible”</a> (Ely)</p> +<p><strong>Archived Sunday Services:</strong></p> +<p><a href="/archive-sunday-services-2018.html">2018 Sunday Services Archive</a></p> +<p><a href="/archive-sunday-services-2017.html">2017 Sunday Services Archive</a></p> +<p><a href="/archive-sunday-services-2016.html">2016 Sunday Services Archive</a></p> +<p><a title="2015 Sunday Services Archive" href="/archive-sunday-services-2015.html">2015 Sunday Services Archive</a></p> +<p><a title="2014 Sunday Services" href="/archive-sunday-services-2014.html">2014 Sunday Services</a></p> +<p><a href="/archive-sunday-services-2013.html">2013 Sunday Servic</a><a href="/archive-sunday-services-2013.html">es</a></p> +<p> </p> +<p> </p> + </div><!-- .entry-content --> + </div><!-- #post-## --> diff --git a/src/content/pages/the-founders.html b/src/content/pages/the-founders.html new file mode 100644 index 00000000..8d8fad9e --- /dev/null +++ b/src/content/pages/the-founders.html @@ -0,0 +1,13 @@ +<div id="post-71" class="post-71 page type-page status-publish hentry"> + <h1 class="entry-title">The Founders</h1> + + <div class="entry-content"> + <p>Sun Myung Moon and his wife Hak Ja Han Moon are considered by their followers to be the True Parents of humankind. This title is a new concept in human history, referring to the belief that God is a Parent, encompassing equally masculine and feminine characteristics, and that as a Parent he loves all people as his children. God is the original True Parent, and throughout history he has been searching for a couple to manifest this love physically on the earth, and then raise up and educate all people to become true parents, embodying God’s love in all their relationships. This was God’s original ideal at the time of creating Adam and Eve, and his fervent wish was for them to become the first True Parents of history. Their failure to do so was a tragedy that broke God’s heart and led to our current world of suffering. Rev. and Mrs. Moon have dedicated their lives to teaching and practicing a lifestyle of ‘<strong>living for the sake of others</strong>‘ as the way to create ‘<strong>one family under God</strong>‘.</p> +<p>Here is an interview Rev. Moon did with Al Capp in 1972.</p> +<p>(In the first video, the sound comes on at the 25 second mark)</p> +<div class="su-column su-column-size-1-3"><div class="su-column-inner su-u-clearfix su-u-trim"><iframe src="//www.youtube.com/embed/HNyCNSynrUs" width="420" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe><br /> +</div></div> +<div class="su-column su-column-size-1-3"><div class="su-column-inner su-u-clearfix su-u-trim"><iframe src="//www.youtube.com/embed/BpBusg5ymuw" width="420" height="315" frameborder="0" allowfullscreen="allowfullscreen"></iframe><br /> +</div></div> + </div><!-- .entry-content --> + </div><!-- #post-## --> diff --git a/src/content/pages/videos.html b/src/content/pages/videos.html new file mode 100644 index 00000000..50c01311 --- /dev/null +++ b/src/content/pages/videos.html @@ -0,0 +1,48 @@ +<div id="post-44" class="post-44 page type-page status-publish hentry"> + <h1 class="entry-title">Videos</h1> + + <div class="entry-content"> + +<p>Browse our video playlist for some educational videos on the Divine Principle (the core teachings of the FFWPU) and some “feel-good” inspirational videos.</p> + + + +<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper"> +<iframe title="Faith and Family" width="800" height="600" src="https://www.youtube.com/embed/zsUv8vbGNKk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> +</div></figure> + + + +<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper"> +<iframe title="Take a Minute" width="800" height="450" src="https://www.youtube.com/embed/cp-hDwOBudE?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> +</div></figure> + + + +<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper"> +<iframe title="Rev Moon Interview 1974" width="800" height="450" src="https://www.youtube.com/embed/GiCYKJc_VwI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> +</div></figure> + + + +<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper"> +<iframe loading="lazy" title="dplife - Our Culture" width="800" height="450" src="https://www.youtube.com/embed/pPiW7zEd0J8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe> +</div></figure> + + + +<h5 class="wp-block-heading">For a written version of the <strong>Divine Principle</strong>, check out the following:</h5> + + + +<p><a href="http://www.unification.net/dp96/dp96-1-1.html#Chap1" target="_blank" rel="noreferrer noopener">The Principle of Creation</a> –  About the being we call <strong>God, </strong>the process of creation, and the purpose of life.</p> + + + +<p><a href="http://www.unification.net/dp96/dp96-1-2.html#Chap2" target="_blank" rel="noreferrer noopener">The Human Fall</a> – Understand the <strong>human condition </strong>on a deeper level, a contradictory state that desires both good and evil.</p> + + + +<p>For the full DP online, visit <a href="http://www.unification.net/dp96/" target="_blank" rel="noreferrer noopener">Exposition of the Divine Principle</a></p> + </div><!-- .entry-content --> + </div><!-- #post-## --> diff --git a/src/lib/static-pages.ts b/src/lib/static-pages.ts index fe8cdd8e..15bd05b5 100644 --- a/src/lib/static-pages.ts +++ b/src/lib/static-pages.ts @@ -3,6 +3,15 @@ import path from "node:path"; export const repoRoot = process.cwd(); export const websiteRoot = path.join(repoRoot, "website"); +export const migratedHtmlPages = new Set([ + "about.html", + "contact.html", + "events.html", + "index.html", + "services.html", + "the-founders.html", + "videos.html", +]); export function walkHtmlFiles(dir = websiteRoot): string[] { return fs.readdirSync(dir, { withFileTypes: true }).flatMap((entry) => { @@ -26,6 +35,10 @@ export function routeFromRelativePath(relativePath: string): string { return relativePath; } +export function isMigratedHtmlPage(relativePath: string): boolean { + return migratedHtmlPages.has(relativePath); +} + export function sourcePathFromRoute(route = ""): string { const relativePath = route === "" ? "index.html" : route.endsWith(".html") ? route : `${route}/index.html`; return path.join(websiteRoot, relativePath); diff --git a/src/pages/[...route].ts b/src/pages/[...route].ts index f3200708..e5984427 100644 --- a/src/pages/[...route].ts +++ b/src/pages/[...route].ts @@ -1,10 +1,10 @@ import fs from "node:fs/promises"; -import { relativeWebsitePath, routeFromRelativePath, sourcePathFromRoute, walkHtmlFiles } from "../lib/static-pages"; +import { isMigratedHtmlPage, relativeWebsitePath, routeFromRelativePath, sourcePathFromRoute, walkHtmlFiles } from "../lib/static-pages"; export function getStaticPaths() { return walkHtmlFiles() .map(relativeWebsitePath) - .filter((relativePath) => relativePath !== "index.html") + .filter((relativePath) => !isMigratedHtmlPage(relativePath)) .map((relativePath) => ({ params: { route: routeFromRelativePath(relativePath), diff --git a/src/pages/about.astro b/src/pages/about.astro new file mode 100644 index 00000000..9981d0be --- /dev/null +++ b/src/pages/about.astro @@ -0,0 +1,13 @@ +--- +import SiteLayout from "../components/SiteLayout.astro"; +import TwoColumnPage from "../components/TwoColumnPage.astro"; +import articleHtml from "../content/pages/about.html?raw"; +--- + +<SiteLayout + title="About Us – FFWPU Ireland" + bodyClass="page-template page-template-templates page-template-template-twocolumns-right page-template-templatestemplate-twocolumns-right-php page page-id-29 page-parent custom-background tribe-no-js metaslider-plugin parabola-image-three caption-light meta-light parabola_triagles parabola-menu-left" + pathname="/about.html" +> + <TwoColumnPage articleHtml={articleHtml} /> +</SiteLayout> diff --git a/src/pages/contact.astro b/src/pages/contact.astro new file mode 100644 index 00000000..d9720ee9 --- /dev/null +++ b/src/pages/contact.astro @@ -0,0 +1,14 @@ +--- +import SiteLayout from "../components/SiteLayout.astro"; +import TwoColumnPage from "../components/TwoColumnPage.astro"; +import articleHtml from "../content/pages/contact.html?raw"; +--- + +<SiteLayout + title="Contact – FFWPU Ireland" + bodyClass="page-template-default page page-id-63 custom-background tribe-no-js metaslider-plugin parabola-image-three caption-light meta-light parabola_triagles parabola-menu-left" + pathname="/contact.html" + canonical="/contact.html" +> + <TwoColumnPage articleHtml={articleHtml} /> +</SiteLayout> diff --git a/src/pages/events.astro b/src/pages/events.astro new file mode 100644 index 00000000..5854e92d --- /dev/null +++ b/src/pages/events.astro @@ -0,0 +1,49 @@ +--- +import SiteLayout from "../components/SiteLayout.astro"; +import mainHtml from "../content/pages/events.html?raw"; +--- + +<SiteLayout + title="Upcoming Events – FFWPU Ireland" + bodyClass="archive post-type-archive post-type-archive-tribe_events custom-background tribe-events-page-template tribe-no-js tribe-filter-live metaslider-plugin parabola-image-three caption-light meta-light parabola_triagles parabola-menu-left" + pathname="/events.html" +> + <Fragment slot="head"> + <script is:inline> + document.head.insertAdjacentHTML("beforeend", '<meta name="robots" id="tec_noindex" content="noindex, follow" />'); + </script> + <link rel="stylesheet" id="tec-variables-skeleton-css" href="/assets/vendor/events-calendar/common/src/resources/css/variables-skeleton.min.css?ver=6.3.2" type="text/css" media="all" /> + <link rel="stylesheet" id="tec-variables-full-css" href="/assets/vendor/events-calendar/common/src/resources/css/variables-full.min.css?ver=6.3.2" type="text/css" media="all" /> + <link rel="stylesheet" id="tribe-common-skeleton-style-css" href="/assets/vendor/events-calendar/common/src/resources/css/common-skeleton.min.css?ver=6.3.2" type="text/css" media="all" /> + <link rel="stylesheet" id="tribe-common-full-style-css" href="/assets/vendor/events-calendar/common/src/resources/css/common-full.min.css?ver=6.3.2" type="text/css" media="all" /> + <link rel="stylesheet" id="tribe-events-views-v2-bootstrap-datepicker-styles-css" href="/assets/vendor/events-calendar/vendor/bootstrap-datepicker/css/bootstrap-datepicker.standalone.min.css?ver=6.8.2.1" type="text/css" media="all" /> + <link rel="stylesheet" id="tribe-tooltipster-css-css" href="/assets/vendor/events-calendar/common/vendor/tooltipster/tooltipster.bundle.min.css?ver=6.3.2" type="text/css" media="all" /> + <link rel="stylesheet" id="tribe-events-views-v2-skeleton-css" href="/assets/vendor/events-calendar/src/resources/css/views-skeleton.min.css?ver=6.8.2.1" type="text/css" media="all" /> + <link rel="stylesheet" id="tribe-events-views-v2-full-css" href="/assets/vendor/events-calendar/src/resources/css/views-full.min.css?ver=6.8.2.1" type="text/css" media="all" /> + <link rel="stylesheet" id="tribe-events-views-v2-print-css" href="/assets/vendor/events-calendar/src/resources/css/views-print.min.css?ver=6.8.2.1" type="text/css" media="print" /> + <script is:inline type="text/javascript" src="/assets/vendor/events-calendar/common/src/resources/js/tribe-common.min.js?ver=6.3.2" id="tribe-common-js"></script> + <script is:inline type="text/javascript" src="/assets/vendor/events-calendar/src/resources/js/views/breakpoints.min.js?ver=6.8.2.1" id="tribe-events-views-v2-breakpoints-js"></script> + </Fragment> + <Fragment set:html={mainHtml} /> + <Fragment slot="scripts"> + <script is:inline type="text/javascript" src="/assets/vendor/events-calendar/src/resources/js/views/viewport.min.js?ver=6.8.2.1" id="tribe-events-views-v2-viewport-js"></script> + <script is:inline type="text/javascript" src="/assets/vendor/events-calendar/src/resources/js/views/accordion.min.js?ver=6.8.2.1" id="tribe-events-views-v2-accordion-js"></script> + <script is:inline type="text/javascript" src="/assets/vendor/events-calendar/src/resources/js/views/view-selector.min.js?ver=6.8.2.1" id="tribe-events-views-v2-view-selector-js"></script> + <script is:inline type="text/javascript" src="/assets/vendor/events-calendar/vendor/bootstrap-datepicker/js/bootstrap-datepicker.min.js?ver=6.8.2.1" id="tribe-events-views-v2-bootstrap-datepicker-js"></script> + <script is:inline type="text/javascript" src="/assets/vendor/events-calendar/src/resources/js/views/datepicker.min.js?ver=6.8.2.1" id="tribe-events-views-v2-datepicker-js"></script> + <script is:inline type="text/javascript" src="/assets/vendor/events-calendar/src/resources/js/views/ical-links.min.js?ver=6.8.2.1" id="tribe-events-views-v2-ical-links-js"></script> + <script is:inline type="text/javascript" src="/assets/vendor/events-calendar/src/resources/js/views/events-bar-inputs.min.js?ver=6.8.2.1" id="tribe-events-views-v2-events-bar-inputs-js"></script> + <script is:inline type="text/javascript" src="/assets/vendor/events-calendar/src/resources/js/views/events-bar.min.js?ver=6.8.2.1" id="tribe-events-views-v2-events-bar-js"></script> + <script is:inline type="text/javascript" src="/assets/vendor/events-calendar/common/vendor/tooltipster/tooltipster.bundle.min.js?ver=6.3.2" id="tribe-tooltipster-js"></script> + <script is:inline type="text/javascript" src="/assets/vendor/events-calendar/src/resources/js/views/tooltip.min.js?ver=6.8.2.1" id="tribe-events-views-v2-tooltip-js"></script> + <script is:inline type="text/javascript" src="/assets/vendor/events-calendar/src/resources/js/views/navigation-scroll.min.js?ver=6.8.2.1" id="tribe-events-views-v2-navigation-scroll-js"></script> + <script is:inline type="text/javascript" src="/assets/vendor/events-calendar/src/resources/js/views/multiday-events.min.js?ver=6.8.2.1" id="tribe-events-views-v2-multiday-events-js"></script> + <script is:inline type="text/javascript" src="/assets/vendor/events-calendar/src/resources/js/views/month-mobile-events.min.js?ver=6.8.2.1" id="tribe-events-views-v2-month-mobile-events-js"></script> + <script is:inline type="text/javascript" src="/assets/vendor/events-calendar/src/resources/js/views/month-grid.min.js?ver=6.8.2.1" id="tribe-events-views-v2-month-grid-js"></script> + <script is:inline type="text/javascript" src="/assets/vendor/events-calendar/common/src/resources/js/utils/query-string.min.js?ver=6.3.2" id="tribe-query-string-js"></script> + <script is:inline src="/assets/vendor/events-calendar/common/src/resources/js/underscore-before.js"></script> + <script is:inline type="text/javascript" src="/assets/vendor/underscore.min.js?ver=1.13.4" id="underscore-js"></script> + <script is:inline src="/assets/vendor/events-calendar/common/src/resources/js/underscore-after.js"></script> + <script is:inline defer type="text/javascript" src="/assets/vendor/events-calendar/src/resources/js/views/manager.min.js?ver=6.8.2.1" id="tribe-events-views-v2-manager-js"></script> + </Fragment> +</SiteLayout> diff --git a/src/pages/index.astro b/src/pages/index.astro new file mode 100644 index 00000000..1ccdd7fc --- /dev/null +++ b/src/pages/index.astro @@ -0,0 +1,18 @@ +--- +import SiteLayout from "../components/SiteLayout.astro"; +import mainHtml from "../content/pages/index.html?raw"; +--- + +<SiteLayout + title="FFWPU Ireland – Official website of FFWPU Ireland" + bodyClass="home blog custom-background tribe-no-js metaslider-plugin parabola-image-three caption-light meta-light parabola_triagles magazine-layout parabola-menu-left" + pathname="/index.html" + parabolaSettings={{ masonry: "1", magazine: "1", mobile: "1", fitvids: "1" }} +> + <script is:inline slot="head" type="text/javascript" src="/assets/theme/parabola/js/nivo-slider.js?ver=2.4.1" id="parabola-nivoSlider-js"></script> + <Fragment set:html={mainHtml} /> + <Fragment slot="scripts"> + <script is:inline type="text/javascript" src="/assets/vendor/imagesloaded.min.js?ver=5.0.0" id="imagesloaded-js"></script> + <script is:inline type="text/javascript" src="/assets/vendor/masonry.min.js?ver=4.2.2" id="masonry-js"></script> + </Fragment> +</SiteLayout> diff --git a/src/pages/index.html.ts b/src/pages/index.html.ts deleted file mode 100644 index 771e14b8..00000000 --- a/src/pages/index.html.ts +++ /dev/null @@ -1,12 +0,0 @@ -import fs from "node:fs/promises"; -import { sourcePathFromRoute } from "../lib/static-pages"; - -export async function GET() { - const html = await fs.readFile(sourcePathFromRoute(), "utf8"); - - return new Response(html, { - headers: { - "content-type": "text/html; charset=utf-8", - }, - }); -} diff --git a/src/pages/services.astro b/src/pages/services.astro new file mode 100644 index 00000000..3ef64237 --- /dev/null +++ b/src/pages/services.astro @@ -0,0 +1,13 @@ +--- +import SiteLayout from "../components/SiteLayout.astro"; +import TwoColumnPage from "../components/TwoColumnPage.astro"; +import articleHtml from "../content/pages/services.html?raw"; +--- + +<SiteLayout + title="Sunday Services – FFWPU Ireland" + bodyClass="page-template-default page page-id-33 custom-background tribe-no-js metaslider-plugin parabola-image-three caption-light meta-light parabola_triagles parabola-menu-left" + pathname="/services.html" +> + <TwoColumnPage articleHtml={articleHtml} /> +</SiteLayout> diff --git a/src/pages/the-founders.astro b/src/pages/the-founders.astro new file mode 100644 index 00000000..dd3407ea --- /dev/null +++ b/src/pages/the-founders.astro @@ -0,0 +1,14 @@ +--- +import SiteLayout from "../components/SiteLayout.astro"; +import TwoColumnPage from "../components/TwoColumnPage.astro"; +import articleHtml from "../content/pages/the-founders.html?raw"; +--- + +<SiteLayout + title="The Founders – FFWPU Ireland" + bodyClass="page-template-default page page-id-71 custom-background tribe-no-js metaslider-plugin parabola-image-three caption-light meta-light parabola_triagles parabola-menu-left" + pathname="/the-founders.html" +> + <link slot="head" rel="stylesheet" id="su-shortcodes-css" href="/assets/vendor/shortcodes/includes/css/shortcodes.css?ver=7.3.1" type="text/css" media="all" /> + <TwoColumnPage articleHtml={articleHtml} /> +</SiteLayout> diff --git a/src/pages/videos.astro b/src/pages/videos.astro new file mode 100644 index 00000000..8934c73e --- /dev/null +++ b/src/pages/videos.astro @@ -0,0 +1,13 @@ +--- +import SiteLayout from "../components/SiteLayout.astro"; +import TwoColumnPage from "../components/TwoColumnPage.astro"; +import articleHtml from "../content/pages/videos.html?raw"; +--- + +<SiteLayout + title="Videos – FFWPU Ireland" + bodyClass="page-template-default page page-id-44 custom-background tribe-no-js metaslider-plugin parabola-image-three caption-light meta-light parabola_triagles parabola-menu-left" + pathname="/videos.html" +> + <TwoColumnPage articleHtml={articleHtml} /> +</SiteLayout>