2 <html lang=
"{{ config.lang }}" class=
"no-js" id=
"site_top">
5 <meta http-equiv=
"X-UA-Compatible" content=
"IE=edge">
6 <meta name=
"viewport" content=
"width=device-width, initial-scale=1.0">
8 <meta name=
"robots" content=
"noindex">
11 {% set page_title = title %}
13 {% set page_title = site[hook].title %}
16 {% set page_title = site.shared.title_format | replace(
"PAGE_TITLE", page_title) %}
17 {% set cover_image = [
"https://", site.hostname,
"/icon-512.png" ] | join %}
18 {% set cover_image_alt = site.shared.eslint_logo_alt %}
19 {% set page_desc = site.shared.description %}
20 {% set relative_page_url = page.url | url | prettyURL %}
21 {% set page_url = [
"https://", site.hostname, relative_page_url ] | join %}
24 <title>{{ page_title }}
</title>
25 <meta name=
"description" content=
"{{ page_desc }}">
26 <link rel=
"canonical" href=
"{{ page_url }}">
28 <!-- https://github.com/eslint/eslint/issues/15844 -->
29 <base href=
"{{ relative_page_url }}">
32 <link rel=
"icon" href=
"/favicon.ico" sizes=
"any"><!-- 32×32 -->
33 <link rel=
"icon" href=
"/icon.svg" type=
"image/svg+xml">
34 <link rel=
"apple-touch-icon" href=
"/apple-touch-icon.png"><!-- 180×180 -->
35 <link rel=
"manifest" href=
"/manifest.webmanifest">
37 <!-- social sharing previews. Make sure every page template has title, desc, and cover url -->
39 <meta property=
"og:title" content=
"{{ page_title }}">
40 <meta property=
"og:description" content=
"{{ page_desc }}">
41 <meta property=
"og:image" content=
"{{ cover_image }}" />
42 <meta property=
"og:image:alt" content=
"{{ cover_image_alt }}">
43 <meta property=
"og:locale" content=
"{{ site.locale | replace("-
", "_
" ) }}">
44 <meta property=
"og:type" content=
"website">
45 <meta property=
"og:url" content=
"{{ page_url }}">
47 <meta name=
"twitter:title" content=
"{{ page_title }}">
48 <meta name=
"twitter:card" content=
"summary_large_image">
49 <meta name=
"twitter:site" content=
"@geteslint">
50 <meta name=
"twitter:description" content=
"{{ page_desc }}">
51 <meta name=
"twitter:image" content=
"{{ cover_image }}">
52 <meta name=
"twitter:creator" content=
"@geteslint">
55 <script type=
"module">
56 // This is a capable browser, let's improve the UI further!
57 document.documentElement.classList.add(
"enhanced");
58 document.documentElement.classList.remove('no-js');
61 <link rel=
"preload" href=
"{{ '/assets/fonts/SpaceGrotesk-Medium-subset.woff2' | url }}" as=
"font" type=
"font/woff2" crossorigin
>
62 <link rel=
"preload" href=
"{{ '/assets/fonts/Inter-Regular-subset.woff2' | url }}" as=
"font" type=
"font/woff2" crossorigin
>
63 <link rel=
"preload" href=
"{{ '/assets/fonts/SpaceMono-Regular-subset.woff2' | url }}" as=
"font" type=
"font/woff2" crossorigin
>
64 <link rel=
"preload" href=
"{{ '/assets/fonts/Consolas.woff' | url }}" as=
"font" type=
"font/woff" crossorigin
>
65 <link rel=
"preconnect" href=
"https://www.googletagmanager.com/">
69 var theme = window.localStorage.getItem(
"theme");
70 if (theme) document.documentElement.setAttribute('data-theme', theme)
71 else if (window.matchMedia('(prefers-color-scheme: dark)').matches)
72 document.documentElement.setAttribute('data-theme', 'dark');
73 else document.documentElement.setAttribute('data-theme', 'light');
79 /* Overrides for funky punctuators */
81 font-family:
"Mono Punctuators";
82 src: url(
"{{ '/assets/fonts/Consolas.woff' | url }}") format(
"woff");
84 unicode-range: U+
40, U+
7B, U+
7D, U+
28, U+
29;
88 /* Space Grotesk for headings */
90 font-family:
"Space Grotesk";
92 url(
"{{ '/assets/fonts/SpaceGrotesk-Medium-subset.woff2' | url }}") format(
"woff2"),
93 url(
"{{ '/assets/fonts/SpaceGrotesk-Medium-subset.zopfli.woff' | url }}") format(
"woff");
98 /* Inter for body text */
103 url(
"{{ '/assets/fonts/Inter-Regular-subset.woff2' | url }}") format(
"woff2"),
104 url(
"{{ '/assets/fonts/Inter-Regular-subset.zopfli.woff' | url }}") format(
"woff");
109 /* Space Mono for code snippets */
112 font-family:
"Space Mono";
114 url(
"{{ '/assets/fonts/SpaceMono-Regular-subset.woff2' | url }}") format(
"woff2"),
115 url(
"{{ '/assets/fonts/SpaceMono-Regular-subset.zopfli.woff' | url }}") format(
"woff");
120 /* Country Flags for Windows */
122 font-family:
"Twemoji Country Flags";
123 unicode-range: U+
1F1E6-
1F1FF, U+
1F3F4, U+E0062-E0063, U+E0065, U+E0067, U+E006C, U+E006E, U+E0073-E0074, U+E0077, U+E007F;
124 src: url(
"https://cdn.jsdelivr.net/npm/country-flag-emoji-polyfill@0.1/dist/TwemojiCountryFlags.woff2") format(
"woff2");
128 if (
"fonts" in document) {
129 var InterSemiBold = new FontFace(
"Inter",
"url({{ '/assets/fonts/Inter-SemiBold-subset.woff2' | url }}) format('woff2'), url({{ '/assets/fonts/Inter-SemiBold-subset.zopfli.woff' | url }}) format('woff')", {
134 Promise.all([InterSemiBold.load()]).then(function(fonts) {
135 fonts.forEach(function(font) {
136 document.fonts.add(font);
141 <script src=
"{{ '/assets/js/themes.js' | url }}"></script>
142 <script type=
"module" src=
"{{ '/assets/js/search.js' | url }}"></script>
143 <link rel=
"stylesheet" type=
"text/css" href=
"{{ '/assets/css/styles.css' | url }}">
144 <link rel=
"stylesheet" href=
"{{ '/assets/css/print.css' | url }}" media=
"print">
145 <script src=
"https://unpkg.com/anchor-js@4.3.1/anchor.min.js"></script>
148 <body class=
"{{ hook }}">
149 <a href=
"#main" class=
"c-btn c-btn--primary" id=
"skip-link">Skip to main content
</a>
153 <script src=
"{{ '/assets/js/css-vars-ponyfill@2.js' | url }}"></script>
154 <script src=
"{{ '/assets/js/focus-visible.js' | url }}"></script>
155 <script src=
"{{ '/assets/js/main.js' | url }}"></script>
156 <script src=
"{{ '/assets/js/tabs.js' | url }}"></script>
157 <script src=
"{{ '/assets/js/scroll-up-btn.js' | url }}"></script>
158 {% include 'partials/analytics.html' %}
160 {%- if hook ==
"component-library" -%}
161 <script src=
"{{ '/assets/js/components-index.js' | url }}"></script>