@@ -7,12 +7,35 @@ import { useLocation } from "react-router";
7
7
8
8
import "./baseline-indicator.scss" ;
9
9
10
- import type { SupportStatus } from "../../../libs/types/web-features" ;
10
+ import type {
11
+ SupportStatus ,
12
+ browserIdentifier ,
13
+ } from "../../../libs/types/web-features" ;
11
14
12
- const ENGINES = [
13
- { name : "Blink" , browsers : [ "Chrome" , "Edge" ] } ,
14
- { name : "Gecko" , browsers : [ "Firefox" ] } ,
15
- { name : "WebKit" , browsers : [ "Safari" ] } ,
15
+ interface BrowserGroup {
16
+ name : string ;
17
+ ids : browserIdentifier [ ] ;
18
+ }
19
+
20
+ const ENGINES : {
21
+ name : string ;
22
+ browsers : BrowserGroup [ ] ;
23
+ } [ ] = [
24
+ {
25
+ name : "Blink" ,
26
+ browsers : [
27
+ { name : "Chrome" , ids : [ "chrome" , "chrome_android" ] } ,
28
+ { name : "Edge" , ids : [ "edge" ] } ,
29
+ ] ,
30
+ } ,
31
+ {
32
+ name : "Gecko" ,
33
+ browsers : [ { name : "Firefox" , ids : [ "firefox" , "firefox_android" ] } ] ,
34
+ } ,
35
+ {
36
+ name : "WebKit" ,
37
+ browsers : [ { name : "Safari" , ids : [ "safari" , "safari_ios" ] } ] ,
38
+ } ,
16
39
] ;
17
40
18
41
const LOCALIZED_BCD_IDS = {
@@ -52,25 +75,27 @@ export function BaselineIndicator({ status }: { status: SupportStatus }) {
52
75
pathname
53
76
) } &level=${ level } `;
54
77
55
- const supported = ( browser : string ) => {
56
- const version : string | undefined = status . support ?. [ browser . toLowerCase ( ) ] ;
57
- return Boolean ( status . baseline || version ) ;
78
+ const supported = ( browser : BrowserGroup ) => {
79
+ return browser . ids
80
+ . map ( ( id ) => status . support ?. [ id ] )
81
+ . every ( ( version ) => Boolean ( version ) ) ;
58
82
} ;
59
83
60
- const engineTitle = ( browsers : string [ ] ) =>
84
+ const engineTitle = ( browsers : BrowserGroup [ ] ) =>
61
85
browsers
62
86
. map ( ( browser , index , array ) => {
63
87
const previous = index > 0 ? supported ( array [ index - 1 ] ) : undefined ;
64
88
const current = supported ( browser ) ;
89
+ const name = browser . name ;
65
90
return typeof previous === "undefined"
66
91
? current
67
- ? `Supported in ${ browser } `
68
- : `Not widely supported in ${ browser } `
92
+ ? `Supported in ${ name } `
93
+ : `Not widely supported in ${ name } `
69
94
: current === previous
70
- ? ` and ${ browser } `
95
+ ? ` and ${ name } `
71
96
: current
72
- ? `, and supported in ${ browser } `
73
- : `, and not widely supported in ${ browser } ` ;
97
+ ? `, and supported in ${ name } `
98
+ : `, and not widely supported in ${ name } ` ;
74
99
} )
75
100
. join ( "" ) ;
76
101
@@ -105,12 +130,12 @@ export function BaselineIndicator({ status }: { status: SupportStatus }) {
105
130
< span key = { name } className = "engine" title = { engineTitle ( browsers ) } >
106
131
{ browsers . map ( ( browser ) => (
107
132
< span
108
- key = { browser }
109
- className = { `browser ${ browser . toLowerCase ( ) } ${
133
+ key = { browser . ids [ 0 ] }
134
+ className = { `browser ${ browser . ids [ 0 ] } ${
110
135
supported ( browser ) ? "supported" : ""
111
136
} `}
112
137
role = "img"
113
- aria-label = { `${ browser } ${
138
+ aria-label = { `${ browser . name } ${
114
139
supported ( browser ) ? "check" : "cross"
115
140
} `}
116
141
/>
0 commit comments