@@ -11,34 +11,19 @@ const { data: analysis } = usePackageAnalysis(
1111 () => props .version ,
1212)
1313
14- const moduleFormatLabel = computed (() => {
15- if (! analysis .value ) return null
16- switch (analysis .value .moduleFormat ) {
17- case ' esm' :
18- return ' ESM'
19- case ' cjs' :
20- return ' CJS'
21- case ' dual' :
22- return ' CJS/ESM'
23- default :
24- return null
25- }
14+ // ESM support
15+ const hasEsm = computed (() => {
16+ if (! analysis .value ) return false
17+ return analysis .value .moduleFormat === ' esm' || analysis .value .moduleFormat === ' dual'
2618})
2719
28- const moduleFormatTooltip = computed (() => {
29- if (! analysis .value ) return ' '
30- switch (analysis .value .moduleFormat ) {
31- case ' esm' :
32- return $t (' package.metrics.esm' )
33- case ' cjs' :
34- return $t (' package.metrics.cjs' )
35- case ' dual' :
36- return $t (' package.metrics.dual' )
37- default :
38- return $t (' package.metrics.unknown_format' )
39- }
20+ // CJS support (only show badge if present, omit if missing)
21+ const hasCjs = computed (() => {
22+ if (! analysis .value ) return false
23+ return analysis .value .moduleFormat === ' cjs' || analysis .value .moduleFormat === ' dual'
4024})
4125
26+ // Types support
4227const hasTypes = computed (() => {
4328 if (! analysis .value ) return false
4429 return analysis .value .types ?.kind === ' included' || analysis .value .types ?.kind === ' @types'
@@ -48,11 +33,11 @@ const typesTooltip = computed(() => {
4833 if (! analysis .value ) return ' '
4934 switch (analysis .value .types ?.kind ) {
5035 case ' included' :
51- return $t (' package.metrics.ts_included ' )
36+ return $t (' package.metrics.types_included ' )
5237 case ' @types' :
53- return $t (' package.metrics.types_from ' , { package: analysis .value .types .packageName })
38+ return $t (' package.metrics.types_available ' , { package: analysis .value .types .packageName })
5439 default :
55- return ' '
40+ return $t ( ' package.metrics.no_types ' )
5641 }
5742})
5843
@@ -68,29 +53,58 @@ const typesHref = computed(() => {
6853<template >
6954 <ul v-if =" analysis" class =" flex items-center gap-1.5 list-none m-0 p-0" >
7055 <!-- TypeScript types -->
71- <li v-if = " hasTypes " >
56+ <li >
7257 <component
7358 :is =" typesHref ? NuxtLink : 'span'"
7459 :to =" typesHref"
75- class =" inline-flex items-center px-1.5 py-0.5 font-mono text-xs text-fg-muted bg-bg-muted border border-border rounded transition-colors duration-200"
76- :class ="
60+ class =" inline-flex items-center gap-1 px-1.5 py-0.5 font-mono text-xs rounded transition-colors duration-200"
61+ :class =" [
62+ hasTypes
63+ ? 'text-fg-muted bg-bg-muted border border-border'
64+ : 'text-fg-subtle bg-bg-subtle border border-border-subtle',
7765 typesHref
7866 ? 'hover:text-fg hover:border-border-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-fg/50'
79- : ''
80- "
67+ : '',
68+ ] "
8169 :title =" typesTooltip"
8270 >
83- TS
71+ <span
72+ class =" w-3 h-3"
73+ :class =" hasTypes ? 'i-carbon-checkmark' : 'i-carbon-close'"
74+ aria-hidden =" true"
75+ />
76+ Types
8477 </component >
8578 </li >
8679
87- <!-- Module format -->
88- <li v-if =" moduleFormatLabel" >
80+ <!-- ESM badge (show with X if missing) -->
81+ <li >
82+ <span
83+ class =" inline-flex items-center gap-1 px-1.5 py-0.5 font-mono text-xs rounded transition-colors duration-200"
84+ :class ="
85+ hasEsm
86+ ? 'text-fg-muted bg-bg-muted border border-border'
87+ : 'text-fg-subtle bg-bg-subtle border border-border-subtle'
88+ "
89+ :title =" hasEsm ? $t('package.metrics.esm') : $t('package.metrics.no_esm')"
90+ >
91+ <span
92+ class =" w-3 h-3"
93+ :class =" hasEsm ? 'i-carbon-checkmark' : 'i-carbon-close'"
94+ aria-hidden =" true"
95+ />
96+ ESM
97+ </span >
98+ </li >
99+
100+ <!-- CJS badge (only show if present) -->
101+ <li v-if =" hasCjs" >
89102 <span
90- class =" inline-flex items-center px-1.5 py-0.5 font-mono text-xs text-fg-muted bg-bg-muted border border-border rounded transition-colors duration-200"
91- :title =" moduleFormatTooltip "
103+ class =" inline-flex items-center gap-1 px-1.5 py-0.5 font-mono text-xs text-fg-muted bg-bg-muted border border-border rounded transition-colors duration-200"
104+ :title =" $t('package.metrics.cjs') "
92105 >
93- {{ moduleFormatLabel }}
106+ <span class =" i-carbon-checkmark w-3 h-3" aria-hidden =" true" />
107+ CJS
94108 </span >
95109 </li >
96110 </ul >
0 commit comments