diff --git a/www/reports/migration-summary.md b/www/reports/migration-summary.md
index 5bde2dc..a3acb1d 100644
--- a/www/reports/migration-summary.md
+++ b/www/reports/migration-summary.md
@@ -44,6 +44,9 @@ Implemented fidelity work includes:
- Restored the consultation form section's injected background image.
- Added a dedicated live-derived team card grid rather than presenting the
extracted team content as a generic article.
+- Rebuilt the contact page around the live two-column content/form section and
+ full-width Leaflet map while retaining local clickable obfuscated phone
+ links.
- Rebuilt library indexes and blog-post presentation around the live sidebar,
article list, byline, featured-image, and counter patterns.
- Converted FAQ-bearing posts to MDX and recreated their live-style accordions
@@ -77,6 +80,12 @@ backend and spam-protection TODO comments. Submission is intentionally
disabled. Appointment and enrollment calls to action route to the static
consultation page rather than retaining the production Jotform backend.
+## External Dependencies
+
+- The contact page map intentionally matches the live Leaflet/OpenStreetMap
+ implementation and loads Leaflet from `unpkg.com` plus map tiles from
+ `tile.openstreetmap.org`.
+
## Multilingual
- Spanish has the full live-derived homepage, translated service pages,
@@ -128,10 +137,15 @@ unavailable.
- `npm run generate:sitemap`: passed; generated 97 URLs.
- `npm run generate:redirects`: passed.
- All migration `.mjs` tools and the sandbox DNS helper pass `node --check`.
-- The Astro compiler parsed all 33 `.astro` files successfully.
+- The Astro compiler parsed all 49 `.astro` files successfully.
- `npm run build`: blocked before compilation because this autonomous sandbox
cannot resolve `localhost`, causing `getaddrinfo EAI_AGAIN localhost`.
- `npm run build:sandbox`: passed; generated 97 static pages.
+- Live contact-page structure was inspected in browser at a 1280px desktop
+ viewport; local generated HTML was checked for the contact layout, Leaflet
+ assets, map container, and obfuscated clickable phone script. Local browser
+ rendering was blocked because the Playwright browser cannot reach shell
+ loopback servers and blocks `file:` URLs in this environment.
- Nix shell verification and `npm audit` retrieval were blocked by sandbox
proxy/cache network resets.
diff --git a/www/src/components/ContactForm.astro b/www/src/components/ContactForm.astro
new file mode 100644
index 0000000..4b1087f
--- /dev/null
+++ b/www/src/components/ContactForm.astro
@@ -0,0 +1,84 @@
+---
+import Button from './Button.astro';
+import EmailObfuscation from './EmailObfuscation.astro';
+
+interface Props {
+ title?: string;
+}
+
+const { title = 'Contact AIA' } = Astro.props;
+---
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/www/src/content/pages/en/contact.mdx b/www/src/content/pages/en/contact.mdx
index 2268356..2829491 100644
--- a/www/src/content/pages/en/contact.mdx
+++ b/www/src/content/pages/en/contact.mdx
@@ -8,23 +8,24 @@ translationKey: "contact"
draft: false
---
import EmailObfuscation from '../../../components/EmailObfuscation.astro';
+import Button from '../../../components/Button.astro';
## Schedule a Tour
Reach out to one of our expert Client Advocates to see if ABA-integrated therapy is right for your learner.
- Schedule Tour
+
## Reach Out
If you have questions about any of our services and programs, feel free to use the contact form on this page. You may also call or email using the following information.
-General Inquiries:
+**General Inquiries:**
-Billing Inquiries:
+**Billing Inquiries:**
-Email:
+**Email:**
-Address: 8901 E. Raintree Drive, St #160 Scottsdale, AZ 85260
+**Address:** 8901 E. Raintree Drive, St #160 Scottsdale, AZ 85260
-Hours: Monday - Friday, 8am - 6pm MST
+**Hours:** Monday - Friday, 8am - 6pm MST
diff --git a/www/src/content/pages/es/contact.mdx b/www/src/content/pages/es/contact.mdx
index ed67543..8902c48 100644
--- a/www/src/content/pages/es/contact.mdx
+++ b/www/src/content/pages/es/contact.mdx
@@ -8,25 +8,24 @@ translationKey: "contact"
draft: false
---
import EmailObfuscation from '../../../components/EmailObfuscation.astro';
+import Button from '../../../components/Button.astro';
## Programar una visita
Comuníquese con uno de nuestros defensores de clientes expertos para ver si la terapia integrada con ABA es adecuada para su alumno.
- Programar visita
+
## Comunícate
Si tiene preguntas sobre alguno de nuestros servicios y programas, no dude en utilizar el formulario de contacto de esta página. También puede llamar o enviar un correo electrónico utilizando la siguiente información.
-Consultas generales:
+**Consultas generales:**
-Consultas de facturación:
+**Consultas de facturación:**
-Correo electrónico:
+**Correo electrónico:**
-Dirección: 8901 E. Raintree Drive, St #160 Scottsdale, AZ 85260
+**Dirección:** 8901 E. Raintree Drive, St #160 Scottsdale, AZ 85260
-Horas: Lunes - Viernes, 8am - 6pm MST
-
-### Contactar a AIA
+**Horas:** Lunes - Viernes, 8am - 6pm MST
diff --git a/www/src/layouts/BaseLayout.astro b/www/src/layouts/BaseLayout.astro
index 41a08ef..3c423c5 100644
--- a/www/src/layouts/BaseLayout.astro
+++ b/www/src/layouts/BaseLayout.astro
@@ -31,6 +31,7 @@ const organizationSchema = {
+
diff --git a/www/src/layouts/PageLayout.astro b/www/src/layouts/PageLayout.astro
index b56c8f2..703ceeb 100644
--- a/www/src/layouts/PageLayout.astro
+++ b/www/src/layouts/PageLayout.astro
@@ -5,11 +5,12 @@ import TeamPage from '../components/pages/TeamPage.astro';
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 FaqPage from '../components/pages/FaqPage.astro';
import PageHero from '../components/PageHero.astro';
import { pageHeroImages } from '../data/page-visuals';
const { entry } = Astro.props;
-const showForm = ['client-consultation', 'contact', 'schedule-consultation', 'referrals'].includes(entry.data.slug);
+const showForm = ['client-consultation', 'schedule-consultation', 'referrals'].includes(entry.data.slug);
const serviceTitles: Record> = {
en: {
'aba-therapy': 'Behavioral',
@@ -53,6 +54,7 @@ const isService = Boolean(serviceTitles[entry.data.lang]?.[entry.data.slug]);
const heroImage = pageHeroImages[entry.data.slug];
---
+ {entry.data.slug === 'contact' && }
{entry.data.slug === 'team' && entry.data.lang === 'en'
?
@@ -64,6 +66,8 @@ const heroImage = pageHeroImages[entry.data.slug];
?
: entry.data.slug === 'faqs' && entry.data.lang === 'en'
?
+ : entry.data.slug === 'contact'
+ ?
: }
{showForm && }