fix(a11y): reconcile responsive layouts and multilingual UI
This commit is contained in:
59 files changed
+27178
-187
No files matched your search
@@ -21,7 +21,7 @@ const readMore = { en: 'Read More', es: 'Leer Más', ar: 'اقرأ المزيد'
|
||||
<p>{post.data.description}</p>
|
||||
<div class="blog-card-footer" style="align-items:center;display:flex;justify-content:space-between;gap:var(--space-lg);margin-top:auto;">
|
||||
<a class="text-link" href={href}>{readMore}</a>
|
||||
<LikeViewCounter slug={post.data.slug} />
|
||||
<LikeViewCounter slug={post.data.slug} lang={post.data.lang} />
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -29,7 +29,7 @@ const readMore = { en: 'Read More', es: 'Leer Más', ar: 'اقرأ المزيد'
|
||||
<style>
|
||||
.author-byline { color: inherit; text-decoration: none; }
|
||||
.author-byline:hover { text-decoration: underline; }
|
||||
.author-byline:focus-visible { outline: 3px solid var(--color-accent); outline-offset: 3px; }
|
||||
.author-byline:focus-visible { outline: 3px solid var(--color-primary); outline-offset: 3px; }
|
||||
.blog-card-meta { align-items: center; display: flex; font-size: .78rem; gap: .75rem; }
|
||||
.blog-card-meta img { aspect-ratio: 1; border-radius: 50%; height: 42px; width: 42px; }
|
||||
.blog-card { background: white; border: 0; border-radius: 4px; box-shadow: rgba(54, 48, 48, 0.28) 0 0 12px 0; display: flex; margin-bottom: 40px; overflow: hidden; }
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
---
|
||||
import footerData from '../data/blog-footers.json';
|
||||
import { articleMessages } from '../utils/article-messages';
|
||||
|
||||
interface FooterLink {
|
||||
title: string;
|
||||
@@ -17,27 +18,28 @@ interface FooterData {
|
||||
related: RelatedPost[];
|
||||
}
|
||||
|
||||
const { entryId } = Astro.props as { entryId: string };
|
||||
const { entryId, lang } = Astro.props as { entryId: string; lang: string };
|
||||
const text = articleMessages(lang);
|
||||
const footer = (footerData as Record<string, FooterData>)[entryId];
|
||||
---
|
||||
|
||||
{footer && (
|
||||
<footer class="blog-post-footer">
|
||||
{(footer.previous || footer.next) && (
|
||||
<nav class="post-pagination" aria-label="Article navigation">
|
||||
<nav class="post-pagination" aria-label={text.navigation}>
|
||||
<div class="post-pagination__item post-pagination__item--previous">
|
||||
{footer.previous && (
|
||||
<>
|
||||
<span>Previous Post</span>
|
||||
<h2><a href={footer.previous.href}>{footer.previous.title}</a></h2>
|
||||
<span>{text.previous}</span>
|
||||
<h2><a href={footer.previous.href}><bdi>{footer.previous.title}</bdi></a></h2>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
<div class="post-pagination__item post-pagination__item--next">
|
||||
{footer.next && (
|
||||
<>
|
||||
<span>Next Post</span>
|
||||
<h2><a href={footer.next.href}>{footer.next.title}</a></h2>
|
||||
<span>{text.next}</span>
|
||||
<h2><a href={footer.next.href}><bdi>{footer.next.title}</bdi></a></h2>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
@@ -47,14 +49,14 @@ const footer = (footerData as Record<string, FooterData>)[entryId];
|
||||
{footer.related.length > 0 && (
|
||||
<section class="related-posts" aria-labelledby={`related-posts-${entryId.replace('/', '-')}`}>
|
||||
<div class="container">
|
||||
<h2 id={`related-posts-${entryId.replace('/', '-')}`}>Similar Blog Posts</h2>
|
||||
<h2 id={`related-posts-${entryId.replace('/', '-')}`}>{text.related}</h2>
|
||||
<div class="related-posts__list">
|
||||
{footer.related.map((post) => (
|
||||
<article class="related-post">
|
||||
<a class="related-post__image-link" href={post.href} aria-label={`Read full post: ${post.title}`}>
|
||||
<a class="related-post__image-link" href={post.href} aria-label={`${text.readFull}: ${post.title}`}>
|
||||
<img src={post.image} alt={post.alt} loading="lazy" />
|
||||
</a>
|
||||
<h3><a href={post.href}>{post.title}</a></h3>
|
||||
<h3><a href={post.href}><bdi>{post.title}</bdi></a></h3>
|
||||
</article>
|
||||
))}
|
||||
</div>
|
||||
@@ -104,7 +106,7 @@ const footer = (footerData as Record<string, FooterData>)[entryId];
|
||||
.post-pagination a:focus-visible,
|
||||
.related-post a:hover,
|
||||
.related-post a:focus-visible {
|
||||
color: var(--color-accent);
|
||||
color: var(--color-primary-dark);
|
||||
}
|
||||
|
||||
.related-posts {
|
||||
|
||||
@@ -30,6 +30,12 @@ const title = Astro.props.title ?? text.contactHeading;
|
||||
</form>
|
||||
|
||||
<style>
|
||||
.contact-form-card__note :global(a) {
|
||||
color: var(--color-primary);
|
||||
text-decoration: underline;
|
||||
text-underline-offset: .15em;
|
||||
}
|
||||
|
||||
.contact-form-card {
|
||||
background: white;
|
||||
border-radius: 4px;
|
||||
|
||||
@@ -561,12 +561,14 @@ if (schema) {
|
||||
}
|
||||
|
||||
.faq-accordion--source .faq-answer__inner :global(a) {
|
||||
color: var(--color-accent-strong);
|
||||
color: var(--color-primary);
|
||||
text-decoration: underline;
|
||||
text-underline-offset: .15em;
|
||||
}
|
||||
|
||||
.faq-accordion--source .faq-answer__inner :global(a:hover),
|
||||
.faq-accordion--source .faq-answer__inner :global(a:focus-visible) {
|
||||
color: var(--color-accent);
|
||||
color: var(--color-primary-dark);
|
||||
}
|
||||
|
||||
.faq-accordion--page {
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
---
|
||||
interface Slide { src: string; alt: string; caption: string }
|
||||
interface Props { id: string; label: string; slides: Slide[] }
|
||||
const { id, label, slides } = Astro.props;
|
||||
---
|
||||
<section class="image-carousel" id={id} aria-label={label} data-image-carousel>
|
||||
<div class="image-carousel__stage">
|
||||
{slides.map((slide, index) => (
|
||||
<figure id={`${id}-slide-${index + 1}`} data-slide>
|
||||
<img src={slide.src} alt={slide.alt} width="948" height="534" loading={index === 0 ? 'eager' : 'lazy'} />
|
||||
<figcaption>{slide.caption}</figcaption>
|
||||
</figure>
|
||||
))}
|
||||
<div data-carousel-controls hidden>
|
||||
<button class="image-carousel__previous" type="button" aria-label="Previous slide" data-previous><span aria-hidden="true">❮</span></button>
|
||||
<button class="image-carousel__next" type="button" aria-label="Next slide" data-next><span aria-hidden="true">❯</span></button>
|
||||
</div>
|
||||
</div>
|
||||
<div data-carousel-controls hidden>
|
||||
<div class="image-carousel__thumbnails" role="group" aria-label="Choose a tour photo">
|
||||
{slides.map((slide, index) => (
|
||||
<button type="button" data-thumbnail aria-label={`Show photo ${index + 1}: ${slide.caption}`} aria-controls={`${id}-slide-${index + 1}`}>
|
||||
<img src={slide.src} alt="" width="80" height="80" loading="lazy" />
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
<p class="sr-only" data-carousel-status role="status" aria-atomic="true"></p>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<script>
|
||||
document.querySelectorAll<HTMLElement>('[data-image-carousel]').forEach(carousel => {
|
||||
const slides = [...carousel.querySelectorAll<HTMLElement>('[data-slide]')];
|
||||
const thumbnails = [...carousel.querySelectorAll<HTMLButtonElement>('[data-thumbnail]')];
|
||||
const status = carousel.querySelector<HTMLElement>('[data-carousel-status]')!;
|
||||
let current = 0;
|
||||
const show = (index: number, announce = true) => {
|
||||
current = (index + slides.length) % slides.length;
|
||||
slides.forEach((slide, i) => {
|
||||
slide.hidden = i !== current;
|
||||
thumbnails[i].setAttribute('aria-pressed', String(i === current));
|
||||
});
|
||||
if (announce) status.textContent = `Photo ${current + 1} of ${slides.length}: ${slides[current].querySelector('figcaption')?.textContent}`;
|
||||
};
|
||||
slides.forEach((slide, index) => {
|
||||
slide.setAttribute('role', 'group');
|
||||
slide.setAttribute('aria-roledescription', 'slide');
|
||||
slide.setAttribute('aria-label', `${index + 1} of ${slides.length}`);
|
||||
});
|
||||
carousel.setAttribute('aria-roledescription', 'carousel');
|
||||
carousel.querySelector('[data-previous]')!.addEventListener('click', () => show(current - 1));
|
||||
carousel.querySelector('[data-next]')!.addEventListener('click', () => show(current + 1));
|
||||
thumbnails.forEach((button, index) => button.addEventListener('click', () => show(index)));
|
||||
carousel.addEventListener('keydown', event => {
|
||||
if (!(event.target instanceof HTMLButtonElement)) return;
|
||||
if (event.key === 'ArrowRight' || event.key === 'ArrowLeft') {
|
||||
event.preventDefault(); show(current + (event.key === 'ArrowRight' ? 1 : -1));
|
||||
}
|
||||
});
|
||||
show(0, false);
|
||||
carousel.dataset.enhanced = 'true';
|
||||
carousel.querySelectorAll<HTMLElement>('[data-carousel-controls]').forEach(control => control.hidden = false);
|
||||
});
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.image-carousel { max-width: 1000px; margin: 2rem auto; }
|
||||
.image-carousel__stage { position: relative; }
|
||||
.image-carousel [data-carousel-status] { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
|
||||
.image-carousel figure { position: relative; margin: 0 0 2rem; }
|
||||
.image-carousel [hidden] { display: none !important; }
|
||||
.image-carousel figure img { display: block; width: 100%; height: auto; margin: 0; }
|
||||
.image-carousel figcaption { margin: 0; padding: .5rem .75rem; background: var(--color-primary); color: white; text-align: center; font-size: 1rem; line-height: 1.4; }
|
||||
.image-carousel[data-enhanced] figure { margin-bottom: 1rem; }
|
||||
.image-carousel[data-enhanced] figcaption { position: absolute; bottom: 0; width: 100%; background: rgb(37 64 128 / 90%); }
|
||||
.image-carousel button { cursor: pointer; }
|
||||
.image-carousel__previous, .image-carousel__next { position: absolute; top: 50%; transform: translateY(-50%); min-width: 44px; min-height: 44px; padding: 1rem; border: 0; background: rgb(255 255 255 / 95%); color: var(--color-primary); font-size: 2rem; line-height: 1; border-radius: 3px; }
|
||||
.image-carousel__previous { left: 0; }
|
||||
.image-carousel__next { right: 0; }
|
||||
.image-carousel__previous:hover, .image-carousel__next:hover { background: var(--color-primary); color: white; }
|
||||
.image-carousel button:focus-visible { outline: 3px solid var(--color-primary); outline-offset: 3px; box-shadow: 0 0 0 6px white; }
|
||||
.image-carousel__thumbnails { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px; padding: 6px; }
|
||||
.image-carousel__thumbnails button { padding: 2px; border: 3px solid transparent; background: white; border-radius: 0; }
|
||||
.image-carousel__thumbnails img { display: block; width: 80px; height: 80px; object-fit: cover; margin: 0; opacity: .6; }
|
||||
.image-carousel__thumbnails button[aria-pressed="true"] { border-color: var(--color-primary); }
|
||||
.image-carousel__thumbnails button:is(:hover, [aria-pressed="true"]) img { opacity: 1; }
|
||||
@media (max-width: 479px) {
|
||||
.image-carousel__previous, .image-carousel__next { padding: .75rem; font-size: 1rem; }
|
||||
.image-carousel[data-enhanced] figcaption { position: static; font-size: .875rem; }
|
||||
.image-carousel__previous, .image-carousel__next { top: 30%; }
|
||||
}
|
||||
/* No automatic rotation or animation: reduced-motion users get the same stable slides. */
|
||||
</style>
|
||||
@@ -46,12 +46,12 @@ const hasAlternatives = choices.some(({ route }) => route !== pathname);
|
||||
.lang-switcher summary, .lang-switcher__static { align-items: center; color: var(--color-primary); display: flex; font-size: .85rem; font-weight: 700; gap: .35rem; min-height: 44px; }
|
||||
.lang-switcher summary { cursor: pointer; list-style: none; }
|
||||
.lang-switcher summary::-webkit-details-marker { display: none; }
|
||||
.lang-switcher summary:focus-visible, .lang-switcher__menu a:focus-visible { outline: 3px solid var(--color-accent); outline-offset: 3px; }
|
||||
.lang-switcher summary:focus-visible, .lang-switcher__menu a:focus-visible { outline: 3px solid var(--color-primary); outline-offset: 3px; }
|
||||
.lang-switcher summary svg { flex-shrink: 0; }
|
||||
.lang-switcher__menu { background: white; box-shadow: var(--shadow-md); inset-inline-start: 50%; list-style: none; margin: 0; min-width: 150px; padding: .5rem 0 .4rem; position: absolute; top: 100%; transform: translateX(-50%); z-index: 10; }
|
||||
:global(html[dir="rtl"]) .lang-switcher__menu { transform: translateX(50%); }
|
||||
.lang-switcher__menu a { color: rgb(83 83 91); display: flex; flex-direction: column; font-size: .85rem; padding: .45rem .9rem; text-decoration: none; white-space: nowrap; }
|
||||
.lang-switcher__menu a:hover { background: var(--color-primary); color: white; }
|
||||
.lang-switcher__menu a[aria-current="page"] { color: var(--color-accent-strong); font-weight: 700; }
|
||||
.lang-switcher__menu a[aria-current="page"] { color: var(--color-primary); font-weight: 700; text-decoration: underline; }
|
||||
.lang-switcher__menu small { font-size: .68rem; font-weight: 400; }
|
||||
</style>
|
||||
@@ -1,11 +1,14 @@
|
||||
---
|
||||
const { slug } = Astro.props;
|
||||
import { articleMessages } from '../utils/article-messages';
|
||||
interface Props { slug: string; lang: string }
|
||||
const { slug, lang } = Astro.props;
|
||||
const text = articleMessages(lang);
|
||||
---
|
||||
<div class="like-view-counter" data-counter>
|
||||
<span aria-label="Article views"><span class="view-count" data-views>0</span> views</span>
|
||||
<span class="like-group">
|
||||
<span class="like-count" data-likes>—</span>
|
||||
<button class="like-button" type="button" data-like data-slug={slug} aria-label="Like this article" aria-pressed="false">
|
||||
<span aria-label={text.articleViews}><span class="view-count" data-views dir={lang === 'ar' ? 'ltr' : undefined}>0</span> {text.views}</span>
|
||||
<span class="like-group" role={lang === 'ar' ? 'group' : undefined} aria-label={lang === 'ar' ? text.likes : undefined}>
|
||||
<span class="like-count" data-likes dir={lang === 'ar' ? 'ltr' : undefined}>—</span>
|
||||
<button class="like-button" type="button" data-like data-slug={slug} aria-label={text.like} aria-pressed="false">
|
||||
<svg aria-hidden="true" viewBox="0 0 12 10" width="20" height="20" focusable="false" class="like-icon">
|
||||
<path d="m1 4.4c-1-4 2.5-5 4.5-2.5l.5 .6l.5-.6c2-2.5 6-1.5 4.5 2.5q-1 3-5 5q-4-2-5-5z"></path>
|
||||
</svg>
|
||||
|
||||
@@ -40,12 +40,12 @@ const navLabel = { en: 'Main navigation', es: 'Navegación principal', ar: 'ال
|
||||
.main-nav ul { display: flex; gap: 1.4rem; list-style: none; margin: 0; padding: 0; }
|
||||
.main-nav li { position: relative; }
|
||||
.main-nav a { color: var(--color-primary); font-size: .9rem; text-decoration: none; }
|
||||
.main-nav a:hover { color: var(--color-accent-strong); }
|
||||
.main-nav a:hover { color: var(--color-primary-dark); }
|
||||
.nav-fallback { border: 1px solid currentColor; border-radius: 2px; font-size: .58rem; line-height: 1; margin-inline-start: .35rem; padding: .1rem .2rem; text-transform: uppercase; }
|
||||
.main-nav .submenu { background: white; box-shadow: var(--shadow-md); display: none; gap: 0; inset-inline-start: -1rem; min-width: 180px; padding: .75rem 0; position: absolute; top: 100%; }
|
||||
.main-nav .submenu a { display: block; padding: .45rem 1rem; }
|
||||
.main-nav li:hover > .submenu, .main-nav li:focus-within > .submenu { display: block; }
|
||||
.main-nav a:focus-visible { outline: 3px solid var(--color-accent); outline-offset: 3px; }
|
||||
.main-nav a:focus-visible { outline: 3px solid var(--color-primary); outline-offset: 3px; }
|
||||
@media (max-width: 950px) {
|
||||
.main-nav { display: none; }
|
||||
:global(.mobile-nav) .main-nav { display: block; }
|
||||
|
||||
@@ -23,7 +23,7 @@ const menu = { en: 'Menu', es: 'Menú', ar: 'القائمة' }[lang];
|
||||
|
||||
<style>
|
||||
.mobile-nav { display: none; }
|
||||
.mobile-nav summary:focus-visible { outline: 3px solid var(--color-accent); outline-offset: 3px; }
|
||||
.mobile-nav summary:focus-visible { outline: 3px solid var(--color-primary); outline-offset: 3px; }
|
||||
@media (max-width: 950px) {
|
||||
.mobile-nav { display: block; }
|
||||
}
|
||||
|
||||
@@ -9,6 +9,11 @@ const { section } = Astro.props;
|
||||
.director-card img { border-radius: 3px; height: auto; margin: 0 auto; width: 100%; }
|
||||
.director-card h3 { font-family: var(--font-body); font-size: .84rem; letter-spacing: .5px; margin-top: 1rem; }
|
||||
.signature { max-width: 270px; }
|
||||
/* Keep the shared mobile stack despite this component's scoped grid rule. */
|
||||
@media (max-width: 760px) {
|
||||
.director-layout { grid-template-columns: minmax(0, 1fr); }
|
||||
.signature { width: 100%; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<section class="section director-section">
|
||||
|
||||
@@ -81,6 +81,12 @@ const text = formMessages(lang);
|
||||
margin: 0 0 25px;
|
||||
}
|
||||
|
||||
.contact-page__copy :global(a:not(.content-button)) {
|
||||
color: var(--color-primary);
|
||||
text-decoration: underline;
|
||||
text-underline-offset: .15em;
|
||||
}
|
||||
|
||||
.contact-page__copy :global(.content-button) {
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
@@ -19,15 +19,15 @@ In the dynamic realm of Applied Behavior Analysis (ABA) therapy, we continuously
|
||||
|
||||
At the Arizona Institute for Autism, we utilize the structured nature of DTT to lay the groundwork for foundational skills. This foundation paves the way for the enrichment and generalization of these skills through the engaging approaches of NET.
|
||||
|
||||
### Insight into Discrete Trial Training (DTT):
|
||||
<h2 class="heading-size-h3" id="insight-into-discrete-trial-training-dtt">Insight into Discrete Trial Training (DTT):</h2>
|
||||
|
||||
Discrete Trial Training (DTT) is a structured technique that breaks down learning skills into small, achievable steps. By simplifying complex skills into smaller benchmarks, DTT facilitates easier learning and mastery of new skills.The hallmark of DTT lies in its structured teaching environment, enabling concentrated learning sessions with minimal distractions. DTT allows opportunities for immediate and consistent feedback, optimizing each learning opportunity. This method is especially beneficial for children who thrive on structured routines or are in the early stages of skill acquisition. DTT can be tailored to meet each learner's specific developmental needs.
|
||||
|
||||
### Exploring Natural Environment Training (NET):
|
||||
<h2 class="heading-size-h3" id="exploring-natural-environment-training-net">Exploring Natural Environment Training (NET):</h2>
|
||||
|
||||
On the other hand, Natural Environment Training (NET) emphasizes learning within everyday natural context, making learning experience more relevant and impactful for the child. It fosters dynamic interaction between the therapist and the learner, creating a learning environment that adapts to the natural flow of engagement. NET leverages the learner's motivation and interests as the cornerstone for learning, promoting spontaneous skill use and generalization.This approach is particularly effective for enhancing social skills,communication, and any learning objectives that benefit from real-world contexts. It facilitates the generalization of the learned skills into other settings, due to the skills being taught in the context of the natural environment, making NET an effective approach for teaching functional life skills.
|
||||
|
||||
### Combining Strengths for Comprehensive Development:
|
||||
<h2 class="heading-size-h3" id="combining-strengths-for-comprehensive-development">Combining Strengths for Comprehensive Development:</h2>
|
||||
|
||||
Integrating DTT and NET allows us to create a comprehensive therapeutic experience that meets the diverse needs of our learners. By employing both methodologies ensure not only the efficacy of learning, but also extend and apply the acquired skills across various settings.
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ A Client Advocate from Arizona Institute for Autism will contact you within one
|
||||
|
||||

|
||||
|
||||
### Start Here
|
||||
<h2 class="heading-size-h3" id="start-here">Start Here</h2>
|
||||
|
||||
## The AIA Difference
|
||||
|
||||
|
||||
@@ -1,104 +0,0 @@
|
||||
---
|
||||
title: "Tour Arizona's Premier Autism Therapy Center | Schedule Your AIA Visit"
|
||||
description: "Schedule your tour today and discover why Arizona Institute for Autism is the trusted choice for compassionate autism therapy and supportive care."
|
||||
slug: "tour"
|
||||
canonical: "https://www.azinstitute4autism.com/tour"
|
||||
lang: "en"
|
||||
translationKey: "tour"
|
||||
draft: false
|
||||
---
|
||||
## Tour Arizona Institute for Autism
|
||||
|
||||
Reach out to one of our expert Client Advocates to see if ABA-integrated therapy is right for your learner.
|
||||
|
||||
Arizona's Leading Modern Learning Experience for Children Diagnosed with Autism
|
||||
|
||||

|
||||
|
||||
Our Scottsdale Location
|
||||
|
||||

|
||||
|
||||
Receptionist Area
|
||||
|
||||

|
||||
|
||||
Entrance Hallway
|
||||
|
||||

|
||||
|
||||
Common Room
|
||||
|
||||

|
||||
|
||||
Sensory-Recreational Room
|
||||
|
||||

|
||||
|
||||
Academic Readiness Room Entrance
|
||||
|
||||

|
||||
|
||||
Academic Readiness Room
|
||||
|
||||

|
||||
|
||||
Academic Readiness Room Reading Corner
|
||||
|
||||

|
||||
|
||||
Art Gallery
|
||||
|
||||
❮ ❯
|
||||
|
||||
- 
|
||||
|
||||
- 
|
||||
|
||||
- 
|
||||
|
||||
- 
|
||||
|
||||
- 
|
||||
|
||||
- 
|
||||
|
||||
- 
|
||||
|
||||
- 
|
||||
|
||||
- 
|
||||
|
||||
### Amenities
|
||||
|
||||
- Age Appropriate Learner pods
|
||||
|
||||
- 24-Hour Internet Access
|
||||
|
||||
- ABA Therapy Room
|
||||
|
||||
- ABA Academic Readiness Room
|
||||
|
||||
- Learner Sensory Recreational Room
|
||||
|
||||
- Learner Calm Room
|
||||
|
||||
- Learner Nap Room
|
||||
|
||||
- Learner Teen Group Area
|
||||
|
||||
- Community Cafe
|
||||
|
||||
- Group Learning
|
||||
|
||||
- Individual Learning
|
||||
|
||||
- ABA Test and Assessment Room
|
||||
|
||||
- Learner Pick-up & Drop Off Zone
|
||||
|
||||
- Expert BCBA's & Clinicians
|
||||
|
||||
- On-Site Clinical Case Supervisor
|
||||
|
||||
Schedule a Tour Today
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
title: "Tour Arizona's Premier Autism Therapy Center | Schedule Your AIA Visit"
|
||||
description: "Schedule your tour today and discover why Arizona Institute for Autism is the trusted choice for compassionate autism therapy and supportive care."
|
||||
slug: "tour"
|
||||
canonical: "https://www.azinstitute4autism.com/tour"
|
||||
lang: "en"
|
||||
translationKey: "tour"
|
||||
draft: false
|
||||
---
|
||||
import ImageCarousel from '../../../components/ImageCarousel.astro';
|
||||
import tourGallery from '../../../data/tour-gallery.json';
|
||||
|
||||
## Tour Arizona Institute for Autism
|
||||
|
||||
Reach out to one of our expert Client Advocates to see if ABA-integrated therapy is right for your learner.
|
||||
|
||||
Arizona's Leading Modern Learning Experience for Children Diagnosed with Autism
|
||||
|
||||
<ImageCarousel id="tour-gallery" label="AIA Scottsdale center photo tour" slides={tourGallery} />
|
||||
|
||||
### Amenities
|
||||
|
||||
- Age Appropriate Learner pods
|
||||
|
||||
- 24-Hour Internet Access
|
||||
|
||||
- ABA Therapy Room
|
||||
|
||||
- ABA Academic Readiness Room
|
||||
|
||||
- Learner Sensory Recreational Room
|
||||
|
||||
- Learner Calm Room
|
||||
|
||||
- Learner Nap Room
|
||||
|
||||
- Learner Teen Group Area
|
||||
|
||||
- Community Cafe
|
||||
|
||||
- Group Learning
|
||||
|
||||
- Individual Learning
|
||||
|
||||
- ABA Test and Assessment Room
|
||||
|
||||
- Learner Pick-up & Drop Off Zone
|
||||
|
||||
- Expert BCBA's & Clinicians
|
||||
|
||||
- On-Site Clinical Case Supervisor
|
||||
|
||||
[Schedule a Tour Today](/client-consultation)
|
||||
@@ -107,6 +107,13 @@ home:
|
||||
image: logo-az-dept-of-education.webp
|
||||
imageAlt: Departamento de Educación de Arizona
|
||||
|
||||
# Phase 7 localization carryover, reconciled during Phase 8
|
||||
hsaFsa:
|
||||
heading: Cuentas de ahorros para gastos médicos (HSA) y cuentas de gastos flexibles (FSA)
|
||||
body: Muchas familias también pueden utilizar sus cuentas HSA y FSA para financiar la atención, ya que permiten pagar servicios clínicos que reúnen los requisitos con fondos antes de impuestos. Arizona Institute for Autism (AIA) acepta directamente tarjetas de cuentas HSA y FSA, lo que facilita la gestión de los gastos de bolsillo del tratamiento de su hijo o hija. Si participa en una de estas cuentas, ya sea patrocinada por su empleador o individual, puede aplicar fácilmente los fondos disponibles al pago de la matrícula y las cuotas de nuestros programas de ABA.
|
||||
image: hsa-fsa-accepted-es.png
|
||||
imageAlt: Insignia HSA y FSA con una marca de verificación y la palabra «APROBADO»
|
||||
|
||||
# Ayuda financiera
|
||||
financialHelp:
|
||||
heading: ¿Necesita ayuda para pagar su atención?
|
||||
|
||||
@@ -16,7 +16,11 @@ import ContactObfuscation from '../../../components/ContactObfuscation.astro';
|
||||
|
||||
En el Instituto de Autismo de Arizona, nos dedicamos a proteger la privacidad y seguridad de los visitantes de nuestro sitio web, clientes y sus familias. Esta política explica cómo recopilamos, usamos y protegemos su información personal.
|
||||
|
||||
Como proveedores de atención médica, cumplimos estrictamente con la **[HIPAA](https://www.hhs.gov/hipaa/for-professionals/privacy/laws-regulations/index.html)** (Ley de Portabilidad y Responsabilidad del Seguro Médico), la **[COPPA](https://www.ecfr.gov/current/title-16/chapter-I/subchapter-C/part-312)** (Ley de Protección de la Privacidad en Línea de los Niños) y todas las regulaciones federales y estatales aplicables que rigen la privacidad y seguridad de la **[PHI](https://cphs.berkeley.edu/hipaa/hipaa18.html)** (Información de Salud Protegida). Podemos recopilar los siguientes tipos de información:
|
||||
Como proveedores de atención médica, cumplimos estrictamente con la **[HIPAA](https://www.hhs.gov/hipaa/for-professionals/privacy/laws-regulations/index.html)** (Ley de Portabilidad y Responsabilidad del Seguro Médico), la **[COPPA](https://www.ecfr.gov/current/title-16/chapter-I/subchapter-C/part-312)** (Ley de Protección de la Privacidad en Línea de los Niños) y todas las regulaciones federales y estatales aplicables que rigen la privacidad y seguridad de la **[PHI](https://cphs.berkeley.edu/hipaa/hipaa18.html)** (Información de Salud Protegida).
|
||||
|
||||
## Información que recopilamos
|
||||
|
||||
Podemos recopilar los siguientes tipos de información:
|
||||
|
||||
* **Información de identificación personal:** Su nombre, dirección, número de teléfono, dirección de correo electrónico y otros datos de contacto.
|
||||
* **Información de salud:** Diagnósticos, planes de tratamiento, historial médico y otra información relacionada con la salud necesaria para proporcionar servicios de tratamiento para el autismo.
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
[
|
||||
{
|
||||
"src": "/assets/images/01-aia-front-entrance.webp",
|
||||
"alt": "AIA Scottsdale Location",
|
||||
"caption": "Our Scottsdale Location"
|
||||
},
|
||||
{
|
||||
"src": "/assets/images/02-aia-receptionist-area.webp",
|
||||
"alt": "Receptionist Area",
|
||||
"caption": "Receptionist Area"
|
||||
},
|
||||
{
|
||||
"src": "/assets/images/03-aia-entrance-hallway.webp",
|
||||
"alt": "AIA Main Entrance Hallway",
|
||||
"caption": "Entrance Hallway"
|
||||
},
|
||||
{
|
||||
"src": "/assets/images/04-common-room.webp",
|
||||
"alt": "AIA Common Room",
|
||||
"caption": "Common Room"
|
||||
},
|
||||
{
|
||||
"src": "/assets/images/05-sensory-recreational-room.webp",
|
||||
"alt": "AIA Sensory-Recreational Room",
|
||||
"caption": "Sensory-Recreational Room"
|
||||
},
|
||||
{
|
||||
"src": "/assets/images/06-aba-academic-readiness-room-entrance.webp",
|
||||
"alt": "Academic Readiness Room Entrance",
|
||||
"caption": "Academic Readiness Room Entrance"
|
||||
},
|
||||
{
|
||||
"src": "/assets/images/07-aba-academic-readiness-room.webp",
|
||||
"alt": "Academic Readiness Room",
|
||||
"caption": "Academic Readiness Room"
|
||||
},
|
||||
{
|
||||
"src": "/assets/images/08-aba-academic-readiness-room-reading-corner.webp",
|
||||
"alt": "Academic Readiness Room Reading Corner",
|
||||
"caption": "Academic Readiness Room Reading Corner"
|
||||
},
|
||||
{
|
||||
"src": "/assets/images/09-aia-art-gallery.webp",
|
||||
"alt": "Art Gallery",
|
||||
"caption": "Art Gallery"
|
||||
}
|
||||
]
|
||||
@@ -26,15 +26,15 @@ const schema = blogPostingSchema(entry, publication, authors, site.url);
|
||||
{entry.data.featuredImage && <div class="article-featured"><img src={entry.data.featuredImage} alt={entry.data.alt || ''} /></div>}
|
||||
</header>
|
||||
<div class="prose blog-post-body container"><slot /></div>
|
||||
<div class="container"><LikeViewCounter slug={entry.data.slug} /></div>
|
||||
<div class="container"><LikeViewCounter slug={entry.data.slug} lang={entry.data.lang} /></div>
|
||||
</article>
|
||||
<BlogPostFooter entryId={entry.id} />
|
||||
<BlogPostFooter entryId={entry.id} lang={entry.data.lang} />
|
||||
</BaseLayout>
|
||||
|
||||
<style>
|
||||
.author-byline { color: inherit; text-decoration: none; }
|
||||
.author-byline:hover { text-decoration: underline; }
|
||||
.author-byline:focus-visible { outline: 3px solid var(--color-accent); outline-offset: 3px; }
|
||||
.author-byline:focus-visible { outline: 3px solid var(--color-primary); outline-offset: 3px; }
|
||||
.article-header { padding-block: 4.5rem 0; text-align: left; }
|
||||
.article-header h1 { font-size: clamp(2.3rem, 5vw, 3rem); max-width: 900px; }
|
||||
.article-byline { align-items: center; display: flex; font-size: .9rem; gap: 1rem; }
|
||||
|
||||
@@ -2,13 +2,14 @@
|
||||
.prose h2, .prose h3 { margin-top: 1.75em; }
|
||||
.prose img { border-radius: var(--radius-md); margin-block: var(--space-lg); }
|
||||
.prose a { overflow-wrap: anywhere; text-decoration: none; }
|
||||
.prose p a, .prose td a { color: var(--color-accent-strong); text-decoration: none; }
|
||||
.prose p a:hover, .prose p a:focus-visible, .prose td a:hover, .prose td a:focus-visible { color: var(--color-accent); }
|
||||
.prose :is(p, li, td) a:not(.content-button) { color: var(--color-primary); text-decoration: underline; text-underline-offset: .15em; }
|
||||
.prose :is(p, li, td) a:not(.content-button):is(:hover, :focus-visible) { color: var(--color-primary-dark); }
|
||||
.blog-post-body blockquote { background: var(--color-tint); border: 0; border-radius: 16px; color: var(--color-primary); margin: 0 auto 2.5rem; max-width: 767px; padding: 45px; position: relative; z-index: 0; }
|
||||
.blog-post-body blockquote::before { background-image: url('/assets/images/blockquote.svg'); content: ""; display: block; height: 41px; inset-inline-start: 6px; position: absolute; top: 22px; width: 50px; z-index: -1; }
|
||||
.blog-post-body blockquote p { color: var(--color-primary); margin: 0 0 1.55rem; }
|
||||
.source-page { max-width: 980px; }
|
||||
.source-page > h2:first-of-type { margin-top: 0; }
|
||||
.prose h2.heading-size-h3 { margin-top: 1.75em; }
|
||||
.blog-post-body { max-width: 960px; }
|
||||
.blog-post-body p { margin-bottom: 1.55rem; }
|
||||
.blog-post-body h3.article-inline-heading { display: inline; margin: 0; }
|
||||
@@ -17,7 +18,7 @@
|
||||
.blog-post-body th { background: var(--color-primary); color: #fff; }
|
||||
.blog-post-body td { background: #fff; color: var(--color-primary); }
|
||||
.article-diagram-scroll { max-width: 100%; }
|
||||
.article-diagram-scroll:focus-visible { outline: 3px solid var(--color-accent); outline-offset: 3px; }
|
||||
.article-diagram-scroll:focus-visible { outline: 3px solid var(--color-primary); outline-offset: 3px; }
|
||||
.article-diagram-scroll img { display: block; width: 100%; }
|
||||
|
||||
@media (max-width: 700px) {
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
.card h2, .card h3 { margin-top: 0; }
|
||||
.card h2 a, .card h3 a { color: inherit; text-decoration: none; }
|
||||
.text-link { font-weight: 700; }
|
||||
.text-link, .text-link:visited { color: var(--color-primary); text-decoration: underline; text-underline-offset: .15em; }
|
||||
.text-link:hover, .text-link:active { color: var(--color-primary-dark); }
|
||||
.source-list { margin-block: 0 1.5rem; padding-inline-start: 2.5rem; }
|
||||
.source-list li { line-height: 1.625; margin: 0; padding-inline-start: .15rem; }
|
||||
.source-list li::marker { color: var(--color-accent); }
|
||||
|
||||
@@ -5,4 +5,5 @@
|
||||
.form label { display: grid; font-weight: 700; gap: var(--space-xs); }
|
||||
.form input, .form select, .form textarea { border: 1px solid var(--color-border); border-radius: var(--radius-sm); font: inherit; padding: .8rem; width: 100%; }
|
||||
.form-note { color: var(--color-muted); font-size: .9rem; }
|
||||
.form-note a, .service-inquiry-form__footer a { color: var(--color-primary); text-decoration: underline; text-underline-offset: .15em; }
|
||||
@media (max-width: 800px) { .form-grid { grid-template-columns: 1fr; } }
|
||||
@@ -10,8 +10,8 @@ img { display: block; height: auto; max-width: 100%; }
|
||||
.section-heading { margin-bottom: var(--space-lg); max-width: 700px; }
|
||||
.split { align-items: center; display: flex; gap: var(--space-lg); justify-content: space-between; }
|
||||
.card-grid { display: grid; gap: var(--space-lg); grid-template-columns: repeat(3, minmax(0, 1fr)); }
|
||||
.skip-link { background: white; left: 1rem; padding: .75rem; position: fixed; top: -10rem; z-index: 100; }
|
||||
.skip-link:focus { top: 1rem; }
|
||||
.skip-link, .skip-link:visited { background: white; color: var(--color-primary); left: 1rem; padding: .75rem; position: fixed; top: -10rem; z-index: 100; text-decoration: underline; }
|
||||
.skip-link:focus { top: 1rem; outline: 3px solid var(--color-primary); outline-offset: 3px; }
|
||||
.page-header { padding-block: var(--space-xl); text-align: center; }
|
||||
.feature-grid { align-items: center; display: grid; gap: clamp(2rem, 6vw, 5rem); grid-template-columns: 1fr 1fr; }
|
||||
@media (max-width: 850px) { .card-grid { grid-template-columns: 1fr; } .split { align-items: flex-start; flex-direction: column; } }
|
||||
|
||||
@@ -8,6 +8,8 @@ h1, h2, h3, h4 { color: var(--color-primary); font-family: var(--font-heading);
|
||||
h1 { font-size: clamp(2.5rem, 5vw, 3rem); line-height: 1.12; margin: 0 0 var(--space-md); }
|
||||
h2 { font-size: clamp(2rem, 4vw, 2.4rem); line-height: 1.25; }
|
||||
h3 { font-size: clamp(1.8rem, 3.4vw, 2rem); }
|
||||
/* Preserve source H3 appearance when its semantic section level is H2. */
|
||||
h2.heading-size-h3 { font-size: clamp(1.8rem, 3.4vw, 2rem); line-height: 1.15; margin-block-end: 1em; }
|
||||
h4 { font-size: clamp(1.5rem, 3vw, 1.8rem); }
|
||||
a, a:visited { color: var(--color-accent-strong); text-decoration: none; }
|
||||
a:hover, a:active { color: var(--color-accent); }
|
||||
@@ -15,7 +17,7 @@ a:hover, a:active { color: var(--color-accent); }
|
||||
|
||||
.eyebrow {
|
||||
margin: 0;
|
||||
color: var(--color-accent-strong);
|
||||
color: var(--color-primary);
|
||||
font-family: var(--font-accent);
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
/** Arabic article chrome; preserve the existing English/Spanish labels. */
|
||||
const english = {
|
||||
views: 'views', articleViews: 'Article views', likes: 'Likes', like: 'Like this article',
|
||||
navigation: 'Article navigation', previous: 'Previous Post', next: 'Next Post',
|
||||
related: 'Similar Blog Posts', readFull: 'Read full post',
|
||||
};
|
||||
const arabic: typeof english = {
|
||||
views: 'مشاهدات', articleViews: 'مشاهدات المقال', likes: 'الإعجابات', like: 'الإعجاب بهذا المقال',
|
||||
navigation: 'التنقل بين المقالات', previous: 'المقال السابق', next: 'المقال التالي',
|
||||
related: 'مقالات ذات صلة', readFull: 'قراءة المقال كاملاً',
|
||||
};
|
||||
|
||||
export function articleMessages(locale: string) {
|
||||
return locale === 'ar' ? arabic : english;
|
||||
}
|
||||
Reference in new issue
Block a user