Skip to content

Commit 5630b1c

Browse files
committed
applying most changes recommended from review (thanks alexdln)
1 parent 2d9609c commit 5630b1c

File tree

7 files changed

+28
-56
lines changed

7 files changed

+28
-56
lines changed

app/components/Changelog/Card.vue

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22
import type { ReleaseData } from '~~/shared/types/changelog'
33
import { slugify } from '~~/shared/utils/html'
44
5-
const { release, tocHeaderClass } = defineProps<{
5+
const { release } = defineProps<{
66
release: ReleaseData
7-
tocHeaderClass: string
87
}>()
98
const formattedDate = computed(() => {
109
if (!release.publishedAt) {
@@ -13,7 +12,7 @@ const formattedDate = computed(() => {
1312
return new Date(release.publishedAt).toISOString().split('T')[0]
1413
})
1514
16-
const cardId = computed(() => (release.publishedAt ? `date-${formattedDate.value}` : undefined))
15+
const cardId = computed(() => (formattedDate.value ? `date-${formattedDate.value}` : undefined))
1716
1817
const navId = computed(() => `release-${slugify(release.title)}`)
1918
@@ -26,7 +25,9 @@ function navigateToTitle() {
2625
class="border border-border rounded-lg p-4 pt-2 sm:p-6 sm:pt-4 scroll-mt-18"
2726
:id="cardId"
2827
>
29-
<div class="flex gap-2 items-center sticky z-3 text-2xl p-2" :class="tocHeaderClass">
28+
<div
29+
class="flex gap-2 items-center sticky z-3 text-2xl p-2 border-border bg-bg top-[--combined-header-height]"
30+
>
3031
<h2
3132
class="text-1xl sm:text-2xl font-medium min-w-0 break-words py-2 scroll-mt-20"
3233
:id="navId"
@@ -62,10 +63,10 @@ function navigateToTitle() {
6263
<style module>
6364
.linkTitle::after {
6465
content: '__';
65-
@apply inline i-lucide:link rtl-flip ms-1 opacity-0;
66+
@apply inline i-lucide:link rtl-flip ms-1 opacity-0 text-[0.75em];
6667
}
6768
68-
.linkTitle:hover:after {
69+
.linkTitle:hover::after {
6970
@apply opacity-100;
7071
}
7172
</style>

app/components/Changelog/ErrorMsg.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const { pkgName, changelogLink, viewOnGit } = defineProps<{
99
<div class="w-full flex items-center flex-col gap-2 mt-4">
1010
<p>{{ $t('changelog.error.p1', { package: pkgName }) }}</p>
1111
<i18n-t keypath="changelog.error.p2" tag="p" #viewon>
12-
<LinkBase :to="changelogLink">{{ viewOnGit.toLowerCase() }}</LinkBase>
12+
<LinkBase :to="changelogLink" class="lowercase">{{ viewOnGit }}</LinkBase>
1313
</i18n-t>
1414
</div>
1515
</template>

app/components/Changelog/Releases.vue

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
<script setup lang="ts">
22
import { slugify } from '~~/shared/utils/html'
33
4-
const { info, requestedDate, requestedVersion, tocHeaderClass } = defineProps<{
4+
const { info, requestedDate, requestedVersion } = defineProps<{
55
info: ChangelogReleaseInfo
66
requestedDate?: string
77
requestedVersion?: string | null | undefined
8-
tocHeaderClass: string
98
}>()
109
1110
const { data: releases, error } = await useFetch<ReleaseData[]>(
@@ -25,25 +24,25 @@ const matchingDateReleases = computed(() => {
2524
}
2625
const date = new Date(release.publishedAt).toISOString().split('T')[0]
2726
28-
return date == requestedDate
27+
return date === requestedDate
2928
})
3029
})
3130
3231
if (import.meta.client) {
3332
watch(
3433
[() => route.hash, () => requestedDate?.toLowerCase(), releases, () => requestedVersion],
35-
([hash, date, r, rv]) => {
36-
if (hash && r) {
34+
([hash, date, uReleases, uRequestedVersion]) => {
35+
if (hash && uReleases) {
3736
// ensures the user is scrolled to the hash
3837
navigateTo(hash, { replace: true })
3938
return
4039
}
41-
if (hash || !date || !r) {
40+
if (hash || !date || !uReleases) {
4241
return
4342
}
44-
if (rv) {
43+
if (uRequestedVersion) {
4544
for (const match of matchingDateReleases.value ?? []) {
46-
if (match.title.toLowerCase().includes(rv)) {
45+
if (match.title.toLowerCase().includes(uRequestedVersion)) {
4746
navigateTo(`#release-${slugify(match.title)}`, { replace: true })
4847
return
4948
}
@@ -61,7 +60,7 @@ if (import.meta.client) {
6160
</script>
6261
<template>
6362
<div class="flex flex-col gap-2 py-3" v-if="releases">
64-
<ChangelogCard v-for="release of releases" :release :key="release.id" :tocHeaderClass />
63+
<ChangelogCard v-for="release of releases" :release :key="release.id" />
6564
</div>
6665
<slot v-else-if="error" name="error"></slot>
6766
</template>

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

Lines changed: 10 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ definePageMeta({
1111
const route = useRoute('changes')
1212
// Parse package name & version
1313
// Patterns:
14-
// /changes/nuxt/v/4.2.0 → packageName: "nuxt", version: "4.2.0"
15-
// /changes/nuxt/v/4.2.0/src/index.ts → packageName: "nuxt", version: "4.2.0"
16-
// /changes/@nuxt/kit/v/1.0.0 → packageName: "@nuxt/kit", version: "1.0.0"
14+
// /package-changes/nuxt/v/4.2.0 → packageName: "nuxt", version: "4.2.0"
15+
// /package-changes/nuxt/v/4.2.0/src/index.ts → packageName: "nuxt", version: "4.2.0"
16+
// /package-changes/@nuxt/kit/v/1.0.0 → packageName: "@nuxt/kit", version: "1.0.0"
1717
const parsedRoute = computed(() => {
1818
const { org, name } = route.params
1919
@@ -50,17 +50,6 @@ const latestVersion = computed(() => {
5050
return pkg.value.versions[latestTag] ?? null
5151
})
5252
53-
// watch(
54-
// [version, () => latestVersion.value?.version, packageName],
55-
// ([v, latest, name]) => {
56-
// if (!v && latest && name) {
57-
// const pathSegments = [...name.split('/'), 'v', latest]
58-
// navigateTo({ name: 'changes', params: { path: pathSegments as [string, ...string[]] } })
59-
// }
60-
// },
61-
// { immediate: true },
62-
// )
63-
6453
// getting info
6554
const { data: changelog, pending } = usePackageChangelog(packageName, version)
6655
@@ -104,10 +93,9 @@ defineOgImageComponent('Default', {
10493
/>
10594
<section class="container w-full pt-3">
10695
<div
107-
class="pa-3 z-2 flex justify-between gap-4 h-14 b-b-1"
96+
class="pa-3 z-2 flex justify-between gap-4 h-14 b-b-1 border-border bg-bg top-[--combined-header-height]"
10897
:class="{
109-
[$style.tocHeader]: true,
110-
sticky: changelog?.type == 'md',
98+
sticky: changelog?.type === 'md',
11199
}"
112100
>
113101
<LinkBase
@@ -118,13 +106,13 @@ defineOgImageComponent('Default', {
118106
>
119107
{{ changelog.provider }}
120108
</LinkBase>
121-
<div v-if="changelog?.type == 'md'" ref="tptoc" class="w-14 h-8">
122-
<!- prevents layout shift while loading ->
109+
<div v-if="changelog?.type === 'md'" ref="tptoc" class="w-14 h-8">
110+
<!-- prevents layout shift while loading -->
123111
</div>
124112
</div>
125113
<section v-if="pending || resolvingPending" class="flex flex-col gap-2 py-3">
126114
<SkeletonBlock class="h-8 w-40 rounded" />
127-
<ul class="ms-3 list-disc my-[1rem] ps-[1.5rem] marker:color-[--border-hover]">
115+
<ul class="ms-3 list-disc my-4 ps-6 marker:color-[--border-hover]">
128116
<li class="mb-1" v-for="_n in 5">
129117
<SkeletonBlock class="h-7 w-full max-w-2xl rounded" />
130118
</li>
@@ -137,11 +125,10 @@ defineOgImageComponent('Default', {
137125
<Suspense v-else>
138126
<template #default>
139127
<LazyChangelogReleases
140-
v-if="changelog?.type == 'release'"
128+
v-if="changelog?.type === 'release'"
141129
:info="changelog"
142130
:requestedDate="versionDate"
143131
:requested-version="version"
144-
:tocHeaderClass="$style.tocHeader"
145132
#error
146133
>
147134
<LazyChangelogErrorMsg
@@ -151,7 +138,7 @@ defineOgImageComponent('Default', {
151138
/>
152139
</LazyChangelogReleases>
153140
<LazyChangelogMarkdown
154-
v-else-if="changelog?.type == 'md'"
141+
v-else-if="changelog?.type === 'md'"
155142
:info="changelog"
156143
:tpTarget="tptoc"
157144
:requested-version="version"
@@ -182,12 +169,3 @@ defineOgImageComponent('Default', {
182169
</section>
183170
</main>
184171
</template>
185-
186-
<style module>
187-
.tocHeader {
188-
/* border-bottom-width: 1px; */
189-
border-color: color-mix(in srgb, var(--border) var(--un-border-opacity), transparent);
190-
background-color: color-mix(in srgb, var(--bg) var(--un-bg-opacity), transparent);
191-
top: var(--combined-header-height); /* top is only used when sticky is used */
192-
}
193-
</style>

server/api/changelog/info/[...pkg].get.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export default defineCachedEventHandler(
3636
swr: true,
3737
getKey: event => {
3838
const pkg = getRouterParam(event, 'pkg') ?? ''
39-
return `changelogInfo:v1:${pkg.replace(/\/+$/, '').trim()}`
39+
return `changelogInfo:v1:${pkg.trim().replace(/\/+$/, '')}`
4040
},
4141
},
4242
)

server/api/changelog/md/[provider]/[owner]/[repo]/[...path].get.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ export default defineCachedEventHandler(
1919
}
2020

2121
try {
22-
console.log({ provider })
23-
2422
switch (provider as ProviderId) {
2523
case 'github':
2624
return await getGithubMarkDown(owner, repo, path)

server/utils/changelog/detectChangelog.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,7 @@ import { resolveURL } from 'ufo'
1515
*
1616
* first checks if releases are available and then changelog.md
1717
*/
18-
export async function detectChangelog(
19-
pkg: ExtendedPackageJson,
20-
// packageName: string,
21-
// version: string,
22-
) {
18+
export async function detectChangelog(pkg: ExtendedPackageJson) {
2319
if (!pkg.repository?.url) {
2420
return false
2521
}

0 commit comments

Comments
 (0)