Skip to content

Commit 35786d8

Browse files
authored
feat(docs): baseline indicator (#8772)
1 parent 4d5f93a commit 35786d8

19 files changed

+333
-3
lines changed

Diff for: build/index.ts

+20-1
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import path from "node:path";
22

33
import chalk from "chalk";
4+
import webFeatures from "web-features/index.json" assert { type: "json" };
5+
46
import {
57
MacroInvocationError,
68
MacroLiveSampleError,
79
MacroRedirectedLinkError,
810
} from "../kumascript/src/errors.js";
911

10-
import { Doc } from "../libs/types/document.js";
12+
import { Doc, WebFeature, WebFeatureStatus } from "../libs/types/document.js";
1113
import { Document, execGit } from "../content/index.js";
1214
import { CONTENT_ROOT, REPOSITORY_URLS } from "../libs/env/index.js";
1315
import * as kumascript from "../kumascript/index.js";
@@ -359,6 +361,8 @@ export async function buildDocument(
359361
browserCompat &&
360362
(Array.isArray(browserCompat) ? browserCompat : [browserCompat]);
361363

364+
doc.baseline = addBaseline(doc);
365+
362366
// If the document contains <math> HTML, it will set `doc.hasMathML=true`.
363367
// The client (<Document/> component) needs to know this for loading polyfills.
364368
if ($("math").length > 0) {
@@ -522,6 +526,21 @@ export async function buildDocument(
522526
return { doc: doc as Doc, liveSamples, fileAttachments };
523527
}
524528

529+
function addBaseline(doc: Partial<Doc>): WebFeatureStatus | undefined {
530+
if (doc.browserCompat) {
531+
for (const feature of Object.values<WebFeature>(webFeatures)) {
532+
if (
533+
feature.status &&
534+
feature.compat_features?.some((query) =>
535+
doc.browserCompat?.includes(query)
536+
)
537+
) {
538+
return feature.status;
539+
}
540+
}
541+
}
542+
}
543+
525544
interface BuiltLiveSamplePage {
526545
id: string;
527546
html: string | null;

Diff for: client/src/assets/icons/baseline/browser-check.svg

+1
Loading

Diff for: client/src/assets/icons/baseline/browser-cross.svg

+1
Loading

Diff for: client/src/assets/icons/baseline/check-dark.svg

+1
Loading

Diff for: client/src/assets/icons/baseline/check.svg

+1
Loading

Diff for: client/src/assets/icons/baseline/chrome.svg

+1
Loading

Diff for: client/src/assets/icons/baseline/cross-dark.svg

+1
Loading

Diff for: client/src/assets/icons/baseline/cross.svg

+1
Loading

Diff for: client/src/assets/icons/baseline/edge.svg

+1
Loading

0 commit comments

Comments
 (0)