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'