Skip to content

Commit 5b12698

Browse files
userquindanielroe
andauthored
fix(a11y): add wcag-aa color contrast (#1170)
Co-authored-by: Daniel Roe <daniel@roe.dev>
1 parent be007fe commit 5b12698

File tree

15 files changed

+511
-535
lines changed

15 files changed

+511
-535
lines changed

app/components/Compare/ReplacementSuggestion.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ const docUrl = computed(() => {
2525
class="flex items-start gap-2 px-3 py-2 rounded-lg text-sm"
2626
:class="
2727
variant === 'nodep'
28-
? 'bg-amber-500/10 border border-amber-600/30 text-amber-700 dark:text-amber-400'
28+
? 'bg-amber-500/10 border border-amber-600/30 text-amber-800 dark:text-amber-400'
2929
: 'bg-blue-500/10 border border-blue-600/30 text-blue-700 dark:text-blue-400'
3030
"
3131
>

app/components/DependencyPathPopup.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ function parsePackageString(pkg: string): { name: string; version: string } {
6868
<!-- Path badge button -->
6969
<button
7070
type="button"
71-
class="path-badge font-mono text-3xs px-1.5 py-0.5 rounded bg-amber-500/10 border border-amber-500/30 text-amber-700 dark:text-amber-400 transition-all duration-200 ease-out whitespace-nowrap flex items-center gap-1 hover:bg-amber-500/20 hover:border-amber-500/50"
71+
class="path-badge font-mono text-3xs px-1.5 py-0.5 rounded bg-amber-500/10 border border-amber-500/30 text-amber-800 dark:text-amber-400 transition-all duration-200 ease-out whitespace-nowrap flex items-center gap-1 hover:bg-amber-500/20 hover:border-amber-500/50"
7272
:aria-expanded="isOpen"
7373
@click.stop="togglePopup"
7474
>

app/components/Package/Dependencies.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ const numberFormatter = useNumberFormatter()
117117
<LinkBase
118118
v-if="getDeprecatedDepInfo(dep)"
119119
:to="packageRoute(dep, getDeprecatedDepInfo(dep)!.version)"
120-
class="shrink-0 text-purple-500"
120+
class="shrink-0 text-purple-700 dark:text-purple-500"
121121
:title="getDeprecatedDepInfo(dep)!.message"
122122
classicon="i-carbon:warning-hex"
123123
>

app/components/Package/MetricsBadges.vue

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ const typesHref = computed(() => {
6363
variant="button-secondary"
6464
size="small"
6565
:to="typesHref"
66-
classicon="i-carbon-checkmark"
66+
classicon="i-carbon:checkmark"
6767
>
6868
{{ $t('package.metrics.types_label') }}
6969
</LinkBase>
@@ -73,10 +73,10 @@ const typesHref = computed(() => {
7373
:tabindex="0"
7474
:classicon="
7575
isLoading
76-
? 'i-carbon-circle-dash motion-safe:animate-spin'
76+
? 'i-carbon:circle-dash motion-safe:animate-spin'
7777
: hasTypes
78-
? 'i-carbon-checkmark'
79-
: 'i-carbon-close'
78+
? 'i-carbon:checkmark'
79+
: 'i-carbon:close'
8080
"
8181
>
8282
{{ $t('package.metrics.types_label') }}
@@ -95,10 +95,10 @@ const typesHref = computed(() => {
9595
:variant="hasEsm && !isLoading ? 'default' : 'ghost'"
9696
:classicon="
9797
isLoading
98-
? 'i-carbon-circle-dash motion-safe:animate-spin'
98+
? 'i-carbon:circle-dash motion-safe:animate-spin'
9999
: hasEsm
100-
? 'i-carbon-checkmark'
101-
: 'i-carbon-close'
100+
? 'i-carbon:checkmark'
101+
: 'i-carbon:close'
102102
"
103103
>
104104
ESM
@@ -113,7 +113,7 @@ const typesHref = computed(() => {
113113
tabindex="0"
114114
:variant="isLoading ? 'ghost' : 'default'"
115115
:classicon="
116-
isLoading ? 'i-carbon-circle-dash motion-safe:animate-spin' : 'i-carbon-checkmark'
116+
isLoading ? 'i-carbon:circle-dash motion-safe:animate-spin' : 'i-carbon:checkmark'
117117
"
118118
>
119119
CJS

app/components/Package/Replacement.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const docPath = computed(() => {
1818

1919
<template>
2020
<div
21-
class="border border-amber-600/40 bg-amber-500/10 rounded-lg px-3 py-2 text-base text-amber-700 dark:text-amber-400"
21+
class="border border-amber-600/40 bg-amber-500/10 rounded-lg px-3 py-2 text-base text-amber-800 dark:text-amber-400"
2222
>
2323
<h2 class="font-medium mb-1 flex items-center gap-2">
2424
<span class="i-carbon-idea w-4 h-4" aria-hidden="true" />

app/components/Package/Versions.vue

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,9 @@ function getTagVersions(tag: string): VersionDisplay[] {
359359
block
360360
class="text-sm"
361361
:class="
362-
row.primaryVersion.deprecated ? 'text-red-400 hover:text-red-300' : undefined
362+
row.primaryVersion.deprecated
363+
? 'text-red-800 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300'
364+
: undefined
363365
"
364366
:title="
365367
row.primaryVersion.deprecated
@@ -415,7 +417,11 @@ function getTagVersions(tag: string): VersionDisplay[] {
415417
:to="versionRoute(v.version)"
416418
block
417419
class="text-xs"
418-
:class="v.deprecated ? 'text-red-400 hover:text-red-300' : undefined"
420+
:class="
421+
v.deprecated
422+
? 'text-red-800 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300'
423+
: undefined
424+
"
419425
:title="
420426
v.deprecated
421427
? $t('package.versions.deprecated_title', { version: v.version })
@@ -514,7 +520,9 @@ function getTagVersions(tag: string): VersionDisplay[] {
514520
block
515521
class="text-xs"
516522
:class="
517-
row.primaryVersion.deprecated ? 'text-red-400 hover:text-red-300' : undefined
523+
row.primaryVersion.deprecated
524+
? 'text-red-800 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300'
525+
: undefined
518526
"
519527
:title="
520528
row.primaryVersion.deprecated
@@ -588,7 +596,7 @@ function getTagVersions(tag: string): VersionDisplay[] {
588596
class="text-xs"
589597
:class="
590598
group.versions[0]?.deprecated
591-
? 'text-red-400 hover:text-red-300'
599+
? 'text-red-800 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300'
592600
: undefined
593601
"
594602
:title="
@@ -649,7 +657,7 @@ function getTagVersions(tag: string): VersionDisplay[] {
649657
class="text-xs ms-6"
650658
:class="
651659
group.versions[0]?.deprecated
652-
? 'text-red-400 hover:text-red-300'
660+
? 'text-red-800 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300'
653661
: undefined
654662
"
655663
:title="
@@ -707,7 +715,11 @@ function getTagVersions(tag: string): VersionDisplay[] {
707715
:to="versionRoute(v.version)"
708716
block
709717
class="text-xs"
710-
:class="v.deprecated ? 'text-red-400 hover:text-red-300' : undefined"
718+
:class="
719+
v.deprecated
720+
? 'text-red-800 hover:text-red-700 dark:text-red-400 dark:hover:text-red-300'
721+
: undefined
722+
"
711723
:title="
712724
v.deprecated
713725
? $t('package.versions.deprecated_title', { version: v.version })

app/components/Package/VulnerabilityTree.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ const hasVulnerabilities = computed(
2121
)
2222
2323
// Banner - amber for better light mode contrast
24-
const bannerColor = 'border-amber-600/40 bg-amber-500/10 text-amber-700 dark:text-amber-400'
24+
const bannerColor = 'border-amber-600/40 bg-amber-500/10 text-amber-800 dark:text-amber-400'
2525
2626
const severityLabels = computed(() => ({
2727
critical: $t('package.vulnerabilities.severity.critical'),
@@ -100,7 +100,7 @@ function getDepthStyle(depth: string | undefined) {
100100
</span>
101101
</span>
102102
<span class="flex items-center gap-2 shrink-0">
103-
<span class="text-xs opacity-80 hidden sm:inline">{{ summaryText }}</span>
103+
<span class="text-xs op-90 dark:op-80 hidden sm:inline">{{ summaryText }}</span>
104104
<span
105105
class="i-carbon:chevron-down w-4 h-4 transition-transform duration-200"
106106
:class="{ 'rotate-180': isExpanded }"

app/components/Tag/Static.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ const props = withDefaults(
1313
<template>
1414
<component
1515
:is="as"
16-
class="bg-bg-muted text-fg-muted inline-flex gap-x-1 items-center justify-center font-mono border border-transparent rounded-md text-xs px-2 py-0.5"
17-
:class="{ 'opacity-40': variant === 'ghost' }"
16+
class="bg-bg-muted text-fg-muted inline-flex gap-x-1 items-center justify-center font-mono border border-gray-400 dark:border-gray-500 rounded-md text-xs px-2 py-0.5"
17+
:class="{ 'opacity-80 border-dashed': variant === 'ghost' }"
1818
>
1919
<span v-if="classicon" class="size-[1em]" :class="classicon" aria-hidden="true" />
2020
<slot />

app/pages/index.vue

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ defineOgImageComponent('Default', {
7171
>
7272
{{ $t('tagline') }}
7373
</p>
74-
7574
<search
7675
class="w-full max-w-xl motion-safe:animate-slide-up motion-safe:animate-fill-both"
7776
style="animation-delay: 0.2s"

app/pages/package/[[org]]/[name].vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -803,7 +803,7 @@ onKeyStroke(
803803

804804
<div
805805
v-if="deprecationNotice"
806-
class="border border-red-400 bg-red-400/10 rounded-lg px-3 py-2 text-base text-red-400"
806+
class="border border-red-700 dark:border-red-400 bg-red-400/10 rounded-lg px-3 py-2 text-base text-red-700 dark:text-red-400"
807807
>
808808
<h2 class="font-medium mb-2">
809809
{{
@@ -954,7 +954,7 @@ onKeyStroke(
954954
/>
955955
</span>
956956
<span v-else-if="vulnTreeStatus === 'success'">
957-
<span v-if="hasVulnerabilities" class="text-amber-500">
957+
<span v-if="hasVulnerabilities" class="text-amber-700 dark:text-amber-500">
958958
{{ numberFormatter.format(vulnCount) }}
959959
</span>
960960
<span v-else class="inline-flex items-center gap-1 text-fg-muted">

0 commit comments

Comments
 (0)