[READ-ONLY] a fast, modern browser for the npm registry
at main 53 lines 1.7 kB view raw
1<script setup lang="ts"> 2const props = defineProps<{ 3 /** Provider ID (e.g., "github", "gitlab") */ 4 provider?: string 5 /** Package name for linking to npmjs.com provenance page */ 6 packageName?: string 7 /** Package version for linking */ 8 version?: string 9 /** Whether to show as compact (icon only) or full (with text) */ 10 compact?: boolean 11 /** Whether to render as a link (defaults to true when packageName and version are provided) */ 12 linked?: boolean 13}>() 14 15const providerLabels: Record<string, string> = { 16 github: 'GitHub Actions', 17 gitlab: 'GitLab CI', 18} 19 20const title = computed(() => 21 props.provider 22 ? $t('badges.provenance.verified_via', { 23 provider: providerLabels[props.provider] ?? props.provider, 24 }) 25 : $t('badges.provenance.verified_title'), 26) 27</script> 28 29<template> 30 <a 31 v-if="packageName && version && linked !== false" 32 :href="`https://www.npmjs.com/package/${packageName}/v/${version}#provenance`" 33 target="_blank" 34 rel="noopener noreferrer" 35 class="inline-flex items-center justify-center gap-1 text-xs font-mono text-fg-muted hover:text-fg transition-colors duration-200 min-w-6 min-h-6" 36 :title="title" 37 > 38 <span class="i-lucide:shield-check shrink-0" :class="compact ? 'w-3.5 h-3.5' : 'w-4 h-4'" /> 39 <span v-if="!compact" class="sr-only sm:not-sr-only">{{ 40 $t('badges.provenance.verified') 41 }}</span> 42 </a> 43 <span 44 v-else 45 class="inline-flex items-center gap-1 text-xs font-mono text-fg-muted" 46 :title="title" 47 > 48 <span class="i-lucide:shield-check shrink-0" :class="compact ? 'w-3.5 h-3.5' : 'w-4 h-4'" /> 49 <span v-if="!compact" class="sr-only sm:not-sr-only">{{ 50 $t('badges.provenance.verified') 51 }}</span> 52 </span> 53</template>