Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
c76cc87
buttons & links style adjusted
jellydeck Feb 7, 2026
9b7add1
some cleanup
jellydeck Feb 8, 2026
881330f
few more tweaks 😌
jellydeck Feb 8, 2026
558bcad
fix: rounded on focus-visible
jellydeck Feb 8, 2026
5bc5e5a
for thasmo 🫡
jellydeck Feb 8, 2026
8fedbdd
class as props
jellydeck Feb 8, 2026
1a85202
on active scale down for feedback
jellydeck Feb 8, 2026
dd19dda
border for secondary buttons
jellydeck Feb 8, 2026
af5b977
missing & clipping outlines
jellydeck Feb 8, 2026
49195a6
outlines in compare, readme, settings
jellydeck Feb 9, 2026
faabc73
remove class from props
jellydeck Feb 9, 2026
67858b5
upstream changes for button
jellydeck Feb 9, 2026
2442382
global css cleanup
jellydeck Feb 9, 2026
f4e0178
Merge branch 'main' into button-butter
jellydeck Feb 9, 2026
5488d39
fix: homepage layout shift
jellydeck Feb 9, 2026
f0443a0
removed redundant class
jellydeck Feb 9, 2026
1ae70e7
Merge branch 'main' into button-butter
jellydeck Feb 9, 2026
5e64320
Merge branch 'main' into button-butter
jellydeck Feb 9, 2026
dc2f1e0
Merge branch 'main' into button-butter
jellydeck Feb 9, 2026
469ec33
Merge branch 'main' into button-butter
jellydeck Feb 9, 2026
aa3d772
fixes as per suggestions
jellydeck Feb 9, 2026
dc748ed
styling fixes
jellydeck Feb 10, 2026
d0dd0ed
Merge branch 'main' into button-butter
jellydeck Feb 10, 2026
3c00392
use directional class
jellydeck Feb 10, 2026
5ccfa5c
Merge branch 'button-butter' of https://github.com/jellydeck/npmx.dev…
jellydeck Feb 10, 2026
e9b9527
fix: build issues
jellydeck Feb 10, 2026
837c94b
remove borders from AppHeader
jellydeck Feb 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion app/app.vue
Original file line number Diff line number Diff line change
Expand Up @@ -142,11 +142,12 @@ if (import.meta.client) {
.skip-link {
position: fixed;
top: -100%;
left: 0.25rem;
z-index: 100;
}

.skip-link:focus {
top: 0;
top: 0.25rem;
}
</style>

Expand Down
7 changes: 1 addition & 6 deletions app/assets/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -222,13 +222,8 @@ body {
line-height: 1.6;
}

:focus-visible,
:-moz-focusring {
/* weird Firefox behavior makes it necessary to add `!important`
or otherwise the selector would need to be more specific,
which it explicitly should not be. */
outline: 2px solid var(--accent) !important;
outline-offset: 2px !important;
outline: auto;
}
Comment on lines 225 to 227
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Add outline-offset to prevent clipped focus rings in Firefox.

Line 225 sets outline: auto for :-moz-focusring without an offset; in tight or overflow-clipped layouts this can hide the ring (a reported issue in this PR). Adding an offset keeps the focus indicator visible.

Suggested fix
 :-moz-focusring {
   outline: auto;
+  outline-offset: 2px;
 }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
:-moz-focusring {
/* weird Firefox behavior makes it necessary to add `!important`
or otherwise the selector would need to be more specific,
which it explicitly should not be. */
outline: 2px solid var(--accent) !important;
outline-offset: 2px !important;
outline: auto;
}
:-moz-focusring {
outline: auto;
outline-offset: 2px;
}


/* Reset dd margin (browser default is margin-left: 40px) */
Expand Down
2 changes: 1 addition & 1 deletion app/components/AppFooter.vue
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ const showModal = () => modalRef.value?.showModal?.()
</LinkBase>
<button
type="button"
class="cursor-pointer group inline-flex gap-x-1 items-center justify-center underline-offset-[0.2rem] underline decoration-1 decoration-fg/30 font-mono text-fg hover:(decoration-accent text-accent) focus-visible:(decoration-accent text-accent) transition-colors duration-200"
class="group cursor-pointer gap-x-1 items-center rounded-sm font-mono text-fg hover:decoration-accent active:scale-[0.98] underline underline-offset-[0.2rem] decoration-1 decoration-fg/30 outline-2 outline-transparent focus-visible:(outline-offset-2 outline-accent text-accent) transition-colors duration-200"
@click.prevent="showModal"
aria-haspopup="dialog"
>
Expand Down
10 changes: 5 additions & 5 deletions app/components/AppHeader.vue
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ onKeyStroke(
<button
v-if="!isSearchExpanded && !isOnHomePage"
type="button"
class="sm:hidden flex-shrink-0 inline-flex items-center gap-2 font-mono text-lg font-medium text-fg hover:text-fg transition-colors duration-200 rounded"
class="sm:hidden flex-shrink-0 inline-flex items-center gap-2 font-mono text-lg font-medium text-fg hover:text-fg transition-colors duration-200 rounded focus-visible(outline-2 outline-accent)"
:aria-label="$t('nav.tap_to_search')"
@click="expandMobileSearch"
>
Expand All @@ -207,7 +207,7 @@ onKeyStroke(
:to="{ name: 'index' }"
:aria-label="$t('header.home')"
dir="ltr"
class="inline-flex items-center gap-1 header-logo font-mono text-lg font-medium text-fg hover:text-fg/90 transition-colors duration-200 rounded"
class="inline-flex items-center gap-1 header-logo font-mono text-lg font-medium text-fg hover:text-fg/90 transition-colors duration-200 rounded focus-visible:(outline-2 outline-accent)"
>
<AppLogo class="w-8 h-8 rounded-lg" />
<span>npmx</span>
Expand Down Expand Up @@ -251,12 +251,12 @@ onKeyStroke(
</div>

<!-- End: Desktop nav items + Mobile menu button -->
<div class="hidden sm:flex flex-shrink-0">
<!-- Desktop: Explore link -->
<div class="hidden sm:flex flex-shrink-0 space-x-0.5 md:space-x-2">
<!-- Desktop links -->
<LinkBase
v-for="link in desktopLinks"
:key="link.name"
class="border-none"
class="border-0"
variant="button-secondary"
:to="link.to"
:aria-keyshortcuts="link.keyshortcut"
Expand Down
12 changes: 5 additions & 7 deletions app/components/Button/Base.vue
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,9 @@ const props = withDefaults(
type?: 'button' | 'submit'
variant?: 'primary' | 'secondary'
size?: 'small' | 'medium'
classicon?: string
ariaKeyshortcuts?: string
block?: boolean

classicon?: string
}>(),
{
type: 'button',
Expand All @@ -28,16 +27,15 @@ defineExpose({
<template>
<button
ref="el"
class="group cursor-pointer gap-x-1 items-center justify-center font-mono border border-border rounded-md transition-all duration-200 disabled:(opacity-40 cursor-not-allowed border-transparent)"
class="group cursor-pointer gap-x-1.5 relative items-center justify-center rounded-md active:scale-[0.98] font-mono border border-solid border-border transition-colors duration-200 outline-transparent focus-visible:(outline-2 outline-accent outline-offset-2) disabled:(opacity-40 cursor-not-allowed border-transparent)"
:class="{
'inline-flex': !block,
'flex': block,
'text-sm px-4 py-2': size === 'medium',
'text-xs px-2 py-0.5': size === 'small',
'bg-transparent text-fg hover:enabled:(bg-fg/10) focus-visible:enabled:(bg-fg/10) aria-pressed:(bg-fg/10 border-fg/20 hover:enabled:(bg-fg/20 text-fg/50))':
variant === 'secondary',
'text-bg bg-fg hover:enabled:(bg-fg/50) focus-visible:enabled:(bg-fg/50) aria-pressed:(bg-fg text-bg border-fg hover:enabled:(text-bg/50))':
variant === 'primary',
'text-bg bg-fg border-fg hover:(bg-fg/80)': variant === 'primary',
'text-fg bg-bg hover:(bg-fg/10 border-fg/10)': variant === 'secondary',
'opacity-40 cursor-not-allowed border-transparent': disabled,
}"
:type="props.type"
:disabled="
Expand Down
2 changes: 1 addition & 1 deletion app/components/Button/Group.vue
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const props = defineProps<{
<template>
<component
:is="props.as || 'div'"
class="flex items-center shrink-0 ms-auto [&>*:not(:first-child)]:rounded-s-none [&>*:not(:first-child)]:border-s-0 [&>*:not(:last-child)]:rounded-e-none"
class="inline-flex items-stretch [&>*:not(:first-child)]:(-ms-px rounded-is-none) [&>*:not(:last-child)]:rounded-ie-none [&>*:focus-visible]:(relative z-40)"
>
<slot />
</component>
Expand Down
2 changes: 1 addition & 1 deletion app/components/CallToAction.vue
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ const socialLinks = computed(() => [
<div
v-for="link in socialLinks"
:key="link.id"
class="group relative grid gap-3 p-4 rounded-lg bg-bg-subtle hover:bg-bg-elevated border border-border hover:border-border-hover transition-all duration-200 sm:grid-rows-subgrid sm:row-span-3 focus-within:ring-2 focus-within:ring-accent/50"
class="group relative grid gap-3 p-4 rounded-lg bg-bg-subtle hover:bg-bg-elevated border border-border hover:border-border-hover transition-all duration-200 sm:grid-rows-subgrid sm:row-span-3 focus-within:ring-2 focus-within:ring-accent"
>
<h3 class="z-1 flex gap-2">
<span :class="link.icon" class="shrink-0 mt-1 w-5 h-5 text-fg" aria-hidden="true" />
Expand Down
2 changes: 1 addition & 1 deletion app/components/CollapsibleSection.vue
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ useHead({
<button
:id="buttonId"
type="button"
class="w-4 h-4 flex items-center justify-center text-fg-subtle hover:text-fg-muted transition-colors duration-200 shrink-0 focus-visible:outline-accent/70 rounded"
class="w-4 h-4 flex items-center justify-center text-fg-subtle hover:text-fg-muted transition-colors duration-200 shrink-0 focus-visible:(outline-2 outline-offset-2 outline-accent) rounded"
:aria-expanded="isOpen"
:aria-controls="contentId"
:aria-label="ariaLabel"
Expand Down
2 changes: 1 addition & 1 deletion app/components/Compare/FacetSelector.vue
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ function isCategoryNoneSelected(category: string): boolean {
:disabled="facet.comingSoon"
:aria-pressed="isFacetSelected(facet.id)"
:aria-label="facet.label"
class="inline-flex items-center gap-1 px-1.5 py-0.5 font-mono text-xs rounded border transition-colors duration-200 focus-visible:outline-accent/70"
class="inline-flex items-center gap-1 px-1.5 py-0.5 font-mono text-xs rounded border transition-colors duration-200"
:class="
facet.comingSoon
? 'text-fg-subtle/50 bg-bg-subtle border-border-subtle cursor-not-allowed'
Expand Down
20 changes: 12 additions & 8 deletions app/components/Header/AccountMenu.client.vue
Original file line number Diff line number Diff line change
Expand Up @@ -56,13 +56,13 @@ function openAuthModal() {
</script>

<template>
<div ref="accountMenuRef" class="relative flex min-w-28 justify-end">
<div ref="accountMenuRef">
<ButtonBase
type="button"
class="border-0"
:aria-expanded="isOpen"
aria-haspopup="true"
@click="isOpen = !isOpen"
class="border-none"
>
<!-- Stacked avatars when connected -->
<span
Expand Down Expand Up @@ -106,7 +106,7 @@ function openAuthModal() {
</span>

<!-- "connect" text when not connected -->
<span v-if="!hasAnyConnection" class="font-mono text-sm">
<span v-if="!hasAnyConnection" class="font-sans text-sm">
{{ $t('account_menu.connect') }}
</span>

Expand Down Expand Up @@ -137,7 +137,7 @@ function openAuthModal() {
>
<div v-if="isOpen" class="absolute inset-ie-0 top-full pt-2 w-72 z-50" role="menu">
<div
class="bg-bg-subtle/80 backdrop-blur-sm border border-border-subtle rounded-lg shadow-lg shadow-bg-elevated/50 overflow-hidden px-1"
class="bg-bg-subtle/80 backdrop-blur-sm border border-border-subtle rounded-lg shadow-lg shadow-bg-elevated/10 overflow-hidden px-1"
>
<!-- Connected accounts section -->
<div v-if="hasAnyConnection" class="py-1">
Expand Down Expand Up @@ -227,10 +227,12 @@ function openAuthModal() {
v-if="!isNpmConnected"
type="button"
role="menuitem"
class="w-full px-3 py-2.5 flex items-center gap-3 hover:bg-bg-muted transition-colors text-start rounded-md"
class="w-full px-3 py-2.5 group flex items-center gap-3 hover:bg-bg-muted transition-colors text-start rounded-md"
@click="openConnectorModal"
>
<span class="w-8 h-8 rounded-full bg-bg-muted flex items-center justify-center">
<span
class="w-8 h-8 rounded-full bg-bg-muted group-hover:bg-bg-subtle flex items-center justify-center"
>
<span
v-if="isNpmConnecting"
class="i-carbon-circle-dash w-4 h-4 text-yellow-500 animate-spin"
Expand All @@ -254,10 +256,12 @@ function openAuthModal() {
v-if="!atprotoUser"
type="button"
role="menuitem"
class="w-full px-3 py-2.5 flex items-center gap-3 hover:bg-bg-muted transition-colors text-start rounded-md"
class="w-full px-3 py-2.5 group flex items-center gap-3 hover:bg-bg-muted transition-colors text-start rounded-md"
@click="openAuthModal"
>
<span class="w-8 h-8 rounded-full bg-bg-muted flex items-center justify-center">
<span
class="w-8 h-8 rounded-full bg-bg-muted group-hover:bg-bg-subtle flex items-center justify-center"
>
<span class="i-carbon-cloud w-4 h-4 text-fg-muted" aria-hidden="true" />
</span>
<span class="flex-1 min-w-0">
Expand Down
12 changes: 5 additions & 7 deletions app/components/Header/AccountMenu.server.vue
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
<template>
<div class="relative flex min-w-28 justify-end">
<div
class="inline-flex gap-x-1 items-center justify-center font-mono border border-border rounded-md text-sm px-4 py-2 bg-transparent text-fg border-none"
>
<span class="font-mono text-sm text-fg-muted">{{ $t('account_menu.connect') }}</span>
<span class="i-carbon-chevron-down w-3 h-3 text-fg-muted" aria-hidden="true" />
</div>
<div
class="inline-flex gap-x-1.5 items-center justify-center font-mono rounded-md text-sm px-4 py-2 bg-transparent text-fg"
>
<span class="font-sans text-sm text-fg-muted">{{ $t('account_menu.connect') }}</span>
<span class="i-carbon-chevron-down w-3 h-3 text-fg-muted" aria-hidden="true" />
</div>
</template>
5 changes: 3 additions & 2 deletions app/components/Header/SearchBox.vue
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,8 @@ defineExpose({ focus })
<div class="relative group" :class="{ 'is-focused': isSearchFocused }">
<div class="search-box relative flex items-center">
<span
class="absolute inset-is-3 text-fg-subtle font-mono text-sm pointer-events-none transition-colors duration-200 motion-reduce:transition-none [.group:hover:not(:focus-within)_&]:text-fg/80 group-focus-within:text-accent z-1"
aria-hidden="true"
class="absolute inset-is-3 text-fg-subtle font-mono text-sm pointer-events-none transition-colors duration-200 motion-reduce:transition-none group-focus-within:text-accent z-1"
>
/
</span>
Expand All @@ -127,7 +128,7 @@ defineExpose({ focus })
@blur="isSearchFocused = false"
size="small"
/>
<button type="submit" class="sr-only">{{ $t('search.button') }}</button>
<button type="submit" class="sr-only" tabindex="-1">{{ $t('search.button') }}</button>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure what the consequences are of adding tabindex=-1 to a sr-only button.

</div>
</div>
</form>
Expand Down
2 changes: 1 addition & 1 deletion app/components/LicenseDisplay.vue
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ const hasAnyValidLicense = computed(() => tokens.value.some(t => t.type === 'lic
:href="token.url"
target="_blank"
rel="noopener noreferrer"
class="link-subtle"
class="focus-visible:(outline-2 outline-accent) rounded-sm"
:title="$t('package.license.view_spdx')"
>
{{ token.value }}
Expand Down
21 changes: 9 additions & 12 deletions app/components/Link/Base.vue
Original file line number Diff line number Diff line change
Expand Up @@ -70,26 +70,23 @@ const isButtonMedium = computed(() => props.size === 'medium' && !isLink.value)
'text-bg bg-fg': variant === 'button-primary',
'bg-transparent text-fg': variant === 'button-secondary',
}"
><slot
/></span>
>
<slot />
</span>
<NuxtLink
v-else
class="group/link gap-x-1 items-center"
class="group cursor-pointer gap-x-1.5 items-center rounded-sm outline-transparent active:scale-[0.98] focus-visible:(outline-2 outline-accent) transition-colors duration-200"
:class="{
'flex': block,
'inline-flex': !block,
'underline-offset-[0.2rem] underline decoration-1 decoration-fg/30':
!isLinkAnchor && isLink && !noUnderline,
'justify-start font-mono text-fg hover:(decoration-accent text-accent) focus-visible:(decoration-accent text-accent) transition-colors duration-200':
'underline-offset-[0.2rem] underline decoration-1 decoration-fg/30': !isLinkAnchor && isLink,
'font-mono text-fg hover:(decoration-accent) focus-visible:(text-accent outline-offset-2)':
isLink,
'justify-center font-mono border border-border rounded-md transition-all duration-200':
isButton,
'justify-center border border-solid border-border rounded-md outline-offset-2': isButton,
'text-sm px-4 py-2': isButtonMedium,
'text-xs px-2 py-0.5': isButtonSmall,
'bg-transparent text-fg hover:(bg-fg/10 text-accent) focus-visible:(bg-fg/10 text-accent) aria-[current=true]:(bg-fg/10 text-accent border-fg/20 hover:enabled:(bg-fg/20 text-fg/50))':
variant === 'button-secondary',
'text-bg bg-fg hover:(bg-fg/50 text-accent) focus-visible:(bg-fg/50) aria-current:(bg-fg text-bg border-fg hover:enabled:(text-bg/50))':
variant === 'button-primary',
'text-bg bg-fg border-fg hover:(bg-fg/80)': variant === 'button-primary',
'text-fg bg-bg hover:(bg-fg/10 border-fg/10)': variant === 'button-secondary',
}"
:to="to"
:aria-keyshortcuts="ariaKeyshortcuts"
Expand Down
4 changes: 2 additions & 2 deletions app/components/Package/Dependencies.vue
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ const numberFormatter = useNumberFormatter()
)
"
>
<ul class="px-1 space-y-1 list-none m-0" :aria-label="$t('package.dependencies.list_label')">
<ul class="space-y-1 list-none m-0 px-1" :aria-label="$t('package.dependencies.list_label')">
<li
v-for="[dep, version] in sortedDependencies.slice(0, depsExpanded ? undefined : 10)"
:key="dep"
Expand Down Expand Up @@ -143,7 +143,7 @@ const numberFormatter = useNumberFormatter()
<button
v-if="sortedDependencies.length > 10 && !depsExpanded"
type="button"
class="my-2 ms-1 font-mono text-xs text-fg-muted hover:text-fg transition-colors duration-200 rounded focus-visible:outline-accent/70"
class="my-2 ms-1 font-mono text-xs text-fg-muted hover:text-fg transition-colors duration-200 rounded focus-visible:(outline-2 outline-offset-2 outline-accent)"
@click="depsExpanded = true"
>
{{
Expand Down
4 changes: 2 additions & 2 deletions app/components/Package/ManagerSelect.vue
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ function handleKeydown(event: KeyboardEvent) {
<button
ref="triggerRef"
type="button"
class="flex items-center gap-1.5 px-2 py-2 font-mono text-xs text-fg-muted bg-bg-subtle border border-border-subtle border-solid rounded-md transition-colors duration-150 hover:(text-fg border-border-hover) active:scale-95 focus:border-border-hover focus-visible:outline-accent/70 hover:text-fg"
class="flex items-center gap-1.5 px-2 py-2 font-mono text-xs text-fg-muted bg-bg-subtle border border-border-subtle border-solid rounded-md transition-colors duration-150 hover:(text-fg border-border-hover) active:scale-95 focus:border-border-hover focus-visible:(outline-2 outline-accent outline-offset-2) hover:text-fg"
:aria-expanded="isOpen"
aria-haspopup="listbox"
:aria-label="$t('package.get_started.pm_label')"
Expand Down Expand Up @@ -150,7 +150,7 @@ function handleKeydown(event: KeyboardEvent) {
:key="pm.id"
role="option"
:aria-selected="selectedPM === pm.id"
class="flex items-center gap-2 px-3 py-1.5 font-mono text-xs transition-colors duration-150"
class="flex items-center gap-2 px-3 py-1.5 font-mono text-xs transition-color cursor-pointer duration-150"
:class="[
selectedPM === pm.id ? 'text-fg' : 'text-fg-subtle',
highlightedIndex === index ? 'bg-bg-elevated' : 'hover:bg-bg-elevated',
Expand Down
4 changes: 2 additions & 2 deletions app/components/Package/Versions.vue
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,7 @@ function getTagVersions(tag: string): VersionDisplay[] {
<button
v-if="getTagVersions(row.tag).length > 1 || !hasLoadedAll"
type="button"
class="w-4 h-4 flex items-center justify-center text-fg-subtle hover:text-fg transition-colors rounded-sm"
class="w-4 h-4 flex items-center justify-center text-fg-subtle hover:text-fg transition-colors rounded-sm focus-visible:(outline-2 outline-offset-2 outline-accent)"
:aria-expanded="expandedTags.has(row.tag)"
:aria-label="
expandedTags.has(row.tag)
Expand Down Expand Up @@ -465,7 +465,7 @@ function getTagVersions(tag: string): VersionDisplay[] {
<div class="p-1">
<button
type="button"
class="flex items-center gap-2 text-start rounded-sm"
class="flex items-center gap-2 text-start rounded-sm focus-visible:(outline-2 outline-offset-2 outline-accent)"
:aria-expanded="otherVersionsExpanded"
:aria-label="
otherVersionsExpanded
Expand Down
1 change: 0 additions & 1 deletion app/components/Package/WeeklyDownloadStats.vue
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,6 @@ const config = computed(() => {
v-if="hasWeeklyDownloads"
type="button"
@click="openChartModal"
class="text-fg-subtle hover:text-fg transition-colors duration-200 inline-flex items-center justify-center min-w-6 min-h-6 -m-1 p-1 focus-visible:outline-accent/70 rounded"
:title="$t('package.downloads.analyze')"
classicon="i-carbon:data-analytics"
>
Expand Down
8 changes: 4 additions & 4 deletions app/components/PackageProvenanceSection.vue
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ defineProps<{
:href="details.buildSummaryUrl"
target="_blank"
rel="noopener noreferrer"
class="link text-sm text-fg-muted inline-flex"
class="link text-sm text-fg-muted inline-flex rounded-sm focus-visible:(outline-2 outline-accent outline-offset-2)"
>
{{ $t('package.provenance_section.view_build_summary') }}
</a>
Expand All @@ -49,7 +49,7 @@ defineProps<{
:href="details.sourceCommitUrl"
target="_blank"
rel="noopener noreferrer"
class="link font-mono text-sm block min-w-0 truncate"
class="link font-mono text-sm block min-w-0 truncate rounded-sm focus-visible:(outline-2 outline-accent outline-offset-2)"
:title="details.sourceCommitSha ?? details.sourceCommitUrl"
>
{{
Expand All @@ -70,7 +70,7 @@ defineProps<{
:href="details.buildFileUrl"
target="_blank"
rel="noopener noreferrer"
class="link font-mono text-sm block min-w-0 break-words"
class="link font-mono text-sm block min-w-0 break-words rounded-sm focus-visible:(outline-2 outline-accent outline-offset-2)"
:title="details.buildFilePath ?? details.buildFileUrl"
>
{{ details.buildFilePath ?? details.buildFileUrl }}
Expand All @@ -87,7 +87,7 @@ defineProps<{
:href="details.publicLedgerUrl"
target="_blank"
rel="noopener noreferrer"
class="link text-sm inline-flex"
class="link text-sm inline-flex rounded-sm focus-visible:(outline-2 outline-accent outline-offset-2)"
>
{{ $t('package.provenance_section.transparency_log_entry') }}
</a>
Expand Down
Loading
Loading