fix(tradein): a11y follow-up — sr-only th-текст + heading-order (#835) #845
5 changed files with 22 additions and 8 deletions
|
|
@ -128,7 +128,7 @@ export function DealsCard({ estimate }: Props) {
|
|||
<th className="num">₽ / м²</th>
|
||||
<th className="num">Цена сделки</th>
|
||||
<th className="num">Дата</th>
|
||||
<th aria-label="Действия" />
|
||||
<th><span className="sr-only">Действия</span></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
|
|
|||
|
|
@ -258,7 +258,7 @@ export function ListingsCard({ estimate, estimateId }: Props) {
|
|||
<th className="num">₽ / м²</th>
|
||||
<th className="num">Стоимость</th>
|
||||
<th className="num">Дист.</th>
|
||||
<th aria-label="Действия" />
|
||||
<th><span className="sr-only">Действия</span></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
|
|
|||
|
|
@ -215,7 +215,7 @@ export function OfferCard({ estimate, brandSlug }: Props) {
|
|||
<path d="m15.5 7.5 3 3L22 7l-3-3" />
|
||||
</svg>
|
||||
</div>
|
||||
<h4>Экономия времени</h4>
|
||||
<h3>Экономия времени</h3>
|
||||
<p>Берём на себя показы, переговоры и поиск покупателей. Менеджеру остаётся только подписать ДКП.</p>
|
||||
</div>
|
||||
<div className="advantage">
|
||||
|
|
@ -225,7 +225,7 @@ export function OfferCard({ estimate, brandSlug }: Props) {
|
|||
<polyline points="9 22 9 12 15 12 15 22" />
|
||||
</svg>
|
||||
</div>
|
||||
<h4>Юридическая безопасность</h4>
|
||||
<h3>Юридическая безопасность</h3>
|
||||
<p>Проверяем чистоту документов, ЕГРН, прописанных и обременения. Исключаем риски.</p>
|
||||
</div>
|
||||
<div className="advantage">
|
||||
|
|
@ -236,7 +236,7 @@ export function OfferCard({ estimate, brandSlug }: Props) {
|
|||
<circle cx="17.5" cy="17.5" r="2.5" />
|
||||
</svg>
|
||||
</div>
|
||||
<h4>Фиксированная цена новостройки</h4>
|
||||
<h3>Фиксированная цена новостройки</h3>
|
||||
<p>Сохраняем планировку в каталоге по цене на момент оценки — до закрытия сделки.</p>
|
||||
</div>
|
||||
<div className="advantage">
|
||||
|
|
@ -247,7 +247,7 @@ export function OfferCard({ estimate, brandSlug }: Props) {
|
|||
<circle cx="12" cy="12" r="2" />
|
||||
</svg>
|
||||
</div>
|
||||
<h4>Гарантия цены</h4>
|
||||
<h3>Гарантия цены</h3>
|
||||
<p>Снимаем риск колебаний рынка — выкупная стоимость зафиксирована в оффере на 30 дней.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -165,7 +165,7 @@ export function StreetDealsCard({ estimate }: Props) {
|
|||
<th className="num">₽/м²</th>
|
||||
<th className="num">Дата</th>
|
||||
{hasAnyListing && <th>Объявление до сделки</th>}
|
||||
<th aria-label="Действия" />
|
||||
<th><span className="sr-only">Действия</span></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
|
|
|||
|
|
@ -1348,7 +1348,7 @@
|
|||
display: grid; place-items: center;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.advantage h4 {
|
||||
.advantage h3 {
|
||||
font-size: 14px;
|
||||
letter-spacing: -0.005em;
|
||||
}
|
||||
|
|
@ -1967,6 +1967,20 @@
|
|||
.discount-neg { color: var(--success); }
|
||||
.discount-pos { color: var(--danger); }
|
||||
|
||||
/* #835 a11y: визуально-скрытый текст для скринридеров (sr-only) — для пустых
|
||||
th-заголовков (empty-table-header требует ТЕКСТ, не aria-label). */
|
||||
.sr-only {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
padding: 0;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
white-space: nowrap;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
/* Ячейка listing-колонки */
|
||||
.listing-cell {
|
||||
min-width: 200px;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue