From 49d84dcfb4d9d70fde97e91bb556c44e1fea518e Mon Sep 17 00:00:00 2001 From: pengzhanbo Date: Tue, 19 Aug 2025 23:14:31 +0800 Subject: [PATCH] feat(theme): add `fullname` prop support for `RepoCard`, close #669 (#670) * feat(theme): add `fullname` prop support for `RepoCard`, close #669 * feat: add archive repo status --- docs/notes/theme/guide/components/repo-card.md | 9 +++++++++ theme/src/client/features/components/RepoCard.vue | 14 ++++++++++---- .../src/client/features/composables/github-repo.ts | 1 + 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/docs/notes/theme/guide/components/repo-card.md b/docs/notes/theme/guide/components/repo-card.md index 053574aa..980b2023 100644 --- a/docs/notes/theme/guide/components/repo-card.md +++ b/docs/notes/theme/guide/components/repo-card.md @@ -54,6 +54,15 @@ export default defineClientConfig({ 仓库地址,格式为 `owner/repo` ::: +::: field name="fullname" type="boolean" optional +是否显示完整的仓库名称。 + +完整的仓库名称为 `owner/repo`。 + +- 如果 owner 为个人,则默认不显示完整的仓库名称,仅显示 `repo`。 +- 如果 owner 为组织,则默认显示完整的仓库名称。 +::: + :::: ## 示例 diff --git a/theme/src/client/features/components/RepoCard.vue b/theme/src/client/features/components/RepoCard.vue index 89b9b458..61fbf1c1 100644 --- a/theme/src/client/features/components/RepoCard.vue +++ b/theme/src/client/features/components/RepoCard.vue @@ -3,9 +3,10 @@ import { toRef } from 'vue' import { ClientOnly } from 'vuepress/client' import { useGithubRepo } from '../composables/github-repo.js' -const props = defineProps<{ +const props = withDefaults(defineProps<{ repo: string -}>() + fullname?: boolean +}>(), { fullname: undefined }) const { loaded, data } = useGithubRepo(toRef(props, 'repo')) @@ -16,10 +17,10 @@ const { loaded, data } = useGithubRepo(toRef(props, 'repo')) - {{ data.ownerType === 'Organization' ? data.fullName : data.name }} + {{ fullname || (data.ownerType === 'Organization' && typeof fullname === 'undefined') ? data.fullName : data.name }} - {{ data.visibility + (data.template ? ' Template' : '') }} + {{ data.visibility + (data.template ? ' Template' : '') }}{{ data.archived ? ' archive' : '' }}

{{ data.description }} @@ -103,6 +104,11 @@ const { loaded, data } = useGithubRepo(toRef(props, 'repo')) transition: color var(--vp-t-color), border var(--vp-t-color); } +.vp-repo-card .repo-visibility.archived { + color: var(--vp-c-warning-1); + border-color: var(--vp-c-warning-2); +} + .vp-repo-card .repo-desc { flex: 1 2; font-size: 14px; diff --git a/theme/src/client/features/composables/github-repo.ts b/theme/src/client/features/composables/github-repo.ts index 4addfc9c..efcff75c 100644 --- a/theme/src/client/features/composables/github-repo.ts +++ b/theme/src/client/features/composables/github-repo.ts @@ -19,6 +19,7 @@ export interface GithubRepoInfo { watchers: number language: string languageColor: string + archived: boolean visibility: 'Private' | 'Public' // private, public template: boolean ownerType: 'User' | 'Organization'