imdhemy-jekyll-theme 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +7 -0
- data/_includes/archive-header.html +12 -1
- data/_includes/giscus-comments.html +1 -1
- data/_includes/header.html +17 -7
- data/_includes/pagination-links.html +6 -4
- data/_includes/post-header.html +1 -1
- data/_includes/post-item.html +4 -2
- data/_includes/post-series.html +5 -2
- data/_includes/seo-meta.html +105 -0
- data/_includes/site-search.html +11 -3
- data/_includes/structured-data.html +119 -0
- data/_layouts/archive.html +6 -0
- data/_layouts/blog.html +5 -0
- data/_layouts/default.html +4 -29
- data/_layouts/page.html +5 -0
- data/_layouts/post.html +5 -0
- data/_sass/components/_core.scss +69 -23
- data/assets/css/main.scss +17 -0
- data/assets/js/dist/main.js +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8c2766f041feb77f44c69b2775ad3232f72925dd1bff3e7906f9c2f093115c6e
|
|
4
|
+
data.tar.gz: 8275b2d6b417f38d58932cb29303972b04d236351749a6050e217c272a74016f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ec06e5d0fdbca089ccc979dbec4d13d1f648ccf4c14521e21fdf053f528a228def6a9224b2c09ce46846a8daf679926a829a02f6d4e69bff0e9b4a6e3b3e06e8
|
|
7
|
+
data.tar.gz: 9a4b39872b6cc2e27ad53f04aad39e510777da81fc809ab8233468ba30a15859e0b9254a5e0600b554ce884050c895f287190fc2009dcb352902066a0f44b0bc
|
data/README.md
CHANGED
|
@@ -6,6 +6,13 @@ Jekyll theme for my personal website: [imdhemy.com](https://imdhemy.com).
|
|
|
6
6
|
|
|
7
7
|
All documentation lives in the [`docs/`](./docs) directory.
|
|
8
8
|
|
|
9
|
+
The theme also ships with a reusable SEO foundation:
|
|
10
|
+
|
|
11
|
+
- canonical URLs
|
|
12
|
+
- layout-aware meta descriptions and social previews
|
|
13
|
+
- JSON-LD for home, posts, breadcrumbs, and collection pages
|
|
14
|
+
- configurable robots and social image defaults
|
|
15
|
+
|
|
9
16
|
- [Documentation Home](./docs/README.md)
|
|
10
17
|
- [Getting Started](./docs/getting-started.md)
|
|
11
18
|
- [Configuration Reference](./docs/configuration.md)
|
|
@@ -1,9 +1,20 @@
|
|
|
1
|
+
{% assign archive_type = page.type | default: page.collection %}
|
|
2
|
+
{% assign archive_label = 'archive' %}
|
|
3
|
+
{% if archive_type == 'tag' or archive_type == 'tags' %}
|
|
4
|
+
{% assign archive_label = 'tag' %}
|
|
5
|
+
{% elsif archive_type == 'category' or archive_type == 'categories' %}
|
|
6
|
+
{% assign archive_label = 'category' %}
|
|
7
|
+
{% endif %}
|
|
8
|
+
{% assign archive_description = page.description %}
|
|
9
|
+
{% if archive_description == nil or archive_description == empty %}
|
|
10
|
+
{% capture archive_description %}Browse all posts filed under {{ archive_label }} {{ page.title }}.{% endcapture %}
|
|
11
|
+
{% endif %}
|
|
1
12
|
<section class="page-header-wrap page-header-wrap--archive">
|
|
2
13
|
<div class="page-header-wrap__container">
|
|
3
14
|
<div class="page-header page-header--archive page-header--archive-hub">
|
|
4
15
|
<div class="page-header__layout page-header__layout--stacked">
|
|
5
16
|
<h1 class="page-header__title page-header__title--centered">{{ page.title }}</h1>
|
|
6
|
-
<p class="page-header__description page-header__description--centered">Check out the <a
|
|
17
|
+
<p class="page-header__description page-header__description--centered">{{ archive_description }} Check out the <a
|
|
7
18
|
class="archive-header__blog-link"
|
|
8
19
|
href="{{ site.baseurl }}/blog">blog</a> for all
|
|
9
20
|
posts.</p>
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
aria-controls="comments-panel"
|
|
14
14
|
data-comments-toggle>
|
|
15
15
|
<span class="comments-collapsible__copy">
|
|
16
|
-
<span class="comments-shell__heading">{{ comments_heading }}</span>
|
|
16
|
+
<span class="comments-shell__heading" role="heading" aria-level="2">{{ comments_heading }}</span>
|
|
17
17
|
<span class="comments-collapsible__hint">{{ comments_toggle_hint }}</span>
|
|
18
18
|
</span>
|
|
19
19
|
<span class="comments-collapsible__icon-wrap" aria-hidden="true">
|
data/_includes/header.html
CHANGED
|
@@ -5,9 +5,11 @@
|
|
|
5
5
|
{% if site.theme_search.enabled == false %}
|
|
6
6
|
{% assign search_enabled = false %}
|
|
7
7
|
{% endif %}
|
|
8
|
+
{% assign open_menu_label = site.theme_text.open_menu_label | default: "Open navigation menu" %}
|
|
9
|
+
{% assign close_menu_label = site.theme_text.close_menu_label | default: "Close navigation menu" %}
|
|
8
10
|
<!-- begin logo -->
|
|
9
11
|
<div class="site-header__brand">
|
|
10
|
-
<a href="{{ site.baseurl }}/" class="site-logo">
|
|
12
|
+
<a href="{{ site.baseurl }}/" class="site-logo" aria-label="{{ site.title }} home">
|
|
11
13
|
{{ site.title }}
|
|
12
14
|
</a>
|
|
13
15
|
</div>
|
|
@@ -30,7 +32,7 @@
|
|
|
30
32
|
{% endif %}
|
|
31
33
|
<li class="site-nav-list__item">
|
|
32
34
|
<a href="{{ site.baseurl }}{{ nav_page.url }}"
|
|
33
|
-
class="nav-link{% if is_active %} is-active{% endif %}">
|
|
35
|
+
class="nav-link{% if is_active %} is-active{% endif %}"{% if is_active %} aria-current="page"{% endif %}>
|
|
34
36
|
{{ nav_page.title }}
|
|
35
37
|
</a>
|
|
36
38
|
</li>
|
|
@@ -43,9 +45,16 @@
|
|
|
43
45
|
{% endif %}
|
|
44
46
|
|
|
45
47
|
<div class="site-header__mobile-toggle-wrap">
|
|
46
|
-
<button type="button"
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
<button type="button"
|
|
49
|
+
class="site-header__toggle"
|
|
50
|
+
data-target="#mobile-nav"
|
|
51
|
+
data-open-label="{{ open_menu_label }}"
|
|
52
|
+
data-close-label="{{ close_menu_label }}"
|
|
53
|
+
aria-controls="mobile-nav"
|
|
54
|
+
aria-expanded="false"
|
|
55
|
+
aria-label="{{ open_menu_label }}">
|
|
56
|
+
<ion-icon name="menu-outline" aria-hidden="true"></ion-icon>
|
|
57
|
+
<span class="sr-only">{{ open_menu_label }}</span>
|
|
49
58
|
</button>
|
|
50
59
|
</div>
|
|
51
60
|
<!-- end right part -->
|
|
@@ -53,7 +62,8 @@
|
|
|
53
62
|
<!-- begin mobile nav -->
|
|
54
63
|
<nav id="mobile-nav"
|
|
55
64
|
class="site-mobile-nav is-hidden"
|
|
56
|
-
aria-label="Mobile navigation"
|
|
65
|
+
aria-label="Mobile navigation"
|
|
66
|
+
hidden>
|
|
57
67
|
<div class="site-mobile-nav__inner">
|
|
58
68
|
{% if search_enabled %}
|
|
59
69
|
{% include site-search.html variant="mobile" %}
|
|
@@ -73,7 +83,7 @@
|
|
|
73
83
|
{% endif %}
|
|
74
84
|
<li class="site-mobile-nav__item">
|
|
75
85
|
<a href="{{ site.baseurl }}{{ nav_page.url }}"
|
|
76
|
-
class="site-mobile-nav__link nav-link{% if is_active %} is-active{% endif %}">
|
|
86
|
+
class="site-mobile-nav__link nav-link{% if is_active %} is-active{% endif %}"{% if is_active %} aria-current="page"{% endif %}>
|
|
77
87
|
{{ nav_page.title }}
|
|
78
88
|
</a>
|
|
79
89
|
</li>
|
|
@@ -3,16 +3,18 @@
|
|
|
3
3
|
<nav class="pagination-nav" aria-label="Pagination">
|
|
4
4
|
{% if paginator.previous_page %}
|
|
5
5
|
<a class="pagination-link"
|
|
6
|
-
href="{{ paginator.previous_page_path | relative_url }}"
|
|
6
|
+
href="{{ paginator.previous_page_path | relative_url }}"
|
|
7
|
+
rel="prev">Prev</a>
|
|
7
8
|
{% else %}
|
|
8
|
-
<span class="pagination-link is-disabled">Previous</span>
|
|
9
|
+
<span class="pagination-link is-disabled" aria-disabled="true">Previous</span>
|
|
9
10
|
{% endif %}
|
|
10
11
|
|
|
11
12
|
{% if paginator.next_page %}
|
|
12
13
|
<a class="pagination-link"
|
|
13
|
-
href="{{ paginator.next_page_path | relative_url }}"
|
|
14
|
+
href="{{ paginator.next_page_path | relative_url }}"
|
|
15
|
+
rel="next">Next</a>
|
|
14
16
|
{% else %}
|
|
15
|
-
<span class="pagination-link is-disabled">Next</span>
|
|
17
|
+
<span class="pagination-link is-disabled" aria-disabled="true">Next</span>
|
|
16
18
|
{% endif %}
|
|
17
19
|
</nav>
|
|
18
20
|
</section>
|
data/_includes/post-header.html
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{% assign read_minutes = page.content | number_of_words | divided_by: 200 | at_least: 1 %}
|
|
2
2
|
{% assign back_to_posts_label = site.theme_text.back_to_posts_label | default: "Back to all posts" %}
|
|
3
3
|
<div class="post-header">
|
|
4
|
-
<a class="post-back-link" href="{{ site.baseurl }}/blog">← {{ back_to_posts_label }}</a>
|
|
4
|
+
<a class="post-back-link" href="{{ site.baseurl }}/blog" aria-label="{{ back_to_posts_label }}">← {{ back_to_posts_label }}</a>
|
|
5
5
|
<h1 class="post-title">{{ page.title }}</h1>
|
|
6
6
|
{% include post-meta.html date=page.date reading_minutes=read_minutes class_name="post-header__meta post-meta" %}
|
|
7
7
|
<div class="post-header__tags">
|
data/_includes/post-item.html
CHANGED
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
<!-- thumbnail -->
|
|
5
5
|
{% if post.image %}
|
|
6
6
|
<a href="{{ site.baseurl }}{{ post.url }}"
|
|
7
|
-
class="post-card__image"
|
|
7
|
+
class="post-card__image"
|
|
8
|
+
aria-hidden="true"
|
|
9
|
+
tabindex="-1">
|
|
8
10
|
<img src="{{ site.baseurl }}{{ post.image }}"
|
|
9
11
|
class="post-card__image-el"
|
|
10
12
|
alt="{{ post.image_alt | default: post.title }}"/>
|
|
@@ -25,6 +27,6 @@
|
|
|
25
27
|
{% include post-meta.html date=post.date reading_minutes=reading_minutes class_name="post-card__meta post-meta" %}
|
|
26
28
|
{% assign tags = post.tags %}
|
|
27
29
|
{% include post-tags.html %}
|
|
28
|
-
<a class="post-card__read-link" href="{{ site.baseurl }}{{ post.url }}">{{ read_article_label }} →</a>
|
|
30
|
+
<a class="post-card__read-link" href="{{ site.baseurl }}{{ post.url }}" aria-label="{{ read_article_label }}: {{ post.title }}">{{ read_article_label }} →</a>
|
|
29
31
|
</div>
|
|
30
32
|
</article>
|
data/_includes/post-series.html
CHANGED
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
<div class="post-series series-collapsible is-open" data-series-collapsible>
|
|
74
74
|
<div class="post-series__header">
|
|
75
75
|
<div class="post-series__heading-wrap">
|
|
76
|
-
<
|
|
76
|
+
<h2 class="post-series__heading">{{ series_name }}</h2>
|
|
77
77
|
<span class="post-series__summary">{{ series_count }} {{ series_part_word }}</span>
|
|
78
78
|
</div>
|
|
79
79
|
<button class="series-collapsible__toggle"
|
|
@@ -125,6 +125,7 @@
|
|
|
125
125
|
<li class="post-series__overflow-item">
|
|
126
126
|
<button class="post-series__overflow-toggle"
|
|
127
127
|
type="button"
|
|
128
|
+
aria-expanded="false"
|
|
128
129
|
aria-controls="{{ list_id }}"
|
|
129
130
|
data-series-overflow-group="middle"
|
|
130
131
|
data-series-overflow-toggle>
|
|
@@ -141,6 +142,7 @@
|
|
|
141
142
|
<li class="post-series__overflow-item">
|
|
142
143
|
<button class="post-series__overflow-toggle"
|
|
143
144
|
type="button"
|
|
145
|
+
aria-expanded="false"
|
|
144
146
|
aria-controls="{{ list_id }}"
|
|
145
147
|
data-series-overflow-group="before"
|
|
146
148
|
data-series-overflow-toggle>
|
|
@@ -157,6 +159,7 @@
|
|
|
157
159
|
<li class="post-series__overflow-item">
|
|
158
160
|
<button class="post-series__overflow-toggle"
|
|
159
161
|
type="button"
|
|
162
|
+
aria-expanded="false"
|
|
160
163
|
aria-controls="{{ list_id }}"
|
|
161
164
|
data-series-overflow-group="after"
|
|
162
165
|
data-series-overflow-toggle>
|
|
@@ -175,7 +178,7 @@
|
|
|
175
178
|
<li class="{{ item_class }}"{% if is_overflow_item %} data-series-overflow-item data-series-overflow-group="{{ overflow_group }}" hidden{% endif %}>
|
|
176
179
|
{% if post.url == page.url %}
|
|
177
180
|
<span class="post-series__link"
|
|
178
|
-
aria-current="
|
|
181
|
+
aria-current="step">
|
|
179
182
|
<span class="post-series__index" aria-hidden="true">{{ forloop.index }}</span>
|
|
180
183
|
<span class="post-series__title">{{ post.title }}</span>
|
|
181
184
|
</span>
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
{% assign canonical_url = page.url | replace: 'index.html', '' | absolute_url %}
|
|
2
|
+
{% assign site_name = site.title | default: '' %}
|
|
3
|
+
{% assign title_separator = site.theme_seo.title_separator | default: '|' %}
|
|
4
|
+
{% assign raw_page_title = page.seo_title | default: page.title %}
|
|
5
|
+
{% if raw_page_title == nil or raw_page_title == empty %}
|
|
6
|
+
{% if page.layout == 'blog' %}
|
|
7
|
+
{% assign raw_page_title = 'Blog' %}
|
|
8
|
+
{% elsif page.layout == 'archive' %}
|
|
9
|
+
{% assign raw_page_title = 'Archive' %}
|
|
10
|
+
{% else %}
|
|
11
|
+
{% assign raw_page_title = site_name %}
|
|
12
|
+
{% endif %}
|
|
13
|
+
{% endif %}
|
|
14
|
+
{% if raw_page_title and raw_page_title != site_name %}
|
|
15
|
+
{% capture meta_title %}{{ raw_page_title | strip }} {{ title_separator }} {{ site_name | strip }}{% endcapture %}
|
|
16
|
+
{% else %}
|
|
17
|
+
{% assign meta_title = site_name %}
|
|
18
|
+
{% endif %}
|
|
19
|
+
{% assign meta_title = meta_title | normalize_whitespace | strip %}
|
|
20
|
+
{% assign meta_description = page.description %}
|
|
21
|
+
{% if meta_description == nil or meta_description == empty %}
|
|
22
|
+
{% if page.layout == 'blog' %}
|
|
23
|
+
{% capture meta_description %}Browse the latest posts, notes, and writing from {{ site_name }}.{% endcapture %}
|
|
24
|
+
{% elsif page.layout == 'archive' %}
|
|
25
|
+
{% assign archive_type = page.type | default: page.collection | default: 'archive' %}
|
|
26
|
+
{% capture meta_description %}Browse posts in the {{ archive_type }} archive for {{ page.title }}.{% endcapture %}
|
|
27
|
+
{% elsif page.layout == 'page' or page.layout == 'post' %}
|
|
28
|
+
{% assign meta_description = page.excerpt | default: site.description %}
|
|
29
|
+
{% else %}
|
|
30
|
+
{% assign meta_description = site.description %}
|
|
31
|
+
{% endif %}
|
|
32
|
+
{% endif %}
|
|
33
|
+
{% assign meta_description = meta_description | strip_html | normalize_whitespace | truncate: 160 | escape %}
|
|
34
|
+
{% assign meta_author = page.author | default: site.author.name | default: site.theme_seo.name %}
|
|
35
|
+
{% assign seo_locale = page.locale | default: site.theme_seo.locale | default: site.locale | default: 'en_US' %}
|
|
36
|
+
{% assign default_image = site.theme_seo.default_image | default: site.social_image | default: site.favicon %}
|
|
37
|
+
{% assign meta_image = page.image | default: default_image %}
|
|
38
|
+
{% if meta_image %}
|
|
39
|
+
{% assign meta_image_url = meta_image | absolute_url %}
|
|
40
|
+
{% endif %}
|
|
41
|
+
{% assign twitter_card = 'summary' %}
|
|
42
|
+
{% if meta_image_url %}
|
|
43
|
+
{% assign twitter_card = 'summary_large_image' %}
|
|
44
|
+
{% endif %}
|
|
45
|
+
{% assign robots_content = page.robots | default: site.theme_seo.robots_default | default: 'index, follow' %}
|
|
46
|
+
{% if page.noindex %}
|
|
47
|
+
{% assign robots_content = 'noindex, follow' %}
|
|
48
|
+
{% endif %}
|
|
49
|
+
{% assign og_type = 'website' %}
|
|
50
|
+
{% if page.layout == 'post' %}
|
|
51
|
+
{% assign og_type = 'article' %}
|
|
52
|
+
{% endif %}
|
|
53
|
+
<title>{{ meta_title }}</title>
|
|
54
|
+
<meta name="description" content="{{ meta_description }}">
|
|
55
|
+
<meta name="author" content="{{ meta_author | escape }}">
|
|
56
|
+
<meta name="robots" content="{{ robots_content }}">
|
|
57
|
+
<link rel="canonical" href="{{ canonical_url }}">
|
|
58
|
+
{% if paginator.previous_page %}
|
|
59
|
+
<link rel="prev" href="{{ paginator.previous_page_path | absolute_url }}">
|
|
60
|
+
{% endif %}
|
|
61
|
+
{% if paginator.next_page %}
|
|
62
|
+
<link rel="next" href="{{ paginator.next_page_path | absolute_url }}">
|
|
63
|
+
{% endif %}
|
|
64
|
+
{% if page.keywords %}
|
|
65
|
+
<meta name="keywords" content="{{ page.keywords | join: ', ' | escape }}">
|
|
66
|
+
{% endif %}
|
|
67
|
+
<meta property="og:title" content="{{ meta_title }}">
|
|
68
|
+
<meta property="og:description" content="{{ meta_description }}">
|
|
69
|
+
<meta property="og:url" content="{{ canonical_url }}">
|
|
70
|
+
<meta property="og:site_name" content="{{ site_name | escape }}">
|
|
71
|
+
<meta property="og:locale" content="{{ seo_locale }}">
|
|
72
|
+
<meta property="og:type" content="{{ og_type }}">
|
|
73
|
+
{% if meta_image_url %}
|
|
74
|
+
<meta property="og:image" content="{{ meta_image_url }}">
|
|
75
|
+
{% if page.image_alt or site.theme_seo.default_image_alt %}
|
|
76
|
+
<meta property="og:image:alt" content="{{ page.image_alt | default: site.theme_seo.default_image_alt | escape }}">
|
|
77
|
+
{% endif %}
|
|
78
|
+
{% endif %}
|
|
79
|
+
{% if page.layout == 'post' %}
|
|
80
|
+
{% assign article_published = page.date | default: page.created_at %}
|
|
81
|
+
{% assign article_modified = page.last_modified_at | default: page.updated_at | default: article_published %}
|
|
82
|
+
{% if article_published %}
|
|
83
|
+
<meta property="article:published_time" content="{{ article_published | date_to_xmlschema }}">
|
|
84
|
+
{% endif %}
|
|
85
|
+
{% if article_modified %}
|
|
86
|
+
<meta property="article:modified_time" content="{{ article_modified | date_to_xmlschema }}">
|
|
87
|
+
{% endif %}
|
|
88
|
+
{% if meta_author %}
|
|
89
|
+
<meta property="article:author" content="{{ meta_author | escape }}">
|
|
90
|
+
{% endif %}
|
|
91
|
+
{% if page.tags %}
|
|
92
|
+
{% for tag in page.tags limit: 6 %}
|
|
93
|
+
<meta property="article:tag" content="{{ tag | escape }}">
|
|
94
|
+
{% endfor %}
|
|
95
|
+
{% endif %}
|
|
96
|
+
{% endif %}
|
|
97
|
+
<meta name="twitter:card" content="{{ twitter_card }}">
|
|
98
|
+
<meta name="twitter:title" content="{{ meta_title }}">
|
|
99
|
+
<meta name="twitter:description" content="{{ meta_description }}">
|
|
100
|
+
{% if site.theme_seo.twitter_site %}
|
|
101
|
+
<meta name="twitter:site" content="{{ site.theme_seo.twitter_site }}">
|
|
102
|
+
{% endif %}
|
|
103
|
+
{% if meta_image_url %}
|
|
104
|
+
<meta name="twitter:image" content="{{ meta_image_url }}">
|
|
105
|
+
{% endif %}
|
data/_includes/site-search.html
CHANGED
|
@@ -19,8 +19,10 @@
|
|
|
19
19
|
{% assign input_id = "site-search-input-" | append: variant %}
|
|
20
20
|
{% assign panel_id = "site-search-panel-" | append: variant %}
|
|
21
21
|
{% assign status_id = "site-search-status-" | append: variant %}
|
|
22
|
+
{% assign results_label = site.theme_text.search_results_label | default: "Search results" %}
|
|
22
23
|
|
|
23
24
|
<section class="{{ root_class }}"
|
|
25
|
+
aria-label="Site search"
|
|
24
26
|
data-search-root
|
|
25
27
|
data-search-url="{{ '/assets/search.json' | relative_url }}"
|
|
26
28
|
data-search-max-results="{{ max_results }}"
|
|
@@ -32,7 +34,7 @@
|
|
|
32
34
|
data-search-empty-text="{{ search_empty_text }}"
|
|
33
35
|
data-search-error-text="{{ search_error_text }}">
|
|
34
36
|
<form class="site-search__form" role="search" action="{{ '/assets/search.json' | relative_url }}" onsubmit="return false;">
|
|
35
|
-
<label class="site-search__label" for="{{ input_id }}">Search</label>
|
|
37
|
+
<label class="site-search__label" for="{{ input_id }}">Search site content</label>
|
|
36
38
|
<div class="site-search__field-wrap">
|
|
37
39
|
<ion-icon class="site-search__icon" name="search-outline" aria-hidden="true"></ion-icon>
|
|
38
40
|
<input id="{{ input_id }}"
|
|
@@ -44,6 +46,8 @@
|
|
|
44
46
|
spellcheck="false"
|
|
45
47
|
aria-controls="{{ panel_id }}"
|
|
46
48
|
aria-expanded="false"
|
|
49
|
+
aria-haspopup="list"
|
|
50
|
+
aria-autocomplete="list"
|
|
47
51
|
aria-describedby="{{ status_id }}"
|
|
48
52
|
data-search-input>
|
|
49
53
|
<button type="button"
|
|
@@ -59,8 +63,12 @@
|
|
|
59
63
|
</div>
|
|
60
64
|
</form>
|
|
61
65
|
|
|
62
|
-
<div id="{{ panel_id }}"
|
|
63
|
-
|
|
66
|
+
<div id="{{ panel_id }}"
|
|
67
|
+
class="site-search__panel"
|
|
68
|
+
aria-label="{{ results_label }}"
|
|
69
|
+
data-search-panel
|
|
70
|
+
hidden>
|
|
71
|
+
<p id="{{ status_id }}" class="site-search__status" role="status" aria-live="polite" data-search-status>{{ search_idle_text }}</p>
|
|
64
72
|
<ul class="site-search__results" data-search-results></ul>
|
|
65
73
|
</div>
|
|
66
74
|
</section>
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
{% assign canonical_url = page.url | replace: 'index.html', '' | absolute_url %}
|
|
2
|
+
{% assign meta_description = page.description | default: page.excerpt | default: site.description | strip_html | normalize_whitespace | truncate: 160 %}
|
|
3
|
+
{% assign site_name = site.title | default: '' %}
|
|
4
|
+
{% assign seo_type = site.theme_seo.type | default: 'Person' %}
|
|
5
|
+
{% assign seo_name = site.theme_seo.name | default: site.author.name | default: site_name %}
|
|
6
|
+
{% assign default_image = site.theme_seo.default_image | default: site.social_image | default: site.favicon %}
|
|
7
|
+
{% assign meta_image = page.image | default: default_image %}
|
|
8
|
+
{% if meta_image %}
|
|
9
|
+
{% assign meta_image_url = meta_image | absolute_url %}
|
|
10
|
+
{% endif %}
|
|
11
|
+
{% assign publisher_logo = site.theme_seo.logo | default: site.favicon %}
|
|
12
|
+
{% if publisher_logo %}
|
|
13
|
+
{% assign publisher_logo_url = publisher_logo | absolute_url %}
|
|
14
|
+
{% endif %}
|
|
15
|
+
{% assign article_published = page.date | default: page.created_at %}
|
|
16
|
+
{% assign article_modified = page.last_modified_at | default: page.updated_at | default: article_published %}
|
|
17
|
+
{% assign breadcrumb_blog_label = site.theme_text.blog_breadcrumb_label | default: 'Blog' %}
|
|
18
|
+
{% capture search_term_placeholder %}{% raw %}{search_term_string}{% endraw %}{% endcapture %}
|
|
19
|
+
{% capture search_target %}{{ site.url }}{{ site.baseurl }}/blog/?q={{ search_term_placeholder }}{% endcapture %}
|
|
20
|
+
{% assign breadcrumb_items = '' | split: '' %}
|
|
21
|
+
{% assign breadcrumb_home = '{"@type":"ListItem","position":1,"name":"Home","item":"' | append: site.url | append: site.baseurl | append: '/"}' %}
|
|
22
|
+
{% assign breadcrumb_items = breadcrumb_items | push: breadcrumb_home %}
|
|
23
|
+
{% assign current_position = 2 %}
|
|
24
|
+
{% if page.layout == 'blog' %}
|
|
25
|
+
{% capture current_item %}{"@type":"ListItem","position":{{ current_position }},"name":"{{ page.title | default: breadcrumb_blog_label | escape }}","item":"{{ canonical_url }}"}{% endcapture %}
|
|
26
|
+
{% assign breadcrumb_items = breadcrumb_items | push: current_item %}
|
|
27
|
+
{% elsif page.layout == 'archive' %}
|
|
28
|
+
{% capture blog_item %}{"@type":"ListItem","position":{{ current_position }},"name":"{{ breadcrumb_blog_label | escape }}","item":"{{ '/blog' | absolute_url }}"}{% endcapture %}
|
|
29
|
+
{% assign breadcrumb_items = breadcrumb_items | push: blog_item %}
|
|
30
|
+
{% assign current_position = current_position | plus: 1 %}
|
|
31
|
+
{% capture current_item %}{"@type":"ListItem","position":{{ current_position }},"name":"{{ page.title | escape }}","item":"{{ canonical_url }}"}{% endcapture %}
|
|
32
|
+
{% assign breadcrumb_items = breadcrumb_items | push: current_item %}
|
|
33
|
+
{% elsif page.layout == 'post' %}
|
|
34
|
+
{% capture blog_item %}{"@type":"ListItem","position":{{ current_position }},"name":"{{ breadcrumb_blog_label | escape }}","item":"{{ '/blog' | absolute_url }}"}{% endcapture %}
|
|
35
|
+
{% assign breadcrumb_items = breadcrumb_items | push: blog_item %}
|
|
36
|
+
{% assign current_position = current_position | plus: 1 %}
|
|
37
|
+
{% capture current_item %}{"@type":"ListItem","position":{{ current_position }},"name":"{{ page.title | escape }}","item":"{{ canonical_url }}"}{% endcapture %}
|
|
38
|
+
{% assign breadcrumb_items = breadcrumb_items | push: current_item %}
|
|
39
|
+
{% elsif page.title %}
|
|
40
|
+
{% capture current_item %}{"@type":"ListItem","position":{{ current_position }},"name":"{{ page.title | escape }}","item":"{{ canonical_url }}"}{% endcapture %}
|
|
41
|
+
{% assign breadcrumb_items = breadcrumb_items | push: current_item %}
|
|
42
|
+
{% endif %}
|
|
43
|
+
{% if page.layout == 'home' or page.url == '/' %}
|
|
44
|
+
<script type="application/ld+json">
|
|
45
|
+
{
|
|
46
|
+
"@context": "https://schema.org",
|
|
47
|
+
"@type": "WebSite",
|
|
48
|
+
"name": {{ site_name | jsonify }},
|
|
49
|
+
"url": {{ site.url | append: site.baseurl | append: '/' | jsonify }},
|
|
50
|
+
"description": {{ meta_description | jsonify }},
|
|
51
|
+
{% if site.theme_search.enabled != false %}
|
|
52
|
+
"potentialAction": {
|
|
53
|
+
"@type": "SearchAction",
|
|
54
|
+
"target": {{ search_target | jsonify }},
|
|
55
|
+
"query-input": "required name=search_term_string"
|
|
56
|
+
},
|
|
57
|
+
{% endif %}
|
|
58
|
+
"publisher": {
|
|
59
|
+
"@type": {{ seo_type | jsonify }},
|
|
60
|
+
"name": {{ seo_name | jsonify }}{% if publisher_logo_url %},
|
|
61
|
+
"logo": {
|
|
62
|
+
"@type": "ImageObject",
|
|
63
|
+
"url": {{ publisher_logo_url | jsonify }}
|
|
64
|
+
}{% endif %}{% if site.theme_seo.same_as %},
|
|
65
|
+
"sameAs": {{ site.theme_seo.same_as | jsonify }}{% endif %}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
</script>
|
|
69
|
+
{% endif %}
|
|
70
|
+
{% if page.layout == 'post' %}
|
|
71
|
+
<script type="application/ld+json">
|
|
72
|
+
{
|
|
73
|
+
"@context": "https://schema.org",
|
|
74
|
+
"@type": "BlogPosting",
|
|
75
|
+
"headline": {{ page.title | jsonify }},
|
|
76
|
+
"description": {{ meta_description | jsonify }},
|
|
77
|
+
"url": {{ canonical_url | jsonify }},
|
|
78
|
+
"mainEntityOfPage": {
|
|
79
|
+
"@type": "WebPage",
|
|
80
|
+
"@id": {{ canonical_url | jsonify }}
|
|
81
|
+
}{% if meta_image_url %},
|
|
82
|
+
"image": [{{ meta_image_url | jsonify }}]{% endif %}{% if article_published %},
|
|
83
|
+
"datePublished": {{ article_published | date_to_xmlschema | jsonify }}{% endif %}{% if article_modified %},
|
|
84
|
+
"dateModified": {{ article_modified | date_to_xmlschema | jsonify }}{% endif %},
|
|
85
|
+
"author": {
|
|
86
|
+
"@type": {{ seo_type | jsonify }},
|
|
87
|
+
"name": {{ seo_name | jsonify }}
|
|
88
|
+
},
|
|
89
|
+
"publisher": {
|
|
90
|
+
"@type": {{ seo_type | jsonify }},
|
|
91
|
+
"name": {{ seo_name | jsonify }}{% if publisher_logo_url %},
|
|
92
|
+
"logo": {
|
|
93
|
+
"@type": "ImageObject",
|
|
94
|
+
"url": {{ publisher_logo_url | jsonify }}
|
|
95
|
+
}{% endif %}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
</script>
|
|
99
|
+
{% endif %}
|
|
100
|
+
{% if page.layout == 'blog' or page.layout == 'archive' %}
|
|
101
|
+
<script type="application/ld+json">
|
|
102
|
+
{
|
|
103
|
+
"@context": "https://schema.org",
|
|
104
|
+
"@type": "CollectionPage",
|
|
105
|
+
"name": {{ page.title | default: breadcrumb_blog_label | jsonify }},
|
|
106
|
+
"description": {{ meta_description | jsonify }},
|
|
107
|
+
"url": {{ canonical_url | jsonify }}
|
|
108
|
+
}
|
|
109
|
+
</script>
|
|
110
|
+
{% endif %}
|
|
111
|
+
{% if site.theme_seo.enable_breadcrumbs != false and breadcrumb_items.size > 1 %}
|
|
112
|
+
<script type="application/ld+json">
|
|
113
|
+
{
|
|
114
|
+
"@context": "https://schema.org",
|
|
115
|
+
"@type": "BreadcrumbList",
|
|
116
|
+
"itemListElement": [{{ breadcrumb_items | join: ',' }}]
|
|
117
|
+
}
|
|
118
|
+
</script>
|
|
119
|
+
{% endif %}
|
data/_layouts/archive.html
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
layout: default
|
|
3
3
|
---
|
|
4
|
+
{% if page.description == nil or page.description == empty %}
|
|
5
|
+
{% assign archive_type = page.type | default: page.collection | default: 'archive' %}
|
|
6
|
+
{% capture page_description %}Browse posts in the {{ archive_type }} archive for {{ page.title }}.{% endcapture %}
|
|
7
|
+
{% else %}
|
|
8
|
+
{% assign page_description = page.description %}
|
|
9
|
+
{% endif %}
|
|
4
10
|
<article class="archive-hub">
|
|
5
11
|
{% include archive-header.html %}
|
|
6
12
|
|
data/_layouts/blog.html
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
layout: default
|
|
3
3
|
---
|
|
4
|
+
{% if page.description == nil or page.description == empty %}
|
|
5
|
+
{% assign page_description = "Browse the latest posts, notes, and writing from " | append: site.title | append: "." %}
|
|
6
|
+
{% else %}
|
|
7
|
+
{% assign page_description = page.description %}
|
|
8
|
+
{% endif %}
|
|
4
9
|
<article class="blog-hub">
|
|
5
10
|
{% include page-header.html %}
|
|
6
11
|
|
data/_layouts/default.html
CHANGED
|
@@ -1,40 +1,17 @@
|
|
|
1
1
|
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
2
|
+
<html lang="{{ page.lang | default: site.lang | default: 'en' }}">
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="UTF-8">
|
|
5
5
|
<meta name="viewport"
|
|
6
6
|
content="width=device-width, initial-scale=1.0">
|
|
7
7
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
|
8
|
-
|
|
9
|
-
<meta name="description"
|
|
10
|
-
content="{{ page.excerpt | default: site.description | strip_html | normalize_whitespace | truncate: 160 | escape }}">
|
|
11
|
-
|
|
8
|
+
{% include seo-meta.html %}
|
|
12
9
|
|
|
13
10
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
14
11
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
15
|
-
<link href="https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&display=swap"
|
|
16
|
-
rel="stylesheet">
|
|
17
12
|
<link href="https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Source+Serif+4:opsz,wght@8..60,400;8..60,500;8..60,700&display=swap"
|
|
18
13
|
rel="stylesheet">
|
|
19
|
-
<style>
|
|
20
|
-
:root {
|
|
21
|
-
--color-bg: {{ site.theme_style.background | default: "#eef4ff" }};
|
|
22
|
-
--color-surface: {{ site.theme_style.surface | default: "#ffffff" }};
|
|
23
|
-
--color-text: {{ site.theme_style.text | default: "#0f172a" }};
|
|
24
|
-
--color-muted: {{ site.theme_style.muted | default: "#475569" }};
|
|
25
|
-
--color-border: {{ site.theme_style.border | default: "#c9d8f2" }};
|
|
26
|
-
--color-brand: {{ site.theme_style.accent | default: "#3b82f6" }};
|
|
27
|
-
--color-brand-strong: {{ site.theme_style.accent_strong | default: "#2563eb" }};
|
|
28
|
-
--color-brand-soft: {{ site.theme_style.accent_soft | default: "#dbeafe" }};
|
|
29
|
-
--color-brand-surface: {{ site.theme_style.accent_surface | default: "#eff6ff" }};
|
|
30
|
-
--color-success: {{ site.theme_style.success | default: "#16a34a" }};
|
|
31
|
-
--color-info: {{ site.theme_style.info | default: "#2563eb" }};
|
|
32
|
-
--color-warning: {{ site.theme_style.warning | default: "#d97706" }};
|
|
33
|
-
--color-danger: {{ site.theme_style.danger | default: "#dc2626" }};
|
|
34
|
-
}
|
|
35
|
-
</style>
|
|
36
14
|
|
|
37
|
-
<link rel="canonical" href="{{ page.url | replace:'index.html', '' | absolute_url }}">
|
|
38
15
|
<link rel="stylesheet" href="{{ '/assets/css/main.css?v=' | append: site.github.build_revision | relative_url }}">
|
|
39
16
|
{% if site.favicon %}
|
|
40
17
|
<link rel="icon" type="image/png" href="{{ site.favicon | relative_url }}">
|
|
@@ -43,16 +20,14 @@
|
|
|
43
20
|
{% include math.html %}
|
|
44
21
|
{% endif %}
|
|
45
22
|
|
|
46
|
-
{%
|
|
47
|
-
{% include social-media-meta.html %}
|
|
48
|
-
{% endif %}
|
|
23
|
+
{% include structured-data.html %}
|
|
49
24
|
|
|
50
25
|
</head>
|
|
51
26
|
<body class="theme-body">
|
|
52
27
|
<a class="skip-link" href="#main-content">Skip to content</a>
|
|
53
28
|
<div class="theme-shell">
|
|
54
29
|
{% include header.html %}
|
|
55
|
-
<main id="main-content">
|
|
30
|
+
<main id="main-content" tabindex="-1">
|
|
56
31
|
{{ content }}
|
|
57
32
|
</main>
|
|
58
33
|
{% include footer.html %}
|
data/_layouts/page.html
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
layout: default
|
|
3
3
|
---
|
|
4
|
+
{% if page.description == nil or page.description == empty %}
|
|
5
|
+
{% assign page_description = page.excerpt | default: site.description | strip_html | normalize_whitespace | truncate: 160 %}
|
|
6
|
+
{% else %}
|
|
7
|
+
{% assign page_description = page.description %}
|
|
8
|
+
{% endif %}
|
|
4
9
|
<article class="page-article">
|
|
5
10
|
<header class="page-article__header">
|
|
6
11
|
<div class="page-article__header-layout">
|
data/_layouts/post.html
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
layout: default
|
|
3
3
|
---
|
|
4
|
+
{% if page.description == nil or page.description == empty %}
|
|
5
|
+
{% assign page_description = page.excerpt | default: site.description | strip_html | normalize_whitespace | truncate: 160 %}
|
|
6
|
+
{% else %}
|
|
7
|
+
{% assign page_description = page.description %}
|
|
8
|
+
{% endif %}
|
|
4
9
|
{% if site.theme_features.reading_progress != false %}
|
|
5
10
|
{% include reading-progress.html %}
|
|
6
11
|
{% endif %}
|
data/_sass/components/_core.scss
CHANGED
|
@@ -1,20 +1,3 @@
|
|
|
1
|
-
:root {
|
|
2
|
-
--color-bg: #eef4ff;
|
|
3
|
-
--color-surface: #ffffff;
|
|
4
|
-
--color-text: #0f172a;
|
|
5
|
-
--color-muted: #475569;
|
|
6
|
-
--color-border: #c9d8f2;
|
|
7
|
-
--color-brand: #3b82f6;
|
|
8
|
-
--color-brand-strong: #2563eb;
|
|
9
|
-
--color-brand-soft: #dbeafe;
|
|
10
|
-
--color-brand-surface: #eff6ff;
|
|
11
|
-
--color-success: #16a34a;
|
|
12
|
-
--color-info: #2563eb;
|
|
13
|
-
--color-warning: #d97706;
|
|
14
|
-
--color-danger: #dc2626;
|
|
15
|
-
--color-shadow: rgba(17, 24, 39, 0.08);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
1
|
.theme-body {
|
|
19
2
|
margin: 0;
|
|
20
3
|
color: var(--color-text);
|
|
@@ -28,6 +11,18 @@
|
|
|
28
11
|
min-height: 100vh;
|
|
29
12
|
}
|
|
30
13
|
|
|
14
|
+
.sr-only {
|
|
15
|
+
position: absolute;
|
|
16
|
+
width: 1px;
|
|
17
|
+
height: 1px;
|
|
18
|
+
padding: 0;
|
|
19
|
+
margin: -1px;
|
|
20
|
+
overflow: hidden;
|
|
21
|
+
clip: rect(0, 0, 0, 0);
|
|
22
|
+
white-space: nowrap;
|
|
23
|
+
border: 0;
|
|
24
|
+
}
|
|
25
|
+
|
|
31
26
|
.skip-link {
|
|
32
27
|
position: absolute;
|
|
33
28
|
top: -999px;
|
|
@@ -96,11 +91,14 @@
|
|
|
96
91
|
display: inline-flex;
|
|
97
92
|
align-items: center;
|
|
98
93
|
justify-content: center;
|
|
99
|
-
|
|
94
|
+
min-width: 2.75rem;
|
|
95
|
+
min-height: 2.75rem;
|
|
96
|
+
padding: 0.5rem;
|
|
100
97
|
border: 0;
|
|
101
98
|
border-radius: 0.5rem;
|
|
102
99
|
background: transparent;
|
|
103
100
|
line-height: 1;
|
|
101
|
+
color: var(--color-text);
|
|
104
102
|
}
|
|
105
103
|
|
|
106
104
|
.site-header__toggle ion-icon[name="menu-outline"],
|
|
@@ -111,7 +109,18 @@
|
|
|
111
109
|
|
|
112
110
|
.site-header__toggle:focus-visible,
|
|
113
111
|
.nav-link:focus-visible,
|
|
114
|
-
.primary-button:focus-visible
|
|
112
|
+
.primary-button:focus-visible,
|
|
113
|
+
.secondary-button:focus-visible,
|
|
114
|
+
.site-logo:focus-visible,
|
|
115
|
+
.post-back-link:focus-visible,
|
|
116
|
+
.post-card__title-link:focus-visible,
|
|
117
|
+
.post-card__read-link:focus-visible,
|
|
118
|
+
.tag-pill:focus-visible,
|
|
119
|
+
.pagination-link:focus-visible,
|
|
120
|
+
.archive-header__blog-link:focus-visible,
|
|
121
|
+
.post-series__link:focus-visible,
|
|
122
|
+
.post-navigation__item:focus-visible,
|
|
123
|
+
.related-posts__item:focus-visible {
|
|
115
124
|
outline: 3px solid color-mix(in srgb, var(--color-brand) 35%, transparent);
|
|
116
125
|
outline-offset: 2px;
|
|
117
126
|
}
|
|
@@ -167,7 +176,7 @@
|
|
|
167
176
|
|
|
168
177
|
.site-search__input {
|
|
169
178
|
width: 100%;
|
|
170
|
-
min-height: 2.
|
|
179
|
+
min-height: 2.875rem;
|
|
171
180
|
padding: 0.7rem 6rem 0.7rem 2.55rem;
|
|
172
181
|
border: 1px solid color-mix(in srgb, var(--color-border) 85%, #ffffff 15%);
|
|
173
182
|
border-radius: 999px;
|
|
@@ -198,6 +207,8 @@
|
|
|
198
207
|
position: absolute;
|
|
199
208
|
top: 50%;
|
|
200
209
|
transform: translateY(-50%);
|
|
210
|
+
min-width: 2.25rem;
|
|
211
|
+
min-height: 2.25rem;
|
|
201
212
|
border: 0;
|
|
202
213
|
border-radius: 999px;
|
|
203
214
|
font: inherit;
|
|
@@ -314,7 +325,7 @@
|
|
|
314
325
|
.nav-link {
|
|
315
326
|
position: relative;
|
|
316
327
|
display: inline-block;
|
|
317
|
-
padding: 0.5rem;
|
|
328
|
+
padding: 0.65rem 0.5rem;
|
|
318
329
|
font-size: 1rem;
|
|
319
330
|
font-weight: 600;
|
|
320
331
|
color: var(--color-text);
|
|
@@ -569,6 +580,11 @@
|
|
|
569
580
|
transform: translateY(-1px);
|
|
570
581
|
}
|
|
571
582
|
|
|
583
|
+
.post-card:focus-within {
|
|
584
|
+
border-color: color-mix(in srgb, var(--color-brand) 38%, var(--color-border) 62%);
|
|
585
|
+
box-shadow: 0 15px 35px -24px var(--color-shadow);
|
|
586
|
+
}
|
|
587
|
+
|
|
572
588
|
.post-card__image {
|
|
573
589
|
position: relative;
|
|
574
590
|
display: block;
|
|
@@ -826,6 +842,8 @@
|
|
|
826
842
|
display: flex;
|
|
827
843
|
align-items: center;
|
|
828
844
|
justify-content: center;
|
|
845
|
+
min-width: 2.5rem;
|
|
846
|
+
min-height: 2.5rem;
|
|
829
847
|
padding: 0;
|
|
830
848
|
border: 0;
|
|
831
849
|
background: transparent;
|
|
@@ -834,7 +852,7 @@
|
|
|
834
852
|
|
|
835
853
|
.post-series__heading {
|
|
836
854
|
display: block;
|
|
837
|
-
margin
|
|
855
|
+
margin: 0 0 0.1rem;
|
|
838
856
|
font-size: clamp(1.02rem, 1.6vw, 1.2rem);
|
|
839
857
|
font-weight: 700;
|
|
840
858
|
line-height: 1.3;
|
|
@@ -957,6 +975,7 @@
|
|
|
957
975
|
margin: 0;
|
|
958
976
|
border: 0;
|
|
959
977
|
border-top: 1px solid color-mix(in srgb, var(--color-border) 84%, #c9d6ff 16%);
|
|
978
|
+
min-height: 2.75rem;
|
|
960
979
|
padding: 0.72rem 0.95rem 0.78rem;
|
|
961
980
|
color: var(--color-brand-strong);
|
|
962
981
|
background: color-mix(in srgb, var(--color-brand-soft) 12%, #fff 88%);
|
|
@@ -1043,6 +1062,7 @@
|
|
|
1043
1062
|
align-items: center;
|
|
1044
1063
|
justify-content: space-between;
|
|
1045
1064
|
width: 100%;
|
|
1065
|
+
min-height: 2.75rem;
|
|
1046
1066
|
padding: 0;
|
|
1047
1067
|
border: 0;
|
|
1048
1068
|
background: transparent;
|
|
@@ -1333,7 +1353,8 @@
|
|
|
1333
1353
|
|
|
1334
1354
|
.pagination-link {
|
|
1335
1355
|
display: inline-block;
|
|
1336
|
-
|
|
1356
|
+
min-height: 2.75rem;
|
|
1357
|
+
padding: 0.7rem 0;
|
|
1337
1358
|
border-bottom: 2px solid transparent;
|
|
1338
1359
|
font-weight: 600;
|
|
1339
1360
|
}
|
|
@@ -1395,6 +1416,31 @@
|
|
|
1395
1416
|
transform: translateY(-1px);
|
|
1396
1417
|
}
|
|
1397
1418
|
|
|
1419
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1420
|
+
.site-header,
|
|
1421
|
+
.site-search__input,
|
|
1422
|
+
.site-search__result-link,
|
|
1423
|
+
.nav-link,
|
|
1424
|
+
.primary-button,
|
|
1425
|
+
.secondary-button,
|
|
1426
|
+
.post-card,
|
|
1427
|
+
.post-card__image-el,
|
|
1428
|
+
.series-collapsible__icon,
|
|
1429
|
+
.comments-collapsible__icon,
|
|
1430
|
+
.post-navigation__item,
|
|
1431
|
+
.related-posts__item {
|
|
1432
|
+
transition: none;
|
|
1433
|
+
}
|
|
1434
|
+
|
|
1435
|
+
.primary-button:hover,
|
|
1436
|
+
.post-card:hover,
|
|
1437
|
+
.post-navigation__item:hover,
|
|
1438
|
+
.related-posts__item:hover,
|
|
1439
|
+
.post-card__image:hover .post-card__image-el {
|
|
1440
|
+
transform: none;
|
|
1441
|
+
}
|
|
1442
|
+
}
|
|
1443
|
+
|
|
1398
1444
|
.post-navigation__item--next {
|
|
1399
1445
|
text-align: right;
|
|
1400
1446
|
}
|
data/assets/css/main.scss
CHANGED
|
@@ -5,3 +5,20 @@ sitemap: false
|
|
|
5
5
|
|
|
6
6
|
@charset "utf-8";
|
|
7
7
|
@use "style";
|
|
8
|
+
|
|
9
|
+
:root {
|
|
10
|
+
--color-bg: {{ site.theme_style.background | default: "#eef4ff" }};
|
|
11
|
+
--color-surface: {{ site.theme_style.surface | default: "#ffffff" }};
|
|
12
|
+
--color-text: {{ site.theme_style.text | default: "#0f172a" }};
|
|
13
|
+
--color-muted: {{ site.theme_style.muted | default: "#475569" }};
|
|
14
|
+
--color-border: {{ site.theme_style.border | default: "#c9d8f2" }};
|
|
15
|
+
--color-brand: {{ site.theme_style.accent | default: "#3b82f6" }};
|
|
16
|
+
--color-brand-strong: {{ site.theme_style.accent_strong | default: "#2563eb" }};
|
|
17
|
+
--color-brand-soft: {{ site.theme_style.accent_soft | default: "#dbeafe" }};
|
|
18
|
+
--color-brand-surface: {{ site.theme_style.accent_surface | default: "#eff6ff" }};
|
|
19
|
+
--color-success: {{ site.theme_style.success | default: "#16a34a" }};
|
|
20
|
+
--color-info: {{ site.theme_style.info | default: "#2563eb" }};
|
|
21
|
+
--color-warning: {{ site.theme_style.warning | default: "#d97706" }};
|
|
22
|
+
--color-danger: {{ site.theme_style.danger | default: "#dc2626" }};
|
|
23
|
+
--color-shadow: rgba(17, 24, 39, 0.08);
|
|
24
|
+
}
|
data/assets/js/dist/main.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(){"use strict";let R;const It=()=>{if(typeof window>"u")return new Map;if(!R){const t=window;t.Ionicons=t.Ionicons||{},R=t.Ionicons.map=t.Ionicons.map||new Map}return R},Ot=t=>{Object.keys(t).forEach(e=>{tt(e,t[e]);const n=e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z0-9])/g,"$1-$2").toLowerCase();e!==n&&tt(n,t[e])})},tt=(t,e)=>{const n=It(),s=n.get(t);s===void 0?n.set(t,e):s!==e&&console.warn(`[Ionicons Warning]: Multiple icons were mapped to name "${t}". Ensure that multiple icons are not mapped to the same icon name.`)},qt="ionicons",T={hydratedSelectorName:"hydrated",lazyLoad:!1,updatable:!0};var Pt=Object.defineProperty,zt=(t,e)=>{for(var n in e)Pt(t,n,{get:e[n],enumerable:!0})},S=t=>{if(t.__stencil__getHostRef)return t.__stencil__getHostRef()},Ht=(t,e)=>{const n={$flags$:0,$hostElement$:t,$cmpMeta$:e,$instanceValues$:new Map};n.$onReadyPromise$=new Promise(o=>n.$onReadyResolve$=o),t["s-p"]=[],t["s-rc"]=[];const s=n;return t.__stencil__getHostRef=()=>s,s},et=(t,e)=>e in t,C=(t,e)=>(0,console.error)(t,e),M=new Map,jt="slot-fb{display:contents}slot-fb[hidden]{display:none}",nt="http://www.w3.org/1999/xlink",v=typeof window<"u"?window:{},Ut=v.HTMLElement||class{},y={$flags$:0,$resourcesUrl$:"",jmp:t=>t(),raf:t=>requestAnimationFrame(t),ael:(t,e,n,s)=>t.addEventListener(e,n,s),rel:(t,e,n,s)=>t.removeEventListener(e,n,s),ce:(t,e)=>new CustomEvent(t,e)},Rt=t=>Promise.resolve(t),st=(()=>{try{return new CSSStyleSheet,typeof new CSSStyleSheet().replaceSync=="function"}catch{}return!1})(),B=!1,ot=[],it=[],Bt=(t,e)=>n=>{t.push(n),B||(B=!0,y.raf(at))},rt=t=>{for(let e=0;e<t.length;e++)try{t[e](performance.now())}catch(n){C(n)}t.length=0},at=()=>{rt(ot),rt(it),(B=ot.length>0)&&y.raf(at)},D=t=>Rt().then(t),Dt=Bt(it),Wt=t=>{const e=new URL(t,y.$resourcesUrl$);return e.origin!==v.location.origin?e.href:e.pathname},W=t=>(t=typeof t,t==="object"||t==="function");function Xt(t){var e,n,s;return(s=(n=(e=t.head)==null?void 0:e.querySelector('meta[name="csp-nonce"]'))==null?void 0:n.getAttribute("content"))!=null?s:void 0}var Zt=t=>t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),Ft={};zt(Ft,{err:()=>ct,map:()=>Gt,ok:()=>X,unwrap:()=>Yt,unwrapErr:()=>Kt});var X=t=>({isOk:!0,isErr:!1,value:t}),ct=t=>({isOk:!1,isErr:!0,value:t});function Gt(t,e){if(t.isOk){const n=e(t.value);return n instanceof Promise?n.then(s=>X(s)):X(n)}if(t.isErr){const n=t.value;return ct(n)}throw"should never get here"}var Yt=t=>{if(t.isOk)return t.value;throw t.value},Kt=t=>{if(t.isErr)return t.value;throw t.value};function hn(t){}var I;function Qt(t){var e;const n=this.attachShadow({mode:"open"});I===void 0&&(I=(e=void 0)!=null?e:null),I&&n.adoptedStyleSheets.push(I)}var x=(t,e="")=>()=>{},E=new WeakMap,Jt=(t,e,n)=>{let s=M.get(t);st&&n?(s=s||new CSSStyleSheet,typeof s=="string"?s=e:s.replaceSync(e)):s=e,M.set(t,s)},Nt=(t,e,n)=>{var s;const o=lt(e),i=M.get(o);if(!v.document)return o;if(t=t.nodeType===11?t:v.document,i)if(typeof i=="string"){t=t.head||t;let a=E.get(t),r;if(a||E.set(t,a=new Set),!a.has(o)){{r=v.document.createElement("style"),r.innerHTML=i;const l=(s=y.$nonce$)!=null?s:Xt(v.document);if(l!=null&&r.setAttribute("nonce",l),!(e.$flags$&1))if(t.nodeName==="HEAD"){const c=t.querySelectorAll("link[rel=preconnect]"),d=c.length>0?c[c.length-1].nextSibling:t.querySelector("style");t.insertBefore(r,d?.parentNode===t?d:null)}else if("host"in t)if(st){const c=new CSSStyleSheet;c.replaceSync(i),t.adoptedStyleSheets.unshift(c)}else{const c=t.querySelector("style");c?c.innerHTML=i+c.innerHTML:t.prepend(r)}else t.append(r);e.$flags$&1&&t.insertBefore(r,null)}e.$flags$&4&&(r.innerHTML+=jt),a&&a.add(o)}}else t.adoptedStyleSheets.includes(i)||t.adoptedStyleSheets.push(i);return o},Vt=t=>{const e=t.$cmpMeta$,n=t.$hostElement$,s=e.$flags$,o=x("attachStyles",e.$tagName$),i=Nt(n.shadowRoot?n.shadowRoot:n.getRootNode(),e);s&10&&(n["s-sc"]=i,n.classList.add(i+"-h")),o()},lt=(t,e)=>"sc-"+t.$tagName$,O=(t,e,...n)=>{let s=null,o=null,i=!1,a=!1;const r=[],l=d=>{for(let u=0;u<d.length;u++)s=d[u],Array.isArray(s)?l(s):s!=null&&typeof s!="boolean"&&((i=typeof t!="function"&&!W(s))&&(s=String(s)),i&&a?r[r.length-1].$text$+=s:r.push(i?Z(null,s):s),a=i)};if(l(n),e){e.key&&(o=e.key);{const d=e.className||e.class;d&&(e.class=typeof d!="object"?d:Object.keys(d).filter(u=>d[u]).join(" "))}}const c=Z(t,null);return c.$attrs$=e,r.length>0&&(c.$children$=r),c.$key$=o,c},Z=(t,e)=>{const n={$flags$:0,$tag$:t,$text$:e,$elm$:null,$children$:null};return n.$attrs$=null,n.$key$=null,n},dt={},te=t=>t&&t.$tag$===dt,F=t=>{const e=Zt(t);return new RegExp(`(^|[^@]|@(?!supports\\s+selector\\s*\\([^{]*?${e}))(${e}\\b)`,"g")};F("::slotted"),F(":host"),F(":host-context");var ut=(t,e,n)=>t!=null&&!W(t)?e&4?t==="false"?!1:t===""||!!t:e&1?String(t):t:t,ee=(t,e,n)=>{const s=y.ce(e,n);return t.dispatchEvent(s),s},ft=(t,e,n,s,o,i,a)=>{if(n===s)return;let r=et(t,e),l=e.toLowerCase();if(e==="class"){const c=t.classList,d=ht(n);let u=ht(s);c.remove(...d.filter(f=>f&&!u.includes(f))),c.add(...u.filter(f=>f&&!d.includes(f)))}else if(e==="style"){for(const c in n)(!s||s[c]==null)&&(c.includes("-")?t.style.removeProperty(c):t.style[c]="");for(const c in s)(!n||s[c]!==n[c])&&(c.includes("-")?t.style.setProperty(c,s[c]):t.style[c]=s[c])}else if(e!=="key")if(e==="ref")s&&s(t);else if(!t.__lookupSetter__(e)&&e[0]==="o"&&e[1]==="n"){if(e[2]==="-"?e=e.slice(3):et(v,l)?e=l.slice(2):e=l[2]+e.slice(3),n||s){const c=e.endsWith(pt);e=e.replace(se,""),n&&y.rel(t,e,n,c),s&&y.ael(t,e,s,c)}}else{const c=W(s);if(r||c&&s!==null)try{if(t.tagName.includes("-"))t[e]!==s&&(t[e]=s);else{const u=s??"";e==="list"?r=!1:(n==null||t[e]!=u)&&(typeof t.__lookupSetter__(e)=="function"?t[e]=u:t.setAttribute(e,u))}}catch{}let d=!1;l!==(l=l.replace(/^xlink\:?/,""))&&(e=l,d=!0),s==null||s===!1?(s!==!1||t.getAttribute(e)==="")&&(d?t.removeAttributeNS(nt,e):t.removeAttribute(e)):(!r||i&4||o)&&!c&&t.nodeType===1&&(s=s===!0?"":s,d?t.setAttributeNS(nt,e,s):t.setAttribute(e,s))}},ne=/\s/,ht=t=>(typeof t=="object"&&t&&"baseVal"in t&&(t=t.baseVal),!t||typeof t!="string"?[]:t.split(ne)),pt="Capture",se=new RegExp(pt+"$"),gt=(t,e,n,s)=>{const o=e.$elm$.nodeType===11&&e.$elm$.host?e.$elm$.host:e.$elm$,i=t&&t.$attrs$||{},a=e.$attrs$||{};for(const r of $t(Object.keys(i)))r in a||ft(o,r,i[r],void 0,n,e.$flags$);for(const r of $t(Object.keys(a)))ft(o,r,i[r],a[r],n,e.$flags$)};function $t(t){return t.includes("ref")?[...t.filter(e=>e!=="ref"),"ref"]:t}var G,vt=!1,q=(t,e,n)=>{const s=e.$children$[n];let o=0,i,a;if(s.$text$!==null)i=s.$elm$=v.document.createTextNode(s.$text$);else{if(!v.document)throw new Error("You are trying to render a Stencil component in an environment that doesn't support the DOM. Make sure to populate the [`window`](https://developer.mozilla.org/en-US/docs/Web/API/Window/window) object before rendering a component.");if(i=s.$elm$=v.document.createElement(s.$tag$),gt(null,s,vt),s.$children$)for(o=0;o<s.$children$.length;++o)a=q(t,s,o),a&&i.appendChild(a)}return i["s-hn"]=G,i},mt=(t,e,n,s,o,i)=>{let a=t,r;for(a.shadowRoot&&a.tagName===G&&(a=a.shadowRoot);o<=i;++o)s[o]&&(r=q(null,n,o),r&&(s[o].$elm$=r,z(a,r,e)))},yt=(t,e,n)=>{for(let s=e;s<=n;++s){const o=t[s];if(o){const i=o.$elm$;wt(o),i&&i.remove()}}},oe=(t,e,n,s,o=!1)=>{let i=0,a=0,r=0,l=0,c=e.length-1,d=e[0],u=e[c],f=s.length-1,h=s[0],g=s[f],$,p;for(;i<=c&&a<=f;)if(d==null)d=e[++i];else if(u==null)u=e[--c];else if(h==null)h=s[++a];else if(g==null)g=s[--f];else if(P(d,h,o))b(d,h,o),d=e[++i],h=s[++a];else if(P(u,g,o))b(u,g,o),u=e[--c],g=s[--f];else if(P(d,g,o))b(d,g,o),z(t,d.$elm$,u.$elm$.nextSibling),d=e[++i],g=s[--f];else if(P(u,h,o))b(u,h,o),z(t,u.$elm$,d.$elm$),u=e[--c],h=s[++a];else{for(r=-1,l=i;l<=c;++l)if(e[l]&&e[l].$key$!==null&&e[l].$key$===h.$key$){r=l;break}r>=0?(p=e[r],p.$tag$!==h.$tag$?$=q(e&&e[a],n,r):(b(p,h,o),e[r]=void 0,$=p.$elm$),h=s[++a]):($=q(e&&e[a],n,a),h=s[++a]),$&&z(d.$elm$.parentNode,$,d.$elm$)}i>c?mt(t,s[f+1]==null?null:s[f+1].$elm$,n,s,a,f):a>f&&yt(e,i,c)},P=(t,e,n=!1)=>t.$tag$===e.$tag$?n?(n&&!t.$key$&&e.$key$&&(t.$key$=e.$key$),!0):t.$key$===e.$key$:!1,b=(t,e,n=!1)=>{const s=e.$elm$=t.$elm$,o=t.$children$,i=e.$children$,a=e.$text$;a===null?(gt(t,e,vt),o!==null&&i!==null?oe(s,o,e,i,n):i!==null?(t.$text$!==null&&(s.textContent=""),mt(s,null,e,i,0,i.length-1)):!n&&T.updatable&&o!==null&&yt(o,0,o.length-1)):t.$text$!==a&&(s.data=a)},wt=t=>{t.$attrs$&&t.$attrs$.ref&&t.$attrs$.ref(null),t.$children$&&t.$children$.map(wt)},z=(t,e,n)=>t?.insertBefore(e,n),ie=(t,e,n=!1)=>{const s=t.$hostElement$,o=t.$cmpMeta$,i=t.$vnode$||Z(null,null),r=te(e)?e:O(null,null,e);if(G=s.tagName,o.$attrsToReflect$&&(r.$attrs$=r.$attrs$||{},o.$attrsToReflect$.map(([l,c])=>r.$attrs$[c]=s[l])),n&&r.$attrs$)for(const l of Object.keys(r.$attrs$))s.hasAttribute(l)&&!["key","ref","style","class"].includes(l)&&(r.$attrs$[l]=s[l]);r.$tag$=null,r.$flags$|=4,t.$vnode$=r,r.$elm$=i.$elm$=s.shadowRoot||s,b(i,r,n)},St=(t,e)=>{if(e&&!t.$onRenderResolve$&&e["s-p"]){const n=e["s-p"].push(new Promise(s=>t.$onRenderResolve$=()=>{e["s-p"].splice(n-1,1),s()}))}},Y=(t,e)=>{if(t.$flags$|=16,t.$flags$&4){t.$flags$|=512;return}return St(t,t.$ancestorComponent$),Dt(()=>re(t,e))},re=(t,e)=>{const n=t.$hostElement$,s=x("scheduleUpdate",t.$cmpMeta$.$tagName$),o=n;if(!o)throw new Error(`Can't render component <${n.tagName.toLowerCase()} /> with invalid Stencil runtime! Make sure this imported component is compiled with a \`externalRuntime: true\` flag. For more information, please refer to https://stenciljs.com/docs/custom-elements#externalruntime`);let i;return e?i=A(o,"componentWillLoad",void 0,n):i=A(o,"componentWillUpdate",void 0,n),i=xt(i,()=>A(o,"componentWillRender",void 0,n)),s(),xt(i,()=>ce(t,o,e))},xt=(t,e)=>ae(t)?t.then(e).catch(n=>{console.error(n),e()}):e(),ae=t=>t instanceof Promise||t&&t.then&&typeof t.then=="function",ce=async(t,e,n)=>{var s;const o=t.$hostElement$,i=x("update",t.$cmpMeta$.$tagName$),a=o["s-rc"];n&&Vt(t);const r=x("render",t.$cmpMeta$.$tagName$);le(t,e,o,n),a&&(a.map(l=>l()),o["s-rc"]=void 0),r(),i();{const l=(s=o["s-p"])!=null?s:[],c=()=>de(t);l.length===0?c():(Promise.all(l).then(c),t.$flags$|=4,l.length=0)}},le=(t,e,n,s)=>{try{e=e.render(),t.$flags$&=-17,t.$flags$|=2,ie(t,e,s)}catch(o){C(o,t.$hostElement$)}return null},de=t=>{const e=t.$cmpMeta$.$tagName$,n=t.$hostElement$,s=x("postUpdate",e),o=n,i=t.$ancestorComponent$;A(o,"componentDidRender",void 0,n),t.$flags$&64?(A(o,"componentDidUpdate",void 0,n),s()):(t.$flags$|=64,fe(n),A(o,"componentDidLoad",void 0,n),s(),t.$onReadyResolve$(n),i||ue()),t.$onRenderResolve$&&(t.$onRenderResolve$(),t.$onRenderResolve$=void 0),t.$flags$&512&&D(()=>Y(t,!1)),t.$flags$&=-517},ue=t=>{D(()=>ee(v,"appload",{detail:{namespace:qt}}))},A=(t,e,n,s)=>{if(t&&t[e])try{return t[e](n)}catch(o){C(o,s)}},fe=t=>{var e;return t.classList.add((e=T.hydratedSelectorName)!=null?e:"hydrated")},he=(t,e)=>S(t).$instanceValues$.get(e),kt=(t,e,n,s)=>{const o=S(t),i=t,a=o.$instanceValues$.get(e),r=o.$flags$,l=i;n=ut(n,s.$members$[e][0]);const c=Number.isNaN(a)&&Number.isNaN(n);if(n!==a&&!c){o.$instanceValues$.set(e,n);{if(s.$watchers$&&r&128){const u=s.$watchers$[e];u&&u.map(f=>{try{l[f](n,a,e)}catch(h){C(h,i)}})}if((r&18)===2){if(l.componentShouldUpdate&&l.componentShouldUpdate(n,a,e)===!1)return;Y(o,!1)}}}},pe=(t,e,n)=>{var s,o;const i=t.prototype;if(e.$members$||e.$watchers$||t.watchers){t.watchers&&!e.$watchers$&&(e.$watchers$=t.watchers);const a=Object.entries((s=e.$members$)!=null?s:{});a.map(([r,[l]])=>{if(l&31||l&32){const{get:c,set:d}=Object.getOwnPropertyDescriptor(i,r)||{};c&&(e.$members$[r][0]|=2048),d&&(e.$members$[r][0]|=4096),Object.defineProperty(i,r,{get(){return c?c.apply(this):he(this,r)},configurable:!0,enumerable:!0}),Object.defineProperty(i,r,{set(u){const f=S(this);if(d){const h=l&32?this[r]:f.$hostElement$[r];typeof h>"u"&&f.$instanceValues$.get(r)?u=f.$instanceValues$.get(r):!f.$instanceValues$.get(r)&&h&&f.$instanceValues$.set(r,h),d.apply(this,[ut(u,l)]),u=l&32?this[r]:f.$hostElement$[r],kt(this,r,u,e);return}{kt(this,r,u,e);return}}})}});{const r=new Map;i.attributeChangedCallback=function(l,c,d){y.jmp(()=>{var u;const f=r.get(l);if(!(this.hasOwnProperty(f)&&T.lazyLoad)){if(i.hasOwnProperty(f)&&typeof this[f]=="number"&&this[f]==d)return;if(f==null){const g=S(this),$=g?.$flags$;if($&&!($&8)&&$&128&&d!==c){const m=this,k=(u=e.$watchers$)==null?void 0:u[l];k?.forEach(Mt=>{m[Mt]!=null&&m[Mt].call(m,d,c,l)})}return}}const h=Object.getOwnPropertyDescriptor(i,f);d=d===null&&typeof this[f]=="boolean"?!1:d,d!==this[f]&&(!h.get||h.set)&&(this[f]=d)})},t.observedAttributes=Array.from(new Set([...Object.keys((o=e.$watchers$)!=null?o:{}),...a.filter(([l,c])=>c[0]&15).map(([l,c])=>{var d;const u=c[1]||l;return r.set(u,l),c[0]&512&&((d=e.$attrsToReflect$)==null||d.push([l,u])),u})]))}}return t},Et=async(t,e,n,s)=>{let o;if((e.$flags$&32)===0){e.$flags$|=32;{o=t.constructor;const r=t.localName;customElements.whenDefined(r).then(()=>e.$flags$|=128)}if(o&&o.style){let r;typeof o.style=="string"&&(r=o.style);const l=lt(n);if(!M.has(l)){const c=x("registerStyles",n.$tagName$);Jt(l,r,!!(n.$flags$&1)),c()}}}const i=e.$ancestorComponent$,a=()=>Y(e,!0);i&&i["s-rc"]?i["s-rc"].push(a):a()},ge=(t,e)=>{},$e=t=>{{const e=S(t),n=e.$cmpMeta$,s=x("connectedCallback",n.$tagName$);if(e.$flags$&1)e?.$lazyInstance$||e?.$onReadyPromise$&&e.$onReadyPromise$.then(()=>ge());else{e.$flags$|=1;{let o=t;for(;o=o.parentNode||o.host;)if(o["s-p"]){St(e,e.$ancestorComponent$=o);break}}n.$members$&&Object.entries(n.$members$).map(([o,[i]])=>{if(i&31&&t.hasOwnProperty(o)){const a=t[o];delete t[o],t[o]=a}}),T.initializeNextTick?D(()=>Et(t,e,n)):Et(t,e,n)}s()}},ve=async t=>{S(t),E.has(t)&&E.delete(t),t.shadowRoot&&E.has(t.shadowRoot)&&E.delete(t.shadowRoot)},me=(t,e)=>{const n={$flags$:e[0],$tagName$:e[1]};n.$members$=e[2],n.$watchers$=t.$watchers$,n.$attrsToReflect$=[];const s=t.prototype.connectedCallback,o=t.prototype.disconnectedCallback;return Object.assign(t.prototype,{__hasHostListenerAttached:!1,__registerHost(){Ht(this,n)},connectedCallback(){this.__hasHostListenerAttached||(S(this),this.__hasHostListenerAttached=!0),$e(this),s&&s.call(this)},disconnectedCallback(){ve(this),o&&o.call(this)},__attachShadow(){if(!this.shadowRoot)Qt.call(this,n);else if(this.shadowRoot.mode!=="open")throw new Error(`Unable to re-use existing shadow root for ${n.$tagName$}! Mode is set to ${this.shadowRoot.mode} but Stencil only supports open shadow roots.`)}}),t.is=n.$tagName$,pe(t,n)};let K;const ye=()=>{if(typeof window>"u")return new Map;if(!K){const t=window;t.Ionicons=t.Ionicons||{},K=t.Ionicons.map=t.Ionicons.map||new Map}return K},we=t=>{let e=Q(t.src);return e||(e=bt(t.name,t.icon,t.mode,t.ios,t.md),e?Se(e,t):t.icon&&(e=Q(t.icon),e||(e=Q(t.icon[t.mode]),e))?e:null)},Se=(t,e)=>{const n=ye().get(t);if(n)return n;try{return Wt(`svg/${t}.svg`)}catch(s){console.log("e",s),console.warn(`[Ionicons Warning]: Could not load icon with name "${t}". Ensure that the icon is registered using addIcons or that the icon SVG data is passed directly to the icon component.`,e)}},bt=(t,e,n,s,o)=>(n=(n&&j(n))==="ios"?"ios":"md",s&&n==="ios"?t=j(s):o&&n==="md"?t=j(o):(!t&&e&&!At(e)&&(t=e),H(t)&&(t=j(t))),!H(t)||t.trim()===""||t.replace(/[a-z]|-|\d/gi,"")!==""?null:t),Q=t=>H(t)&&(t=t.trim(),At(t))?t:null,At=t=>t.length>0&&/(\/|\.)/.test(t),H=t=>typeof t=="string",j=t=>t.toLowerCase(),xe=(t,e=[])=>{const n={};return e.forEach(s=>{t.hasAttribute(s)&&(t.getAttribute(s)!==null&&(n[s]=t.getAttribute(s)),t.removeAttribute(s))}),n},ke=t=>t&&t.dir!==""?t.dir.toLowerCase()==="rtl":document?.dir.toLowerCase()==="rtl",Ee=t=>{const e=document.createElement("div");e.innerHTML=t;for(let s=e.childNodes.length-1;s>=0;s--)e.childNodes[s].nodeName.toLowerCase()!=="svg"&&e.removeChild(e.childNodes[s]);const n=e.firstElementChild;if(n&&n.nodeName.toLowerCase()==="svg"){const s=n.getAttribute("class")||"";if(n.setAttribute("class",(s+" s-ion-icon").trim()),_t(n))return e.innerHTML}return""},_t=t=>{if(t.nodeType===1){if(t.nodeName.toLowerCase()==="script")return!1;for(let e=0;e<t.attributes.length;e++){const n=t.attributes[e].name;if(H(n)&&n.toLowerCase().indexOf("on")===0)return!1}for(let e=0;e<t.childNodes.length;e++)if(!_t(t.childNodes[e]))return!1}return!0},be=t=>t.startsWith("data:image/svg+xml"),Ae=t=>t.indexOf(";utf8,")!==-1,_=new Map,Lt=new Map;let J;function N(t){return _.set(t,""),""}const _e=(t,e)=>{const n=Lt.get(t);return n||(typeof fetch<"u"&&typeof document<"u"?be(t)&&Ae(t)?Promise.resolve(Le(t)):Te(t,e):Promise.resolve(N(t)))};function Le(t){J||(J=new DOMParser);const n=J.parseFromString(t,"text/html").querySelector("svg");if(n)return _.set(t,n.outerHTML),n.outerHTML;throw new Error(`Could not parse svg from ${t}`)}function Te(t,e){const n=fetch(t).then(s=>s.text().then(o=>{o&&e!==!1&&(o=Ee(o));const i=o||"";return _.set(t,i),i}).catch(()=>N(t))).catch(()=>N(t));return Lt.set(t,n),n}const Ce=":host{display:inline-block;width:1em;height:1em;contain:strict;fill:currentColor;box-sizing:content-box !important}:host .ionicon{stroke:currentColor}.ionicon-fill-none{fill:none}.ionicon-stroke-width{stroke-width:var(--ionicon-stroke-width, 32px)}.icon-inner,.ionicon,svg{display:block;height:100%;width:100%}@supports (background: -webkit-named-image(i)){:host(.icon-rtl) .icon-inner{transform:scaleX(-1)}}@supports not selector(:dir(rtl)) and selector(:host-context([dir='rtl'])){:host(.icon-rtl) .icon-inner{transform:scaleX(-1)}}:host(.flip-rtl):host-context([dir='rtl']) .icon-inner{transform:scaleX(-1)}@supports selector(:dir(rtl)){:host(.flip-rtl:dir(rtl)) .icon-inner{transform:scaleX(-1)}:host(.flip-rtl:dir(ltr)) .icon-inner{transform:scaleX(1)}}:host(.icon-small){font-size:1.125rem !important}:host(.icon-large){font-size:2rem !important}:host(.ion-color){color:var(--ion-color-base) !important}:host(.ion-color-primary){--ion-color-base:var(--ion-color-primary, #3880ff)}:host(.ion-color-secondary){--ion-color-base:var(--ion-color-secondary, #0cd1e8)}:host(.ion-color-tertiary){--ion-color-base:var(--ion-color-tertiary, #f4a942)}:host(.ion-color-success){--ion-color-base:var(--ion-color-success, #10dc60)}:host(.ion-color-warning){--ion-color-base:var(--ion-color-warning, #ffce00)}:host(.ion-color-danger){--ion-color-base:var(--ion-color-danger, #f14141)}:host(.ion-color-light){--ion-color-base:var(--ion-color-light, #f4f5f8)}:host(.ion-color-medium){--ion-color-base:var(--ion-color-medium, #989aa2)}:host(.ion-color-dark){--ion-color-base:var(--ion-color-dark, #222428)}",Me=me(class extends Ut{constructor(){super(),this.__registerHost(),this.__attachShadow(),this.iconName=null,this.inheritedAttributes={},this.didLoadIcon=!1,this.isVisible=!1,this.mode=Ie(),this.lazy=!1,this.sanitize=!0}componentWillLoad(){this.inheritedAttributes=xe(this.el,["aria-label"])}connectedCallback(){this.waitUntilVisible(this.el,"50px",()=>{this.isVisible=!0,this.loadIcon()})}componentDidLoad(){this.didLoadIcon||this.loadIcon()}disconnectedCallback(){this.io&&(this.io.disconnect(),this.io=void 0)}waitUntilVisible(e,n,s){if(!!!(this.lazy&&typeof window<"u"&&window.IntersectionObserver))return s();const i=this.io=new window.IntersectionObserver(a=>{a[0].isIntersecting&&(i.disconnect(),this.io=void 0,s())},{rootMargin:n});i.observe(e)}loadIcon(){if(this.isVisible){const e=we(this);e&&(_.has(e)?this.svgContent=_.get(e):_e(e,this.sanitize).then(()=>this.svgContent=_.get(e)),this.didLoadIcon=!0)}this.iconName=bt(this.name,this.icon,this.mode,this.ios,this.md)}render(){const{flipRtl:e,iconName:n,inheritedAttributes:s,el:o}=this,i=this.mode||"md",a=n?(n.includes("arrow")||n.includes("chevron"))&&e!==!1:!1,r=e||a;return O(dt,Object.assign({key:"0578c899781ca145dd8205acd9670af39b57cf2e",role:"img",class:Object.assign(Object.assign({[i]:!0},Oe(this.color)),{[`icon-${this.size}`]:!!this.size,"flip-rtl":r,"icon-rtl":r&&ke(o)})},s),this.svgContent?O("div",{class:"icon-inner",innerHTML:this.svgContent}):O("div",{class:"icon-inner"}))}static get assetsDirs(){return["svg"]}get el(){return this}static get watchers(){return{name:["loadIcon"],src:["loadIcon"],icon:["loadIcon"],ios:["loadIcon"],md:["loadIcon"]}}static get style(){return Ce}},[1,"ion-icon",{mode:[1025],color:[1],ios:[1],md:[1],flipRtl:[4,"flip-rtl"],name:[513],src:[1],icon:[8],size:[1],lazy:[4],sanitize:[4],svgContent:[32],isVisible:[32]},void 0,{name:["loadIcon"],src:["loadIcon"],icon:["loadIcon"],ios:["loadIcon"],md:["loadIcon"]}]),Ie=()=>typeof document<"u"&&document.documentElement.getAttribute("mode")||"md",Oe=t=>t?{"ion-color":!0,[`ion-color-${t}`]:!0}:null;function qe(){if(typeof customElements>"u")return;["ion-icon"].forEach(e=>{e==="ion-icon"&&(customElements.get(e)||customElements.define(e,Me))})}const Pe=qe,ze="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='m112 184 144 144 144-144' stroke-linecap='round' stroke-linejoin='round' stroke-width='48px' class='ionicon-fill-none'/></svg>",He="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='m289.94 256 95-95A24 24 0 0 0 351 127l-95 95-95-95a24 24 0 0 0-34 34l95 95-95 95a24 24 0 1 0 34 34l95-95 95 95a24 24 0 0 0 34-34Z'/></svg>",je="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M256 32C132.3 32 32 134.9 32 261.7c0 101.5 64.2 187.5 153.2 217.9a17.6 17.6 0 0 0 3.8.4c8.3 0 11.5-6.1 11.5-11.4 0-5.5-.2-19.9-.3-39.1a102.4 102.4 0 0 1-22.6 2.7c-43.1 0-52.9-33.5-52.9-33.5-10.2-26.5-24.9-33.6-24.9-33.6-19.5-13.7-.1-14.1 1.4-14.1h.1c22.5 2 34.3 23.8 34.3 23.8 11.2 19.6 26.2 25.1 39.6 25.1a63 63 0 0 0 25.6-6c2-14.8 7.8-24.9 14.2-30.7-49.7-5.8-102-25.5-102-113.5 0-25.1 8.7-45.6 23-61.6-2.3-5.8-10-29.2 2.2-60.8a18.6 18.6 0 0 1 5-.5c8.1 0 26.4 3.1 56.6 24.1a208.2 208.2 0 0 1 112.2 0c30.2-21 48.5-24.1 56.6-24.1a18.6 18.6 0 0 1 5 .5c12.2 31.6 4.5 55 2.2 60.8 14.3 16.1 23 36.6 23 61.6 0 88.2-52.4 107.6-102.3 113.3 8 7.1 15.2 21.1 15.2 42.5 0 30.7-.3 55.5-.3 63 0 5.4 3.1 11.5 11.4 11.5a19.4 19.4 0 0 0 4-.4C415.9 449.2 480 363.1 480 261.7 480 134.9 379.7 32 256 32'/></svg>",Ue="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M444.17 32H70.28C49.85 32 32 46.7 32 66.89v374.72C32 461.91 49.85 480 70.28 480h373.78c20.54 0 35.94-18.21 35.94-38.39V66.89C480.12 46.7 464.6 32 444.17 32m-273.3 373.43h-64.18V205.88h64.18ZM141 175.54h-.46c-20.54 0-33.84-15.29-33.84-34.43 0-19.49 13.65-34.42 34.65-34.42s33.85 14.82 34.31 34.42c-.01 19.14-13.31 34.43-34.66 34.43m264.43 229.89h-64.18V296.32c0-26.14-9.34-44-32.56-44-17.74 0-28.24 12-32.91 23.69-1.75 4.2-2.22 9.92-2.22 15.76v113.66h-64.18V205.88h64.18v27.77c9.34-13.3 23.93-32.44 57.88-32.44 42.13 0 74 27.77 74 87.64Z'/></svg>",Re="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M496 109.5a201.8 201.8 0 0 1-56.55 15.3 97.5 97.5 0 0 0 43.33-53.6 197.7 197.7 0 0 1-62.56 23.5A99.14 99.14 0 0 0 348.31 64c-54.42 0-98.46 43.4-98.46 96.9a93.2 93.2 0 0 0 2.54 22.1 280.7 280.7 0 0 1-203-101.3A95.7 95.7 0 0 0 36 130.4c0 33.6 17.53 63.3 44 80.7A97.5 97.5 0 0 1 35.22 199v1.2c0 47 34 86.1 79 95a100.8 100.8 0 0 1-25.94 3.4 94.4 94.4 0 0 1-18.51-1.8c12.51 38.5 48.92 66.5 92.05 67.3A199.6 199.6 0 0 1 39.5 405.6a203 203 0 0 1-23.5-1.4A278.7 278.7 0 0 0 166.74 448c181.36 0 280.44-147.7 280.44-275.8 0-4.2-.11-8.4-.31-12.5A198.5 198.5 0 0 0 496 109.5'/></svg>",Be="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M508.64 148.79c0-45-33.1-81.2-74-81.2C379.24 65 322.74 64 265 64h-18c-57.6 0-114.2 1-169.6 3.6C36.6 67.6 3.5 104 3.5 149 1 184.59-.06 220.19 0 255.79q-.15 53.4 3.4 106.9c0 45 33.1 81.5 73.9 81.5 58.2 2.7 117.9 3.9 178.6 3.8q91.2.3 178.6-3.8c40.9 0 74-36.5 74-81.5 2.4-35.7 3.5-71.3 3.4-107q.34-53.4-3.26-106.9M207 353.89v-196.5l145 98.2Z'/></svg>",De="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M80 160h352M80 256h352M80 352h352' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>",We="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M221.09 64a157.09 157.09 0 1 0 157.09 157.09A157.1 157.1 0 0 0 221.09 64Z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M338.29 338.29 448 448' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Xe="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M256 64C150 64 64 150 64 256s86 192 192 192 192-86 192-192S362 64 256 64Z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 128v144h96' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Tt="menu-outline",Ze="close",Fe=()=>{const t=document.querySelector(".site-header__toggle");if(!t)return;const e=document.querySelector(t.dataset.target);if(!e)return;const n=()=>{if(!e.classList.contains("is-hidden")){e.classList.add("is-hidden"),t.setAttribute("aria-expanded","false");const s=t.querySelector("ion-icon");s&&(s.name=Tt)}};t.addEventListener("click",()=>{const s=t.getAttribute("aria-expanded")==="true";e.classList.toggle("is-hidden"),t.setAttribute("aria-expanded",s?"false":"true");const o=t.querySelector("ion-icon");o&&(o.name=s?Tt:Ze)}),document.addEventListener("click",s=>{const o=e.contains(s.target),i=t.contains(s.target);!o&&!i&&n()}),document.addEventListener("keydown",s=>{s.key==="Escape"&&n()})},Ge={category:"data-category",categoryId:"data-category-id",emitMetadata:"data-emit-metadata",inputPosition:"data-input-position",lang:"data-lang",loading:"data-loading",mapping:"data-mapping",reactionsEnabled:"data-reactions-enabled",repo:"data-repo",repoId:"data-repo-id",strict:"data-strict",term:"data-term",theme:"data-theme"},Ye=t=>{if(!t||t.dataset.giscusLoaded==="true")return;const e=document.createElement("script");e.src=t.dataset.giscusScriptSrc||"https://giscus.app/client.js",e.async=!0,e.crossOrigin="anonymous";for(const[n,s]of Object.entries(Ge)){const o=t.dataset[`giscus${n.charAt(0).toUpperCase()}${n.slice(1)}`];o&&e.setAttribute(s,o)}t.append(e),t.dataset.giscusLoaded="true"},Ke=()=>{const t=document.querySelectorAll("[data-comments-collapsible]");t.length&&t.forEach(e=>{const n=e.querySelector("[data-comments-toggle]"),s=e.querySelector("[data-comments-panel]"),o=e.querySelector("[data-giscus-mount]");!n||!s||!o||n.addEventListener("click",()=>{const a=!(n.getAttribute("aria-expanded")==="true");n.setAttribute("aria-expanded",a?"true":"false"),e.classList.toggle("is-open",a),s.hidden=!a,a&&Ye(o)})})},Qe=()=>{const t=document.querySelector("#main-header");if(!t)return;const e=()=>{if(window.scrollY>8){t.classList.add("is-scrolled");return}t.classList.remove("is-scrolled")};e(),window.addEventListener("scroll",e,{passive:!0})},Je=()=>{const t=document.querySelectorAll("[data-series-collapsible]");t.length&&t.forEach(e=>{const n=e.querySelector("[data-series-toggle]"),s=e.querySelector("[data-series-panel]");if(!n||!s)return;const o=()=>{const a=n.getAttribute("aria-expanded")==="true";e.classList.toggle("is-open",a),s.hidden=!a};o(),n.addEventListener("click",()=>{const a=n.getAttribute("aria-expanded")==="true";n.setAttribute("aria-expanded",a?"false":"true"),o()});const i=e.querySelectorAll("[data-series-overflow-toggle]");i.length&&i.forEach(a=>{a.addEventListener("click",()=>{const r=a.dataset.seriesOverflowGroup,l=r?`[data-series-overflow-item][data-series-overflow-group="${r}"]`:"[data-series-overflow-item]";e.querySelectorAll(l).forEach(d=>{d.hidden=!1}),a.hidden=!0})})})},Ne=()=>{const t=document.querySelector("[data-reading-progress]"),e=document.querySelector(".content");if(!t||!e)return;const n=()=>{const s=e.offsetTop,o=e.offsetHeight,i=window.innerHeight,a=window.scrollY,r=Math.max(o-i,1),c=Math.min(Math.max(a-s,0),r)/r*100;t.style.transform=`scaleX(${c/100})`};n(),window.addEventListener("scroll",n,{passive:!0}),window.addEventListener("resize",n)},Ve="[data-search-root]";let U;const w=t=>(t||"").toString().normalize("NFKD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9\s-]/g," ").replace(/\s+/g," ").trim(),tn=t=>w(t).split(" ").filter(e=>e.length>0),en=t=>[...new Set(tn(t))],nn=(t,e)=>{const n=t.date?Date.parse(t.date):0,s=e.date?Date.parse(e.date):0;return Number.isNaN(n)||Number.isNaN(s)?0:s-n},sn=t=>{const e=t.title||"",n=t.content||"",s=Array.isArray(t.tags)?t.tags:[],o=Array.isArray(t.categories)?t.categories:[];return{...t,title:e,content:n,tags:s,categories:o,normalizedTitle:w(e),normalizedContent:w(n),normalizedTags:s.map(w).filter(Boolean),normalizedCategories:o.map(w).filter(Boolean)}},on=async t=>(U||(U=fetch(t,{headers:{Accept:"application/json"}}).then(e=>{if(!e.ok)throw new Error(`Search index request failed with ${e.status}`);return e.json()}).then(e=>e.map(sn)).catch(e=>{throw U=void 0,e})),U),rn=(t,e,n)=>{let s=0;t.normalizedTitle.includes(e)&&(s+=140),t.normalizedContent.includes(e)&&(s+=30),n.forEach(i=>{t.normalizedTitle.includes(i)&&(s+=60),t.normalizedTags.some(a=>a.includes(i))&&(s+=30),t.normalizedCategories.some(a=>a.includes(i))&&(s+=18),t.normalizedContent.includes(i)&&(s+=10)});const o=n.filter(i=>t.normalizedTitle.includes(i)||t.normalizedTags.some(a=>a.includes(i))||t.normalizedCategories.some(a=>a.includes(i))||t.normalizedContent.includes(i)).length;return o===0?0:(o===n.length&&(s+=24),t.type==="post"&&(s+=4),s)},an=(t,e,n)=>{const s=w(e),o=en(e);return!s||o.length===0?[]:t.map(i=>({searchDocument:i,score:rn(i,s,o)})).filter(i=>i.score>0).sort((i,a)=>a.score-i.score||nn(i.searchDocument,a.searchDocument)).slice(0,n).map(i=>i.searchDocument)},cn=(t,e,n)=>{const s=t.replace(/\s+/g," ").trim();if(!s)return"";const o=w(e),a=w(s).indexOf(o);if(a===-1)return s.length>n?`${s.slice(0,n).trimEnd()}...`:s;const r=Math.max(a-Math.floor(n/3),0),l=Math.min(r+n,s.length),c=r>0?"...":"",d=l<s.length?"...":"";return`${c}${s.slice(r,l).trim()}${d}`},ln=t=>{const e=[];return t.type&&e.push(t.type==="post"?"Post":"Page"),t.tags.length>0&&e.push(t.tags.slice(0,2).join(", ")),e.join(" • ")},Ct=(t,e,n,s)=>{const o=t.querySelector("[data-search-results]"),i=t.querySelector("[data-search-status]");o.innerHTML="",i.textContent=s,e.forEach(a=>{const r=window.document.createElement("li");r.className="site-search__result-item";const l=window.document.createElement("a");l.className="site-search__result-link",l.href=a.url;const c=window.document.createElement("span");c.className="site-search__result-title",c.textContent=a.title,l.append(c);const d=ln(a);if(d){const h=window.document.createElement("span");h.className="site-search__result-meta",h.textContent=d,l.append(h)}const u=Number(t.dataset.searchContentPreviewLength||"140"),f=cn(a.content,n,u);if(f){const h=window.document.createElement("span");h.className="site-search__result-snippet",h.textContent=f,l.append(h)}r.append(l),o.append(r)})},dn=t=>{const e=t.querySelector("[data-search-panel]"),n=t.querySelector("[data-search-input]");e.hidden=!1,n.setAttribute("aria-expanded","true")},L=t=>{const e=t.querySelector("[data-search-panel]"),n=t.querySelector("[data-search-input]");e.hidden=!0,n.setAttribute("aria-expanded","false")},V=(t,e)=>{const n=[...t.querySelectorAll(".site-search__result-link")];if(n.length===0)return;const s=n.findIndex(i=>i===window.document.activeElement),o=s===-1?e>0?0:n.length-1:(s+e+n.length)%n.length;n[o].focus()},un=t=>{const e=t.querySelector("[data-search-input]"),n=t.querySelector("[data-search-clear]"),s=t.querySelector(".site-search__form"),o=t.dataset.searchUrl,i=Number(t.dataset.searchMaxResults||"8"),a=Number(t.dataset.searchMinQueryLength||"2"),r=t.dataset.searchIdleText||"Start typing to search the site.",l=t.dataset.searchTooShortText||"Type at least %d characters to search.",c=t.dataset.searchLoadingText||"Loading search index...",d=t.dataset.searchEmptyText||"No results found.",u=t.dataset.searchErrorText||"Search is unavailable right now.",f=p=>{const m=t.querySelector("[data-search-status]");m.textContent=p},h=()=>{t.querySelector("[data-search-results]").innerHTML=""},g=()=>{n.hidden=e.value.length===0},$=async()=>{const p=e.value.trim();if(g(),p.length===0){h(),f(r),L(t);return}if(dn(t),p.length<a){h(),f(l.replace("%d",`${a}`));return}f(c);try{const m=await on(o),k=an(m,p,i);if(k.length===0){Ct(t,[],p,d);return}Ct(t,k,p,`${k.length} result${k.length===1?"":"s"}`)}catch{h(),f(u)}};e.addEventListener("focus",()=>{e.value.trim().length>0&&$()}),e.addEventListener("input",()=>{$()}),e.addEventListener("keydown",p=>{p.key==="ArrowDown"&&(p.preventDefault(),V(t,1)),p.key==="Escape"&&L(t)}),t.addEventListener("keydown",p=>{if(p.key==="Escape"&&(L(t),e.focus()),p.key==="ArrowDown"&&p.target.matches(".site-search__result-link")&&(p.preventDefault(),V(t,1)),p.key==="ArrowUp"&&p.target.matches(".site-search__result-link")){if(p.preventDefault(),p.target===t.querySelector(".site-search__result-link")){e.focus();return}V(t,-1)}}),n.addEventListener("click",()=>{e.value="",g(),h(),f(r),L(t),e.focus()}),s.addEventListener("submit",p=>{p.preventDefault();const m=t.querySelector(".site-search__result-link");if(m){window.location.assign(m.href);return}$()}),window.document.addEventListener("click",p=>{t.contains(p.target)||L(t)})},fn=()=>{const t=window.document.querySelectorAll(Ve);t.length!==0&&t.forEach(un)};Ot({"chevron-down-outline":ze,close:He,"logo-github":je,"logo-linkedin":Ue,"logo-twitter":Re,"logo-youtube":Be,"menu-outline":De,"search-outline":We,"time-outline":Xe}),Pe(),Fe(),Ke(),Qe(),Je(),Ne(),fn()})();
|
|
1
|
+
(function(){"use strict";let R;const It=()=>{if(typeof window>"u")return new Map;if(!R){const t=window;t.Ionicons=t.Ionicons||{},R=t.Ionicons.map=t.Ionicons.map||new Map}return R},qt=t=>{Object.keys(t).forEach(e=>{tt(e,t[e]);const n=e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z0-9])/g,"$1-$2").toLowerCase();e!==n&&tt(n,t[e])})},tt=(t,e)=>{const n=It(),s=n.get(t);s===void 0?n.set(t,e):s!==e&&console.warn(`[Ionicons Warning]: Multiple icons were mapped to name "${t}". Ensure that multiple icons are not mapped to the same icon name.`)},Ot="ionicons",T={hydratedSelectorName:"hydrated",lazyLoad:!1,updatable:!0};var Pt=Object.defineProperty,zt=(t,e)=>{for(var n in e)Pt(t,n,{get:e[n],enumerable:!0})},S=t=>{if(t.__stencil__getHostRef)return t.__stencil__getHostRef()},Ht=(t,e)=>{const n={$flags$:0,$hostElement$:t,$cmpMeta$:e,$instanceValues$:new Map};n.$onReadyPromise$=new Promise(o=>n.$onReadyResolve$=o),t["s-p"]=[],t["s-rc"]=[];const s=n;return t.__stencil__getHostRef=()=>s,s},et=(t,e)=>e in t,C=(t,e)=>(0,console.error)(t,e),M=new Map,jt="slot-fb{display:contents}slot-fb[hidden]{display:none}",nt="http://www.w3.org/1999/xlink",v=typeof window<"u"?window:{},Ut=v.HTMLElement||class{},m={$flags$:0,$resourcesUrl$:"",jmp:t=>t(),raf:t=>requestAnimationFrame(t),ael:(t,e,n,s)=>t.addEventListener(e,n,s),rel:(t,e,n,s)=>t.removeEventListener(e,n,s),ce:(t,e)=>new CustomEvent(t,e)},Rt=t=>Promise.resolve(t),st=(()=>{try{return new CSSStyleSheet,typeof new CSSStyleSheet().replaceSync=="function"}catch{}return!1})(),B=!1,ot=[],it=[],Bt=(t,e)=>n=>{t.push(n),B||(B=!0,m.raf(at))},rt=t=>{for(let e=0;e<t.length;e++)try{t[e](performance.now())}catch(n){C(n)}t.length=0},at=()=>{rt(ot),rt(it),(B=ot.length>0)&&m.raf(at)},D=t=>Rt().then(t),Dt=Bt(it),Wt=t=>{const e=new URL(t,m.$resourcesUrl$);return e.origin!==v.location.origin?e.href:e.pathname},W=t=>(t=typeof t,t==="object"||t==="function");function Xt(t){var e,n,s;return(s=(n=(e=t.head)==null?void 0:e.querySelector('meta[name="csp-nonce"]'))==null?void 0:n.getAttribute("content"))!=null?s:void 0}var Zt=t=>t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),Ft={};zt(Ft,{err:()=>ct,map:()=>Gt,ok:()=>X,unwrap:()=>Yt,unwrapErr:()=>Kt});var X=t=>({isOk:!0,isErr:!1,value:t}),ct=t=>({isOk:!1,isErr:!0,value:t});function Gt(t,e){if(t.isOk){const n=e(t.value);return n instanceof Promise?n.then(s=>X(s)):X(n)}if(t.isErr){const n=t.value;return ct(n)}throw"should never get here"}var Yt=t=>{if(t.isOk)return t.value;throw t.value},Kt=t=>{if(t.isErr)return t.value;throw t.value};function hn(t){}var I;function Qt(t){var e;const n=this.attachShadow({mode:"open"});I===void 0&&(I=(e=void 0)!=null?e:null),I&&n.adoptedStyleSheets.push(I)}var x=(t,e="")=>()=>{},k=new WeakMap,Jt=(t,e,n)=>{let s=M.get(t);st&&n?(s=s||new CSSStyleSheet,typeof s=="string"?s=e:s.replaceSync(e)):s=e,M.set(t,s)},Nt=(t,e,n)=>{var s;const o=lt(e),i=M.get(o);if(!v.document)return o;if(t=t.nodeType===11?t:v.document,i)if(typeof i=="string"){t=t.head||t;let a=k.get(t),r;if(a||k.set(t,a=new Set),!a.has(o)){{r=v.document.createElement("style"),r.innerHTML=i;const l=(s=m.$nonce$)!=null?s:Xt(v.document);if(l!=null&&r.setAttribute("nonce",l),!(e.$flags$&1))if(t.nodeName==="HEAD"){const c=t.querySelectorAll("link[rel=preconnect]"),d=c.length>0?c[c.length-1].nextSibling:t.querySelector("style");t.insertBefore(r,d?.parentNode===t?d:null)}else if("host"in t)if(st){const c=new CSSStyleSheet;c.replaceSync(i),t.adoptedStyleSheets.unshift(c)}else{const c=t.querySelector("style");c?c.innerHTML=i+c.innerHTML:t.prepend(r)}else t.append(r);e.$flags$&1&&t.insertBefore(r,null)}e.$flags$&4&&(r.innerHTML+=jt),a&&a.add(o)}}else t.adoptedStyleSheets.includes(i)||t.adoptedStyleSheets.push(i);return o},Vt=t=>{const e=t.$cmpMeta$,n=t.$hostElement$,s=e.$flags$,o=x("attachStyles",e.$tagName$),i=Nt(n.shadowRoot?n.shadowRoot:n.getRootNode(),e);s&10&&(n["s-sc"]=i,n.classList.add(i+"-h")),o()},lt=(t,e)=>"sc-"+t.$tagName$,q=(t,e,...n)=>{let s=null,o=null,i=!1,a=!1;const r=[],l=d=>{for(let u=0;u<d.length;u++)s=d[u],Array.isArray(s)?l(s):s!=null&&typeof s!="boolean"&&((i=typeof t!="function"&&!W(s))&&(s=String(s)),i&&a?r[r.length-1].$text$+=s:r.push(i?Z(null,s):s),a=i)};if(l(n),e){e.key&&(o=e.key);{const d=e.className||e.class;d&&(e.class=typeof d!="object"?d:Object.keys(d).filter(u=>d[u]).join(" "))}}const c=Z(t,null);return c.$attrs$=e,r.length>0&&(c.$children$=r),c.$key$=o,c},Z=(t,e)=>{const n={$flags$:0,$tag$:t,$text$:e,$elm$:null,$children$:null};return n.$attrs$=null,n.$key$=null,n},dt={},te=t=>t&&t.$tag$===dt,F=t=>{const e=Zt(t);return new RegExp(`(^|[^@]|@(?!supports\\s+selector\\s*\\([^{]*?${e}))(${e}\\b)`,"g")};F("::slotted"),F(":host"),F(":host-context");var ut=(t,e,n)=>t!=null&&!W(t)?e&4?t==="false"?!1:t===""||!!t:e&1?String(t):t:t,ee=(t,e,n)=>{const s=m.ce(e,n);return t.dispatchEvent(s),s},ft=(t,e,n,s,o,i,a)=>{if(n===s)return;let r=et(t,e),l=e.toLowerCase();if(e==="class"){const c=t.classList,d=ht(n);let u=ht(s);c.remove(...d.filter(f=>f&&!u.includes(f))),c.add(...u.filter(f=>f&&!d.includes(f)))}else if(e==="style"){for(const c in n)(!s||s[c]==null)&&(c.includes("-")?t.style.removeProperty(c):t.style[c]="");for(const c in s)(!n||s[c]!==n[c])&&(c.includes("-")?t.style.setProperty(c,s[c]):t.style[c]=s[c])}else if(e!=="key")if(e==="ref")s&&s(t);else if(!t.__lookupSetter__(e)&&e[0]==="o"&&e[1]==="n"){if(e[2]==="-"?e=e.slice(3):et(v,l)?e=l.slice(2):e=l[2]+e.slice(3),n||s){const c=e.endsWith(pt);e=e.replace(se,""),n&&m.rel(t,e,n,c),s&&m.ael(t,e,s,c)}}else{const c=W(s);if(r||c&&s!==null)try{if(t.tagName.includes("-"))t[e]!==s&&(t[e]=s);else{const u=s??"";e==="list"?r=!1:(n==null||t[e]!=u)&&(typeof t.__lookupSetter__(e)=="function"?t[e]=u:t.setAttribute(e,u))}}catch{}let d=!1;l!==(l=l.replace(/^xlink\:?/,""))&&(e=l,d=!0),s==null||s===!1?(s!==!1||t.getAttribute(e)==="")&&(d?t.removeAttributeNS(nt,e):t.removeAttribute(e)):(!r||i&4||o)&&!c&&t.nodeType===1&&(s=s===!0?"":s,d?t.setAttributeNS(nt,e,s):t.setAttribute(e,s))}},ne=/\s/,ht=t=>(typeof t=="object"&&t&&"baseVal"in t&&(t=t.baseVal),!t||typeof t!="string"?[]:t.split(ne)),pt="Capture",se=new RegExp(pt+"$"),gt=(t,e,n,s)=>{const o=e.$elm$.nodeType===11&&e.$elm$.host?e.$elm$.host:e.$elm$,i=t&&t.$attrs$||{},a=e.$attrs$||{};for(const r of $t(Object.keys(i)))r in a||ft(o,r,i[r],void 0,n,e.$flags$);for(const r of $t(Object.keys(a)))ft(o,r,i[r],a[r],n,e.$flags$)};function $t(t){return t.includes("ref")?[...t.filter(e=>e!=="ref"),"ref"]:t}var G,vt=!1,O=(t,e,n)=>{const s=e.$children$[n];let o=0,i,a;if(s.$text$!==null)i=s.$elm$=v.document.createTextNode(s.$text$);else{if(!v.document)throw new Error("You are trying to render a Stencil component in an environment that doesn't support the DOM. Make sure to populate the [`window`](https://developer.mozilla.org/en-US/docs/Web/API/Window/window) object before rendering a component.");if(i=s.$elm$=v.document.createElement(s.$tag$),gt(null,s,vt),s.$children$)for(o=0;o<s.$children$.length;++o)a=O(t,s,o),a&&i.appendChild(a)}return i["s-hn"]=G,i},yt=(t,e,n,s,o,i)=>{let a=t,r;for(a.shadowRoot&&a.tagName===G&&(a=a.shadowRoot);o<=i;++o)s[o]&&(r=O(null,n,o),r&&(s[o].$elm$=r,z(a,r,e)))},mt=(t,e,n)=>{for(let s=e;s<=n;++s){const o=t[s];if(o){const i=o.$elm$;wt(o),i&&i.remove()}}},oe=(t,e,n,s,o=!1)=>{let i=0,a=0,r=0,l=0,c=e.length-1,d=e[0],u=e[c],f=s.length-1,h=s[0],g=s[f],$,p;for(;i<=c&&a<=f;)if(d==null)d=e[++i];else if(u==null)u=e[--c];else if(h==null)h=s[++a];else if(g==null)g=s[--f];else if(P(d,h,o))E(d,h,o),d=e[++i],h=s[++a];else if(P(u,g,o))E(u,g,o),u=e[--c],g=s[--f];else if(P(d,g,o))E(d,g,o),z(t,d.$elm$,u.$elm$.nextSibling),d=e[++i],g=s[--f];else if(P(u,h,o))E(u,h,o),z(t,u.$elm$,d.$elm$),u=e[--c],h=s[++a];else{for(r=-1,l=i;l<=c;++l)if(e[l]&&e[l].$key$!==null&&e[l].$key$===h.$key$){r=l;break}r>=0?(p=e[r],p.$tag$!==h.$tag$?$=O(e&&e[a],n,r):(E(p,h,o),e[r]=void 0,$=p.$elm$),h=s[++a]):($=O(e&&e[a],n,a),h=s[++a]),$&&z(d.$elm$.parentNode,$,d.$elm$)}i>c?yt(t,s[f+1]==null?null:s[f+1].$elm$,n,s,a,f):a>f&&mt(e,i,c)},P=(t,e,n=!1)=>t.$tag$===e.$tag$?n?(n&&!t.$key$&&e.$key$&&(t.$key$=e.$key$),!0):t.$key$===e.$key$:!1,E=(t,e,n=!1)=>{const s=e.$elm$=t.$elm$,o=t.$children$,i=e.$children$,a=e.$text$;a===null?(gt(t,e,vt),o!==null&&i!==null?oe(s,o,e,i,n):i!==null?(t.$text$!==null&&(s.textContent=""),yt(s,null,e,i,0,i.length-1)):!n&&T.updatable&&o!==null&&mt(o,0,o.length-1)):t.$text$!==a&&(s.data=a)},wt=t=>{t.$attrs$&&t.$attrs$.ref&&t.$attrs$.ref(null),t.$children$&&t.$children$.map(wt)},z=(t,e,n)=>t?.insertBefore(e,n),ie=(t,e,n=!1)=>{const s=t.$hostElement$,o=t.$cmpMeta$,i=t.$vnode$||Z(null,null),r=te(e)?e:q(null,null,e);if(G=s.tagName,o.$attrsToReflect$&&(r.$attrs$=r.$attrs$||{},o.$attrsToReflect$.map(([l,c])=>r.$attrs$[c]=s[l])),n&&r.$attrs$)for(const l of Object.keys(r.$attrs$))s.hasAttribute(l)&&!["key","ref","style","class"].includes(l)&&(r.$attrs$[l]=s[l]);r.$tag$=null,r.$flags$|=4,t.$vnode$=r,r.$elm$=i.$elm$=s.shadowRoot||s,E(i,r,n)},St=(t,e)=>{if(e&&!t.$onRenderResolve$&&e["s-p"]){const n=e["s-p"].push(new Promise(s=>t.$onRenderResolve$=()=>{e["s-p"].splice(n-1,1),s()}))}},Y=(t,e)=>{if(t.$flags$|=16,t.$flags$&4){t.$flags$|=512;return}return St(t,t.$ancestorComponent$),Dt(()=>re(t,e))},re=(t,e)=>{const n=t.$hostElement$,s=x("scheduleUpdate",t.$cmpMeta$.$tagName$),o=n;if(!o)throw new Error(`Can't render component <${n.tagName.toLowerCase()} /> with invalid Stencil runtime! Make sure this imported component is compiled with a \`externalRuntime: true\` flag. For more information, please refer to https://stenciljs.com/docs/custom-elements#externalruntime`);let i;return e?i=A(o,"componentWillLoad",void 0,n):i=A(o,"componentWillUpdate",void 0,n),i=xt(i,()=>A(o,"componentWillRender",void 0,n)),s(),xt(i,()=>ce(t,o,e))},xt=(t,e)=>ae(t)?t.then(e).catch(n=>{console.error(n),e()}):e(),ae=t=>t instanceof Promise||t&&t.then&&typeof t.then=="function",ce=async(t,e,n)=>{var s;const o=t.$hostElement$,i=x("update",t.$cmpMeta$.$tagName$),a=o["s-rc"];n&&Vt(t);const r=x("render",t.$cmpMeta$.$tagName$);le(t,e,o,n),a&&(a.map(l=>l()),o["s-rc"]=void 0),r(),i();{const l=(s=o["s-p"])!=null?s:[],c=()=>de(t);l.length===0?c():(Promise.all(l).then(c),t.$flags$|=4,l.length=0)}},le=(t,e,n,s)=>{try{e=e.render(),t.$flags$&=-17,t.$flags$|=2,ie(t,e,s)}catch(o){C(o,t.$hostElement$)}return null},de=t=>{const e=t.$cmpMeta$.$tagName$,n=t.$hostElement$,s=x("postUpdate",e),o=n,i=t.$ancestorComponent$;A(o,"componentDidRender",void 0,n),t.$flags$&64?(A(o,"componentDidUpdate",void 0,n),s()):(t.$flags$|=64,fe(n),A(o,"componentDidLoad",void 0,n),s(),t.$onReadyResolve$(n),i||ue()),t.$onRenderResolve$&&(t.$onRenderResolve$(),t.$onRenderResolve$=void 0),t.$flags$&512&&D(()=>Y(t,!1)),t.$flags$&=-517},ue=t=>{D(()=>ee(v,"appload",{detail:{namespace:Ot}}))},A=(t,e,n,s)=>{if(t&&t[e])try{return t[e](n)}catch(o){C(o,s)}},fe=t=>{var e;return t.classList.add((e=T.hydratedSelectorName)!=null?e:"hydrated")},he=(t,e)=>S(t).$instanceValues$.get(e),bt=(t,e,n,s)=>{const o=S(t),i=t,a=o.$instanceValues$.get(e),r=o.$flags$,l=i;n=ut(n,s.$members$[e][0]);const c=Number.isNaN(a)&&Number.isNaN(n);if(n!==a&&!c){o.$instanceValues$.set(e,n);{if(s.$watchers$&&r&128){const u=s.$watchers$[e];u&&u.map(f=>{try{l[f](n,a,e)}catch(h){C(h,i)}})}if((r&18)===2){if(l.componentShouldUpdate&&l.componentShouldUpdate(n,a,e)===!1)return;Y(o,!1)}}}},pe=(t,e,n)=>{var s,o;const i=t.prototype;if(e.$members$||e.$watchers$||t.watchers){t.watchers&&!e.$watchers$&&(e.$watchers$=t.watchers);const a=Object.entries((s=e.$members$)!=null?s:{});a.map(([r,[l]])=>{if(l&31||l&32){const{get:c,set:d}=Object.getOwnPropertyDescriptor(i,r)||{};c&&(e.$members$[r][0]|=2048),d&&(e.$members$[r][0]|=4096),Object.defineProperty(i,r,{get(){return c?c.apply(this):he(this,r)},configurable:!0,enumerable:!0}),Object.defineProperty(i,r,{set(u){const f=S(this);if(d){const h=l&32?this[r]:f.$hostElement$[r];typeof h>"u"&&f.$instanceValues$.get(r)?u=f.$instanceValues$.get(r):!f.$instanceValues$.get(r)&&h&&f.$instanceValues$.set(r,h),d.apply(this,[ut(u,l)]),u=l&32?this[r]:f.$hostElement$[r],bt(this,r,u,e);return}{bt(this,r,u,e);return}}})}});{const r=new Map;i.attributeChangedCallback=function(l,c,d){m.jmp(()=>{var u;const f=r.get(l);if(!(this.hasOwnProperty(f)&&T.lazyLoad)){if(i.hasOwnProperty(f)&&typeof this[f]=="number"&&this[f]==d)return;if(f==null){const g=S(this),$=g?.$flags$;if($&&!($&8)&&$&128&&d!==c){const y=this,b=(u=e.$watchers$)==null?void 0:u[l];b?.forEach(Mt=>{y[Mt]!=null&&y[Mt].call(y,d,c,l)})}return}}const h=Object.getOwnPropertyDescriptor(i,f);d=d===null&&typeof this[f]=="boolean"?!1:d,d!==this[f]&&(!h.get||h.set)&&(this[f]=d)})},t.observedAttributes=Array.from(new Set([...Object.keys((o=e.$watchers$)!=null?o:{}),...a.filter(([l,c])=>c[0]&15).map(([l,c])=>{var d;const u=c[1]||l;return r.set(u,l),c[0]&512&&((d=e.$attrsToReflect$)==null||d.push([l,u])),u})]))}}return t},kt=async(t,e,n,s)=>{let o;if((e.$flags$&32)===0){e.$flags$|=32;{o=t.constructor;const r=t.localName;customElements.whenDefined(r).then(()=>e.$flags$|=128)}if(o&&o.style){let r;typeof o.style=="string"&&(r=o.style);const l=lt(n);if(!M.has(l)){const c=x("registerStyles",n.$tagName$);Jt(l,r,!!(n.$flags$&1)),c()}}}const i=e.$ancestorComponent$,a=()=>Y(e,!0);i&&i["s-rc"]?i["s-rc"].push(a):a()},ge=(t,e)=>{},$e=t=>{{const e=S(t),n=e.$cmpMeta$,s=x("connectedCallback",n.$tagName$);if(e.$flags$&1)e?.$lazyInstance$||e?.$onReadyPromise$&&e.$onReadyPromise$.then(()=>ge());else{e.$flags$|=1;{let o=t;for(;o=o.parentNode||o.host;)if(o["s-p"]){St(e,e.$ancestorComponent$=o);break}}n.$members$&&Object.entries(n.$members$).map(([o,[i]])=>{if(i&31&&t.hasOwnProperty(o)){const a=t[o];delete t[o],t[o]=a}}),T.initializeNextTick?D(()=>kt(t,e,n)):kt(t,e,n)}s()}},ve=async t=>{S(t),k.has(t)&&k.delete(t),t.shadowRoot&&k.has(t.shadowRoot)&&k.delete(t.shadowRoot)},ye=(t,e)=>{const n={$flags$:e[0],$tagName$:e[1]};n.$members$=e[2],n.$watchers$=t.$watchers$,n.$attrsToReflect$=[];const s=t.prototype.connectedCallback,o=t.prototype.disconnectedCallback;return Object.assign(t.prototype,{__hasHostListenerAttached:!1,__registerHost(){Ht(this,n)},connectedCallback(){this.__hasHostListenerAttached||(S(this),this.__hasHostListenerAttached=!0),$e(this),s&&s.call(this)},disconnectedCallback(){ve(this),o&&o.call(this)},__attachShadow(){if(!this.shadowRoot)Qt.call(this,n);else if(this.shadowRoot.mode!=="open")throw new Error(`Unable to re-use existing shadow root for ${n.$tagName$}! Mode is set to ${this.shadowRoot.mode} but Stencil only supports open shadow roots.`)}}),t.is=n.$tagName$,pe(t,n)};let K;const me=()=>{if(typeof window>"u")return new Map;if(!K){const t=window;t.Ionicons=t.Ionicons||{},K=t.Ionicons.map=t.Ionicons.map||new Map}return K},we=t=>{let e=Q(t.src);return e||(e=Et(t.name,t.icon,t.mode,t.ios,t.md),e?Se(e,t):t.icon&&(e=Q(t.icon),e||(e=Q(t.icon[t.mode]),e))?e:null)},Se=(t,e)=>{const n=me().get(t);if(n)return n;try{return Wt(`svg/${t}.svg`)}catch(s){console.log("e",s),console.warn(`[Ionicons Warning]: Could not load icon with name "${t}". Ensure that the icon is registered using addIcons or that the icon SVG data is passed directly to the icon component.`,e)}},Et=(t,e,n,s,o)=>(n=(n&&j(n))==="ios"?"ios":"md",s&&n==="ios"?t=j(s):o&&n==="md"?t=j(o):(!t&&e&&!At(e)&&(t=e),H(t)&&(t=j(t))),!H(t)||t.trim()===""||t.replace(/[a-z]|-|\d/gi,"")!==""?null:t),Q=t=>H(t)&&(t=t.trim(),At(t))?t:null,At=t=>t.length>0&&/(\/|\.)/.test(t),H=t=>typeof t=="string",j=t=>t.toLowerCase(),xe=(t,e=[])=>{const n={};return e.forEach(s=>{t.hasAttribute(s)&&(t.getAttribute(s)!==null&&(n[s]=t.getAttribute(s)),t.removeAttribute(s))}),n},be=t=>t&&t.dir!==""?t.dir.toLowerCase()==="rtl":document?.dir.toLowerCase()==="rtl",ke=t=>{const e=document.createElement("div");e.innerHTML=t;for(let s=e.childNodes.length-1;s>=0;s--)e.childNodes[s].nodeName.toLowerCase()!=="svg"&&e.removeChild(e.childNodes[s]);const n=e.firstElementChild;if(n&&n.nodeName.toLowerCase()==="svg"){const s=n.getAttribute("class")||"";if(n.setAttribute("class",(s+" s-ion-icon").trim()),_t(n))return e.innerHTML}return""},_t=t=>{if(t.nodeType===1){if(t.nodeName.toLowerCase()==="script")return!1;for(let e=0;e<t.attributes.length;e++){const n=t.attributes[e].name;if(H(n)&&n.toLowerCase().indexOf("on")===0)return!1}for(let e=0;e<t.childNodes.length;e++)if(!_t(t.childNodes[e]))return!1}return!0},Ee=t=>t.startsWith("data:image/svg+xml"),Ae=t=>t.indexOf(";utf8,")!==-1,_=new Map,Lt=new Map;let J;function N(t){return _.set(t,""),""}const _e=(t,e)=>{const n=Lt.get(t);return n||(typeof fetch<"u"&&typeof document<"u"?Ee(t)&&Ae(t)?Promise.resolve(Le(t)):Te(t,e):Promise.resolve(N(t)))};function Le(t){J||(J=new DOMParser);const n=J.parseFromString(t,"text/html").querySelector("svg");if(n)return _.set(t,n.outerHTML),n.outerHTML;throw new Error(`Could not parse svg from ${t}`)}function Te(t,e){const n=fetch(t).then(s=>s.text().then(o=>{o&&e!==!1&&(o=ke(o));const i=o||"";return _.set(t,i),i}).catch(()=>N(t))).catch(()=>N(t));return Lt.set(t,n),n}const Ce=":host{display:inline-block;width:1em;height:1em;contain:strict;fill:currentColor;box-sizing:content-box !important}:host .ionicon{stroke:currentColor}.ionicon-fill-none{fill:none}.ionicon-stroke-width{stroke-width:var(--ionicon-stroke-width, 32px)}.icon-inner,.ionicon,svg{display:block;height:100%;width:100%}@supports (background: -webkit-named-image(i)){:host(.icon-rtl) .icon-inner{transform:scaleX(-1)}}@supports not selector(:dir(rtl)) and selector(:host-context([dir='rtl'])){:host(.icon-rtl) .icon-inner{transform:scaleX(-1)}}:host(.flip-rtl):host-context([dir='rtl']) .icon-inner{transform:scaleX(-1)}@supports selector(:dir(rtl)){:host(.flip-rtl:dir(rtl)) .icon-inner{transform:scaleX(-1)}:host(.flip-rtl:dir(ltr)) .icon-inner{transform:scaleX(1)}}:host(.icon-small){font-size:1.125rem !important}:host(.icon-large){font-size:2rem !important}:host(.ion-color){color:var(--ion-color-base) !important}:host(.ion-color-primary){--ion-color-base:var(--ion-color-primary, #3880ff)}:host(.ion-color-secondary){--ion-color-base:var(--ion-color-secondary, #0cd1e8)}:host(.ion-color-tertiary){--ion-color-base:var(--ion-color-tertiary, #f4a942)}:host(.ion-color-success){--ion-color-base:var(--ion-color-success, #10dc60)}:host(.ion-color-warning){--ion-color-base:var(--ion-color-warning, #ffce00)}:host(.ion-color-danger){--ion-color-base:var(--ion-color-danger, #f14141)}:host(.ion-color-light){--ion-color-base:var(--ion-color-light, #f4f5f8)}:host(.ion-color-medium){--ion-color-base:var(--ion-color-medium, #989aa2)}:host(.ion-color-dark){--ion-color-base:var(--ion-color-dark, #222428)}",Me=ye(class extends Ut{constructor(){super(),this.__registerHost(),this.__attachShadow(),this.iconName=null,this.inheritedAttributes={},this.didLoadIcon=!1,this.isVisible=!1,this.mode=Ie(),this.lazy=!1,this.sanitize=!0}componentWillLoad(){this.inheritedAttributes=xe(this.el,["aria-label"])}connectedCallback(){this.waitUntilVisible(this.el,"50px",()=>{this.isVisible=!0,this.loadIcon()})}componentDidLoad(){this.didLoadIcon||this.loadIcon()}disconnectedCallback(){this.io&&(this.io.disconnect(),this.io=void 0)}waitUntilVisible(e,n,s){if(!!!(this.lazy&&typeof window<"u"&&window.IntersectionObserver))return s();const i=this.io=new window.IntersectionObserver(a=>{a[0].isIntersecting&&(i.disconnect(),this.io=void 0,s())},{rootMargin:n});i.observe(e)}loadIcon(){if(this.isVisible){const e=we(this);e&&(_.has(e)?this.svgContent=_.get(e):_e(e,this.sanitize).then(()=>this.svgContent=_.get(e)),this.didLoadIcon=!0)}this.iconName=Et(this.name,this.icon,this.mode,this.ios,this.md)}render(){const{flipRtl:e,iconName:n,inheritedAttributes:s,el:o}=this,i=this.mode||"md",a=n?(n.includes("arrow")||n.includes("chevron"))&&e!==!1:!1,r=e||a;return q(dt,Object.assign({key:"0578c899781ca145dd8205acd9670af39b57cf2e",role:"img",class:Object.assign(Object.assign({[i]:!0},qe(this.color)),{[`icon-${this.size}`]:!!this.size,"flip-rtl":r,"icon-rtl":r&&be(o)})},s),this.svgContent?q("div",{class:"icon-inner",innerHTML:this.svgContent}):q("div",{class:"icon-inner"}))}static get assetsDirs(){return["svg"]}get el(){return this}static get watchers(){return{name:["loadIcon"],src:["loadIcon"],icon:["loadIcon"],ios:["loadIcon"],md:["loadIcon"]}}static get style(){return Ce}},[1,"ion-icon",{mode:[1025],color:[1],ios:[1],md:[1],flipRtl:[4,"flip-rtl"],name:[513],src:[1],icon:[8],size:[1],lazy:[4],sanitize:[4],svgContent:[32],isVisible:[32]},void 0,{name:["loadIcon"],src:["loadIcon"],icon:["loadIcon"],ios:["loadIcon"],md:["loadIcon"]}]),Ie=()=>typeof document<"u"&&document.documentElement.getAttribute("mode")||"md",qe=t=>t?{"ion-color":!0,[`ion-color-${t}`]:!0}:null;function Oe(){if(typeof customElements>"u")return;["ion-icon"].forEach(e=>{e==="ion-icon"&&(customElements.get(e)||customElements.define(e,Me))})}const Pe=Oe,ze="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='m112 184 144 144 144-144' stroke-linecap='round' stroke-linejoin='round' stroke-width='48px' class='ionicon-fill-none'/></svg>",He="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='m289.94 256 95-95A24 24 0 0 0 351 127l-95 95-95-95a24 24 0 0 0-34 34l95 95-95 95a24 24 0 1 0 34 34l95-95 95 95a24 24 0 0 0 34-34Z'/></svg>",je="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M256 32C132.3 32 32 134.9 32 261.7c0 101.5 64.2 187.5 153.2 217.9a17.6 17.6 0 0 0 3.8.4c8.3 0 11.5-6.1 11.5-11.4 0-5.5-.2-19.9-.3-39.1a102.4 102.4 0 0 1-22.6 2.7c-43.1 0-52.9-33.5-52.9-33.5-10.2-26.5-24.9-33.6-24.9-33.6-19.5-13.7-.1-14.1 1.4-14.1h.1c22.5 2 34.3 23.8 34.3 23.8 11.2 19.6 26.2 25.1 39.6 25.1a63 63 0 0 0 25.6-6c2-14.8 7.8-24.9 14.2-30.7-49.7-5.8-102-25.5-102-113.5 0-25.1 8.7-45.6 23-61.6-2.3-5.8-10-29.2 2.2-60.8a18.6 18.6 0 0 1 5-.5c8.1 0 26.4 3.1 56.6 24.1a208.2 208.2 0 0 1 112.2 0c30.2-21 48.5-24.1 56.6-24.1a18.6 18.6 0 0 1 5 .5c12.2 31.6 4.5 55 2.2 60.8 14.3 16.1 23 36.6 23 61.6 0 88.2-52.4 107.6-102.3 113.3 8 7.1 15.2 21.1 15.2 42.5 0 30.7-.3 55.5-.3 63 0 5.4 3.1 11.5 11.4 11.5a19.4 19.4 0 0 0 4-.4C415.9 449.2 480 363.1 480 261.7 480 134.9 379.7 32 256 32'/></svg>",Ue="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M444.17 32H70.28C49.85 32 32 46.7 32 66.89v374.72C32 461.91 49.85 480 70.28 480h373.78c20.54 0 35.94-18.21 35.94-38.39V66.89C480.12 46.7 464.6 32 444.17 32m-273.3 373.43h-64.18V205.88h64.18ZM141 175.54h-.46c-20.54 0-33.84-15.29-33.84-34.43 0-19.49 13.65-34.42 34.65-34.42s33.85 14.82 34.31 34.42c-.01 19.14-13.31 34.43-34.66 34.43m264.43 229.89h-64.18V296.32c0-26.14-9.34-44-32.56-44-17.74 0-28.24 12-32.91 23.69-1.75 4.2-2.22 9.92-2.22 15.76v113.66h-64.18V205.88h64.18v27.77c9.34-13.3 23.93-32.44 57.88-32.44 42.13 0 74 27.77 74 87.64Z'/></svg>",Re="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M496 109.5a201.8 201.8 0 0 1-56.55 15.3 97.5 97.5 0 0 0 43.33-53.6 197.7 197.7 0 0 1-62.56 23.5A99.14 99.14 0 0 0 348.31 64c-54.42 0-98.46 43.4-98.46 96.9a93.2 93.2 0 0 0 2.54 22.1 280.7 280.7 0 0 1-203-101.3A95.7 95.7 0 0 0 36 130.4c0 33.6 17.53 63.3 44 80.7A97.5 97.5 0 0 1 35.22 199v1.2c0 47 34 86.1 79 95a100.8 100.8 0 0 1-25.94 3.4 94.4 94.4 0 0 1-18.51-1.8c12.51 38.5 48.92 66.5 92.05 67.3A199.6 199.6 0 0 1 39.5 405.6a203 203 0 0 1-23.5-1.4A278.7 278.7 0 0 0 166.74 448c181.36 0 280.44-147.7 280.44-275.8 0-4.2-.11-8.4-.31-12.5A198.5 198.5 0 0 0 496 109.5'/></svg>",Be="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M508.64 148.79c0-45-33.1-81.2-74-81.2C379.24 65 322.74 64 265 64h-18c-57.6 0-114.2 1-169.6 3.6C36.6 67.6 3.5 104 3.5 149 1 184.59-.06 220.19 0 255.79q-.15 53.4 3.4 106.9c0 45 33.1 81.5 73.9 81.5 58.2 2.7 117.9 3.9 178.6 3.8q91.2.3 178.6-3.8c40.9 0 74-36.5 74-81.5 2.4-35.7 3.5-71.3 3.4-107q.34-53.4-3.26-106.9M207 353.89v-196.5l145 98.2Z'/></svg>",De="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M80 160h352M80 256h352M80 352h352' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>",We="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M221.09 64a157.09 157.09 0 1 0 157.09 157.09A157.1 157.1 0 0 0 221.09 64Z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M338.29 338.29 448 448' stroke-linecap='round' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Xe="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' class='ionicon'><path d='M256 64C150 64 64 150 64 256s86 192 192 192 192-86 192-192S362 64 256 64Z' stroke-miterlimit='10' class='ionicon-fill-none ionicon-stroke-width'/><path d='M256 128v144h96' stroke-linecap='round' stroke-linejoin='round' class='ionicon-fill-none ionicon-stroke-width'/></svg>",Ze="menu-outline",Fe="close",Ge=()=>{const t=document.querySelector(".site-header__toggle");if(!t)return;const e=document.querySelector(t.dataset.target);if(!e)return;const n=t.querySelector(".sr-only"),s=t.dataset.openLabel||"Open navigation menu",o=t.dataset.closeLabel||"Close navigation menu",i=r=>{t.setAttribute("aria-expanded",r?"true":"false"),t.setAttribute("aria-label",r?o:s),n&&(n.textContent=r?o:s);const l=t.querySelector("ion-icon");l&&(l.name=r?Fe:Ze),e.hidden=!r,e.classList.toggle("is-hidden",!r)},a=()=>{e.hidden||i(!1)};i(!1),t.addEventListener("click",()=>{const l=!(t.getAttribute("aria-expanded")==="true");if(i(l),l){const c=e.querySelector('a, button, input, [tabindex]:not([tabindex="-1"])');c&&c.focus();return}t.focus()}),document.addEventListener("click",r=>{const l=e.contains(r.target),c=t.contains(r.target);!l&&!c&&a()}),document.addEventListener("keydown",r=>{if(r.key==="Escape"){const l=!e.hidden;a(),l&&t.focus()}})},Ye={category:"data-category",categoryId:"data-category-id",emitMetadata:"data-emit-metadata",inputPosition:"data-input-position",lang:"data-lang",loading:"data-loading",mapping:"data-mapping",reactionsEnabled:"data-reactions-enabled",repo:"data-repo",repoId:"data-repo-id",strict:"data-strict",term:"data-term",theme:"data-theme"},Ke=t=>{if(!t||t.dataset.giscusLoaded==="true")return;const e=document.createElement("script");e.src=t.dataset.giscusScriptSrc||"https://giscus.app/client.js",e.async=!0,e.crossOrigin="anonymous";for(const[n,s]of Object.entries(Ye)){const o=t.dataset[`giscus${n.charAt(0).toUpperCase()}${n.slice(1)}`];o&&e.setAttribute(s,o)}t.append(e),t.dataset.giscusLoaded="true"},Qe=()=>{const t=document.querySelectorAll("[data-comments-collapsible]");t.length&&t.forEach(e=>{const n=e.querySelector("[data-comments-toggle]"),s=e.querySelector("[data-comments-panel]"),o=e.querySelector("[data-giscus-mount]");!n||!s||!o||n.addEventListener("click",()=>{const a=!(n.getAttribute("aria-expanded")==="true");n.setAttribute("aria-expanded",a?"true":"false"),e.classList.toggle("is-open",a),s.hidden=!a,a&&Ke(o)})})},Je=()=>{const t=document.querySelector("#main-header");if(!t)return;const e=()=>{if(window.scrollY>8){t.classList.add("is-scrolled");return}t.classList.remove("is-scrolled")};e(),window.addEventListener("scroll",e,{passive:!0})},Ne=()=>{const t=document.querySelectorAll("[data-series-collapsible]");t.length&&t.forEach(e=>{const n=e.querySelector("[data-series-toggle]"),s=e.querySelector("[data-series-panel]");if(!n||!s)return;const o=()=>{const a=n.getAttribute("aria-expanded")==="true";e.classList.toggle("is-open",a),s.hidden=!a};o(),n.addEventListener("click",()=>{const a=n.getAttribute("aria-expanded")==="true";n.setAttribute("aria-expanded",a?"false":"true"),o()});const i=e.querySelectorAll("[data-series-overflow-toggle]");i.length&&i.forEach(a=>{a.addEventListener("click",()=>{const r=a.dataset.seriesOverflowGroup,l=r?`[data-series-overflow-item][data-series-overflow-group="${r}"]`:"[data-series-overflow-item]";e.querySelectorAll(l).forEach(d=>{d.hidden=!1}),a.setAttribute("aria-expanded","true"),a.hidden=!0})})})},Ve=()=>{const t=document.querySelector("[data-reading-progress]"),e=document.querySelector(".content");if(!t||!e)return;const n=()=>{const s=e.offsetTop,o=e.offsetHeight,i=window.innerHeight,a=window.scrollY,r=Math.max(o-i,1),c=Math.min(Math.max(a-s,0),r)/r*100;t.style.transform=`scaleX(${c/100})`};n(),window.addEventListener("scroll",n,{passive:!0}),window.addEventListener("resize",n)},tn="[data-search-root]";let U;const w=t=>(t||"").toString().normalize("NFKD").replace(/[\u0300-\u036f]/g,"").toLowerCase().replace(/[^a-z0-9\s-]/g," ").replace(/\s+/g," ").trim(),en=t=>w(t).split(" ").filter(e=>e.length>0),nn=t=>[...new Set(en(t))],sn=(t,e)=>{const n=t.date?Date.parse(t.date):0,s=e.date?Date.parse(e.date):0;return Number.isNaN(n)||Number.isNaN(s)?0:s-n},on=t=>{const e=t.title||"",n=t.content||"",s=Array.isArray(t.tags)?t.tags:[],o=Array.isArray(t.categories)?t.categories:[];return{...t,title:e,content:n,tags:s,categories:o,normalizedTitle:w(e),normalizedContent:w(n),normalizedTags:s.map(w).filter(Boolean),normalizedCategories:o.map(w).filter(Boolean)}},rn=async t=>(U||(U=fetch(t,{headers:{Accept:"application/json"}}).then(e=>{if(!e.ok)throw new Error(`Search index request failed with ${e.status}`);return e.json()}).then(e=>e.map(on)).catch(e=>{throw U=void 0,e})),U),an=(t,e,n)=>{let s=0;t.normalizedTitle.includes(e)&&(s+=140),t.normalizedContent.includes(e)&&(s+=30),n.forEach(i=>{t.normalizedTitle.includes(i)&&(s+=60),t.normalizedTags.some(a=>a.includes(i))&&(s+=30),t.normalizedCategories.some(a=>a.includes(i))&&(s+=18),t.normalizedContent.includes(i)&&(s+=10)});const o=n.filter(i=>t.normalizedTitle.includes(i)||t.normalizedTags.some(a=>a.includes(i))||t.normalizedCategories.some(a=>a.includes(i))||t.normalizedContent.includes(i)).length;return o===0?0:(o===n.length&&(s+=24),t.type==="post"&&(s+=4),s)},cn=(t,e,n)=>{const s=w(e),o=nn(e);return!s||o.length===0?[]:t.map(i=>({searchDocument:i,score:an(i,s,o)})).filter(i=>i.score>0).sort((i,a)=>a.score-i.score||sn(i.searchDocument,a.searchDocument)).slice(0,n).map(i=>i.searchDocument)},ln=(t,e,n)=>{const s=t.replace(/\s+/g," ").trim();if(!s)return"";const o=w(e),a=w(s).indexOf(o);if(a===-1)return s.length>n?`${s.slice(0,n).trimEnd()}...`:s;const r=Math.max(a-Math.floor(n/3),0),l=Math.min(r+n,s.length),c=r>0?"...":"",d=l<s.length?"...":"";return`${c}${s.slice(r,l).trim()}${d}`},dn=t=>{const e=[];return t.type&&e.push(t.type==="post"?"Post":"Page"),t.tags.length>0&&e.push(t.tags.slice(0,2).join(", ")),e.join(" • ")},Tt=(t,e,n,s)=>{const o=t.querySelector("[data-search-results]"),i=t.querySelector("[data-search-status]");o.innerHTML="",i.textContent=s,e.forEach(a=>{const r=window.document.createElement("li");r.className="site-search__result-item";const l=window.document.createElement("a");l.className="site-search__result-link",l.href=a.url;const c=window.document.createElement("span");c.className="site-search__result-title",c.textContent=a.title,l.append(c);const d=dn(a);if(d){const h=window.document.createElement("span");h.className="site-search__result-meta",h.textContent=d,l.append(h)}const u=Number(t.dataset.searchContentPreviewLength||"140"),f=ln(a.content,n,u);if(f){const h=window.document.createElement("span");h.className="site-search__result-snippet",h.textContent=f,l.append(h)}r.append(l),o.append(r)})},Ct=t=>{const e=t.querySelector("[data-search-panel]"),n=t.querySelector("[data-search-input]");e.hidden=!1,n.setAttribute("aria-expanded","true"),e.setAttribute("aria-hidden","false")},L=t=>{const e=t.querySelector("[data-search-panel]"),n=t.querySelector("[data-search-input]");e.hidden=!0,n.setAttribute("aria-expanded","false"),e.setAttribute("aria-hidden","true")},V=(t,e)=>{const n=[...t.querySelectorAll(".site-search__result-link")];if(n.length===0)return;const s=n.findIndex(i=>i===window.document.activeElement),o=s===-1?e>0?0:n.length-1:(s+e+n.length)%n.length;n[o].focus()},un=t=>{const e=t.querySelector("[data-search-input]"),n=t.querySelector("[data-search-clear]"),s=t.querySelector(".site-search__form"),o=t.dataset.searchUrl,i=Number(t.dataset.searchMaxResults||"8"),a=Number(t.dataset.searchMinQueryLength||"2"),r=t.dataset.searchIdleText||"Start typing to search the site.",l=t.dataset.searchTooShortText||"Type at least %d characters to search.",c=t.dataset.searchLoadingText||"Loading search index...",d=t.dataset.searchEmptyText||"No results found.",u=t.dataset.searchErrorText||"Search is unavailable right now.",f=p=>{const y=t.querySelector("[data-search-status]");y.textContent=p},h=()=>{t.querySelector("[data-search-results]").innerHTML=""},g=()=>{n.hidden=e.value.length===0},$=async()=>{const p=e.value.trim();if(g(),p.length===0){h(),f(r),L(t);return}if(Ct(t),p.length<a){h(),f(l.replace("%d",`${a}`));return}f(c);try{const y=await rn(o),b=cn(y,p,i);if(b.length===0){Tt(t,[],p,d);return}Tt(t,b,p,`${b.length} result${b.length===1?"":"s"} for "${p}"`)}catch{h(),f(u)}};e.addEventListener("focus",()=>{e.value.trim().length>0&&$()}),e.addEventListener("input",()=>{$()}),e.addEventListener("keydown",p=>{p.key==="ArrowDown"&&(p.preventDefault(),t.querySelector(".site-search__result-link")&&Ct(t),V(t,1)),p.key==="Escape"&&L(t)}),t.addEventListener("keydown",p=>{if(p.key==="Escape"&&(L(t),e.focus()),p.key==="ArrowDown"&&p.target.matches(".site-search__result-link")&&(p.preventDefault(),V(t,1)),p.key==="ArrowUp"&&p.target.matches(".site-search__result-link")){if(p.preventDefault(),p.target===t.querySelector(".site-search__result-link")){e.focus();return}V(t,-1)}}),n.addEventListener("click",()=>{e.value="",g(),h(),f(r),L(t),e.focus()}),s.addEventListener("submit",p=>{p.preventDefault();const y=t.querySelector(".site-search__result-link");if(y){window.location.assign(y.href);return}$()}),window.document.addEventListener("click",p=>{t.contains(p.target)||L(t)}),L(t)},fn=()=>{const t=window.document.querySelectorAll(tn);t.length!==0&&t.forEach(un)};qt({"chevron-down-outline":ze,close:He,"logo-github":je,"logo-linkedin":Ue,"logo-twitter":Re,"logo-youtube":Be,"menu-outline":De,"search-outline":We,"time-outline":Xe}),Pe(),Ge(),Qe(),Je(),Ne(),Ve(),fn()})();
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: imdhemy-jekyll-theme
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mohamad Eldhemy
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-03-
|
|
11
|
+
date: 2026-03-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: jekyll
|
|
@@ -95,9 +95,11 @@ files:
|
|
|
95
95
|
- _includes/post-tags.html
|
|
96
96
|
- _includes/reading-progress.html
|
|
97
97
|
- _includes/related-posts.html
|
|
98
|
+
- _includes/seo-meta.html
|
|
98
99
|
- _includes/site-search.html
|
|
99
100
|
- _includes/social-media-meta.html
|
|
100
101
|
- _includes/social.html
|
|
102
|
+
- _includes/structured-data.html
|
|
101
103
|
- _includes/testimonials.html
|
|
102
104
|
- _layouts/archive.html
|
|
103
105
|
- _layouts/blog.html
|