diff --git a/www/reports/accessibility-audit.md b/www/reports/accessibility-audit.md index 4572d0e..49b095f 100644 --- a/www/reports/accessibility-audit.md +++ b/www/reports/accessibility-audit.md @@ -7,6 +7,9 @@ - Language and direction attributes for English, Spanish, and Arabic. - Native `details` elements for mobile navigation and FAQ accordions. - Form labels, autocomplete hints, disabled submission state, and explanatory text. +- Service inquiry drawers use native modal dialogs with focus containment, + Escape, backdrop, and labeled close-button dismissal plus reduced-motion + support. - Reduced decorative image announcements through empty alt text where appropriate. - Responsive typography and layouts without fixed text sizing. - Language-switcher choices are limited to routes that actually exist. diff --git a/www/reports/migration-summary.md b/www/reports/migration-summary.md index fb2f833..ae2398f 100644 --- a/www/reports/migration-summary.md +++ b/www/reports/migration-summary.md @@ -80,6 +80,13 @@ 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. +The three English service pages also reproduce the live site's delayed, +right-edge inquiry drawers, including their page-specific enrollment copy, +shared field set, modal overlay, and responsive layout. These drawer forms are +static and their submit controls remain disabled until a production backend +and spam protection are selected; this is an intentional functional and visual +deviation from the live HubSpot form. + ## External Dependencies - The contact page map intentionally matches the live Leaflet/OpenStreetMap diff --git a/www/src/components/ServiceInquiryDrawer.astro b/www/src/components/ServiceInquiryDrawer.astro new file mode 100644 index 0000000..cefb558 --- /dev/null +++ b/www/src/components/ServiceInquiryDrawer.astro @@ -0,0 +1,511 @@ +--- +import ContactObfuscation from './ContactObfuscation.astro'; + +type ServiceKey = 'aba-therapy' | 'autism-evaluations' | 'learner-social-club'; + +interface Props { + service: ServiceKey; +} + +const serviceCopy: Record = { + 'aba-therapy': { + heading: ['No WAITLIST!'], + serviceName: 'ABA Therapy', + statusLead: 'is', + status: 'currently accepting new patients', + prompt: "To help guarantee your child's admission to our program, please provide their information." + }, + 'autism-evaluations': { + heading: ['Enrollment', 'Now Open'], + serviceName: 'Autism Evaluations', + statusLead: 'are', + status: 'now open for enrollment', + prompt: "To help guarantee your child's admission into one of our upcoming programs, please provide their information." + }, + 'learner-social-club': { + heading: ['Enrollment', 'Now Open'], + serviceName: 'Learner Social Club', + statusLead: 'is', + status: 'now open for enrollment', + prompt: "To help guarantee your child's spot in one of our upcoming group enrichment programs, please provide their information." + } +}; + +const { service } = Astro.props; +const copy = serviceCopy[service]; +const drawerId = `service-inquiry-${service}`; +const titleId = `${drawerId}-title`; +const noteId = `${drawerId}-note`; +--- + + + + +
+

+ {copy.heading.map((line, index) => {index > 0 &&
}{line}
)} +

+

+ Arizona Institute for Autism's
+ {copy.serviceName}
+ {copy.statusLead} {copy.status}. +

+

{copy.prompt}

+
+ +
+ + +
+ + + + + + + + + + + + +
+ + +
+
+ + + + diff --git a/www/src/layouts/PageLayout.astro b/www/src/layouts/PageLayout.astro index 703ceeb..d16602a 100644 --- a/www/src/layouts/PageLayout.astro +++ b/www/src/layouts/PageLayout.astro @@ -8,6 +8,7 @@ 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 ServiceInquiryDrawer from '../components/ServiceInquiryDrawer.astro'; import { pageHeroImages } from '../data/page-visuals'; const { entry } = Astro.props; const showForm = ['client-consultation', 'schedule-consultation', 'referrals'].includes(entry.data.slug); @@ -69,5 +70,6 @@ const heroImage = pageHeroImages[entry.data.slug]; : entry.data.slug === 'contact' ? :
} + {isService && entry.data.lang === 'en' && } {showForm && }