@@ -4,7 +4,6 @@ import type {
44 PackageVersionInfo ,
55 PackumentVersion ,
66 ProvenanceDetails ,
7- ReadmeResponse ,
87 SkillsListResponse ,
98} from ' #shared/types'
109import type { JsrPackageInfo } from ' #shared/types/jsr'
@@ -98,26 +97,6 @@ if (import.meta.server) {
9897 assertValidPackageName (packageName .value )
9998}
10099
101- // Fetch README for specific version if requested, otherwise latest
102- const { data : readmeData } = useLazyFetch <ReadmeResponse >(
103- () => {
104- const base = ` /api/registry/readme/${packageName .value } `
105- const version = requestedVersion .value
106- return version ? ` ${base }/v/${version } ` : base
107- },
108- { default : () => ({ html: ' ' , md: ' ' , playgroundLinks: [], toc: [] }) },
109- )
110-
111- // copy README file as Markdown
112- const { copied : copiedReadme, copy : copyReadme } = useClipboard ({
113- source : () => readmeData .value ?.md ?? ' ' ,
114- copiedDuring: 2000 ,
115- })
116-
117- // Track active TOC item based on scroll position
118- const tocItems = computed (() => readmeData .value ?.toc ?? [])
119- const { activeId : activeTocId } = useActiveTocItem (tocItems )
120-
121100// Check if package exists on JSR (only for scoped packages)
122101const { data : jsrInfo } = useLazyFetch <JsrPackageInfo >(() => ` /api/jsr/${packageName .value } ` , {
123102 default : () => ({ exists: false }),
@@ -1213,53 +1192,12 @@ const showSkeleton = shallowRef(false)
12131192 </ClientOnly >
12141193 </div >
12151194
1216- <!-- README -->
1217- <section id =" readme" class =" min-w-0 scroll-mt-20" :class =" $style.areaReadme" >
1218- <div class =" flex flex-wrap items-center justify-between mb-3 px-1" >
1219- <h2 id =" readme-heading" class =" group text-xs text-fg-subtle uppercase tracking-wider" >
1220- <LinkBase to =" #readme" >
1221- {{ $t('package.readme.title') }}
1222- </LinkBase >
1223- </h2 >
1224- <div class =" flex gap-2" >
1225- <!-- Copy readme as Markdown button -->
1226- <TooltipApp
1227- v-if =" readmeData?.md"
1228- :text =" $t('package.readme.copy_as_markdown')"
1229- position =" bottom"
1230- >
1231- <ButtonBase
1232- @click =" copyReadme()"
1233- :aria-pressed =" copiedReadme"
1234- :aria-label ="
1235- copiedReadme ? $t('common.copied') : $t('package.readme.copy_as_markdown')
1236- "
1237- :classicon =" copiedReadme ? 'i-carbon:checkmark' : 'i-simple-icons:markdown'"
1238- >
1239- {{ copiedReadme ? $t('common.copied') : $t('common.copy') }}
1240- </ButtonBase >
1241- </TooltipApp >
1242- <ReadmeTocDropdown
1243- v-if =" readmeData?.toc && readmeData.toc.length > 1"
1244- :toc =" readmeData.toc"
1245- :active-id =" activeTocId"
1246- />
1247- </div >
1248- </div >
1249-
1250- <!-- eslint-disable vue/no-v-html -- HTML is sanitized server-side -->
1251- <Readme v-if =" readmeData?.html" :html =" readmeData.html" />
1252- <p v-else class =" text-fg-muted italic" >
1253- {{ $t('package.readme.no_readme') }}
1254- <a
1255- v-if =" repositoryUrl"
1256- :href =" repositoryUrl"
1257- target =" _blank"
1258- rel =" noopener noreferrer"
1259- class =" link text-fg underline underline-offset-4 decoration-fg-subtle hover:(decoration-fg text-fg) transition-colors duration-200"
1260- >{{ $t('package.readme.view_on_github') }}</a
1261- >
1262- </p >
1195+ <section id =" readme" class =" min-w-0 scroll-mt-20" >
1196+ <PackageReadme
1197+ :package-name =" pkg.name"
1198+ :requested-version =" resolvedVersion ?? null"
1199+ :repository-url =" repositoryUrl"
1200+ />
12631201
12641202 <section
12651203 v-if =" hasProvenance(displayVersion) && isMounted"
@@ -1320,8 +1258,8 @@ const showSkeleton = shallowRef(false)
13201258
13211259 <!-- Playground links -->
13221260 <PackagePlaygrounds
1323- v-if = " readmeData?.playgroundLinks?.length "
1324- :links = " readmeData.playgroundLinks "
1261+ :package-name = " pkg.name "
1262+ :requested-version = " resolvedVersion ?? null "
13251263 />
13261264
13271265 <PackageCompatibility :engines =" displayVersion?.engines" />
@@ -1471,14 +1409,6 @@ const showSkeleton = shallowRef(false)
14711409 overflow-x : hidden ;
14721410}
14731411
1474- .areaReadme {
1475- grid-area : readme;
1476- }
1477-
1478- .areaReadme > :global(.readme ) {
1479- overflow-x : hidden ;
1480- }
1481-
14821412.areaSidebar {
14831413 grid-area : sidebar;
14841414}
0 commit comments