fix(a11y): switch semantics for admin form toggles

Add role=switch + aria-checked + aria-label to 12 ad-hoc toggle buttons across admin
create/edit forms (AdminCampaignCreate/Edit, AdminPromocodeCreate, AdminPromoGroupCreate,
AdminPromoOfferTemplateEdit, AdminPaymentMethodEdit, AdminTariffCreate) so screen readers
announce on/off state (WCAG 4.1.2).
This commit is contained in:
c0mrade
2026-05-26 00:03:17 +03:00
parent 491f48a331
commit 7b0a72db5b
7 changed files with 35 additions and 0 deletions

View File

@@ -366,6 +366,9 @@ export default function AdminCampaignCreate() {
<button
type="button"
onClick={() => setIsActive(!isActive)}
role="switch"
aria-checked={isActive}
aria-label={t('admin.campaigns.form.active')}
className={`relative h-6 w-11 rounded-full transition-colors ${
isActive ? 'bg-accent-500' : 'bg-dark-600'
}`}

View File

@@ -390,6 +390,9 @@ export default function AdminCampaignEdit() {
<button
type="button"
onClick={() => setIsActive(!isActive)}
role="switch"
aria-checked={isActive}
aria-label={t('admin.campaigns.form.active')}
className={`relative h-6 w-11 rounded-full transition-colors ${
isActive ? 'bg-accent-500' : 'bg-dark-600'
}`}

View File

@@ -207,6 +207,9 @@ export default function AdminPaymentMethodEdit() {
</div>
<button
onClick={() => setIsEnabled(!isEnabled)}
role="switch"
aria-checked={isEnabled}
aria-label={t('admin.paymentMethods.methodEnabled')}
className={`relative h-6 w-11 rounded-full transition-colors ${
isEnabled ? 'bg-accent-500' : 'bg-dark-600'
}`}
@@ -234,6 +237,8 @@ export default function AdminPaymentMethodEdit() {
</div>
<button
onClick={() => setOpenUrlDirect(!openUrlDirect)}
role="switch"
aria-checked={openUrlDirect}
className={`relative h-6 w-11 shrink-0 rounded-full transition-colors ${
openUrlDirect ? 'bg-accent-500' : 'bg-dark-600'
}`}

View File

@@ -378,6 +378,9 @@ export default function AdminPromoGroupCreate() {
<button
type="button"
onClick={() => setApplyToAddons(!applyToAddons)}
role="switch"
aria-checked={applyToAddons}
aria-label={t('admin.promoGroups.form.applyToAddons')}
className={`relative h-6 w-11 rounded-full transition-colors ${
applyToAddons ? 'bg-accent-500' : 'bg-dark-600'
}`}
@@ -396,6 +399,9 @@ export default function AdminPromoGroupCreate() {
<button
type="button"
onClick={() => setIsDefault(!isDefault)}
role="switch"
aria-checked={isDefault}
aria-label={t('admin.promoGroups.form.isDefault')}
className={`relative h-6 w-11 rounded-full transition-colors ${
isDefault ? 'bg-accent-500' : 'bg-dark-600'
}`}

View File

@@ -304,6 +304,9 @@ export default function AdminPromoOfferTemplateEdit() {
<button
type="button"
onClick={() => setIsActive(!isActive)}
role="switch"
aria-checked={isActive}
aria-label={t('admin.promoOffers.form.templateActive')}
className={`relative h-6 w-11 rounded-full transition-colors ${
isActive ? 'bg-accent-500' : 'bg-dark-600'
}`}

View File

@@ -469,6 +469,9 @@ export default function AdminPromocodeCreate() {
<button
type="button"
onClick={() => setIsActive(!isActive)}
role="switch"
aria-checked={isActive}
aria-label={t('admin.promocodes.form.active')}
className={`relative h-6 w-10 rounded-full transition-colors ${
isActive ? 'bg-accent-500' : 'bg-dark-600'
}`}
@@ -486,6 +489,9 @@ export default function AdminPromocodeCreate() {
<button
type="button"
onClick={() => setFirstPurchaseOnly(!firstPurchaseOnly)}
role="switch"
aria-checked={firstPurchaseOnly}
aria-label={t('admin.promocodes.form.firstPurchaseOnly')}
className={`relative h-6 w-10 rounded-full transition-colors ${
firstPurchaseOnly ? 'bg-accent-500' : 'bg-dark-600'
}`}

View File

@@ -855,6 +855,9 @@ export default function AdminTariffCreate() {
<button
type="button"
onClick={() => setTrafficTopupEnabled(!trafficTopupEnabled)}
role="switch"
aria-checked={trafficTopupEnabled}
aria-label={t('admin.tariffs.extraTrafficTitle')}
className={`relative h-6 w-11 rounded-full transition-colors ${
trafficTopupEnabled ? 'bg-accent-500' : 'bg-dark-600'
}`}
@@ -1117,6 +1120,9 @@ export default function AdminTariffCreate() {
<button
type="button"
onClick={() => setIsActive(!isActive)}
role="switch"
aria-checked={isActive}
aria-label={t('admin.tariffs.isActiveLabel')}
className={`relative h-6 w-11 rounded-full transition-colors ${
isActive ? 'bg-success-500' : 'bg-dark-600'
}`}
@@ -1139,6 +1145,9 @@ export default function AdminTariffCreate() {
<button
type="button"
onClick={() => setShowInGift(!showInGift)}
role="switch"
aria-checked={showInGift}
aria-label={t('admin.tariffs.showInGiftLabel')}
className={`relative h-6 w-11 rounded-full transition-colors ${
showInGift ? 'bg-accent-500' : 'bg-dark-600'
}`}