Skip to content

Commit 3029568

Browse files
HugoRCDbenjamincanac
authored andcommitted
fix(PageCard): improve keyboard accessibility (#4733)
1 parent b37c278 commit 3029568

File tree

4 files changed

+33
-29
lines changed

4 files changed

+33
-29
lines changed

src/runtime/components/PageCard.vue

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,6 @@ const ariaLabel = computed(() => {
172172
:aria-label="ariaLabel"
173173
v-bind="{ to, target, ...$attrs }"
174174
class="focus:outline-none peer"
175-
tabindex="-1"
176175
raw
177176
>
178177
<span class="absolute inset-0" aria-hidden="true" />

src/theme/page-card.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,11 @@ export default (options: Required<NuxtOptions['ui']>) => ({
144144
class: {
145145
root: '[--spotlight-color:var(--ui-bg-inverted)]'
146146
}
147+
}, {
148+
to: true,
149+
class: {
150+
root: 'has-focus-visible:ring-2 has-focus-visible:ring-primary'
151+
}
147152
}],
148153
defaultVariants: {
149154
variant: 'outline',

test/components/__snapshots__/PageCard-vue.spec.ts.snap

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -599,11 +599,11 @@ exports[`PageCard > renders with title slot correctly 1`] = `
599599
`;
600600

601601
exports[`PageCard > renders with to correctly 1`] = `
602-
"<div data-orientation="vertical" class="relative flex rounded-lg bg-default ring ring-default transition hover:bg-elevated/50">
602+
"<div data-orientation="vertical" class="relative flex rounded-lg bg-default ring ring-default transition hover:bg-elevated/50 has-focus-visible:ring-2 has-focus-visible:ring-primary">
603603
<!--v-if-->
604604
<div class="relative flex flex-col flex-1 lg:grid gap-x-8 gap-y-4 p-4 sm:p-6">
605605
<!--v-if-->
606-
</div><a href="https://github.com/benjamincanac" tabindex="-1" target="_blank" aria-label="Card link" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
606+
</div><a href="https://github.com/benjamincanac" target="_blank" aria-label="Card link" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
607607
</div>"
608608
`;
609609

@@ -662,7 +662,7 @@ exports[`PageCard > renders with variant ghost highlight correctly 1`] = `
662662
`;
663663

664664
exports[`PageCard > renders with variant ghost to correctly 1`] = `
665-
"<div data-orientation="vertical" class="relative flex rounded-lg transition hover:bg-elevated/50">
665+
"<div data-orientation="vertical" class="relative flex rounded-lg transition hover:bg-elevated/50 has-focus-visible:ring-2 has-focus-visible:ring-primary">
666666
<!--v-if-->
667667
<div class="relative flex flex-col flex-1 lg:grid gap-x-8 gap-y-4 p-4 sm:p-6">
668668
<div class="flex flex-col flex-1 items-start">
@@ -674,7 +674,7 @@ exports[`PageCard > renders with variant ghost to correctly 1`] = `
674674
</div>
675675
<!--v-if-->
676676
</div>
677-
</div><a href="https://github.com/benjamincanac" tabindex="-1" target="_blank" aria-label="Title" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
677+
</div><a href="https://github.com/benjamincanac" target="_blank" aria-label="Title" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
678678
</div>"
679679
`;
680680

@@ -715,7 +715,7 @@ exports[`PageCard > renders with variant naked highlight correctly 1`] = `
715715
`;
716716

717717
exports[`PageCard > renders with variant naked to correctly 1`] = `
718-
"<div data-orientation="vertical" class="relative flex rounded-lg transition">
718+
"<div data-orientation="vertical" class="relative flex rounded-lg transition has-focus-visible:ring-2 has-focus-visible:ring-primary">
719719
<!--v-if-->
720720
<div class="relative flex flex-col flex-1 lg:grid gap-x-8 gap-y-4 p-0 sm:p-0">
721721
<div class="flex flex-col flex-1 items-start">
@@ -727,7 +727,7 @@ exports[`PageCard > renders with variant naked to correctly 1`] = `
727727
</div>
728728
<!--v-if-->
729729
</div>
730-
</div><a href="https://github.com/benjamincanac" tabindex="-1" target="_blank" aria-label="Title" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
730+
</div><a href="https://github.com/benjamincanac" target="_blank" aria-label="Title" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
731731
</div>"
732732
`;
733733

@@ -768,7 +768,7 @@ exports[`PageCard > renders with variant outline highlight correctly 1`] = `
768768
`;
769769

770770
exports[`PageCard > renders with variant outline to correctly 1`] = `
771-
"<div data-orientation="vertical" class="relative flex rounded-lg bg-default ring ring-default transition hover:bg-elevated/50">
771+
"<div data-orientation="vertical" class="relative flex rounded-lg bg-default ring ring-default transition hover:bg-elevated/50 has-focus-visible:ring-2 has-focus-visible:ring-primary">
772772
<!--v-if-->
773773
<div class="relative flex flex-col flex-1 lg:grid gap-x-8 gap-y-4 p-4 sm:p-6">
774774
<div class="flex flex-col flex-1 items-start">
@@ -780,7 +780,7 @@ exports[`PageCard > renders with variant outline to correctly 1`] = `
780780
</div>
781781
<!--v-if-->
782782
</div>
783-
</div><a href="https://github.com/benjamincanac" tabindex="-1" target="_blank" aria-label="Title" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
783+
</div><a href="https://github.com/benjamincanac" target="_blank" aria-label="Title" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
784784
</div>"
785785
`;
786786

@@ -821,7 +821,7 @@ exports[`PageCard > renders with variant soft highlight correctly 1`] = `
821821
`;
822822

823823
exports[`PageCard > renders with variant soft to correctly 1`] = `
824-
"<div data-orientation="vertical" class="relative flex rounded-lg bg-elevated/50 transition hover:bg-elevated">
824+
"<div data-orientation="vertical" class="relative flex rounded-lg bg-elevated/50 transition hover:bg-elevated has-focus-visible:ring-2 has-focus-visible:ring-primary">
825825
<!--v-if-->
826826
<div class="relative flex flex-col flex-1 lg:grid gap-x-8 gap-y-4 p-4 sm:p-6">
827827
<div class="flex flex-col flex-1 items-start">
@@ -833,7 +833,7 @@ exports[`PageCard > renders with variant soft to correctly 1`] = `
833833
</div>
834834
<!--v-if-->
835835
</div>
836-
</div><a href="https://github.com/benjamincanac" tabindex="-1" target="_blank" aria-label="Title" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
836+
</div><a href="https://github.com/benjamincanac" target="_blank" aria-label="Title" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
837837
</div>"
838838
`;
839839

@@ -874,7 +874,7 @@ exports[`PageCard > renders with variant solid highlight correctly 1`] = `
874874
`;
875875

876876
exports[`PageCard > renders with variant solid to correctly 1`] = `
877-
"<div data-orientation="vertical" class="relative flex rounded-lg bg-inverted text-inverted transition hover:bg-inverted/90">
877+
"<div data-orientation="vertical" class="relative flex rounded-lg bg-inverted text-inverted transition hover:bg-inverted/90 has-focus-visible:ring-2 has-focus-visible:ring-primary">
878878
<!--v-if-->
879879
<div class="relative flex flex-col flex-1 lg:grid gap-x-8 gap-y-4 p-4 sm:p-6">
880880
<div class="flex flex-col flex-1 items-start">
@@ -886,7 +886,7 @@ exports[`PageCard > renders with variant solid to correctly 1`] = `
886886
</div>
887887
<!--v-if-->
888888
</div>
889-
</div><a href="https://github.com/benjamincanac" tabindex="-1" target="_blank" aria-label="Title" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
889+
</div><a href="https://github.com/benjamincanac" target="_blank" aria-label="Title" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
890890
</div>"
891891
`;
892892

@@ -927,7 +927,7 @@ exports[`PageCard > renders with variant subtle highlight correctly 1`] = `
927927
`;
928928

929929
exports[`PageCard > renders with variant subtle to correctly 1`] = `
930-
"<div data-orientation="vertical" class="relative flex rounded-lg bg-elevated/50 ring ring-default transition hover:bg-elevated hover:ring-accented">
930+
"<div data-orientation="vertical" class="relative flex rounded-lg bg-elevated/50 ring ring-default transition hover:bg-elevated hover:ring-accented has-focus-visible:ring-2 has-focus-visible:ring-primary">
931931
<!--v-if-->
932932
<div class="relative flex flex-col flex-1 lg:grid gap-x-8 gap-y-4 p-4 sm:p-6">
933933
<div class="flex flex-col flex-1 items-start">
@@ -939,6 +939,6 @@ exports[`PageCard > renders with variant subtle to correctly 1`] = `
939939
</div>
940940
<!--v-if-->
941941
</div>
942-
</div><a href="https://github.com/benjamincanac" tabindex="-1" target="_blank" aria-label="Title" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
942+
</div><a href="https://github.com/benjamincanac" target="_blank" aria-label="Title" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
943943
</div>"
944944
`;

test/components/__snapshots__/PageCard.spec.ts.snap

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -599,11 +599,11 @@ exports[`PageCard > renders with title slot correctly 1`] = `
599599
`;
600600

601601
exports[`PageCard > renders with to correctly 1`] = `
602-
"<div data-orientation="vertical" class="relative flex rounded-lg bg-default ring ring-default transition hover:bg-elevated/50">
602+
"<div data-orientation="vertical" class="relative flex rounded-lg bg-default ring ring-default transition hover:bg-elevated/50 has-focus-visible:ring-2 has-focus-visible:ring-primary">
603603
<!--v-if-->
604604
<div class="relative flex flex-col flex-1 lg:grid gap-x-8 gap-y-4 p-4 sm:p-6">
605605
<!--v-if-->
606-
</div><a href="https://github.com/benjamincanac" tabindex="-1" rel="noopener noreferrer" aria-label="Card link" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
606+
</div><a href="https://github.com/benjamincanac" rel="noopener noreferrer" aria-label="Card link" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
607607
</div>"
608608
`;
609609

@@ -662,7 +662,7 @@ exports[`PageCard > renders with variant ghost highlight correctly 1`] = `
662662
`;
663663

664664
exports[`PageCard > renders with variant ghost to correctly 1`] = `
665-
"<div data-orientation="vertical" class="relative flex rounded-lg transition hover:bg-elevated/50">
665+
"<div data-orientation="vertical" class="relative flex rounded-lg transition hover:bg-elevated/50 has-focus-visible:ring-2 has-focus-visible:ring-primary">
666666
<!--v-if-->
667667
<div class="relative flex flex-col flex-1 lg:grid gap-x-8 gap-y-4 p-4 sm:p-6">
668668
<div class="flex flex-col flex-1 items-start">
@@ -674,7 +674,7 @@ exports[`PageCard > renders with variant ghost to correctly 1`] = `
674674
</div>
675675
<!--v-if-->
676676
</div>
677-
</div><a href="https://github.com/benjamincanac" tabindex="-1" rel="noopener noreferrer" aria-label="Title" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
677+
</div><a href="https://github.com/benjamincanac" rel="noopener noreferrer" aria-label="Title" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
678678
</div>"
679679
`;
680680

@@ -715,7 +715,7 @@ exports[`PageCard > renders with variant naked highlight correctly 1`] = `
715715
`;
716716

717717
exports[`PageCard > renders with variant naked to correctly 1`] = `
718-
"<div data-orientation="vertical" class="relative flex rounded-lg transition">
718+
"<div data-orientation="vertical" class="relative flex rounded-lg transition has-focus-visible:ring-2 has-focus-visible:ring-primary">
719719
<!--v-if-->
720720
<div class="relative flex flex-col flex-1 lg:grid gap-x-8 gap-y-4 p-0 sm:p-0">
721721
<div class="flex flex-col flex-1 items-start">
@@ -727,7 +727,7 @@ exports[`PageCard > renders with variant naked to correctly 1`] = `
727727
</div>
728728
<!--v-if-->
729729
</div>
730-
</div><a href="https://github.com/benjamincanac" tabindex="-1" rel="noopener noreferrer" aria-label="Title" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
730+
</div><a href="https://github.com/benjamincanac" rel="noopener noreferrer" aria-label="Title" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
731731
</div>"
732732
`;
733733

@@ -768,7 +768,7 @@ exports[`PageCard > renders with variant outline highlight correctly 1`] = `
768768
`;
769769

770770
exports[`PageCard > renders with variant outline to correctly 1`] = `
771-
"<div data-orientation="vertical" class="relative flex rounded-lg bg-default ring ring-default transition hover:bg-elevated/50">
771+
"<div data-orientation="vertical" class="relative flex rounded-lg bg-default ring ring-default transition hover:bg-elevated/50 has-focus-visible:ring-2 has-focus-visible:ring-primary">
772772
<!--v-if-->
773773
<div class="relative flex flex-col flex-1 lg:grid gap-x-8 gap-y-4 p-4 sm:p-6">
774774
<div class="flex flex-col flex-1 items-start">
@@ -780,7 +780,7 @@ exports[`PageCard > renders with variant outline to correctly 1`] = `
780780
</div>
781781
<!--v-if-->
782782
</div>
783-
</div><a href="https://github.com/benjamincanac" tabindex="-1" rel="noopener noreferrer" aria-label="Title" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
783+
</div><a href="https://github.com/benjamincanac" rel="noopener noreferrer" aria-label="Title" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
784784
</div>"
785785
`;
786786

@@ -821,7 +821,7 @@ exports[`PageCard > renders with variant soft highlight correctly 1`] = `
821821
`;
822822

823823
exports[`PageCard > renders with variant soft to correctly 1`] = `
824-
"<div data-orientation="vertical" class="relative flex rounded-lg bg-elevated/50 transition hover:bg-elevated">
824+
"<div data-orientation="vertical" class="relative flex rounded-lg bg-elevated/50 transition hover:bg-elevated has-focus-visible:ring-2 has-focus-visible:ring-primary">
825825
<!--v-if-->
826826
<div class="relative flex flex-col flex-1 lg:grid gap-x-8 gap-y-4 p-4 sm:p-6">
827827
<div class="flex flex-col flex-1 items-start">
@@ -833,7 +833,7 @@ exports[`PageCard > renders with variant soft to correctly 1`] = `
833833
</div>
834834
<!--v-if-->
835835
</div>
836-
</div><a href="https://github.com/benjamincanac" tabindex="-1" rel="noopener noreferrer" aria-label="Title" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
836+
</div><a href="https://github.com/benjamincanac" rel="noopener noreferrer" aria-label="Title" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
837837
</div>"
838838
`;
839839

@@ -874,7 +874,7 @@ exports[`PageCard > renders with variant solid highlight correctly 1`] = `
874874
`;
875875

876876
exports[`PageCard > renders with variant solid to correctly 1`] = `
877-
"<div data-orientation="vertical" class="relative flex rounded-lg bg-inverted text-inverted transition hover:bg-inverted/90">
877+
"<div data-orientation="vertical" class="relative flex rounded-lg bg-inverted text-inverted transition hover:bg-inverted/90 has-focus-visible:ring-2 has-focus-visible:ring-primary">
878878
<!--v-if-->
879879
<div class="relative flex flex-col flex-1 lg:grid gap-x-8 gap-y-4 p-4 sm:p-6">
880880
<div class="flex flex-col flex-1 items-start">
@@ -886,7 +886,7 @@ exports[`PageCard > renders with variant solid to correctly 1`] = `
886886
</div>
887887
<!--v-if-->
888888
</div>
889-
</div><a href="https://github.com/benjamincanac" tabindex="-1" rel="noopener noreferrer" aria-label="Title" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
889+
</div><a href="https://github.com/benjamincanac" rel="noopener noreferrer" aria-label="Title" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
890890
</div>"
891891
`;
892892

@@ -927,7 +927,7 @@ exports[`PageCard > renders with variant subtle highlight correctly 1`] = `
927927
`;
928928

929929
exports[`PageCard > renders with variant subtle to correctly 1`] = `
930-
"<div data-orientation="vertical" class="relative flex rounded-lg bg-elevated/50 ring ring-default transition hover:bg-elevated hover:ring-accented">
930+
"<div data-orientation="vertical" class="relative flex rounded-lg bg-elevated/50 ring ring-default transition hover:bg-elevated hover:ring-accented has-focus-visible:ring-2 has-focus-visible:ring-primary">
931931
<!--v-if-->
932932
<div class="relative flex flex-col flex-1 lg:grid gap-x-8 gap-y-4 p-4 sm:p-6">
933933
<div class="flex flex-col flex-1 items-start">
@@ -939,6 +939,6 @@ exports[`PageCard > renders with variant subtle to correctly 1`] = `
939939
</div>
940940
<!--v-if-->
941941
</div>
942-
</div><a href="https://github.com/benjamincanac" tabindex="-1" rel="noopener noreferrer" aria-label="Title" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
942+
</div><a href="https://github.com/benjamincanac" rel="noopener noreferrer" aria-label="Title" class="focus:outline-none peer"><span class="absolute inset-0" aria-hidden="true"></span></a>
943943
</div>"
944944
`;

0 commit comments

Comments
 (0)