imdhemy-jekyll-theme 1.0.0 → 1.1.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 +15 -122
- data/_includes/giscus-comments.html +44 -0
- data/_includes/post-header.html +3 -3
- data/_includes/post-item.html +3 -3
- data/_includes/post-meta.html +9 -0
- data/_layouts/post.html +2 -0
- data/_sass/components/_core.scss +143 -16
- data/assets/js/dist/main.js +1 -1
- metadata +3 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 70e37e5813d32c399c961ac038eaccf43d750e12c301bea3e87894057a5f5204
|
|
4
|
+
data.tar.gz: afa1ea70ebc0a3a774dd50e7899bae7b672cb9f28594ba88f0343e7fc1511f91
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: cc9619152956c9c89755ed900ddca83eaded5821648027fe60f7f69d519fab9380d7579491833677743806f9ee195934ebebba122c8ceccf49a362c49ee75324
|
|
7
|
+
data.tar.gz: 2258695d5eeb2ac5a204b1dd12e8bf37420fa1573c843cbf94125efb6b84630009d7dde43a238b436e1dd4af1836b4d9c37a954c04833c5480b74091aebcc3cd
|
data/README.md
CHANGED
|
@@ -1,134 +1,27 @@
|
|
|
1
1
|
# Imdhemy Jekyll Theme
|
|
2
2
|
|
|
3
|
-
Jekyll theme for my personal website
|
|
3
|
+
Jekyll theme for my personal website: [imdhemy.com](https://imdhemy.com).
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Documentation
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
All documentation lives in the [`docs/`](./docs) directory.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
- [Documentation Home](./docs/README.md)
|
|
10
|
+
- [Getting Started](./docs/getting-started.md)
|
|
11
|
+
- [Configuration Reference](./docs/configuration.md)
|
|
12
|
+
- [Customization Guide](./docs/customization.md)
|
|
13
|
+
- [Components and Layouts](./docs/components.md)
|
|
14
|
+
- [Content Elements](./docs/content-elements.md)
|
|
15
|
+
- [Upgrade Guide](./UPGRADE.md)
|
|
10
16
|
|
|
11
|
-
|
|
12
|
-
gem "imdhemy-jekyll-theme", "1.0.0"
|
|
13
|
-
```
|
|
17
|
+
## Example Site
|
|
14
18
|
|
|
15
|
-
|
|
19
|
+
A complete runnable example is available in [`example/`](./example).
|
|
16
20
|
|
|
17
|
-
|
|
18
|
-
theme: imdhemy-jekyll-theme
|
|
19
|
-
```
|
|
21
|
+
## Development
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
bundle install
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## Migrating From `remote_theme`
|
|
28
|
-
|
|
29
|
-
If your site currently uses:
|
|
30
|
-
|
|
31
|
-
```yaml
|
|
32
|
-
remote_theme: imdhemy/imdhemy-jekyll-theme
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Migrate to the gem flow:
|
|
36
|
-
|
|
37
|
-
1. Remove `remote_theme` from `_config.yml`.
|
|
38
|
-
2. Add `theme: imdhemy-jekyll-theme` to `_config.yml`.
|
|
39
|
-
3. Add `gem "imdhemy-jekyll-theme", "<semantic-version>"` to your `Gemfile`.
|
|
40
|
-
4. Run `bundle install`.
|
|
41
|
-
|
|
42
|
-
## Usage
|
|
43
|
-
|
|
44
|
-
You can find examples in the [example](/example) directory.
|
|
45
|
-
|
|
46
|
-
## Customize Theme Copy
|
|
47
|
-
|
|
48
|
-
The theme exposes UI text keys so users can control the added content from `_config.yml`.
|
|
49
|
-
|
|
50
|
-
```yaml
|
|
51
|
-
theme_text:
|
|
52
|
-
hero_kicker: "Personal blog and engineering notes"
|
|
53
|
-
hero_cta_label: "Start reading"
|
|
54
|
-
hero_secondary_cta_label: "About me"
|
|
55
|
-
hero_secondary_cta_url: "/about"
|
|
56
|
-
latest_posts_subtitle: "Fresh writing you can read in a few minutes."
|
|
57
|
-
read_article_label: "Read article"
|
|
58
|
-
back_to_posts_label: "Back to all posts"
|
|
59
|
-
previous_article_label: "Previous article"
|
|
60
|
-
next_article_label: "Next article"
|
|
61
|
-
related_posts_heading: "Keep reading"
|
|
62
|
-
|
|
63
|
-
theme_features:
|
|
64
|
-
reading_progress: true
|
|
65
|
-
|
|
66
|
-
theme_style:
|
|
67
|
-
accent: "#3b82f6"
|
|
68
|
-
accent_strong: "#2563eb"
|
|
69
|
-
accent_soft: "#dbeafe"
|
|
70
|
-
accent_surface: "#eff6ff"
|
|
71
|
-
success: "#16a34a"
|
|
72
|
-
info: "#2563eb"
|
|
73
|
-
warning: "#d97706"
|
|
74
|
-
danger: "#dc2626"
|
|
75
|
-
background: "#eef4ff"
|
|
76
|
-
surface: "#ffffff"
|
|
77
|
-
text: "#0f172a"
|
|
78
|
-
muted: "#475569"
|
|
79
|
-
border: "#c9d8f2"
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
## Development Quick Start
|
|
83
|
-
|
|
84
|
-
Use this sequence every time you start working on the theme locally.
|
|
85
|
-
|
|
86
|
-
### 1. Prerequisites
|
|
87
|
-
|
|
88
|
-
- Ruby 3.3.4 + Bundler
|
|
89
|
-
- Node.js 24 + npm
|
|
90
|
-
|
|
91
|
-
The project pins runtime versions in:
|
|
92
|
-
|
|
93
|
-
- `.ruby-version`
|
|
94
|
-
- `.nvmrc`
|
|
95
|
-
- `.node-version`
|
|
96
|
-
- `.tool-versions`
|
|
97
|
-
|
|
98
|
-
### 2. Install dependencies
|
|
99
|
-
|
|
100
|
-
```bash
|
|
101
|
-
bundle install
|
|
102
|
-
npm install
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### 3. Start development
|
|
106
|
-
|
|
107
|
-
Run the theme preview and JS watcher together:
|
|
108
|
-
|
|
109
|
-
```bash
|
|
110
|
-
npm start
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
This runs:
|
|
114
|
-
|
|
115
|
-
- `bundle exec rake preview` to serve the example site from `http://127.0.0.1:4000/example/`
|
|
116
|
-
- `vite build --watch` to rebuild `assets/js/dist/main.js` on JS changes
|
|
117
|
-
|
|
118
|
-
### 4. Day-to-day workflow
|
|
119
|
-
|
|
120
|
-
- Edit layouts/includes/styles in the theme root.
|
|
121
|
-
- Edit sample content under `example/` to verify real pages.
|
|
122
|
-
- Keep `npm start` running while you work.
|
|
123
|
-
|
|
124
|
-
### 5. Useful standalone commands
|
|
125
|
-
|
|
126
|
-
```bash
|
|
127
|
-
npm run rake # Jekyll preview only
|
|
128
|
-
npm run js:build # JS production build
|
|
129
|
-
npm run js:watch # JS watcher only
|
|
130
|
-
```
|
|
23
|
+
Use the local workflow documented in [Getting Started](./docs/getting-started.md#5-local-development).
|
|
131
24
|
|
|
132
25
|
## License
|
|
133
26
|
|
|
134
|
-
The theme is available as open source under the terms of the [MIT License](
|
|
27
|
+
The theme is available as open source under the terms of the [MIT License](./LICENSE.txt).
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{% assign comments = site.theme_comments %}
|
|
2
|
+
{% assign comments_heading = site.theme_text.comments_heading | default: "Discussion" %}
|
|
3
|
+
{% assign comments_toggle_hint = site.theme_text.comments_toggle_hint | default: "Open to view reactions and comments" %}
|
|
4
|
+
{% if comments and comments.enabled and comments.provider == "giscus" %}
|
|
5
|
+
{% assign giscus = comments.giscus %}
|
|
6
|
+
{% assign giscus_host = giscus.host | default: "https://giscus.app" %}
|
|
7
|
+
{% if giscus and giscus.repo and giscus.repo_id and giscus.category and giscus.category_id %}
|
|
8
|
+
<section class="comments-shell" id="comments-section" aria-label="{{ comments_heading }}">
|
|
9
|
+
<div class="comments-shell__inner comments-collapsible" data-comments-collapsible>
|
|
10
|
+
<button class="comments-collapsible__toggle"
|
|
11
|
+
type="button"
|
|
12
|
+
aria-expanded="false"
|
|
13
|
+
aria-controls="comments-panel"
|
|
14
|
+
data-comments-toggle>
|
|
15
|
+
<span class="comments-collapsible__copy">
|
|
16
|
+
<span class="comments-shell__heading">{{ comments_heading }}</span>
|
|
17
|
+
<span class="comments-collapsible__hint">{{ comments_toggle_hint }}</span>
|
|
18
|
+
</span>
|
|
19
|
+
<span class="comments-collapsible__icon-wrap" aria-hidden="true">
|
|
20
|
+
<ion-icon class="comments-collapsible__icon" name="chevron-down-outline"></ion-icon>
|
|
21
|
+
</span>
|
|
22
|
+
</button>
|
|
23
|
+
<div class="comments-collapsible__panel" id="comments-panel" data-comments-panel hidden>
|
|
24
|
+
<div class="comments-collapsible__embed"
|
|
25
|
+
data-giscus-mount
|
|
26
|
+
data-giscus-script-src="{{ giscus_host }}/client.js"
|
|
27
|
+
data-giscus-repo="{{ giscus.repo }}"
|
|
28
|
+
data-giscus-repo-id="{{ giscus.repo_id }}"
|
|
29
|
+
data-giscus-category="{{ giscus.category }}"
|
|
30
|
+
data-giscus-category-id="{{ giscus.category_id }}"
|
|
31
|
+
data-giscus-mapping="{{ giscus.mapping | default: "pathname" }}"
|
|
32
|
+
data-giscus-term="{{ giscus.term }}"
|
|
33
|
+
data-giscus-strict="{{ giscus.strict | default: "0" }}"
|
|
34
|
+
data-giscus-reactions-enabled="{{ giscus.reactions_enabled | default: "1" }}"
|
|
35
|
+
data-giscus-emit-metadata="{{ giscus.emit_metadata | default: "0" }}"
|
|
36
|
+
data-giscus-input-position="{{ giscus.input_position | default: "top" }}"
|
|
37
|
+
data-giscus-theme="{{ giscus.theme | default: "preferred_color_scheme" }}"
|
|
38
|
+
data-giscus-lang="{{ giscus.lang | default: "en" }}"
|
|
39
|
+
data-giscus-loading="{{ giscus.loading | default: "lazy" }}"></div>
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
</section>
|
|
43
|
+
{% endif %}
|
|
44
|
+
{% endif %}
|
data/_includes/post-header.html
CHANGED
|
@@ -2,12 +2,12 @@
|
|
|
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
4
|
<a class="post-back-link" href="{{ site.baseurl }}/blog">← {{ back_to_posts_label }}</a>
|
|
5
|
-
<
|
|
6
|
-
|
|
5
|
+
<h1 class="post-title">{{ page.title }}</h1>
|
|
6
|
+
{% include post-meta.html date=page.date reading_minutes=read_minutes class_name="post-header__meta post-meta" %}
|
|
7
|
+
<div class="post-header__tags">
|
|
7
8
|
{% assign tags = page.tags %}
|
|
8
9
|
{% include post-tags.html %}
|
|
9
10
|
</div>
|
|
10
|
-
<h1 class="post-title">{{ page.title }}</h1>
|
|
11
11
|
|
|
12
12
|
{% if page.image %}
|
|
13
13
|
<div class="post-image-wrap">
|
data/_includes/post-item.html
CHANGED
|
@@ -12,9 +12,6 @@
|
|
|
12
12
|
{% endif %}
|
|
13
13
|
<!-- content -->
|
|
14
14
|
<div class="post-card__content">
|
|
15
|
-
<p class="post-card__meta">{{ post.date | date: "%b %-d, %Y" }} · {{ reading_minutes }} min read</p>
|
|
16
|
-
{% assign tags = post.tags %}
|
|
17
|
-
{% include post-tags.html %}
|
|
18
15
|
<!-- title -->
|
|
19
16
|
<h2 class="post-card__title">
|
|
20
17
|
<a class="post-card__title-link"
|
|
@@ -25,6 +22,9 @@
|
|
|
25
22
|
<div class="post-card__excerpt">
|
|
26
23
|
{{ post.excerpt | strip_html | truncatewords: 20 }}
|
|
27
24
|
</div>
|
|
25
|
+
{% include post-meta.html date=post.date reading_minutes=reading_minutes class_name="post-card__meta post-meta" %}
|
|
26
|
+
{% assign tags = post.tags %}
|
|
27
|
+
{% include post-tags.html %}
|
|
28
28
|
<a class="post-card__read-link" href="{{ site.baseurl }}{{ post.url }}">{{ read_article_label }} →</a>
|
|
29
29
|
</div>
|
|
30
30
|
</article>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{% assign meta_class = include.class_name | default: "post-meta" %}
|
|
2
|
+
<p class="{{ meta_class }}">
|
|
3
|
+
<time datetime="{{ include.date | date_to_xmlschema }}">{{ include.date | date: "%b %-d, %Y" }}</time>
|
|
4
|
+
<span class="post-meta__separator" aria-hidden="true">·</span>
|
|
5
|
+
<span class="post-meta__reading-time">
|
|
6
|
+
<ion-icon class="post-meta__icon" name="time-outline" aria-hidden="true"></ion-icon>
|
|
7
|
+
<span>{{ include.reading_minutes }} min read</span>
|
|
8
|
+
</span>
|
|
9
|
+
</p>
|
data/_layouts/post.html
CHANGED
data/_sass/components/_core.scss
CHANGED
|
@@ -396,11 +396,37 @@
|
|
|
396
396
|
}
|
|
397
397
|
|
|
398
398
|
.post-card__meta {
|
|
399
|
-
margin
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
399
|
+
margin: 0.7rem 0 0.55rem;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
.post-meta {
|
|
403
|
+
display: inline-flex;
|
|
404
|
+
flex-wrap: wrap;
|
|
405
|
+
align-items: center;
|
|
406
|
+
gap: 0.35rem;
|
|
407
|
+
color: color-mix(in srgb, var(--color-muted) 92%, var(--color-text) 8%);
|
|
408
|
+
font-size: 0.82rem;
|
|
409
|
+
font-weight: 500;
|
|
410
|
+
letter-spacing: 0;
|
|
411
|
+
line-height: 1.35;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
.post-meta__separator {
|
|
415
|
+
opacity: 0.75;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
.post-meta__reading-time {
|
|
419
|
+
display: inline-flex;
|
|
420
|
+
align-items: center;
|
|
421
|
+
gap: 0.24rem;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
.post-meta__icon {
|
|
425
|
+
flex: 0 0 auto;
|
|
426
|
+
width: 0.72rem;
|
|
427
|
+
height: 0.72rem;
|
|
428
|
+
fill: currentColor;
|
|
429
|
+
opacity: 0.82;
|
|
404
430
|
}
|
|
405
431
|
|
|
406
432
|
.post-tags {
|
|
@@ -426,7 +452,7 @@
|
|
|
426
452
|
}
|
|
427
453
|
|
|
428
454
|
.post-card__title {
|
|
429
|
-
margin-bottom:
|
|
455
|
+
margin-bottom: 0.85rem;
|
|
430
456
|
font-family: "Manrope", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
431
457
|
font-size: 1.875rem;
|
|
432
458
|
font-weight: 900;
|
|
@@ -449,6 +475,10 @@
|
|
|
449
475
|
color: var(--color-muted);
|
|
450
476
|
}
|
|
451
477
|
|
|
478
|
+
.post-card .post-tags {
|
|
479
|
+
margin-bottom: 0.95rem;
|
|
480
|
+
}
|
|
481
|
+
|
|
452
482
|
.post-card__read-link {
|
|
453
483
|
display: inline-block;
|
|
454
484
|
margin-top: 1rem;
|
|
@@ -474,6 +504,15 @@
|
|
|
474
504
|
font-weight: 900;
|
|
475
505
|
}
|
|
476
506
|
|
|
507
|
+
.post-header__meta {
|
|
508
|
+
margin: 0 0 0.65rem;
|
|
509
|
+
font-size: 0.86rem;
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
.post-header__tags .post-tags {
|
|
513
|
+
margin-bottom: 1.1rem;
|
|
514
|
+
}
|
|
515
|
+
|
|
477
516
|
.post-meta-row {
|
|
478
517
|
display: flex;
|
|
479
518
|
flex-wrap: wrap;
|
|
@@ -530,6 +569,7 @@
|
|
|
530
569
|
|
|
531
570
|
.post-page .post-header,
|
|
532
571
|
.post-page .content-shell,
|
|
572
|
+
.post-page .comments-shell__inner,
|
|
533
573
|
.post-page .post-navigation-shell__inner,
|
|
534
574
|
.post-page .related-posts-shell__inner {
|
|
535
575
|
width: min(100% - 2rem, 880px);
|
|
@@ -552,20 +592,12 @@
|
|
|
552
592
|
}
|
|
553
593
|
|
|
554
594
|
.post-page .post-title {
|
|
555
|
-
margin-bottom:
|
|
595
|
+
margin-bottom: 0.95rem;
|
|
556
596
|
font-size: clamp(2rem, 4.8vw, 3.25rem);
|
|
557
597
|
line-height: 1.15;
|
|
558
598
|
letter-spacing: -0.015em;
|
|
559
599
|
}
|
|
560
600
|
|
|
561
|
-
.post-header__meta {
|
|
562
|
-
margin-bottom: 0.75rem;
|
|
563
|
-
font-size: 0.8rem;
|
|
564
|
-
font-weight: 600;
|
|
565
|
-
letter-spacing: 0.02em;
|
|
566
|
-
color: var(--color-muted);
|
|
567
|
-
}
|
|
568
|
-
|
|
569
601
|
.post-page .post-image-wrap {
|
|
570
602
|
margin-top: 0.45rem;
|
|
571
603
|
border-radius: 0.8rem;
|
|
@@ -591,18 +623,98 @@
|
|
|
591
623
|
}
|
|
592
624
|
|
|
593
625
|
.post-page .post-navigation-shell,
|
|
594
|
-
.post-page .related-posts-shell
|
|
626
|
+
.post-page .related-posts-shell,
|
|
627
|
+
.post-page .comments-shell {
|
|
595
628
|
margin-top: 1rem;
|
|
596
629
|
}
|
|
597
630
|
|
|
631
|
+
.post-page .comments-shell__inner,
|
|
598
632
|
.post-page .post-navigation-shell__inner,
|
|
599
633
|
.post-page .related-posts-shell__inner {
|
|
634
|
+
margin-inline: auto;
|
|
600
635
|
padding: 1.1rem;
|
|
601
636
|
border: 1px solid color-mix(in srgb, var(--color-border) 84%, #c9d6ff 16%);
|
|
602
637
|
border-radius: 1rem;
|
|
603
638
|
background: #fff;
|
|
604
639
|
}
|
|
605
640
|
|
|
641
|
+
.post-page .comments-shell__inner {
|
|
642
|
+
padding: 2rem 2rem 1.8rem;
|
|
643
|
+
}
|
|
644
|
+
|
|
645
|
+
.comments-shell__heading {
|
|
646
|
+
display: block;
|
|
647
|
+
margin-bottom: 0.3rem;
|
|
648
|
+
font-size: 1.3rem;
|
|
649
|
+
font-weight: 800;
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
.comments-collapsible {
|
|
653
|
+
padding-top: 1.15rem;
|
|
654
|
+
padding-bottom: 1.15rem;
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
.comments-collapsible__toggle {
|
|
658
|
+
display: flex;
|
|
659
|
+
align-items: center;
|
|
660
|
+
justify-content: space-between;
|
|
661
|
+
width: 100%;
|
|
662
|
+
padding: 0;
|
|
663
|
+
border: 0;
|
|
664
|
+
background: transparent;
|
|
665
|
+
text-align: left;
|
|
666
|
+
cursor: pointer;
|
|
667
|
+
}
|
|
668
|
+
|
|
669
|
+
.comments-collapsible__copy {
|
|
670
|
+
display: block;
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
.comments-collapsible__hint {
|
|
674
|
+
display: block;
|
|
675
|
+
color: var(--color-muted);
|
|
676
|
+
font-size: 0.9rem;
|
|
677
|
+
font-weight: 600;
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
.comments-collapsible__icon-wrap {
|
|
681
|
+
display: inline-flex;
|
|
682
|
+
align-items: center;
|
|
683
|
+
justify-content: center;
|
|
684
|
+
width: 2rem;
|
|
685
|
+
height: 2rem;
|
|
686
|
+
border: 1px solid color-mix(in srgb, var(--color-border) 84%, #c9d6ff 16%);
|
|
687
|
+
border-radius: 999px;
|
|
688
|
+
color: var(--color-muted);
|
|
689
|
+
transition: color 0.2s ease, border-color 0.2s ease;
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
.comments-collapsible__icon {
|
|
693
|
+
font-size: 1rem;
|
|
694
|
+
transition: transform 0.2s ease;
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
.comments-collapsible__panel {
|
|
698
|
+
margin-top: 0.95rem;
|
|
699
|
+
padding-top: 1rem;
|
|
700
|
+
border-top: 1px solid color-mix(in srgb, var(--color-border) 84%, #c9d6ff 16%);
|
|
701
|
+
}
|
|
702
|
+
|
|
703
|
+
.comments-collapsible.is-open .comments-collapsible__icon {
|
|
704
|
+
transform: rotate(180deg);
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
.comments-collapsible__toggle:hover .comments-collapsible__icon-wrap {
|
|
708
|
+
color: var(--color-brand);
|
|
709
|
+
border-color: color-mix(in srgb, var(--color-brand) 48%, var(--color-border) 52%);
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
.comments-collapsible__toggle:focus-visible {
|
|
713
|
+
outline: 2px solid color-mix(in srgb, var(--color-brand) 55%, white 45%);
|
|
714
|
+
outline-offset: 0.4rem;
|
|
715
|
+
border-radius: 0.5rem;
|
|
716
|
+
}
|
|
717
|
+
|
|
606
718
|
.post-page .post-navigation {
|
|
607
719
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
608
720
|
gap: 0.9rem;
|
|
@@ -1482,16 +1594,31 @@
|
|
|
1482
1594
|
|
|
1483
1595
|
.post-page .post-header,
|
|
1484
1596
|
.post-page .content-shell,
|
|
1597
|
+
.post-page .comments-shell__inner,
|
|
1485
1598
|
.post-page .post-navigation-shell__inner,
|
|
1486
1599
|
.post-page .related-posts-shell__inner {
|
|
1487
1600
|
width: min(100% - 2rem, 880px);
|
|
1488
1601
|
}
|
|
1489
1602
|
|
|
1603
|
+
.post-page .comments-shell__inner,
|
|
1490
1604
|
.post-page .post-navigation-shell__inner,
|
|
1491
1605
|
.post-page .related-posts-shell__inner {
|
|
1492
1606
|
padding: 0.9rem;
|
|
1493
1607
|
}
|
|
1494
1608
|
|
|
1609
|
+
.post-page .comments-shell__inner {
|
|
1610
|
+
padding: 1.25rem 1rem 1.1rem;
|
|
1611
|
+
}
|
|
1612
|
+
|
|
1613
|
+
.comments-shell__heading {
|
|
1614
|
+
font-size: 1.16rem;
|
|
1615
|
+
}
|
|
1616
|
+
|
|
1617
|
+
.comments-collapsible__icon-wrap {
|
|
1618
|
+
width: 1.85rem;
|
|
1619
|
+
height: 1.85rem;
|
|
1620
|
+
}
|
|
1621
|
+
|
|
1495
1622
|
.post-page .post-navigation {
|
|
1496
1623
|
grid-template-columns: 1fr;
|
|
1497
1624
|
}
|
data/assets/js/dist/main.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(){"use strict";let P;const _t=()=>{if(typeof window>"u")return new Map;if(!P){const t=window;t.Ionicons=t.Ionicons||{},P=t.Ionicons.map=t.Ionicons.map||new Map}return P},Lt=t=>{Object.keys(t).forEach(e=>{K(e,t[e]);const s=e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z0-9])/g,"$1-$2").toLowerCase();e!==s&&K(s,t[e])})},K=(t,e)=>{const s=_t(),n=s.get(t);n===void 0?s.set(t,e):n!==e&&console.warn(`[Ionicons Warning]: Multiple icons were mapped to name "${t}". Ensure that multiple icons are not mapped to the same icon name.`)},Mt="ionicons",x={hydratedSelectorName:"hydrated",lazyLoad:!1,updatable:!0};var It=Object.defineProperty,Ot=(t,e)=>{for(var s in e)It(t,s,{get:e[s],enumerable:!0})},y=t=>{if(t.__stencil__getHostRef)return t.__stencil__getHostRef()},Tt=(t,e)=>{const s={$flags$:0,$hostElement$:t,$cmpMeta$:e,$instanceValues$:new Map};s.$onReadyPromise$=new Promise(o=>s.$onReadyResolve$=o),t["s-p"]=[],t["s-rc"]=[];const n=s;return t.__stencil__getHostRef=()=>n,n},J=(t,e)=>e in t,A=(t,e)=>(0,console.error)(t,e),_=new Map,Ct="slot-fb{display:contents}slot-fb[hidden]{display:none}",Q="http://www.w3.org/1999/xlink",h=typeof window<"u"?window:{},Ht=h.HTMLElement||class{},v={$flags$:0,$resourcesUrl$:"",jmp:t=>t(),raf:t=>requestAnimationFrame(t),ael:(t,e,s,n)=>t.addEventListener(e,s,n),rel:(t,e,s,n)=>t.removeEventListener(e,s,n),ce:(t,e)=>new CustomEvent(t,e)},Pt=t=>Promise.resolve(t),V=(()=>{try{return new CSSStyleSheet,typeof new CSSStyleSheet().replaceSync=="function"}catch{}return!1})(),U=!1,N=[],tt=[],Ut=(t,e)=>s=>{t.push(s),U||(U=!0,v.raf(nt))},et=t=>{for(let e=0;e<t.length;e++)try{t[e](performance.now())}catch(s){A(s)}t.length=0},nt=()=>{et(N),et(tt),(U=N.length>0)&&v.raf(nt)},j=t=>Pt().then(t),jt=Ut(tt),qt=t=>{const e=new URL(t,v.$resourcesUrl$);return e.origin!==h.location.origin?e.href:e.pathname},q=t=>(t=typeof t,t==="object"||t==="function");function zt(t){var e,s,n;return(n=(s=(e=t.head)==null?void 0:e.querySelector('meta[name="csp-nonce"]'))==null?void 0:s.getAttribute("content"))!=null?n:void 0}var Rt=t=>t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),Bt={};Ot(Bt,{err:()=>st,map:()=>Dt,ok:()=>z,unwrap:()=>Wt,unwrapErr:()=>Xt});var z=t=>({isOk:!0,isErr:!1,value:t}),st=t=>({isOk:!1,isErr:!0,value:t});function Dt(t,e){if(t.isOk){const s=e(t.value);return s instanceof Promise?s.then(n=>z(n)):z(s)}if(t.isErr){const s=t.value;return st(s)}throw"should never get here"}var Wt=t=>{if(t.isOk)return t.value;throw t.value},Xt=t=>{if(t.isErr)return t.value;throw t.value};function Be(t){}var L;function Zt(t){var e;const s=this.attachShadow({mode:"open"});L===void 0&&(L=(e=void 0)!=null?e:null),L&&s.adoptedStyleSheets.push(L)}var w=(t,e="")=>()=>{},m=new WeakMap,Ft=(t,e,s)=>{let n=_.get(t);V&&s?(n=n||new CSSStyleSheet,typeof n=="string"?n=e:n.replaceSync(e)):n=e,_.set(t,n)},Yt=(t,e,s)=>{var n;const o=ot(e),i=_.get(o);if(!h.document)return o;if(t=t.nodeType===11?t:h.document,i)if(typeof i=="string"){t=t.head||t;let l=m.get(t),r;if(l||m.set(t,l=new Set),!l.has(o)){{r=h.document.createElement("style"),r.innerHTML=i;const a=(n=v.$nonce$)!=null?n:zt(h.document);if(a!=null&&r.setAttribute("nonce",a),!(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(V){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+=Ct),l&&l.add(o)}}else t.adoptedStyleSheets.includes(i)||t.adoptedStyleSheets.push(i);return o},Gt=t=>{const e=t.$cmpMeta$,s=t.$hostElement$,n=e.$flags$,o=w("attachStyles",e.$tagName$),i=Yt(s.shadowRoot?s.shadowRoot:s.getRootNode(),e);n&10&&(s["s-sc"]=i,s.classList.add(i+"-h")),o()},ot=(t,e)=>"sc-"+t.$tagName$,M=(t,e,...s)=>{let n=null,o=null,i=!1,l=!1;const r=[],a=d=>{for(let f=0;f<d.length;f++)n=d[f],Array.isArray(n)?a(n):n!=null&&typeof n!="boolean"&&((i=typeof t!="function"&&!q(n))&&(n=String(n)),i&&l?r[r.length-1].$text$+=n:r.push(i?R(null,n):n),l=i)};if(a(s),e){e.key&&(o=e.key);{const d=e.className||e.class;d&&(e.class=typeof d!="object"?d:Object.keys(d).filter(f=>d[f]).join(" "))}}const c=R(t,null);return c.$attrs$=e,r.length>0&&(c.$children$=r),c.$key$=o,c},R=(t,e)=>{const s={$flags$:0,$tag$:t,$text$:e,$elm$:null,$children$:null};return s.$attrs$=null,s.$key$=null,s},it={},Kt=t=>t&&t.$tag$===it,B=t=>{const e=Rt(t);return new RegExp(`(^|[^@]|@(?!supports\\s+selector\\s*\\([^{]*?${e}))(${e}\\b)`,"g")};B("::slotted"),B(":host"),B(":host-context");var rt=(t,e,s)=>t!=null&&!q(t)?e&4?t==="false"?!1:t===""||!!t:e&1?String(t):t:t,Jt=(t,e,s)=>{const n=v.ce(e,s);return t.dispatchEvent(n),n},ct=(t,e,s,n,o,i,l)=>{if(s===n)return;let r=J(t,e),a=e.toLowerCase();if(e==="class"){const c=t.classList,d=lt(s);let f=lt(n);c.remove(...d.filter(u=>u&&!f.includes(u))),c.add(...f.filter(u=>u&&!d.includes(u)))}else if(e==="style"){for(const c in s)(!n||n[c]==null)&&(c.includes("-")?t.style.removeProperty(c):t.style[c]="");for(const c in n)(!s||n[c]!==s[c])&&(c.includes("-")?t.style.setProperty(c,n[c]):t.style[c]=n[c])}else if(e!=="key")if(e==="ref")n&&n(t);else if(!t.__lookupSetter__(e)&&e[0]==="o"&&e[1]==="n"){if(e[2]==="-"?e=e.slice(3):J(h,a)?e=a.slice(2):e=a[2]+e.slice(3),s||n){const c=e.endsWith(at);e=e.replace(Vt,""),s&&v.rel(t,e,s,c),n&&v.ael(t,e,n,c)}}else{const c=q(n);if(r||c&&n!==null)try{if(t.tagName.includes("-"))t[e]!==n&&(t[e]=n);else{const f=n??"";e==="list"?r=!1:(s==null||t[e]!=f)&&(typeof t.__lookupSetter__(e)=="function"?t[e]=f:t.setAttribute(e,f))}}catch{}let d=!1;a!==(a=a.replace(/^xlink\:?/,""))&&(e=a,d=!0),n==null||n===!1?(n!==!1||t.getAttribute(e)==="")&&(d?t.removeAttributeNS(Q,e):t.removeAttribute(e)):(!r||i&4||o)&&!c&&t.nodeType===1&&(n=n===!0?"":n,d?t.setAttributeNS(Q,e,n):t.setAttribute(e,n))}},Qt=/\s/,lt=t=>(typeof t=="object"&&t&&"baseVal"in t&&(t=t.baseVal),!t||typeof t!="string"?[]:t.split(Qt)),at="Capture",Vt=new RegExp(at+"$"),dt=(t,e,s,n)=>{const o=e.$elm$.nodeType===11&&e.$elm$.host?e.$elm$.host:e.$elm$,i=t&&t.$attrs$||{},l=e.$attrs$||{};for(const r of ft(Object.keys(i)))r in l||ct(o,r,i[r],void 0,s,e.$flags$);for(const r of ft(Object.keys(l)))ct(o,r,i[r],l[r],s,e.$flags$)};function ft(t){return t.includes("ref")?[...t.filter(e=>e!=="ref"),"ref"]:t}var D,ut=!1,I=(t,e,s)=>{const n=e.$children$[s];let o=0,i,l;if(n.$text$!==null)i=n.$elm$=h.document.createTextNode(n.$text$);else{if(!h.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=n.$elm$=h.document.createElement(n.$tag$),dt(null,n,ut),n.$children$)for(o=0;o<n.$children$.length;++o)l=I(t,n,o),l&&i.appendChild(l)}return i["s-hn"]=D,i},$t=(t,e,s,n,o,i)=>{let l=t,r;for(l.shadowRoot&&l.tagName===D&&(l=l.shadowRoot);o<=i;++o)n[o]&&(r=I(null,s,o),r&&(n[o].$elm$=r,T(l,r,e)))},ht=(t,e,s)=>{for(let n=e;n<=s;++n){const o=t[n];if(o){const i=o.$elm$;pt(o),i&&i.remove()}}},Nt=(t,e,s,n,o=!1)=>{let i=0,l=0,r=0,a=0,c=e.length-1,d=e[0],f=e[c],u=n.length-1,$=n[0],p=n[u],g,E;for(;i<=c&&l<=u;)if(d==null)d=e[++i];else if(f==null)f=e[--c];else if($==null)$=n[++l];else if(p==null)p=n[--u];else if(O(d,$,o))S(d,$,o),d=e[++i],$=n[++l];else if(O(f,p,o))S(f,p,o),f=e[--c],p=n[--u];else if(O(d,p,o))S(d,p,o),T(t,d.$elm$,f.$elm$.nextSibling),d=e[++i],p=n[--u];else if(O(f,$,o))S(f,$,o),T(t,f.$elm$,d.$elm$),f=e[--c],$=n[++l];else{for(r=-1,a=i;a<=c;++a)if(e[a]&&e[a].$key$!==null&&e[a].$key$===$.$key$){r=a;break}r>=0?(E=e[r],E.$tag$!==$.$tag$?g=I(e&&e[l],s,r):(S(E,$,o),e[r]=void 0,g=E.$elm$),$=n[++l]):(g=I(e&&e[l],s,l),$=n[++l]),g&&T(d.$elm$.parentNode,g,d.$elm$)}i>c?$t(t,n[u+1]==null?null:n[u+1].$elm$,s,n,l,u):l>u&&ht(e,i,c)},O=(t,e,s=!1)=>t.$tag$===e.$tag$?s?(s&&!t.$key$&&e.$key$&&(t.$key$=e.$key$),!0):t.$key$===e.$key$:!1,S=(t,e,s=!1)=>{const n=e.$elm$=t.$elm$,o=t.$children$,i=e.$children$,l=e.$text$;l===null?(dt(t,e,ut),o!==null&&i!==null?Nt(n,o,e,i,s):i!==null?(t.$text$!==null&&(n.textContent=""),$t(n,null,e,i,0,i.length-1)):!s&&x.updatable&&o!==null&&ht(o,0,o.length-1)):t.$text$!==l&&(n.data=l)},pt=t=>{t.$attrs$&&t.$attrs$.ref&&t.$attrs$.ref(null),t.$children$&&t.$children$.map(pt)},T=(t,e,s)=>t?.insertBefore(e,s),te=(t,e,s=!1)=>{const n=t.$hostElement$,o=t.$cmpMeta$,i=t.$vnode$||R(null,null),r=Kt(e)?e:M(null,null,e);if(D=n.tagName,o.$attrsToReflect$&&(r.$attrs$=r.$attrs$||{},o.$attrsToReflect$.map(([a,c])=>r.$attrs$[c]=n[a])),s&&r.$attrs$)for(const a of Object.keys(r.$attrs$))n.hasAttribute(a)&&!["key","ref","style","class"].includes(a)&&(r.$attrs$[a]=n[a]);r.$tag$=null,r.$flags$|=4,t.$vnode$=r,r.$elm$=i.$elm$=n.shadowRoot||n,S(i,r,s)},gt=(t,e)=>{if(e&&!t.$onRenderResolve$&&e["s-p"]){const s=e["s-p"].push(new Promise(n=>t.$onRenderResolve$=()=>{e["s-p"].splice(s-1,1),n()}))}},W=(t,e)=>{if(t.$flags$|=16,t.$flags$&4){t.$flags$|=512;return}return gt(t,t.$ancestorComponent$),jt(()=>ee(t,e))},ee=(t,e)=>{const s=t.$hostElement$,n=w("scheduleUpdate",t.$cmpMeta$.$tagName$),o=s;if(!o)throw new Error(`Can't render component <${s.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=b(o,"componentWillLoad",void 0,s):i=b(o,"componentWillUpdate",void 0,s),i=vt(i,()=>b(o,"componentWillRender",void 0,s)),n(),vt(i,()=>se(t,o,e))},vt=(t,e)=>ne(t)?t.then(e).catch(s=>{console.error(s),e()}):e(),ne=t=>t instanceof Promise||t&&t.then&&typeof t.then=="function",se=async(t,e,s)=>{var n;const o=t.$hostElement$,i=w("update",t.$cmpMeta$.$tagName$),l=o["s-rc"];s&&Gt(t);const r=w("render",t.$cmpMeta$.$tagName$);oe(t,e,o,s),l&&(l.map(a=>a()),o["s-rc"]=void 0),r(),i();{const a=(n=o["s-p"])!=null?n:[],c=()=>ie(t);a.length===0?c():(Promise.all(a).then(c),t.$flags$|=4,a.length=0)}},oe=(t,e,s,n)=>{try{e=e.render(),t.$flags$&=-17,t.$flags$|=2,te(t,e,n)}catch(o){A(o,t.$hostElement$)}return null},ie=t=>{const e=t.$cmpMeta$.$tagName$,s=t.$hostElement$,n=w("postUpdate",e),o=s,i=t.$ancestorComponent$;b(o,"componentDidRender",void 0,s),t.$flags$&64?(b(o,"componentDidUpdate",void 0,s),n()):(t.$flags$|=64,ce(s),b(o,"componentDidLoad",void 0,s),n(),t.$onReadyResolve$(s),i||re()),t.$onRenderResolve$&&(t.$onRenderResolve$(),t.$onRenderResolve$=void 0),t.$flags$&512&&j(()=>W(t,!1)),t.$flags$&=-517},re=t=>{j(()=>Jt(h,"appload",{detail:{namespace:Mt}}))},b=(t,e,s,n)=>{if(t&&t[e])try{return t[e](s)}catch(o){A(o,n)}},ce=t=>{var e;return t.classList.add((e=x.hydratedSelectorName)!=null?e:"hydrated")},le=(t,e)=>y(t).$instanceValues$.get(e),yt=(t,e,s,n)=>{const o=y(t),i=t,l=o.$instanceValues$.get(e),r=o.$flags$,a=i;s=rt(s,n.$members$[e][0]);const c=Number.isNaN(l)&&Number.isNaN(s);if(s!==l&&!c){o.$instanceValues$.set(e,s);{if(n.$watchers$&&r&128){const f=n.$watchers$[e];f&&f.map(u=>{try{a[u](s,l,e)}catch($){A($,i)}})}if((r&18)===2){if(a.componentShouldUpdate&&a.componentShouldUpdate(s,l,e)===!1)return;W(o,!1)}}}},ae=(t,e,s)=>{var n,o;const i=t.prototype;if(e.$members$||e.$watchers$||t.watchers){t.watchers&&!e.$watchers$&&(e.$watchers$=t.watchers);const l=Object.entries((n=e.$members$)!=null?n:{});l.map(([r,[a]])=>{if(a&31||a&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):le(this,r)},configurable:!0,enumerable:!0}),Object.defineProperty(i,r,{set(f){const u=y(this);if(d){const $=a&32?this[r]:u.$hostElement$[r];typeof $>"u"&&u.$instanceValues$.get(r)?f=u.$instanceValues$.get(r):!u.$instanceValues$.get(r)&&$&&u.$instanceValues$.set(r,$),d.apply(this,[rt(f,a)]),f=a&32?this[r]:u.$hostElement$[r],yt(this,r,f,e);return}{yt(this,r,f,e);return}}})}});{const r=new Map;i.attributeChangedCallback=function(a,c,d){v.jmp(()=>{var f;const u=r.get(a);if(!(this.hasOwnProperty(u)&&x.lazyLoad)){if(i.hasOwnProperty(u)&&typeof this[u]=="number"&&this[u]==d)return;if(u==null){const p=y(this),g=p?.$flags$;if(g&&!(g&8)&&g&128&&d!==c){const G=this,xt=(f=e.$watchers$)==null?void 0:f[a];xt?.forEach(At=>{G[At]!=null&&G[At].call(G,d,c,a)})}return}}const $=Object.getOwnPropertyDescriptor(i,u);d=d===null&&typeof this[u]=="boolean"?!1:d,d!==this[u]&&(!$.get||$.set)&&(this[u]=d)})},t.observedAttributes=Array.from(new Set([...Object.keys((o=e.$watchers$)!=null?o:{}),...l.filter(([a,c])=>c[0]&15).map(([a,c])=>{var d;const f=c[1]||a;return r.set(f,a),c[0]&512&&((d=e.$attrsToReflect$)==null||d.push([a,f])),f})]))}}return t},wt=async(t,e,s,n)=>{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 a=ot(s);if(!_.has(a)){const c=w("registerStyles",s.$tagName$);Ft(a,r,!!(s.$flags$&1)),c()}}}const i=e.$ancestorComponent$,l=()=>W(e,!0);i&&i["s-rc"]?i["s-rc"].push(l):l()},de=(t,e)=>{},fe=t=>{{const e=y(t),s=e.$cmpMeta$,n=w("connectedCallback",s.$tagName$);if(e.$flags$&1)e?.$lazyInstance$||e?.$onReadyPromise$&&e.$onReadyPromise$.then(()=>de());else{e.$flags$|=1;{let o=t;for(;o=o.parentNode||o.host;)if(o["s-p"]){gt(e,e.$ancestorComponent$=o);break}}s.$members$&&Object.entries(s.$members$).map(([o,[i]])=>{if(i&31&&t.hasOwnProperty(o)){const l=t[o];delete t[o],t[o]=l}}),x.initializeNextTick?j(()=>wt(t,e,s)):wt(t,e,s)}n()}},ue=async t=>{y(t),m.has(t)&&m.delete(t),t.shadowRoot&&m.has(t.shadowRoot)&&m.delete(t.shadowRoot)},$e=(t,e)=>{const s={$flags$:e[0],$tagName$:e[1]};s.$members$=e[2],s.$watchers$=t.$watchers$,s.$attrsToReflect$=[];const n=t.prototype.connectedCallback,o=t.prototype.disconnectedCallback;return Object.assign(t.prototype,{__hasHostListenerAttached:!1,__registerHost(){Tt(this,s)},connectedCallback(){this.__hasHostListenerAttached||(y(this),this.__hasHostListenerAttached=!0),fe(this),n&&n.call(this)},disconnectedCallback(){ue(this),o&&o.call(this)},__attachShadow(){if(!this.shadowRoot)Zt.call(this,s);else if(this.shadowRoot.mode!=="open")throw new Error(`Unable to re-use existing shadow root for ${s.$tagName$}! Mode is set to ${this.shadowRoot.mode} but Stencil only supports open shadow roots.`)}}),t.is=s.$tagName$,ae(t,s)};let X;const he=()=>{if(typeof window>"u")return new Map;if(!X){const t=window;t.Ionicons=t.Ionicons||{},X=t.Ionicons.map=t.Ionicons.map||new Map}return X},pe=t=>{let e=Z(t.src);return e||(e=mt(t.name,t.icon,t.mode,t.ios,t.md),e?ge(e,t):t.icon&&(e=Z(t.icon),e||(e=Z(t.icon[t.mode]),e))?e:null)},ge=(t,e)=>{const s=he().get(t);if(s)return s;try{return qt(`svg/${t}.svg`)}catch(n){console.log("e",n),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)}},mt=(t,e,s,n,o)=>(s=(s&&H(s))==="ios"?"ios":"md",n&&s==="ios"?t=H(n):o&&s==="md"?t=H(o):(!t&&e&&!St(e)&&(t=e),C(t)&&(t=H(t))),!C(t)||t.trim()===""||t.replace(/[a-z]|-|\d/gi,"")!==""?null:t),Z=t=>C(t)&&(t=t.trim(),St(t))?t:null,St=t=>t.length>0&&/(\/|\.)/.test(t),C=t=>typeof t=="string",H=t=>t.toLowerCase(),ve=(t,e=[])=>{const s={};return e.forEach(n=>{t.hasAttribute(n)&&(t.getAttribute(n)!==null&&(s[n]=t.getAttribute(n)),t.removeAttribute(n))}),s},ye=t=>t&&t.dir!==""?t.dir.toLowerCase()==="rtl":document?.dir.toLowerCase()==="rtl",we=t=>{const e=document.createElement("div");e.innerHTML=t;for(let n=e.childNodes.length-1;n>=0;n--)e.childNodes[n].nodeName.toLowerCase()!=="svg"&&e.removeChild(e.childNodes[n]);const s=e.firstElementChild;if(s&&s.nodeName.toLowerCase()==="svg"){const n=s.getAttribute("class")||"";if(s.setAttribute("class",(n+" s-ion-icon").trim()),bt(s))return e.innerHTML}return""},bt=t=>{if(t.nodeType===1){if(t.nodeName.toLowerCase()==="script")return!1;for(let e=0;e<t.attributes.length;e++){const s=t.attributes[e].name;if(C(s)&&s.toLowerCase().indexOf("on")===0)return!1}for(let e=0;e<t.childNodes.length;e++)if(!bt(t.childNodes[e]))return!1}return!0},me=t=>t.startsWith("data:image/svg+xml"),Se=t=>t.indexOf(";utf8,")!==-1,k=new Map,kt=new Map;let F;function Y(t){return k.set(t,""),""}const be=(t,e)=>{const s=kt.get(t);return s||(typeof fetch<"u"&&typeof document<"u"?me(t)&&Se(t)?Promise.resolve(ke(t)):Ee(t,e):Promise.resolve(Y(t)))};function ke(t){F||(F=new DOMParser);const s=F.parseFromString(t,"text/html").querySelector("svg");if(s)return k.set(t,s.outerHTML),s.outerHTML;throw new Error(`Could not parse svg from ${t}`)}function Ee(t,e){const s=fetch(t).then(n=>n.text().then(o=>{o&&e!==!1&&(o=we(o));const i=o||"";return k.set(t,i),i}).catch(()=>Y(t))).catch(()=>Y(t));return kt.set(t,s),s}const xe=":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)}",Ae=$e(class extends Ht{constructor(){super(),this.__registerHost(),this.__attachShadow(),this.iconName=null,this.inheritedAttributes={},this.didLoadIcon=!1,this.isVisible=!1,this.mode=_e(),this.lazy=!1,this.sanitize=!0}componentWillLoad(){this.inheritedAttributes=ve(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,s,n){if(!!!(this.lazy&&typeof window<"u"&&window.IntersectionObserver))return n();const i=this.io=new window.IntersectionObserver(l=>{l[0].isIntersecting&&(i.disconnect(),this.io=void 0,n())},{rootMargin:s});i.observe(e)}loadIcon(){if(this.isVisible){const e=pe(this);e&&(k.has(e)?this.svgContent=k.get(e):be(e,this.sanitize).then(()=>this.svgContent=k.get(e)),this.didLoadIcon=!0)}this.iconName=mt(this.name,this.icon,this.mode,this.ios,this.md)}render(){const{flipRtl:e,iconName:s,inheritedAttributes:n,el:o}=this,i=this.mode||"md",l=s?(s.includes("arrow")||s.includes("chevron"))&&e!==!1:!1,r=e||l;return M(it,Object.assign({key:"0578c899781ca145dd8205acd9670af39b57cf2e",role:"img",class:Object.assign(Object.assign({[i]:!0},Le(this.color)),{[`icon-${this.size}`]:!!this.size,"flip-rtl":r,"icon-rtl":r&&ye(o)})},n),this.svgContent?M("div",{class:"icon-inner",innerHTML:this.svgContent}):M("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 xe}},[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"]}]),_e=()=>typeof document<"u"&&document.documentElement.getAttribute("mode")||"md",Le=t=>t?{"ion-color":!0,[`ion-color-${t}`]:!0}:null;function Me(){if(typeof customElements>"u")return;["ion-icon"].forEach(e=>{e==="ion-icon"&&(customElements.get(e)||customElements.define(e,Ae))})}const Ie=Me,Oe="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>",Te="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>",Ce="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>",He="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>",Pe="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>",Ue="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>",Et="menu-outline",je="close",qe=()=>{const t=document.querySelector(".site-header__toggle");if(!t)return;const e=document.querySelector(t.dataset.target);if(!e)return;const s=()=>{if(!e.classList.contains("is-hidden")){e.classList.add("is-hidden"),t.setAttribute("aria-expanded","false");const n=t.querySelector("ion-icon");n&&(n.name=Et)}};t.addEventListener("click",()=>{const n=t.getAttribute("aria-expanded")==="true";e.classList.toggle("is-hidden"),t.setAttribute("aria-expanded",n?"false":"true");const o=t.querySelector("ion-icon");o&&(o.name=n?Et:je)}),document.addEventListener("click",n=>{const o=e.contains(n.target),i=t.contains(n.target);!o&&!i&&s()}),document.addEventListener("keydown",n=>{n.key==="Escape"&&s()})},ze=()=>{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})},Re=()=>{const t=document.querySelector("[data-reading-progress]"),e=document.querySelector(".content");if(!t||!e)return;const s=()=>{const n=e.offsetTop,o=e.offsetHeight,i=window.innerHeight,l=window.scrollY,r=Math.max(o-i,1),c=Math.min(Math.max(l-n,0),r)/r*100;t.style.transform=`scaleX(${c/100})`};s(),window.addEventListener("scroll",s,{passive:!0}),window.addEventListener("resize",s)};Lt({close:Oe,"logo-github":Te,"logo-linkedin":Ce,"logo-twitter":He,"logo-youtube":Pe,"menu-outline":Ue}),Ie(),qe(),ze(),Re()})();
|
|
1
|
+
(function(){"use strict";let P;const _t=()=>{if(typeof window>"u")return new Map;if(!P){const t=window;t.Ionicons=t.Ionicons||{},P=t.Ionicons.map=t.Ionicons.map||new Map}return P},Lt=t=>{Object.keys(t).forEach(e=>{K(e,t[e]);const n=e.replace(/([a-z0-9]|(?=[A-Z]))([A-Z0-9])/g,"$1-$2").toLowerCase();e!==n&&K(n,t[e])})},K=(t,e)=>{const n=_t(),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.`)},Mt="ionicons",E={hydratedSelectorName:"hydrated",lazyLoad:!1,updatable:!0};var It=Object.defineProperty,Ot=(t,e)=>{for(var n in e)It(t,n,{get:e[n],enumerable:!0})},y=t=>{if(t.__stencil__getHostRef)return t.__stencil__getHostRef()},Ct=(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},J=(t,e)=>e in t,A=(t,e)=>(0,console.error)(t,e),_=new Map,Tt="slot-fb{display:contents}slot-fb[hidden]{display:none}",Q="http://www.w3.org/1999/xlink",h=typeof window<"u"?window:{},Ht=h.HTMLElement||class{},v={$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)},Pt=t=>Promise.resolve(t),V=(()=>{try{return new CSSStyleSheet,typeof new CSSStyleSheet().replaceSync=="function"}catch{}return!1})(),j=!1,N=[],tt=[],jt=(t,e)=>n=>{t.push(n),j||(j=!0,v.raf(nt))},et=t=>{for(let e=0;e<t.length;e++)try{t[e](performance.now())}catch(n){A(n)}t.length=0},nt=()=>{et(N),et(tt),(j=N.length>0)&&v.raf(nt)},U=t=>Pt().then(t),Ut=jt(tt),qt=t=>{const e=new URL(t,v.$resourcesUrl$);return e.origin!==h.location.origin?e.href:e.pathname},q=t=>(t=typeof t,t==="object"||t==="function");function zt(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 Bt=t=>t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),Rt={};Ot(Rt,{err:()=>st,map:()=>Dt,ok:()=>z,unwrap:()=>Wt,unwrapErr:()=>Xt});var z=t=>({isOk:!0,isErr:!1,value:t}),st=t=>({isOk:!1,isErr:!0,value:t});function Dt(t,e){if(t.isOk){const n=e(t.value);return n instanceof Promise?n.then(s=>z(s)):z(n)}if(t.isErr){const n=t.value;return st(n)}throw"should never get here"}var Wt=t=>{if(t.isOk)return t.value;throw t.value},Xt=t=>{if(t.isErr)return t.value;throw t.value};function Fe(t){}var L;function Zt(t){var e;const n=this.attachShadow({mode:"open"});L===void 0&&(L=(e=void 0)!=null?e:null),L&&n.adoptedStyleSheets.push(L)}var w=(t,e="")=>()=>{},m=new WeakMap,Ft=(t,e,n)=>{let s=_.get(t);V&&n?(s=s||new CSSStyleSheet,typeof s=="string"?s=e:s.replaceSync(e)):s=e,_.set(t,s)},Gt=(t,e,n)=>{var s;const o=ot(e),i=_.get(o);if(!h.document)return o;if(t=t.nodeType===11?t:h.document,i)if(typeof i=="string"){t=t.head||t;let l=m.get(t),r;if(l||m.set(t,l=new Set),!l.has(o)){{r=h.document.createElement("style"),r.innerHTML=i;const a=(s=v.$nonce$)!=null?s:zt(h.document);if(a!=null&&r.setAttribute("nonce",a),!(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(V){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+=Tt),l&&l.add(o)}}else t.adoptedStyleSheets.includes(i)||t.adoptedStyleSheets.push(i);return o},Yt=t=>{const e=t.$cmpMeta$,n=t.$hostElement$,s=e.$flags$,o=w("attachStyles",e.$tagName$),i=Gt(n.shadowRoot?n.shadowRoot:n.getRootNode(),e);s&10&&(n["s-sc"]=i,n.classList.add(i+"-h")),o()},ot=(t,e)=>"sc-"+t.$tagName$,M=(t,e,...n)=>{let s=null,o=null,i=!1,l=!1;const r=[],a=d=>{for(let f=0;f<d.length;f++)s=d[f],Array.isArray(s)?a(s):s!=null&&typeof s!="boolean"&&((i=typeof t!="function"&&!q(s))&&(s=String(s)),i&&l?r[r.length-1].$text$+=s:r.push(i?B(null,s):s),l=i)};if(a(n),e){e.key&&(o=e.key);{const d=e.className||e.class;d&&(e.class=typeof d!="object"?d:Object.keys(d).filter(f=>d[f]).join(" "))}}const c=B(t,null);return c.$attrs$=e,r.length>0&&(c.$children$=r),c.$key$=o,c},B=(t,e)=>{const n={$flags$:0,$tag$:t,$text$:e,$elm$:null,$children$:null};return n.$attrs$=null,n.$key$=null,n},it={},Kt=t=>t&&t.$tag$===it,R=t=>{const e=Bt(t);return new RegExp(`(^|[^@]|@(?!supports\\s+selector\\s*\\([^{]*?${e}))(${e}\\b)`,"g")};R("::slotted"),R(":host"),R(":host-context");var rt=(t,e,n)=>t!=null&&!q(t)?e&4?t==="false"?!1:t===""||!!t:e&1?String(t):t:t,Jt=(t,e,n)=>{const s=v.ce(e,n);return t.dispatchEvent(s),s},ct=(t,e,n,s,o,i,l)=>{if(n===s)return;let r=J(t,e),a=e.toLowerCase();if(e==="class"){const c=t.classList,d=lt(n);let f=lt(s);c.remove(...d.filter(u=>u&&!f.includes(u))),c.add(...f.filter(u=>u&&!d.includes(u)))}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):J(h,a)?e=a.slice(2):e=a[2]+e.slice(3),n||s){const c=e.endsWith(at);e=e.replace(Vt,""),n&&v.rel(t,e,n,c),s&&v.ael(t,e,s,c)}}else{const c=q(s);if(r||c&&s!==null)try{if(t.tagName.includes("-"))t[e]!==s&&(t[e]=s);else{const f=s??"";e==="list"?r=!1:(n==null||t[e]!=f)&&(typeof t.__lookupSetter__(e)=="function"?t[e]=f:t.setAttribute(e,f))}}catch{}let d=!1;a!==(a=a.replace(/^xlink\:?/,""))&&(e=a,d=!0),s==null||s===!1?(s!==!1||t.getAttribute(e)==="")&&(d?t.removeAttributeNS(Q,e):t.removeAttribute(e)):(!r||i&4||o)&&!c&&t.nodeType===1&&(s=s===!0?"":s,d?t.setAttributeNS(Q,e,s):t.setAttribute(e,s))}},Qt=/\s/,lt=t=>(typeof t=="object"&&t&&"baseVal"in t&&(t=t.baseVal),!t||typeof t!="string"?[]:t.split(Qt)),at="Capture",Vt=new RegExp(at+"$"),dt=(t,e,n,s)=>{const o=e.$elm$.nodeType===11&&e.$elm$.host?e.$elm$.host:e.$elm$,i=t&&t.$attrs$||{},l=e.$attrs$||{};for(const r of ft(Object.keys(i)))r in l||ct(o,r,i[r],void 0,n,e.$flags$);for(const r of ft(Object.keys(l)))ct(o,r,i[r],l[r],n,e.$flags$)};function ft(t){return t.includes("ref")?[...t.filter(e=>e!=="ref"),"ref"]:t}var D,ut=!1,I=(t,e,n)=>{const s=e.$children$[n];let o=0,i,l;if(s.$text$!==null)i=s.$elm$=h.document.createTextNode(s.$text$);else{if(!h.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$=h.document.createElement(s.$tag$),dt(null,s,ut),s.$children$)for(o=0;o<s.$children$.length;++o)l=I(t,s,o),l&&i.appendChild(l)}return i["s-hn"]=D,i},$t=(t,e,n,s,o,i)=>{let l=t,r;for(l.shadowRoot&&l.tagName===D&&(l=l.shadowRoot);o<=i;++o)s[o]&&(r=I(null,n,o),r&&(s[o].$elm$=r,C(l,r,e)))},ht=(t,e,n)=>{for(let s=e;s<=n;++s){const o=t[s];if(o){const i=o.$elm$;pt(o),i&&i.remove()}}},Nt=(t,e,n,s,o=!1)=>{let i=0,l=0,r=0,a=0,c=e.length-1,d=e[0],f=e[c],u=s.length-1,$=s[0],p=s[u],g,x;for(;i<=c&&l<=u;)if(d==null)d=e[++i];else if(f==null)f=e[--c];else if($==null)$=s[++l];else if(p==null)p=s[--u];else if(O(d,$,o))S(d,$,o),d=e[++i],$=s[++l];else if(O(f,p,o))S(f,p,o),f=e[--c],p=s[--u];else if(O(d,p,o))S(d,p,o),C(t,d.$elm$,f.$elm$.nextSibling),d=e[++i],p=s[--u];else if(O(f,$,o))S(f,$,o),C(t,f.$elm$,d.$elm$),f=e[--c],$=s[++l];else{for(r=-1,a=i;a<=c;++a)if(e[a]&&e[a].$key$!==null&&e[a].$key$===$.$key$){r=a;break}r>=0?(x=e[r],x.$tag$!==$.$tag$?g=I(e&&e[l],n,r):(S(x,$,o),e[r]=void 0,g=x.$elm$),$=s[++l]):(g=I(e&&e[l],n,l),$=s[++l]),g&&C(d.$elm$.parentNode,g,d.$elm$)}i>c?$t(t,s[u+1]==null?null:s[u+1].$elm$,n,s,l,u):l>u&&ht(e,i,c)},O=(t,e,n=!1)=>t.$tag$===e.$tag$?n?(n&&!t.$key$&&e.$key$&&(t.$key$=e.$key$),!0):t.$key$===e.$key$:!1,S=(t,e,n=!1)=>{const s=e.$elm$=t.$elm$,o=t.$children$,i=e.$children$,l=e.$text$;l===null?(dt(t,e,ut),o!==null&&i!==null?Nt(s,o,e,i,n):i!==null?(t.$text$!==null&&(s.textContent=""),$t(s,null,e,i,0,i.length-1)):!n&&E.updatable&&o!==null&&ht(o,0,o.length-1)):t.$text$!==l&&(s.data=l)},pt=t=>{t.$attrs$&&t.$attrs$.ref&&t.$attrs$.ref(null),t.$children$&&t.$children$.map(pt)},C=(t,e,n)=>t?.insertBefore(e,n),te=(t,e,n=!1)=>{const s=t.$hostElement$,o=t.$cmpMeta$,i=t.$vnode$||B(null,null),r=Kt(e)?e:M(null,null,e);if(D=s.tagName,o.$attrsToReflect$&&(r.$attrs$=r.$attrs$||{},o.$attrsToReflect$.map(([a,c])=>r.$attrs$[c]=s[a])),n&&r.$attrs$)for(const a of Object.keys(r.$attrs$))s.hasAttribute(a)&&!["key","ref","style","class"].includes(a)&&(r.$attrs$[a]=s[a]);r.$tag$=null,r.$flags$|=4,t.$vnode$=r,r.$elm$=i.$elm$=s.shadowRoot||s,S(i,r,n)},gt=(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()}))}},W=(t,e)=>{if(t.$flags$|=16,t.$flags$&4){t.$flags$|=512;return}return gt(t,t.$ancestorComponent$),Ut(()=>ee(t,e))},ee=(t,e)=>{const n=t.$hostElement$,s=w("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=b(o,"componentWillLoad",void 0,n):i=b(o,"componentWillUpdate",void 0,n),i=vt(i,()=>b(o,"componentWillRender",void 0,n)),s(),vt(i,()=>se(t,o,e))},vt=(t,e)=>ne(t)?t.then(e).catch(n=>{console.error(n),e()}):e(),ne=t=>t instanceof Promise||t&&t.then&&typeof t.then=="function",se=async(t,e,n)=>{var s;const o=t.$hostElement$,i=w("update",t.$cmpMeta$.$tagName$),l=o["s-rc"];n&&Yt(t);const r=w("render",t.$cmpMeta$.$tagName$);oe(t,e,o,n),l&&(l.map(a=>a()),o["s-rc"]=void 0),r(),i();{const a=(s=o["s-p"])!=null?s:[],c=()=>ie(t);a.length===0?c():(Promise.all(a).then(c),t.$flags$|=4,a.length=0)}},oe=(t,e,n,s)=>{try{e=e.render(),t.$flags$&=-17,t.$flags$|=2,te(t,e,s)}catch(o){A(o,t.$hostElement$)}return null},ie=t=>{const e=t.$cmpMeta$.$tagName$,n=t.$hostElement$,s=w("postUpdate",e),o=n,i=t.$ancestorComponent$;b(o,"componentDidRender",void 0,n),t.$flags$&64?(b(o,"componentDidUpdate",void 0,n),s()):(t.$flags$|=64,ce(n),b(o,"componentDidLoad",void 0,n),s(),t.$onReadyResolve$(n),i||re()),t.$onRenderResolve$&&(t.$onRenderResolve$(),t.$onRenderResolve$=void 0),t.$flags$&512&&U(()=>W(t,!1)),t.$flags$&=-517},re=t=>{U(()=>Jt(h,"appload",{detail:{namespace:Mt}}))},b=(t,e,n,s)=>{if(t&&t[e])try{return t[e](n)}catch(o){A(o,s)}},ce=t=>{var e;return t.classList.add((e=E.hydratedSelectorName)!=null?e:"hydrated")},le=(t,e)=>y(t).$instanceValues$.get(e),yt=(t,e,n,s)=>{const o=y(t),i=t,l=o.$instanceValues$.get(e),r=o.$flags$,a=i;n=rt(n,s.$members$[e][0]);const c=Number.isNaN(l)&&Number.isNaN(n);if(n!==l&&!c){o.$instanceValues$.set(e,n);{if(s.$watchers$&&r&128){const f=s.$watchers$[e];f&&f.map(u=>{try{a[u](n,l,e)}catch($){A($,i)}})}if((r&18)===2){if(a.componentShouldUpdate&&a.componentShouldUpdate(n,l,e)===!1)return;W(o,!1)}}}},ae=(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 l=Object.entries((s=e.$members$)!=null?s:{});l.map(([r,[a]])=>{if(a&31||a&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):le(this,r)},configurable:!0,enumerable:!0}),Object.defineProperty(i,r,{set(f){const u=y(this);if(d){const $=a&32?this[r]:u.$hostElement$[r];typeof $>"u"&&u.$instanceValues$.get(r)?f=u.$instanceValues$.get(r):!u.$instanceValues$.get(r)&&$&&u.$instanceValues$.set(r,$),d.apply(this,[rt(f,a)]),f=a&32?this[r]:u.$hostElement$[r],yt(this,r,f,e);return}{yt(this,r,f,e);return}}})}});{const r=new Map;i.attributeChangedCallback=function(a,c,d){v.jmp(()=>{var f;const u=r.get(a);if(!(this.hasOwnProperty(u)&&E.lazyLoad)){if(i.hasOwnProperty(u)&&typeof this[u]=="number"&&this[u]==d)return;if(u==null){const p=y(this),g=p?.$flags$;if(g&&!(g&8)&&g&128&&d!==c){const Y=this,Et=(f=e.$watchers$)==null?void 0:f[a];Et?.forEach(At=>{Y[At]!=null&&Y[At].call(Y,d,c,a)})}return}}const $=Object.getOwnPropertyDescriptor(i,u);d=d===null&&typeof this[u]=="boolean"?!1:d,d!==this[u]&&(!$.get||$.set)&&(this[u]=d)})},t.observedAttributes=Array.from(new Set([...Object.keys((o=e.$watchers$)!=null?o:{}),...l.filter(([a,c])=>c[0]&15).map(([a,c])=>{var d;const f=c[1]||a;return r.set(f,a),c[0]&512&&((d=e.$attrsToReflect$)==null||d.push([a,f])),f})]))}}return t},wt=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 a=ot(n);if(!_.has(a)){const c=w("registerStyles",n.$tagName$);Ft(a,r,!!(n.$flags$&1)),c()}}}const i=e.$ancestorComponent$,l=()=>W(e,!0);i&&i["s-rc"]?i["s-rc"].push(l):l()},de=(t,e)=>{},fe=t=>{{const e=y(t),n=e.$cmpMeta$,s=w("connectedCallback",n.$tagName$);if(e.$flags$&1)e?.$lazyInstance$||e?.$onReadyPromise$&&e.$onReadyPromise$.then(()=>de());else{e.$flags$|=1;{let o=t;for(;o=o.parentNode||o.host;)if(o["s-p"]){gt(e,e.$ancestorComponent$=o);break}}n.$members$&&Object.entries(n.$members$).map(([o,[i]])=>{if(i&31&&t.hasOwnProperty(o)){const l=t[o];delete t[o],t[o]=l}}),E.initializeNextTick?U(()=>wt(t,e,n)):wt(t,e,n)}s()}},ue=async t=>{y(t),m.has(t)&&m.delete(t),t.shadowRoot&&m.has(t.shadowRoot)&&m.delete(t.shadowRoot)},$e=(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(){Ct(this,n)},connectedCallback(){this.__hasHostListenerAttached||(y(this),this.__hasHostListenerAttached=!0),fe(this),s&&s.call(this)},disconnectedCallback(){ue(this),o&&o.call(this)},__attachShadow(){if(!this.shadowRoot)Zt.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$,ae(t,n)};let X;const he=()=>{if(typeof window>"u")return new Map;if(!X){const t=window;t.Ionicons=t.Ionicons||{},X=t.Ionicons.map=t.Ionicons.map||new Map}return X},pe=t=>{let e=Z(t.src);return e||(e=mt(t.name,t.icon,t.mode,t.ios,t.md),e?ge(e,t):t.icon&&(e=Z(t.icon),e||(e=Z(t.icon[t.mode]),e))?e:null)},ge=(t,e)=>{const n=he().get(t);if(n)return n;try{return qt(`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)}},mt=(t,e,n,s,o)=>(n=(n&&H(n))==="ios"?"ios":"md",s&&n==="ios"?t=H(s):o&&n==="md"?t=H(o):(!t&&e&&!St(e)&&(t=e),T(t)&&(t=H(t))),!T(t)||t.trim()===""||t.replace(/[a-z]|-|\d/gi,"")!==""?null:t),Z=t=>T(t)&&(t=t.trim(),St(t))?t:null,St=t=>t.length>0&&/(\/|\.)/.test(t),T=t=>typeof t=="string",H=t=>t.toLowerCase(),ve=(t,e=[])=>{const n={};return e.forEach(s=>{t.hasAttribute(s)&&(t.getAttribute(s)!==null&&(n[s]=t.getAttribute(s)),t.removeAttribute(s))}),n},ye=t=>t&&t.dir!==""?t.dir.toLowerCase()==="rtl":document?.dir.toLowerCase()==="rtl",we=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()),bt(n))return e.innerHTML}return""},bt=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(T(n)&&n.toLowerCase().indexOf("on")===0)return!1}for(let e=0;e<t.childNodes.length;e++)if(!bt(t.childNodes[e]))return!1}return!0},me=t=>t.startsWith("data:image/svg+xml"),Se=t=>t.indexOf(";utf8,")!==-1,k=new Map,kt=new Map;let F;function G(t){return k.set(t,""),""}const be=(t,e)=>{const n=kt.get(t);return n||(typeof fetch<"u"&&typeof document<"u"?me(t)&&Se(t)?Promise.resolve(ke(t)):xe(t,e):Promise.resolve(G(t)))};function ke(t){F||(F=new DOMParser);const n=F.parseFromString(t,"text/html").querySelector("svg");if(n)return k.set(t,n.outerHTML),n.outerHTML;throw new Error(`Could not parse svg from ${t}`)}function xe(t,e){const n=fetch(t).then(s=>s.text().then(o=>{o&&e!==!1&&(o=we(o));const i=o||"";return k.set(t,i),i}).catch(()=>G(t))).catch(()=>G(t));return kt.set(t,n),n}const Ee=":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)}",Ae=$e(class extends Ht{constructor(){super(),this.__registerHost(),this.__attachShadow(),this.iconName=null,this.inheritedAttributes={},this.didLoadIcon=!1,this.isVisible=!1,this.mode=_e(),this.lazy=!1,this.sanitize=!0}componentWillLoad(){this.inheritedAttributes=ve(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(l=>{l[0].isIntersecting&&(i.disconnect(),this.io=void 0,s())},{rootMargin:n});i.observe(e)}loadIcon(){if(this.isVisible){const e=pe(this);e&&(k.has(e)?this.svgContent=k.get(e):be(e,this.sanitize).then(()=>this.svgContent=k.get(e)),this.didLoadIcon=!0)}this.iconName=mt(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",l=n?(n.includes("arrow")||n.includes("chevron"))&&e!==!1:!1,r=e||l;return M(it,Object.assign({key:"0578c899781ca145dd8205acd9670af39b57cf2e",role:"img",class:Object.assign(Object.assign({[i]:!0},Le(this.color)),{[`icon-${this.size}`]:!!this.size,"flip-rtl":r,"icon-rtl":r&&ye(o)})},s),this.svgContent?M("div",{class:"icon-inner",innerHTML:this.svgContent}):M("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 Ee}},[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"]}]),_e=()=>typeof document<"u"&&document.documentElement.getAttribute("mode")||"md",Le=t=>t?{"ion-color":!0,[`ion-color-${t}`]:!0}:null;function Me(){if(typeof customElements>"u")return;["ion-icon"].forEach(e=>{e==="ion-icon"&&(customElements.get(e)||customElements.define(e,Ae))})}const Ie=Me,Oe="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>",Ce="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>",Te="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>",He="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>",Pe="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>",je="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>",Ue="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>",qe="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>",xt="menu-outline",ze="close",Be=()=>{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=xt)}};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?xt: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()})},Re={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"},De=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(Re)){const o=t.dataset[`giscus${n.charAt(0).toUpperCase()}${n.slice(1)}`];o&&e.setAttribute(s,o)}t.append(e),t.dataset.giscusLoaded="true"},We=()=>{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 l=!(n.getAttribute("aria-expanded")==="true");n.setAttribute("aria-expanded",l?"true":"false"),e.classList.toggle("is-open",l),s.hidden=!l,l&&De(o)})})},Xe=()=>{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})},Ze=()=>{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,l=window.scrollY,r=Math.max(o-i,1),c=Math.min(Math.max(l-s,0),r)/r*100;t.style.transform=`scaleX(${c/100})`};n(),window.addEventListener("scroll",n,{passive:!0}),window.addEventListener("resize",n)};Lt({"chevron-down-outline":Oe,close:Ce,"logo-github":Te,"logo-linkedin":He,"logo-twitter":Pe,"logo-youtube":je,"menu-outline":Ue,"time-outline":qe}),Ie(),Be(),We(),Xe(),Ze()})();
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
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.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mohamad Eldhemy
|
|
@@ -79,6 +79,7 @@ files:
|
|
|
79
79
|
- _includes/content.html
|
|
80
80
|
- _includes/contributions.html
|
|
81
81
|
- _includes/footer.html
|
|
82
|
+
- _includes/giscus-comments.html
|
|
82
83
|
- _includes/header.html
|
|
83
84
|
- _includes/hero.html
|
|
84
85
|
- _includes/latest-posts.html
|
|
@@ -87,6 +88,7 @@ files:
|
|
|
87
88
|
- _includes/pagination-links.html
|
|
88
89
|
- _includes/post-header.html
|
|
89
90
|
- _includes/post-item.html
|
|
91
|
+
- _includes/post-meta.html
|
|
90
92
|
- _includes/post-navigation.html
|
|
91
93
|
- _includes/post-tags.html
|
|
92
94
|
- _includes/reading-progress.html
|