Skip to content

Commit e5c9b6a

Browse files
authored
Merge branch 'main' into refactor/generalize-i18n-downloads
2 parents c60a639 + e77dcf9 commit e5c9b6a

File tree

2 files changed

+57
-66
lines changed

2 files changed

+57
-66
lines changed

app/components/Package/Skeleton.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
>
99
<!-- Package header — matches area-header in [...name].vue -->
1010
<header class="area-header sticky top-14 z-1 bg-[--bg] py-2">
11-
<div class="flex items-baseline gap-2 sm:gap-3 flex-wrap min-w-0">
11+
<div class="flex items-baseline gap-x-2 gap-y-1 sm:gap-x-3 flex-wrap min-w-0">
1212
<!-- Package name -->
1313
<div class="min-w-0">
1414
<h1 class="font-mono text-2xl sm:text-3xl font-medium">
@@ -19,8 +19,8 @@
1919
<span class="inline-flex items-baseline font-mono text-base sm:text-lg shrink-0">
2020
<SkeletonInline class="h-6 w-20" />
2121
</span>
22-
<!-- Metrics badges placeholder -->
23-
<div class="flex items-center gap-1.5 relative top-[5px] self-baseline ms-1 sm:ms-2">
22+
<!-- Metrics badges -->
23+
<div class="basis-full flex items-center gap-1.5 self-baseline">
2424
<SkeletonBlock class="w-16 h-5.5 rounded" />
2525
<SkeletonBlock class="w-13 h-5.5 rounded" />
2626
<SkeletonBlock class="w-13 h-5.5 rounded" />

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

