diff --git a/app/components/About/GovernanceList.vue b/app/components/About/GovernanceList.vue
new file mode 100644
index 0000000000..aa89b6559a
--- /dev/null
+++ b/app/components/About/GovernanceList.vue
@@ -0,0 +1,61 @@
+
+
+
+
+ -
+
+
![]()
+
+
+
+ @{{ person.login }}
+
+
+
+ {{ roleLabels[person.role] ?? person.role }}
+
+
+ {{ $t('about.team.sponsor') }}
+
+
+
+
+
+
diff --git a/app/components/About/LogoList.vue b/app/components/About/LogoList.vue
index 8e9bd819fb..03945b705c 100644
--- a/app/components/About/LogoList.vue
+++ b/app/components/About/LogoList.vue
@@ -35,7 +35,7 @@ const props = defineProps<{
:href="item.url"
target="_blank"
rel="noopener noreferrer"
- class="relative flex items-center justify-center h-16 rounded-md bg-bg-muted hover:bg-bg-subtle border border-border transition-colors py-1 px-3"
+ class="relative flex items-center justify-center h-16 rounded-md bg-bg-muted hover:bg-bg-subtle border border-border hover:border-border-hover transition-colors py-1 px-3"
:style="{ paddingBlock: item.normalisingIndent }"
:aria-label="item.name"
>
@@ -65,7 +65,7 @@ const props = defineProps<{
:href="groupItem.url"
target="_blank"
rel="noopener noreferrer"
- class="relative flex items-center justify-center h-full aspect-square rounded-md hover:bg-bg-subtle border border-transparent hover:border-border transition-colors p-1.5"
+ class="relative flex items-center justify-center h-full aspect-square rounded-md hover:bg-bg-subtle border border-transparent hover:border-border-hover transition-colors p-1.5"
:style="{ paddingBlock: groupItem.normalisingIndent }"
:aria-label="groupItem.name"
>
diff --git a/app/pages/about.vue b/app/pages/about.vue
index 5e898e23c7..3a31704347 100644
--- a/app/pages/about.vue
+++ b/app/pages/about.vue
@@ -1,5 +1,4 @@
@@ -179,60 +174,26 @@ const roleLabels = computed(
{{ $t('about.contributors.description') }}
-
+
+
+
+ {{ $t('about.team.core') }}
+
+
+
+
+
+
-
- {{ $t('about.team.governance') }}
+
+ {{ $t('about.team.maintainers') }}
-
- -
-
-
-
-
- @{{ person.login }}
-
-
-
- {{ roleLabels[person.role] ?? person.role }}
-
-
- {{ $t('about.team.sponsor') }}
-
-
-
-
-
+
@@ -263,12 +224,12 @@ const roleLabels = computed(
-
diff --git a/app/pages/pds.vue b/app/pages/pds.vue
index cc937df40c..4de6e01037 100644
--- a/app/pages/pds.vue
+++ b/app/pages/pds.vue
@@ -142,7 +142,7 @@ const totalAccounts = computed(() => pdsUsers.value.length)
{{ $t('pds.community.empty') }}
-
+
- pdsUsers.value.length)
@error="handleImageError(user.handle)"
width="48"
height="48"
- class="w-12 h-12 rounded-lg ring-2 ring-transparent group-hover:ring-accent transition-all duration-200 ease-out group-hover:scale-125 will-change-transform"
+ class="w-12 h-12 rounded-md ring-1 ring-transparent group-hover:ring-accent transition-all duration-200 ease-out"
loading="lazy"
/>
diff --git a/i18n/locales/ar.json b/i18n/locales/ar.json
index 179ed6251f..519b623f7e 100644
--- a/i18n/locales/ar.json
+++ b/i18n/locales/ar.json
@@ -819,7 +819,6 @@
"oss_partners": {},
"team": {
"title": "الفريق",
- "governance": "الحوكمة",
"role_steward": "راعي",
"role_maintainer": "مشرف",
"sponsor": "راعي",
diff --git a/i18n/locales/az-AZ.json b/i18n/locales/az-AZ.json
index 93c9a8117a..23805f4f0e 100644
--- a/i18n/locales/az-AZ.json
+++ b/i18n/locales/az-AZ.json
@@ -927,7 +927,6 @@
},
"team": {
"title": "Komanda",
- "governance": "İdarəetmə",
"role_steward": "idarəçi",
"role_maintainer": "dəstəkçi",
"sponsor": "sponsor",
diff --git a/i18n/locales/bg-BG.json b/i18n/locales/bg-BG.json
index f937b02e1e..c2d1d1701f 100644
--- a/i18n/locales/bg-BG.json
+++ b/i18n/locales/bg-BG.json
@@ -888,7 +888,6 @@
},
"team": {
"title": "Отбор",
- "governance": "Управление",
"role_steward": "управител",
"role_maintainer": "поддържащ",
"sponsor": "спонсор",
diff --git a/i18n/locales/cs-CZ.json b/i18n/locales/cs-CZ.json
index b5ffca3a02..7fefeb1a20 100644
--- a/i18n/locales/cs-CZ.json
+++ b/i18n/locales/cs-CZ.json
@@ -1119,7 +1119,6 @@
},
"team": {
"title": "Tým",
- "governance": "Správa",
"role_steward": "Vedoucí",
"role_maintainer": "Správce",
"sponsor": "Sponzor",
diff --git a/i18n/locales/de.json b/i18n/locales/de.json
index e805f32888..e315922ac8 100644
--- a/i18n/locales/de.json
+++ b/i18n/locales/de.json
@@ -1118,7 +1118,6 @@
},
"team": {
"title": "Team",
- "governance": "Verwaltung",
"role_steward": "Verwalter",
"role_maintainer": "Maintainer",
"sponsor": "Sponsor",
diff --git a/i18n/locales/en.json b/i18n/locales/en.json
index 7e119affa7..a410c90deb 100644
--- a/i18n/locales/en.json
+++ b/i18n/locales/en.json
@@ -1184,7 +1184,9 @@
},
"team": {
"title": "Team",
- "governance": "Governance",
+ "core": "Core",
+ "maintainers": "Maintainers",
+ "role_core": "core",
"role_steward": "steward",
"role_maintainer": "maintainer",
"sponsor": "sponsor",
diff --git a/i18n/locales/es.json b/i18n/locales/es.json
index 9bcb7263fc..f1224ff651 100644
--- a/i18n/locales/es.json
+++ b/i18n/locales/es.json
@@ -1000,7 +1000,6 @@
},
"team": {
"title": "Equipo",
- "governance": "Gobernanza",
"role_steward": "Administrador",
"role_maintainer": "Mantenedor",
"sponsor": "Patrocinar",
diff --git a/i18n/locales/fr-FR.json b/i18n/locales/fr-FR.json
index ed341333d9..a85b4a926b 100644
--- a/i18n/locales/fr-FR.json
+++ b/i18n/locales/fr-FR.json
@@ -1169,7 +1169,6 @@
},
"team": {
"title": "Équipe",
- "governance": "Gouvernance",
"role_steward": "pilote",
"role_maintainer": "mainteneur",
"sponsor": "sponsor",
diff --git a/i18n/locales/hi-IN.json b/i18n/locales/hi-IN.json
index ea702a7728..16ddb8fe46 100644
--- a/i18n/locales/hi-IN.json
+++ b/i18n/locales/hi-IN.json
@@ -982,7 +982,6 @@
},
"team": {
"title": "टीम",
- "governance": "शासन",
"role_steward": "संरक्षक",
"role_maintainer": "अनुरक्षक",
"sponsor": "प्रायोजक",
diff --git a/i18n/locales/hu-HU.json b/i18n/locales/hu-HU.json
index c14948a6e1..5b2f287810 100644
--- a/i18n/locales/hu-HU.json
+++ b/i18n/locales/hu-HU.json
@@ -888,7 +888,6 @@
},
"team": {
"title": "Csapat",
- "governance": "Irányítás",
"role_steward": "gondnok",
"role_maintainer": "karbantartó",
"sponsor": "szponzor",
diff --git a/i18n/locales/id-ID.json b/i18n/locales/id-ID.json
index 9646ca17b1..d35c639463 100644
--- a/i18n/locales/id-ID.json
+++ b/i18n/locales/id-ID.json
@@ -1000,7 +1000,6 @@
},
"team": {
"title": "Tim",
- "governance": "Tata Kelola",
"role_steward": "pengurus",
"role_maintainer": "pemelihara",
"sponsor": "sponsor",
diff --git a/i18n/locales/ja-JP.json b/i18n/locales/ja-JP.json
index 72397e4907..37b5f38c2b 100644
--- a/i18n/locales/ja-JP.json
+++ b/i18n/locales/ja-JP.json
@@ -941,7 +941,6 @@
},
"team": {
"title": "チーム",
- "governance": "ガバナンス",
"role_steward": "スチュワード",
"role_maintainer": "メンテナ",
"sponsor": "スポンサー",
diff --git a/i18n/locales/mr-IN.json b/i18n/locales/mr-IN.json
index 57c36430e0..7aa91dcc71 100644
--- a/i18n/locales/mr-IN.json
+++ b/i18n/locales/mr-IN.json
@@ -960,7 +960,6 @@
},
"team": {
"title": "टीम",
- "governance": "शासन",
"role_steward": "विश्वस्त",
"role_maintainer": "देखभालकर्ता",
"sponsor": "प्रायोजक",
diff --git a/i18n/locales/nb-NO.json b/i18n/locales/nb-NO.json
index 78dac5ebf2..7a9b3c4012 100644
--- a/i18n/locales/nb-NO.json
+++ b/i18n/locales/nb-NO.json
@@ -1179,7 +1179,6 @@
},
"team": {
"title": "Team",
- "governance": "Styring",
"role_steward": "forvalter",
"role_maintainer": "vedlikeholder",
"sponsor": "sponsor",
diff --git a/i18n/locales/nl.json b/i18n/locales/nl.json
index e6b67e109d..adc4b22341 100644
--- a/i18n/locales/nl.json
+++ b/i18n/locales/nl.json
@@ -1125,7 +1125,6 @@
},
"team": {
"title": "Team",
- "governance": "Bestuur",
"role_steward": "Coördinator",
"role_maintainer": "Onderhouder",
"sponsor": "sponsor",
diff --git a/i18n/locales/pl-PL.json b/i18n/locales/pl-PL.json
index f4acd249ed..7abdf7e745 100644
--- a/i18n/locales/pl-PL.json
+++ b/i18n/locales/pl-PL.json
@@ -941,7 +941,6 @@
},
"team": {
"title": "Zespół",
- "governance": "Zarządzanie",
"role_steward": "steward",
"role_maintainer": "maintainer",
"sponsor": "sponsor",
diff --git a/i18n/locales/pt-BR.json b/i18n/locales/pt-BR.json
index a09e5e5ae8..f7ba0028f0 100644
--- a/i18n/locales/pt-BR.json
+++ b/i18n/locales/pt-BR.json
@@ -1151,7 +1151,6 @@
},
"team": {
"title": "Equipe",
- "governance": "Governança",
"role_steward": "administrador",
"role_maintainer": "mantenedor",
"sponsor": "patrocinador",
diff --git a/i18n/locales/pt-PT.json b/i18n/locales/pt-PT.json
index 8540dec556..683ce28ae6 100644
--- a/i18n/locales/pt-PT.json
+++ b/i18n/locales/pt-PT.json
@@ -1165,7 +1165,6 @@
},
"team": {
"title": "Equipa",
- "governance": "Governança",
"role_steward": "curador",
"role_maintainer": "responsável",
"sponsor": "patrocinador",
diff --git a/i18n/locales/ru-RU.json b/i18n/locales/ru-RU.json
index 2287fe4bb2..3b5ee6174f 100644
--- a/i18n/locales/ru-RU.json
+++ b/i18n/locales/ru-RU.json
@@ -1183,7 +1183,6 @@
},
"team": {
"title": "Команда",
- "governance": "Управление",
"role_steward": "управляющий",
"role_maintainer": "мейнтейнер",
"sponsor": "спонсировать",
diff --git a/i18n/locales/sr-Latn-RS.json b/i18n/locales/sr-Latn-RS.json
index c015089b8c..e164313a05 100644
--- a/i18n/locales/sr-Latn-RS.json
+++ b/i18n/locales/sr-Latn-RS.json
@@ -997,7 +997,6 @@
},
"team": {
"title": "Tim",
- "governance": "Upravljanje",
"role_steward": "steward",
"role_maintainer": "održavalac",
"sponsor": "sponzor",
diff --git a/i18n/locales/tr-TR.json b/i18n/locales/tr-TR.json
index 515614cfc7..60653c7328 100644
--- a/i18n/locales/tr-TR.json
+++ b/i18n/locales/tr-TR.json
@@ -930,7 +930,6 @@
},
"team": {
"title": "Ekip",
- "governance": "Yönetişim",
"role_steward": "Yönetici",
"role_maintainer": "Geliştirici",
"sponsor": "Sponsor",
diff --git a/i18n/locales/uk-UA.json b/i18n/locales/uk-UA.json
index c40713258f..4b7a443e46 100644
--- a/i18n/locales/uk-UA.json
+++ b/i18n/locales/uk-UA.json
@@ -1179,7 +1179,6 @@
},
"team": {
"title": "Команда",
- "governance": "Управління",
"role_steward": "стюард",
"role_maintainer": "супроводжувач",
"sponsor": "спонсор",
diff --git a/i18n/locales/vi-VN.json b/i18n/locales/vi-VN.json
index d9a5698fa2..4594ee1b87 100644
--- a/i18n/locales/vi-VN.json
+++ b/i18n/locales/vi-VN.json
@@ -997,7 +997,6 @@
},
"team": {
"title": "Đội ngũ",
- "governance": "Quản trị",
"role_steward": "người điều hành",
"role_maintainer": "người duy trì",
"sponsor": "tài trợ",
diff --git a/i18n/locales/zh-CN.json b/i18n/locales/zh-CN.json
index eb423981ba..774ddb83f8 100644
--- a/i18n/locales/zh-CN.json
+++ b/i18n/locales/zh-CN.json
@@ -1179,7 +1179,6 @@
},
"team": {
"title": "团队",
- "governance": "治理",
"role_steward": "管理者",
"role_maintainer": "维护者",
"sponsor": "赞助",
diff --git a/i18n/locales/zh-TW.json b/i18n/locales/zh-TW.json
index 623e3955fe..ddeef38ee4 100644
--- a/i18n/locales/zh-TW.json
+++ b/i18n/locales/zh-TW.json
@@ -1117,7 +1117,6 @@
},
"team": {
"title": "團隊",
- "governance": "治理",
"role_steward": "管理者",
"role_maintainer": "維護者",
"sponsor": "贊助",
diff --git a/i18n/schema.json b/i18n/schema.json
index ee385067bd..5c2b780c66 100644
--- a/i18n/schema.json
+++ b/i18n/schema.json
@@ -3556,7 +3556,13 @@
"title": {
"type": "string"
},
- "governance": {
+ "core": {
+ "type": "string"
+ },
+ "maintainers": {
+ "type": "string"
+ },
+ "role_core": {
"type": "string"
},
"role_steward": {
diff --git a/server/api/contributors.get.ts b/server/api/contributors.get.ts
index 597d0a2dfd..c7e4329158 100644
--- a/server/api/contributors.get.ts
+++ b/server/api/contributors.get.ts
@@ -1,4 +1,4 @@
-export type Role = 'steward' | 'maintainer' | 'contributor'
+export type Role = 'steward' | 'maintainer' | 'contributor' | 'core'
export interface GitHubContributor {
login: string
@@ -18,17 +18,19 @@ const FALLBACK_STEWARDS = new Set(['danielroe', 'patak-cat'])
interface TeamMembers {
steward: Set
+ core: Set
maintainer: Set
}
async function fetchTeamMembers(token: string): Promise {
const teams: Record = {
steward: 'stewards',
+ core: 'core',
maintainer: 'maintainers',
}
try {
- const result: TeamMembers = { steward: new Set(), maintainer: new Set() }
+ const result: TeamMembers = { steward: new Set(), maintainer: new Set(), core: new Set() }
for (const [role, slug] of Object.entries(teams) as [keyof TeamMembers, string][]) {
const response = await fetch(
@@ -110,8 +112,9 @@ async function fetchSponsorable(token: string, logins: string[]): Promise() }
+ return { steward: FALLBACK_STEWARDS, maintainer: new Set(), core: new Set() }
})()
const allContributors: GitHubAPIContributor[] = []
@@ -169,7 +172,9 @@ export default defineCachedEventHandler(
// Identify maintainers (stewards + maintainers) and check their sponsors status
const maintainerLogins = filtered
- .filter(c => teams.steward.has(c.login) || teams.maintainer.has(c.login))
+ .filter(
+ c => teams.steward.has(c.login) || teams.core.has(c.login) || teams.maintainer.has(c.login),
+ )
.map(c => c.login)
const sponsorable = githubToken
diff --git a/test/nuxt/a11y.spec.ts b/test/nuxt/a11y.spec.ts
index 5d0865d77f..a8d990d2cd 100644
--- a/test/nuxt/a11y.spec.ts
+++ b/test/nuxt/a11y.spec.ts
@@ -144,6 +144,7 @@ import {
AppMark,
AboutLogoImg,
AboutLogoList,
+ AboutGovernanceList,
AuthorAvatar,
AuthorList,
BackButton,
@@ -517,6 +518,37 @@ describe('component accessibility audits', () => {
})
})
+ describe('AboutGovernanceList', () => {
+ it('should have no accessibility violations', async () => {
+ const component = await mountSuspended(AboutGovernanceList, {
+ props: {
+ members: [
+ {
+ id: 1,
+ login: 'steward1',
+ avatar_url: 'https://github.com/steward1.png',
+ html_url: 'https://github.com/steward1',
+ contributions: 100,
+ role: 'steward',
+ sponsors_url: 'https://github.com/sponsors/steward1',
+ },
+ {
+ id: 3,
+ login: 'contributor1',
+ avatar_url: 'https://github.com/contributor1.png',
+ html_url: 'https://github.com/contributor1',
+ contributions: 100,
+ role: 'contributor',
+ sponsors_url: 'https://github.com/sponsors/contributor1',
+ },
+ ],
+ },
+ })
+ const results = await runAxe(component)
+ expect(results.violations).toEqual([])
+ })
+ })
+
describe('BaseCard', () => {
it('should have no accessibility violations', async () => {
const component = await mountSuspended(BaseCard, {