diff --git a/app/composables/useViewOnGitProvider.ts b/app/composables/useViewOnGitProvider.ts new file mode 100644 index 0000000000..d18e6ef9b3 --- /dev/null +++ b/app/composables/useViewOnGitProvider.ts @@ -0,0 +1,44 @@ +/** + * Return the text "see on {git provider}" based on the given provider + */ +export function useViewOnGitProvider( + provider: MaybeRefOrGetter, +) { + const { t } = useI18n() + return computed(() => { + const uProvider = toValue(provider) + if (!uProvider) { + return t('common.view_on.git_repo') + } + switch (uProvider) { + case 'github': + return t('common.view_on.github') + case 'gitlab': + return t('common.view_on.gitlab') + case 'bitbucket': + return t('common.view_on.bitbucket') + case 'gitea': + return t('common.view_on.gitea') + case 'forgejo': + return t('common.view_on.forgejo') + case 'codeberg': + return t('common.view_on.codeberg') + case 'sourcehut': + return t('common.view_on.sourcehut') + case 'gitee': + return t('common.view_on.gitee') + case 'tangled': + return t('common.view_on.tangled') + case 'radicle': + return t('common.view_on.radicle') + case 'git': + return t('common.view_on.git_repo') + } + + if (import.meta.dev) { + // oxlint-disable-next-line no-console + console.warn(`missing '${uProvider}' provider, add it to shared/utils/git-providers.ts!`) + } + return t('common.view_on.git_repo') + }) +} diff --git a/app/pages/org/[org].vue b/app/pages/org/[org].vue index 37e439ad02..13eca02352 100644 --- a/app/pages/org/[org].vue +++ b/app/pages/org/[org].vue @@ -175,7 +175,7 @@ defineOgImageComponent('Default', { target="_blank" rel="noopener noreferrer" class="link-subtle font-mono text-sm inline-flex items-center gap-1.5" - :title="$t('common.view_on_npm')" + :title="$t('common.view_on.npm')" >