Lines changed: 54 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -525,7 +525,7 @@ onKeyStroke(
525525
:class="{ 'border-b': isHeaderPinned }"
526526
>
527527
<!-- Package name and version -->
528-
<div class="flex items-baseline gap-2 sm:gap-3 flex-wrap min-w-0">
528+
<div class="flex items-baseline gap-x-2 gap-y-1 sm:gap-x-3 flex-wrap min-w-0">
529529
<div class="group relative flex flex-col items-start min-w-0">
530530
<h1
531531
class="font-mono text-2xl sm:text-3xl font-medium min-w-0 break-words"
@@ -605,15 +605,49 @@ onKeyStroke(
605605
>
606606
</span>
607607

608-
<!-- Package metrics (module format, types) -->
609-
<div class="flex gap-2 sm:gap-3 flex-wrap">
608+
<!-- Docs + Code + Compare — inline on desktop, floating bottom bar on mobile -->
609+
<ButtonGroup
610+
v-if="resolvedVersion"
611+
as="nav"
612+
:aria-label="$t('package.navigation')"
613+
class="package-nav hidden sm:flex max-sm:flex max-sm:fixed max-sm:z-40 max-sm:inset-is-50% max-sm:-translate-x-50% max-sm:bg-[--bg]/90 max-sm:backdrop-blur-md max-sm:border max-sm:border-border max-sm:rounded-md max-sm:shadow-md"
614+
>
615+
<LinkBase
616+
variant="button-secondary"
617+
v-if="docsLink"
618+
:to="docsLink"
619+
keyshortcut="d"
620+
classicon="i-carbon:document"
621+
>
622+
{{ $t('package.links.docs') }}
623+
</LinkBase>
624+
<LinkBase
625+
variant="button-secondary"
626+
:to="{ name: 'code', params: { path: [pkg.name, 'v', resolvedVersion] } }"
627+
keyshortcut="."
628+
classicon="i-carbon:code"
629+
>
630+
{{ $t('package.links.code') }}
631+
</LinkBase>
632+
<LinkBase
633+
variant="button-secondary"
634+
:to="{ name: 'compare', query: { packages: pkg.name } }"
635+
keyshortcut="c"
636+
classicon="i-carbon:compare"
637+
>
638+
{{ $t('package.links.compare') }}
639+
</LinkBase>
640+
</ButtonGroup>
641+
642+
<!-- Package metrics -->
643+
<div class="basis-full flex gap-2 sm:gap-3 flex-wrap">
610644
<ClientOnly>
611645
<PackageMetricsBadges
612646
v-if="resolvedVersion"
613647
:package-name="pkg.name"
614648
:version="resolvedVersion"
615649
:is-binary="isBinaryOnly"
616-
class="self-baseline ms-1 sm:ms-2"
650+
class="self-baseline"
617651
/>
618652

619653
<!-- Package likes -->
@@ -654,9 +688,7 @@ onKeyStroke(
654688
</ButtonBase>
655689
</TooltipApp>
656690
<template #fallback>
657-
<div
658-
class="flex items-center gap-1.5 list-none m-0 p-0 relative top-[5px] self-baseline ms-1 sm:ms-2"
659-
>
691+
<div class="flex items-center gap-1.5 list-none m-0 p-0 self-baseline">
660692
<SkeletonBlock class="w-16 h-5.5 rounded" />
661693
<SkeletonBlock class="w-13 h-5.5 rounded" />
662694
<SkeletonBlock class="w-13 h-5.5 rounded" />
@@ -665,40 +697,6 @@ onKeyStroke(
665697
</template>
666698
</ClientOnly>
667699
</div>
668-
669-
<!-- Internal navigation: Docs + Code + Compare (hidden on mobile, shown in external links instead) -->
670-
<ButtonGroup
671-
v-if="resolvedVersion"
672-
as="nav"
673-
:aria-label="$t('package.navigation')"
674-
class="hidden sm:flex"
675-
>
676-
<LinkBase
677-
variant="button-secondary"
678-
v-if="docsLink"
679-
:to="docsLink"
680-
keyshortcut="d"
681-
classicon="i-carbon:document"
682-
>
683-
{{ $t('package.links.docs') }}
684-
</LinkBase>
685-
<LinkBase
686-
variant="button-secondary"
687-
:to="{ name: 'code', params: { path: [pkg.name, 'v', resolvedVersion] } }"
688-
keyshortcut="."
689-
classicon="i-carbon:code"
690-
>
691-
{{ $t('package.links.code') }}
692-
</LinkBase>
693-
<LinkBase
694-
variant="button-secondary"
695-
:to="{ name: 'compare', query: { packages: pkg.name } }"
696-
keyshortcut="c"
697-
classicon="i-carbon:compare"
698-
>
699-
{{ $t('package.links.compare') }}
700-
</LinkBase>
701-
</ButtonGroup>
702700
</div>
703701
</header>
704702

@@ -770,28 +768,6 @@ onKeyStroke(
770768
{{ $t('package.links.fund') }}
771769
</LinkBase>
772770
</li>
773-
<!-- Mobile-only: Docs + Code + Compare links -->
774-
<li v-if="docsLink && displayVersion" class="sm:hidden">
775-
<LinkBase :to="docsLink" classicon="i-carbon:document">
776-
{{ $t('package.links.docs') }}
777-
</LinkBase>
778-
</li>
779-
<li v-if="resolvedVersion" class="sm:hidden">
780-
<LinkBase
781-
:to="{ name: 'code', params: { path: [pkg.name, 'v', resolvedVersion] } }"
782-
classicon="i-carbon:code"
783-
>
784-
{{ $t('package.links.code') }}
785-
</LinkBase>
786-
</li>
787-
<li class="sm:hidden">
788-
<LinkBase
789-
:to="{ name: 'compare', query: { packages: pkg.name } }"
790-
classicon="i-carbon:compare"
791-
>
792-
{{ $t('package.links.compare') }}
793-
</LinkBase>
794-
</li>
795771
</ul>
796772
</div>
797773

@@ -1373,4 +1349,19 @@ onKeyStroke(
13731349
display: none;
13741350
}
13751351
}
1352+
1353+
/* Mobile floating nav: safe-area positioning + kbd hiding */
1354+
@media (max-width: 639.9px) {
1355+
.package-nav {
1356+
bottom: calc(1.25rem + env(safe-area-inset-bottom, 0px));
1357+
}
1358+
1359+
.package-nav > :deep(a kbd) {
1360+
display: none;
1361+
}
1362+
1363+
.package-page {
1364+
padding-bottom: calc(4.5rem + env(safe-area-inset-bottom, 0px));
1365+
}
1366+
}
13761367
</style>

0 commit comments

Comments
 (0)