diff --git a/www/reports/migration-summary.md b/www/reports/migration-summary.md index 5ff93da..9f8c21e 100644 --- a/www/reports/migration-summary.md +++ b/www/reports/migration-summary.md @@ -4367,3 +4367,40 @@ because credentials were unavailable. No private markup or resources are tracked The Spanish extra dropdown choices remain a Jotform Builder review item, with fixed Astro context/locale URLs verified. See [focused evidence and remaining acceptance](phase-9-drawer-portal-corrections-2026-10-30.md). + +## 2026-11-01 — Tour map and CTA restoration + +Compared the public `/tour` HTML retrieved with normal TLS validation on +2026-11-01 against the migrated page. The source ends with a centered filled +“Schedule a Tour Today” link to `/client-consultation`, followed by a full-width +360px Leaflet 1.9.4 map. Restored the CTA using the existing AIA `Button` +component and added a Tour-only map below the content container. + +The map preserves the source view `[33.63, -111.88756]`, zoom 12, clinic marker +`[33.617746, -111.88756]`, OpenStreetMap attribution, 124px logo and directions +popup. Leaflet CSS/JS use the same version and SRI hashes already used by Contact; +tile requests go to `tile.openstreetmap.org`. These are external map dependencies, +not self-hosted assets. No analytics, forms, clinical copy, metadata or routes +changed. The logo is local. Intentional accessibility/reliability improvements: +meaningful region/marker labels, visible link focus, safe new-tab links, correctly +encoded directions destination and address/directions fallback when JavaScript +or Leaflet is unavailable. Existing nine-photo gallery and captions are unchanged. + +Validation: Astro check/build passed (128 pages); link audit found zero broken +internal links; five Phase 8 accessibility tests and the focused nine-photo Tour +regression passed. Chromium comparison against the retrieved live HTML and the +local build at 390px and 1440px passed: both maps span the viewport at 360px +height, all 4/12 requested map tiles loaded, marker/directions popup rendered, +and the Astro page had no horizontal overflow or JavaScript exceptions. The +CTA matches source fill/border `#ffbd59`, text `#254080` and no underline, using +the established Astro button proportions rather than copying HubSpot CSS. +No-JavaScript address/directions and consultation-link fallback passed. + +Evidence and full-page/map screenshots: `/tmp/aia-tour-review-hknOnA/`. +Read-only map/static asset GETs were allowed; unrelated vendor scripts and +tracking requests were blocked. Consequently the live reference reported missing +jQuery errors, while the Astro page reported none; this was a bounded map/CTA +comparison, not validation of all live HubSpot functionality. An initial test +selector matched both directions and the popup-close link; narrowing it to the +external directions link resolved the test-only failure. No account changes, +submissions, deployment, staging or commit occurred. diff --git a/www/src/components/TourMap.astro b/www/src/components/TourMap.astro new file mode 100644 index 0000000..b05527a --- /dev/null +++ b/www/src/components/TourMap.astro @@ -0,0 +1,50 @@ +--- +const directions = 'https://www.google.com/maps/dir/?api=1&destination=8901%20E%20Raintree%20Dr%20Ste%20160%2C%20Scottsdale%2C%20AZ%2085260'; +--- +
+
+

+ Arizona Institute for Autism — 8901 E Raintree Dr, Ste 160, Scottsdale, AZ 85260. + Get Directions +

+
+ + + + + diff --git a/www/src/content/pages/en/tour.mdx b/www/src/content/pages/en/tour.mdx index c499f60..8938444 100644 --- a/www/src/content/pages/en/tour.mdx +++ b/www/src/content/pages/en/tour.mdx @@ -8,6 +8,7 @@ translationKey: "tour" draft: false --- import ImageCarousel from '../../../components/ImageCarousel.astro'; +import Button from '../../../components/Button.astro'; import tourGallery from '../../../data/tour-gallery.json'; ## Tour Arizona Institute for Autism @@ -50,4 +51,6 @@ Arizona's Leading Modern Learning Experience for Children Diagnosed with Autism - On-Site Clinical Case Supervisor -[Schedule a Tour Today](/client-consultation) +
+ +
diff --git a/www/src/layouts/PageLayout.astro b/www/src/layouts/PageLayout.astro index 2fe11a8..7f7358b 100644 --- a/www/src/layouts/PageLayout.astro +++ b/www/src/layouts/PageLayout.astro @@ -7,6 +7,7 @@ import AboutPage from '../components/pages/AboutPage.astro'; import ServicesPage from '../components/pages/ServicesPage.astro'; import CareersPage from '../components/pages/CareersPage.astro'; import ContactPage from '../components/pages/ContactPage.astro'; +import TourMap from '../components/TourMap.astro'; import FaqPage from '../components/pages/FaqPage.astro'; import InsurancePage from '../components/pages/InsurancePage.astro'; import PageHero from '../components/PageHero.astro'; @@ -55,13 +56,14 @@ const pageTitles: Record> = { const bannerTitle = serviceTitles[entry.data.lang]?.[entry.data.slug] || pageTitles[entry.data.lang]?.[entry.data.slug] || entry.data.title.split('|')[0].trim(); const isService = Boolean(serviceTitles[entry.data.lang]?.[entry.data.slug]); const route = entry.data.lang === 'en' ? `/${entry.data.slug}` : `/${entry.data.lang}/${entry.data.slug}`; +const isTour = entry.data.lang === 'en' && entry.data.slug === 'tour'; const heroImage = pageHeroImages[entry.data.slug]; if (entry.data.slug === 'team' && entry.data.lang === 'en' && !entry.data.team) { throw new Error('The English Team page requires structured team frontmatter.'); } --- - {entry.data.slug === 'contact' && } + {(entry.data.slug === 'contact' || isTour) && } {entry.data.slug === 'team' && entry.data.lang === 'en' ? @@ -82,6 +84,7 @@ if (entry.data.slug === 'team' && entry.data.lang === 'en' && !entry.data.team) : entry.data.slug === 'contact' ? :
} + {isTour && } {isService && (entry.data.lang === 'en' || entry.data.lang === 'es') && } {showForm && }